@armadra/agent 0.5.1 → 0.6.1

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 (486) hide show
  1. package/CHANGELOG.md +203 -304
  2. package/CHANGELOG.zh-CN.md +462 -0
  3. package/README.md +408 -364
  4. package/README.zh-CN.md +705 -0
  5. package/dist/agent/session-plan.js +2 -2
  6. package/dist/agent/session-state.d.ts +3 -0
  7. package/dist/agent/session-state.js +20 -0
  8. package/dist/agent/session-subagent.d.ts +15 -1
  9. package/dist/agent/session-subagent.js +26 -3
  10. package/dist/agent/session-telemetry.d.ts +16 -2
  11. package/dist/agent/session-telemetry.js +29 -7
  12. package/dist/agent/session-tools.js +5 -2
  13. package/dist/agent/session-trace-writer.d.ts +27 -0
  14. package/dist/agent/session-trace-writer.js +253 -0
  15. package/dist/agent/session.d.ts +2 -0
  16. package/dist/agent/session.js +12 -0
  17. package/dist/agent/subagent-direct.d.ts +20 -0
  18. package/dist/agent/subagent-direct.js +76 -0
  19. package/dist/agent/subagent-registry.d.ts +8 -1
  20. package/dist/agent/subagent-registry.js +28 -1
  21. package/dist/agent/system-prompt.d.ts +3 -1
  22. package/dist/agent/system-prompt.js +3 -0
  23. package/dist/agent/tool-runner.d.ts +2 -1
  24. package/dist/agent/tool-runner.js +5 -4
  25. package/dist/agent/types-w6.d.ts +39 -0
  26. package/dist/agent/types-w6.js +4 -0
  27. package/dist/agent/types.d.ts +5 -2
  28. package/dist/agents/external.js +1 -1
  29. package/dist/agents/task-record.d.ts +74 -1
  30. package/dist/agents/task-record.js +100 -0
  31. package/dist/ai/apis/cache-params.js +2 -1
  32. package/dist/ai/apis/chatgpt-backend.d.ts +52 -0
  33. package/dist/ai/apis/chatgpt-backend.js +224 -0
  34. package/dist/ai/apis/chatgpt-rate-limits.d.ts +26 -0
  35. package/dist/ai/apis/chatgpt-rate-limits.js +91 -0
  36. package/dist/ai/apis/openai-responses-request.d.ts +2 -1
  37. package/dist/ai/apis/openai-responses-request.js +8 -2
  38. package/dist/ai/apis/openai-responses.d.ts +2 -0
  39. package/dist/ai/apis/openai-responses.js +51 -16
  40. package/dist/ai/overflow.d.ts +1 -1
  41. package/dist/ai/overflow.js +10 -7
  42. package/dist/ai/providers/auth.d.ts +15 -2
  43. package/dist/ai/providers/auth.js +69 -2
  44. package/dist/ai/providers/builtin.js +27 -0
  45. package/dist/ai/providers/catalog-data.js +1 -0
  46. package/dist/ai/providers/discovered-cache.d.ts +48 -0
  47. package/dist/ai/providers/discovered-cache.js +102 -0
  48. package/dist/ai/providers/enrich.js +2 -7
  49. package/dist/ai/providers/model-visibility.d.ts +33 -0
  50. package/dist/ai/providers/model-visibility.js +70 -0
  51. package/dist/ai/providers/models-dev-cache.js +15 -19
  52. package/dist/ai/providers/models-dev-snapshot.js +8 -7
  53. package/dist/ai/providers/models-dev.js +5 -15
  54. package/dist/ai/providers/registry.d.ts +2 -0
  55. package/dist/ai/providers/registry.js +6 -1
  56. package/dist/ai/providers/suggest.js +2 -16
  57. package/dist/ai/types.d.ts +27 -1
  58. package/dist/auth/chatgpt/backend-client.d.ts +26 -0
  59. package/dist/auth/chatgpt/backend-client.js +74 -0
  60. package/dist/auth/chatgpt/claims.d.ts +17 -0
  61. package/dist/auth/chatgpt/claims.js +46 -0
  62. package/dist/auth/chatgpt/cli.d.ts +35 -0
  63. package/dist/auth/chatgpt/cli.js +279 -0
  64. package/dist/auth/chatgpt/doctor.d.ts +17 -0
  65. package/dist/auth/chatgpt/doctor.js +36 -0
  66. package/dist/auth/chatgpt/host-id.d.ts +7 -0
  67. package/dist/auth/chatgpt/host-id.js +26 -0
  68. package/dist/auth/chatgpt/login.d.ts +30 -0
  69. package/dist/auth/chatgpt/login.js +130 -0
  70. package/dist/auth/chatgpt/presets.d.ts +66 -0
  71. package/dist/auth/chatgpt/presets.js +120 -0
  72. package/dist/auth/chatgpt/quota-text.d.ts +13 -0
  73. package/dist/auth/chatgpt/quota-text.js +36 -0
  74. package/dist/auth/oauth/browser.d.ts +12 -0
  75. package/dist/auth/oauth/browser.js +27 -0
  76. package/dist/auth/oauth/callback-server.d.ts +47 -0
  77. package/dist/auth/oauth/callback-server.js +147 -0
  78. package/dist/auth/oauth/flows.d.ts +62 -0
  79. package/dist/auth/oauth/flows.js +113 -0
  80. package/dist/auth/oauth/jwt.d.ts +24 -0
  81. package/dist/auth/oauth/jwt.js +81 -0
  82. package/dist/auth/oauth/live.d.ts +21 -0
  83. package/dist/auth/oauth/live.js +25 -0
  84. package/dist/auth/oauth/oidc.d.ts +26 -0
  85. package/dist/auth/oauth/oidc.js +72 -0
  86. package/dist/auth/oauth/pkce.d.ts +15 -0
  87. package/dist/auth/oauth/pkce.js +20 -0
  88. package/dist/auth/oauth/refresh.d.ts +35 -0
  89. package/dist/auth/oauth/refresh.js +129 -0
  90. package/dist/auth/oauth/token-client.d.ts +33 -0
  91. package/dist/auth/oauth/token-client.js +121 -0
  92. package/dist/auth/oauth/token-store.d.ts +23 -0
  93. package/dist/auth/oauth/token-store.js +125 -0
  94. package/dist/auth/testing/fake-oauth.d.ts +73 -0
  95. package/dist/auth/testing/fake-oauth.js +271 -0
  96. package/dist/auth/testing/refresh-child.d.ts +5 -0
  97. package/dist/auth/testing/refresh-child.js +16 -0
  98. package/dist/bundle/ama.cjs +26532 -11045
  99. package/dist/checkpoints/backend.js +6 -5
  100. package/dist/checkpoints/restore.js +3 -2
  101. package/dist/checkpoints/settings.js +2 -1
  102. package/dist/checkpoints/shadow-git.js +7 -6
  103. package/dist/checkpoints/shadow-restore.js +3 -2
  104. package/dist/checkpoints/tracker.js +4 -3
  105. package/dist/cli/args.d.ts +9 -2
  106. package/dist/cli/args.js +74 -27
  107. package/dist/cli/bootstrap.js +53 -31
  108. package/dist/cli/choice-prompt.js +8 -6
  109. package/dist/cli/codemode-notice.js +2 -2
  110. package/dist/cli/compose-agents.js +2 -1
  111. package/dist/cli/compose-extensions.js +2 -0
  112. package/dist/cli/compose-memory.d.ts +53 -0
  113. package/dist/cli/compose-memory.js +127 -0
  114. package/dist/cli/compose-providers.d.ts +6 -0
  115. package/dist/cli/compose-providers.js +38 -2
  116. package/dist/cli/compose-session.d.ts +5 -0
  117. package/dist/cli/compose-session.js +27 -13
  118. package/dist/cli/compose-store.d.ts +2 -0
  119. package/dist/cli/compose-store.js +9 -5
  120. package/dist/cli/compose.d.ts +2 -0
  121. package/dist/cli/compose.js +13 -5
  122. package/dist/cli/default-model.d.ts +0 -2
  123. package/dist/cli/default-model.js +5 -8
  124. package/dist/cli/deps.d.ts +5 -1
  125. package/dist/cli/exit-codes.d.ts +1 -1
  126. package/dist/cli/exit-codes.js +7 -16
  127. package/dist/cli/from-prompt.js +3 -2
  128. package/dist/cli/help-text.d.ts +2 -1
  129. package/dist/cli/help-text.js +5 -99
  130. package/dist/cli/main.d.ts +5 -0
  131. package/dist/cli/main.js +21 -2
  132. package/dist/cli/proxy.js +14 -9
  133. package/dist/cli/runtime.d.ts +5 -0
  134. package/dist/cli/startup-screen.js +20 -27
  135. package/dist/cli/startup-steps.js +6 -8
  136. package/dist/cli/subcommands/auth.d.ts +6 -3
  137. package/dist/cli/subcommands/auth.js +52 -22
  138. package/dist/cli/subcommands/config-set.d.ts +21 -0
  139. package/dist/cli/subcommands/config-set.js +145 -0
  140. package/dist/cli/subcommands/config.d.ts +2 -1
  141. package/dist/cli/subcommands/config.js +51 -37
  142. package/dist/cli/subcommands/doctor.d.ts +2 -1
  143. package/dist/cli/subcommands/doctor.js +97 -58
  144. package/dist/cli/subcommands/init.d.ts +1 -1
  145. package/dist/cli/subcommands/init.js +8 -7
  146. package/dist/cli/subcommands/memory.d.ts +18 -0
  147. package/dist/cli/subcommands/memory.js +189 -0
  148. package/dist/cli/subcommands/model-meta.js +11 -9
  149. package/dist/cli/subcommands/models-cache-probe.js +23 -20
  150. package/dist/cli/subcommands/models-discover.d.ts +4 -0
  151. package/dist/cli/subcommands/models-discover.js +60 -21
  152. package/dist/cli/subcommands/models-enable.d.ts +13 -0
  153. package/dist/cli/subcommands/models-enable.js +145 -0
  154. package/dist/cli/subcommands/models.d.ts +3 -1
  155. package/dist/cli/subcommands/models.js +39 -24
  156. package/dist/cli/subcommands/probe-runner.js +8 -7
  157. package/dist/cli/subcommands/providers-list.js +32 -21
  158. package/dist/cli/subcommands/providers-plan.js +24 -25
  159. package/dist/cli/subcommands/providers-probe.js +5 -6
  160. package/dist/cli/subcommands/providers.d.ts +1 -1
  161. package/dist/cli/subcommands/providers.js +45 -50
  162. package/dist/cli/subcommands/sessions-export.d.ts +1 -1
  163. package/dist/cli/subcommands/sessions-export.js +10 -9
  164. package/dist/cli/subcommands/sessions-search.d.ts +1 -1
  165. package/dist/cli/subcommands/sessions-search.js +11 -10
  166. package/dist/cli/subcommands/sessions-trace.d.ts +30 -0
  167. package/dist/cli/subcommands/sessions-trace.js +156 -0
  168. package/dist/cli/subcommands/sessions.d.ts +4 -3
  169. package/dist/cli/subcommands/sessions.js +40 -37
  170. package/dist/cli/subcommands/stats.d.ts +1 -1
  171. package/dist/cli/subcommands/stats.js +49 -30
  172. package/dist/cli/system-prompt-arg.js +3 -2
  173. package/dist/codemode/capability.js +3 -2
  174. package/dist/compaction/post-compact.d.ts +1 -0
  175. package/dist/compaction/post-compact.js +15 -1
  176. package/dist/compaction/prune-tier.d.ts +1 -1
  177. package/dist/compaction/prune-tier.js +3 -3
  178. package/dist/compaction/serialize.js +2 -1
  179. package/dist/config/auth-file.d.ts +12 -2
  180. package/dist/config/auth-file.js +32 -10
  181. package/dist/config/checker.js +12 -11
  182. package/dist/config/context-files.js +3 -2
  183. package/dist/config/edit.d.ts +106 -0
  184. package/dist/config/edit.js +350 -0
  185. package/dist/config/init.d.ts +4 -3
  186. package/dist/config/init.js +10 -18
  187. package/dist/config/json-schema.d.ts +2 -1
  188. package/dist/config/json-schema.js +102 -69
  189. package/dist/config/key-docs.d.ts +18 -7
  190. package/dist/config/key-docs.js +43 -128
  191. package/dist/config/load.js +7 -6
  192. package/dist/config/merge.d.ts +4 -1
  193. package/dist/config/merge.js +42 -22
  194. package/dist/config/paths.js +6 -5
  195. package/dist/config/profile.d.ts +5 -1
  196. package/dist/config/profile.js +7 -2
  197. package/dist/config/schema-w5.js +12 -4
  198. package/dist/config/schema-w6.d.ts +19 -0
  199. package/dist/config/schema-w6.js +115 -0
  200. package/dist/config/schema.js +34 -20
  201. package/dist/config/settings-registry.d.ts +81 -0
  202. package/dist/config/settings-registry.js +185 -0
  203. package/dist/config/types-w5.d.ts +7 -0
  204. package/dist/config/types-w5.js +2 -0
  205. package/dist/config/types-w6.d.ts +109 -0
  206. package/dist/config/types-w6.js +19 -0
  207. package/dist/config/types.d.ts +11 -8
  208. package/dist/config/types.js +1 -0
  209. package/dist/drivers/acp/client.js +1 -1
  210. package/dist/drivers/acp/driver.js +13 -8
  211. package/dist/drivers/agents.js +4 -3
  212. package/dist/drivers/base.js +3 -2
  213. package/dist/drivers/host-runners.js +2 -1
  214. package/dist/drivers/native/claude-stream.js +12 -11
  215. package/dist/drivers/native/codex-app-server.js +17 -12
  216. package/dist/drivers/native/oneshot.js +8 -7
  217. package/dist/drivers/pool.js +1 -1
  218. package/dist/drivers/runner.d.ts +3 -1
  219. package/dist/drivers/runner.js +68 -20
  220. package/dist/drivers/turn.js +1 -1
  221. package/dist/hooks/config.js +3 -2
  222. package/dist/hooks/protocol.js +18 -12
  223. package/dist/host/api-impl.js +11 -10
  224. package/dist/host/loader.js +9 -8
  225. package/dist/host/types.d.ts +3 -0
  226. package/dist/i18n/catalog.d.ts +2209 -0
  227. package/dist/i18n/catalog.js +72 -0
  228. package/dist/i18n/format.d.ts +21 -0
  229. package/dist/i18n/format.js +58 -0
  230. package/dist/i18n/index.d.ts +58 -0
  231. package/dist/i18n/index.js +72 -0
  232. package/dist/i18n/messages/agents.d.ts +84 -0
  233. package/dist/i18n/messages/agents.js +85 -0
  234. package/dist/i18n/messages/approval.d.ts +99 -0
  235. package/dist/i18n/messages/approval.js +100 -0
  236. package/dist/i18n/messages/auth.d.ts +189 -0
  237. package/dist/i18n/messages/auth.js +201 -0
  238. package/dist/i18n/messages/cli-args.d.ts +46 -0
  239. package/dist/i18n/messages/cli-args.js +46 -0
  240. package/dist/i18n/messages/cli-help.d.ts +12 -0
  241. package/dist/i18n/messages/cli-help.js +248 -0
  242. package/dist/i18n/messages/cli.d.ts +336 -0
  243. package/dist/i18n/messages/cli.js +311 -0
  244. package/dist/i18n/messages/config-keys.d.ts +293 -0
  245. package/dist/i18n/messages/config-keys.js +296 -0
  246. package/dist/i18n/messages/config.d.ts +508 -0
  247. package/dist/i18n/messages/config.js +241 -0
  248. package/dist/i18n/messages/drivers.d.ts +123 -0
  249. package/dist/i18n/messages/drivers.js +124 -0
  250. package/dist/i18n/messages/errors.d.ts +83 -0
  251. package/dist/i18n/messages/errors.js +171 -0
  252. package/dist/i18n/messages/interactive-line.d.ts +61 -0
  253. package/dist/i18n/messages/interactive-line.js +69 -0
  254. package/dist/i18n/messages/interactive-startup.d.ts +99 -0
  255. package/dist/i18n/messages/interactive-startup.js +100 -0
  256. package/dist/i18n/messages/interactive-view.d.ts +140 -0
  257. package/dist/i18n/messages/interactive-view.js +141 -0
  258. package/dist/i18n/messages/interactive.d.ts +489 -0
  259. package/dist/i18n/messages/interactive.js +248 -0
  260. package/dist/i18n/messages/memory.d.ts +123 -0
  261. package/dist/i18n/messages/memory.js +128 -0
  262. package/dist/i18n/messages/panels.d.ts +233 -0
  263. package/dist/i18n/messages/panels.js +232 -0
  264. package/dist/i18n/messages/permissions.d.ts +126 -0
  265. package/dist/i18n/messages/permissions.js +151 -0
  266. package/dist/i18n/messages/plan.d.ts +123 -0
  267. package/dist/i18n/messages/plan.js +124 -0
  268. package/dist/i18n/messages/print.d.ts +86 -0
  269. package/dist/i18n/messages/print.js +91 -0
  270. package/dist/i18n/messages/report.d.ts +391 -0
  271. package/dist/i18n/messages/report.js +490 -0
  272. package/dist/i18n/messages/rewind.d.ts +198 -0
  273. package/dist/i18n/messages/rewind.js +217 -0
  274. package/dist/i18n/messages/session.d.ts +230 -0
  275. package/dist/i18n/messages/session.js +258 -0
  276. package/dist/i18n/messages/settings.d.ts +355 -0
  277. package/dist/i18n/messages/settings.js +343 -0
  278. package/dist/i18n/messages/subcommands-config.d.ts +113 -0
  279. package/dist/i18n/messages/subcommands-config.js +129 -0
  280. package/dist/i18n/messages/subcommands-models.d.ts +34 -0
  281. package/dist/i18n/messages/subcommands-models.js +34 -0
  282. package/dist/i18n/messages/subcommands.d.ts +576 -0
  283. package/dist/i18n/messages/subcommands.js +477 -0
  284. package/dist/i18n/messages/trace.d.ts +243 -0
  285. package/dist/i18n/messages/trace.js +238 -0
  286. package/dist/i18n/types.d.ts +15 -0
  287. package/dist/i18n/types.js +7 -0
  288. package/dist/index.d.ts +6 -0
  289. package/dist/index.js +2 -0
  290. package/dist/memory/edit.d.ts +24 -0
  291. package/dist/memory/edit.js +63 -0
  292. package/dist/memory/frontmatter.d.ts +37 -0
  293. package/dist/memory/frontmatter.js +79 -0
  294. package/dist/memory/index.d.ts +28 -0
  295. package/dist/memory/index.js +126 -0
  296. package/dist/memory/lock.d.ts +17 -0
  297. package/dist/memory/lock.js +62 -0
  298. package/dist/memory/paths.d.ts +57 -0
  299. package/dist/memory/paths.js +175 -0
  300. package/dist/memory/report.d.ts +36 -0
  301. package/dist/memory/report.js +86 -0
  302. package/dist/memory/runtime.d.ts +42 -0
  303. package/dist/memory/runtime.js +36 -0
  304. package/dist/memory/secrets.d.ts +8 -0
  305. package/dist/memory/secrets.js +27 -0
  306. package/dist/memory/section.d.ts +28 -0
  307. package/dist/memory/section.js +59 -0
  308. package/dist/memory/store.d.ts +70 -0
  309. package/dist/memory/store.js +284 -0
  310. package/dist/memory/tool.d.ts +31 -0
  311. package/dist/memory/tool.js +94 -0
  312. package/dist/modes/acp/acp-events.js +2 -1
  313. package/dist/modes/acp/acp-server.js +13 -12
  314. package/dist/modes/commands-core.d.ts +11 -0
  315. package/dist/modes/commands-core.js +93 -62
  316. package/dist/modes/image-input.js +20 -6
  317. package/dist/modes/interactive/agent-bar.d.ts +95 -0
  318. package/dist/modes/interactive/agent-bar.js +248 -0
  319. package/dist/modes/interactive/agent-panels.js +27 -26
  320. package/dist/modes/interactive/agent-transcript.d.ts +47 -0
  321. package/dist/modes/interactive/agent-transcript.js +191 -0
  322. package/dist/modes/interactive/agent-ui.d.ts +36 -1
  323. package/dist/modes/interactive/agent-ui.js +180 -14
  324. package/dist/modes/interactive/agent-view.d.ts +72 -0
  325. package/dist/modes/interactive/agent-view.js +281 -0
  326. package/dist/modes/interactive/approval-dialog.js +46 -34
  327. package/dist/modes/interactive/clipboard-paste.d.ts +2 -2
  328. package/dist/modes/interactive/clipboard-paste.js +9 -4
  329. package/dist/modes/interactive/commands.d.ts +22 -1
  330. package/dist/modes/interactive/commands.js +100 -49
  331. package/dist/modes/interactive/completion.js +2 -1
  332. package/dist/modes/interactive/config-panel.d.ts +70 -0
  333. package/dist/modes/interactive/config-panel.js +319 -0
  334. package/dist/modes/interactive/config-ui.d.ts +96 -0
  335. package/dist/modes/interactive/config-ui.js +397 -0
  336. package/dist/modes/interactive/confirm-dialog.js +6 -7
  337. package/dist/modes/interactive/event-notices.js +11 -9
  338. package/dist/modes/interactive/interactive-mode.d.ts +1 -1
  339. package/dist/modes/interactive/interactive-mode.js +21 -22
  340. package/dist/modes/interactive/key-dispatch.d.ts +12 -0
  341. package/dist/modes/interactive/key-dispatch.js +24 -9
  342. package/dist/modes/interactive/line/line-editor.js +2 -1
  343. package/dist/modes/interactive/line/line-mode.js +18 -7
  344. package/dist/modes/interactive/line/line-render.js +25 -24
  345. package/dist/modes/interactive/memory-panel.d.ts +64 -0
  346. package/dist/modes/interactive/memory-panel.js +221 -0
  347. package/dist/modes/interactive/message-view.d.ts +4 -2
  348. package/dist/modes/interactive/message-view.js +42 -33
  349. package/dist/modes/interactive/model-items.d.ts +45 -0
  350. package/dist/modes/interactive/model-items.js +134 -0
  351. package/dist/modes/interactive/model-picker.d.ts +57 -0
  352. package/dist/modes/interactive/model-picker.js +191 -0
  353. package/dist/modes/interactive/panels.js +39 -31
  354. package/dist/modes/interactive/pickers.d.ts +2 -1
  355. package/dist/modes/interactive/pickers.js +10 -6
  356. package/dist/modes/interactive/plan-command.d.ts +1 -1
  357. package/dist/modes/interactive/plan-command.js +24 -27
  358. package/dist/modes/interactive/plan-dialog.js +18 -17
  359. package/dist/modes/interactive/plan-flow.js +6 -5
  360. package/dist/modes/interactive/rewind-command.d.ts +1 -1
  361. package/dist/modes/interactive/rewind-command.js +18 -16
  362. package/dist/modes/interactive/rewind-flow.d.ts +0 -1
  363. package/dist/modes/interactive/rewind-flow.js +13 -14
  364. package/dist/modes/interactive/rewind-list.js +7 -6
  365. package/dist/modes/interactive/rewind-panel.js +40 -40
  366. package/dist/modes/interactive/rewind-text.d.ts +5 -3
  367. package/dist/modes/interactive/rewind-text.js +48 -38
  368. package/dist/modes/interactive/run-indicator.js +15 -12
  369. package/dist/modes/interactive/session-events.js +3 -2
  370. package/dist/modes/interactive/startup-header.js +22 -23
  371. package/dist/modes/interactive/startup-ui.d.ts +3 -9
  372. package/dist/modes/interactive/startup-ui.js +44 -88
  373. package/dist/modes/interactive/status-area.d.ts +2 -0
  374. package/dist/modes/interactive/status-area.js +8 -2
  375. package/dist/modes/interactive/status-bar.js +4 -3
  376. package/dist/modes/interactive/subagent-view.js +9 -7
  377. package/dist/modes/interactive/tasks-report.d.ts +6 -0
  378. package/dist/modes/interactive/tasks-report.js +28 -31
  379. package/dist/modes/interactive/terminal-setup.d.ts +9 -0
  380. package/dist/modes/interactive/terminal-setup.js +23 -0
  381. package/dist/modes/interactive/tool-summary.js +19 -17
  382. package/dist/modes/interactive/tool-view.js +7 -4
  383. package/dist/modes/interactive/trace-view.d.ts +89 -0
  384. package/dist/modes/interactive/trace-view.js +332 -0
  385. package/dist/modes/print/print-mode.js +14 -15
  386. package/dist/modes/rpc/commands.js +7 -3
  387. package/dist/modes/rpc/rpc-mode.js +9 -3
  388. package/dist/modes/session-report.d.ts +2 -0
  389. package/dist/modes/session-report.js +101 -105
  390. package/dist/modes/startup-ui-text.js +11 -6
  391. package/dist/permissions/bypass.d.ts +8 -10
  392. package/dist/permissions/bypass.js +19 -10
  393. package/dist/permissions/memory-class.d.ts +23 -0
  394. package/dist/permissions/memory-class.js +54 -0
  395. package/dist/permissions/modes.d.ts +3 -3
  396. package/dist/permissions/modes.js +21 -16
  397. package/dist/permissions/pipeline.d.ts +1 -1
  398. package/dist/permissions/pipeline.js +9 -2
  399. package/dist/permissions/preview.js +49 -42
  400. package/dist/permissions/rules.js +5 -2
  401. package/dist/permissions/types.d.ts +4 -0
  402. package/dist/plan/store.js +2 -1
  403. package/dist/rpc.d.ts +39 -1
  404. package/dist/rpc.js +3 -0
  405. package/dist/sandbox/bash.js +11 -8
  406. package/dist/sandbox/detect.js +14 -11
  407. package/dist/sdk.d.ts +17 -1
  408. package/dist/sdk.js +29 -7
  409. package/dist/session/export.js +31 -30
  410. package/dist/session/manager.d.ts +1 -1
  411. package/dist/session/manager.js +5 -3
  412. package/dist/session/reuse.js +5 -4
  413. package/dist/session/scan.js +3 -2
  414. package/dist/session/stats-aggregate.d.ts +3 -1
  415. package/dist/session/stats-aggregate.js +5 -1
  416. package/dist/session/stats-index.js +2 -1
  417. package/dist/session/stats-scan.d.ts +4 -1
  418. package/dist/session/stats-scan.js +6 -2
  419. package/dist/session/store.d.ts +11 -0
  420. package/dist/session/store.js +48 -1
  421. package/dist/session/types.d.ts +2 -0
  422. package/dist/skills/builtin.js +2 -1
  423. package/dist/tools/image-file.d.ts +26 -1
  424. package/dist/tools/image-file.js +55 -13
  425. package/dist/tools/presets.d.ts +14 -1
  426. package/dist/tools/presets.js +3 -3
  427. package/dist/tools/registry.js +1 -1
  428. package/dist/tools/truncate.d.ts +1 -1
  429. package/dist/tools/truncate.js +2 -2
  430. package/dist/tools/types.d.ts +17 -1
  431. package/dist/trace/build-index.d.ts +91 -0
  432. package/dist/trace/build-index.js +127 -0
  433. package/dist/trace/build-nodes.d.ts +24 -0
  434. package/dist/trace/build-nodes.js +279 -0
  435. package/dist/trace/build-util.d.ts +43 -0
  436. package/dist/trace/build-util.js +120 -0
  437. package/dist/trace/build.d.ts +82 -0
  438. package/dist/trace/build.js +382 -0
  439. package/dist/trace/detail.d.ts +35 -0
  440. package/dist/trace/detail.js +205 -0
  441. package/dist/trace/flatten.d.ts +69 -0
  442. package/dist/trace/flatten.js +173 -0
  443. package/dist/trace/format.d.ts +47 -0
  444. package/dist/trace/format.js +329 -0
  445. package/dist/trace/html-template.d.ts +19 -0
  446. package/dist/trace/html-template.js +150 -0
  447. package/dist/trace/html.d.ts +104 -0
  448. package/dist/trace/html.js +292 -0
  449. package/dist/trace/preview.d.ts +29 -0
  450. package/dist/trace/preview.js +59 -0
  451. package/dist/trace/query-session.d.ts +14 -0
  452. package/dist/trace/query-session.js +38 -0
  453. package/dist/trace/query.d.ts +55 -0
  454. package/dist/trace/query.js +188 -0
  455. package/dist/trace/session.d.ts +40 -0
  456. package/dist/trace/session.js +168 -0
  457. package/dist/trace/types.d.ts +243 -0
  458. package/dist/trace/types.js +13 -0
  459. package/dist/tui/components/editor-paste.d.ts +2 -0
  460. package/dist/tui/components/editor-paste.js +6 -3
  461. package/dist/tui/components/editor.js +2 -2
  462. package/dist/tui/components/loader.d.ts +3 -0
  463. package/dist/tui/components/loader.js +14 -0
  464. package/dist/tui/components/select-list.d.ts +2 -0
  465. package/dist/tui/components/select-list.js +7 -0
  466. package/dist/tui/components/settings-list.d.ts +61 -0
  467. package/dist/tui/components/settings-list.js +135 -0
  468. package/dist/tui/keybindings.d.ts +5 -0
  469. package/dist/tui/keybindings.js +17 -5
  470. package/dist/tui.d.ts +1 -0
  471. package/dist/tui.js +2 -0
  472. package/docs/en/host-api.md +167 -0
  473. package/docs/en/permissions.md +214 -0
  474. package/docs/en/providers.md +627 -0
  475. package/docs/en/rpc.md +361 -0
  476. package/docs/en/sessions.md +219 -0
  477. package/docs/en/tui.md +534 -0
  478. package/docs/host-api.md +18 -17
  479. package/docs/memory.md +172 -0
  480. package/docs/permissions.md +2 -2
  481. package/docs/providers.md +73 -1
  482. package/docs/rpc.md +31 -3
  483. package/docs/session-format.md +8 -2
  484. package/docs/sessions.md +29 -1
  485. package/docs/tui.md +140 -4
  486. package/package.json +8 -3
