Skip to content

Commit d5def36

Browse files
committed
Merge branch 'fix/feature-agents' into web-app
2 parents 9120d90 + 2bb6a14 commit d5def36

File tree

17 files changed

+916
-897
lines changed

17 files changed

+916
-897
lines changed

vscode/CHANGELOG.md

+10
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@ All notable changes to the "commanddash" extension will be documented in this fi
44

55
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
66

7+
## [0.5.1]
8+
- Replacing CLI with REST APIs to interact with model
9+
- Crashing fixes
10+
11+
## [0.5.0]
12+
- User Experience Improvements
13+
14+
## [0.4.9]
15+
- Set minimum VSCode engine to 1.77.0
16+
717
## [0.4.8]
818
- Don't ask for Gemini API Key
919
- Removed google generative ai package dependencies

vscode/README.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
<div align="center">
2-
<h3>Integrate APIs, SDKs or Packages with AI Agents</h3>
2+
<h3>Integrate Packages and SDKs with AI Agents</h3>
33

44
[![VScode Downloads](https://img.shields.io/visual-studio-marketplace/d/WelltestedAI.fluttergpt)](https://marketplace.visualstudio.com/items?itemName=WelltestedAI.fluttergpt&ssr=false#overview) [![VScode version](https://img.shields.io/visual-studio-marketplace/v/WelltestedAI.fluttergpt)](https://marketplace.visualstudio.com/items?itemName=WelltestedAI.fluttergpt&ssr=false#overview) [![License: APACHE](https://img.shields.io/badge/License-APACHE%202.0-yellow)](/LICENSE)
55
</div>
66
<img src="/assets/docs/poster.jpg"></a>
77

88
-----------------
9-
CommandDash is a marketplace of AI agents that are expert at integrating APIs and SDKs.
9+
CommandDash is a marketplace of AI agents that are expert at integrating Packages and SDKs.
1010

1111
Dash Agents are trained on the latest documentation, examples and issues enabling you to integrate any library without reading its docs by generating integration code contextualized to your codebase.
1212

1313
##### ✨ Skip the documentation
1414
##### 🤝 Supports all languages
1515
##### 👨🏼‍💻 Free for every developer
1616

17-
Currently in Beta, CommandDash is being built in [open-sourced](https://github.com/CommandDash/commanddash) with the community.
17+
CommandDash is being built in [open-sourced](https://github.com/CommandDash/commanddash) with the community.
1818

1919
-----------------
2020

@@ -54,19 +54,19 @@ Note: Commands are optionally offered by agents depending on the usecase.
5454

5555
## Contributing
5656

57-
CommanDash is hub of AI agents on docs of any APIs, SDKs and more.
57+
CommanDash is hub of AI agents on docs of any Packages, SDKs and Github Libraries.
5858

5959
You can suggest agents to add to the marketplace, or contribute to the VSCODE or IntelliJ extension or also to the shared [engine](https://github.com/CommandDash/packages).
6060

6161
- **File feature requests**: Suggest features that'll make your development process easier in the [issues board](https://github.com/CommandDash/commanddash//issues).
6262

6363
- **Pick up open issues**: Pick up and fix existing issues open to the community in [issues board](https://github.com/CommandDash/commanddash/issues).
6464

65-
- **Request agents in the marketplace**: You can submit requests to add agents for your most used APIs or SDKs. [Fill Form](https://airtable.com/app22SBaii3xYD5aR/shrLv4mDsEtnFjmtj).
65+
- **Create agents in the marketplace**: You can create agents for any Packages or SDKs in one-click. [Create Here](https://app.commanddash.io/?create=true).
6666

6767
## Community
6868

69-
Do you love devtools but hate documentation? Join our community and help developers build without leaving their IDE: [Join Now](https://join.slack.com/t/welltested-ai/shared_invite/zt-25u09fty8-gaggH9HbmopB~4tialTrlA) 👋🏼
69+
Do you love devtools but hate documentation? Join our community and help developers build without leaving their IDE: [Join Now](https://discord.gg/szUCAnrsHQ) 👋🏼
7070

7171
## License
7272

vscode/media/market-place/market-place.js

+24-4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ const userIcon =
33
<path d="M7.48514 7.55446C8.98514 7.55446 10.1881 6.41783 10.1881 5.03169C10.1881 3.64555 8.98514 2.49506 7.48514 2.49506C5.98514 2.49506 4.78217 3.63169 4.78217 5.01783C4.78217 6.40397 5.98514 7.55446 7.48514 7.55446ZM7.48514 3.1604C8.58415 3.1604 9.47524 3.99209 9.47524 5.01783C9.47524 6.04357 8.58415 6.87525 7.48514 6.87525C6.38613 6.87525 5.49504 6.05743 5.49504 5.03169C5.49504 4.00595 6.38613 3.1604 7.48514 3.1604ZM2.79207 11.505H12.2079C12.401 11.505 12.5644 11.3525 12.5644 11.1723C12.5644 9.42575 11.0346 7.99803 9.16336 7.99803H5.83663C3.96534 7.99803 2.43564 9.42575 2.43564 11.1723C2.43564 11.3525 2.599 11.505 2.79207 11.505ZM5.83663 8.66337H9.16336C10.5297 8.66337 11.6436 9.60595 11.8218 10.8396H3.17821C3.35643 9.60595 4.47029 8.66337 5.83663 8.66337Z" fill="white"/>
44
</svg>`;
55

6+
const githubIcon =
7+
`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 32 32">
8+
<path fill="currentColor" fill-rule="evenodd" d="M16 2a14 14 0 0 0-4.43 27.28c.7.13 1-.3 1-.67v-2.38c-3.89.84-4.71-1.88-4.71-1.88a3.7 3.7 0 0 0-1.62-2.05c-1.27-.86.1-.85.1-.85a2.94 2.94 0 0 1 2.14 1.45a3 3 0 0 0 4.08 1.16a2.93 2.93 0 0 1 .88-1.87c-3.1-.36-6.37-1.56-6.37-6.92a5.4 5.4 0 0 1 1.44-3.76a5 5 0 0 1 .14-3.7s1.17-.38 3.85 1.43a13.3 13.3 0 0 1 7 0c2.67-1.81 3.84-1.43 3.84-1.43a5 5 0 0 1 .14 3.7a5.4 5.4 0 0 1 1.44 3.76c0 5.38-3.27 6.56-6.39 6.91a3.33 3.33 0 0 1 .95 2.59v3.84c0 .46.25.81 1 .67A14 14 0 0 0 16 2"/>
9+
</svg>`;
10+
611
const downloadIcon =
712
`<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
813
<path d="M5.10151 8.53455C4.97826 8.65536 4.97627 8.85319 5.09705 8.97644L7.27905 11.1584C7.33757 11.2172 7.41711 11.2501 7.5 11.25C7.58289 11.2501 7.66239 11.2172 7.72095 11.1584L9.90295 8.97644C10.022 8.85494 10.022 8.66055 9.90295 8.53905C9.78214 8.41579 9.58431 8.41377 9.46106 8.53455L7.8125 10.1831V1.5625C7.8125 1.38992 7.67258 1.25 7.5 1.25C7.32742 1.25 7.1875 1.38992 7.1875 1.5625V10.1831L5.5389 8.53455C5.41744 8.41549 5.22301 8.41549 5.10151 8.53455ZM11.25 5.625H10.3125C10.1399 5.625 10 5.76492 10 5.9375C10 6.11008 10.1399 6.25 10.3125 6.25H11.25C11.94 6.25088 12.4991 6.81 12.5 7.5V11.875C12.4991 12.565 11.94 13.1241 11.25 13.125H3.75C3.06 13.1241 2.50088 12.565 2.5 11.875V7.5C2.50088 6.81 3.06 6.25088 3.75 6.25H5.3125C5.48508 6.25 5.625 6.11008 5.625 5.9375C5.625 5.76492 5.48508 5.625 5.3125 5.625H3.75C2.71492 5.62614 1.87614 6.46492 1.875 7.5V11.875C1.87614 12.9101 2.71492 13.7489 3.75 13.75H11.25C12.2851 13.7489 13.1239 12.9101 13.125 11.875V7.5C13.1239 6.46492 12.2851 5.62614 11.25 5.625Z" fill="white"/>
@@ -86,6 +91,21 @@ function parseAgents(agents) {
8691
return { agents: {}, agentsList: [] };
8792
}
8893

94+
const formatGithubUrl = (url) => {
95+
const urlObj = new URL(url);
96+
const paths = urlObj.pathname.split("/").filter(Boolean);
97+
const [author, repo] = paths.slice(-2);
98+
return { author, repo };
99+
};
100+
101+
function formatText(url, maxLength) {
102+
const { author, repo } = formatGithubUrl(url);
103+
const formattedText = `${author}/${repo}`;
104+
return formattedText.length > maxLength
105+
? formattedText.slice(0, maxLength) + "..."
106+
: formattedText;
107+
}
108+
89109
function renderAgentsList(_agents) {
90110
_agents.forEach(agent => {
91111
// Create li element
@@ -157,12 +177,12 @@ function renderAgentsList(_agents) {
157177
divRowInner.className = "inline-flex flex-row";
158178

159179
const spanAuthor = document.createElement("span");
160-
spanAuthor.className = "text-xs text-gray-400 px-1 border-b border-gray-500";
161-
spanAuthor.innerHTML = `<a target="_blank" href="https://github.com/${agent.author.github_id}">${agent.author.github_id}</a>`;
180+
spanAuthor.className = "text-xs text-gray-400 px-1 border-b border-gray-500 ml-1";
181+
spanAuthor.innerHTML = `<a target="_blank" rel="noreferrer" href="${agent.author.source_url}">${formatText(agent.author.source_url, 20)}</a>`;
162182

163183
const divAuthor = document.createElement("div");
164184
divAuthor.className = "inline-flex flex-row items-center w-full justify-between";
165-
divAuthor.innerHTML = userIcon;
185+
divAuthor.innerHTML = githubIcon;
166186
divAuthor.appendChild(spanAuthor);
167187

168188
divRowInner.appendChild(divAuthor);
@@ -201,7 +221,7 @@ function loadOnErrorImage(agentImage) {
201221
agentImage.remove();
202222

203223
const svgContainer = document.createElement("div");
204-
svgContainer.innerHTML = userIcon;
224+
svgContainer.innerHTML = githubIcon;
205225
agentImage.parentElement.appendChild(svgContainer);
206226
}
207227

vscode/media/onboarding/onboarding.html

-15
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,6 @@
5252
Sign in with GitHub
5353
</button>
5454
</div>
55-
<div id="executable-container" class="inline-flex flex-col items-center" style="width: 100%;">
56-
<div class="inline-flex flex-row items-center">
57-
<p class="break-words">Setting up your engine</p>
58-
<div>
59-
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"
60-
id="executable-tick">
61-
<path
62-
d="M6 0C2.685 0 0 2.685 0 6C0 9.315 2.685 12 6 12C9.315 12 12 9.315 12 6C12 2.685 9.315 0 6 0ZM9 2.67L10.08 3.75L5.25 8.58L2.67 6L3.75 4.92L5.25 6.42L9 2.67Z"
63-
fill="#3079D8" />
64-
</svg>
65-
</div>
66-
</div>
67-
<progress class="w-full mt-2" id="executable-progress" value="0" max="100"
68-
style="width: 100%;"></progress>
69-
</div>
7055
</div>
7156
</div>
7257
<div class="flex-1 flex" id="bottom-container">

vscode/media/onboarding/onboarding.js

+8-37
Original file line numberDiff line numberDiff line change
@@ -236,14 +236,11 @@ const textInputContainer = document.getElementById("text-input-container");
236236
const header = document.getElementById("header");
237237
const chips = document.getElementById("chips");
238238
const codeSnippetButton = document.getElementById("code-snippets");
239-
const executableProgress = document.getElementById("executable-progress");
240239
const githubLogin = document.getElementById("github-sign-in");
241-
const executableTick = document.getElementById("executable-tick");
242240
const onboardingSetup = document.getElementById("onboarding-setup");
243241
const workspaceLoader = document.getElementById('workspace-loader');
244242
const workspaceLoaderText = document.getElementById('workspace-loader-text');
245243
const questionnaireContainer = document.getElementById("questionaire-container");
246-
const executableContainer = document.getElementById("executable-container");
247244
const fileUpload = document.getElementById("file-upload");
248245
const activeAgentAttach = document.getElementById("agents");
249246
// const activeCommandsAttach = document.getElementById("slash-commands");
@@ -979,7 +976,7 @@ async function submitResponse() {
979976
if (checkValueExists(agentsData.registered_inputs)) {
980977
const currentAgentData = data.find((agent) => agent.name === currentActiveAgent);
981978
toggleLoader(true);
982-
vscode.postMessage({ type: "agents", value: { data: { ...agentsData, agent: currentActiveAgent, agent_version: currentAgentData?.version, testing: currentAgentData?.testing, metadata: currentAgentData?.metadata }, isCommandLess: false } });
979+
vscode.postMessage({ type: "agents", value: { data: { ...agentsData, agent: currentActiveAgent, agent_version: currentAgentData?.version ?? currentAgentData.versions[0].version, testing: currentAgentData?.testing, metadata: currentAgentData?.metadata }, isCommandLess: false } });
983980

984981
questionnaireContainer.classList.add("hidden");
985982
textInput.textContent = "";
@@ -998,7 +995,7 @@ async function submitResponse() {
998995
commandLessData.prompt = value;
999996

1000997
const activeAgentData = data.find(agent => agent.name === currentActiveAgent);
1001-
const commandLess = { agent_version: activeAgentData.version, agent: activeAgentData.name, chat_mode: activeAgentData?.chat_mode, ...commandLessData, testing: activeAgentData?.testing, metadata: activeAgentData?.metadata };
998+
const commandLess = { agent_version: activeAgentData.version ?? activeAgentData.versions[0].version, agent: activeAgentData.name, chat_mode: activeAgentData?.chat_mode, ...commandLessData, testing: activeAgentData?.testing, metadata: activeAgentData?.metadata };
1002999
vscode.postMessage({ type: "agents", value: { data: { ...commandLess }, isCommandLess: true } });
10031000
questionnaireContainer.classList.add("hidden");
10041001
textInput.textContent = "";
@@ -1055,7 +1052,7 @@ function handleSubmit(event) {
10551052
});
10561053
}
10571054
}
1058-
1055+
//' `vscode` what is this code'
10591056
// When triggered with /
10601057
else if (type === 'slash') {
10611058
// If no agent selected yet
@@ -1274,13 +1271,6 @@ function handleTriggerMessage(event) {
12741271
case 0:
12751272
isGithubLoginPending = true;
12761273
githubLogin.classList.remove("hidden");
1277-
executableContainer.classList.add("hidden");
1278-
break;
1279-
1280-
case 1:
1281-
isExecutableDownloadPending = true;
1282-
executableTick.classList.add('hidden');
1283-
executableProgress.classList.remove("hidden");
12841274
break;
12851275
}
12861276
});
@@ -1289,33 +1279,14 @@ function handleTriggerMessage(event) {
12891279
if (!isGithubLoginPending) {
12901280
isGithubLoginPending = false;
12911281
githubLogin.classList.add("hidden");
1292-
executableContainer.classList.remove("hidden");
1293-
vscode.postMessage({
1294-
type: "executeDownload",
1295-
});
1296-
}
1297-
if (!isExecutableDownloadPending) {
1298-
isExecutableDownloadPending = false;
1299-
executableTick.classList.remove("hidden");
1300-
executableProgress.classList.add("hidden");
13011282
}
13021283

13031284
allStepsCompleted();
13041285
setLoading(false);
13051286
break;
1306-
case 'executableDownloadProgress':
1307-
executableProgress.value = message.value;
1308-
break;
1309-
case 'executableDownloaded':
1310-
isExecutableDownloadPending = false;
1311-
executableTick.classList.remove("hidden");
1312-
executableProgress.classList.add("hidden");
1313-
allStepsCompleted();
1314-
break;
13151287
case 'githubLoggedIn':
13161288
isGithubLoginPending = false;
13171289
githubLogin.classList.add("hidden");
1318-
executableContainer.classList.remove("hidden");
13191290
allStepsCompleted();
13201291
break;
13211292
case 'cleanUpEventListener':
@@ -1410,7 +1381,7 @@ function toggleLoader(isShowLoader) {
14101381
}
14111382

14121383
function allStepsCompleted() {
1413-
if (!isGithubLoginPending && !isExecutableDownloadPending) {
1384+
if (!isGithubLoginPending) {
14141385
onboardingSetup.classList.add("hidden");
14151386
bottomContainer.classList.add("flex");
14161387
bottomContainer.classList.remove("hidden");
@@ -1732,7 +1703,7 @@ function displayMessages() {
17321703
roleElement.classList.add("block", "w-full", "px-2.5", "py-1.5", "bg-[#497BEF]/[.2]");
17331704

17341705
contentElement.classList.add("text-sm", "block", "px-2.5", "py-1.5", "pt-2", "break-words", "leading-relaxed", "bg-[#497BEF]/[.2]");
1735-
contentElement.innerHTML = markdownToPlain(message.parts);
1706+
contentElement.innerHTML = markdownToPlain(message.text);
17361707

17371708
} else if (message.role === "user") {
17381709
roleElement.innerHTML = "<strong>You</strong>";
@@ -1742,13 +1713,13 @@ function displayMessages() {
17421713
roleElement.appendChild(agents);
17431714
agents.innerHTML = `<span class="text-[#497BEF]">@${message.agent ? message.agent : ""}</span><span class="text-rose-500 mx-1">${message.slug ? message.slug : ""}</span>`;
17441715
contentElement.classList.add("text-sm", "block", "w-full", "px-2.5", "py-1.5", "break-words", "user-message");
1745-
contentElement.innerHTML = markdownToPlain(message.parts);
1716+
contentElement.innerHTML = markdownToPlain(message.text);
17461717
} else if (message.role === "dash") {
17471718
//UI implementation
17481719
roleElement.innerHTML = "<strong class='text-white'>CommandDash</strong>";
17491720
roleElement.classList.add("block", "w-full", "px-2.5", "py-1.5", "bg-[#497BEF]");
17501721
contentElement.classList.add("text-sm", "block", "w-full", "px-2.5", "py-1.5", "break-words", "bg-[#497BEF]", "text-white");
1751-
contentElement.innerHTML = markdownToPlain(message.parts);
1722+
contentElement.innerHTML = markdownToPlain(message.text);
17521723
buttonContainer.classList.add("inline-flex", "w-full", "px-2.5", "py-1.5",
17531724
"bg-[#497BEF]");
17541725
const messageIndex = conversationHistory.indexOf(message);
@@ -1768,7 +1739,7 @@ function displayMessages() {
17681739
roleElement.innerHTML = "<strong class='text-white'>Error</strong>";
17691740
roleElement.classList.add("block", "w-full", "px-2.5", "py-1.5", "bg-red-700");
17701741
contentElement.classList.add("text-sm", "block", "w-full", "px-2.5", "py-1.5", "break-words", "bg-red-700", "text-white");
1771-
contentElement.innerHTML = markdownToPlain(message.parts);
1742+
contentElement.innerHTML = markdownToPlain(message.text);
17721743
}
17731744
messageElement.classList.add("mt-1");
17741745
messageElement.appendChild(roleElement);

vscode/package-lock.json

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vscode/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
22
"name": "fluttergpt",
3-
"displayName": "CommandDash: AI Agents for APIs, SDKs and more",
4-
"description": "AI assist to integrate 1000+ libraries with expert agents from marketplace",
5-
"version": "0.4.8",
3+
"displayName": "CommandDash: Assist for Packages, SDKs, APIs and Github",
4+
"description": "Only AI Copilot to integrate libraries with expert agents",
5+
"version": "0.5.1",
66
"publisher": "WelltestedAI",
77
"icon": "media/icon.png",
88
"engines": {
9-
"vscode": "^1.82.0"
9+
"vscode": "^1.77.0"
1010
},
1111
"repository": {
1212
"url": "https://github.com/CommandDash/commanddash"

vscode/src/action-managers/refactor-agent.ts

-29
This file was deleted.

0 commit comments

Comments
 (0)