agency-lang 0.9.0 → 0.10.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 (890) hide show
  1. package/dist/lib/agents/agency-agent/agent.agency +19 -534
  2. package/dist/lib/agents/agency-agent/agent.js +486 -5003
  3. package/dist/lib/agents/agency-agent/images/images.js +12 -6
  4. package/dist/lib/agents/agency-agent/lib/args.js +32 -11
  5. package/dist/lib/agents/agency-agent/lib/attachments.js +71 -23
  6. package/dist/lib/agents/agency-agent/lib/budget.agency +213 -0
  7. package/dist/lib/agents/agency-agent/lib/budget.js +1504 -0
  8. package/dist/lib/agents/agency-agent/lib/capabilities.js +123 -48
  9. package/dist/lib/agents/agency-agent/lib/capabilitiesUi.js +422 -115
  10. package/dist/lib/agents/agency-agent/lib/commandPalette.js +15 -6
  11. package/dist/lib/agents/agency-agent/lib/config.js +22 -11
  12. package/dist/lib/agents/agency-agent/lib/coordinator.agency +373 -0
  13. package/dist/lib/agents/agency-agent/lib/coordinator.js +2377 -0
  14. package/dist/lib/agents/agency-agent/lib/header.js +68 -23
  15. package/dist/lib/agents/agency-agent/lib/images.js +121 -36
  16. package/dist/lib/agents/agency-agent/lib/mcp.js +258 -86
  17. package/dist/lib/agents/agency-agent/lib/modelFilters.js +14 -6
  18. package/dist/lib/agents/agency-agent/lib/models.agency +6 -4
  19. package/dist/lib/agents/agency-agent/lib/models.js +194 -72
  20. package/dist/lib/agents/agency-agent/lib/policy.js +204 -95
  21. package/dist/lib/agents/agency-agent/lib/repl.agency +415 -0
  22. package/dist/lib/agents/agency-agent/lib/repl.js +3174 -0
  23. package/dist/lib/agents/agency-agent/lib/resolution.js +158 -54
  24. package/dist/lib/agents/agency-agent/lib/search.js +216 -62
  25. package/dist/lib/agents/agency-agent/lib/session.js +342 -155
  26. package/dist/lib/agents/agency-agent/lib/settings.js +116 -40
  27. package/dist/lib/agents/agency-agent/lib/slots.js +49 -14
  28. package/dist/lib/agents/agency-agent/lib/trace.agency +150 -0
  29. package/dist/lib/agents/agency-agent/lib/trace.js +2057 -0
  30. package/dist/lib/agents/agency-agent/lib/utils/renderLLMCallResponse.js +14 -6
  31. package/dist/lib/agents/agency-agent/lib/utils.agency +12 -0
  32. package/dist/lib/agents/agency-agent/lib/utils.js +252 -52
  33. package/dist/lib/agents/agency-agent/prompts/code.md +268 -0
  34. package/dist/lib/agents/agency-agent/prompts/codeSample.js +23 -21
  35. package/dist/lib/agents/agency-agent/prompts/main-large.md +4 -0
  36. package/dist/lib/agents/agency-agent/prompts/main-small.md +4 -0
  37. package/dist/lib/agents/agency-agent/prompts/oneShot.md +21 -0
  38. package/dist/lib/agents/agency-agent/shared.agency +1 -1
  39. package/dist/lib/agents/agency-agent/shared.js +264 -82
  40. package/dist/lib/agents/agency-agent/subagents/brainstorm.agency +201 -0
  41. package/dist/lib/agents/agency-agent/subagents/brainstorm.js +1652 -0
  42. package/dist/lib/agents/agency-agent/subagents/code.agency +328 -478
  43. package/dist/lib/agents/agency-agent/subagents/code.js +2742 -679
  44. package/dist/lib/agents/agency-agent/subagents/explorer.agency +18 -130
  45. package/dist/lib/agents/agency-agent/subagents/explorer.js +91 -228
  46. package/dist/lib/agents/agency-agent/subagents/oracle.agency +22 -102
  47. package/dist/lib/agents/agency-agent/subagents/oracle.js +91 -208
  48. package/dist/lib/agents/agency-agent/subagents/research.agency +57 -140
  49. package/dist/lib/agents/agency-agent/subagents/research.js +158 -196
  50. package/dist/lib/agents/agency-agent/subagents/review.agency +21 -40
  51. package/dist/lib/agents/agency-agent/subagents/review.js +229 -316
  52. package/dist/lib/agents/agency-agent/subagents/supervisor.agency +378 -0
  53. package/dist/lib/agents/agency-agent/subagents/supervisor.js +2486 -0
  54. package/dist/lib/agents/agency-agent/subagents/verify.js +37 -71
  55. package/dist/lib/agents/agency-agent/tests/agentDir.js +15 -9
  56. package/dist/lib/agents/agency-agent/tests/agentTurn.agency +1 -1
  57. package/dist/lib/agents/agency-agent/tests/agentTurn.js +517 -229
  58. package/dist/lib/agents/agency-agent/tests/agentTurn.test.json +3 -3
  59. package/dist/lib/agents/agency-agent/tests/attachments.js +85 -86
  60. package/dist/lib/agents/agency-agent/tests/attachmentsTurn.agency +1 -1
  61. package/dist/lib/agents/agency-agent/tests/attachmentsTurn.js +130 -46
  62. package/dist/lib/agents/agency-agent/tests/brainstorm.agency +94 -0
  63. package/dist/lib/agents/agency-agent/tests/brainstorm.js +1235 -0
  64. package/dist/lib/agents/agency-agent/tests/brainstorm.test.json +59 -0
  65. package/dist/lib/agents/agency-agent/tests/capabilities.js +190 -87
  66. package/dist/lib/agents/agency-agent/tests/execPolicy.js +206 -62
  67. package/dist/lib/agents/agency-agent/tests/gitPolicy.js +130 -40
  68. package/dist/lib/agents/agency-agent/tests/imageTool.js +82 -37
  69. package/dist/lib/agents/agency-agent/tests/mcpGating.js +39 -20
  70. package/dist/lib/agents/agency-agent/tests/memoryWiring.js +27 -27
  71. package/dist/lib/agents/agency-agent/tests/modelFilters.js +86 -42
  72. package/dist/lib/agents/agency-agent/tests/models.js +181 -96
  73. package/dist/lib/agents/agency-agent/tests/models.test.json +4 -4
  74. package/dist/lib/agents/agency-agent/tests/oneShotRounds.js +99 -39
  75. package/dist/lib/agents/agency-agent/tests/resolution.js +487 -141
  76. package/dist/lib/agents/agency-agent/tests/resolution.test.json +2 -2
  77. package/dist/lib/agents/agency-agent/tests/search.js +462 -144
  78. package/dist/lib/agents/agency-agent/tests/settings.js +57 -48
  79. package/dist/lib/agents/agency-agent/tests/slots.js +23 -21
  80. package/dist/lib/agents/agency-agent/tests/subagentFailure.js +749 -0
  81. package/dist/lib/agents/agency-agent/tests/supervisor.agency +197 -0
  82. package/dist/lib/agents/agency-agent/tests/supervisor.js +2713 -0
  83. package/dist/lib/agents/agency-agent/tests/supervisor.test.json +169 -0
  84. package/dist/lib/agents/agency-agent/tests/toolWiring.agency +23 -4
  85. package/dist/lib/agents/agency-agent/tests/toolWiring.js +296 -28
  86. package/dist/lib/agents/agency-agent/tests/toolWiring.test.json +14 -0
  87. package/dist/lib/agents/agency-agent/tests/turnFailure.js +91 -45
  88. package/dist/lib/agents/eval/goalJudge.agency +4 -2
  89. package/dist/lib/agents/eval/goalJudge.js +17 -11
  90. package/dist/lib/agents/eval/judge.agency +4 -2
  91. package/dist/lib/agents/eval/judge.js +17 -11
  92. package/dist/lib/agents/eval/judgePairwise.js +15 -9
  93. package/dist/lib/agents/optimize/gepaReflect.js +15 -9
  94. package/dist/lib/agents/optimize/mutatePrompt.js +15 -9
  95. package/dist/lib/agents/policy/agent.agency +5 -4
  96. package/dist/lib/agents/policy/agent.js +154 -53
  97. package/dist/lib/agents/review/agent.agency +2 -2
  98. package/dist/lib/agents/review/agent.js +22 -14
  99. package/dist/lib/analysis/bodyFacts.d.ts +52 -0
  100. package/dist/lib/analysis/bodyFacts.js +87 -0
  101. package/dist/lib/analysis/effectPropagation.test.js +167 -0
  102. package/dist/lib/analysis/effects.d.ts +66 -0
  103. package/dist/lib/analysis/effects.js +238 -0
  104. package/dist/lib/analysis/effects.test.d.ts +1 -0
  105. package/dist/lib/analysis/effects.test.js +247 -0
  106. package/dist/lib/analysis/effectsOracle.test.d.ts +1 -0
  107. package/dist/lib/analysis/effectsOracle.test.js +74 -0
  108. package/dist/lib/analysis/interrupts.js +6 -1
  109. package/dist/lib/backends/agencyGenerator.d.ts +40 -6
  110. package/dist/lib/backends/agencyGenerator.hole.test.d.ts +1 -0
  111. package/dist/lib/backends/agencyGenerator.hole.test.js +61 -0
  112. package/dist/lib/backends/agencyGenerator.js +229 -17
  113. package/dist/lib/backends/agencyGenerator.matchBlock.test.js +41 -0
  114. package/dist/lib/backends/agencyGenerator.roundtrip.test.d.ts +1 -0
  115. package/dist/lib/backends/agencyGenerator.roundtrip.test.js +250 -0
  116. package/dist/lib/backends/agencyGenerator.splice.test.d.ts +1 -0
  117. package/dist/lib/backends/agencyGenerator.splice.test.js +43 -0
  118. package/dist/lib/backends/draftSchemaCodegen.test.js +32 -0
  119. package/dist/lib/backends/frameClaims.test.d.ts +1 -0
  120. package/dist/lib/backends/frameClaims.test.js +58 -0
  121. package/dist/lib/backends/holeRefusal.test.d.ts +1 -0
  122. package/dist/lib/backends/holeRefusal.test.js +58 -0
  123. package/dist/lib/backends/typescriptBuilder/nameClassifier.js +2 -1
  124. package/dist/lib/backends/typescriptBuilder/scopeManager.d.ts +8 -6
  125. package/dist/lib/backends/typescriptBuilder/scopeManager.js +17 -13
  126. package/dist/lib/backends/typescriptBuilder/scopeManager.test.js +36 -0
  127. package/dist/lib/backends/typescriptBuilder/sectionAssembler.js +11 -11
  128. package/dist/lib/backends/typescriptBuilder.d.ts +7 -0
  129. package/dist/lib/backends/typescriptBuilder.js +135 -29
  130. package/dist/lib/backends/typescriptGenerator/typeToString.js +1 -1
  131. package/dist/lib/backends/typescriptGenerator/validationDescriptor.js +42 -16
  132. package/dist/lib/cli/bundle.test.js +2 -2
  133. package/dist/lib/cli/definition.js +3 -2
  134. package/dist/lib/cli/diagnosticsDocs.js +46 -2
  135. package/dist/lib/cli/diagnosticsDocs.test.js +24 -2
  136. package/dist/lib/cli/doc.d.ts +1 -0
  137. package/dist/lib/cli/doc.js +49 -13
  138. package/dist/lib/cli/doc.test.js +134 -5
  139. package/dist/lib/cli/events.test.js +2 -1
  140. package/dist/lib/cli/expectedCompileError.d.ts +30 -0
  141. package/dist/lib/cli/expectedCompileError.js +58 -0
  142. package/dist/lib/cli/expectedCompileError.test.d.ts +1 -0
  143. package/dist/lib/cli/expectedCompileError.test.js +81 -0
  144. package/dist/lib/cli/explain.js +37 -0
  145. package/dist/lib/cli/explain.test.js +28 -2
  146. package/dist/lib/cli/lint.d.ts +4 -0
  147. package/dist/lib/cli/lint.js +11 -0
  148. package/dist/lib/cli/lint.test.d.ts +1 -0
  149. package/dist/lib/cli/lint.test.js +18 -0
  150. package/dist/lib/cli/literate.d.ts +1 -1
  151. package/dist/lib/cli/literate.js +89 -9
  152. package/dist/lib/cli/literate.test.js +96 -1
  153. package/dist/lib/cli/policy.d.ts +2 -0
  154. package/dist/lib/cli/policy.js +1 -1
  155. package/dist/lib/cli/policyCrossModule.test.d.ts +1 -0
  156. package/dist/lib/cli/policyCrossModule.test.js +30 -0
  157. package/dist/lib/cli/precompile.js +16 -7
  158. package/dist/lib/cli/precompile.test.js +22 -0
  159. package/dist/lib/cli/runAgencyAgent.js +4 -3
  160. package/dist/lib/cli/test.d.ts +8 -2
  161. package/dist/lib/cli/test.js +194 -10
  162. package/dist/lib/cli/test.test.d.ts +1 -0
  163. package/dist/lib/cli/test.test.js +76 -0
  164. package/dist/lib/cli/util.d.ts +2 -1
  165. package/dist/lib/cli/util.js +10 -4
  166. package/dist/lib/compilationUnit.js +3 -2
  167. package/dist/lib/compiler/buildSession.js +14 -1
  168. package/dist/lib/compiler/compile.js +24 -1
  169. package/dist/lib/compiler/compileClosure.d.ts +14 -1
  170. package/dist/lib/compiler/compileClosure.js +13 -1
  171. package/dist/lib/compiler/initDepGraph.js +3 -2
  172. package/dist/lib/compiler/splice/cache.d.ts +60 -0
  173. package/dist/lib/compiler/splice/cache.js +126 -0
  174. package/dist/lib/compiler/splice/cache.test.d.ts +1 -0
  175. package/dist/lib/compiler/splice/cache.test.js +124 -0
  176. package/dist/lib/compiler/splice/eligibility.d.ts +114 -0
  177. package/dist/lib/compiler/splice/eligibility.js +253 -0
  178. package/dist/lib/compiler/splice/eligibility.test.d.ts +1 -0
  179. package/dist/lib/compiler/splice/eligibility.test.js +153 -0
  180. package/dist/lib/compiler/splice/generatorEffects.d.ts +18 -0
  181. package/dist/lib/compiler/splice/generatorEffects.js +210 -0
  182. package/dist/lib/compiler/splice/rebuild.test.d.ts +1 -0
  183. package/dist/lib/compiler/splice/rebuild.test.js +124 -0
  184. package/dist/lib/compiler/splice/report.d.ts +12 -0
  185. package/dist/lib/compiler/splice/report.js +20 -0
  186. package/dist/lib/compiler/splice/runGenerator.d.ts +43 -0
  187. package/dist/lib/compiler/splice/runGenerator.js +385 -0
  188. package/dist/lib/compiler/splice/runGenerator.test.d.ts +1 -0
  189. package/dist/lib/compiler/splice/runGenerator.test.js +216 -0
  190. package/dist/lib/compiler/splice/types.d.ts +28 -0
  191. package/dist/lib/compiler/splice/types.js +1 -0
  192. package/dist/lib/compiler/typecheck.d.ts +10 -0
  193. package/dist/lib/compiler/typecheck.js +28 -7
  194. package/dist/lib/compiler/typecheckEffects.test.d.ts +1 -0
  195. package/dist/lib/compiler/typecheckEffects.test.js +35 -0
  196. package/dist/lib/config.d.ts +14 -0
  197. package/dist/lib/config.js +2 -1
  198. package/dist/lib/constants.d.ts +12 -0
  199. package/dist/lib/constants.js +12 -0
  200. package/dist/lib/debugger/uiState.test.js +1 -0
  201. package/dist/lib/formatter.comprehension.test.d.ts +1 -0
  202. package/dist/lib/formatter.comprehension.test.js +34 -0
  203. package/dist/lib/formatter.test.js +36 -0
  204. package/dist/lib/ir/builders.js +4 -8
  205. package/dist/lib/linter/diagnosticExplanations.d.ts +3 -0
  206. package/dist/lib/linter/diagnosticExplanations.js +20 -0
  207. package/dist/lib/linter/diagnostics.d.ts +35 -0
  208. package/dist/lib/linter/diagnostics.js +43 -0
  209. package/dist/lib/linter/diagnostics.test.d.ts +1 -0
  210. package/dist/lib/linter/diagnostics.test.js +23 -0
  211. package/dist/lib/linter/registry.d.ts +14 -0
  212. package/dist/lib/linter/registry.js +28 -0
  213. package/dist/lib/linter/registry.test.d.ts +1 -0
  214. package/dist/lib/linter/registry.test.js +23 -0
  215. package/dist/lib/linter/rules/importFixes.d.ts +8 -0
  216. package/dist/lib/linter/rules/importFixes.js +71 -0
  217. package/dist/lib/linter/rules/missingDocstring.d.ts +2 -0
  218. package/dist/lib/linter/rules/missingDocstring.js +27 -0
  219. package/dist/lib/linter/rules/missingDocstring.test.d.ts +1 -0
  220. package/dist/lib/linter/rules/missingDocstring.test.js +62 -0
  221. package/dist/lib/linter/rules/redundantPreludeImport.d.ts +2 -0
  222. package/dist/lib/linter/rules/redundantPreludeImport.js +50 -0
  223. package/dist/lib/linter/rules/redundantPreludeImport.test.d.ts +1 -0
  224. package/dist/lib/linter/rules/redundantPreludeImport.test.js +74 -0
  225. package/dist/lib/linter/rules/unusedImports.d.ts +26 -0
  226. package/dist/lib/linter/rules/unusedImports.fix.test.d.ts +1 -0
  227. package/dist/lib/linter/rules/unusedImports.fix.test.js +86 -0
  228. package/dist/lib/linter/rules/unusedImports.js +102 -0
  229. package/dist/lib/linter/rules/unusedImports.test.d.ts +1 -0
  230. package/dist/lib/linter/rules/unusedImports.test.js +107 -0
  231. package/dist/lib/linter/rules/util.d.ts +36 -0
  232. package/dist/lib/linter/rules/util.js +93 -0
  233. package/dist/lib/linter/rules/util.test.d.ts +1 -0
  234. package/dist/lib/linter/rules/util.test.js +37 -0
  235. package/dist/lib/linter/types.d.ts +41 -0
  236. package/dist/lib/linter/types.js +1 -0
  237. package/dist/lib/lowering/comprehensionDesugar.d.ts +26 -0
  238. package/dist/lib/lowering/comprehensionDesugar.js +228 -0
  239. package/dist/lib/lowering/comprehensionDesugar.locations.test.d.ts +1 -0
  240. package/dist/lib/lowering/comprehensionDesugar.locations.test.js +57 -0
  241. package/dist/lib/lowering/comprehensionDesugar.test.d.ts +1 -0
  242. package/dist/lib/lowering/comprehensionDesugar.test.js +171 -0
  243. package/dist/lib/lowering/patternGuards.tripwire.test.d.ts +27 -0
  244. package/dist/lib/lowering/patternGuards.tripwire.test.js +362 -0
  245. package/dist/lib/lowering/patternLowering.js +264 -28
  246. package/dist/lib/lowering/patternLowering.test.js +120 -7
  247. package/dist/lib/lsp/codeAction.d.ts +13 -1
  248. package/dist/lib/lsp/codeAction.js +70 -1
  249. package/dist/lib/lsp/codeAction.test.js +86 -0
  250. package/dist/lib/lsp/completion.js +2 -1
  251. package/dist/lib/lsp/diagnostics.d.ts +4 -0
  252. package/dist/lib/lsp/diagnostics.js +116 -18
  253. package/dist/lib/lsp/diagnostics.test.js +254 -0
  254. package/dist/lib/lsp/documentState.d.ts +10 -0
  255. package/dist/lib/lsp/documentStateCache.d.ts +50 -0
  256. package/dist/lib/lsp/documentStateCache.js +47 -0
  257. package/dist/lib/lsp/documentStateCache.test.d.ts +1 -0
  258. package/dist/lib/lsp/documentStateCache.test.js +95 -0
  259. package/dist/lib/lsp/documentSymbol.js +3 -2
  260. package/dist/lib/lsp/scopeResolution.d.ts +17 -0
  261. package/dist/lib/lsp/scopeResolution.js +42 -22
  262. package/dist/lib/lsp/semanticTokens.d.ts +32 -0
  263. package/dist/lib/lsp/semanticTokens.js +220 -0
  264. package/dist/lib/lsp/semanticTokens.test.d.ts +1 -0
  265. package/dist/lib/lsp/semanticTokens.test.js +338 -0
  266. package/dist/lib/lsp/semantics.js +7 -6
  267. package/dist/lib/lsp/server.js +136 -13
  268. package/dist/lib/optimize/targets.js +3 -2
  269. package/dist/lib/parseCache.d.ts +10 -0
  270. package/dist/lib/parseCache.js +13 -0
  271. package/dist/lib/parseCache.test.js +26 -1
  272. package/dist/lib/parser.d.ts +1 -1
  273. package/dist/lib/parser.js +67 -8
  274. package/dist/lib/parser.test.js +12 -3
  275. package/dist/lib/parsers/chainNewlineBoundary.test.d.ts +1 -0
  276. package/dist/lib/parsers/chainNewlineBoundary.test.js +121 -0
  277. package/dist/lib/parsers/codeLiteral.test.d.ts +1 -0
  278. package/dist/lib/parsers/codeLiteral.test.js +241 -0
  279. package/dist/lib/parsers/comprehension.test.d.ts +1 -0
  280. package/dist/lib/parsers/comprehension.test.js +325 -0
  281. package/dist/lib/parsers/hashRemoved.test.d.ts +1 -0
  282. package/dist/lib/parsers/hashRemoved.test.js +11 -0
  283. package/dist/lib/parsers/hole.test.d.ts +1 -0
  284. package/dist/lib/parsers/hole.test.js +171 -0
  285. package/dist/lib/parsers/literalDelimiter.test.d.ts +1 -0
  286. package/dist/lib/parsers/literalDelimiter.test.js +60 -0
  287. package/dist/lib/parsers/matchBlock.test.js +100 -0
  288. package/dist/lib/parsers/objectTypeTags.test.js +0 -13
  289. package/dist/lib/parsers/parsers.d.ts +82 -6
  290. package/dist/lib/parsers/parsers.js +759 -52
  291. package/dist/lib/parsers/pattern.test.js +235 -4
  292. package/dist/lib/parsers/splice.test.d.ts +1 -0
  293. package/dist/lib/parsers/splice.test.js +81 -0
  294. package/dist/lib/parsers/typeHints.test.js +1 -300
  295. package/dist/lib/perf/compile.perf.test.d.ts +1 -0
  296. package/dist/lib/perf/compile.perf.test.js +76 -0
  297. package/dist/lib/perf/doc.perf.test.d.ts +1 -0
  298. package/dist/lib/perf/doc.perf.test.js +30 -0
  299. package/dist/lib/perf/fixtures.d.ts +25 -0
  300. package/dist/lib/perf/fixtures.js +100 -0
  301. package/dist/lib/perf/fixtures.test.d.ts +1 -0
  302. package/dist/lib/perf/fixtures.test.js +37 -0
  303. package/dist/lib/perf/fmt.perf.test.d.ts +1 -0
  304. package/dist/lib/perf/fmt.perf.test.js +16 -0
  305. package/dist/lib/perf/harness.d.ts +31 -0
  306. package/dist/lib/perf/harness.js +114 -0
  307. package/dist/lib/perf/harness.perf.test.d.ts +1 -0
  308. package/dist/lib/perf/harness.perf.test.js +45 -0
  309. package/dist/lib/perf/harness.test.d.ts +1 -0
  310. package/dist/lib/perf/harness.test.js +79 -0
  311. package/dist/lib/perf/lint.perf.test.d.ts +1 -0
  312. package/dist/lib/perf/lint.perf.test.js +76 -0
  313. package/dist/lib/perf/lsp.perf.test.d.ts +1 -0
  314. package/dist/lib/perf/lsp.perf.test.js +60 -0
  315. package/dist/lib/perf/parse.perf.test.d.ts +1 -0
  316. package/dist/lib/perf/parse.perf.test.js +20 -0
  317. package/dist/lib/perf/symbolTable.perf.test.d.ts +1 -0
  318. package/dist/lib/perf/symbolTable.perf.test.js +63 -0
  319. package/dist/lib/perf/typecheck.perf.test.d.ts +1 -0
  320. package/dist/lib/perf/typecheck.perf.test.js +35 -0
  321. package/dist/lib/prelude.d.ts +27 -0
  322. package/dist/lib/prelude.js +62 -0
  323. package/dist/lib/prelude.test.d.ts +1 -0
  324. package/dist/lib/prelude.test.js +41 -0
  325. package/dist/lib/preprocessors/expandSplices.d.ts +14 -0
  326. package/dist/lib/preprocessors/expandSplices.js +451 -0
  327. package/dist/lib/preprocessors/expandSplices.test.d.ts +1 -0
  328. package/dist/lib/preprocessors/expandSplices.test.js +287 -0
  329. package/dist/lib/preprocessors/guardDesugar.d.ts +16 -3
  330. package/dist/lib/preprocessors/guardDesugar.js +63 -34
  331. package/dist/lib/preprocessors/guardDesugar.test.js +110 -0
  332. package/dist/lib/preprocessors/hoistCalls.d.ts +83 -0
  333. package/dist/lib/preprocessors/hoistCalls.js +354 -0
  334. package/dist/lib/preprocessors/hoistCalls.test.d.ts +1 -0
  335. package/dist/lib/preprocessors/hoistCalls.test.js +385 -0
  336. package/dist/lib/preprocessors/importResolver.d.ts +13 -0
  337. package/dist/lib/preprocessors/importResolver.js +188 -102
  338. package/dist/lib/preprocessors/importResolver.test.js +115 -0
  339. package/dist/lib/preprocessors/liftCallbacks.js +5 -3
  340. package/dist/lib/preprocessors/liftCallbacks.test.js +1 -1
  341. package/dist/lib/preprocessors/prunePreludeShadows.js +7 -3
  342. package/dist/lib/preprocessors/typescriptPreprocessor.js +26 -7
  343. package/dist/lib/runtime/__tests__/testHelpers.js +1 -0
  344. package/dist/lib/runtime/agency.test.js +9 -0
  345. package/dist/lib/runtime/agencyFunction.d.ts +8 -0
  346. package/dist/lib/runtime/agencyFunction.js +14 -0
  347. package/dist/lib/runtime/agencyInterrupt.js +1 -0
  348. package/dist/lib/runtime/agencyInterrupt.test.js +79 -53
  349. package/dist/lib/runtime/asyncContext.d.ts +1 -25
  350. package/dist/lib/runtime/asyncContext.js +1 -12
  351. package/dist/lib/runtime/asyncContext.test.js +1 -25
  352. package/dist/lib/runtime/blockNames.d.ts +17 -0
  353. package/dist/lib/runtime/blockNames.js +19 -0
  354. package/dist/lib/runtime/blockNames.test.js +15 -1
  355. package/dist/lib/runtime/clock.d.ts +48 -0
  356. package/dist/lib/runtime/clock.js +71 -0
  357. package/dist/lib/runtime/clock.test.d.ts +1 -0
  358. package/dist/lib/runtime/clock.test.js +118 -0
  359. package/dist/lib/runtime/crossModuleInitRegistry.d.ts +24 -0
  360. package/dist/lib/runtime/crossModuleInitRegistry.js +32 -0
  361. package/dist/lib/runtime/crossModuleInitRegistry.test.d.ts +1 -0
  362. package/dist/lib/runtime/crossModuleInitRegistry.test.js +31 -0
  363. package/dist/lib/runtime/effectMerge.test.js +4 -3
  364. package/dist/lib/runtime/executingHandlers.d.ts +7 -0
  365. package/dist/lib/runtime/executingHandlers.js +47 -0
  366. package/dist/lib/runtime/executingHandlers.test.d.ts +1 -0
  367. package/dist/lib/runtime/executingHandlers.test.js +51 -0
  368. package/dist/lib/runtime/guard.clock.test.d.ts +1 -0
  369. package/dist/lib/runtime/guard.clock.test.js +78 -0
  370. package/dist/lib/runtime/guard.d.ts +10 -4
  371. package/dist/lib/runtime/guard.js +35 -10
  372. package/dist/lib/runtime/guard.test.js +28 -0
  373. package/dist/lib/runtime/guardTripInterrupt.inHandler.test.d.ts +1 -0
  374. package/dist/lib/runtime/guardTripInterrupt.inHandler.test.js +47 -0
  375. package/dist/lib/runtime/guardTripInterrupt.js +22 -0
  376. package/dist/lib/runtime/index.d.ts +5 -2
  377. package/dist/lib/runtime/index.js +5 -2
  378. package/dist/lib/runtime/interrupts.d.ts +0 -2
  379. package/dist/lib/runtime/interrupts.executingHandlers.test.d.ts +1 -0
  380. package/dist/lib/runtime/interrupts.executingHandlers.test.js +112 -0
  381. package/dist/lib/runtime/interrupts.js +84 -10
  382. package/dist/lib/runtime/interrupts.test.js +10 -9
  383. package/dist/lib/runtime/intrinsicTools.d.ts +4 -1
  384. package/dist/lib/runtime/jsonValue.d.ts +15 -0
  385. package/dist/lib/runtime/jsonValue.js +66 -0
  386. package/dist/lib/runtime/jsonValue.test.d.ts +1 -0
  387. package/dist/lib/runtime/jsonValue.test.js +52 -0
  388. package/dist/lib/runtime/memory/cacheEntry.d.ts +10 -0
  389. package/dist/lib/runtime/memory/cacheEntry.js +10 -0
  390. package/dist/lib/runtime/memory/compaction.d.ts +8 -3
  391. package/dist/lib/runtime/memory/compaction.js +10 -4
  392. package/dist/lib/runtime/memory/compaction.test.js +32 -18
  393. package/dist/lib/runtime/memory/manager.js +23 -5
  394. package/dist/lib/runtime/memory/manager.test.js +91 -0
  395. package/dist/lib/runtime/node.d.ts +2 -6
  396. package/dist/lib/runtime/node.js +16 -21
  397. package/dist/lib/runtime/prompt.js +47 -79
  398. package/dist/lib/runtime/promptRunner.js +1 -0
  399. package/dist/lib/runtime/promptRunner.test.js +3 -3
  400. package/dist/lib/runtime/requireLength.d.ts +15 -0
  401. package/dist/lib/runtime/requireLength.js +21 -0
  402. package/dist/lib/runtime/resumableScope.js +4 -4
  403. package/dist/lib/runtime/revivers/functionRefReviver.d.ts +7 -1
  404. package/dist/lib/runtime/revivers/functionRefReviver.js +168 -18
  405. package/dist/lib/runtime/revivers/functionRefReviver.test.js +230 -6
  406. package/dist/lib/runtime/rewind.d.ts +0 -2
  407. package/dist/lib/runtime/rewind.js +3 -4
  408. package/dist/lib/runtime/runBatch.js +22 -5
  409. package/dist/lib/runtime/runBatch.test.js +30 -1
  410. package/dist/lib/runtime/runner.js +33 -13
  411. package/dist/lib/runtime/runner.test.js +80 -0
  412. package/dist/lib/runtime/saveDraftTool.d.ts +8 -6
  413. package/dist/lib/runtime/saveDraftTool.js +12 -10
  414. package/dist/lib/runtime/saveDraftTool.test.js +11 -2
  415. package/dist/lib/runtime/state/checkpointStore.test.js +1 -0
  416. package/dist/lib/runtime/state/context.clock.test.d.ts +1 -0
  417. package/dist/lib/runtime/state/context.clock.test.js +47 -0
  418. package/dist/lib/runtime/state/context.d.ts +15 -0
  419. package/dist/lib/runtime/state/context.js +26 -0
  420. package/dist/lib/runtime/state/globalStore.js +7 -0
  421. package/dist/lib/runtime/state/messageThread.d.ts +60 -1
  422. package/dist/lib/runtime/state/messageThread.js +100 -1
  423. package/dist/lib/runtime/state/messageThread.test.js +98 -0
  424. package/dist/lib/runtime/state/pendingPromiseStore.d.ts +10 -1
  425. package/dist/lib/runtime/state/pendingPromiseStore.js +22 -1
  426. package/dist/lib/runtime/state/pendingPromiseStore.test.js +41 -0
  427. package/dist/lib/runtime/state/schemas.d.ts +3 -0
  428. package/dist/lib/runtime/state/schemas.js +3 -0
  429. package/dist/lib/runtime/state/stateStack.d.ts +59 -0
  430. package/dist/lib/runtime/state/stateStack.executingHandlers.test.d.ts +1 -0
  431. package/dist/lib/runtime/state/stateStack.executingHandlers.test.js +42 -0
  432. package/dist/lib/runtime/state/stateStack.js +97 -0
  433. package/dist/lib/runtime/state/stateStack.tripwire.test.d.ts +1 -0
  434. package/dist/lib/runtime/state/stateStack.tripwire.test.js +47 -0
  435. package/dist/lib/runtime/template/code.d.ts +19 -0
  436. package/dist/lib/runtime/template/code.js +12 -0
  437. package/dist/lib/runtime/template/codeLiteral.d.ts +10 -0
  438. package/dist/lib/runtime/template/codeLiteral.js +40 -0
  439. package/dist/lib/runtime/template/combine.test.d.ts +1 -0
  440. package/dist/lib/runtime/template/combine.test.js +97 -0
  441. package/dist/lib/runtime/template/escaping.test.d.ts +1 -0
  442. package/dist/lib/runtime/template/escaping.test.js +107 -0
  443. package/dist/lib/runtime/template/fill.d.ts +19 -0
  444. package/dist/lib/runtime/template/fill.js +247 -0
  445. package/dist/lib/runtime/template/fill.test.d.ts +1 -0
  446. package/dist/lib/runtime/template/fill.test.js +318 -0
  447. package/dist/lib/runtime/template/hygiene.d.ts +89 -0
  448. package/dist/lib/runtime/template/hygiene.js +426 -0
  449. package/dist/lib/runtime/template/hygiene.test.d.ts +1 -0
  450. package/dist/lib/runtime/template/hygiene.test.js +253 -0
  451. package/dist/lib/runtime/template/lift.d.ts +10 -0
  452. package/dist/lib/runtime/template/lift.js +47 -0
  453. package/dist/lib/runtime/template/literals.d.ts +17 -0
  454. package/dist/lib/runtime/template/literals.js +44 -0
  455. package/dist/lib/runtime/template/origin.d.ts +30 -0
  456. package/dist/lib/runtime/template/origin.js +47 -0
  457. package/dist/lib/runtime/threadRepair.d.ts +76 -5
  458. package/dist/lib/runtime/threadRepair.js +153 -31
  459. package/dist/lib/runtime/threadRepair.test.js +177 -3
  460. package/dist/lib/runtime/toolMessageProvider.test.d.ts +1 -0
  461. package/dist/lib/runtime/toolMessageProvider.test.js +69 -0
  462. package/dist/lib/runtime/trace/eventLog.d.ts +1 -0
  463. package/dist/lib/runtime/trace/eventLog.js +2 -0
  464. package/dist/lib/runtime/trace/eventLog.test.js +29 -25
  465. package/dist/lib/runtime/trace/traceReader.test.js +4 -3
  466. package/dist/lib/runtime/trace/traceWriter.test.js +2 -2
  467. package/dist/lib/runtime/turnBoundary.d.ts +81 -0
  468. package/dist/lib/runtime/turnBoundary.js +89 -0
  469. package/dist/lib/runtime/turnBoundary.test.d.ts +1 -0
  470. package/dist/lib/runtime/turnBoundary.test.js +191 -0
  471. package/dist/lib/runtime/typeTest.d.ts +5 -0
  472. package/dist/lib/runtime/typeTest.js +21 -0
  473. package/dist/lib/runtime/typeTest.test.d.ts +1 -0
  474. package/dist/lib/runtime/typeTest.test.js +43 -0
  475. package/dist/lib/runtime/utils.d.ts +7 -0
  476. package/dist/lib/runtime/utils.js +83 -13
  477. package/dist/lib/runtime/utils.test.js +182 -7
  478. package/dist/lib/runtime/validateChain.d.ts +12 -0
  479. package/dist/lib/runtime/validateChain.js +24 -0
  480. package/dist/lib/runtime/validateChain.test.js +78 -0
  481. package/dist/lib/sourceIsText.test.d.ts +1 -0
  482. package/dist/lib/sourceIsText.test.js +40 -0
  483. package/dist/lib/statelogClient.d.ts +13 -0
  484. package/dist/lib/statelogClient.js +13 -0
  485. package/dist/lib/stdlib/abortable.js +34 -0
  486. package/dist/lib/stdlib/agency.d.ts +27 -0
  487. package/dist/lib/stdlib/agency.js +207 -2
  488. package/dist/lib/stdlib/assertContained.js +3 -4
  489. package/dist/lib/stdlib/builtins.d.ts +20 -0
  490. package/dist/lib/stdlib/builtins.js +57 -6
  491. package/dist/lib/stdlib/cli.d.ts +149 -0
  492. package/dist/lib/stdlib/cli.js +478 -76
  493. package/dist/lib/stdlib/date.d.ts +15 -12
  494. package/dist/lib/stdlib/date.js +131 -122
  495. package/dist/lib/stdlib/expandPath.d.ts +5 -3
  496. package/dist/lib/stdlib/expandPath.js +5 -3
  497. package/dist/lib/stdlib/fs.js +7 -7
  498. package/dist/lib/stdlib/imessage.js +24 -23
  499. package/dist/lib/stdlib/jsonValue.d.ts +5 -0
  500. package/dist/lib/stdlib/jsonValue.js +12 -0
  501. package/dist/lib/stdlib/layout/table.js +22 -4
  502. package/dist/lib/stdlib/memory.d.ts +2 -2
  503. package/dist/lib/stdlib/memory.js +2 -2
  504. package/dist/lib/stdlib/policy.js +1 -1
  505. package/dist/lib/stdlib/resolveDir.d.ts +9 -8
  506. package/dist/lib/stdlib/resolveDir.js +13 -13
  507. package/dist/lib/stdlib/resolvePath.d.ts +8 -16
  508. package/dist/lib/stdlib/resolvePath.js +10 -52
  509. package/dist/lib/stdlib/safeBash.d.ts +1 -0
  510. package/dist/lib/stdlib/safeBash.js +1 -0
  511. package/dist/lib/stdlib/shell.js +15 -14
  512. package/dist/lib/stdlib/skills.d.ts +22 -16
  513. package/dist/lib/stdlib/skills.js +32 -20
  514. package/dist/lib/stdlib/speech.js +3 -3
  515. package/dist/lib/stdlib/statelog.js +1 -1
  516. package/dist/lib/stdlib/system.d.ts +0 -8
  517. package/dist/lib/stdlib/system.js +2 -12
  518. package/dist/lib/stdlib/template.d.ts +32 -0
  519. package/dist/lib/stdlib/template.js +81 -0
  520. package/dist/lib/stdlib/thread.d.ts +13 -0
  521. package/dist/lib/stdlib/thread.js +51 -0
  522. package/dist/lib/symbolTable.d.ts +8 -1
  523. package/dist/lib/symbolTable.js +66 -13
  524. package/dist/lib/symbolTable.test.js +68 -8
  525. package/dist/lib/templates/backends/agency/template.d.ts +2 -1
  526. package/dist/lib/templates/backends/agency/template.js +1 -1
  527. package/dist/lib/templates/backends/typescriptGenerator/blockSetup.d.ts +2 -2
  528. package/dist/lib/templates/backends/typescriptGenerator/blockSetup.js +3 -0
  529. package/dist/lib/templates/backends/typescriptGenerator/forkBlockSetup.d.ts +2 -2
  530. package/dist/lib/templates/backends/typescriptGenerator/forkBlockSetup.js +3 -0
  531. package/dist/lib/templates/backends/typescriptGenerator/imports.d.ts +1 -1
  532. package/dist/lib/templates/backends/typescriptGenerator/imports.js +8 -9
  533. package/dist/lib/typeChecker/assignability.js +74 -5
  534. package/dist/lib/typeChecker/builtinGenerics.js +13 -6
  535. package/dist/lib/typeChecker/builtinGenerics.test.js +13 -1
  536. package/dist/lib/typeChecker/builtinVariables.test.d.ts +1 -0
  537. package/dist/lib/typeChecker/builtinVariables.test.js +53 -0
  538. package/dist/lib/typeChecker/builtins.d.ts +6 -0
  539. package/dist/lib/typeChecker/builtins.js +13 -4
  540. package/dist/lib/typeChecker/callbackCallEffects.test.js +4 -15
  541. package/dist/lib/typeChecker/codeLiteral.test.d.ts +1 -0
  542. package/dist/lib/typeChecker/codeLiteral.test.js +160 -0
  543. package/dist/lib/typeChecker/conflictingMarkers.js +2 -1
  544. package/dist/lib/typeChecker/crossModuleEffectDiagnostics.test.d.ts +1 -0
  545. package/dist/lib/typeChecker/crossModuleEffectDiagnostics.test.js +80 -0
  546. package/dist/lib/typeChecker/definiteReturns.js +7 -0
  547. package/dist/lib/typeChecker/diagnosticExplanations.js +87 -2
  548. package/dist/lib/typeChecker/diagnostics.d.ts +81 -1
  549. package/dist/lib/typeChecker/diagnostics.js +78 -1
  550. package/dist/lib/typeChecker/forkRaceReturnTypes.test.d.ts +1 -0
  551. package/dist/lib/typeChecker/forkRaceReturnTypes.test.js +260 -0
  552. package/dist/lib/typeChecker/handlerParamTyping.d.ts +1 -1
  553. package/dist/lib/typeChecker/handlerParamTyping.js +1 -1
  554. package/dist/lib/typeChecker/holes.test.d.ts +1 -0
  555. package/dist/lib/typeChecker/holes.test.js +75 -0
  556. package/dist/lib/typeChecker/index.js +20 -5
  557. package/dist/lib/typeChecker/inference.js +4 -3
  558. package/dist/lib/typeChecker/interruptAnalysis.d.ts +0 -17
  559. package/dist/lib/typeChecker/interruptAnalysis.js +40 -120
  560. package/dist/lib/typeChecker/matchExhaustiveness.js +64 -2
  561. package/dist/lib/typeChecker/matchExhaustiveness.test.js +71 -0
  562. package/dist/lib/typeChecker/missingImportDiagnostic.js +1 -1
  563. package/dist/lib/typeChecker/narrowing.d.ts +3 -0
  564. package/dist/lib/typeChecker/narrowing.js +23 -1
  565. package/dist/lib/typeChecker/raisesDiagnostic.d.ts +2 -2
  566. package/dist/lib/typeChecker/raisesDiagnostic.js +2 -2
  567. package/dist/lib/typeChecker/resolveType.test.js +92 -1
  568. package/dist/lib/typeChecker/resolveVariable.d.ts +4 -2
  569. package/dist/lib/typeChecker/resolveVariable.js +7 -2
  570. package/dist/lib/typeChecker/scopes.js +36 -4
  571. package/dist/lib/typeChecker/spliceDiagnostics.test.d.ts +1 -0
  572. package/dist/lib/typeChecker/spliceDiagnostics.test.js +67 -0
  573. package/dist/lib/typeChecker/strictMemberAccess.test.js +62 -0
  574. package/dist/lib/typeChecker/synthesizer.d.ts +3 -0
  575. package/dist/lib/typeChecker/synthesizer.js +222 -33
  576. package/dist/lib/typeChecker/templateHoles.d.ts +17 -0
  577. package/dist/lib/typeChecker/templateHoles.js +30 -0
  578. package/dist/lib/typeChecker/testUtils.d.ts +2 -1
  579. package/dist/lib/typeChecker/testUtils.js +3 -3
  580. package/dist/lib/typeChecker/toolArgArrayType.test.d.ts +1 -0
  581. package/dist/lib/typeChecker/toolArgArrayType.test.js +128 -0
  582. package/dist/lib/typeChecker/typePatterns.test.d.ts +1 -0
  583. package/dist/lib/typeChecker/typePatterns.test.js +238 -0
  584. package/dist/lib/typeChecker/undefinedFunctionDiagnostic.js +4 -0
  585. package/dist/lib/typeChecker/undefinedFunctionDiagnostic.test.js +43 -0
  586. package/dist/lib/types/base.d.ts +8 -0
  587. package/dist/lib/types/blockArgument.d.ts +8 -1
  588. package/dist/lib/types/codeLiteral.d.ts +13 -0
  589. package/dist/lib/types/codeLiteral.js +1 -0
  590. package/dist/lib/types/comprehension.d.ts +55 -0
  591. package/dist/lib/types/comprehension.js +32 -0
  592. package/dist/lib/types/function.d.ts +15 -1
  593. package/dist/lib/types/graphNode.d.ts +4 -1
  594. package/dist/lib/types/hole.d.ts +26 -0
  595. package/dist/lib/types/hole.js +18 -0
  596. package/dist/lib/types/importStatement.d.ts +4 -1
  597. package/dist/lib/types/importStatement.js +9 -2
  598. package/dist/lib/types/pattern.d.ts +14 -4
  599. package/dist/lib/types/splice.d.ts +20 -0
  600. package/dist/lib/types/splice.js +1 -0
  601. package/dist/lib/types/typeHints.d.ts +11 -0
  602. package/dist/lib/types.d.ts +15 -3
  603. package/dist/lib/types.js +9 -0
  604. package/dist/lib/utils/agencyTempDir.d.ts +19 -0
  605. package/dist/lib/utils/agencyTempDir.js +26 -0
  606. package/dist/lib/utils/bodySlots.d.ts +17 -1
  607. package/dist/lib/utils/bodySlots.js +33 -4
  608. package/dist/lib/utils/bodySlots.test.js +16 -0
  609. package/dist/lib/utils/docStringText.d.ts +7 -0
  610. package/dist/lib/utils/docStringText.js +7 -0
  611. package/dist/lib/utils/expressionSlots.d.ts +91 -0
  612. package/dist/lib/utils/expressionSlots.js +322 -0
  613. package/dist/lib/utils/expressionSlots.test.d.ts +1 -0
  614. package/dist/lib/utils/expressionSlots.test.js +505 -0
  615. package/dist/lib/utils/holes.d.ts +41 -0
  616. package/dist/lib/utils/holes.js +68 -0
  617. package/dist/lib/utils/identifierSlots.d.ts +71 -0
  618. package/dist/lib/utils/identifierSlots.js +173 -0
  619. package/dist/lib/utils/identifierSlots.test.d.ts +1 -0
  620. package/dist/lib/utils/identifierSlots.test.js +148 -0
  621. package/dist/lib/utils/iteration.d.ts +37 -0
  622. package/dist/lib/utils/iteration.js +9 -0
  623. package/dist/lib/utils/iteration.test.d.ts +1 -0
  624. package/dist/lib/utils/iteration.test.js +26 -0
  625. package/dist/lib/utils/moduleDoc.d.ts +18 -0
  626. package/dist/lib/utils/moduleDoc.js +56 -0
  627. package/dist/lib/utils/node.js +101 -87
  628. package/dist/scripts/agency.js +87 -15
  629. package/dist/scripts/agency.test.js +30 -1
  630. package/package.json +5 -3
  631. package/stdlib/agency/eval.js +38 -14
  632. package/stdlib/agency/local.agency +1 -0
  633. package/stdlib/agency/local.js +41 -10
  634. package/stdlib/agency.agency +173 -357
  635. package/stdlib/agency.js +665 -2502
  636. package/stdlib/agent.agency +1 -0
  637. package/stdlib/agent.js +19 -7
  638. package/stdlib/agents/agency/coding.agency +313 -0
  639. package/stdlib/agents/agency/coding.js +2345 -0
  640. package/stdlib/agents/agency/expert.agency +98 -0
  641. package/stdlib/agents/agency/expert.js +967 -0
  642. package/stdlib/agents/agency/researcher.agency +109 -0
  643. package/stdlib/agents/agency/researcher.js +976 -0
  644. package/stdlib/agents/agency/review.agency +143 -0
  645. package/stdlib/agents/agency/review.js +1602 -0
  646. package/stdlib/agents/agency/verifier.agency +131 -0
  647. package/stdlib/agents/agency/verifier.js +1241 -0
  648. package/stdlib/agents/coding.agency +130 -49
  649. package/stdlib/agents/coding.js +684 -218
  650. package/stdlib/agents/data.agency +150 -0
  651. package/stdlib/agents/data.js +1017 -0
  652. package/stdlib/agents/expert.agency +89 -175
  653. package/stdlib/agents/expert.js +372 -1230
  654. package/stdlib/agents/explorer.agency +199 -0
  655. package/stdlib/agents/explorer.js +1098 -0
  656. package/stdlib/agents/lib/expertGuidance.agency +40 -0
  657. package/stdlib/agents/lib/expertGuidance.js +644 -0
  658. package/stdlib/agents/lib/feedback.agency +89 -0
  659. package/stdlib/agents/lib/feedback.js +1216 -0
  660. package/stdlib/agents/lib/search.agency +65 -0
  661. package/stdlib/agents/lib/search.js +794 -0
  662. package/stdlib/agents/lib/shared.agency +59 -0
  663. package/stdlib/agents/{shared.js → lib/shared.js} +161 -71
  664. package/stdlib/agents/lib/toolkits.agency +198 -0
  665. package/stdlib/agents/lib/toolkits.js +1720 -0
  666. package/stdlib/agents/oracle.agency +172 -0
  667. package/stdlib/agents/oracle.js +1081 -0
  668. package/stdlib/agents/planner.agency +144 -36
  669. package/stdlib/agents/planner.js +807 -265
  670. package/stdlib/agents/researcher.agency +169 -0
  671. package/stdlib/agents/researcher.js +1380 -0
  672. package/stdlib/agents/review.agency +117 -0
  673. package/stdlib/agents/review.js +1040 -0
  674. package/stdlib/agents/skills/coding/gh-auth.md +65 -0
  675. package/stdlib/agents/skills/coding/gh-pr-and-issues.md +150 -0
  676. package/stdlib/agents/skills/coding/gh-repos-and-releases.md +87 -0
  677. package/stdlib/agents/skills/data/finding-identifiers.md +26 -0
  678. package/stdlib/agents/verifier.agency +155 -0
  679. package/stdlib/agents/verifier.js +1247 -0
  680. package/stdlib/args.js +14 -6
  681. package/stdlib/array.agency +1 -0
  682. package/stdlib/array.js +20 -6
  683. package/stdlib/auth/keyring.js +17 -6
  684. package/stdlib/auth/oauth.agency +1 -0
  685. package/stdlib/auth/oauth.js +18 -7
  686. package/stdlib/calendar.js +19 -6
  687. package/stdlib/capabilities.js +12 -6
  688. package/stdlib/clipboard.js +15 -6
  689. package/stdlib/concurrency.agency +52 -0
  690. package/stdlib/concurrency.js +304 -7
  691. package/stdlib/data/finance/dbnomics.js +99 -36
  692. package/stdlib/data/finance/edgar.agency +1 -0
  693. package/stdlib/data/finance/edgar.js +158 -51
  694. package/stdlib/data/finance/fred.agency +1 -0
  695. package/stdlib/data/finance/fred.js +306 -102
  696. package/stdlib/data/finance/gdelt.js +104 -41
  697. package/stdlib/data/people/littlesis.agency +2 -2
  698. package/stdlib/data/people/littlesis.js +443 -150
  699. package/stdlib/data/tech/hackernews.js +574 -189
  700. package/stdlib/data/tech/yc.js +422 -134
  701. package/stdlib/data/usaspending.agency +1 -0
  702. package/stdlib/data/usaspending.js +319 -130
  703. package/stdlib/data/wikidata.js +405 -150
  704. package/stdlib/date.agency +136 -87
  705. package/stdlib/date.js +690 -388
  706. package/stdlib/docs/agent/index.md +105 -0
  707. package/stdlib/docs/agent/mcp.md +134 -0
  708. package/stdlib/docs/agent/memory.md +58 -0
  709. package/stdlib/docs/agent/models.md +85 -0
  710. package/stdlib/docs/agent/project-context.md +28 -0
  711. package/stdlib/docs/cli/editor-integration.md +23 -0
  712. package/stdlib/docs/cli/format.md +2 -0
  713. package/stdlib/docs/cli/lint.md +42 -0
  714. package/stdlib/docs/diagnostics/effects.md +0 -10
  715. package/stdlib/docs/diagnostics/index.md +31 -3
  716. package/stdlib/docs/diagnostics/lint.md +48 -0
  717. package/stdlib/docs/diagnostics/match.md +10 -0
  718. package/stdlib/docs/diagnostics/templates.md +174 -0
  719. package/stdlib/docs/diagnostics/types-aliases.md +10 -0
  720. package/stdlib/docs/guide/basic-syntax.md +27 -2
  721. package/stdlib/docs/guide/builtins.md +13 -0
  722. package/stdlib/docs/guide/comprehensions.md +111 -0
  723. package/stdlib/docs/guide/concurrency.md +4 -2
  724. package/stdlib/docs/guide/handlers.md +32 -2
  725. package/stdlib/docs/guide/llm.md +5 -3
  726. package/stdlib/docs/guide/match-expressions.md +208 -0
  727. package/stdlib/docs/guide/memory.md +3 -3
  728. package/stdlib/docs/guide/partial-results.md +9 -0
  729. package/stdlib/docs/guide/pattern-matching.md +227 -194
  730. package/stdlib/docs/guide/splices.md +94 -0
  731. package/stdlib/docs/guide/state-isolation.md +10 -4
  732. package/stdlib/docs/guide/template-agency.md +381 -0
  733. package/stdlib/docs/guide/ts-helpers.md +26 -0
  734. package/stdlib/docs/guide/type-validation.md +19 -0
  735. package/stdlib/docs/guide/types.md +18 -2
  736. package/stdlib/docs/stdlib/agency/eval.md +513 -0
  737. package/stdlib/docs/stdlib/agency/local.md +319 -0
  738. package/stdlib/docs/stdlib/agency.md +972 -0
  739. package/stdlib/docs/stdlib/agent.md +121 -0
  740. package/stdlib/docs/stdlib/agents/agency/coding.md +118 -0
  741. package/stdlib/docs/stdlib/agents/agency/expert.md +78 -0
  742. package/stdlib/docs/stdlib/agents/agency/researcher.md +75 -0
  743. package/stdlib/docs/stdlib/agents/agency/review.md +96 -0
  744. package/stdlib/docs/stdlib/agents/agency/verifier.md +75 -0
  745. package/stdlib/docs/stdlib/agents/coding.md +81 -0
  746. package/stdlib/docs/stdlib/agents/data.md +75 -0
  747. package/stdlib/docs/stdlib/agents/expert.md +80 -0
  748. package/stdlib/docs/stdlib/agents/explorer.md +81 -0
  749. package/stdlib/docs/stdlib/agents/lib/expertGuidance.md +87 -0
  750. package/stdlib/docs/stdlib/agents/lib/feedback.md +127 -0
  751. package/stdlib/docs/stdlib/agents/lib/search.md +64 -0
  752. package/stdlib/docs/stdlib/agents/lib/shared.md +83 -0
  753. package/stdlib/docs/stdlib/agents/lib/toolkits.md +192 -0
  754. package/stdlib/docs/stdlib/agents/oracle.md +83 -0
  755. package/stdlib/docs/stdlib/agents/planner.md +168 -0
  756. package/stdlib/docs/stdlib/agents/researcher.md +77 -0
  757. package/stdlib/docs/stdlib/agents/review.md +77 -0
  758. package/stdlib/docs/stdlib/agents/verifier.md +77 -0
  759. package/stdlib/docs/stdlib/args.md +235 -0
  760. package/stdlib/docs/stdlib/array.md +11 -0
  761. package/stdlib/docs/stdlib/auth/keyring.md +149 -0
  762. package/stdlib/docs/stdlib/auth/oauth.md +183 -0
  763. package/stdlib/docs/stdlib/calendar.md +279 -0
  764. package/stdlib/docs/stdlib/capabilities.md +193 -0
  765. package/stdlib/docs/stdlib/clipboard.md +71 -0
  766. package/stdlib/docs/stdlib/concurrency.md +94 -0
  767. package/stdlib/docs/stdlib/data/finance/dbnomics.md +112 -0
  768. package/stdlib/docs/stdlib/data/finance/edgar.md +133 -0
  769. package/stdlib/docs/stdlib/data/finance/fred.md +224 -0
  770. package/stdlib/docs/stdlib/data/finance/gdelt.md +99 -0
  771. package/stdlib/docs/stdlib/data/people/littlesis.md +219 -0
  772. package/stdlib/docs/stdlib/data/tech/hackernews.md +219 -0
  773. package/stdlib/docs/stdlib/data/tech/yc.md +206 -0
  774. package/stdlib/docs/stdlib/data/usaspending.md +174 -0
  775. package/stdlib/docs/stdlib/data/wikidata.md +168 -0
  776. package/stdlib/docs/stdlib/date.md +433 -0
  777. package/stdlib/docs/stdlib/fs.md +283 -0
  778. package/stdlib/docs/stdlib/git.md +916 -0
  779. package/stdlib/docs/stdlib/http.md +207 -0
  780. package/stdlib/docs/stdlib/image.md +68 -0
  781. package/stdlib/docs/stdlib/index.md +746 -0
  782. package/stdlib/docs/stdlib/llm.md +260 -0
  783. package/stdlib/docs/stdlib/markdown.md +605 -0
  784. package/stdlib/docs/stdlib/math.md +109 -0
  785. package/stdlib/docs/stdlib/mcp.md +128 -0
  786. package/stdlib/docs/stdlib/memory.md +310 -0
  787. package/stdlib/docs/stdlib/messaging/email.md +226 -0
  788. package/stdlib/docs/stdlib/messaging/imessage.md +69 -0
  789. package/stdlib/docs/stdlib/messaging/sms.md +79 -0
  790. package/stdlib/docs/stdlib/notes/apple.md +428 -0
  791. package/stdlib/docs/stdlib/object.md +195 -0
  792. package/stdlib/docs/stdlib/path.md +165 -0
  793. package/stdlib/docs/stdlib/policy.md +727 -0
  794. package/stdlib/docs/stdlib/safeBash/actions.md +236 -0
  795. package/stdlib/docs/stdlib/safeBash.md +398 -0
  796. package/stdlib/docs/stdlib/shell.md +405 -0
  797. package/stdlib/docs/stdlib/skills.md +239 -0
  798. package/stdlib/docs/stdlib/speech.md +160 -0
  799. package/stdlib/docs/stdlib/statelog.md +249 -0
  800. package/stdlib/docs/stdlib/strategy.md +195 -0
  801. package/stdlib/docs/stdlib/supervise.md +87 -0
  802. package/stdlib/docs/stdlib/syntax.md +295 -0
  803. package/stdlib/docs/stdlib/system.md +293 -0
  804. package/stdlib/docs/stdlib/tag.md +150 -0
  805. package/stdlib/docs/stdlib/thread.md +430 -0
  806. package/stdlib/docs/stdlib/ui/chart.md +147 -0
  807. package/stdlib/docs/stdlib/ui/cli.md +154 -0
  808. package/stdlib/docs/stdlib/ui/layout.md +408 -0
  809. package/stdlib/docs/stdlib/ui/table.md +194 -0
  810. package/stdlib/docs/stdlib/ui.md +883 -0
  811. package/stdlib/docs/stdlib/validation.md +613 -0
  812. package/stdlib/docs/stdlib/weather.md +109 -0
  813. package/stdlib/docs/stdlib/web/browser.md +80 -0
  814. package/stdlib/docs/stdlib/web/search.md +132 -0
  815. package/stdlib/docs/stdlib/wikipedia.md +123 -0
  816. package/stdlib/fs.agency +1 -0
  817. package/stdlib/fs.js +20 -7
  818. package/stdlib/git.agency +1 -0
  819. package/stdlib/git.js +467 -141
  820. package/stdlib/http.js +16 -6
  821. package/stdlib/image.agency +3 -1
  822. package/stdlib/image.js +15 -7
  823. package/stdlib/index.agency +48 -4
  824. package/stdlib/index.js +658 -65
  825. package/stdlib/llm.agency +1 -0
  826. package/stdlib/llm.js +23 -7
  827. package/stdlib/markdown.agency +1 -0
  828. package/stdlib/markdown.js +19 -7
  829. package/stdlib/math.agency +4 -0
  830. package/stdlib/math.js +23 -11
  831. package/stdlib/mcp.agency +6 -6
  832. package/stdlib/mcp.js +24 -11
  833. package/stdlib/memory.agency +1 -0
  834. package/stdlib/memory.js +92 -28
  835. package/stdlib/messaging/email.agency +1 -0
  836. package/stdlib/messaging/email.js +17 -7
  837. package/stdlib/messaging/imessage.js +14 -6
  838. package/stdlib/messaging/sms.js +14 -6
  839. package/stdlib/notes/apple.agency +1 -0
  840. package/stdlib/notes/apple.js +165 -53
  841. package/stdlib/object.js +158 -47
  842. package/stdlib/path.js +20 -6
  843. package/stdlib/policy.agency +25 -3
  844. package/stdlib/policy.js +182 -65
  845. package/stdlib/safeBash/actions.agency +166 -0
  846. package/stdlib/safeBash/actions.js +805 -0
  847. package/stdlib/safeBash.agency +975 -0
  848. package/stdlib/safeBash.js +6955 -0
  849. package/stdlib/shell.agency +9 -4
  850. package/stdlib/shell.js +26 -10
  851. package/stdlib/skills.agency +59 -19
  852. package/stdlib/skills.js +412 -110
  853. package/stdlib/speech.js +16 -6
  854. package/stdlib/statelog.agency +1 -0
  855. package/stdlib/statelog.js +21 -7
  856. package/stdlib/strategy.agency +40 -0
  857. package/stdlib/strategy.js +284 -14
  858. package/stdlib/supervise.agency +116 -0
  859. package/stdlib/supervise.js +501 -0
  860. package/stdlib/syntax.js +17 -6
  861. package/stdlib/system.agency +0 -21
  862. package/stdlib/system.js +26 -113
  863. package/stdlib/tag.js +19 -6
  864. package/stdlib/thread.agency +38 -0
  865. package/stdlib/thread.js +347 -16
  866. package/stdlib/ui/chart.agency +1 -0
  867. package/stdlib/ui/chart.js +54 -25
  868. package/stdlib/ui/cli.agency +35 -0
  869. package/stdlib/ui/cli.js +244 -10
  870. package/stdlib/ui/layout.js +160 -75
  871. package/stdlib/ui/table.agency +1 -0
  872. package/stdlib/ui/table.js +87 -46
  873. package/stdlib/ui.agency +1 -0
  874. package/stdlib/ui.js +560 -253
  875. package/stdlib/validation.agency +38 -0
  876. package/stdlib/validation.js +300 -7
  877. package/stdlib/weather.agency +2 -0
  878. package/stdlib/weather.js +19 -9
  879. package/stdlib/web/browser.js +14 -6
  880. package/stdlib/web/search.js +15 -6
  881. package/stdlib/wikipedia.js +16 -6
  882. package/dist/lib/agents/agency-agent/lib/defaultPolicy.js +0 -1066
  883. package/dist/lib/agents/agency-agent/subagents/verify.agency +0 -58
  884. package/dist/lib/typeChecker/handlerBodyInterrupts.test.js +0 -171
  885. package/stdlib/agents/agency.agency +0 -88
  886. package/stdlib/agents/agency.js +0 -1415
  887. package/stdlib/agents/research.agency +0 -64
  888. package/stdlib/agents/research.js +0 -744
  889. package/stdlib/agents/shared.agency +0 -21
  890. /package/dist/lib/{typeChecker/handlerBodyInterrupts.test.d.ts → analysis/effectPropagation.test.d.ts} +0 -0
