moderado 0.3.8 → 0.3.10
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/README.md +217 -215
- package/dist/args.d.ts +2 -0
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +40 -29
- package/dist/args.js.map +1 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +31 -9
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +6 -3
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/skills.d.ts +1 -1
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +25 -7
- package/dist/commands/skills.js.map +1 -1
- package/dist/config.d.ts +5 -73
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -96
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/injected_version.d.ts +2 -0
- package/dist/injected_version.d.ts.map +1 -0
- package/dist/injected_version.js +5 -0
- package/dist/injected_version.js.map +1 -0
- package/dist/model_pricing.d.ts +2 -14
- package/dist/model_pricing.d.ts.map +1 -1
- package/dist/model_pricing.js +1 -52
- package/dist/model_pricing.js.map +1 -1
- package/dist/skills.d.ts +5 -1
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +99 -8
- package/dist/skills.js.map +1 -1
- package/dist/ui/help_modal.js +1 -1
- package/dist/ui/help_modal.js.map +1 -1
- package/dist/ui/welcome.js +2 -2
- package/dist/vendor/core/agent.d.ts +5 -0
- package/dist/vendor/core/agent.d.ts.map +1 -1
- package/dist/vendor/core/agent.js +45 -24
- package/dist/vendor/core/agent.js.map +1 -1
- package/dist/vendor/providers/index.d.ts +1 -0
- package/dist/vendor/providers/index.d.ts.map +1 -1
- package/dist/vendor/providers/index.js +1 -0
- package/dist/vendor/providers/index.js.map +1 -1
- package/dist/vendor/providers/presets.d.ts +87 -0
- package/dist/vendor/providers/presets.d.ts.map +1 -0
- package/dist/vendor/providers/presets.js +149 -0
- package/dist/vendor/providers/presets.js.map +1 -0
- package/package.json +28 -28
- package/dist/chat_mode.d.ts +0 -14
- package/dist/chat_mode.d.ts.map +0 -1
- package/dist/chat_mode.js +0 -13
- package/dist/chat_mode.js.map +0 -1
- package/dist/commands/host.d.ts +0 -4
- package/dist/commands/host.d.ts.map +0 -1
- package/dist/commands/host.js +0 -30
- package/dist/commands/host.js.map +0 -1
- package/dist/host/approval_queue.d.ts +0 -9
- package/dist/host/approval_queue.d.ts.map +0 -1
- package/dist/host/approval_queue.js +0 -63
- package/dist/host/approval_queue.js.map +0 -1
- package/dist/host/auto_approve.d.ts +0 -22
- package/dist/host/auto_approve.d.ts.map +0 -1
- package/dist/host/auto_approve.js +0 -36
- package/dist/host/auto_approve.js.map +0 -1
- package/dist/host/ndjson.d.ts +0 -3
- package/dist/host/ndjson.d.ts.map +0 -1
- package/dist/host/ndjson.js +0 -68
- package/dist/host/ndjson.js.map +0 -1
- package/dist/host/protocol_server.d.ts +0 -9
- package/dist/host/protocol_server.d.ts.map +0 -1
- package/dist/host/protocol_server.js +0 -101
- package/dist/host/protocol_server.js.map +0 -1
- package/dist/host/runtime.d.ts +0 -30
- package/dist/host/runtime.d.ts.map +0 -1
- package/dist/host/runtime.js +0 -603
- package/dist/host/runtime.js.map +0 -1
- package/dist/ui/session_screen.d.ts +0 -32
- package/dist/ui/session_screen.d.ts.map +0 -1
- package/dist/ui/session_screen.js +0 -148
- package/dist/ui/session_screen.js.map +0 -1
- package/dist/ui/session_terminal.d.ts +0 -46
- package/dist/ui/session_terminal.d.ts.map +0 -1
- package/dist/ui/session_terminal.js +0 -342
- package/dist/ui/session_terminal.js.map +0 -1
- package/dist/vendor/contracts/host_protocol.d.ts +0 -3545
- package/dist/vendor/contracts/host_protocol.d.ts.map +0 -1
- package/dist/vendor/contracts/host_protocol.js +0 -292
- package/dist/vendor/contracts/host_protocol.js.map +0 -1
- package/dist/web_search_route.d.ts +0 -16
- package/dist/web_search_route.d.ts.map +0 -1
- package/dist/web_search_route.js +0 -60
- package/dist/web_search_route.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "moderado",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "A lightweight, provider-independent CLI coding agent with free-first model routing.",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"moderado": "./dist/index.js"
|
|
8
|
-
},
|
|
9
|
-
"main": "./dist/index.js",
|
|
10
|
-
"types": "./dist/index.d.ts",
|
|
11
|
-
"files": ["dist", "README.md", "LICENSE"],
|
|
12
|
-
"engines": { "node": ">=20" },
|
|
13
|
-
"license": "MIT",
|
|
14
|
-
"repository": { "type": "git", "url": "https://github.com/marcuz-apl/moderado.git" },
|
|
15
|
-
"bugs": { "url": "https://github.com/marcuz-apl/moderado/issues" },
|
|
16
|
-
"homepage": "https://github.com/marcuz-apl/moderado#readme",
|
|
17
|
-
"keywords": ["ai", "agent", "coding-agent", "cli", "nvidia-nim", "openrouter"],
|
|
18
|
-
"scripts": {
|
|
19
|
-
"build": "tsc",
|
|
20
|
-
"typecheck": "tsc --noEmit",
|
|
21
|
-
"start": "node ./dist/index.js",
|
|
22
|
-
"test": "vitest run",
|
|
23
|
-
"prepack": "npm --prefix ../.. run build && npm --prefix ../.. run prepare:package"
|
|
24
|
-
},
|
|
25
|
-
"dependencies": {
|
|
26
|
-
"zod": "^3.24.2"
|
|
27
|
-
}
|
|
28
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "moderado",
|
|
3
|
+
"version": "0.3.10",
|
|
4
|
+
"description": "A lightweight, provider-independent CLI coding agent with free-first model routing.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"moderado": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"files": ["dist", "README.md", "LICENSE"],
|
|
12
|
+
"engines": { "node": ">=20" },
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"repository": { "type": "git", "url": "https://github.com/marcuz-apl/moderado.git" },
|
|
15
|
+
"bugs": { "url": "https://github.com/marcuz-apl/moderado/issues" },
|
|
16
|
+
"homepage": "https://github.com/marcuz-apl/moderado#readme",
|
|
17
|
+
"keywords": ["ai", "agent", "coding-agent", "cli", "nvidia-nim", "openrouter"],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"start": "node ./dist/index.js",
|
|
22
|
+
"test": "vitest run",
|
|
23
|
+
"prepack": "npm --prefix ../.. run build && npm --prefix ../.. run prepare:package"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"zod": "^3.24.2"
|
|
27
|
+
}
|
|
28
|
+
}
|
package/dist/chat_mode.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The per-turn agent modes shared by the interactive CLI and the VS Code host
|
|
3
|
-
* runtime, so both build the same planning prompt from one definition.
|
|
4
|
-
*/
|
|
5
|
-
export type ChatMode = 'plan' | 'act';
|
|
6
|
-
/**
|
|
7
|
-
* Build the task prompt for a mode. `Execute` passes the request through
|
|
8
|
-
* untouched; `Plan` asks for a checklist and forbids mutation in the prompt.
|
|
9
|
-
*
|
|
10
|
-
* This text is advisory. A read-only `PolicyManager` is what actually blocks
|
|
11
|
-
* writes, so a caller in plan mode must also run the turn with `readOnly: true`.
|
|
12
|
-
*/
|
|
13
|
-
export declare function createAgentTask(request: string, mode: 'Plan' | 'Execute'): string;
|
|
14
|
-
//# sourceMappingURL=chat_mode.d.ts.map
|
package/dist/chat_mode.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chat_mode.d.ts","sourceRoot":"","sources":["../src/chat_mode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAEtC;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGjF"}
|
package/dist/chat_mode.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Build the task prompt for a mode. `Execute` passes the request through
|
|
3
|
-
* untouched; `Plan` asks for a checklist and forbids mutation in the prompt.
|
|
4
|
-
*
|
|
5
|
-
* This text is advisory. A read-only `PolicyManager` is what actually blocks
|
|
6
|
-
* writes, so a caller in plan mode must also run the turn with `readOnly: true`.
|
|
7
|
-
*/
|
|
8
|
-
export function createAgentTask(request, mode) {
|
|
9
|
-
if (mode === 'Execute')
|
|
10
|
-
return request;
|
|
11
|
-
return `Create a concise implementation checklist for this request. Inspect files as needed, but do not modify files or run commands.\n\nUser request:\n${request}`;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=chat_mode.js.map
|
package/dist/chat_mode.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chat_mode.js","sourceRoot":"","sources":["../src/chat_mode.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,IAAwB;IACvE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACvC,OAAO,mJAAmJ,OAAO,EAAE,CAAC;AACtK,CAAC"}
|
package/dist/commands/host.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { CliParsedArgs } from '../args.js';
|
|
2
|
-
import { type HostSessionFactory } from '../host/protocol_server.js';
|
|
3
|
-
export declare function handleHostCommand(args: CliParsedArgs, signal?: AbortSignal, sessionFactory?: HostSessionFactory): Promise<number>;
|
|
4
|
-
//# sourceMappingURL=host.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/commands/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGxF,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,aAAa,EACnB,MAAM,CAAC,EAAE,WAAW,EACpB,cAAc,CAAC,EAAE,kBAAkB,GAClC,OAAO,CAAC,MAAM,CAAC,CA+BjB"}
|
package/dist/commands/host.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { serveHostProtocol } from '../host/protocol_server.js';
|
|
2
|
-
import { createHostRuntime } from '../host/runtime.js';
|
|
3
|
-
export async function handleHostCommand(args, signal, sessionFactory) {
|
|
4
|
-
if (!args.workspace || args.workspace.trim() === '') {
|
|
5
|
-
process.stderr.write('Error: --workspace is required for host command\n');
|
|
6
|
-
return 1;
|
|
7
|
-
}
|
|
8
|
-
if (args.protocol !== 1) {
|
|
9
|
-
process.stderr.write(`Error: Unsupported protocol version "${args.protocol}". Only protocol version 1 is supported.\n`);
|
|
10
|
-
return 1;
|
|
11
|
-
}
|
|
12
|
-
const factory = sessionFactory ??
|
|
13
|
-
(async (emit) => {
|
|
14
|
-
return createHostRuntime({
|
|
15
|
-
workspaceRoot: args.workspace,
|
|
16
|
-
emit,
|
|
17
|
-
providerId: args.provider,
|
|
18
|
-
modelId: args.model,
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
try {
|
|
22
|
-
await serveHostProtocol(process.stdin, process.stdout, factory, signal);
|
|
23
|
-
return 0;
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
process.stderr.write(`Host protocol error: ${err?.message || String(err)}\n`);
|
|
27
|
-
return 1;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=host.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/commands/host.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAmB,EACnB,MAAoB,EACpB,cAAmC;IAEnC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC1E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wCAAwC,IAAI,CAAC,QAAQ,4CAA4C,CAClG,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GACX,cAAc;QACd,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACd,OAAO,iBAAiB,CAAC;gBACvB,aAAa,EAAE,IAAI,CAAC,SAAS;gBAC7B,IAAI;gBACJ,UAAU,EAAE,IAAI,CAAC,QAAQ;gBACzB,OAAO,EAAE,IAAI,CAAC,KAAK;aACpB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC;QACH,MAAM,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACxE,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { ApprovalDecision, ApprovalRequest, ApprovalStatus, IApprovalHandler } from '@moderado/contracts';
|
|
2
|
-
export declare class ApprovalQueue implements IApprovalHandler {
|
|
3
|
-
private readonly pending;
|
|
4
|
-
private closed;
|
|
5
|
-
requestApproval(request: ApprovalRequest, signal?: AbortSignal): Promise<ApprovalDecision>;
|
|
6
|
-
resolve(requestId: string, status: ApprovalStatus, reason?: string): boolean;
|
|
7
|
-
close(): void;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=approval_queue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"approval_queue.d.ts","sourceRoot":"","sources":["../../src/host/approval_queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAS7B,qBAAa,aAAc,YAAW,gBAAgB;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,MAAM,CAAS;IAEjB,eAAe,CACnB,OAAO,EAAE,eAAe,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAkC5B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;IAmB5E,KAAK,IAAI,IAAI;CAad"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
export class ApprovalQueue {
|
|
2
|
-
pending = new Map();
|
|
3
|
-
closed = false;
|
|
4
|
-
async requestApproval(request, signal) {
|
|
5
|
-
if (this.closed || signal?.aborted) {
|
|
6
|
-
return {
|
|
7
|
-
requestId: request.requestId,
|
|
8
|
-
status: 'aborted',
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
if (this.pending.has(request.requestId)) {
|
|
12
|
-
throw new Error(`Duplicate approval request ID: ${request.requestId}`);
|
|
13
|
-
}
|
|
14
|
-
return new Promise((resolve) => {
|
|
15
|
-
const entry = {
|
|
16
|
-
request,
|
|
17
|
-
resolve,
|
|
18
|
-
signal,
|
|
19
|
-
};
|
|
20
|
-
if (signal) {
|
|
21
|
-
entry.onAbort = () => {
|
|
22
|
-
this.pending.delete(request.requestId);
|
|
23
|
-
resolve({
|
|
24
|
-
requestId: request.requestId,
|
|
25
|
-
status: 'aborted',
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
signal.addEventListener('abort', entry.onAbort, { once: true });
|
|
29
|
-
}
|
|
30
|
-
this.pending.set(request.requestId, entry);
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
resolve(requestId, status, reason) {
|
|
34
|
-
const entry = this.pending.get(requestId);
|
|
35
|
-
if (!entry) {
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
this.pending.delete(requestId);
|
|
39
|
-
if (entry.signal && entry.onAbort) {
|
|
40
|
-
entry.signal.removeEventListener('abort', entry.onAbort);
|
|
41
|
-
}
|
|
42
|
-
entry.resolve({
|
|
43
|
-
requestId,
|
|
44
|
-
status,
|
|
45
|
-
reason,
|
|
46
|
-
});
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
close() {
|
|
50
|
-
this.closed = true;
|
|
51
|
-
for (const [requestId, entry] of this.pending.entries()) {
|
|
52
|
-
if (entry.signal && entry.onAbort) {
|
|
53
|
-
entry.signal.removeEventListener('abort', entry.onAbort);
|
|
54
|
-
}
|
|
55
|
-
entry.resolve({
|
|
56
|
-
requestId,
|
|
57
|
-
status: 'aborted',
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
this.pending.clear();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=approval_queue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"approval_queue.js","sourceRoot":"","sources":["../../src/host/approval_queue.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,aAAa;IACP,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;IACtD,MAAM,GAAG,KAAK,CAAC;IAEvB,KAAK,CAAC,eAAe,CACnB,OAAwB,EACxB,MAAoB;QAEpB,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACnC,OAAO;gBACL,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM,EAAE,SAAS;aAClB,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,IAAI,OAAO,CAAmB,CAAC,OAAO,EAAE,EAAE;YAC/C,MAAM,KAAK,GAAoB;gBAC7B,OAAO;gBACP,OAAO;gBACP,MAAM;aACP,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE;oBACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACvC,OAAO,CAAC;wBACN,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,MAAM,EAAE,SAAS;qBAClB,CAAC,CAAC;gBACL,CAAC,CAAC;gBACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,SAAiB,EAAE,MAAsB,EAAE,MAAe;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,CAAC,OAAO,CAAC;YACZ,SAAS;YACT,MAAM;YACN,MAAM;SACP,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC;YACD,KAAK,CAAC,OAAO,CAAC;gBACZ,SAAS;gBACT,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { type ApprovalDecision, type ApprovalRequest, type AutoApproveSettings, type IApprovalHandler } from '@moderado/contracts';
|
|
2
|
-
/**
|
|
3
|
-
* Applies the per-category auto-approve policy in front of the human queue.
|
|
4
|
-
*
|
|
5
|
-
* This is deliberately a decorator rather than a change to the agent loop: the
|
|
6
|
-
* loop's approval boundary already calls an `IApprovalHandler`, so the policy
|
|
7
|
-
* lives entirely on the host side. The core stays unaware that categories exist,
|
|
8
|
-
* and the CLI keeps its own single-switch policy without either one importing
|
|
9
|
-
* the other.
|
|
10
|
-
*
|
|
11
|
-
* An auto-approved action still emits its `approval_request` and
|
|
12
|
-
* `approval_resolved` events, so the transcript shows what ran and that a person
|
|
13
|
-
* was not asked — silently skipping the gate would make an unattended write
|
|
14
|
-
* indistinguishable from a bug.
|
|
15
|
-
*/
|
|
16
|
-
export declare class AutoApproveHandler implements IApprovalHandler {
|
|
17
|
-
private readonly delegate;
|
|
18
|
-
private readonly settings;
|
|
19
|
-
constructor(delegate: IApprovalHandler, settings: AutoApproveSettings);
|
|
20
|
-
requestApproval(request: ApprovalRequest, signal?: AbortSignal): Promise<ApprovalDecision>;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=auto_approve.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto_approve.d.ts","sourceRoot":"","sources":["../../src/host/auto_approve.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;GAaG;AACH,qBAAa,kBAAmB,YAAW,gBAAgB;IAEvD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,mBAAmB;IAG1C,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAYjG"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { approvalCategoryForTool, } from '../vendor/contracts/index.js';
|
|
2
|
-
/**
|
|
3
|
-
* Applies the per-category auto-approve policy in front of the human queue.
|
|
4
|
-
*
|
|
5
|
-
* This is deliberately a decorator rather than a change to the agent loop: the
|
|
6
|
-
* loop's approval boundary already calls an `IApprovalHandler`, so the policy
|
|
7
|
-
* lives entirely on the host side. The core stays unaware that categories exist,
|
|
8
|
-
* and the CLI keeps its own single-switch policy without either one importing
|
|
9
|
-
* the other.
|
|
10
|
-
*
|
|
11
|
-
* An auto-approved action still emits its `approval_request` and
|
|
12
|
-
* `approval_resolved` events, so the transcript shows what ran and that a person
|
|
13
|
-
* was not asked — silently skipping the gate would make an unattended write
|
|
14
|
-
* indistinguishable from a bug.
|
|
15
|
-
*/
|
|
16
|
-
export class AutoApproveHandler {
|
|
17
|
-
delegate;
|
|
18
|
-
settings;
|
|
19
|
-
constructor(delegate, settings) {
|
|
20
|
-
this.delegate = delegate;
|
|
21
|
-
this.settings = settings;
|
|
22
|
-
}
|
|
23
|
-
async requestApproval(request, signal) {
|
|
24
|
-
const category = approvalCategoryForTool(request.toolName);
|
|
25
|
-
// No category means no declared trust level, so it falls through to the human.
|
|
26
|
-
if (category && this.settings[category]) {
|
|
27
|
-
return {
|
|
28
|
-
requestId: request.requestId,
|
|
29
|
-
status: 'approved',
|
|
30
|
-
reason: `Auto-approved: the '${category}' category is enabled in Moderado settings.`,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
return this.delegate.requestApproval(request, signal);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=auto_approve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto_approve.js","sourceRoot":"","sources":["../../src/host/auto_approve.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GAKxB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,kBAAkB;IAEV;IACA;IAFnB,YACmB,QAA0B,EAC1B,QAA6B;QAD7B,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,aAAQ,GAAR,QAAQ,CAAqB;IAC7C,CAAC;IAEJ,KAAK,CAAC,eAAe,CAAC,OAAwB,EAAE,MAAoB;QAClE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3D,+EAA+E;QAC/E,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,OAAO;gBACL,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,uBAAuB,QAAQ,6CAA6C;aACrF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;CACF"}
|
package/dist/host/ndjson.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ndjson.d.ts","sourceRoot":"","sources":["../../src/host/ndjson.ts"],"names":[],"mappings":"AAAA,wBAAuB,gBAAgB,CACrC,KAAK,EAAE,MAAM,CAAC,cAAc,EAC5B,YAAY,SAAY,GACvB,aAAa,CAAC,OAAO,CAAC,CAsDxB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
package/dist/host/ndjson.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
export async function* readHostMessages(input, maxLineBytes = 1_048_576) {
|
|
2
|
-
let chunks = [];
|
|
3
|
-
let bufferedBytes = 0;
|
|
4
|
-
for await (const chunk of input) {
|
|
5
|
-
const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
6
|
-
let start = 0;
|
|
7
|
-
for (let i = 0; i < buf.length; i++) {
|
|
8
|
-
if (bufferedBytes + (i - start) > maxLineBytes) {
|
|
9
|
-
throw new Error(`Line exceeds maximum allowed size of ${maxLineBytes} bytes`);
|
|
10
|
-
}
|
|
11
|
-
if (buf[i] === 0x0a) {
|
|
12
|
-
// Found '\n'
|
|
13
|
-
const slice = buf.subarray(start, i);
|
|
14
|
-
chunks.push(slice);
|
|
15
|
-
bufferedBytes += slice.length;
|
|
16
|
-
if (bufferedBytes > maxLineBytes) {
|
|
17
|
-
throw new Error(`Line exceeds maximum allowed size of ${maxLineBytes} bytes`);
|
|
18
|
-
}
|
|
19
|
-
const lineBuf = Buffer.concat(chunks, bufferedBytes);
|
|
20
|
-
chunks = [];
|
|
21
|
-
bufferedBytes = 0;
|
|
22
|
-
start = i + 1;
|
|
23
|
-
let str = lineBuf.toString('utf8');
|
|
24
|
-
if (str.endsWith('\r')) {
|
|
25
|
-
str = str.slice(0, -1);
|
|
26
|
-
}
|
|
27
|
-
if (str.trim().length === 0) {
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
yield JSON.parse(str);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
if (start < buf.length) {
|
|
34
|
-
const remaining = buf.subarray(start);
|
|
35
|
-
chunks.push(remaining);
|
|
36
|
-
bufferedBytes += remaining.length;
|
|
37
|
-
if (bufferedBytes > maxLineBytes) {
|
|
38
|
-
throw new Error(`Line exceeds maximum allowed size of ${maxLineBytes} bytes`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (bufferedBytes > 0) {
|
|
43
|
-
throw new Error('Unexpected EOF: incomplete line in stream');
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
export async function writeHostMessage(output, message) {
|
|
47
|
-
const line = JSON.stringify(message) + '\n';
|
|
48
|
-
const canContinue = output.write(line, 'utf8');
|
|
49
|
-
if (!canContinue) {
|
|
50
|
-
await new Promise((resolve, reject) => {
|
|
51
|
-
const onDrain = () => {
|
|
52
|
-
cleanup();
|
|
53
|
-
resolve();
|
|
54
|
-
};
|
|
55
|
-
const onError = (err) => {
|
|
56
|
-
cleanup();
|
|
57
|
-
reject(err);
|
|
58
|
-
};
|
|
59
|
-
const cleanup = () => {
|
|
60
|
-
output.off('drain', onDrain);
|
|
61
|
-
output.off('error', onError);
|
|
62
|
-
};
|
|
63
|
-
output.on('drain', onDrain);
|
|
64
|
-
output.on('error', onError);
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=ndjson.js.map
|
package/dist/host/ndjson.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ndjson.js","sourceRoot":"","sources":["../../src/host/ndjson.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type HostNotification, type HostRequest, type InitializeRequest, type InitializeResult } from '@moderado/contracts';
|
|
2
|
-
export interface HostSessionRuntime {
|
|
3
|
-
initialize(request: InitializeRequest): Promise<InitializeResult>;
|
|
4
|
-
dispatch(request: HostRequest): Promise<unknown>;
|
|
5
|
-
close(): Promise<void>;
|
|
6
|
-
}
|
|
7
|
-
export type HostSessionFactory = (emit: (notification: HostNotification) => Promise<void>) => HostSessionRuntime | Promise<HostSessionRuntime>;
|
|
8
|
-
export declare function serveHostProtocol(input: NodeJS.ReadableStream, output: NodeJS.WritableStream, sessionFactory: HostSessionFactory, signal?: AbortSignal): Promise<void>;
|
|
9
|
-
//# sourceMappingURL=protocol_server.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protocol_server.d.ts","sourceRoot":"","sources":["../../src/host/protocol_server.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClE,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,CAAC,YAAY,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,KACpD,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEtD,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,CAAC,cAAc,EAC5B,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,cAAc,EAAE,kBAAkB,EAClC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA0Gf"}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { HostRequestSchema, } from '../vendor/contracts/index.js';
|
|
2
|
-
import { readHostMessages, writeHostMessage } from './ndjson.js';
|
|
3
|
-
export async function serveHostProtocol(input, output, sessionFactory, signal) {
|
|
4
|
-
const emit = async (notification) => {
|
|
5
|
-
await writeHostMessage(output, notification);
|
|
6
|
-
};
|
|
7
|
-
const runtime = await sessionFactory(emit);
|
|
8
|
-
const inFlightRequestIds = new Set();
|
|
9
|
-
const sendResponse = async (id, ok, resultOrError) => {
|
|
10
|
-
if (ok) {
|
|
11
|
-
await writeHostMessage(output, {
|
|
12
|
-
type: 'response',
|
|
13
|
-
id,
|
|
14
|
-
ok: true,
|
|
15
|
-
result: resultOrError.result,
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
await writeHostMessage(output, {
|
|
20
|
-
type: 'response',
|
|
21
|
-
id,
|
|
22
|
-
ok: false,
|
|
23
|
-
error: resultOrError.error,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
try {
|
|
28
|
-
for await (const raw of readHostMessages(input)) {
|
|
29
|
-
if (signal?.aborted) {
|
|
30
|
-
break;
|
|
31
|
-
}
|
|
32
|
-
const hasStringId = typeof raw?.id === 'string' && raw.id.length > 0;
|
|
33
|
-
const rawId = hasStringId ? raw.id : undefined;
|
|
34
|
-
// Check for unsupported protocol version in initialize
|
|
35
|
-
if (raw?.method === 'initialize') {
|
|
36
|
-
const proto = raw?.params?.protocolVersion;
|
|
37
|
-
if (proto !== 1) {
|
|
38
|
-
if (rawId) {
|
|
39
|
-
await sendResponse(rawId, false, {
|
|
40
|
-
error: {
|
|
41
|
-
code: 'UNSUPPORTED_VERSION',
|
|
42
|
-
message: `Unsupported protocol version ${proto}. Expected 1.`,
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
const parseResult = HostRequestSchema.safeParse(raw);
|
|
50
|
-
if (!parseResult.success) {
|
|
51
|
-
if (rawId) {
|
|
52
|
-
await sendResponse(rawId, false, {
|
|
53
|
-
error: {
|
|
54
|
-
code: 'INVALID_REQUEST',
|
|
55
|
-
message: parseResult.error.message,
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
61
|
-
const request = parseResult.data;
|
|
62
|
-
if (inFlightRequestIds.has(request.id)) {
|
|
63
|
-
await sendResponse(request.id, false, {
|
|
64
|
-
error: {
|
|
65
|
-
code: 'BUSY',
|
|
66
|
-
message: `Request ID ${request.id} is already in flight`,
|
|
67
|
-
},
|
|
68
|
-
});
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
inFlightRequestIds.add(request.id);
|
|
72
|
-
(async () => {
|
|
73
|
-
try {
|
|
74
|
-
let result;
|
|
75
|
-
if (request.method === 'initialize') {
|
|
76
|
-
result = await runtime.initialize(request);
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
result = await runtime.dispatch(request);
|
|
80
|
-
}
|
|
81
|
-
await sendResponse(request.id, true, { result });
|
|
82
|
-
}
|
|
83
|
-
catch (err) {
|
|
84
|
-
await sendResponse(request.id, false, {
|
|
85
|
-
error: {
|
|
86
|
-
code: err.code || 'INTERNAL_ERROR',
|
|
87
|
-
message: err.message || 'Internal host error',
|
|
88
|
-
},
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
finally {
|
|
92
|
-
inFlightRequestIds.delete(request.id);
|
|
93
|
-
}
|
|
94
|
-
})();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
finally {
|
|
98
|
-
await runtime.close();
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
//# sourceMappingURL=protocol_server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protocol_server.js","sourceRoot":"","sources":["../../src/host/protocol_server.ts"],"names":[],"mappings":"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"}
|
package/dist/host/runtime.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { HostNotification, HostRequest, InitializeRequest, InitializeResult, IProviderAdapter, IToolRegistry } from '@moderado/contracts';
|
|
2
|
-
import { AgentLoop } from '@moderado/core';
|
|
3
|
-
import { CredentialStore } from '../credentials.js';
|
|
4
|
-
import { SessionStore } from '../sessions.js';
|
|
5
|
-
import { ApprovalQueue } from './approval_queue.js';
|
|
6
|
-
export interface HostRuntimeDependencies {
|
|
7
|
-
provider?: IProviderAdapter;
|
|
8
|
-
credentialStore?: CredentialStore;
|
|
9
|
-
customHome?: string;
|
|
10
|
-
tools?: IToolRegistry;
|
|
11
|
-
sessionStore?: SessionStore;
|
|
12
|
-
agentLoop?: AgentLoop;
|
|
13
|
-
}
|
|
14
|
-
export interface CreateHostRuntimeOptions {
|
|
15
|
-
workspaceRoot: string;
|
|
16
|
-
emit: (notification: HostNotification) => Promise<void>;
|
|
17
|
-
dependencies?: HostRuntimeDependencies;
|
|
18
|
-
providerId?: string;
|
|
19
|
-
modelId?: string;
|
|
20
|
-
}
|
|
21
|
-
export interface HostRuntime {
|
|
22
|
-
readonly approvalQueue: ApprovalQueue;
|
|
23
|
-
readonly canonicalWorkspaceRoot: string;
|
|
24
|
-
initialize(request?: InitializeRequest): Promise<InitializeResult>;
|
|
25
|
-
dispatch(request: HostRequest): Promise<unknown>;
|
|
26
|
-
waitForActiveGeneration?(): Promise<void>;
|
|
27
|
-
close(): Promise<void>;
|
|
28
|
-
}
|
|
29
|
-
export declare function createHostRuntime(options: CreateHostRuntimeOptions): Promise<HostRuntime>;
|
|
30
|
-
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/host/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EAId,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,SAAS,EAA0C,MAAM,gBAAgB,CAAC;AAuBnF,OAAO,EAAE,eAAe,EAAyB,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EAAiB,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAIjF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,CAAC,YAAY,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnE,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,uBAAuB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAyCD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC,CAunB/F"}
|