@chances-ai/engine 24.0.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 (389) hide show
  1. package/dist/agents/discover.d.ts +30 -0
  2. package/dist/agents/discover.d.ts.map +1 -0
  3. package/dist/agents/discover.js +183 -0
  4. package/dist/agents/discover.js.map +1 -0
  5. package/dist/agents/index.d.ts +20 -0
  6. package/dist/agents/index.d.ts.map +1 -0
  7. package/dist/agents/index.js +52 -0
  8. package/dist/agents/index.js.map +1 -0
  9. package/dist/agents/parse.d.ts +61 -0
  10. package/dist/agents/parse.d.ts.map +1 -0
  11. package/dist/agents/parse.js +527 -0
  12. package/dist/agents/parse.js.map +1 -0
  13. package/dist/agents/types.d.ts +52 -0
  14. package/dist/agents/types.d.ts.map +1 -0
  15. package/dist/agents/types.js +8 -0
  16. package/dist/agents/types.js.map +1 -0
  17. package/dist/ai/adapters/ai-sdk-stream.d.ts +19 -0
  18. package/dist/ai/adapters/ai-sdk-stream.d.ts.map +1 -0
  19. package/dist/ai/adapters/ai-sdk-stream.js +125 -0
  20. package/dist/ai/adapters/ai-sdk-stream.js.map +1 -0
  21. package/dist/ai/adapters/ai-sdk.d.ts +56 -0
  22. package/dist/ai/adapters/ai-sdk.d.ts.map +1 -0
  23. package/dist/ai/adapters/ai-sdk.js +112 -0
  24. package/dist/ai/adapters/ai-sdk.js.map +1 -0
  25. package/dist/ai/adapters/mock.d.ts +13 -0
  26. package/dist/ai/adapters/mock.d.ts.map +1 -0
  27. package/dist/ai/adapters/mock.js +54 -0
  28. package/dist/ai/adapters/mock.js.map +1 -0
  29. package/dist/ai/adapters/openai-compatible.d.ts +23 -0
  30. package/dist/ai/adapters/openai-compatible.d.ts.map +1 -0
  31. package/dist/ai/adapters/openai-compatible.js +45 -0
  32. package/dist/ai/adapters/openai-compatible.js.map +1 -0
  33. package/dist/ai/cost.d.ts +3 -0
  34. package/dist/ai/cost.d.ts.map +1 -0
  35. package/dist/ai/cost.js +5 -0
  36. package/dist/ai/cost.js.map +1 -0
  37. package/dist/ai/index.d.ts +12 -0
  38. package/dist/ai/index.d.ts.map +1 -0
  39. package/dist/ai/index.js +11 -0
  40. package/dist/ai/index.js.map +1 -0
  41. package/dist/ai/known-models.d.ts +20 -0
  42. package/dist/ai/known-models.d.ts.map +1 -0
  43. package/dist/ai/known-models.js +129 -0
  44. package/dist/ai/known-models.js.map +1 -0
  45. package/dist/ai/registry.d.ts +12 -0
  46. package/dist/ai/registry.d.ts.map +1 -0
  47. package/dist/ai/registry.js +24 -0
  48. package/dist/ai/registry.js.map +1 -0
  49. package/dist/ai/retry.d.ts +11 -0
  50. package/dist/ai/retry.d.ts.map +1 -0
  51. package/dist/ai/retry.js +14 -0
  52. package/dist/ai/retry.js.map +1 -0
  53. package/dist/ai/router.d.ts +25 -0
  54. package/dist/ai/router.d.ts.map +1 -0
  55. package/dist/ai/router.js +36 -0
  56. package/dist/ai/router.js.map +1 -0
  57. package/dist/ai/setup.d.ts +23 -0
  58. package/dist/ai/setup.d.ts.map +1 -0
  59. package/dist/ai/setup.js +47 -0
  60. package/dist/ai/setup.js.map +1 -0
  61. package/dist/ai/summarizer.d.ts +24 -0
  62. package/dist/ai/summarizer.d.ts.map +1 -0
  63. package/dist/ai/summarizer.js +56 -0
  64. package/dist/ai/summarizer.js.map +1 -0
  65. package/dist/ai/types.d.ts +83 -0
  66. package/dist/ai/types.d.ts.map +1 -0
  67. package/dist/ai/types.js +2 -0
  68. package/dist/ai/types.js.map +1 -0
  69. package/dist/core/compaction/circuit-breaker.d.ts +32 -0
  70. package/dist/core/compaction/circuit-breaker.d.ts.map +1 -0
  71. package/dist/core/compaction/circuit-breaker.js +42 -0
  72. package/dist/core/compaction/circuit-breaker.js.map +1 -0
  73. package/dist/core/compaction/compactor.d.ts +75 -0
  74. package/dist/core/compaction/compactor.d.ts.map +1 -0
  75. package/dist/core/compaction/compactor.js +261 -0
  76. package/dist/core/compaction/compactor.js.map +1 -0
  77. package/dist/core/compaction/estimate.d.ts +39 -0
  78. package/dist/core/compaction/estimate.d.ts.map +1 -0
  79. package/dist/core/compaction/estimate.js +74 -0
  80. package/dist/core/compaction/estimate.js.map +1 -0
  81. package/dist/core/compaction/index.d.ts +5 -0
  82. package/dist/core/compaction/index.d.ts.map +1 -0
  83. package/dist/core/compaction/index.js +5 -0
  84. package/dist/core/compaction/index.js.map +1 -0
  85. package/dist/core/compaction/prune.d.ts +43 -0
  86. package/dist/core/compaction/prune.d.ts.map +1 -0
  87. package/dist/core/compaction/prune.js +51 -0
  88. package/dist/core/compaction/prune.js.map +1 -0
  89. package/dist/core/engine.d.ts +268 -0
  90. package/dist/core/engine.d.ts.map +1 -0
  91. package/dist/core/engine.js +767 -0
  92. package/dist/core/engine.js.map +1 -0
  93. package/dist/core/index.d.ts +6 -0
  94. package/dist/core/index.d.ts.map +1 -0
  95. package/dist/core/index.js +6 -0
  96. package/dist/core/index.js.map +1 -0
  97. package/dist/core/task-tool.d.ts +175 -0
  98. package/dist/core/task-tool.d.ts.map +1 -0
  99. package/dist/core/task-tool.js +901 -0
  100. package/dist/core/task-tool.js.map +1 -0
  101. package/dist/core/workspace-query.d.ts +83 -0
  102. package/dist/core/workspace-query.d.ts.map +1 -0
  103. package/dist/core/workspace-query.js +217 -0
  104. package/dist/core/workspace-query.js.map +1 -0
  105. package/dist/core/worktree/active-marker.d.ts +31 -0
  106. package/dist/core/worktree/active-marker.d.ts.map +1 -0
  107. package/dist/core/worktree/active-marker.js +109 -0
  108. package/dist/core/worktree/active-marker.js.map +1 -0
  109. package/dist/core/worktree/create.d.ts +40 -0
  110. package/dist/core/worktree/create.d.ts.map +1 -0
  111. package/dist/core/worktree/create.js +121 -0
  112. package/dist/core/worktree/create.js.map +1 -0
  113. package/dist/core/worktree/errors.d.ts +7 -0
  114. package/dist/core/worktree/errors.d.ts.map +1 -0
  115. package/dist/core/worktree/errors.js +11 -0
  116. package/dist/core/worktree/errors.js.map +1 -0
  117. package/dist/core/worktree/gc.d.ts +39 -0
  118. package/dist/core/worktree/gc.d.ts.map +1 -0
  119. package/dist/core/worktree/gc.js +146 -0
  120. package/dist/core/worktree/gc.js.map +1 -0
  121. package/dist/core/worktree/git.d.ts +53 -0
  122. package/dist/core/worktree/git.d.ts.map +1 -0
  123. package/dist/core/worktree/git.js +166 -0
  124. package/dist/core/worktree/git.js.map +1 -0
  125. package/dist/core/worktree/index.d.ts +8 -0
  126. package/dist/core/worktree/index.d.ts.map +1 -0
  127. package/dist/core/worktree/index.js +8 -0
  128. package/dist/core/worktree/index.js.map +1 -0
  129. package/dist/core/worktree/paths.d.ts +26 -0
  130. package/dist/core/worktree/paths.d.ts.map +1 -0
  131. package/dist/core/worktree/paths.js +57 -0
  132. package/dist/core/worktree/paths.js.map +1 -0
  133. package/dist/core/worktree/slug.d.ts +6 -0
  134. package/dist/core/worktree/slug.d.ts.map +1 -0
  135. package/dist/core/worktree/slug.js +21 -0
  136. package/dist/core/worktree/slug.js.map +1 -0
  137. package/dist/local-vault/file-store.d.ts +64 -0
  138. package/dist/local-vault/file-store.d.ts.map +1 -0
  139. package/dist/local-vault/file-store.js +225 -0
  140. package/dist/local-vault/file-store.js.map +1 -0
  141. package/dist/local-vault/index.d.ts +57 -0
  142. package/dist/local-vault/index.d.ts.map +1 -0
  143. package/dist/local-vault/index.js +68 -0
  144. package/dist/local-vault/index.js.map +1 -0
  145. package/dist/local-vault/keychain.d.ts +58 -0
  146. package/dist/local-vault/keychain.d.ts.map +1 -0
  147. package/dist/local-vault/keychain.js +200 -0
  148. package/dist/local-vault/keychain.js.map +1 -0
  149. package/dist/local-vault/mutex.d.ts +20 -0
  150. package/dist/local-vault/mutex.d.ts.map +1 -0
  151. package/dist/local-vault/mutex.js +44 -0
  152. package/dist/local-vault/mutex.js.map +1 -0
  153. package/dist/local-vault/passphrase.d.ts +30 -0
  154. package/dist/local-vault/passphrase.d.ts.map +1 -0
  155. package/dist/local-vault/passphrase.js +72 -0
  156. package/dist/local-vault/passphrase.js.map +1 -0
  157. package/dist/lsp/config.d.ts +34 -0
  158. package/dist/lsp/config.d.ts.map +1 -0
  159. package/dist/lsp/config.js +68 -0
  160. package/dist/lsp/config.js.map +1 -0
  161. package/dist/lsp/detect.d.ts +7 -0
  162. package/dist/lsp/detect.d.ts.map +1 -0
  163. package/dist/lsp/detect.js +78 -0
  164. package/dist/lsp/detect.js.map +1 -0
  165. package/dist/lsp/errors.d.ts +11 -0
  166. package/dist/lsp/errors.d.ts.map +1 -0
  167. package/dist/lsp/errors.js +11 -0
  168. package/dist/lsp/errors.js.map +1 -0
  169. package/dist/lsp/formatters.d.ts +147 -0
  170. package/dist/lsp/formatters.d.ts.map +1 -0
  171. package/dist/lsp/formatters.js +259 -0
  172. package/dist/lsp/formatters.js.map +1 -0
  173. package/dist/lsp/index.d.ts +31 -0
  174. package/dist/lsp/index.d.ts.map +1 -0
  175. package/dist/lsp/index.js +31 -0
  176. package/dist/lsp/index.js.map +1 -0
  177. package/dist/lsp/instance.d.ts +72 -0
  178. package/dist/lsp/instance.d.ts.map +1 -0
  179. package/dist/lsp/instance.js +489 -0
  180. package/dist/lsp/instance.js.map +1 -0
  181. package/dist/lsp/lazy-load.d.ts +27 -0
  182. package/dist/lsp/lazy-load.d.ts.map +1 -0
  183. package/dist/lsp/lazy-load.js +57 -0
  184. package/dist/lsp/lazy-load.js.map +1 -0
  185. package/dist/lsp/manager.d.ts +59 -0
  186. package/dist/lsp/manager.d.ts.map +1 -0
  187. package/dist/lsp/manager.js +242 -0
  188. package/dist/lsp/manager.js.map +1 -0
  189. package/dist/lsp/ops.d.ts +13 -0
  190. package/dist/lsp/ops.d.ts.map +1 -0
  191. package/dist/lsp/ops.js +225 -0
  192. package/dist/lsp/ops.js.map +1 -0
  193. package/dist/lsp/rpc.d.ts +47 -0
  194. package/dist/lsp/rpc.d.ts.map +1 -0
  195. package/dist/lsp/rpc.js +134 -0
  196. package/dist/lsp/rpc.js.map +1 -0
  197. package/dist/lsp/safe-uri.d.ts +18 -0
  198. package/dist/lsp/safe-uri.d.ts.map +1 -0
  199. package/dist/lsp/safe-uri.js +96 -0
  200. package/dist/lsp/safe-uri.js.map +1 -0
  201. package/dist/lsp/types.d.ts +70 -0
  202. package/dist/lsp/types.d.ts.map +1 -0
  203. package/dist/lsp/types.js +16 -0
  204. package/dist/lsp/types.js.map +1 -0
  205. package/dist/mcp/bridge.d.ts +57 -0
  206. package/dist/mcp/bridge.d.ts.map +1 -0
  207. package/dist/mcp/bridge.js +98 -0
  208. package/dist/mcp/bridge.js.map +1 -0
  209. package/dist/mcp/category.d.ts +22 -0
  210. package/dist/mcp/category.d.ts.map +1 -0
  211. package/dist/mcp/category.js +11 -0
  212. package/dist/mcp/category.js.map +1 -0
  213. package/dist/mcp/client.d.ts +228 -0
  214. package/dist/mcp/client.d.ts.map +1 -0
  215. package/dist/mcp/client.js +352 -0
  216. package/dist/mcp/client.js.map +1 -0
  217. package/dist/mcp/content.d.ts +86 -0
  218. package/dist/mcp/content.d.ts.map +1 -0
  219. package/dist/mcp/content.js +147 -0
  220. package/dist/mcp/content.js.map +1 -0
  221. package/dist/mcp/env.d.ts +19 -0
  222. package/dist/mcp/env.d.ts.map +1 -0
  223. package/dist/mcp/env.js +50 -0
  224. package/dist/mcp/env.js.map +1 -0
  225. package/dist/mcp/host.d.ts +199 -0
  226. package/dist/mcp/host.d.ts.map +1 -0
  227. package/dist/mcp/host.js +530 -0
  228. package/dist/mcp/host.js.map +1 -0
  229. package/dist/mcp/index.d.ts +18 -0
  230. package/dist/mcp/index.d.ts.map +1 -0
  231. package/dist/mcp/index.js +17 -0
  232. package/dist/mcp/index.js.map +1 -0
  233. package/dist/mcp/load-mcp-host.d.ts +32 -0
  234. package/dist/mcp/load-mcp-host.d.ts.map +1 -0
  235. package/dist/mcp/load-mcp-host.js +49 -0
  236. package/dist/mcp/load-mcp-host.js.map +1 -0
  237. package/dist/mcp/oauth/callback-server.d.ts +73 -0
  238. package/dist/mcp/oauth/callback-server.d.ts.map +1 -0
  239. package/dist/mcp/oauth/callback-server.js +280 -0
  240. package/dist/mcp/oauth/callback-server.js.map +1 -0
  241. package/dist/mcp/oauth/config-hash.d.ts +24 -0
  242. package/dist/mcp/oauth/config-hash.d.ts.map +1 -0
  243. package/dist/mcp/oauth/config-hash.js +55 -0
  244. package/dist/mcp/oauth/config-hash.js.map +1 -0
  245. package/dist/mcp/oauth/error-normalize.d.ts +39 -0
  246. package/dist/mcp/oauth/error-normalize.d.ts.map +1 -0
  247. package/dist/mcp/oauth/error-normalize.js +91 -0
  248. package/dist/mcp/oauth/error-normalize.js.map +1 -0
  249. package/dist/mcp/oauth/provider.d.ts +190 -0
  250. package/dist/mcp/oauth/provider.d.ts.map +1 -0
  251. package/dist/mcp/oauth/provider.js +305 -0
  252. package/dist/mcp/oauth/provider.js.map +1 -0
  253. package/dist/mcp/oauth/refresh-coalescer.d.ts +46 -0
  254. package/dist/mcp/oauth/refresh-coalescer.d.ts.map +1 -0
  255. package/dist/mcp/oauth/refresh-coalescer.js +77 -0
  256. package/dist/mcp/oauth/refresh-coalescer.js.map +1 -0
  257. package/dist/mcp/oauth/sdk-shapes.d.ts +77 -0
  258. package/dist/mcp/oauth/sdk-shapes.d.ts.map +1 -0
  259. package/dist/mcp/oauth/sdk-shapes.js +21 -0
  260. package/dist/mcp/oauth/sdk-shapes.js.map +1 -0
  261. package/dist/mcp/parse.d.ts +28 -0
  262. package/dist/mcp/parse.d.ts.map +1 -0
  263. package/dist/mcp/parse.js +209 -0
  264. package/dist/mcp/parse.js.map +1 -0
  265. package/dist/mcp/prompts.d.ts +31 -0
  266. package/dist/mcp/prompts.d.ts.map +1 -0
  267. package/dist/mcp/prompts.js +71 -0
  268. package/dist/mcp/prompts.js.map +1 -0
  269. package/dist/mcp/redact.d.ts +62 -0
  270. package/dist/mcp/redact.d.ts.map +1 -0
  271. package/dist/mcp/redact.js +87 -0
  272. package/dist/mcp/redact.js.map +1 -0
  273. package/dist/mcp/resources.d.ts +70 -0
  274. package/dist/mcp/resources.d.ts.map +1 -0
  275. package/dist/mcp/resources.js +170 -0
  276. package/dist/mcp/resources.js.map +1 -0
  277. package/dist/mcp/types.d.ts +123 -0
  278. package/dist/mcp/types.d.ts.map +1 -0
  279. package/dist/mcp/types.js +2 -0
  280. package/dist/mcp/types.js.map +1 -0
  281. package/dist/memory/frontmatter.d.ts +18 -0
  282. package/dist/memory/frontmatter.d.ts.map +1 -0
  283. package/dist/memory/frontmatter.js +81 -0
  284. package/dist/memory/frontmatter.js.map +1 -0
  285. package/dist/memory/index.d.ts +5 -0
  286. package/dist/memory/index.d.ts.map +1 -0
  287. package/dist/memory/index.js +5 -0
  288. package/dist/memory/index.js.map +1 -0
  289. package/dist/memory/store.d.ts +44 -0
  290. package/dist/memory/store.d.ts.map +1 -0
  291. package/dist/memory/store.js +237 -0
  292. package/dist/memory/store.js.map +1 -0
  293. package/dist/memory/tools.d.ts +11 -0
  294. package/dist/memory/tools.d.ts.map +1 -0
  295. package/dist/memory/tools.js +159 -0
  296. package/dist/memory/tools.js.map +1 -0
  297. package/dist/memory/types.d.ts +32 -0
  298. package/dist/memory/types.d.ts.map +1 -0
  299. package/dist/memory/types.js +20 -0
  300. package/dist/memory/types.js.map +1 -0
  301. package/dist/plugin-api/index.d.ts +167 -0
  302. package/dist/plugin-api/index.d.ts.map +1 -0
  303. package/dist/plugin-api/index.js +151 -0
  304. package/dist/plugin-api/index.js.map +1 -0
  305. package/dist/plugin-logger/index.d.ts +21 -0
  306. package/dist/plugin-logger/index.d.ts.map +1 -0
  307. package/dist/plugin-logger/index.js +59 -0
  308. package/dist/plugin-logger/index.js.map +1 -0
  309. package/dist/session/index.d.ts +125 -0
  310. package/dist/session/index.d.ts.map +1 -0
  311. package/dist/session/index.js +202 -0
  312. package/dist/session/index.js.map +1 -0
  313. package/dist/tools/approval.d.ts +33 -0
  314. package/dist/tools/approval.d.ts.map +1 -0
  315. package/dist/tools/approval.js +53 -0
  316. package/dist/tools/approval.js.map +1 -0
  317. package/dist/tools/builtins/_shared.d.ts +94 -0
  318. package/dist/tools/builtins/_shared.d.ts.map +1 -0
  319. package/dist/tools/builtins/_shared.js +246 -0
  320. package/dist/tools/builtins/_shared.js.map +1 -0
  321. package/dist/tools/builtins/ask-user-question.d.ts +27 -0
  322. package/dist/tools/builtins/ask-user-question.d.ts.map +1 -0
  323. package/dist/tools/builtins/ask-user-question.js +191 -0
  324. package/dist/tools/builtins/ask-user-question.js.map +1 -0
  325. package/dist/tools/builtins/bash.d.ts +3 -0
  326. package/dist/tools/builtins/bash.d.ts.map +1 -0
  327. package/dist/tools/builtins/bash.js +158 -0
  328. package/dist/tools/builtins/bash.js.map +1 -0
  329. package/dist/tools/builtins/diff.d.ts +3 -0
  330. package/dist/tools/builtins/diff.d.ts.map +1 -0
  331. package/dist/tools/builtins/diff.js +83 -0
  332. package/dist/tools/builtins/diff.js.map +1 -0
  333. package/dist/tools/builtins/edit.d.ts +3 -0
  334. package/dist/tools/builtins/edit.d.ts.map +1 -0
  335. package/dist/tools/builtins/edit.js +40 -0
  336. package/dist/tools/builtins/edit.js.map +1 -0
  337. package/dist/tools/builtins/glob.d.ts +3 -0
  338. package/dist/tools/builtins/glob.d.ts.map +1 -0
  339. package/dist/tools/builtins/glob.js +37 -0
  340. package/dist/tools/builtins/glob.js.map +1 -0
  341. package/dist/tools/builtins/grep.d.ts +3 -0
  342. package/dist/tools/builtins/grep.d.ts.map +1 -0
  343. package/dist/tools/builtins/grep.js +81 -0
  344. package/dist/tools/builtins/grep.js.map +1 -0
  345. package/dist/tools/builtins/lsp.d.ts +3 -0
  346. package/dist/tools/builtins/lsp.d.ts.map +1 -0
  347. package/dist/tools/builtins/lsp.js +102 -0
  348. package/dist/tools/builtins/lsp.js.map +1 -0
  349. package/dist/tools/builtins/pty.d.ts +64 -0
  350. package/dist/tools/builtins/pty.d.ts.map +1 -0
  351. package/dist/tools/builtins/pty.js +536 -0
  352. package/dist/tools/builtins/pty.js.map +1 -0
  353. package/dist/tools/builtins/read.d.ts +3 -0
  354. package/dist/tools/builtins/read.d.ts.map +1 -0
  355. package/dist/tools/builtins/read.js +18 -0
  356. package/dist/tools/builtins/read.js.map +1 -0
  357. package/dist/tools/builtins/web-fetch.d.ts +4 -0
  358. package/dist/tools/builtins/web-fetch.d.ts.map +1 -0
  359. package/dist/tools/builtins/web-fetch.js +353 -0
  360. package/dist/tools/builtins/web-fetch.js.map +1 -0
  361. package/dist/tools/builtins/write.d.ts +3 -0
  362. package/dist/tools/builtins/write.d.ts.map +1 -0
  363. package/dist/tools/builtins/write.js +48 -0
  364. package/dist/tools/builtins/write.js.map +1 -0
  365. package/dist/tools/builtins.d.ts +9 -0
  366. package/dist/tools/builtins.d.ts.map +1 -0
  367. package/dist/tools/builtins.js +29 -0
  368. package/dist/tools/builtins.js.map +1 -0
  369. package/dist/tools/diff.d.ts +18 -0
  370. package/dist/tools/diff.d.ts.map +1 -0
  371. package/dist/tools/diff.js +57 -0
  372. package/dist/tools/diff.js.map +1 -0
  373. package/dist/tools/index.d.ts +10 -0
  374. package/dist/tools/index.d.ts.map +1 -0
  375. package/dist/tools/index.js +9 -0
  376. package/dist/tools/index.js.map +1 -0
  377. package/dist/tools/permission.d.ts +120 -0
  378. package/dist/tools/permission.d.ts.map +1 -0
  379. package/dist/tools/permission.js +208 -0
  380. package/dist/tools/permission.js.map +1 -0
  381. package/dist/tools/registry.d.ts +12 -0
  382. package/dist/tools/registry.d.ts.map +1 -0
  383. package/dist/tools/registry.js +19 -0
  384. package/dist/tools/registry.js.map +1 -0
  385. package/dist/tools/types.d.ts +244 -0
  386. package/dist/tools/types.d.ts.map +1 -0
  387. package/dist/tools/types.js +15 -0
  388. package/dist/tools/types.js.map +1 -0
  389. package/package.json +109 -0
