@cjhyy/code-shell-core 0.7.0 → 0.8.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 (621) 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 +20 -5
  23. package/dist/context/compaction.d.ts +39 -3
  24. package/dist/context/compaction.js +151 -39
  25. package/dist/context/manager.d.ts +20 -4
  26. package/dist/context/manager.js +42 -7
  27. package/dist/context/token-counter.js +5 -3
  28. package/dist/context/tool-result-storage.d.ts +6 -0
  29. package/dist/context/tool-result-storage.js +25 -4
  30. package/dist/credentials/access.d.ts +13 -2
  31. package/dist/credentials/access.js +99 -4
  32. package/dist/credentials/index.d.ts +3 -2
  33. package/dist/credentials/index.js +2 -1
  34. package/dist/credentials/oauth.d.ts +9 -1
  35. package/dist/credentials/oauth.js +80 -1
  36. package/dist/credentials/store.d.ts +16 -2
  37. package/dist/credentials/store.js +33 -11
  38. package/dist/credentials/types.d.ts +62 -1
  39. package/dist/credentials/types.js +16 -1
  40. package/dist/credentials/use-credential-tool.js +15 -1
  41. package/dist/engine/auxiliary-pipeline.d.ts +40 -0
  42. package/dist/engine/auxiliary-pipeline.js +181 -0
  43. package/dist/{settings → engine}/disk-defaults.d.ts +2 -2
  44. package/dist/{settings → engine}/disk-defaults.js +5 -2
  45. package/dist/engine/dynamic-tool-defs.d.ts +4 -0
  46. package/dist/engine/dynamic-tool-defs.js +4 -0
  47. package/dist/engine/engine.d.ts +272 -184
  48. package/dist/engine/engine.js +1869 -1864
  49. package/dist/engine/file-history-hook.d.ts +11 -0
  50. package/dist/engine/file-history-hook.js +31 -0
  51. package/dist/engine/goal-judge-context.d.ts +9 -0
  52. package/dist/engine/goal-judge-context.js +234 -0
  53. package/dist/engine/injected-context-cache.d.ts +6 -0
  54. package/dist/engine/injected-context-cache.js +13 -0
  55. package/dist/engine/input-attachments.d.ts +1 -1
  56. package/dist/engine/model-facade.d.ts +3 -3
  57. package/dist/engine/model-facade.js +15 -14
  58. package/dist/engine/permission-controller.d.ts +55 -0
  59. package/dist/engine/permission-controller.js +148 -0
  60. package/dist/engine/prompt-cache-diagnostics.d.ts +58 -0
  61. package/dist/engine/prompt-cache-diagnostics.js +178 -0
  62. package/dist/engine/run-accounting.d.ts +41 -0
  63. package/dist/engine/run-accounting.js +126 -0
  64. package/dist/engine/run-context.d.ts +44 -0
  65. package/dist/engine/run-context.js +88 -0
  66. package/dist/engine/run-environment.d.ts +30 -0
  67. package/dist/engine/run-environment.js +77 -0
  68. package/dist/engine/run-finalize.d.ts +58 -0
  69. package/dist/engine/run-finalize.js +245 -0
  70. package/dist/engine/run-goal.d.ts +58 -0
  71. package/dist/engine/run-goal.js +188 -0
  72. package/dist/engine/run-image-input.d.ts +1 -1
  73. package/dist/engine/run-image-input.js +5 -3
  74. package/dist/engine/run-session-open.d.ts +41 -0
  75. package/dist/engine/run-session-open.js +186 -0
  76. package/dist/engine/run-setup.d.ts +42 -0
  77. package/dist/engine/run-setup.js +58 -0
  78. package/dist/engine/run-tooling.d.ts +125 -0
  79. package/dist/engine/run-tooling.js +283 -0
  80. package/dist/engine/run-types.d.ts +139 -0
  81. package/dist/engine/run-types.js +12 -0
  82. package/dist/engine/run-workspace.d.ts +50 -0
  83. package/dist/engine/run-workspace.js +114 -0
  84. package/dist/engine/session-title.d.ts +2 -1
  85. package/dist/engine/session-title.js +4 -1
  86. package/dist/engine/steer-queue.d.ts +1 -1
  87. package/dist/engine/subagent-spawner.d.ts +32 -0
  88. package/dist/engine/subagent-spawner.js +287 -0
  89. package/dist/engine/tool-summary.d.ts +2 -2
  90. package/dist/engine/tool-summary.js +2 -2
  91. package/dist/engine/turn-loop.d.ts +67 -10
  92. package/dist/engine/turn-loop.js +538 -97
  93. package/dist/engine/types.d.ts +35 -4
  94. package/dist/engine/types.js +1 -1
  95. package/dist/{engine/goal.d.ts → goal/lifecycle.d.ts} +80 -6
  96. package/dist/goal/lifecycle.js +482 -0
  97. package/dist/hooks/events.d.ts +26 -9
  98. package/dist/hooks/events.js +0 -3
  99. package/dist/hooks/goal-stop-hook.d.ts +28 -29
  100. package/dist/hooks/goal-stop-hook.js +344 -144
  101. package/dist/hooks/registry.js +4 -1
  102. package/dist/hooks/shell-runner.d.ts +12 -1
  103. package/dist/hooks/shell-runner.js +160 -9
  104. package/dist/index.d.ts +51 -110
  105. package/dist/index.extension.d.ts +51 -0
  106. package/dist/index.extension.js +39 -0
  107. package/dist/index.internal.d.ts +86 -0
  108. package/dist/index.internal.js +92 -0
  109. package/dist/index.js +37 -125
  110. package/dist/links/cli.d.ts +48 -0
  111. package/dist/links/cli.js +617 -0
  112. package/dist/links/http.d.ts +40 -0
  113. package/dist/links/http.js +166 -0
  114. package/dist/links/index.d.ts +4 -0
  115. package/dist/links/index.js +3 -0
  116. package/dist/links/link-action-tool.d.ts +5 -0
  117. package/dist/links/link-action-tool.js +241 -0
  118. package/dist/links/providers.d.ts +8 -0
  119. package/dist/links/providers.js +665 -0
  120. package/dist/links/types.d.ts +44 -0
  121. package/dist/llm/client-base.d.ts +7 -0
  122. package/dist/llm/client-base.js +72 -10
  123. package/dist/llm/model-pool.d.ts +1 -1
  124. package/dist/llm/model-pool.js +1 -1
  125. package/dist/llm/providers/anthropic.d.ts +1 -0
  126. package/dist/llm/providers/anthropic.js +9 -0
  127. package/dist/llm/providers/openai.d.ts +1 -0
  128. package/dist/llm/providers/openai.js +17 -0
  129. package/dist/llm/types.d.ts +12 -5
  130. package/dist/model-catalog/index.js +15 -2
  131. package/dist/model-catalog/resolve.d.ts +13 -1
  132. package/dist/model-catalog/resolve.js +37 -2
  133. package/dist/model-catalog/types.d.ts +74 -48
  134. package/dist/model-catalog/types.js +16 -5
  135. package/dist/model-catalog/upsert.d.ts +3 -1
  136. package/dist/model-catalog/upsert.js +9 -0
  137. package/dist/onboarding.d.ts +0 -1
  138. package/dist/onboarding.js +1 -22
  139. package/dist/panel-apps/bindings.d.ts +24 -0
  140. package/dist/panel-apps/bindings.js +69 -0
  141. package/dist/panel-apps/github-archive.d.ts +21 -0
  142. package/dist/panel-apps/github-archive.js +98 -0
  143. package/dist/panel-apps/index.d.ts +4 -0
  144. package/dist/panel-apps/index.js +4 -0
  145. package/dist/panel-apps/installer.d.ts +68 -0
  146. package/dist/panel-apps/installer.js +622 -0
  147. package/dist/panel-apps/manifest.d.ts +364 -0
  148. package/dist/panel-apps/manifest.js +189 -0
  149. package/dist/panel-apps/paths.d.ts +13 -0
  150. package/dist/panel-apps/paths.js +38 -0
  151. package/dist/panel-apps/registry.d.ts +51 -0
  152. package/dist/panel-apps/registry.js +99 -0
  153. package/dist/panel-apps/runtime.d.ts +80 -0
  154. package/dist/panel-apps/runtime.js +154 -0
  155. package/dist/plugins/gitOps.js +8 -1
  156. package/dist/plugins/installedPlugins.d.ts +2 -1
  157. package/dist/plugins/installedPlugins.js +146 -8
  158. package/dist/plugins/installer/codex/convertAgents.d.ts +4 -1
  159. package/dist/plugins/installer/codex/convertAgents.js +62 -8
  160. package/dist/plugins/installer/codex/convertCommands.d.ts +5 -5
  161. package/dist/plugins/installer/codex/convertCommands.js +35 -12
  162. package/dist/plugins/installer/codex/convertHooks.d.ts +10 -0
  163. package/dist/plugins/installer/codex/convertHooks.js +82 -0
  164. package/dist/plugins/installer/codex/convertSkills.js +41 -6
  165. package/dist/plugins/installer/install.d.ts +7 -1
  166. package/dist/plugins/installer/install.js +21 -87
  167. package/dist/plugins/installer/installFromArchive.d.ts +26 -4
  168. package/dist/plugins/installer/installFromArchive.js +44 -27
  169. package/dist/plugins/installer/installFromNpm.d.ts +31 -0
  170. package/dist/plugins/installer/installFromNpm.js +273 -0
  171. package/dist/plugins/installer/loadPluginAgents.js +17 -4
  172. package/dist/plugins/installer/loadPluginMcp.d.ts +14 -0
  173. package/dist/plugins/installer/loadPluginMcp.js +245 -35
  174. package/dist/plugins/installer/normalizeManifest.d.ts +13 -0
  175. package/dist/plugins/installer/normalizeManifest.js +306 -0
  176. package/dist/plugins/installer/npmTar.d.ts +13 -0
  177. package/dist/plugins/installer/npmTar.js +321 -0
  178. package/dist/plugins/installer/parseSource.d.ts +11 -0
  179. package/dist/plugins/installer/parseSource.js +48 -0
  180. package/dist/plugins/installer/preview.d.ts +101 -0
  181. package/dist/plugins/installer/preview.js +336 -0
  182. package/dist/plugins/installer/projectPluginSource.d.ts +14 -0
  183. package/dist/plugins/installer/projectPluginSource.js +140 -0
  184. package/dist/plugins/installer/types.d.ts +775 -0
  185. package/dist/plugins/installer/types.js +100 -0
  186. package/dist/plugins/installer/unzip.d.ts +11 -0
  187. package/dist/plugins/installer/unzip.js +123 -9
  188. package/dist/plugins/installer/update.d.ts +2 -2
  189. package/dist/plugins/installer/update.js +43 -4
  190. package/dist/plugins/loadPluginHooks.d.ts +19 -2
  191. package/dist/plugins/loadPluginHooks.js +97 -86
  192. package/dist/plugins/pluginAutomationTemplates.d.ts +18 -0
  193. package/dist/plugins/pluginAutomationTemplates.js +50 -0
  194. package/dist/plugins/pluginCatalog.d.ts +45 -0
  195. package/dist/plugins/pluginCatalog.js +87 -0
  196. package/dist/plugins/pluginCommandHook.d.ts +10 -4
  197. package/dist/plugins/pluginCommandHook.js +133 -18
  198. package/dist/plugins/pluginCommandsLoader.d.ts +19 -0
  199. package/dist/plugins/pluginCommandsLoader.js +181 -7
  200. package/dist/plugins/pluginContent.d.ts +10 -1
  201. package/dist/plugins/pluginContent.js +87 -30
  202. package/dist/plugins/pluginHookApproval.d.ts +30 -0
  203. package/dist/plugins/pluginHookApproval.js +160 -0
  204. package/dist/plugins/pluginHookIntegrity.d.ts +69 -0
  205. package/dist/plugins/pluginHookIntegrity.js +361 -0
  206. package/dist/plugins/pluginInstaller.js +71 -12
  207. package/dist/plugins/pluginMcpApproval.d.ts +19 -0
  208. package/dist/plugins/pluginMcpApproval.js +110 -0
  209. package/dist/plugins/pluginMcpIntegrity.d.ts +21 -0
  210. package/dist/plugins/pluginMcpIntegrity.js +74 -0
  211. package/dist/plugins/types.d.ts +30 -0
  212. package/dist/plugins/varRewrite.d.ts +9 -5
  213. package/dist/plugins/varRewrite.js +26 -17
  214. package/dist/preset/index.d.ts +11 -8
  215. package/dist/preset/index.js +62 -203
  216. package/dist/product/define.js +9 -3
  217. package/dist/product/types.d.ts +0 -2
  218. package/dist/profile/activation.d.ts +36 -0
  219. package/dist/profile/activation.js +57 -0
  220. package/dist/profile/catalog-store.d.ts +77 -0
  221. package/dist/profile/catalog-store.js +346 -0
  222. package/dist/profile/catalog.d.ts +54 -0
  223. package/dist/profile/catalog.js +152 -0
  224. package/dist/profile/index.d.ts +7 -0
  225. package/dist/profile/index.js +7 -0
  226. package/dist/profile/requirements.d.ts +76 -0
  227. package/dist/profile/requirements.js +117 -0
  228. package/dist/profile/resolve.d.ts +11 -0
  229. package/dist/profile/resolve.js +41 -0
  230. package/dist/profile/store.d.ts +17 -0
  231. package/dist/profile/store.js +167 -0
  232. package/dist/profile/types.d.ts +321 -0
  233. package/dist/profile/types.js +104 -0
  234. package/dist/prompt/composer.d.ts +46 -7
  235. package/dist/prompt/composer.js +78 -48
  236. package/dist/prompt/instruction-scanner.d.ts +6 -5
  237. package/dist/prompt/instruction-scanner.js +8 -23
  238. package/dist/prompt/section-loader.d.ts +2 -2
  239. package/dist/prompt/section-loader.js +7 -4
  240. package/dist/prompt/sections/browser.md +10 -9
  241. package/dist/prompt/sections/harness-base.md +9 -0
  242. package/dist/protocol/chat-session-manager.d.ts +77 -3
  243. package/dist/protocol/chat-session-manager.js +194 -18
  244. package/dist/protocol/chat-session.d.ts +72 -9
  245. package/dist/protocol/chat-session.js +151 -16
  246. package/dist/protocol/client.d.ts +37 -4
  247. package/dist/protocol/client.js +118 -6
  248. package/dist/protocol/index.d.ts +2 -2
  249. package/dist/protocol/index.js +2 -2
  250. package/dist/protocol/mobile-remote-types.d.ts +406 -0
  251. package/dist/protocol/mobile-remote-types.js +1 -0
  252. package/dist/protocol/server.d.ts +152 -14
  253. package/dist/protocol/server.js +1574 -229
  254. package/dist/protocol/types.d.ts +182 -32
  255. package/dist/protocol/types.js +18 -0
  256. package/dist/run/ArtifactTracker.d.ts +6 -1
  257. package/dist/run/ArtifactTracker.js +29 -21
  258. package/dist/run/EngineRunner.d.ts +2 -0
  259. package/dist/run/EngineRunner.js +1 -0
  260. package/dist/run/RunManager.d.ts +26 -0
  261. package/dist/run/RunManager.js +82 -11
  262. package/dist/run/factory.d.ts +3 -0
  263. package/dist/run/factory.js +2 -0
  264. package/dist/runtime/safe-spawn.d.ts +6 -0
  265. package/dist/runtime/safe-spawn.js +8 -13
  266. package/dist/services/auto-dream.d.ts +13 -1
  267. package/dist/services/auto-dream.js +56 -8
  268. package/dist/services/dream-consolidation.d.ts +3 -0
  269. package/dist/services/dream-consolidation.js +14 -2
  270. package/dist/services/index.d.ts +1 -1
  271. package/dist/services/index.js +1 -1
  272. package/dist/services/memory-orchestrator.js +6 -2
  273. package/dist/services/oauth.d.ts +34 -10
  274. package/dist/services/oauth.js +236 -98
  275. package/dist/services/session-memory.d.ts +4 -4
  276. package/dist/services/session-memory.js +13 -10
  277. package/dist/session/memory.d.ts +26 -7
  278. package/dist/session/memory.js +79 -21
  279. package/dist/session/session-manager.d.ts +208 -25
  280. package/dist/session/session-manager.js +1232 -116
  281. package/dist/session/session-message.d.ts +22 -0
  282. package/dist/session/session-message.js +1 -0
  283. package/dist/session/transcript.d.ts +76 -6
  284. package/dist/session/transcript.js +278 -7
  285. package/dist/settings/feature-flags.d.ts +40 -0
  286. package/dist/settings/feature-flags.js +40 -0
  287. package/dist/settings/manager.d.ts +39 -1
  288. package/dist/settings/manager.js +102 -41
  289. package/dist/settings/migrate-config.js +4 -2
  290. package/dist/settings/schema.d.ts +511 -177
  291. package/dist/settings/schema.js +98 -25
  292. package/dist/skills/scanner.d.ts +6 -2
  293. package/dist/skills/scanner.js +160 -9
  294. package/dist/sources/adapter.d.ts +14 -0
  295. package/dist/sources/adapter.js +7 -0
  296. package/dist/sources/adapters/local-files.d.ts +10 -0
  297. package/dist/sources/adapters/local-files.js +127 -0
  298. package/dist/sources/adapters/mcp-resource.d.ts +17 -0
  299. package/dist/sources/adapters/mcp-resource.js +41 -0
  300. package/dist/sources/adapters/mock.d.ts +3 -0
  301. package/dist/sources/adapters/mock.js +29 -0
  302. package/dist/sources/binding.d.ts +6 -0
  303. package/dist/sources/binding.js +24 -0
  304. package/dist/sources/catalog.d.ts +6 -0
  305. package/dist/sources/catalog.js +64 -0
  306. package/dist/sources/context-summary.d.ts +8 -0
  307. package/dist/sources/context-summary.js +13 -0
  308. package/dist/sources/credential-status.d.ts +2 -0
  309. package/dist/sources/credential-status.js +13 -0
  310. package/dist/sources/index.d.ts +10 -0
  311. package/dist/sources/index.js +10 -0
  312. package/dist/sources/resolve.d.ts +28 -0
  313. package/dist/sources/resolve.js +47 -0
  314. package/dist/sources/truncate-utf8.d.ts +7 -0
  315. package/dist/sources/truncate-utf8.js +18 -0
  316. package/dist/sources/types.d.ts +71 -0
  317. package/dist/sources/types.js +26 -0
  318. package/dist/testing/fetch-stub.d.ts +32 -0
  319. package/dist/testing/fetch-stub.js +24 -0
  320. package/dist/themes/image.d.ts +18 -0
  321. package/dist/themes/image.js +117 -0
  322. package/dist/themes/index.d.ts +4 -0
  323. package/dist/themes/index.js +4 -0
  324. package/dist/themes/installer.d.ts +50 -0
  325. package/dist/themes/installer.js +290 -0
  326. package/dist/themes/manifest.d.ts +102 -0
  327. package/dist/themes/manifest.js +86 -0
  328. package/dist/themes/paths.d.ts +14 -0
  329. package/dist/themes/paths.js +33 -0
  330. package/dist/tool-system/browser-bridge.d.ts +53 -11
  331. package/dist/tool-system/browser-bridge.js +8 -9
  332. package/dist/tool-system/builtin/agent-heartbeat.d.ts +2 -2
  333. package/dist/tool-system/builtin/agent-heartbeat.js +20 -6
  334. package/dist/tool-system/builtin/agent-notifications.d.ts +127 -72
  335. package/dist/tool-system/builtin/agent-notifications.js +291 -101
  336. package/dist/tool-system/builtin/agent-output-file.js +1 -3
  337. package/dist/tool-system/builtin/agent-progress.d.ts +6 -0
  338. package/dist/tool-system/builtin/agent-progress.js +83 -0
  339. package/dist/tool-system/builtin/agent-registry.d.ts +38 -2
  340. package/dist/tool-system/builtin/agent-registry.js +178 -9
  341. package/dist/tool-system/builtin/agent-transcript-translator.js +1 -1
  342. package/dist/tool-system/builtin/agent.d.ts +2 -0
  343. package/dist/tool-system/builtin/agent.js +279 -34
  344. package/dist/tool-system/builtin/background-jobs.d.ts +63 -7
  345. package/dist/tool-system/builtin/background-jobs.js +111 -15
  346. package/dist/tool-system/builtin/background-work.d.ts +12 -1
  347. package/dist/tool-system/builtin/background-work.js +12 -1
  348. package/dist/tool-system/builtin/bash.d.ts +3 -5
  349. package/dist/tool-system/builtin/bash.js +14 -6
  350. package/dist/tool-system/builtin/browser-tools.d.ts +8 -5
  351. package/dist/tool-system/builtin/browser-tools.js +89 -23
  352. package/dist/tool-system/builtin/edit-model-catalog.d.ts +6 -0
  353. package/dist/tool-system/builtin/edit-model-catalog.js +172 -12
  354. package/dist/tool-system/builtin/edit.d.ts +2 -1
  355. package/dist/tool-system/builtin/edit.js +14 -10
  356. package/dist/tool-system/builtin/file-cache.d.ts +2 -0
  357. package/dist/tool-system/builtin/file-cache.js +4 -0
  358. package/dist/tool-system/builtin/generate-image.js +17 -10
  359. package/dist/tool-system/builtin/generate-video.d.ts +4 -0
  360. package/dist/tool-system/builtin/generate-video.js +164 -28
  361. package/dist/tool-system/builtin/glob.d.ts +2 -1
  362. package/dist/tool-system/builtin/glob.js +28 -3
  363. package/dist/tool-system/builtin/grep.d.ts +1 -0
  364. package/dist/tool-system/builtin/grep.js +82 -17
  365. package/dist/tool-system/builtin/image-uploader.js +7 -1
  366. package/dist/tool-system/builtin/index.d.ts +57 -18
  367. package/dist/tool-system/builtin/index.js +280 -167
  368. package/dist/tool-system/builtin/memory.d.ts +6 -0
  369. package/dist/tool-system/builtin/memory.js +36 -15
  370. package/dist/tool-system/builtin/panel.d.ts +9 -0
  371. package/dist/tool-system/builtin/panel.js +314 -0
  372. package/dist/tool-system/builtin/read.js +5 -1
  373. package/dist/tool-system/builtin/send-message-to-session.d.ts +6 -0
  374. package/dist/tool-system/builtin/send-message-to-session.js +67 -0
  375. package/dist/tool-system/builtin/sources.d.ts +8 -0
  376. package/dist/tool-system/builtin/sources.js +137 -0
  377. package/dist/tool-system/builtin/tool-search.js +7 -2
  378. package/dist/tool-system/builtin/update-automation-memory.js +2 -0
  379. package/dist/tool-system/builtin/video-providers.d.ts +12 -15
  380. package/dist/tool-system/builtin/video-providers.js +1 -0
  381. package/dist/tool-system/builtin/view-image.d.ts +2 -2
  382. package/dist/tool-system/builtin/web-fetch.js +60 -15
  383. package/dist/tool-system/builtin/web-search.js +1 -3
  384. package/dist/tool-system/builtin/write.d.ts +2 -1
  385. package/dist/tool-system/builtin/write.js +14 -4
  386. package/dist/tool-system/capability-module.d.ts +93 -0
  387. package/dist/tool-system/capability-module.js +53 -0
  388. package/dist/tool-system/context.d.ts +94 -24
  389. package/dist/tool-system/executor.js +99 -58
  390. package/dist/tool-system/external-tool-exposure.d.ts +60 -0
  391. package/dist/tool-system/external-tool-exposure.js +304 -0
  392. package/dist/tool-system/mcp-manager.d.ts +17 -1
  393. package/dist/tool-system/mcp-manager.js +72 -7
  394. package/dist/tool-system/mcp-tool-policy.d.ts +9 -0
  395. package/dist/tool-system/mcp-tool-policy.js +34 -0
  396. package/dist/tool-system/panel-bridge.d.ts +53 -0
  397. package/dist/tool-system/panel-bridge.js +1 -0
  398. package/dist/tool-system/path-policy.d.ts +19 -0
  399. package/dist/tool-system/path-policy.js +62 -1
  400. package/dist/tool-system/permission.d.ts +69 -3
  401. package/dist/tool-system/permission.js +429 -30
  402. package/dist/tool-system/registry.d.ts +15 -3
  403. package/dist/tool-system/registry.js +82 -40
  404. package/dist/tool-system/sandbox/index.js +3 -8
  405. package/dist/tool-system/sandbox/seatbelt.js +2 -6
  406. package/dist/tool-system/session-tool-host.d.ts +139 -0
  407. package/dist/tool-system/session-tool-host.js +167 -0
  408. package/dist/tool-system/testing/tool-registry-harness.d.ts +31 -0
  409. package/dist/tool-system/testing/tool-registry-harness.js +51 -0
  410. package/dist/tool-system/validation.d.ts +14 -7
  411. package/dist/tool-system/validation.js +701 -7
  412. package/dist/types.d.ts +201 -20
  413. package/dist/{cc-orchestrator → utils}/cwd-normalize.d.ts +1 -0
  414. package/dist/{cc-orchestrator → utils}/cwd-normalize.js +1 -0
  415. package/dist/utils/file-mutex.d.ts +65 -0
  416. package/dist/utils/file-mutex.js +145 -0
  417. package/dist/utils/json.d.ts +2 -4
  418. package/dist/utils/json.js +2 -4
  419. package/dist/utils/lockfile.d.ts +30 -1
  420. package/dist/utils/lockfile.js +2 -2
  421. package/dist/utils/secret-scrubber.d.ts +8 -0
  422. package/dist/utils/secret-scrubber.js +227 -0
  423. package/dist/utils/toolDisplay.js +1 -1
  424. package/package.json +20 -5
  425. package/THIRD_PARTY_NOTICES.md +0 -206
  426. package/dist/arena/arena.d.ts +0 -43
  427. package/dist/arena/arena.js +0 -333
  428. package/dist/arena/context/context-tools.d.ts +0 -16
  429. package/dist/arena/context/context-tools.js +0 -272
  430. package/dist/arena/context/within-root.d.ts +0 -7
  431. package/dist/arena/context/within-root.js +0 -15
  432. package/dist/arena/detect-mode.d.ts +0 -20
  433. package/dist/arena/detect-mode.js +0 -78
  434. package/dist/arena/digest-builder.d.ts +0 -25
  435. package/dist/arena/digest-builder.js +0 -120
  436. package/dist/arena/index.d.ts +0 -29
  437. package/dist/arena/index.js +0 -29
  438. package/dist/arena/iterate/convergence.d.ts +0 -25
  439. package/dist/arena/iterate/convergence.js +0 -103
  440. package/dist/arena/iterate/formats/index.d.ts +0 -22
  441. package/dist/arena/iterate/formats/index.js +0 -283
  442. package/dist/arena/iterate/index.d.ts +0 -11
  443. package/dist/arena/iterate/index.js +0 -9
  444. package/dist/arena/iterate/iterative-arena.d.ts +0 -23
  445. package/dist/arena/iterate/iterative-arena.js +0 -237
  446. package/dist/arena/iterate/parse.d.ts +0 -42
  447. package/dist/arena/iterate/parse.js +0 -123
  448. package/dist/arena/iterate/phases/argue.d.ts +0 -22
  449. package/dist/arena/iterate/phases/argue.js +0 -165
  450. package/dist/arena/iterate/phases/revise.d.ts +0 -16
  451. package/dist/arena/iterate/phases/revise.js +0 -62
  452. package/dist/arena/iterate/phases/tournament.d.ts +0 -34
  453. package/dist/arena/iterate/phases/tournament.js +0 -113
  454. package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
  455. package/dist/arena/iterate/tools/web-tools.js +0 -54
  456. package/dist/arena/iterate/types.d.ts +0 -152
  457. package/dist/arena/iterate/types.js +0 -8
  458. package/dist/arena/ledger.d.ts +0 -47
  459. package/dist/arena/ledger.js +0 -159
  460. package/dist/arena/lenses/architecture.d.ts +0 -5
  461. package/dist/arena/lenses/architecture.js +0 -22
  462. package/dist/arena/lenses/engineering.d.ts +0 -5
  463. package/dist/arena/lenses/engineering.js +0 -22
  464. package/dist/arena/lenses/general.d.ts +0 -5
  465. package/dist/arena/lenses/general.js +0 -20
  466. package/dist/arena/lenses/index.d.ts +0 -16
  467. package/dist/arena/lenses/index.js +0 -47
  468. package/dist/arena/lenses/product.d.ts +0 -5
  469. package/dist/arena/lenses/product.js +0 -22
  470. package/dist/arena/model-presets.d.ts +0 -23
  471. package/dist/arena/model-presets.js +0 -44
  472. package/dist/arena/phases/adjudication.d.ts +0 -24
  473. package/dist/arena/phases/adjudication.js +0 -141
  474. package/dist/arena/phases/build-consensus.d.ts +0 -29
  475. package/dist/arena/phases/build-consensus.js +0 -83
  476. package/dist/arena/phases/claim-registry.d.ts +0 -26
  477. package/dist/arena/phases/claim-registry.js +0 -60
  478. package/dist/arena/phases/cross-review.d.ts +0 -45
  479. package/dist/arena/phases/cross-review.js +0 -218
  480. package/dist/arena/phases/debate-rounds.d.ts +0 -27
  481. package/dist/arena/phases/debate-rounds.js +0 -159
  482. package/dist/arena/phases/participant-research.d.ts +0 -38
  483. package/dist/arena/phases/participant-research.js +0 -314
  484. package/dist/arena/phases/planning-detail-expansion.d.ts +0 -38
  485. package/dist/arena/phases/planning-detail-expansion.js +0 -119
  486. package/dist/arena/planner.d.ts +0 -27
  487. package/dist/arena/planner.js +0 -311
  488. package/dist/arena/providers/docs.d.ts +0 -7
  489. package/dist/arena/providers/docs.js +0 -111
  490. package/dist/arena/providers/git.d.ts +0 -8
  491. package/dist/arena/providers/git.js +0 -174
  492. package/dist/arena/providers/index.d.ts +0 -32
  493. package/dist/arena/providers/index.js +0 -132
  494. package/dist/arena/providers/none.d.ts +0 -7
  495. package/dist/arena/providers/none.js +0 -11
  496. package/dist/arena/providers/repo.d.ts +0 -7
  497. package/dist/arena/providers/repo.js +0 -258
  498. package/dist/arena/render/session.d.ts +0 -17
  499. package/dist/arena/render/session.js +0 -190
  500. package/dist/arena/render/terminal.d.ts +0 -34
  501. package/dist/arena/render/terminal.js +0 -286
  502. package/dist/arena/strategies/discussion.d.ts +0 -25
  503. package/dist/arena/strategies/discussion.js +0 -143
  504. package/dist/arena/strategies/index.d.ts +0 -15
  505. package/dist/arena/strategies/index.js +0 -28
  506. package/dist/arena/strategies/language-wrapper.d.ts +0 -17
  507. package/dist/arena/strategies/language-wrapper.js +0 -102
  508. package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
  509. package/dist/arena/strategies/lens-wrapper.js +0 -236
  510. package/dist/arena/strategies/planning.d.ts +0 -30
  511. package/dist/arena/strategies/planning.js +0 -225
  512. package/dist/arena/strategies/review.d.ts +0 -26
  513. package/dist/arena/strategies/review.js +0 -168
  514. package/dist/arena/strategies/utils.d.ts +0 -36
  515. package/dist/arena/strategies/utils.js +0 -603
  516. package/dist/arena/tools/selector.d.ts +0 -17
  517. package/dist/arena/tools/selector.js +0 -61
  518. package/dist/arena/transitions.d.ts +0 -53
  519. package/dist/arena/transitions.js +0 -97
  520. package/dist/arena/types.d.ts +0 -514
  521. package/dist/arena/types.js +0 -27
  522. package/dist/cc-orchestrator/agent-adapter.d.ts +0 -54
  523. package/dist/cc-orchestrator/agent-adapter.js +0 -143
  524. package/dist/cc-orchestrator/cc-capability.d.ts +0 -19
  525. package/dist/cc-orchestrator/cc-capability.js +0 -53
  526. package/dist/cc-orchestrator/codex-session-discovery.d.ts +0 -24
  527. package/dist/cc-orchestrator/codex-session-discovery.js +0 -191
  528. package/dist/cc-orchestrator/codex-session-history.d.ts +0 -38
  529. package/dist/cc-orchestrator/codex-session-history.js +0 -247
  530. package/dist/cc-orchestrator/external-agent-bindings.d.ts +0 -27
  531. package/dist/cc-orchestrator/external-agent-bindings.js +0 -150
  532. package/dist/cc-orchestrator/external-agent-changes.d.ts +0 -19
  533. package/dist/cc-orchestrator/external-agent-changes.js +0 -231
  534. package/dist/cc-orchestrator/external-agent-driver.d.ts +0 -19
  535. package/dist/cc-orchestrator/external-agent-driver.js +0 -284
  536. package/dist/cc-orchestrator/external-agent-session-store.d.ts +0 -23
  537. package/dist/cc-orchestrator/external-agent-session-store.js +0 -146
  538. package/dist/cc-orchestrator/index.d.ts +0 -8
  539. package/dist/cc-orchestrator/index.js +0 -8
  540. package/dist/cc-orchestrator/relevance-judge.d.ts +0 -15
  541. package/dist/cc-orchestrator/relevance-judge.js +0 -29
  542. package/dist/cc-orchestrator/session-discovery.d.ts +0 -46
  543. package/dist/cc-orchestrator/session-discovery.js +0 -125
  544. package/dist/cc-orchestrator/session-history.d.ts +0 -54
  545. package/dist/cc-orchestrator/session-history.js +0 -150
  546. package/dist/cron/cron-runtime.d.ts +0 -2
  547. package/dist/cron/cron-runtime.js +0 -2
  548. package/dist/cron/cron-store.d.ts +0 -2
  549. package/dist/cron/cron-store.js +0 -2
  550. package/dist/cron/scheduler.d.ts +0 -7
  551. package/dist/cron/scheduler.js +0 -7
  552. package/dist/engine/goal.js +0 -206
  553. package/dist/external-agents/config.d.ts +0 -2
  554. package/dist/external-agents/config.js +0 -15
  555. package/dist/external-agents/types.d.ts +0 -31
  556. package/dist/git/parse-log.d.ts +0 -13
  557. package/dist/git/parse-log.js +0 -21
  558. package/dist/git/utils.d.ts +0 -49
  559. package/dist/git/utils.js +0 -161
  560. package/dist/git/worktree/crud.d.ts +0 -69
  561. package/dist/git/worktree/crud.js +0 -206
  562. package/dist/git/worktree/diff.d.ts +0 -14
  563. package/dist/git/worktree/diff.js +0 -82
  564. package/dist/git/worktree/git-exec.d.ts +0 -7
  565. package/dist/git/worktree/git-exec.js +0 -51
  566. package/dist/git/worktree/index.d.ts +0 -5
  567. package/dist/git/worktree/index.js +0 -5
  568. package/dist/git/worktree/query.d.ts +0 -42
  569. package/dist/git/worktree/query.js +0 -121
  570. package/dist/git/worktree/slug.d.ts +0 -11
  571. package/dist/git/worktree/slug.js +0 -58
  572. package/dist/git/worktree.d.ts +0 -1
  573. package/dist/git/worktree.js +0 -5
  574. package/dist/lsp/client.d.ts +0 -41
  575. package/dist/lsp/client.js +0 -186
  576. package/dist/lsp/manager.d.ts +0 -40
  577. package/dist/lsp/manager.js +0 -155
  578. package/dist/lsp/root-path.d.ts +0 -9
  579. package/dist/lsp/root-path.js +0 -12
  580. package/dist/lsp/servers.d.ts +0 -16
  581. package/dist/lsp/servers.js +0 -60
  582. package/dist/prompt/sections/coding.md +0 -35
  583. package/dist/quota/credentials.d.ts +0 -3
  584. package/dist/quota/credentials.js +0 -80
  585. package/dist/quota/index.d.ts +0 -36
  586. package/dist/quota/index.js +0 -155
  587. package/dist/quota/types.d.ts +0 -48
  588. package/dist/quota/types.js +0 -13
  589. package/dist/review/review-prompt.d.ts +0 -28
  590. package/dist/review/review-prompt.js +0 -81
  591. package/dist/state.d.ts +0 -160
  592. package/dist/state.js +0 -267
  593. package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
  594. package/dist/tool-system/builtin/apply-patch/applier.js +0 -308
  595. package/dist/tool-system/builtin/apply-patch/backup-targets.d.ts +0 -10
  596. package/dist/tool-system/builtin/apply-patch/backup-targets.js +0 -30
  597. package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -20
  598. package/dist/tool-system/builtin/apply-patch/index.js +0 -105
  599. package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
  600. package/dist/tool-system/builtin/apply-patch/parser.js +0 -212
  601. package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
  602. package/dist/tool-system/builtin/apply-patch/seek-sequence.js +0 -123
  603. package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
  604. package/dist/tool-system/builtin/apply-patch/types.js +0 -13
  605. package/dist/tool-system/builtin/arena.d.ts +0 -31
  606. package/dist/tool-system/builtin/arena.js +0 -415
  607. package/dist/tool-system/builtin/brief.d.ts +0 -6
  608. package/dist/tool-system/builtin/brief.js +0 -41
  609. package/dist/tool-system/builtin/check-quota.d.ts +0 -15
  610. package/dist/tool-system/builtin/check-quota.js +0 -34
  611. package/dist/tool-system/builtin/drive-claude-code.d.ts +0 -51
  612. package/dist/tool-system/builtin/drive-claude-code.js +0 -698
  613. package/dist/tool-system/builtin/lsp.d.ts +0 -7
  614. package/dist/tool-system/builtin/lsp.js +0 -144
  615. package/dist/tool-system/builtin/notebook-edit.d.ts +0 -7
  616. package/dist/tool-system/builtin/notebook-edit.js +0 -127
  617. package/dist/tool-system/builtin/worktree.d.ts +0 -11
  618. package/dist/tool-system/builtin/worktree.js +0 -345
  619. /package/dist/{external-agents → links}/types.js +0 -0
  620. /package/dist/{engine/session-usage.d.ts → session/usage.d.ts} +0 -0
  621. /package/dist/{engine/session-usage.js → session/usage.js} +0 -0
