@cjhyy/code-shell-core 0.7.1 → 0.8.1

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 (595) hide show
  1. package/README.md +36 -23
  2. package/dist/agent/agent-definition-registry.d.ts +2 -2
  3. package/dist/agent/agent-definition-registry.js +47 -10
  4. package/dist/agent/agent-definition.d.ts +5 -0
  5. package/dist/agent/agent-definition.js +14 -0
  6. package/dist/automation/index.d.ts +7 -4
  7. package/dist/automation/index.js +4 -2
  8. package/dist/automation/runner.js +3 -1
  9. package/dist/automation/scheduler.d.ts +57 -1
  10. package/dist/automation/scheduler.js +123 -23
  11. package/dist/automation/store.d.ts +6 -2
  12. package/dist/automation/store.js +7 -3
  13. package/dist/capabilities/index.d.ts +109 -0
  14. package/dist/capabilities/index.js +80 -0
  15. package/dist/capability-control/disabled-lists.d.ts +2 -1
  16. package/dist/capability-control/disabled-lists.js +3 -5
  17. package/dist/capability-control/overlay.d.ts +14 -1
  18. package/dist/capability-control/overlay.js +40 -0
  19. package/dist/capability-control/service.js +6 -4
  20. package/dist/cli/agent-server-stdio.d.ts +1 -1
  21. package/dist/cli/agent-server-stdio.js +66 -6
  22. package/dist/cli/agent-server-tcp.js +7 -3
  23. package/dist/context/compaction.d.ts +39 -3
  24. package/dist/context/compaction.js +151 -39
  25. package/dist/context/manager.d.ts +17 -1
  26. package/dist/context/manager.js +36 -1
  27. package/dist/credentials/access.d.ts +3 -1
  28. package/dist/credentials/access.js +24 -3
  29. package/dist/credentials/index.d.ts +1 -1
  30. package/dist/credentials/index.js +1 -1
  31. package/dist/credentials/oauth.d.ts +4 -1
  32. package/dist/credentials/oauth.js +14 -0
  33. package/dist/credentials/store.d.ts +15 -1
  34. package/dist/credentials/store.js +17 -4
  35. package/dist/credentials/types.d.ts +24 -0
  36. package/dist/credentials/use-credential-tool.js +15 -1
  37. package/dist/engine/auxiliary-pipeline.d.ts +40 -0
  38. package/dist/engine/auxiliary-pipeline.js +181 -0
  39. package/dist/{settings → engine}/disk-defaults.d.ts +2 -2
  40. package/dist/{settings → engine}/disk-defaults.js +5 -2
  41. package/dist/engine/dynamic-tool-defs.d.ts +4 -0
  42. package/dist/engine/dynamic-tool-defs.js +4 -0
  43. package/dist/engine/engine.d.ts +254 -195
  44. package/dist/engine/engine.js +1812 -2041
  45. package/dist/engine/file-history-hook.d.ts +11 -0
  46. package/dist/engine/file-history-hook.js +31 -0
  47. package/dist/engine/goal-judge-context.d.ts +9 -0
  48. package/dist/engine/goal-judge-context.js +234 -0
  49. package/dist/engine/injected-context-cache.d.ts +6 -0
  50. package/dist/engine/injected-context-cache.js +13 -0
  51. package/dist/engine/input-attachments.d.ts +1 -1
  52. package/dist/engine/model-facade.d.ts +3 -3
  53. package/dist/engine/model-facade.js +15 -14
  54. package/dist/engine/permission-controller.d.ts +55 -0
  55. package/dist/engine/permission-controller.js +148 -0
  56. package/dist/engine/prompt-cache-diagnostics.d.ts +58 -0
  57. package/dist/engine/prompt-cache-diagnostics.js +178 -0
  58. package/dist/engine/run-accounting.d.ts +41 -0
  59. package/dist/engine/run-accounting.js +126 -0
  60. package/dist/engine/run-context.d.ts +44 -0
  61. package/dist/engine/run-context.js +88 -0
  62. package/dist/engine/run-environment.d.ts +30 -0
  63. package/dist/engine/run-environment.js +77 -0
  64. package/dist/engine/run-finalize.d.ts +58 -0
  65. package/dist/engine/run-finalize.js +245 -0
  66. package/dist/engine/run-goal.d.ts +58 -0
  67. package/dist/engine/run-goal.js +188 -0
  68. package/dist/engine/run-image-input.d.ts +1 -1
  69. package/dist/engine/run-image-input.js +5 -3
  70. package/dist/engine/run-session-open.d.ts +41 -0
  71. package/dist/engine/run-session-open.js +186 -0
  72. package/dist/engine/run-setup.d.ts +42 -0
  73. package/dist/engine/run-setup.js +58 -0
  74. package/dist/engine/run-tooling.d.ts +125 -0
  75. package/dist/engine/run-tooling.js +283 -0
  76. package/dist/engine/run-types.d.ts +139 -0
  77. package/dist/engine/run-types.js +12 -0
  78. package/dist/engine/run-workspace.d.ts +50 -0
  79. package/dist/engine/run-workspace.js +114 -0
  80. package/dist/engine/steer-queue.d.ts +1 -1
  81. package/dist/engine/subagent-spawner.d.ts +32 -0
  82. package/dist/engine/subagent-spawner.js +287 -0
  83. package/dist/engine/tool-summary.d.ts +2 -2
  84. package/dist/engine/tool-summary.js +2 -2
  85. package/dist/engine/turn-loop.d.ts +49 -10
  86. package/dist/engine/turn-loop.js +370 -104
  87. package/dist/engine/types.d.ts +30 -3
  88. package/dist/engine/types.js +1 -1
  89. package/dist/{engine/goal.d.ts → goal/lifecycle.d.ts} +76 -4
  90. package/dist/goal/lifecycle.js +482 -0
  91. package/dist/hooks/events.d.ts +24 -10
  92. package/dist/hooks/goal-stop-hook.d.ts +17 -28
  93. package/dist/hooks/goal-stop-hook.js +110 -465
  94. package/dist/hooks/registry.js +1 -1
  95. package/dist/index.d.ts +48 -108
  96. package/dist/index.extension.d.ts +51 -0
  97. package/dist/index.extension.js +39 -0
  98. package/dist/index.internal.d.ts +86 -0
  99. package/dist/index.internal.js +92 -0
  100. package/dist/index.js +34 -123
  101. package/dist/links/cli.d.ts +48 -0
  102. package/dist/links/cli.js +617 -0
  103. package/dist/links/http.d.ts +40 -0
  104. package/dist/links/http.js +166 -0
  105. package/dist/links/index.d.ts +4 -0
  106. package/dist/links/index.js +3 -0
  107. package/dist/links/link-action-tool.d.ts +5 -0
  108. package/dist/links/link-action-tool.js +241 -0
  109. package/dist/links/providers.d.ts +8 -0
  110. package/dist/links/providers.js +665 -0
  111. package/dist/links/types.d.ts +44 -0
  112. package/dist/llm/client-base.d.ts +7 -0
  113. package/dist/llm/client-base.js +60 -0
  114. package/dist/llm/model-pool.d.ts +1 -1
  115. package/dist/llm/model-pool.js +1 -1
  116. package/dist/llm/providers/anthropic.d.ts +1 -0
  117. package/dist/llm/providers/anthropic.js +9 -0
  118. package/dist/llm/providers/openai.d.ts +1 -0
  119. package/dist/llm/providers/openai.js +17 -0
  120. package/dist/model-catalog/index.js +15 -2
  121. package/dist/model-catalog/resolve.d.ts +13 -1
  122. package/dist/model-catalog/resolve.js +37 -2
  123. package/dist/model-catalog/types.d.ts +74 -48
  124. package/dist/model-catalog/types.js +16 -5
  125. package/dist/model-catalog/upsert.d.ts +3 -1
  126. package/dist/model-catalog/upsert.js +9 -0
  127. package/dist/onboarding.d.ts +0 -1
  128. package/dist/onboarding.js +1 -22
  129. package/dist/panel-apps/bindings.d.ts +24 -0
  130. package/dist/panel-apps/bindings.js +69 -0
  131. package/dist/panel-apps/github-archive.d.ts +21 -0
  132. package/dist/panel-apps/github-archive.js +98 -0
  133. package/dist/panel-apps/index.d.ts +4 -0
  134. package/dist/panel-apps/index.js +4 -0
  135. package/dist/panel-apps/installer.d.ts +68 -0
  136. package/dist/panel-apps/installer.js +622 -0
  137. package/dist/panel-apps/manifest.d.ts +364 -0
  138. package/dist/panel-apps/manifest.js +189 -0
  139. package/dist/panel-apps/paths.d.ts +13 -0
  140. package/dist/panel-apps/paths.js +38 -0
  141. package/dist/panel-apps/registry.d.ts +51 -0
  142. package/dist/panel-apps/registry.js +99 -0
  143. package/dist/panel-apps/runtime.d.ts +80 -0
  144. package/dist/panel-apps/runtime.js +154 -0
  145. package/dist/plugins/gitOps.js +8 -1
  146. package/dist/plugins/installedPlugins.d.ts +2 -1
  147. package/dist/plugins/installedPlugins.js +146 -8
  148. package/dist/plugins/installer/codex/convertAgents.d.ts +4 -1
  149. package/dist/plugins/installer/codex/convertAgents.js +62 -8
  150. package/dist/plugins/installer/codex/convertCommands.d.ts +5 -5
  151. package/dist/plugins/installer/codex/convertCommands.js +35 -12
  152. package/dist/plugins/installer/codex/convertHooks.d.ts +10 -0
  153. package/dist/plugins/installer/codex/convertHooks.js +82 -0
  154. package/dist/plugins/installer/codex/convertSkills.js +41 -6
  155. package/dist/plugins/installer/install.d.ts +7 -1
  156. package/dist/plugins/installer/install.js +21 -87
  157. package/dist/plugins/installer/installFromArchive.d.ts +26 -4
  158. package/dist/plugins/installer/installFromArchive.js +44 -27
  159. package/dist/plugins/installer/installFromNpm.d.ts +31 -0
  160. package/dist/plugins/installer/installFromNpm.js +273 -0
  161. package/dist/plugins/installer/loadPluginAgents.js +17 -4
  162. package/dist/plugins/installer/loadPluginMcp.d.ts +14 -0
  163. package/dist/plugins/installer/loadPluginMcp.js +245 -35
  164. package/dist/plugins/installer/normalizeManifest.d.ts +13 -0
  165. package/dist/plugins/installer/normalizeManifest.js +306 -0
  166. package/dist/plugins/installer/npmTar.d.ts +13 -0
  167. package/dist/plugins/installer/npmTar.js +321 -0
  168. package/dist/plugins/installer/parseSource.d.ts +11 -0
  169. package/dist/plugins/installer/parseSource.js +48 -0
  170. package/dist/plugins/installer/preview.d.ts +101 -0
  171. package/dist/plugins/installer/preview.js +336 -0
  172. package/dist/plugins/installer/projectPluginSource.d.ts +14 -0
  173. package/dist/plugins/installer/projectPluginSource.js +140 -0
  174. package/dist/plugins/installer/types.d.ts +775 -0
  175. package/dist/plugins/installer/types.js +100 -0
  176. package/dist/plugins/installer/unzip.d.ts +11 -0
  177. package/dist/plugins/installer/unzip.js +123 -9
  178. package/dist/plugins/installer/update.d.ts +2 -2
  179. package/dist/plugins/installer/update.js +43 -4
  180. package/dist/plugins/loadPluginHooks.d.ts +19 -2
  181. package/dist/plugins/loadPluginHooks.js +97 -86
  182. package/dist/plugins/pluginAutomationTemplates.d.ts +18 -0
  183. package/dist/plugins/pluginAutomationTemplates.js +50 -0
  184. package/dist/plugins/pluginCatalog.d.ts +45 -0
  185. package/dist/plugins/pluginCatalog.js +87 -0
  186. package/dist/plugins/pluginCommandHook.d.ts +6 -0
  187. package/dist/plugins/pluginCommandHook.js +25 -8
  188. package/dist/plugins/pluginCommandsLoader.d.ts +19 -0
  189. package/dist/plugins/pluginCommandsLoader.js +181 -7
  190. package/dist/plugins/pluginContent.d.ts +10 -1
  191. package/dist/plugins/pluginContent.js +87 -30
  192. package/dist/plugins/pluginHookApproval.d.ts +30 -0
  193. package/dist/plugins/pluginHookApproval.js +160 -0
  194. package/dist/plugins/pluginHookIntegrity.d.ts +69 -0
  195. package/dist/plugins/pluginHookIntegrity.js +361 -0
  196. package/dist/plugins/pluginInstaller.js +71 -12
  197. package/dist/plugins/pluginMcpApproval.d.ts +19 -0
  198. package/dist/plugins/pluginMcpApproval.js +110 -0
  199. package/dist/plugins/pluginMcpIntegrity.d.ts +21 -0
  200. package/dist/plugins/pluginMcpIntegrity.js +74 -0
  201. package/dist/plugins/types.d.ts +30 -0
  202. package/dist/plugins/varRewrite.d.ts +9 -5
  203. package/dist/plugins/varRewrite.js +26 -17
  204. package/dist/preset/index.d.ts +11 -8
  205. package/dist/preset/index.js +62 -203
  206. package/dist/product/define.js +9 -3
  207. package/dist/product/types.d.ts +0 -2
  208. package/dist/profile/activation.d.ts +36 -0
  209. package/dist/profile/activation.js +57 -0
  210. package/dist/profile/catalog-store.d.ts +77 -0
  211. package/dist/profile/catalog-store.js +346 -0
  212. package/dist/profile/catalog.d.ts +54 -0
  213. package/dist/profile/catalog.js +152 -0
  214. package/dist/profile/index.d.ts +7 -0
  215. package/dist/profile/index.js +7 -0
  216. package/dist/profile/requirements.d.ts +76 -0
  217. package/dist/profile/requirements.js +117 -0
  218. package/dist/profile/resolve.d.ts +11 -0
  219. package/dist/profile/resolve.js +41 -0
  220. package/dist/profile/store.d.ts +17 -0
  221. package/dist/profile/store.js +167 -0
  222. package/dist/profile/types.d.ts +321 -0
  223. package/dist/profile/types.js +104 -0
  224. package/dist/prompt/composer.d.ts +46 -7
  225. package/dist/prompt/composer.js +78 -48
  226. package/dist/prompt/instruction-scanner.d.ts +6 -5
  227. package/dist/prompt/instruction-scanner.js +8 -23
  228. package/dist/prompt/section-loader.d.ts +2 -2
  229. package/dist/prompt/section-loader.js +7 -4
  230. package/dist/prompt/sections/browser.md +10 -9
  231. package/dist/prompt/sections/harness-base.md +9 -0
  232. package/dist/protocol/chat-session-manager.d.ts +64 -1
  233. package/dist/protocol/chat-session-manager.js +104 -0
  234. package/dist/protocol/chat-session.d.ts +61 -10
  235. package/dist/protocol/chat-session.js +135 -25
  236. package/dist/protocol/client.d.ts +33 -3
  237. package/dist/protocol/client.js +96 -5
  238. package/dist/protocol/index.d.ts +2 -2
  239. package/dist/protocol/index.js +2 -2
  240. package/dist/protocol/mobile-remote-types.d.ts +406 -0
  241. package/dist/protocol/mobile-remote-types.js +1 -0
  242. package/dist/protocol/server.d.ts +127 -3
  243. package/dist/protocol/server.js +1309 -182
  244. package/dist/protocol/types.d.ts +152 -34
  245. package/dist/protocol/types.js +16 -0
  246. package/dist/run/ArtifactTracker.d.ts +6 -1
  247. package/dist/run/ArtifactTracker.js +29 -21
  248. package/dist/run/EngineRunner.d.ts +2 -0
  249. package/dist/run/EngineRunner.js +1 -0
  250. package/dist/run/RunManager.d.ts +26 -0
  251. package/dist/run/RunManager.js +82 -11
  252. package/dist/run/factory.d.ts +3 -0
  253. package/dist/run/factory.js +2 -0
  254. package/dist/runtime/safe-spawn.d.ts +6 -0
  255. package/dist/runtime/safe-spawn.js +8 -13
  256. package/dist/services/auto-dream.d.ts +13 -1
  257. package/dist/services/auto-dream.js +56 -8
  258. package/dist/services/dream-consolidation.js +10 -1
  259. package/dist/services/memory-orchestrator.js +6 -2
  260. package/dist/services/oauth.js +4 -1
  261. package/dist/services/session-memory.d.ts +4 -4
  262. package/dist/services/session-memory.js +13 -10
  263. package/dist/session/memory.d.ts +26 -7
  264. package/dist/session/memory.js +79 -21
  265. package/dist/session/session-manager.d.ts +182 -28
  266. package/dist/session/session-manager.js +910 -130
  267. package/dist/session/session-message.d.ts +22 -0
  268. package/dist/session/session-message.js +1 -0
  269. package/dist/session/transcript.d.ts +46 -5
  270. package/dist/session/transcript.js +159 -3
  271. package/dist/settings/feature-flags.d.ts +40 -0
  272. package/dist/settings/feature-flags.js +40 -0
  273. package/dist/settings/manager.d.ts +39 -1
  274. package/dist/settings/manager.js +102 -41
  275. package/dist/settings/migrate-config.js +4 -2
  276. package/dist/settings/schema.d.ts +511 -177
  277. package/dist/settings/schema.js +98 -25
  278. package/dist/skills/scanner.d.ts +6 -2
  279. package/dist/skills/scanner.js +160 -9
  280. package/dist/sources/adapter.d.ts +14 -0
  281. package/dist/sources/adapter.js +7 -0
  282. package/dist/sources/adapters/local-files.d.ts +10 -0
  283. package/dist/sources/adapters/local-files.js +127 -0
  284. package/dist/sources/adapters/mcp-resource.d.ts +17 -0
  285. package/dist/sources/adapters/mcp-resource.js +41 -0
  286. package/dist/sources/adapters/mock.d.ts +3 -0
  287. package/dist/sources/adapters/mock.js +29 -0
  288. package/dist/sources/binding.d.ts +6 -0
  289. package/dist/sources/binding.js +24 -0
  290. package/dist/sources/catalog.d.ts +6 -0
  291. package/dist/sources/catalog.js +64 -0
  292. package/dist/sources/context-summary.d.ts +8 -0
  293. package/dist/sources/context-summary.js +13 -0
  294. package/dist/sources/credential-status.d.ts +2 -0
  295. package/dist/sources/credential-status.js +13 -0
  296. package/dist/sources/index.d.ts +10 -0
  297. package/dist/sources/index.js +10 -0
  298. package/dist/sources/resolve.d.ts +28 -0
  299. package/dist/sources/resolve.js +47 -0
  300. package/dist/sources/truncate-utf8.d.ts +7 -0
  301. package/dist/sources/truncate-utf8.js +18 -0
  302. package/dist/sources/types.d.ts +71 -0
  303. package/dist/sources/types.js +26 -0
  304. package/dist/testing/fetch-stub.d.ts +32 -0
  305. package/dist/testing/fetch-stub.js +24 -0
  306. package/dist/themes/image.d.ts +18 -0
  307. package/dist/themes/image.js +117 -0
  308. package/dist/themes/index.d.ts +4 -0
  309. package/dist/themes/index.js +4 -0
  310. package/dist/themes/installer.d.ts +50 -0
  311. package/dist/themes/installer.js +290 -0
  312. package/dist/themes/manifest.d.ts +102 -0
  313. package/dist/themes/manifest.js +86 -0
  314. package/dist/themes/paths.d.ts +14 -0
  315. package/dist/themes/paths.js +33 -0
  316. package/dist/tool-system/browser-bridge.d.ts +53 -11
  317. package/dist/tool-system/browser-bridge.js +8 -9
  318. package/dist/tool-system/builtin/agent-heartbeat.d.ts +2 -2
  319. package/dist/tool-system/builtin/agent-heartbeat.js +20 -6
  320. package/dist/tool-system/builtin/agent-notifications.d.ts +127 -72
  321. package/dist/tool-system/builtin/agent-notifications.js +291 -101
  322. package/dist/tool-system/builtin/agent-output-file.js +1 -3
  323. package/dist/tool-system/builtin/agent-progress.d.ts +6 -0
  324. package/dist/tool-system/builtin/agent-progress.js +83 -0
  325. package/dist/tool-system/builtin/agent-registry.d.ts +38 -2
  326. package/dist/tool-system/builtin/agent-registry.js +178 -9
  327. package/dist/tool-system/builtin/agent-transcript-translator.js +1 -1
  328. package/dist/tool-system/builtin/agent.d.ts +2 -0
  329. package/dist/tool-system/builtin/agent.js +274 -33
  330. package/dist/tool-system/builtin/background-jobs.d.ts +55 -2
  331. package/dist/tool-system/builtin/background-jobs.js +96 -4
  332. package/dist/tool-system/builtin/background-work.d.ts +6 -0
  333. package/dist/tool-system/builtin/background-work.js +8 -1
  334. package/dist/tool-system/builtin/bash.js +5 -2
  335. package/dist/tool-system/builtin/browser-tools.d.ts +6 -3
  336. package/dist/tool-system/builtin/browser-tools.js +89 -23
  337. package/dist/tool-system/builtin/edit-model-catalog.d.ts +6 -0
  338. package/dist/tool-system/builtin/edit-model-catalog.js +172 -12
  339. package/dist/tool-system/builtin/edit.js +2 -6
  340. package/dist/tool-system/builtin/file-cache.d.ts +2 -0
  341. package/dist/tool-system/builtin/file-cache.js +4 -0
  342. package/dist/tool-system/builtin/generate-image.js +17 -10
  343. package/dist/tool-system/builtin/generate-video.js +26 -7
  344. package/dist/tool-system/builtin/grep.js +2 -2
  345. package/dist/tool-system/builtin/image-uploader.js +7 -1
  346. package/dist/tool-system/builtin/index.d.ts +32 -7
  347. package/dist/tool-system/builtin/index.js +237 -167
  348. package/dist/tool-system/builtin/memory.d.ts +6 -0
  349. package/dist/tool-system/builtin/memory.js +36 -15
  350. package/dist/tool-system/builtin/panel.d.ts +9 -0
  351. package/dist/tool-system/builtin/panel.js +314 -0
  352. package/dist/tool-system/builtin/read.js +5 -1
  353. package/dist/tool-system/builtin/send-message-to-session.d.ts +6 -0
  354. package/dist/tool-system/builtin/send-message-to-session.js +67 -0
  355. package/dist/tool-system/builtin/sources.d.ts +8 -0
  356. package/dist/tool-system/builtin/sources.js +137 -0
  357. package/dist/tool-system/builtin/tool-search.js +7 -2
  358. package/dist/tool-system/builtin/update-automation-memory.js +2 -0
  359. package/dist/tool-system/builtin/web-fetch.js +17 -13
  360. package/dist/tool-system/builtin/web-search.js +1 -3
  361. package/dist/tool-system/capability-module.d.ts +93 -0
  362. package/dist/tool-system/capability-module.js +53 -0
  363. package/dist/tool-system/context.d.ts +77 -19
  364. package/dist/tool-system/executor.js +75 -50
  365. package/dist/tool-system/external-tool-exposure.d.ts +60 -0
  366. package/dist/tool-system/external-tool-exposure.js +304 -0
  367. package/dist/tool-system/mcp-manager.d.ts +11 -1
  368. package/dist/tool-system/mcp-manager.js +19 -4
  369. package/dist/tool-system/mcp-tool-policy.d.ts +9 -0
  370. package/dist/tool-system/mcp-tool-policy.js +34 -0
  371. package/dist/tool-system/panel-bridge.d.ts +53 -0
  372. package/dist/tool-system/panel-bridge.js +1 -0
  373. package/dist/tool-system/path-policy.js +99 -2
  374. package/dist/tool-system/permission.d.ts +26 -0
  375. package/dist/tool-system/permission.js +46 -0
  376. package/dist/tool-system/registry.d.ts +12 -1
  377. package/dist/tool-system/registry.js +31 -7
  378. package/dist/tool-system/sandbox/index.js +3 -8
  379. package/dist/tool-system/sandbox/seatbelt.js +2 -6
  380. package/dist/tool-system/session-tool-host.d.ts +139 -0
  381. package/dist/tool-system/session-tool-host.js +167 -0
  382. package/dist/tool-system/testing/tool-registry-harness.d.ts +31 -0
  383. package/dist/tool-system/testing/tool-registry-harness.js +51 -0
  384. package/dist/tool-system/validation.d.ts +14 -7
  385. package/dist/tool-system/validation.js +701 -7
  386. package/dist/types.d.ts +186 -20
  387. package/dist/{cc-orchestrator → utils}/cwd-normalize.d.ts +1 -0
  388. package/dist/{cc-orchestrator → utils}/cwd-normalize.js +1 -0
  389. package/dist/utils/file-mutex.d.ts +65 -0
  390. package/dist/utils/file-mutex.js +145 -0
  391. package/dist/utils/json.d.ts +2 -4
  392. package/dist/utils/json.js +2 -4
  393. package/dist/utils/lockfile.d.ts +30 -1
  394. package/dist/utils/lockfile.js +2 -2
  395. package/dist/utils/secret-scrubber.d.ts +8 -0
  396. package/dist/utils/secret-scrubber.js +227 -0
  397. package/dist/utils/toolDisplay.js +1 -1
  398. package/package.json +20 -5
  399. package/THIRD_PARTY_NOTICES.md +0 -206
  400. package/dist/arena/arena.d.ts +0 -45
  401. package/dist/arena/arena.js +0 -362
  402. package/dist/arena/context/context-tools.d.ts +0 -16
  403. package/dist/arena/context/context-tools.js +0 -272
  404. package/dist/arena/context/within-root.d.ts +0 -7
  405. package/dist/arena/context/within-root.js +0 -15
  406. package/dist/arena/detect-mode.d.ts +0 -20
  407. package/dist/arena/detect-mode.js +0 -78
  408. package/dist/arena/digest-builder.d.ts +0 -25
  409. package/dist/arena/digest-builder.js +0 -120
  410. package/dist/arena/index.d.ts +0 -29
  411. package/dist/arena/index.js +0 -29
  412. package/dist/arena/iterate/convergence.d.ts +0 -25
  413. package/dist/arena/iterate/convergence.js +0 -103
  414. package/dist/arena/iterate/formats/index.d.ts +0 -22
  415. package/dist/arena/iterate/formats/index.js +0 -283
  416. package/dist/arena/iterate/index.d.ts +0 -11
  417. package/dist/arena/iterate/index.js +0 -9
  418. package/dist/arena/iterate/iterative-arena.d.ts +0 -23
  419. package/dist/arena/iterate/iterative-arena.js +0 -237
  420. package/dist/arena/iterate/parse.d.ts +0 -42
  421. package/dist/arena/iterate/parse.js +0 -123
  422. package/dist/arena/iterate/phases/argue.d.ts +0 -22
  423. package/dist/arena/iterate/phases/argue.js +0 -165
  424. package/dist/arena/iterate/phases/revise.d.ts +0 -16
  425. package/dist/arena/iterate/phases/revise.js +0 -62
  426. package/dist/arena/iterate/phases/tournament.d.ts +0 -34
  427. package/dist/arena/iterate/phases/tournament.js +0 -113
  428. package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
  429. package/dist/arena/iterate/tools/web-tools.js +0 -54
  430. package/dist/arena/iterate/types.d.ts +0 -152
  431. package/dist/arena/iterate/types.js +0 -8
  432. package/dist/arena/ledger.d.ts +0 -47
  433. package/dist/arena/ledger.js +0 -159
  434. package/dist/arena/lenses/architecture.d.ts +0 -5
  435. package/dist/arena/lenses/architecture.js +0 -22
  436. package/dist/arena/lenses/engineering.d.ts +0 -5
  437. package/dist/arena/lenses/engineering.js +0 -22
  438. package/dist/arena/lenses/general.d.ts +0 -5
  439. package/dist/arena/lenses/general.js +0 -20
  440. package/dist/arena/lenses/index.d.ts +0 -16
  441. package/dist/arena/lenses/index.js +0 -47
  442. package/dist/arena/lenses/product.d.ts +0 -5
  443. package/dist/arena/lenses/product.js +0 -22
  444. package/dist/arena/model-presets.d.ts +0 -23
  445. package/dist/arena/model-presets.js +0 -44
  446. package/dist/arena/phases/adjudication.d.ts +0 -25
  447. package/dist/arena/phases/adjudication.js +0 -142
  448. package/dist/arena/phases/build-consensus.d.ts +0 -30
  449. package/dist/arena/phases/build-consensus.js +0 -85
  450. package/dist/arena/phases/claim-registry.d.ts +0 -26
  451. package/dist/arena/phases/claim-registry.js +0 -60
  452. package/dist/arena/phases/cross-review.d.ts +0 -47
  453. package/dist/arena/phases/cross-review.js +0 -224
  454. package/dist/arena/phases/debate-rounds.d.ts +0 -28
  455. package/dist/arena/phases/debate-rounds.js +0 -161
  456. package/dist/arena/phases/participant-research.d.ts +0 -39
  457. package/dist/arena/phases/participant-research.js +0 -316
  458. package/dist/arena/phases/planning-detail-expansion.d.ts +0 -39
  459. package/dist/arena/phases/planning-detail-expansion.js +0 -120
  460. package/dist/arena/planner.d.ts +0 -28
  461. package/dist/arena/planner.js +0 -312
  462. package/dist/arena/providers/docs.d.ts +0 -7
  463. package/dist/arena/providers/docs.js +0 -111
  464. package/dist/arena/providers/git.d.ts +0 -8
  465. package/dist/arena/providers/git.js +0 -174
  466. package/dist/arena/providers/index.d.ts +0 -32
  467. package/dist/arena/providers/index.js +0 -132
  468. package/dist/arena/providers/none.d.ts +0 -7
  469. package/dist/arena/providers/none.js +0 -11
  470. package/dist/arena/providers/repo.d.ts +0 -7
  471. package/dist/arena/providers/repo.js +0 -258
  472. package/dist/arena/render/session.d.ts +0 -17
  473. package/dist/arena/render/session.js +0 -190
  474. package/dist/arena/render/terminal.d.ts +0 -34
  475. package/dist/arena/render/terminal.js +0 -286
  476. package/dist/arena/strategies/discussion.d.ts +0 -25
  477. package/dist/arena/strategies/discussion.js +0 -143
  478. package/dist/arena/strategies/index.d.ts +0 -15
  479. package/dist/arena/strategies/index.js +0 -28
  480. package/dist/arena/strategies/language-wrapper.d.ts +0 -17
  481. package/dist/arena/strategies/language-wrapper.js +0 -102
  482. package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
  483. package/dist/arena/strategies/lens-wrapper.js +0 -236
  484. package/dist/arena/strategies/planning.d.ts +0 -30
  485. package/dist/arena/strategies/planning.js +0 -225
  486. package/dist/arena/strategies/review.d.ts +0 -26
  487. package/dist/arena/strategies/review.js +0 -168
  488. package/dist/arena/strategies/utils.d.ts +0 -36
  489. package/dist/arena/strategies/utils.js +0 -603
  490. package/dist/arena/tools/selector.d.ts +0 -17
  491. package/dist/arena/tools/selector.js +0 -61
  492. package/dist/arena/transitions.d.ts +0 -53
  493. package/dist/arena/transitions.js +0 -97
  494. package/dist/arena/types.d.ts +0 -518
  495. package/dist/arena/types.js +0 -27
  496. package/dist/cc-orchestrator/agent-adapter.d.ts +0 -54
  497. package/dist/cc-orchestrator/agent-adapter.js +0 -143
  498. package/dist/cc-orchestrator/cc-capability.d.ts +0 -19
  499. package/dist/cc-orchestrator/cc-capability.js +0 -53
  500. package/dist/cc-orchestrator/codex-session-discovery.d.ts +0 -24
  501. package/dist/cc-orchestrator/codex-session-discovery.js +0 -191
  502. package/dist/cc-orchestrator/codex-session-history.d.ts +0 -38
  503. package/dist/cc-orchestrator/codex-session-history.js +0 -247
  504. package/dist/cc-orchestrator/external-agent-bindings.d.ts +0 -27
  505. package/dist/cc-orchestrator/external-agent-bindings.js +0 -150
  506. package/dist/cc-orchestrator/external-agent-changes.d.ts +0 -19
  507. package/dist/cc-orchestrator/external-agent-changes.js +0 -231
  508. package/dist/cc-orchestrator/external-agent-driver.d.ts +0 -19
  509. package/dist/cc-orchestrator/external-agent-driver.js +0 -284
  510. package/dist/cc-orchestrator/external-agent-session-store.d.ts +0 -23
  511. package/dist/cc-orchestrator/external-agent-session-store.js +0 -146
  512. package/dist/cc-orchestrator/index.d.ts +0 -8
  513. package/dist/cc-orchestrator/index.js +0 -8
  514. package/dist/cc-orchestrator/relevance-judge.d.ts +0 -15
  515. package/dist/cc-orchestrator/relevance-judge.js +0 -29
  516. package/dist/cc-orchestrator/session-discovery.d.ts +0 -46
  517. package/dist/cc-orchestrator/session-discovery.js +0 -125
  518. package/dist/cc-orchestrator/session-history.d.ts +0 -54
  519. package/dist/cc-orchestrator/session-history.js +0 -150
  520. package/dist/cron/cron-runtime.d.ts +0 -2
  521. package/dist/cron/cron-runtime.js +0 -2
  522. package/dist/cron/cron-store.d.ts +0 -2
  523. package/dist/cron/cron-store.js +0 -2
  524. package/dist/cron/scheduler.d.ts +0 -7
  525. package/dist/cron/scheduler.js +0 -7
  526. package/dist/engine/goal.js +0 -206
  527. package/dist/external-agents/config.d.ts +0 -2
  528. package/dist/external-agents/config.js +0 -15
  529. package/dist/external-agents/types.d.ts +0 -31
  530. package/dist/git/parse-log.d.ts +0 -13
  531. package/dist/git/parse-log.js +0 -21
  532. package/dist/git/utils.d.ts +0 -49
  533. package/dist/git/utils.js +0 -161
  534. package/dist/git/worktree/crud.d.ts +0 -72
  535. package/dist/git/worktree/crud.js +0 -235
  536. package/dist/git/worktree/diff.d.ts +0 -14
  537. package/dist/git/worktree/diff.js +0 -82
  538. package/dist/git/worktree/git-exec.d.ts +0 -7
  539. package/dist/git/worktree/git-exec.js +0 -87
  540. package/dist/git/worktree/index.d.ts +0 -5
  541. package/dist/git/worktree/index.js +0 -5
  542. package/dist/git/worktree/query.d.ts +0 -43
  543. package/dist/git/worktree/query.js +0 -128
  544. package/dist/git/worktree/slug.d.ts +0 -11
  545. package/dist/git/worktree/slug.js +0 -58
  546. package/dist/git/worktree.d.ts +0 -1
  547. package/dist/git/worktree.js +0 -5
  548. package/dist/lsp/client.d.ts +0 -41
  549. package/dist/lsp/client.js +0 -186
  550. package/dist/lsp/manager.d.ts +0 -40
  551. package/dist/lsp/manager.js +0 -155
  552. package/dist/lsp/root-path.d.ts +0 -9
  553. package/dist/lsp/root-path.js +0 -12
  554. package/dist/lsp/servers.d.ts +0 -16
  555. package/dist/lsp/servers.js +0 -60
  556. package/dist/prompt/sections/coding.md +0 -35
  557. package/dist/quota/credentials.d.ts +0 -3
  558. package/dist/quota/credentials.js +0 -80
  559. package/dist/quota/index.d.ts +0 -36
  560. package/dist/quota/index.js +0 -155
  561. package/dist/quota/types.d.ts +0 -48
  562. package/dist/quota/types.js +0 -13
  563. package/dist/review/review-prompt.d.ts +0 -28
  564. package/dist/review/review-prompt.js +0 -81
  565. package/dist/state.d.ts +0 -160
  566. package/dist/state.js +0 -267
  567. package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
  568. package/dist/tool-system/builtin/apply-patch/applier.js +0 -308
  569. package/dist/tool-system/builtin/apply-patch/backup-targets.d.ts +0 -10
  570. package/dist/tool-system/builtin/apply-patch/backup-targets.js +0 -30
  571. package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -20
  572. package/dist/tool-system/builtin/apply-patch/index.js +0 -105
  573. package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
  574. package/dist/tool-system/builtin/apply-patch/parser.js +0 -212
  575. package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
  576. package/dist/tool-system/builtin/apply-patch/seek-sequence.js +0 -123
  577. package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
  578. package/dist/tool-system/builtin/apply-patch/types.js +0 -13
  579. package/dist/tool-system/builtin/arena.d.ts +0 -31
  580. package/dist/tool-system/builtin/arena.js +0 -416
  581. package/dist/tool-system/builtin/brief.d.ts +0 -6
  582. package/dist/tool-system/builtin/brief.js +0 -41
  583. package/dist/tool-system/builtin/check-quota.d.ts +0 -15
  584. package/dist/tool-system/builtin/check-quota.js +0 -34
  585. package/dist/tool-system/builtin/drive-claude-code.d.ts +0 -51
  586. package/dist/tool-system/builtin/drive-claude-code.js +0 -698
  587. package/dist/tool-system/builtin/lsp.d.ts +0 -7
  588. package/dist/tool-system/builtin/lsp.js +0 -144
  589. package/dist/tool-system/builtin/notebook-edit.d.ts +0 -7
  590. package/dist/tool-system/builtin/notebook-edit.js +0 -127
  591. package/dist/tool-system/builtin/worktree.d.ts +0 -11
  592. package/dist/tool-system/builtin/worktree.js +0 -363
  593. /package/dist/{external-agents → links}/types.js +0 -0
  594. /package/dist/{engine/session-usage.d.ts → session/usage.d.ts} +0 -0
  595. /package/dist/{engine/session-usage.js → session/usage.js} +0 -0