@@ -3,7 +3,6 @@ import { parseArgs } from "std::args"
3
3
  import { map } from "std::array"
4
4
  import { today } from "std::date"
5
5
  import { generateImage } from "std::image"
6
- import { applyAgentCwd, setAgentCwd } from "std::index"
7
6
  import { listHostedModels, hostedModelInfo, setLlmOptions } from "std::llm"
8
7
  import { setMemoryId, disableMemory } from "std::memory"
9
8
  import { basename, dirname } from "std::path"
@@ -49,6 +48,14 @@ import {
49
48
  HISTORY_PATH,
50
49
  ALWAYS_FIELDS,
51
50
  } from "./lib/config.agency"
51
+ import {
52
+ runTurn,
53
+ setGroundingContext,
54
+ loadAgentsMd,
55
+ maybeEnableMemory,
56
+ checkMainPrompts,
57
+ START_AGENTS,
58
+ } from "./lib/coordinator.agency"
52
59
  import { getHeader } from "./lib/header.agency"
53
60
  import { generateImageFile } from "./lib/images.agency"
54
61
  import { getMcpTools, maybeLoadMcp, mcpSlashCommand } from "./lib/mcp.agency"
@@ -65,6 +72,7 @@ import {
65
72
  printPolicyHelp,
66
73
  getPolicyForAgent,
67
74
  } from "./lib/policy.agency"
