@pickle-pee/runtime 0.0.0 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/adapters/pi-mono-session-adapter.d.ts +29 -0
  2. package/dist/adapters/pi-mono-session-adapter.js +20 -6
  3. package/dist/adapters/pi-mono-session-adapter.js.map +1 -1
  4. package/package.json +3 -3
  5. package/dist/test/aggregation.test.d.ts +0 -1
  6. package/dist/test/aggregation.test.js +0 -201
  7. package/dist/test/aggregation.test.js.map +0 -1
  8. package/dist/test/create-app-runtime.test.d.ts +0 -1
  9. package/dist/test/create-app-runtime.test.js +0 -286
  10. package/dist/test/create-app-runtime.test.js.map +0 -1
  11. package/dist/test/event-bus.test.d.ts +0 -1
  12. package/dist/test/event-bus.test.js +0 -81
  13. package/dist/test/event-bus.test.js.map +0 -1
  14. package/dist/test/event-normalizer.test.d.ts +0 -1
  15. package/dist/test/event-normalizer.test.js +0 -143
  16. package/dist/test/event-normalizer.test.js.map +0 -1
  17. package/dist/test/path-scope.test.d.ts +0 -1
  18. package/dist/test/path-scope.test.js +0 -71
  19. package/dist/test/path-scope.test.js.map +0 -1
  20. package/dist/test/pi-mono-event-bridge.test.d.ts +0 -1
  21. package/dist/test/pi-mono-event-bridge.test.js +0 -125
  22. package/dist/test/pi-mono-event-bridge.test.js.map +0 -1
  23. package/dist/test/pi-mono-live.test.d.ts +0 -1
  24. package/dist/test/pi-mono-live.test.js +0 -289
  25. package/dist/test/pi-mono-live.test.js.map +0 -1
  26. package/dist/test/pi-mono-session-adapter.test.d.ts +0 -1
  27. package/dist/test/pi-mono-session-adapter.test.js +0 -260
  28. package/dist/test/pi-mono-session-adapter.test.js.map +0 -1
  29. package/dist/test/plan-engine.test.d.ts +0 -1
  30. package/dist/test/plan-engine.test.js +0 -235
  31. package/dist/test/plan-engine.test.js.map +0 -1
  32. package/dist/test/plan-events.test.d.ts +0 -1
  33. package/dist/test/plan-events.test.js +0 -81
  34. package/dist/test/plan-events.test.js.map +0 -1
  35. package/dist/test/plan-orchestrator.test.d.ts +0 -1
  36. package/dist/test/plan-orchestrator.test.js +0 -324
  37. package/dist/test/plan-orchestrator.test.js.map +0 -1
  38. package/dist/test/runtime-context.test.d.ts +0 -1
  39. package/dist/test/runtime-context.test.js +0 -70
  40. package/dist/test/runtime-context.test.js.map +0 -1
  41. package/dist/test/session-facade.test.d.ts +0 -1
  42. package/dist/test/session-facade.test.js +0 -1011
  43. package/dist/test/session-facade.test.js.map +0 -1
  44. package/dist/test/session-state.test.d.ts +0 -1
  45. package/dist/test/session-state.test.js +0 -118
  46. package/dist/test/session-state.test.js.map +0 -1
  47. package/dist/test/stop-condition.test.d.ts +0 -1
  48. package/dist/test/stop-condition.test.js +0 -105
  49. package/dist/test/stop-condition.test.js.map +0 -1
  50. package/dist/test/stubs/stub-kernel-session-adapter.d.ts +0 -45
  51. package/dist/test/stubs/stub-kernel-session-adapter.js +0 -186
  52. package/dist/test/stubs/stub-kernel-session-adapter.js.map +0 -1
  53. package/dist/test/task-validator.test.d.ts +0 -1
  54. package/dist/test/task-validator.test.js +0 -97
  55. package/dist/test/task-validator.test.js.map +0 -1
  56. package/dist/test/tool-governor.test.d.ts +0 -1
  57. package/dist/test/tool-governor.test.js +0 -379
  58. package/dist/test/tool-governor.test.js.map +0 -1
