@armadra/agent 0.8.0 → 0.8.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 (512) hide show
  1. package/CHANGELOG.md +39 -32
  2. package/CHANGELOG.zh-CN.md +56 -49
  3. package/README.md +162 -204
  4. package/README.zh-CN.md +150 -199
  5. package/dist/acp.d.ts +1 -1
  6. package/dist/acp.js +1 -1
  7. package/dist/agent/limits.d.ts +1 -1
  8. package/dist/agent/limits.js +1 -1
  9. package/dist/agent/loop-guard.d.ts +1 -1
  10. package/dist/agent/loop-guard.js +1 -1
  11. package/dist/agent/prompt-rules.d.ts +1 -1
  12. package/dist/agent/prompt-rules.js +1 -1
  13. package/dist/agent/reminders.d.ts +1 -1
  14. package/dist/agent/reminders.js +1 -1
  15. package/dist/agent/session-cache-key.d.ts +1 -1
  16. package/dist/agent/session-cache-key.js +1 -1
  17. package/dist/agent/session-extensions.d.ts +1 -1
  18. package/dist/agent/session-extensions.js +1 -1
  19. package/dist/agent/session-images.d.ts +1 -1
  20. package/dist/agent/session-images.js +1 -1
  21. package/dist/agent/session-plan.d.ts +1 -1
  22. package/dist/agent/session-plan.js +1 -1
  23. package/dist/agent/session-rewind.d.ts +1 -1
  24. package/dist/agent/session-rewind.js +1 -1
  25. package/dist/agent/session-settings.d.ts +1 -1
  26. package/dist/agent/session-settings.js +1 -1
  27. package/dist/agent/session-subagent.d.ts +1 -1
  28. package/dist/agent/session-subagent.js +1 -1
  29. package/dist/agent/session-telemetry.d.ts +1 -1
  30. package/dist/agent/session-telemetry.js +1 -1
  31. package/dist/agent/session-trace-writer.d.ts +1 -1
  32. package/dist/agent/session-trace-writer.js +1 -1
  33. package/dist/agent/session.js +1 -1
  34. package/dist/agent/subagent-background.d.ts +1 -1
  35. package/dist/agent/subagent-background.js +1 -1
  36. package/dist/agent/subagent-direct.d.ts +1 -1
  37. package/dist/agent/subagent-direct.js +1 -1
  38. package/dist/agent/subagent-fork.d.ts +1 -1
  39. package/dist/agent/subagent-fork.js +1 -1
  40. package/dist/agent/subagent-registry.d.ts +1 -1
  41. package/dist/agent/subagent-registry.js +1 -1
  42. package/dist/agent/system-prompt.js +1 -1
  43. package/dist/agent/tool-availability.d.ts +1 -1
  44. package/dist/agent/tool-availability.js +1 -1
  45. package/dist/agent/types-w5.d.ts +2 -2
  46. package/dist/agent/types-w5.js +1 -1
  47. package/dist/agent/types-w6.d.ts +1 -1
  48. package/dist/agent/types-w6.js +1 -1
  49. package/dist/agent/types.d.ts +1 -1
  50. package/dist/agent/worktree.d.ts +1 -1
  51. package/dist/agent/worktree.js +1 -1
  52. package/dist/agents/builtin.d.ts +1 -1
  53. package/dist/agents/builtin.js +1 -1
  54. package/dist/agents/catalog.d.ts +1 -1
  55. package/dist/agents/catalog.js +1 -1
  56. package/dist/agents/discover.d.ts +1 -1
  57. package/dist/agents/discover.js +1 -1
  58. package/dist/agents/external.d.ts +1 -1
  59. package/dist/agents/external.js +1 -1
  60. package/dist/agents/parse.d.ts +1 -1
  61. package/dist/agents/parse.js +1 -1
  62. package/dist/agents/result.d.ts +1 -1
  63. package/dist/agents/result.js +2 -2
  64. package/dist/agents/task-record.d.ts +3 -3
  65. package/dist/agents/task-record.js +2 -2
  66. package/dist/agents/types.d.ts +1 -1
  67. package/dist/agents/types.js +1 -1
  68. package/dist/ai/apis/anthropic-compat.d.ts +2 -2
  69. package/dist/ai/apis/anthropic-compat.js +2 -2
  70. package/dist/ai/apis/cache-params.d.ts +1 -1
  71. package/dist/ai/apis/cache-params.js +1 -1
  72. package/dist/ai/apis/chatgpt-backend.d.ts +1 -1
  73. package/dist/ai/apis/chatgpt-backend.js +1 -1
  74. package/dist/ai/apis/chatgpt-rate-limits.d.ts +1 -1
  75. package/dist/ai/apis/chatgpt-rate-limits.js +1 -1
  76. package/dist/ai/apis/max-tokens.d.ts +1 -1
  77. package/dist/ai/apis/max-tokens.js +1 -1
  78. package/dist/ai/apis/shared.d.ts +1 -1
  79. package/dist/ai/apis/shared.js +1 -1
  80. package/dist/ai/image-intern.d.ts +2 -2
  81. package/dist/ai/image-intern.js +1 -1
  82. package/dist/ai/image-limits.d.ts +1 -1
  83. package/dist/ai/image-limits.js +1 -1
  84. package/dist/ai/json-body.d.ts +1 -1
  85. package/dist/ai/json-body.js +1 -1
  86. package/dist/ai/providers/builtin.d.ts +2 -2
  87. package/dist/ai/providers/builtin.js +4 -4
  88. package/dist/ai/providers/catalog.d.ts +2 -2
  89. package/dist/ai/providers/catalog.js +1 -1
  90. package/dist/ai/providers/channels.d.ts +1 -1
  91. package/dist/ai/providers/channels.js +1 -1
  92. package/dist/ai/providers/enrich.d.ts +1 -1
  93. package/dist/ai/providers/enrich.js +1 -1
  94. package/dist/ai/providers/models-dev-cache.d.ts +1 -1
  95. package/dist/ai/providers/models-dev-cache.js +1 -1
  96. package/dist/ai/providers/models-dev-data.d.ts +1 -1
  97. package/dist/ai/providers/models-dev-data.js +1 -1
  98. package/dist/ai/providers/models-dev-snapshot.d.ts +1 -1
  99. package/dist/ai/providers/models-dev-snapshot.js +1 -1
  100. package/dist/ai/providers/models-dev.d.ts +4 -4
  101. package/dist/ai/providers/models-dev.js +3 -3
  102. package/dist/ai/types.d.ts +2 -2
  103. package/dist/ai/types.js +1 -1
  104. package/dist/auth/chatgpt/cli.d.ts +1 -1
  105. package/dist/auth/chatgpt/cli.js +1 -1
  106. package/dist/auth/chatgpt/host-id.d.ts +1 -1
  107. package/dist/auth/chatgpt/host-id.js +1 -1
  108. package/dist/auth/chatgpt/login.d.ts +1 -1
  109. package/dist/auth/chatgpt/login.js +1 -1
  110. package/dist/auth/chatgpt/presets.d.ts +1 -1
  111. package/dist/auth/chatgpt/presets.js +1 -1
  112. package/dist/auth/oauth/callback-server.d.ts +1 -1
  113. package/dist/auth/oauth/callback-server.js +1 -1
  114. package/dist/auth/oauth/flows.d.ts +1 -1
  115. package/dist/auth/oauth/flows.js +1 -1
  116. package/dist/auth/oauth/oidc.d.ts +1 -1
  117. package/dist/auth/oauth/oidc.js +1 -1
  118. package/dist/auth/oauth/pkce.d.ts +1 -1
  119. package/dist/auth/oauth/pkce.js +1 -1
  120. package/dist/auth/oauth/refresh.d.ts +1 -1
  121. package/dist/auth/oauth/refresh.js +1 -1
  122. package/dist/auth/oauth/token-client.d.ts +1 -1
  123. package/dist/auth/oauth/token-client.js +1 -1
  124. package/dist/auth/oauth/token-store.d.ts +1 -1
  125. package/dist/auth/oauth/token-store.js +1 -1
  126. package/dist/auth/testing/fake-oauth.d.ts +1 -1
  127. package/dist/auth/testing/fake-oauth.js +1 -1
  128. package/dist/bundle/ama.cjs +24 -24
  129. package/dist/checkpoints/blobs.d.ts +1 -1
  130. package/dist/checkpoints/blobs.js +1 -1
  131. package/dist/checkpoints/gc.d.ts +1 -1
  132. package/dist/checkpoints/gc.js +1 -1
  133. package/dist/checkpoints/git-head.d.ts +1 -1
  134. package/dist/checkpoints/git-head.js +1 -1
  135. package/dist/checkpoints/index.d.ts +1 -1
  136. package/dist/checkpoints/index.js +1 -1
  137. package/dist/checkpoints/replay.d.ts +1 -1
  138. package/dist/checkpoints/replay.js +1 -1
  139. package/dist/checkpoints/restore.d.ts +1 -1
  140. package/dist/checkpoints/restore.js +1 -1
  141. package/dist/checkpoints/settings.d.ts +1 -1
  142. package/dist/checkpoints/settings.js +1 -1
  143. package/dist/checkpoints/shadow-git.d.ts +1 -1
  144. package/dist/checkpoints/shadow-git.js +1 -1
  145. package/dist/checkpoints/shadow-restore.d.ts +1 -1
  146. package/dist/checkpoints/shadow-restore.js +1 -1
  147. package/dist/checkpoints/tracker.d.ts +1 -1
  148. package/dist/checkpoints/tracker.js +1 -1
  149. package/dist/checkpoints/types.d.ts +1 -1
  150. package/dist/checkpoints/types.js +1 -1
  151. package/dist/cli/args.d.ts +2 -2
  152. package/dist/cli/args.js +1 -1
  153. package/dist/cli/bootstrap.js +1 -1
  154. package/dist/cli/choice-prompt.d.ts +1 -1
  155. package/dist/cli/choice-prompt.js +1 -1
  156. package/dist/cli/codemode-notice.d.ts +1 -1
  157. package/dist/cli/codemode-notice.js +1 -1
  158. package/dist/cli/compose-agents.d.ts +1 -1
  159. package/dist/cli/compose-agents.js +1 -1
  160. package/dist/cli/compose-extensions.d.ts +1 -1
  161. package/dist/cli/compose-extensions.js +1 -1
  162. package/dist/cli/compose-memory.d.ts +1 -1
  163. package/dist/cli/compose-memory.js +1 -1
  164. package/dist/cli/compose-providers.d.ts +1 -1
  165. package/dist/cli/compose-providers.js +1 -1
  166. package/dist/cli/compose-request.d.ts +1 -1
  167. package/dist/cli/compose-request.js +1 -1
  168. package/dist/cli/from-prompt.d.ts +1 -1
  169. package/dist/cli/from-prompt.js +1 -1
  170. package/dist/cli/main.d.ts +1 -1
  171. package/dist/cli/main.js +1 -1
  172. package/dist/cli/subcommands/auth.d.ts +1 -1
  173. package/dist/cli/subcommands/auth.js +1 -1
  174. package/dist/cli/subcommands/config-set.d.ts +1 -1
  175. package/dist/cli/subcommands/config-set.js +1 -1
  176. package/dist/cli/subcommands/doctor.js +1 -1
  177. package/dist/cli/subcommands/init.d.ts +1 -1
  178. package/dist/cli/subcommands/init.js +1 -1
  179. package/dist/cli/subcommands/memory.d.ts +1 -1
  180. package/dist/cli/subcommands/memory.js +1 -1
  181. package/dist/cli/subcommands/models.js +1 -1
  182. package/dist/cli/subcommands/providers-list.d.ts +1 -1
  183. package/dist/cli/subcommands/providers-list.js +1 -1
  184. package/dist/cli/subcommands/providers-plan.d.ts +1 -1
  185. package/dist/cli/subcommands/providers-plan.js +1 -1
  186. package/dist/cli/subcommands/providers.d.ts +1 -1
  187. package/dist/cli/subcommands/providers.js +1 -1
  188. package/dist/cli/subcommands/sessions-export.d.ts +1 -1
  189. package/dist/cli/subcommands/sessions-export.js +1 -1
  190. package/dist/cli/subcommands/sessions-trace.d.ts +1 -1
  191. package/dist/cli/subcommands/sessions-trace.js +1 -1
  192. package/dist/cli/subcommands/sessions.d.ts +1 -1
  193. package/dist/cli/subcommands/sessions.js +1 -1
  194. package/dist/cli/subcommands/stats.d.ts +1 -1
  195. package/dist/cli/subcommands/stats.js +1 -1
  196. package/dist/codemode/capability.d.ts +1 -1
  197. package/dist/codemode/capability.js +1 -1
  198. package/dist/codemode/host-side.d.ts +2 -2
  199. package/dist/codemode/host-side.js +2 -2
  200. package/dist/compaction/image-budget.d.ts +1 -1
  201. package/dist/compaction/image-budget.js +1 -1
  202. package/dist/config/edit.d.ts +1 -1
  203. package/dist/config/edit.js +1 -1
  204. package/dist/config/init.d.ts +1 -1
  205. package/dist/config/init.js +1 -1
  206. package/dist/config/json-schema.d.ts +2 -2
  207. package/dist/config/json-schema.js +2 -2
  208. package/dist/config/schema-w5.d.ts +1 -1
  209. package/dist/config/schema-w5.js +1 -1
  210. package/dist/config/schema-w6.d.ts +1 -1
  211. package/dist/config/schema-w6.js +1 -1
  212. package/dist/config/settings-registry.d.ts +1 -1
  213. package/dist/config/settings-registry.js +1 -1
  214. package/dist/config/types-w5.d.ts +2 -2
  215. package/dist/config/types-w5.js +2 -2
  216. package/dist/config/types-w6.d.ts +5 -5
  217. package/dist/config/types-w6.js +1 -1
  218. package/dist/config/types.d.ts +6 -6
  219. package/dist/config/types.js +1 -1
  220. package/dist/drivers/acp/client.d.ts +1 -1
  221. package/dist/drivers/acp/client.js +1 -1
  222. package/dist/drivers/acp/driver.d.ts +1 -1
  223. package/dist/drivers/acp/driver.js +1 -1
  224. package/dist/drivers/acp/testing/fake-agent.d.ts +1 -1
  225. package/dist/drivers/acp/testing/fake-agent.js +1 -1
  226. package/dist/drivers/acp/types.d.ts +1 -1
  227. package/dist/drivers/acp/types.js +1 -1
  228. package/dist/drivers/agents.d.ts +1 -1
  229. package/dist/drivers/agents.js +1 -1
  230. package/dist/drivers/base.d.ts +1 -1
  231. package/dist/drivers/base.js +1 -1
  232. package/dist/drivers/catalog.d.ts +1 -1
  233. package/dist/drivers/catalog.js +1 -1
  234. package/dist/drivers/env.d.ts +1 -1
  235. package/dist/drivers/env.js +1 -1
  236. package/dist/drivers/host-runners.d.ts +1 -1
  237. package/dist/drivers/host-runners.js +1 -1
  238. package/dist/drivers/jsonrpc.d.ts +1 -1
  239. package/dist/drivers/jsonrpc.js +1 -1
  240. package/dist/drivers/native/claude-normalize.d.ts +1 -1
  241. package/dist/drivers/native/claude-normalize.js +1 -1
  242. package/dist/drivers/native/claude-stream.d.ts +1 -1
  243. package/dist/drivers/native/claude-stream.js +1 -1
  244. package/dist/drivers/native/codex-app-server.d.ts +1 -1
  245. package/dist/drivers/native/codex-app-server.js +1 -1
  246. package/dist/drivers/native/codex-normalize.d.ts +1 -1
  247. package/dist/drivers/native/codex-normalize.js +1 -1
  248. package/dist/drivers/native/oneshot.d.ts +1 -1
  249. package/dist/drivers/native/oneshot.js +1 -1
  250. package/dist/drivers/permissions.d.ts +1 -1
  251. package/dist/drivers/permissions.js +1 -1
  252. package/dist/drivers/pids.d.ts +1 -1
  253. package/dist/drivers/pids.js +1 -1
  254. package/dist/drivers/pool.d.ts +1 -1
  255. package/dist/drivers/pool.js +1 -1
  256. package/dist/drivers/probe.d.ts +1 -1
  257. package/dist/drivers/probe.js +1 -1
  258. package/dist/drivers/process.d.ts +1 -1
  259. package/dist/drivers/process.js +1 -1
  260. package/dist/drivers/runner.d.ts +1 -1
  261. package/dist/drivers/runner.js +1 -1
  262. package/dist/drivers/store.d.ts +1 -1
  263. package/dist/drivers/store.js +1 -1
  264. package/dist/drivers/types.d.ts +1 -1
  265. package/dist/drivers/types.js +1 -1
  266. package/dist/git/info.d.ts +1 -1
  267. package/dist/git/info.js +1 -1
  268. package/dist/host/api-impl.d.ts +1 -1
  269. package/dist/host/api-impl.js +1 -1
  270. package/dist/host/types.d.ts +2 -2
  271. package/dist/i18n/catalog.d.ts +2 -2
  272. package/dist/i18n/catalog.js +2 -2
  273. package/dist/i18n/format.d.ts +1 -1
  274. package/dist/i18n/format.js +1 -1
  275. package/dist/i18n/index.d.ts +1 -1
  276. package/dist/i18n/index.js +1 -1
  277. package/dist/i18n/messages/acp.d.ts +1 -1
  278. package/dist/i18n/messages/acp.js +1 -1
  279. package/dist/i18n/messages/agents.d.ts +1 -1
  280. package/dist/i18n/messages/agents.js +1 -1
  281. package/dist/i18n/messages/approval.d.ts +1 -1
  282. package/dist/i18n/messages/approval.js +1 -1
  283. package/dist/i18n/messages/auth.d.ts +1 -1
  284. package/dist/i18n/messages/auth.js +1 -1
  285. package/dist/i18n/messages/cli.d.ts +1 -1
  286. package/dist/i18n/messages/cli.js +1 -1
  287. package/dist/i18n/messages/config-keys.js +12 -12
  288. package/dist/i18n/messages/config.d.ts +1 -1
  289. package/dist/i18n/messages/config.js +3 -3
  290. package/dist/i18n/messages/drivers.d.ts +1 -1
  291. package/dist/i18n/messages/drivers.js +1 -1
  292. package/dist/i18n/messages/errors.d.ts +1 -1
  293. package/dist/i18n/messages/errors.js +1 -1
  294. package/dist/i18n/messages/interactive-line.d.ts +1 -1
  295. package/dist/i18n/messages/interactive-line.js +1 -1
  296. package/dist/i18n/messages/interactive-startup.d.ts +1 -1
  297. package/dist/i18n/messages/interactive-startup.js +1 -1
  298. package/dist/i18n/messages/interactive-view.d.ts +1 -1
  299. package/dist/i18n/messages/interactive-view.js +1 -1
  300. package/dist/i18n/messages/interactive.d.ts +1 -1
  301. package/dist/i18n/messages/interactive.js +1 -1
  302. package/dist/i18n/messages/memory.d.ts +1 -1
  303. package/dist/i18n/messages/memory.js +1 -1
  304. package/dist/i18n/messages/panels.d.ts +1 -1
  305. package/dist/i18n/messages/panels.js +1 -1
  306. package/dist/i18n/messages/permissions.d.ts +1 -1
  307. package/dist/i18n/messages/permissions.js +1 -1
  308. package/dist/i18n/messages/plan.d.ts +1 -1
  309. package/dist/i18n/messages/plan.js +1 -1
  310. package/dist/i18n/messages/print.d.ts +2 -2
  311. package/dist/i18n/messages/print.js +2 -2
  312. package/dist/i18n/messages/report-context.d.ts +1 -1
  313. package/dist/i18n/messages/report-context.js +1 -1
  314. package/dist/i18n/messages/report.d.ts +1 -1
  315. package/dist/i18n/messages/report.js +1 -1
  316. package/dist/i18n/messages/rewind.d.ts +1 -1
  317. package/dist/i18n/messages/rewind.js +1 -1
  318. package/dist/i18n/messages/session.d.ts +1 -1
  319. package/dist/i18n/messages/session.js +1 -1
  320. package/dist/i18n/messages/settings.d.ts +1 -1
  321. package/dist/i18n/messages/settings.js +1 -1
  322. package/dist/i18n/messages/subcommands.d.ts +1 -1
  323. package/dist/i18n/messages/subcommands.js +1 -1
  324. package/dist/i18n/messages/trace.d.ts +1 -1
  325. package/dist/i18n/messages/trace.js +1 -1
  326. package/dist/i18n/types.d.ts +1 -1
  327. package/dist/i18n/types.js +1 -1
  328. package/dist/memory/frontmatter.d.ts +1 -1
  329. package/dist/memory/frontmatter.js +1 -1
  330. package/dist/memory/index.d.ts +1 -1
  331. package/dist/memory/index.js +1 -1
  332. package/dist/memory/lock.d.ts +1 -1
  333. package/dist/memory/lock.js +1 -1
  334. package/dist/memory/paths.d.ts +1 -1
  335. package/dist/memory/paths.js +1 -1
  336. package/dist/memory/runtime.d.ts +1 -1
  337. package/dist/memory/runtime.js +1 -1
  338. package/dist/memory/secrets.d.ts +1 -1
  339. package/dist/memory/secrets.js +1 -1
  340. package/dist/memory/section.d.ts +1 -1
  341. package/dist/memory/section.js +1 -1
  342. package/dist/memory/store.d.ts +1 -1
  343. package/dist/memory/store.js +1 -1
  344. package/dist/memory/tool.d.ts +1 -1
  345. package/dist/memory/tool.js +1 -1
  346. package/dist/modes/acp/acp-auth-gate.d.ts +1 -1
  347. package/dist/modes/acp/acp-auth-gate.js +1 -1
  348. package/dist/modes/acp/acp-config.d.ts +1 -1
  349. package/dist/modes/acp/acp-config.js +1 -1
  350. package/dist/modes/acp/acp-connection.d.ts +1 -1
  351. package/dist/modes/acp/acp-connection.js +1 -1
  352. package/dist/modes/acp/acp-events.d.ts +1 -1
  353. package/dist/modes/acp/acp-events.js +1 -1
  354. package/dist/modes/acp/acp-mode.d.ts +1 -1
  355. package/dist/modes/acp/acp-mode.js +1 -1
  356. package/dist/modes/acp/acp-server.d.ts +2 -2
  357. package/dist/modes/acp/acp-server.js +2 -2
  358. package/dist/modes/acp/acp-sessions.d.ts +2 -2
  359. package/dist/modes/acp/acp-sessions.js +2 -2
  360. package/dist/modes/acp/acp-tool-text.d.ts +1 -1
  361. package/dist/modes/acp/acp-tool-text.js +1 -1
  362. package/dist/modes/commands-core.js +1 -1
  363. package/dist/modes/image-input.d.ts +1 -1
  364. package/dist/modes/image-input.js +1 -1
  365. package/dist/modes/interactive/agent-bar.d.ts +1 -1
  366. package/dist/modes/interactive/agent-bar.js +1 -1
  367. package/dist/modes/interactive/agent-transcript.d.ts +1 -1
  368. package/dist/modes/interactive/agent-transcript.js +1 -1
  369. package/dist/modes/interactive/agent-view.d.ts +1 -1
  370. package/dist/modes/interactive/agent-view.js +1 -1
  371. package/dist/modes/interactive/approval-dock.d.ts +1 -1
  372. package/dist/modes/interactive/approval-dock.js +1 -1
  373. package/dist/modes/interactive/config-panel.d.ts +1 -1
  374. package/dist/modes/interactive/config-panel.js +1 -1
  375. package/dist/modes/interactive/config-ui.d.ts +1 -1
  376. package/dist/modes/interactive/config-ui.js +1 -1
  377. package/dist/modes/interactive/memory-panel.d.ts +1 -1
  378. package/dist/modes/interactive/memory-panel.js +1 -1
  379. package/dist/modes/interactive/plan-command.d.ts +1 -1
  380. package/dist/modes/interactive/plan-command.js +1 -1
  381. package/dist/modes/interactive/plan-dialog.d.ts +1 -1
  382. package/dist/modes/interactive/plan-dialog.js +1 -1
  383. package/dist/modes/interactive/plan-flow.d.ts +1 -1
  384. package/dist/modes/interactive/plan-flow.js +1 -1
  385. package/dist/modes/interactive/subagent-view.d.ts +1 -1
  386. package/dist/modes/interactive/subagent-view.js +1 -1
  387. package/dist/modes/interactive/task-background.d.ts +1 -1
  388. package/dist/modes/interactive/task-background.js +1 -1
  389. package/dist/modes/interactive/trace-view.d.ts +1 -1
  390. package/dist/modes/interactive/trace-view.js +1 -1
  391. package/dist/modes/print/json-event.d.ts +1 -1
  392. package/dist/modes/print/json-event.js +2 -2
  393. package/dist/modes/print/print-mode.d.ts +1 -1
  394. package/dist/modes/print/print-mode.js +1 -1
  395. package/dist/modes/print/search-hint.d.ts +1 -1
  396. package/dist/modes/print/search-hint.js +1 -1
  397. package/dist/modes/rpc/commands.js +2 -2
  398. package/dist/permissions/auto-safe.d.ts +1 -1
  399. package/dist/permissions/auto-safe.js +1 -1
  400. package/dist/permissions/bypass.d.ts +1 -1
  401. package/dist/permissions/bypass.js +1 -1
  402. package/dist/permissions/classifier.d.ts +1 -1
  403. package/dist/permissions/classifier.js +1 -1
  404. package/dist/permissions/memory-class.d.ts +1 -1
  405. package/dist/permissions/memory-class.js +1 -1
  406. package/dist/permissions/pipeline.d.ts +2 -2
  407. package/dist/permissions/pipeline.js +2 -2
  408. package/dist/permissions/protected.d.ts +1 -1
  409. package/dist/permissions/protected.js +1 -1
  410. package/dist/permissions/readonly-bash.d.ts +1 -1
  411. package/dist/permissions/readonly-bash.js +1 -1
  412. package/dist/permissions/types.d.ts +2 -2
  413. package/dist/plan/done-markers.d.ts +1 -1
  414. package/dist/plan/done-markers.js +1 -1
  415. package/dist/plan/extract.d.ts +1 -1
  416. package/dist/plan/extract.js +1 -1
  417. package/dist/plan/prompts.d.ts +1 -1
  418. package/dist/plan/prompts.js +1 -1
  419. package/dist/plan/store.d.ts +1 -1
  420. package/dist/plan/store.js +1 -1
  421. package/dist/rpc.d.ts +3 -3
  422. package/dist/rpc.js +3 -3
  423. package/dist/sandbox/bash.d.ts +1 -1
  424. package/dist/sandbox/bash.js +1 -1
  425. package/dist/sandbox/detect.d.ts +1 -1
  426. package/dist/sandbox/detect.js +1 -1
  427. package/dist/sandbox/index.d.ts +1 -1
  428. package/dist/sandbox/index.js +1 -1
  429. package/dist/sandbox/profile.d.ts +1 -1
  430. package/dist/sandbox/profile.js +1 -1
  431. package/dist/sandbox/wrap.d.ts +1 -1
  432. package/dist/sandbox/wrap.js +1 -1
  433. package/dist/sdk.d.ts +3 -3
  434. package/dist/sdk.js +2 -2
  435. package/dist/session/line-reader.d.ts +1 -1
  436. package/dist/session/line-reader.js +1 -1
  437. package/dist/session/list.d.ts +1 -1
  438. package/dist/session/list.js +1 -1
  439. package/dist/session/migrate.d.ts +1 -1
  440. package/dist/session/migrate.js +1 -1
  441. package/dist/session/store.d.ts +1 -1
  442. package/dist/session/store.js +1 -1
  443. package/dist/skills/builtin.js +2 -2
  444. package/dist/tools/background-jobs.d.ts +1 -1
  445. package/dist/tools/background-jobs.js +1 -1
  446. package/dist/tools/clipboard-image.d.ts +1 -1
  447. package/dist/tools/clipboard-image.js +1 -1
  448. package/dist/tools/edit.d.ts +1 -1
  449. package/dist/tools/edit.js +1 -1
  450. package/dist/tools/grep.d.ts +1 -1
  451. package/dist/tools/grep.js +1 -1
  452. package/dist/tools/image-resize.d.ts +1 -1
  453. package/dist/tools/image-resize.js +1 -1
  454. package/dist/tools/read-lines.d.ts +1 -1
  455. package/dist/tools/read-lines.js +1 -1
  456. package/dist/tools/read.d.ts +1 -1
  457. package/dist/tools/read.js +1 -1
  458. package/dist/tools/task-ctl.d.ts +1 -1
  459. package/dist/tools/task-ctl.js +1 -1
  460. package/dist/tools/task.d.ts +2 -2
  461. package/dist/tools/task.js +2 -2
  462. package/dist/tools/types.d.ts +3 -3
  463. package/dist/tools/types.js +1 -1
  464. package/dist/trace/build.d.ts +1 -1
  465. package/dist/trace/build.js +1 -1
  466. package/dist/trace/detail.d.ts +1 -1
  467. package/dist/trace/detail.js +1 -1
  468. package/dist/trace/flatten.d.ts +1 -1
  469. package/dist/trace/flatten.js +1 -1
  470. package/dist/trace/format.d.ts +1 -1
  471. package/dist/trace/format.js +1 -1
  472. package/dist/trace/html-template.d.ts +1 -1
  473. package/dist/trace/html-template.js +1 -1
  474. package/dist/trace/html.d.ts +1 -1
  475. package/dist/trace/html.js +1 -1
  476. package/dist/trace/query-session.d.ts +1 -1
  477. package/dist/trace/query-session.js +1 -1
  478. package/dist/trace/query.d.ts +1 -1
  479. package/dist/trace/query.js +1 -1
  480. package/dist/trace/types.d.ts +1 -1
  481. package/dist/trace/types.js +1 -1
  482. package/dist/tui/components/settings-list.d.ts +1 -1
  483. package/dist/tui/components/settings-list.js +1 -1
  484. package/docs/README.md +85 -0
  485. package/docs/assets/ama-wordmark-dark.svg +37 -0
  486. package/docs/assets/ama-wordmark-light.svg +37 -0
  487. package/docs/en/README.md +39 -0
  488. package/docs/en/{permissions.md → guides/permissions.md} +14 -14
  489. package/docs/en/{providers.md → guides/providers.md} +6 -6
  490. package/docs/en/{sessions.md → guides/sessions.md} +6 -6
  491. package/docs/en/{tui.md → guides/tui.md} +15 -15
  492. package/docs/en/{acp.md → reference/acp.md} +6 -6
  493. package/docs/en/{host-api.md → reference/host-api.md} +7 -7
  494. package/docs/en/{rpc.md → reference/rpc.md} +13 -13
  495. package/docs/{agents.md → guides/agents.md} +13 -13
  496. package/docs/{codemode.md → guides/codemode.md} +3 -3
  497. package/docs/{hooks.md → guides/hooks.md} +2 -2
  498. package/docs/guides/i18n.md +93 -0
  499. package/docs/{memory.md → guides/memory.md} +1 -1
  500. package/docs/{permissions.md → guides/permissions.md} +2 -2
  501. package/docs/{plan.md → guides/plan.md} +4 -4
  502. package/docs/{providers.md → guides/providers.md} +4 -4
  503. package/docs/{sessions.md → guides/sessions.md} +5 -5
  504. package/docs/{tui.md → guides/tui.md} +8 -8
  505. package/docs/{acp.md → reference/acp.md} +5 -5
  506. package/docs/{host-api.md → reference/host-api.md} +4 -4
  507. package/docs/{rpc.md → reference/rpc.md} +11 -11
  508. package/docs/{session-format.md → reference/session-format.md} +7 -7
  509. package/package.json +12 -23
  510. package/docs/rewind-plan.md +0 -181
  511. package/docs/tui-design.md +0 -764
  512. /package/docs/{sandbox.md → guides/sandbox.md} +0 -0
