zelari-code 2.15.0 → 2.16.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.
Files changed (46) hide show
  1. package/dist/cli/companion/cors.js +52 -0
  2. package/dist/cli/companion/cors.js.map +1 -0
  3. package/dist/cli/companion/runManager.js +233 -1
  4. package/dist/cli/companion/runManager.js.map +1 -1
  5. package/dist/cli/companion/serve.js +21 -4
  6. package/dist/cli/companion/serve.js.map +1 -1
  7. package/dist/cli/extensions/extensionToolWiring.js +57 -0
  8. package/dist/cli/extensions/extensionToolWiring.js.map +1 -0
  9. package/dist/cli/extensions/loader.js +213 -0
  10. package/dist/cli/extensions/loader.js.map +1 -0
  11. package/dist/cli/extensions/sandboxedFs.js +69 -0
  12. package/dist/cli/extensions/sandboxedFs.js.map +1 -0
  13. package/dist/cli/headless/runOneTurn.js +783 -0
  14. package/dist/cli/headless/runOneTurn.js.map +1 -0
  15. package/dist/cli/kraken/completionGate.js +22 -5
  16. package/dist/cli/kraken/completionGate.js.map +1 -1
  17. package/dist/cli/lsp/manager.js +16 -0
  18. package/dist/cli/lsp/manager.js.map +1 -1
  19. package/dist/cli/main.bundled.js +17714 -15752
  20. package/dist/cli/main.bundled.js.map +4 -4
  21. package/dist/cli/main.js +20 -0
  22. package/dist/cli/main.js.map +1 -1
  23. package/dist/cli/runHeadless.js +5 -695
  24. package/dist/cli/runHeadless.js.map +1 -1
  25. package/dist/cli/safety/jails/darwin.js +87 -0
  26. package/dist/cli/safety/jails/darwin.js.map +1 -0
  27. package/dist/cli/safety/jails/linux.js +80 -0
  28. package/dist/cli/safety/jails/linux.js.map +1 -0
  29. package/dist/cli/safety/jails/win32.js +19 -0
  30. package/dist/cli/safety/jails/win32.js.map +1 -0
  31. package/dist/cli/safety/lifecycleHooks.js +33 -3
  32. package/dist/cli/safety/lifecycleHooks.js.map +1 -1
  33. package/dist/cli/safety/osJail.js +289 -0
  34. package/dist/cli/safety/osJail.js.map +1 -0
  35. package/dist/cli/safety/policyLoadMode.js.map +1 -1
  36. package/dist/cli/serve/harnessClient.js +150 -0
  37. package/dist/cli/serve/harnessClient.js.map +1 -0
  38. package/dist/cli/serve/harnessServer.js +333 -0
  39. package/dist/cli/serve/harnessServer.js.map +1 -0
  40. package/dist/cli/serve/sessionControl.js +67 -0
  41. package/dist/cli/serve/sessionControl.js.map +1 -0
  42. package/dist/cli/toolRegistry.js +338 -33
  43. package/dist/cli/toolRegistry.js.map +1 -1
  44. package/dist/cli/tools/execProcess.js +36 -15
  45. package/dist/cli/tools/execProcess.js.map +1 -1
  46. package/package.json +2 -2
