@armadra/agent 0.0.0-stage → 0.3.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 (433) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/LICENSE +21 -0
  3. package/README.md +470 -2
  4. package/dist/agent/agent.d.ts +56 -0
  5. package/dist/agent/agent.js +129 -0
  6. package/dist/agent/loop.d.ts +51 -0
  7. package/dist/agent/loop.js +158 -0
  8. package/dist/agent/queue.d.ts +25 -0
  9. package/dist/agent/queue.js +55 -0
  10. package/dist/agent/retry.d.ts +22 -0
  11. package/dist/agent/retry.js +92 -0
  12. package/dist/agent/schema.d.ts +27 -0
  13. package/dist/agent/schema.js +186 -0
  14. package/dist/agent/session-cache.d.ts +100 -0
  15. package/dist/agent/session-cache.js +514 -0
  16. package/dist/agent/session-compaction.d.ts +49 -0
  17. package/dist/agent/session-compaction.js +251 -0
  18. package/dist/agent/session-core.d.ts +103 -0
  19. package/dist/agent/session-core.js +7 -0
  20. package/dist/agent/session-run.d.ts +55 -0
  21. package/dist/agent/session-run.js +246 -0
  22. package/dist/agent/session-state.d.ts +39 -0
  23. package/dist/agent/session-state.js +119 -0
  24. package/dist/agent/session-subagent.d.ts +54 -0
  25. package/dist/agent/session-subagent.js +157 -0
  26. package/dist/agent/session-sync.d.ts +20 -0
  27. package/dist/agent/session-sync.js +111 -0
  28. package/dist/agent/session-tools.d.ts +24 -0
  29. package/dist/agent/session-tools.js +277 -0
  30. package/dist/agent/session.d.ts +117 -0
  31. package/dist/agent/session.js +485 -0
  32. package/dist/agent/system-prompt.d.ts +49 -0
  33. package/dist/agent/system-prompt.js +121 -0
  34. package/dist/agent/tool-runner.d.ts +64 -0
  35. package/dist/agent/tool-runner.js +309 -0
  36. package/dist/agent/transform.d.ts +26 -0
  37. package/dist/agent/transform.js +171 -0
  38. package/dist/agent/types.d.ts +378 -0
  39. package/dist/agent/types.js +21 -0
  40. package/dist/ai/apis/anthropic-messages.d.ts +26 -0
  41. package/dist/ai/apis/anthropic-messages.js +214 -0
  42. package/dist/ai/apis/anthropic-request.d.ts +42 -0
  43. package/dist/ai/apis/anthropic-request.js +282 -0
  44. package/dist/ai/apis/api.d.ts +28 -0
  45. package/dist/ai/apis/api.js +102 -0
  46. package/dist/ai/apis/cache-params.d.ts +48 -0
  47. package/dist/ai/apis/cache-params.js +163 -0
  48. package/dist/ai/apis/google-generative-ai.d.ts +32 -0
  49. package/dist/ai/apis/google-generative-ai.js +249 -0
  50. package/dist/ai/apis/google-request.d.ts +40 -0
  51. package/dist/ai/apis/google-request.js +255 -0
  52. package/dist/ai/apis/openai-compat.d.ts +35 -0
  53. package/dist/ai/apis/openai-compat.js +142 -0
  54. package/dist/ai/apis/openai-completions.d.ts +28 -0
  55. package/dist/ai/apis/openai-completions.js +246 -0
  56. package/dist/ai/apis/openai-request.d.ts +35 -0
  57. package/dist/ai/apis/openai-request.js +303 -0
  58. package/dist/ai/apis/openai-responses-request.d.ts +52 -0
  59. package/dist/ai/apis/openai-responses-request.js +266 -0
  60. package/dist/ai/apis/openai-responses.d.ts +28 -0
  61. package/dist/ai/apis/openai-responses.js +304 -0
  62. package/dist/ai/apis/shared.d.ts +56 -0
  63. package/dist/ai/apis/shared.js +179 -0
  64. package/dist/ai/cache/economics.d.ts +24 -0
  65. package/dist/ai/cache/economics.js +69 -0
  66. package/dist/ai/cache/fingerprint.d.ts +17 -0
  67. package/dist/ai/cache/fingerprint.js +39 -0
  68. package/dist/ai/cache/miss.d.ts +49 -0
  69. package/dist/ai/cache/miss.js +96 -0
  70. package/dist/ai/cache/reporting.d.ts +39 -0
  71. package/dist/ai/cache/reporting.js +103 -0
  72. package/dist/ai/cache/types.d.ts +94 -0
  73. package/dist/ai/cache/types.js +19 -0
  74. package/dist/ai/cache/warmer.d.ts +94 -0
  75. package/dist/ai/cache/warmer.js +224 -0
  76. package/dist/ai/context.d.ts +35 -0
  77. package/dist/ai/context.js +114 -0
  78. package/dist/ai/cost.d.ts +21 -0
  79. package/dist/ai/cost.js +60 -0
  80. package/dist/ai/event-stream.d.ts +33 -0
  81. package/dist/ai/event-stream.js +101 -0
  82. package/dist/ai/fake/fake-provider.d.ts +68 -0
  83. package/dist/ai/fake/fake-provider.js +278 -0
  84. package/dist/ai/fake/fake-script.d.ts +69 -0
  85. package/dist/ai/fake/fake-script.js +142 -0
  86. package/dist/ai/http.d.ts +54 -0
  87. package/dist/ai/http.js +212 -0
  88. package/dist/ai/json-partial.d.ts +17 -0
  89. package/dist/ai/json-partial.js +243 -0
  90. package/dist/ai/overflow.d.ts +22 -0
  91. package/dist/ai/overflow.js +61 -0
  92. package/dist/ai/providers/auth.d.ts +71 -0
  93. package/dist/ai/providers/auth.js +202 -0
  94. package/dist/ai/providers/builtin.d.ts +23 -0
  95. package/dist/ai/providers/builtin.js +148 -0
  96. package/dist/ai/providers/catalog-data.d.ts +5 -0
  97. package/dist/ai/providers/catalog-data.js +19 -0
  98. package/dist/ai/providers/catalog.d.ts +28 -0
  99. package/dist/ai/providers/catalog.js +166 -0
  100. package/dist/ai/providers/channels.d.ts +51 -0
  101. package/dist/ai/providers/channels.js +96 -0
  102. package/dist/ai/providers/enrich.d.ts +34 -0
  103. package/dist/ai/providers/enrich.js +86 -0
  104. package/dist/ai/providers/models-dev-cache.d.ts +53 -0
  105. package/dist/ai/providers/models-dev-cache.js +147 -0
  106. package/dist/ai/providers/models-dev.d.ts +99 -0
  107. package/dist/ai/providers/models-dev.js +315 -0
  108. package/dist/ai/providers/registry.d.ts +114 -0
  109. package/dist/ai/providers/registry.js +458 -0
  110. package/dist/ai/sse.d.ts +32 -0
  111. package/dist/ai/sse.js +140 -0
  112. package/dist/ai/thinking.d.ts +42 -0
  113. package/dist/ai/thinking.js +101 -0
  114. package/dist/ai/types.d.ts +448 -0
  115. package/dist/ai/types.js +19 -0
  116. package/dist/bundle/ama-sandbox.cjs +324 -0
  117. package/dist/bundle/ama.cjs +27837 -0
  118. package/dist/bundle.d.ts +9 -0
  119. package/dist/bundle.js +15 -0
  120. package/dist/cli/args.d.ts +85 -0
  121. package/dist/cli/args.js +408 -0
  122. package/dist/cli/bootstrap.d.ts +18 -0
  123. package/dist/cli/bootstrap.js +399 -0
  124. package/dist/cli/compose-providers.d.ts +37 -0
  125. package/dist/cli/compose-providers.js +107 -0
  126. package/dist/cli/compose-session.d.ts +72 -0
  127. package/dist/cli/compose-session.js +370 -0
  128. package/dist/cli/compose-store.d.ts +24 -0
  129. package/dist/cli/compose-store.js +125 -0
  130. package/dist/cli/compose.d.ts +108 -0
  131. package/dist/cli/compose.js +221 -0
  132. package/dist/cli/default-model.d.ts +16 -0
  133. package/dist/cli/default-model.js +24 -0
  134. package/dist/cli/deps.d.ts +207 -0
  135. package/dist/cli/deps.js +12 -0
  136. package/dist/cli/exit-codes.d.ts +29 -0
  137. package/dist/cli/exit-codes.js +40 -0
  138. package/dist/cli/main.d.ts +27 -0
  139. package/dist/cli/main.js +177 -0
  140. package/dist/cli/runtime.d.ts +90 -0
  141. package/dist/cli/runtime.js +8 -0
  142. package/dist/cli/startup-screen.d.ts +15 -0
  143. package/dist/cli/startup-screen.js +56 -0
  144. package/dist/cli/startup-steps.d.ts +35 -0
  145. package/dist/cli/startup-steps.js +202 -0
  146. package/dist/cli/subcommands/auth.d.ts +12 -0
  147. package/dist/cli/subcommands/auth.js +91 -0
  148. package/dist/cli/subcommands/config.d.ts +53 -0
  149. package/dist/cli/subcommands/config.js +277 -0
  150. package/dist/cli/subcommands/context.d.ts +21 -0
  151. package/dist/cli/subcommands/context.js +42 -0
  152. package/dist/cli/subcommands/doctor.d.ts +11 -0
  153. package/dist/cli/subcommands/doctor.js +246 -0
  154. package/dist/cli/subcommands/init.d.ts +6 -0
  155. package/dist/cli/subcommands/init.js +22 -0
  156. package/dist/cli/subcommands/model-meta.d.ts +16 -0
  157. package/dist/cli/subcommands/model-meta.js +54 -0
  158. package/dist/cli/subcommands/models-cache-probe.d.ts +34 -0
  159. package/dist/cli/subcommands/models-cache-probe.js +190 -0
  160. package/dist/cli/subcommands/models-discover.d.ts +46 -0
  161. package/dist/cli/subcommands/models-discover.js +232 -0
  162. package/dist/cli/subcommands/models.d.ts +40 -0
  163. package/dist/cli/subcommands/models.js +152 -0
  164. package/dist/cli/subcommands/providers-list.d.ts +8 -0
  165. package/dist/cli/subcommands/providers-list.js +97 -0
  166. package/dist/cli/subcommands/providers-plan.d.ts +79 -0
  167. package/dist/cli/subcommands/providers-plan.js +215 -0
  168. package/dist/cli/subcommands/providers.d.ts +27 -0
  169. package/dist/cli/subcommands/providers.js +433 -0
  170. package/dist/cli/subcommands/sessions.d.ts +11 -0
  171. package/dist/cli/subcommands/sessions.js +100 -0
  172. package/dist/codemode/capability.d.ts +37 -0
  173. package/dist/codemode/capability.js +55 -0
  174. package/dist/codemode/declarations.d.ts +44 -0
  175. package/dist/codemode/declarations.js +111 -0
  176. package/dist/codemode/host-side.d.ts +59 -0
  177. package/dist/codemode/host-side.js +253 -0
  178. package/dist/codemode/modes.d.ts +23 -0
  179. package/dist/codemode/modes.js +40 -0
  180. package/dist/codemode/protocol.d.ts +91 -0
  181. package/dist/codemode/protocol.js +114 -0
  182. package/dist/codemode/sandbox-entry.d.ts +25 -0
  183. package/dist/codemode/sandbox-entry.js +323 -0
  184. package/dist/codemode/store.d.ts +26 -0
  185. package/dist/codemode/store.js +53 -0
  186. package/dist/codemode/tool.d.ts +105 -0
  187. package/dist/codemode/tool.js +283 -0
  188. package/dist/compaction/branch-summary.d.ts +30 -0
  189. package/dist/compaction/branch-summary.js +79 -0
  190. package/dist/compaction/breaker.d.ts +32 -0
  191. package/dist/compaction/breaker.js +65 -0
  192. package/dist/compaction/cut-point.d.ts +23 -0
  193. package/dist/compaction/cut-point.js +70 -0
  194. package/dist/compaction/estimate.d.ts +30 -0
  195. package/dist/compaction/estimate.js +114 -0
  196. package/dist/compaction/prune-tier.d.ts +31 -0
  197. package/dist/compaction/prune-tier.js +83 -0
  198. package/dist/compaction/serialize.d.ts +20 -0
  199. package/dist/compaction/serialize.js +115 -0
  200. package/dist/compaction/summarize-tier.d.ts +111 -0
  201. package/dist/compaction/summarize-tier.js +305 -0
  202. package/dist/config/auth-file.d.ts +39 -0
  203. package/dist/config/auth-file.js +92 -0
  204. package/dist/config/context-files.d.ts +30 -0
  205. package/dist/config/context-files.js +77 -0
  206. package/dist/config/init.d.ts +30 -0
  207. package/dist/config/init.js +92 -0
  208. package/dist/config/json-schema.d.ts +14 -0
  209. package/dist/config/json-schema.js +182 -0
  210. package/dist/config/load.d.ts +45 -0
  211. package/dist/config/load.js +97 -0
  212. package/dist/config/merge.d.ts +73 -0
  213. package/dist/config/merge.js +248 -0
  214. package/dist/config/paths.d.ts +38 -0
  215. package/dist/config/paths.js +108 -0
  216. package/dist/config/profile.d.ts +27 -0
  217. package/dist/config/profile.js +65 -0
  218. package/dist/config/schema.d.ts +34 -0
  219. package/dist/config/schema.js +476 -0
  220. package/dist/config/trust.d.ts +42 -0
  221. package/dist/config/trust.js +122 -0
  222. package/dist/config/types.d.ts +190 -0
  223. package/dist/config/types.js +29 -0
  224. package/dist/config/write.d.ts +10 -0
  225. package/dist/config/write.js +25 -0
  226. package/dist/errors.d.ts +28 -0
  227. package/dist/errors.js +30 -0
  228. package/dist/hooks/config.d.ts +49 -0
  229. package/dist/hooks/config.js +102 -0
  230. package/dist/hooks/dispatcher.d.ts +41 -0
  231. package/dist/hooks/dispatcher.js +104 -0
  232. package/dist/hooks/matcher.d.ts +22 -0
  233. package/dist/hooks/matcher.js +108 -0
  234. package/dist/hooks/protocol.d.ts +33 -0
  235. package/dist/hooks/protocol.js +240 -0
  236. package/dist/hooks/runner.d.ts +30 -0
  237. package/dist/hooks/runner.js +143 -0
  238. package/dist/hooks/types.d.ts +147 -0
  239. package/dist/hooks/types.js +20 -0
  240. package/dist/host/api-impl.d.ts +75 -0
  241. package/dist/host/api-impl.js +173 -0
  242. package/dist/host/loader.d.ts +31 -0
  243. package/dist/host/loader.js +147 -0
  244. package/dist/host/types.d.ts +169 -0
  245. package/dist/host/types.js +14 -0
  246. package/dist/host.d.ts +5 -0
  247. package/dist/host.js +4 -0
  248. package/dist/index.d.ts +41 -0
  249. package/dist/index.js +28 -0
  250. package/dist/modes/commands-core.d.ts +44 -0
  251. package/dist/modes/commands-core.js +171 -0
  252. package/dist/modes/image-input.d.ts +27 -0
  253. package/dist/modes/image-input.js +78 -0
  254. package/dist/modes/interactive/approval-dialog.d.ts +48 -0
  255. package/dist/modes/interactive/approval-dialog.js +202 -0
  256. package/dist/modes/interactive/commands.d.ts +41 -0
  257. package/dist/modes/interactive/commands.js +201 -0
  258. package/dist/modes/interactive/completion.d.ts +53 -0
  259. package/dist/modes/interactive/completion.js +157 -0
  260. package/dist/modes/interactive/interactive-mode.d.ts +46 -0
  261. package/dist/modes/interactive/interactive-mode.js +491 -0
  262. package/dist/modes/interactive/key-dispatch.d.ts +29 -0
  263. package/dist/modes/interactive/key-dispatch.js +107 -0
  264. package/dist/modes/interactive/line/line-editor.d.ts +50 -0
  265. package/dist/modes/interactive/line/line-editor.js +232 -0
  266. package/dist/modes/interactive/line/line-mode.d.ts +20 -0
  267. package/dist/modes/interactive/line/line-mode.js +218 -0
  268. package/dist/modes/interactive/line/line-render.d.ts +35 -0
  269. package/dist/modes/interactive/line/line-render.js +171 -0
  270. package/dist/modes/interactive/line/paste-state.d.ts +26 -0
  271. package/dist/modes/interactive/line/paste-state.js +72 -0
  272. package/dist/modes/interactive/message-view.d.ts +77 -0
  273. package/dist/modes/interactive/message-view.js +269 -0
  274. package/dist/modes/interactive/pickers.d.ts +42 -0
  275. package/dist/modes/interactive/pickers.js +115 -0
  276. package/dist/modes/interactive/startup-ui.d.ts +33 -0
  277. package/dist/modes/interactive/startup-ui.js +268 -0
  278. package/dist/modes/interactive/status-bar.d.ts +48 -0
  279. package/dist/modes/interactive/status-bar.js +139 -0
  280. package/dist/modes/interactive/tool-view.d.ts +95 -0
  281. package/dist/modes/interactive/tool-view.js +344 -0
  282. package/dist/modes/print/json-event.d.ts +15 -0
  283. package/dist/modes/print/json-event.js +39 -0
  284. package/dist/modes/print/print-mode.d.ts +17 -0
  285. package/dist/modes/print/print-mode.js +107 -0
  286. package/dist/modes/rpc/commands.d.ts +40 -0
  287. package/dist/modes/rpc/commands.js +263 -0
  288. package/dist/modes/rpc/jsonl.d.ts +16 -0
  289. package/dist/modes/rpc/jsonl.js +55 -0
  290. package/dist/modes/rpc/rpc-mode.d.ts +22 -0
  291. package/dist/modes/rpc/rpc-mode.js +153 -0
  292. package/dist/modes/session-report.d.ts +55 -0
  293. package/dist/modes/session-report.js +278 -0
  294. package/dist/modes/shared.d.ts +13 -0
  295. package/dist/modes/shared.js +52 -0
  296. package/dist/modes/startup-ui-text.d.ts +16 -0
  297. package/dist/modes/startup-ui-text.js +103 -0
  298. package/dist/permissions/broker.d.ts +47 -0
  299. package/dist/permissions/broker.js +107 -0
  300. package/dist/permissions/dangerous.d.ts +47 -0
  301. package/dist/permissions/dangerous.js +370 -0
  302. package/dist/permissions/pipeline.d.ts +51 -0
  303. package/dist/permissions/pipeline.js +181 -0
  304. package/dist/permissions/preview.d.ts +43 -0
  305. package/dist/permissions/preview.js +463 -0
  306. package/dist/permissions/rules.d.ts +58 -0
  307. package/dist/permissions/rules.js +249 -0
  308. package/dist/permissions/types.d.ts +100 -0
  309. package/dist/permissions/types.js +18 -0
  310. package/dist/rpc.d.ts +173 -0
  311. package/dist/rpc.js +13 -0
  312. package/dist/sdk.d.ts +98 -0
  313. package/dist/sdk.js +195 -0
  314. package/dist/session/manager.d.ts +70 -0
  315. package/dist/session/manager.js +278 -0
  316. package/dist/session/migrate.d.ts +19 -0
  317. package/dist/session/migrate.js +53 -0
  318. package/dist/session/projection.d.ts +50 -0
  319. package/dist/session/projection.js +184 -0
  320. package/dist/session/store.d.ts +47 -0
  321. package/dist/session/store.js +210 -0
  322. package/dist/session/tree.d.ts +21 -0
  323. package/dist/session/tree.js +88 -0
  324. package/dist/session/types.d.ts +201 -0
  325. package/dist/session/types.js +18 -0
  326. package/dist/skills/discover.d.ts +60 -0
  327. package/dist/skills/discover.js +160 -0
  328. package/dist/skills/expand.d.ts +35 -0
  329. package/dist/skills/expand.js +46 -0
  330. package/dist/skills/frontmatter.d.ts +27 -0
  331. package/dist/skills/frontmatter.js +157 -0
  332. package/dist/skills/index-prompt.d.ts +13 -0
  333. package/dist/skills/index-prompt.js +42 -0
  334. package/dist/skills/templates.d.ts +52 -0
  335. package/dist/skills/templates.js +177 -0
  336. package/dist/tools/bash.d.ts +49 -0
  337. package/dist/tools/bash.js +222 -0
  338. package/dist/tools/edit-fuzzy.d.ts +36 -0
  339. package/dist/tools/edit-fuzzy.js +129 -0
  340. package/dist/tools/edit.d.ts +38 -0
  341. package/dist/tools/edit.js +241 -0
  342. package/dist/tools/file-mutex.d.ts +8 -0
  343. package/dist/tools/file-mutex.js +29 -0
  344. package/dist/tools/glob.d.ts +44 -0
  345. package/dist/tools/glob.js +217 -0
  346. package/dist/tools/grep.d.ts +39 -0
  347. package/dist/tools/grep.js +179 -0
  348. package/dist/tools/ignore.d.ts +40 -0
  349. package/dist/tools/ignore.js +174 -0
  350. package/dist/tools/image-file.d.ts +31 -0
  351. package/dist/tools/image-file.js +114 -0
  352. package/dist/tools/ls.d.ts +21 -0
  353. package/dist/tools/ls.js +96 -0
  354. package/dist/tools/output-accumulator.d.ts +48 -0
  355. package/dist/tools/output-accumulator.js +106 -0
  356. package/dist/tools/paths.d.ts +20 -0
  357. package/dist/tools/paths.js +58 -0
  358. package/dist/tools/presets.d.ts +71 -0
  359. package/dist/tools/presets.js +128 -0
  360. package/dist/tools/process-tree.d.ts +35 -0
  361. package/dist/tools/process-tree.js +125 -0
  362. package/dist/tools/read.d.ts +24 -0
  363. package/dist/tools/read.js +132 -0
  364. package/dist/tools/registry.d.ts +43 -0
  365. package/dist/tools/registry.js +106 -0
  366. package/dist/tools/shell.d.ts +38 -0
  367. package/dist/tools/shell.js +91 -0
  368. package/dist/tools/task.d.ts +29 -0
  369. package/dist/tools/task.js +107 -0
  370. package/dist/tools/todo.d.ts +28 -0
  371. package/dist/tools/todo.js +107 -0
  372. package/dist/tools/truncate.d.ts +44 -0
  373. package/dist/tools/truncate.js +175 -0
  374. package/dist/tools/types.d.ts +135 -0
  375. package/dist/tools/types.js +19 -0
  376. package/dist/tools/write.d.ts +20 -0
  377. package/dist/tools/write.js +84 -0
  378. package/dist/tui/ansi.d.ts +29 -0
  379. package/dist/tui/ansi.js +420 -0
  380. package/dist/tui/component.d.ts +38 -0
  381. package/dist/tui/component.js +13 -0
  382. package/dist/tui/components/box.d.ts +26 -0
  383. package/dist/tui/components/box.js +65 -0
  384. package/dist/tui/components/container.d.ts +14 -0
  385. package/dist/tui/components/container.js +39 -0
  386. package/dist/tui/components/editor-buffer.d.ts +67 -0
  387. package/dist/tui/components/editor-buffer.js +300 -0
  388. package/dist/tui/components/editor-paste.d.ts +29 -0
  389. package/dist/tui/components/editor-paste.js +64 -0
  390. package/dist/tui/components/editor.d.ts +114 -0
  391. package/dist/tui/components/editor.js +530 -0
  392. package/dist/tui/components/key-value.d.ts +29 -0
  393. package/dist/tui/components/key-value.js +48 -0
  394. package/dist/tui/components/loader.d.ts +35 -0
  395. package/dist/tui/components/loader.js +71 -0
  396. package/dist/tui/components/markdown.d.ts +90 -0
  397. package/dist/tui/components/markdown.js +462 -0
  398. package/dist/tui/components/meter.d.ts +29 -0
  399. package/dist/tui/components/meter.js +47 -0
  400. package/dist/tui/components/overlay.d.ts +24 -0
  401. package/dist/tui/components/overlay.js +52 -0
  402. package/dist/tui/components/select-list.d.ts +57 -0
  403. package/dist/tui/components/select-list.js +179 -0
  404. package/dist/tui/components/spacer.d.ts +11 -0
  405. package/dist/tui/components/spacer.js +16 -0
  406. package/dist/tui/components/text.d.ts +30 -0
  407. package/dist/tui/components/text.js +65 -0
  408. package/dist/tui/keybindings.d.ts +66 -0
  409. package/dist/tui/keybindings.js +120 -0
  410. package/dist/tui/keys.d.ts +38 -0
  411. package/dist/tui/keys.js +275 -0
  412. package/dist/tui/stdin-buffer.d.ts +41 -0
  413. package/dist/tui/stdin-buffer.js +206 -0
  414. package/dist/tui/terminal.d.ts +79 -0
  415. package/dist/tui/terminal.js +153 -0
  416. package/dist/tui/theme.d.ts +31 -0
  417. package/dist/tui/theme.js +199 -0
  418. package/dist/tui/tui.d.ts +103 -0
  419. package/dist/tui/tui.js +363 -0
  420. package/dist/tui/vt-screen.d.ts +46 -0
  421. package/dist/tui/vt-screen.js +251 -0
  422. package/dist/tui.d.ts +30 -0
  423. package/dist/tui.js +31 -0
  424. package/dist/version.d.ts +8 -0
  425. package/dist/version.js +24 -0
  426. package/docs/codemode.md +102 -0
  427. package/docs/hooks.md +196 -0
  428. package/docs/host-api.md +161 -0
  429. package/docs/providers.md +531 -0
  430. package/docs/rpc.md +253 -0
  431. package/docs/session-format.md +119 -0
  432. package/docs/tui.md +170 -0
  433. package/package.json +101 -4