@@ -1,97 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const task_validator_js_1 = require("../subagent/task-validator.js");
5
- // ---------------------------------------------------------------------------
6
- // Helpers
7
- // ---------------------------------------------------------------------------
8
- function makeTask(overrides) {
9
- return {
10
- taskId: "task-001",
11
- goal: "Implement feature X",
12
- scope: {
13
- allowedPaths: ["packages/app-runtime/**"],
14
- forbiddenPaths: ["packages/app-ui/**"],
15
- },
16
- inputs: { docs: [], files: [], assumptions: [] },
17
- deliverables: ["code"],
18
- verification: [{ name: "build", type: "command", command: "npm run build", description: "Build passes" }],
19
- stopConditions: [{ type: "boundary_violation", description: "Stop on boundary violation" }],
20
- ...overrides,
21
- };
22
- }
23
- // ---------------------------------------------------------------------------
24
- // Tests
25
- // ---------------------------------------------------------------------------
26
- (0, vitest_1.describe)("TaskValidator", () => {
27
- (0, vitest_1.describe)("validateTask", () => {
28
- (0, vitest_1.it)("accepts a valid task", () => {
29
- const result = (0, task_validator_js_1.validateTask)(makeTask());
30
- (0, vitest_1.expect)(result.valid).toBe(true);
31
- (0, vitest_1.expect)(result.errors).toHaveLength(0);
32
- });
33
- (0, vitest_1.it)("rejects task without taskId", () => {
34
- const result = (0, task_validator_js_1.validateTask)(makeTask({ taskId: "" }));
35
- (0, vitest_1.expect)(result.valid).toBe(false);
36
- (0, vitest_1.expect)(result.errors).toContain("taskId must be non-empty");
37
- });
38
- (0, vitest_1.it)("rejects task with whitespace-only taskId", () => {
39
- const result = (0, task_validator_js_1.validateTask)(makeTask({ taskId: " " }));
40
- (0, vitest_1.expect)(result.valid).toBe(false);
41
- });
42
- (0, vitest_1.it)("rejects task without goal", () => {
43
- const result = (0, task_validator_js_1.validateTask)(makeTask({ goal: "" }));
44
- (0, vitest_1.expect)(result.valid).toBe(false);
45
- (0, vitest_1.expect)(result.errors).toContain("goal must be non-empty");
46
- });
47
- (0, vitest_1.it)("rejects task without allowedPaths", () => {
48
- const result = (0, task_validator_js_1.validateTask)(makeTask({ scope: { allowedPaths: [], forbiddenPaths: [] } }));
49
- (0, vitest_1.expect)(result.valid).toBe(false);
50
- (0, vitest_1.expect)(result.errors.some((e) => e.includes("allowedPaths"))).toBe(true);
51
- });
52
- (0, vitest_1.it)("rejects task without verification", () => {
53
- const result = (0, task_validator_js_1.validateTask)(makeTask({ verification: [] }));
54
- (0, vitest_1.expect)(result.valid).toBe(false);
55
- (0, vitest_1.expect)(result.errors.some((e) => e.includes("verification"))).toBe(true);
56
- });
57
- (0, vitest_1.it)("rejects task without stopConditions", () => {
58
- const result = (0, task_validator_js_1.validateTask)(makeTask({ stopConditions: [] }));
59
- (0, vitest_1.expect)(result.valid).toBe(false);
60
- (0, vitest_1.expect)(result.errors.some((e) => e.includes("stopConditions"))).toBe(true);
61
- });
62
- (0, vitest_1.it)("collects multiple errors at once", () => {
63
- const result = (0, task_validator_js_1.validateTask)(makeTask({ taskId: "", goal: "", verification: [], stopConditions: [] }));
64
- (0, vitest_1.expect)(result.valid).toBe(false);
65
- (0, vitest_1.expect)(result.errors.length).toBeGreaterThanOrEqual(4);
66
- });
67
- });
68
- (0, vitest_1.describe)("hasRequiredFields", () => {
69
- (0, vitest_1.it)("returns valid for complete task", () => {
70
- const result = (0, task_validator_js_1.hasRequiredFields)(makeTask());
71
- (0, vitest_1.expect)(result.valid).toBe(true);
72
- });
73
- (0, vitest_1.it)("lists missing field names", () => {
74
- const result = (0, task_validator_js_1.hasRequiredFields)(makeTask({ taskId: "", verification: [] }));
75
- (0, vitest_1.expect)(result.valid).toBe(false);
76
- (0, vitest_1.expect)(result.errors).toContain("taskId");
77
- (0, vitest_1.expect)(result.errors).toContain("verification");
78
- });
79
- });
80
- (0, vitest_1.describe)("hasConsistentScope", () => {
81
- (0, vitest_1.it)("returns valid for non-overlapping scope", () => {
82
- const scope = {
83
- allowedPaths: ["packages/a/**"],
84
- forbiddenPaths: ["packages/b/**"],
85
- };
86
- (0, vitest_1.expect)((0, task_validator_js_1.hasConsistentScope)(scope).valid).toBe(true);
87
- });
88
- (0, vitest_1.it)("detects overlapping scope", () => {
89
- const scope = {
90
- allowedPaths: ["packages/a/**"],
91
- forbiddenPaths: ["packages/a/**"],
92
- };
93
- (0, vitest_1.expect)((0, task_validator_js_1.hasConsistentScope)(scope).valid).toBe(false);
94
- });
95
- });
96
- });
97
- //# sourceMappingURL=task-validator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task-validator.test.js","sourceRoot":"","sources":["../../src/test/task-validator.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,379 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const tool_governor_js_1 = require("../governance/tool-governor.js");
5
- // ---------------------------------------------------------------------------
6
- // Test helpers
7
- // ---------------------------------------------------------------------------
8
- function makeToolDef(overrides = {}) {
9
- return {
10
- identity: {
11
- name: "test_tool",
12
- category: "file-read",
13
- },
14
- contract: {
15
- parameterSchema: { type: "object", properties: {} },
16
- output: { type: "text" },
17
- errorTypes: [],
18
- },
19
- policy: {
20
- riskLevel: "L0",
21
- readOnly: true,
22
- concurrency: "unlimited",
23
- confirmation: "never",
24
- subAgentAllowed: true,
25
- timeoutMs: 0,
26
- },
27
- executorTag: "test_tool",
28
- ...overrides,
29
- };
30
- }
31
- const L0_READ = makeToolDef();
32
- const L2_EDIT = makeToolDef({
33
- identity: { name: "edit", category: "file-mutation" },
34
- policy: {
35
- riskLevel: "L2",
36
- readOnly: false,
37
- concurrency: "per_target",
38
- confirmation: "on_write",
39
- subAgentAllowed: true,
40
- timeoutMs: 30_000,
41
- },
42
- executorTag: "edit",
43
- });
44
- const L3_BASH = makeToolDef({
45
- identity: { name: "bash", category: "command-execution" },
46
- policy: {
47
- riskLevel: "L3",
48
- readOnly: false,
49
- concurrency: "unlimited",
50
- confirmation: "always",
51
- subAgentAllowed: false,
52
- timeoutMs: 120_000,
53
- },
54
- executorTag: "bash",
55
- });
56
- // ---------------------------------------------------------------------------
57
- // Tests
58
- // ---------------------------------------------------------------------------
59
- (0, vitest_1.describe)("ToolGovernor", () => {
60
- function executionContext(overrides = {}) {
61
- return {
62
- sessionId: "session-1",
63
- toolName: "test_tool",
64
- toolCallId: "call_1",
65
- workingDirectory: "/project",
66
- sessionMode: "interactive",
67
- isSubAgent: false,
68
- ...overrides,
69
- };
70
- }
71
- (0, vitest_1.describe)("beforeExecution", () => {
72
- (0, vitest_1.it)("allows a registered L0 tool", () => {
73
- const governor = (0, tool_governor_js_1.createToolGovernor)();
74
- governor.catalog.register(L0_READ);
75
- const decision = governor.beforeExecution(executionContext());
76
- (0, vitest_1.expect)(decision.type).toBe("allow");
77
- });
78
- (0, vitest_1.it)("denies an unregistered tool", () => {
79
- const governor = (0, tool_governor_js_1.createToolGovernor)();
80
- const decision = governor.beforeExecution(executionContext({ toolName: "unknown_tool" }));
81
- (0, vitest_1.expect)(decision.type).toBe("deny");
82
- if (decision.type === "deny") {
83
- (0, vitest_1.expect)(decision.reason).toContain("not registered");
84
- }
85
- });
86
- (0, vitest_1.it)("returns ask_user for L2 tool without prior approval", () => {
87
- const governor = (0, tool_governor_js_1.createToolGovernor)();
88
- governor.catalog.register(L2_EDIT);
89
- const decision = governor.beforeExecution(executionContext({
90
- toolName: "edit",
91
- targetPath: "/project/src/main.ts",
92
- }));
93
- (0, vitest_1.expect)(decision.type).toBe("ask_user");
94
- if (decision.type === "ask_user") {
95
- (0, vitest_1.expect)(decision.riskLevel).toBe("L2");
96
- }
97
- });
98
- (0, vitest_1.it)("denies when mutation queue has conflict for per_target tool", () => {
99
- const governor = (0, tool_governor_js_1.createToolGovernor)();
100
- governor.catalog.register(L2_EDIT);
101
- // First call: approve via session approval
102
- governor.recordSessionApproval({
103
- sessionId: "session-1",
104
- toolName: "edit",
105
- riskLevel: "L2",
106
- targetPattern: "/project/src/main.ts",
107
- verdict: "allow_for_session",
108
- grantedAt: Date.now(),
109
- });
110
- // First execution: accepted
111
- const first = governor.beforeExecution(executionContext({
112
- toolName: "edit",
113
- toolCallId: "call_1",
114
- targetPath: "/project/src/main.ts",
115
- }));
116
- (0, vitest_1.expect)(first.type).toBe("allow");
117
- // Second execution to same file: conflict
118
- const second = governor.beforeExecution(executionContext({
119
- toolName: "edit",
120
- toolCallId: "call_2",
121
- targetPath: "/project/src/main.ts",
122
- }));
123
- (0, vitest_1.expect)(second.type).toBe("deny");
124
- if (second.type === "deny") {
125
- (0, vitest_1.expect)(second.reason).toContain("already being mutated");
126
- }
127
- });
128
- (0, vitest_1.it)("denies sub-agent restricted tool", () => {
129
- const governor = (0, tool_governor_js_1.createToolGovernor)();
130
- governor.catalog.register(L3_BASH);
131
- const decision = governor.beforeExecution(executionContext({
132
- toolName: "bash",
133
- isSubAgent: true,
134
- }));
135
- (0, vitest_1.expect)(decision.type).toBe("deny");
136
- });
137
- (0, vitest_1.it)("mentions outside-cwd paths using the real working directory", () => {
138
- const governor = (0, tool_governor_js_1.createToolGovernor)();
139
- governor.catalog.register(L2_EDIT);
140
- const decision = governor.beforeExecution(executionContext({
141
- toolName: "edit",
142
- targetPath: "/etc/passwd",
143
- }));
144
- (0, vitest_1.expect)(decision.type).toBe("ask_user");
145
- if (decision.type === "ask_user") {
146
- (0, vitest_1.expect)(decision.reason).toContain("outside working directory");
147
- }
148
- });
149
- (0, vitest_1.it)("escalates destructive commands to L4 before permission evaluation", () => {
150
- const governor = (0, tool_governor_js_1.createToolGovernor)();
151
- governor.catalog.register(L3_BASH);
152
- const decision = governor.beforeExecution(executionContext({
153
- toolName: "bash",
154
- parameters: { command: "rm -rf /tmp/danger" },
155
- }));
156
- (0, vitest_1.expect)(decision.type).toBe("deny");
157
- if (decision.type === "deny") {
158
- (0, vitest_1.expect)(decision.riskLevel).toBe("L4");
159
- }
160
- });
161
- (0, vitest_1.it)("auto-allows read-only pwd commands for bash", () => {
162
- const governor = (0, tool_governor_js_1.createToolGovernor)();
163
- governor.catalog.register(L3_BASH);
164
- const decision = governor.beforeExecution(executionContext({
165
- toolName: "bash",
166
- parameters: { command: "pwd -P" },
167
- }));
168
- (0, vitest_1.expect)(decision.type).toBe("allow");
169
- });
170
- (0, vitest_1.it)("auto-allows read-only ls commands for bash", () => {
171
- const governor = (0, tool_governor_js_1.createToolGovernor)();
172
- governor.catalog.register(L3_BASH);
173
- const decision = governor.beforeExecution(executionContext({
174
- toolName: "bash",
175
- parameters: { command: "ls -lah src" },
176
- }));
177
- (0, vitest_1.expect)(decision.type).toBe("allow");
178
- });
179
- (0, vitest_1.it)("auto-allows cat for bash", () => {
180
- const governor = (0, tool_governor_js_1.createToolGovernor)();
181
- governor.catalog.register(L3_BASH);
182
- const decision = governor.beforeExecution(executionContext({
183
- toolName: "bash",
184
- toolCallId: "call_cat",
185
- parameters: { command: "cat README.md" },
186
- }));
187
- (0, vitest_1.expect)(decision.type).toBe("allow");
188
- });
189
- (0, vitest_1.it)("auto-allows head for bash", () => {
190
- const governor = (0, tool_governor_js_1.createToolGovernor)();
191
- governor.catalog.register(L3_BASH);
192
- const decision = governor.beforeExecution(executionContext({
193
- toolName: "bash",
194
- toolCallId: "call_head",
195
- parameters: { command: "head -n 10 README.md" },
196
- }));
197
- (0, vitest_1.expect)(decision.type).toBe("allow");
198
- });
199
- (0, vitest_1.it)("auto-allows tail for bash", () => {
200
- const governor = (0, tool_governor_js_1.createToolGovernor)();
201
- governor.catalog.register(L3_BASH);
202
- const decision = governor.beforeExecution(executionContext({
203
- toolName: "bash",
204
- toolCallId: "call_tail",
205
- parameters: { command: 'tail -f "logs/app.log"' },
206
- }));
207
- (0, vitest_1.expect)(decision.type).toBe("allow");
208
- });
209
- (0, vitest_1.it)("auto-allows wc for bash", () => {
210
- const governor = (0, tool_governor_js_1.createToolGovernor)();
211
- governor.catalog.register(L3_BASH);
212
- const decision = governor.beforeExecution(executionContext({
213
- toolName: "bash",
214
- toolCallId: "call_wc",
215
- parameters: { command: "wc -l src/index.ts" },
216
- }));
217
- (0, vitest_1.expect)(decision.type).toBe("allow");
218
- });
219
- (0, vitest_1.it)("auto-allows grep for bash", () => {
220
- const governor = (0, tool_governor_js_1.createToolGovernor)();
221
- governor.catalog.register(L3_BASH);
222
- const decision = governor.beforeExecution(executionContext({
223
- toolName: "bash",
224
- toolCallId: "call_grep",
225
- parameters: { command: 'grep -n "Genesis CLI" README.md' },
226
- }));
227
- (0, vitest_1.expect)(decision.type).toBe("allow");
228
- });
229
- (0, vitest_1.it)("auto-allows rg for bash", () => {
230
- const governor = (0, tool_governor_js_1.createToolGovernor)();
231
- governor.catalog.register(L3_BASH);
232
- const decision = governor.beforeExecution(executionContext({
233
- toolName: "bash",
234
- toolCallId: "call_rg",
235
- parameters: { command: 'rg -n --glob "*.ts" "createToolGovernor" packages' },
236
- }));
237
- (0, vitest_1.expect)(decision.type).toBe("allow");
238
- });
239
- (0, vitest_1.it)("auto-allows find for bash", () => {
240
- const governor = (0, tool_governor_js_1.createToolGovernor)();
241
- governor.catalog.register(L3_BASH);
242
- const decision = governor.beforeExecution(executionContext({
243
- toolName: "bash",
244
- toolCallId: "call_find",
245
- parameters: { command: 'find . -name "*.ts" -type f' },
246
- }));
247
- (0, vitest_1.expect)(decision.type).toBe("allow");
248
- });
249
- (0, vitest_1.it)("auto-allows fd for bash", () => {
250
- const governor = (0, tool_governor_js_1.createToolGovernor)();
251
- governor.catalog.register(L3_BASH);
252
- const decision = governor.beforeExecution(executionContext({
253
- toolName: "bash",
254
- toolCallId: "call_fd",
255
- parameters: { command: 'fd -t f "governor" packages' },
256
- }));
257
- (0, vitest_1.expect)(decision.type).toBe("allow");
258
- });
259
- (0, vitest_1.it)("still asks for non-allowlisted bash commands", () => {
260
- const governor = (0, tool_governor_js_1.createToolGovernor)();
261
- governor.catalog.register(L3_BASH);
262
- const decision = governor.beforeExecution(executionContext({
263
- toolName: "bash",
264
- parameters: { command: "echo hello" },
265
- }));
266
- (0, vitest_1.expect)(decision.type).toBe("ask_user");
267
- });
268
- (0, vitest_1.it)("still asks for risky rg forms even though rg is readonly by default", () => {
269
- const governor = (0, tool_governor_js_1.createToolGovernor)();
270
- governor.catalog.register(L3_BASH);
271
- const decision = governor.beforeExecution(executionContext({
272
- toolName: "bash",
273
- toolCallId: "call_rg_risky",
274
- parameters: { command: 'rg --pre "bash" foo' },
275
- }));
276
- (0, vitest_1.expect)(decision.type).toBe("ask_user");
277
- });
278
- (0, vitest_1.it)("still asks for risky find forms", () => {
279
- const governor = (0, tool_governor_js_1.createToolGovernor)();
280
- governor.catalog.register(L3_BASH);
281
- const decision = governor.beforeExecution(executionContext({
282
- toolName: "bash",
283
- toolCallId: "call_find_risky",
284
- parameters: { command: 'find . -name "*.ts" -delete' },
285
- }));
286
- (0, vitest_1.expect)(decision.type).toBe("ask_user");
287
- });
288
- });
289
- (0, vitest_1.describe)("afterExecution", () => {
290
- (0, vitest_1.it)("records in audit log", () => {
291
- const governor = (0, tool_governor_js_1.createToolGovernor)();
292
- governor.catalog.register(L0_READ);
293
- governor.beforeExecution(executionContext());
294
- governor.afterExecution({
295
- toolName: "test_tool",
296
- toolCallId: "call_1",
297
- status: "success",
298
- durationMs: 100,
299
- });
300
- (0, vitest_1.expect)(governor.audit.size).toBe(1);
301
- const entries = governor.audit.getByTool("test_tool");
302
- (0, vitest_1.expect)(entries).toHaveLength(1);
303
- (0, vitest_1.expect)(entries[0].status).toBe("success");
304
- (0, vitest_1.expect)(entries[0].toolCallId).toBe("call_1");
305
- });
306
- (0, vitest_1.it)("releases mutation queue entry for per_target tool", () => {
307
- const governor = (0, tool_governor_js_1.createToolGovernor)();
308
- governor.catalog.register(L2_EDIT);
309
- governor.recordSessionApproval({
310
- sessionId: "session-1",
311
- toolName: "edit",
312
- riskLevel: "L2",
313
- targetPattern: "/project/src/main.ts",
314
- verdict: "allow_for_session",
315
- grantedAt: Date.now(),
316
- });
317
- // First execution
318
- governor.beforeExecution(executionContext({
319
- toolName: "edit",
320
- toolCallId: "call_1",
321
- targetPath: "/project/src/main.ts",
322
- }));
323
- (0, vitest_1.expect)(governor.mutations.isPending("/project/src/main.ts")).toBe(true);
324
- // Complete the first execution
325
- governor.afterExecution({
326
- toolName: "edit",
327
- toolCallId: "call_1",
328
- status: "success",
329
- durationMs: 100,
330
- });
331
- (0, vitest_1.expect)(governor.mutations.isPending("/project/src/main.ts")).toBe(false);
332
- // Second execution should now succeed
333
- const second = governor.beforeExecution(executionContext({
334
- toolName: "edit",
335
- toolCallId: "call_2",
336
- targetPath: "/project/src/main.ts",
337
- }));
338
- (0, vitest_1.expect)(second.type).toBe("allow");
339
- });
340
- });
341
- (0, vitest_1.describe)("recordSessionApproval", () => {
342
- (0, vitest_1.it)("enables subsequent allow for L2 tool", () => {
343
- const governor = (0, tool_governor_js_1.createToolGovernor)();
344
- governor.catalog.register(L2_EDIT);
345
- // Without approval: ask_user
346
- const first = governor.beforeExecution(executionContext({
347
- toolName: "edit",
348
- targetPath: "/project/src/main.ts",
349
- }));
350
- (0, vitest_1.expect)(first.type).toBe("ask_user");
351
- // Record approval
352
- governor.recordSessionApproval({
353
- sessionId: "session-1",
354
- toolName: "edit",
355
- riskLevel: "L2",
356
- targetPattern: "/project/src/main.ts",
357
- verdict: "allow_for_session",
358
- grantedAt: Date.now(),
359
- });
360
- // With approval: allow
361
- const second = governor.beforeExecution(executionContext({
362
- toolName: "edit",
363
- toolCallId: "call_2",
364
- targetPath: "/project/src/main.ts",
365
- }));
366
- (0, vitest_1.expect)(second.type).toBe("allow");
367
- });
368
- });
369
- (0, vitest_1.describe)("governance components", () => {
370
- (0, vitest_1.it)("exposes catalog, permissions, mutations, and audit", () => {
371
- const governor = (0, tool_governor_js_1.createToolGovernor)();
372
- (0, vitest_1.expect)(governor.catalog).toBeDefined();
373
- (0, vitest_1.expect)(governor.permissions).toBeDefined();
374
- (0, vitest_1.expect)(governor.mutations).toBeDefined();
375
- (0, vitest_1.expect)(governor.audit).toBeDefined();
376
- });
377
- });
378
- });
379
- //# sourceMappingURL=tool-governor.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-governor.test.js","sourceRoot":"","sources":["../../src/test/tool-governor.test.ts"],"names":[],"mappings":";;AACA,mCAA8C;AAE9C,qEAAoE;AAEpE,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,SAAS,WAAW,CAAC,YAAqC,EAAE;IAC3D,OAAO;QACN,QAAQ,EAAE;YACT,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,WAAW;SACrB;QACD,QAAQ,EAAE;YACT,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;YACnD,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACxB,UAAU,EAAE,EAAE;SACd;QACD,MAAM,EAAE;YACP,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,WAAW;YACxB,YAAY,EAAE,OAAO;YACrB,eAAe,EAAE,IAAI;YACrB,SAAS,EAAE,CAAC;SACZ;QACD,WAAW,EAAE,WAAW;QACxB,GAAG,SAAS;KACZ,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;AAC9B,MAAM,OAAO,GAAG,WAAW,CAAC;IAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE;IACrD,MAAM,EAAE;QACP,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,YAAY;QACzB,YAAY,EAAE,UAAU;QACxB,eAAe,EAAE,IAAI;QACrB,SAAS,EAAE,MAAM;KACjB;IACD,WAAW,EAAE,MAAM;CACnB,CAAC,CAAC;AACH,MAAM,OAAO,GAAG,WAAW,CAAC;IAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE;IACzD,MAAM,EAAE;QACP,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,WAAW;QACxB,YAAY,EAAE,QAAQ;QACtB,eAAe,EAAE,KAAK;QACtB,SAAS,EAAE,OAAO;KAClB;IACD,WAAW,EAAE,MAAM;CACnB,CAAC,CAAC;AAEH,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,IAAA,iBAAQ,EAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,SAAS,gBAAgB,CAAC,YAA2C,EAAE;QACtE,OAAO;YACN,SAAS,EAAE,WAAW;YACtB,QAAQ,EAAE,WAAW;YACrB,UAAU,EAAE,QAAQ;YACpB,gBAAgB,EAAE,UAAU;YAC5B,WAAW,EAAE,aAAa;YAC1B,UAAU,EAAE,KAAK;YACjB,GAAG,SAAS;SACZ,CAAC;IACH,CAAC;IAED,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;QAChC,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;YACtC,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAE9D,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6BAA6B,EAAE,GAAG,EAAE;YACtC,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YAEtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;YAE1F,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,IAAA,eAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACrD,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;YAC9D,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,sBAAsB;aAClC,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAClC,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;YACtE,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,2CAA2C;YAC3C,QAAQ,CAAC,qBAAqB,CAAC;gBAC9B,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE,MAAM;gBAChB,SAAS,EAAE,IAAI;gBACf,aAAa,EAAE,sBAAsB;gBACrC,OAAO,EAAE,mBAAmB;gBAC5B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC;YAEH,4BAA4B;YAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CACrC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,sBAAsB;aAClC,CAAC,CACF,CAAC;YACF,IAAA,eAAM,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEjC,0CAA0C;YAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CACtC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,sBAAsB;aAClC,CAAC,CACF,CAAC;YACF,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC5B,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;YAC3C,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,IAAI;aAChB,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;YACtE,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,aAAa;aACzB,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAClC,IAAA,eAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;YAChE,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,mEAAmE,EAAE,GAAG,EAAE;YAC5E,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;aAC7C,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;YACtD,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;aACjC,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;YACrD,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;aACtC,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;YACnC,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,UAAU;gBACtB,UAAU,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;aACxC,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,WAAW;gBACvB,UAAU,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE;aAC/C,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,WAAW;gBACvB,UAAU,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE;aACjD,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;YAClC,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,SAAS;gBACrB,UAAU,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE;aAC7C,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,WAAW;gBACvB,UAAU,EAAE,EAAE,OAAO,EAAE,iCAAiC,EAAE;aAC1D,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;YAClC,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,SAAS;gBACrB,UAAU,EAAE,EAAE,OAAO,EAAE,mDAAmD,EAAE;aAC5E,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,WAAW;gBACvB,UAAU,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE;aACtD,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;YAClC,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,SAAS;gBACrB,UAAU,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE;aACtD,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;YACvD,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;aACrC,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,qEAAqE,EAAE,GAAG,EAAE;YAC9E,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,eAAe;gBAC3B,UAAU,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE;aAC9C,CAAC,CACF,CAAC;YACF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;YAC1C,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CACxC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,iBAAiB;gBAC7B,UAAU,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE;aACtD,CAAC,CACF,CAAC;YACF,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;QAC/B,IAAA,WAAE,EAAC,sBAAsB,EAAE,GAAG,EAAE;YAC/B,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAE7C,QAAQ,CAAC,cAAc,CAAC;gBACvB,QAAQ,EAAE,WAAW;gBACrB,UAAU,EAAE,QAAQ;gBACpB,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;aACf,CAAC,CAAC;YAEH,IAAA,eAAM,EAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACtD,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;YAC5D,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,QAAQ,CAAC,qBAAqB,CAAC;gBAC9B,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE,MAAM;gBAChB,SAAS,EAAE,IAAI;gBACf,aAAa,EAAE,sBAAsB;gBACrC,OAAO,EAAE,mBAAmB;gBAC5B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC;YAEH,kBAAkB;YAClB,QAAQ,CAAC,eAAe,CACvB,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,sBAAsB;aAClC,CAAC,CACF,CAAC;YAEF,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAExE,+BAA+B;YAC/B,QAAQ,CAAC,cAAc,CAAC;gBACvB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,QAAQ;gBACpB,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;aACf,CAAC,CAAC;YAEH,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEzE,sCAAsC;YACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CACtC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,sBAAsB;aAClC,CAAC,CACF,CAAC;YACF,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,uBAAuB,EAAE,GAAG,EAAE;QACtC,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;YAC/C,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,6BAA6B;YAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CACrC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,sBAAsB;aAClC,CAAC,CACF,CAAC;YACF,IAAA,eAAM,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEpC,kBAAkB;YAClB,QAAQ,CAAC,qBAAqB,CAAC;gBAC9B,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE,MAAM;gBAChB,SAAS,EAAE,IAAI;gBACf,aAAa,EAAE,sBAAsB;gBACrC,OAAO,EAAE,mBAAmB;gBAC5B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC;YAEH,uBAAuB;YACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CACtC,gBAAgB,CAAC;gBAChB,QAAQ,EAAE,MAAM;gBAChB,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,sBAAsB;aAClC,CAAC,CACF,CAAC;YACF,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,uBAAuB,EAAE,GAAG,EAAE;QACtC,IAAA,WAAE,EAAC,oDAAoD,EAAE,GAAG,EAAE;YAC7D,MAAM,QAAQ,GAAG,IAAA,qCAAkB,GAAE,CAAC;YAEtC,IAAA,eAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACvC,IAAA,eAAM,EAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3C,IAAA,eAAM,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YACzC,IAAA,eAAM,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}