adhdev 0.8.37 → 0.8.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +193 -31
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +148 -31
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -4615,11 +4615,10 @@ function shouldIncludeRuntimeMetadata(profile) {
|
|
|
4615
4615
|
}
|
|
4616
4616
|
function findCdpManager(cdpManagers, key) {
|
|
4617
4617
|
const exact = cdpManagers.get(key);
|
|
4618
|
-
if (exact) return exact;
|
|
4618
|
+
if (exact) return exact.isConnected ? exact : null;
|
|
4619
4619
|
const prefix = key + "_";
|
|
4620
|
-
|
|
4621
|
-
|
|
4622
|
-
}
|
|
4620
|
+
const matches = [...cdpManagers.entries()].filter(([k, m]) => m.isConnected && k.startsWith(prefix));
|
|
4621
|
+
if (matches.length === 1) return matches[0][1];
|
|
4623
4622
|
return null;
|
|
4624
4623
|
}
|
|
4625
4624
|
function hasCdpManager(cdpManagers, key) {
|
|
@@ -4631,8 +4630,13 @@ function hasCdpManager(cdpManagers, key) {
|
|
|
4631
4630
|
return false;
|
|
4632
4631
|
}
|
|
4633
4632
|
function isCdpConnected(cdpManagers, key) {
|
|
4634
|
-
const
|
|
4635
|
-
|
|
4633
|
+
const exact = cdpManagers.get(key);
|
|
4634
|
+
if (exact?.isConnected) return true;
|
|
4635
|
+
const prefix = key + "_";
|
|
4636
|
+
for (const [k, m] of cdpManagers.entries()) {
|
|
4637
|
+
if (m.isConnected && k.startsWith(prefix)) return true;
|
|
4638
|
+
}
|
|
4639
|
+
return false;
|
|
4636
4640
|
}
|
|
4637
4641
|
function buildFallbackControls(providerControls, serverModel, serverMode, acpConfigOptions, acpModes) {
|
|
4638
4642
|
if (providerControls && providerControls.length > 0) return providerControls;
|
|
@@ -32606,6 +32610,56 @@ function parseMessageTime(value) {
|
|
|
32606
32610
|
}
|
|
32607
32611
|
return 0;
|
|
32608
32612
|
}
|
|
32613
|
+
function stringifyPreviewContent(content) {
|
|
32614
|
+
if (typeof content === "string") return content;
|
|
32615
|
+
if (Array.isArray(content)) {
|
|
32616
|
+
return content.map((block) => {
|
|
32617
|
+
if (typeof block === "string") return block;
|
|
32618
|
+
if (block && typeof block === "object" && "text" in block) {
|
|
32619
|
+
return String(block.text || "");
|
|
32620
|
+
}
|
|
32621
|
+
return "";
|
|
32622
|
+
}).join(" ");
|
|
32623
|
+
}
|
|
32624
|
+
if (content && typeof content === "object" && "text" in content) {
|
|
32625
|
+
return String(content.text || "");
|
|
32626
|
+
}
|
|
32627
|
+
return String(content || "");
|
|
32628
|
+
}
|
|
32629
|
+
function normalizePreviewText(content) {
|
|
32630
|
+
return stringifyPreviewContent(content).replace(/\s+/g, " ").trim();
|
|
32631
|
+
}
|
|
32632
|
+
function clampPreviewText(value, maxChars = 120) {
|
|
32633
|
+
if (value.length <= maxChars) return value;
|
|
32634
|
+
if (maxChars <= 1) return value.slice(0, maxChars);
|
|
32635
|
+
return `${value.slice(0, maxChars - 1)}\u2026`;
|
|
32636
|
+
}
|
|
32637
|
+
function simplePreviewHash(value) {
|
|
32638
|
+
let h = 2166136261;
|
|
32639
|
+
for (let i = 0; i < value.length; i += 1) {
|
|
32640
|
+
h ^= value.charCodeAt(i);
|
|
32641
|
+
h = h * 16777619 >>> 0;
|
|
32642
|
+
}
|
|
32643
|
+
return h.toString(16);
|
|
32644
|
+
}
|
|
32645
|
+
function getLastDisplayMessage(session) {
|
|
32646
|
+
const messages = session.activeChat?.messages;
|
|
32647
|
+
if (!Array.isArray(messages) || messages.length === 0) return null;
|
|
32648
|
+
for (let i = messages.length - 1; i >= 0; i -= 1) {
|
|
32649
|
+
const candidate = messages[i];
|
|
32650
|
+
const role = typeof candidate?.role === "string" ? candidate.role : "";
|
|
32651
|
+
if (role === "system") continue;
|
|
32652
|
+
const preview = clampPreviewText(normalizePreviewText(candidate?.content));
|
|
32653
|
+
if (!preview) continue;
|
|
32654
|
+
return {
|
|
32655
|
+
role,
|
|
32656
|
+
preview,
|
|
32657
|
+
receivedAt: parseMessageTime(candidate?.receivedAt),
|
|
32658
|
+
hash: simplePreviewHash(`${role}:${preview}`)
|
|
32659
|
+
};
|
|
32660
|
+
}
|
|
32661
|
+
return null;
|
|
32662
|
+
}
|
|
32609
32663
|
function getSessionMessageUpdatedAt(session) {
|
|
32610
32664
|
const lastMessage = session.activeChat?.messages?.at?.(-1);
|
|
32611
32665
|
if (!lastMessage) return 0;
|
|
@@ -32626,8 +32680,7 @@ function getSessionLastUsedAt(session) {
|
|
|
32626
32680
|
return getSessionMessageUpdatedAt(session) || session.lastUpdated || Date.now();
|
|
32627
32681
|
}
|
|
32628
32682
|
function getLastMessageRole(session) {
|
|
32629
|
-
|
|
32630
|
-
return typeof role === "string" ? role : "";
|
|
32683
|
+
return getLastDisplayMessage(session)?.role || "";
|
|
32631
32684
|
}
|
|
32632
32685
|
function getUnreadState(hasContentChange, status, lastUsedAt, lastSeenAt, lastRole, completionMarker, seenCompletionMarker) {
|
|
32633
32686
|
if (status === "waiting_approval") {
|
|
@@ -32694,6 +32747,13 @@ function buildStatusSnapshot(options) {
|
|
|
32694
32747
|
`snapshot session id=${session.id} provider=${session.providerType} status=${String(session.status || "")} bucket=${inboxBucket} unread=${String(unread)} lastSeenAt=${lastSeenAt} completionMarker=${completionMarker || "-"} seenMarker=${seenCompletionMarker || "-"} lastUpdated=${String(session.lastUpdated || 0)} lastUsedAt=${lastUsedAt} lastRole=${getLastMessageRole(sourceSession)} msgUpdatedAt=${getSessionMessageUpdatedAt(sourceSession)}`
|
|
32695
32748
|
);
|
|
32696
32749
|
}
|
|
32750
|
+
const lastDisplayMessage = getLastDisplayMessage(sourceSession);
|
|
32751
|
+
if (lastDisplayMessage) {
|
|
32752
|
+
session.lastMessagePreview = lastDisplayMessage.preview;
|
|
32753
|
+
session.lastMessageRole = lastDisplayMessage.role;
|
|
32754
|
+
if (lastDisplayMessage.receivedAt > 0) session.lastMessageAt = lastDisplayMessage.receivedAt;
|
|
32755
|
+
session.lastMessageHash = lastDisplayMessage.hash;
|
|
32756
|
+
}
|
|
32697
32757
|
}
|
|
32698
32758
|
const includeMachineMetadata = profile !== "live";
|
|
32699
32759
|
const terminalBackend = includeMachineMetadata ? getTerminalBackendRuntimeStatus() : void 0;
|
|
@@ -35561,8 +35621,18 @@ async function handleScriptHints(ctx, type, _req, res) {
|
|
|
35561
35621
|
}
|
|
35562
35622
|
async function handleCdpTargets(ctx, _req, res) {
|
|
35563
35623
|
const targets = [];
|
|
35564
|
-
for (const [
|
|
35565
|
-
|
|
35624
|
+
for (const [managerKey, cdp] of ctx.cdpManagers.entries()) {
|
|
35625
|
+
const underscore = managerKey.indexOf("_");
|
|
35626
|
+
const ideBase = underscore === -1 ? managerKey : managerKey.slice(0, underscore);
|
|
35627
|
+
targets.push({
|
|
35628
|
+
managerKey,
|
|
35629
|
+
ide: managerKey,
|
|
35630
|
+
ideBase,
|
|
35631
|
+
pageTitle: cdp.pageTitle,
|
|
35632
|
+
targetId: cdp.targetId,
|
|
35633
|
+
connected: cdp.isConnected,
|
|
35634
|
+
port: cdp.getPort()
|
|
35635
|
+
});
|
|
35566
35636
|
}
|
|
35567
35637
|
ctx.json(res, 200, { targets });
|
|
35568
35638
|
}
|
|
@@ -37293,6 +37363,16 @@ function getDefaultAutoImplReference(ctx, category, type) {
|
|
|
37293
37363
|
if (category === "cli") {
|
|
37294
37364
|
return type === "codex-cli" ? "claude-cli" : "codex-cli";
|
|
37295
37365
|
}
|
|
37366
|
+
if (category === "extension") {
|
|
37367
|
+
const preferred = ["claude-code-vscode", "codex", "cline", "roo-code"];
|
|
37368
|
+
for (const ref of preferred) {
|
|
37369
|
+
if (ref === type) continue;
|
|
37370
|
+
if (ctx.providerLoader.resolve(ref) || ctx.providerLoader.getMeta(ref)) return ref;
|
|
37371
|
+
}
|
|
37372
|
+
const all = ctx.providerLoader.getAll();
|
|
37373
|
+
const fb = all.find((p) => p.category === "extension" && p.type !== type);
|
|
37374
|
+
if (fb?.type) return fb.type;
|
|
37375
|
+
}
|
|
37296
37376
|
return "antigravity";
|
|
37297
37377
|
}
|
|
37298
37378
|
function resolveAutoImplReference(ctx, category, requestedReference, targetType) {
|
|
@@ -37874,12 +37954,26 @@ function buildAutoImplPrompt(ctx, type, provider, providerDir, functions, domCon
|
|
|
37874
37954
|
return buildCliAutoImplPrompt(ctx, type, provider, providerDir, functions, referenceScripts, userComment, referenceType, verification);
|
|
37875
37955
|
}
|
|
37876
37956
|
const lines = [];
|
|
37957
|
+
const cdpIdeType = provider.category === "extension" ? "cursor" : type;
|
|
37877
37958
|
lines.push("You are implementing browser automation scripts for an IDE provider.");
|
|
37878
37959
|
lines.push("Be concise. Do NOT explain your reasoning. Just edit files directly.");
|
|
37879
37960
|
lines.push("");
|
|
37880
37961
|
lines.push(`# Target: ${provider.name || type} (${type})`);
|
|
37881
37962
|
lines.push(`Provider directory: \`${providerDir}\``);
|
|
37882
37963
|
lines.push("");
|
|
37964
|
+
if (provider.category === "extension") {
|
|
37965
|
+
lines.push("## CDP host (extension providers)");
|
|
37966
|
+
lines.push(
|
|
37967
|
+
`Extension **${type}** runs inside a host IDE. For \`/api/scripts/run\` and \`/api/cdp/evaluate\`, keep \`"type": "${type}"\` (which provider scripts run) but set \`"ideType"\` to the DevServer CDP **managerKey** for that window.`
|
|
37968
|
+
);
|
|
37969
|
+
lines.push(
|
|
37970
|
+
`Examples use \`"ideType": "${cdpIdeType}"\` (Cursor). If **multiple** IDE windows are connected, run \`GET /api/cdp/targets\` and use the correct \`managerKey\` / \`pageTitle\` \u2014 short \`cursor\` or \`vscode\` only works when it uniquely identifies one window.`
|
|
37971
|
+
);
|
|
37972
|
+
lines.push(
|
|
37973
|
+
"For VS Code hosts, use `vscode` or full `vscode_<targetId>` managerKey in every curl below."
|
|
37974
|
+
);
|
|
37975
|
+
lines.push("");
|
|
37976
|
+
}
|
|
37883
37977
|
const funcToFile = {
|
|
37884
37978
|
readChat: "read_chat.js",
|
|
37885
37979
|
sendMessage: "send_message.js",
|
|
@@ -38060,14 +38154,14 @@ function buildAutoImplPrompt(ctx, type, provider, providerDir, functions, domCon
|
|
|
38060
38154
|
lines.push("```bash");
|
|
38061
38155
|
lines.push(`curl -sS -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/cdp/evaluate \\`);
|
|
38062
38156
|
lines.push(` -H "Content-Type: application/json" \\`);
|
|
38063
|
-
lines.push(` -d '{"expression": "document.body.innerHTML.substring(0, 1000)", "ideType": "${
|
|
38157
|
+
lines.push(` -d '{"expression": "document.body.innerHTML.substring(0, 1000)", "ideType": "${cdpIdeType}"}'`);
|
|
38064
38158
|
lines.push("```");
|
|
38065
38159
|
lines.push("");
|
|
38066
38160
|
lines.push("### 2. Test your generated function");
|
|
38067
38161
|
lines.push("Once you save the file, test it by running:");
|
|
38068
38162
|
lines.push("```bash");
|
|
38069
38163
|
lines.push(`curl -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/providers/reload`);
|
|
38070
|
-
lines.push(`curl -sS -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/scripts/run -H "Content-Type: application/json" -d '{"script": "readChat", "type": "${type}", "ideType": "${
|
|
38164
|
+
lines.push(`curl -sS -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/scripts/run -H "Content-Type: application/json" -d '{"script": "readChat", "type": "${type}", "ideType": "${cdpIdeType}"}'`);
|
|
38071
38165
|
lines.push("```");
|
|
38072
38166
|
lines.push("");
|
|
38073
38167
|
lines.push("### Task Workflow");
|
|
@@ -38077,10 +38171,12 @@ function buildAutoImplPrompt(ctx, type, provider, providerDir, functions, domCon
|
|
|
38077
38171
|
lines.push("4. Reload providers and TEST your script via the API.");
|
|
38078
38172
|
lines.push("");
|
|
38079
38173
|
lines.push("### \u{1F525} Advanced UI Parsing (CRUCIAL for `readChat`)");
|
|
38080
|
-
lines.push(
|
|
38174
|
+
lines.push(
|
|
38175
|
+
`Your \`readChat\` must flawlessly parse complex UI elements (tables, code blocks, tool calls, and AI thoughts). Match the depth of the **${referenceType || "reference"}** scripts above (patterns and structure, not necessarily the same DOM).`
|
|
38176
|
+
);
|
|
38081
38177
|
lines.push("To achieve this, you MUST generate a live test scenario:");
|
|
38082
38178
|
lines.push(`1. Early in your process, send a rich prompt to the IDE using the API:`);
|
|
38083
|
-
lines.push(` \`curl -sS -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/scripts/run -H "Content-Type: application/json" -d '{"script": "sendMessage", "type": "${type}", "ideType": "${
|
|
38179
|
+
lines.push(` \`curl -sS -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/scripts/run -H "Content-Type: application/json" -d '{"script": "sendMessage", "type": "${type}", "ideType": "${cdpIdeType}", "args": {"message": "Write a python script, draw a markdown table, use a tool, and show your reasoning/thought process"}}'\``);
|
|
38084
38180
|
lines.push("2. Wait a few seconds for the IDE AI to generate these elements in the UI.");
|
|
38085
38181
|
lines.push("3. Use CDP evaluate to deeply inspect the DOM structure of the newly generated tables, code blocks, thought blocks, and tool calls.");
|
|
38086
38182
|
lines.push("4. Ensure `readChat` extracts `content` with precise markdown formatting (especially for tables/code) and assigns correct `kind` tags (`thought`, `tool`, `terminal`).");
|
|
@@ -38091,27 +38187,27 @@ function buildAutoImplPrompt(ctx, type, provider, providerDir, functions, domCon
|
|
|
38091
38187
|
lines.push("### Step 1: Baseline \u2014 confirm idle");
|
|
38092
38188
|
lines.push("```bash");
|
|
38093
38189
|
lines.push(`curl -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/providers/reload`);
|
|
38094
|
-
lines.push(`RESULT=$(curl -sS -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/scripts/run -H "Content-Type: application/json" -d '{"script": "readChat", "type": "${type}", "ideType": "${
|
|
38190
|
+
lines.push(`RESULT=$(curl -sS -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/scripts/run -H "Content-Type: application/json" -d '{"script": "readChat", "type": "${type}", "ideType": "${cdpIdeType}"}')`);
|
|
38095
38191
|
lines.push(`echo "$RESULT" | python3 -c "import sys,json; d=json.load(sys.stdin); r=d.get('result',d); r=json.loads(r) if isinstance(r,str) else r; assert r.get('status')=='idle', f'Expected idle, got {r.get(chr(34)+chr(115)+chr(116)+chr(97)+chr(116)+chr(117)+chr(115)+chr(34))}'; print('Step 1 PASS: status=idle')"`);
|
|
38096
38192
|
lines.push("```");
|
|
38097
38193
|
lines.push("");
|
|
38098
38194
|
lines.push("### Step 2: Send a LONG message that triggers extended generation (10+ seconds)");
|
|
38099
38195
|
lines.push("```bash");
|
|
38100
|
-
lines.push(`curl -sS -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/scripts/run -H "Content-Type: application/json" -d '{"script": "sendMessage", "type": "${type}", "ideType": "${
|
|
38196
|
+
lines.push(`curl -sS -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/scripts/run -H "Content-Type: application/json" -d '{"script": "sendMessage", "type": "${type}", "ideType": "${cdpIdeType}", "args": {"message": "Write an extremely detailed 5000-word essay about the history of artificial intelligence from Alan Turing to 2025. Be very thorough and verbose."}}'`);
|
|
38101
38197
|
lines.push("sleep 3");
|
|
38102
38198
|
lines.push("```");
|
|
38103
38199
|
lines.push("");
|
|
38104
38200
|
lines.push("### Step 3: Check generating OR completed");
|
|
38105
38201
|
lines.push("The AI may still be generating OR may have finished already. Either generating or idle is acceptable:");
|
|
38106
38202
|
lines.push("```bash");
|
|
38107
|
-
lines.push(`RESULT=$(curl -sS -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/scripts/run -H "Content-Type: application/json" -d '{"script": "readChat", "type": "${type}", "ideType": "${
|
|
38203
|
+
lines.push(`RESULT=$(curl -sS -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/scripts/run -H "Content-Type: application/json" -d '{"script": "readChat", "type": "${type}", "ideType": "${cdpIdeType}"}')`);
|
|
38108
38204
|
lines.push(`echo "$RESULT" | python3 -c "import sys,json; d=json.load(sys.stdin); r=d.get('result',d); r=json.loads(r) if isinstance(r,str) else r; s=r.get('status'); assert s in ('generating','idle','waiting_approval'), f'Unexpected: {s}'; print(f'Step 3 PASS: status={s}')"`);
|
|
38109
38205
|
lines.push("```");
|
|
38110
38206
|
lines.push("");
|
|
38111
38207
|
lines.push("### Step 4: Wait for completion and verify new message");
|
|
38112
38208
|
lines.push("```bash");
|
|
38113
38209
|
lines.push("sleep 10");
|
|
38114
|
-
lines.push(`RESULT=$(curl -sS -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/scripts/run -H "Content-Type: application/json" -d '{"script": "readChat", "type": "${type}", "ideType": "${
|
|
38210
|
+
lines.push(`RESULT=$(curl -sS -X POST http://127.0.0.1:${DEV_SERVER_PORT}/api/scripts/run -H "Content-Type: application/json" -d '{"script": "readChat", "type": "${type}", "ideType": "${cdpIdeType}"}')`);
|
|
38115
38211
|
lines.push(`echo "$RESULT" | python3 -c "import sys,json; d=json.load(sys.stdin); r=d.get('result',d); r=json.loads(r) if isinstance(r,str) else r; s=r.get('status'); msgs=r.get('messages',[]); assert s=='idle', f'Expected idle, got {s}'; assert len(msgs)>0, 'No messages'; print(f'Step 4 PASS: status={s}, messages={len(msgs)}')"`);
|
|
38116
38212
|
lines.push("```");
|
|
38117
38213
|
lines.push("");
|
|
@@ -38634,6 +38730,7 @@ var init_dev_server = __esm({
|
|
|
38634
38730
|
init_scaffold_template();
|
|
38635
38731
|
init_version_archive();
|
|
38636
38732
|
init_logger();
|
|
38733
|
+
init_builders();
|
|
38637
38734
|
init_dev_cdp_handlers();
|
|
38638
38735
|
init_dev_cli_debug();
|
|
38639
38736
|
init_dev_auto_implement();
|
|
@@ -40011,22 +40108,29 @@ data: ${JSON.stringify(msg.data)}
|
|
|
40011
40108
|
}
|
|
40012
40109
|
}
|
|
40013
40110
|
}
|
|
40014
|
-
/**
|
|
40015
|
-
*
|
|
40016
|
-
*
|
|
40111
|
+
/**
|
|
40112
|
+
* Resolve a CDP manager for DevServer APIs.
|
|
40113
|
+
* - Pass full **managerKey** from `GET /api/cdp/targets` when multiple Cursor/VS Code windows are open
|
|
40114
|
+
* (e.g. `cursor_0006DE34…`); short `cursor` only works when it maps to exactly one connected manager.
|
|
40115
|
+
* - With `ideType` omitted: only succeeds when exactly one connected manager exists.
|
|
40116
|
+
*/
|
|
40017
40117
|
getCdp(ideType) {
|
|
40018
40118
|
if (ideType) {
|
|
40019
|
-
const cdp = this.cdpManagers
|
|
40020
|
-
if (cdp
|
|
40021
|
-
|
|
40022
|
-
|
|
40023
|
-
|
|
40024
|
-
|
|
40119
|
+
const cdp = findCdpManager(this.cdpManagers, ideType);
|
|
40120
|
+
if (cdp) return cdp;
|
|
40121
|
+
LOG.warn(
|
|
40122
|
+
"DevServer",
|
|
40123
|
+
`getCdp: no unique match for '${ideType}', available: [${[...this.cdpManagers.keys()].join(", ")}] \u2014 use managerKey from GET /api/cdp/targets`
|
|
40124
|
+
);
|
|
40025
40125
|
return null;
|
|
40026
40126
|
}
|
|
40027
|
-
|
|
40028
|
-
|
|
40029
|
-
|
|
40127
|
+
const connected = [...this.cdpManagers.entries()].filter(([, m]) => m.isConnected);
|
|
40128
|
+
if (connected.length === 1) return connected[0][1];
|
|
40129
|
+
if (connected.length === 0) return null;
|
|
40130
|
+
LOG.warn(
|
|
40131
|
+
"DevServer",
|
|
40132
|
+
`getCdp: ideType omitted but ${connected.length} CDP windows \u2014 pass managerKey from GET /api/cdp/targets`
|
|
40133
|
+
);
|
|
40030
40134
|
return null;
|
|
40031
40135
|
}
|
|
40032
40136
|
json(res, status, data) {
|
|
@@ -40717,6 +40821,19 @@ var init_installer = __esm({
|
|
|
40717
40821
|
requiresApiKey: true,
|
|
40718
40822
|
apiKeyName: "Anthropic/OpenAI API key"
|
|
40719
40823
|
},
|
|
40824
|
+
{
|
|
40825
|
+
id: "claude-code-vscode",
|
|
40826
|
+
name: "Claude Code",
|
|
40827
|
+
displayName: "Claude Code (Anthropic)",
|
|
40828
|
+
marketplaceId: "anthropic.claude-code",
|
|
40829
|
+
description: "Anthropic Claude Code agent in VS Code\u2013compatible editors",
|
|
40830
|
+
category: "ai-agent",
|
|
40831
|
+
icon: "\u{1F7E0}",
|
|
40832
|
+
recommended: true,
|
|
40833
|
+
requiresApiKey: true,
|
|
40834
|
+
apiKeyName: "Anthropic account",
|
|
40835
|
+
website: "https://www.anthropic.com/claude-code"
|
|
40836
|
+
},
|
|
40720
40837
|
{
|
|
40721
40838
|
id: "continue",
|
|
40722
40839
|
name: "Continue",
|
|
@@ -49959,7 +50076,7 @@ var init_adhdev_daemon = __esm({
|
|
|
49959
50076
|
import_ws3 = require("ws");
|
|
49960
50077
|
import_chalk2 = __toESM(require("chalk"));
|
|
49961
50078
|
init_version();
|
|
49962
|
-
pkgVersion = resolvePackageVersion({ injectedVersion: "0.8.
|
|
50079
|
+
pkgVersion = resolvePackageVersion({ injectedVersion: "0.8.39" });
|
|
49963
50080
|
ACTIVE_CHAT_POLL_STATUSES = /* @__PURE__ */ new Set([
|
|
49964
50081
|
"generating",
|
|
49965
50082
|
"waiting_approval",
|
|
@@ -51391,6 +51508,11 @@ var init_supported = __esm({
|
|
|
51391
51508
|
"id": "roo-code",
|
|
51392
51509
|
"name": "Roo Code",
|
|
51393
51510
|
"icon": "\u{1F998}"
|
|
51511
|
+
},
|
|
51512
|
+
{
|
|
51513
|
+
"id": "claude-code-vscode",
|
|
51514
|
+
"name": "Claude Code (VS Code)",
|
|
51515
|
+
"icon": "\u{1F7E0}"
|
|
51394
51516
|
}
|
|
51395
51517
|
];
|
|
51396
51518
|
BUILTIN_ACP_COUNT = 35;
|
|
@@ -51669,6 +51791,17 @@ var init_supported = __esm({
|
|
|
51669
51791
|
"owner": "community",
|
|
51670
51792
|
"source": "docs/site/data/provider-catalog.mjs"
|
|
51671
51793
|
},
|
|
51794
|
+
"claude-code-vscode": {
|
|
51795
|
+
"status": "unverified",
|
|
51796
|
+
"testedOn": [],
|
|
51797
|
+
"testedVersions": [],
|
|
51798
|
+
"validatedFlows": [],
|
|
51799
|
+
"lastValidated": null,
|
|
51800
|
+
"notes": "",
|
|
51801
|
+
"evidence": "",
|
|
51802
|
+
"owner": "community",
|
|
51803
|
+
"source": "docs/site/data/provider-catalog.mjs"
|
|
51804
|
+
},
|
|
51672
51805
|
"agentpool-acp": {
|
|
51673
51806
|
"status": "unverified",
|
|
51674
51807
|
"testedOn": [],
|
|
@@ -52089,6 +52222,7 @@ var init_supported = __esm({
|
|
|
52089
52222
|
"cline": "unverified",
|
|
52090
52223
|
"codex": "partial",
|
|
52091
52224
|
"roo-code": "unverified",
|
|
52225
|
+
"claude-code-vscode": "unverified",
|
|
52092
52226
|
"agentpool-acp": "unverified",
|
|
52093
52227
|
"amp-acp": "unverified",
|
|
52094
52228
|
"auggie-acp": "unverified",
|
|
@@ -52186,6 +52320,25 @@ var init_supported = __esm({
|
|
|
52186
52320
|
"resolve_action"
|
|
52187
52321
|
],
|
|
52188
52322
|
"notes": "Promotion should wait until the provider exposes session history and switching in a first-class way instead of relying on empty extension history responses."
|
|
52323
|
+
},
|
|
52324
|
+
{
|
|
52325
|
+
"id": "claude-code-vscode",
|
|
52326
|
+
"name": "Claude Code (VS Code)",
|
|
52327
|
+
"category": "extension",
|
|
52328
|
+
"targetStatus": "partial",
|
|
52329
|
+
"priority": 4,
|
|
52330
|
+
"rationale": "Official Anthropic VS Code extension; cloud dashboards should surface it alongside other extension agents once CDP webview flows are validated.",
|
|
52331
|
+
"requiredFlows": [
|
|
52332
|
+
"read_chat",
|
|
52333
|
+
"new_session",
|
|
52334
|
+
"send_chat",
|
|
52335
|
+
"list_sessions",
|
|
52336
|
+
"switch_session"
|
|
52337
|
+
],
|
|
52338
|
+
"optionalFlows": [
|
|
52339
|
+
"resolve_action"
|
|
52340
|
+
],
|
|
52341
|
+
"notes": "Validate with DevServer and explicit managerKey when multiple IDE windows are attached."
|
|
52189
52342
|
}
|
|
52190
52343
|
];
|
|
52191
52344
|
SUPPORTED_IDES = BUILTIN_IDES;
|
|
@@ -53447,6 +53600,15 @@ function getDefaultAutoFixReference(category, type, providers) {
|
|
|
53447
53600
|
const fallback = providers.find((p) => p.category === "cli" && p.type !== type);
|
|
53448
53601
|
return fallback?.type || "codex-cli";
|
|
53449
53602
|
}
|
|
53603
|
+
if (category === "extension") {
|
|
53604
|
+
const preferred = ["claude-code-vscode", "codex", "cline", "roo-code"];
|
|
53605
|
+
const picked = preferred.find(
|
|
53606
|
+
(ref) => ref !== type && providers.some((p) => p.type === ref && p.category === "extension")
|
|
53607
|
+
);
|
|
53608
|
+
if (picked) return picked;
|
|
53609
|
+
const fallback = providers.find((p) => p.category === "extension" && p.type !== type);
|
|
53610
|
+
if (fallback?.type) return fallback.type;
|
|
53611
|
+
}
|
|
53450
53612
|
return "antigravity";
|
|
53451
53613
|
}
|
|
53452
53614
|
function escapeRegex2(value) {
|