context-mode 2.0.0-next.6 → 2.0.0-next.7
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/SHA256SUMS +17 -17
- package/cli.mjs +72 -15
- package/copilot/plugin.json +1 -1
- package/gemini-extension.json +1 -1
- package/hook.mjs +81 -81
- package/opencode/plugin.js +73 -16
- package/package.json +1 -1
- package/pi/index.js +73 -16
- package/qwen-extension.json +1 -1
- package/run.mjs +72 -15
- package/search.mjs +72 -15
- package/server.mjs +73 -16
- package/skills/ctx-doctor/SKILL.md +1 -1
- package/skills/ctx-stats/SKILL.md +1 -1
- package/skills/ctx-upgrade/SKILL.md +1 -1
package/opencode/plugin.js
CHANGED
|
@@ -330,7 +330,7 @@ var DECISION_OPTION_KEY = "option";
|
|
|
330
330
|
var DECISION_LABEL_JOIN = " | ";
|
|
331
331
|
var RELEASE_REPO_URL = "https://github.com/mksglu/context-mode.git";
|
|
332
332
|
var RELEASE_BRANCH = "release";
|
|
333
|
-
var BUNDLE_SHA = true ? "
|
|
333
|
+
var BUNDLE_SHA = true ? "f61b6973877b47851ac5938c46fee1399946289e" : void 0;
|
|
334
334
|
var DOCTOR_CHECK_ORDER = Object.freeze(["D1", "D2", "D3", "D4", "D5", "D5b", "D6", "D7", "D8", "D9", "D10"]);
|
|
335
335
|
var DOCTOR_LABEL = Object.freeze({
|
|
336
336
|
D1: "version",
|
|
@@ -637,8 +637,10 @@ var MCP_ARGS_FIELD = "args";
|
|
|
637
637
|
var ZCODE_MCP_FEATURE_KEY = Object.freeze(["features", "mcp"]);
|
|
638
638
|
var CODEX_OMIT_TOOLS_FROM_FIELD = "omit_tools_from";
|
|
639
639
|
var CODEX_OMIT_DEFERRED = Object.freeze(["deferred"]);
|
|
640
|
+
var CODEX_APPROVAL_MODE_FIELD = "default_tools_approval_mode";
|
|
641
|
+
var CODEX_APPROVAL_APPROVE = "approve";
|
|
640
642
|
var OWN_MCP_ENTRY = Object.freeze({
|
|
641
|
-
codex: { file: [".codex", "config.toml"], key: ["mcp_servers", SERVER_KEY], fields: { [CODEX_OMIT_TOOLS_FROM_FIELD]: CODEX_OMIT_DEFERRED } },
|
|
643
|
+
codex: { file: [".codex", "config.toml"], key: ["mcp_servers", SERVER_KEY], fields: { [CODEX_OMIT_TOOLS_FROM_FIELD]: CODEX_OMIT_DEFERRED, [CODEX_APPROVAL_MODE_FIELD]: CODEX_APPROVAL_APPROVE } },
|
|
642
644
|
vscode: { file: [".vscode", "mcp.json"], key: ["servers", SERVER_KEY] },
|
|
643
645
|
kiro: { file: [".kiro", "settings", "mcp.json"], key: ["mcpServers", SERVER_KEY] },
|
|
644
646
|
zcode: {
|
|
@@ -1101,9 +1103,62 @@ function readResult4(resp) {
|
|
|
1101
1103
|
const isError = typeof resp === "object" && resp !== null && resp.is_error === true;
|
|
1102
1104
|
return { isError, bytes: Buffer.byteLength(text), text };
|
|
1103
1105
|
}
|
|
1106
|
+
var CAMEL_EVENTS = {
|
|
1107
|
+
sessionStart: "SessionStart",
|
|
1108
|
+
userPromptSubmitted: "UserPromptSubmit",
|
|
1109
|
+
preToolUse: "PreToolUse",
|
|
1110
|
+
postToolUse: "PostToolUse",
|
|
1111
|
+
preCompact: "PreCompact"
|
|
1112
|
+
};
|
|
1113
|
+
var EVENT_BY_KEY2 = [
|
|
1114
|
+
["toolResult", "postToolUse"],
|
|
1115
|
+
["toolName", "preToolUse"],
|
|
1116
|
+
["prompt", "userPromptSubmitted"],
|
|
1117
|
+
["source", "sessionStart"],
|
|
1118
|
+
["trigger", "preCompact"]
|
|
1119
|
+
];
|
|
1120
|
+
var SESSION_SOURCES = { new: "startup", startup: "startup", resume: "resume" };
|
|
1121
|
+
var RESULT_SUCCESS2 = "success";
|
|
1122
|
+
function isRecord2(v) {
|
|
1123
|
+
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
1124
|
+
}
|
|
1125
|
+
function readArgs2(v) {
|
|
1126
|
+
if (isRecord2(v)) return v;
|
|
1127
|
+
if (typeof v !== "string") return {};
|
|
1128
|
+
try {
|
|
1129
|
+
const parsed = JSON.parse(v);
|
|
1130
|
+
return isRecord2(parsed) ? parsed : {};
|
|
1131
|
+
} catch {
|
|
1132
|
+
return {};
|
|
1133
|
+
}
|
|
1134
|
+
}
|
|
1135
|
+
function readCamelResult(v) {
|
|
1136
|
+
const r = isRecord2(v) ? v : {};
|
|
1137
|
+
const text = typeof r.textResultForLlm === "string" ? r.textResultForLlm : "";
|
|
1138
|
+
return { isError: typeof r.resultType === "string" && r.resultType !== RESULT_SUCCESS2, bytes: Buffer.byteLength(text), text };
|
|
1139
|
+
}
|
|
1140
|
+
function decodeCamel(p, name) {
|
|
1141
|
+
const event = typeof name === "string" ? CAMEL_EVENTS[name] ?? VSCODE_EVENTS.find((e) => e === name) : void 0;
|
|
1142
|
+
if (event === void 0) throw new Error("vscode: unknown hook event " + String(name));
|
|
1143
|
+
const ev = { event, agent: "vscode", sessionId: String(p.sessionId ?? ""), cwd: String(p.cwd ?? "") };
|
|
1144
|
+
if (event === "SessionStart" && typeof p.source === "string" && SESSION_SOURCES[p.source] !== void 0) ev.source = SESSION_SOURCES[p.source];
|
|
1145
|
+
if (event === "UserPromptSubmit" && typeof p.prompt === "string") ev.prompt = p.prompt;
|
|
1146
|
+
if (event === "PreToolUse" || event === "PostToolUse") {
|
|
1147
|
+
const toolName = String(p.toolName ?? "");
|
|
1148
|
+
ev.tool = { name: toolName, canonicalName: canonicalName4(toolName), input: readArgs2(p.toolArgs) };
|
|
1149
|
+
}
|
|
1150
|
+
if (event === "PostToolUse") ev.result = readCamelResult(p.toolResult);
|
|
1151
|
+
return ev;
|
|
1152
|
+
}
|
|
1104
1153
|
function decode6(raw) {
|
|
1105
1154
|
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) throw new Error("vscode: hook payload is not a JSON object");
|
|
1106
1155
|
const p = raw;
|
|
1156
|
+
if (p.hookEventName !== void 0) return decodeCamel(p, p.hookEventName);
|
|
1157
|
+
if (p.hook_event_name === void 0) {
|
|
1158
|
+
const byKey = EVENT_BY_KEY2.find(([key]) => Object.hasOwn(p, key))?.[1];
|
|
1159
|
+
if (byKey === void 0) throw new Error("vscode: missing required field hook_event_name");
|
|
1160
|
+
return decodeCamel(p, byKey);
|
|
1161
|
+
}
|
|
1107
1162
|
const event = VSCODE_EVENTS.find((e) => e === p.hook_event_name);
|
|
1108
1163
|
if (event === void 0) throw new Error("vscode: unknown hook event " + String(p.hook_event_name));
|
|
1109
1164
|
const ev = { event, agent: "vscode", sessionId: String(p.session_id ?? ""), cwd: String(p.cwd ?? "") };
|
|
@@ -1111,7 +1166,7 @@ function decode6(raw) {
|
|
|
1111
1166
|
if (event === "UserPromptSubmit" && typeof p.prompt === "string") ev.prompt = p.prompt;
|
|
1112
1167
|
if (event === "PreToolUse" || event === "PostToolUse") {
|
|
1113
1168
|
const name = String(p.tool_name ?? "");
|
|
1114
|
-
const input =
|
|
1169
|
+
const input = isRecord2(p.tool_input) ? p.tool_input : {};
|
|
1115
1170
|
ev.tool = { name, canonicalName: canonicalName4(name), input };
|
|
1116
1171
|
}
|
|
1117
1172
|
if (event === "PostToolUse") ev.result = readResult4(p.tool_response);
|
|
@@ -1130,12 +1185,14 @@ var KIRO_EVENTS = {
|
|
|
1130
1185
|
PromptSubmit: "UserPromptSubmit",
|
|
1131
1186
|
userPromptSubmit: "UserPromptSubmit",
|
|
1132
1187
|
PreToolUse: "PreToolUse",
|
|
1133
|
-
|
|
1188
|
+
preToolUse: "PreToolUse",
|
|
1189
|
+
PostToolUse: "PostToolUse",
|
|
1190
|
+
postToolUse: "PostToolUse"
|
|
1134
1191
|
};
|
|
1135
1192
|
var PROMPT_ENV = "USER_PROMPT";
|
|
1136
1193
|
var MCP_PREFIX3 = "mcp_";
|
|
1137
|
-
var
|
|
1138
|
-
var NATIVE_TO_CANONICAL5 =
|
|
1194
|
+
var SHELL_TOOL_NAMES = Object.freeze(["execute_bash", "execute_pwsh", "shell"]);
|
|
1195
|
+
var NATIVE_TO_CANONICAL5 = Object.fromEntries(SHELL_TOOL_NAMES.map((n) => [n, "Bash"]));
|
|
1139
1196
|
var MCP_SEP3 = "_";
|
|
1140
1197
|
var KIRO_SOURCES = { startup: "startup", resume: "resume", clear: "clear", compact: "compact" };
|
|
1141
1198
|
function canonicalName5(name) {
|
|
@@ -1276,8 +1333,8 @@ var OPENCODE_EVENTS = {
|
|
|
1276
1333
|
compaction: "PreCompact",
|
|
1277
1334
|
"step-finish": "Usage"
|
|
1278
1335
|
};
|
|
1279
|
-
var
|
|
1280
|
-
var NATIVE_TO_CANONICAL7 = { webfetch: "WebFetch", [
|
|
1336
|
+
var SHELL_TOOL_NAME2 = "bash";
|
|
1337
|
+
var NATIVE_TO_CANONICAL7 = { webfetch: "WebFetch", [SHELL_TOOL_NAME2]: "Bash" };
|
|
1281
1338
|
function toCanonicalTool(name) {
|
|
1282
1339
|
if (name.startsWith(OWN_WIRE_PREFIX)) return name.slice(OWN_WIRE_PREFIX.length);
|
|
1283
1340
|
return Object.prototype.hasOwnProperty.call(NATIVE_TO_CANONICAL7, name) ? NATIVE_TO_CANONICAL7[name] : name;
|
|
@@ -1397,8 +1454,8 @@ var ADAPTERS = Object.freeze([
|
|
|
1397
1454
|
hookTimeoutMs: HOOK_TIMEOUT_MS,
|
|
1398
1455
|
denyChannel: "deny-reason",
|
|
1399
1456
|
hookChannel: { kind: "package", path: "hooks/qwen.json" },
|
|
1400
|
-
skillChannel: { kind: "
|
|
1401
|
-
// ADR-0020
|
|
1457
|
+
skillChannel: { kind: "package", path: "skills" },
|
|
1458
|
+
// ADR-0020, D-HQ-SKILLS-3: qwen loads <extension>/skills, shared with gemini
|
|
1402
1459
|
decode: decode4,
|
|
1403
1460
|
encode: encode4
|
|
1404
1461
|
},
|
|
@@ -1434,8 +1491,8 @@ var ADAPTERS = Object.freeze([
|
|
|
1434
1491
|
hookTimeoutMs: HOOK_TIMEOUT_MS,
|
|
1435
1492
|
denyChannel: "deny-reason",
|
|
1436
1493
|
hookChannel: { kind: "home-file", path: ".copilot/hooks/context-mode-vscode.json" },
|
|
1437
|
-
skillChannel: { kind: "home-dir", path: ".
|
|
1438
|
-
// ADR-0020
|
|
1494
|
+
skillChannel: { kind: "home-dir", path: ".agents/skills" },
|
|
1495
|
+
// ADR-0020, D-HQ-COPILOT-NAMES-3: Copilot CLI owns ~/.copilot/skills
|
|
1439
1496
|
decode: decode6,
|
|
1440
1497
|
encode: encode6
|
|
1441
1498
|
},
|
|
@@ -1444,9 +1501,9 @@ var ADAPTERS = Object.freeze([
|
|
|
1444
1501
|
installMode: "mcp-entry",
|
|
1445
1502
|
projectSource: "arg:--agent+cwd",
|
|
1446
1503
|
toolNamePrefix: TOOL_NAME_PREFIX7,
|
|
1447
|
-
nativeTools: { shell: [
|
|
1504
|
+
nativeTools: { shell: [...SHELL_TOOL_NAMES] },
|
|
1448
1505
|
execReadOnlyHint: false,
|
|
1449
|
-
// D-HF-KIRO-SHELL-1
|
|
1506
|
+
// D-HF-KIRO-SHELL-1, D-N7-KIRO-1
|
|
1450
1507
|
eventMap: { SessionStart: "SessionStart", UserPromptSubmit: "UserPromptSubmit", PreToolUse: "PreToolUse", PostToolUse: "PostToolUse" },
|
|
1451
1508
|
compactDelivery: "none",
|
|
1452
1509
|
compactSummary: "none",
|
|
@@ -1459,7 +1516,7 @@ var ADAPTERS = Object.freeze([
|
|
|
1459
1516
|
encode: encode7
|
|
1460
1517
|
},
|
|
1461
1518
|
{
|
|
1462
|
-
// toolNamePrefix
|
|
1519
|
+
// toolNamePrefix is the documented ZCode name mcp__<server>__<tool> (D-N7-ZCODE-NAMES-1); nativeTools are Claude names.
|
|
1463
1520
|
id: "zcode",
|
|
1464
1521
|
installMode: "hooks+mcp",
|
|
1465
1522
|
projectSource: "spawn-cwd",
|
|
@@ -1501,7 +1558,7 @@ var ADAPTERS = Object.freeze([
|
|
|
1501
1558
|
installMode: "in-process",
|
|
1502
1559
|
projectSource: "spawn-cwd",
|
|
1503
1560
|
toolNamePrefix: TOOL_NAME_PREFIX10,
|
|
1504
|
-
nativeTools: { shell: [
|
|
1561
|
+
nativeTools: { shell: [SHELL_TOOL_NAME2] },
|
|
1505
1562
|
execReadOnlyHint: false,
|
|
1506
1563
|
// D-HF-OPENCODE-SHELL-1
|
|
1507
1564
|
// Usage: step-finish cost row (DEVIATIONS D-M5-arch-2).
|
package/package.json
CHANGED
package/pi/index.js
CHANGED
|
@@ -11476,7 +11476,7 @@ var DECISION_OPTION_KEY = "option";
|
|
|
11476
11476
|
var DECISION_LABEL_JOIN = " | ";
|
|
11477
11477
|
var RELEASE_REPO_URL = "https://github.com/mksglu/context-mode.git";
|
|
11478
11478
|
var RELEASE_BRANCH = "release";
|
|
11479
|
-
var BUNDLE_SHA = true ? "
|
|
11479
|
+
var BUNDLE_SHA = true ? "f61b6973877b47851ac5938c46fee1399946289e" : void 0;
|
|
11480
11480
|
var DOCTOR_CHECK_ORDER = Object.freeze(["D1", "D2", "D3", "D4", "D5", "D5b", "D6", "D7", "D8", "D9", "D10"]);
|
|
11481
11481
|
var DOCTOR_LABEL = Object.freeze({
|
|
11482
11482
|
D1: "version",
|
|
@@ -11783,8 +11783,10 @@ var MCP_ARGS_FIELD = "args";
|
|
|
11783
11783
|
var ZCODE_MCP_FEATURE_KEY = Object.freeze(["features", "mcp"]);
|
|
11784
11784
|
var CODEX_OMIT_TOOLS_FROM_FIELD = "omit_tools_from";
|
|
11785
11785
|
var CODEX_OMIT_DEFERRED = Object.freeze(["deferred"]);
|
|
11786
|
+
var CODEX_APPROVAL_MODE_FIELD = "default_tools_approval_mode";
|
|
11787
|
+
var CODEX_APPROVAL_APPROVE = "approve";
|
|
11786
11788
|
var OWN_MCP_ENTRY = Object.freeze({
|
|
11787
|
-
codex: { file: [".codex", "config.toml"], key: ["mcp_servers", SERVER_KEY], fields: { [CODEX_OMIT_TOOLS_FROM_FIELD]: CODEX_OMIT_DEFERRED } },
|
|
11789
|
+
codex: { file: [".codex", "config.toml"], key: ["mcp_servers", SERVER_KEY], fields: { [CODEX_OMIT_TOOLS_FROM_FIELD]: CODEX_OMIT_DEFERRED, [CODEX_APPROVAL_MODE_FIELD]: CODEX_APPROVAL_APPROVE } },
|
|
11788
11790
|
vscode: { file: [".vscode", "mcp.json"], key: ["servers", SERVER_KEY] },
|
|
11789
11791
|
kiro: { file: [".kiro", "settings", "mcp.json"], key: ["mcpServers", SERVER_KEY] },
|
|
11790
11792
|
zcode: {
|
|
@@ -12305,9 +12307,62 @@ function readResult5(resp) {
|
|
|
12305
12307
|
const isError = typeof resp === "object" && resp !== null && resp.is_error === true;
|
|
12306
12308
|
return { isError, bytes: Buffer.byteLength(text), text };
|
|
12307
12309
|
}
|
|
12310
|
+
var CAMEL_EVENTS = {
|
|
12311
|
+
sessionStart: "SessionStart",
|
|
12312
|
+
userPromptSubmitted: "UserPromptSubmit",
|
|
12313
|
+
preToolUse: "PreToolUse",
|
|
12314
|
+
postToolUse: "PostToolUse",
|
|
12315
|
+
preCompact: "PreCompact"
|
|
12316
|
+
};
|
|
12317
|
+
var EVENT_BY_KEY2 = [
|
|
12318
|
+
["toolResult", "postToolUse"],
|
|
12319
|
+
["toolName", "preToolUse"],
|
|
12320
|
+
["prompt", "userPromptSubmitted"],
|
|
12321
|
+
["source", "sessionStart"],
|
|
12322
|
+
["trigger", "preCompact"]
|
|
12323
|
+
];
|
|
12324
|
+
var SESSION_SOURCES = { new: "startup", startup: "startup", resume: "resume" };
|
|
12325
|
+
var RESULT_SUCCESS2 = "success";
|
|
12326
|
+
function isRecord2(v) {
|
|
12327
|
+
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
12328
|
+
}
|
|
12329
|
+
function readArgs2(v) {
|
|
12330
|
+
if (isRecord2(v)) return v;
|
|
12331
|
+
if (typeof v !== "string") return {};
|
|
12332
|
+
try {
|
|
12333
|
+
const parsed = JSON.parse(v);
|
|
12334
|
+
return isRecord2(parsed) ? parsed : {};
|
|
12335
|
+
} catch {
|
|
12336
|
+
return {};
|
|
12337
|
+
}
|
|
12338
|
+
}
|
|
12339
|
+
function readCamelResult(v) {
|
|
12340
|
+
const r = isRecord2(v) ? v : {};
|
|
12341
|
+
const text = typeof r.textResultForLlm === "string" ? r.textResultForLlm : "";
|
|
12342
|
+
return { isError: typeof r.resultType === "string" && r.resultType !== RESULT_SUCCESS2, bytes: Buffer.byteLength(text), text };
|
|
12343
|
+
}
|
|
12344
|
+
function decodeCamel(p, name) {
|
|
12345
|
+
const event = typeof name === "string" ? CAMEL_EVENTS[name] ?? VSCODE_EVENTS.find((e) => e === name) : void 0;
|
|
12346
|
+
if (event === void 0) throw new Error("vscode: unknown hook event " + String(name));
|
|
12347
|
+
const ev = { event, agent: "vscode", sessionId: String(p.sessionId ?? ""), cwd: String(p.cwd ?? "") };
|
|
12348
|
+
if (event === "SessionStart" && typeof p.source === "string" && SESSION_SOURCES[p.source] !== void 0) ev.source = SESSION_SOURCES[p.source];
|
|
12349
|
+
if (event === "UserPromptSubmit" && typeof p.prompt === "string") ev.prompt = p.prompt;
|
|
12350
|
+
if (event === "PreToolUse" || event === "PostToolUse") {
|
|
12351
|
+
const toolName = String(p.toolName ?? "");
|
|
12352
|
+
ev.tool = { name: toolName, canonicalName: canonicalName4(toolName), input: readArgs2(p.toolArgs) };
|
|
12353
|
+
}
|
|
12354
|
+
if (event === "PostToolUse") ev.result = readCamelResult(p.toolResult);
|
|
12355
|
+
return ev;
|
|
12356
|
+
}
|
|
12308
12357
|
function decode7(raw) {
|
|
12309
12358
|
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) throw new Error("vscode: hook payload is not a JSON object");
|
|
12310
12359
|
const p = raw;
|
|
12360
|
+
if (p.hookEventName !== void 0) return decodeCamel(p, p.hookEventName);
|
|
12361
|
+
if (p.hook_event_name === void 0) {
|
|
12362
|
+
const byKey = EVENT_BY_KEY2.find(([key]) => Object.hasOwn(p, key))?.[1];
|
|
12363
|
+
if (byKey === void 0) throw new Error("vscode: missing required field hook_event_name");
|
|
12364
|
+
return decodeCamel(p, byKey);
|
|
12365
|
+
}
|
|
12311
12366
|
const event = VSCODE_EVENTS.find((e) => e === p.hook_event_name);
|
|
12312
12367
|
if (event === void 0) throw new Error("vscode: unknown hook event " + String(p.hook_event_name));
|
|
12313
12368
|
const ev = { event, agent: "vscode", sessionId: String(p.session_id ?? ""), cwd: String(p.cwd ?? "") };
|
|
@@ -12315,7 +12370,7 @@ function decode7(raw) {
|
|
|
12315
12370
|
if (event === "UserPromptSubmit" && typeof p.prompt === "string") ev.prompt = p.prompt;
|
|
12316
12371
|
if (event === "PreToolUse" || event === "PostToolUse") {
|
|
12317
12372
|
const name = String(p.tool_name ?? "");
|
|
12318
|
-
const input =
|
|
12373
|
+
const input = isRecord2(p.tool_input) ? p.tool_input : {};
|
|
12319
12374
|
ev.tool = { name, canonicalName: canonicalName4(name), input };
|
|
12320
12375
|
}
|
|
12321
12376
|
if (event === "PostToolUse") ev.result = readResult5(p.tool_response);
|
|
@@ -12334,12 +12389,14 @@ var KIRO_EVENTS = {
|
|
|
12334
12389
|
PromptSubmit: "UserPromptSubmit",
|
|
12335
12390
|
userPromptSubmit: "UserPromptSubmit",
|
|
12336
12391
|
PreToolUse: "PreToolUse",
|
|
12337
|
-
|
|
12392
|
+
preToolUse: "PreToolUse",
|
|
12393
|
+
PostToolUse: "PostToolUse",
|
|
12394
|
+
postToolUse: "PostToolUse"
|
|
12338
12395
|
};
|
|
12339
12396
|
var PROMPT_ENV = "USER_PROMPT";
|
|
12340
12397
|
var MCP_PREFIX3 = "mcp_";
|
|
12341
|
-
var
|
|
12342
|
-
var NATIVE_TO_CANONICAL6 =
|
|
12398
|
+
var SHELL_TOOL_NAMES = Object.freeze(["execute_bash", "execute_pwsh", "shell"]);
|
|
12399
|
+
var NATIVE_TO_CANONICAL6 = Object.fromEntries(SHELL_TOOL_NAMES.map((n) => [n, "Bash"]));
|
|
12343
12400
|
var MCP_SEP3 = "_";
|
|
12344
12401
|
var KIRO_SOURCES = { startup: "startup", resume: "resume", clear: "clear", compact: "compact" };
|
|
12345
12402
|
function canonicalName5(name) {
|
|
@@ -12422,8 +12479,8 @@ var OPENCODE_EVENTS = {
|
|
|
12422
12479
|
compaction: "PreCompact",
|
|
12423
12480
|
"step-finish": "Usage"
|
|
12424
12481
|
};
|
|
12425
|
-
var
|
|
12426
|
-
var NATIVE_TO_CANONICAL7 = { webfetch: "WebFetch", [
|
|
12482
|
+
var SHELL_TOOL_NAME2 = "bash";
|
|
12483
|
+
var NATIVE_TO_CANONICAL7 = { webfetch: "WebFetch", [SHELL_TOOL_NAME2]: "Bash" };
|
|
12427
12484
|
function toCanonicalTool(name) {
|
|
12428
12485
|
if (name.startsWith(OWN_WIRE_PREFIX)) return name.slice(OWN_WIRE_PREFIX.length);
|
|
12429
12486
|
return Object.prototype.hasOwnProperty.call(NATIVE_TO_CANONICAL7, name) ? NATIVE_TO_CANONICAL7[name] : name;
|
|
@@ -12543,8 +12600,8 @@ var ADAPTERS = Object.freeze([
|
|
|
12543
12600
|
hookTimeoutMs: HOOK_TIMEOUT_MS,
|
|
12544
12601
|
denyChannel: "deny-reason",
|
|
12545
12602
|
hookChannel: { kind: "package", path: "hooks/qwen.json" },
|
|
12546
|
-
skillChannel: { kind: "
|
|
12547
|
-
// ADR-0020
|
|
12603
|
+
skillChannel: { kind: "package", path: "skills" },
|
|
12604
|
+
// ADR-0020, D-HQ-SKILLS-3: qwen loads <extension>/skills, shared with gemini
|
|
12548
12605
|
decode: decode5,
|
|
12549
12606
|
encode: encode5
|
|
12550
12607
|
},
|
|
@@ -12580,8 +12637,8 @@ var ADAPTERS = Object.freeze([
|
|
|
12580
12637
|
hookTimeoutMs: HOOK_TIMEOUT_MS,
|
|
12581
12638
|
denyChannel: "deny-reason",
|
|
12582
12639
|
hookChannel: { kind: "home-file", path: ".copilot/hooks/context-mode-vscode.json" },
|
|
12583
|
-
skillChannel: { kind: "home-dir", path: ".
|
|
12584
|
-
// ADR-0020
|
|
12640
|
+
skillChannel: { kind: "home-dir", path: ".agents/skills" },
|
|
12641
|
+
// ADR-0020, D-HQ-COPILOT-NAMES-3: Copilot CLI owns ~/.copilot/skills
|
|
12585
12642
|
decode: decode7,
|
|
12586
12643
|
encode: encode7
|
|
12587
12644
|
},
|
|
@@ -12590,9 +12647,9 @@ var ADAPTERS = Object.freeze([
|
|
|
12590
12647
|
installMode: "mcp-entry",
|
|
12591
12648
|
projectSource: "arg:--agent+cwd",
|
|
12592
12649
|
toolNamePrefix: TOOL_NAME_PREFIX8,
|
|
12593
|
-
nativeTools: { shell: [
|
|
12650
|
+
nativeTools: { shell: [...SHELL_TOOL_NAMES] },
|
|
12594
12651
|
execReadOnlyHint: false,
|
|
12595
|
-
// D-HF-KIRO-SHELL-1
|
|
12652
|
+
// D-HF-KIRO-SHELL-1, D-N7-KIRO-1
|
|
12596
12653
|
eventMap: { SessionStart: "SessionStart", UserPromptSubmit: "UserPromptSubmit", PreToolUse: "PreToolUse", PostToolUse: "PostToolUse" },
|
|
12597
12654
|
compactDelivery: "none",
|
|
12598
12655
|
compactSummary: "none",
|
|
@@ -12605,7 +12662,7 @@ var ADAPTERS = Object.freeze([
|
|
|
12605
12662
|
encode: encode8
|
|
12606
12663
|
},
|
|
12607
12664
|
{
|
|
12608
|
-
// toolNamePrefix
|
|
12665
|
+
// toolNamePrefix is the documented ZCode name mcp__<server>__<tool> (D-N7-ZCODE-NAMES-1); nativeTools are Claude names.
|
|
12609
12666
|
id: "zcode",
|
|
12610
12667
|
installMode: "hooks+mcp",
|
|
12611
12668
|
projectSource: "spawn-cwd",
|
|
@@ -12647,7 +12704,7 @@ var ADAPTERS = Object.freeze([
|
|
|
12647
12704
|
installMode: "in-process",
|
|
12648
12705
|
projectSource: "spawn-cwd",
|
|
12649
12706
|
toolNamePrefix: TOOL_NAME_PREFIX10,
|
|
12650
|
-
nativeTools: { shell: [
|
|
12707
|
+
nativeTools: { shell: [SHELL_TOOL_NAME2] },
|
|
12651
12708
|
execReadOnlyHint: false,
|
|
12652
12709
|
// D-HF-OPENCODE-SHELL-1
|
|
12653
12710
|
// Usage: step-finish cost row (DEVIATIONS D-M5-arch-2).
|
package/qwen-extension.json
CHANGED
package/run.mjs
CHANGED
|
@@ -356,8 +356,10 @@ var OPENCODE_TOOL_PREFIX = SERVER_KEY + "_";
|
|
|
356
356
|
var ZCODE_MCP_FEATURE_KEY = Object.freeze(["features", "mcp"]);
|
|
357
357
|
var CODEX_OMIT_TOOLS_FROM_FIELD = "omit_tools_from";
|
|
358
358
|
var CODEX_OMIT_DEFERRED = Object.freeze(["deferred"]);
|
|
359
|
+
var CODEX_APPROVAL_MODE_FIELD = "default_tools_approval_mode";
|
|
360
|
+
var CODEX_APPROVAL_APPROVE = "approve";
|
|
359
361
|
var OWN_MCP_ENTRY = Object.freeze({
|
|
360
|
-
codex: { file: [".codex", "config.toml"], key: ["mcp_servers", SERVER_KEY], fields: { [CODEX_OMIT_TOOLS_FROM_FIELD]: CODEX_OMIT_DEFERRED } },
|
|
362
|
+
codex: { file: [".codex", "config.toml"], key: ["mcp_servers", SERVER_KEY], fields: { [CODEX_OMIT_TOOLS_FROM_FIELD]: CODEX_OMIT_DEFERRED, [CODEX_APPROVAL_MODE_FIELD]: CODEX_APPROVAL_APPROVE } },
|
|
361
363
|
vscode: { file: [".vscode", "mcp.json"], key: ["servers", SERVER_KEY] },
|
|
362
364
|
kiro: { file: [".kiro", "settings", "mcp.json"], key: ["mcpServers", SERVER_KEY] },
|
|
363
365
|
zcode: {
|
|
@@ -748,9 +750,62 @@ function readResult4(resp) {
|
|
|
748
750
|
const isError = typeof resp === "object" && resp !== null && resp.is_error === true;
|
|
749
751
|
return { isError, bytes: Buffer.byteLength(text), text };
|
|
750
752
|
}
|
|
753
|
+
var CAMEL_EVENTS = {
|
|
754
|
+
sessionStart: "SessionStart",
|
|
755
|
+
userPromptSubmitted: "UserPromptSubmit",
|
|
756
|
+
preToolUse: "PreToolUse",
|
|
757
|
+
postToolUse: "PostToolUse",
|
|
758
|
+
preCompact: "PreCompact"
|
|
759
|
+
};
|
|
760
|
+
var EVENT_BY_KEY2 = [
|
|
761
|
+
["toolResult", "postToolUse"],
|
|
762
|
+
["toolName", "preToolUse"],
|
|
763
|
+
["prompt", "userPromptSubmitted"],
|
|
764
|
+
["source", "sessionStart"],
|
|
765
|
+
["trigger", "preCompact"]
|
|
766
|
+
];
|
|
767
|
+
var SESSION_SOURCES = { new: "startup", startup: "startup", resume: "resume" };
|
|
768
|
+
var RESULT_SUCCESS2 = "success";
|
|
769
|
+
function isRecord2(v) {
|
|
770
|
+
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
771
|
+
}
|
|
772
|
+
function readArgs2(v) {
|
|
773
|
+
if (isRecord2(v)) return v;
|
|
774
|
+
if (typeof v !== "string") return {};
|
|
775
|
+
try {
|
|
776
|
+
const parsed = JSON.parse(v);
|
|
777
|
+
return isRecord2(parsed) ? parsed : {};
|
|
778
|
+
} catch {
|
|
779
|
+
return {};
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
function readCamelResult(v) {
|
|
783
|
+
const r = isRecord2(v) ? v : {};
|
|
784
|
+
const text = typeof r.textResultForLlm === "string" ? r.textResultForLlm : "";
|
|
785
|
+
return { isError: typeof r.resultType === "string" && r.resultType !== RESULT_SUCCESS2, bytes: Buffer.byteLength(text), text };
|
|
786
|
+
}
|
|
787
|
+
function decodeCamel(p, name) {
|
|
788
|
+
const event = typeof name === "string" ? CAMEL_EVENTS[name] ?? VSCODE_EVENTS.find((e) => e === name) : void 0;
|
|
789
|
+
if (event === void 0) throw new Error("vscode: unknown hook event " + String(name));
|
|
790
|
+
const ev = { event, agent: "vscode", sessionId: String(p.sessionId ?? ""), cwd: String(p.cwd ?? "") };
|
|
791
|
+
if (event === "SessionStart" && typeof p.source === "string" && SESSION_SOURCES[p.source] !== void 0) ev.source = SESSION_SOURCES[p.source];
|
|
792
|
+
if (event === "UserPromptSubmit" && typeof p.prompt === "string") ev.prompt = p.prompt;
|
|
793
|
+
if (event === "PreToolUse" || event === "PostToolUse") {
|
|
794
|
+
const toolName = String(p.toolName ?? "");
|
|
795
|
+
ev.tool = { name: toolName, canonicalName: canonicalName4(toolName), input: readArgs2(p.toolArgs) };
|
|
796
|
+
}
|
|
797
|
+
if (event === "PostToolUse") ev.result = readCamelResult(p.toolResult);
|
|
798
|
+
return ev;
|
|
799
|
+
}
|
|
751
800
|
function decode6(raw) {
|
|
752
801
|
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) throw new Error("vscode: hook payload is not a JSON object");
|
|
753
802
|
const p = raw;
|
|
803
|
+
if (p.hookEventName !== void 0) return decodeCamel(p, p.hookEventName);
|
|
804
|
+
if (p.hook_event_name === void 0) {
|
|
805
|
+
const byKey = EVENT_BY_KEY2.find(([key]) => Object.hasOwn(p, key))?.[1];
|
|
806
|
+
if (byKey === void 0) throw new Error("vscode: missing required field hook_event_name");
|
|
807
|
+
return decodeCamel(p, byKey);
|
|
808
|
+
}
|
|
754
809
|
const event = VSCODE_EVENTS.find((e) => e === p.hook_event_name);
|
|
755
810
|
if (event === void 0) throw new Error("vscode: unknown hook event " + String(p.hook_event_name));
|
|
756
811
|
const ev = { event, agent: "vscode", sessionId: String(p.session_id ?? ""), cwd: String(p.cwd ?? "") };
|
|
@@ -758,7 +813,7 @@ function decode6(raw) {
|
|
|
758
813
|
if (event === "UserPromptSubmit" && typeof p.prompt === "string") ev.prompt = p.prompt;
|
|
759
814
|
if (event === "PreToolUse" || event === "PostToolUse") {
|
|
760
815
|
const name = String(p.tool_name ?? "");
|
|
761
|
-
const input =
|
|
816
|
+
const input = isRecord2(p.tool_input) ? p.tool_input : {};
|
|
762
817
|
ev.tool = { name, canonicalName: canonicalName4(name), input };
|
|
763
818
|
}
|
|
764
819
|
if (event === "PostToolUse") ev.result = readResult4(p.tool_response);
|
|
@@ -777,12 +832,14 @@ var KIRO_EVENTS = {
|
|
|
777
832
|
PromptSubmit: "UserPromptSubmit",
|
|
778
833
|
userPromptSubmit: "UserPromptSubmit",
|
|
779
834
|
PreToolUse: "PreToolUse",
|
|
780
|
-
|
|
835
|
+
preToolUse: "PreToolUse",
|
|
836
|
+
PostToolUse: "PostToolUse",
|
|
837
|
+
postToolUse: "PostToolUse"
|
|
781
838
|
};
|
|
782
839
|
var PROMPT_ENV = "USER_PROMPT";
|
|
783
840
|
var MCP_PREFIX3 = "mcp_";
|
|
784
|
-
var
|
|
785
|
-
var NATIVE_TO_CANONICAL5 =
|
|
841
|
+
var SHELL_TOOL_NAMES = Object.freeze(["execute_bash", "execute_pwsh", "shell"]);
|
|
842
|
+
var NATIVE_TO_CANONICAL5 = Object.fromEntries(SHELL_TOOL_NAMES.map((n) => [n, "Bash"]));
|
|
786
843
|
var MCP_SEP3 = "_";
|
|
787
844
|
var KIRO_SOURCES = { startup: "startup", resume: "resume", clear: "clear", compact: "compact" };
|
|
788
845
|
function canonicalName5(name) {
|
|
@@ -923,8 +980,8 @@ var OPENCODE_EVENTS = {
|
|
|
923
980
|
compaction: "PreCompact",
|
|
924
981
|
"step-finish": "Usage"
|
|
925
982
|
};
|
|
926
|
-
var
|
|
927
|
-
var NATIVE_TO_CANONICAL7 = { webfetch: "WebFetch", [
|
|
983
|
+
var SHELL_TOOL_NAME2 = "bash";
|
|
984
|
+
var NATIVE_TO_CANONICAL7 = { webfetch: "WebFetch", [SHELL_TOOL_NAME2]: "Bash" };
|
|
928
985
|
function toCanonicalTool(name) {
|
|
929
986
|
if (name.startsWith(OWN_WIRE_PREFIX)) return name.slice(OWN_WIRE_PREFIX.length);
|
|
930
987
|
return Object.prototype.hasOwnProperty.call(NATIVE_TO_CANONICAL7, name) ? NATIVE_TO_CANONICAL7[name] : name;
|
|
@@ -1044,8 +1101,8 @@ var ADAPTERS = Object.freeze([
|
|
|
1044
1101
|
hookTimeoutMs: HOOK_TIMEOUT_MS,
|
|
1045
1102
|
denyChannel: "deny-reason",
|
|
1046
1103
|
hookChannel: { kind: "package", path: "hooks/qwen.json" },
|
|
1047
|
-
skillChannel: { kind: "
|
|
1048
|
-
// ADR-0020
|
|
1104
|
+
skillChannel: { kind: "package", path: "skills" },
|
|
1105
|
+
// ADR-0020, D-HQ-SKILLS-3: qwen loads <extension>/skills, shared with gemini
|
|
1049
1106
|
decode: decode4,
|
|
1050
1107
|
encode: encode4
|
|
1051
1108
|
},
|
|
@@ -1081,8 +1138,8 @@ var ADAPTERS = Object.freeze([
|
|
|
1081
1138
|
hookTimeoutMs: HOOK_TIMEOUT_MS,
|
|
1082
1139
|
denyChannel: "deny-reason",
|
|
1083
1140
|
hookChannel: { kind: "home-file", path: ".copilot/hooks/context-mode-vscode.json" },
|
|
1084
|
-
skillChannel: { kind: "home-dir", path: ".
|
|
1085
|
-
// ADR-0020
|
|
1141
|
+
skillChannel: { kind: "home-dir", path: ".agents/skills" },
|
|
1142
|
+
// ADR-0020, D-HQ-COPILOT-NAMES-3: Copilot CLI owns ~/.copilot/skills
|
|
1086
1143
|
decode: decode6,
|
|
1087
1144
|
encode: encode6
|
|
1088
1145
|
},
|
|
@@ -1091,9 +1148,9 @@ var ADAPTERS = Object.freeze([
|
|
|
1091
1148
|
installMode: "mcp-entry",
|
|
1092
1149
|
projectSource: "arg:--agent+cwd",
|
|
1093
1150
|
toolNamePrefix: TOOL_NAME_PREFIX7,
|
|
1094
|
-
nativeTools: { shell: [
|
|
1151
|
+
nativeTools: { shell: [...SHELL_TOOL_NAMES] },
|
|
1095
1152
|
execReadOnlyHint: false,
|
|
1096
|
-
// D-HF-KIRO-SHELL-1
|
|
1153
|
+
// D-HF-KIRO-SHELL-1, D-N7-KIRO-1
|
|
1097
1154
|
eventMap: { SessionStart: "SessionStart", UserPromptSubmit: "UserPromptSubmit", PreToolUse: "PreToolUse", PostToolUse: "PostToolUse" },
|
|
1098
1155
|
compactDelivery: "none",
|
|
1099
1156
|
compactSummary: "none",
|
|
@@ -1106,7 +1163,7 @@ var ADAPTERS = Object.freeze([
|
|
|
1106
1163
|
encode: encode7
|
|
1107
1164
|
},
|
|
1108
1165
|
{
|
|
1109
|
-
// toolNamePrefix
|
|
1166
|
+
// toolNamePrefix is the documented ZCode name mcp__<server>__<tool> (D-N7-ZCODE-NAMES-1); nativeTools are Claude names.
|
|
1110
1167
|
id: "zcode",
|
|
1111
1168
|
installMode: "hooks+mcp",
|
|
1112
1169
|
projectSource: "spawn-cwd",
|
|
@@ -1148,7 +1205,7 @@ var ADAPTERS = Object.freeze([
|
|
|
1148
1205
|
installMode: "in-process",
|
|
1149
1206
|
projectSource: "spawn-cwd",
|
|
1150
1207
|
toolNamePrefix: TOOL_NAME_PREFIX10,
|
|
1151
|
-
nativeTools: { shell: [
|
|
1208
|
+
nativeTools: { shell: [SHELL_TOOL_NAME2] },
|
|
1152
1209
|
execReadOnlyHint: false,
|
|
1153
1210
|
// D-HF-OPENCODE-SHELL-1
|
|
1154
1211
|
// Usage: step-finish cost row (DEVIATIONS D-M5-arch-2).
|