75
+ import { startInteractive, renderAgentResponse } from "./lib/repl.agency"
68
76
  import {
69
77
  buildLayers,
70
78
  resolveAll,
@@ -94,6 +102,7 @@ import {
94
102
  saveSettings,
95
103
  } from "./lib/settings.agency"
96
104
  import { SLOTS } from "./lib/slots.agency"
105
+ import { setDebug, setVerbose, setInteractive } from "./lib/trace.agency"
97
106
  import {
98
107
  truncate,
99
108
  formatArgs,
@@ -137,500 +146,24 @@ import { reviewAgent } from "./subagents/review.agency"
137
146
  //
138
147
  //import { clearMessages, pushMessage, repl } from "std::ui"
139
148
 
140
- /*
141
- * Agency Agent helps users create and modify Agency code.
142
- *
143
- * Multi-thread architecture: the coordinator (`mainAgent`) runs the
144
- * user's message with the specialists registered as tools. Each
145
- * specialist has its own thread / system prompt / tool set, and the
146
- * coordinator's LLM delegates by calling one as a tool and getting its
147
- * reply back (call/return — not a flat hop/handoff loop):
148
- * - `code.agency` — writes, edits, typechecks, runs code
149
- * - `research.agency` — looks up docs, fetches URLs, browses web
150
- * - `review.agency` — parse/typecheck feedback on Agency code
151
- * - `oracle.agency` — read-only critique on a stronger model
152
- * - `explorer.agency` — read-only broad codebase/docs synthesis
153
- *
154
- * The standard library does the heavy lifting:
155
- * - `std::policy.cliPolicyHandler` provides the interactive
156
- * approve/reject/always menu and persists "always" decisions to
157
- * `~/.agency-agent/policy.json`.
158
- * - `std::ui.repl` provides the terminal UI: a bordered scroll
159
- * output area, status line (cost + label), command palette
160
- * opened with `/`, and history-aware input bar.
161
- *
162
- * This file's responsibilities collapse to:
163
- * 1. Per-turn callback (`_runTurn`) wiring the user message into
164
- * `mainAgent` and printing the reply into the scroll output.
165
- * 2. Per-effect ALWAYS_FIELDS map for the policy handler's
166
- * "approve-always-here" option.
167
- * 3. Wire the specialists into `mainAgentTools`.
168
- *
169
- * Other features:
170
- * - Doc-as-skills: bundles `docs/site/guide` etc. (copied to
171
- * `dist/lib/agents/docs/` at build time, see makefile) and
172
- * exposes each Markdown file as a skill the research agent can
173
- * read on demand.
174
- * - Typechecking: the code agent can call `typecheck` on any
175
- * source it generates to verify the code before showing it.
176
- * - File I/O tools: `read`, `write`, `edit` for actually creating /
177
- * editing `.agency` files.
178
- */
179
-
180
- let AGENT_DEBUG: boolean = env("AGENT_DEBUG") == "1"
181
- let VERBOSE: boolean = false
182
-
183
- // Whether the agent is running in interactive (TTY) mode.
184
- let _isInteractive: boolean = true
185
-
186
- // The `--policy` argument (a built-in name or a policy-file path),
187
- // or "" when absent
149
+ // The `--policy` argument (a built-in name or a policy-file path), or "" when
150
+ // absent. CLI-owned: main() sets it, setupSession() reads it.
188
151
  let _policyArg: string = ""
189
152
 
190
- // Live tool-call tracing. Always shown in the interactive REPL, but in
191
- // one-shot mode it's suppressed unless the user opts in
192
- // with `--verbose` / `--debug` (AGENT_DEBUG). A function, not a static
193
- // const: it reads globals that `main()` sets after module init, so the
194
- // value must be computed per call.
195
- def _showTraces(): boolean {
196
- return _isInteractive || VERBOSE || AGENT_DEBUG
197
- }
198
-
199
- /**************************
200
- **** CALLBACKS / HOOKS ****
201
- ***************************/
202
-
203
- callback("onToolCallStart") as data {
204
- if (_showTraces()) {
205
- pushMessage(color.yellow("⏺ ${data.toolName}(${formatArgs(data.args)})"))
206
- }
207
- }
208
-
209
- callback("onToolCallEnd") as data {
210
- if (_showTraces()) {
211
- if (data.result is success(_result)) {
212
- pushMessage(color.dim.green("${formatToolResponse(_result)}"))
213
- } else if (data.result is failure(_error)) {
214
- pushMessage(color.red(" ⎿ Error: ${_error}"))
215
- } else {
216
- pushMessage(color.dim("${formatToolResponse(data.result)}"))
217
- }
218
- }
219
- }
220
153
 
221
- callback("onLLMCallStart") as data {
222
- if (AGENT_DEBUG || VERBOSE) {
223
- pushMessage(color.green.dim("💬 [${data.model}] ${data.prompt}"))
224
- }
225
- }
226
-
227
- callback("onLLMCallEnd") as data {
228
- if (data.result.hostedToolResults) {
229
- for (result in data.result.hostedToolResults) {
230
- match(result.tool) {
231
- "web_search" => {
232
- const queries = map(result.queries, \q -> "\"${q}\"").join(", ")
233
- // there's also result.sources and result.citations
234
- pushMessage(
235
- color.yellow(
236
- "⏺ web_search(provider: '${result.provider}', queries: [${queries}])",
237
- ),
238
- )
239
- }
240
- }
241
- }
242
- }
243
- if (AGENT_DEBUG || VERBOSE) {
244
- pushMessage(
245
- color.green.dim("💬 [${data.model}] ${renderLLMCallResponse(data.result)}"),
246
- )
247
- }
248
- }
249
-
250
- callback("onLLMRetry") as data {
251
- if (_showTraces()) {
252
- pushMessage(
253
- color.dim(
254
- "⟳ ${retryReasonLabel(data.reason)} — retrying (${data.attempt}/${data.maxRetries})…",
255
- ),
256
- )
257
- }
258
- }
259
-
260
- def loadAgentsMd(dir: string): string {
261
- """
262
- Read `AGENTS.md` from `dir` if it exists and return it wrapped in a
263
- <project_context> block ready to splice into a system prompt. Returns
264
- an empty string if there is no AGENTS.md or it cannot be read.
265
- """
266
- if (!exists("AGENTS.md", dir)) {
267
- return ""
268
- }
269
- const result = read("AGENTS.md", dir) with approve
270
- if (isFailure(result)) {
271
- return ""
272
- }
273
- return """
274
-
275
- <project_context>
276
- ${result.value}
277
- </project_context>
278
- """
279
- }
280
-
281
- // Per-turn grounding context. Captured at startup and re-used so the
282
- // LLM doesn't have to re-ground each turn.
283
- let _context: string = ""
284
-
285
- // In-session model selection state (the pin + per-slot overrides chosen via
286
- // `/model` this run). `switchModel` is pure over this value — it copies,
287
- // never mutates — so the REPL folds its return back in here.
288
- let _session: Session = {
289
- pin: "",
290
- slots: {}
291
- }
292
-
293
- def searchSlashCommand(): boolean {
294
- const opts = availableBackendItems()
295
- const choice = chooseOption(
296
- "Web search backend",
297
- "Pick how this agent searches the web. Current: ${getSearchBackend()}",
298
- opts,
299
- false,
300
- true,
301
- )
302
- if (choice != "" && choice != null && choice != undefined) {
303
- setSearchBackend(choice)
304
- pushMessage("Web search backend set to: ${choice}")
305
- }
306
- return true
307
- }
308
-
309
- def costSlashCommand(): boolean {
310
- // Derive BOTH the header total and the per-model breakdown from the
311
- // same process-wide accumulator (getModelCosts), so the `Cost:` /
312
- // `Tokens:` lines and the rows below them can never visibly disagree.
313
- // (getCost()/getTokens() read the per-branch accumulator, a different
314
- // scope — adjacent in the output, they could in principle diverge.)
315
- // Rows are sorted by cost descending by getModelCosts(); a subagent
316
- // on a pricier model (e.g. the oracle on opus-4.8) shows up here.
317
- const byModel = getModelCosts()
318
- let totalCost = 0.0
319
- let totalTokens = 0
320
- for (m in byModel) {
321
- totalCost = totalCost + m.cost
322
- totalTokens = totalTokens + m.inputTokens + m.outputTokens
323
- }
324
- pushMessage("Cost: $${totalCost.toFixed(4)}")
325
- pushMessage("Tokens: ${totalTokens}")
326
- if (byModel.length > 0) {
327
- pushMessage("")
328
- pushMessage("By model:")
329
- for (m in byModel) {
330
- pushMessage(
331
- " ${m.model} ↑${m.inputTokens} ↓${m.outputTokens} $${m.cost.toFixed(4)}",
332
- )
333
- }
334
- }
335
- return true
336
- }
337
-
338
- def modelSlashCommand(): boolean {
339
- let spec = ""
340
- if (trimmed != "/model") {
341
- spec = trimmed.substring(7).trim()
342
- }
343
- if (spec == "") {
344
- pushMessage("Current models:")
345
- const current = getResolvedSlots()
346
- for (slot in Object.keys(current)) {
347
- const resolved = current[slot]
348
- if (resolved != null) {
349
- pushMessage(" ${slot}: ${resolved.model} (${resolved.via})")
350
- }
351
- }
352
- const items = modelChoiceItems({})
353
- const choice = chooseOption(
354
- "Model",
355
- "Pick a model, or type one (or slot=model, e.g. reasoning=claude-opus-4-8). Empty to cancel.",
356
- items,
357
- allowFreeText: true,
358
- allowCancel: true,
359
- )
360
- if (choice == "" || choice == null) {
361
- return true
362
- }
363
- spec = choice
364
- }
365
- const ctx: Ctx = {
366
- provider: currentProvider(),
367
- price: "standard"
368
- }
369
- const out = switchModel(_session, spec, ctx, getResolvedSlots())
370
- _session = out.session
371
- for (change in out.changes) {
372
- reactToSlotChange(change)
373
- }
374
- pushMessage("Model set:")
375
- for (slot in Object.keys(out.resolved)) {
376
- const resolved = out.resolved[slot]
377
- if (resolved != null) {
378
- pushMessage(color.dim(" ${slot}: ${resolved.model} (${resolved.via})"))
379
- }
380
- }
381
- return true
382
- }
383
-
384
- def modelsSlashCommand(trimmed: string): boolean {
385
- const filters = parseModelsFilters(trimmed)
386
- const models = filterHostedModels(listHostedModels(), filters)
387
- if (models.length == 0) {
388
- pushMessage("No models match.")
389
- return true
390
- }
391
- for (model in models) {
392
- pushMessage(
393
- " ${model.name} (${model.provider}, $${model.inputCost}/1M in, ${model.contextWindow} ctx)",
394
- )
395
- }
396
- return true
397
- }
398
-
399
- def localSlashCommand(): boolean {
400
- if (!localModelsSupported()) {
401
- pushMessage(
402
- color.yellow(
403
- "Local models need smoltalk-llama-cpp. Install: ! npm i -g smoltalk-llama-cpp",
404
- ),
405
- )
406
- return true
407
- }
408
- let items: ChoiceItem[] = []
409
- for (modelName in listModelNames()) {
410
- items.push({
411
- key: modelName.name,
412
- label: modelName.name
413
- })
414
- }
415
- const choice = chooseOption(
416
- "Local model",
417
- "Pick a local model, or type an hf: URI / .gguf path (downloads on first use):",
418
- items,
419
- allowFreeText: true,
420
- allowCancel: true,
421
- )
422
- if (choice == "" || choice == null) {
423
- return true
424
- }
425
- const before = getResolvedSlots()
426
- configureLocalModel(choice)
427
- configureSearch(true)
428
- for (change in diffResolved(before, getResolvedSlots())) {
429
- reactToSlotChange(change)
430
- }
431
- pushMessage("Switched to local model: ${choice}")
432
- return true
433
- }
434
-
435
- // Slash-command + user-message dispatcher invoked by `repl()` for
436
- // every Enter keystroke. Return `false` to terminate the loop.
437
- def _runTurn(msg: string): boolean {
438
- // Trim once for built-in matching so `"/help\n"` (piped) or
439
- // `" /clear"` behave the same as `"/clear"`. `expandSlash` is
440
- // whitespace-tolerant in its own right, but it still receives the
441
- // raw `msg` so the LLM sees the exact text the user typed when
442
- // nothing matches.
443
- const trimmed = msg.trim()
444
- return match(trimmed) {
445
- "" => true
446
- "/exit" => false
447
- "/quit" => false
448
- "/clear" => {
449
- clearMessages()
450
- return true
451
- }
452
- "/clear-history" => {
453
- clearHistory()
454
- pushMessage("Input history cleared.")
455
- return true
456
- }
457
- "/help" => {
458
- pushMessage(
459
- "Commands: /exit, /clear, /clear-history, /cost, /model, /models, /local, /search, /settings, /mcp, /paste, /help",
460
- )
461
- return true
462
- }
463
- "/settings" => {
464
- showCapabilities()
465
- editCapabilities()
466
- return true
467
- }
468
- "/mcp" => mcpSlashCommand()
469
- "/search" => searchSlashCommand()
470
- "/cost" => costSlashCommand()
471
- "/model" => modelSlashCommand()
472
- "/models" => modelsSlashCommand(trimmed)
473
- "/local" => localSlashCommand()
474
- _ => {
475
- if (trimmed.startsWith("/model ")) {
476
- return modelSlashCommand()
477
- }
478
- if (trimmed.startsWith("/models ")) {
479
- return modelsSlashCommand(trimmed)
480
- }
481
- return renderUserTurn(trimmed, msg)
482
- }
483
- }
484
- }
485
-
486
- let first = true
487
-
488
- // Valid `--agent` targets. Empty / "main" routes through the coordinator.
489
- static const START_AGENTS = ["main", "code", "research", "oracle", "explorer", "review"]
490
- static const MAIN_PROMPT_LARGE = read("prompts/main-large.md") with approve
491
- static const MAIN_PROMPT_SMALL = read("prompts/main-small.md") with approve
492
-
493
- static const mainAgentTools = [
494
- researchAgent,
495
- codeAgent,
496
- reviewAgent,
497
- oracleAgent,
498
- explorerAgent,
499
- generateImageFile,
500
- ]
501
-
502
- /** Enable memory when the capability profile allows it. When the user
503
- pointed the embedding slot at a provider, embeddings run there. A
504
- missing API key degrades to the default embedding behavior with one
505
- notice. It never blocks startup. The `_memoryEmbeddingsPinned` guard that
506
- `reactToSlotChange` consults lives in `./lib/session.agency`; we set it
507
- here via `markMemoryEmbeddingsPinned`. */
508
- def maybeEnableMemory() {
509
- const status = embeddingKeyStatus(getResolvedSlots())
510
- const plan = memoryEnablePlan(getCapabilities().memory, status)
511
- markMemoryEmbeddingsPinned(plan == "enable-override")
512
- return match(plan) {
513
- "skip" => null
514
- "enable-override" => {
515
- enableAgentMemory(status.override)
516
- return null
517
- }
518
- "enable-fallback" => {
519
- print(
520
- color.dim(
521
- "Memory: the embedding slot needs ${status.varName}, which is not set. Falling back to the default embedding behavior.",
522
- ),
523
- )
524
- enableAgentMemory()
525
- return null
526
- }
527
- _ => {
528
- enableAgentMemory()
529
- return null
530
- }
531
- }
532
- }
533
-
534
- def mainAgent(prompt: string | (string | Attachment)[]): string {
535
- // const doSummarize = getCapabilities().summarize
536
- thread(label: "main", session: "main") {
537
- setMemoryId("main")
538
- if (first) {
539
- const promptSize = getCapabilities().prompt
540
- const sysPrompt = match(promptSize) {
541
- "small" => MAIN_PROMPT_SMALL catch ""
542
- _ => MAIN_PROMPT_LARGE catch ""
543
- }
544
- systemMessage("${sysPrompt}${_context}")
545
- first = false
546
- }
547
- const result = llm(
548
- prompt,
549
- {
550
- memory: true,
551
- tools: [...mainAgentTools, ...getMcpTools()]
552
- },
553
- )
554
- }
555
- return result
556
- }
557
-
558
- def checkForAttachments(expanded: string): Attachment[] {
559
- // Auto-attach image/PDF files the user referenced (drag-drop or typed
560
- // path), filtered to what the resolved model accepts. Never silent:
561
- // every attach and every skip prints a visible line.
562
- const detected = modalityFilter(detectAttachments(expanded))
563
- for (skippedFile in detected.skipped) {
564
- pushMessage(
565
- color.yellow("📎 skipped ${skippedFile.label} (${skippedFile.reason})"),
566
- )
567
- }
568
- if (detected.attached.length == 0) {
569
- return []
570
- }
571
- for (item in detected.attached) {
572
- pushMessage(color.dim("📎 attached ${item.label}"))
573
- }
574
- const attachments = map(detected.attached) as item {
575
- return item.attachment
576
- }
577
- return attachments
578
- }
579
-
580
- type AgentTarget =
581
- | "code"
582
- | "explorer"
583
- | "main"
584
- | "oracle"
585
- | "research"
586
- | "review"
587
- | "coordinator"
588
-
589
- export def dispatchAgent(agentName: AgentTarget, userMsg: string): string {
590
- const expanded = expandSlash(userMsg, projectCommands)
591
- return match(agentName) {
592
- "code" => codeAgent(expanded)
593
- "research" => researchAgent(expanded)
594
- "oracle" => oracleAgent(expanded)
595
- "explorer" => explorerAgent(expanded)
596
- "review" => reviewAgent(expanded)
597
- _ => {
598
- const attachments = checkForAttachments(expanded)
599
- return mainAgent([expanded, ...attachments])
600
- }
601
- }
602
- }
603
-
604
- def renderUserTurn(trimmed: string, msg: string): boolean {
605
- const result = try dispatchAgent("coordinator", msg)
606
- renderAgentResponse(result)
607
- return true
608
- }
609
-
610
- def _buildStatus(): { left: string; right: string; context: string } {
611
- const roundedCost = "$${getCost().toFixed(4)}"
612
- return {
613
- left: "",
614
- right: roundedCost,
615
- context: ""
616
- }
617
- }
618
-
619
- // Shared session setup for both interactive and one-shot modes. Builds
620
- // the grounding context, loads (or initializes) the policy, and
621
- // returns the installed CLI policy handler.
622
154
  def setupSession(interactive: boolean): any {
623
155
  setAgentCwd(cwd())
624
156
 
625
157
  // Grounding: the LLM shouldn't have to ask where it is or what day it
626
158
  // is. Also load `AGENTS.md` if present.
627
159
  const projectContext = loadAgentsMd(cwd()) with approve
628
- _context = """
160
+ const grounding = """
629
161
 
630
162
  Current date: ${today()}
631
163
  Current working directory: ${cwd()}
632
164
  ${projectContext}
633
165
  """
166
+ setGroundingContext(grounding)
634
167
 
635
168
  const { policyFile, sessionPolicy } = getPolicyForAgent(_policyArg, interactive)
636
169
 
@@ -642,10 +175,10 @@ def setupSession(interactive: boolean): any {
642
175
  }
643
176
 
644
177
  def oneShotAgent(target: string, prompt: string): string {
645
- _isInteractive = false
178
+ setInteractive(false)
646
179
  const handler = setupSession(interactive: false)
647
180
  handle {
648
- const result = try dispatchAgent(target, prompt)
181
+ const result = try runTurn(target, prompt)
649
182
  return match(result) {
650
183
  success(r) => r
651
184
  failure(f) => formatTurnFailure("${f.error}")
@@ -656,42 +189,6 @@ def oneShotAgent(target: string, prompt: string): string {
656
189
  /* A seeded turn is if the user invokes the Agency agent with
657
190
  an initial prompt – by using the agency doctor command, for example.
658
191
  It means that agent starts with an initial prompt already there to respond to. */
659
- def runSeedTurn(target: string, msg: string) {
660
- pushMessage(color.dim("> ${msg}"))
661
- const response = try dispatchAgent(target, msg)
662
- renderAgentResponse(response)
663
- }
664
-
665
- def renderAgentResponse(
666
- response: Result<string | null, { error: string }>,
667
- ): void {
668
- if (response is success(reply)) {
669
- if (reply != "" && reply != null) {
670
- pushMessage(highlight("${reply}\n", language: "markdown"))
671
- } else {
672
- pushMessage(color.red("No reply generated."))
673
- }
674
- } else if (response is failure(f)) {
675
- pushMessage(color.red(formatTurnFailure("${f.error}")))
676
- }
677
- }
678
-
679
- def startInteractive(handler: any, seedTarget: string, seedPrompt: string) {
680
- handle {
681
- if (seedPrompt != "") {
682
- runSeedTurn(seedTarget, seedPrompt)
683
- }
684
- repl(
685
- status: _buildStatus,
686
- onSubmit: _runTurn,
687
- prompt: "> ",
688
- historyFile: HISTORY_PATH,
689
- historyMax: 1000,
690
- paletteCommands: mergedPalette(),
691
- )
692
- } with handler
693
- print(color.cyan("\nGoodbye!"))
694
- }
695
192
 
696
193
  node main() {
697
194
  // Parse CLI flags first — `parseArgs` exits on --help / --version /
@@ -705,25 +202,13 @@ node main() {
705
202
  // last).
706
203
 
707
204
  if (args.flags.debug) {
708
- AGENT_DEBUG = true
205
+ setDebug(true)
709
206
  }
710
207
  if (args.flags.verbose) {
711
- VERBOSE = true
208
+ setVerbose(true)
712
209
  }
713
210
 
714
- if (isFailure(MAIN_PROMPT_LARGE)) {
715
- print(
716
- color.red("Failed to read prompts/main-large.md: ${MAIN_PROMPT_LARGE.error}"),
717
- )
718
- process.exit(1)
719
- }
720
-
721
- if (isFailure(MAIN_PROMPT_SMALL)) {
722
- print(
723
- color.red("Failed to read prompts/main-small.md: ${MAIN_PROMPT_SMALL.error}"),
724
- )
725
- process.exit(1)
726
- }
211
+ checkMainPrompts()
727
212
 
728
213
  // `--policy` is an optional-value flag: a bare `--policy` (no name or
729
214
  // path) prints the usage + the built-in policies and exits, rather than