@@ -0,0 +1,52 @@
1
+ /**
2
+ * cors.ts — companion host CORS allowlist (v2.16 HARNESS-10 t25).
3
+ *
4
+ * The companion host used to answer every request with
5
+ * `access-control-allow-origin: *`. On a Bearer-token API that token-gates
6
+ * /v1/*, a wildcard origin lets any web page the browser runs read responses
7
+ * from a hostile origin. Now:
8
+ *
9
+ * - Non-browser loopback clients (curl, native apps) send no `Origin`
10
+ * header: they need no CORS header and keep working unchanged.
11
+ * - Browser origins must be on the allowlist: `ZELARI_COMPANION_ALLOWED_
12
+ * ORIGINS` (comma-separated, e.g. the companion PWA origin), plus the
13
+ * server's own loopback origins (`http://127.0.0.1:<port>`,
14
+ * `http://localhost:<port>`) so same-origin browser use keeps working.
15
+ * - Any other origin receives NO `access-control-allow-origin` header — the
16
+ * browser blocks the response; the request itself is unaffected.
17
+ *
18
+ * Pure functions: the host injects env values (tests never mutate the
19
+ * environment).
20
+ *
21
+ * @since 2.16.0
22
+ */
23
+ /** Env var holding the comma-separated list of allowed browser origins. */
24
+ export const COMPANION_ALLOWED_ORIGINS_ENV = 'ZELARI_COMPANION_ALLOWED_ORIGINS';
25
+ /** Parse a raw env value into the allowlist (trim, drop empties). */
26
+ export function parseAllowedOrigins(raw) {
27
+ if (!raw)
28
+ return [];
29
+ return raw
30
+ .split(',')
31
+ .map((o) => o.trim())
32
+ .filter((o) => o.length > 0);
33
+ }
34
+ /** The server's own loopback browser origins (same-origin browsing). */
35
+ export function loopbackOrigins(port) {
36
+ return [`http://127.0.0.1:${port}`, `http://localhost:${port}`];
37
+ }
38
+ /**
39
+ * Value for the `access-control-allow-origin` header for a request, or
40
+ * `undefined` when the header must be OMITTED (foreign origin — the browser
41
+ * then blocks the response; non-browser requests never needed it).
42
+ * Host comparison is case-insensitive; the exact allowlist entry is echoed
43
+ * so the header value is deterministic.
44
+ */
45
+ export function allowedOriginFor(requestOrigin, allowed) {
46
+ const raw = Array.isArray(requestOrigin) ? requestOrigin[0] : requestOrigin;
47
+ const origin = raw?.trim();
48
+ if (!origin)
49
+ return undefined;
50
+ return allowed.find((o) => o.toLowerCase() === origin.toLowerCase());
51
+ }
52
+ //# sourceMappingURL=cors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../src/cli/companion/cors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,6BAA6B,GAAG,kCAAkC,CAAC;AAEhF,qEAAqE;AACrE,MAAM,UAAU,mBAAmB,CAAC,GAAuB;IACzD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,CAAC,oBAAoB,IAAI,EAAE,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,aAA4C,EAC5C,OAA0B;IAE1B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;IAC5E,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACvE,CAAC"}
@@ -1,6 +1,17 @@
1
1
  /**
2
2
  * Spawn headless CLI runs and multiplex NDJSON events for companion clients.
3
3
  * Single-flight (one active run), matching Desktop v0.1.
4
+ *
5
+ * t32 — client mode (ZELARI_HARNESS_SERVER=1): instead of one `--headless`
6
+ * child per run, runs are driven over the harness App Server NDJSON protocol
7
+ * (session.create → run.turn → session.dispose, session.steer/session.cancel
8
+ * for live control). The default client transport is ONE long-lived
9
+ * `--serve-harness` child shared by every run (full BrainEvent fidelity: the
10
+ * server's stdout IS the transport read side); the App Server keeps
11
+ * per-workspace services warm across runs and owns proof persistence.
12
+ *
13
+ * KILL SWITCH: leave ZELARI_HARNESS_SERVER unset (or `=0`) and the legacy
14
+ * per-run spawn path below runs byte-identically.
4
15
  */
5
16
  import { spawn } from 'node:child_process';
6
17
  import { createInterface } from 'node:readline';
@@ -8,9 +19,25 @@ import { randomUUID } from 'node:crypto';
8
19
  import { writeFileSync, unlinkSync } from 'node:fs';
9
20
  import { join } from 'node:path';
10
21
  import { tmpdir } from 'node:os';
