@ai-agent-forge/agent-forge 0.85.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 (1654) hide show
  1. package/CHANGELOG.md +5969 -0
  2. package/README.md +629 -0
  3. package/dist/artifacts/artifact-store.d.ts +51 -0
  4. package/dist/artifacts/artifact-store.d.ts.map +1 -0
  5. package/dist/artifacts/artifact-store.js +87 -0
  6. package/dist/artifacts/artifact-store.js.map +1 -0
  7. package/dist/artifacts/paged-read.d.ts +51 -0
  8. package/dist/artifacts/paged-read.d.ts.map +1 -0
  9. package/dist/artifacts/paged-read.js +55 -0
  10. package/dist/artifacts/paged-read.js.map +1 -0
  11. package/dist/bun/cli.d.ts +3 -0
  12. package/dist/bun/cli.d.ts.map +1 -0
  13. package/dist/bun/cli.js +11 -0
  14. package/dist/bun/cli.js.map +1 -0
  15. package/dist/bun/register-bedrock.d.ts +2 -0
  16. package/dist/bun/register-bedrock.d.ts.map +1 -0
  17. package/dist/bun/register-bedrock.js +4 -0
  18. package/dist/bun/register-bedrock.js.map +1 -0
  19. package/dist/bun/restore-sandbox-env.d.ts +17 -0
  20. package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
  21. package/dist/bun/restore-sandbox-env.js +36 -0
  22. package/dist/bun/restore-sandbox-env.js.map +1 -0
  23. package/dist/bundle/.build-manifest.json +3566 -0
  24. package/dist/bundle/chunks/anthropic-messages-RJYU4TCY.js +6 -0
  25. package/dist/bundle/chunks/anthropic.js +75 -0
  26. package/dist/bundle/chunks/azure-openai-responses-LESTCUL7.js +2 -0
  27. package/dist/bundle/chunks/bedrock-converse-stream.js +78 -0
  28. package/dist/bundle/chunks/chunk-3QKHSPQL.js +8 -0
  29. package/dist/bundle/chunks/chunk-4L3WN2XY.js +2 -0
  30. package/dist/bundle/chunks/chunk-4NKZMFSZ.js +1579 -0
  31. package/dist/bundle/chunks/chunk-6CYCI3EJ.js +12 -0
  32. package/dist/bundle/chunks/chunk-6R7UI4IY.js +2 -0
  33. package/dist/bundle/chunks/chunk-7ZC4UXSL.js +2 -0
  34. package/dist/bundle/chunks/chunk-7ZY7IXZD.js +4 -0
  35. package/dist/bundle/chunks/chunk-DRQDKNXA.js +2 -0
  36. package/dist/bundle/chunks/chunk-DTD7JQ7Y.js +42 -0
  37. package/dist/bundle/chunks/chunk-EWXX34QG.js +2 -0
  38. package/dist/bundle/chunks/chunk-GMWCTUPB.js +2 -0
  39. package/dist/bundle/chunks/chunk-JUUC5AZY.js +2 -0
  40. package/dist/bundle/chunks/chunk-KQEGUM34.js +2 -0
  41. package/dist/bundle/chunks/chunk-L2ZPNLYD.js +2 -0
  42. package/dist/bundle/chunks/chunk-MDOTREMR.js +11 -0
  43. package/dist/bundle/chunks/chunk-NUHFSC37.js +25 -0
  44. package/dist/bundle/chunks/chunk-PGXDEOVV.js +2 -0
  45. package/dist/bundle/chunks/chunk-PJACZCIR.js +2 -0
  46. package/dist/bundle/chunks/chunk-PRRNXB7S.js +2 -0
  47. package/dist/bundle/chunks/chunk-SER2HCLE.js +38 -0
  48. package/dist/bundle/chunks/chunk-TEPMHNKQ.js +2 -0
  49. package/dist/bundle/chunks/chunk-V46XUTK3.js +2 -0
  50. package/dist/bundle/chunks/chunk-WGLBM2BP.js +2 -0
  51. package/dist/bundle/chunks/chunk-WW3LMV3F.js +2 -0
  52. package/dist/bundle/chunks/chunk-XDUWOHPL.js +6 -0
  53. package/dist/bundle/chunks/github-copilot.js +2 -0
  54. package/dist/bundle/chunks/google-generative-ai-NZ66X6K7.js +2 -0
  55. package/dist/bundle/chunks/google-vertex-2ZZOFBNQ.js +2 -0
  56. package/dist/bundle/chunks/https-proxy-agent-UDEHOBGS.js +13 -0
  57. package/dist/bundle/chunks/image-resize-worker.js +2 -0
  58. package/dist/bundle/chunks/kimi-coding.js +2 -0
  59. package/dist/bundle/chunks/lib-HGQMNYVT.js +9 -0
  60. package/dist/bundle/chunks/mistral-conversations-B6DZRMEK.js +5 -0
  61. package/dist/bundle/chunks/multipart-parser-SQ6GDJL7.js +3 -0
  62. package/dist/bundle/chunks/node-O3RIBJRH.js +16 -0
  63. package/dist/bundle/chunks/node-TWVVAGPO.js +2 -0
  64. package/dist/bundle/chunks/openai-codex-responses-UFH6O5K6.js +10 -0
  65. package/dist/bundle/chunks/openai-codex.js +75 -0
  66. package/dist/bundle/chunks/openai-completions-A55GHA4O.js +7 -0
  67. package/dist/bundle/chunks/openai-responses-TJLXRAXR.js +2 -0
  68. package/dist/bundle/chunks/openrouter-images-G3GT5BVT.js +2 -0
  69. package/dist/bundle/chunks/openrouter.js +75 -0
  70. package/dist/bundle/chunks/pi-messages-SLF355GF.js +8 -0
  71. package/dist/bundle/chunks/radius.js +75 -0
  72. package/dist/bundle/chunks/src-UK77SYZE.js +4 -0
  73. package/dist/bundle/chunks/xai.js +2 -0
  74. package/dist/bundle/cli.js +3 -0
  75. package/dist/bundle/client.js +2 -0
  76. package/dist/bundle/index.js +8 -0
  77. package/dist/bundle/rpc-entry.js +3 -0
  78. package/dist/capabilities/builtin.d.ts +46 -0
  79. package/dist/capabilities/builtin.d.ts.map +1 -0
  80. package/dist/capabilities/builtin.js +68 -0
  81. package/dist/capabilities/builtin.js.map +1 -0
  82. package/dist/cli/args.d.ts +102 -0
  83. package/dist/cli/args.d.ts.map +1 -0
  84. package/dist/cli/args.js +712 -0
  85. package/dist/cli/args.js.map +1 -0
  86. package/dist/cli/auth-check.d.ts +19 -0
  87. package/dist/cli/auth-check.d.ts.map +1 -0
  88. package/dist/cli/auth-check.js +50 -0
  89. package/dist/cli/auth-check.js.map +1 -0
  90. package/dist/cli/auth-command.d.ts +24 -0
  91. package/dist/cli/auth-command.d.ts.map +1 -0
  92. package/dist/cli/auth-command.js +102 -0
  93. package/dist/cli/auth-command.js.map +1 -0
  94. package/dist/cli/config-selector.d.ts +23 -0
  95. package/dist/cli/config-selector.d.ts.map +1 -0
  96. package/dist/cli/config-selector.js +51 -0
  97. package/dist/cli/config-selector.js.map +1 -0
  98. package/dist/cli/credential-print.d.ts +13 -0
  99. package/dist/cli/credential-print.d.ts.map +1 -0
  100. package/dist/cli/credential-print.js +76 -0
  101. package/dist/cli/credential-print.js.map +1 -0
  102. package/dist/cli/experimental/auth.d.ts +16 -0
  103. package/dist/cli/experimental/auth.d.ts.map +1 -0
  104. package/dist/cli/experimental/auth.js +13 -0
  105. package/dist/cli/experimental/auth.js.map +1 -0
  106. package/dist/cli/experimental/cli.d.ts +6 -0
  107. package/dist/cli/experimental/cli.d.ts.map +1 -0
  108. package/dist/cli/experimental/cli.js +5 -0
  109. package/dist/cli/experimental/cli.js.map +1 -0
  110. package/dist/cli/experimental/command-options.d.ts +17 -0
  111. package/dist/cli/experimental/command-options.d.ts.map +1 -0
  112. package/dist/cli/experimental/command-options.js +35 -0
  113. package/dist/cli/experimental/command-options.js.map +1 -0
  114. package/dist/cli/experimental/command.d.ts +63 -0
  115. package/dist/cli/experimental/command.d.ts.map +1 -0
  116. package/dist/cli/experimental/command.js +130 -0
  117. package/dist/cli/experimental/command.js.map +1 -0
  118. package/dist/cli/experimental/commands/client.d.ts +13 -0
  119. package/dist/cli/experimental/commands/client.d.ts.map +1 -0
  120. package/dist/cli/experimental/commands/client.js +25 -0
  121. package/dist/cli/experimental/commands/client.js.map +1 -0
  122. package/dist/cli/experimental/commands/pi.d.ts +15 -0
  123. package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
  124. package/dist/cli/experimental/commands/pi.js +26 -0
  125. package/dist/cli/experimental/commands/pi.js.map +1 -0
  126. package/dist/cli/experimental/commands/server.d.ts +13 -0
  127. package/dist/cli/experimental/commands/server.d.ts.map +1 -0
  128. package/dist/cli/experimental/commands/server.js +25 -0
  129. package/dist/cli/experimental/commands/server.js.map +1 -0
  130. package/dist/cli/experimental/transport-address.d.ts +10 -0
  131. package/dist/cli/experimental/transport-address.d.ts.map +1 -0
  132. package/dist/cli/experimental/transport-address.js +38 -0
  133. package/dist/cli/experimental/transport-address.js.map +1 -0
  134. package/dist/cli/file-processor.d.ts +15 -0
  135. package/dist/cli/file-processor.d.ts.map +1 -0
  136. package/dist/cli/file-processor.js +71 -0
  137. package/dist/cli/file-processor.js.map +1 -0
  138. package/dist/cli/initial-message.d.ts +18 -0
  139. package/dist/cli/initial-message.d.ts.map +1 -0
  140. package/dist/cli/initial-message.js +22 -0
  141. package/dist/cli/initial-message.js.map +1 -0
  142. package/dist/cli/list-models.d.ts +9 -0
  143. package/dist/cli/list-models.d.ts.map +1 -0
  144. package/dist/cli/list-models.js +98 -0
  145. package/dist/cli/list-models.js.map +1 -0
  146. package/dist/cli/plugin-command.d.ts +50 -0
  147. package/dist/cli/plugin-command.d.ts.map +1 -0
  148. package/dist/cli/plugin-command.js +85 -0
  149. package/dist/cli/plugin-command.js.map +1 -0
  150. package/dist/cli/plugin-manager-controller.d.ts +59 -0
  151. package/dist/cli/plugin-manager-controller.d.ts.map +1 -0
  152. package/dist/cli/plugin-manager-controller.js +183 -0
  153. package/dist/cli/plugin-manager-controller.js.map +1 -0
  154. package/dist/cli/plugin-selection-controller.d.ts +57 -0
  155. package/dist/cli/plugin-selection-controller.d.ts.map +1 -0
  156. package/dist/cli/plugin-selection-controller.js +159 -0
  157. package/dist/cli/plugin-selection-controller.js.map +1 -0
  158. package/dist/cli/serve.d.ts +39 -0
  159. package/dist/cli/serve.d.ts.map +1 -0
  160. package/dist/cli/serve.js +124 -0
  161. package/dist/cli/serve.js.map +1 -0
  162. package/dist/cli/session-picker.d.ts +30 -0
  163. package/dist/cli/session-picker.d.ts.map +1 -0
  164. package/dist/cli/session-picker.js +62 -0
  165. package/dist/cli/session-picker.js.map +1 -0
  166. package/dist/cli/startup-ui.d.ts +20 -0
  167. package/dist/cli/startup-ui.d.ts.map +1 -0
  168. package/dist/cli/startup-ui.js +185 -0
  169. package/dist/cli/startup-ui.js.map +1 -0
  170. package/dist/cli/trace-view.d.ts +86 -0
  171. package/dist/cli/trace-view.d.ts.map +1 -0
  172. package/dist/cli/trace-view.js +263 -0
  173. package/dist/cli/trace-view.js.map +1 -0
  174. package/dist/cli.d.ts +3 -0
  175. package/dist/cli.d.ts.map +1 -0
  176. package/dist/cli.js +19 -0
  177. package/dist/cli.js.map +1 -0
  178. package/dist/client/index.d.ts +3 -0
  179. package/dist/client/index.d.ts.map +1 -0
  180. package/dist/client/index.js +3 -0
  181. package/dist/client/index.js.map +1 -0
  182. package/dist/client/remote-session.d.ts +53 -0
  183. package/dist/client/remote-session.d.ts.map +1 -0
  184. package/dist/client/remote-session.js +340 -0
  185. package/dist/client/remote-session.js.map +1 -0
  186. package/dist/client/transcript.d.ts +12 -0
  187. package/dist/client/transcript.d.ts.map +1 -0
  188. package/dist/client/transcript.js +98 -0
  189. package/dist/client/transcript.js.map +1 -0
  190. package/dist/config.d.ts +95 -0
  191. package/dist/config.d.ts.map +1 -0
  192. package/dist/config.js +459 -0
  193. package/dist/config.js.map +1 -0
  194. package/dist/core/agent-capability-contract.d.ts +322 -0
  195. package/dist/core/agent-capability-contract.d.ts.map +1 -0
  196. package/dist/core/agent-capability-contract.js +1154 -0
  197. package/dist/core/agent-capability-contract.js.map +1 -0
  198. package/dist/core/agent-session-bash.d.ts +51 -0
  199. package/dist/core/agent-session-bash.d.ts.map +1 -0
  200. package/dist/core/agent-session-bash.js +138 -0
  201. package/dist/core/agent-session-bash.js.map +1 -0
  202. package/dist/core/agent-session-compaction.d.ts +188 -0
  203. package/dist/core/agent-session-compaction.d.ts.map +1 -0
  204. package/dist/core/agent-session-compaction.js +1071 -0
  205. package/dist/core/agent-session-compaction.js.map +1 -0
  206. package/dist/core/agent-session-context.d.ts +43 -0
  207. package/dist/core/agent-session-context.d.ts.map +1 -0
  208. package/dist/core/agent-session-context.js +170 -0
  209. package/dist/core/agent-session-context.js.map +1 -0
  210. package/dist/core/agent-session-extensions.d.ts +30 -0
  211. package/dist/core/agent-session-extensions.d.ts.map +1 -0
  212. package/dist/core/agent-session-extensions.js +74 -0
  213. package/dist/core/agent-session-extensions.js.map +1 -0
  214. package/dist/core/agent-session-internal.d.ts +290 -0
  215. package/dist/core/agent-session-internal.d.ts.map +1 -0
  216. package/dist/core/agent-session-internal.js +40 -0
  217. package/dist/core/agent-session-internal.js.map +1 -0
  218. package/dist/core/agent-session-lifecycle.d.ts +242 -0
  219. package/dist/core/agent-session-lifecycle.d.ts.map +1 -0
  220. package/dist/core/agent-session-lifecycle.js +699 -0
  221. package/dist/core/agent-session-lifecycle.js.map +1 -0
  222. package/dist/core/agent-session-loop-runner.d.ts +52 -0
  223. package/dist/core/agent-session-loop-runner.d.ts.map +1 -0
  224. package/dist/core/agent-session-loop-runner.js +168 -0
  225. package/dist/core/agent-session-loop-runner.js.map +1 -0
  226. package/dist/core/agent-session-loop.d.ts +39 -0
  227. package/dist/core/agent-session-loop.d.ts.map +1 -0
  228. package/dist/core/agent-session-loop.js +155 -0
  229. package/dist/core/agent-session-loop.js.map +1 -0
  230. package/dist/core/agent-session-model.d.ts +49 -0
  231. package/dist/core/agent-session-model.d.ts.map +1 -0
  232. package/dist/core/agent-session-model.js +155 -0
  233. package/dist/core/agent-session-model.js.map +1 -0
  234. package/dist/core/agent-session-paths.d.ts +3 -0
  235. package/dist/core/agent-session-paths.d.ts.map +1 -0
  236. package/dist/core/agent-session-paths.js +14 -0
  237. package/dist/core/agent-session-paths.js.map +1 -0
  238. package/dist/core/agent-session-projection.d.ts +53 -0
  239. package/dist/core/agent-session-projection.d.ts.map +1 -0
  240. package/dist/core/agent-session-projection.js +195 -0
  241. package/dist/core/agent-session-projection.js.map +1 -0
  242. package/dist/core/agent-session-retry.d.ts +28 -0
  243. package/dist/core/agent-session-retry.d.ts.map +1 -0
  244. package/dist/core/agent-session-retry.js +141 -0
  245. package/dist/core/agent-session-retry.js.map +1 -0
  246. package/dist/core/agent-session-runtime.d.ts +181 -0
  247. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  248. package/dist/core/agent-session-runtime.js +297 -0
  249. package/dist/core/agent-session-runtime.js.map +1 -0
  250. package/dist/core/agent-session-services.d.ts +281 -0
  251. package/dist/core/agent-session-services.d.ts.map +1 -0
  252. package/dist/core/agent-session-services.js +680 -0
  253. package/dist/core/agent-session-services.js.map +1 -0
  254. package/dist/core/agent-session-store.d.ts +47 -0
  255. package/dist/core/agent-session-store.d.ts.map +1 -0
  256. package/dist/core/agent-session-store.js +155 -0
  257. package/dist/core/agent-session-store.js.map +1 -0
  258. package/dist/core/agent-session-tools.d.ts +36 -0
  259. package/dist/core/agent-session-tools.d.ts.map +1 -0
  260. package/dist/core/agent-session-tools.js +305 -0
  261. package/dist/core/agent-session-tools.js.map +1 -0
  262. package/dist/core/agent-session.d.ts +1156 -0
  263. package/dist/core/agent-session.d.ts.map +1 -0
  264. package/dist/core/agent-session.js +2550 -0
  265. package/dist/core/agent-session.js.map +1 -0
  266. package/dist/core/auth-guidance.d.ts +5 -0
  267. package/dist/core/auth-guidance.d.ts.map +1 -0
  268. package/dist/core/auth-guidance.js +21 -0
  269. package/dist/core/auth-guidance.js.map +1 -0
  270. package/dist/core/auth-storage.d.ts +72 -0
  271. package/dist/core/auth-storage.d.ts.map +1 -0
  272. package/dist/core/auth-storage.js +426 -0
  273. package/dist/core/auth-storage.js.map +1 -0
  274. package/dist/core/bash-executor.d.ts +32 -0
  275. package/dist/core/bash-executor.d.ts.map +1 -0
  276. package/dist/core/bash-executor.js +111 -0
  277. package/dist/core/bash-executor.js.map +1 -0
  278. package/dist/core/cache-stats.d.ts +49 -0
  279. package/dist/core/cache-stats.d.ts.map +1 -0
  280. package/dist/core/cache-stats.js +101 -0
  281. package/dist/core/cache-stats.js.map +1 -0
  282. package/dist/core/compaction/branch-summarization.d.ts +88 -0
  283. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  284. package/dist/core/compaction/branch-summarization.js +220 -0
  285. package/dist/core/compaction/branch-summarization.js.map +1 -0
  286. package/dist/core/compaction/compaction.d.ts +178 -0
  287. package/dist/core/compaction/compaction.d.ts.map +1 -0
  288. package/dist/core/compaction/compaction.js +608 -0
  289. package/dist/core/compaction/compaction.js.map +1 -0
  290. package/dist/core/compaction/index.d.ts +7 -0
  291. package/dist/core/compaction/index.d.ts.map +1 -0
  292. package/dist/core/compaction/index.js +7 -0
  293. package/dist/core/compaction/index.js.map +1 -0
  294. package/dist/core/compaction/utils.d.ts +49 -0
  295. package/dist/core/compaction/utils.d.ts.map +1 -0
  296. package/dist/core/compaction/utils.js +170 -0
  297. package/dist/core/compaction/utils.js.map +1 -0
  298. package/dist/core/defaults.d.ts +4 -0
  299. package/dist/core/defaults.d.ts.map +1 -0
  300. package/dist/core/defaults.js +11 -0
  301. package/dist/core/defaults.js.map +1 -0
  302. package/dist/core/diagnostics.d.ts +15 -0
  303. package/dist/core/diagnostics.d.ts.map +1 -0
  304. package/dist/core/diagnostics.js +2 -0
  305. package/dist/core/diagnostics.js.map +1 -0
  306. package/dist/core/embedded-sdk.d.ts +96 -0
  307. package/dist/core/embedded-sdk.d.ts.map +1 -0
  308. package/dist/core/embedded-sdk.js +395 -0
  309. package/dist/core/embedded-sdk.js.map +1 -0
  310. package/dist/core/event-bus.d.ts +9 -0
  311. package/dist/core/event-bus.d.ts.map +1 -0
  312. package/dist/core/event-bus.js +25 -0
  313. package/dist/core/event-bus.js.map +1 -0
  314. package/dist/core/exec.d.ts +29 -0
  315. package/dist/core/exec.d.ts.map +1 -0
  316. package/dist/core/exec.js +75 -0
  317. package/dist/core/exec.js.map +1 -0
  318. package/dist/core/experimental.d.ts +2 -0
  319. package/dist/core/experimental.d.ts.map +1 -0
  320. package/dist/core/experimental.js +6 -0
  321. package/dist/core/experimental.js.map +1 -0
  322. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  323. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  324. package/dist/core/export-html/ansi-to-html.js +249 -0
  325. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  326. package/dist/core/export-html/index.d.ts +37 -0
  327. package/dist/core/export-html/index.d.ts.map +1 -0
  328. package/dist/core/export-html/index.js +226 -0
  329. package/dist/core/export-html/index.js.map +1 -0
  330. package/dist/core/export-html/template.css +1066 -0
  331. package/dist/core/export-html/template.html +55 -0
  332. package/dist/core/export-html/template.js +1864 -0
  333. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  334. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  335. package/dist/core/export-html/tool-renderer.js +108 -0
  336. package/dist/core/export-html/tool-renderer.js.map +1 -0
  337. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  338. package/dist/core/export-html/vendor/marked.min.js +78 -0
  339. package/dist/core/extensions/agent-composition.d.ts +67 -0
  340. package/dist/core/extensions/agent-composition.d.ts.map +1 -0
  341. package/dist/core/extensions/agent-composition.js +785 -0
  342. package/dist/core/extensions/agent-composition.js.map +1 -0
  343. package/dist/core/extensions/bootstrap-agent-loop.d.ts +203 -0
  344. package/dist/core/extensions/bootstrap-agent-loop.d.ts.map +1 -0
  345. package/dist/core/extensions/bootstrap-agent-loop.js +565 -0
  346. package/dist/core/extensions/bootstrap-agent-loop.js.map +1 -0
  347. package/dist/core/extensions/bootstrap-branch-summary-policy.d.ts +7 -0
  348. package/dist/core/extensions/bootstrap-branch-summary-policy.d.ts.map +1 -0
  349. package/dist/core/extensions/bootstrap-branch-summary-policy.js +28 -0
  350. package/dist/core/extensions/bootstrap-branch-summary-policy.js.map +1 -0
  351. package/dist/core/extensions/bootstrap-compaction-policy.d.ts +7 -0
  352. package/dist/core/extensions/bootstrap-compaction-policy.d.ts.map +1 -0
  353. package/dist/core/extensions/bootstrap-compaction-policy.js +81 -0
  354. package/dist/core/extensions/bootstrap-compaction-policy.js.map +1 -0
  355. package/dist/core/extensions/bootstrap-lifecycle.d.ts +26 -0
  356. package/dist/core/extensions/bootstrap-lifecycle.d.ts.map +1 -0
  357. package/dist/core/extensions/bootstrap-lifecycle.js +181 -0
  358. package/dist/core/extensions/bootstrap-lifecycle.js.map +1 -0
  359. package/dist/core/extensions/bootstrap-overflow-policy.d.ts +7 -0
  360. package/dist/core/extensions/bootstrap-overflow-policy.d.ts.map +1 -0
  361. package/dist/core/extensions/bootstrap-overflow-policy.js +29 -0
  362. package/dist/core/extensions/bootstrap-overflow-policy.js.map +1 -0
  363. package/dist/core/extensions/bootstrap-retry-policy.d.ts +7 -0
  364. package/dist/core/extensions/bootstrap-retry-policy.d.ts.map +1 -0
  365. package/dist/core/extensions/bootstrap-retry-policy.js +28 -0
  366. package/dist/core/extensions/bootstrap-retry-policy.js.map +1 -0
  367. package/dist/core/extensions/bootstrap-skills.d.ts +16 -0
  368. package/dist/core/extensions/bootstrap-skills.d.ts.map +1 -0
  369. package/dist/core/extensions/bootstrap-skills.js +119 -0
  370. package/dist/core/extensions/bootstrap-skills.js.map +1 -0
  371. package/dist/core/extensions/bootstrap-tools.d.ts +20 -0
  372. package/dist/core/extensions/bootstrap-tools.d.ts.map +1 -0
  373. package/dist/core/extensions/bootstrap-tools.js +35 -0
  374. package/dist/core/extensions/bootstrap-tools.js.map +1 -0
  375. package/dist/core/extensions/capability-exports.d.ts +5 -0
  376. package/dist/core/extensions/capability-exports.d.ts.map +1 -0
  377. package/dist/core/extensions/capability-exports.js +4 -0
  378. package/dist/core/extensions/capability-exports.js.map +1 -0
  379. package/dist/core/extensions/capability-plugin.d.ts +69 -0
  380. package/dist/core/extensions/capability-plugin.d.ts.map +1 -0
  381. package/dist/core/extensions/capability-plugin.js +485 -0
  382. package/dist/core/extensions/capability-plugin.js.map +1 -0
  383. package/dist/core/extensions/capability-runtime-events.d.ts +22 -0
  384. package/dist/core/extensions/capability-runtime-events.d.ts.map +1 -0
  385. package/dist/core/extensions/capability-runtime-events.js +381 -0
  386. package/dist/core/extensions/capability-runtime-events.js.map +1 -0
  387. package/dist/core/extensions/capability-runtime-guards.d.ts +93 -0
  388. package/dist/core/extensions/capability-runtime-guards.d.ts.map +1 -0
  389. package/dist/core/extensions/capability-runtime-guards.js +800 -0
  390. package/dist/core/extensions/capability-runtime-guards.js.map +1 -0
  391. package/dist/core/extensions/capability-runtime-inspect.d.ts +12 -0
  392. package/dist/core/extensions/capability-runtime-inspect.d.ts.map +1 -0
  393. package/dist/core/extensions/capability-runtime-inspect.js +106 -0
  394. package/dist/core/extensions/capability-runtime-inspect.js.map +1 -0
  395. package/dist/core/extensions/capability-runtime-manifest.d.ts +19 -0
  396. package/dist/core/extensions/capability-runtime-manifest.d.ts.map +1 -0
  397. package/dist/core/extensions/capability-runtime-manifest.js +218 -0
  398. package/dist/core/extensions/capability-runtime-manifest.js.map +1 -0
  399. package/dist/core/extensions/capability-runtime-operation.d.ts +26 -0
  400. package/dist/core/extensions/capability-runtime-operation.d.ts.map +1 -0
  401. package/dist/core/extensions/capability-runtime-operation.js +88 -0
  402. package/dist/core/extensions/capability-runtime-operation.js.map +1 -0
  403. package/dist/core/extensions/capability-runtime-snapshot.d.ts +11 -0
  404. package/dist/core/extensions/capability-runtime-snapshot.d.ts.map +1 -0
  405. package/dist/core/extensions/capability-runtime-snapshot.js +81 -0
  406. package/dist/core/extensions/capability-runtime-snapshot.js.map +1 -0
  407. package/dist/core/extensions/capability-runtime-store.d.ts +34 -0
  408. package/dist/core/extensions/capability-runtime-store.d.ts.map +1 -0
  409. package/dist/core/extensions/capability-runtime-store.js +153 -0
  410. package/dist/core/extensions/capability-runtime-store.js.map +1 -0
  411. package/dist/core/extensions/capability-runtime-tool.d.ts +10 -0
  412. package/dist/core/extensions/capability-runtime-tool.d.ts.map +1 -0
  413. package/dist/core/extensions/capability-runtime-tool.js +10 -0
  414. package/dist/core/extensions/capability-runtime-tool.js.map +1 -0
  415. package/dist/core/extensions/capability-runtime-types.d.ts +303 -0
  416. package/dist/core/extensions/capability-runtime-types.d.ts.map +1 -0
  417. package/dist/core/extensions/capability-runtime-types.js +2 -0
  418. package/dist/core/extensions/capability-runtime-types.js.map +1 -0
  419. package/dist/core/extensions/capability-runtime-validation.d.ts +35 -0
  420. package/dist/core/extensions/capability-runtime-validation.d.ts.map +1 -0
  421. package/dist/core/extensions/capability-runtime-validation.js +380 -0
  422. package/dist/core/extensions/capability-runtime-validation.js.map +1 -0
  423. package/dist/core/extensions/capability-runtime.d.ts +7 -0
  424. package/dist/core/extensions/capability-runtime.d.ts.map +1 -0
  425. package/dist/core/extensions/capability-runtime.js +2170 -0
  426. package/dist/core/extensions/capability-runtime.js.map +1 -0
  427. package/dist/core/extensions/compaction-memory-failure-mode.d.ts +43 -0
  428. package/dist/core/extensions/compaction-memory-failure-mode.d.ts.map +1 -0
  429. package/dist/core/extensions/compaction-memory-failure-mode.js +31 -0
  430. package/dist/core/extensions/compaction-memory-failure-mode.js.map +1 -0
  431. package/dist/core/extensions/context-strategy-binding.d.ts +12 -0
  432. package/dist/core/extensions/context-strategy-binding.d.ts.map +1 -0
  433. package/dist/core/extensions/context-strategy-binding.js +54 -0
  434. package/dist/core/extensions/context-strategy-binding.js.map +1 -0
  435. package/dist/core/extensions/index.d.ts +19 -0
  436. package/dist/core/extensions/index.d.ts.map +1 -0
  437. package/dist/core/extensions/index.js +18 -0
  438. package/dist/core/extensions/index.js.map +1 -0
  439. package/dist/core/extensions/lifecycle-catalog.d.ts +584 -0
  440. package/dist/core/extensions/lifecycle-catalog.d.ts.map +1 -0
  441. package/dist/core/extensions/lifecycle-catalog.js +1903 -0
  442. package/dist/core/extensions/lifecycle-catalog.js.map +1 -0
  443. package/dist/core/extensions/lifecycle-delivery-queue.d.ts +48 -0
  444. package/dist/core/extensions/lifecycle-delivery-queue.d.ts.map +1 -0
  445. package/dist/core/extensions/lifecycle-delivery-queue.js +164 -0
  446. package/dist/core/extensions/lifecycle-delivery-queue.js.map +1 -0
  447. package/dist/core/extensions/microcompact.d.ts +71 -0
  448. package/dist/core/extensions/microcompact.d.ts.map +1 -0
  449. package/dist/core/extensions/microcompact.js +123 -0
  450. package/dist/core/extensions/microcompact.js.map +1 -0
  451. package/dist/core/extensions/public-api.d.ts +10 -0
  452. package/dist/core/extensions/public-api.d.ts.map +1 -0
  453. package/dist/core/extensions/public-api.js +9 -0
  454. package/dist/core/extensions/public-api.js.map +1 -0
  455. package/dist/core/facade/coding-agent-facade.d.ts +338 -0
  456. package/dist/core/facade/coding-agent-facade.d.ts.map +1 -0
  457. package/dist/core/facade/coding-agent-facade.js +115 -0
  458. package/dist/core/facade/coding-agent-facade.js.map +1 -0
  459. package/dist/core/facade/coding-agent-runtime-facade.d.ts +115 -0
  460. package/dist/core/facade/coding-agent-runtime-facade.d.ts.map +1 -0
  461. package/dist/core/facade/coding-agent-runtime-facade.js +63 -0
  462. package/dist/core/facade/coding-agent-runtime-facade.js.map +1 -0
  463. package/dist/core/facade/index.d.ts +6 -0
  464. package/dist/core/facade/index.d.ts.map +1 -0
  465. package/dist/core/facade/index.js +3 -0
  466. package/dist/core/facade/index.js.map +1 -0
  467. package/dist/core/footer-data-provider.d.ts +57 -0
  468. package/dist/core/footer-data-provider.d.ts.map +1 -0
  469. package/dist/core/footer-data-provider.js +323 -0
  470. package/dist/core/footer-data-provider.js.map +1 -0
  471. package/dist/core/http-dispatcher.d.ts +22 -0
  472. package/dist/core/http-dispatcher.d.ts.map +1 -0
  473. package/dist/core/http-dispatcher.js +98 -0
  474. package/dist/core/http-dispatcher.js.map +1 -0
  475. package/dist/core/index.d.ts +19 -0
  476. package/dist/core/index.d.ts.map +1 -0
  477. package/dist/core/index.js +13 -0
  478. package/dist/core/index.js.map +1 -0
  479. package/dist/core/input-source.d.ts +9 -0
  480. package/dist/core/input-source.d.ts.map +1 -0
  481. package/dist/core/input-source.js +2 -0
  482. package/dist/core/input-source.js.map +1 -0
  483. package/dist/core/keybindings.d.ts +442 -0
  484. package/dist/core/keybindings.d.ts.map +1 -0
  485. package/dist/core/keybindings.js +329 -0
  486. package/dist/core/keybindings.js.map +1 -0
  487. package/dist/core/logger.d.ts +107 -0
  488. package/dist/core/logger.d.ts.map +1 -0
  489. package/dist/core/logger.js +246 -0
  490. package/dist/core/logger.js.map +1 -0
  491. package/dist/core/messages.d.ts +85 -0
  492. package/dist/core/messages.d.ts.map +1 -0
  493. package/dist/core/messages.js +146 -0
  494. package/dist/core/messages.js.map +1 -0
  495. package/dist/core/model-config.d.ts +586 -0
  496. package/dist/core/model-config.d.ts.map +1 -0
  497. package/dist/core/model-config.js +258 -0
  498. package/dist/core/model-config.js.map +1 -0
  499. package/dist/core/model-registry.d.ts +49 -0
  500. package/dist/core/model-registry.d.ts.map +1 -0
  501. package/dist/core/model-registry.js +115 -0
  502. package/dist/core/model-registry.js.map +1 -0
  503. package/dist/core/model-resolver.d.ts +124 -0
  504. package/dist/core/model-resolver.d.ts.map +1 -0
  505. package/dist/core/model-resolver.js +590 -0
  506. package/dist/core/model-resolver.js.map +1 -0
  507. package/dist/core/model-runtime.d.ts +100 -0
  508. package/dist/core/model-runtime.d.ts.map +1 -0
  509. package/dist/core/model-runtime.js +598 -0
  510. package/dist/core/model-runtime.js.map +1 -0
  511. package/dist/core/models-store.d.ts +22 -0
  512. package/dist/core/models-store.d.ts.map +1 -0
  513. package/dist/core/models-store.js +115 -0
  514. package/dist/core/models-store.js.map +1 -0
  515. package/dist/core/output-guard.d.ts +7 -0
  516. package/dist/core/output-guard.d.ts.map +1 -0
  517. package/dist/core/output-guard.js +90 -0
  518. package/dist/core/output-guard.js.map +1 -0
  519. package/dist/core/package-install-host.d.ts +23 -0
  520. package/dist/core/package-install-host.d.ts.map +1 -0
  521. package/dist/core/package-install-host.js +202 -0
  522. package/dist/core/package-install-host.js.map +1 -0
  523. package/dist/core/package-manager.d.ts +93 -0
  524. package/dist/core/package-manager.d.ts.map +1 -0
  525. package/dist/core/package-manager.js +947 -0
  526. package/dist/core/package-manager.js.map +1 -0
  527. package/dist/core/package-process-runner.d.ts +4 -0
  528. package/dist/core/package-process-runner.d.ts.map +1 -0
  529. package/dist/core/package-process-runner.js +47 -0
  530. package/dist/core/package-process-runner.js.map +1 -0
  531. package/dist/core/package-resource-collection.d.ts +16 -0
  532. package/dist/core/package-resource-collection.d.ts.map +1 -0
  533. package/dist/core/package-resource-collection.js +300 -0
  534. package/dist/core/package-resource-collection.js.map +1 -0
  535. package/dist/core/package-resource-discovery.d.ts +33 -0
  536. package/dist/core/package-resource-discovery.d.ts.map +1 -0
  537. package/dist/core/package-resource-discovery.js +449 -0
  538. package/dist/core/package-resource-discovery.js.map +1 -0
  539. package/dist/core/package-source.d.ts +157 -0
  540. package/dist/core/package-source.d.ts.map +1 -0
  541. package/dist/core/package-source.js +179 -0
  542. package/dist/core/package-source.js.map +1 -0
  543. package/dist/core/pi-manifest.d.ts +7 -0
  544. package/dist/core/pi-manifest.d.ts.map +1 -0
  545. package/dist/core/pi-manifest.js +26 -0
  546. package/dist/core/pi-manifest.js.map +1 -0
  547. package/dist/core/prompt-templates.d.ts +54 -0
  548. package/dist/core/prompt-templates.d.ts.map +1 -0
  549. package/dist/core/prompt-templates.js +236 -0
  550. package/dist/core/prompt-templates.js.map +1 -0
  551. package/dist/core/provider-composer.d.ts +58 -0
  552. package/dist/core/provider-composer.d.ts.map +1 -0
  553. package/dist/core/provider-composer.js +403 -0
  554. package/dist/core/provider-composer.js.map +1 -0
  555. package/dist/core/radius.d.ts +2 -0
  556. package/dist/core/radius.d.ts.map +1 -0
  557. package/dist/core/radius.js +2 -0
  558. package/dist/core/radius.js.map +1 -0
  559. package/dist/core/remote-catalog-provider.d.ts +5 -0
  560. package/dist/core/remote-catalog-provider.d.ts.map +1 -0
  561. package/dist/core/remote-catalog-provider.js +121 -0
  562. package/dist/core/remote-catalog-provider.js.map +1 -0
  563. package/dist/core/resolve-config-value.d.ts +30 -0
  564. package/dist/core/resolve-config-value.d.ts.map +1 -0
  565. package/dist/core/resolve-config-value.js +247 -0
  566. package/dist/core/resolve-config-value.js.map +1 -0
  567. package/dist/core/resource-loader.d.ts +211 -0
  568. package/dist/core/resource-loader.d.ts.map +1 -0
  569. package/dist/core/resource-loader.js +687 -0
  570. package/dist/core/resource-loader.js.map +1 -0
  571. package/dist/core/runtime-credentials.d.ts +15 -0
  572. package/dist/core/runtime-credentials.d.ts.map +1 -0
  573. package/dist/core/runtime-credentials.js +39 -0
  574. package/dist/core/runtime-credentials.js.map +1 -0
  575. package/dist/core/sdk.d.ts +395 -0
  576. package/dist/core/sdk.d.ts.map +1 -0
  577. package/dist/core/sdk.js +1112 -0
  578. package/dist/core/sdk.js.map +1 -0
  579. package/dist/core/session-cwd.d.ts +19 -0
  580. package/dist/core/session-cwd.d.ts.map +1 -0
  581. package/dist/core/session-cwd.js +38 -0
  582. package/dist/core/session-cwd.js.map +1 -0
  583. package/dist/core/session-export.d.ts +7 -0
  584. package/dist/core/session-export.d.ts.map +1 -0
  585. package/dist/core/session-export.js +48 -0
  586. package/dist/core/session-export.js.map +1 -0
  587. package/dist/core/session-manager.d.ts +463 -0
  588. package/dist/core/session-manager.d.ts.map +1 -0
  589. package/dist/core/session-manager.js +1583 -0
  590. package/dist/core/session-manager.js.map +1 -0
  591. package/dist/core/session-start.d.ts +12 -0
  592. package/dist/core/session-start.d.ts.map +1 -0
  593. package/dist/core/session-start.js +2 -0
  594. package/dist/core/session-start.js.map +1 -0
  595. package/dist/core/session-storage.d.ts +130 -0
  596. package/dist/core/session-storage.d.ts.map +1 -0
  597. package/dist/core/session-storage.js +386 -0
  598. package/dist/core/session-storage.js.map +1 -0
  599. package/dist/core/settings-diagnostics.d.ts +9 -0
  600. package/dist/core/settings-diagnostics.d.ts.map +1 -0
  601. package/dist/core/settings-diagnostics.js +21 -0
  602. package/dist/core/settings-diagnostics.js.map +1 -0
  603. package/dist/core/settings-manager.d.ts +352 -0
  604. package/dist/core/settings-manager.d.ts.map +1 -0
  605. package/dist/core/settings-manager.js +987 -0
  606. package/dist/core/settings-manager.js.map +1 -0
  607. package/dist/core/skills.d.ts +60 -0
  608. package/dist/core/skills.d.ts.map +1 -0
  609. package/dist/core/skills.js +382 -0
  610. package/dist/core/skills.js.map +1 -0
  611. package/dist/core/slash-commands.d.ts +15 -0
  612. package/dist/core/slash-commands.d.ts.map +1 -0
  613. package/dist/core/slash-commands.js +33 -0
  614. package/dist/core/slash-commands.js.map +1 -0
  615. package/dist/core/source-info.d.ts +18 -0
  616. package/dist/core/source-info.d.ts.map +1 -0
  617. package/dist/core/source-info.js +19 -0
  618. package/dist/core/source-info.js.map +1 -0
  619. package/dist/core/system-prompt.d.ts +8 -0
  620. package/dist/core/system-prompt.d.ts.map +1 -0
  621. package/dist/core/system-prompt.js +137 -0
  622. package/dist/core/system-prompt.js.map +1 -0
  623. package/dist/core/timings.d.ts +11 -0
  624. package/dist/core/timings.d.ts.map +1 -0
  625. package/dist/core/timings.js +46 -0
  626. package/dist/core/timings.js.map +1 -0
  627. package/dist/core/tools/bash.d.ts +87 -0
  628. package/dist/core/tools/bash.d.ts.map +1 -0
  629. package/dist/core/tools/bash.js +409 -0
  630. package/dist/core/tools/bash.js.map +1 -0
  631. package/dist/core/tools/edit-diff.d.ts +110 -0
  632. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  633. package/dist/core/tools/edit-diff.js +425 -0
  634. package/dist/core/tools/edit-diff.js.map +1 -0
  635. package/dist/core/tools/edit.d.ts +55 -0
  636. package/dist/core/tools/edit.d.ts.map +1 -0
  637. package/dist/core/tools/edit.js +305 -0
  638. package/dist/core/tools/edit.js.map +1 -0
  639. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  640. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  641. package/dist/core/tools/file-mutation-queue.js +52 -0
  642. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  643. package/dist/core/tools/find.d.ts +42 -0
  644. package/dist/core/tools/find.d.ts.map +1 -0
  645. package/dist/core/tools/find.js +303 -0
  646. package/dist/core/tools/find.js.map +1 -0
  647. package/dist/core/tools/grep.d.ts +41 -0
  648. package/dist/core/tools/grep.d.ts.map +1 -0
  649. package/dist/core/tools/grep.js +309 -0
  650. package/dist/core/tools/grep.js.map +1 -0
  651. package/dist/core/tools/index.d.ts +44 -0
  652. package/dist/core/tools/index.d.ts.map +1 -0
  653. package/dist/core/tools/index.js +129 -0
  654. package/dist/core/tools/index.js.map +1 -0
  655. package/dist/core/tools/ls.d.ts +41 -0
  656. package/dist/core/tools/ls.d.ts.map +1 -0
  657. package/dist/core/tools/ls.js +173 -0
  658. package/dist/core/tools/ls.js.map +1 -0
  659. package/dist/core/tools/output-accumulator.d.ts +52 -0
  660. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  661. package/dist/core/tools/output-accumulator.js +184 -0
  662. package/dist/core/tools/output-accumulator.js.map +1 -0
  663. package/dist/core/tools/path-utils.d.ts +10 -0
  664. package/dist/core/tools/path-utils.d.ts.map +1 -0
  665. package/dist/core/tools/path-utils.js +99 -0
  666. package/dist/core/tools/path-utils.js.map +1 -0
  667. package/dist/core/tools/powershell.d.ts +16 -0
  668. package/dist/core/tools/powershell.d.ts.map +1 -0
  669. package/dist/core/tools/powershell.js +39 -0
  670. package/dist/core/tools/powershell.js.map +1 -0
  671. package/dist/core/tools/read.d.ts +39 -0
  672. package/dist/core/tools/read.d.ts.map +1 -0
  673. package/dist/core/tools/read.js +282 -0
  674. package/dist/core/tools/read.js.map +1 -0
  675. package/dist/core/tools/render-utils.d.ts +24 -0
  676. package/dist/core/tools/render-utils.d.ts.map +1 -0
  677. package/dist/core/tools/render-utils.js +65 -0
  678. package/dist/core/tools/render-utils.js.map +1 -0
  679. package/dist/core/tools/tool-definition-wrapper.d.ts +15 -0
  680. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  681. package/dist/core/tools/tool-definition-wrapper.js +36 -0
  682. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  683. package/dist/core/tools/tool-definition.d.ts +123 -0
  684. package/dist/core/tools/tool-definition.d.ts.map +1 -0
  685. package/dist/core/tools/tool-definition.js +20 -0
  686. package/dist/core/tools/tool-definition.js.map +1 -0
  687. package/dist/core/tools/tool-search.d.ts +30 -0
  688. package/dist/core/tools/tool-search.d.ts.map +1 -0
  689. package/dist/core/tools/tool-search.js +99 -0
  690. package/dist/core/tools/tool-search.js.map +1 -0
  691. package/dist/core/tools/truncate.d.ts +70 -0
  692. package/dist/core/tools/truncate.d.ts.map +1 -0
  693. package/dist/core/tools/truncate.js +215 -0
  694. package/dist/core/tools/truncate.js.map +1 -0
  695. package/dist/core/tools/write.d.ts +30 -0
  696. package/dist/core/tools/write.d.ts.map +1 -0
  697. package/dist/core/tools/write.js +202 -0
  698. package/dist/core/tools/write.js.map +1 -0
  699. package/dist/core/trace-retention.d.ts +19 -0
  700. package/dist/core/trace-retention.d.ts.map +1 -0
  701. package/dist/core/trace-retention.js +91 -0
  702. package/dist/core/trace-retention.js.map +1 -0
  703. package/dist/core/usage-totals.d.ts +21 -0
  704. package/dist/core/usage-totals.d.ts.map +1 -0
  705. package/dist/core/usage-totals.js +53 -0
  706. package/dist/core/usage-totals.js.map +1 -0
  707. package/dist/durable/durable-service.d.ts +136 -0
  708. package/dist/durable/durable-service.d.ts.map +1 -0
  709. package/dist/durable/durable-service.js +710 -0
  710. package/dist/durable/durable-service.js.map +1 -0
  711. package/dist/e2e/stdio-launcher.d.ts +25 -0
  712. package/dist/e2e/stdio-launcher.d.ts.map +1 -0
  713. package/dist/e2e/stdio-launcher.js +244 -0
  714. package/dist/e2e/stdio-launcher.js.map +1 -0
  715. package/dist/host/agent-retry-scheduler.d.ts +65 -0
  716. package/dist/host/agent-retry-scheduler.d.ts.map +1 -0
  717. package/dist/host/agent-retry-scheduler.js +52 -0
  718. package/dist/host/agent-retry-scheduler.js.map +1 -0
  719. package/dist/host/auto-compaction.d.ts +56 -0
  720. package/dist/host/auto-compaction.d.ts.map +1 -0
  721. package/dist/host/auto-compaction.js +62 -0
  722. package/dist/host/auto-compaction.js.map +1 -0
  723. package/dist/host/branch-reload.d.ts +56 -0
  724. package/dist/host/branch-reload.d.ts.map +1 -0
  725. package/dist/host/branch-reload.js +39 -0
  726. package/dist/host/branch-reload.js.map +1 -0
  727. package/dist/host/channel-adapter.d.ts +25 -0
  728. package/dist/host/channel-adapter.d.ts.map +1 -0
  729. package/dist/host/channel-adapter.js +45 -0
  730. package/dist/host/channel-adapter.js.map +1 -0
  731. package/dist/host/checkpoint-commit.d.ts +74 -0
  732. package/dist/host/checkpoint-commit.d.ts.map +1 -0
  733. package/dist/host/checkpoint-commit.js +76 -0
  734. package/dist/host/checkpoint-commit.js.map +1 -0
  735. package/dist/host/manual-compaction.d.ts +43 -0
  736. package/dist/host/manual-compaction.d.ts.map +1 -0
  737. package/dist/host/manual-compaction.js +63 -0
  738. package/dist/host/manual-compaction.js.map +1 -0
  739. package/dist/host/output-projection.d.ts +61 -0
  740. package/dist/host/output-projection.d.ts.map +1 -0
  741. package/dist/host/output-projection.js +74 -0
  742. package/dist/host/output-projection.js.map +1 -0
  743. package/dist/host/output-reducer.d.ts +43 -0
  744. package/dist/host/output-reducer.d.ts.map +1 -0
  745. package/dist/host/output-reducer.js +77 -0
  746. package/dist/host/output-reducer.js.map +1 -0
  747. package/dist/host/output-serializer.d.ts +31 -0
  748. package/dist/host/output-serializer.d.ts.map +1 -0
  749. package/dist/host/output-serializer.js +120 -0
  750. package/dist/host/output-serializer.js.map +1 -0
  751. package/dist/host/overflow-recovery.d.ts +55 -0
  752. package/dist/host/overflow-recovery.d.ts.map +1 -0
  753. package/dist/host/overflow-recovery.js +89 -0
  754. package/dist/host/overflow-recovery.js.map +1 -0
  755. package/dist/host/retry-common.d.ts +29 -0
  756. package/dist/host/retry-common.d.ts.map +1 -0
  757. package/dist/host/retry-common.js +12 -0
  758. package/dist/host/retry-common.js.map +1 -0
  759. package/dist/host/session-event-translation.d.ts +26 -0
  760. package/dist/host/session-event-translation.d.ts.map +1 -0
  761. package/dist/host/session-event-translation.js +61 -0
  762. package/dist/host/session-event-translation.js.map +1 -0
  763. package/dist/host/summary-retry.d.ts +54 -0
  764. package/dist/host/summary-retry.d.ts.map +1 -0
  765. package/dist/host/summary-retry.js +66 -0
  766. package/dist/host/summary-retry.js.map +1 -0
  767. package/dist/index.d.ts +105 -0
  768. package/dist/index.d.ts.map +1 -0
  769. package/dist/index.js +176 -0
  770. package/dist/index.js.map +1 -0
  771. package/dist/main.d.ts +36 -0
  772. package/dist/main.d.ts.map +1 -0
  773. package/dist/main.js +1630 -0
  774. package/dist/main.js.map +1 -0
  775. package/dist/migration/migration-tool.d.ts +56 -0
  776. package/dist/migration/migration-tool.d.ts.map +1 -0
  777. package/dist/migration/migration-tool.js +72 -0
  778. package/dist/migration/migration-tool.js.map +1 -0
  779. package/dist/migrations.d.ts +33 -0
  780. package/dist/migrations.d.ts.map +1 -0
  781. package/dist/migrations.js +272 -0
  782. package/dist/migrations.js.map +1 -0
  783. package/dist/modes/index.d.ts +10 -0
  784. package/dist/modes/index.d.ts.map +1 -0
  785. package/dist/modes/index.js +8 -0
  786. package/dist/modes/index.js.map +1 -0
  787. package/dist/modes/interactive/assets/clankolas.png +0 -0
  788. package/dist/modes/interactive/components/armin.d.ts +34 -0
  789. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  790. package/dist/modes/interactive/components/armin.js +336 -0
  791. package/dist/modes/interactive/components/armin.js.map +1 -0
  792. package/dist/modes/interactive/components/assistant-message.d.ts +25 -0
  793. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  794. package/dist/modes/interactive/components/assistant-message.js +151 -0
  795. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  796. package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  797. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  798. package/dist/modes/interactive/components/bash-execution.js +176 -0
  799. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  800. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  801. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  802. package/dist/modes/interactive/components/bordered-loader.js +56 -0
  803. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  804. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  805. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  806. package/dist/modes/interactive/components/branch-summary-message.js +44 -0
  807. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  808. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  809. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  810. package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
  811. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  812. package/dist/modes/interactive/components/config-selector.d.ts +113 -0
  813. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  814. package/dist/modes/interactive/components/config-selector.js +857 -0
  815. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  816. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  817. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  818. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  819. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  820. package/dist/modes/interactive/components/custom-editor.d.ts +19 -0
  821. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  822. package/dist/modes/interactive/components/custom-editor.js +71 -0
  823. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  824. package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
  825. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  826. package/dist/modes/interactive/components/custom-entry.js +52 -0
  827. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  828. package/dist/modes/interactive/components/custom-message.d.ts +22 -0
  829. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  830. package/dist/modes/interactive/components/custom-message.js +87 -0
  831. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  832. package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  833. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
  834. package/dist/modes/interactive/components/daxnuts.js +141 -0
  835. package/dist/modes/interactive/components/daxnuts.js.map +1 -0
  836. package/dist/modes/interactive/components/dialog-editor.d.ts +21 -0
  837. package/dist/modes/interactive/components/dialog-editor.d.ts.map +1 -0
  838. package/dist/modes/interactive/components/dialog-editor.js +98 -0
  839. package/dist/modes/interactive/components/dialog-editor.js.map +1 -0
  840. package/dist/modes/interactive/components/dialog-input.d.ts +23 -0
  841. package/dist/modes/interactive/components/dialog-input.d.ts.map +1 -0
  842. package/dist/modes/interactive/components/dialog-input.js +61 -0
  843. package/dist/modes/interactive/components/dialog-input.js.map +1 -0
  844. package/dist/modes/interactive/components/dialog-selector.d.ts +26 -0
  845. package/dist/modes/interactive/components/dialog-selector.d.ts.map +1 -0
  846. package/dist/modes/interactive/components/dialog-selector.js +83 -0
  847. package/dist/modes/interactive/components/dialog-selector.js.map +1 -0
  848. package/dist/modes/interactive/components/diff.d.ts +12 -0
  849. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  850. package/dist/modes/interactive/components/diff.js +133 -0
  851. package/dist/modes/interactive/components/diff.js.map +1 -0
  852. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  853. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  854. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  855. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  856. package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  857. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  858. package/dist/modes/interactive/components/first-time-setup.js +103 -0
  859. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  860. package/dist/modes/interactive/components/footer.d.ts +33 -0
  861. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  862. package/dist/modes/interactive/components/footer.js +248 -0
  863. package/dist/modes/interactive/components/footer.js.map +1 -0
  864. package/dist/modes/interactive/components/index.d.ts +34 -0
  865. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  866. package/dist/modes/interactive/components/index.js +35 -0
  867. package/dist/modes/interactive/components/index.js.map +1 -0
  868. package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  869. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  870. package/dist/modes/interactive/components/keybinding-hints.js +36 -0
  871. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  872. package/dist/modes/interactive/components/login-dialog.d.ts +52 -0
  873. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  874. package/dist/modes/interactive/components/login-dialog.js +188 -0
  875. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  876. package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  877. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  878. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  879. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  880. package/dist/modes/interactive/components/mermaid.d.ts +11 -0
  881. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  882. package/dist/modes/interactive/components/mermaid.js +75 -0
  883. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  884. package/dist/modes/interactive/components/model-selector.d.ts +67 -0
  885. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  886. package/dist/modes/interactive/components/model-selector.js +381 -0
  887. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  888. package/dist/modes/interactive/components/oauth-selector.d.ts +33 -0
  889. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  890. package/dist/modes/interactive/components/oauth-selector.js +165 -0
  891. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  892. package/dist/modes/interactive/components/plugin-manager-entry.d.ts +62 -0
  893. package/dist/modes/interactive/components/plugin-manager-entry.d.ts.map +1 -0
  894. package/dist/modes/interactive/components/plugin-manager-entry.js +294 -0
  895. package/dist/modes/interactive/components/plugin-manager-entry.js.map +1 -0
  896. package/dist/modes/interactive/components/plugin-selection-entry.d.ts +82 -0
  897. package/dist/modes/interactive/components/plugin-selection-entry.d.ts.map +1 -0
  898. package/dist/modes/interactive/components/plugin-selection-entry.js +228 -0
  899. package/dist/modes/interactive/components/plugin-selection-entry.js.map +1 -0
  900. package/dist/modes/interactive/components/render-types.d.ts +26 -0
  901. package/dist/modes/interactive/components/render-types.d.ts.map +1 -0
  902. package/dist/modes/interactive/components/render-types.js +7 -0
  903. package/dist/modes/interactive/components/render-types.js.map +1 -0
  904. package/dist/modes/interactive/components/scoped-models-selector.d.ts +46 -0
  905. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  906. package/dist/modes/interactive/components/scoped-models-selector.js +328 -0
  907. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  908. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  909. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  910. package/dist/modes/interactive/components/session-selector-search.js +158 -0
  911. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  912. package/dist/modes/interactive/components/session-selector.d.ts +143 -0
  913. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  914. package/dist/modes/interactive/components/session-selector.js +1053 -0
  915. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  916. package/dist/modes/interactive/components/settings-selector.d.ts +88 -0
  917. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  918. package/dist/modes/interactive/components/settings-selector.js +677 -0
  919. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  920. package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
  921. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
  922. package/dist/modes/interactive/components/settings-submenu.js +165 -0
  923. package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
  924. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  925. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  926. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  927. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  928. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  929. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  930. package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
  931. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  932. package/dist/modes/interactive/components/status-indicator.d.ts +34 -0
  933. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
  934. package/dist/modes/interactive/components/status-indicator.js +60 -0
  935. package/dist/modes/interactive/components/status-indicator.js.map +1 -0
  936. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  937. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  938. package/dist/modes/interactive/components/theme-selector.js +50 -0
  939. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  940. package/dist/modes/interactive/components/thinking-selector.d.ts +23 -0
  941. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  942. package/dist/modes/interactive/components/thinking-selector.js +109 -0
  943. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  944. package/dist/modes/interactive/components/tool-execution.d.ts +59 -0
  945. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  946. package/dist/modes/interactive/components/tool-execution.js +335 -0
  947. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  948. package/dist/modes/interactive/components/tree-list.d.ts +67 -0
  949. package/dist/modes/interactive/components/tree-list.d.ts.map +1 -0
  950. package/dist/modes/interactive/components/tree-list.js +710 -0
  951. package/dist/modes/interactive/components/tree-list.js.map +1 -0
  952. package/dist/modes/interactive/components/tree-render.d.ts +17 -0
  953. package/dist/modes/interactive/components/tree-render.d.ts.map +1 -0
  954. package/dist/modes/interactive/components/tree-render.js +316 -0
  955. package/dist/modes/interactive/components/tree-render.js.map +1 -0
  956. package/dist/modes/interactive/components/tree-selector.d.ts +25 -0
  957. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  958. package/dist/modes/interactive/components/tree-selector.js +235 -0
  959. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  960. package/dist/modes/interactive/components/tree-types.d.ts +35 -0
  961. package/dist/modes/interactive/components/tree-types.d.ts.map +1 -0
  962. package/dist/modes/interactive/components/tree-types.js +2 -0
  963. package/dist/modes/interactive/components/tree-types.js.map +1 -0
  964. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  965. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  966. package/dist/modes/interactive/components/user-message-selector.js +114 -0
  967. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  968. package/dist/modes/interactive/components/user-message.d.ts +16 -0
  969. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  970. package/dist/modes/interactive/components/user-message.js +49 -0
  971. package/dist/modes/interactive/components/user-message.js.map +1 -0
  972. package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  973. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  974. package/dist/modes/interactive/components/visual-truncate.js +33 -0
  975. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  976. package/dist/modes/interactive/external-editor.d.ts +12 -0
  977. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  978. package/dist/modes/interactive/external-editor.js +38 -0
  979. package/dist/modes/interactive/external-editor.js.map +1 -0
  980. package/dist/modes/interactive/interactive-auth.d.ts +90 -0
  981. package/dist/modes/interactive/interactive-auth.d.ts.map +1 -0
  982. package/dist/modes/interactive/interactive-auth.js +492 -0
  983. package/dist/modes/interactive/interactive-auth.js.map +1 -0
  984. package/dist/modes/interactive/interactive-commands.d.ts +68 -0
  985. package/dist/modes/interactive/interactive-commands.d.ts.map +1 -0
  986. package/dist/modes/interactive/interactive-commands.js +157 -0
  987. package/dist/modes/interactive/interactive-commands.js.map +1 -0
  988. package/dist/modes/interactive/interactive-dialog-ui.d.ts +73 -0
  989. package/dist/modes/interactive/interactive-dialog-ui.d.ts.map +1 -0
  990. package/dist/modes/interactive/interactive-dialog-ui.js +189 -0
  991. package/dist/modes/interactive/interactive-dialog-ui.js.map +1 -0
  992. package/dist/modes/interactive/interactive-format.d.ts +65 -0
  993. package/dist/modes/interactive/interactive-format.d.ts.map +1 -0
  994. package/dist/modes/interactive/interactive-format.js +268 -0
  995. package/dist/modes/interactive/interactive-format.js.map +1 -0
  996. package/dist/modes/interactive/interactive-helpers.d.ts +25 -0
  997. package/dist/modes/interactive/interactive-helpers.d.ts.map +1 -0
  998. package/dist/modes/interactive/interactive-helpers.js +73 -0
  999. package/dist/modes/interactive/interactive-helpers.js.map +1 -0
  1000. package/dist/modes/interactive/interactive-mode.d.ts +640 -0
  1001. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  1002. package/dist/modes/interactive/interactive-mode.js +4107 -0
  1003. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  1004. package/dist/modes/interactive/interactive-selectors.d.ts +95 -0
  1005. package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -0
  1006. package/dist/modes/interactive/interactive-selectors.js +356 -0
  1007. package/dist/modes/interactive/interactive-selectors.js.map +1 -0
  1008. package/dist/modes/interactive/model-catalog-refresh.d.ts +11 -0
  1009. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
  1010. package/dist/modes/interactive/model-catalog-refresh.js +35 -0
  1011. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
  1012. package/dist/modes/interactive/model-search.d.ts +12 -0
  1013. package/dist/modes/interactive/model-search.d.ts.map +1 -0
  1014. package/dist/modes/interactive/model-search.js +15 -0
  1015. package/dist/modes/interactive/model-search.js.map +1 -0
  1016. package/dist/modes/interactive/theme/dark.json +90 -0
  1017. package/dist/modes/interactive/theme/light.json +89 -0
  1018. package/dist/modes/interactive/theme/theme-controller.d.ts +40 -0
  1019. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
  1020. package/dist/modes/interactive/theme/theme-controller.js +126 -0
  1021. package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
  1022. package/dist/modes/interactive/theme/theme-schema.json +352 -0
  1023. package/dist/modes/interactive/theme/theme.d.ts +122 -0
  1024. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  1025. package/dist/modes/interactive/theme/theme.js +1093 -0
  1026. package/dist/modes/interactive/theme/theme.js.map +1 -0
  1027. package/dist/modes/json-event.d.ts +34 -0
  1028. package/dist/modes/json-event.d.ts.map +1 -0
  1029. package/dist/modes/json-event.js +29 -0
  1030. package/dist/modes/json-event.js.map +1 -0
  1031. package/dist/modes/print-mode.d.ts +32 -0
  1032. package/dist/modes/print-mode.d.ts.map +1 -0
  1033. package/dist/modes/print-mode.js +205 -0
  1034. package/dist/modes/print-mode.js.map +1 -0
  1035. package/dist/modes/rpc/jsonl.d.ts +17 -0
  1036. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  1037. package/dist/modes/rpc/jsonl.js +49 -0
  1038. package/dist/modes/rpc/jsonl.js.map +1 -0
  1039. package/dist/modes/rpc/rpc-client.d.ts +254 -0
  1040. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  1041. package/dist/modes/rpc/rpc-client.js +496 -0
  1042. package/dist/modes/rpc/rpc-client.js.map +1 -0
  1043. package/dist/modes/rpc/rpc-mode.d.ts +53 -0
  1044. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  1045. package/dist/modes/rpc/rpc-mode.js +540 -0
  1046. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  1047. package/dist/modes/rpc/rpc-types.d.ts +486 -0
  1048. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  1049. package/dist/modes/rpc/rpc-types.js +8 -0
  1050. package/dist/modes/rpc/rpc-types.js.map +1 -0
  1051. package/dist/package-manager-cli.d.ts +18 -0
  1052. package/dist/package-manager-cli.d.ts.map +1 -0
  1053. package/dist/package-manager-cli.js +944 -0
  1054. package/dist/package-manager-cli.js.map +1 -0
  1055. package/dist/plugins/ecosystem/active-bindings.d.ts +92 -0
  1056. package/dist/plugins/ecosystem/active-bindings.d.ts.map +1 -0
  1057. package/dist/plugins/ecosystem/active-bindings.js +198 -0
  1058. package/dist/plugins/ecosystem/active-bindings.js.map +1 -0
  1059. package/dist/plugins/ecosystem/bootstrap-factory-manifest.d.ts +32 -0
  1060. package/dist/plugins/ecosystem/bootstrap-factory-manifest.d.ts.map +1 -0
  1061. package/dist/plugins/ecosystem/bootstrap-factory-manifest.js +32 -0
  1062. package/dist/plugins/ecosystem/bootstrap-factory-manifest.js.map +1 -0
  1063. package/dist/plugins/ecosystem/catalog.d.ts +38 -0
  1064. package/dist/plugins/ecosystem/catalog.d.ts.map +1 -0
  1065. package/dist/plugins/ecosystem/catalog.js +90 -0
  1066. package/dist/plugins/ecosystem/catalog.js.map +1 -0
  1067. package/dist/plugins/ecosystem/cli.d.ts +102 -0
  1068. package/dist/plugins/ecosystem/cli.d.ts.map +1 -0
  1069. package/dist/plugins/ecosystem/cli.js +970 -0
  1070. package/dist/plugins/ecosystem/cli.js.map +1 -0
  1071. package/dist/plugins/ecosystem/default-active-bindings.d.ts +33 -0
  1072. package/dist/plugins/ecosystem/default-active-bindings.d.ts.map +1 -0
  1073. package/dist/plugins/ecosystem/default-active-bindings.js +105 -0
  1074. package/dist/plugins/ecosystem/default-active-bindings.js.map +1 -0
  1075. package/dist/plugins/ecosystem/default-plugin-market.d.ts +68 -0
  1076. package/dist/plugins/ecosystem/default-plugin-market.d.ts.map +1 -0
  1077. package/dist/plugins/ecosystem/default-plugin-market.js +146 -0
  1078. package/dist/plugins/ecosystem/default-plugin-market.js.map +1 -0
  1079. package/dist/plugins/ecosystem/distribution.d.ts +113 -0
  1080. package/dist/plugins/ecosystem/distribution.d.ts.map +1 -0
  1081. package/dist/plugins/ecosystem/distribution.js +371 -0
  1082. package/dist/plugins/ecosystem/distribution.js.map +1 -0
  1083. package/dist/plugins/ecosystem/index.d.ts +56 -0
  1084. package/dist/plugins/ecosystem/index.d.ts.map +1 -0
  1085. package/dist/plugins/ecosystem/index.js +31 -0
  1086. package/dist/plugins/ecosystem/index.js.map +1 -0
  1087. package/dist/plugins/ecosystem/installer.d.ts +130 -0
  1088. package/dist/plugins/ecosystem/installer.d.ts.map +1 -0
  1089. package/dist/plugins/ecosystem/installer.js +316 -0
  1090. package/dist/plugins/ecosystem/installer.js.map +1 -0
  1091. package/dist/plugins/ecosystem/node-disk-registry-source.d.ts +47 -0
  1092. package/dist/plugins/ecosystem/node-disk-registry-source.d.ts.map +1 -0
  1093. package/dist/plugins/ecosystem/node-disk-registry-source.js +208 -0
  1094. package/dist/plugins/ecosystem/node-disk-registry-source.js.map +1 -0
  1095. package/dist/plugins/ecosystem/node-distribution-host.d.ts +55 -0
  1096. package/dist/plugins/ecosystem/node-distribution-host.d.ts.map +1 -0
  1097. package/dist/plugins/ecosystem/node-distribution-host.js +423 -0
  1098. package/dist/plugins/ecosystem/node-distribution-host.js.map +1 -0
  1099. package/dist/plugins/ecosystem/node-local-package-source.d.ts +10 -0
  1100. package/dist/plugins/ecosystem/node-local-package-source.d.ts.map +1 -0
  1101. package/dist/plugins/ecosystem/node-local-package-source.js +97 -0
  1102. package/dist/plugins/ecosystem/node-local-package-source.js.map +1 -0
  1103. package/dist/plugins/ecosystem/node-npm-registry-source.d.ts +58 -0
  1104. package/dist/plugins/ecosystem/node-npm-registry-source.d.ts.map +1 -0
  1105. package/dist/plugins/ecosystem/node-npm-registry-source.js +326 -0
  1106. package/dist/plugins/ecosystem/node-npm-registry-source.js.map +1 -0
  1107. package/dist/plugins/ecosystem/node-package-install-host.d.ts +91 -0
  1108. package/dist/plugins/ecosystem/node-package-install-host.d.ts.map +1 -0
  1109. package/dist/plugins/ecosystem/node-package-install-host.js +857 -0
  1110. package/dist/plugins/ecosystem/node-package-install-host.js.map +1 -0
  1111. package/dist/plugins/ecosystem/node-package-install-persistence.d.ts +34 -0
  1112. package/dist/plugins/ecosystem/node-package-install-persistence.d.ts.map +1 -0
  1113. package/dist/plugins/ecosystem/node-package-install-persistence.js +221 -0
  1114. package/dist/plugins/ecosystem/node-package-install-persistence.js.map +1 -0
  1115. package/dist/plugins/ecosystem/node-package-install-stack.d.ts +28 -0
  1116. package/dist/plugins/ecosystem/node-package-install-stack.d.ts.map +1 -0
  1117. package/dist/plugins/ecosystem/node-package-install-stack.js +65 -0
  1118. package/dist/plugins/ecosystem/node-package-install-stack.js.map +1 -0
  1119. package/dist/plugins/ecosystem/node-package-media.d.ts +14 -0
  1120. package/dist/plugins/ecosystem/node-package-media.d.ts.map +1 -0
  1121. package/dist/plugins/ecosystem/node-package-media.js +36 -0
  1122. package/dist/plugins/ecosystem/node-package-media.js.map +1 -0
  1123. package/dist/plugins/ecosystem/node-plugin-acquisition-host.d.ts +83 -0
  1124. package/dist/plugins/ecosystem/node-plugin-acquisition-host.d.ts.map +1 -0
  1125. package/dist/plugins/ecosystem/node-plugin-acquisition-host.js +423 -0
  1126. package/dist/plugins/ecosystem/node-plugin-acquisition-host.js.map +1 -0
  1127. package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts +48 -0
  1128. package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts.map +1 -0
  1129. package/dist/plugins/ecosystem/node-plugin-bootstrap.js +191 -0
  1130. package/dist/plugins/ecosystem/node-plugin-bootstrap.js.map +1 -0
  1131. package/dist/plugins/ecosystem/node-plugin-trust-root.d.ts +26 -0
  1132. package/dist/plugins/ecosystem/node-plugin-trust-root.d.ts.map +1 -0
  1133. package/dist/plugins/ecosystem/node-plugin-trust-root.js +120 -0
  1134. package/dist/plugins/ecosystem/node-plugin-trust-root.js.map +1 -0
  1135. package/dist/plugins/ecosystem/node-registry-source.d.ts +35 -0
  1136. package/dist/plugins/ecosystem/node-registry-source.d.ts.map +1 -0
  1137. package/dist/plugins/ecosystem/node-registry-source.js +286 -0
  1138. package/dist/plugins/ecosystem/node-registry-source.js.map +1 -0
  1139. package/dist/plugins/ecosystem/node-release-package-source.d.ts +47 -0
  1140. package/dist/plugins/ecosystem/node-release-package-source.d.ts.map +1 -0
  1141. package/dist/plugins/ecosystem/node-release-package-source.js +336 -0
  1142. package/dist/plugins/ecosystem/node-release-package-source.js.map +1 -0
  1143. package/dist/plugins/ecosystem/node-tar-package.d.ts +11 -0
  1144. package/dist/plugins/ecosystem/node-tar-package.d.ts.map +1 -0
  1145. package/dist/plugins/ecosystem/node-tar-package.js +294 -0
  1146. package/dist/plugins/ecosystem/node-tar-package.js.map +1 -0
  1147. package/dist/plugins/ecosystem/node-tar-writer.d.ts +16 -0
  1148. package/dist/plugins/ecosystem/node-tar-writer.d.ts.map +1 -0
  1149. package/dist/plugins/ecosystem/node-tar-writer.js +134 -0
  1150. package/dist/plugins/ecosystem/node-tar-writer.js.map +1 -0
  1151. package/dist/plugins/ecosystem/node-url-package-source.d.ts +31 -0
  1152. package/dist/plugins/ecosystem/node-url-package-source.d.ts.map +1 -0
  1153. package/dist/plugins/ecosystem/node-url-package-source.js +159 -0
  1154. package/dist/plugins/ecosystem/node-url-package-source.js.map +1 -0
  1155. package/dist/plugins/ecosystem/plugin-acquisition.d.ts +88 -0
  1156. package/dist/plugins/ecosystem/plugin-acquisition.d.ts.map +1 -0
  1157. package/dist/plugins/ecosystem/plugin-acquisition.js +197 -0
  1158. package/dist/plugins/ecosystem/plugin-acquisition.js.map +1 -0
  1159. package/dist/plugins/ecosystem/plugin-bootstrap.d.ts +87 -0
  1160. package/dist/plugins/ecosystem/plugin-bootstrap.d.ts.map +1 -0
  1161. package/dist/plugins/ecosystem/plugin-bootstrap.js +134 -0
  1162. package/dist/plugins/ecosystem/plugin-bootstrap.js.map +1 -0
  1163. package/dist/plugins/ecosystem/registry-cli-adapter.d.ts +8 -0
  1164. package/dist/plugins/ecosystem/registry-cli-adapter.d.ts.map +1 -0
  1165. package/dist/plugins/ecosystem/registry-cli-adapter.js +16 -0
  1166. package/dist/plugins/ecosystem/registry-cli-adapter.js.map +1 -0
  1167. package/dist/plugins/ecosystem/registry.d.ts +121 -0
  1168. package/dist/plugins/ecosystem/registry.d.ts.map +1 -0
  1169. package/dist/plugins/ecosystem/registry.js +324 -0
  1170. package/dist/plugins/ecosystem/registry.js.map +1 -0
  1171. package/dist/plugins/ecosystem/resolver.d.ts +32 -0
  1172. package/dist/plugins/ecosystem/resolver.d.ts.map +1 -0
  1173. package/dist/plugins/ecosystem/resolver.js +325 -0
  1174. package/dist/plugins/ecosystem/resolver.js.map +1 -0
  1175. package/dist/plugins/ecosystem/selection-store.d.ts +66 -0
  1176. package/dist/plugins/ecosystem/selection-store.d.ts.map +1 -0
  1177. package/dist/plugins/ecosystem/selection-store.js +241 -0
  1178. package/dist/plugins/ecosystem/selection-store.js.map +1 -0
  1179. package/dist/plugins/ecosystem/selection.d.ts +54 -0
  1180. package/dist/plugins/ecosystem/selection.d.ts.map +1 -0
  1181. package/dist/plugins/ecosystem/selection.js +116 -0
  1182. package/dist/plugins/ecosystem/selection.js.map +1 -0
  1183. package/dist/plugins/ecosystem/state.d.ts +96 -0
  1184. package/dist/plugins/ecosystem/state.d.ts.map +1 -0
  1185. package/dist/plugins/ecosystem/state.js +346 -0
  1186. package/dist/plugins/ecosystem/state.js.map +1 -0
  1187. package/dist/plugins/ecosystem/types.d.ts +90 -0
  1188. package/dist/plugins/ecosystem/types.d.ts.map +1 -0
  1189. package/dist/plugins/ecosystem/types.js +8 -0
  1190. package/dist/plugins/ecosystem/types.js.map +1 -0
  1191. package/dist/plugins/ecosystem/updates.d.ts +30 -0
  1192. package/dist/plugins/ecosystem/updates.d.ts.map +1 -0
  1193. package/dist/plugins/ecosystem/updates.js +148 -0
  1194. package/dist/plugins/ecosystem/updates.js.map +1 -0
  1195. package/dist/plugins/integrity-adapter.d.ts +58 -0
  1196. package/dist/plugins/integrity-adapter.d.ts.map +1 -0
  1197. package/dist/plugins/integrity-adapter.js +70 -0
  1198. package/dist/plugins/integrity-adapter.js.map +1 -0
  1199. package/dist/plugins/mcp-http.d.ts +78 -0
  1200. package/dist/plugins/mcp-http.d.ts.map +1 -0
  1201. package/dist/plugins/mcp-http.js +176 -0
  1202. package/dist/plugins/mcp-http.js.map +1 -0
  1203. package/dist/plugins/observability-types.d.ts +9 -0
  1204. package/dist/plugins/observability-types.d.ts.map +1 -0
  1205. package/dist/plugins/observability-types.js +9 -0
  1206. package/dist/plugins/observability-types.js.map +1 -0
  1207. package/dist/plugins/plugin-host.d.ts +46 -0
  1208. package/dist/plugins/plugin-host.d.ts.map +1 -0
  1209. package/dist/plugins/plugin-host.js +80 -0
  1210. package/dist/plugins/plugin-host.js.map +1 -0
  1211. package/dist/plugins/plugin-supervisor.d.ts +77 -0
  1212. package/dist/plugins/plugin-supervisor.d.ts.map +1 -0
  1213. package/dist/plugins/plugin-supervisor.js +82 -0
  1214. package/dist/plugins/plugin-supervisor.js.map +1 -0
  1215. package/dist/plugins/subagent-task/runner-entry.d.ts +35 -0
  1216. package/dist/plugins/subagent-task/runner-entry.d.ts.map +1 -0
  1217. package/dist/plugins/subagent-task/runner-entry.js +39 -0
  1218. package/dist/plugins/subagent-task/runner-entry.js.map +1 -0
  1219. package/dist/plugins/subagent-task/session-factory.d.ts +57 -0
  1220. package/dist/plugins/subagent-task/session-factory.d.ts.map +1 -0
  1221. package/dist/plugins/subagent-task/session-factory.js +51 -0
  1222. package/dist/plugins/subagent-task/session-factory.js.map +1 -0
  1223. package/dist/profile/child-facade.d.ts +44 -0
  1224. package/dist/profile/child-facade.d.ts.map +1 -0
  1225. package/dist/profile/child-facade.js +56 -0
  1226. package/dist/profile/child-facade.js.map +1 -0
  1227. package/dist/profile/dependency-wiring.d.ts +48 -0
  1228. package/dist/profile/dependency-wiring.d.ts.map +1 -0
  1229. package/dist/profile/dependency-wiring.js +56 -0
  1230. package/dist/profile/dependency-wiring.js.map +1 -0
  1231. package/dist/profile/domain-recovery.d.ts +60 -0
  1232. package/dist/profile/domain-recovery.d.ts.map +1 -0
  1233. package/dist/profile/domain-recovery.js +94 -0
  1234. package/dist/profile/domain-recovery.js.map +1 -0
  1235. package/dist/profile/first-roles.d.ts +30 -0
  1236. package/dist/profile/first-roles.d.ts.map +1 -0
  1237. package/dist/profile/first-roles.js +74 -0
  1238. package/dist/profile/first-roles.js.map +1 -0
  1239. package/dist/profile/goal-plugin.d.ts +38 -0
  1240. package/dist/profile/goal-plugin.d.ts.map +1 -0
  1241. package/dist/profile/goal-plugin.js +113 -0
  1242. package/dist/profile/goal-plugin.js.map +1 -0
  1243. package/dist/profile/identity.d.ts +58 -0
  1244. package/dist/profile/identity.d.ts.map +1 -0
  1245. package/dist/profile/identity.js +100 -0
  1246. package/dist/profile/identity.js.map +1 -0
  1247. package/dist/profile/lock.d.ts +59 -0
  1248. package/dist/profile/lock.d.ts.map +1 -0
  1249. package/dist/profile/lock.js +59 -0
  1250. package/dist/profile/lock.js.map +1 -0
  1251. package/dist/profile/plan-plugin.d.ts +44 -0
  1252. package/dist/profile/plan-plugin.d.ts.map +1 -0
  1253. package/dist/profile/plan-plugin.js +144 -0
  1254. package/dist/profile/plan-plugin.js.map +1 -0
  1255. package/dist/profile/plugin-profiles.d.ts +56 -0
  1256. package/dist/profile/plugin-profiles.d.ts.map +1 -0
  1257. package/dist/profile/plugin-profiles.js +192 -0
  1258. package/dist/profile/plugin-profiles.js.map +1 -0
  1259. package/dist/profile/policy-manifest.d.ts +53 -0
  1260. package/dist/profile/policy-manifest.d.ts.map +1 -0
  1261. package/dist/profile/policy-manifest.js +52 -0
  1262. package/dist/profile/policy-manifest.js.map +1 -0
  1263. package/dist/profile/profile-assembly.d.ts +74 -0
  1264. package/dist/profile/profile-assembly.d.ts.map +1 -0
  1265. package/dist/profile/profile-assembly.js +90 -0
  1266. package/dist/profile/profile-assembly.js.map +1 -0
  1267. package/dist/profile/profile-migration.d.ts +56 -0
  1268. package/dist/profile/profile-migration.d.ts.map +1 -0
  1269. package/dist/profile/profile-migration.js +60 -0
  1270. package/dist/profile/profile-migration.js.map +1 -0
  1271. package/dist/profile/profile-registry.d.ts +58 -0
  1272. package/dist/profile/profile-registry.d.ts.map +1 -0
  1273. package/dist/profile/profile-registry.js +74 -0
  1274. package/dist/profile/profile-registry.js.map +1 -0
  1275. package/dist/profile/role-assembly.d.ts +47 -0
  1276. package/dist/profile/role-assembly.d.ts.map +1 -0
  1277. package/dist/profile/role-assembly.js +31 -0
  1278. package/dist/profile/role-assembly.js.map +1 -0
  1279. package/dist/profile/role-catalog.d.ts +44 -0
  1280. package/dist/profile/role-catalog.d.ts.map +1 -0
  1281. package/dist/profile/role-catalog.js +130 -0
  1282. package/dist/profile/role-catalog.js.map +1 -0
  1283. package/dist/profile/role-orchestrator.d.ts +123 -0
  1284. package/dist/profile/role-orchestrator.d.ts.map +1 -0
  1285. package/dist/profile/role-orchestrator.js +194 -0
  1286. package/dist/profile/role-orchestrator.js.map +1 -0
  1287. package/dist/profile/role-runner.d.ts +99 -0
  1288. package/dist/profile/role-runner.d.ts.map +1 -0
  1289. package/dist/profile/role-runner.js +78 -0
  1290. package/dist/profile/role-runner.js.map +1 -0
  1291. package/dist/profile/root-facade.d.ts +36 -0
  1292. package/dist/profile/root-facade.d.ts.map +1 -0
  1293. package/dist/profile/root-facade.js +48 -0
  1294. package/dist/profile/root-facade.js.map +1 -0
  1295. package/dist/profile/skill-discovery-wiring.d.ts +58 -0
  1296. package/dist/profile/skill-discovery-wiring.d.ts.map +1 -0
  1297. package/dist/profile/skill-discovery-wiring.js +75 -0
  1298. package/dist/profile/skill-discovery-wiring.js.map +1 -0
  1299. package/dist/profile/state-store.d.ts +62 -0
  1300. package/dist/profile/state-store.d.ts.map +1 -0
  1301. package/dist/profile/state-store.js +140 -0
  1302. package/dist/profile/state-store.js.map +1 -0
  1303. package/dist/profile/todo-plugin.d.ts +37 -0
  1304. package/dist/profile/todo-plugin.d.ts.map +1 -0
  1305. package/dist/profile/todo-plugin.js +132 -0
  1306. package/dist/profile/todo-plugin.js.map +1 -0
  1307. package/dist/profiles/builtin-suites.d.ts +142 -0
  1308. package/dist/profiles/builtin-suites.d.ts.map +1 -0
  1309. package/dist/profiles/builtin-suites.js +395 -0
  1310. package/dist/profiles/builtin-suites.js.map +1 -0
  1311. package/dist/profiles/resolved-agent-profile.d.ts +83 -0
  1312. package/dist/profiles/resolved-agent-profile.d.ts.map +1 -0
  1313. package/dist/profiles/resolved-agent-profile.js +75 -0
  1314. package/dist/profiles/resolved-agent-profile.js.map +1 -0
  1315. package/dist/profiles/suite-lifecycle.d.ts +158 -0
  1316. package/dist/profiles/suite-lifecycle.d.ts.map +1 -0
  1317. package/dist/profiles/suite-lifecycle.js +447 -0
  1318. package/dist/profiles/suite-lifecycle.js.map +1 -0
  1319. package/dist/profiles/suite-loader.d.ts +410 -0
  1320. package/dist/profiles/suite-loader.d.ts.map +1 -0
  1321. package/dist/profiles/suite-loader.js +823 -0
  1322. package/dist/profiles/suite-loader.js.map +1 -0
  1323. package/dist/remote/server-assembly.d.ts +230 -0
  1324. package/dist/remote/server-assembly.d.ts.map +1 -0
  1325. package/dist/remote/server-assembly.js +1189 -0
  1326. package/dist/remote/server-assembly.js.map +1 -0
  1327. package/dist/remote/server-entry.d.ts +112 -0
  1328. package/dist/remote/server-entry.d.ts.map +1 -0
  1329. package/dist/remote/server-entry.js +239 -0
  1330. package/dist/remote/server-entry.js.map +1 -0
  1331. package/dist/remote/session-source.d.ts +101 -0
  1332. package/dist/remote/session-source.d.ts.map +1 -0
  1333. package/dist/remote/session-source.js +173 -0
  1334. package/dist/remote/session-source.js.map +1 -0
  1335. package/dist/rpc-entry.d.ts +3 -0
  1336. package/dist/rpc-entry.d.ts.map +1 -0
  1337. package/dist/rpc-entry.js +11 -0
  1338. package/dist/rpc-entry.js.map +1 -0
  1339. package/dist/server/create-harness.d.ts +26 -0
  1340. package/dist/server/create-harness.d.ts.map +1 -0
  1341. package/dist/server/create-harness.js +106 -0
  1342. package/dist/server/create-harness.js.map +1 -0
  1343. package/dist/share/session-share.d.ts +98 -0
  1344. package/dist/share/session-share.d.ts.map +1 -0
  1345. package/dist/share/session-share.js +89 -0
  1346. package/dist/share/session-share.js.map +1 -0
  1347. package/dist/share/share-viewer.d.ts +43 -0
  1348. package/dist/share/share-viewer.d.ts.map +1 -0
  1349. package/dist/share/share-viewer.js +103 -0
  1350. package/dist/share/share-viewer.js.map +1 -0
  1351. package/dist/testing/index.d.ts +4 -0
  1352. package/dist/testing/index.d.ts.map +1 -0
  1353. package/dist/testing/index.js +6 -0
  1354. package/dist/testing/index.js.map +1 -0
  1355. package/dist/testing/mock-ai-server.d.ts +77 -0
  1356. package/dist/testing/mock-ai-server.d.ts.map +1 -0
  1357. package/dist/testing/mock-ai-server.js +69 -0
  1358. package/dist/testing/mock-ai-server.js.map +1 -0
  1359. package/dist/testing/plugin-testkit.d.ts +148 -0
  1360. package/dist/testing/plugin-testkit.d.ts.map +1 -0
  1361. package/dist/testing/plugin-testkit.js +493 -0
  1362. package/dist/testing/plugin-testkit.js.map +1 -0
  1363. package/dist/testing/runtime-delivery-queue.d.ts +47 -0
  1364. package/dist/testing/runtime-delivery-queue.d.ts.map +1 -0
  1365. package/dist/testing/runtime-delivery-queue.js +158 -0
  1366. package/dist/testing/runtime-delivery-queue.js.map +1 -0
  1367. package/dist/testing/session-plugin-testkit.d.ts +144 -0
  1368. package/dist/testing/session-plugin-testkit.d.ts.map +1 -0
  1369. package/dist/testing/session-plugin-testkit.js +444 -0
  1370. package/dist/testing/session-plugin-testkit.js.map +1 -0
  1371. package/dist/utils/abort.d.ts +5 -0
  1372. package/dist/utils/abort.d.ts.map +1 -0
  1373. package/dist/utils/abort.js +53 -0
  1374. package/dist/utils/abort.js.map +1 -0
  1375. package/dist/utils/agent-forge-user-agent.d.ts +2 -0
  1376. package/dist/utils/agent-forge-user-agent.d.ts.map +1 -0
  1377. package/dist/utils/agent-forge-user-agent.js +5 -0
  1378. package/dist/utils/agent-forge-user-agent.js.map +1 -0
  1379. package/dist/utils/ansi.d.ts +2 -0
  1380. package/dist/utils/ansi.d.ts.map +1 -0
  1381. package/dist/utils/ansi.js +53 -0
  1382. package/dist/utils/ansi.js.map +1 -0
  1383. package/dist/utils/changelog.d.ts +22 -0
  1384. package/dist/utils/changelog.d.ts.map +1 -0
  1385. package/dist/utils/changelog.js +165 -0
  1386. package/dist/utils/changelog.js.map +1 -0
  1387. package/dist/utils/child-process.d.ts +18 -0
  1388. package/dist/utils/child-process.d.ts.map +1 -0
  1389. package/dist/utils/child-process.js +107 -0
  1390. package/dist/utils/child-process.js.map +1 -0
  1391. package/dist/utils/clipboard-image.d.ts +11 -0
  1392. package/dist/utils/clipboard-image.d.ts.map +1 -0
  1393. package/dist/utils/clipboard-image.js +246 -0
  1394. package/dist/utils/clipboard-image.js.map +1 -0
  1395. package/dist/utils/clipboard-native.d.ts +11 -0
  1396. package/dist/utils/clipboard-native.d.ts.map +1 -0
  1397. package/dist/utils/clipboard-native.js +22 -0
  1398. package/dist/utils/clipboard-native.js.map +1 -0
  1399. package/dist/utils/clipboard.d.ts +4 -0
  1400. package/dist/utils/clipboard.d.ts.map +1 -0
  1401. package/dist/utils/clipboard.js +161 -0
  1402. package/dist/utils/clipboard.js.map +1 -0
  1403. package/dist/utils/deprecation.d.ts +4 -0
  1404. package/dist/utils/deprecation.d.ts.map +1 -0
  1405. package/dist/utils/deprecation.js +13 -0
  1406. package/dist/utils/deprecation.js.map +1 -0
  1407. package/dist/utils/exif-orientation.d.ts +5 -0
  1408. package/dist/utils/exif-orientation.d.ts.map +1 -0
  1409. package/dist/utils/exif-orientation.js +158 -0
  1410. package/dist/utils/exif-orientation.js.map +1 -0
  1411. package/dist/utils/frontmatter.d.ts +8 -0
  1412. package/dist/utils/frontmatter.d.ts.map +1 -0
  1413. package/dist/utils/frontmatter.js +27 -0
  1414. package/dist/utils/frontmatter.js.map +1 -0
  1415. package/dist/utils/fs-watch.d.ts +5 -0
  1416. package/dist/utils/fs-watch.d.ts.map +1 -0
  1417. package/dist/utils/fs-watch.js +25 -0
  1418. package/dist/utils/fs-watch.js.map +1 -0
  1419. package/dist/utils/git.d.ts +26 -0
  1420. package/dist/utils/git.d.ts.map +1 -0
  1421. package/dist/utils/git.js +201 -0
  1422. package/dist/utils/git.js.map +1 -0
  1423. package/dist/utils/html.d.ts +7 -0
  1424. package/dist/utils/html.d.ts.map +1 -0
  1425. package/dist/utils/html.js +40 -0
  1426. package/dist/utils/html.js.map +1 -0
  1427. package/dist/utils/image-convert.d.ts +10 -0
  1428. package/dist/utils/image-convert.d.ts.map +1 -0
  1429. package/dist/utils/image-convert.js +45 -0
  1430. package/dist/utils/image-convert.js.map +1 -0
  1431. package/dist/utils/image-process.d.ts +18 -0
  1432. package/dist/utils/image-process.d.ts.map +1 -0
  1433. package/dist/utils/image-process.js +84 -0
  1434. package/dist/utils/image-process.js.map +1 -0
  1435. package/dist/utils/image-resize-core.d.ts +30 -0
  1436. package/dist/utils/image-resize-core.d.ts.map +1 -0
  1437. package/dist/utils/image-resize-core.js +125 -0
  1438. package/dist/utils/image-resize-core.js.map +1 -0
  1439. package/dist/utils/image-resize-worker.d.ts +2 -0
  1440. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  1441. package/dist/utils/image-resize-worker.js +31 -0
  1442. package/dist/utils/image-resize-worker.js.map +1 -0
  1443. package/dist/utils/image-resize.d.ts +16 -0
  1444. package/dist/utils/image-resize.d.ts.map +1 -0
  1445. package/dist/utils/image-resize.js +100 -0
  1446. package/dist/utils/image-resize.js.map +1 -0
  1447. package/dist/utils/json.d.ts +3 -0
  1448. package/dist/utils/json.d.ts.map +1 -0
  1449. package/dist/utils/json.js +8 -0
  1450. package/dist/utils/json.js.map +1 -0
  1451. package/dist/utils/management-http.d.ts +25 -0
  1452. package/dist/utils/management-http.d.ts.map +1 -0
  1453. package/dist/utils/management-http.js +54 -0
  1454. package/dist/utils/management-http.js.map +1 -0
  1455. package/dist/utils/mime.d.ts +3 -0
  1456. package/dist/utils/mime.d.ts.map +1 -0
  1457. package/dist/utils/mime.js +115 -0
  1458. package/dist/utils/mime.js.map +1 -0
  1459. package/dist/utils/open-browser.d.ts +9 -0
  1460. package/dist/utils/open-browser.d.ts.map +1 -0
  1461. package/dist/utils/open-browser.js +22 -0
  1462. package/dist/utils/open-browser.js.map +1 -0
  1463. package/dist/utils/paths.d.ts +34 -0
  1464. package/dist/utils/paths.d.ts.map +1 -0
  1465. package/dist/utils/paths.js +114 -0
  1466. package/dist/utils/paths.js.map +1 -0
  1467. package/dist/utils/photon.d.ts +21 -0
  1468. package/dist/utils/photon.d.ts.map +1 -0
  1469. package/dist/utils/photon.js +124 -0
  1470. package/dist/utils/photon.js.map +1 -0
  1471. package/dist/utils/shell.d.ts +34 -0
  1472. package/dist/utils/shell.d.ts.map +1 -0
  1473. package/dist/utils/shell.js +216 -0
  1474. package/dist/utils/shell.js.map +1 -0
  1475. package/dist/utils/sleep.d.ts +5 -0
  1476. package/dist/utils/sleep.d.ts.map +1 -0
  1477. package/dist/utils/sleep.js +17 -0
  1478. package/dist/utils/sleep.js.map +1 -0
  1479. package/dist/utils/sync-sleep.d.ts +2 -0
  1480. package/dist/utils/sync-sleep.d.ts.map +1 -0
  1481. package/dist/utils/sync-sleep.js +11 -0
  1482. package/dist/utils/sync-sleep.js.map +1 -0
  1483. package/dist/utils/syntax-highlight.d.ts +13 -0
  1484. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  1485. package/dist/utils/syntax-highlight.js +177 -0
  1486. package/dist/utils/syntax-highlight.js.map +1 -0
  1487. package/dist/utils/text.d.ts +8 -0
  1488. package/dist/utils/text.d.ts.map +1 -0
  1489. package/dist/utils/text.js +9 -0
  1490. package/dist/utils/text.js.map +1 -0
  1491. package/dist/utils/tool-result-images.d.ts +19 -0
  1492. package/dist/utils/tool-result-images.d.ts.map +1 -0
  1493. package/dist/utils/tool-result-images.js +45 -0
  1494. package/dist/utils/tool-result-images.js.map +1 -0
  1495. package/dist/utils/tools-manager.d.ts +24 -0
  1496. package/dist/utils/tools-manager.d.ts.map +1 -0
  1497. package/dist/utils/tools-manager.js +437 -0
  1498. package/dist/utils/tools-manager.js.map +1 -0
  1499. package/dist/utils/version-check.d.ts +21 -0
  1500. package/dist/utils/version-check.d.ts.map +1 -0
  1501. package/dist/utils/version-check.js +86 -0
  1502. package/dist/utils/version-check.js.map +1 -0
  1503. package/dist/utils/windows-self-update.d.ts +3 -0
  1504. package/dist/utils/windows-self-update.d.ts.map +1 -0
  1505. package/dist/utils/windows-self-update.js +77 -0
  1506. package/dist/utils/windows-self-update.js.map +1 -0
  1507. package/docs/compaction.md +348 -0
  1508. package/docs/containerization.md +114 -0
  1509. package/docs/development.md +71 -0
  1510. package/docs/docs.json +148 -0
  1511. package/docs/environment-variables.md +96 -0
  1512. package/docs/images/exy.png +0 -0
  1513. package/docs/images/interactive-mode.png +0 -0
  1514. package/docs/images/tree-view.png +0 -0
  1515. package/docs/index.md +76 -0
  1516. package/docs/json.md +98 -0
  1517. package/docs/keybindings.md +245 -0
  1518. package/docs/llama-cpp.md +101 -0
  1519. package/docs/models.md +576 -0
  1520. package/docs/packages.md +205 -0
  1521. package/docs/prompt-templates.md +96 -0
  1522. package/docs/providers.md +317 -0
  1523. package/docs/quickstart.md +167 -0
  1524. package/docs/rpc.md +1487 -0
  1525. package/docs/sdk.md +1146 -0
  1526. package/docs/security.md +24 -0
  1527. package/docs/session-format.md +438 -0
  1528. package/docs/sessions.md +145 -0
  1529. package/docs/settings.md +355 -0
  1530. package/docs/shell-aliases.md +13 -0
  1531. package/docs/skills.md +231 -0
  1532. package/docs/terminal-setup.md +192 -0
  1533. package/docs/termux.md +127 -0
  1534. package/docs/themes.md +320 -0
  1535. package/docs/tmux.md +63 -0
  1536. package/docs/tui.md +478 -0
  1537. package/docs/usage.md +291 -0
  1538. package/docs/windows.md +39 -0
  1539. package/examples/README.md +21 -0
  1540. package/examples/extensions/README.md +163 -0
  1541. package/examples/extensions/bash-spawn-hook/index.ts +37 -0
  1542. package/examples/extensions/bash-spawn-hook/plugin.json +10 -0
  1543. package/examples/extensions/bookmark/index.ts +67 -0
  1544. package/examples/extensions/bookmark/plugin.json +11 -0
  1545. package/examples/extensions/built-in-tool-renderer/index.ts +262 -0
  1546. package/examples/extensions/built-in-tool-renderer/plugin.json +10 -0
  1547. package/examples/extensions/claude-rules/index.ts +119 -0
  1548. package/examples/extensions/claude-rules/plugin.json +8 -0
  1549. package/examples/extensions/cli-bridge/README.md +27 -0
  1550. package/examples/extensions/cli-bridge/index.ts +320 -0
  1551. package/examples/extensions/cli-bridge/plugin.json +10 -0
  1552. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  1553. package/examples/extensions/dynamic-resources/dynamic.json +79 -0
  1554. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  1555. package/examples/extensions/dynamic-resources/index.ts +53 -0
  1556. package/examples/extensions/dynamic-resources/plugin.json +8 -0
  1557. package/examples/extensions/dynamic-tools/index.ts +102 -0
  1558. package/examples/extensions/dynamic-tools/plugin.json +14 -0
  1559. package/examples/extensions/event-bus/index.ts +75 -0
  1560. package/examples/extensions/event-bus/plugin.json +13 -0
  1561. package/examples/extensions/file-trigger/index.ts +65 -0
  1562. package/examples/extensions/file-trigger/plugin.json +13 -0
  1563. package/examples/extensions/goal/README.md +16 -0
  1564. package/examples/extensions/goal/index.ts +134 -0
  1565. package/examples/extensions/goal/plugin.json +12 -0
  1566. package/examples/extensions/hello/index.ts +29 -0
  1567. package/examples/extensions/hello/plugin.json +10 -0
  1568. package/examples/extensions/kimi-deferred-tools/index.ts +93 -0
  1569. package/examples/extensions/kimi-deferred-tools/plugin.json +11 -0
  1570. package/examples/extensions/mcp-stdio/README.md +19 -0
  1571. package/examples/extensions/mcp-stdio/index.d.ts +64 -0
  1572. package/examples/extensions/mcp-stdio/index.d.ts.map +1 -0
  1573. package/examples/extensions/mcp-stdio/index.js +292 -0
  1574. package/examples/extensions/mcp-stdio/index.js.map +1 -0
  1575. package/examples/extensions/mcp-stdio/index.ts +381 -0
  1576. package/examples/extensions/mcp-stdio/plugin.json +10 -0
  1577. package/examples/extensions/memory-backend/index.ts +120 -0
  1578. package/examples/extensions/memory-backend/plugin.json +10 -0
  1579. package/examples/extensions/minimal-mode/index.ts +447 -0
  1580. package/examples/extensions/minimal-mode/plugin.json +10 -0
  1581. package/examples/extensions/multi-agent/README.md +7 -0
  1582. package/examples/extensions/multi-agent/index.ts +592 -0
  1583. package/examples/extensions/multi-agent/plugin.json +13 -0
  1584. package/examples/extensions/notify/index.ts +70 -0
  1585. package/examples/extensions/notify/plugin.json +8 -0
  1586. package/examples/extensions/permission-gate/index.ts +55 -0
  1587. package/examples/extensions/permission-gate/plugin.json +11 -0
  1588. package/examples/extensions/pirate/index.ts +75 -0
  1589. package/examples/extensions/pirate/plugin.json +8 -0
  1590. package/examples/extensions/plan/README.md +16 -0
  1591. package/examples/extensions/plan/index.ts +136 -0
  1592. package/examples/extensions/plan/plugin.json +12 -0
  1593. package/examples/extensions/prompt-customizer/index.ts +117 -0
  1594. package/examples/extensions/prompt-customizer/plugin.json +8 -0
  1595. package/examples/extensions/protected-paths/index.ts +44 -0
  1596. package/examples/extensions/protected-paths/plugin.json +11 -0
  1597. package/examples/extensions/provider-attribution/README.md +12 -0
  1598. package/examples/extensions/provider-attribution/index.ts +86 -0
  1599. package/examples/extensions/provider-attribution/plugin.json +10 -0
  1600. package/examples/extensions/send-user-message/index.ts +118 -0
  1601. package/examples/extensions/send-user-message/plugin.json +11 -0
  1602. package/examples/extensions/session-name/index.ts +31 -0
  1603. package/examples/extensions/session-name/plugin.json +11 -0
  1604. package/examples/extensions/session-share/README.md +15 -0
  1605. package/examples/extensions/session-share/index.ts +170 -0
  1606. package/examples/extensions/session-share/plugin.json +15 -0
  1607. package/examples/extensions/structured-output/index.ts +68 -0
  1608. package/examples/extensions/structured-output/plugin.json +10 -0
  1609. package/examples/extensions/subagent/README.md +177 -0
  1610. package/examples/extensions/subagent/agents/planner.md +37 -0
  1611. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  1612. package/examples/extensions/subagent/agents/scout.md +50 -0
  1613. package/examples/extensions/subagent/agents/worker.md +24 -0
  1614. package/examples/extensions/subagent/agents.ts +157 -0
  1615. package/examples/extensions/subagent/index.ts +1057 -0
  1616. package/examples/extensions/subagent/plugin.json +13 -0
  1617. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  1618. package/examples/extensions/subagent/prompts/implement.md +10 -0
  1619. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  1620. package/examples/extensions/suite-manager/README.md +45 -0
  1621. package/examples/extensions/suite-manager/index.ts +182 -0
  1622. package/examples/extensions/suite-manager/plugin.json +13 -0
  1623. package/examples/extensions/timed-confirm/index.ts +93 -0
  1624. package/examples/extensions/timed-confirm/plugin.json +13 -0
  1625. package/examples/extensions/todo-set/README.md +18 -0
  1626. package/examples/extensions/todo-set/index.ts +133 -0
  1627. package/examples/extensions/todo-set/plugin.json +12 -0
  1628. package/examples/extensions/tool-override/index.ts +159 -0
  1629. package/examples/extensions/tool-override/plugin.json +11 -0
  1630. package/examples/extensions/trigger-compact/index.ts +76 -0
  1631. package/examples/extensions/trigger-compact/plugin.json +14 -0
  1632. package/examples/extensions/truncated-tool/index.ts +204 -0
  1633. package/examples/extensions/truncated-tool/plugin.json +10 -0
  1634. package/examples/extensions/with-deps/index.ts +42 -0
  1635. package/examples/extensions/with-deps/package-lock.json +31 -0
  1636. package/examples/extensions/with-deps/package.json +22 -0
  1637. package/examples/extensions/with-deps/plugin.json +10 -0
  1638. package/examples/remote-client.ts +66 -0
  1639. package/examples/rpc-extension-ui.ts +641 -0
  1640. package/examples/sdk/01-minimal.ts +26 -0
  1641. package/examples/sdk/02-custom-model.ts +49 -0
  1642. package/examples/sdk/03-custom-prompt.ts +70 -0
  1643. package/examples/sdk/04-skills.ts +55 -0
  1644. package/examples/sdk/05-tools.ts +48 -0
  1645. package/examples/sdk/07-context-files.ts +42 -0
  1646. package/examples/sdk/08-prompt-templates.ts +51 -0
  1647. package/examples/sdk/09-api-keys-and-oauth.ts +34 -0
  1648. package/examples/sdk/10-settings.ts +53 -0
  1649. package/examples/sdk/11-sessions.ts +52 -0
  1650. package/examples/sdk/12-full-control.ts +72 -0
  1651. package/examples/sdk/13-session-runtime.ts +71 -0
  1652. package/examples/sdk/14-custom-session-storage.ts +132 -0
  1653. package/examples/sdk/README.md +139 -0
  1654. package/package.json +111 -0
