wicked-crew 0.7.26 → 0.7.28

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 (79) hide show
  1. package/dist/api/routes.d.ts +8 -0
  2. package/dist/api/routes.d.ts.map +1 -1
  3. package/dist/api/routes.js +9 -2
  4. package/dist/api/routes.js.map +1 -1
  5. package/dist/api/server.d.ts +13 -0
  6. package/dist/api/server.d.ts.map +1 -1
  7. package/dist/api/server.js +14 -0
  8. package/dist/api/server.js.map +1 -1
  9. package/dist/cli/index.js +46 -18
  10. package/dist/cli/index.js.map +1 -1
  11. package/dist/core/adapter.d.ts.map +1 -1
  12. package/dist/core/adapter.js +22 -18
  13. package/dist/core/adapter.js.map +1 -1
  14. package/dist/core/deliver.d.ts +26 -10
  15. package/dist/core/deliver.d.ts.map +1 -1
  16. package/dist/core/deliver.js +27 -11
  17. package/dist/core/deliver.js.map +1 -1
  18. package/dist/core/deliverable-floor.d.ts.map +1 -1
  19. package/dist/core/deliverable-floor.js +5 -4
  20. package/dist/core/deliverable-floor.js.map +1 -1
  21. package/dist/interactive/bridge-pool.d.ts +130 -2
  22. package/dist/interactive/bridge-pool.d.ts.map +1 -1
  23. package/dist/interactive/bridge-pool.js +281 -8
  24. package/dist/interactive/bridge-pool.js.map +1 -1
  25. package/dist/interactive/bus-location.d.ts +65 -0
  26. package/dist/interactive/bus-location.d.ts.map +1 -0
  27. package/dist/interactive/bus-location.js +75 -0
  28. package/dist/interactive/bus-location.js.map +1 -0
  29. package/dist/interactive/chat-events.d.ts.map +1 -1
  30. package/dist/interactive/chat-events.js +29 -23
  31. package/dist/interactive/chat-events.js.map +1 -1
  32. package/dist/interactive/demo-events.d.ts +16 -1
  33. package/dist/interactive/demo-events.d.ts.map +1 -1
  34. package/dist/interactive/demo-events.js +262 -43
  35. package/dist/interactive/demo-events.js.map +1 -1
  36. package/dist/interactive/doc-grounding.d.ts +202 -0
  37. package/dist/interactive/doc-grounding.d.ts.map +1 -0
  38. package/dist/interactive/doc-grounding.js +647 -0
  39. package/dist/interactive/doc-grounding.js.map +1 -0
  40. package/dist/interactive/draft-events.d.ts +54 -1
  41. package/dist/interactive/draft-events.d.ts.map +1 -1
  42. package/dist/interactive/draft-events.js +234 -117
  43. package/dist/interactive/draft-events.js.map +1 -1
  44. package/dist/interactive/edit-events.d.ts.map +1 -1
  45. package/dist/interactive/edit-events.js +27 -21
  46. package/dist/interactive/edit-events.js.map +1 -1
  47. package/dist/interactive/proxy-routes.d.ts +78 -0
  48. package/dist/interactive/proxy-routes.d.ts.map +1 -1
  49. package/dist/interactive/proxy-routes.js +355 -14
  50. package/dist/interactive/proxy-routes.js.map +1 -1
  51. package/dist/interactive/repo-snapshot.d.ts +31 -0
  52. package/dist/interactive/repo-snapshot.d.ts.map +1 -1
  53. package/dist/interactive/repo-snapshot.js +56 -1
  54. package/dist/interactive/repo-snapshot.js.map +1 -1
  55. package/dist/qe/conformance.d.ts +10 -1
  56. package/dist/qe/conformance.d.ts.map +1 -1
  57. package/dist/qe/conformance.js +57 -4
  58. package/dist/qe/conformance.js.map +1 -1
  59. package/dist/skills/plugin-source.d.ts +149 -32
  60. package/dist/skills/plugin-source.d.ts.map +1 -1
  61. package/dist/skills/plugin-source.js +303 -108
  62. package/dist/skills/plugin-source.js.map +1 -1
  63. package/dist/skills/root-fence.d.ts +2 -2
  64. package/dist/skills/root-fence.js +4 -4
  65. package/dist/skills/root-fence.js.map +1 -1
  66. package/dist/skills/runtime.d.ts +19 -2
  67. package/dist/skills/runtime.d.ts.map +1 -1
  68. package/dist/skills/runtime.js +82 -8
  69. package/dist/skills/runtime.js.map +1 -1
  70. package/dist/skills/store.d.ts +2 -2
  71. package/dist/skills/store.d.ts.map +1 -1
  72. package/dist/skills/store.js +30 -9
  73. package/dist/skills/store.js.map +1 -1
  74. package/dist/studio/assets/index-CdmCMh2f.js +539 -0
  75. package/dist/studio/index.html +1 -1
  76. package/dist/studio/testid-inventory.json +125 -5
  77. package/endpoint-manifest.json +16 -1
  78. package/package.json +3 -3
  79. package/dist/studio/assets/index-FcZg3WDR.js +0 -539