@@ -1,181 +0,0 @@
1
- # 检查点与回滚:设计与实施计划
2
-
3
- > 状态:实施设计(2026-10-02)。基线:`main` = `95c0435`(0.4.0)。
4
- > 设计依据:`docs/design.md` §8 会话树、§9 压缩、§9.1 缓存保证、§13 SDK / RPC;对照同类终端 Agent 的检查点实现(只借鉴行为与边界,不复制代码)。
5
- > 路径相对仓库根;`[RW-x]` 为本计划的批次编号(§6)。
6
-
7
- ## §0 结论
8
-
9
- | # | 决定 | 理由 |
10
- | --- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
11
- | D1 | 回滚 = 「对话」与「代码」两件事,入口 `/rewind` 与空闲时双击 Esc;选项:对话 + 代码 / 仅对话 / 仅代码 / 从这里摘要 / 摘要到这里 / 取消 | 两者独立才能覆盖「代码写坏了但对话想留」「对话跑偏了但代码要留」 |
12
- | D2 | 检查点粒度 = 开启新回合的用户消息;运行中插话(steer)与排队消息并入当前回合,不单独建 | 回合是用户能理解的最小单位 |
13
- | D3 | 代码跟踪 edit / write(含 codemode 内层调用、task 子会话)改过的文件;每次发新回合按**当前磁盘状态**重拍已跟踪文件,所以 bash 或手动对已跟踪文件的改动也会被收进下一个检查点 | bash 任意改动不可完整追踪;已跟踪文件这样处理就不会漏 |
14
- | D4 | 备份按内容 sha256 存全局目录,多会话、多检查点共用;会话文件只记哈希 | 同内容只存一份;fork 不用迁移备份 |
15
- | D5 | 恢复前做冲突检测:磁盘内容既不等于 ama 最后写入的、也不等于最近检查点的 → 冲突,缺省跳过并列出,`onConflict: "overwrite"` 才覆盖 | 不冲掉用户在回合外的手动修改 |
16
- | D6 | git 状态不动;检查点记 HEAD,回滚时 HEAD 变了只提示并给命令 | `reset` 类操作风险高,交给用户 |
17
- | D7 | 对话回滚复用会话树(`navigate` 换叶子),被离开的分支留在文件里 | 现有能力,零迁移 |
18
- | D8 | 回滚后上下文只发新路径,前缀逐字节不变,缓存照常命中;需要告诉模型的事(文件与对话不一致)以 `custom_message` 追加在末尾 | §9.1 前缀稳定 |
19
- | D9 | `影子 git` 模式(能覆盖 bash 改动)作为可选 `checkpoints.mode: "shadow-git"`,缺省关,最后一批做 | 大仓库慢、依赖 git,不适合作缺省 |
20
-
21
- ## §1 数据模型
22
-
23
- ### §1.1 备份存储
24
-
25
- - 目录:`<dataDir>/file-history/blobs/<sha256 前 2 位>/<sha256 全长>`,内容为文件原字节(不压缩、不改换行与 BOM);先写 `<name>.tmp-<pid>` 再 rename,已存在即跳过。
26
- - 不备份:超过 `checkpoints.maxFileBytes`(缺省 5 MiB)的文件、非普通文件。记录里标 `skipped: "too_large" | "not_regular"`,回滚时报告「无法恢复」。
27
- - 内存会话(无会话文件)不建检查点,`/rewind` 只提供「仅对话」。
28
-
29
- ### §1.2 会话条目(均为 `custom`,不进上下文,不影响前缀)
30
-
31
- ```ts
32
- // customType "ama.checkpoint":新回合的用户消息条目追加之后立即追加
33
- interface CheckpointData {
34
- v: 1;
35
- userEntryId: string; // 这个检查点属于哪条用户消息(「这条消息发出前」的状态)
36
- files: Record<string, FileRecord>; // 全部已跟踪文件;键 = cwd 内相对路径(/ 分隔),cwd 外为绝对路径
37
- git?: { head: string; branch?: string }; // 直接读 .git/HEAD(含 worktree 的 gitdir 文件),不起 git 进程
38
- }
39
-
40
- // customType "ama.checkpoint-track":回合中途第一次碰某文件时追加,补进本回合的检查点
41
- interface CheckpointTrackData {
42
- v: 1;
43
- userEntryId: string;
44
- path: string;
45
- record: FileRecord;
46
- }
47
-
48
- interface FileRecord {
49
- blob: string | null; // sha256;null = 当时文件不存在(回滚时删除)
50
- mode?: number; // 普通文件的权限位
51
- size?: number;
52
- realParentDir?: string; // 记录时父目录的 realpath(恢复时校验没被移动)
53
- skipped?: "too_large" | "not_regular";
54
- }
55
- ```
56
-
57
- - 读取:按文件顺序重放全会话(不限活动分支)的两类条目,得到 `Map<userEntryId, CheckpointData>`;`checkpoint-track` 并入对应检查点。
58
- - 每个文件的第一条记录(最早的 `blob`)永久保留,作为「找不到更近记录时」的回退。
59
-
60
- ### §1.3 运行时状态(`src/checkpoints/tracker.ts`)
61
-
62
- - `trackedFiles: Set<string>`、最近检查点、`lastWritten: Map<路径, sha256>`(ama 最后一次写入后的内容哈希,用于冲突检测;只在内存,恢复会话后以最近检查点为准)。
63
- - 检查点上限 `checkpoints.keep`(缺省 100):超出时较早检查点不再列为回滚点;备份由 GC 清理(§1.4)。
64
-
65
- ### §1.4 清理
66
-
67
- - `ama sessions prune` 与删除会话时:标记 —— 扫描所有会话文件里的 `ama.checkpoint*` 引用;清除 —— 删除未被引用且 mtime 超过 1 天的 blob。
68
- - `ama doctor` 显示 file-history 占用。
69
-
70
- ## §2 时机
71
-
72
- | 时机 | 动作 |
73
- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
74
- | 新回合用户消息落盘后(`runPrompt`,steer / 排队并入的不算) | 对每个已跟踪文件:lstat → 不存在记 `null`;size / mode 与上一条记录一致且 mtime 不晚于记录时间 → 沿用;否则读内容算 sha256,等于上一条则沿用,不等则写 blob。追加 `ama.checkpoint` |
75
- | edit / write 写文件**之前**(`ctx.checkpoint?.beforeWrite(abs)`) | 文件在任何检查点里都没出现过 → 备份当前内容(不存在记 `null`),追加 `ama.checkpoint-track`,加入 `trackedFiles`;出现过则什么都不做 |
76
- | edit / write 写文件**之后**(`ctx.checkpoint?.afterWrite(abs, bytes)`) | 记 `lastWritten` |
77
- | task 子会话 | 子会话的 `ctx.checkpoint` 指向父会话的 tracker,记到父会话当前回合 |
78
- | codemode 内层调用 | 走同一工具上下文,天然覆盖 |
79
-
80
- `beforeWrite` 失败(磁盘满、权限)只记 warn,不阻止写入(与对照实现一致:检查点是辅助,不能让编辑失败)。
81
-
82
- ## §3 回滚
83
-
84
- ### §3.1 API(`AgentSession`,SDK 同名,RPC 见 §5)
85
-
86
- 类型见 `src/checkpoints/types.ts`(`RewindPoint`、`RewindRequest`、`RewindResult`、`CodeRestoreResult`):
87
-
88
- ```ts
89
- rewindPoints(): RewindPoint[]; // 活动路径上的新回合用户消息,从旧到新
90
- rewind(request: RewindRequest): Promise<RewindResult>;
91
- ```
92
-
93
- `dryRun` 的 `code` 字段给出将恢复的文件与 `insertions / deletions`,界面的每行统计与确认预览都用它(懒计算,只对选中项)。
94
-
95
- - 运行中调用抛 `AmaError("busy")`。全部失败且无一恢复 → `AmaError("rewind_failed", "没有文件被恢复…")`。
96
-
97
- ### §3.2 恢复代码(`src/checkpoints/restore.ts`)
98
-
99
- 对每个已跟踪文件,取目标检查点里的记录,没有则取该文件最早的记录:
100
-
101
- 1. 记录 `skipped` → 报告 `too_large` / `not_regular`。
102
- 2. 当前内容与记录相同 → 跳过(不计入)。
103
- 3. 冲突检测:当前 sha256 ∉ {`lastWritten`,最近检查点的记录} → 冲突;`skip` 时列入 `conflicts` 不动。
104
- 4. 安全检查(不通过 → `skipped`):目标是符号链接 / 非普通文件 / `nlink > 1`;父目录 realpath ≠ `realParentDir`。
105
- 5. `blob: null` → 删除文件(只删普通文件)。
106
- 6. 否则写回:Windows 以外用 `O_NOFOLLOW` 打开目标,`fstat` 与路径 `lstat` 的 dev / ino 一致才写;清空后写入 blob 内容,恢复 `mode`;目标不存在时按需创建父目录(再次校验父目录)。
107
- 7. 被恢复 / 删除的文件从 `readFiles` 移除(模型再改前必须重新 read)。
108
-
109
- `dryRun` 只做 1–4 并用行级 diff 计 `insertions / deletions`(复用 `tools/edit` 的 diff 实现)。
110
-
111
- ### §3.3 回滚对话(`src/agent/session-rewind.ts`)
112
-
113
- 1. `navigate(userEntry.parentId)`(已有:换叶子、重载消息、`cache.onContextChanged()`)。
114
- 2. `readFiles` 按新路径重算:路径上成功的 read 工具调用的绝对路径(不跨分支保留)。
115
- 3. 返回 `draft`:原消息文本与图片,交互界面回填输入框。
116
- 4. 模型、思考级别、权限模式保持当前(文档写明)。
117
-
118
- ### §3.4 文件与对话不一致时告诉模型
119
-
120
- - 仅对话:若有已跟踪文件当前内容 ≠ 目标检查点 → 下一次提示前追加 `custom_message{customType:"ama.rewind-note"}`:「回滚到较早的对话,但以下文件保留了之后的修改:…(最多 20 个,其余计数)」。
121
- - 仅代码:追加「以下文件已恢复到第 N 条消息之前的状态:…」。
122
- - 对话 + 代码:两边一致,不追加。
123
- - 该条目在回滚落点之后、下一条用户消息之前,只追加在末尾,不改前缀。
124
-
125
- ### §3.5 摘要两项
126
-
127
- - 「从这里摘要」= `navigate(parentId, { summarize: true })`(已有 `branch_summary`,走会话前缀续写),并回填原消息。
128
- - 「摘要到这里」= 以所选用户消息为切点做一次档二压缩(`compaction` 条目的 `firstKeptEntryId` = 该消息),之后的消息原样保留,停在末尾。可附说明(`instructions`)。
129
-
130
- ### §3.6 中断即撤回
131
-
132
- 运行中 Esc 中断,且本回合还没有任何 assistant 文本 / 工具调用、输入框为空 → 自动 `rewind(当前回合, "conversation")` 并回填原消息(配置 `ui.restoreOnCancel`,缺省 true)。
133
-
134
- ## §4 交互
135
-
136
- - 空闲且输入框为空:双击 Esc(间隔 ≤ 800 ms,第一次提示「再按 Esc 回滚」)打开回滚列表;输入框有字:双击 Esc 清空输入并存进输入历史(↑ 可取回),第一次提示「再按 Esc 清空」。运行中 Esc 仍为中断。
137
- - 列表:活动路径上的用户消息,最近在下、缺省选中最后一条;高亮行右侧显示 `N 文件 +x −y` / `无代码改动`(对高亮项做 dryRun,结果缓存)。
138
- - 选中后:确认面板(左竖条样式,复用 `/session` 面板),显示消息原文与时间、选项(有代码改动才出现两个「恢复代码」项;两个摘要项可在行内输入说明)、预览(「将恢复 N 个文件 +x −y」/「代码不变」/ 冲突与跳过清单)、git HEAD 变化提示(附 `git log --oneline <记录>..HEAD` 与 `git reset --soft <记录>` 两条命令,不执行)。
139
- - 结果通知:`已恢复 N 个文件,跳过 M 个(原因…)`。
140
- - line 模式:`/rewind` 列编号;`/rewind <n> [both|conversation|code]`。
141
- - 文案进 i18n 风格的现有中文常量;字形走主题 glyphs(ASCII 可用)。
142
-
143
- ## §5 RPC / SDK / Hook / 配置
144
-
145
- - RPC:`get_rewind_points` → `{ points }`;`rewind { entryId, mode, dryRun?, onConflict? }` → `RewindResult`;事件 `session_rewound { entryId, mode, restored, deleted, conflicts, skipped }`。写进 `docs/rpc.md`。
146
- - SDK:`session.rewindPoints()`、`session.rewind()`。
147
- - Hook:新增命令式事件 `PostRewind`(payload `{ entryId, mode, files }`,不可阻止);`docs/hooks.md` 同步。
148
- - 配置(`key-docs.ts` 每项要说明与缺省值):
149
- - `checkpoints.mode`: `"tools"`(缺省)/ `"shadow-git"` / `"off"`;`AMA_CHECKPOINTS=off` 覆盖。
150
- - `checkpoints.maxFileBytes`: 5 242 880。
151
- - `checkpoints.keep`: 100。
152
- - `ui.restoreOnCancel`: true。
153
-
154
- ## §6 影子 git(`checkpoints.mode: "shadow-git"`)[RW-D]
155
-
156
- - 仓库:`<dataDir>/file-history/shadow/<sha256(cwd) 前 16>/`(`--git-dir`),`--work-tree=cwd`;尊重 cwd 的 `.gitignore` 与 `info/exclude`,额外排除 `.git`。
157
- - 每个新回合:`git add -A` + `write-tree` + `commit-tree`,提交 id 记进 `CheckpointData.shadowCommit`(契约里预留可选字段)。
158
- - 护栏:cwd 下文件数 > 20 000 或单次快照 > 3 s → 本会话降级为 `tools` 并提示;需要 `git` 在 PATH。
159
- - 恢复:只处理目标提交与「当前工作区快照」之间的差异文件,逐个按 §3.2 的冲突与安全检查写回或删除;不碰 `.gitignore` 掉的文件。
160
- - 与 `tools` 模式并存:edit / write 的跟踪照常(冲突检测仍以它为准)。
161
-
162
- ## §7 缓存与上下文
163
-
164
- - 回滚后第一次请求:system + tools + 落点之前的消息与回滚前发过的请求逐字节相同 → 有效期内命中;`onContextChanged()` 使这次请求成为重置点(不做未命中归因、保温作废),与现状一致。
165
- - `ama.checkpoint*` 是 `custom`,不进上下文;`ama.rewind-note` 是 `custom_message`,只出现在新落点之后。
166
- - 测试:回滚前后请求体前缀逐字节比较(`src/agent/session-rewind.test.ts`)。
167
-
168
- ## §8 批次与文件所有权
169
-
170
- 契约 PR(本计划所在 PR)先合入:`src/checkpoints/types.ts`、`ToolContext.checkpoint?`。配置 `checkpoints.*` 归 RW-A,`ui.restoreOnCancel` 与 `PostRewind` 归 RW-B(各自同步 `config/{types,schema,json-schema,key-docs}.ts` 与 `hooks/types.ts`)。之后:
171
-
172
- | 批次 | 内容 | 文件所有权 | 依赖 | 验收 |
173
- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
174
- | RW-A 检查点核心 | blob 存储、tracker、条目重放、恢复与安全检查、冲突检测、dry-run diff、GC、doctor 占用;edit / write 调 `ctx.checkpoint` | `src/checkpoints/**`(除 types.ts)、`src/tools/{edit,write}.ts` 的两处调用、`src/cli/subcommands/{sessions,doctor}.ts` 的 GC / 占用 | 契约 | 单测覆盖 §3.2 每条分支(符号链接、硬链接、父目录移动、删除、新建、冲突 skip / overwrite、too_large);三平台 CI 绿(Windows 无 O_NOFOLLOW 分支) |
175
- | RW-B 会话与接口 | `session-rewind.ts`(编排、readFiles 重算、rewind-note、摘要两项、中断即撤回)、检查点接线(runPrompt 后建检查点、子会话指向父 tracker)、RPC / SDK / `PostRewind` / 文档 | `src/agent/session-rewind.ts`(新)、`src/agent/{session,session-run,session-tools,session-subagent}.ts` 的接线、`src/modes/rpc/**`、`src/sdk.ts`、`src/hooks/**` 的事件、`docs/{rpc,hooks,sessions}.md` | 契约;RW-A 的实现可先用内存桩,合入顺序 A → B | fake 供应商端到端:edit 两个文件 → rewind both → 文件与对话都回到之前、readFiles 不含被恢复文件、下一请求前缀逐字节不变;仅对话 / 仅代码各自的 note;子会话编辑可回滚;中断即撤回 |
176
- | RW-C 交互界面 | 双击 Esc、回滚列表、确认面板、预览、git 提示、结果通知、line 模式 `/rewind` | `src/modes/interactive/**`、`src/modes/commands-core.ts`、`docs/tui.md` | RW-B | 帧黄金:列表、面板(有 / 无代码改动、冲突、git 提示)、ASCII;tmux 手测双击 Esc 两种行为 |
177
- | RW-D 影子 git | §6 | `src/checkpoints/shadow-git.ts`(新)及其测试 | RW-A | 临时 git 仓库里 bash 改动可回滚;护栏降级;无 git 时提示 |
178
-
179
- - A 与 B 并行开发(B 用桩),A 先合;C 与 D 在 B / A 合入后并行。
180
- - 每个文件 ≤ 600 行(`src/agent/session.ts` 已 600 行,新逻辑放 `session-rewind.ts`)。
181
- - 每批次细粒度提交、一个 PR、CI 绿后由主会话合并(merge commit);不发版。