@corenel/harness 0.11.0 → 0.13.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 (77) hide show
  1. package/dist/core/fileChanges.d.ts +18 -0
  2. package/dist/core/fileChanges.d.ts.map +1 -0
  3. package/dist/core/fileChanges.js +85 -0
  4. package/dist/core/fileChanges.js.map +1 -0
  5. package/dist/core/loop.d.ts +10 -0
  6. package/dist/core/loop.d.ts.map +1 -1
  7. package/dist/core/loop.js +32 -2
  8. package/dist/core/loop.js.map +1 -1
  9. package/dist/core/spawn.d.ts +4 -0
  10. package/dist/core/spawn.d.ts.map +1 -1
  11. package/dist/core/spawn.js +11 -4
  12. package/dist/core/spawn.js.map +1 -1
  13. package/dist/dag/executeNode.d.ts +5 -0
  14. package/dist/dag/executeNode.d.ts.map +1 -1
  15. package/dist/dag/executeNode.js +5 -1
  16. package/dist/dag/executeNode.js.map +1 -1
  17. package/dist/guardrail/permission-service.d.ts +4 -0
  18. package/dist/guardrail/permission-service.d.ts.map +1 -1
  19. package/dist/guardrail/permission-service.js +10 -3
  20. package/dist/guardrail/permission-service.js.map +1 -1
  21. package/dist/guardrail/serialize.d.ts.map +1 -1
  22. package/dist/guardrail/serialize.js +4 -0
  23. package/dist/guardrail/serialize.js.map +1 -1
  24. package/dist/guardrail/validate.d.ts.map +1 -1
  25. package/dist/guardrail/validate.js +3 -1
  26. package/dist/guardrail/validate.js.map +1 -1
  27. package/dist/orchestrator/agentSearch.d.ts.map +1 -1
  28. package/dist/orchestrator/agentSearch.js +10 -0
  29. package/dist/orchestrator/agentSearch.js.map +1 -1
  30. package/dist/orchestrator/planDoc.d.ts +26 -0
  31. package/dist/orchestrator/planDoc.d.ts.map +1 -1
  32. package/dist/orchestrator/planDoc.js +132 -10
  33. package/dist/orchestrator/planDoc.js.map +1 -1
  34. package/dist/orchestrator/record.d.ts +100 -4
  35. package/dist/orchestrator/record.d.ts.map +1 -1
  36. package/dist/orchestrator/record.js +238 -4
  37. package/dist/orchestrator/record.js.map +1 -1
  38. package/dist/orchestrator/sidecarTools.d.ts +5 -0
  39. package/dist/orchestrator/sidecarTools.d.ts.map +1 -1
  40. package/dist/orchestrator/sidecarTools.js +53 -15
  41. package/dist/orchestrator/sidecarTools.js.map +1 -1
  42. package/dist/prompts/init.d.ts +12 -0
  43. package/dist/prompts/init.d.ts.map +1 -0
  44. package/dist/prompts/init.js +48 -0
  45. package/dist/prompts/init.js.map +1 -0
  46. package/dist/prompts/library/defaults.generated.js +2 -2
  47. package/dist/prompts/library/defaults.generated.js.map +1 -1
  48. package/dist/sidecar/deviceKeys.d.ts +75 -0
  49. package/dist/sidecar/deviceKeys.d.ts.map +1 -0
  50. package/dist/sidecar/deviceKeys.js +142 -0
  51. package/dist/sidecar/deviceKeys.js.map +1 -0
  52. package/dist/sidecar/host.d.ts +157 -23
  53. package/dist/sidecar/host.d.ts.map +1 -1
  54. package/dist/sidecar/host.js +340 -15
  55. package/dist/sidecar/host.js.map +1 -1
  56. package/dist/sidecar/identity.d.ts +41 -17
  57. package/dist/sidecar/identity.d.ts.map +1 -1
  58. package/dist/sidecar/identity.js +10 -21
  59. package/dist/sidecar/identity.js.map +1 -1
  60. package/dist/sidecar/server.d.ts +202 -30
  61. package/dist/sidecar/server.d.ts.map +1 -1
  62. package/dist/sidecar/server.js +722 -109
  63. package/dist/sidecar/server.js.map +1 -1
  64. package/dist/sidecar/testing.d.ts +97 -0
  65. package/dist/sidecar/testing.d.ts.map +1 -0
  66. package/dist/sidecar/testing.js +259 -0
  67. package/dist/sidecar/testing.js.map +1 -0
  68. package/dist/sidecar/wsChannel.d.ts +8 -1
  69. package/dist/sidecar/wsChannel.d.ts.map +1 -1
  70. package/dist/sidecar/wsChannel.js +17 -1
  71. package/dist/sidecar/wsChannel.js.map +1 -1
  72. package/dist/tools/callAgent.d.ts.map +1 -1
  73. package/dist/tools/callAgent.js +33 -13
  74. package/dist/tools/callAgent.js.map +1 -1
  75. package/dist/tools/orchestration.js +1 -1
  76. package/dist/tools/orchestration.js.map +1 -1
  77. package/package.json +2 -2
