baxian 2.0.0 → 2.0.2

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 (198) hide show
  1. package/README.md +5 -7
  2. package/README.zh-CN.md +5 -7
  3. package/dist/agent/bootstrap.d.ts.map +1 -1
  4. package/dist/agent/bootstrap.js +2 -4
  5. package/dist/agent/bootstrap.js.map +1 -1
  6. package/dist/agent/branch.d.ts +0 -13
  7. package/dist/agent/branch.d.ts.map +1 -1
  8. package/dist/agent/branch.js +1 -71
  9. package/dist/agent/branch.js.map +1 -1
  10. package/dist/agent/dispatch-reconciler.d.ts.map +1 -1
  11. package/dist/agent/dispatch-reconciler.js +19 -14
  12. package/dist/agent/dispatch-reconciler.js.map +1 -1
  13. package/dist/agent/manager.d.ts +90 -134
  14. package/dist/agent/manager.d.ts.map +1 -1
  15. package/dist/agent/manager.js +1154 -2265
  16. package/dist/agent/manager.js.map +1 -1
  17. package/dist/agent/net-exec.d.ts +3 -0
  18. package/dist/agent/net-exec.d.ts.map +1 -1
  19. package/dist/agent/net-exec.js +6 -0
  20. package/dist/agent/net-exec.js.map +1 -1
  21. package/dist/agent/pane-streamer-manager.d.ts +6 -6
  22. package/dist/agent/pane-streamer-manager.d.ts.map +1 -1
  23. package/dist/agent/pane-streamer-manager.js.map +1 -1
  24. package/dist/agent/pane-streamer.d.ts +6 -3
  25. package/dist/agent/pane-streamer.d.ts.map +1 -1
  26. package/dist/agent/pane-streamer.js +70 -40
  27. package/dist/agent/pane-streamer.js.map +1 -1
  28. package/dist/agent/phase-signal-watcher.d.ts +7 -2
  29. package/dist/agent/phase-signal-watcher.d.ts.map +1 -1
  30. package/dist/agent/phase-signal-watcher.js +90 -32
  31. package/dist/agent/phase-signal-watcher.js.map +1 -1
  32. package/dist/agent/phase-signal.d.ts +19 -38
  33. package/dist/agent/phase-signal.d.ts.map +1 -1
  34. package/dist/agent/phase-signal.js +54 -88
  35. package/dist/agent/phase-signal.js.map +1 -1
  36. package/dist/agent/preflight.d.ts +0 -1
  37. package/dist/agent/preflight.d.ts.map +1 -1
  38. package/dist/agent/preflight.js +8 -15
  39. package/dist/agent/preflight.js.map +1 -1
  40. package/dist/agent/prompt.d.ts +1 -35
  41. package/dist/agent/prompt.d.ts.map +1 -1
  42. package/dist/agent/prompt.js +22 -162
  43. package/dist/agent/prompt.js.map +1 -1
  44. package/dist/agent/repo-store.d.ts +4 -1
  45. package/dist/agent/repo-store.d.ts.map +1 -1
  46. package/dist/agent/repo-store.js +33 -11
  47. package/dist/agent/repo-store.js.map +1 -1
  48. package/dist/agent/root-agent-runtime.d.ts +80 -0
  49. package/dist/agent/root-agent-runtime.d.ts.map +1 -0
  50. package/dist/agent/root-agent-runtime.js +637 -0
  51. package/dist/agent/root-agent-runtime.js.map +1 -0
  52. package/dist/agent/root-recovery-coordinator.d.ts +124 -0
  53. package/dist/agent/root-recovery-coordinator.d.ts.map +1 -0
  54. package/dist/agent/root-recovery-coordinator.js +1557 -0
  55. package/dist/agent/root-recovery-coordinator.js.map +1 -0
  56. package/dist/agent/runner.d.ts +1 -0
  57. package/dist/agent/runner.d.ts.map +1 -1
  58. package/dist/agent/runner.js +103 -7
  59. package/dist/agent/runner.js.map +1 -1
  60. package/dist/agent/tmux-probe-poller.d.ts +1 -0
  61. package/dist/agent/tmux-probe-poller.d.ts.map +1 -1
  62. package/dist/agent/tmux-probe-poller.js +16 -10
  63. package/dist/agent/tmux-probe-poller.js.map +1 -1
  64. package/dist/agent/tmux.d.ts +3 -0
  65. package/dist/agent/tmux.d.ts.map +1 -1
  66. package/dist/agent/tmux.js +11 -5
  67. package/dist/agent/tmux.js.map +1 -1
  68. package/dist/agent/vt-visible-text.d.ts +42 -0
  69. package/dist/agent/vt-visible-text.d.ts.map +1 -0
  70. package/dist/agent/vt-visible-text.js +482 -0
  71. package/dist/agent/vt-visible-text.js.map +1 -0
  72. package/dist/api/agents.d.ts.map +1 -1
  73. package/dist/api/agents.js +42 -1
  74. package/dist/api/agents.js.map +1 -1
  75. package/dist/api/config.d.ts.map +1 -1
  76. package/dist/api/config.js +83 -9
  77. package/dist/api/config.js.map +1 -1
  78. package/dist/api/hosts.d.ts.map +1 -1
  79. package/dist/api/hosts.js +68 -13
  80. package/dist/api/hosts.js.map +1 -1
  81. package/dist/api/platform-guard.js +2 -2
  82. package/dist/api/platform-guard.js.map +1 -1
  83. package/dist/api/projects.d.ts.map +1 -1
  84. package/dist/api/projects.js +621 -325
  85. package/dist/api/projects.js.map +1 -1
  86. package/dist/api/tasks.d.ts.map +1 -1
  87. package/dist/api/tasks.js +15 -39
  88. package/dist/api/tasks.js.map +1 -1
  89. package/dist/app.d.ts +2 -0
  90. package/dist/app.d.ts.map +1 -1
  91. package/dist/app.js +6 -0
  92. package/dist/app.js.map +1 -1
  93. package/dist/cli.d.ts +1 -1
  94. package/dist/cli.d.ts.map +1 -1
  95. package/dist/cli.js +49 -7
  96. package/dist/cli.js.map +1 -1
  97. package/dist/config/loader.d.ts +5 -1
  98. package/dist/config/loader.d.ts.map +1 -1
  99. package/dist/config/loader.js +57 -24
  100. package/dist/config/loader.js.map +1 -1
  101. package/dist/config/normalizer.d.ts.map +1 -1
  102. package/dist/config/normalizer.js +18 -0
  103. package/dist/config/normalizer.js.map +1 -1
  104. package/dist/config/validator.d.ts +7 -4
  105. package/dist/config/validator.d.ts.map +1 -1
  106. package/dist/config/validator.js +251 -96
  107. package/dist/config/validator.js.map +1 -1
  108. package/dist/event/handlers.d.ts.map +1 -1
  109. package/dist/event/handlers.js +359 -229
  110. package/dist/event/handlers.js.map +1 -1
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +45 -5
  113. package/dist/index.js.map +1 -1
  114. package/dist/platform/command-renderer.d.ts +6 -0
  115. package/dist/platform/command-renderer.d.ts.map +1 -1
  116. package/dist/platform/command-renderer.js +20 -0
  117. package/dist/platform/command-renderer.js.map +1 -1
  118. package/dist/platform/driver-host.d.ts.map +1 -1
  119. package/dist/platform/driver-host.js +3 -1
  120. package/dist/platform/driver-host.js.map +1 -1
  121. package/dist/platform/driver-spec.d.ts.map +1 -1
  122. package/dist/platform/driver-spec.js +32 -4
  123. package/dist/platform/driver-spec.js.map +1 -1
  124. package/dist/platform/git-driver.d.ts +2 -0
  125. package/dist/platform/git-driver.d.ts.map +1 -1
  126. package/dist/platform/git-driver.js +9 -3
  127. package/dist/platform/git-driver.js.map +1 -1
  128. package/dist/platform/platform-poller.d.ts +0 -1
  129. package/dist/platform/platform-poller.d.ts.map +1 -1
  130. package/dist/platform/platform-poller.js +1 -11
  131. package/dist/platform/platform-poller.js.map +1 -1
  132. package/dist/platform/plugins/github/driver.json +5 -0
  133. package/dist/platform/plugins/github/skills/baxian-cli-gh/SKILL.md +20 -14
  134. package/dist/platform/startup.d.ts.map +1 -1
  135. package/dist/platform/startup.js +5 -5
  136. package/dist/platform/startup.js.map +1 -1
  137. package/dist/platform/types.d.ts +1 -0
  138. package/dist/platform/types.d.ts.map +1 -1
  139. package/dist/platform/types.js +3 -3
  140. package/dist/platform/types.js.map +1 -1
  141. package/dist/shared/constants.d.ts +8 -7
  142. package/dist/shared/constants.d.ts.map +1 -1
  143. package/dist/shared/constants.js +6 -28
  144. package/dist/shared/constants.js.map +1 -1
  145. package/dist/shared/types.d.ts +52 -125
  146. package/dist/shared/types.d.ts.map +1 -1
  147. package/dist/shared/types.js +24 -5
  148. package/dist/shared/types.js.map +1 -1
  149. package/dist/skills/baxian-pr-feedback/SKILL.md +6 -6
  150. package/dist/skills/baxian-pr-recheck/SKILL.md +6 -0
  151. package/dist/skills/baxian-pr-review/SKILL.md +6 -0
  152. package/dist/skills/baxian-signals/SKILL.md +17 -28
  153. package/dist/skills/baxian-task-check/SKILL.md +13 -14
  154. package/dist/state/init.d.ts.map +1 -1
  155. package/dist/state/init.js +1 -0
  156. package/dist/state/init.js.map +1 -1
  157. package/dist/state/lock.d.ts +6 -0
  158. package/dist/state/lock.d.ts.map +1 -1
  159. package/dist/state/lock.js +8 -0
  160. package/dist/state/lock.js.map +1 -1
  161. package/dist/state/root-recovery-store.d.ts +107 -0
  162. package/dist/state/root-recovery-store.d.ts.map +1 -0
  163. package/dist/state/root-recovery-store.js +400 -0
  164. package/dist/state/root-recovery-store.js.map +1 -0
  165. package/dist/state/snapshot.d.ts.map +1 -1
  166. package/dist/state/snapshot.js +5 -2
  167. package/dist/state/snapshot.js.map +1 -1
  168. package/dist/state/task-store.d.ts.map +1 -1
  169. package/dist/state/task-store.js +57 -137
  170. package/dist/state/task-store.js.map +1 -1
  171. package/dist/terminal/attach.d.ts +3 -3
  172. package/dist/terminal/attach.d.ts.map +1 -1
  173. package/dist/terminal/attach.js.map +1 -1
  174. package/dist/terminal/stream-ws.d.ts.map +1 -1
  175. package/dist/terminal/stream-ws.js.map +1 -1
  176. package/dist/web/assets/index-BKiM0MSM.js +15 -0
  177. package/dist/web/assets/index-BS2adAfI.css +1 -0
  178. package/dist/web/index.html +2 -2
  179. package/package.json +1 -1
  180. package/dist/agent/review-transport.d.ts +0 -92
  181. package/dist/agent/review-transport.d.ts.map +0 -1
  182. package/dist/agent/review-transport.js +0 -512
  183. package/dist/agent/review-transport.js.map +0 -1
  184. package/dist/event/server-handlers.d.ts +0 -4
  185. package/dist/event/server-handlers.d.ts.map +0 -1
  186. package/dist/event/server-handlers.js +0 -1221
  187. package/dist/event/server-handlers.js.map +0 -1
  188. package/dist/skills/baxian-research/SKILL.md +0 -28
  189. package/dist/skills/baxian-server-feedback/SKILL.md +0 -40
  190. package/dist/skills/baxian-server-feedback/agents/openai.yaml +0 -2
  191. package/dist/skills/baxian-server-review/SKILL.md +0 -58
  192. package/dist/skills/baxian-server-review/agents/openai.yaml +0 -2
  193. package/dist/state/review-store.d.ts +0 -33
  194. package/dist/state/review-store.d.ts.map +0 -1
  195. package/dist/state/review-store.js +0 -272
  196. package/dist/state/review-store.js.map +0 -1
  197. package/dist/web/assets/index-BPv6vv3U.css +0 -1
  198. package/dist/web/assets/index-BXfgaFNm.js +0 -18