package/dist/main.js ADDED
@@ -0,0 +1,1630 @@
1
+ /**
2
+ * Main entry point for the coding agent CLI.
3
+ *
4
+ * This file handles CLI argument parsing and translates them into
5
+ * createAgentSession() options. The SDK does the heavy lifting.
6
+ */
7
+ import { existsSync } from "node:fs";
8
+ import { join } from "node:path";
9
+ import { createInterface } from "node:readline";
10
+ import { modelsAreEqual } from "@agent-forge/ai";
11
+ import { setCapabilityOverrides } from "@agent-forge/tui";
12
+ import chalk from "chalk";
13
+ import { isValidHostLogLevel, normalizeSessionName, parseArgs, printHelp } from "./cli/args.js";
14
+ import { checkProviderAuth, createAuthCheckModelRuntime, getProviderCredential, } from "./cli/auth-check.js";
15
+ import { AuthCommandError, getAuthCommandName, getAuthCommandUsage, isAuthCommandHelp, parseAuthCommand, printAuthCommandHelp, validateAuthCommandArgs, } from "./cli/auth-command.js";
16
+ import { resolveCredentialForPrint } from "./cli/credential-print.js";
17
+ import { processFileArguments } from "./cli/file-processor.js";
18
+ import { buildInitialMessage } from "./cli/initial-message.js";
19
+ import { listModels } from "./cli/list-models.js";
20
+ import { handlePluginEcosystemCommand } from "./cli/plugin-command.js";
21
+ import { runServeMode } from "./cli/serve.js";
22
+ import { resolveSessionPath, selectSession } from "./cli/session-picker.js";
23
+ import { shouldRunFirstTimeSetup, showFirstTimeSetup, showStartupSelector } from "./cli/startup-ui.js";
24
+ import { runTraceView } from "./cli/trace-view.js";
25
+ import { APP_NAME, CONFIG_DIR_NAME, ENV_SESSION_DIR, expandTildePath, getAgentDir, getPackageDir, getSessionsDir, VERSION, } from "./config.js";
26
+ import { createAgentSessionRuntime } from "./core/agent-session-runtime.js";
27
+ import { createAgentSessionFromServices, createAgentSessionServices, } from "./core/agent-session-services.js";
28
+ import { formatNoModelsAvailableMessage } from "./core/auth-guidance.js";
29
+ import { AuthStorage, ReadOnlyAuthStorage } from "./core/auth-storage.js";
30
+ import { exportFromFile } from "./core/export-html/index.js";
31
+ import { applyHttpProxySettings, configureHttpDispatcher } from "./core/http-dispatcher.js";
32
+ import { createHostLogger } from "./core/logger.js";
33
+ import { resolveCliModel, resolveModelScope } from "./core/model-resolver.js";
34
+ import { ModelRuntime } from "./core/model-runtime.js";
35
+ import { restoreStdout, takeOverStdout } from "./core/output-guard.js";
36
+ import { formatMissingSessionCwdPrompt, getMissingSessionCwdIssue, MissingSessionCwdError, } from "./core/session-cwd.js";
37
+ import { assertValidSessionId, SessionManager } from "./core/session-manager.js";
38
+ import { collectSettingsDiagnostics, deduplicateDiagnostics } from "./core/settings-diagnostics.js";
39
+ import { SettingsManager } from "./core/settings-manager.js";
40
+ import { sweepTraceFiles } from "./core/trace-retention.js";
41
+ import { createDefaultActivePluginBindingsResolverV1, defaultPluginHostFactsV1, } from "./plugins/ecosystem/default-active-bindings.js";
42
+ import { runNodePluginBootstrapV1 } from "./plugins/ecosystem/node-plugin-bootstrap.js";
43
+ import { createPluginSelectionStoreV1 } from "./plugins/ecosystem/selection-store.js";
44
+ import { defaultBuiltinVerifiedPluginsV1, listBuiltinPluginProfilesV1, } from "./profile/plugin-profiles.js";
45
+ import { isBuiltinSuiteId } from "./profiles/builtin-suites.js";
46
+ import { clearDanglingSuiteSettings, createSuite, deleteSuite, findSuiteSessionRefs, releaseTrashedSuite, resetSuite, SuiteLifecycleError, sweepSuiteTrash, } from "./profiles/suite-lifecycle.js";
47
+ import { getSuiteWorkspaceDir, listSuiteIds, SUITE_ENV_VAR, SUITE_MANIFEST_FILENAME, SuiteRebindError, SuiteResolutionError, } from "./profiles/suite-loader.js";
48
+ import { createSubagentMailbox, createTurnProgressSourceV1 } from "@agent-forge/protocol/subagent";
49
+ import { agentSessionsDir } from "./core/agent-session-paths.js";
50
+ import { findSessionFile, readAgentSession } from "./core/agent-session-store.js";
51
+ import { parseAgentTaskChildProfileV1, } from "./core/extensions/public-api.js";
52
+ import { printTimings, resetTimings, time } from "./core/timings.js";
53
+ import { runMigrations, showDeprecationWarnings } from "./migrations.js";
54
+ import { InteractiveMode, runPrintMode, runRpcMode } from "./modes/index.js";
55
+ import { initTheme, stopThemeWatcher } from "./modes/interactive/theme/theme.js";
56
+ import { cleanupManagedInstall, handleConfigCommand, handlePackageCommand } from "./package-manager-cli.js";
57
+ import { runSubagentTaskRunner } from "./plugins/subagent-task/runner-entry.js";
58
+ import { createSubagentTaskSessionFactoryV1 } from "./plugins/subagent-task/session-factory.js";
59
+ import { isLocalPath, normalizePath, resolvePath } from "./utils/paths.js";
60
+ import { cleanupWindowsSelfUpdateQuarantine } from "./utils/windows-self-update.js";
61
+ /**
62
+ * Process-level host logger (设计 §5), created lazily by {@link main}. The
63
+ * logger owns the process-wide uncaughtException/unhandledRejection hooks, so
64
+ * repeated `main()` invocations (tests, embedding loops) must reuse the first
65
+ * instance instead of accumulating listeners.
66
+ */
67
+ let processHostLogger;
68
+ /**
69
+ * Read all content from piped stdin.
70
+ * Returns undefined if stdin is a TTY (interactive terminal).
71
+ */
72
+ async function readPipedStdin() {
73
+ // If stdin is a TTY, we're running interactively - don't read stdin
74
+ if (process.stdin.isTTY) {
75
+ return undefined;
76
+ }
77
+ return new Promise((resolve) => {
78
+ let data = "";
79
+ process.stdin.setEncoding("utf8");
80
+ process.stdin.on("data", (chunk) => {
81
+ data += chunk;
82
+ });
83
+ process.stdin.on("end", () => {
84
+ resolve(data.trim() || undefined);
85
+ });
86
+ process.stdin.resume();
87
+ });
88
+ }
89
+ /**
90
+ * Suite 漂移/升级提示降噪(借鉴 lastChangelogVersion 的"记已见版本"模式):
91
+ * 同一 suite 的同版本漂移/升级诊断只呈现一次——首次见到时保留并记录 ack,
92
+ * 之后相同指纹的提示在启动面静默(诊断仍可经 /debug 面查看)。新指纹
93
+ * (锁内容变化、更高的 factory revision)会重新提示。
94
+ */
95
+ function filterAcknowledgedSuiteNotices(diagnostics, settingsManager) {
96
+ const driftPattern = /^Suite "([^"]+)" profile lock (drift|migration required): (.+)$/;
97
+ const upgradePattern = /^Suite "([^"]+)": factory revision (\d+) available/;
98
+ const kept = [];
99
+ for (const diagnostic of diagnostics) {
100
+ const drift = driftPattern.exec(diagnostic.message);
101
+ const upgrade = drift === null ? upgradePattern.exec(diagnostic.message) : undefined;
102
+ if (drift === null && upgrade === null) {
103
+ kept.push(diagnostic);
104
+ continue;
105
+ }
106
+ const upgradeRevisionMatch = upgrade?.[2];
107
+ const suiteId = drift?.[1] ?? upgrade?.[1];
108
+ if (suiteId === undefined) {
109
+ kept.push(diagnostic);
110
+ continue;
111
+ }
112
+ const previous = settingsManager.getSuiteNoticeAcknowledgement(suiteId);
113
+ if (drift !== null) {
114
+ const digest = drift[3] ?? "";
115
+ if (previous?.driftDigest === digest)
116
+ continue;
117
+ settingsManager.setSuiteNoticeAcknowledgement(suiteId, {
118
+ ...(previous ?? {}),
119
+ driftDigest: digest,
120
+ });
121
+ }
122
+ else if (upgrade !== null && upgradeRevisionMatch !== undefined) {
123
+ const revision = Number.parseInt(upgradeRevisionMatch, 10);
124
+ if (previous?.upgradeRevision !== undefined && previous.upgradeRevision >= revision)
125
+ continue;
126
+ settingsManager.setSuiteNoticeAcknowledgement(suiteId, {
127
+ ...(previous ?? {}),
128
+ upgradeRevision: revision,
129
+ });
130
+ }
131
+ kept.push(diagnostic);
132
+ }
133
+ return kept;
134
+ }
135
+ function reportDiagnostics(diagnostics) {
136
+ for (const diagnostic of diagnostics) {
137
+ const color = diagnostic.type === "error" ? chalk.red : diagnostic.type === "warning" ? chalk.yellow : chalk.dim;
138
+ const prefix = diagnostic.type === "error" ? "Error: " : diagnostic.type === "warning" ? "Warning: " : "";
139
+ console.error(color(`${prefix}${diagnostic.message}`));
140
+ }
141
+ }
142
+ function isTruthyEnvFlag(value) {
143
+ if (!value)
144
+ return false;
145
+ return value === "1" || value.toLowerCase() === "true" || value.toLowerCase() === "yes";
146
+ }
147
+ function resolveAppMode(parsed, stdinIsTTY, stdoutIsTTY) {
148
+ // Headless subagent runner (D-045): stdout is the subagent-task protocol
149
+ // channel, so this mode must never classify as interactive.
150
+ if (parsed.subagentRunner === true) {
151
+ return "print";
152
+ }
153
+ if (parsed.mode === "rpc") {
154
+ return "rpc";
155
+ }
156
+ if (parsed.mode === "json") {
157
+ return "json";
158
+ }
159
+ if (parsed.print || !stdinIsTTY || !stdoutIsTTY) {
160
+ return "print";
161
+ }
162
+ return "interactive";
163
+ }
164
+ function toPrintOutputMode(appMode) {
165
+ return appMode === "json" ? "json" : "text";
166
+ }
167
+ function isPlainRuntimeMetadataCommand(parsed) {
168
+ return !parsed.print && parsed.mode === undefined && (parsed.help === true || parsed.listModels !== undefined);
169
+ }
170
+ async function runAuthCommand(args) {
171
+ if (isAuthCommandHelp(args)) {
172
+ printAuthCommandHelp();
173
+ return true;
174
+ }
175
+ let command;
176
+ try {
177
+ command = parseAuthCommand(args);
178
+ }
179
+ catch (error) {
180
+ const message = error instanceof AuthCommandError ? error.message : "Failed to parse auth command";
181
+ console.error(chalk.red(`Error: ${message}`));
182
+ process.exitCode = 1;
183
+ return true;
184
+ }
185
+ if (!command)
186
+ return false;
187
+ const parsed = parseArgs(command.args);
188
+ // Unknown long options keep the dedicated "Invalid arguments" surface; every
189
+ // other parse diagnostic keeps the auth-check failure semantics (exit 2 for
190
+ // `auth check`) via the AuthCommandError path inside the try below.
191
+ const unknownLongOptions = parsed.diagnostics.filter((diagnostic) => diagnostic.message.startsWith("Unknown option: --"));
192
+ if (unknownLongOptions.length > 0) {
193
+ for (const diagnostic of unknownLongOptions) {
194
+ console.error(chalk.red(`Error: ${diagnostic.message}`));
195
+ }
196
+ console.error(chalk.red(`Invalid arguments for "${getAuthCommandName(command.kind)}".`));
197
+ console.error(chalk.dim(`Use "${APP_NAME} --help" or "${getAuthCommandUsage(command.kind)}".`));
198
+ process.exitCode = 1;
199
+ return true;
200
+ }
201
+ try {
202
+ if (parsed.diagnostics.length > 0) {
203
+ throw new AuthCommandError(parsed.diagnostics.map((diagnostic) => diagnostic.message).join("\n"));
204
+ }
205
+ if (command.kind !== "check") {
206
+ const signal = AbortSignal.timeout(15_000);
207
+ const modelRuntime = await ModelRuntime.create({ allowModelNetwork: false, signal });
208
+ const credential = await resolveCredentialForPrint(parsed, modelRuntime, command.kind, command.minExpiryMs, signal);
209
+ process.stdout.write(`${credential}\n`);
210
+ return true;
211
+ }
212
+ const requestedAuth = validateAuthCommandArgs(parsed, command.kind);
213
+ let result;
214
+ let credential;
215
+ try {
216
+ const credentials = command.noRefresh ? new ReadOnlyAuthStorage() : AuthStorage.create();
217
+ const modelRuntime = await createAuthCheckModelRuntime(credentials);
218
+ result = await checkProviderAuth(parsed, modelRuntime, { refresh: !command.noRefresh });
219
+ if (command.credentials && result.status === "ready") {
220
+ credential = await getProviderCredential(result.provider, modelRuntime, credentials, {
221
+ refresh: !command.noRefresh,
222
+ });
223
+ if (!credential) {
224
+ result = { status: "not_ready", provider: result.provider, reason: "credential_not_available" };
225
+ }
226
+ }
227
+ }
228
+ catch {
229
+ result = {
230
+ status: "invalid",
231
+ provider: requestedAuth.provider ?? requestedAuth.model,
232
+ reason: "invalid_state",
233
+ };
234
+ }
235
+ const output = command.json
236
+ ? JSON.stringify({ ...result, ...(credential ? { credentials: credential } : {}) })
237
+ : (credential ?? result.status);
238
+ process.stdout.write(`${output}\n`);
239
+ process.exitCode = result.status === "ready" ? 0 : result.status === "not_ready" ? 1 : 2;
240
+ }
241
+ catch (error) {
242
+ const message = error instanceof AuthCommandError ? error.message : "Failed to resolve credential";
243
+ console.error(chalk.red(`Error: ${message}`));
244
+ process.exitCode = command.kind === "check" ? 2 : 1;
245
+ }
246
+ return true;
247
+ }
248
+ async function prepareInitialMessage(parsed, autoResizeImages, stdinContent) {
249
+ if (parsed.fileArgs.length === 0) {
250
+ return buildInitialMessage({ parsed, stdinContent });
251
+ }
252
+ const { text, images } = await processFileArguments(parsed.fileArgs, { autoResizeImages });
253
+ return buildInitialMessage({
254
+ parsed,
255
+ fileText: text,
256
+ fileImages: images,
257
+ stdinContent,
258
+ });
259
+ }
260
+ async function findLocalSessionByExactId(sessionId, cwd, sessionDir) {
261
+ const localSessions = await SessionManager.list(cwd, sessionDir);
262
+ const localMatch = localSessions.find((s) => s.id === sessionId);
263
+ return localMatch ? { type: "local", path: localMatch.path } : undefined;
264
+ }
265
+ /** Prompt user for yes/no confirmation */
266
+ async function promptConfirm(message) {
267
+ return new Promise((resolve) => {
268
+ const rl = createInterface({
269
+ input: process.stdin,
270
+ output: process.stdout,
271
+ });
272
+ rl.question(`${message} [y/N] `, (answer) => {
273
+ rl.close();
274
+ resolve(answer.toLowerCase() === "y" || answer.toLowerCase() === "yes");
275
+ });
276
+ });
277
+ }
278
+ function printSuiteLifecycleError(error) {
279
+ const message = error instanceof Error ? error.message : String(error);
280
+ console.error(chalk.red(`Error: ${message}`));
281
+ }
282
+ function suiteWorkspaceExists(agentDir, id) {
283
+ return existsSync(join(getSuiteWorkspaceDir(agentDir, id), SUITE_MANIFEST_FILENAME));
284
+ }
285
+ /**
286
+ * Suite lifecycle one-shot actions (设计 §9, M4): --suite-create/--suite-delete/
287
+ * --suite-reset. Every performed action terminates the process; without any
288
+ * lifecycle flag this returns and startup continues. Non-interactive stdin
289
+ * refuses destructive actions (safe default).
290
+ */
291
+ async function handleSuiteLifecycleCommands(parsed, cwd, agentDir) {
292
+ if (parsed.suiteCreate !== undefined) {
293
+ try {
294
+ const result = createSuite({
295
+ agentDir,
296
+ id: parsed.suiteCreate,
297
+ ...(parsed.cloneFrom === undefined ? {} : { cloneFrom: parsed.cloneFrom }),
298
+ });
299
+ console.log(`Created suite "${result.suiteId}" at ${result.suiteDir}`);
300
+ }
301
+ catch (error) {
302
+ printSuiteLifecycleError(error);
303
+ process.exit(1);
304
+ }
305
+ process.exit(0);
306
+ }
307
+ if (parsed.cloneFrom !== undefined) {
308
+ console.error(chalk.red("Error: --clone-from requires --suite-create"));
309
+ process.exit(1);
310
+ }
311
+ if (parsed.suiteDelete !== undefined) {
312
+ const id = parsed.suiteDelete;
313
+ if (isBuiltinSuiteId(id)) {
314
+ printSuiteLifecycleError(new SuiteLifecycleError("delete", id, [`builtin suite "${id}" cannot be deleted`]));
315
+ process.exit(1);
316
+ }
317
+ if (!suiteWorkspaceExists(agentDir, id)) {
318
+ printSuiteLifecycleError(new SuiteResolutionError(id, listSuiteIds(agentDir)));
319
+ process.exit(1);
320
+ }
321
+ const refs = findSuiteSessionRefs(agentDir, id);
322
+ if (refs.length > 0) {
323
+ console.error(chalk.red(`Error: suite "${id}" is referenced by ${refs.length} existing session(s); deletion refused:`));
324
+ for (const ref of refs) {
325
+ console.error(` ${ref.sessionId} ${ref.path}`);
326
+ }
327
+ process.exit(1);
328
+ }
329
+ const suiteDir = getSuiteWorkspaceDir(agentDir, id);
330
+ console.log(`Deleting suite "${id}": the workspace directory ${suiteDir} will be moved to the trash and released.`);
331
+ if (!process.stdin.isTTY) {
332
+ console.error(chalk.red(`Refusing to delete suite "${id}" without an interactive confirmation (non-interactive stdin). Re-run in a terminal to confirm.`));
333
+ process.exit(1);
334
+ }
335
+ if (!(await promptConfirm(`Delete suite "${id}"?`))) {
336
+ console.log(`Aborted: suite "${id}" was not deleted.`);
337
+ process.exit(1);
338
+ }
339
+ try {
340
+ const result = deleteSuite({ agentDir, id, refs });
341
+ const cleanup = clearDanglingSuiteSettings(SettingsManager.create(cwd, agentDir), id);
342
+ for (const scope of cleanup.clearedScopes) {
343
+ console.log(`Cleared the ${scope} settings "suite" key (pointed at "${id}").`);
344
+ }
345
+ releaseTrashedSuite(result.trashPath);
346
+ console.log(`Deleted suite "${id}"; the workspace was moved to ${result.trashPath} and is being released.`);
347
+ }
348
+ catch (error) {
349
+ printSuiteLifecycleError(error);
350
+ process.exit(1);
351
+ }
352
+ process.exit(0);
353
+ }
354
+ if (parsed.suiteReset !== undefined) {
355
+ const id = parsed.suiteReset;
356
+ if (!isBuiltinSuiteId(id)) {
357
+ const message = listSuiteIds(agentDir).includes(id)
358
+ ? `Suite "${id}" is a user suite; only builtin suites can be reset — use --suite-delete instead.`
359
+ : new SuiteResolutionError(id, listSuiteIds(agentDir)).message;
360
+ console.error(chalk.red(`Error: ${message}`));
361
+ process.exit(1);
362
+ }
363
+ try {
364
+ const plan = resetSuite({ agentDir, id });
365
+ if (plan.diffText.length === 0) {
366
+ console.log(`Suite "${id}" already matches the factory contents; nothing to reset.`);
367
+ process.exit(0);
368
+ }
369
+ console.log(`Resetting builtin suite "${id}" to the factory contents:\n`);
370
+ console.log(plan.diffText);
371
+ if (!process.stdin.isTTY) {
372
+ console.error(chalk.red(`Refusing to reset suite "${id}" without an interactive confirmation (non-interactive stdin). Review the diff above and re-run in a terminal to confirm.`));
373
+ process.exit(1);
374
+ }
375
+ if (!(await promptConfirm(`Apply reset of suite "${id}"?`))) {
376
+ console.log(`Aborted: suite "${id}" was not reset.`);
377
+ process.exit(1);
378
+ }
379
+ const result = plan.apply();
380
+ console.log(`Suite "${id}" was reset to the factory contents (profile lock generation ${result.lock.generation}).`);
381
+ }
382
+ catch (error) {
383
+ printSuiteLifecycleError(error);
384
+ process.exit(1);
385
+ }
386
+ process.exit(0);
387
+ }
388
+ }
389
+ function validateForkFlags(parsed) {
390
+ if (!parsed.fork)
391
+ return;
392
+ const conflictingFlags = [
393
+ parsed.session ? "--session" : undefined,
394
+ parsed.continue ? "--continue" : undefined,
395
+ parsed.resume ? "--resume" : undefined,
396
+ parsed.noSession ? "--no-session" : undefined,
397
+ ].filter((flag) => flag !== undefined);
398
+ if (conflictingFlags.length > 0) {
399
+ console.error(chalk.red(`Error: --fork cannot be combined with ${conflictingFlags.join(", ")}`));
400
+ process.exit(1);
401
+ }
402
+ }
403
+ function validateSessionIdFlags(parsed) {
404
+ if (parsed.sessionId === undefined)
405
+ return;
406
+ const conflictingFlags = [
407
+ parsed.session ? "--session" : undefined,
408
+ parsed.continue ? "--continue" : undefined,
409
+ parsed.resume ? "--resume" : undefined,
410
+ ].filter((flag) => flag !== undefined);
411
+ if (conflictingFlags.length > 0) {
412
+ console.error(chalk.red(`Error: --session-id cannot be combined with ${conflictingFlags.join(", ")}. To resume that exact session, drop the other flags and use --session-id alone (or use --continue to resume the most recent session).`));
413
+ process.exit(1);
414
+ }
415
+ try {
416
+ assertValidSessionId(parsed.sessionId);
417
+ }
418
+ catch (error) {
419
+ const message = error instanceof Error ? error.message : String(error);
420
+ console.error(chalk.red(`Error: ${message}`));
421
+ process.exit(1);
422
+ }
423
+ }
424
+ function openSessionOrExit(path, sessionDir) {
425
+ try {
426
+ return SessionManager.open(path, sessionDir);
427
+ }
428
+ catch (error) {
429
+ const message = error instanceof Error ? error.message : String(error);
430
+ console.error(chalk.red(`Error: ${message}`));
431
+ process.exit(1);
432
+ }
433
+ }
434
+ function forkSessionOrExit(sourcePath, cwd, sessionDir, sessionId) {
435
+ try {
436
+ return SessionManager.forkFrom(sourcePath, cwd, sessionDir, { id: sessionId });
437
+ }
438
+ catch (error) {
439
+ const message = error instanceof Error ? error.message : String(error);
440
+ console.error(chalk.red(`Error: ${message}`));
441
+ process.exit(1);
442
+ }
443
+ }
444
+ export async function createSessionManager(parsed, cwd, sessionDir, settingsManager) {
445
+ if (parsed.noSession || parsed.help || parsed.listModels !== undefined) {
446
+ return SessionManager.inMemory(cwd, parsed.sessionId !== undefined ? { id: parsed.sessionId } : undefined);
447
+ }
448
+ if (parsed.fork) {
449
+ if (parsed.sessionId) {
450
+ const existingTarget = await findLocalSessionByExactId(parsed.sessionId, cwd, sessionDir);
451
+ if (existingTarget) {
452
+ console.error(chalk.red(`Session already exists with id '${parsed.sessionId}'`));
453
+ process.exit(1);
454
+ }
455
+ }
456
+ const resolved = await resolveSessionPath(parsed.fork, cwd, sessionDir);
457
+ switch (resolved.type) {
458
+ case "path":
459
+ case "local":
460
+ case "global":
461
+ return forkSessionOrExit(resolved.path, cwd, sessionDir, parsed.sessionId);
462
+ case "not_found":
463
+ console.error(chalk.red(`No session found matching '${resolved.arg}'`));
464
+ process.exit(1);
465
+ }
466
+ }
467
+ if (parsed.session) {
468
+ const resolved = await resolveSessionPath(parsed.session, cwd, sessionDir);
469
+ switch (resolved.type) {
470
+ case "path":
471
+ case "local":
472
+ return openSessionOrExit(resolved.path, sessionDir);
473
+ case "global": {
474
+ console.log(chalk.yellow(`Session found in different project: ${resolved.cwd}`));
475
+ const shouldFork = await promptConfirm("Fork this session into current directory?");
476
+ if (!shouldFork) {
477
+ console.log(chalk.dim("Aborted."));
478
+ process.exit(0);
479
+ }
480
+ return forkSessionOrExit(resolved.path, cwd, sessionDir);
481
+ }
482
+ case "not_found":
483
+ console.error(chalk.red(`No session found matching '${resolved.arg}'`));
484
+ process.exit(1);
485
+ }
486
+ }
487
+ if (parsed.resume) {
488
+ try {
489
+ const selectedPath = await selectSession((onProgress) => SessionManager.list(cwd, sessionDir, onProgress), (onProgress) => SessionManager.listAll(sessionDir, onProgress), settingsManager);
490
+ if (!selectedPath) {
491
+ console.log(chalk.dim("No session selected"));
492
+ process.exit(0);
493
+ }
494
+ return SessionManager.open(selectedPath, sessionDir);
495
+ }
496
+ finally {
497
+ stopThemeWatcher();
498
+ }
499
+ }
500
+ if (parsed.continue) {
501
+ return SessionManager.continueRecent(cwd, sessionDir);
502
+ }
503
+ if (parsed.sessionId) {
504
+ const existingSession = await findLocalSessionByExactId(parsed.sessionId, cwd, sessionDir);
505
+ if (existingSession) {
506
+ return SessionManager.open(existingSession.path, sessionDir);
507
+ }
508
+ console.error(chalk.yellow(`Warning: No project session found with id '${parsed.sessionId}'; creating a new session with that id.`));
509
+ }
510
+ return SessionManager.create(cwd, sessionDir, { id: parsed.sessionId });
511
+ }
512
+ function buildSessionOptions(parsed, scopedModels, hasExistingSession, modelRuntime, settingsManager) {
513
+ const options = {};
514
+ const diagnostics = [];
515
+ let cliThinkingFromModel = false;
516
+ // Model from CLI
517
+ // - supports --provider <name> --model <pattern>
518
+ // - supports --model <provider>/<pattern>
519
+ if (parsed.model) {
520
+ const resolved = resolveCliModel({
521
+ cliProvider: parsed.provider,
522
+ cliModel: parsed.model,
523
+ cliThinking: parsed.thinking,
524
+ modelRuntime,
525
+ });
526
+ if (resolved.warning) {
527
+ diagnostics.push({ type: "warning", message: resolved.warning });
528
+ }
529
+ if (resolved.error) {
530
+ diagnostics.push({ type: "error", message: resolved.error });
531
+ }
532
+ if (resolved.model) {
533
+ options.model = resolved.model;
534
+ // Allow "--model <pattern>:<thinking>" as a shorthand.
535
+ // Explicit --thinking still takes precedence (applied later).
536
+ if (!parsed.thinking && resolved.thinkingLevel) {
537
+ options.thinkingLevel = resolved.thinkingLevel;
538
+ cliThinkingFromModel = true;
539
+ }
540
+ }
541
+ }
542
+ if (!options.model && scopedModels.length > 0 && !hasExistingSession) {
543
+ // Check if saved default is in scoped models - use it if so, otherwise first scoped model
544
+ const savedProvider = settingsManager.getDefaultProvider();
545
+ const savedModelId = settingsManager.getDefaultModel();
546
+ const savedModel = savedProvider && savedModelId ? modelRuntime.getModel(savedProvider, savedModelId) : undefined;
547
+ const savedInScope = savedModel ? scopedModels.find((sm) => modelsAreEqual(sm.model, savedModel)) : undefined;
548
+ if (savedInScope) {
549
+ options.model = savedInScope.model;
550
+ // Use thinking level from scoped model config if explicitly set
551
+ if (!parsed.thinking && savedInScope.thinkingLevel) {
552
+ options.thinkingLevel = savedInScope.thinkingLevel;
553
+ }
554
+ }
555
+ else {
556
+ options.model = scopedModels[0].model;
557
+ // Use thinking level from first scoped model if explicitly set
558
+ if (!parsed.thinking && scopedModels[0].thinkingLevel) {
559
+ options.thinkingLevel = scopedModels[0].thinkingLevel;
560
+ }
561
+ }
562
+ }
563
+ // Thinking level from CLI (takes precedence over scoped model thinking levels set above)
564
+ if (parsed.thinking) {
565
+ options.thinkingLevel = parsed.thinking;
566
+ }
567
+ // Scoped models for Ctrl+P cycling
568
+ // Keep thinking level undefined when not explicitly set in the model pattern.
569
+ // Undefined means "inherit current session thinking level" during cycling.
570
+ if (scopedModels.length > 0) {
571
+ options.scopedModels = scopedModels.map((sm) => ({
572
+ model: sm.model,
573
+ thinkingLevel: sm.thinkingLevel,
574
+ }));
575
+ }
576
+ // API key from CLI - set as a non-persistent runtime override
577
+ // (handled by caller before createAgentSession)
578
+ // Tools
579
+ if (parsed.noTools) {
580
+ options.noTools = "all";
581
+ }
582
+ else if (parsed.noBuiltinTools) {
583
+ options.noTools = "builtin";
584
+ }
585
+ if (parsed.tools) {
586
+ options.tools = [...parsed.tools];
587
+ }
588
+ if (parsed.excludeTools) {
589
+ options.excludeTools = [...parsed.excludeTools];
590
+ }
591
+ if (parsed.suite) {
592
+ options.suite = parsed.suite;
593
+ }
594
+ return { options, cliThinkingFromModel, diagnostics };
595
+ }
596
+ function resolveCliPaths(cwd, paths) {
597
+ return paths?.map((value) => (isLocalPath(value) ? resolvePath(value, cwd) : value));
598
+ }
599
+ async function promptForMissingSessionCwd(issue, settingsManager) {
600
+ return showStartupSelector(settingsManager, formatMissingSessionCwdPrompt(issue), [
601
+ { label: "Continue", value: issue.fallbackCwd },
602
+ { label: "Cancel", value: undefined },
603
+ ]);
604
+ }
605
+ function isBuiltinPluginProfileId(value) {
606
+ return listBuiltinPluginProfilesV1().some((profile) => profile.id === value);
607
+ }
608
+ function selectionDiagnostics(status, diagnostics) {
609
+ return diagnostics.map((item) => ({
610
+ type: "error",
611
+ message: `Plugin selection ${status} (${item.code}): ${item.message}`,
612
+ }));
613
+ }
614
+ /**
615
+ * Resolve explicit CLI selection and the optional persisted profile snapshot.
616
+ * The store is deliberately not read for an ordinary run, so a user's saved
617
+ * plugin choices cannot silently change the default session surface.
618
+ */
619
+ async function resolveCliPluginSelection(parsed, agentDir, cwd) {
620
+ const hasExplicitSelection = parsed.pluginProfile !== undefined ||
621
+ parsed.plugins !== undefined ||
622
+ parsed.disabledPlugins !== undefined ||
623
+ parsed.pluginSelectionScope !== undefined;
624
+ if (!hasExplicitSelection || parsed.noPlugins)
625
+ return { diagnostics: [] };
626
+ if (parsed.pluginProfile === undefined && parsed.plugins === undefined && parsed.disabledPlugins === undefined) {
627
+ return { diagnostics: [{ type: "error", message: "--plugin-scope requires an explicit plugin selection" }] };
628
+ }
629
+ const diagnostics = [];
630
+ const selectionScope = parsed.pluginSelectionScope ?? "global";
631
+ const selectionPath = selectionScope === "project"
632
+ ? join(cwd, CONFIG_DIR_NAME, ".plugin-selection.json")
633
+ : join(agentDir, ".plugin-selection.json");
634
+ const store = createPluginSelectionStoreV1({ filePath: selectionPath });
635
+ let persistedResult;
636
+ try {
637
+ persistedResult = await store.read();
638
+ }
639
+ catch {
640
+ diagnostics.push({ type: "error", message: "Plugin selection could not be read" });
641
+ return { diagnostics };
642
+ }
643
+ if (persistedResult.status === "invalid" || persistedResult.status === "cancelled") {
644
+ diagnostics.push(...selectionDiagnostics(persistedResult.status, persistedResult.diagnostics));
645
+ return { diagnostics };
646
+ }
647
+ const explicitProfileId = parsed.pluginProfile;
648
+ let profileId;
649
+ if (explicitProfileId !== undefined) {
650
+ if (!isBuiltinPluginProfileId(explicitProfileId)) {
651
+ diagnostics.push({ type: "error", message: `Unknown plugin profile: ${explicitProfileId}` });
652
+ return { diagnostics };
653
+ }
654
+ profileId = explicitProfileId;
655
+ }
656
+ let persistedSelection;
657
+ if (profileId !== undefined) {
658
+ persistedSelection = persistedResult.snapshot.selections.find((selection) => selection.profileId === profileId);
659
+ }
660
+ else if (parsed.plugins !== undefined || parsed.disabledPlugins !== undefined) {
661
+ if (persistedResult.snapshot.selections.length !== 1) {
662
+ diagnostics.push({
663
+ type: "error",
664
+ message: persistedResult.snapshot.selections.length === 0
665
+ ? "--plugin/--disable-plugin requires --plugin-profile or one persisted plugin profile"
666
+ : "--plugin/--disable-plugin requires --plugin-profile when multiple persisted profiles exist",
667
+ });
668
+ return { diagnostics };
669
+ }
670
+ persistedSelection = persistedResult.snapshot.selections[0];
671
+ if (persistedSelection !== undefined && isBuiltinPluginProfileId(persistedSelection.profileId)) {
672
+ profileId = persistedSelection.profileId;
673
+ }
674
+ else {
675
+ diagnostics.push({
676
+ type: "error",
677
+ message: `Unknown persisted plugin profile: ${persistedSelection?.profileId ?? ""}`,
678
+ });
679
+ return { diagnostics };
680
+ }
681
+ }
682
+ return {
683
+ ...(profileId === undefined ? {} : { profileId }),
684
+ ...(parsed.plugins !== undefined
685
+ ? { selectedPluginIds: Object.freeze([...parsed.plugins]) }
686
+ : persistedSelection === undefined
687
+ ? {}
688
+ : { selectedPluginIds: persistedSelection.selectedPluginIds }),
689
+ ...(parsed.disabledPlugins !== undefined
690
+ ? { disabledPluginIds: Object.freeze([...parsed.disabledPlugins]) }
691
+ : persistedSelection === undefined
692
+ ? {}
693
+ : { disabledPluginIds: persistedSelection.disabledPluginIds }),
694
+ diagnostics,
695
+ };
696
+ }
697
+ export async function main(args, options) {
698
+ resetTimings();
699
+ const offlineMode = args.includes("--offline") || isTruthyEnvFlag(process.env.AGENT_FORGE_OFFLINE);
700
+ if (offlineMode) {
701
+ process.env.AGENT_FORGE_OFFLINE = "1";
702
+ process.env.AGENT_FORGE_SKIP_VERSION_CHECK = "1";
703
+ }
704
+ if (await runAuthCommand(args)) {
705
+ return;
706
+ }
707
+ if (await handlePluginEcosystemCommand(args)) {
708
+ return;
709
+ }
710
+ if (process.platform === "win32") {
711
+ cleanupWindowsSelfUpdateQuarantine(getPackageDir());
712
+ }
713
+ cleanupManagedInstall();
714
+ const cwd = process.cwd();
715
+ const agentDir = getAgentDir();
716
+ const bootstrapSettingsManager = SettingsManager.create(cwd, agentDir);
717
+ applyHttpProxySettings(bootstrapSettingsManager.getGlobalSettings().httpProxy);
718
+ configureHttpDispatcher();
719
+ if (await handlePackageCommand(args)) {
720
+ const exitCode = process.exitCode ?? 0;
721
+ if (process.platform === "win32" && exitCode === 0 && args[0] === "update") {
722
+ // We normally prefer process.exit(0) for package commands so bad extensions cannot keep
723
+ // one-shot commands alive. On Windows, Node can assert after fetch() if process.exit(0)
724
+ // runs during teardown; let successful `pi update` drain naturally instead.
725
+ // https://github.com/nodejs/node/issues/56645
726
+ return;
727
+ }
728
+ process.exit(exitCode);
729
+ return;
730
+ }
731
+ const configCommandOptions = options?.pluginManagerController === undefined && options?.projectPluginManagerController === undefined
732
+ ? undefined
733
+ : {
734
+ ...(options?.pluginManagerController === undefined
735
+ ? {}
736
+ : { pluginManagerController: options.pluginManagerController }),
737
+ ...(options?.projectPluginManagerController === undefined
738
+ ? {}
739
+ : { projectPluginManagerController: options.projectPluginManagerController }),
740
+ };
741
+ if (await handleConfigCommand(args, configCommandOptions)) {
742
+ return;
743
+ }
744
+ const parsed = parseArgs(args);
745
+ if (parsed.diagnostics.length > 0) {
746
+ for (const d of parsed.diagnostics) {
747
+ const color = d.type === "error" ? chalk.red : chalk.yellow;
748
+ console.error(color(`${d.type === "error" ? "Error" : "Warning"}: ${d.message}`));
749
+ }
750
+ if (parsed.diagnostics.some((d) => d.type === "error")) {
751
+ process.exit(1);
752
+ }
753
+ }
754
+ time("parseArgs");
755
+ // 宿主进程日志(设计 §5):目录随 agentDir(<agentDir>/logs),级别按
756
+ // --log-level → AGENT_FORGE_LOG_LEVEL → 默认 info 解析,保留窗口按
757
+ // AGENT_FORGE_LOG_MAX_AGE_DAYS 解析(缺省 14,非法值回退默认)。logger 自带
758
+ // uncaughtException/unhandledRejection 钩子(默认挂真实 process),一次性命令
759
+ // 与 serve 模式同样获得崩溃兜底日志;logger 句柄无需显式 close(进程生命周期)。
760
+ // 进程级单例:钩子随创建累积,重复创建会泄漏监听器;生产进程只 run 一次,
761
+ // 测试等重复入口复用首例(级别以首次解析为准)。
762
+ const envLogLevel = process.env.AGENT_FORGE_LOG_LEVEL;
763
+ const hostLogLevel = parsed.logLevel ?? (envLogLevel !== undefined && isValidHostLogLevel(envLogLevel) ? envLogLevel : undefined);
764
+ const rawLogMaxAgeDays = process.env.AGENT_FORGE_LOG_MAX_AGE_DAYS;
765
+ const hostLogMaxAgeDays = rawLogMaxAgeDays !== undefined && /^\d+$/.test(rawLogMaxAgeDays)
766
+ ? Number.parseInt(rawLogMaxAgeDays, 10)
767
+ : undefined;
768
+ if (processHostLogger === undefined) {
769
+ processHostLogger = createHostLogger({
770
+ dir: join(agentDir, "logs"),
771
+ ...(hostLogLevel === undefined ? {} : { level: hostLogLevel }),
772
+ ...(hostLogMaxAgeDays === undefined ? {} : { maxAgeDays: hostLogMaxAgeDays }),
773
+ });
774
+ }
775
+ // 轨迹保留(设计 §6):AGENT_FORGE_TRACE_MAX_AGE_DAYS(>0 整数开启;缺省/非法 =
776
+ // 永久保留)。只清默认 sessions 根(根目录 + 一层子目录)下过期的 *.trace.jsonl,
777
+ // 永不触碰会话文件;自定义 sessionDir 不在清扫范围。删除事实经 hostLogger 可见:
778
+ // deleted>0 记 info,failed>0 记 warn。宿主启动一次性执行,失败不阻塞启动。
779
+ const rawTraceMaxAgeDays = process.env.AGENT_FORGE_TRACE_MAX_AGE_DAYS;
780
+ const traceMaxAgeDays = rawTraceMaxAgeDays !== undefined && /^\d+$/.test(rawTraceMaxAgeDays)
781
+ ? Number.parseInt(rawTraceMaxAgeDays, 10)
782
+ : 0;
783
+ if (traceMaxAgeDays > 0) {
784
+ const traceSweep = sweepTraceFiles(getSessionsDir(), { maxAgeDays: traceMaxAgeDays, now: Date.now });
785
+ if (traceSweep.deleted > 0) {
786
+ processHostLogger.info("retention", "trace sweep removed expired trace files", {
787
+ fields: { deleted: traceSweep.deleted, failed: traceSweep.failed },
788
+ });
789
+ }
790
+ if (traceSweep.failed > 0) {
791
+ processHostLogger.warn("retention", "trace sweep finished with failures", {
792
+ fields: { deleted: traceSweep.deleted, failed: traceSweep.failed },
793
+ });
794
+ }
795
+ }
796
+ if (parsed.version) {
797
+ console.log(VERSION);
798
+ process.exit(0);
799
+ }
800
+ if (parsed.export) {
801
+ let result;
802
+ try {
803
+ const outputPath = parsed.messages.length > 0 ? parsed.messages[0] : undefined;
804
+ result = await exportFromFile(parsed.export, outputPath);
805
+ }
806
+ catch (error) {
807
+ const message = error instanceof Error ? error.message : "Failed to export session";
808
+ console.error(chalk.red(`Error: ${message}`));
809
+ process.exit(1);
810
+ }
811
+ console.log(`Exported to: ${result}`);
812
+ process.exit(0);
813
+ }
814
+ // Trace viewer (设计 §8 第 3 期): same exit-style dispatch as --export above,
815
+ // which also wins when both are given. The view command needs no runtime
816
+ // service, so it runs before any session/manager creation; per the --export
817
+ // precedent it is not registered in the --serve conflictingFlags list (this
818
+ // dispatch exits before that check is reached).
819
+ if (parsed.trace !== undefined) {
820
+ const envSessionDir = process.env[ENV_SESSION_DIR];
821
+ const sessionDir = (parsed.sessionDir ? normalizePath(parsed.sessionDir) : undefined) ??
822
+ (envSessionDir ? expandTildePath(envSessionDir) : undefined) ??
823
+ bootstrapSettingsManager.getSessionDir();
824
+ const result = await runTraceView(parsed.trace, {
825
+ json: parsed.traceJson === true,
826
+ cwd,
827
+ ...(sessionDir === undefined ? {} : { sessionDir }),
828
+ ...(parsed.traceKind === undefined ? {} : { kinds: parsed.traceKind }),
829
+ ...(parsed.traceLimit === undefined ? {} : { limit: parsed.traceLimit }),
830
+ });
831
+ if (!result.ok) {
832
+ console.error(chalk.red(`Error: ${result.message}`));
833
+ process.exit(1);
834
+ }
835
+ process.exit(0);
836
+ }
837
+ // Remote server mode (E3 tail): serve the coding-agent session runtime over
838
+ // TCP and keep the process alive; no session manager or runtime is needed
839
+ // for startup, so this runs before any session/runtime service is created.
840
+ if (parsed.serve !== undefined) {
841
+ // help/listModels must win over starting the server, and the generic
842
+ // handlers below need the full runtime that serve mode deliberately
843
+ // never creates; answer them here with the same output instead.
844
+ if (parsed.help || parsed.listModels !== undefined) {
845
+ // Align with the generic path: migrate legacy settings first so the
846
+ // reported diagnostics reflect the post-migration state.
847
+ runMigrations(cwd);
848
+ reportDiagnostics(collectSettingsDiagnostics(bootstrapSettingsManager));
849
+ if (parsed.help) {
850
+ // Extension CLI flags are registered by the resource loader, which
851
+ // serve mode never builds; the generic help text stays accurate.
852
+ printHelp();
853
+ process.exit(0);
854
+ }
855
+ const modelRuntime = await ModelRuntime.create({ signal: AbortSignal.timeout(15_000) });
856
+ const searchPattern = typeof parsed.listModels === "string" ? parsed.listModels : undefined;
857
+ await listModels(modelRuntime, searchPattern, AbortSignal.timeout(15_000));
858
+ process.exit(0);
859
+ }
860
+ // Prompt/session inputs would silently change nothing in serve mode, so
861
+ // reject them up front with the concrete conflicting flags.
862
+ const conflictingFlags = [
863
+ parsed.print ? "--print" : undefined,
864
+ parsed.messages.length > 0 ? "positional args" : undefined,
865
+ parsed.fileArgs.length > 0 ? "@file args" : undefined,
866
+ parsed.continue ? "--continue" : undefined,
867
+ parsed.resume ? "--resume" : undefined,
868
+ parsed.session ? "--session" : undefined,
869
+ parsed.sessionId ? "--session-id" : undefined,
870
+ parsed.fork ? "--fork" : undefined,
871
+ parsed.noSession ? "--no-session" : undefined,
872
+ parsed.mode ? "--mode" : undefined,
873
+ parsed.suiteCreate ? "--suite-create" : undefined,
874
+ parsed.suiteDelete ? "--suite-delete" : undefined,
875
+ parsed.suiteReset ? "--suite-reset" : undefined,
876
+ parsed.cloneFrom ? "--clone-from" : undefined,
877
+ ].filter((flag) => flag !== undefined);
878
+ if (conflictingFlags.length > 0) {
879
+ console.error(chalk.red(`Error: --serve cannot be combined with ${conflictingFlags.join(", ")}`));
880
+ process.exit(1);
881
+ }
882
+ // Remaining options would be silently ignored; list the ones the user
883
+ // actually passed so nothing disappears without a trace.
884
+ const ignoredFlagChecks = [
885
+ ["--name", parsed.name !== undefined],
886
+ ["--thinking", parsed.thinking !== undefined],
887
+ ["--provider", parsed.provider !== undefined],
888
+ ["--model", parsed.model !== undefined],
889
+ ["--api-key", parsed.apiKey !== undefined],
890
+ ["--models", (parsed.models?.length ?? 0) > 0],
891
+ ["--verbose", parsed.verbose === true],
892
+ ["--tui-mode", parsed.tuiMode !== undefined],
893
+ ["--suite", parsed.suite !== undefined],
894
+ ["--tools", (parsed.tools?.length ?? 0) > 0],
895
+ ["--exclude-tools", (parsed.excludeTools?.length ?? 0) > 0],
896
+ ["--no-tools", parsed.noTools === true],
897
+ ["--no-builtin-tools", parsed.noBuiltinTools === true],
898
+ ["--skill", (parsed.skills?.length ?? 0) > 0],
899
+ ["--prompt-template", (parsed.promptTemplates?.length ?? 0) > 0],
900
+ ["--no-prompt-templates", parsed.noPromptTemplates === true],
901
+ ["--theme", (parsed.themes?.length ?? 0) > 0],
902
+ ["--use-theme", parsed.useTheme !== undefined],
903
+ ["--no-themes", parsed.noThemes === true],
904
+ ["--no-context-files", parsed.noContextFiles === true],
905
+ ["--no-skills", parsed.noSkills === true],
906
+ ["--no-plugins", parsed.noPlugins === true],
907
+ ["--no-trace", parsed.noTrace === true],
908
+ ["--plugin-profile", parsed.pluginProfile !== undefined],
909
+ ["--plugin", (parsed.plugins?.length ?? 0) > 0],
910
+ ["--disable-plugin", (parsed.disabledPlugins?.length ?? 0) > 0],
911
+ ["--system-prompt", parsed.systemPrompt !== undefined],
912
+ ["--append-system-prompt", (parsed.appendSystemPrompt?.length ?? 0) > 0],
913
+ ];
914
+ const ignoredFlags = ignoredFlagChecks.flatMap(([flag, passed]) => (passed ? [flag] : []));
915
+ if (ignoredFlags.length > 0) {
916
+ console.warn(chalk.yellow(`--serve ignores session/model/tool options: ${ignoredFlags.join(", ")}`));
917
+ }
918
+ await runServeMode(parsed.serve, {
919
+ ...(parsed.serveWorkspaceRoots === undefined ? {} : { workspaceRoots: parsed.serveWorkspaceRoots }),
920
+ ...(parsed.sessionDir === undefined ? {} : { sessionDir: parsed.sessionDir }),
921
+ // D-067 第一期 S3:serve 会话此前拿不到进程文件 logger(SDK 面为 no-op),
922
+ // 现在与交互模式同源注入,日志落 <agentDir>/logs。
923
+ ...(processHostLogger === undefined ? {} : { hostLogger: processHostLogger }),
924
+ });
925
+ return;
926
+ }
927
+ // Suite lifecycle one-shot actions (设计 §9, M4): only cwd + agentDir are
928
+ // needed, so they run before any session/runtime service is created and
929
+ // always terminate the process.
930
+ await handleSuiteLifecycleCommands(parsed, cwd, agentDir);
931
+ // Expired suite trash sweep (设计 §9, M4): fire-and-forget best-effort like
932
+ // the RPC model catalog refresh below — failures stay silent (7-day default
933
+ // retention) and the sweep re-runs on the next start.
934
+ void sweepSuiteTrash(agentDir).catch(() => { });
935
+ let appMode = resolveAppMode(parsed, process.stdin.isTTY, process.stdout.isTTY);
936
+ // Headless subagent runner (D-045) owns its stdout: the subagent-task protocol
937
+ // frames must reach the parent on the real stdout, so the non-interactive
938
+ // stdout takeover (which redirects process.stdout writes to stderr) is skipped.
939
+ const shouldTakeOverStdout = parsed.subagentRunner !== true && appMode !== "interactive" && !isPlainRuntimeMetadataCommand(parsed);
940
+ if (shouldTakeOverStdout) {
941
+ takeOverStdout();
942
+ }
943
+ if (parsed.mode === "rpc" && parsed.fileArgs.length > 0) {
944
+ console.error(chalk.red("Error: @file arguments are not supported in RPC mode"));
945
+ process.exit(1);
946
+ }
947
+ validateForkFlags(parsed);
948
+ validateSessionIdFlags(parsed);
949
+ // Run migrations (pass cwd for project-local migrations)
950
+ const { migratedAuthProviders: migratedProviders, deprecationWarnings } = runMigrations(cwd);
951
+ time("runMigrations");
952
+ const startupSettingsManager = SettingsManager.create(cwd, agentDir);
953
+ const startupSettingsDiagnostics = collectSettingsDiagnostics(startupSettingsManager);
954
+ // Experimental first-time setup: theme choice and analytics opt-in.
955
+ // Runs before any runtime services are created so the chosen settings apply everywhere.
956
+ if (appMode === "interactive" && !parsed.help && parsed.listModels === undefined && shouldRunFirstTimeSetup()) {
957
+ await showFirstTimeSetup(startupSettingsManager);
958
+ time("firstTimeSetup");
959
+ }
960
+ if (appMode === "interactive" && parsed.useTheme !== undefined) {
961
+ startupSettingsManager.applyOverrides({ theme: parsed.useTheme });
962
+ }
963
+ // Decide the final runtime cwd before creating cwd-bound runtime services.
964
+ // --session and --resume may select a session from another project, so project-local
965
+ // settings, resources, provider registrations, and models must be resolved only after
966
+ // the target session cwd is known. The startup-cwd settings manager is used only for
967
+ // sessionDir lookup during session selection.
968
+ const envSessionDir = process.env[ENV_SESSION_DIR];
969
+ const sessionDir = (parsed.sessionDir ? normalizePath(parsed.sessionDir) : undefined) ??
970
+ (envSessionDir ? expandTildePath(envSessionDir) : undefined) ??
971
+ startupSettingsManager.getSessionDir();
972
+ let sessionManager = await createSessionManager(parsed, cwd, sessionDir, startupSettingsManager);
973
+ const missingSessionCwdIssue = getMissingSessionCwdIssue(sessionManager, cwd);
974
+ if (missingSessionCwdIssue) {
975
+ if (appMode === "interactive") {
976
+ const selectedCwd = await promptForMissingSessionCwd(missingSessionCwdIssue, startupSettingsManager);
977
+ if (!selectedCwd) {
978
+ process.exit(0);
979
+ }
980
+ sessionManager = SessionManager.open(missingSessionCwdIssue.sessionFile, sessionDir, selectedCwd);
981
+ }
982
+ else {
983
+ console.error(chalk.red(new MissingSessionCwdError(missingSessionCwdIssue).message));
984
+ process.exit(1);
985
+ }
986
+ }
987
+ if (parsed.name !== undefined) {
988
+ const name = normalizeSessionName(parsed.name);
989
+ if (name === undefined) {
990
+ console.error(chalk.red("Error: --name requires a non-empty value"));
991
+ process.exit(1);
992
+ }
993
+ sessionManager.appendSessionInfo(name);
994
+ }
995
+ time("createSessionManager");
996
+ const cliPluginSelection = await resolveCliPluginSelection(parsed, agentDir, sessionManager.getCwd());
997
+ const resolvedSkillPaths = resolveCliPaths(cwd, parsed.skills);
998
+ const resolvedPromptTemplatePaths = resolveCliPaths(cwd, parsed.promptTemplates);
999
+ const resolvedThemePaths = resolveCliPaths(cwd, parsed.themes);
1000
+ // Interaction host wiring (1A.8): createRuntime builds sessions before the
1001
+ // mode owns its UI, so the interactive/rpc modes install their
1002
+ // InteractionHostV1 into a late-bound slot after construction. Prompts that
1003
+ // arrive before installation settle as "unavailable"; notify is dropped
1004
+ // (nothing is on screen to receive it yet).
1005
+ const createInteractionHostSlot = () => {
1006
+ let target;
1007
+ return {
1008
+ host: {
1009
+ notify: (request) => target?.notify(request),
1010
+ prompt: (request, context) => target ? target.prompt(request, context) : Promise.resolve({ status: "unavailable" }),
1011
+ },
1012
+ setTarget: (next) => {
1013
+ target = next;
1014
+ },
1015
+ };
1016
+ };
1017
+ const interactionHostSlots = {
1018
+ interactive: createInteractionHostSlot(),
1019
+ rpc: createInteractionHostSlot(),
1020
+ };
1021
+ // 启动 bootstrap(设计 §4.4):在 suite/profile 解析之前,把出厂清单里缺失的
1022
+ // 第一方插件经 npm 装入安装店。每进程只跑一次(含本地幂等比对);出厂清单
1023
+ // 当前为空,即零依赖调用的 no-op。bootstrap 自身异常兜底为诊断结果,绝不阻断
1024
+ // 启动;AGENT_FORGE_PLUGIN_BOOTSTRAP=off 在接线层完全跳过。
1025
+ let startupPluginBootstrap;
1026
+ const runStartupPluginBootstrap = (bootstrapCwd) => {
1027
+ startupPluginBootstrap ??= runNodePluginBootstrapV1({ agentDir, cwd: bootstrapCwd }).catch((error) => ({
1028
+ version: 1,
1029
+ status: "failed",
1030
+ actions: [],
1031
+ diagnostics: [
1032
+ {
1033
+ code: "bootstrap_failed",
1034
+ message: `Startup plugin bootstrap failed: ${error instanceof Error ? error.message : String(error)}`,
1035
+ },
1036
+ ],
1037
+ durationMs: 0,
1038
+ }));
1039
+ return startupPluginBootstrap;
1040
+ };
1041
+ const createRuntime = async ({ cwd, agentDir, sessionManager, childProfile, childModelId, subagentCommunicationWiring, }) => {
1042
+ const runtimeSettingsManager = SettingsManager.create(cwd, agentDir);
1043
+ // Bootstrap 先于 active 解析执行(设计 §4.4 触发点):新装入店的第一方插件
1044
+ // 在下面的 bindings 解析中立即可见。诊断走启动 stderr 通道(与 parseArgs
1045
+ // 诊断同风格);installed/skipped 动作静默。
1046
+ if (!parsed.noPlugins) {
1047
+ const bootstrapResult = await runStartupPluginBootstrap(cwd);
1048
+ for (const diagnostic of bootstrapResult.diagnostics) {
1049
+ console.error(chalk.yellow(`Plugin bootstrap ${diagnostic.code}: ${diagnostic.message}`));
1050
+ }
1051
+ }
1052
+ const resolveActivePluginBindings = options?.resolveActivePluginBindings ?? createDefaultActivePluginBindingsResolverV1();
1053
+ let activeBindings;
1054
+ let pluginBindingDiagnostics = [];
1055
+ // Installed-code-loading is profile-INDEPENDENT (D-075 设计 §"已装插件
1056
+ // 进会话"链路): suite capability packages and sdk-membership families
1057
+ // (memory/observability) must surface whenever they are installed, even
1058
+ // without a --plugin-profile selection — the pre-D-075 embedded registry
1059
+ // gave the coding suite its goal/plan/todo tools unconditionally, and
1060
+ // bootstrap (§4.4) exists to make them available out of the box.
1061
+ if (!parsed.noPlugins && options?.manifestOverrides === undefined) {
1062
+ try {
1063
+ const resolvedBindings = await resolveActivePluginBindings({ cwd, agentDir });
1064
+ activeBindings = resolvedBindings;
1065
+ pluginBindingDiagnostics = resolvedBindings.diagnostics.map((item) => ({
1066
+ type: resolvedBindings.status === "unavailable" ? "warning" : "info",
1067
+ message: `Active plugin binding ${item.code}: ${item.message}`,
1068
+ }));
1069
+ }
1070
+ catch {
1071
+ pluginBindingDiagnostics = [
1072
+ { type: "error", message: "Active plugin binding resolver failed; no installed version was selected" },
1073
+ ];
1074
+ }
1075
+ }
1076
+ const activeManifestOverrides = activeBindings?.status === "ready" ? activeBindings.manifestOverrides : undefined;
1077
+ const activeVerifiedPlugins = activeBindings?.status === "ready" ? activeBindings.verifiedPlugins : undefined;
1078
+ // Installed-code-loading (D-075 S2): the verified active installations'
1079
+ // plugin.json paths ride the same channel as manifestOverrides into the
1080
+ // sdk's explicit candidate pool (membership-filtered there).
1081
+ const activeInstalledCapabilityPlugins = activeBindings?.status === "ready"
1082
+ ? [...activeBindings.installedManifestPaths].map(([pluginId, manifestPath]) => ({
1083
+ pluginId,
1084
+ manifestPath,
1085
+ }))
1086
+ : undefined;
1087
+ // D-075 S3: category-A plugin code ships in independent packages loaded
1088
+ // from the install store, so the CLI no longer wires host-side adapters
1089
+ // (desktop UIA / lsp / test-runner) into a runtime bridge. Profile
1090
+ // resolution still needs host facts to run the resolver's fail-closed
1091
+ // platform checks, and the packaged plugins declare no host features or
1092
+ // adapters (design §4.1), so the observed runtime facts are sufficient;
1093
+ // host injection always wins.
1094
+ const pluginHost = options?.pluginHost ??
1095
+ (parsed.noPlugins || (cliPluginSelection.profileId === undefined && activeBindings === undefined)
1096
+ ? undefined
1097
+ : defaultPluginHostFactsV1());
1098
+ // First-party plugins of an explicitly selected Profile are trusted by
1099
+ // default (the builtins ship with the product and the user chose the
1100
+ // Profile explicitly); installed third-party versions still come from
1101
+ // the disk resolver and host injection always wins.
1102
+ const verifiedPlugins = options?.verifiedPlugins ??
1103
+ (cliPluginSelection.profileId === undefined
1104
+ ? activeVerifiedPlugins
1105
+ : [
1106
+ ...defaultBuiltinVerifiedPluginsV1(cliPluginSelection.profileId).filter((builtin) => !activeVerifiedPlugins?.some((active) => active.pluginId === builtin.pluginId && active.version === builtin.version)),
1107
+ ...(activeVerifiedPlugins ?? []),
1108
+ ]);
1109
+ const services = await createAgentSessionServices({
1110
+ cwd,
1111
+ agentDir,
1112
+ settingsManager: runtimeSettingsManager,
1113
+ modelRuntimeSignal: AbortSignal.timeout(15_000),
1114
+ // First-party entry suite assembly (方案实施计划 §7 范围 2): the
1115
+ // three-level agents.md chain, system prompt gate, and association
1116
+ // filters apply on this self-built loader; the suite resolves once
1117
+ // here and rides to session creation via services.suiteId.
1118
+ suite: parsed.suite,
1119
+ suiteAssembly: true,
1120
+ ...(parsed.noPlugins || cliPluginSelection.profileId === undefined
1121
+ ? {}
1122
+ : { pluginProfileId: cliPluginSelection.profileId }),
1123
+ ...(parsed.noPlugins || cliPluginSelection.selectedPluginIds === undefined
1124
+ ? {}
1125
+ : { selectedPluginIds: cliPluginSelection.selectedPluginIds }),
1126
+ ...(parsed.noPlugins || cliPluginSelection.disabledPluginIds === undefined
1127
+ ? {}
1128
+ : { disabledPluginIds: cliPluginSelection.disabledPluginIds }),
1129
+ ...(parsed.noPlugins || pluginHost === undefined ? {} : { pluginHost }),
1130
+ ...(parsed.noPlugins || verifiedPlugins === undefined ? {} : { verifiedPlugins }),
1131
+ ...(parsed.noPlugins || options?.manifestOverrides === undefined
1132
+ ? activeManifestOverrides === undefined
1133
+ ? {}
1134
+ : { manifestOverrides: activeManifestOverrides }
1135
+ : { manifestOverrides: options.manifestOverrides }),
1136
+ ...(parsed.noPlugins || activeInstalledCapabilityPlugins === undefined
1137
+ ? {}
1138
+ : { installedCapabilityPlugins: activeInstalledCapabilityPlugins }),
1139
+ ...(pluginBindingDiagnostics.length === 0 ? {} : { pluginBindingDiagnostics }),
1140
+ resourceLoaderOptions: {
1141
+ additionalSkillPaths: resolvedSkillPaths,
1142
+ additionalPromptTemplatePaths: resolvedPromptTemplatePaths,
1143
+ additionalThemePaths: resolvedThemePaths,
1144
+ noSkills: parsed.noSkills,
1145
+ noPromptTemplates: parsed.noPromptTemplates,
1146
+ noThemes: parsed.noThemes,
1147
+ noContextFiles: parsed.noContextFiles,
1148
+ systemPrompt: parsed.systemPrompt,
1149
+ // 档案的 systemPromptAppend(承载退役切片 2):runner 叶子经同一资源
1150
+ // loader 追加通道落地(shared 侧由 child loader 覆盖点做的事在这里做)。
1151
+ appendSystemPrompt: [
1152
+ ...(parsed.appendSystemPrompt ?? []),
1153
+ ...(childProfile?.systemPromptAppend === undefined ? [] : [childProfile.systemPromptAppend]),
1154
+ ],
1155
+ },
1156
+ });
1157
+ const { settingsManager, modelRuntime } = services;
1158
+ const diagnostics = [
1159
+ ...cliPluginSelection.diagnostics,
1160
+ ...services.diagnostics,
1161
+ ...collectSettingsDiagnostics(settingsManager),
1162
+ ];
1163
+ const modelPatterns = parsed.models ?? settingsManager.getEnabledModels();
1164
+ const scopedModels = modelPatterns && modelPatterns.length > 0
1165
+ ? await resolveModelScope(modelPatterns, modelRuntime, { signal: AbortSignal.timeout(15_000) })
1166
+ : [];
1167
+ // 档案 model 解析(pooled parity 补口):与 shared 侧同一纪律——只能在 runner 自己
1168
+ // 的 scoped models 里挑,解析不到即失败并列出可用 id,不静默回落默认模型。
1169
+ const profileModel = childModelId === undefined
1170
+ ? undefined
1171
+ : (() => {
1172
+ const entry = scopedModels.find((candidate) => candidate.model.id === childModelId);
1173
+ if (entry === undefined) {
1174
+ const available = scopedModels.map((candidate) => candidate.model.id).sort();
1175
+ throw new Error(`agent task child profile model ${JSON.stringify(childModelId)} is not among the runner's scoped models` +
1176
+ (available.length === 0 ? " (none configured)" : `; available: ${available.join(", ")}`));
1177
+ }
1178
+ return entry.model;
1179
+ })();
1180
+ const sessionContext = sessionManager.buildSessionContext();
1181
+ const { options: sessionOptions, cliThinkingFromModel, diagnostics: sessionOptionDiagnostics, } = buildSessionOptions(parsed, scopedModels, sessionContext.messages.length > 0, modelRuntime, settingsManager);
1182
+ diagnostics.push(...sessionOptionDiagnostics);
1183
+ // Resume model restoration (dogfood 2026-09-25 live defect): the last explicit
1184
+ // model_change in the session file (/model switch) must be honored on restart —
1185
+ // previously the model silently reverted to the default, so turns after the
1186
+ // switch ran on (and were billed to) the old provider. Explicit CLI --model
1187
+ // takes priority over the persisted value.
1188
+ const resumedSessionModel = (() => {
1189
+ if (sessionOptions.model)
1190
+ return undefined;
1191
+ const persisted = sessionContext.model;
1192
+ if (!persisted)
1193
+ return undefined;
1194
+ return modelRuntime.getModel(persisted.provider, persisted.modelId) ?? undefined;
1195
+ })();
1196
+ if (parsed.apiKey) {
1197
+ if (!sessionOptions.model) {
1198
+ diagnostics.push({
1199
+ type: "error",
1200
+ message: "--api-key requires a model to be specified via --model, --provider/--model, or --models",
1201
+ });
1202
+ }
1203
+ else {
1204
+ await modelRuntime.setRuntimeApiKey(sessionOptions.model.provider, parsed.apiKey);
1205
+ }
1206
+ }
1207
+ // pooled runner 叶子:档案只收窄(mode 更严、thinkingLevel 更窄),不放大。
1208
+ const childProfileMode = childProfile !== undefined && childProfile.mode === "readonly" && parsed.subagentRunner === true
1209
+ ? "readonly"
1210
+ : undefined;
1211
+ const created = await createAgentSessionFromServices({
1212
+ services,
1213
+ sessionManager,
1214
+ model: profileModel ?? sessionOptions.model ?? resumedSessionModel,
1215
+ thinkingLevel: childProfile?.thinkingLevel ?? sessionOptions.thinkingLevel,
1216
+ scopedModels: sessionOptions.scopedModels,
1217
+ tools: sessionOptions.tools,
1218
+ excludeTools: sessionOptions.excludeTools,
1219
+ noTools: sessionOptions.noTools,
1220
+ customTools: sessionOptions.customTools,
1221
+ suite: sessionOptions.suite,
1222
+ discoverCapabilityPlugins: parsed.noPlugins ? false : undefined,
1223
+ // Trace/log control face (设计 §4.4/§5/§6):--no-trace 关闭本会话轨迹
1224
+ // 收集;进程级 logger(含崩溃钩子)传给会话打点,未创建时保持 no-op 契约。
1225
+ traceEnabled: parsed.noTrace === true ? false : undefined,
1226
+ // OTLP 遥测导出(设计 §8,D-065 增补 5):标准 OTEL_EXPORTER_OTLP_ENDPOINT
1227
+ // 环境变量显式开启 OTLP/HTTP+JSON 轨迹导出;未设置时导出器不存在,行为零变化。
1228
+ ...(typeof process.env.OTEL_EXPORTER_OTLP_ENDPOINT === "string" &&
1229
+ process.env.OTEL_EXPORTER_OTLP_ENDPOINT.trim().length > 0
1230
+ ? { traceOptions: { otlp: { endpoint: process.env.OTEL_EXPORTER_OTLP_ENDPOINT.trim() } } }
1231
+ : {}),
1232
+ hostLogger: processHostLogger,
1233
+ ...(childProfileMode === undefined ? {} : { capabilityMode: childProfileMode }),
1234
+ // 叶子不再整体关闭 agent tasks(承载退役切片 2):它经自动池化获得自己的
1235
+ // 委派面(嵌套委派保留,递归边界由 delegate 沿 S2 血缘头的深度硬限与每父级
1236
+ // 总量配额执行),并因 sdk 的 reader/lister 注入同时获得回读面。
1237
+ // 子代理通信面(D-060 S5 pooled parity):runner 叶子的 post/drainInbox 接线
1238
+ // 经 services 装配传入(文件承载信箱,跨进程与父侧 drain 同一目录)。
1239
+ ...(subagentCommunicationWiring === undefined ? {} : { subagentCommunicationWiring }),
1240
+ // 承载退役切片 1(生产 CLI 默认 pooled):CLI 进程声明自身入口可信——
1241
+ // 未显式配置池时按 self-invocation 自动池化(叶子路径无害:delegate 不装配池)。
1242
+ subagentPoolFromSelfInvocation: true,
1243
+ // Interaction capability (1A.8): only the interactive TUI and RPC hosts
1244
+ // serve interaction tasks; print/json hosts leave the feature absent.
1245
+ ...(appMode === "interactive" ? { interactionHost: interactionHostSlots.interactive.host } : {}),
1246
+ ...(appMode === "rpc" ? { interactionHost: interactionHostSlots.rpc.host } : {}),
1247
+ });
1248
+ for (const rejection of created.pluginRejections) {
1249
+ diagnostics.push({
1250
+ type: "warning",
1251
+ message: `Capability plugin rejected (${rejection.code}): ${rejection.pluginId ?? rejection.manifestPath}: ${rejection.message}`,
1252
+ });
1253
+ }
1254
+ const cliThinkingOverride = parsed.thinking !== undefined || cliThinkingFromModel;
1255
+ if (created.session.model && cliThinkingOverride) {
1256
+ created.session.setThinkingLevel(created.session.thinkingLevel);
1257
+ }
1258
+ if (childProfile?.tools !== undefined) {
1259
+ // 档案的工具面是白名单:与叶子继承面求交(不放大),随后由 server 侧核验。
1260
+ const inherited = created.session.getActiveToolNames();
1261
+ const narrowed = inherited.filter((name) => childProfile.tools?.includes(name));
1262
+ created.session.setActiveToolsByName(narrowed);
1263
+ }
1264
+ return {
1265
+ ...created,
1266
+ services: {
1267
+ ...services,
1268
+ // /metrics 数据源 ref 由 createAgentSession 内建的 services 携带
1269
+ // (observability 插件工厂挂载时写入)。运行时对外暴露的是外层
1270
+ // session-independent services,不含该 ref——不对齐的话 TUI/RPC 的
1271
+ // 惰性闭包永远读到 undefined(/metrics 曾因此永远报未挂载)。
1272
+ observabilityGetMetricsRef: created.session.observabilityGetMetricsRef,
1273
+ },
1274
+ diagnostics,
1275
+ ...(childProfile === undefined
1276
+ ? {}
1277
+ : {
1278
+ childFacts: (() => {
1279
+ const sessionApi = created.session.getSessionAPI();
1280
+ const systemPromptOptions = sessionApi.getSystemPromptOptions?.();
1281
+ return {
1282
+ activeTools: created.session.getActiveToolNames(),
1283
+ ...(childProfile?.thinkingLevel === undefined
1284
+ ? {}
1285
+ : { thinkingLevel: sessionApi.getThinkingLevel?.() }),
1286
+ // 叶子实际生效的 append 段(CLI append 与档案 append 的合并串,已含
1287
+ // 方案 APPEND_SYSTEM.md 门控结果):server 用包含语义核验档案 append。
1288
+ ...(systemPromptOptions?.appendSystemPrompt === undefined
1289
+ ? {}
1290
+ : { systemPromptAppend: systemPromptOptions.appendSystemPrompt }),
1291
+ ...(created.session.model === undefined
1292
+ ? {}
1293
+ : {
1294
+ model: {
1295
+ provider: created.session.model.provider,
1296
+ id: created.session.model.id,
1297
+ contextWindow: created.session.model.contextWindow,
1298
+ maxTokens: created.session.model.maxTokens,
1299
+ reasoning: created.session.model.reasoning,
1300
+ },
1301
+ }),
1302
+ capabilityMode: created.session.getCapabilityRuntime().host.mode,
1303
+ };
1304
+ })(),
1305
+ }),
1306
+ };
1307
+ };
1308
+ time("createRuntime");
1309
+ /**
1310
+ * runner 叶子的档案解析:形状由公共解析器校验;字段级不支持的情况在这里 fail fast,
1311
+ * 不做静默忽略(当前全部字段均可落地:model 按 runner 自身 scoped models 解析)。
1312
+ */
1313
+ function parseSubagentTaskChildProfile(raw) {
1314
+ if (raw === undefined)
1315
+ return undefined;
1316
+ const parsed = parseAgentTaskChildProfileV1(raw);
1317
+ if (!parsed.ok)
1318
+ throw new Error(`child task profile is invalid: ${parsed.message}`);
1319
+ return parsed.profile;
1320
+ }
1321
+ // Headless subagent runner (D-045 pooled increment 2b): serve the subagent-task
1322
+ // protocol on stdio and never construct the parent session runtime — stdout is
1323
+ // the protocol channel, so this branch must run before any mode startup output.
1324
+ if (parsed.subagentRunner === true) {
1325
+ const runnerSessionCwd = sessionManager.getCwd();
1326
+ const runner = runSubagentTaskRunner({
1327
+ input: process.stdin,
1328
+ output: process.stdout,
1329
+ createSession: createSubagentTaskSessionFactoryV1({
1330
+ createSession: async (request) => {
1331
+ // 每任务一个独立叶子会话。档案(若上游带了)在这一层落地:mode/thinkingLevel
1332
+ // 经创建选项,tools 收窄在 createRuntime 内完成,事实回传给 server 核验。
1333
+ const childProfile = parseSubagentTaskChildProfile(request.profile);
1334
+ // resume(D-060 S5 pooled parity):目标必须是本父会话的**已落盘**子会话,
1335
+ // 血缘不过线与不存在同型失败;命中则打开既有 JSONL 续写(同一 sessionId)。
1336
+ const resumeRead = typeof request.resumeSessionId === "string" && request.resumeSessionId !== ""
1337
+ ? readAgentSession({ agentDir, sessionId: request.resumeSessionId })
1338
+ : undefined;
1339
+ if (typeof request.resumeSessionId === "string" && request.resumeSessionId !== "") {
1340
+ if (resumeRead === undefined ||
1341
+ request.parentSessionId === undefined ||
1342
+ resumeRead.parentAgentSession !== request.parentSessionId) {
1343
+ throw new Error(`resume target ${request.resumeSessionId} is not a persisted child of session ${String(request.parentSessionId)}`);
1344
+ }
1345
+ }
1346
+ const resumeFilePath = resumeRead !== undefined && typeof request.resumeSessionId === "string"
1347
+ ? findSessionFile(agentSessionsDir(agentDir), request.resumeSessionId)
1348
+ : undefined;
1349
+ // 通信面(D-060 S5 pooled parity):叶子向自己的父 post(escalate/兄弟消息)
1350
+ // 并 drain 自己的收件箱——文件承载信箱,root 以父会话 id 为键;叶子身份在
1351
+ // create 返回后补上(工厂注册先于身份可知)。
1352
+ const leafIdentity = { current: undefined };
1353
+ const requireIdentity = () => {
1354
+ if (leafIdentity.current === undefined)
1355
+ throw new Error("leaf session identity is not bound yet");
1356
+ return leafIdentity.current;
1357
+ };
1358
+ const leafWiring = request.parentSessionId === undefined
1359
+ ? {}
1360
+ : {
1361
+ postEscalate: (text) => {
1362
+ createSubagentMailbox({
1363
+ agentDir,
1364
+ ownerParentSessionId: () => request.parentSessionId,
1365
+ }).postEscalate(requireIdentity(), text);
1366
+ },
1367
+ sendSibling: (toSessionId, text) => {
1368
+ createSubagentMailbox({
1369
+ agentDir,
1370
+ ownerParentSessionId: () => request.parentSessionId,
1371
+ }).postSibling(requireIdentity(), toSessionId, text);
1372
+ },
1373
+ drainInbox: (limit) => createSubagentMailbox({
1374
+ agentDir,
1375
+ ownerParentSessionId: () => request.parentSessionId,
1376
+ }).drainInbox(requireIdentity(), limit),
1377
+ };
1378
+ const created = await createRuntime({
1379
+ cwd: runnerSessionCwd,
1380
+ agentDir,
1381
+ // 叶子会话落盘(D-060 §3):与 root 会话同构的 JSONL,放 _agents 目录,
1382
+ // 头部写血缘(父 agent 会话 id + 角色 id),父侧可按 sessionId 回读。
1383
+ // resume 改为打开既有会话文件续写(同一 sessionId,多轮子任务)。
1384
+ sessionManager: resumeFilePath !== undefined && request.resumeSessionId !== undefined
1385
+ ? SessionManager.open(resumeFilePath, agentSessionsDir(agentDir), runnerSessionCwd)
1386
+ : SessionManager.create(runnerSessionCwd, agentSessionsDir(agentDir), {
1387
+ ...(request.parentSessionId === undefined
1388
+ ? {}
1389
+ : { parentAgentSession: request.parentSessionId }),
1390
+ // 回合级血缘:仅 create 消费;resume(open)不写头。
1391
+ ...(request.parentTraceId === undefined ? {} : { parentTraceId: request.parentTraceId }),
1392
+ ...(childProfile?.roleId === undefined ? {} : { agentRole: childProfile.roleId }),
1393
+ }),
1394
+ ...(childProfile === undefined ? {} : { childProfile }),
1395
+ ...(childProfile?.model === undefined ? {} : { childModelId: childProfile.model }),
1396
+ ...(Object.keys(leafWiring).length === 0 ? {} : { subagentCommunicationWiring: leafWiring }),
1397
+ });
1398
+ const session = created.session;
1399
+ const sessionApi = session.getSessionAPI();
1400
+ leafIdentity.current = sessionApi.getAgentSessionId?.() ?? sessionApi.getSessionId();
1401
+ // 显式映射到命令面会话契约:不复用 AgentSession 全量面,避免隐藏依赖会话布局。
1402
+ return {
1403
+ prompt: (text) => session.prompt(text, { expandPromptTemplates: false }),
1404
+ abort: (reason) => session.abort(reason),
1405
+ dispose: () => session.dispose(),
1406
+ getMessages: () => sessionApi.getMessages(),
1407
+ getSessionId: () => sessionApi.getSessionId(),
1408
+ // D-044 §5.6:回合级进度(turn_end + 有界工具摘要)经协议 progress 事件回父侧。
1409
+ onProgress: createTurnProgressSourceV1(session),
1410
+ // 父→子引导(D-060 S5 pooled parity):转发会话自身 steer。
1411
+ ...(sessionApi.steer === undefined
1412
+ ? {}
1413
+ : {
1414
+ steer: (text) => {
1415
+ const steerFn = sessionApi.steer;
1416
+ if (steerFn === undefined)
1417
+ return Promise.resolve();
1418
+ return steerFn.call(sessionApi, text);
1419
+ },
1420
+ }),
1421
+ // 档案事实:只有带档案的 create 才会被 server 要求自证。
1422
+ ...(created.childFacts === undefined
1423
+ ? {}
1424
+ : { facts: () => created.childFacts }),
1425
+ };
1426
+ },
1427
+ }),
1428
+ });
1429
+ await runner.done;
1430
+ return;
1431
+ }
1432
+ let runtime;
1433
+ // Unresolved startup suite id (设计 §9): interactive mode recovers in-process
1434
+ // by handing a pending selector to InteractiveMode (the user picks a suite
1435
+ // before the first prompt); print/json/rpc keep the structured exit-1.
1436
+ let pendingSuiteSelector;
1437
+ try {
1438
+ runtime = await createAgentSessionRuntime(createRuntime, {
1439
+ cwd: sessionManager.getCwd(),
1440
+ agentDir,
1441
+ sessionManager,
1442
+ });
1443
+ }
1444
+ catch (error) {
1445
+ // 已绑定会话换 suite / Profile 身份漂移(SuiteRebindError):用户可自行纠正的
1446
+ // 参数错误,干净的一行 stderr + 退出 1,不甩内部栈(dogfood 2026-09-25 实测)。
1447
+ if (error instanceof SuiteRebindError) {
1448
+ console.error(chalk.red(`Error: ${error.message}`));
1449
+ process.exit(1);
1450
+ }
1451
+ // Unknown --suite/env/settings suite ids are a structured startup error
1452
+ // (设计 §9): list the available ids and exit 1 instead of a stack trace.
1453
+ if (!(error instanceof SuiteResolutionError))
1454
+ throw error;
1455
+ if (appMode !== "interactive") {
1456
+ console.error(chalk.red(`Error: ${error.message}`));
1457
+ process.exit(1);
1458
+ }
1459
+ // One in-process recovery attempt (设计 §9 startup selector): record the
1460
+ // pending pick, clear this run's explicit suite for the retry, and delete
1461
+ // AGENT_FORGE_SUITE when it named the unknown id — the env is the only
1462
+ // source this process may eliminate. A settings-level unknown id cannot
1463
+ // be resolved in-process (silently rewriting the user's settings files is
1464
+ // not a startup decision), so the retry still throws and exits 1 below
1465
+ // with the same structured guidance.
1466
+ pendingSuiteSelector = { requestedId: error.requestedId, available: error.availableSuiteIds };
1467
+ parsed.suite = undefined;
1468
+ if (process.env[SUITE_ENV_VAR] === error.requestedId) {
1469
+ delete process.env[SUITE_ENV_VAR];
1470
+ }
1471
+ try {
1472
+ runtime = await createAgentSessionRuntime(createRuntime, {
1473
+ cwd: sessionManager.getCwd(),
1474
+ agentDir,
1475
+ sessionManager,
1476
+ });
1477
+ }
1478
+ catch (retryError) {
1479
+ if (retryError instanceof SuiteResolutionError) {
1480
+ console.error(chalk.red(`Error: ${retryError.message}`));
1481
+ process.exit(1);
1482
+ }
1483
+ throw retryError;
1484
+ }
1485
+ }
1486
+ time("createAgentSessionRuntime");
1487
+ const { services, session, modelFallbackMessage } = runtime;
1488
+ const { settingsManager, modelRuntime } = services;
1489
+ setCapabilityOverrides(settingsManager.getTerminalCapabilityOverrides());
1490
+ applyHttpProxySettings(settingsManager.getGlobalSettings().httpProxy);
1491
+ configureHttpDispatcher(settingsManager.getHttpIdleTimeoutMs());
1492
+ if (parsed.help) {
1493
+ reportDiagnostics(startupSettingsDiagnostics);
1494
+ printHelp();
1495
+ process.exit(0);
1496
+ }
1497
+ if (parsed.listModels !== undefined) {
1498
+ reportDiagnostics(startupSettingsDiagnostics);
1499
+ const searchPattern = typeof parsed.listModels === "string" ? parsed.listModels : undefined;
1500
+ await listModels(modelRuntime, searchPattern, AbortSignal.timeout(15_000));
1501
+ process.exit(0);
1502
+ }
1503
+ // Read piped stdin content (if any) - skip for RPC mode which uses stdin for JSON-RPC
1504
+ let stdinContent;
1505
+ if (appMode !== "rpc") {
1506
+ stdinContent = await readPipedStdin();
1507
+ // v8 ignore next -- stdin 的 isTTY 在两次读取间不会变化,交互模式下不可能读到管道内容
1508
+ if (stdinContent !== undefined && appMode === "interactive") {
1509
+ appMode = "print";
1510
+ }
1511
+ }
1512
+ time("readPipedStdin");
1513
+ const { initialMessage, initialImages } = await prepareInitialMessage(parsed, settingsManager.getImageAutoResize(), stdinContent);
1514
+ time("prepareInitialMessage");
1515
+ initTheme(settingsManager.getTheme(), appMode === "interactive");
1516
+ time("initTheme");
1517
+ // Show deprecation warnings in interactive mode
1518
+ if (appMode === "interactive" && deprecationWarnings.length > 0) {
1519
+ await showDeprecationWarnings(deprecationWarnings);
1520
+ }
1521
+ time("resolveModelScope");
1522
+ const allStartupDiagnostics = deduplicateDiagnostics([...startupSettingsDiagnostics, ...runtime.diagnostics]);
1523
+ const startupDiagnostics = filterAcknowledgedSuiteNotices(allStartupDiagnostics, settingsManager);
1524
+ // ack 经 save() 的异步写队列落盘;print 模式随即退出、TUI 退出链也不经过
1525
+ // settings flush,这里统一等待落盘,否则"已读"记录静默丢失。
1526
+ await settingsManager.flush().catch(() => { });
1527
+ const hasRuntimeErrors = runtime.diagnostics.some((diagnostic) => diagnostic.type === "error");
1528
+ if (appMode !== "interactive" || hasRuntimeErrors) {
1529
+ reportDiagnostics(startupDiagnostics);
1530
+ }
1531
+ if (hasRuntimeErrors) {
1532
+ process.exit(1);
1533
+ }
1534
+ // D-028: interactive mode suppresses startup warnings above, so rejected
1535
+ // capability plugins get an explicit stderr note before the TUI takes over.
1536
+ if (appMode === "interactive") {
1537
+ for (const rejection of runtime.pluginRejections) {
1538
+ console.error(chalk.yellow(`Warning: capability plugin rejected (${rejection.code}): ${rejection.pluginId ?? rejection.manifestPath}: ${rejection.message}`));
1539
+ }
1540
+ }
1541
+ time("createAgentSession");
1542
+ // With nothing configured, agent core falls back to an all-"unknown"
1543
+ // placeholder model (packages/agent/src/agent.ts DEFAULT_MODEL), so a truthy
1544
+ // session.model does not mean a usable model. Non-interactive modes must
1545
+ // stop here with the login guidance instead of dying mid-request.
1546
+ const noModelResolved = !session.model || (session.model.provider === "unknown" && session.model.id === "unknown");
1547
+ if (appMode !== "interactive" && noModelResolved) {
1548
+ console.error(chalk.red(modelFallbackMessage ?? formatNoModelsAvailableMessage()));
1549
+ process.exit(1);
1550
+ }
1551
+ const startupBenchmark = isTruthyEnvFlag(process.env.AGENT_FORGE_STARTUP_BENCHMARK);
1552
+ if (startupBenchmark && appMode !== "interactive") {
1553
+ console.error(chalk.red("Error: AGENT_FORGE_STARTUP_BENCHMARK only supports interactive mode"));
1554
+ process.exit(1);
1555
+ }
1556
+ // RPC refreshes catalogs here in the background; interactive mode starts its refresh after TUI initialization.
1557
+ if (!offlineMode && appMode === "rpc") {
1558
+ const controller = new AbortController();
1559
+ const timeout = setTimeout(() => controller.abort(), 15_000);
1560
+ void modelRuntime
1561
+ .refresh({ signal: controller.signal })
1562
+ .catch(() => { })
1563
+ .finally(() => clearTimeout(timeout));
1564
+ }
1565
+ if (appMode === "rpc") {
1566
+ printTimings();
1567
+ await runRpcMode(runtime, {
1568
+ interactionHostSlot: interactionHostSlots.rpc,
1569
+ // 惰性解引用:插件工厂在挂载时才执行,构造期取 ref.current 会拿到
1570
+ // undefined(/metrics 曾因此永远报未挂载)。
1571
+ getMetrics: (options) => runtime.observabilityGetMetricsRef?.current?.(options),
1572
+ });
1573
+ }
1574
+ else if (appMode === "interactive") {
1575
+ const interactiveMode = new InteractiveMode(runtime, {
1576
+ // 惰性解引用:插件工厂在挂载时才执行,构造期取 ref.current 会拿到
1577
+ // undefined(/metrics 曾因此永远报未挂载)。
1578
+ getMetrics: (options) => runtime.observabilityGetMetricsRef?.current?.(options),
1579
+ migratedProviders,
1580
+ startupDiagnostics,
1581
+ modelFallbackMessage,
1582
+ initialMessage,
1583
+ initialImages,
1584
+ initialMessages: parsed.messages,
1585
+ verbose: parsed.verbose,
1586
+ tuiMode: parsed.tuiMode,
1587
+ initialThemeSetting: parsed.useTheme,
1588
+ pendingSuiteSelector,
1589
+ settingsManager,
1590
+ });
1591
+ // Interaction capability (1A.8): the TUI owns the dialog surface, so its
1592
+ // host backs the slot the session was created with.
1593
+ interactionHostSlots.interactive.setTarget(interactiveMode.createInteractionHostV1());
1594
+ if (startupBenchmark) {
1595
+ await interactiveMode.init();
1596
+ time("interactiveMode.init");
1597
+ // Give the TUI's stdin handler a brief chance to consume terminal query replies
1598
+ // (Kitty keyboard protocol, device attributes, cell size) before restoring the terminal.
1599
+ await new Promise((resolve) => setTimeout(resolve, 150));
1600
+ interactiveMode.stop();
1601
+ stopThemeWatcher();
1602
+ printTimings();
1603
+ if (process.stdout.writableLength > 0) {
1604
+ await new Promise((resolve) => process.stdout.once("drain", resolve));
1605
+ }
1606
+ if (process.stderr.writableLength > 0) {
1607
+ await new Promise((resolve) => process.stderr.once("drain", resolve));
1608
+ }
1609
+ return;
1610
+ }
1611
+ printTimings();
1612
+ await interactiveMode.run();
1613
+ }
1614
+ else {
1615
+ printTimings();
1616
+ const exitCode = await runPrintMode(runtime, {
1617
+ mode: toPrintOutputMode(appMode),
1618
+ messages: parsed.messages,
1619
+ initialMessage,
1620
+ initialImages,
1621
+ });
1622
+ stopThemeWatcher();
1623
+ restoreStdout();
1624
+ if (exitCode !== 0) {
1625
+ process.exitCode = exitCode;
1626
+ }
1627
+ return;
1628
+ }
1629
+ }
1630
+ //# sourceMappingURL=main.js.map