@cjhyy/code-shell-core 0.6.0-rc.9 → 0.7.0

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.
Files changed (193) hide show
  1. package/THIRD_PARTY_NOTICES.md +206 -0
  2. package/dist/automation/scheduler.d.ts +13 -7
  3. package/dist/automation/scheduler.js +116 -37
  4. package/dist/capability-control/service.d.ts +2 -0
  5. package/dist/capability-control/service.js +4 -2
  6. package/dist/cc-orchestrator/agent-adapter.d.ts +4 -0
  7. package/dist/cc-orchestrator/agent-adapter.js +11 -1
  8. package/dist/cc-orchestrator/codex-session-history.d.ts +14 -1
  9. package/dist/cc-orchestrator/codex-session-history.js +65 -5
  10. package/dist/cc-orchestrator/cwd-normalize.d.ts +2 -0
  11. package/dist/cc-orchestrator/cwd-normalize.js +19 -0
  12. package/dist/cc-orchestrator/external-agent-bindings.d.ts +27 -0
  13. package/dist/cc-orchestrator/external-agent-bindings.js +150 -0
  14. package/dist/cc-orchestrator/external-agent-changes.js +22 -5
  15. package/dist/cc-orchestrator/external-agent-driver.d.ts +1 -0
  16. package/dist/cc-orchestrator/external-agent-driver.js +265 -50
  17. package/dist/cc-orchestrator/external-agent-session-store.d.ts +23 -0
  18. package/dist/cc-orchestrator/external-agent-session-store.js +146 -0
  19. package/dist/cc-orchestrator/session-history.d.ts +35 -0
  20. package/dist/cc-orchestrator/session-history.js +98 -15
  21. package/dist/cli/agent-server-stdio.js +9 -2
  22. package/dist/context/compaction.d.ts +8 -1
  23. package/dist/context/compaction.js +49 -4
  24. package/dist/context/manager.d.ts +16 -2
  25. package/dist/context/manager.js +103 -19
  26. package/dist/credentials/access.d.ts +57 -0
  27. package/dist/credentials/access.js +185 -0
  28. package/dist/credentials/index.d.ts +3 -1
  29. package/dist/credentials/index.js +2 -0
  30. package/dist/credentials/inject-credential-tool.d.ts +3 -1
  31. package/dist/credentials/inject-credential-tool.js +30 -11
  32. package/dist/credentials/oauth.d.ts +20 -0
  33. package/dist/credentials/oauth.js +114 -0
  34. package/dist/credentials/store.d.ts +1 -0
  35. package/dist/credentials/store.js +3 -1
  36. package/dist/credentials/types.d.ts +49 -3
  37. package/dist/credentials/use-credential-tool.d.ts +9 -1
  38. package/dist/credentials/use-credential-tool.js +58 -45
  39. package/dist/engine/engine.d.ts +23 -3
  40. package/dist/engine/engine.js +380 -255
  41. package/dist/engine/goal.d.ts +17 -0
  42. package/dist/engine/goal.js +16 -6
  43. package/dist/engine/image-policy.d.ts +6 -0
  44. package/dist/engine/image-policy.js +17 -6
  45. package/dist/engine/input-attachments.d.ts +13 -0
  46. package/dist/engine/input-attachments.js +398 -0
  47. package/dist/engine/model-facade.d.ts +5 -2
  48. package/dist/engine/model-facade.js +4 -4
  49. package/dist/engine/parse-task.d.ts +10 -0
  50. package/dist/engine/parse-task.js +5 -0
  51. package/dist/engine/run-image-input.d.ts +22 -0
  52. package/dist/engine/run-image-input.js +195 -0
  53. package/dist/engine/steer-queue.d.ts +3 -1
  54. package/dist/engine/steer-queue.js +10 -2
  55. package/dist/engine/streaming-tool-queue.d.ts +11 -7
  56. package/dist/engine/streaming-tool-queue.js +11 -7
  57. package/dist/engine/turn-loop.d.ts +37 -2
  58. package/dist/engine/turn-loop.js +228 -43
  59. package/dist/engine/types.d.ts +8 -0
  60. package/dist/git/worktree/crud.d.ts +69 -0
  61. package/dist/git/worktree/crud.js +206 -0
  62. package/dist/git/worktree/diff.d.ts +14 -0
  63. package/dist/git/worktree/diff.js +82 -0
  64. package/dist/git/worktree/git-exec.d.ts +7 -0
  65. package/dist/git/worktree/git-exec.js +51 -0
  66. package/dist/git/worktree/index.d.ts +5 -0
  67. package/dist/git/worktree/index.js +5 -0
  68. package/dist/git/worktree/query.d.ts +42 -0
  69. package/dist/git/worktree/query.js +121 -0
  70. package/dist/git/worktree/slug.d.ts +11 -0
  71. package/dist/git/worktree/slug.js +58 -0
  72. package/dist/git/worktree.d.ts +1 -84
  73. package/dist/git/worktree.js +5 -230
  74. package/dist/hooks/goal-stop-hook.d.ts +33 -1
  75. package/dist/hooks/goal-stop-hook.js +202 -34
  76. package/dist/index.d.ts +31 -28
  77. package/dist/index.js +27 -25
  78. package/dist/logging/logger.js +6 -6
  79. package/dist/logging/sanitize-messages.d.ts +10 -2
  80. package/dist/logging/sanitize-messages.js +21 -6
  81. package/dist/plugins/installer/checkUpdate.d.ts +4 -1
  82. package/dist/plugins/installer/checkUpdate.js +4 -2
  83. package/dist/plugins/installer/install.js +2 -0
  84. package/dist/plugins/installer/installFromSource.js +9 -1
  85. package/dist/plugins/installer/parseSource.d.ts +4 -1
  86. package/dist/plugins/installer/parseSource.js +28 -10
  87. package/dist/plugins/installer/sourcePath.d.ts +9 -0
  88. package/dist/plugins/installer/sourcePath.js +50 -0
  89. package/dist/plugins/installer/update.d.ts +4 -1
  90. package/dist/plugins/installer/update.js +5 -3
  91. package/dist/plugins/parseMarketplaceInput.d.ts +4 -1
  92. package/dist/plugins/parseMarketplaceInput.js +4 -3
  93. package/dist/plugins/pluginInstaller.js +24 -22
  94. package/dist/preset/index.d.ts +1 -0
  95. package/dist/preset/index.js +30 -13
  96. package/dist/prompt/sections/base.md +1 -1
  97. package/dist/protocol/chat-session-manager.d.ts +2 -0
  98. package/dist/protocol/chat-session-manager.js +38 -2
  99. package/dist/protocol/chat-session.d.ts +3 -0
  100. package/dist/protocol/chat-session.js +1 -0
  101. package/dist/protocol/client.d.ts +9 -4
  102. package/dist/protocol/client.js +18 -1
  103. package/dist/protocol/server.d.ts +30 -0
  104. package/dist/protocol/server.js +247 -47
  105. package/dist/protocol/types.d.ts +49 -0
  106. package/dist/protocol/types.js +6 -0
  107. package/dist/run/FileRunStore.js +10 -1
  108. package/dist/run/Heartbeat.js +12 -0
  109. package/dist/run/RunApprovalBackend.d.ts +3 -0
  110. package/dist/run/RunApprovalBackend.js +41 -6
  111. package/dist/run/RunLock.js +2 -0
  112. package/dist/run/RunManager.d.ts +2 -0
  113. package/dist/run/RunManager.js +64 -24
  114. package/dist/run/ids.d.ts +2 -0
  115. package/dist/run/ids.js +23 -0
  116. package/dist/runtime/background-shell.d.ts +1 -0
  117. package/dist/runtime/background-shell.js +23 -13
  118. package/dist/runtime/spawn-common.js +10 -0
  119. package/dist/services/auto-dream.d.ts +15 -4
  120. package/dist/services/auto-dream.js +20 -20
  121. package/dist/services/dream-consolidation.d.ts +2 -3
  122. package/dist/services/dream-consolidation.js +65 -15
  123. package/dist/services/extract-memories.d.ts +14 -5
  124. package/dist/services/extract-memories.js +20 -3
  125. package/dist/services/global-dream-promotion.d.ts +23 -0
  126. package/dist/services/global-dream-promotion.js +112 -0
  127. package/dist/services/memory-orchestrator.js +347 -34
  128. package/dist/session/memory.d.ts +61 -18
  129. package/dist/session/memory.js +342 -79
  130. package/dist/session/session-manager.d.ts +35 -1
  131. package/dist/session/session-manager.js +224 -4
  132. package/dist/session/transcript.d.ts +1 -1
  133. package/dist/session/transcript.js +17 -5
  134. package/dist/settings/manager.d.ts +1 -0
  135. package/dist/settings/manager.js +87 -37
  136. package/dist/settings/schema-export.d.ts +2 -3
  137. package/dist/settings/schema-export.js +2 -3
  138. package/dist/settings/schema.d.ts +21 -0
  139. package/dist/settings/schema.js +12 -0
  140. package/dist/skills/scanner.d.ts +3 -2
  141. package/dist/skills/scanner.js +12 -9
  142. package/dist/tool-system/builtin/agent-notifications.d.ts +11 -4
  143. package/dist/tool-system/builtin/agent-notifications.js +19 -7
  144. package/dist/tool-system/builtin/background-jobs.d.ts +35 -6
  145. package/dist/tool-system/builtin/background-jobs.js +116 -7
  146. package/dist/tool-system/builtin/background-work.d.ts +17 -18
  147. package/dist/tool-system/builtin/background-work.js +51 -5
  148. package/dist/tool-system/builtin/config.d.ts +2 -1
  149. package/dist/tool-system/builtin/config.js +16 -11
  150. package/dist/tool-system/builtin/cron-list.definition.d.ts +3 -0
  151. package/dist/tool-system/builtin/cron-list.definition.js +6 -0
  152. package/dist/tool-system/builtin/cron.d.ts +1 -2
  153. package/dist/tool-system/builtin/cron.js +9 -7
  154. package/dist/tool-system/builtin/drive-claude-code.d.ts +23 -2
  155. package/dist/tool-system/builtin/drive-claude-code.js +589 -48
  156. package/dist/tool-system/builtin/edit.js +5 -2
  157. package/dist/tool-system/builtin/generate-video.d.ts +1 -0
  158. package/dist/tool-system/builtin/generate-video.js +13 -4
  159. package/dist/tool-system/builtin/index.d.ts +8 -3
  160. package/dist/tool-system/builtin/index.js +50 -22
  161. package/dist/tool-system/builtin/lsp.d.ts +2 -1
  162. package/dist/tool-system/builtin/lsp.js +6 -3
  163. package/dist/tool-system/builtin/memory.js +40 -8
  164. package/dist/tool-system/builtin/notebook-edit.js +5 -2
  165. package/dist/tool-system/builtin/powershell.d.ts +5 -2
  166. package/dist/tool-system/builtin/powershell.js +11 -7
  167. package/dist/tool-system/builtin/read.js +118 -6
  168. package/dist/tool-system/builtin/sleep.d.ts +1 -2
  169. package/dist/tool-system/builtin/sleep.definition.d.ts +8 -0
  170. package/dist/tool-system/builtin/sleep.definition.js +28 -0
  171. package/dist/tool-system/builtin/sleep.js +1 -22
  172. package/dist/tool-system/builtin/view-image.d.ts +2 -2
  173. package/dist/tool-system/builtin/view-image.js +109 -19
  174. package/dist/tool-system/builtin/worktree.d.ts +4 -4
  175. package/dist/tool-system/builtin/worktree.js +297 -74
  176. package/dist/tool-system/builtin/write.js +5 -3
  177. package/dist/tool-system/context.d.ts +41 -1
  178. package/dist/tool-system/executor.d.ts +1 -5
  179. package/dist/tool-system/executor.js +94 -115
  180. package/dist/tool-system/mcp-manager.d.ts +31 -6
  181. package/dist/tool-system/mcp-manager.js +193 -78
  182. package/dist/tool-system/path-policy.d.ts +2 -0
  183. package/dist/tool-system/path-policy.js +41 -12
  184. package/dist/tool-system/permission.d.ts +28 -7
  185. package/dist/tool-system/permission.js +130 -49
  186. package/dist/tool-system/registry.js +11 -4
  187. package/dist/tool-system/tool-result-redaction.d.ts +7 -0
  188. package/dist/tool-system/tool-result-redaction.js +48 -0
  189. package/dist/tool-system/workspace-bridge.d.ts +11 -0
  190. package/dist/tool-system/workspace-bridge.js +1 -0
  191. package/dist/types.d.ts +78 -11
  192. package/dist/utils/toolDisplay.js +1 -1
  193. package/package.json +4 -3