22
+ import { HarnessClient } from '../serve/harnessClient.js';
23
+ /** Env flag enabling the harness App Server client mode (`=1`). */
24
+ export const HARNESS_SERVER_ENV = 'ZELARI_HARNESS_SERVER';
25
+ function harnessServerMode() {
26
+ return process.env[HARNESS_SERVER_ENV] === '1';
27
+ }
11
28
  export class RunManager {
12
29
  active = null;
13
30
  recent = [];
31
+ createTransport;
32
+ harnessClient = null;
33
+ harnessTransport = null;
34
+ constructor(options = {}) {
35
+ this.createTransport = options.createTransport;
36
+ }
37
+ /** Client mode engages on the env flag or an injected transport seam. */
38
+ get clientMode() {
39
+ return this.createTransport !== undefined || harnessServerMode();
40
+ }
14
41
  getActive() {
15
42
  return this.active?.run ?? null;
16
43
  }
@@ -92,6 +119,11 @@ export class RunManager {
92
119
  createdAt: Date.now(),
93
120
  events: [],
94
121
  };
122
+ // t32 client mode: session.create + run.turn on the harness App Server
123
+ // instead of a per-run `--headless` child (see HARNESS_SERVER_ENV).
124
+ if (this.clientMode) {
125
+ return this.startViaHarness(run, args, mode, phase);
126
+ }
95
127
  const cliEntry = process.argv[1];
96
128
  if (!cliEntry) {
97
129
  return { ok: false, error: 'Cannot resolve CLI entry (process.argv[1])' };
@@ -197,6 +229,179 @@ export class RunManager {
197
229
  });
198
230
  return { ok: true, run };
199
231
  }