@@ -1,9 +1,11 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync, renameSync } from "node:fs";
2
2
  import { join, dirname } from "node:path";
3
3
  import { homedir } from "node:os";
4
+ import { credentialAllowsEnvExposure, credentialSecretHint, } from "./types.js";
4
5
  import { getDefaultCredentialCipher } from "./cipher.js";
5
6
  import { logger } from "../logging/logger.js";
6
7
  import { summarizeOAuthCredentialSecret } from "./oauth.js";
8
+ import { isBrowserOAuthLinkCredential } from "./oauth.js";
7
9
  /** 测试可经 process.env.HOME 覆盖(镜像 settings/manager.ts userHome)。 */
8
10
  function userHome() {
9
11
  return process.env.HOME ?? homedir();
@@ -15,6 +17,7 @@ const EMPTY = { version: 1, credentials: [] };
15
17
  */
16
18
  export class CredentialStore {
17
19
  cwd;
20
+ userDirOverride;
18
21
  cipher;
19
22
  /**
20
23
  * @param cwd project root for the project-scope store (undefined → user only).
@@ -24,13 +27,22 @@ export class CredentialStore {
24
27
  * returns PLAINTEXT secrets; encryption is applied only at the
25
28
  * disk boundary (read decrypts, write encrypts).
26
29
  */
27
- constructor(cwd, cipher) {
30
+ constructor(cwd, cipher,
31
+ /**
32
+ * Override the user-scope store directory (the `~/.code-shell` layer;
33
+ * `credentials.json` lives directly inside it). Absent → today's
34
+ * behavior: `join(userHome(), ".code-shell")` resolved per call.
35
+ * Injection point for identity-scoped server deployments.
36
+ */
37
+ userDirOverride) {
28
38
  this.cwd = cwd;
39
+ this.userDirOverride = userDirOverride;
29
40
  this.cipher = cipher ?? getDefaultCredentialCipher();
30
41
  }
31
42
  pathFor(scope) {
32
- if (scope === "user")
33
- return join(userHome(), ".code-shell", "credentials.json");
43
+ if (scope === "user") {
44
+ return join(this.userDirOverride ?? join(userHome(), ".code-shell"), "credentials.json");
45
+ }
34
46
  if (!this.cwd)
35
47
  return undefined;
36
48
  return join(this.cwd, ".code-shell", "credentials.json");
@@ -93,11 +105,14 @@ export class CredentialStore {
93
105
  /** Upsert by id within a scope. */
94
106
  save(scope, cred) {
95
107
  const file = this.read(scope);
108
+ const safeCredential = credentialAllowsEnvExposure(cred.type)
109
+ ? cred
110
+ : { ...cred, exposeAsEnv: undefined };
96
111
  const idx = file.credentials.findIndex((c) => c.id === cred.id);
97
112
  if (idx >= 0)
98
- file.credentials[idx] = cred;
113
+ file.credentials[idx] = safeCredential;
99
114
  else
100
- file.credentials.push(cred);
115
+ file.credentials.push(safeCredential);
101
116
  this.write(scope, file);
102
117
  }
103
118
  /**
@@ -110,7 +125,12 @@ export class CredentialStore {
110
125
  const idx = file.credentials.findIndex((c) => c.id === id);
111
126
  if (idx < 0)
112
127
  return;
113
- file.credentials[idx] = { ...file.credentials[idx], ...fields };
128
+ const current = file.credentials[idx];
129
+ file.credentials[idx] = {
130
+ ...current,
131
+ ...fields,
132
+ ...(credentialAllowsEnvExposure(current.type) ? {} : { exposeAsEnv: undefined }),
133
+ };
114
134
  this.write(scope, file);
115
135
  }
116
136
  remove(scope, id) {
@@ -161,6 +181,8 @@ export class CredentialStore {
161
181
  : [this.read("user").credentials, this.read("project").credentials];
162
182
  for (const layer of layers) {
163
183
  for (const c of layer) {
184
+ if (!credentialAllowsEnvExposure(c.type))
185
+ continue;
164
186
  const name = c.exposeAsEnv?.trim();
165
187
  if (name && typeof c.secret === "string" && c.secret.length > 0) {
166
188
  out[name] = c.secret;
@@ -174,12 +196,12 @@ export class CredentialStore {
174
196
  const { secret, ...rest } = c;
175
197
  return {
176
198
  ...rest,
199
+ ...(credentialAllowsEnvExposure(c.type) ? {} : { exposeAsEnv: undefined }),
177
200
  hasSecret: typeof secret === "string" && secret.length > 0,
178
- // Reveal at most the last 4 chars — and ONLY when the secret is longer
179
- // than 4, so those chars aren't the whole secret. `"ab".slice(-4)` is
180
- // "ab", so a short secret would otherwise leak in full through the hint.
181
- secretHint: secret ? (secret.length > 4 ? `****${secret.slice(-4)}` : "****") : undefined,
182
- ...(c.type === "oauth" ? { oauthStatus: summarizeOAuthCredentialSecret(secret) } : {}),
201
+ secretHint: credentialSecretHint(c.type, secret),
202
+ ...(c.type === "oauth" || isBrowserOAuthLinkCredential(c)
203
+ ? { oauthStatus: summarizeOAuthCredentialSecret(secret) }
204
+ : {}),
183
205
  };
184
206
  });
185
207
  }
@@ -4,6 +4,14 @@
4
4
  * (用户主动按域拓取存,支持同域多账号),见 credential-use-gate 设计稿。
5
5
  */
6
6
  export type CredentialType = "token" | "link" | "cookie" | "oauth";
7
+ /**
8
+ * Only established single-value credentials may be copied into a process
9
+ * environment. OAuth records and cookie jars are structured multi-secret
10
+ * values and must remain behind the credential resolver boundary.
11
+ */
12
+ export declare function credentialAllowsEnvExposure(type: CredentialType): boolean;
13
+ /** Build a renderer-safe hint without deriving bytes from structured JSON. */
14
+ export declare function credentialSecretHint(type: CredentialType, secret: string | undefined): string | undefined;
7
15
  export interface OAuthCredentialSecret {
8
16
  /** Schema version for the JSON stored in Credential.secret. */
9
17
  version?: 1;
@@ -13,6 +21,8 @@ export interface OAuthCredentialSecret {
13
21
  refreshToken?: string;
14
22
  /** ISO-8601 expiry time for accessToken. Missing means "unknown", not expired. */
15
23
  expiresAt?: string;
24
+ /** Optional ISO-8601 expiry time for a rotating refresh token. */
25
+ refreshTokenExpiresAt?: string;
16
26
  /** Upstream token type, usually Bearer. Stored for round-trip/debugging. */
17
27
  tokenType?: string;
18
28
  /** Space-delimited OAuth scope string returned by many token endpoints. */
@@ -25,6 +35,26 @@ export interface OAuthCredentialSecret {
25
35
  clientId?: string;
26
36
  /** Optional confidential client secret, if the integration requires it. */
27
37
  clientSecret?: string;
38
+ /** OAuth issuer discovered for the MCP protected resource. */
39
+ issuer?: string;
40
+ /** RFC 8707 resource indicator used for authorization/token requests. */
41
+ resource?: string;
42
+ /** Optional endpoint used to revoke the refresh/access token on logout. */
43
+ revocationEndpoint?: string;
44
+ /** Dynamic registration result, retained with the encrypted secret. */
45
+ clientRegistration?: {
46
+ clientId: string;
47
+ clientSecret?: string;
48
+ clientIdIssuedAt?: number;
49
+ clientSecretExpiresAt?: number;
50
+ };
51
+ }
52
+ export interface OAuthTokenResponse {
53
+ access_token: unknown;
54
+ refresh_token?: unknown;
55
+ expires_in?: unknown;
56
+ token_type?: unknown;
57
+ scope?: unknown;
28
58
  }
29
59
  export interface OAuthCredentialPublicStatus {
30
60
  state: "valid" | "expired" | "missing" | "invalid";
@@ -82,8 +112,35 @@ export interface Credential {
82
112
  domain?: string;
83
113
  scope?: "domain" | "all";
84
114
  switchMode?: "clear" | "merge";
115
+ /** Link provider id for credentials owned by a local/server app connection. */
116
+ linkProvider?: string;
117
+ /** Provider-specific connection method, e.g. fine-grained-pat or github-app. */
118
+ linkConnectionMethod?: string;
119
+ /** Where Link actions execute. Local is preferred when both runtimes are usable. */
120
+ linkExecutionRuntime?: "local" | "server";
121
+ /** How a local Link credential was obtained without exposing its secret to the renderer. */
122
+ linkAuthSource?: "manual-token" | "github-cli" | "cli-session" | "browser-oauth";
123
+ /** Fixed execution adapter. CLI bindings never resolve or copy a provider token. */
124
+ linkExecutionBackend?: "http-token" | "cli";
125
+ /** False for provider-owned Link secrets that must only flow through LinkAction. */
126
+ agentExposable?: boolean;
127
+ /** Stable upstream account/user id returned by the provider validation endpoint. */
128
+ linkAccountId?: string;
129
+ /** Human-readable upstream account label shown in the Link page. */
130
+ linkAccountLabel?: string;
131
+ /** Safe resource labels returned during validation for a compact Link card preview. */
132
+ linkResourceLabels?: string[];
133
+ /** Provider Action ids enabled for this connection. */
134
+ linkCapabilityIds?: string[];
135
+ /** ISO timestamp of the last successful live provider validation. */
136
+ linkLastVerifiedAt?: string;
85
137
  /** OAuth provider/integration id, e.g. "figma". */
86
138
  oauthProvider?: string;
139
+ /** MCP server identity associated with an advanced OAuth login. */
140
+ mcpServerName?: string;
141
+ mcpServerUrl?: string;
142
+ issuer?: string;
143
+ resource?: string;
87
144
  /** OAuth authorization endpoint, used by UI/login launchers. */
88
145
  authUrl?: string;
89
146
  /** OAuth token endpoint, duplicated from secret for non-secret UI display. */
@@ -92,8 +149,12 @@ export interface Credential {
92
149
  clientId?: string;
93
150
  /** OAuth scopes requested for this credential. */
94
151
  scopes?: string[];
95
- /** Last successful refresh time; refresh wiring is reserved for a later step. */
152
+ revocationEndpoint?: string;
153
+ /** Last successful refresh time. */
96
154
  lastRefreshAt?: string;
155
+ /** Normalized refresh diagnostics; never contains endpoint response bodies. */
156
+ lastRefreshFailedAt?: string;
157
+ lastRefreshErrorCode?: "invalid_grant" | "network" | "server_error" | "invalid_response";
97
158
  };
98
159
  }
99
160
  export interface CredentialStoreFile {
@@ -1 +1,16 @@
1
- export {};
1
+ /**
2
+ * Only established single-value credentials may be copied into a process
3
+ * environment. OAuth records and cookie jars are structured multi-secret
4
+ * values and must remain behind the credential resolver boundary.
5
+ */
6
+ export function credentialAllowsEnvExposure(type) {
7
+ return type === "token" || type === "link";
8
+ }
9
+ /** Build a renderer-safe hint without deriving bytes from structured JSON. */
10
+ export function credentialSecretHint(type, secret) {
11
+ if (!secret)
12
+ return undefined;
13
+ if (type === "oauth" || type === "cookie")
14
+ return "****";
15
+ return secret.length > 4 ? `****${secret.slice(-4)}` : "****";
16
+ }
@@ -24,6 +24,13 @@ const BASE_DESCRIPTION = "Use a stored credential (token / API key / login cooki
24
24
  "value; cookie credentials are materialized to a temporary Netscape cookies.txt file " +
25
25
  "(use it as `yt-dlp --cookies <cookiesFile>` / `curl -b <cookiesFile>`). " +
26
26
  "Each use is gated by a quick user approval unless auto-approve is on.";
27
+ function isAgentExposableCredential(credential) {
28
+ if (credential.meta?.agentExposable === false)
29
+ return false;
30
+ return !(credential.type === "link" &&
31
+ credential.meta?.linkExecutionRuntime === "local" &&
32
+ credential.meta.linkProvider);
33
+ }
27
34
  export const useCredentialToolDef = {
28
35
  name: TOOL_NAME,
29
36
  description: BASE_DESCRIPTION,
@@ -47,7 +54,7 @@ export const useCredentialToolDef = {
47
54
  */
48
55
  export function useCredentialToolDefFor(cwd) {
49
56
  try {
50
- const list = getCredentialAccess().listMasked(cwd, "full");
57
+ const list = getCredentialAccess().listMasked(cwd, "full").filter(isAgentExposableCredential);
51
58
  if (list.length === 0)
52
59
  return useCredentialToolDef;
53
60
  const names = list.map((c) => `${c.id} (${c.type})`).join(", ");
@@ -113,6 +120,7 @@ export async function useCredentialTool(args, ctx) {
113
120
  if (!id) {
114
121
  const credentials = access
115
122
  .listMasked(cwd, scope)
123
+ .filter(isAgentExposableCredential)
116
124
  .map((c) => ({ id: c.id, label: c.label, type: c.type }));
117
125
  return json({ kind: "list", credentials });
118
126
  }
@@ -120,6 +128,12 @@ export async function useCredentialTool(args, ctx) {
120
128
  if (!cred) {
121
129
  return json({ kind: "error", error: `凭证不存在: "${id}"。调用本工具(无参)可列出可用凭证。` });
122
130
  }
131
+ if (!isAgentExposableCredential(cred)) {
132
+ return json({
133
+ kind: "error",
134
+ error: `凭证「${cred.label}」只能通过 Link Action 使用,不能读取原始 Token。`,
135
+ });
136
+ }
123
137
  // 取值前过门
124
138
  const ask = ctx?.askUser
125
139
  ? (q, opts) => ctx.askUser(q, opts)
@@ -0,0 +1,40 @@
1
+ import type { LLMConfig, TokenUsage } from "../types.js";
2
+ import { createLLMClient } from "../llm/client-factory.js";
3
+ import type { ModelPool } from "../llm/model-pool.js";
4
+ import type { SettingsManager } from "../settings/manager.js";
5
+ import type { ToolRegistry } from "../tool-system/registry.js";
6
+ import type { ToolContext } from "../tool-system/context.js";
7
+ import type { Transcript } from "../session/transcript.js";
8
+ import type { CumulativeUsageCounters } from "../session/usage.js";
9
+ import type { EngineConfig } from "./types.js";
10
+ export type EngineLlmClient = Awaited<ReturnType<typeof createLLMClient>>;
11
+ export interface ResolvedAuxClient {
12
+ client: EngineLlmClient;
13
+ maxContextTokens: number;
14
+ }
15
+ export interface MemoriesConfig {
16
+ maxCount?: number;
17
+ maxAge?: number;
18
+ extractionModel?: string;
19
+ autoExtract?: boolean;
20
+ }
21
+ export declare function sameLlmIdentity(a: LLMConfig, b: LLMConfig): boolean;
22
+ export declare function buildSummarizeFn(client: EngineLlmClient, recordCumulativeUsage?: (usage: TokenUsage) => CumulativeUsageCounters): (prompt: string, signal?: AbortSignal) => Promise<string>;
23
+ export declare class AuxiliaryPipeline {
24
+ private readonly deps;
25
+ private auxClientCache?;
26
+ constructor(deps: {
27
+ config: () => EngineConfig;
28
+ settings: () => SettingsManager;
29
+ modelPool: () => ModelPool;
30
+ toolRegistry: () => ToolRegistry;
31
+ toolContext: () => ToolContext;
32
+ });
33
+ buildSummarizeFn(client: EngineLlmClient, recordCumulativeUsage?: (usage: TokenUsage) => CumulativeUsageCounters): (prompt: string, signal?: AbortSignal) => Promise<string>;
34
+ readMemoriesConfig(): MemoriesConfig | undefined;
35
+ resolveAuxClient(fallback: EngineLlmClient): Promise<EngineLlmClient>;
36
+ resolveAuxClientWithMetadata(fallback: EngineLlmClient, fallbackMaxContextTokens?: number): Promise<ResolvedAuxClient>;
37
+ runMemoryPipeline(transcript: Transcript, sessionId: string, cwd: string, primaryClient: EngineLlmClient, recordBilledUsage?: (usage: TokenUsage) => void): Promise<void>;
38
+ private runDreamLoop;
39
+ private resolveExtractionClient;
40
+ }
@@ -0,0 +1,181 @@
1
+ import { createLLMClient } from "../llm/client-factory.js";
2
+ import { logger } from "../logging/logger.js";
3
+ import { sanitizeContent } from "../logging/sanitize-messages.js";
4
+ import { MemoryOrchestrator } from "../services/memory-orchestrator.js";
5
+ import { runDreamConsolidation } from "../services/dream-consolidation.js";
6
+ import { resolveAuxKey } from "./aux-key.js";
7
+ export function sameLlmIdentity(a, b) {
8
+ return (a.model === b.model &&
9
+ (a.baseUrl ?? undefined) === (b.baseUrl ?? undefined) &&
10
+ (a.provider ?? undefined) === (b.provider ?? undefined) &&
11
+ (a.providerKind ?? undefined) === (b.providerKind ?? undefined) &&
12
+ (a.maxTokens ?? undefined) === (b.maxTokens ?? undefined) &&
13
+ JSON.stringify(a.reasoning ?? null) === JSON.stringify(b.reasoning ?? null));
14
+ }
15
+ export function buildSummarizeFn(client, recordCumulativeUsage) {
16
+ return async (prompt, signal) => {
17
+ const response = await client.createMessage({
18
+ systemPrompt: "You are a conversation summarizer. Be concise and factual.",
19
+ messages: [{ role: "user", content: prompt }],
20
+ tools: [],
21
+ maxTokens: 1024,
22
+ billingEnabled: true,
23
+ requestVisible: false,
24
+ reasoning: { mode: "off" },
25
+ signal,
26
+ });
27
+ if (response.usage)
28
+ recordCumulativeUsage?.(response.usage);
29
+ return response.text;
30
+ };
31
+ }
32
+ export class AuxiliaryPipeline {
33
+ deps;
34
+ auxClientCache;
35
+ constructor(deps) {
36
+ this.deps = deps;
37
+ }
38
+ buildSummarizeFn(client, recordCumulativeUsage) {
39
+ return buildSummarizeFn(client, recordCumulativeUsage);
40
+ }
41
+ readMemoriesConfig() {
42
+ try {
43
+ return this.deps.settings().get().memories;
44
+ }
45
+ catch {
46
+ return undefined;
47
+ }
48
+ }
49
+ async resolveAuxClient(fallback) {
50
+ return (await this.resolveAuxClientWithMetadata(fallback)).client;
51
+ }
52
+ async resolveAuxClientWithMetadata(fallback, fallbackMaxContextTokens = 200_000) {
53
+ let auxKey;
54
+ try {
55
+ const settings = this.deps.settings();
56
+ settings.invalidate();
57
+ auxKey = resolveAuxKey(settings.get());
58
+ }
59
+ catch {
60
+ return { client: fallback, maxContextTokens: fallbackMaxContextTokens };
61
+ }
62
+ if (!auxKey)
63
+ return { client: fallback, maxContextTokens: fallbackMaxContextTokens };
64
+ const modelPool = this.deps.modelPool();
65
+ const entry = modelPool.get(auxKey);
66
+ if (entry && sameLlmIdentity(modelPool.toLLMConfig(entry), this.deps.config().llm)) {
67
+ return {
68
+ client: fallback,
69
+ maxContextTokens: entry.maxContextTokens ?? fallbackMaxContextTokens,
70
+ };
71
+ }
72
+ if (this.auxClientCache?.key === auxKey) {
73
+ return {
74
+ client: this.auxClientCache.client,
75
+ maxContextTokens: entry?.maxContextTokens ?? fallbackMaxContextTokens,
76
+ };
77
+ }
78
+ if (!entry) {
79
+ logger.warn("engine.aux_model_missing", { auxModelKey: auxKey });
80
+ return { client: fallback, maxContextTokens: fallbackMaxContextTokens };
81
+ }
82
+ try {
83
+ const client = await createLLMClient(modelPool.toLLMConfig(entry), this.deps.config().clientDefaults);
84
+ this.auxClientCache = { key: auxKey, client };
85
+ return {
86
+ client,
87
+ maxContextTokens: entry.maxContextTokens ?? fallbackMaxContextTokens,
88
+ };
89
+ }
90
+ catch (error) {
91
+ logger.warn("engine.aux_model_build_failed", {
92
+ auxModelKey: auxKey,
93
+ error: error.message,
94
+ });
95
+ return { client: fallback, maxContextTokens: fallbackMaxContextTokens };
96
+ }
97
+ }
98
+ async runMemoryPipeline(transcript, sessionId, cwd, primaryClient, recordBilledUsage) {
99
+ try {
100
+ const llmClient = await this.resolveExtractionClient(primaryClient);
101
+ const messages = transcript
102
+ .toMessages()
103
+ .filter((message) => message.role === "user" || message.role === "assistant");
104
+ if (messages.length < 8)
105
+ return;
106
+ const plainMessages = messages.map((message) => {
107
+ const safe = sanitizeContent(message.content);
108
+ return {
109
+ role: message.role,
110
+ content: typeof safe === "string" ? safe : JSON.stringify(safe),
111
+ };
112
+ });
113
+ const memories = this.readMemoriesConfig();
114
+ const orchestrator = new MemoryOrchestrator({
115
+ callLLM: async (systemPrompt, userMessage) => {
116
+ const response = await llmClient.createMessage({
117
+ systemPrompt,
118
+ messages: [{ role: "user", content: userMessage }],
119
+ tools: [],
120
+ maxTokens: 1024,
121
+ billingEnabled: true,
122
+ requestVisible: false,
123
+ reasoning: { mode: "off" },
124
+ });
125
+ if (response.usage)
126
+ recordBilledUsage?.(response.usage);
127
+ return response.text;
128
+ },
129
+ runDream: async ({ projectDir }) => this.runDreamLoop({
130
+ projectDir,
131
+ llmClient,
132
+ sessionId,
133
+ recordBilledUsage,
134
+ }),
135
+ projectDir: cwd,
136
+ maxCount: memories?.maxCount,
137
+ autoExtract: memories?.autoExtract,
138
+ });
139
+ await orchestrator.run(plainMessages, sessionId);
140
+ }
141
+ catch (error) {
142
+ logger.warn("engine.memory_pipeline_failed", {
143
+ sessionId,
144
+ error: error.message,
145
+ });
146
+ }
147
+ }
148
+ async runDreamLoop(options) {
149
+ const { ran } = await runDreamConsolidation({
150
+ llmClient: options.llmClient,
151
+ toolRegistry: this.deps.toolRegistry(),
152
+ toolContext: this.deps.toolContext(),
153
+ projectDir: options.projectDir,
154
+ sessionId: options.sessionId,
155
+ onUsage: options.recordBilledUsage,
156
+ });
157
+ return ran;
158
+ }
159
+ async resolveExtractionClient(primaryClient) {
160
+ const key = this.readMemoriesConfig()?.extractionModel;
161
+ const modelPool = this.deps.modelPool();
162
+ if (key) {
163
+ const entry = modelPool.get(key);
164
+ if (entry) {
165
+ try {
166
+ return await createLLMClient(modelPool.toLLMConfig(entry), this.deps.config().clientDefaults);
167
+ }
168
+ catch (error) {
169
+ logger.warn("engine.extraction_model_build_failed", {
170
+ extractionModel: key,
171
+ error: error.message,
172
+ });
173
+ }
174
+ }
175
+ else {
176
+ logger.warn("engine.extraction_model_missing", { extractionModel: key });
177
+ }
178
+ }
179
+ return this.resolveAuxClient(primaryClient);
180
+ }
181
+ }
@@ -1,5 +1,5 @@
1
- import type { ValidatedSettings } from "./schema.js";
2
- import type { EngineConfig } from "../engine/types.js";
1
+ import type { ValidatedSettings } from "../settings/schema.js";
2
+ import type { EngineConfig } from "./types.js";
3
3
  /**
4
4
  * The subset of EngineConfig the config hot-reload ("layer 2") pushes onto an
5
5
  * already-running session's `this.config`. These are the "disk-default" fields:
@@ -1,4 +1,4 @@
1
- import { personalizationFrom } from "./personalization.js";
1
+ import { personalizationFrom } from "../settings/personalization.js";
2
2
  import { mergePluginMcpServers } from "../plugins/installer/loadPluginMcp.js";
3
3
  /**
4
4
  * Derive the disk-default config patch from freshly-read settings.
@@ -19,7 +19,10 @@ export function diskDefaultsFrom(settings,
19
19
  effectiveDisabledPlugins) {
20
20
  const agent = settings.agent ?? {};
21
21
  return {
22
- preset: agent.preset,
22
+ // preset 优先级:用户显式 agent.preset > 激活数字人的 profile.preset >
23
+ // capability 默认(resolveAgentPreset 内)。settings 已含合并后的
24
+ // project 层,profile 子树随之而来。
25
+ preset: agent.preset ?? settings.profile?.preset,
23
26
  customSystemPrompt: agent.customSystemPrompt,
24
27
  appendSystemPrompt: agent.appendSystemPrompt,
25
28
  ...personalizationFrom(agent),
@@ -15,5 +15,9 @@ import type { AgentDefinitionRegistry } from "../agent/agent-definition-registry
15
15
  *
16
16
  * Non-matching tools are returned by identity (no allocation). Pure: it never
17
17
  * mutates the input or any shared const.
18
+ *
19
+ * Run-scoped rewrites (e.g. DelegateWork's closed workspace enum) do NOT live
20
+ * here — a builtin owns those via its exposure.rewriteDefinition hook, applied
21
+ * by Engine.run() before this function.
18
22
  */
19
23
  export declare function applyDynamicToolDef(t: ToolDefinition, agentDefinitions: AgentDefinitionRegistry | undefined, guardCwd: string): ToolDefinition;
@@ -17,6 +17,10 @@ import { useCredentialToolDefFor } from "../credentials/use-credential-tool.js";
17
17
  *
18
18
  * Non-matching tools are returned by identity (no allocation). Pure: it never
19
19
  * mutates the input or any shared const.
20
+ *
21
+ * Run-scoped rewrites (e.g. DelegateWork's closed workspace enum) do NOT live
22
+ * here — a builtin owns those via its exposure.rewriteDefinition hook, applied
23
+ * by Engine.run() before this function.
20
24
  */
21
25
  export function applyDynamicToolDef(t, agentDefinitions, guardCwd) {
22
26
  if (t.name === "Agent") {