@@ -3,6 +3,8 @@
3
3
  */
4
4
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
5
5
  import { join } from "node:path";
6
+ import { setDottedSetting } from "../../settings/manager.js";
7
+ import { enforcePathPolicyWithApproval } from "../path-policy.js";
6
8
  export const configToolDef = {
7
9
  name: "Config",
8
10
  description: "Read or update the project's .code-shell/settings.json configuration. " +
@@ -26,11 +28,14 @@ export const configToolDef = {
26
28
  required: ["action"],
27
29
  },
28
30
  };
29
- export async function configTool(args) {
31
+ export async function configTool(args, ctx) {
30
32
  const action = args.action;
31
- const cwd = args.__cwd ?? process.cwd();
33
+ const cwd = ctx?.cwd ?? process.cwd();
32
34
  const configPath = join(cwd, ".code-shell", "settings.json");
33
35
  if (action === "read") {
36
+ const blocked = await enforcePathPolicyWithApproval(configPath, "read", ctx);
37
+ if (blocked)
38
+ return blocked;
34
39
  if (!existsSync(configPath)) {
35
40
  return "No project settings found. Use /init to create one.";
36
41
  }
@@ -38,6 +43,9 @@ export async function configTool(args) {
38
43
  return content;
39
44
  }
40
45
  if (action === "write") {
46
+ const blocked = await enforcePathPolicyWithApproval(configPath, "write", ctx);
47
+ if (blocked)
48
+ return blocked;
41
49
  const key = args.key;
42
50
  const value = args.value;
43
51
  if (!key)
@@ -49,16 +57,13 @@ export async function configTool(args) {
49
57
  if (existsSync(configPath)) {
50
58
  settings = JSON.parse(readFileSync(configPath, "utf-8"));
51
59
  }
52
- // Set nested key
53
- const parts = key.split(".");
54
- let obj = settings;
55
- for (let i = 0; i < parts.length - 1; i++) {
56
- if (typeof obj[parts[i]] !== "object" || obj[parts[i]] === null) {
57
- obj[parts[i]] = {};
58
- }
59
- obj = obj[parts[i]];
60
+ try {
61
+ setDottedSetting(settings, key, value);
62
+ }
63
+ catch (error) {
64
+ const message = error instanceof Error ? error.message : String(error);
65
+ return `Error: ${message}`;
60
66
  }
61
- obj[parts[parts.length - 1]] = value;
62
67
  // Never resurrect a deleted project root: a recursive mkdir of
63
68
  // <cwd>/.code-shell would recreate `cwd` itself as an empty shell when the
64
69
  // directory has been deleted (e.g. a stale session pointing at a removed
@@ -0,0 +1,3 @@
1
+ /** CronList tool metadata, shared by registration and presets. */
2
+ import type { ToolDefinition } from "../../types.js";
3
+ export declare const cronListToolDef: ToolDefinition;
@@ -0,0 +1,6 @@
1
+ /** CronList tool metadata, shared by registration and presets. */
2
+ export const cronListToolDef = {
3
+ name: "CronList",
4
+ description: "List all scheduled cron jobs.",
5
+ inputSchema: { type: "object", properties: {} },
6
+ };
@@ -2,6 +2,7 @@
2
2
  * Cron tools — CronCreate, CronDelete, CronList.
3
3
  */
4
4
  import type { ToolDefinition } from "../../types.js";
5
+ export { cronListToolDef } from "./cron-list.definition.js";
5
6
  /** Sink notified after a cron job is created/deleted, so the host (Electron
6
7
  * main) can reload+arm the scheduler that actually executes jobs. The worker
7
8
  * process only persists cron jobs (executionEnabled=false); without this the
@@ -12,6 +13,4 @@ export declare const cronCreateToolDef: ToolDefinition;
12
13
  export declare function cronCreateTool(args: Record<string, unknown>): Promise<string>;
13
14
  export declare const cronDeleteToolDef: ToolDefinition;
14
15
  export declare function cronDeleteTool(args: Record<string, unknown>): Promise<string>;
15
- export declare const cronListToolDef: ToolDefinition;
16
16
  export declare function cronListTool(_args: Record<string, unknown>): Promise<string>;
17
- export {};
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { cronScheduler } from "../../automation/scheduler.js";
5
5
  import { getCurrentSid } from "../../logging/logger.js";
6
+ export { cronListToolDef } from "./cron-list.definition.js";
6
7
  let cronChangedSink = null;
7
8
  export function setCronChangedSink(sink) {
8
9
  cronChangedSink = sink;
@@ -38,7 +39,10 @@ export const cronCreateToolDef = {
38
39
  inputSchema: {
39
40
  type: "object",
40
41
  properties: {
41
- name: { type: "string", description: "Short human-readable name for the job (e.g. '工作日晨间简报')" },
42
+ name: {
43
+ type: "string",
44
+ description: "Short human-readable name for the job (e.g. '工作日晨间简报')",
45
+ },
42
46
  schedule: {
43
47
  type: "string",
44
48
  description: "Interval ('5m','1h','1d') or a 5-field cron expression ('0 9 * * 1-5'). " +
@@ -49,7 +53,10 @@ export const cronCreateToolDef = {
49
53
  type: "string",
50
54
  description: "IANA timezone for cron-expression schedules (e.g. 'Asia/Shanghai'). Optional; defaults to the host system's timezone.",
51
55
  },
52
- cwd: { type: "string", description: "Working directory / project the job runs in. Optional." },
56
+ cwd: {
57
+ type: "string",
58
+ description: "Working directory / project the job runs in. Optional.",
59
+ },
53
60
  permissionLevel: {
54
61
  type: "string",
55
62
  enum: ["read-only", "workspace-write", "full"],
@@ -146,11 +153,6 @@ export async function cronDeleteTool(args) {
146
153
  fireCronChanged();
147
154
  return deleted ? `Cron job #${id} deleted.` : `Cron job #${id} not found.`;
148
155
  }
149
- export const cronListToolDef = {
150
- name: "CronList",
151
- description: "List all scheduled cron jobs.",
152
- inputSchema: { type: "object", properties: {} },
153
- };
154
156
  export async function cronListTool(_args) {
155
157
  const jobs = cronScheduler.list();
156
158
  if (jobs.length === 0)
@@ -1,20 +1,39 @@
1
1
  import type { ToolDefinition } from "../../types.js";
2
2
  import type { AgentRunResult } from "../../cc-orchestrator/external-agent-driver.js";
3
+ import { readExternalChangedFiles } from "../../cc-orchestrator/external-agent-changes.js";
3
4
  import type { ToolContext } from "../context.js";
5
+ import { type ExternalAgentSessionBinding, type ExternalAgentSessionRecord } from "../../cc-orchestrator/external-agent-session-store.js";
4
6
  export type DriveCli = "claude" | "codex";
7
+ export declare const DRIVE_AGENT_FOREGROUND_HANDOFF_MS = 110000;
8
+ export declare const DRIVE_AGENT_TOOL_TIMEOUT_MS = 1800000;
5
9
  export declare const driveAgentToolDef: ToolDefinition;
6
10
  type PermMode = "default" | "acceptEdits" | "bypassPermissions";
7
11
  type Runner = (opts: {
8
12
  cli: DriveCli;
9
13
  prompt: string;
10
14
  resumeSessionId?: string;
15
+ model?: string;
11
16
  cwd: string;
12
17
  permissionMode?: PermMode;
18
+ signal?: AbortSignal;
19
+ imagePaths?: string[];
13
20
  }) => Promise<AgentRunResult>;
21
+ type SessionStore = {
22
+ get(cli: DriveCli, sessionId: string): ExternalAgentSessionBinding | undefined;
23
+ record(binding: ExternalAgentSessionRecord): void;
24
+ };
25
+ export interface DriveAgentToolOptions {
26
+ foregroundHandoffMs?: number;
27
+ sessionStore?: SessionStore;
28
+ /** Test seam for external transcript attribution. */
29
+ readChangedFiles?: typeof readExternalChangedFiles;
30
+ }
14
31
  /** Factory so tests can inject a fake runner. `fixedCli` (back-compat) forces a
15
32
  * cli and hides the `cli` arg — that's how DriveClaudeCode stays a thin alias. */
16
- export declare function makeDriveAgentTool(runner?: Runner, fixedCli?: DriveCli): (args: Record<string, unknown>, ctx?: ToolContext) => Promise<string>;
33
+ export declare function makeDriveAgentTool(runner?: Runner, fixedCli?: DriveCli, options?: DriveAgentToolOptions): (args: Record<string, unknown>, ctx?: ToolContext) => Promise<string>;
17
34
  export declare const driveAgentTool: (args: Record<string, unknown>, ctx?: ToolContext) => Promise<string>;
35
+ export declare const driveAgentJobsToolDef: ToolDefinition;
36
+ export declare function driveAgentJobsTool(args: Record<string, unknown>, ctx?: ToolContext): Promise<string>;
18
37
  export declare const driveClaudeCodeToolDef: ToolDefinition;
19
38
  /** Back-compat factory: a DriveAgent pinned to cli:"claude" with the `cli` arg
20
39
  * hidden. The injected `runner` here keeps the old shape (no `cli` field); we
@@ -22,9 +41,11 @@ export declare const driveClaudeCodeToolDef: ToolDefinition;
22
41
  type LegacyRunner = (opts: {
23
42
  prompt: string;
24
43
  resumeSessionId?: string;
44
+ model?: string;
25
45
  cwd: string;
26
46
  permissionMode?: PermMode;
47
+ signal?: AbortSignal;
27
48
  }) => Promise<AgentRunResult>;
28
- export declare function makeDriveClaudeCodeTool(runner?: LegacyRunner): (args: Record<string, unknown>, ctx?: ToolContext) => Promise<string>;
49
+ export declare function makeDriveClaudeCodeTool(runner?: LegacyRunner, options?: DriveAgentToolOptions): (args: Record<string, unknown>, ctx?: ToolContext) => Promise<string>;
29
50
  export declare const driveClaudeCodeTool: (args: Record<string, unknown>, ctx?: ToolContext) => Promise<string>;
30
51
  export {};