@@ -1,512 +0,0 @@
1
- import { createHash, randomBytes } from 'node:crypto';
2
- import { isRecord, MAX_INLINE_CONTENT_BYTES, MAX_READ_FILE_BYTES, REVIEW_EXCHANGE_DIR, REVIEW_INBOX_DIR, RESEARCH_DOCS_DIR, SPEC_DOC_RELPATH, mapWithConcurrency, FS_READ_CONCURRENCY, renderSpecDocuments, } from '../shared/index.js';
3
- import { shellQuote } from './runner.js';
4
- import { GIT_NET_ENV, execNetwork, execOutcomeUnknown } from './net-exec.js';
5
- import { ancestorSymlinkGuard, BaxianRuntimeDirsError, canonicalSelfGuard, ensureBaxianRuntimeDirsSafe, guardedRemoveClause, moveFileIntoPlace, stageFileGuarded, sweepStrayFile } from './repo-store.js';
6
- export class ReviewExchangeError extends Error {
7
- reason;
8
- violationCode;
9
- constructor(reason, message, violationCode) {
10
- super(message);
11
- this.reason = reason;
12
- this.violationCode = violationCode;
13
- this.name = 'ReviewExchangeError';
14
- }
15
- }
16
- const SEVERITIES = new Set(['critical', 'major', 'minor']);
17
- const VERDICTS = new Set(['approve', 'request-changes']);
18
- const ACTIONS = new Set(['fix', 'reject', 'out-of-scope']);
19
- const REVIEW_DIFF_MAX_BUFFER_BYTES = 256 * 1024 * 1024;
20
- const SPEC_DOC_MAX_BYTES = 8 * 1024 * 1024;
21
- const RESEARCH_DOC_MAX_BYTES = 1024 * 1024;
22
- const RESEARCH_DOCS_TOTAL_MAX_BYTES = 8 * 1024 * 1024;
23
- const RESEARCH_DOCS_MAX_COUNT = 64;
24
- export function validateReviewFindings(raw) {
25
- if (!isRecord(raw))
26
- throw new ReviewExchangeError('schema', 'findings: not an object');
27
- if (typeof raw.round !== 'number' || !Number.isInteger(raw.round) || raw.round < 1) {
28
- throw new ReviewExchangeError('schema', 'findings.round must be a positive integer');
29
- }
30
- if (typeof raw.verdict !== 'string' || !VERDICTS.has(raw.verdict)) {
31
- throw new ReviewExchangeError('schema', `findings.verdict invalid: ${String(raw.verdict)}`);
32
- }
33
- if (!Array.isArray(raw.findings)) {
34
- throw new ReviewExchangeError('schema', 'findings.findings must be an array');
35
- }
36
- const ids = new Set();
37
- for (const f of raw.findings) {
38
- if (!isRecord(f))
39
- throw new ReviewExchangeError('schema', 'finding: not an object');
40
- if (typeof f.id !== 'string' || f.id.trim() === '') {
41
- throw new ReviewExchangeError('schema', 'finding.id must be a non-empty string');
42
- }
43
- if (ids.has(f.id))
44
- throw new ReviewExchangeError('schema', `duplicate finding id: ${f.id}`);
45
- ids.add(f.id);
46
- if (typeof f.severity !== 'string' || !SEVERITIES.has(f.severity)) {
47
- throw new ReviewExchangeError('schema', `finding.severity invalid: ${String(f.severity)}`);
48
- }
49
- if (typeof f.message !== 'string' || f.message.trim() === '') {
50
- throw new ReviewExchangeError('schema', `finding.message missing for ${f.id}`);
51
- }
52
- }
53
- const verdict = raw.verdict;
54
- if (verdict === 'approve') {
55
- const blocking = raw.findings.find(f => f.severity !== 'minor');
56
- if (blocking) {
57
- throw new ReviewExchangeError('verdict-conflict', `approve with ${blocking.severity} finding ${blocking.id}`);
58
- }
59
- }
60
- else if (raw.findings.length === 0) {
61
- throw new ReviewExchangeError('verdict-conflict', 'request-changes with no findings');
62
- }
63
- return raw;
64
- }
65
- export function validateReviewResponse(raw) {
66
- if (!isRecord(raw))
67
- throw new ReviewExchangeError('schema', 'response: not an object', 'response-not-object');
68
- if (typeof raw.round !== 'number' || !Number.isInteger(raw.round) || raw.round < 1) {
69
- throw new ReviewExchangeError('schema', 'response.round must be a positive integer', 'invalid-round');
70
- }
71
- if (typeof raw.token !== 'string' || !/^[0-9a-f]{12}$/.test(raw.token)) {
72
- throw new ReviewExchangeError('schema', 'response.token must be a 12-hex signal token', 'missing-or-invalid-token');
73
- }
74
- if (typeof raw.findingsDigest !== 'string' || !/^[0-9a-f]{64}$/.test(raw.findingsDigest)) {
75
- throw new ReviewExchangeError('schema', 'response.findingsDigest must be a lowercase SHA-256 digest', 'missing-or-invalid-findings-digest');
76
- }
77
- if (!Array.isArray(raw.responses)) {
78
- throw new ReviewExchangeError('schema', 'response.responses must be an array', 'responses-not-array');
79
- }
80
- const responseIds = new Set();
81
- for (const r of raw.responses) {
82
- if (!isRecord(r))
83
- throw new ReviewExchangeError('schema', 'response item: not an object', 'response-item-not-object');
84
- if (typeof r.findingId !== 'string' || r.findingId.trim() === '') {
85
- throw new ReviewExchangeError('schema', 'response.findingId must be a non-empty string', 'invalid-finding-id');
86
- }
87
- if (responseIds.has(r.findingId)) {
88
- throw new ReviewExchangeError('schema', `duplicate response findingId: ${r.findingId}`, 'duplicate-finding-id');
89
- }
90
- responseIds.add(r.findingId);
91
- if (typeof r.action !== 'string' || !ACTIONS.has(r.action)) {
92
- throw new ReviewExchangeError('schema', `response.action invalid: ${String(r.action)}`, 'invalid-action');
93
- }
94
- if (typeof r.rationale !== 'string' || r.rationale.trim() === '') {
95
- throw new ReviewExchangeError('schema', `response.rationale missing for ${r.findingId}`, 'missing-rationale');
96
- }
97
- }
98
- return raw;
99
- }
100
- function truncateUtf8(text, maxBytes) {
101
- const buf = Buffer.from(text, 'utf8');
102
- if (buf.byteLength <= maxBytes)
103
- return { text, truncated: false };
104
- let cut = maxBytes;
105
- while (cut > 0 && (buf[cut] & 0xc0) === 0x80)
106
- cut--;
107
- return { text: buf.subarray(0, cut).toString('utf8'), truncated: true };
108
- }
109
- export class ReviewTransport {
110
- deps;
111
- constructor(deps) {
112
- this.deps = deps;
113
- }
114
- async clearDispatchOutputs(agent, workdir, phase) {
115
- const resetsSpecDocuments = phase === 'develop' || phase === 'research';
116
- const paths = [
117
- `${workdir}/${REVIEW_EXCHANGE_DIR}/findings.json`,
118
- `${workdir}/${REVIEW_EXCHANGE_DIR}/response.json`,
119
- ...(resetsSpecDocuments ? [`${workdir}/${SPEC_DOC_RELPATH}`] : []),
120
- ];
121
- const runner = this.deps.createRunnerFor(agent);
122
- await this.ensureRuntimeDirs(runner, workdir);
123
- const result = await runner.exec(paths.map(p => guardedRemoveClause(workdir, p)).join(' && '));
124
- if (execOutcomeUnknown(result) || result.exitCode !== 0) {
125
- throw new ReviewExchangeError('artifact-cleanup-failed', `failed to clear stale dispatch outputs: ${result.stderr.trim() || `exit ${result.exitCode}`}`);
126
- }
127
- if (resetsSpecDocuments) {
128
- const researchDir = `${workdir}/${RESEARCH_DOCS_DIR}`;
129
- const cleared = await runner.exec(guardedRemoveClause(workdir, researchDir, { recursive: true }));
130
- if (execOutcomeUnknown(cleared) || cleared.exitCode !== 0) {
131
- throw new ReviewExchangeError('artifact-cleanup-failed', `failed to clear stale research docs: ${cleared.stderr.trim() || `exit ${cleared.exitCode}`}`);
132
- }
133
- await this.ensureRuntimeDirs(runner, workdir);
134
- }
135
- }
136
- async readContent(task, devAgent, phase) {
137
- const wt = this.requireWorkdir(devAgent.id);
138
- const runner = this.deps.createRunnerFor(devAgent);
139
- if (phase === 'spec') {
140
- const documents = await this.readSpecDocuments(devAgent);
141
- return { content: renderSpecDocuments(documents), documents };
142
- }
143
- // Every review read/fetch cd's into the Workdir; fold the canonical self-guard into that cd so a
144
- // mid-read ancestor rebind can't redirect symbolic-ref/rev-parse/diff to an external repo and leak it.
145
- const cd = `${canonicalSelfGuard(wt)} && cd ${shellQuote(wt)} && `;
146
- let fetch;
147
- try {
148
- fetch = await execNetwork(runner, `${cd}${GIT_NET_ENV} git fetch origin --quiet`);
149
- }
150
- catch (err) {
151
- throw new ReviewExchangeError('fetch-failed', `git fetch failed: ${err instanceof Error ? err.message : String(err)}`);
152
- }
153
- if (fetch.exitCode !== 0) {
154
- throw new ReviewExchangeError('fetch-failed', `git fetch failed: ${fetch.stderr.trim()}`);
155
- }
156
- const db = await runner.exec(`${cd}git symbolic-ref --short refs/remotes/origin/HEAD`);
157
- if (db.exitCode !== 0) {
158
- throw new ReviewExchangeError('default-branch-failed', `origin/HEAD unresolved: ${db.stderr.trim()}`);
159
- }
160
- const defaultBranch = db.stdout.trim().replace(/^origin\//, '') || 'main';
161
- const base = `origin/${defaultBranch}`;
162
- const head = await runner.exec(`${cd}git rev-parse HEAD`);
163
- if (head.exitCode !== 0 || head.stdout.trim() === '') {
164
- throw new ReviewExchangeError('head-failed', `git rev-parse HEAD failed: ${head.stderr.trim()}`);
165
- }
166
- const headSha = head.stdout.trim();
167
- const sha = await runner.exec(`${cd}git merge-base ${shellQuote(base)} ${shellQuote(headSha)}`);
168
- if (sha.exitCode !== 0) {
169
- throw new ReviewExchangeError('merge-base-failed', `git merge-base failed: ${sha.stderr.trim()}`);
170
- }
171
- const baseSha = sha.stdout.trim();
172
- const tree = await runner.exec(`${cd}git rev-parse ${shellQuote(`${headSha}^{tree}`)}`);
173
- if (tree.exitCode !== 0 || tree.stdout.trim() === '') {
174
- throw new ReviewExchangeError('head-tree-failed', `git rev-parse HEAD tree failed: ${tree.stderr.trim()}`);
175
- }
176
- const headTree = tree.stdout.trim();
177
- const stat = await runner.exec(`${cd}git -c core.quotepath=false diff --stat ${shellQuote(baseSha)} ${shellQuote(headSha)}`);
178
- if (stat.exitCode !== 0) {
179
- throw new ReviewExchangeError('diffstat-failed', `git diff --stat failed: ${stat.stderr.trim()}`);
180
- }
181
- const diff = await runner.exec(`${cd}git -c core.quotepath=false diff --binary ${shellQuote(baseSha)} ${shellQuote(headSha)}`, { maxBuffer: REVIEW_DIFF_MAX_BUFFER_BYTES });
182
- if (diff.exitCode !== 0) {
183
- throw new ReviewExchangeError('diff-failed', `git diff failed: ${diff.stderr.trim()}`);
184
- }
185
- return {
186
- content: diff.stdout,
187
- diffstat: stat.stdout,
188
- baseSha,
189
- headSha,
190
- headTree,
191
- defaultBranch,
192
- };
193
- }
194
- async readSpecDocuments(agent) {
195
- const workdir = this.requireWorkdir(agent.id);
196
- const runner = this.deps.createRunnerFor(agent);
197
- await this.ensureRuntimeDirs(runner, workdir);
198
- const specPath = `${workdir}/${SPEC_DOC_RELPATH}`;
199
- const researchDir = `${workdir}/${RESEARCH_DOCS_DIR}`;
200
- const [spec, listing] = await Promise.all([
201
- runner.exec(`if [ -f ${shellQuote(specPath)} ] && [ ! -L ${shellQuote(specPath)} ]; then cat ${shellQuote(specPath)}; else exit 4; fi`, { maxBuffer: SPEC_DOC_MAX_BYTES }).catch((err) => {
202
- throw new ReviewExchangeError('spec-too-large', `spec doc unreadable or too large: ${err instanceof Error ? err.message : String(err)}`);
203
- }),
204
- runner.exec(`if find ${shellQuote(researchDir)} -maxdepth 1 -type l -name '*.md' -print -quit | grep -q .; then exit 5; fi; `
205
- + `find ${shellQuote(researchDir)} -maxdepth 1 -type f -name '*.md' -print0`),
206
- ]);
207
- if (spec.exitCode !== 0) {
208
- throw new ReviewExchangeError('spec-missing', `spec doc missing, unreadable, or a symlink: ${spec.stderr.trim()}`);
209
- }
210
- if (listing.exitCode !== 0) {
211
- throw new ReviewExchangeError('research-docs-list-failed', `research docs listing failed or contains symlinks: ${listing.stderr.trim()}`);
212
- }
213
- const relPaths = listing.stdout
214
- .split('\0')
215
- .filter(Boolean)
216
- .map(path => path.startsWith(`${workdir}/`) ? path.slice(workdir.length + 1) : path)
217
- .sort();
218
- if (relPaths.length > RESEARCH_DOCS_MAX_COUNT) {
219
- throw new ReviewExchangeError('research-docs-too-many', `research docs exceed the ${RESEARCH_DOCS_MAX_COUNT}-file limit (${relPaths.length})`);
220
- }
221
- const reads = await mapWithConcurrency(relPaths, FS_READ_CONCURRENCY, relPath => runner.exec(`cat ${shellQuote(`${workdir}/${relPath}`)}`, { maxBuffer: RESEARCH_DOC_MAX_BYTES })
222
- .catch((err) => {
223
- throw new ReviewExchangeError('research-doc-too-large', `research doc unreadable or too large: ${relPath}: ${err instanceof Error ? err.message : String(err)}`);
224
- }));
225
- let totalBytes = 0;
226
- const documents = [{ relPath: SPEC_DOC_RELPATH, content: spec.stdout }];
227
- relPaths.forEach((relPath, index) => {
228
- const result = reads[index];
229
- if (result.exitCode !== 0) {
230
- throw new ReviewExchangeError('research-doc-unreadable', `research doc unreadable: ${relPath}`);
231
- }
232
- totalBytes += Buffer.byteLength(result.stdout, 'utf8');
233
- if (totalBytes > RESEARCH_DOCS_TOTAL_MAX_BYTES) {
234
- throw new ReviewExchangeError('research-docs-too-large', `research docs exceed the ${RESEARCH_DOCS_TOTAL_MAX_BYTES}-byte total limit`);
235
- }
236
- documents.push({ relPath, content: result.stdout });
237
- });
238
- return documents;
239
- }
240
- async replaceSpecDocuments(agent, workdir, documents, assertOwner) {
241
- this.validateSpecDocuments(documents);
242
- const runner = this.deps.createRunnerFor(agent);
243
- const specPath = `${workdir}/${SPEC_DOC_RELPATH}`;
244
- const researchDir = `${workdir}/${RESEARCH_DOCS_DIR}`;
245
- await assertOwner();
246
- await this.ensureRuntimeDirs(runner, workdir);
247
- const cleared = await runner.exec(`${guardedRemoveClause(workdir, specPath)} && ${guardedRemoveClause(workdir, researchDir, { recursive: true })}`);
248
- if (cleared.exitCode !== 0) {
249
- throw new ReviewExchangeError('spec-seed-failed', `failed to clear old spec documents: ${cleared.stderr.trim() || `exit ${cleared.exitCode}`}`);
250
- }
251
- await assertOwner();
252
- await this.ensureRuntimeDirs(runner, workdir);
253
- await mapWithConcurrency(documents, FS_READ_CONCURRENCY, async (document) => {
254
- await assertOwner();
255
- const final = `${workdir}/${document.relPath}`;
256
- const dir = final.slice(0, final.lastIndexOf('/'));
257
- const tmp = `${dir}/.tmp-${randomBytes(8).toString('hex')}`;
258
- try {
259
- await stageFileGuarded(runner, workdir, tmp, document.content);
260
- await assertOwner();
261
- await moveFileIntoPlace(runner, tmp, final, { guardRoot: workdir });
262
- await assertOwner();
263
- }
264
- catch (err) {
265
- await sweepStrayFile(runner, tmp, ancestorSymlinkGuard(workdir, tmp));
266
- if (err instanceof ReviewExchangeError)
267
- throw err;
268
- throw new ReviewExchangeError('spec-seed-failed', `failed to write ${document.relPath}: ${err instanceof Error ? err.message : String(err)}`);
269
- }
270
- });
271
- }
272
- async readFindings(task, qaAgent) {
273
- const raw = await this.readExchangeFile(qaAgent, 'findings.json');
274
- if (raw === null)
275
- return null;
276
- return validateReviewFindings(this.parseJson(raw, 'findings.json'));
277
- }
278
- async readResponse(task, devAgent) {
279
- const result = await this.readResponseWithRaw(task, devAgent);
280
- if (result.kind === 'absent')
281
- return null;
282
- if (result.kind === 'ok')
283
- return result.response;
284
- throw result.error;
285
- }
286
- async readResponseWithRaw(_task, devAgent) {
287
- let raw;
288
- try {
289
- raw = await this.readExchangeFile(devAgent, 'response.json');
290
- }
291
- catch (err) {
292
- const error = err instanceof ReviewExchangeError
293
- ? err
294
- : new ReviewExchangeError('read-unknown', err instanceof Error ? err.message : String(err));
295
- if (error.reason === 'read-unknown' || error.reason === 'runtime-path-probe-failed') {
296
- return { kind: 'unknown', error };
297
- }
298
- throw error;
299
- }
300
- if (raw === null)
301
- return { kind: 'absent' };
302
- const responseDigest = createHash('sha256').update(raw, 'utf8').digest('hex');
303
- try {
304
- const response = validateReviewResponse(this.parseJson(raw, 'response.json'));
305
- return { kind: 'ok', raw, response, responseDigest };
306
- }
307
- catch (err) {
308
- const error = err instanceof ReviewExchangeError
309
- ? err
310
- : new ReviewExchangeError('schema', err instanceof Error ? err.message : String(err), 'unknown-schema-error');
311
- const violationCode = error.violationCode ?? (error.reason === 'parse' ? 'malformed-json' : 'unknown-schema-error');
312
- return { kind: 'invalid', raw, responseDigest, error, schemaViolationCodes: [violationCode] };
313
- }
314
- }
315
- async deleteFindings(qaAgent) {
316
- await this.deleteExchangeFile(qaAgent, 'findings.json');
317
- }
318
- async deleteResponse(devAgent) {
319
- await this.deleteExchangeFile(devAgent, 'response.json');
320
- }
321
- async readHeadSha(devAgent) {
322
- const wt = this.requireWorkdir(devAgent.id);
323
- const runner = this.deps.createRunnerFor(devAgent);
324
- const r = await runner.exec(`cd ${shellQuote(wt)} && git rev-parse HEAD`);
325
- if (r.exitCode !== 0 || r.stdout.trim() === '') {
326
- throw new ReviewExchangeError('head-failed', `git rev-parse HEAD failed: ${r.stderr.trim()}`);
327
- }
328
- return r.stdout.trim();
329
- }
330
- async readInterdiff(devAgent, prevSha, curSha) {
331
- const wt = this.requireWorkdir(devAgent.id);
332
- const runner = this.deps.createRunnerFor(devAgent);
333
- // two-arg tree diff, not prev...cur — three-dot regresses to the whole patchset when the review head was rewritten (amend/squash/rebase, #515)
334
- const r = await runner.exec(`cd ${shellQuote(wt)} && git -c core.quotepath=false diff ${shellQuote(prevSha)} ${shellQuote(curSha)}`);
335
- if (r.exitCode !== 0) {
336
- throw new ReviewExchangeError('interdiff-failed', `git diff failed: ${r.stderr.trim()}`);
337
- }
338
- return r.stdout;
339
- }
340
- async readFileRange(devAgent, file, startLine, endLine) {
341
- if (file.startsWith('/'))
342
- throw new ReviewExchangeError('abs-path', file);
343
- if (file.split('/').includes('..'))
344
- throw new ReviewExchangeError('traversal', file);
345
- if (/[\x00-\x1f]/.test(file))
346
- throw new ReviewExchangeError('ctrl-char', JSON.stringify(file));
347
- if (file.startsWith('-'))
348
- throw new ReviewExchangeError('leading-dash', file);
349
- if (!Number.isInteger(startLine) || !Number.isInteger(endLine)
350
- || startLine < 1 || endLine < startLine || endLine - startLine > 200) {
351
- throw new ReviewExchangeError('range', `${startLine}-${endLine}`);
352
- }
353
- const wt = this.requireWorkdir(devAgent.id);
354
- const runner = this.deps.createRunnerFor(devAgent);
355
- const symlinkWalk = `p=${shellQuote(`${wt}/${file}`)}; ` +
356
- `while [ "$p" != ${shellQuote(wt)} ] && [ "$p" != "/" ] && [ -n "$p" ]; do ` +
357
- `if [ -L "$p" ]; then exit 9; fi; p=$(dirname "$p"); done`;
358
- const walk = await runner.exec(symlinkWalk);
359
- if (walk.exitCode !== 0) {
360
- throw new ReviewExchangeError('escape', file);
361
- }
362
- const r = await runner.exec(`sed -n ${shellQuote(`${startLine},${endLine}p`)} -- ${shellQuote(`${wt}/${file}`)}`);
363
- if (r.exitCode !== 0) {
364
- throw new ReviewExchangeError('read-failed', r.stderr.trim());
365
- }
366
- const { text, truncated } = truncateUtf8(r.stdout, MAX_READ_FILE_BYTES);
367
- return truncated ? `${text}\n[truncated]` : text;
368
- }
369
- async deliverToInbox(agent, workdir, filename, content) {
370
- if (filename === '' || filename.includes('/') || filename.startsWith('.')) {
371
- throw new ReviewExchangeError('bad-filename', JSON.stringify(filename));
372
- }
373
- const wt = workdir.endsWith('/') ? workdir.slice(0, -1) : workdir;
374
- const dir = `${wt}/${REVIEW_INBOX_DIR}`;
375
- const tmp = `${dir}/.tmp-${randomBytes(6).toString('hex')}`;
376
- const final = `${dir}/${filename}`;
377
- const runner = this.deps.createRunnerFor(agent);
378
- await this.ensureRuntimeDirs(runner, wt);
379
- try {
380
- await stageFileGuarded(runner, wt, tmp, content);
381
- await moveFileIntoPlace(runner, tmp, final, { guardRoot: wt });
382
- }
383
- catch (err) {
384
- throw new ReviewExchangeError('deliver-failed', `${filename}: ${err instanceof Error ? err.message : String(err)}`);
385
- }
386
- return { path: `${REVIEW_INBOX_DIR}/${filename}`, bytes: Buffer.byteLength(content, 'utf8') };
387
- }
388
- async readExchangeFile(agent, name) {
389
- const wt = this.requireWorkdir(agent.id);
390
- const runner = this.deps.createRunnerFor(agent);
391
- await this.ensureRuntimeDirs(runner, wt);
392
- let r;
393
- try {
394
- r = await runner.exec(`cat ${shellQuote(`${wt}/${REVIEW_EXCHANGE_DIR}/${name}`)}`);
395
- }
396
- catch (err) {
397
- throw new ReviewExchangeError('read-unknown', `${name}: ${err instanceof Error ? err.message : String(err)}`);
398
- }
399
- if (execOutcomeUnknown(r)) {
400
- throw new ReviewExchangeError('read-unknown', `${name}: ${r.stderr.trim() || r.stdout.trim() || `exit ${r.exitCode}`}`);
401
- }
402
- if (r.exitCode !== 0) {
403
- if (/no such file/i.test(r.stderr))
404
- return null;
405
- throw new ReviewExchangeError('read-failed', `${name}: ${r.stderr.trim()}`);
406
- }
407
- return r.stdout;
408
- }
409
- async deleteExchangeFile(agent, name) {
410
- const wt = this.requireWorkdir(agent.id);
411
- const runner = this.deps.createRunnerFor(agent);
412
- await this.ensureRuntimeDirs(runner, wt);
413
- const target = `${wt}/${REVIEW_EXCHANGE_DIR}/${name}`;
414
- const rm = await runner.exec(guardedRemoveClause(wt, target));
415
- if (execOutcomeUnknown(rm) || rm.exitCode !== 0) {
416
- throw new ReviewExchangeError('artifact-cleanup-failed', `failed to delete ${target}: ${rm.stderr.trim() || `exit ${rm.exitCode}`}`);
417
- }
418
- }
419
- async ensureRuntimeDirs(runner, workdir) {
420
- try {
421
- await ensureBaxianRuntimeDirsSafe(runner, workdir);
422
- }
423
- catch (err) {
424
- throw new ReviewExchangeError(err instanceof BaxianRuntimeDirsError ? err.reason : 'runtime-path-probe-failed', err instanceof Error ? err.message : String(err));
425
- }
426
- }
427
- validateSpecDocuments(documents) {
428
- if (documents.length === 0 || documents[0]?.relPath !== SPEC_DOC_RELPATH) {
429
- throw new ReviewExchangeError('spec-seed-invalid', `documents must start with ${SPEC_DOC_RELPATH}`);
430
- }
431
- if (documents.length - 1 > RESEARCH_DOCS_MAX_COUNT) {
432
- throw new ReviewExchangeError('spec-seed-invalid', 'too many research documents');
433
- }
434
- const paths = documents.map(document => document.relPath);
435
- if (new Set(paths).size !== paths.length) {
436
- throw new ReviewExchangeError('spec-seed-invalid', 'document paths must be unique');
437
- }
438
- if (Buffer.byteLength(documents[0].content, 'utf8') > SPEC_DOC_MAX_BYTES) {
439
- throw new ReviewExchangeError('spec-seed-invalid', 'spec document exceeds the size limit');
440
- }
441
- let researchBytes = 0;
442
- const prefix = `${RESEARCH_DOCS_DIR}/`;
443
- for (const document of documents.slice(1)) {
444
- const name = document.relPath.slice(prefix.length);
445
- if (!document.relPath.startsWith(prefix) || name === '' || name.includes('/') || !name.endsWith('.md')) {
446
- throw new ReviewExchangeError('spec-seed-invalid', `invalid research document path: ${document.relPath}`);
447
- }
448
- const bytes = Buffer.byteLength(document.content, 'utf8');
449
- if (bytes > RESEARCH_DOC_MAX_BYTES) {
450
- throw new ReviewExchangeError('spec-seed-invalid', `${document.relPath} exceeds the size limit`);
451
- }
452
- researchBytes += bytes;
453
- }
454
- const sorted = [...paths.slice(1)].sort();
455
- if (paths.slice(1).some((path, index) => path !== sorted[index])) {
456
- throw new ReviewExchangeError('spec-seed-invalid', 'research document paths must be sorted');
457
- }
458
- if (researchBytes > RESEARCH_DOCS_TOTAL_MAX_BYTES) {
459
- throw new ReviewExchangeError('spec-seed-invalid', 'research documents exceed the total size limit');
460
- }
461
- }
462
- parseJson(raw, label) {
463
- try {
464
- return JSON.parse(raw);
465
- }
466
- catch {
467
- throw new ReviewExchangeError('parse', `${label}: invalid JSON`);
468
- }
469
- }
470
- requireWorkdir(agentId) {
471
- const wt = this.deps.resolveWorkdir(agentId);
472
- if (!wt)
473
- throw new ReviewExchangeError('no-workdir', `agent ${agentId} has no Workdir`);
474
- return wt.endsWith('/') ? wt.slice(0, -1) : wt;
475
- }
476
- }
477
- function serverPayloadRound(input) {
478
- const specSide = input.phase === 'server-spec-review'
479
- || (input.phase === 'server-feedback' && input.taskPhase === 'spec');
480
- return specSide ? Math.max(input.specRound ?? 1, 1) : Math.max(input.reviewRound, 1);
481
- }
482
- function contentFilename(phase, round, batch) {
483
- if (phase === 'server-spec-review')
484
- return `spec-round-${round}.md`;
485
- return batch ? `diff-round-${round}-batch-${batch.index + 1}.patch` : `diff-round-${round}.patch`;
486
- }
487
- export async function resolveServerPayloads(transport, agent, workdir, input) {
488
- if (input.phase === 'server-feedback' && input.serverContent !== undefined) {
489
- throw new ReviewExchangeError('unexpected-payload', 'server-feedback carries findings only');
490
- }
491
- const round = serverPayloadRound(input);
492
- const out = {};
493
- const place = async (value, filename, inlineKey, fileKey, forceFile = false) => {
494
- if (value === undefined)
495
- return;
496
- if (!forceFile && Buffer.byteLength(value, 'utf8') <= MAX_INLINE_CONTENT_BYTES) {
497
- out[inlineKey] = value;
498
- return;
499
- }
500
- out[fileKey] = await transport.deliverToInbox(agent, workdir, filename, value);
501
- };
502
- await place(input.serverContent, contentFilename(input.phase, round, input.batch), 'serverContent', 'serverContentFile', input.forceContentFile);
503
- await place(input.serverDiffstat, `diffstat-round-${round}.txt`, 'serverDiffstat', 'serverDiffstatFile');
504
- await place(input.serverInterdiff, `interdiff-round-${round}.patch`, 'serverInterdiff', 'serverInterdiffFile');
505
- const findingsName = input.phase === 'server-feedback'
506
- ? `findings-round-${round}.json`
507
- : `prior-findings-round-${round}.json`;
508
- await place(input.serverPriorFindings, findingsName, 'serverPriorFindings', 'serverPriorFindingsFile');
509
- await place(input.serverPriorResponse, `prior-response-round-${round}.json`, 'serverPriorResponse', 'serverPriorResponseFile');
510
- return out;
511
- }
512
- //# sourceMappingURL=review-transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"review-transport.js","sourceRoot":"","sources":["../../src/agent/review-transport.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { EventBus } from './bus.js';
2
- import type { AgentManager } from '../agent/manager.js';
3
- export declare function registerServerEventHandlers(bus: EventBus, manager: AgentManager): void;
4
- //# sourceMappingURL=server-handlers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-handlers.d.ts","sourceRoot":"","sources":["../../src/event/server-handlers.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAyLxD,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAk+CtF"}