@corenel/harness 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acp/agentMap.d.ts +34 -0
- package/dist/acp/agentMap.d.ts.map +1 -0
- package/dist/acp/agentMap.js +110 -0
- package/dist/acp/agentMap.js.map +1 -0
- package/dist/acp/index.d.ts +4 -0
- package/dist/acp/index.d.ts.map +1 -0
- package/dist/acp/index.js +6 -0
- package/dist/acp/index.js.map +1 -0
- package/dist/acp/policyMap.d.ts +55 -0
- package/dist/acp/policyMap.d.ts.map +1 -0
- package/dist/acp/policyMap.js +121 -0
- package/dist/acp/policyMap.js.map +1 -0
- package/dist/acp/types.d.ts +41 -0
- package/dist/acp/types.d.ts.map +1 -0
- package/dist/acp/types.js +14 -0
- package/dist/acp/types.js.map +1 -0
- package/dist/api/backend.d.ts +39 -0
- package/dist/api/backend.d.ts.map +1 -0
- package/dist/api/backend.js +126 -0
- package/dist/api/backend.js.map +1 -0
- package/dist/api/client.d.ts +95 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +212 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/fileMirrorSource.d.ts +24 -0
- package/dist/api/fileMirrorSource.d.ts.map +1 -0
- package/dist/api/fileMirrorSource.js +59 -0
- package/dist/api/fileMirrorSource.js.map +1 -0
- package/dist/api/mirror.d.ts +102 -0
- package/dist/api/mirror.d.ts.map +1 -0
- package/dist/api/mirror.js +204 -0
- package/dist/api/mirror.js.map +1 -0
- package/dist/api/mirrorScheduler.d.ts +56 -0
- package/dist/api/mirrorScheduler.d.ts.map +1 -0
- package/dist/api/mirrorScheduler.js +167 -0
- package/dist/api/mirrorScheduler.js.map +1 -0
- package/dist/compression.d.ts +15 -1
- package/dist/compression.d.ts.map +1 -1
- package/dist/compression.js +32 -1
- package/dist/compression.js.map +1 -1
- package/dist/core/loop.d.ts +12 -0
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +138 -14
- package/dist/core/loop.js.map +1 -1
- package/dist/core/spawn.d.ts +54 -0
- package/dist/core/spawn.d.ts.map +1 -0
- package/dist/core/spawn.js +58 -0
- package/dist/core/spawn.js.map +1 -0
- package/dist/dag/executeNode.js +2 -2
- package/dist/fileSchema.js +1 -1
- package/dist/guardrail/guardrail.js +1 -1
- package/dist/guardrail/index.js +7 -7
- package/dist/guardrail/permission-service.js +1 -1
- package/dist/guardrail/serialize.js +1 -1
- package/dist/guardrail/store.js +2 -2
- package/dist/install/lockfile.d.ts +79 -0
- package/dist/install/lockfile.d.ts.map +1 -0
- package/dist/install/lockfile.js +155 -0
- package/dist/install/lockfile.js.map +1 -0
- package/dist/install/store.d.ts +13 -0
- package/dist/install/store.d.ts.map +1 -0
- package/dist/install/store.js +38 -0
- package/dist/install/store.js.map +1 -0
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +6 -1
- package/dist/log.js.map +1 -1
- package/dist/prompts/config.js +2 -2
- package/dist/prompts/host.d.ts +4 -0
- package/dist/prompts/host.d.ts.map +1 -1
- package/dist/prompts/host.js.map +1 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +13 -6
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/library/defaults.generated.js +2 -2
- package/dist/prompts/library/defaults.generated.js.map +1 -1
- package/dist/prompts/library/index.js +1 -1
- package/dist/providers/contextWindow.d.ts +19 -0
- package/dist/providers/contextWindow.d.ts.map +1 -0
- package/dist/providers/contextWindow.js +68 -0
- package/dist/providers/contextWindow.js.map +1 -0
- package/dist/providers/gateway.d.ts +3 -0
- package/dist/providers/gateway.d.ts.map +1 -1
- package/dist/providers/gateway.js +4 -1
- package/dist/providers/gateway.js.map +1 -1
- package/dist/sessions/apiLeaseStore.d.ts +10 -0
- package/dist/sessions/apiLeaseStore.d.ts.map +1 -0
- package/dist/sessions/apiLeaseStore.js +41 -0
- package/dist/sessions/apiLeaseStore.js.map +1 -0
- package/dist/sessions/blobGc.d.ts +62 -0
- package/dist/sessions/blobGc.d.ts.map +1 -0
- package/dist/sessions/blobGc.js +154 -0
- package/dist/sessions/blobGc.js.map +1 -0
- package/dist/sessions/fileRecallStore.js +1 -1
- package/dist/sessions/fileSessionStore.js +1 -1
- package/dist/sessions/head.d.ts +90 -0
- package/dist/sessions/head.d.ts.map +1 -0
- package/dist/sessions/head.js +82 -0
- package/dist/sessions/head.js.map +1 -0
- package/dist/sessions/inflight.d.ts +58 -0
- package/dist/sessions/inflight.d.ts.map +1 -0
- package/dist/sessions/inflight.js +0 -0
- package/dist/sessions/inflight.js.map +1 -0
- package/dist/sessions/lease.d.ts +59 -0
- package/dist/sessions/lease.d.ts.map +1 -0
- package/dist/sessions/lease.js +115 -0
- package/dist/sessions/lease.js.map +1 -0
- package/dist/sessions/leaseStore.d.ts +46 -0
- package/dist/sessions/leaseStore.d.ts.map +1 -0
- package/dist/sessions/leaseStore.js +58 -0
- package/dist/sessions/leaseStore.js.map +1 -0
- package/dist/sessions/timeline.d.ts +134 -0
- package/dist/sessions/timeline.d.ts.map +1 -0
- package/dist/sessions/timeline.js +127 -0
- package/dist/sessions/timeline.js.map +1 -0
- package/dist/sidecar/host.d.ts +241 -5
- package/dist/sidecar/host.d.ts.map +1 -1
- package/dist/sidecar/host.js +630 -5
- package/dist/sidecar/host.js.map +1 -1
- package/dist/sidecar/server.d.ts +124 -2
- package/dist/sidecar/server.d.ts.map +1 -1
- package/dist/sidecar/server.js +620 -9
- package/dist/sidecar/server.js.map +1 -1
- package/dist/sidecar/wsChannel.d.ts +4 -0
- package/dist/sidecar/wsChannel.d.ts.map +1 -0
- package/dist/sidecar/wsChannel.js +62 -0
- package/dist/sidecar/wsChannel.js.map +1 -0
- package/dist/skills.js +2 -2
- package/dist/snapshot/effects.d.ts +69 -0
- package/dist/snapshot/effects.d.ts.map +1 -0
- package/dist/snapshot/effects.js +67 -0
- package/dist/snapshot/effects.js.map +1 -0
- package/dist/snapshot/manifest.d.ts +73 -0
- package/dist/snapshot/manifest.d.ts.map +1 -0
- package/dist/snapshot/manifest.js +141 -0
- package/dist/snapshot/manifest.js.map +1 -0
- package/dist/snapshot/tree.d.ts +62 -0
- package/dist/snapshot/tree.d.ts.map +1 -0
- package/dist/snapshot/tree.js +147 -0
- package/dist/snapshot/tree.js.map +1 -0
- package/dist/tools/builtins.d.ts.map +1 -1
- package/dist/tools/builtins.js +67 -8
- package/dist/tools/builtins.js.map +1 -1
- package/dist/tools/callAgent.d.ts +16 -0
- package/dist/tools/callAgent.d.ts.map +1 -0
- package/dist/tools/callAgent.js +53 -0
- package/dist/tools/callAgent.js.map +1 -0
- package/dist/tools/files.d.ts +10 -0
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +159 -8
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/http.js +1 -1
- package/dist/tools/namespaces.d.ts +1 -1
- package/dist/tools/namespaces.d.ts.map +1 -1
- package/dist/tools/namespaces.js +40 -2
- package/dist/tools/namespaces.js.map +1 -1
- package/dist/tools/procs.d.ts +18 -0
- package/dist/tools/procs.d.ts.map +1 -0
- package/dist/tools/procs.js +281 -0
- package/dist/tools/procs.js.map +1 -0
- package/dist/tools/todo.d.ts.map +1 -1
- package/dist/tools/todo.js +12 -0
- package/dist/tools/todo.js.map +1 -1
- package/package.json +18 -7
package/dist/core/loop.js
CHANGED
|
@@ -1,19 +1,31 @@
|
|
|
1
|
-
import { streamCompletion } from '../providers/gateway';
|
|
2
|
-
import { resolveRecovery, classifyStreamError, classifyToolError, shouldRetryStream, backoffDelay, toolRecoveryHint, ToolFailureTracker, abortableSleep, } from './recovery';
|
|
3
|
-
import { alog } from '../log';
|
|
4
|
-
import { initialState, evaluateTurnStart, evaluateToolCall, evaluateCompletion } from '../guardrail/guardrail';
|
|
5
|
-
import { checkFeature } from '../guards';
|
|
6
|
-
import { STANDARD_POLICY } from '../guardrail/builtins';
|
|
7
|
-
import { toolAddress } from '../tools/namespaces';
|
|
8
|
-
import { effectiveThreshold, formatOffloadRef } from '../compression';
|
|
9
|
-
import { fillToolsMarker } from '../prompts/toolsMarker';
|
|
1
|
+
import { streamCompletion } from '../providers/gateway.js';
|
|
2
|
+
import { resolveRecovery, classifyStreamError, classifyToolError, shouldRetryStream, backoffDelay, toolRecoveryHint, ToolFailureTracker, abortableSleep, } from './recovery.js';
|
|
3
|
+
import { alog } from '../log.js';
|
|
4
|
+
import { initialState, evaluateTurnStart, evaluateToolCall, evaluateCompletion } from '../guardrail/guardrail.js';
|
|
5
|
+
import { checkFeature } from '../guards.js';
|
|
6
|
+
import { STANDARD_POLICY } from '../guardrail/builtins.js';
|
|
7
|
+
import { toolAddress } from '../tools/namespaces.js';
|
|
8
|
+
import { effectiveThreshold, formatOffloadRef, isOffloadPointer } from '../compression.js';
|
|
9
|
+
import { fillToolsMarker } from '../prompts/toolsMarker.js';
|
|
10
10
|
export async function runAgent(args) {
|
|
11
11
|
const { client, system, tools, toolCtx } = args;
|
|
12
12
|
const policy = args.policy ?? STANDARD_POLICY;
|
|
13
13
|
const permission = args.permission;
|
|
14
14
|
const compression = args.compression;
|
|
15
15
|
const ctxWindow = compression?.contextWindow;
|
|
16
|
+
const compressionStrategy = compression?.strategy ?? 'eager';
|
|
16
17
|
let fill = 0; // window fill ratio; drives the adaptive offload threshold
|
|
18
|
+
// 'deferred' strategy only: results offloaded THIS turn, awaiting the ONE
|
|
19
|
+
// streamCompletion call that sends them in full (the turn right after
|
|
20
|
+
// they're produced — the model that asked for the result reads it). As soon
|
|
21
|
+
// as that call succeeds, they're rewritten in place to the compact pointer —
|
|
22
|
+
// immediately, not on some later "next call": the model already saw the full
|
|
23
|
+
// text in the call that just completed, so there is nothing left to wait
|
|
24
|
+
// for. This is what makes the returned/persisted `messages` show the pointer
|
|
25
|
+
// even for a run that ends right after (tool call, then answer, done — the
|
|
26
|
+
// common case), not only when a further call happens to follow within the
|
|
27
|
+
// same run.
|
|
28
|
+
const deferredOffloads = [];
|
|
17
29
|
const maxTurns = policy.maxTurns ?? args.maxTurns ?? 8;
|
|
18
30
|
const signal = args.signal ?? new AbortController().signal;
|
|
19
31
|
const emit = (e) => args.onEvent?.(e);
|
|
@@ -31,6 +43,19 @@ export async function runAgent(args) {
|
|
|
31
43
|
function: { name: t.name, description: t.description, parameters: t.parameters },
|
|
32
44
|
}));
|
|
33
45
|
const toolByName = new Map(tools.map((t) => [t.name, t]));
|
|
46
|
+
// 'deferred' strategy only, and CRITICAL to the design: compact the INCOMING
|
|
47
|
+
// history too, not just what this run produces. Without this, a result that
|
|
48
|
+
// was sent full and never got a "subsequent call" WITHIN the run that
|
|
49
|
+
// produced it (the common case — one tool call, one answer, done) stays full
|
|
50
|
+
// forever: the next conversation turn is a SEPARATE runAgent() invocation
|
|
51
|
+
// that starts from an empty compaction table and never rescans its input.
|
|
52
|
+
// Doing this at the very START of the run — before the first model call —
|
|
53
|
+
// means the one prefix-cache miss this rewrite costs lands on THIS run's
|
|
54
|
+
// first call, the cheapest place for it (a fresh prefix on a call about to
|
|
55
|
+
// happen anyway, rather than an extra rewrite mid-run).
|
|
56
|
+
if (compressionStrategy === 'deferred' && compression && compression.mode !== 'off' && toolCtx.recall) {
|
|
57
|
+
await compactIncomingOffloads(messages, toolByName, compression, toolCtx.recall, emit);
|
|
58
|
+
}
|
|
34
59
|
const usage = { promptTokens: 0, completionTokens: 0 };
|
|
35
60
|
let text = '';
|
|
36
61
|
let stopReason = 'stop';
|
|
@@ -67,6 +92,7 @@ export async function runAgent(args) {
|
|
|
67
92
|
tools: toolDefs.length ? toolDefs : undefined,
|
|
68
93
|
tool_choice: toolDefs.length ? 'auto' : undefined,
|
|
69
94
|
max_completion_tokens: args.maxCompletionTokens,
|
|
95
|
+
temperature: args.temperature,
|
|
70
96
|
}, signal, (delta) => emit({ type: 'assistant-delta', delta }));
|
|
71
97
|
if (sAttempt > 0)
|
|
72
98
|
emit({ type: 'heal', record: { site: 'stream', kind: 'transient', strategy: 'retry-backoff', attempt: sAttempt, outcome: 'recovered', error: lastStreamErr } });
|
|
@@ -107,6 +133,27 @@ export async function runAgent(args) {
|
|
|
107
133
|
stopReason = 'error';
|
|
108
134
|
break;
|
|
109
135
|
} // type-narrowing; unreachable
|
|
136
|
+
// Deferred compression: the call that just succeeded included every
|
|
137
|
+
// pending offloaded entry in FULL — that was their one required full send
|
|
138
|
+
// (the turn right after they were produced). Compact them to the pointer
|
|
139
|
+
// NOW, in place, and forget them: there is no "wait for a subsequent call"
|
|
140
|
+
// — the model already read the full text in the call that just completed,
|
|
141
|
+
// so the returned/persisted `messages` should show the pointer from this
|
|
142
|
+
// point on, even if the run ends immediately after (tool call, then
|
|
143
|
+
// answer, done — the common case, not a corner one). This also means a
|
|
144
|
+
// wholly separate runAgent() call over this same `messages` array (the
|
|
145
|
+
// CLI session persists `result.messages` verbatim and replays it on the
|
|
146
|
+
// next conversation turn/resume) inherits the compaction with no special
|
|
147
|
+
// knowledge of offload — and compactIncomingOffloads() above additionally
|
|
148
|
+
// catches any entry that predates THIS run's history for the same reason.
|
|
149
|
+
if (compressionStrategy === 'deferred' && deferredOffloads.length) {
|
|
150
|
+
for (const o of deferredOffloads) {
|
|
151
|
+
const orig = messages[o.index];
|
|
152
|
+
if (orig.role === 'tool')
|
|
153
|
+
messages[o.index] = { ...orig, content: formatOffloadRef(o.ref) };
|
|
154
|
+
}
|
|
155
|
+
deferredOffloads.length = 0;
|
|
156
|
+
}
|
|
110
157
|
usage.promptTokens += streamed.usage.promptTokens;
|
|
111
158
|
usage.completionTokens += streamed.usage.completionTokens;
|
|
112
159
|
if (ctxWindow && ctxWindow > 0 && streamed.usage.promptTokens) {
|
|
@@ -194,16 +241,29 @@ export async function runAgent(args) {
|
|
|
194
241
|
const decision = await permission.check({ name: tool.name, address, mutates: tool.mutates, permission: tool.permission }, parsed);
|
|
195
242
|
emit({ type: 'permission', tool: tool.name, decision });
|
|
196
243
|
if (decision === 'deny') {
|
|
197
|
-
|
|
244
|
+
const denialMsg = args.describePermissionDenial?.(tool.name)
|
|
245
|
+
?? 'Permission denied by the user — the action was not performed.';
|
|
246
|
+
messages.push({ role: 'tool', tool_call_id: call.id, content: denialMsg });
|
|
198
247
|
emit({ type: 'tool-result', id: call.id, name: tool.name, result: 'permission denied', isError: true });
|
|
199
248
|
continue;
|
|
200
249
|
}
|
|
201
250
|
}
|
|
202
251
|
const startedAt = Date.now();
|
|
252
|
+
// Live output port for this call: emits tool-delta while the tool runs.
|
|
253
|
+
// Closed the instant tool.run settles (success or throw) so a process that
|
|
254
|
+
// outlives its tool call can't emit a stray delta after tool-result — an
|
|
255
|
+
// out-of-order delta would corrupt any consumer reducing the event stream.
|
|
256
|
+
let callSettled = false;
|
|
257
|
+
const stream = (text) => {
|
|
258
|
+
if (callSettled)
|
|
259
|
+
return;
|
|
260
|
+
emit({ type: 'tool-delta', id: call.id, name: call.name, delta: text });
|
|
261
|
+
};
|
|
203
262
|
try {
|
|
204
263
|
// Per-call context: callId lets a tool correlate with UI state keyed by
|
|
205
264
|
// tool_call id (propose_edit blocks on its review).
|
|
206
|
-
const result = await tool.run(parsed, { ...toolCtx, callId: call.id });
|
|
265
|
+
const result = await tool.run(parsed, { ...toolCtx, callId: call.id, stream });
|
|
266
|
+
callSettled = true;
|
|
207
267
|
const durationMs = Date.now() - startedAt;
|
|
208
268
|
gstate.toolCalls++;
|
|
209
269
|
gstate.calledTools.add(tool.name);
|
|
@@ -216,8 +276,12 @@ export async function runAgent(args) {
|
|
|
216
276
|
emit({ type: 'heal', record: { site: 'tool', tool: tool.name, kind: recovered.kind, strategy: 'steer', attempt: recovered.count, outcome: 'recovered', error: '' } });
|
|
217
277
|
}
|
|
218
278
|
// Context compression (rung-1): offload a large, offloadable output to the
|
|
219
|
-
// RecallStore
|
|
220
|
-
//
|
|
279
|
+
// RecallStore. 'eager' (default) replaces it with the compact reference
|
|
280
|
+
// right here, before the model ever sees the full text — append-only, so
|
|
281
|
+
// the OpenAI prefix cache stays valid. 'deferred' still records it, but
|
|
282
|
+
// pushes the FULL result now; it is compacted in place as soon as the
|
|
283
|
+
// model's one required full-send call completes (see the deferredOffloads
|
|
284
|
+
// pass below, after the call succeeds).
|
|
221
285
|
// Offload is an optimization, never a failure: if recording fails (e.g. a
|
|
222
286
|
// read-only workspace), fall back to the full inline result rather than
|
|
223
287
|
// discarding an otherwise-successful tool call.
|
|
@@ -226,8 +290,13 @@ export async function runAgent(args) {
|
|
|
226
290
|
if (result.length > effectiveThreshold(compression.mode, fill)) {
|
|
227
291
|
try {
|
|
228
292
|
const ref = await toolCtx.recall.record(tool.name, result);
|
|
229
|
-
out = formatOffloadRef(ref);
|
|
230
293
|
emit({ type: 'offload', id: ref.id, name: tool.name, bytes: ref.bytes });
|
|
294
|
+
if (compressionStrategy === 'deferred') {
|
|
295
|
+
deferredOffloads.push({ index: messages.length, ref });
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
out = formatOffloadRef(ref);
|
|
299
|
+
}
|
|
231
300
|
}
|
|
232
301
|
catch {
|
|
233
302
|
out = result;
|
|
@@ -238,6 +307,7 @@ export async function runAgent(args) {
|
|
|
238
307
|
emit({ type: 'tool-result', id: call.id, name: call.name, result: out, durationMs });
|
|
239
308
|
}
|
|
240
309
|
catch (e) {
|
|
310
|
+
callSettled = true;
|
|
241
311
|
// Self-heal a failed tool call: classify it, count repeated same-kind
|
|
242
312
|
// failures, and feed back a DIRECTED hint (re-read the schema / try an
|
|
243
313
|
// alternative / stop hammering this tool) instead of a bare error — so the
|
|
@@ -273,6 +343,60 @@ export async function runAgent(args) {
|
|
|
273
343
|
emit({ type: 'done', reason: stopReason });
|
|
274
344
|
return { messages, text, usage, stopReason };
|
|
275
345
|
}
|
|
346
|
+
/** 'deferred' strategy: compact any ALREADY-oversized tool result already
|
|
347
|
+
* sitting in the incoming history — i.e. produced by an earlier `runAgent()`
|
|
348
|
+
* call (a prior conversation turn, a resumed session) rather than this one.
|
|
349
|
+
* Mutates `messages` in place, using fill=0 (no usage feedback exists yet at
|
|
350
|
+
* the start of a run) so this reuses the exact same effectiveThreshold ramp
|
|
351
|
+
* the in-run offload path uses.
|
|
352
|
+
*
|
|
353
|
+
* Conservative by design, matching the report's stated limits:
|
|
354
|
+
* - Idempotent: `isOffloadPointer` recognizes an already-compacted message and
|
|
355
|
+
* skips it, so re-running this on the same history never re-records a blob
|
|
356
|
+
* or double-wraps a pointer.
|
|
357
|
+
* - A tool result whose producing tool cannot be identified (its tool_call_id
|
|
358
|
+
* has no matching assistant `tool_calls` entry earlier in this SAME history —
|
|
359
|
+
* should not happen for a well-formed conversation, but a truncated/edited
|
|
360
|
+
* history is possible) is left untouched rather than guessed at.
|
|
361
|
+
* - A tool result whose producing tool IS identified by name, but that name is
|
|
362
|
+
* not in THIS run's `tools` list (so its `noOffload` flag can't be read),
|
|
363
|
+
* is also left untouched — offloading it could violate a `noOffload`
|
|
364
|
+
* contract this pass has no way to check. */
|
|
365
|
+
async function compactIncomingOffloads(messages, toolByName, compression, recall, emit) {
|
|
366
|
+
// tool_call_id -> producing tool name, from every assistant tool_calls entry
|
|
367
|
+
// in this history. A tool message always follows the assistant call that
|
|
368
|
+
// produced it, so scanning once up front covers every tool message below.
|
|
369
|
+
const nameForCallId = new Map();
|
|
370
|
+
for (const m of messages) {
|
|
371
|
+
if (m.role === 'assistant' && m.tool_calls) {
|
|
372
|
+
for (const c of m.tool_calls)
|
|
373
|
+
nameForCallId.set(c.id, c.function.name);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
for (let i = 0; i < messages.length; i++) {
|
|
377
|
+
const m = messages[i];
|
|
378
|
+
if (m.role !== 'tool' || typeof m.content !== 'string')
|
|
379
|
+
continue;
|
|
380
|
+
if (isOffloadPointer(m.content))
|
|
381
|
+
continue; // already compacted — idempotent
|
|
382
|
+
const toolName = nameForCallId.get(m.tool_call_id);
|
|
383
|
+
if (!toolName)
|
|
384
|
+
continue; // can't identify the producing tool — conservative
|
|
385
|
+
const tool = toolByName.get(toolName);
|
|
386
|
+
if (!tool || tool.noOffload)
|
|
387
|
+
continue; // unknown to this run, or explicitly exempt
|
|
388
|
+
if (m.content.length <= effectiveThreshold(compression.mode, 0))
|
|
389
|
+
continue;
|
|
390
|
+
try {
|
|
391
|
+
const ref = await recall.record(toolName, m.content);
|
|
392
|
+
messages[i] = { ...m, content: formatOffloadRef(ref) };
|
|
393
|
+
emit({ type: 'offload', id: ref.id, name: toolName, bytes: ref.bytes });
|
|
394
|
+
}
|
|
395
|
+
catch {
|
|
396
|
+
// Non-fatal, same as the in-run offload path: leave the full result inline.
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
276
400
|
/** Ensure every tool_call in the final assistant message has a following tool
|
|
277
401
|
* result — appending a synthetic one for any the run stopped before answering —
|
|
278
402
|
* so the returned messages stay a valid conversation prefix. */
|
package/dist/core/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../core/loop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../core/loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type OpenAI from 'openai';
|
|
2
|
+
import type { AgentTool, ToolContext, Policy, CompressionConfig, NodeEvent } from '@corenel/protocol';
|
|
3
|
+
import type { PermissionService } from '../guardrail/permission-service';
|
|
4
|
+
/** How deep delegation may nest (spawn -> spawn -> spawn -> depth cap). */
|
|
5
|
+
export declare const SUB_MAX_DEPTH = 2;
|
|
6
|
+
/** Total spawns allowed across one run, at any depth. */
|
|
7
|
+
export declare const SUB_MAX_COUNT = 8;
|
|
8
|
+
/** Meta describing a spawned child, handed to `onNodeEvent` alongside its raw
|
|
9
|
+
* event so a host can tag/forward it however its own UI needs (see
|
|
10
|
+
* tools-web/workerHandler.ts's DAG-canvas tagging). */
|
|
11
|
+
export interface SpawnEventMeta {
|
|
12
|
+
/** The depth the child runs AT (the spawning context's depth + 1). */
|
|
13
|
+
depth: number;
|
|
14
|
+
/** The spawning node's id — the parent→child edge for a DAG canvas. */
|
|
15
|
+
parentNodeId: string;
|
|
16
|
+
/** This child's own node id. */
|
|
17
|
+
childId: string;
|
|
18
|
+
/** The child's task, truncated to a short label (falls back to `childId`). */
|
|
19
|
+
label: string;
|
|
20
|
+
}
|
|
21
|
+
export interface SpawnDeps {
|
|
22
|
+
depth: number;
|
|
23
|
+
/** Shared per-run spawn counter — the SAME object instance flows into every
|
|
24
|
+
* nested spawn, so it counts across the whole run, not per branch. */
|
|
25
|
+
counter: {
|
|
26
|
+
n: number;
|
|
27
|
+
};
|
|
28
|
+
parentSignal: AbortSignal;
|
|
29
|
+
/** The full tool set a spawned child may draw from (before its own request
|
|
30
|
+
* narrows it — see dag/executeNode.ts's `resolveTools`). */
|
|
31
|
+
tools: AgentTool[];
|
|
32
|
+
/** Everything the child's ToolContext needs except `signal` and `spawn`,
|
|
33
|
+
* which this module fills in per child. */
|
|
34
|
+
toolCtxBase: Omit<ToolContext, 'signal' | 'spawn'>;
|
|
35
|
+
client: OpenAI;
|
|
36
|
+
defaultModel: string;
|
|
37
|
+
policy?: Policy;
|
|
38
|
+
permission?: PermissionService;
|
|
39
|
+
compression?: CompressionConfig;
|
|
40
|
+
/** The spawning node's id — `ROOT_NODE_ID` at depth 0, the parent sub-agent's
|
|
41
|
+
* id when nested. Drives the parent->child edge a host may want to draw. */
|
|
42
|
+
nodeId: string;
|
|
43
|
+
/** Forwarded every event a spawned node emits (node-start/-event/-done/-error).
|
|
44
|
+
* Absent hosts (the CLI, today) simply don't observe sub-agent progress. */
|
|
45
|
+
onNodeEvent?: (event: NodeEvent, meta: SpawnEventMeta) => void;
|
|
46
|
+
/** Override the depth/count caps (tests only — production hosts use the
|
|
47
|
+
* defaults above so the guard can't drift between them). */
|
|
48
|
+
maxDepth?: number;
|
|
49
|
+
maxCount?: number;
|
|
50
|
+
}
|
|
51
|
+
/** Build a `ctx.spawn` bound to these deps. Recurses to build the CHILD's own
|
|
52
|
+
* `spawn` at `depth + 1`, `undefined` once `maxDepth` is reached. */
|
|
53
|
+
export declare function makeSpawn(deps: SpawnDeps): NonNullable<ToolContext['spawn']>;
|
|
54
|
+
//# sourceMappingURL=spawn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../core/spawn.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGzE,2EAA2E;AAC3E,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,yDAAyD;AACzD,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;uDAEuD;AACvD,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd;0EACsE;IACtE,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,YAAY,EAAE,WAAW,CAAC;IAC1B;gEAC4D;IAC5D,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB;+CAC2C;IAC3C,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;gFAC4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf;gFAC4E;IAC5E,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/D;gEAC4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;qEACqE;AACrE,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAiD5E"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { runNode } from '../dag/executeNode.js';
|
|
2
|
+
/** How deep delegation may nest (spawn -> spawn -> spawn -> depth cap). */
|
|
3
|
+
export const SUB_MAX_DEPTH = 2;
|
|
4
|
+
/** Total spawns allowed across one run, at any depth. */
|
|
5
|
+
export const SUB_MAX_COUNT = 8;
|
|
6
|
+
/** Build a `ctx.spawn` bound to these deps. Recurses to build the CHILD's own
|
|
7
|
+
* `spawn` at `depth + 1`, `undefined` once `maxDepth` is reached. */
|
|
8
|
+
export function makeSpawn(deps) {
|
|
9
|
+
const maxDepth = deps.maxDepth ?? SUB_MAX_DEPTH;
|
|
10
|
+
const maxCount = deps.maxCount ?? SUB_MAX_COUNT;
|
|
11
|
+
return async (req) => {
|
|
12
|
+
if (deps.depth >= maxDepth)
|
|
13
|
+
throw new Error(`Sub-agent depth limit (${maxDepth}) reached.`);
|
|
14
|
+
if (deps.counter.n >= maxCount)
|
|
15
|
+
throw new Error(`Sub-agent limit (${maxCount}) reached for this run.`);
|
|
16
|
+
deps.counter.n++;
|
|
17
|
+
const seq = deps.counter.n;
|
|
18
|
+
const childId = `sub-${seq}`;
|
|
19
|
+
// Child abort is linked to the parent: aborting the parent run aborts every
|
|
20
|
+
// in-flight sub-agent beneath it.
|
|
21
|
+
const childAc = new AbortController();
|
|
22
|
+
const onAbort = () => childAc.abort();
|
|
23
|
+
deps.parentSignal.addEventListener('abort', onAbort);
|
|
24
|
+
const childDepth = deps.depth + 1;
|
|
25
|
+
const childCtx = {
|
|
26
|
+
...deps.toolCtxBase,
|
|
27
|
+
signal: childAc.signal,
|
|
28
|
+
// Each spawned sub-agent gets its OWN per-run scratch — spawns run
|
|
29
|
+
// concurrently (Promise.all), so they must not share the parent's (or
|
|
30
|
+
// each other's) runState.
|
|
31
|
+
runState: {},
|
|
32
|
+
// Nested spawns parent onto THIS child (its id), keeping the same run.
|
|
33
|
+
spawn: childDepth < maxDepth
|
|
34
|
+
? makeSpawn({ ...deps, depth: childDepth, parentSignal: childAc.signal, nodeId: childId })
|
|
35
|
+
: undefined,
|
|
36
|
+
};
|
|
37
|
+
// Label the node by its task (a host canvas falls back to the id otherwise).
|
|
38
|
+
const label = req.task.trim().slice(0, 48) || childId;
|
|
39
|
+
try {
|
|
40
|
+
const node = {
|
|
41
|
+
id: childId, type: 'agent',
|
|
42
|
+
task: req.task, system: req.system, model: req.model, tools: req.tools, maxTurns: req.maxTurns,
|
|
43
|
+
};
|
|
44
|
+
const out = await runNode({
|
|
45
|
+
node, inputs: {}, signal: childAc.signal,
|
|
46
|
+
onEvent: (event) => deps.onNodeEvent?.(event, { depth: childDepth, parentNodeId: deps.nodeId, childId, label }),
|
|
47
|
+
}, {
|
|
48
|
+
client: deps.client, defaultModel: req.model || deps.defaultModel, tools: deps.tools, toolCtx: childCtx,
|
|
49
|
+
policy: deps.policy, permission: deps.permission, compression: deps.compression,
|
|
50
|
+
});
|
|
51
|
+
return { text: out.text, usage: out.usage, stopReason: out.stopReason, turns: out.turns };
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
deps.parentSignal.removeEventListener('abort', onAbort);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=spawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../core/spawn.ts"],"names":[],"mappings":"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"}
|
package/dist/dag/executeNode.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { runAgent } from '../core/loop';
|
|
2
|
-
import { compilePrompt } from '../promptCompiler';
|
|
1
|
+
import { runAgent } from '../core/loop.js';
|
|
2
|
+
import { compilePrompt } from '../promptCompiler.js';
|
|
3
3
|
/** Read-biased default tool set for a node with no explicit allowlist (§4). No
|
|
4
4
|
* mutating tools, so a delegated node never writes unless its allowlist opts in. */
|
|
5
5
|
export const READ_BIASED_TOOLS = [
|
package/dist/fileSchema.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* the base system prompt. To add a format, drop a `system-<ext>.md` in the systems
|
|
13
13
|
* folder; no code change here is required for a new single-extension type.
|
|
14
14
|
*/
|
|
15
|
-
import { SYSTEM_BY_EXT } from './prompts/library';
|
|
15
|
+
import { SYSTEM_BY_EXT } from './prompts/library/index.js';
|
|
16
16
|
/** Whether a Markdown document opens with a YAML frontmatter fence — only then is
|
|
17
17
|
* a .md file a Prompd prompt (a plain note isn't). */
|
|
18
18
|
const hasFrontmatter = (src) => /^\s*---\r?\n/.test(src || '');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Guardrail evaluator — the hard gates. Pure functions over a small mutable
|
|
2
2
|
* state object the loop threads through a run. Adapted from the Marshal harness
|
|
3
3
|
* (filesystem/cwd/phase rules dropped; this harness has no disk or shell). */
|
|
4
|
-
import { matchesAnyGlob } from './glob';
|
|
4
|
+
import { matchesAnyGlob } from './glob.js';
|
|
5
5
|
/** Match a glob list against a tool's address (if any) and its bare name. */
|
|
6
6
|
function callMatches(call, globs) {
|
|
7
7
|
if (!globs.length)
|
package/dist/guardrail/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/* Policy module barrel. The harness's baked-in governance layer:
|
|
2
2
|
* guardrail (hard gates) + permission service (per-tool oversight) + built-ins. */
|
|
3
3
|
export * from '@corenel/protocol';
|
|
4
|
-
export { matchesAnyGlob, globToRegex } from './glob';
|
|
5
|
-
export { initialState, evaluateTurnStart, evaluateToolCall, evaluateCompletion, } from './guardrail';
|
|
6
|
-
export { PermissionService, mostRestrictive, } from './permission-service';
|
|
7
|
-
export { STANDARD_POLICY, READ_ONLY_POLICY, AUTONOMOUS_POLICY, BUILTIN_POLICIES } from './builtins';
|
|
8
|
-
export { validatePolicy } from './validate';
|
|
9
|
-
export { policyToYaml, policyFromYaml } from './serialize';
|
|
10
|
-
export { listPolicies, getPolicy, isBuiltinPolicy, saveCustomPolicy, deleteCustomPolicy, getSelectedPolicyName, setSelectedPolicyName, resolveSelectedPolicy, } from './store';
|
|
4
|
+
export { matchesAnyGlob, globToRegex } from './glob.js';
|
|
5
|
+
export { initialState, evaluateTurnStart, evaluateToolCall, evaluateCompletion, } from './guardrail.js';
|
|
6
|
+
export { PermissionService, mostRestrictive, } from './permission-service.js';
|
|
7
|
+
export { STANDARD_POLICY, READ_ONLY_POLICY, AUTONOMOUS_POLICY, BUILTIN_POLICIES } from './builtins.js';
|
|
8
|
+
export { validatePolicy } from './validate.js';
|
|
9
|
+
export { policyToYaml, policyFromYaml } from './serialize.js';
|
|
10
|
+
export { listPolicies, getPolicy, isBuiltinPolicy, saveCustomPolicy, deleteCustomPolicy, getSelectedPolicyName, setSelectedPolicyName, resolveSelectedPolicy, } from './store.js';
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* allow/deny decision (asking the user when the level is "ask"). Adapted from the
|
|
5
5
|
* Marshal harness; the tool descriptor here is the browser harness's AgentTool
|
|
6
6
|
* shape ({ name, mutates?, permission? }) rather than the Node Tool. */
|
|
7
|
-
import { matchesAnyGlob } from './glob';
|
|
7
|
+
import { matchesAnyGlob } from './glob.js';
|
|
8
8
|
const LEVEL_RANK = { allow: 0, ask: 1, deny: 2 };
|
|
9
9
|
/** Match a glob against a tool's address (if any) and its bare name. */
|
|
10
10
|
function subjectMatches(tool, glob) {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Uses the `yaml` package (pure JS, browser-safe) that @prompd/core already
|
|
6
6
|
* depends on — no Node/filesystem surface, consistent with this in-browser harness. */
|
|
7
7
|
import { parse, stringify } from 'yaml';
|
|
8
|
-
import { validatePolicy } from './validate';
|
|
8
|
+
import { validatePolicy } from './validate.js';
|
|
9
9
|
/** Serialize a Policy to YAML with a stable, human-friendly key order. Undefined
|
|
10
10
|
* fields are dropped so the document only shows what the policy actually sets. */
|
|
11
11
|
export function policyToYaml(p) {
|
package/dist/guardrail/store.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BUILTIN_POLICIES, STANDARD_POLICY } from './builtins';
|
|
2
|
-
import { validatePolicy } from './validate';
|
|
1
|
+
import { BUILTIN_POLICIES, STANDARD_POLICY } from './builtins.js';
|
|
2
|
+
import { validatePolicy } from './validate.js';
|
|
3
3
|
const LS_CUSTOM = 'prompd.web.agent.policies.v1';
|
|
4
4
|
const LS_SELECTED = 'prompd.web.agent.policy';
|
|
5
5
|
/** The stored map verbatim (null-prototype so policy names like "__proto__"
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/** Package kinds the registry serves. A plain string union rather than an import
|
|
2
|
+
* from @prompd/core, to keep this module free of that dependency; unknown kinds
|
|
3
|
+
* off the wire are preserved rather than rejected (see parseLock). */
|
|
4
|
+
export type LockedType = 'package' | 'workflow' | 'skill' | 'node-template' | (string & {});
|
|
5
|
+
export interface LockedPackage {
|
|
6
|
+
/** Full scoped name, e.g. "@prompd/core". */
|
|
7
|
+
name: string;
|
|
8
|
+
/** EXACT resolved version. A range here would defeat the point. */
|
|
9
|
+
version: string;
|
|
10
|
+
type: LockedType;
|
|
11
|
+
/** Entry-relative paths the install wrote. Optional: node-templates write none,
|
|
12
|
+
* and an older lockfile may predate the field. Sorted when present, so the
|
|
13
|
+
* serialization stays canonical. */
|
|
14
|
+
files?: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface Lockfile {
|
|
17
|
+
lockfileVersion: 1;
|
|
18
|
+
packages: LockedPackage[];
|
|
19
|
+
}
|
|
20
|
+
export declare const LOCKFILE_VERSION: 1;
|
|
21
|
+
/** Conventional location, alongside the manifest it pins. */
|
|
22
|
+
export declare const LOCKFILE_PATH = ".prompd/prompd-lock.json";
|
|
23
|
+
export declare function emptyLock(): Lockfile;
|
|
24
|
+
/**
|
|
25
|
+
* Add or replace entries, returning a NEW lockfile.
|
|
26
|
+
*
|
|
27
|
+
* Replacement is by name+version, so re-installing the same version updates its
|
|
28
|
+
* file list in place rather than duplicating it, while a genuinely new version
|
|
29
|
+
* is added alongside — matching how core installs to a per-version directory.
|
|
30
|
+
*/
|
|
31
|
+
export declare function withPackages(lock: Lockfile, added: readonly LockedPackage[]): Lockfile;
|
|
32
|
+
/** Drop every version of a package by name — the uninstall counterpart. */
|
|
33
|
+
export declare function withoutPackage(lock: Lockfile, name: string): Lockfile;
|
|
34
|
+
/**
|
|
35
|
+
* Canonical text form. Key order is fixed by construction (the object literals in
|
|
36
|
+
* `normalize`), packages are sorted, and the file ends with a newline — so the
|
|
37
|
+
* same install set always produces the same bytes.
|
|
38
|
+
*/
|
|
39
|
+
export declare function serializeLock(lock: Lockfile): string;
|
|
40
|
+
/**
|
|
41
|
+
* Parse a lockfile, or null when the text is not one.
|
|
42
|
+
*
|
|
43
|
+
* Tolerant of unknown package TYPES (the registry may serve a kind this build
|
|
44
|
+
* predates, and dropping it would silently un-pin a dependency) but strict about
|
|
45
|
+
* name and version, since an entry missing either cannot pin anything and is
|
|
46
|
+
* worse than absent. A future lockfileVersion returns null rather than being
|
|
47
|
+
* misread by rules that no longer apply.
|
|
48
|
+
*/
|
|
49
|
+
export declare function parseLock(text: string): Lockfile | null;
|
|
50
|
+
export interface LockDiff {
|
|
51
|
+
/** In `next` but not `prev`. */
|
|
52
|
+
added: LockedPackage[];
|
|
53
|
+
/** In `prev` but not `next`. */
|
|
54
|
+
removed: LockedPackage[];
|
|
55
|
+
}
|
|
56
|
+
/** What changed between two lockfiles, by name+version. */
|
|
57
|
+
export declare function diffLock(prev: Lockfile, next: Lockfile): LockDiff;
|
|
58
|
+
/**
|
|
59
|
+
* Is everything the lockfile pins present in `installed`?
|
|
60
|
+
*
|
|
61
|
+
* The reproducibility check, and it is deliberately one-directional: EXTRA
|
|
62
|
+
* packages do not fail it. A workspace may legitimately hold something installed
|
|
63
|
+
* outside the lock (a local experiment, a global install), and failing on that
|
|
64
|
+
* would make the check useless in practice. What must never pass is a MISSING or
|
|
65
|
+
* differently-versioned pin.
|
|
66
|
+
*/
|
|
67
|
+
export declare function isSatisfiedBy(lock: Lockfile, installed: readonly {
|
|
68
|
+
name: string;
|
|
69
|
+
version: string;
|
|
70
|
+
}[]): boolean;
|
|
71
|
+
/** The pins absent from `installed` — what an `install --frozen` would fetch. */
|
|
72
|
+
export declare function missingFrom(lock: Lockfile, installed: readonly {
|
|
73
|
+
name: string;
|
|
74
|
+
version: string;
|
|
75
|
+
}[]): LockedPackage[];
|
|
76
|
+
/** `name@version` refs for the pins, in install order — what a caller feeds back
|
|
77
|
+
* to the installer to reproduce the set. */
|
|
78
|
+
export declare function lockRefs(lock: Lockfile): string[];
|
|
79
|
+
//# sourceMappingURL=lockfile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../install/lockfile.ts"],"names":[],"mappings":"AAoBA;;sEAEsE;AACtE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,eAAe,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE5F,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB;;wCAEoC;IACpC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,eAAe,EAAE,CAAC,CAAC;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,EAAG,CAAU,CAAC;AAC3C,6DAA6D;AAC7D,eAAO,MAAM,aAAa,6BAA6B,CAAC;AAExD,wBAAgB,SAAS,IAAI,QAAQ,CAEpC;AAwBD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,QAAQ,CAKtF;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAKrE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAMpD;AAMD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAqBvD;AAED,MAAM,WAAW,QAAQ;IACvB,gCAAgC;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,gCAAgC;IAChC,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,2DAA2D;AAC3D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAOjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,OAAO,CAG9G;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,aAAa,EAAE,CAGpH;AAED;4CAC4C;AAC5C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAEjD"}
|