@orion-agents/orion-code 0.1.8 → 0.1.9

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 (232) hide show
  1. package/CHANGELOG.md +445 -0
  2. package/README.md +15 -6
  3. package/README.zh-CN.md +26 -7
  4. package/dist/agents/coordinator.d.ts.map +1 -1
  5. package/dist/agents/coordinator.js +49 -9
  6. package/dist/agents/coordinator.js.map +1 -1
  7. package/dist/agents/fork.d.ts +5 -1
  8. package/dist/agents/fork.d.ts.map +1 -1
  9. package/dist/agents/fork.js +9 -10
  10. package/dist/agents/fork.js.map +1 -1
  11. package/dist/agents/worker-pool.d.ts.map +1 -1
  12. package/dist/agents/worker-pool.js +8 -3
  13. package/dist/agents/worker-pool.js.map +1 -1
  14. package/dist/cli.js +6 -6
  15. package/dist/cli.js.map +1 -1
  16. package/dist/commands/context-tool-command-handlers.d.ts.map +1 -1
  17. package/dist/commands/context-tool-command-handlers.js +42 -0
  18. package/dist/commands/context-tool-command-handlers.js.map +1 -1
  19. package/dist/commands/model-command-handlers.d.ts +1 -1
  20. package/dist/commands/model-command-handlers.d.ts.map +1 -1
  21. package/dist/commands/model-command-handlers.js +166 -1
  22. package/dist/commands/model-command-handlers.js.map +1 -1
  23. package/dist/commands/session-command-handlers.d.ts.map +1 -1
  24. package/dist/commands/session-command-handlers.js +97 -5
  25. package/dist/commands/session-command-handlers.js.map +1 -1
  26. package/dist/commands/session-commands.js +2 -2
  27. package/dist/commands/session-commands.js.map +1 -1
  28. package/dist/commands/types.d.ts +6 -0
  29. package/dist/commands/types.d.ts.map +1 -1
  30. package/dist/commands/types.js.map +1 -1
  31. package/dist/framework/index.d.ts +5 -3
  32. package/dist/framework/index.d.ts.map +1 -1
  33. package/dist/framework/index.js +9 -1
  34. package/dist/framework/index.js.map +1 -1
  35. package/dist/framework/query.d.ts +26 -4
  36. package/dist/framework/query.d.ts.map +1 -1
  37. package/dist/framework/query.js +319 -62
  38. package/dist/framework/query.js.map +1 -1
  39. package/dist/framework/stop-decision.d.ts +56 -0
  40. package/dist/framework/stop-decision.d.ts.map +1 -0
  41. package/dist/framework/stop-decision.js +36 -0
  42. package/dist/framework/stop-decision.js.map +1 -0
  43. package/dist/framework/tool-scheduler.d.ts +5 -0
  44. package/dist/framework/tool-scheduler.d.ts.map +1 -1
  45. package/dist/framework/tool-scheduler.js +24 -9
  46. package/dist/framework/tool-scheduler.js.map +1 -1
  47. package/dist/harness/assembler.d.ts.map +1 -1
  48. package/dist/harness/assembler.js +77 -19
  49. package/dist/harness/assembler.js.map +1 -1
  50. package/dist/harness/capability-profile.d.ts +3 -0
  51. package/dist/harness/capability-profile.d.ts.map +1 -0
  52. package/dist/harness/capability-profile.js +44 -0
  53. package/dist/harness/capability-profile.js.map +1 -0
  54. package/dist/harness/capsule.d.ts.map +1 -1
  55. package/dist/harness/capsule.js +22 -3
  56. package/dist/harness/capsule.js.map +1 -1
  57. package/dist/harness/compact-benchmark-corpus.d.ts +10 -0
  58. package/dist/harness/compact-benchmark-corpus.d.ts.map +1 -0
  59. package/dist/harness/compact-benchmark-corpus.js +56 -0
  60. package/dist/harness/compact-benchmark-corpus.js.map +1 -0
  61. package/dist/harness/context-harness.d.ts +23 -3
  62. package/dist/harness/context-harness.d.ts.map +1 -1
  63. package/dist/harness/context-harness.js +183 -11
  64. package/dist/harness/context-harness.js.map +1 -1
  65. package/dist/harness/contract.d.ts.map +1 -1
  66. package/dist/harness/contract.js +106 -11
  67. package/dist/harness/contract.js.map +1 -1
  68. package/dist/harness/drift-guard.d.ts +2 -1
  69. package/dist/harness/drift-guard.d.ts.map +1 -1
  70. package/dist/harness/drift-guard.js +315 -20
  71. package/dist/harness/drift-guard.js.map +1 -1
  72. package/dist/harness/evidence.d.ts.map +1 -1
  73. package/dist/harness/evidence.js +25 -12
  74. package/dist/harness/evidence.js.map +1 -1
  75. package/dist/harness/index.d.ts +7 -2
  76. package/dist/harness/index.d.ts.map +1 -1
  77. package/dist/harness/index.js +19 -1
  78. package/dist/harness/index.js.map +1 -1
  79. package/dist/harness/ledger.d.ts.map +1 -1
  80. package/dist/harness/ledger.js +44 -14
  81. package/dist/harness/ledger.js.map +1 -1
  82. package/dist/harness/progress-controller.d.ts +14 -0
  83. package/dist/harness/progress-controller.d.ts.map +1 -0
  84. package/dist/harness/progress-controller.js +110 -0
  85. package/dist/harness/progress-controller.js.map +1 -0
  86. package/dist/harness/state.d.ts.map +1 -1
  87. package/dist/harness/state.js +5 -2
  88. package/dist/harness/state.js.map +1 -1
  89. package/dist/harness/stop-controller.d.ts +15 -0
  90. package/dist/harness/stop-controller.d.ts.map +1 -0
  91. package/dist/harness/stop-controller.js +87 -0
  92. package/dist/harness/stop-controller.js.map +1 -0
  93. package/dist/harness/types.d.ts +137 -0
  94. package/dist/harness/types.d.ts.map +1 -1
  95. package/dist/harness/verification.d.ts +7 -0
  96. package/dist/harness/verification.d.ts.map +1 -0
  97. package/dist/harness/verification.js +122 -0
  98. package/dist/harness/verification.js.map +1 -0
  99. package/dist/index.d.ts +5 -5
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +7 -1
  102. package/dist/index.js.map +1 -1
  103. package/dist/ink-ui/screens/ReplScreen.d.ts +3 -0
  104. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
  105. package/dist/ink-ui/screens/ReplScreen.js +30 -5
  106. package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
  107. package/dist/memory/index.d.ts +1 -0
  108. package/dist/memory/index.d.ts.map +1 -1
  109. package/dist/memory/index.js +1 -0
  110. package/dist/memory/index.js.map +1 -1
  111. package/dist/memory/prompt-context.d.ts +42 -0
  112. package/dist/memory/prompt-context.d.ts.map +1 -0
  113. package/dist/memory/prompt-context.js +129 -0
  114. package/dist/memory/prompt-context.js.map +1 -0
  115. package/dist/runtime/chat-compact.d.ts +26 -0
  116. package/dist/runtime/chat-compact.d.ts.map +1 -0
  117. package/dist/runtime/chat-compact.js +132 -0
  118. package/dist/runtime/chat-compact.js.map +1 -0
  119. package/dist/runtime/chat-controller.d.ts.map +1 -1
  120. package/dist/runtime/chat-controller.js +64 -74
  121. package/dist/runtime/chat-controller.js.map +1 -1
  122. package/dist/runtime/goals/coordinator.d.ts +3 -0
  123. package/dist/runtime/goals/coordinator.d.ts.map +1 -1
  124. package/dist/runtime/goals/coordinator.js +5 -15
  125. package/dist/runtime/goals/coordinator.js.map +1 -1
  126. package/dist/runtime/goals/prompt.js +1 -1
  127. package/dist/runtime/goals/prompt.js.map +1 -1
  128. package/dist/runtime/goals/stop-policy.d.ts +9 -0
  129. package/dist/runtime/goals/stop-policy.d.ts.map +1 -0
  130. package/dist/runtime/goals/stop-policy.js +83 -0
  131. package/dist/runtime/goals/stop-policy.js.map +1 -0
  132. package/dist/runtime/goals/types.d.ts +0 -1
  133. package/dist/runtime/goals/types.d.ts.map +1 -1
  134. package/dist/runtime/goals/types.js +0 -1
  135. package/dist/runtime/goals/types.js.map +1 -1
  136. package/dist/runtime/model-coordinator.d.ts +44 -1
  137. package/dist/runtime/model-coordinator.d.ts.map +1 -1
  138. package/dist/runtime/model-coordinator.js +161 -19
  139. package/dist/runtime/model-coordinator.js.map +1 -1
  140. package/dist/runtime/subagents/index.d.ts +1 -1
  141. package/dist/runtime/subagents/index.d.ts.map +1 -1
  142. package/dist/runtime/subagents/index.js.map +1 -1
  143. package/dist/runtime/subagents/production.d.ts +6 -2
  144. package/dist/runtime/subagents/production.d.ts.map +1 -1
  145. package/dist/runtime/subagents/production.js +25 -6
  146. package/dist/runtime/subagents/production.js.map +1 -1
  147. package/dist/runtime/subagents/runner.d.ts +12 -1
  148. package/dist/runtime/subagents/runner.d.ts.map +1 -1
  149. package/dist/runtime/subagents/runner.js +62 -1
  150. package/dist/runtime/subagents/runner.js.map +1 -1
  151. package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -1
  152. package/dist/runtime/subagents/runtime-integration.js +2 -1
  153. package/dist/runtime/subagents/runtime-integration.js.map +1 -1
  154. package/dist/runtime/subagents/supervisor.d.ts.map +1 -1
  155. package/dist/runtime/subagents/supervisor.js +6 -0
  156. package/dist/runtime/subagents/supervisor.js.map +1 -1
  157. package/dist/runtime/subagents/types.d.ts +4 -1
  158. package/dist/runtime/subagents/types.d.ts.map +1 -1
  159. package/dist/runtime/subagents/types.js.map +1 -1
  160. package/dist/runtime/ui-events.d.ts +2 -0
  161. package/dist/runtime/ui-events.d.ts.map +1 -1
  162. package/dist/runtime/ui-events.js.map +1 -1
  163. package/dist/services/compact/auto-compact.d.ts +82 -2
  164. package/dist/services/compact/auto-compact.d.ts.map +1 -1
  165. package/dist/services/compact/auto-compact.js +226 -44
  166. package/dist/services/compact/auto-compact.js.map +1 -1
  167. package/dist/services/compact/compact.d.ts +54 -37
  168. package/dist/services/compact/compact.d.ts.map +1 -1
  169. package/dist/services/compact/compact.js +512 -127
  170. package/dist/services/compact/compact.js.map +1 -1
  171. package/dist/services/compact/coordinator.d.ts +5 -1
  172. package/dist/services/compact/coordinator.d.ts.map +1 -1
  173. package/dist/services/compact/coordinator.js +10 -1
  174. package/dist/services/compact/coordinator.js.map +1 -1
  175. package/dist/services/compact/fingerprint.d.ts +27 -0
  176. package/dist/services/compact/fingerprint.d.ts.map +1 -0
  177. package/dist/services/compact/fingerprint.js +69 -0
  178. package/dist/services/compact/fingerprint.js.map +1 -0
  179. package/dist/services/compact/index.d.ts +7 -5
  180. package/dist/services/compact/index.d.ts.map +1 -1
  181. package/dist/services/compact/index.js +19 -6
  182. package/dist/services/compact/index.js.map +1 -1
  183. package/dist/services/compact/planner.d.ts +41 -0
  184. package/dist/services/compact/planner.d.ts.map +1 -0
  185. package/dist/services/compact/planner.js +102 -0
  186. package/dist/services/compact/planner.js.map +1 -0
  187. package/dist/services/compact/semantic-summary.d.ts +93 -0
  188. package/dist/services/compact/semantic-summary.d.ts.map +1 -0
  189. package/dist/services/compact/semantic-summary.js +158 -0
  190. package/dist/services/compact/semantic-summary.js.map +1 -0
  191. package/dist/services/compact/summary-generator.d.ts +23 -0
  192. package/dist/services/compact/summary-generator.d.ts.map +1 -1
  193. package/dist/services/compact/summary-generator.js +173 -39
  194. package/dist/services/compact/summary-generator.js.map +1 -1
  195. package/dist/services/file-context.d.ts.map +1 -1
  196. package/dist/services/file-context.js +29 -33
  197. package/dist/services/file-context.js.map +1 -1
  198. package/dist/services/global-config.d.ts +6 -0
  199. package/dist/services/global-config.d.ts.map +1 -1
  200. package/dist/services/global-config.js +8 -0
  201. package/dist/services/global-config.js.map +1 -1
  202. package/dist/services/llm.d.ts +3 -0
  203. package/dist/services/llm.d.ts.map +1 -1
  204. package/dist/services/llm.js +7 -0
  205. package/dist/services/llm.js.map +1 -1
  206. package/dist/services/project-instructions.d.ts.map +1 -1
  207. package/dist/services/project-instructions.js +10 -17
  208. package/dist/services/project-instructions.js.map +1 -1
  209. package/dist/services/safe-project-reader.d.ts +30 -0
  210. package/dist/services/safe-project-reader.d.ts.map +1 -0
  211. package/dist/services/safe-project-reader.js +141 -0
  212. package/dist/services/safe-project-reader.js.map +1 -0
  213. package/dist/services/session-storage.d.ts +134 -5
  214. package/dist/services/session-storage.d.ts.map +1 -1
  215. package/dist/services/session-storage.js +727 -57
  216. package/dist/services/session-storage.js.map +1 -1
  217. package/dist/services/usage-state.d.ts +7 -0
  218. package/dist/services/usage-state.d.ts.map +1 -1
  219. package/dist/services/usage-state.js +117 -16
  220. package/dist/services/usage-state.js.map +1 -1
  221. package/dist/skills/runtime.d.ts.map +1 -1
  222. package/dist/skills/runtime.js +34 -35
  223. package/dist/skills/runtime.js.map +1 -1
  224. package/docs/migration/v0.1.8-to-v0.1.9.md +60 -0
  225. package/docs/plan/v0.1.9-release-checklist.md +64 -0
  226. package/docs/readme.md +27 -0
  227. package/npm-shrinkwrap.json +14 -38
  228. package/package.json +5 -1
  229. package/dist/services/compact/micro-compact.d.ts +0 -21
  230. package/dist/services/compact/micro-compact.d.ts.map +0 -1
  231. package/dist/services/compact/micro-compact.js +0 -99
  232. package/dist/services/compact/micro-compact.js.map +0 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,445 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## Delivery status legend