@@ -1,7 +0,0 @@
1
- /**
2
- * LSPTool — language server protocol operations for code intelligence.
3
- */
4
- import type { ToolDefinition } from "../../types.js";
5
- import type { ToolContext } from "../context.js";
6
- export declare const lspToolDef: ToolDefinition;
7
- export declare function lspTool(args: Record<string, unknown>, ctx?: ToolContext): Promise<string>;
@@ -1,144 +0,0 @@
1
- /**
2
- * LSPTool — language server protocol operations for code intelligence.
3
- */
4
- import { getLSPManager } from "../../lsp/manager.js";
5
- import { detectLSPServer } from "../../lsp/servers.js";
6
- import { pathToFileURL } from "node:url";
7
- import { isAbsolute, resolve } from "node:path";
8
- export const lspToolDef = {
9
- name: "LSP",
10
- description: "Use Language Server Protocol for code intelligence operations. " +
11
- "Available actions: goToDefinition, findReferences, hover, getDiagnostics, getSymbols. " +
12
- "Requires a language server to be installed for the target language.",
13
- inputSchema: {
14
- type: "object",
15
- properties: {
16
- action: {
17
- type: "string",
18
- enum: ["goToDefinition", "findReferences", "hover", "getDiagnostics", "getSymbols"],
19
- description: "The LSP operation to perform",
20
- },
21
- file_path: {
22
- type: "string",
23
- description: "Absolute path to the file",
24
- },
25
- line: {
26
- type: "number",
27
- description: "Line number (0-based). Required for goToDefinition, findReferences, hover.",
28
- },
29
- character: {
30
- type: "number",
31
- description: "Character offset (0-based). Required for goToDefinition, findReferences, hover.",
32
- },
33
- },
34
- required: ["action", "file_path"],
35
- },
36
- };
37
- export async function lspTool(args, ctx) {
38
- const action = args.action;
39
- const rawPath = args.file_path;
40
- const line = args.line ?? 0;
41
- const character = args.character ?? 0;
42
- if (!rawPath)
43
- return "Error: file_path is required";
44
- const cwd = ctx?.cwd ?? process.cwd();
45
- const filePath = isAbsolute(rawPath) ? rawPath : resolve(cwd, rawPath);
46
- const manager = getLSPManager();
47
- if (!manager)
48
- return "Error: LSP is not initialized. Language servers are not available.";
49
- // Detect the appropriate server
50
- const serverConfig = detectLSPServer(filePath);
51
- if (!serverConfig)
52
- return `Error: No language server configured for ${filePath}`;
53
- const client = await manager.getClient(serverConfig.name);
54
- if (!client) {
55
- return `Error: Language server "${serverConfig.name}" is not available. Install: ${serverConfig.installHint}`;
56
- }
57
- const uri = pathToFileURL(filePath).href;
58
- const position = { line, character };
59
- try {
60
- switch (action) {
61
- case "goToDefinition": {
62
- const result = await client.request("textDocument/definition", {
63
- textDocument: { uri },
64
- position,
65
- });
66
- return formatLocationResult(result, "Definition");
67
- }
68
- case "findReferences": {
69
- const result = await client.request("textDocument/references", {
70
- textDocument: { uri },
71
- position,
72
- context: { includeDeclaration: true },
73
- });
74
- return formatLocationResult(result, "References");
75
- }
76
- case "hover": {
77
- const result = await client.request("textDocument/hover", {
78
- textDocument: { uri },
79
- position,
80
- });
81
- if (!result)
82
- return "No hover information available.";
83
- const content = typeof result.contents === "string"
84
- ? result.contents
85
- : result.contents?.value ?? JSON.stringify(result.contents);
86
- return `Hover:\n${content}`;
87
- }
88
- case "getDiagnostics": {
89
- // Open the document to trigger diagnostics
90
- const { readFileSync } = await import("node:fs");
91
- const text = readFileSync(filePath, "utf-8");
92
- await client.notify("textDocument/didOpen", {
93
- textDocument: { uri, languageId: serverConfig.language, version: 1, text },
94
- });
95
- // Wait briefly for diagnostics
96
- await new Promise((r) => setTimeout(r, 2000));
97
- return "Diagnostics requested. Check LSP notifications for results.";
98
- }
99
- case "getSymbols": {
100
- const result = await client.request("textDocument/documentSymbol", {
101
- textDocument: { uri },
102
- });
103
- if (!result?.length)
104
- return "No symbols found.";
105
- const lines = result.map((s) => {
106
- const kind = SYMBOL_KINDS[s.kind] ?? `kind:${s.kind}`;
107
- const range = s.range ?? s.location?.range;
108
- const loc = range ? `:${range.start.line + 1}` : "";
109
- return ` ${kind} ${s.name}${loc}`;
110
- });
111
- return `Symbols in ${filePath}:\n${lines.join("\n")}`;
112
- }
113
- default:
114
- return `Unknown action: ${action}`;
115
- }
116
- }
117
- catch (err) {
118
- return `LSP error: ${err.message}`;
119
- }
120
- }
121
- function formatLocationResult(result, label) {
122
- if (!result)
123
- return `No ${label.toLowerCase()} found.`;
124
- const locations = Array.isArray(result) ? result : [result];
125
- if (locations.length === 0)
126
- return `No ${label.toLowerCase()} found.`;
127
- const lines = locations.map((loc) => {
128
- const uri = loc.uri ?? loc.targetUri ?? "";
129
- const range = loc.range ?? loc.targetRange ?? {};
130
- const path = uri.replace("file://", "");
131
- const line = (range.start?.line ?? 0) + 1;
132
- return ` ${path}:${line}`;
133
- });
134
- return `${label} (${locations.length}):\n${lines.join("\n")}`;
135
- }
136
- const SYMBOL_KINDS = {
137
- 1: "File", 2: "Module", 3: "Namespace", 4: "Package",
138
- 5: "Class", 6: "Method", 7: "Property", 8: "Field",
139
- 9: "Constructor", 10: "Enum", 11: "Interface", 12: "Function",
140
- 13: "Variable", 14: "Constant", 15: "String", 16: "Number",
141
- 17: "Boolean", 18: "Array", 19: "Object", 20: "Key",
142
- 21: "Null", 22: "EnumMember", 23: "Struct", 24: "Event",
143
- 25: "Operator", 26: "TypeParameter",
144
- };
@@ -1,7 +0,0 @@
1
- /**
2
- * NotebookEditTool — read and edit Jupyter notebook (.ipynb) cells.
3
- */
4
- import type { ToolDefinition } from "../../types.js";
5
- import type { ToolContext } from "../context.js";
6
- export declare const notebookEditToolDef: ToolDefinition;
7
- export declare function notebookEditTool(args: Record<string, unknown>, ctx?: ToolContext): Promise<string>;
@@ -1,127 +0,0 @@
1
- /**
2
- * NotebookEditTool — read and edit Jupyter notebook (.ipynb) cells.
3
- */
4
- import { readFileSync, writeFileSync, existsSync } from "node:fs";
5
- import { isAbsolute, resolve } from "node:path";
6
- export const notebookEditToolDef = {
7
- name: "NotebookEdit",
8
- description: "Edit a Jupyter notebook (.ipynb) file. Supports actions: " +
9
- "'read' to view cells, 'insert' to add a cell, 'replace' to update a cell, " +
10
- "'delete' to remove a cell.",
11
- inputSchema: {
12
- type: "object",
13
- properties: {
14
- file_path: {
15
- type: "string",
16
- description: "Path to the .ipynb file",
17
- },
18
- action: {
19
- type: "string",
20
- enum: ["read", "insert", "replace", "delete"],
21
- description: "Operation to perform",
22
- },
23
- cell_index: {
24
- type: "number",
25
- description: "Cell index (0-based). Required for replace and delete.",
26
- },
27
- cell_type: {
28
- type: "string",
29
- enum: ["code", "markdown", "raw"],
30
- description: "Cell type for insert/replace (default: 'code')",
31
- },
32
- source: {
33
- type: "string",
34
- description: "Cell content for insert/replace",
35
- },
36
- },
37
- required: ["file_path", "action"],
38
- },
39
- };
40
- export async function notebookEditTool(args, ctx) {
41
- const rawPath = args.file_path;
42
- const action = args.action;
43
- if (!rawPath)
44
- return "Error: file_path is required";
45
- const cwd = ctx?.cwd ?? process.cwd();
46
- const filePath = isAbsolute(rawPath) ? rawPath : resolve(cwd, rawPath);
47
- if (!filePath.endsWith(".ipynb"))
48
- return "Error: file must be a .ipynb file";
49
- if (action === "read") {
50
- if (!existsSync(filePath))
51
- return `Error: File not found: ${filePath}`;
52
- const nb = readNotebook(filePath);
53
- const lines = [`Notebook: ${filePath} (${nb.cells.length} cells)\n`];
54
- nb.cells.forEach((cell, i) => {
55
- const source = cell.source.join("");
56
- const preview = source.slice(0, 200);
57
- lines.push(`[${i}] ${cell.cell_type}: ${preview}${source.length > 200 ? "..." : ""}`);
58
- });
59
- return lines.join("\n");
60
- }
61
- if (action === "insert") {
62
- const nb = existsSync(filePath) ? readNotebook(filePath) : createEmptyNotebook();
63
- const cellType = args.cell_type ?? "code";
64
- const source = args.source ?? "";
65
- const index = args.cell_index ?? nb.cells.length;
66
- const newCell = createCell(cellType, source);
67
- nb.cells.splice(index, 0, newCell);
68
- writeNotebook(filePath, nb);
69
- return `Inserted ${cellType} cell at index ${index}.`;
70
- }
71
- if (action === "replace") {
72
- if (!existsSync(filePath))
73
- return `Error: File not found: ${filePath}`;
74
- const nb = readNotebook(filePath);
75
- const index = args.cell_index;
76
- if (index === undefined || index < 0 || index >= nb.cells.length) {
77
- return `Error: Invalid cell_index ${index}. Notebook has ${nb.cells.length} cells.`;
78
- }
79
- const cellType = args.cell_type ?? nb.cells[index].cell_type;
80
- const source = args.source ?? "";
81
- nb.cells[index] = createCell(cellType, source);
82
- writeNotebook(filePath, nb);
83
- return `Replaced cell ${index} with ${cellType} cell.`;
84
- }
85
- if (action === "delete") {
86
- if (!existsSync(filePath))
87
- return `Error: File not found: ${filePath}`;
88
- const nb = readNotebook(filePath);
89
- const index = args.cell_index;
90
- if (index === undefined || index < 0 || index >= nb.cells.length) {
91
- return `Error: Invalid cell_index ${index}. Notebook has ${nb.cells.length} cells.`;
92
- }
93
- nb.cells.splice(index, 1);
94
- writeNotebook(filePath, nb);
95
- return `Deleted cell ${index}. Notebook now has ${nb.cells.length} cells.`;
96
- }
97
- return `Unknown action: ${action}`;
98
- }
99
- function readNotebook(filePath) {
100
- return JSON.parse(readFileSync(filePath, "utf-8"));
101
- }
102
- function writeNotebook(filePath, nb) {
103
- writeFileSync(filePath, JSON.stringify(nb, null, 1) + "\n", "utf-8");
104
- }
105
- function createEmptyNotebook() {
106
- return {
107
- cells: [],
108
- metadata: {
109
- kernelspec: { display_name: "Python 3", language: "python", name: "python3" },
110
- language_info: { name: "python", version: "3.10.0" },
111
- },
112
- nbformat: 4,
113
- nbformat_minor: 5,
114
- };
115
- }
116
- function createCell(type, source) {
117
- const cell = {
118
- cell_type: type,
119
- source: source.split("\n").map((line, i, arr) => (i < arr.length - 1 ? line + "\n" : line)),
120
- metadata: {},
121
- };
122
- if (type === "code") {
123
- cell.outputs = [];
124
- cell.execution_count = null;
125
- }
126
- return cell;
127
- }
@@ -1,11 +0,0 @@
1
- /**
2
- * EnterWorktree / ExitWorktree tools — switch a session between git workspaces.
3
- */
4
- import type { ToolDefinition } from "../../types.js";
5
- import type { ToolContext } from "../context.js";
6
- export declare const switchSessionWorkspaceToolDef: ToolDefinition;
7
- export declare function switchSessionWorkspaceTool(args: Record<string, unknown>, ctx?: ToolContext): Promise<string>;
8
- export declare const enterWorktreeToolDef: ToolDefinition;
9
- export declare function enterWorktreeTool(args: Record<string, unknown>, ctx?: ToolContext): Promise<string>;
10
- export declare const exitWorktreeToolDef: ToolDefinition;
11
- export declare function exitWorktreeTool(args: Record<string, unknown>, ctx?: ToolContext): Promise<string>;
@@ -1,363 +0,0 @@
1
- /**
2
- * EnterWorktree / ExitWorktree tools — switch a session between git workspaces.
3
- */
4
- import { existsSync } from "node:fs";
5
- import { isAbsolute, resolve } from "node:path";
6
- import { createWorktree, removeWorktree, listWorktrees, validateWorktreeSlug, selectPlatformScript, runWorktreeSetup, worktreeHasUncommittedOrAheadChanges, currentBranch, cleanupAbortedWorktree, } from "../../git/worktree.js";
7
- export const switchSessionWorkspaceToolDef = {
8
- name: "SwitchSessionWorkspace",
9
- description: "Switch this current conversation session into or out of a workspace through the host UI path. " +
10
- "Use this when you need isolated or parallel work in a git worktree, when you need to move " +
11
- "this conversation to an existing worktree path/branch, or when you are done and should return " +
12
- "this current conversation to main. This is the correct way to move THIS conversation's session " +
13
- "into or out of a worktree on desktop.",
14
- inputSchema: {
15
- type: "object",
16
- properties: {
17
- target: {
18
- type: "string",
19
- description: "Workspace target: 'main', a new slug, an existing worktree path, or an existing branch name.",
20
- },
21
- },
22
- required: ["target"],
23
- },
24
- };
25
- export async function switchSessionWorkspaceTool(args, ctx) {
26
- const target = stringArg(args.target);
27
- if (!target)
28
- return "Error: target is required";
29
- const bridge = ctx?.workspace;
30
- if (!bridge) {
31
- return ("SwitchSessionWorkspace is not available in this host. " +
32
- "Use the host's supported workspace controls instead.");
33
- }
34
- try {
35
- const workspace = await bridge.switch(target);
36
- ctx?.setSessionWorkspace?.(workspace);
37
- const details = workspace.kind === "worktree" && workspace.worktree
38
- ? `\n Branch: ${workspace.worktree.branch}`
39
- : "";
40
- return (`Switched session workspace:\n` +
41
- ` Path: ${workspace.root}` +
42
- details +
43
- `\n\n` +
44
- nextTurnNotice(workspace.root, ctx?.cwd ?? workspace.root));
45
- }
46
- catch (err) {
47
- return `Error: switching workspace failed: ${err.message}`;
48
- }
49
- }
50
- export const enterWorktreeToolDef = {
51
- name: "EnterWorktree",
52
- description: "Switch the current session workspace. Target can be a new worktree slug, " +
53
- "an existing worktree path or branch, or 'main' to return to the main repository. " +
54
- "Switching leaves the previous worktree on disk.",
55
- inputSchema: {
56
- type: "object",
57
- properties: {
58
- target: {
59
- type: "string",
60
- description: "Workspace target: 'main', a new slug (alphanumeric, dots, dashes, underscores), " +
61
- "or an existing worktree path/branch to switch to.",
62
- },
63
- slug: {
64
- type: "string",
65
- description: "Deprecated alias for target. Prefer target.",
66
- },
67
- },
68
- required: [],
69
- },
70
- };
71
- export async function enterWorktreeTool(args, ctx) {
72
- const target = stringArg(args.target) ?? stringArg(args.slug);
73
- if (!target)
74
- return "Error: target is required";
75
- const resolved = sessionServices(ctx);
76
- if (!resolved.ok)
77
- return resolved.error;
78
- const { sessionId, sessionManager } = resolved;
79
- const mainRoot = sessionManager.readCwd(sessionId) ?? ctx?.cwd ?? process.cwd();
80
- const fromWorkspace = sessionManager.getSessionWorkspace(sessionId) ?? {
81
- root: mainRoot,
82
- kind: "main",
83
- };
84
- const fromRoot = fromWorkspace.root;
85
- const currentTurnRoot = ctx?.cwd ?? fromRoot;
86
- const branchPrefix = ctx?.engine?.readWorktreeBranchPrefix?.(mainRoot);
87
- try {
88
- if (target === "main") {
89
- ctx?.signal?.throwIfAborted();
90
- const workspace = { root: mainRoot, kind: "main" };
91
- persistSessionWorkspace(sessionManager, sessionId, workspace, ctx);
92
- sessionManager.recordWorkspaceHandoff(sessionId, fromWorkspace, workspace);
93
- return (`Switched to main workspace:\n` +
94
- ` Path: ${mainRoot}\n` +
95
- ` From: ${fromRoot}\n\n` +
96
- nextTurnNotice(mainRoot, currentTurnRoot));
97
- }
98
- const selected = await resolveWorktreeTarget({
99
- target,
100
- cwd: ctx?.cwd ?? mainRoot,
101
- mainRoot,
102
- sessionId,
103
- currentWorkspace: fromWorkspace,
104
- branchPrefix,
105
- signal: ctx?.signal,
106
- });
107
- if (ctx?.signal?.aborted) {
108
- if (selected.created) {
109
- await cleanupAbortedWorktree(mainRoot, selected.session.worktreePath, selected.session.worktreeBranch);
110
- }
111
- throw new Error("Worktree creation aborted");
112
- }
113
- const workspace = toSessionWorkspace(selected, fromWorkspace);
114
- const setupNote = selected.created
115
- ? await runSetupIfConfigured(selected.session.worktreePath, mainRoot, ctx)
116
- : "";
117
- if (ctx?.signal?.aborted) {
118
- if (selected.created) {
119
- await cleanupAbortedWorktree(mainRoot, selected.session.worktreePath, selected.session.worktreeBranch);
120
- }
121
- throw new Error("Worktree creation aborted");
122
- }
123
- persistSessionWorkspace(sessionManager, sessionId, workspace, ctx);
124
- sessionManager.recordWorkspaceHandoff(sessionId, fromWorkspace, workspace);
125
- const verb = selected.created ? "Worktree created and switched" : "Switched to worktree";
126
- return (`${verb}:\n` +
127
- ` Path: ${workspace.worktree.path}\n` +
128
- ` Branch: ${workspace.worktree.branch}\n` +
129
- ` From: ${selected.from}\n` +
130
- ` Previous: ${fromRoot}\n\n` +
131
- nextTurnNotice(workspace.root, currentTurnRoot) +
132
- setupNote);
133
- }
134
- catch (err) {
135
- return `Error: switching worktree failed: ${err.message}`;
136
- }
137
- }
138
- /** Keep setup output from bloating the tool result — head+tail-ish trim. */
139
- function truncate(s, max = 2000) {
140
- return s.length <= max ? s : `${s.slice(0, max)}\n…(${s.length - max} more chars)`;
141
- }
142
- function persistSessionWorkspace(sessionManager, sessionId, workspace, ctx) {
143
- sessionManager.setSessionWorkspace(sessionId, workspace);
144
- ctx?.setSessionWorkspace?.(workspace);
145
- }
146
- function nextTurnNotice(nextRoot, currentTurnRoot) {
147
- return (`Workspace switched to ${nextRoot}. This takes effect on the next turn - ` +
148
- `file/shell/sandbox tools in the CURRENT turn still target ${currentTurnRoot}.`);
149
- }
150
- export const exitWorktreeToolDef = {
151
- name: "ExitWorktree",
152
- description: "Switch the current session back to the main working directory. " +
153
- "Choose whether to keep the worktree, detach it while preserving the branch, " +
154
- "or discard it entirely.",
155
- inputSchema: {
156
- type: "object",
157
- properties: {
158
- action: {
159
- type: "string",
160
- enum: ["keep", "detach", "discard"],
161
- description: "'keep' preserves the worktree directory and branch for later. " +
162
- "'detach' removes the directory but keeps the branch. " +
163
- "'discard' removes the directory and its branch entirely. " +
164
- "If omitted, a clean worktree is detached automatically; a dirty worktree requires keep/discard.",
165
- },
166
- },
167
- required: [],
168
- },
169
- };
170
- export async function exitWorktreeTool(args, ctx) {
171
- const resolved = sessionServices(ctx);
172
- if (!resolved.ok)
173
- return resolved.error;
174
- const { sessionId, sessionManager } = resolved;
175
- const workspace = sessionManager.getSessionWorkspace(sessionId);
176
- if (!workspace || workspace.kind !== "worktree" || !workspace.worktree) {
177
- return "Not currently in a worktree.";
178
- }
179
- const requested = args.action;
180
- if (requested !== undefined &&
181
- requested !== "keep" &&
182
- requested !== "detach" &&
183
- requested !== "discard") {
184
- return `Error: unknown action "${requested}" (expected keep, detach, or discard).`;
185
- }
186
- const hasPendingChanges = existsSync(workspace.worktree.path) &&
187
- (await worktreeHasUncommittedOrAheadChanges(workspace.worktree.path, workspace.worktree.baseRef));
188
- const action = requested ?? (hasPendingChanges ? undefined : "detach");
189
- if (!action) {
190
- return (`Error: worktree has uncommitted changes or new commits. Choose action "keep" to preserve ` +
191
- `the directory or "discard" to delete the worktree and branch.`);
192
- }
193
- if (action === "detach" && hasPendingChanges) {
194
- return (`Error: detach would drop uncommitted changes or new commits. Choose action "keep" to preserve ` +
195
- `the directory or "discard" to delete the worktree and branch.`);
196
- }
197
- const mainRoot = sessionManager.readCwd(sessionId) ?? workspace.root;
198
- const currentTurnRoot = ctx?.cwd ?? workspace.root;
199
- const branchPrefix = ctx?.engine?.readWorktreeBranchPrefix?.(mainRoot);
200
- try {
201
- let removal;
202
- if (action === "discard" || action === "detach") {
203
- const otherOwners = await otherSessionOwnersForWorktree(sessionManager, sessionId, mainRoot, workspace.worktree.path);
204
- if (otherOwners.length > 0) {
205
- const mainWorkspace = { root: mainRoot, kind: "main" };
206
- persistSessionWorkspace(sessionManager, sessionId, mainWorkspace, ctx);
207
- sessionManager.recordWorkspaceHandoff(sessionId, workspace, mainWorkspace);
208
- return sharedWorktreeRemovalSkippedMessage(otherOwners, mainRoot, currentTurnRoot);
209
- }
210
- }
211
- if (action === "discard") {
212
- removal = removeWorktree(workspace.worktree.path, true, { prefix: branchPrefix });
213
- }
214
- else if (action === "detach") {
215
- removal = removeWorktree(workspace.worktree.path, false);
216
- }
217
- const mainWorkspace = { root: mainRoot, kind: "main" };
218
- persistSessionWorkspace(sessionManager, sessionId, mainWorkspace, ctx);
219
- sessionManager.recordWorkspaceHandoff(sessionId, workspace, mainWorkspace);
220
- if (action === "keep") {
221
- return (`Worktree preserved at ${workspace.worktree.path}. ` +
222
- `Branch ${workspace.worktree.branch} preserved.\n` +
223
- `Back to ${mainRoot} starting next turn.\n` +
224
- nextTurnNotice(mainRoot, currentTurnRoot));
225
- }
226
- if (action === "discard") {
227
- if (removal?.branchDeleted === false) {
228
- const branch = removal.branch ?? workspace.worktree.branch;
229
- return (`WARNING: worktree removed; branch ${branch} could not be deleted: ` +
230
- `${removal.branchError ?? "unknown error"}\n` +
231
- `Delete it manually with git branch -D ${branch}.\n` +
232
- `Back to ${mainRoot} starting next turn.\n` +
233
- nextTurnNotice(mainRoot, currentTurnRoot));
234
- }
235
- return (`Worktree removed and branch ${workspace.worktree.branch} deleted. ` +
236
- `Back to ${mainRoot} starting next turn.\n` +
237
- nextTurnNotice(mainRoot, currentTurnRoot));
238
- }
239
- return (`Worktree removed${requested ? "" : " (auto-detached clean worktree)"}. ` +
240
- `Branch ${workspace.worktree.branch} preserved.\n` +
241
- `To merge: git merge ${workspace.worktree.branch}\n` +
242
- `Back to ${mainRoot} starting next turn.\n` +
243
- nextTurnNotice(mainRoot, currentTurnRoot));
244
- }
245
- catch (err) {
246
- return `Error: exiting worktree failed: ${err.message}`;
247
- }
248
- }
249
- function sessionServices(ctx) {
250
- const sessionId = ctx?.sessionId;
251
- if (!sessionId)
252
- return { ok: false, error: "Error: worktree tools require a sessionId." };
253
- const sessionManager = ctx?.engine?.getSessionManager?.();
254
- if (!sessionManager) {
255
- return { ok: false, error: "Error: worktree tools require a session manager." };
256
- }
257
- return { ok: true, sessionId, sessionManager };
258
- }
259
- async function otherSessionOwnersForWorktree(sessionManager, sessionId, mainRoot, worktreePath) {
260
- const workspaceOwners = sessionManager
261
- .list(Number.MAX_SAFE_INTEGER)
262
- .map((session) => ({ sessionId: session.sessionId, workspace: session.workspace }))
263
- .filter((owner) => owner.workspace !== undefined);
264
- const entry = (await listWorktrees(mainRoot, {
265
- currentSessionId: sessionId,
266
- workspaceOwners,
267
- })).find((worktree) => resolve(worktree.path) === resolve(worktreePath));
268
- return (entry?.occupiedBySessionIds ?? []).filter((owner) => owner !== sessionId);
269
- }
270
- function sharedWorktreeRemovalSkippedMessage(otherOwners, mainRoot, currentTurnRoot) {
271
- return (`Error: this worktree is also in use by session(s) ${otherOwners.join(", ")}; ` +
272
- `switching to main, but removal has been skipped.\n` +
273
- `Back to ${mainRoot} starting next turn.\n` +
274
- nextTurnNotice(mainRoot, currentTurnRoot));
275
- }
276
- async function resolveWorktreeTarget(opts) {
277
- const entries = await listWorktrees(opts.mainRoot);
278
- opts.signal?.throwIfAborted();
279
- const pathTarget = pathLike(opts.target) ? resolvePathTarget(opts.target, opts.cwd) : undefined;
280
- const branchTarget = normalizeBranchName(opts.target);
281
- const match = entries.find((entry) => {
282
- if (pathTarget && resolve(entry.path) === pathTarget)
283
- return true;
284
- return entry.branch === branchTarget;
285
- });
286
- if (match) {
287
- const originalBranch = await currentBranch(opts.mainRoot);
288
- opts.signal?.throwIfAborted();
289
- return {
290
- created: false,
291
- session: {
292
- originalCwd: opts.mainRoot,
293
- worktreePath: match.path,
294
- worktreeName: match.path.split(/[\\/]/).pop() ?? match.branch,
295
- worktreeBranch: match.branch,
296
- originalBranch,
297
- sessionId: opts.sessionId,
298
- createdAt: Date.now(),
299
- },
300
- from: opts.currentWorkspace.root,
301
- };
302
- }
303
- if (pathTarget) {
304
- throw new Error(`no existing worktree found at ${opts.target}`);
305
- }
306
- validateWorktreeSlug(opts.target);
307
- const created = await createWorktree(opts.mainRoot, opts.target, opts.sessionId, {
308
- prefix: opts.branchPrefix,
309
- signal: opts.signal,
310
- });
311
- return { created: true, session: created, from: created.originalBranch ?? "HEAD" };
312
- }
313
- function toSessionWorkspace(selected, currentWorkspace) {
314
- const previous = currentWorkspace.kind === "worktree" &&
315
- currentWorkspace.worktree &&
316
- resolve(currentWorkspace.worktree.path) === resolve(selected.session.worktreePath)
317
- ? currentWorkspace.worktree
318
- : undefined;
319
- return {
320
- root: selected.session.worktreePath,
321
- kind: "worktree",
322
- worktree: {
323
- path: selected.session.worktreePath,
324
- branch: selected.session.worktreeBranch,
325
- baseRef: previous?.baseRef ?? selected.session.originalBranch ?? "HEAD",
326
- createdBy: "codeshell",
327
- },
328
- };
329
- }
330
- async function runSetupIfConfigured(worktreePath, mainRoot, ctx) {
331
- const setupScripts = ctx?.engine?.readWorktreeSetupScripts(mainRoot);
332
- const script = selectPlatformScript(setupScripts);
333
- if (!script)
334
- return "";
335
- const setupSandbox = ctx?.engine?.resolveWorktreeSetupSandbox
336
- ? await ctx.engine.resolveWorktreeSetupSandbox(worktreePath)
337
- : ctx?.sandbox;
338
- const setupShellEnv = ctx?.engine?.readWorktreeSetupShellEnv
339
- ? ctx.engine.readWorktreeSetupShellEnv(worktreePath)
340
- : ctx?.shellEnv;
341
- const setup = await runWorktreeSetup(worktreePath, script, {
342
- sandbox: setupSandbox,
343
- shellEnv: setupShellEnv,
344
- signal: ctx?.signal,
345
- });
346
- if (setup.ok) {
347
- return `\n\nRan setup script (exit 0).${setup.output ? `\n${truncate(setup.output)}` : ""}`;
348
- }
349
- return (`\n\n⚠️ Setup script failed (exit ${setup.exitCode ?? "?"}) — continuing anyway. ` +
350
- `You may need to run setup manually.${setup.output ? `\n${truncate(setup.output)}` : ""}`);
351
- }
352
- function stringArg(value) {
353
- return typeof value === "string" && value.length > 0 ? value : undefined;
354
- }
355
- function pathLike(target) {
356
- return (isAbsolute(target) || target.startsWith(".") || target.includes("/") || target.includes("\\"));
357
- }
358
- function resolvePathTarget(target, cwd) {
359
- return resolve(cwd, target);
360
- }
361
- function normalizeBranchName(branch) {
362
- return branch.replace(/^refs\/heads\//, "");
363
- }
File without changes