@@ -0,0 +1,97 @@
1
+ import type { SidecarChannel, SidecarMsg } from '@corenel/protocol';
2
+ import type { SidecarDevices, SidecarDeviceRecord } from './server';
3
+ import type { ExplainingIdentityVerifier, SidecarAdmission } from './identity';
4
+ import { type KeySigner } from './deviceKeys';
5
+ type Hello = Extract<SidecarMsg, {
6
+ t: 'hello';
7
+ }>;
8
+ /** An in-memory `SidecarDevices` (the node daemon's devices.json, minus the
9
+ * file): codes are hash-keyed and single-use, revocations fan out. */
10
+ export declare function memoryDevices(): {
11
+ port: SidecarDevices;
12
+ devices: Map<string, SidecarDeviceRecord>;
13
+ codes: Map<string, number>;
14
+ add(id: string, key: KeySigner, extra?: Partial<SidecarDeviceRecord>): void;
15
+ };
16
+ export interface TestPairing {
17
+ /** Spread into `SidecarServerOptions`. */
18
+ server: {
19
+ devices: SidecarDevices;
20
+ sidecarKey: KeySigner;
21
+ };
22
+ /** Spread into `SidecarHostOptions`. */
23
+ host: {
24
+ device: {
25
+ id: string;
26
+ sidecarJkt: string;
27
+ };
28
+ deviceKey: KeySigner;
29
+ };
30
+ /** The recorded device's id and key. */
31
+ deviceId: string;
32
+ clientKey: KeySigner;
33
+ /** The store behind `server.devices`. */
34
+ store: ReturnType<typeof memoryDevices>;
35
+ /** Wrap the SERVER's end of a channel so a hand-driven client that sends a
36
+ * bare `hello` (no `device`/`enroll`) is paired as this test device: the
37
+ * wrapper adds the device and a nonce to that hello, answers the daemon's
38
+ * `server-proof` itself with this device's client proof, and never shows
39
+ * the proof exchange to the client. A hello that already carries a
40
+ * credential (a real `SidecarHost`, or a test naming another device)
41
+ * passes through untouched and gets the real exchange. */
42
+ wrap(ch: SidecarChannel): SidecarChannel;
43
+ /** Wrap a `SidecarHost`'s end of a channel whose peer is a SCRIPTED fake
44
+ * server (one that answers `hello` with a `welcome` and knows nothing of
45
+ * keys). The wrapper plays the daemon's side of the proof exchange as this
46
+ * pairing's sidecar key: it holds the fake's welcome back, hands the host a
47
+ * genuine `server-proof`, swallows the host's `client-proof`, then delivers
48
+ * the welcome. Against a real `SidecarServer` it is transparent: a real
49
+ * `server-proof` passes straight through and so does the host's answer. */
50
+ wrapHost(ch: SidecarChannel): SidecarChannel;
51
+ }
52
+ /** A daemon key, a device key, and a store in which that device is paired. */
53
+ export declare function makeTestPairing(opts?: {
54
+ deviceId?: string;
55
+ }): Promise<TestPairing>;
56
+ /** The assertion a test client answers every identity challenge with, and
57
+ * the user `testIdentity`'s verifier maps it to. */
58
+ export declare const TEST_ASSERTION = "test-assertion";
59
+ export declare const TEST_USER = "user_test";
60
+ /** For a daemon that REQUIRES identity (the node daemon's `startSidecar`,
61
+ * spec 2026-09-29-device-enrollment-design Phase 2): a verifier that accepts
62
+ * exactly TEST_ASSERTION as TEST_USER, and a policy that admits exactly that
63
+ * user. `pairedClient` answers challenges with TEST_ASSERTION. Test support
64
+ * only; it verifies nothing real. */
65
+ export declare function testIdentity(): {
66
+ identity: ExplainingIdentityVerifier;
67
+ admission: SidecarAdmission;
68
+ };
69
+ /** The `hello` a paired client sends, before the proof exchange. */
70
+ export declare function pairedHelloMsg(p: TestPairing, extra?: Partial<Hello>): Hello;
71
+ /**
72
+ * Drive a paired hello by hand: send it, wait for the daemon's `server-proof`
73
+ * among `received` (the messages the test collects from its end of the
74
+ * channel), and answer with this device's client proof. Resolves once the
75
+ * proof is sent (the welcome follows on its own), or once a `denied` arrives
76
+ * instead. The server proof is not checked here -- tests of that check live
77
+ * with the host.
78
+ */
79
+ export declare function pairedHello(p: TestPairing, send: (m: SidecarMsg) => void, received: readonly SidecarMsg[], extra?: Partial<Hello>): Promise<void>;
80
+ /**
81
+ * A paired client for a test that talks over a raw socket: send `hello`
82
+ * first, then pass every parsed incoming message to `answer`; it resolves with
83
+ * the `client-proof` to send back when the message is the daemon's
84
+ * `server-proof`, the `identity-assert` (TEST_ASSERTION) for an
85
+ * `identity-challenge`, and null for anything else.
86
+ */
87
+ export declare function pairedClient(p: TestPairing, extra?: Partial<Hello>): {
88
+ hello: Hello;
89
+ answer: (m: SidecarMsg) => Promise<SidecarMsg | null>;
90
+ };
91
+ /** `pairedHello`, then wait until the welcome (or a denial) has arrived. */
92
+ export declare function pairedWelcome(p: TestPairing, send: (m: SidecarMsg) => void, received: readonly SidecarMsg[], extra?: Partial<Hello>): Promise<void>;
93
+ /** Wait until `received` holds a `welcome` or a `denied`: the end of a
94
+ * pairing driven through `wrap`, which completes asynchronously. */
95
+ export declare function untilWelcome(received: readonly SidecarMsg[]): Promise<void>;
96
+ export {};
97
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../sidecar/testing.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,KAAK,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EACyG,KAAK,SAAS,EAC7H,MAAM,cAAc,CAAC;AAEtB,KAAK,KAAK,GAAG,OAAO,CAAC,UAAU,EAAE;IAAE,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAEjD;sEACsE;AACtE,wBAAgB,aAAa,IAAI;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC1C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;CAC7E,CAmCA;AAED,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,MAAM,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,UAAU,EAAE,SAAS,CAAA;KAAE,CAAC;IAC3D,wCAAwC;IACxC,IAAI,EAAE;QAAE,MAAM,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAAC;IAC3E,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,yCAAyC;IACzC,KAAK,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;IACxC;;;;;;8DAM0D;IAC1D,IAAI,CAAC,EAAE,EAAE,cAAc,GAAG,cAAc,CAAC;IACzC;;;;;;+EAM2E;IAC3E,QAAQ,CAAC,EAAE,EAAE,cAAc,GAAG,cAAc,CAAC;CAC9C;AAED,8EAA8E;AAC9E,wBAAsB,eAAe,CAAC,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAgG5F;AAED;oDACoD;AACpD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC;;;;qCAIqC;AACrC,wBAAgB,YAAY,IAAI;IAAE,QAAQ,EAAE,0BAA0B,CAAC;IAAC,SAAS,EAAE,gBAAgB,CAAA;CAAE,CAWpG;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,GAAE,OAAO,CAAC,KAAK,CAAM,GAAG,KAAK,CAEhF;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,CAAC,EAAE,WAAW,EACd,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,EAC7B,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,KAAK,GAAE,OAAO,CAAC,KAAK,CAAM,GACzB,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,GAAE,OAAO,CAAC,KAAK,CAAM,GAAG;IACxE,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CACvD,CAcA;AAED,4EAA4E;AAC5E,wBAAsB,aAAa,CACjC,CAAC,EAAE,WAAW,EACd,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,EAC7B,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,KAAK,GAAE,OAAO,CAAC,KAAK,CAAM,GACzB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;oEACoE;AACpE,wBAAsB,YAAY,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMjF"}
@@ -0,0 +1,259 @@
1
+ import { SIDECAR_PROTOCOL } from '@corenel/protocol';
2
+ import { generatePrivateJwk, signerFromPrivateJwk, randomToken, clientProofPayload, serverProofPayload, bytesToB64url, } from './deviceKeys.js';
3
+ /** An in-memory `SidecarDevices` (the node daemon's devices.json, minus the
4
+ * file): codes are hash-keyed and single-use, revocations fan out. */
5
+ export function memoryDevices() {
6
+ const devices = new Map();
7
+ const codes = new Map(); // hash -> expiresAt
8
+ const subs = new Set();
9
+ const port = {
10
+ async get(id) { return devices.get(id) ?? null; },
11
+ async enroll(codeHash, device, now) {
12
+ const exp = codes.get(codeHash);
13
+ if (exp === undefined || exp <= now)
14
+ return false;
15
+ codes.delete(codeHash);
16
+ devices.set(device.id, device);
17
+ return true;
18
+ },
19
+ async codeHashes(now) { return [...codes].filter(([, exp]) => exp > now).map(([h]) => h); },
20
+ async add(device) { devices.set(device.id, device); },
21
+ async touch(id, now, verifiedUserId) {
22
+ const d = devices.get(id);
23
+ if (d)
24
+ devices.set(id, { ...d, lastSeenAt: now, ...(verifiedUserId && !d.verifiedUserId ? { verifiedUserId } : {}) });
25
+ },
26
+ async list() { return [...devices.values()]; },
27
+ async revoke(id, now) {
28
+ const d = devices.get(id);
29
+ if (!d || d.revokedAt !== undefined)
30
+ return false;
31
+ devices.set(id, { ...d, revokedAt: now });
32
+ for (const cb of [...subs])
33
+ cb(id);
34
+ return true;
35
+ },
36
+ onRevoked(cb) { subs.add(cb); return () => { subs.delete(cb); }; },
37
+ };
38
+ return {
39
+ port, devices, codes,
40
+ add(id, key, extra = {}) {
41
+ devices.set(id, { id, name: id, createdAt: 1, publicKeyJwk: key.publicJwk, jkt: key.jkt, ...extra });
42
+ },
43
+ };
44
+ }
45
+ /** A daemon key, a device key, and a store in which that device is paired. */
46
+ export async function makeTestPairing(opts = {}) {
47
+ const sidecarKey = await signerFromPrivateJwk(await generatePrivateJwk());
48
+ const clientKey = await signerFromPrivateJwk(await generatePrivateJwk());
49
+ const deviceId = opts.deviceId ?? 'dev_test';
50
+ const store = memoryDevices();
51
+ store.add(deviceId, clientKey);
52
+ const wrap = (ch) => {
53
+ let serverHandler = null;
54
+ /** The nonce of a hello this wrapper filled in, awaiting its proof. */
55
+ let injected = null;
56
+ /** Between a filled-in hello and its welcome (or denial), what the client
57
+ * sends next waits here, as a real client waits for its welcome -- a
58
+ * hand-driven test may send requests right behind its hello. */
59
+ let pairing = false;
60
+ const queued = [];
61
+ const release = () => {
62
+ pairing = false;
63
+ for (const q of queued.splice(0))
64
+ serverHandler?.(q);
65
+ };
66
+ return {
67
+ ...ch,
68
+ onMessage: (h) => {
69
+ serverHandler = h;
70
+ ch.onMessage((m) => {
71
+ // The identity exchange belongs to the pairing itself: never held.
72
+ if (pairing && m.t !== 'identity-assert') {
73
+ queued.push(m);
74
+ return;
75
+ }
76
+ if (m.t === 'hello' && m.device === undefined && m.enroll === undefined) {
77
+ injected = randomToken();
78
+ pairing = true;
79
+ h({ ...m, clientNonce: injected, device: { id: deviceId } });
80
+ return;
81
+ }
82
+ h(m);
83
+ });
84
+ },
85
+ send: (m) => {
86
+ if (m.t === 'server-proof' && injected !== null) {
87
+ const clientNonce = injected;
88
+ injected = null;
89
+ void clientKey.sign(clientProofPayload({
90
+ serverNonce: m.serverNonce, clientNonce, sidecarId: m.sidecarId, sidecarJkt: sidecarKey.jkt, subject: deviceId,
91
+ })).then((sig) => serverHandler?.({ t: 'client-proof', sig: bytesToB64url(sig) }));
92
+ return;
93
+ }
94
+ ch.send(m);
95
+ // After the answer is on its way, so the client sees it first.
96
+ if (pairing && (m.t === 'welcome' || m.t === 'denied'))
97
+ release();
98
+ },
99
+ };
100
+ };
101
+ const wrapHost = (ch) => {
102
+ let hello = null;
103
+ /** 'real': a real daemon is proving itself; 'played': this wrapper is. */
104
+ let mode = 'none';
105
+ let proven = false;
106
+ const held = [];
107
+ let hostHandler = null;
108
+ return {
109
+ ...ch,
110
+ send: (m) => {
111
+ if (m.t === 'hello')
112
+ hello = m;
113
+ if (m.t === 'client-proof' && mode === 'played') {
114
+ proven = true;
115
+ for (const w of held.splice(0))
116
+ hostHandler?.(w);
117
+ return;
118
+ }
119
+ ch.send(m);
120
+ },
121
+ onMessage: (h) => {
122
+ hostHandler = h;
123
+ ch.onMessage((m) => {
124
+ // While the played proof is outstanding, everything waits behind
125
+ // the welcome, in order.
126
+ if (mode === 'played' && !proven) {
127
+ held.push(m);
128
+ return;
129
+ }
130
+ if (m.t === 'server-proof') {
131
+ mode = 'real';
132
+ h(m);
133
+ return;
134
+ }
135
+ if (m.t === 'welcome' && mode !== 'real' && !proven) {
136
+ held.push(m);
137
+ if (mode === 'played' || !hello)
138
+ return;
139
+ mode = 'played';
140
+ const serverNonce = randomToken();
141
+ const clientNonce = hello.clientNonce ?? '';
142
+ const subject = hello.device?.id ?? '';
143
+ void sidecarKey.sign(serverProofPayload({ clientNonce, serverNonce, sidecarId: 'sc-test', sidecarJkt: sidecarKey.jkt, subject }))
144
+ .then((sig) => h({ t: 'server-proof', serverNonce, sidecarId: 'sc-test', publicKey: sidecarKey.publicJwk, sig: bytesToB64url(sig) }));
145
+ return;
146
+ }
147
+ h(m);
148
+ });
149
+ },
150
+ };
151
+ };
152
+ return {
153
+ server: { devices: store.port, sidecarKey },
154
+ host: { device: { id: deviceId, sidecarJkt: sidecarKey.jkt }, deviceKey: clientKey },
155
+ deviceId, clientKey, store, wrap, wrapHost,
156
+ };
157
+ }
158
+ /** The assertion a test client answers every identity challenge with, and
159
+ * the user `testIdentity`'s verifier maps it to. */
160
+ export const TEST_ASSERTION = 'test-assertion';
161
+ export const TEST_USER = 'user_test';
162
+ /** For a daemon that REQUIRES identity (the node daemon's `startSidecar`,
163
+ * spec 2026-09-29-device-enrollment-design Phase 2): a verifier that accepts
164
+ * exactly TEST_ASSERTION as TEST_USER, and a policy that admits exactly that
165
+ * user. `pairedClient` answers challenges with TEST_ASSERTION. Test support
166
+ * only; it verifies nothing real. */
167
+ export function testIdentity() {
168
+ const verdict = (token) => (token === TEST_ASSERTION
169
+ ? { ok: true, identity: { userId: TEST_USER, issuer: 'https://issuer.test' } }
170
+ : { ok: false, reason: 'rejected' });
171
+ return {
172
+ identity: {
173
+ explain: async (token) => verdict(token),
174
+ verify: async (token) => { const v = verdict(token); return v.ok ? v.identity : null; },
175
+ },
176
+ admission: { admits: (id) => id.userId === TEST_USER },
177
+ };
178
+ }
179
+ /** The `hello` a paired client sends, before the proof exchange. */
180
+ export function pairedHelloMsg(p, extra = {}) {
181
+ return { t: 'hello', protocol: SIDECAR_PROTOCOL, clientNonce: randomToken(), device: { id: p.deviceId }, ...extra };
182
+ }
183
+ /**
184
+ * Drive a paired hello by hand: send it, wait for the daemon's `server-proof`
185
+ * among `received` (the messages the test collects from its end of the
186
+ * channel), and answer with this device's client proof. Resolves once the
187
+ * proof is sent (the welcome follows on its own), or once a `denied` arrives
188
+ * instead. The server proof is not checked here -- tests of that check live
189
+ * with the host.
190
+ */
191
+ export async function pairedHello(p, send, received, extra = {}) {
192
+ const hello = pairedHelloMsg(p, extra);
193
+ const seen = received.length;
194
+ send(hello);
195
+ const deadline = Date.now() + 5000;
196
+ for (;;) {
197
+ const fresh = received.slice(seen);
198
+ if (fresh.some((m) => m.t === 'denied'))
199
+ return;
200
+ const sp = fresh.find((m) => m.t === 'server-proof');
201
+ if (sp) {
202
+ const sig = bytesToB64url(await p.clientKey.sign(clientProofPayload({
203
+ serverNonce: sp.serverNonce, clientNonce: hello.clientNonce ?? '', sidecarId: sp.sidecarId,
204
+ sidecarJkt: p.server.sidecarKey.jkt, subject: p.deviceId,
205
+ })));
206
+ send({ t: 'client-proof', sig });
207
+ return;
208
+ }
209
+ if (Date.now() > deadline)
210
+ throw new Error('pairedHello: no server-proof arrived');
211
+ await new Promise((r) => setTimeout(r, 1));
212
+ }
213
+ }
214
+ /**
215
+ * A paired client for a test that talks over a raw socket: send `hello`
216
+ * first, then pass every parsed incoming message to `answer`; it resolves with
217
+ * the `client-proof` to send back when the message is the daemon's
218
+ * `server-proof`, the `identity-assert` (TEST_ASSERTION) for an
219
+ * `identity-challenge`, and null for anything else.
220
+ */
221
+ export function pairedClient(p, extra = {}) {
222
+ const hello = pairedHelloMsg(p, extra);
223
+ return {
224
+ hello,
225
+ answer: async (m) => {
226
+ if (m.t === 'identity-challenge')
227
+ return { t: 'identity-assert', assertion: TEST_ASSERTION };
228
+ if (m.t !== 'server-proof')
229
+ return null;
230
+ const sig = bytesToB64url(await p.clientKey.sign(clientProofPayload({
231
+ serverNonce: m.serverNonce, clientNonce: hello.clientNonce ?? '', sidecarId: m.sidecarId,
232
+ sidecarJkt: p.server.sidecarKey.jkt, subject: p.deviceId,
233
+ })));
234
+ return { t: 'client-proof', sig };
235
+ },
236
+ };
237
+ }
238
+ /** `pairedHello`, then wait until the welcome (or a denial) has arrived. */
239
+ export async function pairedWelcome(p, send, received, extra = {}) {
240
+ const seen = received.length;
241
+ await pairedHello(p, send, received, extra);
242
+ const deadline = Date.now() + 5000;
243
+ while (!received.slice(seen).some((m) => m.t === 'welcome' || m.t === 'denied')) {
244
+ if (Date.now() > deadline)
245
+ throw new Error('pairedWelcome: no welcome arrived');
246
+ await new Promise((r) => setTimeout(r, 1));
247
+ }
248
+ }
249
+ /** Wait until `received` holds a `welcome` or a `denied`: the end of a
250
+ * pairing driven through `wrap`, which completes asynchronously. */
251
+ export async function untilWelcome(received) {
252
+ const deadline = Date.now() + 5000;
253
+ while (!received.some((m) => m.t === 'welcome' || m.t === 'denied')) {
254
+ if (Date.now() > deadline)
255
+ throw new Error('untilWelcome: no welcome arrived');
256
+ await new Promise((r) => setTimeout(r, 1));
257
+ }
258
+ }
259
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../sidecar/testing.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,11 @@
1
1
  import type { WebSocket } from 'ws';
