@corenel/harness 0.1.0 → 0.2.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/conversation.d.ts +0 -11
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +1 -24
- package/dist/conversation.js.map +1 -1
- package/dist/core/budget.d.ts +40 -0
- package/dist/core/budget.d.ts.map +1 -0
- package/dist/core/budget.js +62 -0
- package/dist/core/budget.js.map +1 -0
- package/dist/core/loop.d.ts +9 -0
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +88 -20
- package/dist/core/loop.js.map +1 -1
- package/dist/core/pricing.d.ts +8 -0
- package/dist/core/pricing.d.ts.map +1 -0
- package/dist/core/pricing.js +12 -0
- package/dist/core/pricing.js.map +1 -0
- package/dist/core/recovery.d.ts +60 -0
- package/dist/core/recovery.d.ts.map +1 -0
- package/dist/core/recovery.js +128 -0
- package/dist/core/recovery.js.map +1 -0
- package/dist/guardrail/builtins.js +6 -6
- package/dist/guardrail/builtins.js.map +1 -1
- package/dist/guardrail/permission-service.js +1 -1
- package/dist/guardrail/permission-service.js.map +1 -1
- package/dist/guardrail/serialize.d.ts.map +1 -1
- package/dist/guardrail/serialize.js +6 -0
- package/dist/guardrail/serialize.js.map +1 -1
- package/dist/guardrail/validate.d.ts.map +1 -1
- package/dist/guardrail/validate.js +13 -0
- package/dist/guardrail/validate.js.map +1 -1
- package/dist/prompts/index.d.ts +6 -0
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +12 -6
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/library/defaults.generated.d.ts.map +1 -1
- package/dist/prompts/library/defaults.generated.js +22 -4
- package/dist/prompts/library/defaults.generated.js.map +1 -1
- package/dist/prompts/toolsMarker.d.ts +13 -0
- package/dist/prompts/toolsMarker.d.ts.map +1 -0
- package/dist/prompts/toolsMarker.js +21 -0
- package/dist/prompts/toolsMarker.js.map +1 -0
- package/dist/providers/gateway.d.ts +16 -1
- package/dist/providers/gateway.d.ts.map +1 -1
- package/dist/providers/gateway.js +30 -4
- package/dist/providers/gateway.js.map +1 -1
- package/dist/services.d.ts +13 -0
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +2 -0
- package/dist/services.js.map +1 -1
- package/dist/sessions/fileRecallStore.d.ts +33 -0
- package/dist/sessions/fileRecallStore.d.ts.map +1 -0
- package/dist/sessions/fileRecallStore.js +112 -0
- package/dist/sessions/fileRecallStore.js.map +1 -0
- package/dist/sessions/fileSessionStore.d.ts +20 -0
- package/dist/sessions/fileSessionStore.d.ts.map +1 -0
- package/dist/sessions/fileSessionStore.js +151 -0
- package/dist/sessions/fileSessionStore.js.map +1 -0
- package/dist/sessions/jsonl.d.ts +23 -0
- package/dist/sessions/jsonl.d.ts.map +1 -0
- package/dist/sessions/jsonl.js +52 -0
- package/dist/sessions/jsonl.js.map +1 -0
- package/dist/sessions/testFs.d.ts +5 -0
- package/dist/sessions/testFs.d.ts.map +1 -0
- package/dist/sessions/testFs.js +85 -0
- package/dist/sessions/testFs.js.map +1 -0
- package/dist/sidecar/host.d.ts +64 -2
- package/dist/sidecar/host.d.ts.map +1 -1
- package/dist/sidecar/host.js +135 -1
- package/dist/sidecar/host.js.map +1 -1
- package/dist/sidecar/server.d.ts +95 -2
- package/dist/sidecar/server.d.ts.map +1 -1
- package/dist/sidecar/server.js +229 -3
- package/dist/sidecar/server.js.map +1 -1
- package/dist/skills.d.ts +8 -3
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +71 -35
- package/dist/skills.js.map +1 -1
- package/dist/tools/builtins.d.ts +1 -0
- package/dist/tools/builtins.d.ts.map +1 -1
- package/dist/tools/builtins.js +89 -3
- package/dist/tools/builtins.js.map +1 -1
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +13 -0
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/http.d.ts.map +1 -1
- package/dist/tools/http.js.map +1 -1
- package/package.json +22 -34
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export function encodeLine(line) {
|
|
2
|
+
return JSON.stringify(line) + '\n';
|
|
3
|
+
}
|
|
4
|
+
/** Fold a SESSION.jsonl text into an AgentSession, or null when no valid meta
|
|
5
|
+
* line exists (empty/foreign file). */
|
|
6
|
+
export function foldSession(text) {
|
|
7
|
+
let meta = null;
|
|
8
|
+
const turns = [];
|
|
9
|
+
let title = '';
|
|
10
|
+
let titleLocked;
|
|
11
|
+
let updatedAt = 0;
|
|
12
|
+
for (const raw of text.split('\n')) {
|
|
13
|
+
const s = raw.trim();
|
|
14
|
+
if (!s)
|
|
15
|
+
continue;
|
|
16
|
+
let line;
|
|
17
|
+
try {
|
|
18
|
+
line = JSON.parse(s);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
if (line.k === 'meta' && !meta && typeof line.id === 'string' && typeof line.createdAt === 'number') {
|
|
24
|
+
meta = line;
|
|
25
|
+
title = typeof line.title === 'string' ? line.title : '';
|
|
26
|
+
updatedAt = Math.max(updatedAt, line.createdAt);
|
|
27
|
+
}
|
|
28
|
+
else if (line.k === 'meta-update' && typeof line.at === 'number') {
|
|
29
|
+
if (typeof line.title === 'string')
|
|
30
|
+
title = line.title;
|
|
31
|
+
if (typeof line.titleLocked === 'boolean')
|
|
32
|
+
titleLocked = line.titleLocked;
|
|
33
|
+
updatedAt = Math.max(updatedAt, line.at);
|
|
34
|
+
}
|
|
35
|
+
else if (line.k === 'turn' && Number.isInteger(line.i) && line.i >= 0 && typeof line.at === 'number') {
|
|
36
|
+
turns[line.i] = line.m;
|
|
37
|
+
updatedAt = Math.max(updatedAt, line.at);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (!meta)
|
|
41
|
+
return null;
|
|
42
|
+
return {
|
|
43
|
+
id: meta.id,
|
|
44
|
+
title,
|
|
45
|
+
createdAt: meta.createdAt,
|
|
46
|
+
updatedAt: updatedAt || meta.createdAt,
|
|
47
|
+
messages: turns.filter((t) => t !== undefined),
|
|
48
|
+
...(meta.surface ? { surface: meta.surface } : {}),
|
|
49
|
+
...(titleLocked !== undefined ? { titleLocked } : {}),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=jsonl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl.js","sourceRoot":"","sources":["../../sessions/jsonl.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,UAAU,CAAC,IAAiB;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACrC,CAAC;AAED;uCACuC;AACvC,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,IAAI,GAA+C,IAAI,CAAC;IAC5D,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,WAAgC,CAAC;IACrC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,IAAI,IAAiB,CAAC;QACtB,IAAI,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAgB,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QAChE,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACpG,IAAI,GAAG,IAAI,CAAC;YACZ,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,KAAK,aAAa,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YACnE,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACvD,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS;gBAAE,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAC1E,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YACvG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YACvB,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK;QACL,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,SAAS,IAAI,IAAI,CAAC,SAAS;QACtC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;QAC9C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testFs.d.ts","sourceRoot":"","sources":["../../sessions/testFs.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,mBAAmB,CAAC;AAGzE,wBAAgB,UAAU,IAAI,WAAW,GAAG;IAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAyEzE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { normalizeFilePath, extOf } from '@corenel/protocol';
|
|
2
|
+
export function makeTestFs() {
|
|
3
|
+
const files = new Map();
|
|
4
|
+
function list(dir) {
|
|
5
|
+
const baseN = dir ? normalizeFilePath(dir) : '';
|
|
6
|
+
const prefix = baseN ? baseN + '/' : '';
|
|
7
|
+
const roots = [];
|
|
8
|
+
const dirNodes = new Map();
|
|
9
|
+
const ensureDir = (dirPath) => {
|
|
10
|
+
if (!dirPath)
|
|
11
|
+
return null;
|
|
12
|
+
const existing = dirNodes.get(dirPath);
|
|
13
|
+
if (existing)
|
|
14
|
+
return existing;
|
|
15
|
+
const parts = dirPath.split('/');
|
|
16
|
+
const node = { name: parts[parts.length - 1], path: dirPath, kind: 'directory', children: [] };
|
|
17
|
+
dirNodes.set(dirPath, node);
|
|
18
|
+
const parent = ensureDir(parts.slice(0, -1).join('/'));
|
|
19
|
+
(parent ? parent.children : roots).push(node);
|
|
20
|
+
return node;
|
|
21
|
+
};
|
|
22
|
+
for (const [path, content] of files) {
|
|
23
|
+
if (prefix && !path.startsWith(prefix))
|
|
24
|
+
continue;
|
|
25
|
+
const parts = path.split('/').filter(Boolean);
|
|
26
|
+
if (!parts.length)
|
|
27
|
+
continue;
|
|
28
|
+
const name = parts[parts.length - 1];
|
|
29
|
+
const parent = parts.length > 1 ? ensureDir(parts.slice(0, -1).join('/')) : null;
|
|
30
|
+
(parent ? parent.children : roots).push({ name, path, kind: 'file', size: content.length, ext: extOf(name) });
|
|
31
|
+
}
|
|
32
|
+
return roots;
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
kind: 'memory',
|
|
36
|
+
label: 'test',
|
|
37
|
+
isLocalDisk: false,
|
|
38
|
+
writable: true,
|
|
39
|
+
files,
|
|
40
|
+
list: async (dir) => list(dir),
|
|
41
|
+
read: async (path) => {
|
|
42
|
+
const v = files.get(normalizeFilePath(path));
|
|
43
|
+
if (v === undefined)
|
|
44
|
+
throw new Error(`not found: ${path}`);
|
|
45
|
+
return v;
|
|
46
|
+
},
|
|
47
|
+
stat: async (path) => {
|
|
48
|
+
const n = normalizeFilePath(path);
|
|
49
|
+
if (files.has(n))
|
|
50
|
+
return { path: n, kind: 'file', size: files.get(n).length, ext: extOf(n) };
|
|
51
|
+
for (const key of files.keys())
|
|
52
|
+
if (key.startsWith(n + '/'))
|
|
53
|
+
return { path: n, kind: 'directory', size: 0 };
|
|
54
|
+
return null;
|
|
55
|
+
},
|
|
56
|
+
write: async (path, content) => {
|
|
57
|
+
files.set(normalizeFilePath(path), content);
|
|
58
|
+
},
|
|
59
|
+
create: async (path, content) => {
|
|
60
|
+
const n = normalizeFilePath(path);
|
|
61
|
+
if (files.has(n))
|
|
62
|
+
throw new Error(`exists: ${path}`);
|
|
63
|
+
files.set(n, content ?? '');
|
|
64
|
+
},
|
|
65
|
+
remove: async (path) => {
|
|
66
|
+
const n = normalizeFilePath(path);
|
|
67
|
+
files.delete(n);
|
|
68
|
+
for (const key of [...files.keys()])
|
|
69
|
+
if (key.startsWith(n + '/'))
|
|
70
|
+
files.delete(key);
|
|
71
|
+
},
|
|
72
|
+
rename: async (from, to) => {
|
|
73
|
+
const f = normalizeFilePath(from);
|
|
74
|
+
const t = normalizeFilePath(to);
|
|
75
|
+
const v = files.get(f);
|
|
76
|
+
if (v !== undefined) {
|
|
77
|
+
files.delete(f);
|
|
78
|
+
files.set(t, v);
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
search: async () => [],
|
|
82
|
+
onChange: () => () => { },
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=testFs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testFs.js","sourceRoot":"","sources":["../../sessions/testFs.ts"],"names":[],"mappings":"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"}
|
package/dist/sidecar/host.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { AgentTool, IMemoryProvider, IKeyValueStore, ISearchProvider, ISessionStore, PermissionRequest, AskQuestion, AskAnswers } from '@corenel/protocol';
|
|
1
|
+
import type { AgentTool, IMemoryProvider, IKeyValueStore, ISearchProvider, ISessionStore, PermissionRequest, AskQuestion, AskAnswers, AgentEvent, PermissionDecision } from '@corenel/protocol';
|
|
2
2
|
import type { FileService } from '@corenel/protocol';
|
|
3
|
-
import { type SidecarChannel } from '@corenel/protocol';
|
|
3
|
+
import { type SidecarChannel, type SidecarInfo } from '@corenel/protocol';
|
|
4
4
|
/** The host's live capabilities a connected sidecar may proxy into. Only the ones
|
|
5
5
|
* provided are reachable; a proxy call to a missing one is rejected. */
|
|
6
6
|
export interface HostProviders {
|
|
@@ -20,6 +20,14 @@ export interface SidecarHostOptions {
|
|
|
20
20
|
/** Pairing token presented to the sidecar (surface B — authenticates the
|
|
21
21
|
* connection; does NOT grant policy authority, which stays with the host). */
|
|
22
22
|
token: string;
|
|
23
|
+
/** The host's dot-dir name (e.g. '.corenel', '.prompd'), sent informationally in
|
|
24
|
+
* `hello` so the sidecar knows it for future workspace-state features. */
|
|
25
|
+
stateDir?: string;
|
|
26
|
+
/** This client's durable identity, sent in `hello` so the sidecar can record
|
|
27
|
+
* who connected (routing Slice-2 sync). Additive: omitting them just means the
|
|
28
|
+
* sidecar records no host entry for this connection. */
|
|
29
|
+
clientId?: string;
|
|
30
|
+
clientName?: string;
|
|
23
31
|
/** The host's live stores. Only the ones provided are reachable; a proxy call
|
|
24
32
|
* to a missing provider is rejected. */
|
|
25
33
|
providers: HostProviders;
|
|
@@ -27,6 +35,25 @@ export interface SidecarHostOptions {
|
|
|
27
35
|
registerTool: (tool: AgentTool) => void;
|
|
28
36
|
/** Remove a proxy tool on disconnect (wire to `unregisterTool`). */
|
|
29
37
|
unregisterTool?: (name: string) => void;
|
|
38
|
+
/** The daemon relayed a permission ask from its attendance registry — surface it
|
|
39
|
+
* to the app so it can prompt the user. */
|
|
40
|
+
onPermissionAsk?: (ask: {
|
|
41
|
+
id: number;
|
|
42
|
+
runId: string;
|
|
43
|
+
agent: string;
|
|
44
|
+
tool: string;
|
|
45
|
+
input: unknown;
|
|
46
|
+
deadline: number;
|
|
47
|
+
}) => void;
|
|
48
|
+
/** The daemon resolved an outstanding ask — server-driven, so this fires
|
|
49
|
+
* whether THIS client answered, another connected client answered first, or the
|
|
50
|
+
* daemon timed/unattended it out. The app must drop the prompt on this event,
|
|
51
|
+
* not on its own click. */
|
|
52
|
+
onPermissionResolved?: (e: {
|
|
53
|
+
id: number;
|
|
54
|
+
decision: PermissionDecision;
|
|
55
|
+
by: 'client' | 'timeout' | 'unattended';
|
|
56
|
+
}) => void;
|
|
30
57
|
}
|
|
31
58
|
export declare class SidecarHost {
|
|
32
59
|
private readonly ch;
|
|
@@ -35,7 +62,12 @@ export declare class SidecarHost {
|
|
|
35
62
|
private readonly invokePending;
|
|
36
63
|
private httpSeq;
|
|
37
64
|
private readonly httpPending;
|
|
65
|
+
private runSeq;
|
|
66
|
+
private readonly runPending;
|
|
67
|
+
private syncSeq;
|
|
68
|
+
private readonly syncPending;
|
|
38
69
|
private features;
|
|
70
|
+
private info;
|
|
39
71
|
private readonly imported;
|
|
40
72
|
private welcome;
|
|
41
73
|
constructor(opts: SidecarHostOptions);
|
|
@@ -47,6 +79,13 @@ export declare class SidecarHost {
|
|
|
47
79
|
private onMessage;
|
|
48
80
|
/** Whether the connected sidecar advertised the loopback HTTP proxy. */
|
|
49
81
|
supportsHttpProxy(): boolean;
|
|
82
|
+
/** Whether the connected sidecar advertised a wired crew runner — i.e. it can
|
|
83
|
+
* actually fire daemon-tier triggers (schedule/continuous/self-directed) on its
|
|
84
|
+
* own clock, not just serve tools. */
|
|
85
|
+
supportsRunner(): boolean;
|
|
86
|
+
/** The sidecar's advertised self-description (root/platform), or {} if it sent
|
|
87
|
+
* none. Valid only after connect() resolves. */
|
|
88
|
+
sidecarInfo(): SidecarInfo;
|
|
50
89
|
/** Fetch a (loopback) URL THROUGH the sidecar — a server-side fetch on the user's
|
|
51
90
|
* machine, so the browser dodges CORS. Returns a streaming Response: it resolves
|
|
52
91
|
* as soon as headers arrive (http-res) and the body streams in via http-chunk. */
|
|
@@ -56,6 +95,29 @@ export declare class SidecarHost {
|
|
|
56
95
|
headers: Record<string, string>;
|
|
57
96
|
body?: string;
|
|
58
97
|
}): Promise<Response>;
|
|
98
|
+
/** Command the sidecar to run a crew agent, streaming its lifecycle events to
|
|
99
|
+
* `onEvent` as they arrive. Resolves once the run completes (`run-done`) with
|
|
100
|
+
* the daemon-assigned runId, final text, and stop reason; rejects on
|
|
101
|
+
* `run-error` or if the connection drops while the run is in flight. */
|
|
102
|
+
run(agent: string, input: string, onEvent: (e: AgentEvent) => void): Promise<{
|
|
103
|
+
runId: string;
|
|
104
|
+
text: string;
|
|
105
|
+
stopReason: string;
|
|
106
|
+
}>;
|
|
107
|
+
/** Answer an outstanding permission ask. Fire-and-forget over the wire — the
|
|
108
|
+
* actual drop of the prompt is driven by the server's `permission-resolved`
|
|
109
|
+
* broadcast (`onPermissionResolved`), not by this call returning. */
|
|
110
|
+
answerPermission(id: number, decision: PermissionDecision): void;
|
|
111
|
+
/** Push one definition file's content to the daemon, to be persisted under
|
|
112
|
+
* this client's own `<stateDir>/hosts/<dirName>/` (Slice 2 host sync).
|
|
113
|
+
* Resolves on `host-sync-result { ok: true }`; rejects with the daemon's
|
|
114
|
+
* error, or on disconnect while in flight. */
|
|
115
|
+
hostSyncPut(path: string, content: string): Promise<void>;
|
|
116
|
+
/** Delete one definition file on the daemon side (reconcile). Same
|
|
117
|
+
* resolve/reject contract as `hostSyncPut`. Callers are responsible for
|
|
118
|
+
* confining `path` to definition, non-state paths BEFORE calling this --
|
|
119
|
+
* this method has no opinion on what `path` is. */
|
|
120
|
+
hostSyncDelete(path: string): Promise<void>;
|
|
59
121
|
private invoke;
|
|
60
122
|
/** Answer a sidecar's proxy-provider call from the host's live store. The
|
|
61
123
|
* allowlist (HOST_METHODS) is the least-privilege boundary — a sidecar can
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../sidecar/host.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAC1E,iBAAiB,EAAE,WAAW,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../sidecar/host.ts"],"names":[],"mappings":"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"}
|
package/dist/sidecar/host.js
CHANGED
|
@@ -45,12 +45,42 @@ export class SidecarHost {
|
|
|
45
45
|
writable: true,
|
|
46
46
|
value: new Map()
|
|
47
47
|
});
|
|
48
|
+
Object.defineProperty(this, "runSeq", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
configurable: true,
|
|
51
|
+
writable: true,
|
|
52
|
+
value: 0
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(this, "runPending", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
configurable: true,
|
|
57
|
+
writable: true,
|
|
58
|
+
value: new Map()
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(this, "syncSeq", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
configurable: true,
|
|
63
|
+
writable: true,
|
|
64
|
+
value: 0
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(this, "syncPending", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
configurable: true,
|
|
69
|
+
writable: true,
|
|
70
|
+
value: new Map()
|
|
71
|
+
});
|
|
48
72
|
Object.defineProperty(this, "features", {
|
|
49
73
|
enumerable: true,
|
|
50
74
|
configurable: true,
|
|
51
75
|
writable: true,
|
|
52
76
|
value: []
|
|
53
77
|
});
|
|
78
|
+
Object.defineProperty(this, "info", {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
configurable: true,
|
|
81
|
+
writable: true,
|
|
82
|
+
value: {}
|
|
83
|
+
});
|
|
54
84
|
Object.defineProperty(this, "imported", {
|
|
55
85
|
enumerable: true,
|
|
56
86
|
configurable: true,
|
|
@@ -72,7 +102,12 @@ export class SidecarHost {
|
|
|
72
102
|
connect() {
|
|
73
103
|
return new Promise((resolve, reject) => {
|
|
74
104
|
this.welcome = { resolve, reject };
|
|
75
|
-
this.ch.send({
|
|
105
|
+
this.ch.send({
|
|
106
|
+
t: 'hello', protocol: SIDECAR_PROTOCOL, token: this.opts.token,
|
|
107
|
+
...(this.opts.stateDir ? { stateDir: this.opts.stateDir } : {}),
|
|
108
|
+
...(this.opts.clientId ? { clientId: this.opts.clientId } : {}),
|
|
109
|
+
...(this.opts.clientName ? { clientName: this.opts.clientName } : {}),
|
|
110
|
+
});
|
|
76
111
|
});
|
|
77
112
|
}
|
|
78
113
|
/** Drop the connection: unregister imported tools and fail anything in flight. */
|
|
@@ -86,6 +121,12 @@ export class SidecarHost {
|
|
|
86
121
|
for (const p of this.httpPending.values())
|
|
87
122
|
p.onErr(reason);
|
|
88
123
|
this.httpPending.clear();
|
|
124
|
+
for (const p of this.runPending.values())
|
|
125
|
+
p.reject(new Error(reason));
|
|
126
|
+
this.runPending.clear();
|
|
127
|
+
for (const p of this.syncPending.values())
|
|
128
|
+
p.reject(new Error(reason));
|
|
129
|
+
this.syncPending.clear();
|
|
89
130
|
this.welcome?.reject(new Error(reason));
|
|
90
131
|
this.welcome = null;
|
|
91
132
|
this.ch.close();
|
|
@@ -94,6 +135,7 @@ export class SidecarHost {
|
|
|
94
135
|
switch (m.t) {
|
|
95
136
|
case 'welcome': {
|
|
96
137
|
this.features = m.features ?? [];
|
|
138
|
+
this.info = m.info ?? {};
|
|
97
139
|
for (const decl of m.tools) {
|
|
98
140
|
const tool = { ...decl, run: (args) => this.invoke(decl.name, args) };
|
|
99
141
|
this.opts.registerTool(tool);
|
|
@@ -138,12 +180,65 @@ export class SidecarHost {
|
|
|
138
180
|
this.httpPending.get(m.id)?.onErr(m.error);
|
|
139
181
|
return;
|
|
140
182
|
}
|
|
183
|
+
case 'run-accepted': {
|
|
184
|
+
const p = this.runPending.get(m.id);
|
|
185
|
+
if (p)
|
|
186
|
+
p.runId = m.runId;
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
case 'event': {
|
|
190
|
+
this.runPending.get(m.id)?.onEvent(m.event);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
case 'run-done': {
|
|
194
|
+
const p = this.runPending.get(m.id);
|
|
195
|
+
if (!p)
|
|
196
|
+
return;
|
|
197
|
+
this.runPending.delete(m.id);
|
|
198
|
+
p.resolve({ runId: m.runId, text: m.text, stopReason: m.stopReason });
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
case 'run-error': {
|
|
202
|
+
const p = this.runPending.get(m.id);
|
|
203
|
+
if (!p)
|
|
204
|
+
return;
|
|
205
|
+
this.runPending.delete(m.id);
|
|
206
|
+
p.reject(new Error(m.error || 'run failed'));
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
case 'host-sync-result': {
|
|
210
|
+
const p = this.syncPending.get(m.id);
|
|
211
|
+
if (!p)
|
|
212
|
+
return;
|
|
213
|
+
this.syncPending.delete(m.id);
|
|
214
|
+
if (m.ok)
|
|
215
|
+
p.resolve();
|
|
216
|
+
else
|
|
217
|
+
p.reject(new Error(m.error || 'host sync failed'));
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
case 'permission-ask': {
|
|
221
|
+
const { t: _t, ...ask } = m;
|
|
222
|
+
this.opts.onPermissionAsk?.(ask);
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
case 'permission-resolved': {
|
|
226
|
+
this.opts.onPermissionResolved?.({ id: m.id, decision: m.decision, by: m.by });
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
141
229
|
default:
|
|
142
230
|
return; // hello / invoke / host-call-result are handled on the sidecar side
|
|
143
231
|
}
|
|
144
232
|
}
|
|
145
233
|
/** Whether the connected sidecar advertised the loopback HTTP proxy. */
|
|
146
234
|
supportsHttpProxy() { return this.features.includes('http-proxy'); }
|
|
235
|
+
/** Whether the connected sidecar advertised a wired crew runner — i.e. it can
|
|
236
|
+
* actually fire daemon-tier triggers (schedule/continuous/self-directed) on its
|
|
237
|
+
* own clock, not just serve tools. */
|
|
238
|
+
supportsRunner() { return this.features.includes('runner'); }
|
|
239
|
+
/** The sidecar's advertised self-description (root/platform), or {} if it sent
|
|
240
|
+
* none. Valid only after connect() resolves. */
|
|
241
|
+
sidecarInfo() { return this.info; }
|
|
147
242
|
/** Fetch a (loopback) URL THROUGH the sidecar — a server-side fetch on the user's
|
|
148
243
|
* machine, so the browser dodges CORS. Returns a streaming Response: it resolves
|
|
149
244
|
* as soon as headers arrive (http-res) and the body streams in via http-chunk. */
|
|
@@ -177,6 +272,45 @@ export class SidecarHost {
|
|
|
177
272
|
this.ch.send({ t: 'http-req', id, method: req.method, url: req.url, headers: req.headers, body: req.body });
|
|
178
273
|
});
|
|
179
274
|
}
|
|
275
|
+
/** Command the sidecar to run a crew agent, streaming its lifecycle events to
|
|
276
|
+
* `onEvent` as they arrive. Resolves once the run completes (`run-done`) with
|
|
277
|
+
* the daemon-assigned runId, final text, and stop reason; rejects on
|
|
278
|
+
* `run-error` or if the connection drops while the run is in flight. */
|
|
279
|
+
run(agent, input, onEvent) {
|
|
280
|
+
const id = ++this.runSeq;
|
|
281
|
+
return new Promise((resolve, reject) => {
|
|
282
|
+
this.runPending.set(id, { resolve, reject, onEvent });
|
|
283
|
+
this.ch.send({ t: 'run', id, agent, input });
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
/** Answer an outstanding permission ask. Fire-and-forget over the wire — the
|
|
287
|
+
* actual drop of the prompt is driven by the server's `permission-resolved`
|
|
288
|
+
* broadcast (`onPermissionResolved`), not by this call returning. */
|
|
289
|
+
answerPermission(id, decision) {
|
|
290
|
+
this.ch.send({ t: 'permission-answer', id, decision });
|
|
291
|
+
}
|
|
292
|
+
/** Push one definition file's content to the daemon, to be persisted under
|
|
293
|
+
* this client's own `<stateDir>/hosts/<dirName>/` (Slice 2 host sync).
|
|
294
|
+
* Resolves on `host-sync-result { ok: true }`; rejects with the daemon's
|
|
295
|
+
* error, or on disconnect while in flight. */
|
|
296
|
+
hostSyncPut(path, content) {
|
|
297
|
+
const id = ++this.syncSeq;
|
|
298
|
+
return new Promise((resolve, reject) => {
|
|
299
|
+
this.syncPending.set(id, { resolve, reject });
|
|
300
|
+
this.ch.send({ t: 'host-sync-put', id, path, content });
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
/** Delete one definition file on the daemon side (reconcile). Same
|
|
304
|
+
* resolve/reject contract as `hostSyncPut`. Callers are responsible for
|
|
305
|
+
* confining `path` to definition, non-state paths BEFORE calling this --
|
|
306
|
+
* this method has no opinion on what `path` is. */
|
|
307
|
+
hostSyncDelete(path) {
|
|
308
|
+
const id = ++this.syncSeq;
|
|
309
|
+
return new Promise((resolve, reject) => {
|
|
310
|
+
this.syncPending.set(id, { resolve, reject });
|
|
311
|
+
this.ch.send({ t: 'host-sync-delete', id, path });
|
|
312
|
+
});
|
|
313
|
+
}
|
|
180
314
|
invoke(name, args) {
|
|
181
315
|
const id = ++this.invokeSeq;
|
|
182
316
|
return new Promise((resolve, reject) => {
|
package/dist/sidecar/host.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../sidecar/host.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../sidecar/host.ts"],"names":[],"mappings":"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"}
|
package/dist/sidecar/server.d.ts
CHANGED
|
@@ -1,11 +1,68 @@
|
|
|
1
|
-
import type { AgentTool } from '@corenel/protocol';
|
|
2
|
-
import { type SidecarChannel } from '@corenel/protocol';
|
|
1
|
+
import type { AgentTool, PermissionDecision } from '@corenel/protocol';
|
|
2
|
+
import { type SidecarChannel, type SidecarMsg, type SidecarInfo, type SidecarRunner, type SidecarHostSync } from '@corenel/protocol';
|
|
3
|
+
/** The payload of a `permission-ask` message, minus its `t` discriminant — derived
|
|
4
|
+
* from the wire protocol so this stays in lockstep with it automatically. */
|
|
5
|
+
export type PermissionAsk = Omit<Extract<SidecarMsg, {
|
|
6
|
+
t: 'permission-ask';
|
|
7
|
+
}>, 't'>;
|
|
8
|
+
/** The minimal shape SidecarServer needs from a permission-attendance registry.
|
|
9
|
+
* Declared HERE (harness-side), not imported from `@corenel/sidecar`, so the
|
|
10
|
+
* dependency direction stays correct: `packages/sidecar` depends on
|
|
11
|
+
* `packages/harness`, never the reverse. The sidecar daemon's concrete
|
|
12
|
+
* `AttendanceRegistry` (packages/sidecar/src/runner/attendance.ts) has strictly
|
|
13
|
+
* MORE members than this (isAttended, outstanding, broadcastAsk, settle, nextId)
|
|
14
|
+
* and is structurally assignable here without either package importing the other. */
|
|
15
|
+
export interface SidecarAttendanceRegistry {
|
|
16
|
+
/** Attach a client to receive asks/resolutions; returns a detach function. */
|
|
17
|
+
attach(client: {
|
|
18
|
+
send(ask: PermissionAsk): void;
|
|
19
|
+
resolved(id: number, decision: PermissionDecision, by: 'client' | 'timeout' | 'unattended'): void;
|
|
20
|
+
}): () => void;
|
|
21
|
+
/** Record this connection's answer to an outstanding ask. Ignored for an
|
|
22
|
+
* unknown/already-resolved id. */
|
|
23
|
+
answer(id: number, decision: PermissionDecision): void;
|
|
24
|
+
}
|
|
3
25
|
export interface SidecarServerOptions {
|
|
4
26
|
channel: SidecarChannel;
|
|
5
27
|
/** The pairing token a connecting host must present. */
|
|
6
28
|
token: string;
|
|
7
29
|
/** The tools this sidecar exposes — real implementations. */
|
|
8
30
|
tools: AgentTool[];
|
|
31
|
+
/** Self-description advertised in the welcome (e.g. the confined root). Optional;
|
|
32
|
+
* a sidecar that omits it just isn't browsable-with-a-working-directory. */
|
|
33
|
+
info?: SidecarInfo;
|
|
34
|
+
/** Server-side activity logger — invoked on pairing and on each tool invoke so the
|
|
35
|
+
* node sidecar can print what's happening to its terminal. Optional (tests omit it). */
|
|
36
|
+
log?: (line: string) => void;
|
|
37
|
+
/** Runs a crew agent in response to a `run` message. Optional — a sidecar that
|
|
38
|
+
* only serves tools (no crew runner wired) reports `run-error` for `run`. */
|
|
39
|
+
runner?: SidecarRunner;
|
|
40
|
+
/** The daemon's permission-attendance registry. Optional — a sidecar that omits
|
|
41
|
+
* it never attaches a client and drops `permission-answer` (there is nothing to
|
|
42
|
+
* forward it to). When present, an authenticated connection attaches on `hello`
|
|
43
|
+
* and detaches when its channel closes. */
|
|
44
|
+
attendance?: SidecarAttendanceRegistry;
|
|
45
|
+
/** Invoked after an authenticated `hello` that carries a `clientId`, so the
|
|
46
|
+
* daemon can record who connected (Slice 2 routes sync to hosts/<dir>/). The
|
|
47
|
+
* harness stays storage-agnostic -- the node daemon supplies the persistence.
|
|
48
|
+
* Not called for an older client that sends no `clientId`.
|
|
49
|
+
*
|
|
50
|
+
* Fire-and-forget: it is never awaited, so it cannot delay `welcome`, and its
|
|
51
|
+
* failures -- a synchronous throw OR a rejected promise (the daemon's consumer
|
|
52
|
+
* is expected to be async, e.g. writing a manifest file) -- are caught and
|
|
53
|
+
* logged through `log?.()`, never allowed to affect the handshake or escape as
|
|
54
|
+
* an unhandled rejection. Do not rely on it having completed by the time
|
|
55
|
+
* `welcome` is sent. */
|
|
56
|
+
onClient?: (identity: {
|
|
57
|
+
clientId: string;
|
|
58
|
+
name: string;
|
|
59
|
+
}) => void;
|
|
60
|
+
/** The daemon's host-sync persistence port (Slice 2). Optional — a sidecar that
|
|
61
|
+
* omits it rejects every `host-sync-put`/`host-sync-delete` with `ok: false`
|
|
62
|
+
* rather than throwing or dropping the connection. Never imported from
|
|
63
|
+
* `@corenel/sidecar` here -- the harness stays ignorant of the manifest and the
|
|
64
|
+
* filesystem; only the shape from `@corenel/protocol` is known. */
|
|
65
|
+
hostSync?: SidecarHostSync;
|
|
9
66
|
}
|
|
10
67
|
export declare class SidecarServer {
|
|
11
68
|
private readonly ch;
|
|
@@ -14,6 +71,22 @@ export declare class SidecarServer {
|
|
|
14
71
|
private authed;
|
|
15
72
|
private hostSeq;
|
|
16
73
|
private readonly hostPending;
|
|
74
|
+
/** The connected host's dot-dir name, from `hello.stateDir` (informational —
|
|
75
|
+
* doesn't change any sidecar behavior yet; reserved for future workspace-state
|
|
76
|
+
* features that need to know the host's dir name). */
|
|
77
|
+
private hostStateDir;
|
|
78
|
+
/** The authenticated connection's `clientId`, retained here (from `hello`) so
|
|
79
|
+
* later `host-sync-*` messages can be attributed to their owner without
|
|
80
|
+
* trusting anything the client sends per-call. Set only when the `hello`
|
|
81
|
+
* passed BOTH the token check AND the identity `typeof` gate below --
|
|
82
|
+
* `undefined` means either "not authenticated yet" or "authenticated, but this
|
|
83
|
+
* connection carries no identity to attribute files to" (an older client).
|
|
84
|
+
* Either way, host-sync must be rejected; see `requireHostSyncIdentity`. */
|
|
85
|
+
private clientId?;
|
|
86
|
+
/** Detach function for this connection's attendance attachment, set on a
|
|
87
|
+
* successful `hello` when `opts.attendance` is wired. Called once, on channel
|
|
88
|
+
* close, so a dead connection stops receiving/counting toward asks. */
|
|
89
|
+
private attendedDetach?;
|
|
17
90
|
constructor(opts: SidecarServerOptions);
|
|
18
91
|
private onMessage;
|
|
19
92
|
private onHello;
|
|
@@ -22,6 +95,26 @@ export declare class SidecarServer {
|
|
|
22
95
|
* response streams back (http-res -> http-chunk* -> http-end). */
|
|
23
96
|
private onHttpReq;
|
|
24
97
|
private onInvoke;
|
|
98
|
+
/** Runs a crew agent via the configured `runner` and streams its lifecycle back
|
|
99
|
+
* to the host: `run-accepted` (with the daemon-assigned runId) once the runner
|
|
100
|
+
* has started, one `event` per `onEvent` callback, then exactly one of
|
|
101
|
+
* `run-done` (final text + stop reason) or `run-error`.
|
|
102
|
+
*
|
|
103
|
+
* `runner.run` returns the runId asynchronously, but a runner is free to call
|
|
104
|
+
* `onEvent` synchronously before that promise settles (e.g. an immediate first
|
|
105
|
+
* turn). Events that arrive before we know the runId are buffered and flushed
|
|
106
|
+
* right after `run-accepted`, so they still carry the correct runId and never
|
|
107
|
+
* race ahead of it on the wire. */
|
|
108
|
+
private onRun;
|
|
109
|
+
/** The identity to attribute a host-sync write to. Returns either the
|
|
110
|
+
* authenticated `clientId`, or an error string explaining why there is none --
|
|
111
|
+
* either this connection is not authenticated yet, or it authenticated with no
|
|
112
|
+
* `clientId` (an older client). The latter is NOT an auth failure (the pairing
|
|
113
|
+
* token already authenticated the connection); it is a "no owner to attribute
|
|
114
|
+
* files to" rule -- a write with no owner must never reach the port. */
|
|
115
|
+
private requireHostSyncIdentity;
|
|
116
|
+
private onHostSyncPut;
|
|
117
|
+
private onHostSyncDelete;
|
|
25
118
|
/** A ToolContext whose capabilities proxy back to the host (persist-nothing).
|
|
26
119
|
* The stores, the host's file workspace, and the user prompts (confirm/ask) all
|
|
27
120
|
* round-trip over the channel. confirm/ask default to allow/dismiss when the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../sidecar/server.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,SAAS,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../sidecar/server.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,SAAS,EAE+C,kBAAkB,EAC3E,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAEL,KAAK,cAAc,EAAE,KAAK,UAAU,EAAoC,KAAK,WAAW,EACxF,KAAK,aAAa,EAAE,KAAK,eAAe,EACzC,MAAM,mBAAmB,CAAC;AAE3B;6EAC6E;AAC7E,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;IAAE,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAEpF;;;;;;qFAMqF;AACrF,MAAM,WAAW,yBAAyB;IACxC,8EAA8E;IAC9E,MAAM,CAAC,MAAM,EAAE;QACb,IAAI,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;QAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,EAAE,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAAC;KACnG,GAAG,MAAM,IAAI,CAAC;IACf;sCACkC;IAClC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB;gFAC4E;IAC5E,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;4FACwF;IACxF,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B;iFAC6E;IAC7E,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;+CAG2C;IAC3C,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC;;;;;;;;;;4BAUwB;IACxB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAClE;;;;uEAImE;IACnE,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAqCD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAC1D;;0DAEsD;IACtD,OAAO,CAAC,YAAY,CAAc;IAClC;;;;;;gFAM4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B;;2EAEuE;IACvE,OAAO,CAAC,cAAc,CAAC,CAAa;gBAExB,IAAI,EAAE,oBAAoB;IAWtC,OAAO,CAAC,SAAS;IA0DjB,OAAO,CAAC,OAAO;IA+Df;;sEAEkE;YACpD,SAAS;YAwBT,QAAQ;IAiBtB;;;;;;;;;uCASmC;YACrB,KAAK;IA6BnB;;;;;4EAKwE;IACxE,OAAO,CAAC,uBAAuB;YAQjB,aAAa;YAkBb,gBAAgB;IAkB9B;;;;oEAIgE;IAChE,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAKrB;IAEF,OAAO,CAAC,QAAQ,CAAC,EAAE,CAKjB;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;IAEF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAOvB;IAEF;mFAC+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAcpB;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAC2D;IAEnF,OAAO,CAAC,QAAQ,CAAC,GAAG,CACuE;CAC5F"}
|