@@ -18,11 +18,30 @@
18
18
  * sockets keeps every chunk flowing as it arrives, in both directions.
19
19
  * 2. VERBATIM FORWARDING. The path remainder and query string are taken from `req.raw.url`,
20
20
  * not from Fastify's decoded wildcard param, so percent-encoding survives the hop intact.
21
+ *
22
+ * THE ONE EXCEPTION TO PURE TRANSPORT — the doc CREATE (acceptance finding F-046). `POST
23
+ * <prefix>/api/docs` is read before it is forwarded, because two things the bridge cannot do have
24
+ * to happen at the daemon: (a) a document may name the repository (or repositories) it is ABOUT
25
+ * (`repo_ref` / `repo_refs`), which only crew can validate against the project's members and
26
+ * only crew can remember — the bridge's create wire builds `doc.created` explicitly and never
27
+ * echoes a field it does not know; and (b) a print/A4 brief with no `style` must reach the
28
+ * bridge's print instructions, so an absent style is inferred from the brief's format words. A
29
+ * named repo the project does not have is a 400 with nothing created (the bridge never sees the
30
+ * request); the refs are stripped from the forwarded body; the binding is recorded from the
31
+ * bridge's create answer (`name`) as a `crew-grounding.json` sidecar beside the new doc's
32
+ * `versions.json` under this project's docs root, for the draft/demo seams (`doc-grounding.ts`).
33
+ * The create response is small JSON, so it is buffered — SSE never rides this route.
21
34
  */
22
35
  import { request as httpRequest } from 'node:http';
23
36
  import { API_PREFIX } from '../api/api-prefix.js';
37
+ import { DEFAULT_PROJECT_ID } from '../projects/default-project.js';
24
38
  import { BridgeUnavailableError } from './bridge-pool.js';
39
+ import { inferDocStyle, isDocStyle, matchingRepos, parseRepoRefs, projectRepoCandidates, spelledRefs, } from './doc-grounding.js';
25
40
  import { projectDocsRoot } from './project-root.js';
41
+ /** The bridge route whose request crew reads before forwarding (F-046) — exact path, any query. */
42
+ export const DOC_CREATE_PATH = '/api/docs';
43
+ /** Create bodies are a brief plus a few fields; anything bigger is not a create crew should buffer. */
44
+ export const DOC_CREATE_BODY_MAX = 4 * 1024 * 1024;
26
45
  /** Per-hop headers that must never be forwarded across a proxy (RFC 9110 §7.6.1). */