232
+ /**
233
+ * t32 client mode entry: same CompanionRun lifecycle as the spawn path,
234
+ * driven by session.create → run.turn over the harness NDJSON protocol.
235
+ * Synchronous like start(): the async chain runs fire-and-forget and
236
+ * reports through the usual run status + emit path.
237
+ */
238
+ startViaHarness(run, args, mode, phase) {
239
+ this.active = { run, listeners: new Set() };
240
+ this.emit({
241
+ type: 'log',
242
+ message: `[companion] run ${run.id} started mode=${mode} phase=${phase} cwd=${args.cwd}`,
243
+ });
244
+ void this.driveHarnessTurn(run, args, mode, phase);
245
+ return { ok: true, run };
246
+ }
247
+ /**
248
+ * The client-mode turn: one harness session per run (mirroring the
249
+ * one-process-per-run semantics), disposed after settlement so the App
250
+ * Server's per-workspace services stay warm for the NEXT run. Turn
251
+ * BrainEvents ride the transport like child stdout lines did in spawn
252
+ * mode — with the default stdio transport that is verbatim (runOneTurn
253
+ * emits them on the server's stdout).
254
+ */
255
+ async driveHarnessTurn(run, args, mode, phase) {
256
+ try {
257
+ const client = await this.ensureHarnessClient();
258
+ const sessionId = await client.createSession(args.cwd);
259
+ const connected = this.active;
260
+ if (!connected || connected.run.id !== run.id) {
261
+ // Run superseded/finished while connecting — release the session slot.
262
+ await client.disposeSession(sessionId).catch(() => undefined);
263
+ return;
264
+ }
265
+ if (connected.cancelRequested) {
266
+ // Cancelled before the session connected: dispose, never start a turn.
267
+ await client.disposeSession(sessionId).catch(() => undefined);
268
+ this.emit({
269
+ type: 'run_finished',
270
+ runId: run.id,
271
+ status: run.status,
272
+ exitCode: run.exitCode ?? null,
273
+ });
274
+ this.finishActive();
275
+ return;
276
+ }
277
+ connected.harnessSessionId = sessionId;
278
+ // Same turn input the spawn argv produced (HeadlessOptions shape);
279
+ // history rides the payload instead of a tmp --history-file.
280
+ const turnInput = {
281
+ task: run.prompt,
282
+ mode,
283
+ phase,
284
+ output: 'json',
285
+ };
286
+ if (args.provider?.trim())
287
+ turnInput['provider'] = args.provider.trim();
288
+ if (args.model?.trim())
289
+ turnInput['model'] = args.model.trim();
290
+ if (Array.isArray(args.history) && args.history.length > 0) {
291
+ turnInput['history'] = args.history;
292
+ }
293
+ const result = await client.runTurn(sessionId, turnInput);
294
+ const stillOwner = this.active?.run.id === run.id;
295
+ if (stillOwner && run.status === 'running') {
296
+ // Same guard as the spawn path's close handler: a cancelled run
297
+ // keeps its 'cancelled' status when the turn settles later.
298
+ const exitCode = typeof result.exitCode === 'number' ? result.exitCode : 1;
299
+ run.status = exitCode === 0 ? 'completed' : 'error';
300
+ run.exitCode = exitCode;
301
+ run.finishedAt = Date.now();
302
+ if (exitCode !== 0 && !run.error)
303
+ run.error = `exit ${exitCode}`;
304
+ }
305
+ if (stillOwner) {
306
+ this.emit({
307
+ type: 'run_finished',
308
+ runId: run.id,
309
+ status: run.status,
310
+ exitCode: run.exitCode ?? null,
311
+ });
312
+ this.finishActive();
313
+ }
314
+ await client.disposeSession(sessionId).catch(() => undefined);
315
+ }
316
+ catch (err) {
317
+ const message = err instanceof Error ? err.message : String(err);
318
+ if (this.active?.run.id === run.id) {
319
+ run.status = 'error';
320
+ run.error = message;
321
+ run.finishedAt = Date.now();
322
+ this.emit({ type: 'error', severity: 'fatal', message, code: 'harness_client' });
323
+ this.finishActive();
324
+ }
325
+ }
326
+ }
327
+ async ensureHarnessClient() {
328
+ if (this.harnessClient)
329
+ return this.harnessClient;
330
+ const transport = (this.createTransport ?? (() => this.createServerTransport()))();
331
+ this.harnessTransport = transport;
332
+ this.harnessClient = new HarnessClient(transport, (event) => {
333
+ // Server-initiated NDJSON (protocol_info handshake, BrainEvents, §24
334
+ // control acks) takes the same emit path child stdout lines used.
335
+ this.emit(event);
336
+ });
337
+ return this.harnessClient;
338
+ }
339
+ /**
340
+ * Default client transport: ONE long-lived `--serve-harness` child shared
341
+ * by every run, instead of one `--headless` child per run.
342
+ */
343
+ createServerTransport() {
344
+ const cliEntry = process.argv[1];
345
+ if (!cliEntry) {
346
+ throw new Error('Cannot resolve CLI entry (process.argv[1])');
347
+ }
348
+ const child = spawn(process.execPath, [cliEntry, '--serve-harness'], {
349
+ env: { ...process.env, ZELARI_SKIP_PREFLIGHT: '1' },
350
+ stdio: ['pipe', 'pipe', 'pipe'],
351
+ windowsHide: true,
352
+ });
353
+ child.stderr?.on('data', (buf) => {
354
+ const text = buf.toString('utf8').trim();
355
+ if (text)
356
+ this.emit({ type: 'log', message: `[harness] ${text}` });
357
+ });
358
+ return {
359
+ write: (line) => {
360
+ child.stdin?.write(line + '\n');
361
+ },
362
+ onLine: (listener) => {
363
+ const rl = createInterface({ input: child.stdout });
364
+ rl.on('line', listener);
365
+ },
366
+ close: () => new Promise((resolveClose) => {
367
+ try {
368
+ child.once('close', () => resolveClose());
369
+ child.kill('SIGTERM');
370
+ }
371
+ catch {
372
+ resolveClose();
373
+ }
374
+ }),
375
+ };
376
+ }
377
+ /**
378
+ * t32: steer the active run (harness client mode only). Spawn mode has no
379
+ * live channel into the running process — explicit error, never a silent
380
+ * drop. §24: the result reflects ACCEPTANCE; watch for control_applied.
381
+ */
382
+ async steer(runId, text) {
383
+ if (!this.active)
384
+ return { ok: false, error: 'No active run' };
385
+ if (runId && this.active.run.id !== runId) {
386
+ return { ok: false, error: `Run ${runId} is not active` };
387
+ }
388
+ const trimmed = text?.trim();
389
+ if (!trimmed)
390
+ return { ok: false, error: 'text is required' };
391
+ if (!this.active.harnessSessionId || !this.harnessClient) {
392
+ return {
393
+ ok: false,
394
+ error: `steer requires harness server mode (${HARNESS_SERVER_ENV}=1)`,
395
+ };
396
+ }
397
+ try {
398
+ const result = await this.harnessClient.steer(this.active.harnessSessionId, trimmed);
399
+ return { ok: true, result };
400
+ }
401
+ catch (err) {
402
+ return { ok: false, error: err instanceof Error ? err.message : String(err) };
403
+ }
404
+ }
200
405
  cancel(runId) {
201
406
  if (!this.active) {
202
407
  return { ok: false, error: 'No active run' };
@@ -204,13 +409,28 @@ export class RunManager {
204
409
  if (runId && this.active.run.id !== runId) {
205
410
  return { ok: false, error: `Run ${runId} is not active` };
206
411
  }
207
- const { run, child } = this.active;
412
+ const { run } = this.active;
208
413
  run.status = 'cancelled';
209
414
  run.finishedAt = Date.now();
210
415
  this.emit({
211
416
  type: 'log',
212
417
  message: `[companion] cancelling run ${run.id}`,
213
418
  });
419
+ // t32 client mode: cooperative cancel on the harness session (the turn
420
+ // process is shared — there is no per-run child to kill). Before the
421
+ // session is connected, cancelRequested makes driveHarnessTurn dispose
422
+ // the session as soon as createSession resolves.
423
+ const harnessSessionId = this.active.harnessSessionId;
424
+ this.active.cancelRequested = true;
425
+ if (harnessSessionId && this.harnessClient) {
426
+ void this.harnessClient
427
+ .cancel(harnessSessionId, 'companion cancel')
428
+ .catch(() => undefined);
429
+ return { ok: true };
430
+ }
431
+ const child = this.active.child;
432
+ if (!child)
433
+ return { ok: true }; // client mode, still connecting
214
434
  try {
215
435
  child.kill('SIGTERM');
216
436
  }
@@ -246,5 +466,17 @@ export class RunManager {
246
466
  this.recent.length = 30;
247
467
  this.active = null;
248
468
  }
469
+ /**
470
+ * t32: tear the harness client + transport down (idempotent). The default
471
+ * stdio transport is a child that dies with the host process, so serve
472
+ * shutdown works without this; explicit hosts call it for clean disposal.
473
+ */
474
+ async close() {
475
+ const client = this.harnessClient;
476
+ this.harnessClient = null;
477
+ this.harnessTransport = null;
478
+ if (client)
479
+ await client.close();
480
+ }
249
481
  }
250
482
  //# sourceMappingURL=runManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runManager.js","sourceRoot":"","sources":["../../../src/cli/companion/runManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runManager.js","sourceRoot":"","sources":["../../../src/cli/companion/runManager.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ import { getCurrentVersion } from '../updater.js';
14
14
  import { buildDesktopConfigSnapshot } from '../desktopConfig.js';
15
15
  import { DEFAULT_COMPANION_BIND, DEFAULT_COMPANION_PORT, loadCompanionConfig, loadOrCreateToken, mergeProjects, resolveProjectPath, saveCompanionConfig, tokenMatches, } from './config.js';
16
16
  import { RunManager } from './runManager.js';
17
+ import { COMPANION_ALLOWED_ORIGINS_ENV, allowedOriginFor, loopbackOrigins, parseAllowedOrigins, } from './cors.js';
17
18
  function readBody(req, max = 2_000_000) {
18
19
  return new Promise((resolveBody, reject) => {
19
20
  const chunks = [];
@@ -36,7 +37,8 @@ function sendJson(res, status, body, extraHeaders) {
36
37
  res.writeHead(status, {
37
38
  'content-type': 'application/json; charset=utf-8',
38
39
  'content-length': Buffer.byteLength(data),
39
- 'access-control-allow-origin': '*',
40
+ // t25: the allow-origin header is set per-request from the allowlist
41
+ // (see the createServer handler) — never a wildcard.
40
42
  'access-control-allow-headers': 'authorization, content-type',
41
43
  'access-control-allow-methods': 'GET, POST, OPTIONS',
42
44
  ...extraHeaders,
@@ -92,11 +94,26 @@ export async function runCompanionServe(opts = {}) {
92
94
  ` Or edit ~/.zelari-code/companion.json\n`);
93
95
  }
94
96
  const runs = new RunManager();
97
+ // v2.16 (t25): CORS allowlist — this server's own loopback origins plus any
98
+ // extra browser origins configured via ZELARI_COMPANION_ALLOWED_ORIGINS
99
+ // (comma-separated). Requests WITHOUT an Origin header (curl / native
100
+ // loopback tooling) are unaffected; foreign browser origins get no
101
+ // access-control-allow-origin header, so the browser blocks the response.
102
+ const allowedOrigins = [
103
+ ...loopbackOrigins(port),
104
+ ...parseAllowedOrigins(process.env[COMPANION_ALLOWED_ORIGINS_ENV]),
105
+ ];
95
106
  const server = createServer(async (req, res) => {
96
- // CORS preflight (browser companion / PWA)
107
+ // v2.16 (t25): allowlist-driven CORS emit the header ONLY for
108
+ // allowlisted browser origins (loopback + env). writeHead below never
109
+ // overrides it, so this covers sendJson, preflight and SSE alike.
110
+ const corsOrigin = allowedOriginFor(req.headers.origin, allowedOrigins);
111
+ if (corsOrigin)
112
+ res.setHeader('access-control-allow-origin', corsOrigin);
113
+ // CORS preflight (browser companion / PWA) — no wildcard: an origin not
114
+ // on the allowlist gets a headerless 204 and the browser blocks it.
97
115
  if (req.method === 'OPTIONS') {
98
116
  res.writeHead(204, {
99
- 'access-control-allow-origin': '*',
100
117
  'access-control-allow-headers': 'authorization, content-type',
101
118
  'access-control-allow-methods': 'GET, POST, OPTIONS',
102
119
  });
@@ -219,7 +236,7 @@ export async function runCompanionServe(opts = {}) {
219
236
  'content-type': 'text/event-stream; charset=utf-8',
220
237
  'cache-control': 'no-cache, no-transform',
221
238
  connection: 'keep-alive',
222
- 'access-control-allow-origin': '*',
239
+ // t25: allow-origin comes from the per-request allowlist set above.
223
240
  'access-control-allow-headers': 'authorization, content-type',
224
241
  });
225
242
  res.write(`: connected run=${runId}\n\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/companion/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/companion/serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * extensionToolWiring.ts — CLI adapter between the core ExtensionAPI seam
3
+ * (t30) and the safety-wrapped ToolRegistry.
4
+ *
5
+ * Two jobs, both ADDITIVE to the existing pipeline:
6
+ * 1. {@link extensionToolToDefinition} turns a collected ExtensionToolSpec
7
+ * into a real ToolDefinition. The caller (toolRegistry.createBuiltinToolRegistry)
8
+ * pushes it through the SAME wrapWithPermissions path as builtin tools,
9
+ * so the declared permissions are intersected DOWN against the parent
10
+ * policy and the ContractCompiler capability layer still intersects
11
+ * LAST. An extension cannot widen anything, no matter what it declares.
12
+ * 2. {@link withExtensionPreToolUse} wraps a tool's execute so the
13
+ * extension onPreToolUse handlers run BEFORE the tool body, with the
14
+ * t22 failure semantics (fail-open log+allow / fail-closed deny with
15
+ * reason 'extension-hook-failed') — the same resolveHookFailureMode
16
+ * that drives the JSON lifecycle hooks.
17
+ *
18
+ * @since 2.22.0 (t30)
19
+ */
20
+ import { runExtensionPreToolUse } from '@zelari/core/harness';
21
+ import { typedErr } from '@zelari/core/harness/tools/toolTypes';
22
+ /**
23
+ * Extension spec → ToolDefinition. The executor IGNORES the ToolContext
24
+ * (extensions never see audit/signal internals) and the description is
25
+ * prefixed with the owning extension id so the model — and audit trails —
26
+ * can tell where the tool came from.
27
+ */
28
+ export function extensionToolToDefinition(entry) {
29
+ const { spec, extensionId } = entry;
30
+ return {
31
+ name: spec.name,
32
+ description: `[extension:${extensionId}] ${spec.description}`,
33
+ permissions: [...spec.permissions],
34
+ inputSchema: spec.inputSchema,
35
+ sideEffect: 'local',
36
+ execute: async (input, _ctx) => spec.execute(input),
37
+ };
38
+ }
39
+ /**
40
+ * Wrap a tool definition so extension PreToolUse handlers observe (and may
41
+ * deny) the call before the tool body runs. A deny becomes a typed
42
+ * `{ ok: false, error: '[extension-hook:<id>] <reason>' }` — the tool
43
+ * function is never invoked.
44
+ */
45
+ export function withExtensionPreToolUse(handlers, options) {
46
+ return (def) => ({
47
+ ...def,
48
+ execute: async (input, ctx) => {
49
+ const verdict = await runExtensionPreToolUse(handlers, { toolName: def.name, toolInput: input }, { failureMode: options.failureMode, logger: options.logger });
50
+ if (!verdict.ok) {
51
+ return typedErr(`[extension-hook:${verdict.extensionId ?? 'unknown'}] ${verdict.reason ?? 'denied'}`);
52
+ }
53
+ return def.execute(input, ctx);
54
+ },
55
+ });
56
+ }
57
+ //# sourceMappingURL=extensionToolWiring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensionToolWiring.js","sourceRoot":"","sources":["../../../src/cli/extensions/extensionToolWiring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAO9D,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAA8B;IACtE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IACpC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,cAAc,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE;QAC7D,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAqB;QACtD,WAAW,EAAE,IAAI,CAAC,WAAiC;QACnD,UAAU,EAAE,OAAO;QACnB,OAAO,EAAE,KAAK,EAAE,KAAc,EAAE,IAAiB,EAAiC,EAAE,CAClF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KACtB,CAAC;AACJ,CAAC;AAOD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAgD,EAChD,OAAuC;IAEvC,OAAO,CAAO,GAAyB,EAAwB,EAAE,CAAC,CAAC;QACjE,GAAG,GAAG;QACN,OAAO,EAAE,KAAK,EAAE,KAAQ,EAAE,GAAgB,EAA2B,EAAE;YACrE,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAC1C,QAAQ,EACR,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EACxC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAC7D,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAChB,OAAO,QAAQ,CACb,mBAAmB,OAAO,CAAC,WAAW,IAAI,SAAS,KAAK,OAAO,CAAC,MAAM,IAAI,QAAQ,EAAE,CACrF,CAAC;YACJ,CAAC;YACD,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}