@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
@@ -0,0 +1,159 @@
1
+ import { createHash } from "node:crypto";
2
+ import { detectPluginPackageMediaTypeV1 } from "./node-package-media.js";
3
+ /**
4
+ * Custom-URL plugin package download (design §4.6 "自定义 URL" row). The URL
5
+ * is the package file itself (zip/tgz); integrity is layered: a `#sha256:<hex>`
6
+ * ref fragment becomes a strong digest check, otherwise TLS plus the double
7
+ * manifest validation performed by the install host.
8
+ */
9
+ const DEFAULT_TIMEOUT_MS_V1 = 30_000;
10
+ const MAX_TIMEOUT_MS_V1 = 120_000;
11
+ const DEFAULT_MAX_PACKAGE_BYTES_V1 = 128 * 1024 * 1024;
12
+ const MAX_PACKAGE_BYTES_V1 = 512 * 1024 * 1024;
13
+ const DEFAULT_REDIRECTS_V1 = 3;
14
+ const MAX_REDIRECTS_V1 = 5;
15
+ const REDIRECT_STATUS = new Set([301, 302, 303, 307, 308]);
16
+ export class NodeUrlPackageSourceErrorV1 extends Error {
17
+ code;
18
+ constructor(code, message) {
19
+ super(message);
20
+ this.name = "NodeUrlPackageSourceErrorV1";
21
+ this.code = code;
22
+ }
23
+ }
24
+ function boundedPositive(value, fallback, maximum, label) {
25
+ const result = value ?? fallback;
26
+ if (!Number.isSafeInteger(result) || result <= 0 || result > maximum)
27
+ throw new NodeUrlPackageSourceErrorV1("invalid_configuration", `${label} must be a positive integer at most ${maximum}`);
28
+ return result;
29
+ }
30
+ function packageUrl(value) {
31
+ let parsed;
32
+ try {
33
+ parsed = new URL(value);
34
+ }
35
+ catch {
36
+ throw new NodeUrlPackageSourceErrorV1("invalid_url", "plugin package URL is invalid");
37
+ }
38
+ if ((parsed.protocol !== "http:" && parsed.protocol !== "https:") ||
39
+ parsed.username !== "" ||
40
+ parsed.password !== "")
41
+ throw new NodeUrlPackageSourceErrorV1("invalid_url", "plugin package URL must use http(s) without credentials");
42
+ if (parsed.hash !== "")
43
+ throw new NodeUrlPackageSourceErrorV1("invalid_url", "plugin package URL must not include a fragment");
44
+ return parsed;
45
+ }
46
+ function isAbortLike(error) {
47
+ return error instanceof Error && (error.name === "AbortError" || error.name === "AbortSignalError");
48
+ }
49
+ /**
50
+ * Download one package file over http(s). Redirects are followed manually and
51
+ * every hop must again be a valid http(s) URL without credentials. When
52
+ * `expectedDigestHex` is present the sha256 of the bytes must match exactly.
53
+ */
54
+ export async function downloadNodeUrlPackageV1(options, input) {
55
+ const transport = options.fetch ?? globalThis.fetch;
56
+ if (typeof transport !== "function")
57
+ throw new NodeUrlPackageSourceErrorV1("invalid_configuration", "Node fetch is unavailable");
58
+ const timeoutMs = boundedPositive(options.requestTimeoutMs, DEFAULT_TIMEOUT_MS_V1, MAX_TIMEOUT_MS_V1, "requestTimeoutMs");
59
+ const maxPackageBytes = boundedPositive(options.maxPackageBytes, DEFAULT_MAX_PACKAGE_BYTES_V1, MAX_PACKAGE_BYTES_V1, "maxPackageBytes");
60
+ const maxRedirects = options.maxRedirects ?? DEFAULT_REDIRECTS_V1;
61
+ if (!Number.isSafeInteger(maxRedirects) || maxRedirects < 0 || maxRedirects > MAX_REDIRECTS_V1)
62
+ throw new NodeUrlPackageSourceErrorV1("invalid_configuration", `maxRedirects must be an integer between 0 and ${MAX_REDIRECTS_V1}`);
63
+ const userAgent = options.userAgent ?? "agent-forge-plugin-url/1";
64
+ if (userAgent.length === 0 || userAgent.length > 256 || /[\r\n]/u.test(userAgent))
65
+ throw new NodeUrlPackageSourceErrorV1("invalid_configuration", "userAgent is invalid");
66
+ if (input.expectedDigestHex !== undefined && !/^[0-9a-f]{64}$/u.test(input.expectedDigestHex))
67
+ throw new NodeUrlPackageSourceErrorV1("invalid_url", "expected sha256 digest is invalid");
68
+ let current = packageUrl(input.url);
69
+ let response;
70
+ const controller = new AbortController();
71
+ let timedOut = false;
72
+ const abort = () => controller.abort(input.signal?.reason);
73
+ if (input.signal?.aborted === true)
74
+ abort();
75
+ else
76
+ input.signal?.addEventListener("abort", abort, { once: true });
77
+ const timeout = setTimeout(() => {
78
+ timedOut = true;
79
+ controller.abort();
80
+ }, timeoutMs);
81
+ try {
82
+ for (let redirect = 0;; redirect += 1) {
83
+ if (controller.signal.aborted)
84
+ throw new NodeUrlPackageSourceErrorV1("cancelled", "plugin package download was cancelled");
85
+ let hop;
86
+ try {
87
+ hop = await transport(current.toString(), {
88
+ method: "GET",
89
+ headers: { accept: "*/*", "user-agent": userAgent },
90
+ redirect: "manual",
91
+ signal: controller.signal,
92
+ });
93
+ }
94
+ catch (error) {
95
+ if (timedOut)
96
+ throw new NodeUrlPackageSourceErrorV1("request_timed_out", "plugin package download timed out");
97
+ if (isAbortLike(error) || input.signal?.aborted === true)
98
+ throw new NodeUrlPackageSourceErrorV1("cancelled", "plugin package download was cancelled");
99
+ throw new NodeUrlPackageSourceErrorV1("request_failed", "plugin package download failed");
100
+ }
101
+ if (!REDIRECT_STATUS.has(hop.status)) {
102
+ response = hop;
103
+ break;
104
+ }
105
+ const location = hop.headers.get("location");
106
+ await hop.body?.cancel().catch(() => undefined);
107
+ if (location === null || redirect >= maxRedirects)
108
+ throw new NodeUrlPackageSourceErrorV1("request_failed", "plugin package redirect limit exceeded");
109
+ current = packageUrl(new URL(location, current).toString());
110
+ }
111
+ if (response === undefined)
112
+ throw new NodeUrlPackageSourceErrorV1("request_failed", "plugin package download failed");
113
+ if (response.status < 200 || response.status >= 300)
114
+ throw new NodeUrlPackageSourceErrorV1("request_failed", "plugin package download did not succeed");
115
+ if (response.body === null)
116
+ throw new NodeUrlPackageSourceErrorV1("request_failed", "plugin package response has no body");
117
+ const reader = response.body.getReader();
118
+ const chunks = [];
119
+ const hash = createHash("sha256");
120
+ let total = 0;
121
+ try {
122
+ for (;;) {
123
+ if (controller.signal.aborted)
124
+ throw new NodeUrlPackageSourceErrorV1("cancelled", "plugin package download was cancelled");
125
+ const item = await reader.read();
126
+ if (item.done)
127
+ break;
128
+ total += item.value.byteLength;
129
+ if (total > maxPackageBytes)
130
+ throw new NodeUrlPackageSourceErrorV1("response_too_large", "plugin package exceeds the configured size limit");
131
+ hash.update(item.value);
132
+ chunks.push(item.value);
133
+ }
134
+ }
135
+ finally {
136
+ reader.releaseLock();
137
+ }
138
+ if (controller.signal.aborted)
139
+ throw new NodeUrlPackageSourceErrorV1("cancelled", "plugin package download was cancelled");
140
+ const bytes = new Uint8Array(total);
141
+ let offset = 0;
142
+ for (const chunk of chunks) {
143
+ bytes.set(chunk, offset);
144
+ offset += chunk.byteLength;
145
+ }
146
+ const digestHex = hash.digest("hex");
147
+ if (input.expectedDigestHex !== undefined && digestHex !== input.expectedDigestHex)
148
+ throw new NodeUrlPackageSourceErrorV1("digest_mismatch", "plugin package bytes do not match the expected sha256 digest");
149
+ const fileName = current.pathname.split("/").pop();
150
+ const mediaType = detectPluginPackageMediaTypeV1(bytes, fileName === undefined || fileName.length === 0 ? undefined : fileName);
151
+ return { bytes, mediaType, digestHex };
152
+ }
153
+ finally {
154
+ clearTimeout(timeout);
155
+ input.signal?.removeEventListener("abort", abort);
156
+ await response?.body?.cancel().catch(() => undefined);
157
+ }
158
+ }
159
+ //# sourceMappingURL=node-url-package-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-url-package-source.js","sourceRoot":"","sources":["../../../src/plugins/ecosystem/node-url-package-source.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { detectPluginPackageMediaTypeV1, type PluginPackageMediaTypeV1 } from \"./node-package-media.ts\";\n\n/**\n * Custom-URL plugin package download (design §4.6 \"自定义 URL\" row). The URL\n * is the package file itself (zip/tgz); integrity is layered: a `#sha256:<hex>`\n * ref fragment becomes a strong digest check, otherwise TLS plus the double\n * manifest validation performed by the install host.\n */\n\nconst DEFAULT_TIMEOUT_MS_V1 = 30_000;\nconst MAX_TIMEOUT_MS_V1 = 120_000;\nconst DEFAULT_MAX_PACKAGE_BYTES_V1 = 128 * 1024 * 1024;\nconst MAX_PACKAGE_BYTES_V1 = 512 * 1024 * 1024;\nconst DEFAULT_REDIRECTS_V1 = 3;\nconst MAX_REDIRECTS_V1 = 5;\nconst REDIRECT_STATUS = new Set([301, 302, 303, 307, 308]);\n\nexport type NodeUrlPackageSourceErrorCodeV1 =\n\t| \"cancelled\"\n\t| \"invalid_configuration\"\n\t| \"invalid_url\"\n\t| \"request_failed\"\n\t| \"request_timed_out\"\n\t| \"response_too_large\"\n\t| \"digest_mismatch\";\n\nexport class NodeUrlPackageSourceErrorV1 extends Error {\n\treadonly code: NodeUrlPackageSourceErrorCodeV1;\n\n\tconstructor(code: NodeUrlPackageSourceErrorCodeV1, message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"NodeUrlPackageSourceErrorV1\";\n\t\tthis.code = code;\n\t}\n}\n\nexport interface NodeUrlPackageSourceOptionsV1 {\n\t/** Real fetch or a deterministic test replacement. */\n\treadonly fetch?: typeof globalThis.fetch;\n\treadonly requestTimeoutMs?: number;\n\treadonly maxPackageBytes?: number;\n\treadonly maxRedirects?: number;\n\treadonly userAgent?: string;\n}\n\nexport interface NodeUrlPackageDownloadV1 {\n\treadonly bytes: Uint8Array;\n\treadonly mediaType: PluginPackageMediaTypeV1;\n\t/** sha256 hex of the downloaded bytes; always computed, verified when expected. */\n\treadonly digestHex: string;\n}\n\nfunction boundedPositive(value: number | undefined, fallback: number, maximum: number, label: string): number {\n\tconst result = value ?? fallback;\n\tif (!Number.isSafeInteger(result) || result <= 0 || result > maximum)\n\t\tthrow new NodeUrlPackageSourceErrorV1(\n\t\t\t\"invalid_configuration\",\n\t\t\t`${label} must be a positive integer at most ${maximum}`,\n\t\t);\n\treturn result;\n}\n\nfunction packageUrl(value: string): URL {\n\tlet parsed: URL;\n\ttry {\n\t\tparsed = new URL(value);\n\t} catch {\n\t\tthrow new NodeUrlPackageSourceErrorV1(\"invalid_url\", \"plugin package URL is invalid\");\n\t}\n\tif (\n\t\t(parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") ||\n\t\tparsed.username !== \"\" ||\n\t\tparsed.password !== \"\"\n\t)\n\t\tthrow new NodeUrlPackageSourceErrorV1(\"invalid_url\", \"plugin package URL must use http(s) without credentials\");\n\tif (parsed.hash !== \"\")\n\t\tthrow new NodeUrlPackageSourceErrorV1(\"invalid_url\", \"plugin package URL must not include a fragment\");\n\treturn parsed;\n}\n\nfunction isAbortLike(error: unknown): boolean {\n\treturn error instanceof Error && (error.name === \"AbortError\" || error.name === \"AbortSignalError\");\n}\n\n/**\n * Download one package file over http(s). Redirects are followed manually and\n * every hop must again be a valid http(s) URL without credentials. When\n * `expectedDigestHex` is present the sha256 of the bytes must match exactly.\n */\nexport async function downloadNodeUrlPackageV1(\n\toptions: NodeUrlPackageSourceOptionsV1,\n\tinput: {\n\t\treadonly url: string;\n\t\treadonly expectedDigestHex?: string;\n\t\treadonly signal?: AbortSignal;\n\t},\n): Promise<NodeUrlPackageDownloadV1> {\n\tconst transport = options.fetch ?? globalThis.fetch;\n\tif (typeof transport !== \"function\")\n\t\tthrow new NodeUrlPackageSourceErrorV1(\"invalid_configuration\", \"Node fetch is unavailable\");\n\tconst timeoutMs = boundedPositive(\n\t\toptions.requestTimeoutMs,\n\t\tDEFAULT_TIMEOUT_MS_V1,\n\t\tMAX_TIMEOUT_MS_V1,\n\t\t\"requestTimeoutMs\",\n\t);\n\tconst maxPackageBytes = boundedPositive(\n\t\toptions.maxPackageBytes,\n\t\tDEFAULT_MAX_PACKAGE_BYTES_V1,\n\t\tMAX_PACKAGE_BYTES_V1,\n\t\t\"maxPackageBytes\",\n\t);\n\tconst maxRedirects = options.maxRedirects ?? DEFAULT_REDIRECTS_V1;\n\tif (!Number.isSafeInteger(maxRedirects) || maxRedirects < 0 || maxRedirects > MAX_REDIRECTS_V1)\n\t\tthrow new NodeUrlPackageSourceErrorV1(\n\t\t\t\"invalid_configuration\",\n\t\t\t`maxRedirects must be an integer between 0 and ${MAX_REDIRECTS_V1}`,\n\t\t);\n\tconst userAgent = options.userAgent ?? \"agent-forge-plugin-url/1\";\n\tif (userAgent.length === 0 || userAgent.length > 256 || /[\\r\\n]/u.test(userAgent))\n\t\tthrow new NodeUrlPackageSourceErrorV1(\"invalid_configuration\", \"userAgent is invalid\");\n\tif (input.expectedDigestHex !== undefined && !/^[0-9a-f]{64}$/u.test(input.expectedDigestHex))\n\t\tthrow new NodeUrlPackageSourceErrorV1(\"invalid_url\", \"expected sha256 digest is invalid\");\n\n\tlet current = packageUrl(input.url);\n\tlet response: Response | undefined;\n\tconst controller = new AbortController();\n\tlet timedOut = false;\n\tconst abort = () => controller.abort(input.signal?.reason);\n\tif (input.signal?.aborted === true) abort();\n\telse input.signal?.addEventListener(\"abort\", abort, { once: true });\n\tconst timeout = setTimeout(() => {\n\t\ttimedOut = true;\n\t\tcontroller.abort();\n\t}, timeoutMs);\n\ttry {\n\t\tfor (let redirect = 0; ; redirect += 1) {\n\t\t\tif (controller.signal.aborted)\n\t\t\t\tthrow new NodeUrlPackageSourceErrorV1(\"cancelled\", \"plugin package download was cancelled\");\n\t\t\tlet hop: Response;\n\t\t\ttry {\n\t\t\t\thop = await transport(current.toString(), {\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\theaders: { accept: \"*/*\", \"user-agent\": userAgent },\n\t\t\t\t\tredirect: \"manual\",\n\t\t\t\t\tsignal: controller.signal,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (timedOut)\n\t\t\t\t\tthrow new NodeUrlPackageSourceErrorV1(\"request_timed_out\", \"plugin package download timed out\");\n\t\t\t\tif (isAbortLike(error) || input.signal?.aborted === true)\n\t\t\t\t\tthrow new NodeUrlPackageSourceErrorV1(\"cancelled\", \"plugin package download was cancelled\");\n\t\t\t\tthrow new NodeUrlPackageSourceErrorV1(\"request_failed\", \"plugin package download failed\");\n\t\t\t}\n\t\t\tif (!REDIRECT_STATUS.has(hop.status)) {\n\t\t\t\tresponse = hop;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst location = hop.headers.get(\"location\");\n\t\t\tawait hop.body?.cancel().catch(() => undefined);\n\t\t\tif (location === null || redirect >= maxRedirects)\n\t\t\t\tthrow new NodeUrlPackageSourceErrorV1(\"request_failed\", \"plugin package redirect limit exceeded\");\n\t\t\tcurrent = packageUrl(new URL(location, current).toString());\n\t\t}\n\t\tif (response === undefined)\n\t\t\tthrow new NodeUrlPackageSourceErrorV1(\"request_failed\", \"plugin package download failed\");\n\t\tif (response.status < 200 || response.status >= 300)\n\t\t\tthrow new NodeUrlPackageSourceErrorV1(\"request_failed\", \"plugin package download did not succeed\");\n\t\tif (response.body === null)\n\t\t\tthrow new NodeUrlPackageSourceErrorV1(\"request_failed\", \"plugin package response has no body\");\n\t\tconst reader = response.body.getReader();\n\t\tconst chunks: Uint8Array[] = [];\n\t\tconst hash = createHash(\"sha256\");\n\t\tlet total = 0;\n\t\ttry {\n\t\t\tfor (;;) {\n\t\t\t\tif (controller.signal.aborted)\n\t\t\t\t\tthrow new NodeUrlPackageSourceErrorV1(\"cancelled\", \"plugin package download was cancelled\");\n\t\t\t\tconst item = await reader.read();\n\t\t\t\tif (item.done) break;\n\t\t\t\ttotal += item.value.byteLength;\n\t\t\t\tif (total > maxPackageBytes)\n\t\t\t\t\tthrow new NodeUrlPackageSourceErrorV1(\n\t\t\t\t\t\t\"response_too_large\",\n\t\t\t\t\t\t\"plugin package exceeds the configured size limit\",\n\t\t\t\t\t);\n\t\t\t\thash.update(item.value);\n\t\t\t\tchunks.push(item.value);\n\t\t\t}\n\t\t} finally {\n\t\t\treader.releaseLock();\n\t\t}\n\t\tif (controller.signal.aborted)\n\t\t\tthrow new NodeUrlPackageSourceErrorV1(\"cancelled\", \"plugin package download was cancelled\");\n\t\tconst bytes = new Uint8Array(total);\n\t\tlet offset = 0;\n\t\tfor (const chunk of chunks) {\n\t\t\tbytes.set(chunk, offset);\n\t\t\toffset += chunk.byteLength;\n\t\t}\n\t\tconst digestHex = hash.digest(\"hex\");\n\t\tif (input.expectedDigestHex !== undefined && digestHex !== input.expectedDigestHex)\n\t\t\tthrow new NodeUrlPackageSourceErrorV1(\n\t\t\t\t\"digest_mismatch\",\n\t\t\t\t\"plugin package bytes do not match the expected sha256 digest\",\n\t\t\t);\n\t\tconst fileName = current.pathname.split(\"/\").pop();\n\t\tconst mediaType = detectPluginPackageMediaTypeV1(\n\t\t\tbytes,\n\t\t\tfileName === undefined || fileName.length === 0 ? undefined : fileName,\n\t\t);\n\t\treturn { bytes, mediaType, digestHex };\n\t} finally {\n\t\tclearTimeout(timeout);\n\t\tinput.signal?.removeEventListener(\"abort\", abort);\n\t\tawait response?.body?.cancel().catch(() => undefined);\n\t}\n}\n"]}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Pure ref parsing for multi-source plugin package acquisition
3
+ * (`plugin install <ref>`, design `插件独立分发与启动装配设计.md` §4.6).
4
+ *
5
+ * Ref grammar and resolution priority:
6
+ * 1. local path (existing directory or `.zip`/`.tgz` file); a ref that exists
7
+ * locally but is neither of those is an explicit `unsupported_local_ref`
8
+ * error and never falls through to later priorities;
9
+ * 2. `github:<owner>/<repo>[@<tag>]` / `gitee:...` — resolved against the
10
+ * matching release API by the acquisition host;
11
+ * 3. `http://`/`https://` URL, optionally with a `#sha256:<hex>` fragment that
12
+ * is stripped before resolution and becomes a strong digest check;
13
+ * 4. anything else is an npm package ref (`@scope/name[@range]` or
14
+ * `name[@range]`) with the minimal range subset `x.y.z`, `^x.y.z`,
15
+ * `~x.y.z`, `latest`.
16
+ *
17
+ * Reserved scheme prefixes (`github:`, `gitee:`, and any other URL scheme) are
18
+ * never probed as local paths; every other ref is probed locally before npm
19
+ * name parsing. The CLI additionally routes only refs that cannot be legacy
20
+ * plugin IDs to this parser (see {@link isPluginAcquisitionRefTargetV1}).
21
+ */
22
+ import type { PluginDistributionArtifactV1 } from "./distribution.ts";
23
+ import type { PluginManifestV1 } from "./types.ts";
24
+ export declare const MAX_PLUGIN_ACQUISITION_REF_CHARS_V1 = 2048;
25
+ export declare const MAX_PLUGIN_ACQUISITION_NPM_NAME_CHARS_V1 = 214;
26
+ /**
27
+ * Resolved acquisition package handed to an install transaction. The manifest
28
+ * identity is discovered from the package itself (`agent-forge.json`); the
29
+ * artifact is an opaque host-owned handle bound to the acquired bytes.
30
+ */
31
+ export interface PluginAcquisitionPackageV1 {
32
+ readonly manifest: PluginManifestV1;
33
+ readonly manifestDigest: string;
34
+ /** Opaque source label persisted in the plugin state record (`npm:<host>`, `url:<host>`, `local:dir`, `local:file`). */
35
+ readonly source: string;
36
+ readonly artifact: PluginDistributionArtifactV1;
37
+ /** Release the artifact bytes; resolves `true` when nothing remains held. */
38
+ readonly release: () => Promise<boolean>;
39
+ }
40
+ export type PluginAcquisitionErrorCodeV1 = "invalid_ref" | "unsupported_local_ref" | "unsupported_scheme" | "invalid_digest_fragment" | "invalid_npm_ref" | "cancelled" | "download_failed" | "package_not_found" | "version_not_found" | "digest_mismatch" | "unsupported_media_type" | "package_invalid" | "budget_exceeded" | "release_not_found" | "release_asset_not_found" | "release_asset_ambiguous" | "rate_limited";
41
+ export declare class PluginAcquisitionErrorV1 extends Error {
42
+ readonly code: PluginAcquisitionErrorCodeV1;
43
+ /** Optional factual suffix (asset candidates, rate-limit reset) appended to the static message. */
44
+ constructor(code: PluginAcquisitionErrorCodeV1, detail?: string);
45
+ }
46
+ /** A parsed acquisition ref. Digests are lowercase hex without an algorithm prefix. */
47
+ export type PluginAcquisitionRefV1 = {
48
+ readonly kind: "local-path";
49
+ readonly path: string;
50
+ } | {
51
+ readonly kind: "local-file";
52
+ readonly path: string;
53
+ } | {
54
+ readonly kind: "url";
55
+ readonly url: string;
56
+ readonly expectedDigestHex?: string;
57
+ } | {
58
+ readonly kind: "npm";
59
+ readonly name: string;
60
+ readonly range?: string;
61
+ } | {
62
+ readonly kind: "github" | "gitee";
63
+ readonly owner: string;
64
+ readonly repo: string;
65
+ readonly tag?: string;
66
+ readonly expectedDigestHex?: string;
67
+ };
68
+ /** Host-injected local filesystem classification; it must not follow symlinks. */
69
+ export interface PluginAcquisitionLocalProbeV1 {
70
+ readonly statLocalRef: (path: string) => "directory" | "file" | "other" | "missing";
71
+ }
72
+ /**
73
+ * Parse one acquisition ref. Priority: local (probe-injected) → github/gitee
74
+ * (recognized only) → http(s) URL → npm name. Throws
75
+ * {@link PluginAcquisitionErrorV1} for every unsupported or malformed ref.
76
+ */
77
+ export declare function parsePluginAcquisitionRefV1(ref: string, probe: PluginAcquisitionLocalProbeV1): PluginAcquisitionRefV1;
78
+ /**
79
+ * CLI routing predicate: legacy registry plugin IDs never contain `/`, `\`,
80
+ * `:`, `#`, a leading `@`, or an npm range suffix (`@^…`, `@~…`, `@latest`).
81
+ * Only targets with one of those markers enter acquisition ref parsing, so the
82
+ * existing `plugin install <pluginId>[@<exact version>]` registry path keeps
83
+ * its exact behavior. Note `name@1.2.3` (exact version) stays a registry
84
+ * identity; an unscoped npm package must be installed through a range suffix
85
+ * (`name@^1.2.3`, `name@latest`) or a scoped `@scope/name…` ref.
86
+ */
87
+ export declare function isPluginAcquisitionRefTargetV1(target: string): boolean;
88
+ //# sourceMappingURL=plugin-acquisition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-acquisition.d.ts","sourceRoot":"","sources":["../../../src/plugins/ecosystem/plugin-acquisition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,mCAAmC,OAAO,CAAC;AACxD,eAAO,MAAM,wCAAwC,MAAM,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,wHAAwH;IACxH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,4BAA4B,CAAC;IAChD,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,MAAM,4BAA4B,GACrC,aAAa,GACb,uBAAuB,GACvB,oBAAoB,GACpB,yBAAyB,GACzB,iBAAiB,GACjB,WAAW,GACX,iBAAiB,GACjB,mBAAmB,GACnB,mBAAmB,GACnB,iBAAiB,GACjB,wBAAwB,GACxB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,yBAAyB,GACzB,yBAAyB,GACzB,cAAc,CAAC;AAsBlB,qBAAa,wBAAyB,SAAQ,KAAK;IAClD,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAE5C,mGAAmG;IACnG,YAAY,IAAI,EAAE,4BAA4B,EAAE,MAAM,CAAC,EAAE,MAAM,EAQ9D;CACD;AAED,uFAAuF;AACvF,MAAM,MAAM,sBAAsB,GAC/B;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,GACnF;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxE;IACA,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEL,kFAAkF;AAClF,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACpF;AAoFD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,GAAG,sBAAsB,CAcrH;AAaD;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAetE","sourcesContent":["/**\n * Pure ref parsing for multi-source plugin package acquisition\n * (`plugin install <ref>`, design `插件独立分发与启动装配设计.md` §4.6).\n *\n * Ref grammar and resolution priority:\n * 1. local path (existing directory or `.zip`/`.tgz` file); a ref that exists\n * locally but is neither of those is an explicit `unsupported_local_ref`\n * error and never falls through to later priorities;\n * 2. `github:<owner>/<repo>[@<tag>]` / `gitee:...` — resolved against the\n * matching release API by the acquisition host;\n * 3. `http://`/`https://` URL, optionally with a `#sha256:<hex>` fragment that\n * is stripped before resolution and becomes a strong digest check;\n * 4. anything else is an npm package ref (`@scope/name[@range]` or\n * `name[@range]`) with the minimal range subset `x.y.z`, `^x.y.z`,\n * `~x.y.z`, `latest`.\n *\n * Reserved scheme prefixes (`github:`, `gitee:`, and any other URL scheme) are\n * never probed as local paths; every other ref is probed locally before npm\n * name parsing. The CLI additionally routes only refs that cannot be legacy\n * plugin IDs to this parser (see {@link isPluginAcquisitionRefTargetV1}).\n */\n\nimport type { PluginDistributionArtifactV1 } from \"./distribution.ts\";\nimport type { PluginManifestV1 } from \"./types.ts\";\n\nexport const MAX_PLUGIN_ACQUISITION_REF_CHARS_V1 = 2048;\nexport const MAX_PLUGIN_ACQUISITION_NPM_NAME_CHARS_V1 = 214;\n\n/**\n * Resolved acquisition package handed to an install transaction. The manifest\n * identity is discovered from the package itself (`agent-forge.json`); the\n * artifact is an opaque host-owned handle bound to the acquired bytes.\n */\nexport interface PluginAcquisitionPackageV1 {\n\treadonly manifest: PluginManifestV1;\n\treadonly manifestDigest: string;\n\t/** Opaque source label persisted in the plugin state record (`npm:<host>`, `url:<host>`, `local:dir`, `local:file`). */\n\treadonly source: string;\n\treadonly artifact: PluginDistributionArtifactV1;\n\t/** Release the artifact bytes; resolves `true` when nothing remains held. */\n\treadonly release: () => Promise<boolean>;\n}\n\nexport type PluginAcquisitionErrorCodeV1 =\n\t| \"invalid_ref\"\n\t| \"unsupported_local_ref\"\n\t| \"unsupported_scheme\"\n\t| \"invalid_digest_fragment\"\n\t| \"invalid_npm_ref\"\n\t| \"cancelled\"\n\t| \"download_failed\"\n\t| \"package_not_found\"\n\t| \"version_not_found\"\n\t| \"digest_mismatch\"\n\t| \"unsupported_media_type\"\n\t| \"package_invalid\"\n\t| \"budget_exceeded\"\n\t| \"release_not_found\"\n\t| \"release_asset_not_found\"\n\t| \"release_asset_ambiguous\"\n\t| \"rate_limited\";\n\nconst ACQUISITION_ERROR_MESSAGES_V1: Readonly<Record<PluginAcquisitionErrorCodeV1, string>> = {\n\tinvalid_ref: \"Plugin ref is invalid\",\n\tunsupported_local_ref: \"Local plugin ref exists but is neither a directory nor a .zip/.tgz file\",\n\tunsupported_scheme: \"Plugin ref URL scheme is not supported\",\n\tinvalid_digest_fragment: \"Plugin ref #sha256 digest fragment is invalid\",\n\tinvalid_npm_ref: \"Plugin npm package ref is invalid\",\n\tcancelled: \"Plugin package acquisition was cancelled\",\n\tdownload_failed: \"Plugin package download failed\",\n\tpackage_not_found: \"Plugin npm package was not found on the registry\",\n\tversion_not_found: \"No npm package version matches the requested range\",\n\tdigest_mismatch: \"Plugin package bytes do not match the expected digest\",\n\tunsupported_media_type: \"Plugin package bytes are neither a zip nor a tgz\",\n\tpackage_invalid: \"Plugin package contents are invalid\",\n\tbudget_exceeded: \"Plugin package exceeds the configured size budget\",\n\trelease_not_found: \"Plugin release was not found\",\n\trelease_asset_not_found: \"Plugin release has no .zip/.tgz asset\",\n\trelease_asset_ambiguous: \"Plugin release has multiple .zip/.tgz assets\",\n\trate_limited: \"Plugin release API rate limit was exceeded\",\n};\n\nexport class PluginAcquisitionErrorV1 extends Error {\n\treadonly code: PluginAcquisitionErrorCodeV1;\n\n\t/** Optional factual suffix (asset candidates, rate-limit reset) appended to the static message. */\n\tconstructor(code: PluginAcquisitionErrorCodeV1, detail?: string) {\n\t\tsuper(\n\t\t\tdetail === undefined || detail.length === 0\n\t\t\t\t? ACQUISITION_ERROR_MESSAGES_V1[code]\n\t\t\t\t: `${ACQUISITION_ERROR_MESSAGES_V1[code]}: ${detail}`,\n\t\t);\n\t\tthis.name = \"PluginAcquisitionErrorV1\";\n\t\tthis.code = code;\n\t}\n}\n\n/** A parsed acquisition ref. Digests are lowercase hex without an algorithm prefix. */\nexport type PluginAcquisitionRefV1 =\n\t| { readonly kind: \"local-path\"; readonly path: string }\n\t| { readonly kind: \"local-file\"; readonly path: string }\n\t| { readonly kind: \"url\"; readonly url: string; readonly expectedDigestHex?: string }\n\t| { readonly kind: \"npm\"; readonly name: string; readonly range?: string }\n\t| {\n\t\t\treadonly kind: \"github\" | \"gitee\";\n\t\t\treadonly owner: string;\n\t\t\treadonly repo: string;\n\t\t\treadonly tag?: string;\n\t\t\treadonly expectedDigestHex?: string;\n\t };\n\n/** Host-injected local filesystem classification; it must not follow symlinks. */\nexport interface PluginAcquisitionLocalProbeV1 {\n\treadonly statLocalRef: (path: string) => \"directory\" | \"file\" | \"other\" | \"missing\";\n}\n\nconst DIGEST_FRAGMENT_SUFFIX_V1 = /^#sha256:([0-9a-fA-F]{64})$/u;\n\nfunction boundedRef(ref: string): string {\n\tif (\n\t\ttypeof ref !== \"string\" ||\n\t\tref.length === 0 ||\n\t\tref.length > MAX_PLUGIN_ACQUISITION_REF_CHARS_V1 ||\n\t\t/[\\u0000-\\u001f\\s]/u.test(ref)\n\t)\n\t\tthrow new PluginAcquisitionErrorV1(\"invalid_ref\");\n\treturn ref;\n}\n\n/** Split and validate a trailing `#sha256:<64 hex>` fragment from a scheme ref. */\nfunction splitDigestFragment(ref: string): { readonly value: string; readonly digestHex?: string } {\n\tconst hash = ref.lastIndexOf(\"#\");\n\tif (hash < 0) return { value: ref };\n\tconst fragment = ref.slice(hash);\n\tconst match = DIGEST_FRAGMENT_SUFFIX_V1.exec(fragment);\n\tif (match === null) throw new PluginAcquisitionErrorV1(\"invalid_digest_fragment\");\n\treturn { value: ref.slice(0, hash), digestHex: match[1]!.toLowerCase() };\n}\n\nfunction ownerRepoTag(kind: \"github\" | \"gitee\", value: string, digestHex?: string): PluginAcquisitionRefV1 {\n\tconst match =\n\t\t/^([A-Za-z0-9][A-Za-z0-9._-]{0,99})\\/([A-Za-z0-9][A-Za-z0-9._-]{0,99})(?:@([A-Za-z0-9][A-Za-z0-9._+-]{0,127}))?$/u.exec(\n\t\t\tvalue,\n\t\t);\n\tif (match === null) throw new PluginAcquisitionErrorV1(\"invalid_ref\");\n\treturn {\n\t\tkind,\n\t\towner: match[1]!,\n\t\trepo: match[2]!,\n\t\t...(match[3] === undefined ? {} : { tag: match[3] }),\n\t\t...(digestHex === undefined ? {} : { expectedDigestHex: digestHex }),\n\t};\n}\n\nfunction parseUrlRef(value: string, digestHex?: string): PluginAcquisitionRefV1 {\n\tlet parsed: URL;\n\ttry {\n\t\tparsed = new URL(value);\n\t} catch {\n\t\tthrow new PluginAcquisitionErrorV1(\"invalid_ref\");\n\t}\n\tif (parsed.username !== \"\" || parsed.password !== \"\") throw new PluginAcquisitionErrorV1(\"invalid_ref\");\n\tif (parsed.hash !== \"\") throw new PluginAcquisitionErrorV1(\"invalid_digest_fragment\");\n\treturn {\n\t\tkind: \"url\",\n\t\turl: parsed.toString(),\n\t\t...(digestHex === undefined ? {} : { expectedDigestHex: digestHex }),\n\t};\n}\n\nconst NPM_RANGE_V1 = /^(?:latest|[~^]?\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]+)?)$/u;\nconst NPM_NAME_V1 = /^@?[a-z0-9][a-z0-9-._]*(?:\\/[a-z0-9][a-z0-9-._]*)?$/u;\n\nfunction parseNpmRef(ref: string): PluginAcquisitionRefV1 {\n\tconst at = ref.lastIndexOf(\"@\");\n\tconst name = at > 0 ? ref.slice(0, at) : ref;\n\tconst range = at > 0 ? ref.slice(at + 1) : undefined;\n\tif (\n\t\tname.length === 0 ||\n\t\tname.length > MAX_PLUGIN_ACQUISITION_NPM_NAME_CHARS_V1 ||\n\t\t!NPM_NAME_V1.test(name) ||\n\t\t(name.startsWith(\"@\") && !name.includes(\"/\")) ||\n\t\t(!name.startsWith(\"@\") && name.includes(\"/\"))\n\t)\n\t\tthrow new PluginAcquisitionErrorV1(\"invalid_npm_ref\");\n\tif (range !== undefined && !NPM_RANGE_V1.test(range)) throw new PluginAcquisitionErrorV1(\"invalid_npm_ref\");\n\treturn {\n\t\tkind: \"npm\",\n\t\tname,\n\t\t...(range === undefined ? {} : { range }),\n\t};\n}\n\nfunction isLocalPackageFile(path: string): boolean {\n\tconst value = path.toLowerCase();\n\treturn value.endsWith(\".zip\") || value.endsWith(\".tgz\") || value.endsWith(\".tar.gz\");\n}\n\n/**\n * Parse one acquisition ref. Priority: local (probe-injected) → github/gitee\n * (recognized only) → http(s) URL → npm name. Throws\n * {@link PluginAcquisitionErrorV1} for every unsupported or malformed ref.\n */\nexport function parsePluginAcquisitionRefV1(ref: string, probe: PluginAcquisitionLocalProbeV1): PluginAcquisitionRefV1 {\n\tconst value = boundedRef(ref);\n\t// Windows drive-letter paths must not be mistaken for URL schemes.\n\tif (/^[a-zA-Z]:[\\\\/]/u.test(value)) return localRef(value, probe);\n\tconst scheme = /^([a-zA-Z][a-zA-Z\\d+.-]*):/u.exec(value);\n\tif (scheme !== null) {\n\t\tconst prefix = scheme[1]!.toLowerCase();\n\t\tconst stripped = splitDigestFragment(value);\n\t\tif (prefix === \"github\" || prefix === \"gitee\")\n\t\t\treturn ownerRepoTag(prefix, stripped.value.slice(prefix.length + 1), stripped.digestHex);\n\t\tif (prefix === \"http\" || prefix === \"https\") return parseUrlRef(stripped.value, stripped.digestHex);\n\t\tthrow new PluginAcquisitionErrorV1(\"unsupported_scheme\");\n\t}\n\treturn localRef(value, probe);\n}\n\nfunction localRef(value: string, probe: PluginAcquisitionLocalProbeV1): PluginAcquisitionRefV1 {\n\tconst stat = probe.statLocalRef(value);\n\tif (stat === \"directory\") return { kind: \"local-path\", path: value };\n\tif (stat === \"file\") {\n\t\tif (!isLocalPackageFile(value)) throw new PluginAcquisitionErrorV1(\"unsupported_local_ref\");\n\t\treturn { kind: \"local-file\", path: value };\n\t}\n\tif (stat === \"other\") throw new PluginAcquisitionErrorV1(\"unsupported_local_ref\");\n\treturn parseNpmRef(value);\n}\n\n/**\n * CLI routing predicate: legacy registry plugin IDs never contain `/`, `\\`,\n * `:`, `#`, a leading `@`, or an npm range suffix (`@^…`, `@~…`, `@latest`).\n * Only targets with one of those markers enter acquisition ref parsing, so the\n * existing `plugin install <pluginId>[@<exact version>]` registry path keeps\n * its exact behavior. Note `name@1.2.3` (exact version) stays a registry\n * identity; an unscoped npm package must be installed through a range suffix\n * (`name@^1.2.3`, `name@latest`) or a scoped `@scope/name…` ref.\n */\nexport function isPluginAcquisitionRefTargetV1(target: string): boolean {\n\tif (typeof target !== \"string\" || target.length === 0) return false;\n\tif (target.startsWith(\"@\")) return true;\n\tif (/^[a-zA-Z]:[\\\\/]/u.test(target)) return true;\n\tif (target.startsWith(\"/\") || target.startsWith(\"\\\\\")) return true;\n\tif (target.startsWith(\"./\") || target.startsWith(\".\\\\\")) return true;\n\tif (target.startsWith(\"../\") || target.startsWith(\"..\\\\\")) return true;\n\tif (/[:#]/u.test(target)) return true;\n\tif (/[\\\\/]/u.test(target)) return true;\n\tconst at = target.lastIndexOf(\"@\");\n\tif (at > 0) {\n\t\tconst suffix = target.slice(at + 1);\n\t\tif (suffix === \"latest\" || suffix.startsWith(\"^\") || suffix.startsWith(\"~\")) return true;\n\t}\n\treturn false;\n}\n"]}
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Pure ref parsing for multi-source plugin package acquisition
3
+ * (`plugin install <ref>`, design `插件独立分发与启动装配设计.md` §4.6).
4
+ *
5
+ * Ref grammar and resolution priority:
6
+ * 1. local path (existing directory or `.zip`/`.tgz` file); a ref that exists
7
+ * locally but is neither of those is an explicit `unsupported_local_ref`
8
+ * error and never falls through to later priorities;
9
+ * 2. `github:<owner>/<repo>[@<tag>]` / `gitee:...` — resolved against the
10
+ * matching release API by the acquisition host;
11
+ * 3. `http://`/`https://` URL, optionally with a `#sha256:<hex>` fragment that
12
+ * is stripped before resolution and becomes a strong digest check;
13
+ * 4. anything else is an npm package ref (`@scope/name[@range]` or
14
+ * `name[@range]`) with the minimal range subset `x.y.z`, `^x.y.z`,
15
+ * `~x.y.z`, `latest`.
16
+ *
17
+ * Reserved scheme prefixes (`github:`, `gitee:`, and any other URL scheme) are
18
+ * never probed as local paths; every other ref is probed locally before npm
19
+ * name parsing. The CLI additionally routes only refs that cannot be legacy
20
+ * plugin IDs to this parser (see {@link isPluginAcquisitionRefTargetV1}).
21
+ */
22
+ export const MAX_PLUGIN_ACQUISITION_REF_CHARS_V1 = 2048;
23
+ export const MAX_PLUGIN_ACQUISITION_NPM_NAME_CHARS_V1 = 214;
24
+ const ACQUISITION_ERROR_MESSAGES_V1 = {
25
+ invalid_ref: "Plugin ref is invalid",
26
+ unsupported_local_ref: "Local plugin ref exists but is neither a directory nor a .zip/.tgz file",
27
+ unsupported_scheme: "Plugin ref URL scheme is not supported",
28
+ invalid_digest_fragment: "Plugin ref #sha256 digest fragment is invalid",
29
+ invalid_npm_ref: "Plugin npm package ref is invalid",
30
+ cancelled: "Plugin package acquisition was cancelled",
31
+ download_failed: "Plugin package download failed",
32
+ package_not_found: "Plugin npm package was not found on the registry",
33
+ version_not_found: "No npm package version matches the requested range",
34
+ digest_mismatch: "Plugin package bytes do not match the expected digest",
35
+ unsupported_media_type: "Plugin package bytes are neither a zip nor a tgz",
36
+ package_invalid: "Plugin package contents are invalid",
37
+ budget_exceeded: "Plugin package exceeds the configured size budget",
38
+ release_not_found: "Plugin release was not found",
39
+ release_asset_not_found: "Plugin release has no .zip/.tgz asset",
40
+ release_asset_ambiguous: "Plugin release has multiple .zip/.tgz assets",
41
+ rate_limited: "Plugin release API rate limit was exceeded",
42
+ };
43
+ export class PluginAcquisitionErrorV1 extends Error {
44
+ code;
45
+ /** Optional factual suffix (asset candidates, rate-limit reset) appended to the static message. */
46
+ constructor(code, detail) {
47
+ super(detail === undefined || detail.length === 0
48
+ ? ACQUISITION_ERROR_MESSAGES_V1[code]
49
+ : `${ACQUISITION_ERROR_MESSAGES_V1[code]}: ${detail}`);
50
+ this.name = "PluginAcquisitionErrorV1";
51
+ this.code = code;
52
+ }
53
+ }
54
+ const DIGEST_FRAGMENT_SUFFIX_V1 = /^#sha256:([0-9a-fA-F]{64})$/u;
55
+ function boundedRef(ref) {
56
+ if (typeof ref !== "string" ||
57
+ ref.length === 0 ||
58
+ ref.length > MAX_PLUGIN_ACQUISITION_REF_CHARS_V1 ||
59
+ /[\u0000-\u001f\s]/u.test(ref))
60
+ throw new PluginAcquisitionErrorV1("invalid_ref");
61
+ return ref;
62
+ }
63
+ /** Split and validate a trailing `#sha256:<64 hex>` fragment from a scheme ref. */
64
+ function splitDigestFragment(ref) {
65
+ const hash = ref.lastIndexOf("#");
66
+ if (hash < 0)
67
+ return { value: ref };
68
+ const fragment = ref.slice(hash);
69
+ const match = DIGEST_FRAGMENT_SUFFIX_V1.exec(fragment);
70
+ if (match === null)
71
+ throw new PluginAcquisitionErrorV1("invalid_digest_fragment");
72
+ return { value: ref.slice(0, hash), digestHex: match[1].toLowerCase() };
73
+ }
74
+ function ownerRepoTag(kind, value, digestHex) {
75
+ const match = /^([A-Za-z0-9][A-Za-z0-9._-]{0,99})\/([A-Za-z0-9][A-Za-z0-9._-]{0,99})(?:@([A-Za-z0-9][A-Za-z0-9._+-]{0,127}))?$/u.exec(value);
76
+ if (match === null)
77
+ throw new PluginAcquisitionErrorV1("invalid_ref");
78
+ return {
79
+ kind,
80
+ owner: match[1],
81
+ repo: match[2],
82
+ ...(match[3] === undefined ? {} : { tag: match[3] }),
83
+ ...(digestHex === undefined ? {} : { expectedDigestHex: digestHex }),
84
+ };
85
+ }
86
+ function parseUrlRef(value, digestHex) {
87
+ let parsed;
88
+ try {
89
+ parsed = new URL(value);
90
+ }
91
+ catch {
92
+ throw new PluginAcquisitionErrorV1("invalid_ref");
93
+ }
94
+ if (parsed.username !== "" || parsed.password !== "")
95
+ throw new PluginAcquisitionErrorV1("invalid_ref");
96
+ if (parsed.hash !== "")
97
+ throw new PluginAcquisitionErrorV1("invalid_digest_fragment");
98
+ return {
99
+ kind: "url",
100
+ url: parsed.toString(),
101
+ ...(digestHex === undefined ? {} : { expectedDigestHex: digestHex }),
102
+ };
103
+ }
104
+ const NPM_RANGE_V1 = /^(?:latest|[~^]?\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)$/u;
105
+ const NPM_NAME_V1 = /^@?[a-z0-9][a-z0-9-._]*(?:\/[a-z0-9][a-z0-9-._]*)?$/u;
106
+ function parseNpmRef(ref) {
107
+ const at = ref.lastIndexOf("@");
108
+ const name = at > 0 ? ref.slice(0, at) : ref;
109
+ const range = at > 0 ? ref.slice(at + 1) : undefined;
110
+ if (name.length === 0 ||
111
+ name.length > MAX_PLUGIN_ACQUISITION_NPM_NAME_CHARS_V1 ||
112
+ !NPM_NAME_V1.test(name) ||
113
+ (name.startsWith("@") && !name.includes("/")) ||
114
+ (!name.startsWith("@") && name.includes("/")))
115
+ throw new PluginAcquisitionErrorV1("invalid_npm_ref");
116
+ if (range !== undefined && !NPM_RANGE_V1.test(range))
117
+ throw new PluginAcquisitionErrorV1("invalid_npm_ref");
118
+ return {
119
+ kind: "npm",
120
+ name,
121
+ ...(range === undefined ? {} : { range }),
122
+ };
123
+ }
124
+ function isLocalPackageFile(path) {
125
+ const value = path.toLowerCase();
126
+ return value.endsWith(".zip") || value.endsWith(".tgz") || value.endsWith(".tar.gz");
127
+ }
128
+ /**
129
+ * Parse one acquisition ref. Priority: local (probe-injected) → github/gitee
130
+ * (recognized only) → http(s) URL → npm name. Throws
131
+ * {@link PluginAcquisitionErrorV1} for every unsupported or malformed ref.
132
+ */
133
+ export function parsePluginAcquisitionRefV1(ref, probe) {
134
+ const value = boundedRef(ref);
135
+ // Windows drive-letter paths must not be mistaken for URL schemes.
136
+ if (/^[a-zA-Z]:[\\/]/u.test(value))
137
+ return localRef(value, probe);
138
+ const scheme = /^([a-zA-Z][a-zA-Z\d+.-]*):/u.exec(value);
139
+ if (scheme !== null) {
140
+ const prefix = scheme[1].toLowerCase();
141
+ const stripped = splitDigestFragment(value);
142
+ if (prefix === "github" || prefix === "gitee")
143
+ return ownerRepoTag(prefix, stripped.value.slice(prefix.length + 1), stripped.digestHex);
144
+ if (prefix === "http" || prefix === "https")
145
+ return parseUrlRef(stripped.value, stripped.digestHex);
146
+ throw new PluginAcquisitionErrorV1("unsupported_scheme");
147
+ }
148
+ return localRef(value, probe);
149
+ }
150
+ function localRef(value, probe) {
151
+ const stat = probe.statLocalRef(value);
152
+ if (stat === "directory")
153
+ return { kind: "local-path", path: value };
154
+ if (stat === "file") {
155
+ if (!isLocalPackageFile(value))
156
+ throw new PluginAcquisitionErrorV1("unsupported_local_ref");
157
+ return { kind: "local-file", path: value };
158
+ }
159
+ if (stat === "other")
160
+ throw new PluginAcquisitionErrorV1("unsupported_local_ref");
161
+ return parseNpmRef(value);
162
+ }
163
+ /**
164
+ * CLI routing predicate: legacy registry plugin IDs never contain `/`, `\`,
165
+ * `:`, `#`, a leading `@`, or an npm range suffix (`@^…`, `@~…`, `@latest`).
166
+ * Only targets with one of those markers enter acquisition ref parsing, so the
167
+ * existing `plugin install <pluginId>[@<exact version>]` registry path keeps
168
+ * its exact behavior. Note `name@1.2.3` (exact version) stays a registry
169
+ * identity; an unscoped npm package must be installed through a range suffix
170
+ * (`name@^1.2.3`, `name@latest`) or a scoped `@scope/name…` ref.
171
+ */
172
+ export function isPluginAcquisitionRefTargetV1(target) {
173
+ if (typeof target !== "string" || target.length === 0)
174
+ return false;
175
+ if (target.startsWith("@"))
176
+ return true;
177
+ if (/^[a-zA-Z]:[\\/]/u.test(target))
178
+ return true;
179
+ if (target.startsWith("/") || target.startsWith("\\"))
180
+ return true;
181
+ if (target.startsWith("./") || target.startsWith(".\\"))
182
+ return true;
183
+ if (target.startsWith("../") || target.startsWith("..\\"))
184
+ return true;
185
+ if (/[:#]/u.test(target))
186
+ return true;
187
+ if (/[\\/]/u.test(target))
188
+ return true;
189
+ const at = target.lastIndexOf("@");
190
+ if (at > 0) {
191
+ const suffix = target.slice(at + 1);
192
+ if (suffix === "latest" || suffix.startsWith("^") || suffix.startsWith("~"))
193
+ return true;
194
+ }
195
+ return false;
196
+ }
197
+ //# sourceMappingURL=plugin-acquisition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-acquisition.js","sourceRoot":"","sources":["../../../src/plugins/ecosystem/plugin-acquisition.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Pure ref parsing for multi-source plugin package acquisition\n * (`plugin install <ref>`, design `插件独立分发与启动装配设计.md` §4.6).\n *\n * Ref grammar and resolution priority:\n * 1. local path (existing directory or `.zip`/`.tgz` file); a ref that exists\n * locally but is neither of those is an explicit `unsupported_local_ref`\n * error and never falls through to later priorities;\n * 2. `github:<owner>/<repo>[@<tag>]` / `gitee:...` — resolved against the\n * matching release API by the acquisition host;\n * 3. `http://`/`https://` URL, optionally with a `#sha256:<hex>` fragment that\n * is stripped before resolution and becomes a strong digest check;\n * 4. anything else is an npm package ref (`@scope/name[@range]` or\n * `name[@range]`) with the minimal range subset `x.y.z`, `^x.y.z`,\n * `~x.y.z`, `latest`.\n *\n * Reserved scheme prefixes (`github:`, `gitee:`, and any other URL scheme) are\n * never probed as local paths; every other ref is probed locally before npm\n * name parsing. The CLI additionally routes only refs that cannot be legacy\n * plugin IDs to this parser (see {@link isPluginAcquisitionRefTargetV1}).\n */\n\nimport type { PluginDistributionArtifactV1 } from \"./distribution.ts\";\nimport type { PluginManifestV1 } from \"./types.ts\";\n\nexport const MAX_PLUGIN_ACQUISITION_REF_CHARS_V1 = 2048;\nexport const MAX_PLUGIN_ACQUISITION_NPM_NAME_CHARS_V1 = 214;\n\n/**\n * Resolved acquisition package handed to an install transaction. The manifest\n * identity is discovered from the package itself (`agent-forge.json`); the\n * artifact is an opaque host-owned handle bound to the acquired bytes.\n */\nexport interface PluginAcquisitionPackageV1 {\n\treadonly manifest: PluginManifestV1;\n\treadonly manifestDigest: string;\n\t/** Opaque source label persisted in the plugin state record (`npm:<host>`, `url:<host>`, `local:dir`, `local:file`). */\n\treadonly source: string;\n\treadonly artifact: PluginDistributionArtifactV1;\n\t/** Release the artifact bytes; resolves `true` when nothing remains held. */\n\treadonly release: () => Promise<boolean>;\n}\n\nexport type PluginAcquisitionErrorCodeV1 =\n\t| \"invalid_ref\"\n\t| \"unsupported_local_ref\"\n\t| \"unsupported_scheme\"\n\t| \"invalid_digest_fragment\"\n\t| \"invalid_npm_ref\"\n\t| \"cancelled\"\n\t| \"download_failed\"\n\t| \"package_not_found\"\n\t| \"version_not_found\"\n\t| \"digest_mismatch\"\n\t| \"unsupported_media_type\"\n\t| \"package_invalid\"\n\t| \"budget_exceeded\"\n\t| \"release_not_found\"\n\t| \"release_asset_not_found\"\n\t| \"release_asset_ambiguous\"\n\t| \"rate_limited\";\n\nconst ACQUISITION_ERROR_MESSAGES_V1: Readonly<Record<PluginAcquisitionErrorCodeV1, string>> = {\n\tinvalid_ref: \"Plugin ref is invalid\",\n\tunsupported_local_ref: \"Local plugin ref exists but is neither a directory nor a .zip/.tgz file\",\n\tunsupported_scheme: \"Plugin ref URL scheme is not supported\",\n\tinvalid_digest_fragment: \"Plugin ref #sha256 digest fragment is invalid\",\n\tinvalid_npm_ref: \"Plugin npm package ref is invalid\",\n\tcancelled: \"Plugin package acquisition was cancelled\",\n\tdownload_failed: \"Plugin package download failed\",\n\tpackage_not_found: \"Plugin npm package was not found on the registry\",\n\tversion_not_found: \"No npm package version matches the requested range\",\n\tdigest_mismatch: \"Plugin package bytes do not match the expected digest\",\n\tunsupported_media_type: \"Plugin package bytes are neither a zip nor a tgz\",\n\tpackage_invalid: \"Plugin package contents are invalid\",\n\tbudget_exceeded: \"Plugin package exceeds the configured size budget\",\n\trelease_not_found: \"Plugin release was not found\",\n\trelease_asset_not_found: \"Plugin release has no .zip/.tgz asset\",\n\trelease_asset_ambiguous: \"Plugin release has multiple .zip/.tgz assets\",\n\trate_limited: \"Plugin release API rate limit was exceeded\",\n};\n\nexport class PluginAcquisitionErrorV1 extends Error {\n\treadonly code: PluginAcquisitionErrorCodeV1;\n\n\t/** Optional factual suffix (asset candidates, rate-limit reset) appended to the static message. */\n\tconstructor(code: PluginAcquisitionErrorCodeV1, detail?: string) {\n\t\tsuper(\n\t\t\tdetail === undefined || detail.length === 0\n\t\t\t\t? ACQUISITION_ERROR_MESSAGES_V1[code]\n\t\t\t\t: `${ACQUISITION_ERROR_MESSAGES_V1[code]}: ${detail}`,\n\t\t);\n\t\tthis.name = \"PluginAcquisitionErrorV1\";\n\t\tthis.code = code;\n\t}\n}\n\n/** A parsed acquisition ref. Digests are lowercase hex without an algorithm prefix. */\nexport type PluginAcquisitionRefV1 =\n\t| { readonly kind: \"local-path\"; readonly path: string }\n\t| { readonly kind: \"local-file\"; readonly path: string }\n\t| { readonly kind: \"url\"; readonly url: string; readonly expectedDigestHex?: string }\n\t| { readonly kind: \"npm\"; readonly name: string; readonly range?: string }\n\t| {\n\t\t\treadonly kind: \"github\" | \"gitee\";\n\t\t\treadonly owner: string;\n\t\t\treadonly repo: string;\n\t\t\treadonly tag?: string;\n\t\t\treadonly expectedDigestHex?: string;\n\t };\n\n/** Host-injected local filesystem classification; it must not follow symlinks. */\nexport interface PluginAcquisitionLocalProbeV1 {\n\treadonly statLocalRef: (path: string) => \"directory\" | \"file\" | \"other\" | \"missing\";\n}\n\nconst DIGEST_FRAGMENT_SUFFIX_V1 = /^#sha256:([0-9a-fA-F]{64})$/u;\n\nfunction boundedRef(ref: string): string {\n\tif (\n\t\ttypeof ref !== \"string\" ||\n\t\tref.length === 0 ||\n\t\tref.length > MAX_PLUGIN_ACQUISITION_REF_CHARS_V1 ||\n\t\t/[\\u0000-\\u001f\\s]/u.test(ref)\n\t)\n\t\tthrow new PluginAcquisitionErrorV1(\"invalid_ref\");\n\treturn ref;\n}\n\n/** Split and validate a trailing `#sha256:<64 hex>` fragment from a scheme ref. */\nfunction splitDigestFragment(ref: string): { readonly value: string; readonly digestHex?: string } {\n\tconst hash = ref.lastIndexOf(\"#\");\n\tif (hash < 0) return { value: ref };\n\tconst fragment = ref.slice(hash);\n\tconst match = DIGEST_FRAGMENT_SUFFIX_V1.exec(fragment);\n\tif (match === null) throw new PluginAcquisitionErrorV1(\"invalid_digest_fragment\");\n\treturn { value: ref.slice(0, hash), digestHex: match[1]!.toLowerCase() };\n}\n\nfunction ownerRepoTag(kind: \"github\" | \"gitee\", value: string, digestHex?: string): PluginAcquisitionRefV1 {\n\tconst match =\n\t\t/^([A-Za-z0-9][A-Za-z0-9._-]{0,99})\\/([A-Za-z0-9][A-Za-z0-9._-]{0,99})(?:@([A-Za-z0-9][A-Za-z0-9._+-]{0,127}))?$/u.exec(\n\t\t\tvalue,\n\t\t);\n\tif (match === null) throw new PluginAcquisitionErrorV1(\"invalid_ref\");\n\treturn {\n\t\tkind,\n\t\towner: match[1]!,\n\t\trepo: match[2]!,\n\t\t...(match[3] === undefined ? {} : { tag: match[3] }),\n\t\t...(digestHex === undefined ? {} : { expectedDigestHex: digestHex }),\n\t};\n}\n\nfunction parseUrlRef(value: string, digestHex?: string): PluginAcquisitionRefV1 {\n\tlet parsed: URL;\n\ttry {\n\t\tparsed = new URL(value);\n\t} catch {\n\t\tthrow new PluginAcquisitionErrorV1(\"invalid_ref\");\n\t}\n\tif (parsed.username !== \"\" || parsed.password !== \"\") throw new PluginAcquisitionErrorV1(\"invalid_ref\");\n\tif (parsed.hash !== \"\") throw new PluginAcquisitionErrorV1(\"invalid_digest_fragment\");\n\treturn {\n\t\tkind: \"url\",\n\t\turl: parsed.toString(),\n\t\t...(digestHex === undefined ? {} : { expectedDigestHex: digestHex }),\n\t};\n}\n\nconst NPM_RANGE_V1 = /^(?:latest|[~^]?\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]+)?)$/u;\nconst NPM_NAME_V1 = /^@?[a-z0-9][a-z0-9-._]*(?:\\/[a-z0-9][a-z0-9-._]*)?$/u;\n\nfunction parseNpmRef(ref: string): PluginAcquisitionRefV1 {\n\tconst at = ref.lastIndexOf(\"@\");\n\tconst name = at > 0 ? ref.slice(0, at) : ref;\n\tconst range = at > 0 ? ref.slice(at + 1) : undefined;\n\tif (\n\t\tname.length === 0 ||\n\t\tname.length > MAX_PLUGIN_ACQUISITION_NPM_NAME_CHARS_V1 ||\n\t\t!NPM_NAME_V1.test(name) ||\n\t\t(name.startsWith(\"@\") && !name.includes(\"/\")) ||\n\t\t(!name.startsWith(\"@\") && name.includes(\"/\"))\n\t)\n\t\tthrow new PluginAcquisitionErrorV1(\"invalid_npm_ref\");\n\tif (range !== undefined && !NPM_RANGE_V1.test(range)) throw new PluginAcquisitionErrorV1(\"invalid_npm_ref\");\n\treturn {\n\t\tkind: \"npm\",\n\t\tname,\n\t\t...(range === undefined ? {} : { range }),\n\t};\n}\n\nfunction isLocalPackageFile(path: string): boolean {\n\tconst value = path.toLowerCase();\n\treturn value.endsWith(\".zip\") || value.endsWith(\".tgz\") || value.endsWith(\".tar.gz\");\n}\n\n/**\n * Parse one acquisition ref. Priority: local (probe-injected) → github/gitee\n * (recognized only) → http(s) URL → npm name. Throws\n * {@link PluginAcquisitionErrorV1} for every unsupported or malformed ref.\n */\nexport function parsePluginAcquisitionRefV1(ref: string, probe: PluginAcquisitionLocalProbeV1): PluginAcquisitionRefV1 {\n\tconst value = boundedRef(ref);\n\t// Windows drive-letter paths must not be mistaken for URL schemes.\n\tif (/^[a-zA-Z]:[\\\\/]/u.test(value)) return localRef(value, probe);\n\tconst scheme = /^([a-zA-Z][a-zA-Z\\d+.-]*):/u.exec(value);\n\tif (scheme !== null) {\n\t\tconst prefix = scheme[1]!.toLowerCase();\n\t\tconst stripped = splitDigestFragment(value);\n\t\tif (prefix === \"github\" || prefix === \"gitee\")\n\t\t\treturn ownerRepoTag(prefix, stripped.value.slice(prefix.length + 1), stripped.digestHex);\n\t\tif (prefix === \"http\" || prefix === \"https\") return parseUrlRef(stripped.value, stripped.digestHex);\n\t\tthrow new PluginAcquisitionErrorV1(\"unsupported_scheme\");\n\t}\n\treturn localRef(value, probe);\n}\n\nfunction localRef(value: string, probe: PluginAcquisitionLocalProbeV1): PluginAcquisitionRefV1 {\n\tconst stat = probe.statLocalRef(value);\n\tif (stat === \"directory\") return { kind: \"local-path\", path: value };\n\tif (stat === \"file\") {\n\t\tif (!isLocalPackageFile(value)) throw new PluginAcquisitionErrorV1(\"unsupported_local_ref\");\n\t\treturn { kind: \"local-file\", path: value };\n\t}\n\tif (stat === \"other\") throw new PluginAcquisitionErrorV1(\"unsupported_local_ref\");\n\treturn parseNpmRef(value);\n}\n\n/**\n * CLI routing predicate: legacy registry plugin IDs never contain `/`, `\\`,\n * `:`, `#`, a leading `@`, or an npm range suffix (`@^…`, `@~…`, `@latest`).\n * Only targets with one of those markers enter acquisition ref parsing, so the\n * existing `plugin install <pluginId>[@<exact version>]` registry path keeps\n * its exact behavior. Note `name@1.2.3` (exact version) stays a registry\n * identity; an unscoped npm package must be installed through a range suffix\n * (`name@^1.2.3`, `name@latest`) or a scoped `@scope/name…` ref.\n */\nexport function isPluginAcquisitionRefTargetV1(target: string): boolean {\n\tif (typeof target !== \"string\" || target.length === 0) return false;\n\tif (target.startsWith(\"@\")) return true;\n\tif (/^[a-zA-Z]:[\\\\/]/u.test(target)) return true;\n\tif (target.startsWith(\"/\") || target.startsWith(\"\\\\\")) return true;\n\tif (target.startsWith(\"./\") || target.startsWith(\".\\\\\")) return true;\n\tif (target.startsWith(\"../\") || target.startsWith(\"..\\\\\")) return true;\n\tif (/[:#]/u.test(target)) return true;\n\tif (/[\\\\/]/u.test(target)) return true;\n\tconst at = target.lastIndexOf(\"@\");\n\tif (at > 0) {\n\t\tconst suffix = target.slice(at + 1);\n\t\tif (suffix === \"latest\" || suffix.startsWith(\"^\") || suffix.startsWith(\"~\")) return true;\n\t}\n\treturn false;\n}\n"]}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Startup plugin bootstrap orchestrator (design
3
+ * `插件独立分发与启动装配设计.md` §4.4, §0.7). Pure injectable decision loop
4
+ * over the frozen factory manifest: every entry is compared against the
5
+ * locally resolved active installations and only missing plugins are handed
6
+ * to the npm install dependency — bootstrap never acquires through any other
7
+ * source.
8
+ *
9
+ * Coverage rules (G5): an existing active installation is never replaced. A
10
+ * satisfied range is skipped silently (zero acquisition calls, G3); an
11
+ * unsatisfied one produces a diagnostic with a manual install command and no
12
+ * automatic replacement. Failure semantics (G4): one plugin's install
13
+ * failure is recorded and the loop continues; the run itself never throws.
14
+ * All effects live behind the injected dependencies, so the loop is fully
15
+ * deterministic under mocks.
16
+ */
17
+ import type { PluginBootstrapFactoryEntryV1 } from "./bootstrap-factory-manifest.ts";
18
+ export declare const PLUGIN_BOOTSTRAP_VERSION_V1: 1;
19
+ /** Read-only local lookup of active installation versions (never networked). */
20
+ export type PluginBootstrapListActiveV1 = (input: {
21
+ readonly signal?: AbortSignal;
22
+ }) => Promise<ReadonlyMap<string, string>>;
23
+ /** npm-only install action; resolves with the installed version and source label. */
24
+ export type PluginBootstrapInstallFromNpmV1 = (input: {
25
+ readonly npmName: string;
26
+ readonly range?: string;
27
+ readonly signal?: AbortSignal;
28
+ }) => Promise<{
29
+ readonly pluginVersion: string;
30
+ readonly source: string;
31
+ }>;
32
+ export interface PluginBootstrapDepsV1 {
33
+ readonly listActive: PluginBootstrapListActiveV1;
34
+ readonly installFromNpm: PluginBootstrapInstallFromNpmV1;
35
+ /** Deterministic clock for the observed duration; defaults to Date.now. */
36
+ readonly now?: () => number;
37
+ /** Cooperative cancellation; checked before each manifest entry. */
38
+ readonly signal?: AbortSignal;
39
+ }
40
+ export type PluginBootstrapActionStatusV1 = "skipped" | "diagnosed" | "installed" | "failed";
41
+ export type PluginBootstrapActionReasonV1 = "satisfies_range" | "range_not_satisfied" | "installed" | "install_failed";
42
+ /** One per-entry outcome; the version fields carry what each status observed. */
43
+ export interface PluginBootstrapActionV1 {
44
+ readonly pluginId: string;
45
+ readonly status: PluginBootstrapActionStatusV1;
46
+ readonly reason: PluginBootstrapActionReasonV1;
47
+ readonly npmName: string;
48
+ readonly range?: string;
49
+ /** Active version that decided a skipped/diagnosed outcome. */
50
+ readonly activeVersion?: string;
51
+ /** Version reported by the install action. */
52
+ readonly installedVersion?: string;
53
+ /** npm source label reported by the install action. */
54
+ readonly source?: string;
55
+ /** Acquisition or install failure code for failed actions. */
56
+ readonly errorCode?: string;
57
+ }
58
+ export type PluginBootstrapDiagnosticCodeV1 = "range_not_satisfied" | "install_failed" | "list_active_failed" | "cancelled" | "bootstrap_failed";
59
+ export interface PluginBootstrapDiagnosticV1 {
60
+ readonly code: PluginBootstrapDiagnosticCodeV1;
61
+ readonly message: string;
62
+ readonly pluginId?: string;
63
+ }
64
+ export type PluginBootstrapStatusV1 = "succeeded" | "degraded" | "failed";
65
+ export interface PluginBootstrapResultV1 {
66
+ readonly version: typeof PLUGIN_BOOTSTRAP_VERSION_V1;
67
+ /** Aggregated outcome: failed > degraded (diagnosed entries) > succeeded. */
68
+ readonly status: PluginBootstrapStatusV1;
69
+ readonly actions: readonly PluginBootstrapActionV1[];
70
+ readonly diagnostics: readonly PluginBootstrapDiagnosticV1[];
71
+ readonly durationMs: number;
72
+ }
73
+ /** Executable repair command for diagnostics (G4/G5 remediation hint). */
74
+ export declare function pluginBootstrapInstallCommandV1(entry: {
75
+ readonly npmName: string;
76
+ readonly range?: string;
77
+ }): string;
78
+ /**
79
+ * Run the bootstrap decision loop. An empty manifest short-circuits before
80
+ * any dependency is touched, so the factory-empty S1-c2 state performs zero
81
+ * reads on real startups.
82
+ */
83
+ export declare function runPluginBootstrapV1(input: {
84
+ readonly manifest: readonly PluginBootstrapFactoryEntryV1[];
85
+ readonly deps: PluginBootstrapDepsV1;
86
+ }): Promise<PluginBootstrapResultV1>;
87
+ //# sourceMappingURL=plugin-bootstrap.d.ts.map