@agent-deck/cli 1.8.1 → 1.9.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/agent-harness.d.ts +5 -2
- package/dist/agent-harness.d.ts.map +1 -1
- package/dist/agent-harness.js +18 -7
- package/dist/agent-harness.js.map +1 -1
- package/dist/assignment.d.ts +19 -0
- package/dist/assignment.d.ts.map +1 -0
- package/dist/assignment.js +161 -0
- package/dist/assignment.js.map +1 -0
- package/dist/cursor-mcp-inspect.d.ts +3 -2
- package/dist/cursor-mcp-inspect.d.ts.map +1 -1
- package/dist/cursor-mcp-inspect.js +7 -5
- package/dist/cursor-mcp-inspect.js.map +1 -1
- package/dist/debug-mcp.d.ts +25 -0
- package/dist/debug-mcp.d.ts.map +1 -1
- package/dist/debug-mcp.js +93 -25
- package/dist/debug-mcp.js.map +1 -1
- package/dist/grant-issue.d.ts +0 -5
- package/dist/grant-issue.d.ts.map +1 -1
- package/dist/grant-issue.js +19 -70
- package/dist/grant-issue.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/mcp-config.d.ts.map +1 -1
- package/dist/mcp-config.js +8 -5
- package/dist/mcp-config.js.map +1 -1
- package/dist/mcp-launcher.d.ts +13 -0
- package/dist/mcp-launcher.d.ts.map +1 -1
- package/dist/mcp-launcher.js +42 -10
- package/dist/mcp-launcher.js.map +1 -1
- package/dist/playbook-stubs.d.ts +8 -3
- package/dist/playbook-stubs.d.ts.map +1 -1
- package/dist/playbook-stubs.js +2 -1
- package/dist/playbook-stubs.js.map +1 -1
- package/dist/setup.d.ts +6 -4
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +50 -25
- package/dist/setup.js.map +1 -1
- package/dist/start.d.ts +1 -0
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +6 -2
- package/dist/start.js.map +1 -1
- package/dist/use.d.ts.map +1 -1
- package/dist/use.js +14 -52
- package/dist/use.js.map +1 -1
- package/package.json +3 -3
- package/dist/coordinator.d.ts +0 -2
- package/dist/coordinator.d.ts.map +0 -1
- package/dist/coordinator.js +0 -153
- package/dist/coordinator.js.map +0 -1
package/dist/use.js
CHANGED
|
@@ -8,13 +8,13 @@ exports.runUse = runUse;
|
|
|
8
8
|
exports.formatUseSummary = formatUseSummary;
|
|
9
9
|
exports.runUseCommand = runUseCommand;
|
|
10
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
const shared_1 = require("@agent-deck/shared");
|
|
11
12
|
const backend_runtime_1 = require("./backend-runtime");
|
|
12
13
|
const defaults_1 = require("./defaults");
|
|
13
14
|
const mcp_config_1 = require("./mcp-config");
|
|
14
15
|
const cursor_mcp_inspect_1 = require("./cursor-mcp-inspect");
|
|
15
16
|
const playbook_stubs_1 = require("./playbook-stubs");
|
|
16
|
-
const
|
|
17
|
-
const grant_store_1 = require("./grant-store");
|
|
17
|
+
const assignment_1 = require("./assignment");
|
|
18
18
|
const playbook_stubs_2 = require("./playbook-stubs");
|
|
19
19
|
function parseUseClient(value) {
|
|
20
20
|
if (!value || value === 'both') {
|
|
@@ -91,26 +91,20 @@ function clientsToWrite(target) {
|
|
|
91
91
|
}
|
|
92
92
|
return ['cursor', 'claude'];
|
|
93
93
|
}
|
|
94
|
-
function resolveGrantStoreKind() {
|
|
95
|
-
if (process.env.AGENT_DECK_GRANT_STORE === 'file' || process.env.AGENT_DECK_DEV === '1') {
|
|
96
|
-
return 'file';
|
|
97
|
-
}
|
|
98
|
-
return process.platform === 'darwin' ? 'keychain' : 'file';
|
|
99
|
-
}
|
|
100
94
|
async function runUse(parsed) {
|
|
101
95
|
const admin = (0, backend_runtime_1.createCollectionAdmin)();
|
|
102
96
|
if (parsed.refresh) {
|
|
103
|
-
const
|
|
104
|
-
const legacy = (0, playbook_stubs_2.
|
|
97
|
+
const assignment = await (0, assignment_1.readAssignment)(parsed.workspaceRoot);
|
|
98
|
+
const legacy = (0, playbook_stubs_2.readLegacyUseManifestV1)(parsed.workspaceRoot);
|
|
105
99
|
const inspection = (0, cursor_mcp_inspect_1.inspectCursorMcpConfig)({
|
|
106
100
|
cwd: parsed.workspaceRoot,
|
|
107
101
|
endpoint: { host: parsed.host, mcpPort: parsed.mcpPort },
|
|
108
102
|
});
|
|
109
103
|
console.log((0, cursor_mcp_inspect_1.formatCursorMcpInspection)(inspection));
|
|
110
|
-
if (
|
|
111
|
-
console.log(`Bound deck: ${
|
|
112
|
-
console.log(
|
|
113
|
-
console.log('To
|
|
104
|
+
if (assignment) {
|
|
105
|
+
console.log(`Bound deck: ${assignment.deckName} (${assignment.deckId})`);
|
|
106
|
+
console.log('Assignment: .agent-deck/use.json (folder → deck)');
|
|
107
|
+
console.log('To change deck, run: agent-deck use <deck>');
|
|
114
108
|
return { error: 'refresh-diagnosis-only' };
|
|
115
109
|
}
|
|
116
110
|
if (legacy) {
|
|
@@ -118,7 +112,7 @@ async function runUse(parsed) {
|
|
|
118
112
|
console.log(`Run explicitly: agent-deck use ${legacy.deckName}`);
|
|
119
113
|
return { error: 'refresh-diagnosis-only' };
|
|
120
114
|
}
|
|
121
|
-
console.log('No
|
|
115
|
+
console.log('No deck assignment — run: agent-deck use <deck>');
|
|
122
116
|
return { error: 'refresh-diagnosis-only' };
|
|
123
117
|
}
|
|
124
118
|
let deckRef = parsed.deckRef;
|
|
@@ -132,44 +126,11 @@ async function runUse(parsed) {
|
|
|
132
126
|
const playbooks = await admin.listDeckPlaybookStubs(deck.id);
|
|
133
127
|
const endpoint = { host: parsed.host, mcpPort: parsed.mcpPort };
|
|
134
128
|
const mcpUrl = (0, mcp_config_1.buildMcpUrl)(endpoint);
|
|
135
|
-
const
|
|
136
|
-
workspaceRoot: parsed.workspaceRoot,
|
|
129
|
+
const manifestPath = await (0, assignment_1.writeAssignment)(parsed.workspaceRoot, {
|
|
137
130
|
deckId: deck.id,
|
|
138
|
-
|
|
131
|
+
deckName: deck.name,
|
|
132
|
+
mcpUrl,
|
|
139
133
|
});
|
|
140
|
-
if ('error' in issued) {
|
|
141
|
-
return { error: issued.error };
|
|
142
|
-
}
|
|
143
|
-
const storeKind = resolveGrantStoreKind();
|
|
144
|
-
const manifest = (0, grant_issue_1.toGrantManifest)(issued, mcpUrl, storeKind);
|
|
145
|
-
const fileStore = new grant_store_1.FileGrantStore(parsed.workspaceRoot);
|
|
146
|
-
const keychainStore = storeKind === 'keychain' ? new grant_store_1.KeychainGrantStore(parsed.workspaceRoot) : null;
|
|
147
|
-
try {
|
|
148
|
-
await fileStore.stage(manifest);
|
|
149
|
-
if (keychainStore) {
|
|
150
|
-
await keychainStore.stage(manifest);
|
|
151
|
-
}
|
|
152
|
-
const activated = await (0, grant_issue_1.activateWorkspaceGrant)({
|
|
153
|
-
grantId: issued.grantId,
|
|
154
|
-
host: parsed.host,
|
|
155
|
-
});
|
|
156
|
-
if ('error' in activated) {
|
|
157
|
-
throw new Error(activated.error);
|
|
158
|
-
}
|
|
159
|
-
await fileStore.activate();
|
|
160
|
-
if (keychainStore) {
|
|
161
|
-
await keychainStore.activate();
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
catch (error) {
|
|
165
|
-
await (0, grant_issue_1.revokePendingWorkspaceGrant)({ grantId: issued.grantId, host: parsed.host });
|
|
166
|
-
await fileStore.rollback();
|
|
167
|
-
if (keychainStore) {
|
|
168
|
-
await keychainStore.rollback();
|
|
169
|
-
}
|
|
170
|
-
return { error: error instanceof Error ? error.message : 'Grant installation failed' };
|
|
171
|
-
}
|
|
172
|
-
const manifestPath = node_path_1.default.join(parsed.workspaceRoot, '.agent-deck', 'use.json');
|
|
173
134
|
const mcpWritten = [];
|
|
174
135
|
if (!parsed.skipMcp) {
|
|
175
136
|
for (const client of clientsToWrite(parsed.clients)) {
|
|
@@ -181,7 +142,7 @@ async function runUse(parsed) {
|
|
|
181
142
|
(0, mcp_config_1.writeJsonFile)(configPath, merged);
|
|
182
143
|
mcpWritten.push({ client, path: configPath });
|
|
183
144
|
// Cursor Agent chat loads the user-level MCP server (`user-agent-deck`).
|
|
184
|
-
// Pin it to
|
|
145
|
+
// Pin it to this workspace. Last explicit use wins.
|
|
185
146
|
if (client === 'cursor') {
|
|
186
147
|
const globalResult = (0, mcp_config_1.ensureGlobalCursorMcpLaunch)(endpoint, {
|
|
187
148
|
workspaceRoot: parsed.workspaceRoot,
|
|
@@ -205,6 +166,7 @@ async function runUse(parsed) {
|
|
|
205
166
|
cursor: parsed.clients !== 'claude',
|
|
206
167
|
claude: parsed.clients !== 'cursor',
|
|
207
168
|
});
|
|
169
|
+
(0, shared_1.ensureGitExcluded)(parsed.workspaceRoot);
|
|
208
170
|
return {
|
|
209
171
|
deck,
|
|
210
172
|
mcpUrl,
|
package/dist/use.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use.js","sourceRoot":"","sources":["../src/use.ts"],"names":[],"mappings":";;;;;AAoDA,oCAoDC;
|
|
1
|
+
{"version":3,"file":"use.js","sourceRoot":"","sources":["../src/use.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-deck/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "Local MCP proxy — decks of tools, keys, and self-improving playbooks",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"bin": {
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
"prepublishOnly": "node ../../scripts/pre-publish-check.mjs && npm run build"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@agent-deck/backend": "^1.
|
|
44
|
-
"@agent-deck/shared": "^1.
|
|
43
|
+
"@agent-deck/backend": "^1.9.0",
|
|
44
|
+
"@agent-deck/shared": "^1.9.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/node": "^20.11.5",
|
package/dist/coordinator.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../src/coordinator.ts"],"names":[],"mappings":"AA8CA,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB3E"}
|
package/dist/coordinator.js
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.runCoordinatorCommand = runCoordinatorCommand;
|
|
4
|
-
const defaults_1 = require("./defaults");
|
|
5
|
-
const admin_secret_1 = require("./admin-secret");
|
|
6
|
-
const grant_issue_1 = require("./grant-issue");
|
|
7
|
-
function resolveBackendUrl(host) {
|
|
8
|
-
return `http://${host ?? process.env.AGENT_DECK_HOST ?? '127.0.0.1'}:${(0, defaults_1.readCliBackendPort)()}`;
|
|
9
|
-
}
|
|
10
|
-
async function trustedWriterAuth() {
|
|
11
|
-
const adminSecret = await (0, admin_secret_1.readAdminSecret)();
|
|
12
|
-
if (!adminSecret) {
|
|
13
|
-
return {
|
|
14
|
-
ok: false,
|
|
15
|
-
error: 'No admin secret — run `agent-deck setup` or `agent-deck start` once to initialize ~/.agent-deck/admin-secret',
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
return { ok: true, authorization: `Bearer ${adminSecret}` };
|
|
19
|
-
}
|
|
20
|
-
async function readJson(response) {
|
|
21
|
-
try {
|
|
22
|
-
return (await response.json());
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
async function runCoordinatorCommand(argv) {
|
|
29
|
-
const [action, ...rest] = argv;
|
|
30
|
-
if (!action || action === 'help' || action === '--help' || action === '-h') {
|
|
31
|
-
printCoordinatorUsage();
|
|
32
|
-
return action ? 0 : 1;
|
|
33
|
-
}
|
|
34
|
-
switch (action) {
|
|
35
|
-
case 'enroll':
|
|
36
|
-
return enroll(rest);
|
|
37
|
-
case 'status':
|
|
38
|
-
return status(rest);
|
|
39
|
-
case 'revoke':
|
|
40
|
-
return revoke(rest);
|
|
41
|
-
default:
|
|
42
|
-
console.error(`Unknown coordinator action: ${action}`);
|
|
43
|
-
printCoordinatorUsage();
|
|
44
|
-
return 1;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
function printCoordinatorUsage() {
|
|
48
|
-
console.log(`Usage:
|
|
49
|
-
agent-deck coordinator enroll --coordinator-id <id> --deck <deckId> [--deck <deckId>...]
|
|
50
|
-
agent-deck coordinator status --enrollment-id <enr_…>
|
|
51
|
-
agent-deck coordinator revoke --enrollment-id <enr_…>
|
|
52
|
-
|
|
53
|
-
Enrolls a local Agent Dealer coordinator to mint short-lived execution authority (NOT-86).
|
|
54
|
-
Dashboard UX is deferred (NOT-90). OS launcher secret delivery is deferred (NOT-89).
|
|
55
|
-
`);
|
|
56
|
-
}
|
|
57
|
-
function parseFlag(args, name) {
|
|
58
|
-
const idx = args.indexOf(name);
|
|
59
|
-
if (idx < 0 || idx + 1 >= args.length)
|
|
60
|
-
return undefined;
|
|
61
|
-
return args[idx + 1];
|
|
62
|
-
}
|
|
63
|
-
function parseRepeatFlag(args, name) {
|
|
64
|
-
const values = [];
|
|
65
|
-
for (let i = 0; i < args.length; i += 1) {
|
|
66
|
-
if (args[i] === name && i + 1 < args.length) {
|
|
67
|
-
values.push(args[i + 1]);
|
|
68
|
-
i += 1;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return values;
|
|
72
|
-
}
|
|
73
|
-
async function enroll(args) {
|
|
74
|
-
const coordinatorId = parseFlag(args, '--coordinator-id');
|
|
75
|
-
const decks = parseRepeatFlag(args, '--deck');
|
|
76
|
-
if (!coordinatorId || decks.length === 0) {
|
|
77
|
-
console.error('Required: --coordinator-id <id> and at least one --deck <deckId>');
|
|
78
|
-
return 1;
|
|
79
|
-
}
|
|
80
|
-
const auth = await trustedWriterAuth();
|
|
81
|
-
if (!auth.ok) {
|
|
82
|
-
console.error(auth.error);
|
|
83
|
-
return 1;
|
|
84
|
-
}
|
|
85
|
-
const response = await fetch(`${resolveBackendUrl()}/api/execution-authority/enrollments`, {
|
|
86
|
-
method: 'POST',
|
|
87
|
-
headers: {
|
|
88
|
-
Authorization: auth.authorization,
|
|
89
|
-
'Content-Type': 'application/json',
|
|
90
|
-
},
|
|
91
|
-
body: JSON.stringify({ coordinatorId, allowedDeckIds: decks }),
|
|
92
|
-
});
|
|
93
|
-
const payload = await readJson(response);
|
|
94
|
-
if (!response.ok || !payload?.ok || !payload.data) {
|
|
95
|
-
console.error((0, grant_issue_1.formatTrustedWriterError)(response.status, payload, 'Failed to enroll coordinator'));
|
|
96
|
-
return 1;
|
|
97
|
-
}
|
|
98
|
-
const data = payload.data;
|
|
99
|
-
console.log(`Enrolled coordinator ${data.enrollment.coordinatorId}`);
|
|
100
|
-
console.log(`enrollmentId: ${data.enrollment.enrollmentId}`);
|
|
101
|
-
console.log(`status: ${data.enrollment.status}`);
|
|
102
|
-
console.log(`allowedDeckIds: ${data.enrollment.allowedDeckIds.join(', ')}`);
|
|
103
|
-
console.log('');
|
|
104
|
-
console.log('Store this enrollment secret for Dealer mint calls (shown once):');
|
|
105
|
-
console.log(`enrollmentSecret: ${data.enrollmentSecret}`);
|
|
106
|
-
console.log(`Bearer token form: ${data.enrollment.enrollmentId}:${data.enrollmentSecret}`);
|
|
107
|
-
return 0;
|
|
108
|
-
}
|
|
109
|
-
async function status(args) {
|
|
110
|
-
const enrollmentId = parseFlag(args, '--enrollment-id');
|
|
111
|
-
if (!enrollmentId) {
|
|
112
|
-
console.error('Required: --enrollment-id <enr_…>');
|
|
113
|
-
return 1;
|
|
114
|
-
}
|
|
115
|
-
const auth = await trustedWriterAuth();
|
|
116
|
-
if (!auth.ok) {
|
|
117
|
-
console.error(auth.error);
|
|
118
|
-
return 1;
|
|
119
|
-
}
|
|
120
|
-
const response = await fetch(`${resolveBackendUrl()}/api/execution-authority/enrollments/${encodeURIComponent(enrollmentId)}`, { headers: { Authorization: auth.authorization } });
|
|
121
|
-
const payload = await readJson(response);
|
|
122
|
-
if (!response.ok || !payload?.ok || !payload.data) {
|
|
123
|
-
console.error((0, grant_issue_1.formatTrustedWriterError)(response.status, payload, 'Failed to load enrollment'));
|
|
124
|
-
return 1;
|
|
125
|
-
}
|
|
126
|
-
const enrollment = payload.data;
|
|
127
|
-
console.log(JSON.stringify(enrollment, null, 2));
|
|
128
|
-
return 0;
|
|
129
|
-
}
|
|
130
|
-
async function revoke(args) {
|
|
131
|
-
const enrollmentId = parseFlag(args, '--enrollment-id');
|
|
132
|
-
if (!enrollmentId) {
|
|
133
|
-
console.error('Required: --enrollment-id <enr_…>');
|
|
134
|
-
return 1;
|
|
135
|
-
}
|
|
136
|
-
const auth = await trustedWriterAuth();
|
|
137
|
-
if (!auth.ok) {
|
|
138
|
-
console.error(auth.error);
|
|
139
|
-
return 1;
|
|
140
|
-
}
|
|
141
|
-
const response = await fetch(`${resolveBackendUrl()}/api/execution-authority/enrollments/${encodeURIComponent(enrollmentId)}/revoke`, {
|
|
142
|
-
method: 'POST',
|
|
143
|
-
headers: { Authorization: auth.authorization },
|
|
144
|
-
});
|
|
145
|
-
const payload = await readJson(response);
|
|
146
|
-
if (!response.ok || !payload?.ok) {
|
|
147
|
-
console.error((0, grant_issue_1.formatTrustedWriterError)(response.status, payload, 'Failed to revoke enrollment'));
|
|
148
|
-
return 1;
|
|
149
|
-
}
|
|
150
|
-
console.log(`Revoked enrollment ${enrollmentId}`);
|
|
151
|
-
return 0;
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=coordinator.js.map
|
package/dist/coordinator.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../src/coordinator.ts"],"names":[],"mappings":";;AA8CA,sDAmBC;AAjED,yCAAgD;AAChD,iDAAiD;AACjD,+CAAyD;AAMzD,SAAS,iBAAiB,CAAC,IAAa;IACtC,OAAO,UAAU,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,WAAW,IAAI,IAAA,6BAAkB,GAAE,EAAE,CAAC;AAChG,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,WAAW,GAAG,MAAM,IAAA,8BAAe,GAAE,CAAC;IAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EACH,8GAA8G;SACjH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,QAAkB;IAQxC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAO5B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAAC,IAAc;IACxD,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC3E,qBAAqB,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB;YACE,OAAO,CAAC,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;YACvD,qBAAqB,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO,CAAC,GAAG,CAAC;;;;;;;CAOb,CAAC,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAc,EAAE,IAAY;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IACxD,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,eAAe,CAAC,IAAc,EAAE,IAAY;IACnD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAc;IAClC,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QAClF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,iBAAiB,EAAE,sCAAsC,EAAE;QACzF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;KAC/D,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,CAAC,KAAK,CACX,IAAA,sCAAwB,EAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,8BAA8B,CAAC,CACnF,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAQpB,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC3F,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAc;IAClC,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACxD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,iBAAiB,EAAE,wCAAwC,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAChG,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CACnD,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,IAAA,sCAAwB,EAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC;QAC/F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAO1B,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAc;IAClC,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACxD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,iBAAiB,EAAE,wCAAwC,kBAAkB,CAAC,YAAY,CAAC,SAAS,EACvG;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;KAC/C,CACF,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,IAAA,sCAAwB,EAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,6BAA6B,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,CAAC;AACX,CAAC"}
|