@@ -0,0 +1,72 @@
1
+ /**
2
+ * 全部领域的汇总(docs/wave6-plan.md §5.1、D23)。[W6-C0] 一次登记全部领域,之后无人再改本文件:
3
+ * 各批次只改自己的 `messages/<领域>.ts`。
4
+ *
5
+ * 领域 → 所有者:cli / subcommands(I1);interactive / approval / plan / rewind / panels / permissions(I2);
6
+ * report / print / drivers / session / errors(I3);config(I4);agents(A);trace(T1 / T2);
7
+ * memory(M);auth(O);settings(S)。
8
+ */
9
+ import * as cli from "./messages/cli.js";
10
+ import * as subcommands from "./messages/subcommands.js";
11
+ import * as interactive from "./messages/interactive.js";
12
+ import * as approval from "./messages/approval.js";
13
+ import * as plan from "./messages/plan.js";
14
+ import * as rewind from "./messages/rewind.js";
15
+ import * as panels from "./messages/panels.js";
16
+ import * as permissions from "./messages/permissions.js";
17
+ import * as report from "./messages/report.js";
18
+ import * as print from "./messages/print.js";
19
+ import * as config from "./messages/config.js";
20
+ import * as drivers from "./messages/drivers.js";
21
+ import * as session from "./messages/session.js";
22
+ import * as errors from "./messages/errors.js";
23
+ import * as agents from "./messages/agents.js";
24
+ import * as trace from "./messages/trace.js";
25
+ import * as memory from "./messages/memory.js";
26
+ import * as auth from "./messages/auth.js";
27
+ import * as settings from "./messages/settings.js";
28
+ const en = {
29
+ cli: cli.en,
30
+ subcommands: subcommands.en,
31
+ interactive: interactive.en,
32
+ approval: approval.en,
33
+ plan: plan.en,
34
+ rewind: rewind.en,
35
+ panels: panels.en,
36
+ permissions: permissions.en,
37
+ report: report.en,
38
+ print: print.en,
39
+ config: config.en,
40
+ drivers: drivers.en,
41
+ session: session.en,
42
+ errors: errors.en,
43
+ agents: agents.en,
44
+ trace: trace.en,
45
+ memory: memory.en,
46
+ auth: auth.en,
47
+ settings: settings.en,
48
+ };
49
+ const zh = {
50
+ cli: cli.zh,
51
+ subcommands: subcommands.zh,
52
+ interactive: interactive.zh,
53
+ approval: approval.zh,
54
+ plan: plan.zh,
55
+ rewind: rewind.zh,
56
+ panels: panels.zh,
57
+ permissions: permissions.zh,
58
+ report: report.zh,
59
+ print: print.zh,
60
+ config: config.zh,
61
+ drivers: drivers.zh,
62
+ session: session.zh,
63
+ errors: errors.zh,
64
+ agents: agents.zh,
65
+ trace: trace.zh,
66
+ memory: memory.zh,
67
+ auth: auth.zh,
68
+ settings: settings.zh,
69
+ };
70
+ export const CATALOGS = { en, zh };
71
+ /** 领域名(一级命名空间)。 */
72
+ export const MESSAGE_DOMAINS = Object.keys(en);
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 与语言无关的格式化小工具(docs/wave6-plan.md §5.1;R8 §2.4)。[W6-C0]
3
+ *
4
+ * - `plural`:只有英文需要复数;中文文案直接写「N 个文件」,不调它。
5
+ * - `formatDuration`:紧凑时长,两种语言共用(`45s`、`2m 10s`、`1h24m`);长句里的「7 分钟」走消息目录。
6
+ * 现有 4 处各自实现(`status-bar.ts`、`session-report.ts`、`tool-summary.ts`、`print-mode.ts`)由各迁移批次
7
+ * 改用这里的变体,前提是 zh 黄金字节不变(`short` / `precise` 两个变体就是为此保留的)。
8
+ * - 数字(`formatTokens` / `formatUsd` / `formatPercent`)与日期(ISO)保持原样,不本地化。
9
+ */
10
+ /**
11
+ * 英文复数:`plural(1, "file")` → `1 file`,`plural(3, "file")` → `3 files`;
12
+ * 不规则词给第三参数:`plural(2, "entry", "entries")`。
13
+ */
14
+ export declare function plural(n: number, word: string, pluralForm?: string): string;
15
+ /**
16
+ * 时长的紧凑写法。
17
+ * - `compact`(缺省):`45s`、`2m 10s`、`2m`、`1h24m`、`3h`;
18
+ * - `short`:状态行用(与 `status-bar.ts` 逐字节相同),`45s`、`2m`、`1h0m`、`1h24m`;
19
+ * - `precise`:工具耗时用,`2.1s`(< 10 s 一位小数)、`45s`、`1m05s`。
20
+ */
21
+ export declare function formatDuration(ms: number, style?: "compact" | "short" | "precise"): string;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * 与语言无关的格式化小工具(docs/wave6-plan.md §5.1;R8 §2.4)。[W6-C0]
3
+ *
4
+ * - `plural`:只有英文需要复数;中文文案直接写「N 个文件」,不调它。
5
+ * - `formatDuration`:紧凑时长,两种语言共用(`45s`、`2m 10s`、`1h24m`);长句里的「7 分钟」走消息目录。
6
+ * 现有 4 处各自实现(`status-bar.ts`、`session-report.ts`、`tool-summary.ts`、`print-mode.ts`)由各迁移批次
7
+ * 改用这里的变体,前提是 zh 黄金字节不变(`short` / `precise` 两个变体就是为此保留的)。
8
+ * - 数字(`formatTokens` / `formatUsd` / `formatPercent`)与日期(ISO)保持原样,不本地化。
9
+ */
10
+ let enRules;
11
+ function isOne(n) {
12
+ try {
13
+ enRules ??= new Intl.PluralRules("en");
14
+ return enRules.select(n) === "one";
15
+ }
16
+ catch {
17
+ // small-icu / 无 Intl 的环境保底
18
+ return n === 1;
19
+ }
20
+ }
21
+ /**
22
+ * 英文复数:`plural(1, "file")` → `1 file`,`plural(3, "file")` → `3 files`;
23
+ * 不规则词给第三参数:`plural(2, "entry", "entries")`。
24
+ */
25
+ export function plural(n, word, pluralForm) {
26
+ return `${n} ${isOne(n) ? word : (pluralForm ?? `${word}s`)}`;
27
+ }
28
+ /**
29
+ * 时长的紧凑写法。
30
+ * - `compact`(缺省):`45s`、`2m 10s`、`2m`、`1h24m`、`3h`;
31
+ * - `short`:状态行用(与 `status-bar.ts` 逐字节相同),`45s`、`2m`、`1h0m`、`1h24m`;
32
+ * - `precise`:工具耗时用,`2.1s`(< 10 s 一位小数)、`45s`、`1m05s`。
33
+ */
34
+ export function formatDuration(ms, style = "compact") {
35
+ const safe = Number.isFinite(ms) ? Math.max(0, ms) : 0;
36
+ if (style === "precise") {
37
+ const s = safe / 1000;
38
+ if (s < 10)
39
+ return `${s.toFixed(1)}s`;
40
+ if (s < 60)
41
+ return `${Math.floor(s)}s`;
42
+ const total = Math.floor(s);
43
+ return `${Math.floor(total / 60)}m${String(total % 60).padStart(2, "0")}s`;
44
+ }
45
+ const seconds = Math.floor(safe / 1000);
46
+ if (seconds < 60)
47
+ return `${seconds}s`;
48
+ const minutes = Math.floor(seconds / 60);
49
+ if (minutes < 60) {
50
+ const rest = seconds % 60;
51
+ return style === "short" || rest === 0 ? `${minutes}m` : `${minutes}m ${rest}s`;
52
+ }
53
+ const hours = Math.floor(minutes / 60);
54
+ const restMinutes = minutes % 60;
55
+ if (style === "short")
56
+ return `${hours}h${restMinutes}m`;
57
+ return restMinutes === 0 ? `${hours}h` : `${hours}h${restMinutes}m`;
58
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * 界面语言(docs/wave6-plan.md §5.1、§5.2、D18;docs/i18n.md)。[W6-C0]
3
+ *
4
+ * - 语言优先级:`AMA_LANG` > `--lang` > `ui.language`(`auto` 视为未设)> `LC_ALL` / `LC_MESSAGES` /
5
+ * `LANG` 第一个非空值;`/^zh/i` → zh,其余(含 `C` / `POSIX` / 空 / 判断不出)→ en。
6
+ * - 进程启动时定一次(`cli/main.ts` 解析参数与配置后、任何渲染前 `setLocale()`;SDK `createRuntime({ language })`
7
+ * 与 profile `language` 同理),不做运行中切换。未调用 `setLocale` 时首次取用按环境变量推断。
8
+ * - 取用:`const m = msg().print; io.stderr(m.limitTurns(limit))`——嵌套属性访问,不用字符串键;
9
+ * **不要在模块顶层求值**(顶层 `const x = msg()…` 会按 import 时的语言定死,`scripts/check-i18n.mjs` 会拦)。
10
+ * - **给模型的文本固定英文、不走这里**:模型侧模块禁止 import `src/i18n`(`src/i18n/guard.test.ts`)。
11
+ */
12
+ import { type Catalog } from "./catalog.js";
13
+ export type { Catalog } from "./catalog.js";
14
+ export { MESSAGE_DOMAINS } from "./catalog.js";
15
+ export type { Messages, MessageLeaf } from "./types.js";
16
+ export { formatDuration, plural } from "./format.js";
17
+ export type Locale = "zh" | "en";
18
+ export declare const LOCALES: readonly Locale[];
19
+ /** `ui.language` 的取值。 */
20
+ export type LanguageSetting = "auto" | Locale;
21
+ export declare const LANGUAGE_SETTINGS: readonly LanguageSetting[];
22
+ /** 语言从哪里来(`ama doctor` 显示「界面语言:zh(来源 LANG=zh_CN.UTF-8)」)。 */
23
+ export type LocaleSource = {
24
+ kind: "env";
25
+ name: "AMA_LANG";
26
+ value: string;
27
+ } | {
28
+ kind: "cli";
29
+ } | {
30
+ kind: "config";
31
+ } | {
32
+ kind: "locale";
33
+ name: "LC_ALL" | "LC_MESSAGES" | "LANG";
34
+ value: string;
35
+ } | {
36
+ kind: "default";
37
+ };
38
+ /** 把 `zh` / `zh_CN.UTF-8` / `en-US` 之类的写法归一;不是 zh / en 的返回 undefined。 */
39
+ export declare function parseLocale(value: string | undefined): Locale | undefined;
40
+ /** 解析语言并给出来源。 */
41
+ export declare function resolveLocaleWithSource(env: NodeJS.ProcessEnv, config?: {
42
+ language?: LanguageSetting | undefined;
43
+ }, cli?: Locale): {
44
+ locale: Locale;
45
+ source: LocaleSource;
46
+ };
47
+ /** 解析语言(见文件头的优先级)。 */
48
+ export declare function resolveLocale(env: NodeJS.ProcessEnv, config?: {
49
+ language?: LanguageSetting | undefined;
50
+ }, cli?: Locale): Locale;
51
+ /** 定下本进程的界面语言(启动时调用一次;测试 setup 钉 zh)。 */
52
+ export declare function setLocale(locale: Locale): void;
53
+ /** 当前界面语言;未 `setLocale` 时按环境变量推断(不缓存,便于 SDK 嵌入方之后再定)。 */
54
+ export declare function getLocale(): Locale;
55
+ /** 当前语言的消息目录。 */
56
+ export declare function msg(): Catalog;
57
+ /** 指定语言的消息目录(导出产物按导出时语言渲染等场景)。 */
58
+ export declare function messagesFor(locale: Locale): Catalog;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * 界面语言(docs/wave6-plan.md §5.1、§5.2、D18;docs/i18n.md)。[W6-C0]
3
+ *
4
+ * - 语言优先级:`AMA_LANG` > `--lang` > `ui.language`(`auto` 视为未设)> `LC_ALL` / `LC_MESSAGES` /
5
+ * `LANG` 第一个非空值;`/^zh/i` → zh,其余(含 `C` / `POSIX` / 空 / 判断不出)→ en。
6
+ * - 进程启动时定一次(`cli/main.ts` 解析参数与配置后、任何渲染前 `setLocale()`;SDK `createRuntime({ language })`
7
+ * 与 profile `language` 同理),不做运行中切换。未调用 `setLocale` 时首次取用按环境变量推断。
8
+ * - 取用:`const m = msg().print; io.stderr(m.limitTurns(limit))`——嵌套属性访问,不用字符串键;
9
+ * **不要在模块顶层求值**(顶层 `const x = msg()…` 会按 import 时的语言定死,`scripts/check-i18n.mjs` 会拦)。
10
+ * - **给模型的文本固定英文、不走这里**:模型侧模块禁止 import `src/i18n`(`src/i18n/guard.test.ts`)。
11
+ */
12
+ import { CATALOGS } from "./catalog.js";
13
+ export { MESSAGE_DOMAINS } from "./catalog.js";
14
+ export { formatDuration, plural } from "./format.js";
15
+ export const LOCALES = ["zh", "en"];
16
+ export const LANGUAGE_SETTINGS = ["auto", "zh", "en"];
17
+ /** 把 `zh` / `zh_CN.UTF-8` / `en-US` 之类的写法归一;不是 zh / en 的返回 undefined。 */
18
+ export function parseLocale(value) {
19
+ if (value === undefined)
20
+ return undefined;
21
+ const v = value.trim();
22
+ if (/^zh/i.test(v))
23
+ return "zh";
24
+ if (/^en/i.test(v))
25
+ return "en";
26
+ return undefined;
27
+ }
28
+ const LOCALE_VARS = ["LC_ALL", "LC_MESSAGES", "LANG"];
29
+ /** 解析语言并给出来源。 */
30
+ export function resolveLocaleWithSource(env, config, cli) {
31
+ const ama = env["AMA_LANG"];
32
+ const fromEnv = parseLocale(ama);
33
+ if (fromEnv !== undefined && ama !== undefined)
34
+ return { locale: fromEnv, source: { kind: "env", name: "AMA_LANG", value: ama } };
35
+ if (cli !== undefined)
36
+ return { locale: cli, source: { kind: "cli" } };
37
+ const configured = config?.language;
38
+ if (configured === "zh" || configured === "en")
39
+ return { locale: configured, source: { kind: "config" } };
40
+ for (const name of LOCALE_VARS) {
41
+ const value = env[name];
42
+ if (value === undefined || value === "")
43
+ continue;
44
+ // 第一个非空值说了算:zh* → zh,其余(en_US、C、POSIX…)→ en
45
+ return {
46
+ locale: parseLocale(value) === "zh" ? "zh" : "en",
47
+ source: { kind: "locale", name, value },
48
+ };
49
+ }
50
+ return { locale: "en", source: { kind: "default" } };
51
+ }
52
+ /** 解析语言(见文件头的优先级)。 */
53
+ export function resolveLocale(env, config, cli) {
54
+ return resolveLocaleWithSource(env, config, cli).locale;
55
+ }
56
+ let current;
57
+ /** 定下本进程的界面语言(启动时调用一次;测试 setup 钉 zh)。 */
58
+ export function setLocale(locale) {
59
+ current = locale;
60
+ }
61
+ /** 当前界面语言;未 `setLocale` 时按环境变量推断(不缓存,便于 SDK 嵌入方之后再定)。 */
62
+ export function getLocale() {
63
+ return current ?? resolveLocale(process.env);
64
+ }
65
+ /** 当前语言的消息目录。 */
66
+ export function msg() {
67
+ return CATALOGS[getLocale()];
68
+ }
69
+ /** 指定语言的消息目录(导出产物按导出时语言渲染等场景)。 */
70
+ export function messagesFor(locale) {
71
+ return CATALOGS[locale];
72
+ }
@@ -0,0 +1,84 @@
1
+ /**
2
+ * 消息目录:agents(键名规范见 docs/i18n.md)。[W6-C0 建空壳,归 W6-A]
3
+ *
4
+ * en 是形状源;zh 用 `satisfies Messages<typeof en>`,缺键 / 多键 / 参数不符在 tsc 期报错。
5
+ * 整句一个键、禁止片段拼接;插值写成函数,条件分支写进函数体。
6
+ *
7
+ * W6-A:Agent 栏(状态、轮数、溢出行、按键提示)与子 Agent 视图(标题、占位、发送结果、外部 Agent 的说明)。
8
+ */
9
+ export declare const en: {
10
+ status: {
11
+ queued: string;
12
+ running: string;
13
+ approval: string;
14
+ completed: string;
15
+ failed: string;
16
+ aborted: string;
17
+ max_turns: string;
18
+ interrupted: string;
19
+ };
20
+ turns: (n: number) => string;
21
+ bar: {
22
+ more: (n: number) => string;
23
+ keys: (up: string, down: string) => string;
24
+ empty: string;
25
+ };
26
+ view: {
27
+ back: string;
28
+ stopHint: (taskId: string) => string;
29
+ paused: string;
30
+ placeholder: (taskId: string) => string;
31
+ steered: (taskId: string) => string;
32
+ queued: (taskId: string) => string;
33
+ resumed: (taskId: string) => string;
34
+ sendFailed: (message: string) => string;
35
+ stopped: (taskId: string) => string;
36
+ commandsHere: string;
37
+ removed: (taskId: string) => string;
38
+ unknown: (taskId: string) => string;
39
+ turn: (n: number) => string;
40
+ waiting: string;
41
+ noTranscript: string;
42
+ loadFailed: (message: string) => string;
43
+ externalGone: (runner: string, sessionId: string) => string;
44
+ externalNoSession: (runner: string) => string;
45
+ };
46
+ };
47
+ export declare const zh: {
48
+ status: {
49
+ queued: string;
50
+ running: string;
51
+ approval: string;
52
+ completed: string;
53
+ failed: string;
54
+ aborted: string;
55
+ max_turns: string;
56
+ interrupted: string;
57
+ };
58
+ turns: (n: number) => string;
59
+ bar: {
60
+ more: (n: number) => string;
61
+ keys: (up: string, down: string) => string;
62
+ empty: string;
63
+ };
64
+ view: {
65
+ back: string;
66
+ stopHint: (taskId: string) => string;
67
+ paused: string;
68
+ placeholder: (taskId: string) => string;
69
+ steered: (taskId: string) => string;
70
+ queued: (taskId: string) => string;
71
+ resumed: (taskId: string) => string;
72
+ sendFailed: (message: string) => string;
73
+ stopped: (taskId: string) => string;
74
+ commandsHere: string;
75
+ removed: (taskId: string) => string;
76
+ unknown: (taskId: string) => string;
77
+ turn: (n: number) => string;
78
+ waiting: string;
79
+ noTranscript: string;
80
+ loadFailed: (message: string) => string;
81
+ externalGone: (runner: string, sessionId: string) => string;
82
+ externalNoSession: (runner: string) => string;
83
+ };
84
+ };
@@ -0,0 +1,85 @@
1
+ /**
2
+ * 消息目录:agents(键名规范见 docs/i18n.md)。[W6-C0 建空壳,归 W6-A]
3
+ *
4
+ * en 是形状源;zh 用 `satisfies Messages<typeof en>`,缺键 / 多键 / 参数不符在 tsc 期报错。
5
+ * 整句一个键、禁止片段拼接;插值写成函数,条件分支写进函数体。
6
+ *
7
+ * W6-A:Agent 栏(状态、轮数、溢出行、按键提示)与子 Agent 视图(标题、占位、发送结果、外部 Agent 的说明)。
8
+ */
9
+ import { plural } from "../format.js";
10
+ export const en = {
11
+ status: {
12
+ queued: "queued",
13
+ running: "running",
14
+ approval: "needs approval",
15
+ completed: "done",
16
+ failed: "failed",
17
+ aborted: "stopped",
18
+ max_turns: "out of turns",
19
+ interrupted: "interrupted",
20
+ },
21
+ turns: (n) => plural(n, "turn"),
22
+ bar: {
23
+ more: (n) => `${n} more`,
24
+ keys: (up, down) => `${up}${down} select · Enter open · Esc back`,
25
+ empty: "No sub-agent tasks yet",
26
+ },
27
+ view: {
28
+ back: "Esc back",
29
+ stopHint: (taskId) => `/tasks stop ${taskId} to stop`,
30
+ paused: "paused · End to follow",
31
+ placeholder: (taskId) => `Message ${taskId}`,
32
+ steered: (taskId) => `Sent to ${taskId}; delivered when its current turn ends`,
33
+ queued: (taskId) => `Queued for ${taskId}; sent when its current run ends`,
34
+ resumed: (taskId) => `Sent to ${taskId}; it continues in the background`,
35
+ sendFailed: (message) => `Could not send: ${message}`,
36
+ stopped: (taskId) => `Stopped ${taskId}`,
37
+ commandsHere: "Only /tasks stop works here; press Esc to go back for other commands",
38
+ removed: (taskId) => `Task ${taskId} is gone`,
39
+ unknown: (taskId) => `No task ${taskId}`,
40
+ turn: (n) => `turn ${n}`,
41
+ waiting: "Waiting for output…",
42
+ noTranscript: "No transcript for this task",
43
+ loadFailed: (message) => `Could not read the transcript: ${message}`,
44
+ externalGone: (runner, sessionId) => `Live output is kept only in memory. Run ${runner} and resume ${sessionId} to see the full transcript.`,
45
+ externalNoSession: (runner) => `Live output is kept only in memory; ${runner} did not report a session to resume.`,
46
+ },
47
+ };
48
+ export const zh = {
49
+ status: {
50
+ queued: "排队",
51
+ running: "运行中",
52
+ approval: "等待审批",
53
+ completed: "完成",
54
+ failed: "失败",
55
+ aborted: "已停止",
56
+ max_turns: "轮数耗尽",
57
+ interrupted: "已中断",
58
+ },
59
+ turns: (n) => `${n} 轮`,
60
+ bar: {
61
+ more: (n) => `另 ${n} 个`,
62
+ keys: (up, down) => `${up}${down} 选择 · Enter 打开 · Esc 返回`,
63
+ empty: "还没有子 Agent 任务",
64
+ },
65
+ view: {
66
+ back: "Esc 返回",
67
+ stopHint: (taskId) => `/tasks stop ${taskId} 停止`,
68
+ paused: "已暂停跟随 · End 继续",
69
+ placeholder: (taskId) => `发给 ${taskId}`,
70
+ steered: (taskId) => `已发给 ${taskId},本轮结束后送达`,
71
+ queued: (taskId) => `已排队,${taskId} 本次运行结束后发送`,
72
+ resumed: (taskId) => `已发给 ${taskId},在后台继续`,
73
+ sendFailed: (message) => `发送失败:${message}`,
74
+ stopped: (taskId) => `已停止 ${taskId}`,
75
+ commandsHere: "这里只能用 /tasks stop;其它命令按 Esc 返回后输入",
76
+ removed: (taskId) => `任务 ${taskId} 已不存在`,
77
+ unknown: (taskId) => `没有任务 ${taskId}`,
78
+ turn: (n) => `第 ${n} 轮`,
79
+ waiting: "等待输出…",
80
+ noTranscript: "这个任务没有对话记录",
81
+ loadFailed: (message) => `读取对话记录失败:${message}`,
82
+ externalGone: (runner, sessionId) => `实时输出只在内存里。用 ${runner} resume ${sessionId} 查看全文。`,
83
+ externalNoSession: (runner) => `实时输出只在内存里;${runner} 没有报告可续接的会话。`,
84
+ },
85
+ };
@@ -0,0 +1,99 @@
1
+ /**
2
+ * 消息目录:approval(键名规范见 docs/i18n.md)。[W6-C0 建空壳,归 W6-I2]
3
+ *
4
+ * en 是形状源;zh 用 `satisfies Messages<typeof en>`,缺键 / 多键 / 参数不符在 tsc 期报错。
5
+ * 整句一个键、禁止片段拼接;插值写成函数,条件分支写进函数体。
6
+ *
7
+ * 审批对话框(`modes/interactive/approval-dialog.ts`)、通用确认框(`confirm-dialog.ts`)与行式审批。
8
+ */
9
+ export declare const en: {
10
+ /** 外部 Agent 来源标注:`[claude · session abc12345]`。 */
11
+ originLabel: (agent: string, sessionId: string) => string;
12
+ /** 标题里的原因。 */
13
+ title: {
14
+ firstRun: string;
15
+ dangerous: string;
16
+ hook: string;
17
+ confirm: string;
18
+ };
19
+ /** 首行工具名右侧的标签。 */
20
+ tag: {
21
+ dangerous: string;
22
+ hook: string;
23
+ firstRun: string;
24
+ confirm: string;
25
+ };
26
+ morePaths: (n: number) => string;
27
+ moreLines: (n: number) => string;
28
+ moreLinesView: (n: number) => string;
29
+ moreEdits: (n: number) => string;
30
+ firstRunMode: (mode: string) => string;
31
+ writeLines: (n: number) => string;
32
+ editCount: (n: number) => string;
33
+ externalRunner: (agent: string, runner: string) => string;
34
+ originAsks: (agent: string) => string;
35
+ firstRunLogin: string;
36
+ hookReason: (reason: string | undefined) => string;
37
+ dangerousWarn: string;
38
+ autoReason: (layer: string, reason: string) => string;
39
+ modeNeedsConfirm: (mode: string) => string;
40
+ option: {
41
+ allow: string;
42
+ allowSession: string;
43
+ deny: string;
44
+ };
45
+ hint: (arrows: string) => string;
46
+ hintCompact: (arrows: string) => string;
47
+ /** 消息区里的结果说明。 */
48
+ outcome: {
49
+ allow: (what: string) => string;
50
+ allowSession: (what: string) => string;
51
+ deny: (what: string) => string;
52
+ cancelled: (what: string) => string;
53
+ };
54
+ /** 通用确认框的按键行。 */
55
+ choiceHint: (arrows: string, n: number) => string;
56
+ };
57
+ export declare const zh: {
58
+ originLabel: (agent: string, sessionId: string) => string;
59
+ title: {
60
+ firstRun: string;
61
+ dangerous: string;
62
+ hook: string;
63
+ confirm: string;
64
+ };
65
+ tag: {
66
+ dangerous: string;
67
+ hook: string;
68
+ firstRun: string;
69
+ confirm: string;
70
+ };
71
+ morePaths: (n: number) => string;
72
+ moreLines: (n: number) => string;
73
+ moreLinesView: (n: number) => string;
74
+ moreEdits: (n: number) => string;
75
+ firstRunMode: (mode: string) => string;
76
+ writeLines: (n: number) => string;
77
+ editCount: (n: number) => string;
78
+ externalRunner: (agent: string, runner: string) => string;
79
+ originAsks: (agent: string) => string;
80
+ firstRunLogin: string;
81
+ hookReason: (reason: string | undefined) => string;
82
+ dangerousWarn: string;
83
+ autoReason: (layer: string, reason: string) => string;
84
+ modeNeedsConfirm: (mode: string) => string;
85
+ option: {
86
+ allow: string;
87
+ allowSession: string;
88
+ deny: string;
89
+ };
90
+ hint: (arrows: string) => string;
91
+ hintCompact: (arrows: string) => string;
92
+ outcome: {
93
+ allow: (what: string) => string;
94
+ allowSession: (what: string) => string;
95
+ deny: (what: string) => string;
96
+ cancelled: (what: string) => string;
97
+ };
98
+ choiceHint: (arrows: string, n: number) => string;
99
+ };
@@ -0,0 +1,100 @@
1
+ /**
2
+ * 消息目录:approval(键名规范见 docs/i18n.md)。[W6-C0 建空壳,归 W6-I2]
3
+ *
4
+ * en 是形状源;zh 用 `satisfies Messages<typeof en>`,缺键 / 多键 / 参数不符在 tsc 期报错。
5
+ * 整句一个键、禁止片段拼接;插值写成函数,条件分支写进函数体。
6
+ *
7
+ * 审批对话框(`modes/interactive/approval-dialog.ts`)、通用确认框(`confirm-dialog.ts`)与行式审批。
8
+ */
9
+ import { plural } from "../format.js";
10
+ export const en = {
11
+ /** 外部 Agent 来源标注:`[claude · session abc12345]`。 */
12
+ originLabel: (agent, sessionId) => `[${agent} · session ${sessionId}]`,
13
+ /** 标题里的原因。 */
14
+ title: {
15
+ firstRun: "First run of an external agent",
16
+ dangerous: "Dangerous command",
17
+ hook: "Hook asks for confirmation",
18
+ confirm: "Needs confirmation",
19
+ },
20
+ /** 首行工具名右侧的标签。 */
21
+ tag: {
22
+ dangerous: "Dangerous command",
23
+ hook: "Hook asks for confirmation",
24
+ firstRun: "First run",
25
+ confirm: "Needs confirmation",
26
+ },
27
+ morePaths: (n) => `… ${plural(n, "more path")}`,
28
+ moreLines: (n) => `… ${plural(n, "more line")}`,
29
+ moreLinesView: (n) => `… ${plural(n, "more line")} (v to view)`,
30
+ moreEdits: (n) => `… ${plural(n, "more edit")}`,
31
+ firstRunMode: (mode) => `Mode ${mode}`,
32
+ writeLines: (n) => `writes ${plural(n, "line")}`,
33
+ editCount: (n) => plural(n, "edit"),
34
+ externalRunner: (agent, runner) => `External agent ${agent}: runs with your ${runner} CLI login (includes this session's first-run confirmation)`,
35
+ originAsks: (agent) => `${agent} asks for confirmation`,
36
+ firstRunLogin: "First run of this CLI with your login in this session",
37
+ hookReason: (reason) => `Hook: ${reason ?? "(no reason given)"}`,
38
+ dangerousWarn: "This command may be destructive; please confirm",
39
+ autoReason: (layer, reason) => `Auto ${layer}: ${reason}`,
40
+ modeNeedsConfirm: (mode) => `Confirmation required in permission mode ${mode}`,
41
+ option: {
42
+ allow: "Allow",
43
+ allowSession: "Allow for this session",
44
+ deny: "Deny",
45
+ },
46
+ hint: (arrows) => `${arrows} select · Enter confirm · v full input`,
47
+ hintCompact: (arrows) => `${arrows} Enter · v full input`,
48
+ /** 消息区里的结果说明。 */
49
+ outcome: {
50
+ allow: (what) => `Allowed ${what}`,
51
+ allowSession: (what) => `Allowed ${what} (similar calls won't ask again this session)`,
52
+ deny: (what) => `Denied ${what}`,
53
+ cancelled: (what) => `Approval cancelled (timeout or interrupt): ${what}`,
54
+ },
55
+ /** 通用确认框的按键行。 */
56
+ choiceHint: (arrows, n) => `${arrows} select · Enter confirm · 1-${n} pick · Esc cancel`,
57
+ };
58
+ export const zh = {
59
+ originLabel: (agent, sessionId) => `[${agent} · 会话 ${sessionId}]`,
60
+ title: {
61
+ firstRun: "首次运行外部 Agent",
62
+ dangerous: "危险命令",
63
+ hook: "Hook 要求确认",
64
+ confirm: "需要确认",
65
+ },
66
+ tag: {
67
+ dangerous: "危险命令",
68
+ hook: "Hook 要求确认",
69
+ firstRun: "首次运行",
70
+ confirm: "需要确认",
71
+ },
72
+ morePaths: (n) => `… 另 ${n} 个路径`,
73
+ moreLines: (n) => `… 另 ${n} 行`,
74
+ moreLinesView: (n) => `… 另 ${n} 行(v 查看)`,
75
+ moreEdits: (n) => `… 另 ${n} 处`,
76
+ firstRunMode: (mode) => `模式 ${mode}`,
77
+ writeLines: (n) => `写入 ${n} 行`,
78
+ editCount: (n) => `${n} 处修改`,
79
+ externalRunner: (agent, runner) => `外部 Agent ${agent}:以你在 ${runner} CLI 的登录运行(含本会话首次运行确认)`,
80
+ originAsks: (agent) => `${agent} 请求确认`,
81
+ firstRunLogin: "本会话首次以你的登录运行该 CLI",
82
+ hookReason: (reason) => `Hook:${reason ?? "(无说明)"}`,
83
+ dangerousWarn: "这条命令可能有破坏性,请确认",
84
+ autoReason: (layer, reason) => `Auto ${layer}:${reason}`,
85
+ modeNeedsConfirm: (mode) => `权限模式 ${mode} 下需要确认`,
86
+ option: {
87
+ allow: "允许",
88
+ allowSession: "本会话允许同类",
89
+ deny: "拒绝",
90
+ },
91
+ hint: (arrows) => `${arrows} 选择 · Enter 确认 · v 完整输入`,
92
+ hintCompact: (arrows) => `${arrows} Enter · v 完整输入`,
93
+ outcome: {
94
+ allow: (what) => `已允许 ${what}`,
95
+ allowSession: (what) => `已允许 ${what}(本会话同类不再询问)`,
96
+ deny: (what) => `已拒绝 ${what}`,
97
+ cancelled: (what) => `审批已取消(超时或中断):${what}`,
98
+ },
99
+ choiceHint: (arrows, n) => `${arrows} 选择 · Enter 确认 · 1-${n} 直接选 · Esc 取消`,
100
+ };