27
46
  const HOP_BY_HOP = new Set([
28
47
  'connection',
@@ -65,6 +84,209 @@ export function rewriteLocation(location, bridge, prefix) {
65
84
  return `${prefix}${location}`;
66
85
  return location;
67
86
  }
87
+ /** The 502 a create earns when the bridge dropped the connection AFTER the request was sent: the
88
+ * doc may or may not exist, so the proxy never replays a non-idempotent POST (codex on crew#506). */
89
+ export const CREATE_UNDETERMINED = {
90
+ code: 'create_undetermined',
91
+ error: 'the interactive bridge dropped the connection after the create was sent — the document may already ' +
92
+ 'exist; list the project\'s documents before creating it again',
93
+ };
94
+ /** `true` for the bridge's doc-create request (method + exact path, query ignored). */
95
+ export function isDocCreate(method, target) {
96
+ const path = target.split('?')[0] ?? target;
97
+ return method === 'POST' && path === DOC_CREATE_PATH;
98
+ }
99
+ async function readBody(stream, max) {
100
+ const chunks = [];
101
+ let total = 0;
102
+ for await (const chunk of stream) {
103
+ const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
104
+ total += buf.length;
105
+ if (total > max)
106
+ return null;
107
+ chunks.push(buf);
108
+ }
109
+ return Buffer.concat(chunks);
110
+ }
111
+ /**
112
+ * The create's daemon-side half (F-046): read the body, validate `repo_ref(s)` against the
113
+ * project's repositories, infer a missing `style` from the brief, strip what the bridge must not
114
+ * see, and say what to record once the bridge names the doc. Pure over its inputs — the route
115
+ * decides what to do with a refusal; exported so the rule is unit-testable without a bridge.
116
+ */
117
+ export async function prepareDocCreate(raw, contentType, adapter, projectId, log) {
118
+ const passthrough = { body: raw, contentType: contentType ?? 'application/json' };
119
+ let parsed;
120
+ try {
121
+ parsed = JSON.parse(raw.toString('utf8'));
122
+ }
123
+ catch {
124
+ return passthrough; // not JSON — the bridge answers its own 400
125
+ }
126
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
127
+ return passthrough;
128
+ const body = { ...parsed };
129
+ // THE PROJECT IS THE ROUTE'S (codex on crew#506): the proxy validates and records the binding
130
+ // against `projectId`, so the body's `project` — which the bridge registers the doc under — must
131
+ // be the same project or absent. An omitted value is canonicalized from the route; a different
132
+ // one is refused, never forwarded to file the doc somewhere else. The Unfiled mount creates
133
+ // UNBOUND, so a `project` there is a mismatch too.
134
+ // Every refusal carries the refs AS SPELLED — the project mismatches too (Copilot on crew#506).
135
+ const requested = spelledRefs(body);
136
+ // A non-string `project` is a mismatch too — never coerced, never forwarded.
137
+ if (body['project'] !== undefined && body['project'] !== null && typeof body['project'] !== 'string') {
138
+ return {
139
+ ...passthrough,
140
+ refusal: { error: `the create's "project" must be the project id as a string`, code: 'project_mismatch', requested },
141
+ };
142
+ }
143
+ const bodyProject = typeof body['project'] === 'string' ? body['project'].trim() : '';
144
+ if (projectId === DEFAULT_PROJECT_ID) {
145
+ if (bodyProject !== '') {
146
+ return {
147
+ ...passthrough,
148
+ refusal: {
149
+ error: `this create is on the Unfiled mount but names project "${bodyProject}" — create it under /projects/${bodyProject}/interactive instead`,
150
+ code: 'project_mismatch',
151
+ requested,
152
+ },
153
+ };
154
+ }
155
+ delete body['project'];
156
+ }
157
+ else if (bodyProject !== '' && bodyProject !== projectId) {
158
+ return {
159
+ ...passthrough,
160
+ refusal: {
161
+ error: `the create names project "${bodyProject}" but was sent to project ${projectId} — one document, one project; nothing was created`,
162
+ code: 'project_mismatch',
163
+ requested,
164
+ },
165
+ };
166
+ }
167
+ else {
168
+ // Always the EXACT route id — a matching-but-untrimmed spelling (" p-a ") is never forwarded
169
+ // as sent (codex on crew#506).
170
+ body['project'] = projectId;
171
+ }
172
+ const refs = parseRepoRefs(body);
173
+ if (!refs.ok) {
174
+ return { ...passthrough, refusal: { error: refs.error, code: 'invalid_repo_ref', requested: refs.requested } };
175
+ }
176
+ const repoRefs = [];
177
+ if (refs.refs.length > 0) {
178
+ if (projectId === DEFAULT_PROJECT_ID) {
179
+ return {
180
+ ...passthrough,
181
+ refusal: {
182
+ error: 'an Unfiled document cannot name a repository — create it inside a project that has the ' +
183
+ 'repository as a member (attach it with POST /projects/:id/members {kind:"crew.repo"})',
184
+ code: 'unfiled_doc_repo',
185
+ requested: refs.refs,
186
+ },
187
+ };
188
+ }
189
+ const candidates = await projectRepoCandidates(adapter, projectId, log);
190
+ const missing = [];
191
+ const ambiguous = [];
192
+ for (const ref of refs.refs) {
193
+ const hits = matchingRepos(ref, candidates);
194
+ if (hits.length === 0)
195
+ missing.push(ref);
196
+ else if (hits.length > 1)
197
+ ambiguous.push({ ref, candidates: hits.map((h) => ({ id: h.repoRef, name: h.name })) });
198
+ else if (!repoRefs.includes(hits[0].repoRef))
199
+ repoRefs.push(hits[0].repoRef);
200
+ }
201
+ if (ambiguous.length > 0) {
202
+ // Two member repos share the spelling (two checkouts of one name under different parents):
203
+ // never the first match — the request must say which, by id (codex on crew#506).
204
+ return {
205
+ ...passthrough,
206
+ refusal: {
207
+ error: ambiguous
208
+ .map((a) => `"${a.ref}" names ${a.candidates.length} repositories in project ${projectId} (${a.candidates.map((c) => `${c.name} = ${c.id}`).join(', ')})`)
209
+ .join('; ') + ' — name the repository by id. Nothing was created.',
210
+ code: 'ambiguous_repo_ref',
211
+ requested: refs.refs,
212
+ ambiguous,
213
+ available: candidates.map((c) => ({ id: c.repoRef, name: c.name })),
214
+ },
215
+ };
216
+ }
217
+ if (missing.length > 0) {
218
+ const available = candidates.map((c) => ({ id: c.repoRef, name: c.name }));
219
+ const pick = available.length > 0
220
+ ? `pick one of: ${available.map((a) => a.name).join(', ')}`
221
+ : 'this project has no repository members yet';
222
+ return {
223
+ ...passthrough,
224
+ refusal: {
225
+ error: `${missing.length === 1 ? 'repository' : 'repositories'} ${missing.map((m) => `"${m}"`).join(', ')} ` +
226
+ `${missing.length === 1 ? 'is' : 'are'} not a member of project ${projectId} — attach ` +
227
+ `${missing.length === 1 ? 'it' : 'them'} (POST /projects/${projectId}/members {kind:"crew.repo", ref:<repo id>}) ` +
228
+ `or ${pick}. Nothing was created.`,
229
+ code: 'repo_not_in_project',
230
+ requested: refs.refs,
231
+ missing,
232
+ available,
233
+ },
234
+ };
235
+ }
236
+ }
237
+ // Style: pass a valid one through; infer an absent/unknown one from the brief's format words so
238
+ // a print brief reaches the bridge's print instructions instead of its `web` default.
239
+ const brief = typeof body['brief'] === 'string' ? body['brief'] : undefined;
240
+ let style = isDocStyle(body['style']) ? body['style'] : undefined;
241
+ if (style === undefined) {
242
+ const inferred = inferDocStyle(brief ?? '');
243
+ if (inferred !== undefined) {
244
+ style = inferred;
245
+ log?.(`interactive create for project ${projectId}: no style given — inferred "${inferred}" from the brief's format words`);
246
+ }
247
+ }
248
+ // The forwarded create IS the published contract — built field by field from what validated,
249
+ // never by spreading the untrusted body: `repo_ref`/`repo_refs` were consumed above, and a field
250
+ // the contract does not know is not forwarded.
251
+ const str = (k) => (typeof body[k] === 'string' ? body[k] : undefined);
252
+ const name = str('name');
253
+ const html = str('html');
254
+ const url = str('url');
255
+ const sourceMessageId = str('source_message_id');
256
+ const kind = body['kind'] === 'source' || body['kind'] === 'demo' ? body['kind'] : undefined;
257
+ const sourcePaths = Array.isArray(body['source_paths'])
258
+ ? body['source_paths'].filter((p) => typeof p === 'string')
259
+ : undefined;
260
+ const demoSteps = Array.isArray(body['demo_steps'])
261
+ ? body['demo_steps'].flatMap((d) => {
262
+ if (typeof d !== 'object' || d === null)
263
+ return [];
264
+ const r = d;
265
+ return typeof r['index'] === 'number' && typeof r['subject'] === 'string' && typeof r['action'] === 'string'
266
+ ? [{ index: r['index'], subject: r['subject'], action: r['action'] }]
267
+ : [];
268
+ })
269
+ : undefined;
270
+ const project = typeof body['project'] === 'string' ? body['project'] : undefined;
271
+ const normalized = {
272
+ ...(name !== undefined ? { name } : {}),
273
+ ...(kind !== undefined ? { kind } : {}),
274
+ ...(html !== undefined ? { html } : {}),
275
+ ...(brief !== undefined ? { brief } : {}),
276
+ ...(sourcePaths !== undefined ? { source_paths: sourcePaths } : {}),
277
+ ...(url !== undefined ? { url } : {}),
278
+ ...(demoSteps !== undefined ? { demo_steps: demoSteps } : {}),
279
+ ...(style !== undefined ? { style } : {}),
280
+ ...(project !== undefined ? { project } : {}),
281
+ ...(sourceMessageId !== undefined ? { source_message_id: sourceMessageId } : {}),
282
+ };
283
+ return {
284
+ body: Buffer.from(JSON.stringify(normalized), 'utf8'),
285
+ contentType: 'application/json',
286
+ normalized,
287
+ ...(repoRefs.length > 0 ? { binding: { projectId, repoRefs, style } } : {}),
288
+ };
289
+ }
68
290
  export function registerInteractiveProxy(app, adapter, deps) {
69
291
  const { settings, pool } = deps;
70
292
  // Strips exactly the mount prefix off the RAW url, leaving the remainder + query untouched.
@@ -80,7 +302,8 @@ export function registerInteractiveProxy(app, adapter, deps) {
80
302
  scope.addContentTypeParser('*', (_req, payload, done) => {
81
303
  done(null, payload);
82
304
  });
83
- scope.all(`${API_PREFIX}/projects/:projectId/interactive/*`, async (req, reply) => {
305
+ /** One proxied request — the wildcard and the typed create route share it. */
306
+ const serve = async (req, reply) => {
84
307
  const { projectId } = req.params;
85
308
  const prefix = `${API_PREFIX}/projects/${encodeURIComponent(projectId)}/interactive`;
86
309
  const root = await rootFor(projectId);
@@ -94,26 +317,144 @@ export function registerInteractiveProxy(app, adapter, deps) {
94
317
  return unavailable(reply, err, deps.log);
95
318
  }
96
319
  const target = (req.raw.url ?? '').replace(prefixRe, '') || '/';
97
- try {
98
- await forward(req, reply, bridge, target, prefix);
320
+ // F-046: the doc create is read and validated HERE before the bridge sees it (module doc).
321
+ // Everything else stays socket-to-socket transport.
322
+ let create = null;
323
+ let createToken;
324
+ const grounding = deps.grounding;
325
+ if (grounding !== undefined && isDocCreate(req.method, target)) {
326
+ const raw = await readBody(req.raw, DOC_CREATE_BODY_MAX);
327
+ if (raw === null)
328
+ return reply.code(413).send({ error: `create body exceeds ${DOC_CREATE_BODY_MAX} bytes` });
329
+ create = await prepareDocCreate(raw, req.headers['content-type'], adapter, projectId, deps.log);
330
+ if (create.refusal !== undefined)
331
+ return reply.code(400).send(create.refusal);
332
+ // The seams may see this doc's `doc.created` before the bridge has answered with its
333
+ // name: mark the create in flight so they wait for the binding (doc-grounding.ts).
334
+ if (create.binding !== undefined)
335
+ createToken = grounding.beginCreate(projectId);
99
336
  }
100
- catch (err) {
101
- // The cached bridge died between the pid check and the connect (an operator killed it,
102
- // a crash). Invalidate and let `ensure` restart it — ONE retry, so a genuinely broken
103
- // bridge fails fast to a 503 instead of looping.
104
- if (!isConnectionRefused(err) || reply.raw.headersSent)
105
- throw err;
106
- pool.invalidate(root);
337
+ const send = (b) => create !== null
338
+ ? forwardCreate(req, reply, b, target, prefix, create, grounding, root, deps.log)
339
+ : forward(req, reply, b, target, prefix);
340
+ try {
107
341
  try {
108
- bridge = await pool.ensure(root);
342
+ await send(bridge);
109
343
  }
110
- catch (startErr) {
111
- return unavailable(reply, startErr, deps.log);
344
+ catch (err) {
345
+ // A create that already REACHED the bridge is never replayed (codex on crew#506): the
346
+ // bridge may have created and announced the doc before the connection dropped, and a
347
+ // second POST would 409 (or mint a duplicate) while the first doc carries no sidecar.
348
+ // Say what is known — the outcome is undetermined — and let the client look.
349
+ if (create !== null && err.createDispatched === true && !reply.raw.headersSent) {
350
+ deps.log?.(`interactive create for project ${projectId} was dispatched but the bridge dropped the connection: ${err.message}`);
351
+ return reply.code(502).send(CREATE_UNDETERMINED);
352
+ }
353
+ // The cached bridge died between the pid check and the connect (an operator killed it,
354
+ // a crash). Invalidate and let `ensure` restart it — ONE retry, so a genuinely broken
355
+ // bridge fails fast to a 503 instead of looping.
356
+ if (!isConnectionRefused(err) || reply.raw.headersSent)
357
+ throw err;
358
+ pool.invalidate(root);
359
+ try {
360
+ bridge = await pool.ensure(root);
361
+ }
362
+ catch (startErr) {
363
+ return unavailable(reply, startErr, deps.log);
364
+ }
365
+ await send(bridge);
112
366
  }
113
- await forward(req, reply, bridge, target, prefix);
367
+ }
368
+ finally {
369
+ if (createToken !== undefined)
370
+ grounding?.settleCreate(createToken);
114
371
  }
115
372
  return reply;
373
+ };
374
+ // The doc CREATE is the one bridge route crew reads (F-046), so it is PUBLISHED as a typed
375
+ // endpoint (endpoint-manifest.json: request `InteractiveDocCreateRequest`, answer the bridge's
376
+ // `InteractiveDocCreateResult`, crew's own 400 `InteractiveDocCreateRefusal` / 502
377
+ // `InteractiveDocCreateUndetermined`) instead of hiding behind the untyped wildcard. Fastify
378
+ // prefers the static route over the wildcard; both run the same `serve`.
379
+ scope.post(`${API_PREFIX}/projects/:projectId/interactive/api/docs`, {
380
+ config: {
381
+ manifest: {
382
+ requestType: 'InteractiveDocCreateRequest',
383
+ responseType: 'InteractiveDocCreateResult',
384
+ statusCodes: [200, 400, 404, 409, 413, 502, 503],
385
+ },
386
+ },
387
+ }, serve);
388
+ scope.all(`${API_PREFIX}/projects/:projectId/interactive/*`, serve);
389
+ });
390
+ }
391
+ /**
392
+ * The create's forwarding half (F-046): send the prepared body, BUFFER the bridge's answer (small
393
+ * JSON), record the binding under the doc name it carries when the create succeeded, then relay
394
+ * status/headers/body to the client with the same header discipline as `forward`.
395
+ */
396
+ function forwardCreate(req, reply, bridge, target, prefix, create, grounding, docsRoot, log) {
397
+ return new Promise((resolvePromise, rejectPromise) => {
398
+ const headers = forwardableRequestHeaders(req.headers, bridge);
399
+ headers['content-type'] = create.contentType;
400
+ headers['content-length'] = String(create.body.length);
401
+ delete headers['transfer-encoding'];
402
+ // Once the request body has been flushed to the socket the bridge may have acted on it: from
403
+ // here on a failure is UNDETERMINED, not retryable (see the route's catch).
404
+ let dispatched = false;
405
+ const fail = (err) => {
406
+ err.createDispatched = dispatched;
407
+ rejectPromise(err);
408
+ };
409
+ const upstream = httpRequest({ host: bridge.host, port: bridge.port, method: 'POST', path: target, headers }, (res) => {
410
+ dispatched = true;
411
+ const chunks = [];
412
+ res.on('data', (c) => chunks.push(c));
413
+ res.on('error', (err) => fail(err));
414
+ res.on('end', () => {
415
+ const body = Buffer.concat(chunks);
416
+ const status = res.statusCode ?? 502;
417
+ if (create.binding !== undefined && grounding !== undefined && status >= 200 && status < 300) {
418
+ try {
419
+ const answer = JSON.parse(body.toString('utf8'));
420
+ if (typeof answer.name === 'string' && answer.name.length > 0) {
421
+ grounding.record(docsRoot, answer.name, {
422
+ project_id: create.binding.projectId,
423
+ repo_refs: create.binding.repoRefs,
424
+ ...(create.binding.style !== undefined ? { style: create.binding.style } : {}),
425
+ });
426
+ log?.(`interactive doc ${answer.name} (project ${create.binding.projectId}) is about ${create.binding.repoRefs.join(', ')} — grounding binding recorded`);
427
+ }
428
+ else {
429
+ log?.(`interactive create for project ${create.binding.projectId} answered ${status} without a doc name — no grounding binding recorded`);
430
+ }
431
+ }
432
+ catch (err) {
433
+ log?.(`interactive create for project ${create.binding.projectId}: grounding binding NOT recorded (${err instanceof Error ? err.message : String(err)}) — the document will be grounded by its brief / the project's sole repo instead`);
434
+ }
435
+ }
436
+ reply.hijack();
437
+ const out = {};
438
+ for (const [name, value] of Object.entries(res.headers)) {
439
+ if (HOP_BY_HOP.has(name) || value === undefined || name === 'content-length')
440
+ continue;
441
+ out[name] = name === 'location' && typeof value === 'string' ? rewriteLocation(value, bridge, prefix) : value;
442
+ }
443
+ out['content-length'] = String(body.length);
444
+ reply.raw.writeHead(status, out);
445
+ reply.raw.end(body);
446
+ resolvePromise();
447
+ });
448
+ });
449
+ upstream.on('finish', () => {
450
+ dispatched = true;
451
+ });
452
+ upstream.on('error', (err) => {
453
+ if (reply.raw.headersSent)
454
+ reply.raw.destroy();
455
+ fail(err);
116
456
  });
457
+ upstream.end(create.body);
117
458
  });
118
459
  }
119
460
  function isConnectionRefused(err) {
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-routes.js","sourceRoot":"","sources":["../../src/interactive/proxy-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy-routes.js","sourceRoot":"","sources":["../../src/interactive/proxy-routes.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,7 @@
46
46
  * the daemon's capped exec chokepoint (`execCapped`, FINDING-016).
47
47
  */
48
48
  import path from 'node:path';
49
+ import type { CoreAdapter } from '../core/adapter.js';
49
50
  /** Default snapshot budget (~200MB). A repo whose working tree exceeds this is not
50
51
  * snapshotted — the launch proceeds ungrounded, honestly narrated. */
51
52
  export declare const REPO_SNAPSHOT_MAX_BYTES: number;
@@ -70,6 +71,13 @@ export type SnapshotResult = {
70
71
  ok: false;
71
72
  reason: SnapshotFailureReason;
72
73
  };
74
+ /** Resolve `p` through its nearest EXISTING ancestor's realpath (the path itself may not exist
75
+ * yet — a fresh dest usually does not), so symlinked parents cannot hide an overlap. Only
76
+ * ENOENT falls to the ancestor walk (the `api/open-path.ts` rule, Copilot round 2): any OTHER
77
+ * error (EACCES, ELOOP, …) means an EXISTING component could not be resolved — a lexical
78
+ * reconstruction there could miss an overlap through the unresolved link, so it THROWS and
79
+ * the caller's overlap-check catch fails closed (no snapshot, degrade). */
80
+ export declare function realpathNearest(p: string): Promise<string>;
73
81
  /** The subset of `node:path` {@link pathsOverlap} needs — injectable so the win32 drive-root
74
82
  * behavior is unit-testable on any host (`path.win32`). */
75
83
  type PathImpl = Pick<typeof path, 'relative' | 'isAbsolute' | 'sep'>;
@@ -96,5 +104,28 @@ export interface SnapshotRepoOptions {
96
104
  * the copy fallback takes the working tree as-is minus `.git`/`node_modules`/symlinks.
97
105
  */
98
106
  export declare function snapshotRepo(rootPath: string, dest: string, opts?: SnapshotRepoOptions): Promise<SnapshotResult>;
107
+ /** The registry could not be enumerated or a registered root could not be resolved — the inbox
108
+ * cannot be PROVEN clear, so the caller refuses the launch (codex on crew#506: fail closed). */
109
+ export declare class RunDirUnverifiableError extends Error {
110
+ constructor(message: string);
111
+ }
112
+ /**
113
+ * The registered repository whose root a run's inbox would sit INSIDE (or contain), or `null` when
114
+ * the inbox is PROVABLY clear of every registered repo (codex on crew#506, CRITICAL). A seam
115
+ * declares its per-run directory as the worker's extra write root, so an inbox configured inside a
116
+ * live repository — `--interactive-*-dir` pointing into a checkout, or a repo registered AT the
117
+ * inbox — would hand the unbound worker write access to live source no matter what the run is
118
+ * about. The per-repo snapshot check catches only the repo being snapshotted; this walks the WHOLE
119
+ * registry BEFORE anything is created, realpath'd both sides (symlinked parents cannot hide an
120
+ * overlap).
121
+ *
122
+ * FAIL CLOSED: a registry that cannot be listed (engine/addon hiccup) or a root that cannot be
123
+ * resolved for any reason but plain ENOENT THROWS {@link RunDirUnverifiableError} — "could not
124
+ * check" is never read as "clear". A root that does not exist (ENOENT — a stale registration) is
125
+ * CANONICALIZED through its nearest existing ancestor (`realpathNearest`, codex on crew#506): a
126
+ * missing root beneath a symlinked ancestor then compares in the same namespace as the run dir,
127
+ * so an inbox configured inside the registered path is still caught.
128
+ */
129
+ export declare function runDirInsideRepo(adapter: CoreAdapter, runDir: string): Promise<string | null>;
99
130
  export {};
100
131
  //# sourceMappingURL=repo-snapshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repo-snapshot.d.ts","sourceRoot":"","sources":["../../src/interactive/repo-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAGH,OAAO,IAA0C,MAAM,WAAW,CAAC;AAInE;uEACuE;AACvE,eAAO,MAAM,uBAAuB,QAAoB,CAAC;AAMzD;;2BAE2B;AAC3B,MAAM,MAAM,qBAAqB;AAC/B,uDAAuD;AACrD,iBAAiB;AACnB,wFAAwF;GACtF,WAAW;AACb,+FAA+F;GAC7F,cAAc;AAChB,6CAA6C;GAC3C,kBAAkB;AACpB,4DAA4D;GAC1D,aAAa,CAAC;AAElB,gGAAgG;AAChG,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAyFzF;4DAC4D;AAC5D,KAAK,QAAQ,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC;AAYrE;2FAC2F;AAC3F,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,QAAe,GAAG,OAAO,CAE9E;AAED,wCAAwC;AACxC,MAAM,WAAW,mBAAmB;IAClC,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,uEAAuE;IACvE,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,cAAc,CAAC,CA0HzB"}
1
+ {"version":3,"file":"repo-snapshot.d.ts","sourceRoot":"","sources":["../../src/interactive/repo-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAGH,OAAO,IAA0C,MAAM,WAAW,CAAC;AAGnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD;uEACuE;AACvE,eAAO,MAAM,uBAAuB,QAAoB,CAAC;AAMzD;;2BAE2B;AAC3B,MAAM,MAAM,qBAAqB;AAC/B,uDAAuD;AACrD,iBAAiB;AACnB,wFAAwF;GACtF,WAAW;AACb,+FAA+F;GAC7F,cAAc;AAChB,6CAA6C;GAC3C,kBAAkB;AACpB,4DAA4D;GAC1D,aAAa,CAAC;AAElB,gGAAgG;AAChG,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAiEzF;;;;;4EAK4E;AAC5E,wBAAsB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBhE;AAED;4DAC4D;AAC5D,KAAK,QAAQ,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC;AAYrE;2FAC2F;AAC3F,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,QAAe,GAAG,OAAO,CAE9E;AAED,wCAAwC;AACxC,MAAM,WAAW,mBAAmB;IAClC,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,uEAAuE;IACvE,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,cAAc,CAAC,CA0HzB;AAED;iGACiG;AACjG,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiCnG"}
@@ -132,7 +132,7 @@ async function sweepSnapshot(root) {
132
132
  * error (EACCES, ELOOP, …) means an EXISTING component could not be resolved — a lexical
133
133
  * reconstruction there could miss an overlap through the unresolved link, so it THROWS and
134
134
  * the caller's overlap-check catch fails closed (no snapshot, degrade). */
135
- async function realpathNearest(p) {
135
+ export async function realpathNearest(p) {
136
136
  let existing = resolve(p);
137
137
  const tail = [];
138
138
  // Walk up until something exists; dirname() at the root returns itself, which always exists.
@@ -286,4 +286,59 @@ export async function snapshotRepo(rootPath, dest, opts = {}) {
286
286
  return { ok: false, reason: 'copy-failed' };
287
287
  }
288
288
  }
289
+ /** The registry could not be enumerated or a registered root could not be resolved — the inbox
290
+ * cannot be PROVEN clear, so the caller refuses the launch (codex on crew#506: fail closed). */
291
+ export class RunDirUnverifiableError extends Error {
292
+ constructor(message) {
293
+ super(message);
294
+ this.name = 'RunDirUnverifiableError';
295
+ }
296
+ }
297
+ /**
298
+ * The registered repository whose root a run's inbox would sit INSIDE (or contain), or `null` when
299
+ * the inbox is PROVABLY clear of every registered repo (codex on crew#506, CRITICAL). A seam
300
+ * declares its per-run directory as the worker's extra write root, so an inbox configured inside a
301
+ * live repository — `--interactive-*-dir` pointing into a checkout, or a repo registered AT the
302
+ * inbox — would hand the unbound worker write access to live source no matter what the run is
303
+ * about. The per-repo snapshot check catches only the repo being snapshotted; this walks the WHOLE
304
+ * registry BEFORE anything is created, realpath'd both sides (symlinked parents cannot hide an
305
+ * overlap).
306
+ *
307
+ * FAIL CLOSED: a registry that cannot be listed (engine/addon hiccup) or a root that cannot be
308
+ * resolved for any reason but plain ENOENT THROWS {@link RunDirUnverifiableError} — "could not
309
+ * check" is never read as "clear". A root that does not exist (ENOENT — a stale registration) is
310
+ * CANONICALIZED through its nearest existing ancestor (`realpathNearest`, codex on crew#506): a
311
+ * missing root beneath a symlinked ancestor then compares in the same namespace as the run dir,
312
+ * so an inbox configured inside the registered path is still caught.
313
+ */
314
+ export async function runDirInsideRepo(adapter, runDir) {
315
+ let repos;
316
+ try {
317
+ repos = await adapter.listRepos();
318
+ }
319
+ catch (err) {
320
+ throw new RunDirUnverifiableError(`the repository registry could not be listed (${err instanceof Error ? err.message : String(err)})`);
321
+ }
322
+ const realRun = await realpathNearest(runDir);
323
+ for (const repo of repos) {
324
+ let realRoot;
325
+ try {
326
+ realRoot = await realpath(repo.root_path);
327
+ }
328
+ catch (err) {
329
+ if (err.code !== 'ENOENT') {
330
+ throw new RunDirUnverifiableError(`registered repository ${repo.root_path} could not be resolved (${err instanceof Error ? err.message : String(err)})`);
331
+ }
332
+ try {
333
+ realRoot = await realpathNearest(repo.root_path);
334
+ }
335
+ catch (nearest) {
336
+ throw new RunDirUnverifiableError(`registered repository ${repo.root_path} could not be resolved through its ancestors (${nearest instanceof Error ? nearest.message : String(nearest)})`);
337
+ }
338
+ }
339
+ if (pathsOverlap(realRoot, realRun))
340
+ return repo.root_path;
341
+ }
342
+ return null;
343
+ }
289
344
  //# sourceMappingURL=repo-snapshot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"repo-snapshot.js","sourceRoot":"","sources":["../../src/interactive/repo-snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo-snapshot.js","sourceRoot":"","sources":["../../src/interactive/repo-snapshot.ts"],"names":[],"mappings":"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"}