9
+
10
+ This project distinguishes three delivery states. **Never present unreleased work as released.**
11
+
12
+ | State | Meaning | Criterion |
13
+ | ----------------- | -------------------------------------------- | ------------------------------------------ |
14
+ | **Published** | Tagged source is installable from npm | git tag exists **and** `npm publish` done |
15
+ | **npm-published** | Registry version exists without full release | exact npm version, but tag/release may lag |
16
+ | **Merged** | In the default branch, not yet installable | merged, **no** tag / not published |
17
+ | **Candidate** | Reviewable source, no release promise | committed PR branch or owned worktree |
18
+
19
+ Evidence labels follow `docs/archive/releases/v0.1.x/targets-v0.1.3-v0.1.3-2.md`:
20
+ `met` / `partial` / `unmet` / `not_run` — where `not_run` means "blocked by environment",
21
+ which is **not** a pass.
22
+
23
+ ## [Unreleased]
24
+
25
+ ## [0.1.9] — CANDIDATE
26
+
27
+ > **Status: candidate.** Source, CI, exact tarball, npm `next`, tag, GitHub Release, and stable
28
+ > `latest` are independent receipts. This section must be updated after each delivery action; it
29
+ > does not claim publication in advance.
30
+
31
+ ### Added
32
+
33
+ - Add a typed semantic Compact pipeline with atomic message groups, canonical fingerprints,
34
+ structured ContextItems, TaskContract/evidence/capability reinjection, bounded manual focus, and
35
+ deterministic fallback diagnostics.
36
+ - Add Compact Checkpoint V2 receipts with source/replacement hashes, target-headroom validation,
37
+ Harness/Goal bindings, transactional candidate installation, rollback, and V1 read compatibility.
38
+ - Add HarnessKernel TaskContract V3 criteria, evidence-to-criterion receipts, deterministic state,
39
+ Capability Profiles, ProgressDelta, and typed StopDecision projections.
40
+ - Add mature-agent Compact benchmark fixtures and lifecycle trace events for prepare, validate,
41
+ commit, rollback, and boundary transitions.
42
+ - Add bounded project-level `compactInstructions` for manual and automatic compaction; caller
43
+ guidance remains subordinate to protocol, safety, criteria, evidence, failures, and pending work.
44
+
45
+ ### Changed
46
+
47
+ - Replace Goal's fixed five-continuation stop with criterion/evidence completion, no-progress,
48
+ blocker, provider, explicit budget, and user-abort decisions. Resource circuit breakers remain
49
+ bounded and resumable.
50
+ - Bind subagent reservations to child query/provider accounting; keep deprecated turn fields only
51
+ as compatibility inputs rather than task-complete semantics.
52
+ - Load a bounded memory index at startup and retrieve relevant content per turn with an auditable,
53
+ body-free prompt manifest.
54
+ - Extend `/context explain` with section budgets, capability identity, output/safety reserves, and
55
+ the latest committed Compact receipt.
56
+
57
+ ### Fixed
58
+
59
+ - Serialize usage JSONL appends with an independent cross-process lock and replay-safe request IDs
60
+ (#206).
61
+ - Contain project context, project instructions, and explicit skill reads at a canonical project
62
+ boundary; project-provided `@file` content remains untrusted data (#207).
63
+ - Make smaller-context model switches run and commit a semantic preflight before changing the
64
+ active model.
65
+ - Reject stale Compact candidates when the transcript tail or active checkpoint changes between
66
+ prepare and commit, while preserving append-only session history.
67
+ - Stop treating request/tool budgets or an unsatisfied completion gate as successful task
68
+ completion; render resumable typed decisions consistently.
69
+
70
+ ### Security
71
+
72
+ - Reject symlink and non-regular project context paths, revalidate opened descriptors, and redact
73
+ boundary errors without exposing out-of-project file contents.
74
+
75
+ ## [0.1.8] — 2026-08-15
76
+
77
+ > **Status: published.** Tag `v0.1.8` identifies the source;
78
+ > `@orion-agents/orion-code@0.1.8` is published through the npm `next` dist-tag.
79
+ > Stable `latest` remains `0.1.4`; promotion is a separate decision.
80
+
81
+ ### Added
82
+
83
+ - Add schema-level and scheduler-level finite safe-integer validation for bounded tool inputs,
84
+ including `exec_command.timeout`, `exec_command.maxOutputBytes`, and `list_files.maxDepth` (#203).
85
+ - Add a renderer-neutral budget-stop view with usage, last completed work, and visible recovery
86
+ actions across TUI, terminal, print, JSON, and `/loop-stats` (#204).
87
+ - Add typed tool-authorization provenance and an explicit BUILD/PLAN/AUTO network-permission
88
+ architecture contract; AUTO stays prompt-free after hard policy and explicit deny checks (#175).
89
+ - Add repository-layout, cleanup-manifest, and per-issue verification ledgers for auditable release
90
+ ownership and recovery.
91
+
92
+ ### Changed
93
+
94
+ - Restrict the npm package to the single runtime icon and enforce packed size, unpacked size, entry
95
+ count, required files, and unexpected-path budgets during release checks.
96
+ - Move maintained scripts into `scripts/release`, `scripts/smoke`, and `scripts/maintenance`; archive
97
+ historical v0.1.x plans under `docs/archive/releases/v0.1.x`.
98
+ - Enforce renderer command scope before special command dispatch, integrating the behavior reviewed
99
+ in PR #201 for issue #179.
100
+ - Keep session transcript append metadata incremental and cover a 5,000-row history without a
101
+ full JSONL rescan (#172).
102
+
103
+ ### Fixed
104
+
105
+ - Publish file-lock owner metadata atomically and quarantine stale legacy zero-byte recovery
106
+ sentinels so an interrupted writer cannot permanently block `/resume`.
107
+ - Verify the existing security, persistence, TUI/performance, release/dependency, and Goal lifecycle
108
+ candidate fixes for issues #170–#200 with focused regression batches and real renderer smokes.
109
+ - Keep Goal completion evidence durable across failure, compact, restart, and resume, then
110
+ automatically leave Goal mode after a passing audit (#189).
111
+ - Update PTY harnesses to current provider profiles and durable trace/status assertions so the
112
+ release matrix exercises source code without deprecated configuration fallbacks.
113
+
114
+ ### Removed
115
+
116
+ - Remove 18 unreferenced tracked documentation images, 15 superseded `test-runtime` probes, the
117
+ unused `src/ink` helper, and the unreferenced `src/ui-v2` experiment after replacement mapping.
118
+
119
+ ## [0.1.7] — 2026-08-13
120
+
121
+ > **Status: published.** Tag `v0.1.7` and its GitHub prerelease identify the source;
122
+ > `@orion-agents/orion-code@0.1.7` is published through the npm `next` dist-tag.
123
+ > Stable `latest` remains `0.1.4`; promotion is a separate decision.
124
+
125
+ ### Added
126
+
127
+ - Add `/plan [task]` as the task-scoped, read-only planning entry with an automatically saved exit
128
+ transition and restoration of the previous interactive/auto mode.
129
+ - Add an original Orion Pixel terminal identity with a portable pixel mascot, semantic poses,
130
+ restrained motion, and safe classic/NO_COLOR/narrow-terminal fallbacks.
131
+ - Add persisted TUI themes, motion, mascot, status-line, and semantic keymap configuration plus
132
+ `/theme`, `/keymap`, `/statusline`, and `/queue` command surfaces.
133
+ - Add a bounded shared-runtime follow-up queue: Enter steers the active turn while Tab queues FIFO
134
+ work without interrupting it.
135
+
136
+ ### Changed
137
+
138
+ - Remove the `/mode` command and its `/perm` compatibility alias. Base modes now change only through
139
+ `Shift+Tab`; `/plan` remains the task entry and model-driven `enter_plan_mode` stays unavailable,
140
+ so Plan state has one lifecycle authority and completion never starts implementation in the same
141
+ turn.
142
+ - Replace renderer-local status strings with a typed Chrome projection for Goal, model, permission,
143
+ context, effort, queued follow-ups, and active work.
144
+ - Complete Ctrl+R history search, Ctrl+E external composition, empty Ctrl+D exit, and Esc-owned
145
+ interruption behavior while preserving native terminal scrollback.
146
+ - Show stable sequence numbers for active subtasks and keep critical Goal, evidence, research, and
147
+ permission state visible before lower-priority chrome.
148
+
149
+ ### Fixed
150
+
151
+ - Automatically exit Goal mode after a persisted passing completion audit, restore the underlying
152
+ BUILD/PLAN/AUTO mode, retain the completed Goal sidecar as an audit receipt, and reconcile the
153
+ narrow crash window where the terminal sidecar was saved before the session binding was cleared.
154
+ - Route explicit `exit goal mode` / `退出 goal 模式` intent through the same deterministic runtime
155
+ clear boundary as `/goal exit`, reject completion retries without new runtime evidence, and cap
156
+ each autonomous continuation below fresh-user loop budgets.
157
+ - Sanitize every dynamic startup-banner field, including 8-bit C1 CSI/OSC forms, before writing it
158
+ to the terminal (#164).
159
+ - Serialize global configuration read-modify-write transactions across processes and add an atomic
160
+ session catalog for indexed lookup and bounded listing (#157, #159, #163).
161
+ - Reject brace-quantified and overlapping-alternative ReDoS patterns, while distinguishing benign
162
+ command substitution from visible recursive deletion in permission policy; contain command cwd
163
+ inside the workspace across permission and execution paths (#160, #162, #169).
164
+ - Require explicit risk metadata on every built-in slash command, cover drift-guard prepare/execute
165
+ enforcement and session rename success/scoping, and make coverage a release gate (#158, #166,
166
+ #167, #168).
167
+ - Pin all third-party GitHub Actions in CI to immutable commit SHAs (#165).
168
+
169
+ ### Compatibility
170
+
171
+ - `/goal exit` remains the canonical slash command; explicit natural-language exit intent is routed
172
+ to the same operation. Removed `/goal clear --yes` and `/target clear --yes` syntax is still
173
+ rejected and is not restored as a compatibility alias.
174
+
175
+ ## [0.1.6] — 2026-08-12
176
+
177
+ > **Status: published.** Tag `v0.1.6` and its GitHub Release identify the source;
178
+ > `@orion-agents/orion-code@0.1.6` is published through the npm `next` dist-tag.
179
+ > Stable `latest` remains `0.1.4`; promotion is a separate decision.
180
+
181
+ ### Changed
182
+
183
+ - Require explicit user authorization before a model-created Goal can become active and bound
184
+ non-user continuation loops so a Goal cannot run indefinitely without returning control (#150).
185
+ - Replace destructive Goal clearing with `/goal exit`, which aborts the active turn, rejects any
186
+ pending permission request, and clears persisted Goal state. The old `/goal clear --yes` and
187
+ `/target clear --yes` forms are intentionally rejected rather than retained as aliases.
188
+ - Make the default dependency-health report reproducible without registry access; registry-backed
189
+ `npm audit` and `npm outdated` reports now require explicit `--full-network` (#155).
190
+
191
+ ### Fixed
192
+
193
+ - Preserve `vector.db` during brand migration when native SQLite verification is unavailable and
194
+ report the actionable ABI/rebuild cause instead of misclassifying it as corruption (#149).
195
+ - Remove real embedding-provider calls from vector tests, make source-only import tests independent
196
+ of prebuilt `dist/`, and select installed Node runtimes by numeric version (#140, #144, #146).
197
+ - Keep dependency policy mandatory in prepublish/release gates and synchronize release version
198
+ claims across README and release metadata (#129, #147).
199
+ - Anchor macOS seatbelt secret-file denies to the stable project root and make `exec_command`
200
+ permission prechecks use the same explicit command cwd as execution (#151, #153).
201
+ - Strip ANSI/OSC/C0/C1 control sequences from terminal-ui transcript and streamed assistant output
202
+ before it reaches the terminal writer (#154).
203
+ - Make memory drift validation perform a bounded project symbol scan, expose it through
204
+ `/memory validate`, and fail inconclusive scans closed instead of silently accepting them (#156).
205
+
206
+ ### Compatibility
207
+
208
+ - This pre-1.0 release contains an intentional command-line breaking change: scripts using
209
+ `/goal clear --yes` or `/target clear --yes` must migrate to `/goal exit`. Goal/session storage
210
+ remains additive and compatible; the removed command syntax is not supported as an alias.
211
+
212
+ ## [0.1.5] — 2026-08-11
213
+
214
+ > **Status: npm-published.** `@orion-agents/orion-code@0.1.5` is available through the npm
215
+ > `next` dist-tag. No `v0.1.5` Git tag or GitHub Release exists, and stable `latest` remains
216
+ > `0.1.4`; those delivery states are intentionally recorded separately.
217
+
218
+ ### Added
219
+
220
+ - Added a typed slash-command descriptor registry, exact invocation grammar, compatibility
221
+ lifecycle metadata, busy policies, and canonical `/goal`, `/session`, `/context`,
222
+ `/commit-plan`, `/rewind`, `/subagents`, and `/effort` control surfaces.
223
+ - Added provider-aware effort capability resolution, scoped persistence, immutable retry
224
+ snapshots, structured renderer events, and additive reasoning/effort usage ledger metadata.
225
+
226
+ ### Changed
227
+
228
+ - Split agent mode from tool permission policy and constrained the empty command palette to a
229
+ primary, searchable surface while retaining explicit advanced and compatibility commands.
230
+ - Made dependency, Jest-major, tag/changelog, and prepublish checks fail closed.
231
+ - Made the dependency policy reject runtimes outside the declared Node 20/22/24 matrix (#133).
232
+ - Added version-tag CI triggers, synchronized the Jest 29 lockfile, and moved the candidate
233
+ package/install metadata to `0.1.5` (#134, #135, #141).
234
+ - Made the dependency policy prove the installed OpenAI client on each CI runtime instead of
235
+ inferring Node support from an engine-string regex, and added a real sqlite-vec load/query
236
+ probe (#137, #142).
237
+
238
+ ### Fixed
239
+
240
+ - Canonicalized recursive `rm` targets before safety evaluation and routed batch confirmations
241
+ and local fast paths through the shared permission policy (#125, #126, #132).
242
+ - Repaired Goal completion audit persistence, entity decoding, confirmation fallback, and TUI
243
+ submission/projection behavior (#127).
244
+ - Classified every recursive `rm` flag form as destructive so broad tool rules cannot silently
245
+ approve shell deletion (#136).
246
+ - Made concurrent session registration reserve capacity atomically across processes,
247
+ with atomic heartbeats and serialized stale-lock recovery (#121).
248
+ - Serialized session transcript, metadata, statistics, summaries, and deletion updates under a
249
+ per-session cross-process lock so counters cannot lose concurrent writes (#138).
250
+ - Deferred native SQLite loading to semantic-storage boundaries and added actionable
251
+ ABI diagnostics for memory, maintenance, migration, and dependency checks (#111).
252
+ - Removed real Ollama/OpenAI calls from vector unit tests by using deterministic embedding
253
+ fixtures, eliminating timeout-driven release flakiness (#139, #140).
254
+
255
+ ## [0.1.4-2] — 2026-08-09
256
+
257
+ > **Status: published.** Tag `v0.1.4-2` exists and the package is on npm
258
+ > (`@orion-agents/orion-code@0.1.4-2`, `next` dist-tag). Stable `latest` remains `0.1.4`.
259
+
260
+ ### Changed
261
+
262
+ - Split the slash-command registry and chat runtime into bounded modules, removed
263
+ deprecated OpenHorse type aliases, and made strict lint rules fail the build.
264
+ - Upgraded the OpenAI SDK to the Node-20-compatible 6.x line, removed unused runtime
265
+ dependencies, and added automated dependency policy/update checks.
266
+ - Added structured diagnostics, provider recovery metrics, runtime-matrix CI, and
267
+ real PTY research lifecycle coverage.
268
+
269
+ ### Fixed
270
+
271
+ - Closed persistence races, checkpoint corruption/rollback gaps, task-capacity and
272
+ response-parsing bugs, tool-call group corruption, context compaction errors, and
273
+ provider retry/stream recovery inconsistencies.
274
+ - Hardened forked-agent capabilities, harness evidence/sandbox enforcement, AWS auth,
275
+ command execution gates, and macOS sandbox fail-closed behavior.
276
+ - Completed the research contract across controlled web access, redirects, budgets,
277
+ atomic CAS persistence, citation durability, renderer events, and restart/resume.
278
+ - Added conversational Goal abandonment with explicit user authorization and corrected
279
+ Goal boundary/audit/no-progress semantics.
280
+ - Made `prepublishOnly` build before the release pack gate so clean checkouts and final
281
+ tarballs are validated against the same generated `dist` output.
282
+
283
+ ## [0.1.4] — 2026-08-06
284
+
285
+ > **Status: published.** Tag `v0.1.4` exists and the package is on npm
286
+ > (`@orion-agents/orion-code@0.1.4`, `latest` dist-tag). Released 2026-08-06.
287
+ > Work that remains a worktree-only draft carries no release promise (see legend).
288
+
289
+ Aligns `package.json` / `package-lock.json` with the `v0.1.4` release so the
290
+ CLI banner, HTTP `User-Agent`, and crash/telemetry reports stop misreporting `0.1.3`.
291
+
292
+ ### Changed
293
+
294
+ - **Release metadata (#10):** bumped `package.json` and `package-lock.json` to
295
+ `0.1.4` so `orion --version` and the outbound `User-Agent` reflect the development line.
296
+ - **Type safety (#5):** removed ~22 `any` usages (120 → 98 on the committed tree):
297
+ - native `Intl.Segmenter` typing via the `ES2022.Intl` `lib` (no more `(Intl as any)` casts);
298
+ - typed SQLite rows in `src/memory/vector-store.ts` (`MemoryRow` / `MemoryVectorRow`);
299
+ - `unknown`-typed task params in `src/services/task-manager.ts`;
300
+ - typed provider-error messages in `src/services/provider-resilience/error-classifier.ts`.
301
+
302
+ ### Fixed
303
+
304
+ - **Lint (#6):** resolved unused-vars / prefer-const warnings and removed dead code
305
+ (17 ESLint `no-explicit-any` / unused-var alerts cleared).
306
+
307
+ ## [0.1.3] — 2026-08-05
308
+
309
+ > **Status: published.** Tag `v0.1.3` exists and the package is on npm
310
+ > (`@orion-agents/orion-code@0.1.3`). The model-config subset (`/model` / `/models`)
311
+ > is merged; the security/tooling subset below shipped in this release.
312
+
313
+ This release hardens the execution surface (sandbox POC, tool-allowlist ReDoS,
314
+ plan-mode bypass, SSRF / API-key leakage) and rounds out developer-facing tooling
315
+ (git tools, TUI permission interaction, incremental input, goal-tool diagnostics).
316
+
317
+ ### Added
318
+
319
+ - **Shell sandbox POC** (`src/tools/sandbox.ts`)
320
+ - Commands are wrapped as an **argv array**, never re-parsed by an intermediate shell
321
+ (eliminates quote-injection surface).
322
+ - **Runtime backend probes** for `seatbelt` / `bubblewrap` / `docker` via `spawnSync`
323
+ — capability is never inferred from `which`.
324
+ - **Fail-closed**: a configured profile that cannot be applied (no backend, unusable
325
+ backend, unknown profile/backend) **refuses execution** instead of silently degrading.
326
+ - Default `profile: 'none'` is fully backward compatible with the legacy `sh -c` path.
327
+ - Docker backend runs with a **`--read-only` rootfs** and explicit `rw` bind-mounts for
328
+ the workspace + tmp + user `writableRoots`; network is blocked unless `allowNetwork`.
329
+ - Wired into `src/tools/index.ts` (`exec_command` plan + `checkPermissions` gate) and
330
+ `src/services/global-config.ts` (`sandbox` config at global + project scope).
331
+ - **Git tooling** (`src/tools/git.ts`)
332
+ - Structured read-only `git_diff` / `git_log` / `git_branch` / `git_status`
333
+ (with ahead/behind for the tracking branch).
334
+ - Risk-graded `git_commit` (state-write, `isDestructive() => true`) and the pre-existing
335
+ `git_push`. There is **no** `git_stage` tool; staging happens via `git_commit`'s
336
+ `paths` / `all` arguments.
337
+ - All paths confined to the repository; `paths` rejects glob / pathspec syntax;
338
+ output is redacted.
339
+ - ⚠️ **Known gap**: `git_commit({ all: true })` stages _every_ tracked modification.
340
+ The index snapshot / rollback and user-visible preview required by plan §P1-C are
341
+ **not implemented** — prefer explicit `paths`.
342
+ - **TUI permission interaction** (`/permissions` command)
343
+ - Toggle tool-confirmation live; immediately rewrite in-memory config **and** persist to disk.
344
+ - Status-bar `perm:` chip reflects the current mode; a system confirmation message is appended
345
+ to the session. A failed `updateGlobalConfig` leaves the in-memory state unchanged.
346
+
347
+ ### Changed
348
+
349
+ - **Tool allowlist — ReDoS hardening** (`src/services/tool-allowlist.ts`)
350
+ - Regex-compiled glob matchers replaced by a **linear dual-pointer matcher**
351
+ (`O(pattern × subject)`, `O(1)` extra state, no catastrophic backtracking). Regressed by a
352
+ pathological `(a*)*b`-style input test.
353
+ - **Plan-mode bypass fixed** (`src/framework/tool-scheduler.ts`)
354
+ - Plan-mode commands no longer short-circuit permission checks with a default allow; they go
355
+ through the same gating as interactive mode.
356
+ - **SSRF / API-key hardening** (`src/tools/web.ts`, `src/utils/mask.ts`)
357
+ - Per-hop redirect host checks, a response-body hard cap, and full API-key masking in logs/output.
358
+ - **Incremental input during a running turn**
359
+ - Supplementary user input is echoed immediately (G1), accumulated without loss (G2),
360
+ dedupe-guarded, and reflected in status text (G4).
361
+ - **Goal tools** (`src/runtime/goals/tools.ts`)
362
+ - `update_goal` / `update_goal_plan` / `create_goal` failures now return a **diagnostic `output`**
363
+ instead of an empty string.
364
+ - **Config model** (`src/services/global-config.ts`)
365
+ - `sandbox` config at both global and project scope, with documented schema / defaults / migration /
366
+ redaction / rollback (P1-E). Project config shallow-overrides global per key.
367
+
368
+ ### Security
369
+
370
+ - Sandbox execution is fail-closed and verifiable: on hosts with a usable backend, the OS-enforcement
371
+ assertions exercise **real kernel-level confinement** (Docker `--read-only` + bind-mounts verified on macOS).
372
+ - Allowlist matching is ReDoS-safe.
373
+ - Web tool rejects redirect-based SSRF pivots and never leaks API keys in output.
374
+
375
+ ### Out of scope (this release)
376
+
377
+ Deliberately deferred to a later version per the architecture review
378
+ (`docs/archive/releases/v0.1.x/v0.1.3-2-plan.md`):
379
+
380
+ - **Hook system (#27)** — external scripts expand the permission / timeout / secret / audit surface and
381
+ need a standalone technical design.
382
+ - Several `v0.1.3-2` plan items (writable / background sub-agents, generic MCP SSE/HTTP/OAuth, queue
383
+ injection / project-instruction files, custom slash commands, domestic-differentiation, Goal self-repair)
384
+ are tracked for **v0.2**.
385
+
386
+ ### Evidence
387
+
388
+ Verified by `npm run release:check` on **2026-08-05**:
389
+
390
+ - **Full Jest suite (Node 24.14.0): 3045 tests — 3042 passed, 1 failed, 2 skipped; 179 suites passed.**
391
+ The single failure is `tests/terminal-ui-pty.test.ts` (sandbox `safe-delete` `EACCES`) → `not_run`.
392
+ - Focused v0.1.3-2 suites: `sandbox` 30 (incl. live Docker OS-enforcement assertions),
393
+ `tool-allowlist` 38, `web-ssrf-bypass` 21, `git-tools` 7, plus `tool-confirmation` /
394
+ `permission-mode` / `incremental-input` / `goal-tools` / `tool-scheduler` / `config`.
395
+ - `tsc --noEmit` **0 errors**; ESLint **0 errors / 137 warnings** (pre-existing `no-explicit-any`).
396
+ - `npm pack --dry-run` OK — 1098 files, 5.23 MB unpacked.
397
+ - CI / real-PTY / tarball clean-install evidence remains environment-gated and labelled `not_run`
398
+ rather than substituted by a local green run.
399
+
400
+ **Corrections to earlier claims.** The previously reported "10 focused suites: 173/173" was a
401
+ cherry-picked subset that excluded failing suites. A full run surfaced pre-§8 test rot in
402
+ `tests/agent-runtime-controller.test.ts`, `tests/runtime-ui-parity.test.ts` and
403
+ `tests/turn-controller.test.ts` (they asserted latest-only revision semantics and the old
404
+ English status strings). These were realigned with the §8 G1/G2 design — the product behaviour
405
+ was not changed. The PTY smoke scripts `scripts/terminal-ui-pty-smoke.py` /
406
+ `scripts/tui-ui-pty-smoke.py` were updated to wait for the current Chinese status text.
407
+
408
+ > Run the suite with **Node 24.14.0**. Node 22 produces 14 spurious `better-sqlite3` failures
409
+ > (native module built for `NODE_MODULE_VERSION 137`, Node 22 requires `127`).
410
+
411
+ ### Still open (release gate)
412
+
413
+ - `docs/archive/releases/v0.1.x/targets-v0.1.3-v0.1.3-2.md` P0-C Goal sidecar overwrite protection — `unverified`.
414
+ - Worktree not yet frozen into a commit (index currently holds the 42 in-scope files).
415
+ - No `v0.1.3` tag; not published.
416
+
417
+ ## [0.1.2] — 2026-08-02 · Published (tag `v0.1.2`)
418
+
419
+ Goal reliability release. Typed continuation for a single session with a single active Goal;
420
+ safe pause after restart/resume requiring explicit recovery; runtime evidence ledger with
421
+ per-criterion completion audit and precise stop reasons; confirmation was single-session scoped.
422
+
423
+ ## [0.1.1] — 2026-07-31 · Published
424
+
425
+ Command contract, TUI as the default path, OpenHorse migration and data-safety convergence;
426
+ terminal-ui repositioned as the diagnostics build, Ink formally deprecated.
427
+
428
+ ## [0.1.0] — 2026-07-28 · Published
429
+
430
+ First public TUI baseline.
431
+
432
+ ---
433
+
434
+ ## Maintenance rules
435
+
436
+ 1. Run `npm run release:check` before every release. It verifies version consistency
437
+ (`package.json` / `package-lock.json` / both README install pins / the Chinese README
438
+ "current version" marker), CHANGELOG presence, `git diff --check`, worktree cleanliness,
439
+ lint, types, the full test suite, and `npm pack --dry-run`.
440
+ 2. `release:check` is **read-only**: it never runs `git tag`, `git push`, PR, merge or
441
+ `npm publish`. Those stay separately authorized.
442
+ 3. When an entry moves Candidate → Merged → Published, **move it to the matching section**.
443
+ Leaving a stale status label is a release-gate failure.
444
+
445
+ (Legacy release notes under `docs/mvp/` are not maintained in this file.)
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > **Goal-driven coding agent for the terminal.**
4
4
  >
5
- > v0.1.8repository hygiene, audited issue fixes, and actionable runtime recovery
5
+ > v0.1.9semantic compact, evidence-driven completion, and autonomous progress control
6
6
 
7
7
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
8
8
  [![Node.js](https://img.shields.io/badge/node-%3E%3D20.0-green.svg)](https://nodejs.org)
@@ -35,8 +35,8 @@ Orion Code is a terminal-based coding agent. It wraps LLM APIs in a harness of s
35
35
  ### Install & Run
36
36
 
37
37
  ```bash
38
- # Install this exact published version:
39
- npm install -g @orion-agents/orion-code@0.1.8
38
+ # After the registry receipt exists, install this exact prerelease version:
39
+ npm install -g @orion-agents/orion-code@0.1.9
40
40
  # Install the current prerelease channel:
41
41
  npm install -g @orion-agents/orion-code@next
42
42
 
@@ -75,8 +75,12 @@ orion -p "review the current git diff"
75
75
  echo "summarize this project" | orion --print
76
76
  ```
77
77
 
78
- > **Release status.** `0.1.8` is published through the npm `next` dist-tag and is identified by the
79
- > `v0.1.8` tag. Stable `latest` remains `0.1.4`; promotion is a separate decision.
78
+ Before upgrading, read the [v0.1.8 v0.1.9 migration guide](docs/migration/v0.1.8-to-v0.1.9.md).
79
+ Release verification is tracked in the [v0.1.9 checklist](docs/plan/v0.1.9-release-checklist.md).
80
+
81
+ > **Release status.** `0.1.9` is the current release candidate for the npm `next` channel. Stable
82
+ > `latest` remains `0.1.4`; tag, GitHub Release, npm publish, and `latest` promotion are verified as
83
+ > separate delivery actions.
80
84
 
81
85
  ### TUI startup banner
82
86
 
@@ -263,7 +267,7 @@ backend is probed at runtime and a configured-but-unusable sandbox **fails close
263
267
  | `/permissions` | View or change tool confirmation and edit policy |
264
268
  | `/config` | Show configuration |
265
269
  | `/usage` | Token usage and cost |
266
- | `/compact` | Trigger context compact |
270
+ | `/compact [N] [focus]` | Trigger context compact with optional retained-message threshold and focus |
267
271
  | `/session` | List, inspect, or rename sessions |
268
272
  | `/resume` | Resume last session |
269
273
  | `/memory` | Memory status, reference validation, and semantic reindexing |
@@ -276,6 +280,11 @@ backend is probed at runtime and a configured-but-unusable sandbox **fails close
276
280
  | `/context clear --yes` | Clear in-memory model context; preserve the saved session |
277
281
  | `/exit` | Exit |
278
282
 
283
+ Project-level compact guidance can be set in
284
+ `projects["<absolute path>"].compactInstructions` in `~/.orion-code/orion.json`. It applies to
285
+ manual and automatic compact, is bounded and redacted before model use, and cannot override tool
286
+ protocol, safety constraints, acceptance criteria, evidence, failures, or pending work.
287
+
279
288
  Agent modes are TUI actions: use `Shift+Tab` to cycle `BUILD → PLAN → AUTO`; `/mode` and `/perm`
280
289
  are not registered commands. The remaining deprecated spellings keep their v0.3.0 compatibility
281
290
  window: `/target` → `/goal`, `/commit` → `/commit-plan`, `/sessions` → `/session list`,
package/README.zh-CN.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > **Orion Code — 通用 Agent 驾驭框架**
4
4
  > 一个 CLI 驱动的编码 Agent,具备安全边界、工具编排、记忆系统和上下文管理。
5
5
  >
6
- > v0.1.8仓库治理、经审计的 issue 修复与可操作的运行时恢复
6
+ > v0.1.9语义压缩、证据驱动完成与自主进展控制
7
7
 
8
8
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
9
9
  [![Node.js](https://img.shields.io/badge/node-%3E%3D20.0-green.svg)](https://nodejs.org)
@@ -104,10 +104,10 @@ npm start -- --print "review the current git diff"
104
104
 
105
105
  ### 全局安装
106
106
 
107
- 固定安装该精确发布版本:
107
+ registry 凭据存在后,固定安装该预发布版本:
108
108
 
109
109
  ```bash
110
- npm install -g @orion-agents/orion-code@0.1.8
110
+ npm install -g @orion-agents/orion-code@0.1.9
111
111
  # 安装当前预发布渠道:
112
112
  npm install -g @orion-agents/orion-code@next
113
113
  # 任意目录运行
@@ -116,8 +116,11 @@ orion
116
116
 
117
117
  也可以在源码工作树中使用 `npm ci && npm run build && npm start`。
118
118
 
119
- > **发布状态**:`0.1.8` 已通过 npm `next` dist-tag 发布,并由 `v0.1.8` tag 标识。
120
- > 稳定版 `latest` 仍为 `0.1.4`;稳定版提升是独立决策。
119
+ 升级前请阅读 [v0.1.8 v0.1.9 迁移指南](docs/migration/v0.1.8-to-v0.1.9.md);发布验证状态见
120
+ [v0.1.9 准出清单](docs/plan/v0.1.9-release-checklist.md)。
121
+
122
+ > **发布状态**:`0.1.9` 是 npm `next` 渠道的当前发布候选。稳定版 `latest` 仍为
123
+ > `0.1.4`;tag、GitHub Release、npm 发布与 `latest` 晋级分别验证、独立执行。
121
124
 
122
125
  公众体验、交互优化和新增工作流优先落在 TUI。`terminal-ui` 不作为与
123
126
  TUI 并行发展的公众产品;Ink 只保留迁移期兼容,不再增加产品能力。
@@ -423,7 +426,7 @@ ctxPercent = (promptTokens / 模型上下文窗口) × 100
423
426
  | `/model` | 查看或切换模型 |
424
427
  | `/config` | 显示当前生效配置 |
425
428
  | `/usage` | 显示详细 Token 用量和成本 |
426
- | `/compact` | 手动触发上下文压缩 |
429
+ | `/compact [N] [focus]` | 手动压缩上下文,可指定保留消息数与摘要关注点 |
427
430
  | `/session list` | 列出或搜索最近会话 |
428
431
  | `/resume` | 恢复已有会话 |
429
432
  | `/memory` | 记忆状态、引用漂移校验与语义索引重建 |
@@ -437,6 +440,11 @@ ctxPercent = (promptTokens / 模型上下文窗口) × 100
437
440
  | `/clear` | 只清理当前视图,不删除 session 数据 |
438
441
  | `/exit` | 安全关闭并退出 |
439
442
 
443
+ 可在 `~/.orion-code/orion.json` 的
444
+ `projects["<项目绝对路径>"].compactInstructions` 设置项目级压缩指引。该配置同时作用于手动和自动
445
+ compact,进入模型前会做长度约束与敏感信息脱敏,且不能覆盖工具协议、安全约束、验收标准、证据、失败记录
446
+ 或待完成工作。
447
+
440
448
  Agent mode 是 TUI 交互状态:使用 `Shift+Tab` 循环 `BUILD → PLAN → AUTO`;`/mode` 与 `/perm`
441
449
  不再注册。其余旧拼写保留到 v0.3.0 兼容窗口结束:`/target` → `/goal`、`/commit` →
442
450
  `/commit-plan`、`/sessions` → `/session list`、`/session-rename` → `/session rename`、
@@ -493,7 +501,18 @@ orion-code/
493
501
 
494
502
  ## 版本历史
495
503
 
496
- ### v0.1.8(当前版本,已发布至 next)
504
+ ### v0.1.9(当前版本,发布候选)
505
+
506
+ - 将 Compact 升级为可校验、可回滚、可恢复的语义快照与 Checkpoint V2,并支持
507
+ `/compact [N] [focus]`;
508
+ - 使用 TaskContract V3、criterion/evidence graph、Capability Profile、ProgressController 与
509
+ typed StopDecision 统一完成、暂停和继续语义;
510
+ - 移除 Goal 固定 5 次自动续跑上限,同时保留单请求/子 Agent 资源预算、no-progress、provider、权限与
511
+ Abort 安全边界;
512
+ - 修复项目上下文路径信任和 usage ledger 多进程一致性;npm `next` 发布完成前不声明已发布,也不移动
513
+ 稳定版 `latest`。
514
+
515
+ ### v0.1.8(已发布至 next)
497
516
 
498
517
  - 收敛 npm 发布白名单与包体积门禁,归档历史计划并删除已证明无引用的旧资产、脚本和 UI 实验目录;
499
518
  - 完成 33 个 open issues 的逐项账本,补齐数值型工具参数边界、budget-stop 恢复提示、renderer scope 与 AUTO 网络授权可见性;
@@ -1 +1 @@
1
- {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/agents/coordinator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAQzC,MAAM,WAAW,iBAAiB;IAChC,WAAW;IACX,IAAI,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;IAC9C,aAAa;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa;IACb,mBAAmB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;CAChD;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAa;gBAEnB,MAAM,CAAC,EAAE,iBAAiB;IAYtC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAI1C;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc;IAetC;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA8FrD;;OAEG;IACH,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAIzC;;OAEG;IACH,SAAS,IAAI;QACX,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;KACd;IAaD,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA6BzB;AAMD,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAQD,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAKtE;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
1
+ {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/agents/coordinator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAQzC,MAAM,WAAW,iBAAiB;IAChC,WAAW;IACX,IAAI,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;IAC9C,aAAa;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa;IACb,mBAAmB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;CAChD;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAa;gBAEnB,MAAM,CAAC,EAAE,iBAAiB;IAYtC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAI1C;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc;IAetC;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgGrD;;OAEG;IACH,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAIzC;;OAEG;IACH,SAAS,IAAI;QACX,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;KACd;IAaD,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAkCrB;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAmCzB;AAMD,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAQD,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAKtE;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}