@@ -0,0 +1,38 @@
1
+ /**
2
+ * 目录解析(设计 §10.1、§11.1 第 5 步)。[B5]
3
+ *
4
+ * - 用户级配置目录:`AMA_CONFIG_DIR` > Windows `%APPDATA%\ama` > `$XDG_CONFIG_HOME/ama` > `~/.config/ama`。
5
+ * - 数据目录:`AMA_DATA_DIR` > Windows `%LOCALAPPDATA%\ama` > `$XDG_DATA_HOME/ama` > `~/.local/share/ama`。
6
+ * - 会话目录:`--session-dir` > profile.sessionDir > `<dataDir>/sessions`。
7
+ */
8
+ import type { ResolvedPaths } from "../cli/runtime.js";
9
+ export declare const CONFIG_FILE = "config.json";
10
+ export declare const AUTH_FILE = "auth.json";
11
+ export declare const HOOKS_FILE = "hooks.json";
12
+ export declare const TRUST_FILE = "trust.json";
13
+ export declare const KEYBINDINGS_FILE = "keybindings.json";
14
+ /** 项目级目录名(`<cwd>/.ama/`)。 */
15
+ export declare const PROJECT_DIR = ".ama";
16
+ export interface PathEnv {
17
+ readonly env?: Readonly<Record<string, string | undefined>>;
18
+ readonly platform?: NodeJS.Platform;
19
+ readonly home?: string;
20
+ }
21
+ /** 展开开头的 `~`。 */
22
+ export declare function expandHome(path: string, options?: PathEnv): string;
23
+ export declare function resolveConfigDir(options?: PathEnv): string;
24
+ export declare function resolveDataDir(options?: PathEnv): string;
25
+ export interface ResolvePathsInput extends PathEnv {
26
+ cwd: string;
27
+ /** `--session-dir`(相对 cwd)。 */
28
+ sessionDirFlag?: string | undefined;
29
+ /** profile.sessionDir(已校验为绝对路径)。 */
30
+ profileSessionDir?: string | undefined;
31
+ }
32
+ export declare function resolvePaths(input: ResolvePathsInput): ResolvedPaths;
33
+ /** 建目录(0700)并确认可写;失败抛 StartupError(退出码 3)。 */
34
+ export declare function ensureDir(dir: string, label: string): void;
35
+ /** 第 5 步:建 configDir / dataDir / sessionDir。 */
36
+ export declare function ensurePaths(paths: ResolvedPaths): void;
37
+ export declare function userFile(paths: Pick<ResolvedPaths, "configDir">, name: string): string;
38
+ export declare function projectFile(cwd: string, name: string): string;
@@ -0,0 +1,108 @@
1
+ /**
2
+ * 目录解析(设计 §10.1、§11.1 第 5 步)。[B5]
3
+ *
4
+ * - 用户级配置目录:`AMA_CONFIG_DIR` > Windows `%APPDATA%\ama` > `$XDG_CONFIG_HOME/ama` > `~/.config/ama`。
5
+ * - 数据目录:`AMA_DATA_DIR` > Windows `%LOCALAPPDATA%\ama` > `$XDG_DATA_HOME/ama` > `~/.local/share/ama`。
6
+ * - 会话目录:`--session-dir` > profile.sessionDir > `<dataDir>/sessions`。
7
+ */
8
+ import { accessSync, constants, mkdirSync, statSync } from "node:fs";
9
+ import { homedir } from "node:os";
10
+ import { isAbsolute, join, resolve } from "node:path";
11
+ import { StartupError } from "../errors.js";
12
+ /** 与 cli/exit-codes.ts 的 Config 相同;config 层不反向依赖 cli 的值。 */
13
+ const EXIT_CONFIG = 3;
14
+ export const CONFIG_FILE = "config.json";
15
+ export const AUTH_FILE = "auth.json";
16
+ export const HOOKS_FILE = "hooks.json";
17
+ export const TRUST_FILE = "trust.json";
18
+ export const KEYBINDINGS_FILE = "keybindings.json";
19
+ /** 项目级目录名(`<cwd>/.ama/`)。 */
20
+ export const PROJECT_DIR = ".ama";
21
+ function envOf(options) {
22
+ return options.env ?? process.env;
23
+ }
24
+ function nonEmpty(value) {
25
+ return value !== undefined && value.trim() !== "" ? value : undefined;
26
+ }
27
+ function homeOf(options) {
28
+ const env = envOf(options);
29
+ return options.home ?? nonEmpty(env["HOME"]) ?? nonEmpty(env["USERPROFILE"]) ?? homedir();
30
+ }
31
+ /** 展开开头的 `~`。 */
32
+ export function expandHome(path, options = {}) {
33
+ if (path === "~")
34
+ return homeOf(options);
35
+ if (path.startsWith("~/") || path.startsWith("~\\"))
36
+ return join(homeOf(options), path.slice(2));
37
+ return path;
38
+ }
39
+ export function resolveConfigDir(options = {}) {
40
+ const env = envOf(options);
41
+ const explicit = nonEmpty(env["AMA_CONFIG_DIR"]);
42
+ if (explicit !== undefined)
43
+ return resolve(expandHome(explicit, options));
44
+ if ((options.platform ?? process.platform) === "win32") {
45
+ const appData = nonEmpty(env["APPDATA"]);
46
+ if (appData !== undefined)
47
+ return join(appData, "ama");
48
+ }
49
+ const xdg = nonEmpty(env["XDG_CONFIG_HOME"]);
50
+ if (xdg !== undefined && isAbsolute(xdg))
51
+ return join(xdg, "ama");
52
+ return join(homeOf(options), ".config", "ama");
53
+ }
54
+ export function resolveDataDir(options = {}) {
55
+ const env = envOf(options);
56
+ const explicit = nonEmpty(env["AMA_DATA_DIR"]);
57
+ if (explicit !== undefined)
58
+ return resolve(expandHome(explicit, options));
59
+ if ((options.platform ?? process.platform) === "win32") {
60
+ const local = nonEmpty(env["LOCALAPPDATA"]);
61
+ if (local !== undefined)
62
+ return join(local, "ama");
63
+ }
64
+ const xdg = nonEmpty(env["XDG_DATA_HOME"]);
65
+ if (xdg !== undefined && isAbsolute(xdg))
66
+ return join(xdg, "ama");
67
+ return join(homeOf(options), ".local", "share", "ama");
68
+ }
69
+ export function resolvePaths(input) {
70
+ const configDir = resolveConfigDir(input);
71
+ const dataDir = resolveDataDir(input);
72
+ const cwd = resolve(input.cwd);
73
+ let sessionDir;
74
+ if (input.sessionDirFlag !== undefined) {
75
+ sessionDir = resolve(cwd, expandHome(input.sessionDirFlag, input));
76
+ }
77
+ else if (input.profileSessionDir !== undefined) {
78
+ sessionDir = resolve(input.profileSessionDir);
79
+ }
80
+ else {
81
+ sessionDir = join(dataDir, "sessions");
82
+ }
83
+ return { configDir, dataDir, sessionDir, cwd };
84
+ }
85
+ /** 建目录(0700)并确认可写;失败抛 StartupError(退出码 3)。 */
86
+ export function ensureDir(dir, label) {
87
+ try {
88
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
89
+ if (!statSync(dir).isDirectory())
90
+ throw new Error("不是目录");
91
+ accessSync(dir, constants.W_OK);
92
+ }
93
+ catch (error) {
94
+ throw new StartupError("config_invalid", `${label}不可写:${dir}(${error instanceof Error ? error.message : String(error)})`, EXIT_CONFIG, { cause: error });
95
+ }
96
+ }
97
+ /** 第 5 步:建 configDir / dataDir / sessionDir。 */
98
+ export function ensurePaths(paths) {
99
+ ensureDir(paths.configDir, "配置目录");
100
+ ensureDir(paths.dataDir, "数据目录");
101
+ ensureDir(paths.sessionDir, "会话目录");
102
+ }
103
+ export function userFile(paths, name) {
104
+ return join(paths.configDir, name);
105
+ }
106
+ export function projectFile(cwd, name) {
107
+ return join(cwd, PROJECT_DIR, name);
108
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * profile.json(宿主用,设计 §10.3、§11.1 第 3 步、§11.2)。[B5]
3
+ *
4
+ * profile 的字段等价于对应命令行参数;命令行显式参数优先(合并在 cli/bootstrap.ts)。
5
+ * 文件不存在 / 版本不符 / 路径不是绝对路径 → StartupError(退出码 3)。profile 不含密钥。
6
+ */
7
+ import type { AmaConfig } from "./types.js";
8
+ /** profile 展开后的等价参数(全部为绝对路径)。 */
9
+ export interface ProfileOptions {
10
+ path: string;
11
+ host?: string;
12
+ instructions: string[];
13
+ skillDirs: string[];
14
+ promptDirs: string[];
15
+ hooksFile?: string;
16
+ authFile?: string;
17
+ /** false:key 只来自 authFile。 */
18
+ authEnv: boolean;
19
+ sessionDir?: string;
20
+ /** profile.config 文件路径。 */
21
+ configFile?: string;
22
+ /** profile.config 的内容(已校验)。 */
23
+ config?: AmaConfig;
24
+ trustProject: boolean;
25
+ warnings: string[];
26
+ }
27
+ export declare function loadProfile(path: string, cwd?: string): ProfileOptions;
@@ -0,0 +1,65 @@
1
+ /**
2
+ * profile.json(宿主用,设计 §10.3、§11.1 第 3 步、§11.2)。[B5]
3
+ *
4
+ * profile 的字段等价于对应命令行参数;命令行显式参数优先(合并在 cli/bootstrap.ts)。
5
+ * 文件不存在 / 版本不符 / 路径不是绝对路径 → StartupError(退出码 3)。profile 不含密钥。
6
+ */
7
+ import { isAbsolute, resolve } from "node:path";
8
+ import { StartupError } from "../errors.js";
9
+ import { loadConfigFile } from "./load.js";
10
+ import { PROFILE_PATH_FIELDS, PROFILE_PATH_LIST_FIELDS } from "./schema.js";
11
+ const EXIT_CONFIG = 3;
12
+ export function loadProfile(path, cwd = process.cwd()) {
13
+ const abs = resolve(cwd, path);
14
+ const loaded = loadConfigFile("profile", abs, { required: true });
15
+ if (loaded === undefined) {
16
+ throw new StartupError("profile_invalid", `${abs}: 文件不存在`, EXIT_CONFIG);
17
+ }
18
+ const profile = loaded.value;
19
+ const relative = [];
20
+ for (const key of PROFILE_PATH_FIELDS) {
21
+ const value = profile[key];
22
+ if (value !== undefined && !isAbsolute(value))
23
+ relative.push(`${key}: ${value}`);
24
+ }
25
+ for (const key of PROFILE_PATH_LIST_FIELDS) {
26
+ for (const value of profile[key] ?? []) {
27
+ if (!isAbsolute(value))
28
+ relative.push(`${key}: ${value}`);
29
+ }
30
+ }
31
+ if (relative.length > 0) {
32
+ throw new StartupError("profile_invalid", `${abs}: profile 中的路径必须是绝对路径:\n ${relative.join("\n ")}`, EXIT_CONFIG);
33
+ }
34
+ const options = profileToOptions(abs, profile, loaded.warnings);
35
+ if (profile.config !== undefined) {
36
+ const config = loadConfigFile("config", profile.config, { required: true });
37
+ if (config !== undefined) {
38
+ options.config = config.value;
39
+ options.warnings.push(...config.warnings);
40
+ }
41
+ }
42
+ return options;
43
+ }
44
+ function profileToOptions(path, profile, warnings) {
45
+ const options = {
46
+ path,
47
+ instructions: [...(profile.instructions ?? [])],
48
+ skillDirs: [...(profile.skillDirs ?? [])],
49
+ promptDirs: [...(profile.promptDirs ?? [])],
50
+ authEnv: profile.authEnv !== false,
51
+ trustProject: profile.trustProject === true,
52
+ warnings: [...warnings],
53
+ };
54
+ if (profile.host !== undefined)
55
+ options.host = profile.host;
56
+ if (profile.hooksFile !== undefined)
57
+ options.hooksFile = profile.hooksFile;
58
+ if (profile.authFile !== undefined)
59
+ options.authFile = profile.authFile;
60
+ if (profile.sessionDir !== undefined)
61
+ options.sessionDir = profile.sessionDir;
62
+ if (profile.config !== undefined)
63
+ options.configFile = profile.config;
64
+ return options;
65
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * 配置文件校验(设计 §10、§6.1、§7.3)。[B5]
3
+ *
4
+ * 形状定义在 config/types.ts(B0)与 hooks/types.ts(HookConfig);这里只做校验并再导出。
5
+ * 校验结果是诊断列表:`severity: "error"` 拒绝该文件(启动退出码 3),`"warning"` 只提示
6
+ * (未知字段等)。`path` 是 JSON 指针风格的字段路径(`permission.mode`、`hooks.PreToolUse[0]`)。
7
+ */
8
+ import type { AmaConfig, AuthFile, ProfileFile, TrustFile } from "./types.js";
9
+ import type { HookConfig } from "../hooks/types.js";
10
+ export type { AmaConfig, AuthFile, ProfileFile, TrustFile, TrustEntry, ProviderConfig, PermissionConfig, CompactionConfig, RetryConfig, ToolsConfig, ToolsPreset, CodemodeConfig, CodemodeMode, HooksSettings, UiConfig, SkillsConfig, CacheConfig, ModelConfig, ModelOverride, ChannelConfig, } from "./types.js";
11
+ export { CONFIG_FILE_VERSION } from "./types.js";
12
+ export type { HookConfig } from "../hooks/types.js";
13
+ export interface Diagnostic {
14
+ severity: "error" | "warning";
15
+ /** 字段路径;文件级问题为 ""。 */
16
+ path: string;
17
+ message: string;
18
+ }
19
+ export declare const THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh"];
20
+ export declare const HOOK_TIMEOUT_MAX_MS = 600000;
21
+ export declare function hasErrors(diagnostics: readonly Diagnostic[]): boolean;
22
+ export declare function validateConfig(value: unknown): Diagnostic[];
23
+ export declare function validateAuthFile(value: unknown): Diagnostic[];
24
+ export declare const PROFILE_PATH_FIELDS: readonly ["host", "hooksFile", "authFile", "sessionDir", "config"];
25
+ export declare const PROFILE_PATH_LIST_FIELDS: readonly ["instructions", "skillDirs", "promptDirs"];
26
+ export declare function validateProfile(value: unknown): Diagnostic[];
27
+ export declare function validateTrustFile(value: unknown): Diagnostic[];
28
+ export declare function validateHookConfig(value: unknown): Diagnostic[];
29
+ /** 校验通过后的类型断言(调用方保证 `hasErrors()` 为 false)。 */
30
+ export declare function asConfig(value: unknown): AmaConfig;
31
+ export declare function asAuthFile(value: unknown): AuthFile;
32
+ export declare function asProfile(value: unknown): ProfileFile;
33
+ export declare function asTrustFile(value: unknown): TrustFile;
34
+ export declare function asHookConfig(value: unknown): HookConfig;