2
2
  import type { SidecarChannel } from '@corenel/protocol';
3
- export declare function wsChannel(ws: WebSocket): SidecarChannel;
3
+ export interface WsChannelOptions {
4
+ /** Consulted for every incoming frame BEFORE it is parsed, with its size in
5
+ * bytes. False terminates the socket and the frame is never parsed. The
6
+ * daemon uses it to cap frames from a connection that has not
7
+ * authenticated yet (see packages/sidecar server.ts). */
8
+ acceptFrame?: (bytes: number) => boolean;
9
+ }
10
+ export declare function wsChannel(ws: WebSocket, opts?: WsChannelOptions): SidecarChannel;
4
11
  //# sourceMappingURL=wsChannel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wsChannel.d.ts","sourceRoot":"","sources":["../../sidecar/wsChannel.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,mBAAmB,CAAC;AAEpE,wBAAgB,SAAS,CAAC,EAAE,EAAE,SAAS,GAAG,cAAc,CAyDvD"}
1
+ {"version":3,"file":"wsChannel.d.ts","sourceRoot":"","sources":["../../sidecar/wsChannel.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,mBAAmB,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B;;;6DAGyD;IACzD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1C;AAWD,wBAAgB,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,GAAE,gBAAqB,GAAG,cAAc,CA6DpF"}
@@ -1,4 +1,16 @@
1
- export function wsChannel(ws) {
1
+ /** The byte length of a received frame, whatever shape `ws` handed over. */
2
+ function frameBytes(data) {
3
+ if (typeof data === 'string')
4
+ return new TextEncoder().encode(data).length;
5
+ if (Array.isArray(data))
6
+ return data.reduce((n, b) => n + frameBytes(b), 0);
7
+ if (data instanceof ArrayBuffer)
8
+ return data.byteLength;
9
+ if (ArrayBuffer.isView(data))
10
+ return data.byteLength;
11
+ return 0;
12
+ }
13
+ export function wsChannel(ws, opts = {}) {
2
14
  let handler = null;
3
15
  let closeHandler = null;
4
16
  const pending = [];
@@ -14,6 +26,10 @@ export function wsChannel(ws) {
14
26
  // no-op there.
15
27
  ws.on('open', flushPending);
16
28
  ws.on('message', (data) => {
29
+ if (opts.acceptFrame && !opts.acceptFrame(frameBytes(data))) {
30
+ ws.terminate();
31
+ return;
32
+ }
17
33
  if (!handler)
18
34
  return;
19
35
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"wsChannel.js","sourceRoot":"","sources":["../../sidecar/wsChannel.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,SAAS,CAAC,EAAa;IACrC,IAAI,OAAO,GAAqC,IAAI,CAAC;IACrD,IAAI,YAAY,GAAwB,IAAI,CAAC;IAC7C,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,MAAM,YAAY,GAAG,GAAS,EAAE;QAC9B,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,IAAI;YAAE,OAAO;QACtC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC;IACF,wEAAwE;IACxE,yEAAyE;IACzE,eAAe;IACf,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAE5B,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE;QACjC,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;QACvE,CAAC;IACH,CAAC,CAAC,CAAC;IACH,2EAA2E;IAC3E,uEAAuE;IACvE,oEAAoE;IACpE,qEAAqE;IACrE,oDAAoD;IACpD,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAClB,YAAY,EAAE,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,OAAO;QACL,IAAI,CAAC,GAAe;YAClB,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC9B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,sEAAsE;YACtE,aAAa;QACf,CAAC;QACD,SAAS,CAAC,CAAC;YACT,OAAO,GAAG,CAAC,CAAC;QACd,CAAC;QACD,OAAO,CAAC,CAAC;YACP,YAAY,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,KAAK;YACH,IAAI,CAAC;gBACH,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"wsChannel.js","sourceRoot":"","sources":["../../sidecar/wsChannel.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"callAgent.d.ts","sourceRoot":"","sources":["../../tools/callAgent.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAmB,MAAM,mBAAmB,CAAC;AAS/G,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACxD,kEAAkE;IAClE,SAAS,EAAE,MAAM,SAAS,EAAE,CAAC;IAC7B,6EAA6E;IAC7E,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;yEAOyE;AACzE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAAyD,CAAC;AAEjH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAGlD,CAAC;AAEF;;;oCAGoC;AACpC,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAc5E;AAKD;;;2EAG2E;AAC3E,eAAO,MAAM,YAAY,kGAAkG,CAAC;AAE5H,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAgGhE"}
1
+ {"version":3,"file":"callAgent.d.ts","sourceRoot":"","sources":["../../tools/callAgent.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAmB,MAAM,mBAAmB,CAAC;AAS/G,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACxD,kEAAkE;IAClE,SAAS,EAAE,MAAM,SAAS,EAAE,CAAC;IAC7B,6EAA6E;IAC7E,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;yEAOyE;AACzE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAAyD,CAAC;AAEjH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAGlD,CAAC;AAEF;;;oCAGoC;AACpC,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAc5E;AAKD;;;2EAG2E;AAC3E,eAAO,MAAM,YAAY,kGAAkG,CAAC;AAE5H,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CAmHhE"}
@@ -3,7 +3,7 @@ import { PermissionService } from '../guardrail/permission-service.js';
3
3
  import { matchesAnyGlob } from '../guardrail/glob.js';
4
4
  import { toolAddress } from './namespaces.js';
5
5
  import { ORCHESTRATION_ONLY_TOOLS } from './orchestration.js';
6
- import { recordOf, flushRecord, NO_RUN_STATE } from '../orchestrator/record.js';
6
+ import { recordOf, flushRecord, outputRecorder, headOf, NO_RUN_STATE, MAX_REPORT_CHARS } from '../orchestrator/record.js';
7
7
  import { planHash } from '../orchestrator/planDoc.js';
8
8
  /** The browser host's strategy tools that run models or shape what later runs
9
9
  * (src/workflows/strategy/tools.ts, advertised to the worker as remote decls
@@ -95,19 +95,29 @@ export function makeCallAgentTool(opts) {
95
95
  }
96
96
  // The approved plan is a contract: if the file it was written to no
97
97
  // longer hashes to what was approved, stop rather than delegate against
98
- // a plan nobody signed off on. Only checked once the host has written
99
- // it (planWrittenAt) and can read it back; a read error propagates as
100
- // an ordinary tool error below rather than being treated as unchanged.
101
- if (rec?.planWrittenAt && rec.planPath && rec.planHash && rec.lock) {
102
- const reader = opts.hostTools().find((t) => t.name === 'sidecar_fs_read_file');
103
- if (reader) {
104
- const content = String(await reader.run({ root: rec.lock.root, path: rec.planPath }, ctx));
105
- if (await planHash(content.trimEnd()) !== rec.planHash)
106
- return PLAN_CHANGED;
107
- }
98
+ // a plan nobody signed off on. The file is checked once the host has
99
+ // written it (planWrittenAt) -- on the run's branch, or in the folder as
100
+ // it is when the run works without git (planRoot) -- and can read it
101
+ // back; a read error propagates as an ordinary tool error below rather
102
+ // than being treated as unchanged. With no file (no git tools, no
103
+ // writable root, a failed write) the record's own markdown is the plan.
104
+ const planRoot = rec?.planRoot ?? rec?.lock?.root;
105
+ const reader = opts.hostTools().find((t) => t.name === 'sidecar_fs_read_file');
106
+ if (rec?.planWrittenAt && rec.planPath && rec.planHash && planRoot && reader) {
107
+ const content = String(await reader.run({ root: planRoot, path: rec.planPath }, ctx));
108
+ if (await planHash(content.trimEnd()) !== rec.planHash)
109
+ return PLAN_CHANGED;
110
+ }
111
+ else if (rec?.planHash && rec.plan !== undefined && await planHash(rec.plan) !== rec.planHash) {
112
+ return PLAN_CHANGED;
108
113
  }
109
114
  const taskNo = typeof args.task === 'number' ? args.task : Number.NaN;
110
115
  const row = rec?.planTasks?.find((t) => t.n === taskNo);
116
+ // The task this call's report and files are filed under: a task of the
117
+ // approved plan, or any number the model gave when the plan has no
118
+ // task list. A number that is not in the plan files nothing under it.
119
+ const task = row ? row.n : !rec?.planTasks?.length && Number.isFinite(taskNo) ? taskNo : undefined;
120
+ const inTask = task !== undefined ? { task } : {};
111
121
  const d = await opts.resolve(agent);
112
122
  if (!d)
113
123
  return `Agent "${agent}" was not found.`;
@@ -127,6 +137,9 @@ export function makeCallAgentTool(opts) {
127
137
  label: agent,
128
138
  tools: calleeToolNames(opts.hostTools(), d.policy),
129
139
  ...(d.skills && d.skills.length ? { skills: d.skills } : {}),
140
+ // An orchestrator logs what the callee writes, under this task and
141
+ // this callee: the record is the run's output, whoever produced it.
142
+ ...(rec ? { onFileChange: outputRecorder(ctx, { agent, ...inTask }) } : {}),
130
143
  };
131
144
  if (row) {
132
145
  row.status = 'running';
@@ -137,7 +150,14 @@ export function makeCallAgentTool(opts) {
137
150
  if (row)
138
151
  row.status = 'done';
139
152
  if (rec) {
140
- rec.delegations.push({ agent, at: Date.now(), turns: r.turns, stopReason: r.stopReason, ...(r.sessionId ? { sessionId: r.sessionId } : {}) });
153
+ // What the callee handed back is its report on the task: kept (its
154
+ // head) so the run's output can show it after the run.
155
+ const report = headOf(r.text.trim(), MAX_REPORT_CHARS);
156
+ rec.delegations.push({
157
+ agent, at: Date.now(), turns: r.turns, stopReason: r.stopReason, ...(r.sessionId ? { sessionId: r.sessionId } : {}),
158
+ ...inTask,
159
+ ...(report.text ? { report: report.text } : {}), ...(report.chars !== undefined ? { reportChars: report.chars } : {}),
160
+ });
141
161
  await flushRecord(ctx);
142
162
  }
143
163
  const trace = r.sessionId ? `, trace: ${r.sessionId}` : '';
@@ -148,7 +168,7 @@ export function makeCallAgentTool(opts) {
148
168
  if (row)
149
169
  row.status = 'error';
150
170
  if (rec) {
151
- rec.delegations.push({ agent, at: Date.now(), turns: 0, stopReason: 'error', error: msg });
171
+ rec.delegations.push({ agent, at: Date.now(), turns: 0, stopReason: 'error', error: msg, ...inTask });
152
172
  await flushRecord(ctx);
153
173
  }
154
174
  return `call_agent(${agent}) failed. Error: ${msg}`;
@@ -1 +1 @@
1
- {"version":3,"file":"callAgent.js","sourceRoot":"","sources":["../../tools/callAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"callAgent.js","sourceRoot":"","sources":["../../tools/callAgent.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACvH,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAanD;;;;;;;yEAOyE;AACzE,MAAM,CAAC,MAAM,yBAAyB,GAAsB,CAAC,iBAAiB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;AAEjH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,wBAAwB,EAAE,GAAG,sBAAsB;IACnG,GAAG,yBAAyB;CAC7B,CAAC;AAEF;;;oCAGoC;AACpC,MAAM,UAAU,eAAe,CAAC,KAAkB,EAAE,MAAc;IAChE,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;IACtC,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC5D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,CAAC,KAAwB,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7G,IAAI,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,OAAO,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,MAAM,CAAC;IACvH,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,GAAG,CAAC,CAAU,IAAY,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,MAAM,SAAS,GAAG,iBAAiB,CAAC;AAEpC;;;2EAG2E;AAC3E,MAAM,CAAC,MAAM,YAAY,GAAG,+FAA+F,CAAC;AAE5H,MAAM,UAAU,iBAAiB,CAAC,IAAmB;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;IAC5C,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,WAAW,EACT,8FAA8F;cAC5F,iBAAiB,IAAI,0FAA0F;QACnH,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,IAAI,GAAG,EAAE;gBAC7E,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;gBACnF,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,mDAAmD,EAAE;aAC5F;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;SAC/B;QACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG;YACjB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK;gBAAE,OAAO,8BAA8B,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,qBAAqB,KAAK,eAAe,IAAI,GAAG,CAAC;YACtF,IAAI,CAAC,OAAO;gBAAE,OAAO,0DAA0D,CAAC;YAChF,IAAI,CAAC,GAAG,CAAC,KAAK;gBAAE,OAAO,yEAAyE,CAAC;YAEjG,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;YAChC,uEAAuE;YACvE,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACxC,IAAI,KAAK,GAAkC,IAAI,CAAC;YAChD,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG;oBAAE,OAAO,YAAY,CAAC;gBACxC,IAAI,CAAC,GAAG,CAAC,cAAc;oBAAE,OAAO,uEAAuE,CAAC;gBACxG,KAAK,GAAI,KAAK,CAAC,SAAS,CAAwC,IAAI,EAAE,CAAC;gBACvE,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC9C,GAAG,CAAC,OAAO,GAAG,oBAAoB,CAAC;oBACnC,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;oBACvB,OAAO,2BAA2B,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,kDAAkD,CAAC;gBACnH,CAAC;YACH,CAAC;YAED,oEAAoE;YACpE,wEAAwE;YACxE,qEAAqE;YACrE,yEAAyE;YACzE,qEAAqE;YACrE,uEAAuE;YACvE,kEAAkE;YAClE,wEAAwE;YACxE,MAAM,QAAQ,GAAG,GAAG,EAAE,QAAQ,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC;YAC/E,IAAI,GAAG,EAAE,aAAa,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;gBAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtF,IAAI,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,CAAC,QAAQ;oBAAE,OAAO,YAAY,CAAC;YAC9E,CAAC;iBAAM,IAAI,GAAG,EAAE,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAChG,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACtE,MAAM,GAAG,GAAG,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;YACxD,uEAAuE;YACvE,mEAAmE;YACnE,sEAAsE;YACtE,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YACnG,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAElD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,CAAC;gBAAE,OAAO,UAAU,KAAK,kBAAkB,CAAC;YACjD,IAAI,CAAC,CAAC,OAAO;gBAAE,OAAO,CAAC,CAAC,OAAO,CAAC;YAChC,IAAI,CAAC,CAAC,CAAC,KAAK;gBAAE,OAAO,UAAU,KAAK,mEAAmE,CAAC;YACxG,wEAAwE;YACxE,kEAAkE;YAClE,IAAI,KAAK;gBAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,GAAG,GAAoB;gBAC3B,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;gBAClD,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,mEAAmE;gBACnE,oEAAoE;gBACpE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;YACF,IAAI,GAAG,EAAE,CAAC;gBAAC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC;gBAAC,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAC5D,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,GAAG;oBAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;gBAC7B,IAAI,GAAG,EAAE,CAAC;oBACR,mEAAmE;oBACnE,uDAAuD;oBACvD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;oBACvD,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;wBACnB,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACnH,GAAG,MAAM;wBACT,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACtH,CAAC,CAAC;oBACH,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;gBACD,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,OAAO,GAAG,CAAC,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,UAAU,GAAG,KAAK,GAAG,CAAC;YAChF,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvD,IAAI,GAAG;oBAAE,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC;gBAC9B,IAAI,GAAG,EAAE,CAAC;oBACR,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;oBACtG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;gBACD,OAAO,cAAc,KAAK,oBAAoB,GAAG,EAAE,CAAC;YACtD,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -128,7 +128,7 @@ export function makeSubmitPlanTool(opts = {}) {
128
128
  rec.planApprovedAt = Date.now();
129
129
  await flushRecord(ctx);
130
130
  return structured
131
- ? `Plan approved. It will be written to ${rec.planPath} when the branch is created. Delegate each task with call_agent, passing its number as task.`
131
+ ? `Plan approved and kept in the run record. It is written to ${rec.planPath} on the run's branch, or in the folder as it is if sidecar_git_branch reports no git repository. Delegate each task with call_agent, passing its number as task.`
132
132
  : 'Plan approved. Delegate the steps with call_agent.';
133
133
  },
134
134
  };
@@ -1 +1 @@
1
- {"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../tools/orchestration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../tools/orchestration.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAyB,MAAM,wBAAwB,CAAC;AACtH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEpG,MAAM,CAAC,MAAM,wBAAwB,GAAsB,CAAC,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAEtG,MAAM,CAAC,MAAM,UAAU,GAAG,4EAA4E,CAAC;AAEvG,MAAM,CAAC,MAAM,cAAc,GAAG,yIAAyI,CAAC;AAExK;;+CAE+C;AAC/C,MAAM,UAAU,iBAAiB,CAAC,IAAkC;IAClE,IAAI,CAAC,IAAI;QAAE,OAAO,cAAc,CAAC;IACjC,OAAO,CAAC,cAAc,EAAE,EAAE,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnI,CAAC;AAED,0DAA0D;AAC1D,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,SAAS,MAAM,CAAC,CAAU;IACxB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,oGAAoG;cAC7G,iHAAiH;QACrH,OAAO,EAAE,KAAK;QACd,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,kBAAkB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE;aAClH;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC;SAC1C;QACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAgB;YAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG;gBAAE,OAAO,YAAY,CAAC;YAC9B,uEAAuE;YACvE,qEAAqE;YACrE,IAAI,GAAG,CAAC,cAAc;gBAAE,OAAO,UAAU,CAAC;YAC1C,kEAAkE;YAClE,0EAA0E;YAC1E,IAAI,GAAG,CAAC,aAAa;gBAAE,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;YACvD,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxC,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC;gBAC3B,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,8CAA8C;sBACjD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,0CAA0C,CAAC,CAAC,CAAC,EAAE,CAAC;sBAC/E,uHAAuH,CAAC;YAC9H,CAAC;YACD,MAAM,IAAI,GAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;YACvE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,IAAI,GAAG,CAAC,OAAO,KAAK,YAAY;gBAAE,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC;YAC9D,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,sBAAsB,EAAE,CAAC,MAAM,4DAA4D,CAAC;QACrG,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,gEAAgE,CAAC;AAE3F,SAAS,OAAO,CAAC,IAA6B;IAC5C,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,IAAI,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAiF,EAAE;IACpH,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,+HAA+H;cACxI,yIAAyI;cACzI,wHAAwH;QAC5H,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE;gBACzF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE;aACtF;YACD,QAAQ,EAAE,EAAE;SACb;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG;YACtB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG;gBAAE,OAAO,YAAY,CAAC;YAC9B,IAAI,GAAG,CAAC,cAAc;gBAAE,OAAO,UAAU,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,IAAI;gBAAE,OAAO,2CAA2C,CAAC;YAClE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI;gBAAE,OAAO,+BAA+B,CAAC;YAClD,IAAI,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAC;YAC7B,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,gEAAgE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1H,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG;YACjB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG;gBAAE,OAAO,YAAY,CAAC;YAC9B,IAAI,GAAG,CAAC,cAAc;gBAAE,OAAO,UAAU,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,IAAI;gBAAE,OAAO,2CAA2C,CAAC;YAClE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,IAAI;gBAAE,OAAO,+BAA+B,CAAC;YAClD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,GAAG,CAAC,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,UAAU,EAAE,CAAC;gBACf,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1G,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC,CAAC,CAAC;YACrF,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,CAAC,QAAQ,CAAC;gBACpB,OAAO,GAAG,CAAC,SAAS,CAAC;YACvB,CAAC;YACD,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,UAAU;gBACf,CAAC,CAAC,8DAA8D,GAAG,CAAC,QAAQ,kKAAkK;gBAC9O,CAAC,CAAC,oDAAoD,CAAC;QAC3D,CAAC;KACF,CAAC;AACJ,CAAC;AAED;sDACsD;AACtD,MAAM,UAAU,cAAc,CAAC,MAA8B,EAAE,KAAwB;IACrF,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC;AACvE,CAAC;AAID,MAAM,UAAU,kBAAkB,CAAC,IAAiF;IAClH,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,qHAAqH;cAC9H,qCAAqC;QACzC,OAAO,EAAE,KAAK;QACd,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mEAAmE,EAAE,EAAE;YAC3H,QAAQ,EAAE,EAAE;SACb;QACD,KAAK,CAAC,GAAG,CAAC,IAAI;YACZ,iEAAiE;YACjE,yEAAyE;YACzE,MAAM,IAAI,GAAoB,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,CAAC,CAAC;oBAAE,SAAS;gBACjB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtF,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9I,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/C,wEAAwE;YACxE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC/E,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF,CAAC;KACF,CAAC;AACJ,CAAC"}