@@ -0,0 +1,527 @@
1
+ /**
2
+ * Hand-rolled frontmatter+body parser for agent definitions. We deliberately
3
+ * do NOT pull in a YAML library:
4
+ *
5
+ * - The schema is fixed and tiny (six fields). A grammar we own is easier to
6
+ * reason about than a YAML subset that quietly accepts surprising shapes.
7
+ * - `tools` and `disallowedTools` are security boundaries — codex Round 1
8
+ * (`docs/3.3-design.md` finding #1, #5) ruled out the "fall back to CSV if
9
+ * strict parse fails" pattern. We reject ambiguous syntax explicitly.
10
+ * - Cold-start budget — no extra npm dep crossing the 120 ms binary bar.
11
+ *
12
+ * The grammar is documented in `docs/3.3-design.md` under "Frontmatter
13
+ * grammar". Anything that doesn't match the spec is a labeled
14
+ * `bad-frontmatter`; that label flows up to the discovery loop's
15
+ * `SkippedAgent`.
16
+ */
17
+ /** Maximum file size accepted before we even read the body (codex-#15). */
18
+ export const MAX_AGENT_FILE_BYTES = 64 * 1024;
19
+ /** Hard ceiling on `maxTurns`; values above this clamp down. Matches the
20
+ * subagent v1 ceiling (`packages/core/src/task-tool.ts`). */
21
+ const MAX_TURNS_CEILING = 50;
22
+ /** Names the model would conflate with tool names if used as agent identifiers
23
+ * (codex-#9). Tool names are an open set today (plugins, MCP), so we
24
+ * additionally reject the `mcp__` and `memory_` prefixes by predicate, not
25
+ * just the literal members of this set. */
26
+ export const RESERVED_AGENT_NAMES = new Set([
27
+ "task",
28
+ "default",
29
+ "read",
30
+ "write",
31
+ "edit",
32
+ "bash",
33
+ "grep",
34
+ "glob",
35
+ "diff",
36
+ "web_fetch",
37
+ "memory_save",
38
+ "memory_delete",
39
+ "memory_list",
40
+ ]);
41
+ /** Frontmatter fields reserved for future versions; using them in 3.3 is a
42
+ * configuration error so we surface an actionable message rather than
43
+ * silently ignoring (codex-#13). Pre-claiming the names lets 3.4–3.x.later
44
+ * introduce them without a compatibility break.
45
+ *
46
+ * **Case-sensitive** (codex Round-2 SHOULD-FIX #3): the names below are the
47
+ * exact spellings users must NOT use. `Spawns:` would land in the
48
+ * unknown-field branch rather than the reserved branch — that's correct;
49
+ * neither is accepted. */
50
+ const RESERVED_FRONTMATTER_FIELDS = new Set([
51
+ "spawns",
52
+ "mcpServers",
53
+ "requiredMcpServers",
54
+ "hooks",
55
+ "memory",
56
+ "permissionMode",
57
+ "effort",
58
+ "thinkingLevel",
59
+ // `isolation` is now a real field as of 4.1 — see KNOWN_FIELDS.
60
+ "background",
61
+ "color",
62
+ "initialPrompt",
63
+ "output",
64
+ "blocking",
65
+ ]);
66
+ /** Exact case-sensitive set of supported fields. `Tools` is NOT a synonym
67
+ * for `tools`; the parser surfaces it as `bad-frontmatter` "unknown field". */
68
+ const KNOWN_FIELDS = new Set([
69
+ "name",
70
+ "description",
71
+ "tools",
72
+ "disallowedTools",
73
+ "model",
74
+ "maxTurns",
75
+ // (4.1) Worktree isolation. `isolation: worktree | none`. Default
76
+ // `none`. Round-1 MUST-FIX #2 made the MCP filter the load-bearing
77
+ // behaviour; `unsafeAllowMutatingMcp: true` (deliberately-loud name)
78
+ // opts out of it.
79
+ "isolation",
80
+ "unsafeAllowMutatingMcp",
81
+ ]);
82
+ /** Valid values for the `isolation` frontmatter field. Round-1 codex-#5
83
+ * fail-closed pattern: unknown values are surfaced as `invalid-field`,
84
+ * not silently accepted. */
85
+ const ISOLATION_VALUES = new Set(["worktree", "none"]);
86
+ const NAME_RE = /^[a-z][a-z0-9_-]{0,63}$/;
87
+ // Keys may include uppercase so camelCase field names like `maxTurns` and
88
+ // `disallowedTools` are accepted — but lookup is **case-sensitive against
89
+ // the literal field name** (codex Round-2 SHOULD-FIX #3). `Tools: []` and
90
+ // `MaxTurns: 5` are rejected as unknown fields rather than silently treated
91
+ // as their lowercase counterparts; this catches typos that previously would
92
+ // have changed the effective allowlist meaning.
93
+ const KEY_RE = /^[A-Za-z][A-Za-z0-9_-]*$/;
94
+ const BARE_TOKEN_RE = /^[a-z_][a-z0-9_-]*$/;
95
+ const INT_RE = /^\d+$/;
96
+ /**
97
+ * Parse a single agent markdown file's raw text. The caller is responsible
98
+ * for enforcing the byte cap (`MAX_AGENT_FILE_BYTES`) before reading the
99
+ * file; this function operates on already-decoded UTF-16 strings.
100
+ */
101
+ export function parseAgentFile(raw) {
102
+ // CRLF normalization so a Windows-authored file behaves like a POSIX one
103
+ // (codex-#2). `\r\n` and `\r` both collapse to `\n`.
104
+ const text = raw.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
105
+ // The opening `---` must be the first non-empty line. Leading blank lines
106
+ // are tolerated (a stray newline at file head is human-easy to introduce).
107
+ const lines = text.split("\n");
108
+ let firstNonBlank = 0;
109
+ while (firstNonBlank < lines.length && lines[firstNonBlank].trim() === "") {
110
+ firstNonBlank++;
111
+ }
112
+ if (firstNonBlank >= lines.length || lines[firstNonBlank] !== "---") {
113
+ return fail("bad-frontmatter", "missing or malformed opening `---` delimiter");
114
+ }
115
+ // Find the closing `---`. A line whose trimmed value is exactly `---` ends
116
+ // the frontmatter; everything after is the body.
117
+ let closeIdx = -1;
118
+ for (let i = firstNonBlank + 1; i < lines.length; i++) {
119
+ if (lines[i].trim() === "---") {
120
+ closeIdx = i;
121
+ break;
122
+ }
123
+ }
124
+ if (closeIdx < 0)
125
+ return fail("bad-frontmatter", "missing closing `---` delimiter");
126
+ const fmLines = lines.slice(firstNonBlank + 1, closeIdx);
127
+ const body = lines
128
+ .slice(closeIdx + 1)
129
+ .join("\n")
130
+ .replace(/^\n+/, "")
131
+ .replace(/\s+$/g, "");
132
+ if (body.length === 0) {
133
+ return fail("missing-body", "agent body is empty after trimming; 3.3 requires a non-empty system prompt");
134
+ }
135
+ // Parse each frontmatter line as `key: value`. Comments (lines whose first
136
+ // non-space char is `#`) and blank lines are skipped. **Any tab in a
137
+ // non-comment frontmatter line is `bad-frontmatter`** (codex Round-2
138
+ // SHOULD-FIX #2 — the prior check only covered tabs in the key portion,
139
+ // so `tools:\t[read]` slipped through and produced a result that didn't
140
+ // match the strict grammar).
141
+ const fm = {};
142
+ for (const rawLine of fmLines) {
143
+ if (rawLine.length === 0)
144
+ continue;
145
+ if (/^[ \t]*$/.test(rawLine))
146
+ continue;
147
+ const trimmed = rawLine.replace(/^[ ]+/, "");
148
+ if (trimmed.startsWith("#"))
149
+ continue;
150
+ if (rawLine.includes("\t")) {
151
+ return fail("bad-frontmatter", "tab character in frontmatter line — use spaces (tabs are not part of the agent-file grammar)");
152
+ }
153
+ const colon = trimmed.indexOf(":");
154
+ if (colon < 0) {
155
+ return fail("bad-frontmatter", `frontmatter line missing colon: "${rawLine}"`);
156
+ }
157
+ const key = trimmed.slice(0, colon);
158
+ if (!KEY_RE.test(key)) {
159
+ return fail("bad-frontmatter", `invalid frontmatter key: "${key}"`);
160
+ }
161
+ // Case-sensitive lookup (codex Round-2 SHOULD-FIX #3). `Tools` is NOT
162
+ // a synonym for `tools` — surfacing the typo as "unknown field" is
163
+ // better than silently mapping it to a security-relevant field name.
164
+ if (RESERVED_FRONTMATTER_FIELDS.has(key)) {
165
+ return fail("reserved-field", `'${key}' is reserved for a future release; remove from this file or upgrade chances-cli`);
166
+ }
167
+ if (!KNOWN_FIELDS.has(key)) {
168
+ return fail("bad-frontmatter", `unknown frontmatter field: "${key}"`);
169
+ }
170
+ if (Object.prototype.hasOwnProperty.call(fm, key)) {
171
+ return fail("bad-frontmatter", `duplicate frontmatter field: "${key}"`);
172
+ }
173
+ fm[key] = trimmed.slice(colon + 1).trim();
174
+ }
175
+ // Required: name, description, tools (codex-#5/#17/#18: tools is REQUIRED).
176
+ if (fm["name"] === undefined)
177
+ return fail("missing-required-field", "missing 'name'");
178
+ if (fm["description"] === undefined)
179
+ return fail("missing-required-field", "missing 'description'");
180
+ if (fm["tools"] === undefined)
181
+ return fail("missing-required-field", "missing 'tools' (required since 3.3 — use `tools: *` to inherit the parent's full surface, or a bracketed list)");
182
+ // name: strict slug + reserved-name rejection.
183
+ const nameVal = parseStringScalar(fm["name"]);
184
+ if (nameVal.kind === "err")
185
+ return fail("bad-frontmatter", `name: ${nameVal.detail}`);
186
+ if (!NAME_RE.test(nameVal.value)) {
187
+ return fail("invalid-field", `name '${nameVal.value}' must match ${NAME_RE} (lowercase ASCII, start with a letter)`);
188
+ }
189
+ if (RESERVED_AGENT_NAMES.has(nameVal.value)) {
190
+ return fail("reserved-name", `name '${nameVal.value}' is reserved`);
191
+ }
192
+ if (nameVal.value.startsWith("mcp__") || nameVal.value.startsWith("memory_")) {
193
+ return fail("reserved-name", `name '${nameVal.value}' uses a reserved prefix (mcp__/memory_)`);
194
+ }
195
+ // description: any single-line string. We don't truncate here — the render
196
+ // path in the task tool does that — so the file's literal content is
197
+ // preserved for `/agents`. We DO reject embedded newlines because the
198
+ // grammar above only emits single-line values anyway.
199
+ const descVal = parseStringScalar(fm["description"]);
200
+ if (descVal.kind === "err")
201
+ return fail("bad-frontmatter", `description: ${descVal.detail}`);
202
+ if (descVal.value.length === 0)
203
+ return fail("invalid-field", "description is empty after parsing");
204
+ // tools: either the literal `*` or a bracketed list. CSV is NOT accepted
205
+ // (codex-#1: bare-CSV would be ambiguous; require an explicit shape).
206
+ const toolsVal = parseToolsField(fm["tools"]);
207
+ if (toolsVal.kind === "err")
208
+ return fail("bad-frontmatter", `tools: ${toolsVal.detail}`);
209
+ // disallowedTools: optional, must be a bracketed list when present.
210
+ let disallowed = [];
211
+ if (fm["disallowedTools"] !== undefined) {
212
+ const d = parseListField(fm["disallowedTools"]);
213
+ if (d.kind === "err")
214
+ return fail("bad-frontmatter", `disallowedTools: ${d.detail}`);
215
+ disallowed = d.value;
216
+ }
217
+ // model: optional; bare string or quoted scalar.
218
+ let model;
219
+ if (fm["model"] !== undefined) {
220
+ const m = parseStringScalar(fm["model"]);
221
+ if (m.kind === "err")
222
+ return fail("bad-frontmatter", `model: ${m.detail}`);
223
+ if (m.value.length === 0)
224
+ return fail("invalid-field", "model is empty after parsing");
225
+ model = m.value;
226
+ }
227
+ // maxTurns: optional positive integer, clamped to ceiling.
228
+ let maxTurns;
229
+ if (fm["maxTurns"] !== undefined) {
230
+ const raw = fm["maxTurns"].trim();
231
+ if (!INT_RE.test(raw)) {
232
+ return fail("invalid-field", `maxTurns must be a positive integer (got '${raw}'); decimals and scientific notation are rejected`);
233
+ }
234
+ const n = Number(raw);
235
+ if (!Number.isFinite(n) || n < 1) {
236
+ return fail("invalid-field", `maxTurns must be >= 1 (got ${raw})`);
237
+ }
238
+ maxTurns = Math.min(n, MAX_TURNS_CEILING);
239
+ }
240
+ // (4.1) isolation: optional `worktree` | `none`. Stored as the strict
241
+ // string `"worktree"` when set; absent / `none` collapses to
242
+ // `undefined` so downstream code can do a single existence check.
243
+ let isolation;
244
+ if (fm["isolation"] !== undefined) {
245
+ const raw = fm["isolation"].trim();
246
+ if (!ISOLATION_VALUES.has(raw)) {
247
+ return fail("invalid-field", `isolation must be one of: ${[...ISOLATION_VALUES].join(", ")} (got '${raw}')`);
248
+ }
249
+ if (raw === "worktree")
250
+ isolation = "worktree";
251
+ }
252
+ // (4.1) unsafeAllowMutatingMcp: optional boolean. Loud name is the
253
+ // documentation surface; we still parse case-sensitively as `true` /
254
+ // `false`.
255
+ let unsafeAllowMutatingMcp;
256
+ if (fm["unsafeAllowMutatingMcp"] !== undefined) {
257
+ const raw = fm["unsafeAllowMutatingMcp"].trim();
258
+ if (raw !== "true" && raw !== "false") {
259
+ return fail("invalid-field", `unsafeAllowMutatingMcp must be exactly 'true' or 'false' (got '${raw}')`);
260
+ }
261
+ unsafeAllowMutatingMcp = raw === "true";
262
+ }
263
+ return {
264
+ ok: true,
265
+ agent: {
266
+ name: nameVal.value,
267
+ description: descVal.value,
268
+ systemPrompt: body,
269
+ tools: toolsVal.value,
270
+ disallowedTools: disallowed,
271
+ model,
272
+ maxTurns,
273
+ isolation,
274
+ unsafeAllowMutatingMcp,
275
+ },
276
+ };
277
+ }
278
+ function fail(reason, detail) {
279
+ return { ok: false, failure: { reason, detail } };
280
+ }
281
+ /** Parse a single value as either a bare string, a single-quoted scalar, or a
282
+ * double-quoted scalar. Bracketed `[` here is invalid — fields that accept
283
+ * lists use `parseListField` instead. Internal `:` is part of the value
284
+ * (so `model: anthropic/foo:bar` round-trips). */
285
+ function parseStringScalar(raw) {
286
+ const s = raw.trim();
287
+ if (s.startsWith("[")) {
288
+ return { kind: "err", detail: "expected scalar, got bracketed list" };
289
+ }
290
+ if (s.startsWith("'"))
291
+ return parseSingleQuoted(s);
292
+ if (s.startsWith('"'))
293
+ return parseDoubleQuoted(s);
294
+ // Bare scalar — the verbatim trimmed string. Internal characters are part
295
+ // of the value. We DO reject anything that looks like an unclosed quote
296
+ // sneaking through (a leading `'` already triggered the quoted branch
297
+ // above, but a stray `"` mid-value is a footgun worth catching).
298
+ return { kind: "ok", value: s };
299
+ }
300
+ function parseSingleQuoted(s) {
301
+ if (!s.startsWith("'"))
302
+ return { kind: "err", detail: "expected single quote" };
303
+ let i = 1;
304
+ let out = "";
305
+ while (i < s.length) {
306
+ const ch = s[i];
307
+ if (ch === "'") {
308
+ // Embedded `''` escapes a single quote.
309
+ if (s[i + 1] === "'") {
310
+ out += "'";
311
+ i += 2;
312
+ continue;
313
+ }
314
+ // Terminator. Anything after (other than whitespace) is an error.
315
+ const tail = s.slice(i + 1).trim();
316
+ if (tail.length > 0) {
317
+ return { kind: "err", detail: `trailing text after single-quoted scalar: "${tail}"` };
318
+ }
319
+ return { kind: "ok", value: out };
320
+ }
321
+ out += ch;
322
+ i += 1;
323
+ }
324
+ return { kind: "err", detail: "unterminated single-quoted scalar" };
325
+ }
326
+ function parseDoubleQuoted(s) {
327
+ if (!s.startsWith('"'))
328
+ return { kind: "err", detail: "expected double quote" };
329
+ let i = 1;
330
+ let out = "";
331
+ while (i < s.length) {
332
+ const ch = s[i];
333
+ if (ch === "\\") {
334
+ const next = s[i + 1];
335
+ if (next === '"') {
336
+ out += '"';
337
+ i += 2;
338
+ continue;
339
+ }
340
+ if (next === "\\") {
341
+ out += "\\";
342
+ i += 2;
343
+ continue;
344
+ }
345
+ if (next === "n") {
346
+ out += "\n";
347
+ i += 2;
348
+ continue;
349
+ }
350
+ return {
351
+ kind: "err",
352
+ detail: `unsupported escape '\\${next ?? ""}' in double-quoted scalar`,
353
+ };
354
+ }
355
+ if (ch === '"') {
356
+ const tail = s.slice(i + 1).trim();
357
+ if (tail.length > 0) {
358
+ return { kind: "err", detail: `trailing text after double-quoted scalar: "${tail}"` };
359
+ }
360
+ return { kind: "ok", value: out };
361
+ }
362
+ out += ch;
363
+ i += 1;
364
+ }
365
+ return { kind: "err", detail: "unterminated double-quoted scalar" };
366
+ }
367
+ function parseToolsField(raw) {
368
+ const s = raw.trim();
369
+ // Only bare `*` is the inherit-all sentinel. Quoted `'*'` / `"*"` are
370
+ // **rejected** (codex Round-2 MUST-FIX #1) — accepting them as the
371
+ // sentinel was an over-helpful inference that silently changed the
372
+ // effective allowlist meaning for a typo. The bracketed `['*']` case
373
+ // is handled below.
374
+ if (s === "*")
375
+ return { kind: "ok", value: "*" };
376
+ if (s === "'*'" || s === '"*"') {
377
+ return {
378
+ kind: "err",
379
+ detail: "quoted `'*'` is not the inherit-all sentinel; use bare `tools: *` (no quotes)",
380
+ };
381
+ }
382
+ const list = parseListField(s);
383
+ if (list.kind === "err")
384
+ return list;
385
+ // Reject `*` as a list element. A user writing `tools: ['*']` thinking it
386
+ // means "inherit all" would otherwise get a confusing fail-closed
387
+ // "Unknown tool '*'" at execute time (because no real tool is named `*`).
388
+ // Catch the intent at parse time and tell them how to spell it.
389
+ if (list.value.includes("*")) {
390
+ return {
391
+ kind: "err",
392
+ detail: "`*` is not a valid tool name inside a list; to inherit all parent tools, use `tools: *` (no brackets, no quotes)",
393
+ };
394
+ }
395
+ return { kind: "ok", value: list.value };
396
+ }
397
+ /** Parse a bracketed list `[a, b]`. Tokens may be bare slugs (relaxed regex —
398
+ * tool names like `web_fetch` exist) or quoted scalars. Trailing commas,
399
+ * nested lists, and unterminated brackets are all rejected. Duplicate
400
+ * tokens are silently deduped (honest mistake, not a security flaw). */
401
+ function parseListField(raw) {
402
+ const s = raw.trim();
403
+ if (!s.startsWith("[")) {
404
+ return {
405
+ kind: "err",
406
+ detail: `expected bracketed list (e.g. '[read, glob]'); got "${s}"`,
407
+ };
408
+ }
409
+ if (!s.endsWith("]")) {
410
+ return { kind: "err", detail: "unterminated bracketed list (missing ']')" };
411
+ }
412
+ const inner = s.slice(1, -1).trim();
413
+ if (inner.length === 0)
414
+ return { kind: "ok", value: [] };
415
+ const tokens = [];
416
+ let i = 0;
417
+ let expectComma = false;
418
+ while (i < inner.length) {
419
+ // Skip whitespace.
420
+ while (i < inner.length && inner[i] === " ")
421
+ i++;
422
+ if (i >= inner.length)
423
+ break;
424
+ if (expectComma) {
425
+ if (inner[i] !== ",") {
426
+ return {
427
+ kind: "err",
428
+ detail: `expected ',' or ']' after token; got '${inner[i]}'`,
429
+ };
430
+ }
431
+ i += 1;
432
+ expectComma = false;
433
+ // After consuming the comma, the next iter expects a token.
434
+ // A trailing comma manifests as no more tokens before `]`.
435
+ while (i < inner.length && inner[i] === " ")
436
+ i++;
437
+ if (i >= inner.length) {
438
+ return { kind: "err", detail: "trailing comma in list" };
439
+ }
440
+ continue;
441
+ }
442
+ const ch = inner[i];
443
+ if (ch === "[") {
444
+ return { kind: "err", detail: "nested lists are not allowed" };
445
+ }
446
+ if (ch === "'" || ch === '"') {
447
+ const { token, next, err } = consumeQuoted(inner, i, ch);
448
+ if (err)
449
+ return { kind: "err", detail: err };
450
+ tokens.push(token);
451
+ i = next;
452
+ expectComma = true;
453
+ continue;
454
+ }
455
+ // Bare token.
456
+ const start = i;
457
+ while (i < inner.length && inner[i] !== "," && inner[i] !== " ") {
458
+ if (inner[i] === "[" || inner[i] === "]") {
459
+ return { kind: "err", detail: `unexpected '${inner[i]}' in list token` };
460
+ }
461
+ i += 1;
462
+ }
463
+ const tok = inner.slice(start, i);
464
+ if (!BARE_TOKEN_RE.test(tok)) {
465
+ return { kind: "err", detail: `invalid bare list token: '${tok}'` };
466
+ }
467
+ tokens.push(tok);
468
+ expectComma = true;
469
+ }
470
+ // Dedupe while preserving order.
471
+ const seen = new Set();
472
+ const out = [];
473
+ for (const t of tokens) {
474
+ if (seen.has(t))
475
+ continue;
476
+ seen.add(t);
477
+ out.push(t);
478
+ }
479
+ return { kind: "ok", value: out };
480
+ }
481
+ function consumeQuoted(src, start, quote) {
482
+ let i = start + 1;
483
+ let out = "";
484
+ while (i < src.length) {
485
+ const ch = src[i];
486
+ if (quote === "'") {
487
+ if (ch === "'") {
488
+ if (src[i + 1] === "'") {
489
+ out += "'";
490
+ i += 2;
491
+ continue;
492
+ }
493
+ return { token: out, next: i + 1 };
494
+ }
495
+ out += ch;
496
+ i += 1;
497
+ continue;
498
+ }
499
+ // Double quoted.
500
+ if (ch === "\\") {
501
+ const next = src[i + 1];
502
+ if (next === '"') {
503
+ out += '"';
504
+ i += 2;
505
+ continue;
506
+ }
507
+ if (next === "\\") {
508
+ out += "\\";
509
+ i += 2;
510
+ continue;
511
+ }
512
+ if (next === "n") {
513
+ out += "\n";
514
+ i += 2;
515
+ continue;
516
+ }
517
+ return { next: i, err: `unsupported escape '\\${next ?? ""}'` };
518
+ }
519
+ if (ch === '"') {
520
+ return { token: out, next: i + 1 };
521
+ }
522
+ out += ch;
523
+ i += 1;
524
+ }
525
+ return { next: i, err: `unterminated ${quote === "'" ? "single" : "double"}-quoted token` };
526
+ }
527
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/agents/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Public type surface for the agent catalog. Discovery returns the maps;
3
+ * the task tool reads them at execute time. Kept in a separate module from
4
+ * the parser so consumers can import the types without pulling parser code
5
+ * into bundles that don't need it.
6
+ */
7
+ export type AgentSource = "project" | "user" | "bundled";
8
+ export interface AgentDefinition {
9
+ name: string;
10
+ description: string;
11
+ /** Body of the markdown file, trimmed. Becomes the child's `systemBaseOverride`. */
12
+ systemPrompt: string;
13
+ /**
14
+ * Resolved at execute time, NOT at discovery. `"*"` means "inherit parent's
15
+ * full tool surface (minus `task` for the recursion block)". An array means
16
+ * exactly these tool names — every entry must resolve in the parent's
17
+ * registry at execute time or the task call fails closed.
18
+ */
19
+ tools: string[] | "*";
20
+ /** Applied AFTER `tools`. Same fail-closed semantics as `tools`. */
21
+ disallowedTools: string[];
22
+ /** Looked up via `ModelRegistry.get`; unknown id fails closed at execute. */
23
+ model?: string;
24
+ /** Already clamped to `[1, 50]` at parse time. */
25
+ maxTurns?: number;
26
+ /** (4.1) `"worktree"` opts the spawned subagent into a git-worktree
27
+ * sandbox; `undefined` keeps it in the parent's workspace (the 3.x
28
+ * default). Source-of-truth for the `task` tool's resolution chain
29
+ * (input override > frontmatter > undefined). */
30
+ isolation?: "worktree";
31
+ /** (4.1) Opts out of the default MCP-mutating-tool filter that
32
+ * applies to isolated subagents (Round-1 MUST-FIX #2). Loud name is
33
+ * the documentation surface. Default `false` / `undefined`. */
34
+ unsafeAllowMutatingMcp?: boolean;
35
+ source: AgentSource;
36
+ /** Absolute path; surfaced in `/agents` and skipped-entry diagnostics. */
37
+ sourcePath: string;
38
+ }
39
+ /** Why a file was excluded from the catalog. Kept as a string-literal union
40
+ * so callers (logger, slash command) can pattern-match without an enum
41
+ * import. */
42
+ export type SkipReason = "bad-frontmatter" | "missing-required-field" | "missing-body" | "invalid-field" | "reserved-name" | "reserved-field" | "duplicate-across-source" | "duplicate-within-source" | "file-read-error" | "file-too-large" | "file-too-many";
43
+ export interface SkippedAgent {
44
+ path: string;
45
+ reason: SkipReason;
46
+ detail: string;
47
+ }
48
+ export interface DiscoveredAgents {
49
+ agents: ReadonlyMap<string, AgentDefinition>;
50
+ skipped: readonly SkippedAgent[];
51
+ }
52
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACtB,oEAAoE;IACpE,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;qDAGiD;IACjD,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB;;mEAE+D;IAC/D,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;aAEa;AACb,MAAM,MAAM,UAAU,GAClB,iBAAiB,GACjB,wBAAwB,GACxB,cAAc,GACd,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,yBAAyB,GACzB,yBAAyB,GACzB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,CAAC;AAEpB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAClC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Public type surface for the agent catalog. Discovery returns the maps;
3
+ * the task tool reads them at execute time. Kept in a separate module from
4
+ * the parser so consumers can import the types without pulling parser code
5
+ * into bundles that don't need it.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,19 @@
1
+ import type { ChatRequest, ProviderEvent } from "../types.js";
2
+ /**
3
+ * Streams a chat request through any Vercel AI SDK language model. Both
4
+ * {@link AiSdkAdapter} (native @ai-sdk/* providers) and
5
+ * {@link OpenAICompatibleAdapter} (createOpenAICompatible-backed providers)
6
+ * call into this so the normalization → ProviderEvent mapping lives in one
7
+ * place.
8
+ *
9
+ * `model` is typed as `unknown` because the AI SDK module is dynamic-imported
10
+ * and we don't pin its type surface here; callers pass through whatever
11
+ * `streamText({ model })` accepts at their installed version.
12
+ *
13
+ * `loadAi` is a test-only seam — the adapters thread their own
14
+ * `__loadSdkModuleForTest` through it so an end-to-end test can drive the
15
+ * streaming-error redaction path without depending on the real `ai`
16
+ * package's internals. Production callers omit it and pay one `import("ai")`.
17
+ */
18
+ export declare function streamFromAiSdk(model: unknown, req: ChatRequest, signal: AbortSignal, loadAi?: () => Promise<unknown>): AsyncIterable<ProviderEvent>;
19
+ //# sourceMappingURL=ai-sdk-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-sdk-stream.d.ts","sourceRoot":"","sources":["../../../src/ai/adapters/ai-sdk-stream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAwB,aAAa,EAAE,MAAM,aAAa,CAAC;AAmDpF;;;;;;;;;;;;;;;GAeG;AACH,wBAAuB,eAAe,CACpC,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,EACnB,MAAM,GAAE,MAAM,OAAO,CAAC,OAAO,CAAsB,GAClD,aAAa,CAAC,aAAa,CAAC,CAwE9B"}