@event4u/agent-config 4.1.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +51 -0
- package/README.md +3 -2
- package/dist/cli/agent-config.js +9 -0
- package/dist/cli/agent-config.js.map +1 -1
- package/dist/cli/commands/uiServe.js +1 -1
- package/dist/cli/commands/uiServe.js.map +1 -1
- package/dist/cli/initRouting.js +101 -0
- package/dist/cli/initRouting.js.map +1 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +1 -1
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +1 -1
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +1 -1
- package/dist/mcp/registry-manifest.json +1 -1
- package/dist/server/routes/install.js +11 -200
- package/dist/server/routes/install.js.map +1 -1
- package/dist/server/routes/wizard.js +167 -26
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/schemas/settings.js +1 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/ui/assets/index-BDAhhpDV.js +40 -0
- package/dist/ui/assets/index-BDAhhpDV.js.map +1 -0
- package/dist/ui/index.html +1 -1
- package/docs/contracts/gui-wizard.md +116 -96
- package/docs/decisions/ADR-021-deployment-shape.md +2 -2
- package/docs/deploy/connector-setup.md +2 -2
- package/docs/deploy/policy-cookbook.md +2 -2
- package/package.json +1 -1
- package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
- package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
- package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
- package/scripts/install.py +197 -34
- package/scripts/lint_framework_leakage_allowlist.json +8 -0
- package/dist/install/apply.js +0 -238
- package/dist/install/apply.js.map +0 -1
- package/dist/install/bridges/augment.js +0 -20
- package/dist/install/bridges/augment.js.map +0 -1
- package/dist/install/bridges/claude.js +0 -44
- package/dist/install/bridges/claude.js.map +0 -1
- package/dist/install/bridges/cline.js +0 -69
- package/dist/install/bridges/cline.js.map +0 -1
- package/dist/install/bridges/copilot.js +0 -28
- package/dist/install/bridges/copilot.js.map +0 -1
- package/dist/install/bridges/cursor.js +0 -34
- package/dist/install/bridges/cursor.js.map +0 -1
- package/dist/install/bridges/gemini.js +0 -39
- package/dist/install/bridges/gemini.js.map +0 -1
- package/dist/install/bridges/index.js +0 -88
- package/dist/install/bridges/index.js.map +0 -1
- package/dist/install/bridges/marker-content.js +0 -153
- package/dist/install/bridges/marker-content.js.map +0 -1
- package/dist/install/bridges/markers.js +0 -42
- package/dist/install/bridges/markers.js.map +0 -1
- package/dist/install/bridges/types.js +0 -31
- package/dist/install/bridges/types.js.map +0 -1
- package/dist/install/bridges/vscode.js +0 -26
- package/dist/install/bridges/vscode.js.map +0 -1
- package/dist/install/bridges/windsurf.js +0 -35
- package/dist/install/bridges/windsurf.js.map +0 -1
- package/dist/ui/assets/index-DLEuEW1V.js +0 -35
- package/dist/ui/assets/index-DLEuEW1V.js.map +0 -1
|
@@ -4,23 +4,16 @@
|
|
|
4
4
|
* GET /api/v1/install/detect — scope + tool presence at `cwd`.
|
|
5
5
|
* POST /api/v1/install/plan — build an {@link InstallPlan} from a
|
|
6
6
|
* declarative {@link PlanSource}[] body.
|
|
7
|
-
* POST /api/v1/install/apply — execute the plan; streams SSE frames
|
|
8
|
-
* (`progress` / `conflict` / `error` / `done`).
|
|
9
7
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* to `req.raw.on("close")` and fires an `AbortController`; the engine
|
|
17
|
-
* appends an `abort` marker to the transaction log and resolves the
|
|
18
|
-
* partial {@link ApplyResult}. Next boot's recovery surfaces the marker
|
|
19
|
-
* as `Resume` / `Rollback` / `Ignore`.
|
|
8
|
+
* The real *apply* path is owned by `scripts/install.py --apply-payload`
|
|
9
|
+
* (single source of truth, D12 / ADR-020) and surfaced to the GUI via
|
|
10
|
+
* `POST /api/v1/wizard/apply` (see `wizard.ts`). The legacy TypeScript
|
|
11
|
+
* apply engine + its `POST /api/v1/install/apply` SSE route were removed in
|
|
12
|
+
* road-to-single-install-source-of-truth § Phase 3 — this module now only
|
|
13
|
+
* serves the read-only detect / plan-preview / recovery / legacy-v3 routes.
|
|
20
14
|
*/
|
|
21
15
|
import { z } from 'zod';
|
|
22
|
-
import {
|
|
23
|
-
import { computeConflicts, expandBatchChoice, } from '../../install/conflict.js';
|
|
16
|
+
import { computeConflicts } from '../../install/conflict.js';
|
|
24
17
|
import { cpSync, existsSync, mkdirSync } from 'node:fs';
|
|
25
18
|
import { detectLegacyV3, detectPackageRoot, detectProjectShape, detectScope, detectToolPresence, } from '../../install/detect.js';
|
|
26
19
|
import { getLogPath } from '../../install/paths.js';
|
|
@@ -89,7 +82,6 @@ const ConflictEntrySchema = z.object({
|
|
|
89
82
|
existingSha256: z.string().nullable(),
|
|
90
83
|
mergeable: z.boolean(),
|
|
91
84
|
});
|
|
92
|
-
const ConflictResolutionSchema = z.enum(['skip', 'overwrite', 'merge']);
|
|
93
85
|
/**
|
|
94
86
|
* Wire-shape of {@link InstallPlan} — Sets serialise as arrays over JSON,
|
|
95
87
|
* so the apply request carries `knownPaths` / `knownPointers` as string
|
|
@@ -117,22 +109,6 @@ const InstallPlanWireSchema = z.object({
|
|
|
117
109
|
}),
|
|
118
110
|
conflicts: z.array(ConflictEntrySchema).default([]),
|
|
119
111
|
});
|
|
120
|
-
function wireToPlan(w) {
|
|
121
|
-
return {
|
|
122
|
-
version: 2,
|
|
123
|
-
target: w.target,
|
|
124
|
-
root: w.root,
|
|
125
|
-
filesByTool: w.filesByTool,
|
|
126
|
-
mergedKeysByTool: w.mergedKeysByTool,
|
|
127
|
-
policy: {
|
|
128
|
-
force: w.policy.force,
|
|
129
|
-
interactive: w.policy.interactive,
|
|
130
|
-
knownPaths: new Set(w.policy.knownPaths),
|
|
131
|
-
knownPointers: new Set(w.policy.knownPointers),
|
|
132
|
-
defaultStrategy: w.policy.defaultStrategy,
|
|
133
|
-
},
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
112
|
function planToWire(p) {
|
|
137
113
|
return {
|
|
138
114
|
version: 2,
|
|
@@ -150,33 +126,6 @@ function planToWire(p) {
|
|
|
150
126
|
conflicts: [...computeConflicts(p)],
|
|
151
127
|
};
|
|
152
128
|
}
|
|
153
|
-
/**
|
|
154
|
-
* Batch-resolution choice — sent in lieu of an exhaustive `resolutions`
|
|
155
|
-
* map when the wizard is in batch mode (≥ {@link CONFLICT_BATCH_THRESHOLD}
|
|
156
|
-
* conflicts). The server fans the choice out via {@link expandBatchChoice}
|
|
157
|
-
* so the apply layer always sees a per-path map regardless of UI mode.
|
|
158
|
-
*/
|
|
159
|
-
const BatchChoiceSchema = z.enum(['skip-all', 'overwrite-all', 'merge-json']);
|
|
160
|
-
const ApplyRequestSchema = z.object({
|
|
161
|
-
plan: InstallPlanWireSchema,
|
|
162
|
-
sourceByTarget: z.record(z.string(), z.string()),
|
|
163
|
-
/** Optional override for the transaction-log path (tests only). */
|
|
164
|
-
logPath: z.string().optional(),
|
|
165
|
-
/**
|
|
166
|
-
* Per-path conflict resolutions chosen by the wizard. Keys are
|
|
167
|
-
* absolute target paths (matching `plan.conflicts[i].path`).
|
|
168
|
-
* Paths missing from the map fall back to the policy default
|
|
169
|
-
* (`surface` → `skip` at the apply layer).
|
|
170
|
-
*/
|
|
171
|
-
resolutions: z.record(z.string(), ConflictResolutionSchema).optional(),
|
|
172
|
-
/**
|
|
173
|
-
* Optional batch choice — expanded server-side into `resolutions`
|
|
174
|
-
* using the plan's conflict list. When both `resolutions` and
|
|
175
|
-
* `batchChoice` are present, `resolutions` wins per path; the
|
|
176
|
-
* batch choice fills the gaps.
|
|
177
|
-
*/
|
|
178
|
-
batchChoice: BatchChoiceSchema.optional(),
|
|
179
|
-
});
|
|
180
129
|
export const DetectResponseSchema = z.object({
|
|
181
130
|
cwd: z.string(),
|
|
182
131
|
scope: z.object({ scope: z.enum(['project', 'prompt', 'global']), reason: z.string() }),
|
|
@@ -195,20 +144,6 @@ export const DetectResponseSchema = z.object({
|
|
|
195
144
|
}),
|
|
196
145
|
packageRoot: z.string().nullable(),
|
|
197
146
|
});
|
|
198
|
-
/** Map a Node `fs` error code to the stable SSE error code (Finding #20). */
|
|
199
|
-
function mapErrorCode(code) {
|
|
200
|
-
if (code === 'ENOSPC')
|
|
201
|
-
return 'E_DISK_FULL';
|
|
202
|
-
if (code === 'EACCES' || code === 'EPERM')
|
|
203
|
-
return 'E_PERM';
|
|
204
|
-
if (code === 'E_CONFLICT_UNRESOLVED')
|
|
205
|
-
return 'E_CONFLICT_UNRESOLVED';
|
|
206
|
-
return 'E_WRITE';
|
|
207
|
-
}
|
|
208
|
-
/** SSE frame writer — one event per `data:` line, blank line terminator. */
|
|
209
|
-
function writeFrame(reply, payload) {
|
|
210
|
-
reply.raw.write(`data: ${JSON.stringify(payload)}\n\n`);
|
|
211
|
-
}
|
|
212
147
|
/**
|
|
213
148
|
* Resolve a {@link PlanRequest} into the low-level `PlanSource[]` array.
|
|
214
149
|
* Sources branch passes through unchanged; wizard branch runs the
|
|
@@ -246,130 +181,6 @@ function planFromRequest(body, opts) {
|
|
|
246
181
|
},
|
|
247
182
|
});
|
|
248
183
|
}
|
|
249
|
-
/**
|
|
250
|
-
* Merge a batch choice with per-path resolutions into the map the engine
|
|
251
|
-
* consumes. Per-path entries always win; the batch choice fills the gaps
|
|
252
|
-
* for paths the wizard did not address individually (Finding #19).
|
|
253
|
-
*
|
|
254
|
-
* Returns `undefined` when neither input is present so the engine keeps
|
|
255
|
-
* its surface-to-skip default behaviour without an empty-map allocation.
|
|
256
|
-
*/
|
|
257
|
-
function buildResolutionMap(conflicts, resolutions, batchChoice) {
|
|
258
|
-
if (resolutions === undefined && batchChoice === undefined)
|
|
259
|
-
return undefined;
|
|
260
|
-
const map = new Map();
|
|
261
|
-
if (batchChoice !== undefined) {
|
|
262
|
-
const expanded = expandBatchChoice(conflicts, batchChoice);
|
|
263
|
-
for (const [path, res] of Object.entries(expanded)) {
|
|
264
|
-
map.set(path, res);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
if (resolutions !== undefined) {
|
|
268
|
-
for (const [path, res] of Object.entries(resolutions)) {
|
|
269
|
-
map.set(path, res);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
return map;
|
|
273
|
-
}
|
|
274
|
-
function mapApplyProgressToFrame(p) {
|
|
275
|
-
if (p.status === 'written' || p.status === 'skipped') {
|
|
276
|
-
return {
|
|
277
|
-
type: 'progress',
|
|
278
|
-
file: p.file.path,
|
|
279
|
-
status: p.status,
|
|
280
|
-
written: p.written,
|
|
281
|
-
total: p.total,
|
|
282
|
-
};
|
|
283
|
-
}
|
|
284
|
-
if (p.status === 'conflict') {
|
|
285
|
-
return {
|
|
286
|
-
type: 'conflict',
|
|
287
|
-
entries: [{ path: p.file.path, kind: p.file.kind }],
|
|
288
|
-
};
|
|
289
|
-
}
|
|
290
|
-
const code = p.error ? mapErrorCode(p.error.code) : 'E_WRITE';
|
|
291
|
-
return {
|
|
292
|
-
type: 'error',
|
|
293
|
-
code,
|
|
294
|
-
message: p.error?.message ?? 'unknown error',
|
|
295
|
-
recoverable: code !== 'E_DISK_FULL' && code !== 'E_CRASH',
|
|
296
|
-
file: p.file.path,
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
function summaryFrame(result) {
|
|
300
|
-
return {
|
|
301
|
-
type: 'done',
|
|
302
|
-
summary: {
|
|
303
|
-
target: result.target,
|
|
304
|
-
written: result.written.length,
|
|
305
|
-
skipped: result.skipped.length,
|
|
306
|
-
conflicts: result.conflicts.length,
|
|
307
|
-
errors: result.errors.length,
|
|
308
|
-
},
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
async function applyHandler(req, reply, opts) {
|
|
312
|
-
const parsed = ApplyRequestSchema.safeParse(req.body);
|
|
313
|
-
if (!parsed.success) {
|
|
314
|
-
await reply.code(400).send({ error: 'invalid apply request', details: parsed.error.flatten() });
|
|
315
|
-
return;
|
|
316
|
-
}
|
|
317
|
-
// SSE headers — flush immediately so the browser opens the channel.
|
|
318
|
-
reply.raw.writeHead(200, {
|
|
319
|
-
'Content-Type': 'text/event-stream',
|
|
320
|
-
'Cache-Control': 'no-cache, no-transform',
|
|
321
|
-
Connection: 'keep-alive',
|
|
322
|
-
'X-Accel-Buffering': 'no',
|
|
323
|
-
});
|
|
324
|
-
reply.raw.flushHeaders?.();
|
|
325
|
-
const controller = new AbortController();
|
|
326
|
-
// Council Finding #24: tear down the apply loop when the client
|
|
327
|
-
// disconnects so half-applied installs surface a clean partial result
|
|
328
|
-
// instead of a zombie loop. The transaction log records an `abort`
|
|
329
|
-
// marker so the next boot can offer Resume / Rollback / Ignore.
|
|
330
|
-
//
|
|
331
|
-
// Listen on `reply.raw` (ServerResponse), not `req.raw` (IncomingMessage):
|
|
332
|
-
// the request stream emits `close` as soon as the body is fully
|
|
333
|
-
// consumed (undici / fetch send-then-half-close), which would fire
|
|
334
|
-
// mid-stream on every healthy request. The response stream only
|
|
335
|
-
// emits `close` on actual client teardown. Guard with `writableEnded`
|
|
336
|
-
// so the server's own `reply.raw.end()` (in `finally`) does not
|
|
337
|
-
// trigger the abort.
|
|
338
|
-
const onClose = () => {
|
|
339
|
-
if (!reply.raw.writableEnded) {
|
|
340
|
-
controller.abort();
|
|
341
|
-
}
|
|
342
|
-
};
|
|
343
|
-
reply.raw.on('close', onClose);
|
|
344
|
-
const sourceByTarget = new Map(Object.entries(parsed.data.sourceByTarget));
|
|
345
|
-
const logPath = parsed.data.logPath ?? opts.logPath ?? getLogPath();
|
|
346
|
-
const plan = wireToPlan(parsed.data.plan);
|
|
347
|
-
const resolutions = buildResolutionMap(parsed.data.plan.conflicts, parsed.data.resolutions, parsed.data.batchChoice);
|
|
348
|
-
try {
|
|
349
|
-
const result = await applyPlanStreaming({
|
|
350
|
-
plan,
|
|
351
|
-
sourceByTarget,
|
|
352
|
-
logPath,
|
|
353
|
-
signal: controller.signal,
|
|
354
|
-
onProgress: (p) => writeFrame(reply, mapApplyProgressToFrame(p)),
|
|
355
|
-
...(resolutions !== undefined ? { resolutions } : {}),
|
|
356
|
-
});
|
|
357
|
-
writeFrame(reply, summaryFrame(result));
|
|
358
|
-
}
|
|
359
|
-
catch (err) {
|
|
360
|
-
const code = 'E_CRASH';
|
|
361
|
-
writeFrame(reply, {
|
|
362
|
-
type: 'error',
|
|
363
|
-
code,
|
|
364
|
-
message: err instanceof Error ? err.message : String(err),
|
|
365
|
-
recoverable: false,
|
|
366
|
-
});
|
|
367
|
-
}
|
|
368
|
-
finally {
|
|
369
|
-
reply.raw.off('close', onClose);
|
|
370
|
-
reply.raw.end();
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
184
|
/**
|
|
374
185
|
* Summarise a txlog tail into a recovery decision (Phase B4, council
|
|
375
186
|
* Finding #24 closure).
|
|
@@ -444,7 +255,10 @@ export function installRoute(opts = {}) {
|
|
|
444
255
|
return;
|
|
445
256
|
}
|
|
446
257
|
try {
|
|
447
|
-
|
|
258
|
+
// Validate the wire shape on the way out so the response
|
|
259
|
+
// contract stays enforced now that the schema is no longer
|
|
260
|
+
// referenced by the (removed) apply route.
|
|
261
|
+
return InstallPlanWireSchema.parse(planToWire(planFromRequest(parsed.data, opts)));
|
|
448
262
|
}
|
|
449
263
|
catch (err) {
|
|
450
264
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -458,9 +272,6 @@ export function installRoute(opts = {}) {
|
|
|
458
272
|
throw err;
|
|
459
273
|
}
|
|
460
274
|
});
|
|
461
|
-
app.post('/api/v1/install/apply', async (req, reply) => {
|
|
462
|
-
await applyHandler(req, reply, opts);
|
|
463
|
-
});
|
|
464
275
|
// Phase B4 — recovery-pre-step: read the txlog tail and surface
|
|
465
276
|
// an abort marker so the wizard can prompt Resume / Rollback /
|
|
466
277
|
// Ignore before showing Step 1.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/server/routes/install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/server/routes/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -149,6 +149,64 @@ async function spawnInstaller(scriptPath, args) {
|
|
|
149
149
|
});
|
|
150
150
|
});
|
|
151
151
|
}
|
|
152
|
+
/** SSE frame writer — one event per `data:` line, blank-line terminator. */
|
|
153
|
+
function writeFrame(reply, payload) {
|
|
154
|
+
reply.raw.write(`data: ${JSON.stringify(payload)}\n\n`);
|
|
155
|
+
}
|
|
156
|
+
function streamInstaller(scriptPath, args, onLine, signal) {
|
|
157
|
+
return new Promise((resolve, reject) => {
|
|
158
|
+
const child = spawn('python3', [scriptPath, ...args], {
|
|
159
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
160
|
+
env: { ...process.env, AGENT_CONFIG_NO_UPDATE_CHECK: '1' },
|
|
161
|
+
});
|
|
162
|
+
const onAbort = () => {
|
|
163
|
+
child.kill('SIGTERM');
|
|
164
|
+
};
|
|
165
|
+
if (signal !== undefined) {
|
|
166
|
+
if (signal.aborted)
|
|
167
|
+
onAbort();
|
|
168
|
+
else
|
|
169
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
170
|
+
}
|
|
171
|
+
const stderrChunks = [];
|
|
172
|
+
let buf = '';
|
|
173
|
+
const handleLine = (line) => {
|
|
174
|
+
const trimmed = line.trim();
|
|
175
|
+
if (trimmed.length === 0)
|
|
176
|
+
return;
|
|
177
|
+
try {
|
|
178
|
+
onLine(JSON.parse(trimmed));
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
// Non-JSON stdout (defensive — real-apply runs with QUIET so
|
|
182
|
+
// only NDJSON reaches stdout). Drop it rather than corrupt the
|
|
183
|
+
// SSE stream.
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
child.stdout?.on('data', (chunk) => {
|
|
187
|
+
buf += chunk.toString('utf8');
|
|
188
|
+
let nl = buf.indexOf('\n');
|
|
189
|
+
while (nl !== -1) {
|
|
190
|
+
handleLine(buf.slice(0, nl));
|
|
191
|
+
buf = buf.slice(nl + 1);
|
|
192
|
+
nl = buf.indexOf('\n');
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
child.stderr?.on('data', (chunk) => stderrChunks.push(chunk));
|
|
196
|
+
child.once('error', (err) => {
|
|
197
|
+
if (signal !== undefined)
|
|
198
|
+
signal.removeEventListener('abort', onAbort);
|
|
199
|
+
reject(err);
|
|
200
|
+
});
|
|
201
|
+
child.once('close', (code) => {
|
|
202
|
+
if (buf.trim().length > 0)
|
|
203
|
+
handleLine(buf);
|
|
204
|
+
if (signal !== undefined)
|
|
205
|
+
signal.removeEventListener('abort', onAbort);
|
|
206
|
+
resolve({ exitCode: code ?? 1, stderr: Buffer.concat(stderrChunks).toString('utf8') });
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
}
|
|
152
210
|
async function spawnBash(scriptPath, args) {
|
|
153
211
|
return new Promise((resolve, reject) => {
|
|
154
212
|
const child = spawn('bash', [scriptPath, ...args], {
|
|
@@ -459,13 +517,17 @@ export function wizardRoute(opts) {
|
|
|
459
517
|
await writeState(opts.writeRoot, parsed.data);
|
|
460
518
|
return { ok: true };
|
|
461
519
|
});
|
|
462
|
-
// road-to-
|
|
463
|
-
// Validates the WizardApplyPayload envelope
|
|
464
|
-
//
|
|
465
|
-
//
|
|
466
|
-
//
|
|
467
|
-
//
|
|
468
|
-
//
|
|
520
|
+
// road-to-single-install-source-of-truth § Phase 2 — Wizard Apply bridge.
|
|
521
|
+
// Validates the WizardApplyPayload envelope and spills it to a temp file,
|
|
522
|
+
// then dispatches `scripts/install.py --apply-payload <tmp>` — the single
|
|
523
|
+
// installer (D12 / ADR-020). Two modes on the SAME endpoint:
|
|
524
|
+
// • dry_run:true → buffered plan-summary preview (JSON), used by the
|
|
525
|
+
// Review step. Adds `--dry-run`.
|
|
526
|
+
// • dry_run:false → REAL apply, streamed as SSE. install.py emits NDJSON
|
|
527
|
+
// (`{type:"file"|"done"|"error"}`); we map each line to the SSE frame
|
|
528
|
+
// vocabulary the UI consumes (`progress`/`done`/`error`) and abort the
|
|
529
|
+
// child on client disconnect (Finding #24). CSRF + Host/Origin
|
|
530
|
+
// allow-list are enforced by the app-level onRequest hooks.
|
|
469
531
|
app.post('/api/v1/wizard/apply', async (request, reply) => {
|
|
470
532
|
if (!extended) {
|
|
471
533
|
await reply.code(404).send({ error: { code: 'NOT_FOUND', message: 'extended-mode endpoint disabled' } });
|
|
@@ -478,35 +540,114 @@ export function wizardRoute(opts) {
|
|
|
478
540
|
});
|
|
479
541
|
return reply;
|
|
480
542
|
}
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
const payload = { ...parsed.data, dry_run: true };
|
|
543
|
+
const isDryRun = parsed.data.dry_run === true;
|
|
544
|
+
const payload = parsed.data;
|
|
484
545
|
const tmpPath = join(tmpdir(), `agent-config-apply-${randomBytes(8).toString('hex')}.json`);
|
|
546
|
+
const scriptPath = join(opts.packageRoot, 'scripts', 'install.py');
|
|
547
|
+
if (isDryRun) {
|
|
548
|
+
// Plan-summary preview — buffered JSON (Review step).
|
|
549
|
+
try {
|
|
550
|
+
await fs.writeFile(tmpPath, JSON.stringify(payload), { mode: 0o600 });
|
|
551
|
+
const result = await spawnInstaller(scriptPath, ['--apply-payload', tmpPath, '--dry-run']);
|
|
552
|
+
if (result.exitCode !== 0) {
|
|
553
|
+
await reply.code(500).send({
|
|
554
|
+
error: { code: 'BRIDGE_FAILED', message: result.stderr || 'installer bridge exited non-zero', exitCode: result.exitCode },
|
|
555
|
+
});
|
|
556
|
+
return reply;
|
|
557
|
+
}
|
|
558
|
+
return {
|
|
559
|
+
ok: true,
|
|
560
|
+
dryRun: true,
|
|
561
|
+
schemaVersion: payload.schema_version,
|
|
562
|
+
preview: result.stdout,
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
catch (err) {
|
|
566
|
+
const message = err instanceof Error ? err.message : 'apply bridge failed';
|
|
567
|
+
await reply.code(500).send({ error: { code: 'BRIDGE_FAILED', message } });
|
|
568
|
+
return reply;
|
|
569
|
+
}
|
|
570
|
+
finally {
|
|
571
|
+
await fs.unlink(tmpPath).catch(() => undefined);
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
// Real apply — SSE stream. Flush headers so the browser opens the
|
|
575
|
+
// channel immediately.
|
|
576
|
+
reply.raw.writeHead(200, {
|
|
577
|
+
'Content-Type': 'text/event-stream',
|
|
578
|
+
'Cache-Control': 'no-cache, no-transform',
|
|
579
|
+
Connection: 'keep-alive',
|
|
580
|
+
'X-Accel-Buffering': 'no',
|
|
581
|
+
});
|
|
582
|
+
reply.raw.flushHeaders?.();
|
|
583
|
+
const controller = new AbortController();
|
|
584
|
+
const onClose = () => {
|
|
585
|
+
if (!reply.raw.writableEnded)
|
|
586
|
+
controller.abort();
|
|
587
|
+
};
|
|
588
|
+
reply.raw.on('close', onClose);
|
|
589
|
+
let written = 0;
|
|
590
|
+
let total = 0;
|
|
591
|
+
let sawTerminal = false;
|
|
485
592
|
try {
|
|
486
593
|
await fs.writeFile(tmpPath, JSON.stringify(payload), { mode: 0o600 });
|
|
487
|
-
const
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
594
|
+
const result = await streamInstaller(scriptPath, ['--apply-payload', tmpPath], (obj) => {
|
|
595
|
+
const t = obj.type;
|
|
596
|
+
if (t === 'file') {
|
|
597
|
+
written = typeof obj.written === 'number' ? obj.written : written;
|
|
598
|
+
total = typeof obj.total === 'number' ? obj.total : total;
|
|
599
|
+
writeFrame(reply, {
|
|
600
|
+
type: 'progress',
|
|
601
|
+
file: obj.file,
|
|
602
|
+
status: obj.status,
|
|
603
|
+
written,
|
|
604
|
+
total,
|
|
605
|
+
});
|
|
606
|
+
}
|
|
607
|
+
else if (t === 'done') {
|
|
608
|
+
sawTerminal = true;
|
|
609
|
+
writeFrame(reply, { type: 'done', summary: { written, total } });
|
|
610
|
+
}
|
|
611
|
+
else if (t === 'error') {
|
|
612
|
+
sawTerminal = true;
|
|
613
|
+
writeFrame(reply, {
|
|
614
|
+
type: 'error',
|
|
615
|
+
code: typeof obj.code === 'string' ? obj.code : 'E_INSTALL',
|
|
616
|
+
message: typeof obj.message === 'string' ? obj.message : 'install failed',
|
|
617
|
+
recoverable: false,
|
|
618
|
+
});
|
|
619
|
+
}
|
|
620
|
+
}, controller.signal);
|
|
621
|
+
// install.py exited without a terminal frame (crash / kill): emit
|
|
622
|
+
// one so the UI never hangs waiting for `done`/`error`.
|
|
623
|
+
if (!sawTerminal) {
|
|
624
|
+
if (result.exitCode === 0) {
|
|
625
|
+
writeFrame(reply, { type: 'done', summary: { written, total } });
|
|
626
|
+
}
|
|
627
|
+
else {
|
|
628
|
+
writeFrame(reply, {
|
|
629
|
+
type: 'error',
|
|
630
|
+
code: 'BRIDGE_FAILED',
|
|
631
|
+
message: result.stderr.trim() || `installer exited ${result.exitCode}`,
|
|
632
|
+
recoverable: false,
|
|
633
|
+
});
|
|
634
|
+
}
|
|
494
635
|
}
|
|
495
|
-
return {
|
|
496
|
-
ok: true,
|
|
497
|
-
dryRun: true,
|
|
498
|
-
schemaVersion: payload.schema_version,
|
|
499
|
-
preview: result.stdout,
|
|
500
|
-
};
|
|
501
636
|
}
|
|
502
637
|
catch (err) {
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
638
|
+
writeFrame(reply, {
|
|
639
|
+
type: 'error',
|
|
640
|
+
code: 'E_CRASH',
|
|
641
|
+
message: err instanceof Error ? err.message : String(err),
|
|
642
|
+
recoverable: false,
|
|
643
|
+
});
|
|
506
644
|
}
|
|
507
645
|
finally {
|
|
646
|
+
reply.raw.off('close', onClose);
|
|
647
|
+
reply.raw.end();
|
|
508
648
|
await fs.unlink(tmpPath).catch(() => undefined);
|
|
509
649
|
}
|
|
650
|
+
return reply;
|
|
510
651
|
});
|
|
511
652
|
app.post('/api/v1/wizard/finish', async (request, reply) => {
|
|
512
653
|
const body = (request.body ?? {});
|