@ycodium-ai/agent-claude 0.2.3106 → 0.2.3112
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/index.js +60 -29
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -22770,6 +22770,39 @@ function assertSteeringTarget(expectedTurnId, turnState) {
|
|
|
22770
22770
|
throw rejected;
|
|
22771
22771
|
}
|
|
22772
22772
|
|
|
22773
|
+
// src/hostMcpAllowRules.ts
|
|
22774
|
+
function claudeHostMcpAllowRules(servers) {
|
|
22775
|
+
return (servers ?? []).filter((server) => server.hostOwned === true).map((server) => `mcp__${server.name}`);
|
|
22776
|
+
}
|
|
22777
|
+
function claudePermissionAllow(rules, mode) {
|
|
22778
|
+
return mode === "auto" ? [...rules.read, ...rules.hostMcp] : rules.read;
|
|
22779
|
+
}
|
|
22780
|
+
|
|
22781
|
+
// src/adapter/permissionMode.ts
|
|
22782
|
+
var sameRules = (a, b3) => a.join("\n") === b3.join("\n");
|
|
22783
|
+
var permissionAllowInSync = (context) => sameRules(
|
|
22784
|
+
claudePermissionAllow(context.permissionRules, context.currentPermissionMode),
|
|
22785
|
+
context.currentPermissionAllow
|
|
22786
|
+
);
|
|
22787
|
+
async function applyClaudePermissionMode(context, mode, failAs) {
|
|
22788
|
+
try {
|
|
22789
|
+
await context.query.setPermissionMode(mode);
|
|
22790
|
+
} catch (cause) {
|
|
22791
|
+
throw toRequestError(failAs.threadId, failAs.method, cause);
|
|
22792
|
+
}
|
|
22793
|
+
context.currentPermissionMode = mode;
|
|
22794
|
+
const allow = claudePermissionAllow(context.permissionRules, mode);
|
|
22795
|
+
if (sameRules(allow, context.currentPermissionAllow)) return;
|
|
22796
|
+
try {
|
|
22797
|
+
await context.query.applyFlagSettings({
|
|
22798
|
+
permissions: allow.length > 0 ? { allow: [...allow] } : null
|
|
22799
|
+
});
|
|
22800
|
+
} catch (cause) {
|
|
22801
|
+
throw toRequestError(failAs.threadId, "session/applyFlagSettings", cause);
|
|
22802
|
+
}
|
|
22803
|
+
context.currentPermissionAllow = allow;
|
|
22804
|
+
}
|
|
22805
|
+
|
|
22773
22806
|
// src/adapter/sendTurn.ts
|
|
22774
22807
|
var makeSendTurn = (deps) => {
|
|
22775
22808
|
const {
|
|
@@ -22824,19 +22857,15 @@ var makeSendTurn = (deps) => {
|
|
|
22824
22857
|
context.currentEffort = getEffectiveClaudeAgentEffort(turnEffort ?? null) ?? void 0;
|
|
22825
22858
|
}
|
|
22826
22859
|
if (input.interactionMode === "plan") {
|
|
22827
|
-
|
|
22828
|
-
|
|
22829
|
-
|
|
22830
|
-
|
|
22831
|
-
}
|
|
22832
|
-
context.currentPermissionMode = "plan";
|
|
22860
|
+
await applyClaudePermissionMode(context, "plan", {
|
|
22861
|
+
threadId: input.threadId,
|
|
22862
|
+
method: "turn/setPermissionMode"
|
|
22863
|
+
});
|
|
22833
22864
|
} else if (input.interactionMode === "default") {
|
|
22834
|
-
|
|
22835
|
-
|
|
22836
|
-
|
|
22837
|
-
|
|
22838
|
-
}
|
|
22839
|
-
context.currentPermissionMode = context.basePermissionMode;
|
|
22865
|
+
await applyClaudePermissionMode(context, context.basePermissionMode ?? "default", {
|
|
22866
|
+
threadId: input.threadId,
|
|
22867
|
+
method: "turn/setPermissionMode"
|
|
22868
|
+
});
|
|
22840
22869
|
}
|
|
22841
22870
|
const turnCapsForPrompt = claudeModelCapabilities(
|
|
22842
22871
|
modelSelection?.model,
|
|
@@ -23377,7 +23406,7 @@ var makeSessionControls = (deps) => {
|
|
|
23377
23406
|
};
|
|
23378
23407
|
const setRuntimeMode = async (threadId, runtimeMode) => {
|
|
23379
23408
|
const context = requireSession(threadId);
|
|
23380
|
-
if (context.session.runtimeMode === runtimeMode) {
|
|
23409
|
+
if (context.session.runtimeMode === runtimeMode && permissionAllowInSync(context)) {
|
|
23381
23410
|
return;
|
|
23382
23411
|
}
|
|
23383
23412
|
const permissionMode = claudePermissionModeFor(runtimeMode);
|
|
@@ -23389,12 +23418,10 @@ var makeSessionControls = (deps) => {
|
|
|
23389
23418
|
updatedAt: nowIso()
|
|
23390
23419
|
};
|
|
23391
23420
|
if (context.currentPermissionMode !== "plan") {
|
|
23392
|
-
|
|
23393
|
-
|
|
23394
|
-
|
|
23395
|
-
|
|
23396
|
-
}
|
|
23397
|
-
context.currentPermissionMode = permissionMode;
|
|
23421
|
+
await applyClaudePermissionMode(context, permissionMode, {
|
|
23422
|
+
threadId,
|
|
23423
|
+
method: "session/setPermissionMode"
|
|
23424
|
+
});
|
|
23398
23425
|
}
|
|
23399
23426
|
if (permissionMode !== "bypassPermissions") {
|
|
23400
23427
|
return;
|
|
@@ -23407,7 +23434,7 @@ var makeSessionControls = (deps) => {
|
|
|
23407
23434
|
const setNativeMode = async (threadId, nativeModeId) => {
|
|
23408
23435
|
const context = requireSession(threadId);
|
|
23409
23436
|
if (!isClaudeNativeModeId(nativeModeId)) return;
|
|
23410
|
-
if (context.currentPermissionMode === nativeModeId) return;
|
|
23437
|
+
if (context.currentPermissionMode === nativeModeId && permissionAllowInSync(context)) return;
|
|
23411
23438
|
context.basePermissionMode = nativeModeId;
|
|
23412
23439
|
context.session = {
|
|
23413
23440
|
...context.session,
|
|
@@ -23415,12 +23442,10 @@ var makeSessionControls = (deps) => {
|
|
|
23415
23442
|
updatedAt: nowIso()
|
|
23416
23443
|
};
|
|
23417
23444
|
if (context.currentPermissionMode !== "plan" || nativeModeId === "plan") {
|
|
23418
|
-
|
|
23419
|
-
|
|
23420
|
-
|
|
23421
|
-
|
|
23422
|
-
}
|
|
23423
|
-
context.currentPermissionMode = nativeModeId;
|
|
23445
|
+
await applyClaudePermissionMode(context, nativeModeId, {
|
|
23446
|
+
threadId,
|
|
23447
|
+
method: "session/setPermissionMode"
|
|
23448
|
+
});
|
|
23424
23449
|
}
|
|
23425
23450
|
if (nativeModeId !== "bypassPermissions") {
|
|
23426
23451
|
return;
|
|
@@ -23956,9 +23981,13 @@ var makeStartSession = (deps) => {
|
|
|
23956
23981
|
const additionalDirectories = input.cwd ? [input.cwd] : [];
|
|
23957
23982
|
const mcpServers = toClaudeMcpServers(input.mcpServers);
|
|
23958
23983
|
const querySettings = { ...settings };
|
|
23959
|
-
const
|
|
23960
|
-
|
|
23961
|
-
|
|
23984
|
+
const permissionRules = {
|
|
23985
|
+
read: claudeReadAllowRules(input.readOnlyDirectories),
|
|
23986
|
+
hostMcp: claudeHostMcpAllowRules(input.mcpServers)
|
|
23987
|
+
};
|
|
23988
|
+
const permissionAllow = claudePermissionAllow(permissionRules, permissionMode);
|
|
23989
|
+
if (permissionAllow.length > 0) {
|
|
23990
|
+
querySettings.permissions = { allow: [...permissionAllow] };
|
|
23962
23991
|
}
|
|
23963
23992
|
const stderrTail = createOutputTail(CLAUDE_STDERR_TAIL_CHARS);
|
|
23964
23993
|
const mcpConfig = await createClaudeMcpConfig(mcpServers, log);
|
|
@@ -24055,6 +24084,8 @@ var makeStartSession = (deps) => {
|
|
|
24055
24084
|
sessionSkills: input.skills,
|
|
24056
24085
|
spawnEnvironment,
|
|
24057
24086
|
currentSettings: settings,
|
|
24087
|
+
permissionRules,
|
|
24088
|
+
currentPermissionAllow: permissionAllow,
|
|
24058
24089
|
interruptSettled: void 0,
|
|
24059
24090
|
resumeSessionId: sessionId,
|
|
24060
24091
|
pendingApprovals,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ycodium-ai/agent-claude",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3112",
|
|
4
4
|
"description": "Claude executor: Claude Code CLI via @anthropic-ai/claude-agent-sdk.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ycodium",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@types/node": "24.12.4",
|
|
25
25
|
"esbuild": "0.28.1",
|
|
26
26
|
"vite-plus": "0.2.2",
|
|
27
|
-
"@ycodium-ai/plugin-api": "0.2.
|
|
27
|
+
"@ycodium-ai/plugin-api": "0.2.3112",
|
|
28
28
|
"ycodium-composer-tokens": "0.0.0",
|
|
29
29
|
"ycodium-jsonl-stream": "0.0.0",
|
|
30
30
|
"ycodium-executor-testing": "0.0.0"
|