@synoikia/core 0.6.0 → 0.7.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.
Files changed (60) hide show
  1. package/dist/app.d.ts +6 -0
  2. package/dist/app.js +14 -4
  3. package/dist/app.js.map +1 -1
  4. package/dist/approvals/grants.d.ts +34 -0
  5. package/dist/approvals/grants.js +79 -0
  6. package/dist/approvals/grants.js.map +1 -0
  7. package/dist/approvals/service.d.ts +22 -1
  8. package/dist/approvals/service.js +23 -2
  9. package/dist/approvals/service.js.map +1 -1
  10. package/dist/auth/mcp-auth.d.ts +3 -0
  11. package/dist/auth/mcp-auth.js +9 -0
  12. package/dist/auth/mcp-auth.js.map +1 -1
  13. package/dist/auth/mcp-tokens.d.ts +2 -0
  14. package/dist/auth/mcp-tokens.js +9 -0
  15. package/dist/auth/mcp-tokens.js.map +1 -1
  16. package/dist/auth/oauth.d.ts +2 -0
  17. package/dist/auth/oauth.js +13 -0
  18. package/dist/auth/oauth.js.map +1 -1
  19. package/dist/auth/sessions.d.ts +7 -0
  20. package/dist/auth/sessions.js +18 -2
  21. package/dist/auth/sessions.js.map +1 -1
  22. package/dist/gate/pipeline.d.ts +25 -5
  23. package/dist/gate/pipeline.js +57 -5
  24. package/dist/gate/pipeline.js.map +1 -1
  25. package/dist/http/admin/auth.js +19 -1
  26. package/dist/http/admin/auth.js.map +1 -1
  27. package/dist/http/admin/instances.js +19 -1
  28. package/dist/http/admin/instances.js.map +1 -1
  29. package/dist/http/admin/system.js +2 -0
  30. package/dist/http/admin/system.js.map +1 -1
  31. package/dist/http/mcp/approval-card.d.ts +6 -0
  32. package/dist/http/mcp/approval-card.js +160 -0
  33. package/dist/http/mcp/approval-card.js.map +1 -0
  34. package/dist/http/mcp/approval-routes.d.ts +2 -2
  35. package/dist/http/mcp/approval-routes.js +33 -4
  36. package/dist/http/mcp/approval-routes.js.map +1 -1
  37. package/dist/http/mcp/endpoint.js +103 -9
  38. package/dist/http/mcp/endpoint.js.map +1 -1
  39. package/dist/http/mcp/oauth-routes.js +14 -5
  40. package/dist/http/mcp/oauth-routes.js.map +1 -1
  41. package/dist/http/mcp/pages.d.ts +8 -1
  42. package/dist/http/mcp/pages.js +21 -2
  43. package/dist/http/mcp/pages.js.map +1 -1
  44. package/dist/instances/manager.d.ts +4 -0
  45. package/dist/instances/settings.d.ts +2 -0
  46. package/dist/instances/settings.js +2 -0
  47. package/dist/instances/settings.js.map +1 -1
  48. package/dist/runtime/executions.d.ts +68 -0
  49. package/dist/runtime/executions.js +158 -0
  50. package/dist/runtime/executions.js.map +1 -0
  51. package/dist/runtime/index.d.ts +4 -1
  52. package/dist/runtime/index.js +111 -17
  53. package/dist/runtime/index.js.map +1 -1
  54. package/dist/settings.d.ts +2 -0
  55. package/dist/settings.js +8 -0
  56. package/dist/settings.js.map +1 -1
  57. package/dist/testing/index.d.ts +11 -1
  58. package/dist/testing/index.js +21 -6
  59. package/dist/testing/index.js.map +1 -1
  60. package/package.json +1 -1
@@ -0,0 +1,68 @@
1
+ import type { ParkedApproval } from '../approvals/service.js';
2
+ import type { SandboxResult } from '../sandbox/index.js';
3
+ /** Parked executions (design §5.6): an `execute` whose approval waits on a human outlives its tool call.
4
+ * Only its owner (credential and endpoint) can follow it with `resume`; it keeps running at the decision. */
5
+ export declare const PARKED_LIMIT: {
6
+ perPrincipalInstance: number;
7
+ perInstance: number;
8
+ total: number;
9
+ };
10
+ /** Approvals one parked execution can ask for; it also stops asking after one is not given. */
11
+ export declare const MAX_PARKED_APPROVALS = 10;
12
+ /** How long `resume` waits for a change before it answers "still waiting". */
13
+ export declare const RESUME_WAIT_MS = 45000;
14
+ /** How long a finished result waits for `resume` to collect it. */
15
+ export declare const RESULT_TTL_MS: number;
16
+ /** `execute` and `resume` answer this while a parked execution has no result yet. */
17
+ export interface PendingResult {
18
+ ok: false;
19
+ status: 'awaiting_approval' | 'running';
20
+ executionId: string;
21
+ approval?: ParkedApproval;
22
+ error: {
23
+ code: 'AWAITING_APPROVAL' | 'STILL_RUNNING';
24
+ message: string;
25
+ };
26
+ logs: string[];
27
+ }
28
+ export type ExecuteResult = SandboxResult | PendingResult;
29
+ export interface ExecutionStatus {
30
+ state: 'pending' | 'approved' | 'denied' | 'timed_out' | 'cancelled' | 'running' | 'done';
31
+ expiresAt?: string;
32
+ /** The last decision on this run's approvals. */
33
+ decision?: string;
34
+ }
35
+ export declare class ExecutionRegistry {
36
+ private readonly now;
37
+ private readonly entries;
38
+ constructor(now?: () => number);
39
+ /** Unfinished parked runs (shutdown waits for them like for any running script). */
40
+ get running(): number;
41
+ hasRoom(owner: string, instanceId: string): boolean;
42
+ adopt(input: {
43
+ id: string;
44
+ owner: string;
45
+ instanceId: string;
46
+ approval: ParkedApproval;
47
+ abort: () => void;
48
+ }): void;
49
+ /** Whether an adopted run may park again: a loop of denied or timed-out approvals ends here. */
50
+ mayParkAgain(id: string): boolean;
51
+ /** The parked run reached another approval. */
52
+ awaiting(id: string, approval: ParkedApproval): void;
53
+ settled(id: string, approvalId: string, decision: {
54
+ outcome: string;
55
+ decidedBy?: string;
56
+ }): void;
57
+ finish(id: string, result: SandboxResult): void;
58
+ /** The owner's entry, or undefined (unknown, expired, or someone else's: all look the same). */
59
+ private find;
60
+ status(id: string, owner: string, instanceId: string): ExecutionStatus | undefined;
61
+ /** Waits for the result or a new approval, up to `waitMs`. A collected result removes the entry. */
62
+ wait(id: string, owner: string, instanceId: string, waitMs: number, signal?: AbortSignal): Promise<ExecuteResult | 'not_found' | 'busy'>;
63
+ /** Ends the parked runs of one endpoint, or all of them. Their approvals are cancelled by the gate. */
64
+ abort(instanceId?: string): void;
65
+ private changed;
66
+ private sweep;
67
+ }
68
+ export declare function pendingResult(executionId: string, approval?: ParkedApproval): PendingResult;
@@ -0,0 +1,158 @@
1
+ /** Parked executions (design §5.6): an `execute` whose approval waits on a human outlives its tool call.
2
+ * Only its owner (credential and endpoint) can follow it with `resume`; it keeps running at the decision. */
3
+ export const PARKED_LIMIT = { perPrincipalInstance: 2, perInstance: 8, total: 32 };
4
+ /** Approvals one parked execution can ask for; it also stops asking after one is not given. */
5
+ export const MAX_PARKED_APPROVALS = 10;
6
+ /** How long `resume` waits for a change before it answers "still waiting". */
7
+ export const RESUME_WAIT_MS = 45_000;
8
+ /** How long a finished result waits for `resume` to collect it. */
9
+ export const RESULT_TTL_MS = 10 * 60_000;
10
+ export class ExecutionRegistry {
11
+ now;
12
+ entries = new Map();
13
+ constructor(now = () => Date.now()) {
14
+ this.now = now;
15
+ }
16
+ /** Unfinished parked runs (shutdown waits for them like for any running script). */
17
+ get running() {
18
+ return [...this.entries.values()].filter((e) => !e.result).length;
19
+ }
20
+ hasRoom(owner, instanceId) {
21
+ this.sweep();
22
+ const live = [...this.entries.values()].filter((e) => !e.result);
23
+ const here = live.filter((e) => e.instanceId === instanceId);
24
+ return (live.length < PARKED_LIMIT.total &&
25
+ here.length < PARKED_LIMIT.perInstance &&
26
+ here.filter((e) => e.owner === owner).length < PARKED_LIMIT.perPrincipalInstance);
27
+ }
28
+ adopt(input) {
29
+ this.entries.set(input.id, { ...input, approvals: 1, attached: false, waiters: new Set() });
30
+ }
31
+ /** Whether an adopted run may park again: a loop of denied or timed-out approvals ends here. */
32
+ mayParkAgain(id) {
33
+ const e = this.entries.get(id);
34
+ return !!e && e.approvals < MAX_PARKED_APPROVALS && (!e.lastDecision || e.lastDecision.outcome === 'approved');
35
+ }
36
+ /** The parked run reached another approval. */
37
+ awaiting(id, approval) {
38
+ const e = this.entries.get(id);
39
+ if (!e)
40
+ return;
41
+ e.approval = approval;
42
+ e.approvals++;
43
+ this.changed(e);
44
+ }
45
+ settled(id, approvalId, decision) {
46
+ const e = this.entries.get(id);
47
+ if (!e || e.approval?.approvalId !== approvalId)
48
+ return;
49
+ e.approval = undefined;
50
+ e.lastDecision = decision;
51
+ this.changed(e);
52
+ }
53
+ finish(id, result) {
54
+ const e = this.entries.get(id);
55
+ if (!e)
56
+ return;
57
+ e.result = result;
58
+ e.approval = undefined;
59
+ e.finishedAt = this.now();
60
+ this.changed(e);
61
+ }
62
+ /** The owner's entry, or undefined (unknown, expired, or someone else's: all look the same). */
63
+ find(id, owner, instanceId) {
64
+ this.sweep();
65
+ const e = this.entries.get(id);
66
+ return e && e.owner === owner && e.instanceId === instanceId ? e : undefined;
67
+ }
68
+ status(id, owner, instanceId) {
69
+ const e = this.find(id, owner, instanceId);
70
+ if (!e)
71
+ return undefined;
72
+ // No approver name: it is a sign-in name on the internet-facing MCP port.
73
+ if (e.result)
74
+ return { state: 'done', decision: e.lastDecision?.outcome };
75
+ if (e.approval)
76
+ return { state: 'pending', expiresAt: e.approval.expiresAt.toISOString() };
77
+ if (e.lastDecision && e.lastDecision.outcome !== 'approved')
78
+ return { state: e.lastDecision.outcome };
79
+ return { state: e.lastDecision ? 'approved' : 'running' };
80
+ }
81
+ /** Waits for the result or a new approval, up to `waitMs`. A collected result removes the entry. */
82
+ async wait(id, owner, instanceId, waitMs, signal) {
83
+ const e = this.find(id, owner, instanceId);
84
+ if (!e)
85
+ return 'not_found';
86
+ if (e.attached)
87
+ return 'busy';
88
+ e.attached = true;
89
+ try {
90
+ const startedOn = e.approval?.approvalId;
91
+ const settledNow = () => !!e.result || (!!e.approval && e.approval.approvalId !== startedOn);
92
+ if (!settledNow()) {
93
+ await new Promise((resolve) => {
94
+ const done = () => {
95
+ clearTimeout(timer);
96
+ e.waiters.delete(wake);
97
+ signal?.removeEventListener('abort', done);
98
+ resolve();
99
+ };
100
+ const wake = () => {
101
+ if (settledNow())
102
+ done();
103
+ };
104
+ const timer = setTimeout(done, waitMs);
105
+ e.waiters.add(wake);
106
+ signal?.addEventListener('abort', done);
107
+ });
108
+ }
109
+ if (e.result) {
110
+ this.entries.delete(id);
111
+ return e.result;
112
+ }
113
+ return pending(e);
114
+ }
115
+ finally {
116
+ e.attached = false;
117
+ }
118
+ }
119
+ /** Ends the parked runs of one endpoint, or all of them. Their approvals are cancelled by the gate. */
120
+ abort(instanceId) {
121
+ for (const e of this.entries.values())
122
+ if (!e.result && (!instanceId || e.instanceId === instanceId))
123
+ e.abort();
124
+ }
125
+ changed(e) {
126
+ for (const w of [...e.waiters])
127
+ w();
128
+ }
129
+ sweep() {
130
+ const cutoff = this.now() - RESULT_TTL_MS;
131
+ for (const [id, e] of this.entries)
132
+ if (e.finishedAt !== undefined && e.finishedAt < cutoff)
133
+ this.entries.delete(id);
134
+ }
135
+ }
136
+ export function pendingResult(executionId, approval) {
137
+ return approval
138
+ ? {
139
+ ok: false,
140
+ status: 'awaiting_approval',
141
+ executionId,
142
+ approval,
143
+ error: {
144
+ code: 'AWAITING_APPROVAL',
145
+ message: `${approval.operationKey} waits for a human to approve it on the approval page. Show the link to the user; after they decide, call resume with this executionId.`,
146
+ },
147
+ logs: [],
148
+ }
149
+ : {
150
+ ok: false,
151
+ status: 'running',
152
+ executionId,
153
+ error: { code: 'STILL_RUNNING', message: 'The execution is still running; call resume again.' },
154
+ logs: [],
155
+ };
156
+ }
157
+ const pending = (e) => pendingResult(e.id, e.approval);
158
+ //# sourceMappingURL=executions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executions.js","sourceRoot":"","sources":["../../src/runtime/executions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CallerContext, GateDeps, InstanceRuntime } from '../gate/pipeline.js';
2
+ import type { ExecuteResult } from './executions.js';
2
3
  import type { SandboxResult } from '../sandbox/index.js';
3
4
  /** The engines behind the `search` and `execute` tools (design §5.1–§5.2). */
4
5
  /** Sandbox caps (design §5.2): runs per minute per principal and instance, and concurrent isolates per
@@ -9,7 +10,9 @@ export declare const SANDBOX_CONCURRENCY: {
9
10
  };
10
11
  /** Scripts running now, across all instances (shutdown waits for cancelled ones to return). */
11
12
  export declare const sandboxesRunning: () => number;
12
- export declare function executeCode(deps: GateDeps, rt: InstanceRuntime, caller: CallerContext, code: string, signal?: AbortSignal): Promise<SandboxResult>;
13
+ export declare function executeCode(deps: GateDeps, rt: InstanceRuntime, caller: CallerContext, code: string, signal?: AbortSignal): Promise<ExecuteResult>;
14
+ /** `resume(executionId)` (design §5.6): the parked run's result, or that it still waits. */
15
+ export declare function resumeExecution(deps: GateDeps, rt: InstanceRuntime, caller: CallerContext, executionId: string, signal?: AbortSignal): Promise<ExecuteResult>;
13
16
  export interface CatalogFindQuery {
14
17
  text?: string;
15
18
  group?: string;
@@ -7,6 +7,7 @@ import { guides, operationGroups, operations } from '../db/schema.js';
7
7
  import { effectiveAccess } from '../gate/access.js';
8
8
  import { currentGuide, issueAttestationKey } from '../gate/attestation.js';
9
9
  import { createGateBindings, principalKey } from '../gate/pipeline.js';
10
+ import { pendingResult, RESUME_WAIT_MS } from './executions.js';
10
11
  import { BindingError, runInSandbox } from '../sandbox/index.js';
11
12
  /** The engines behind the `search` and `execute` tools (design §5.1–§5.2). */
12
13
  /** Sandbox caps (design §5.2): runs per minute per principal and instance, and concurrent isolates per
@@ -14,8 +15,10 @@ import { BindingError, runInSandbox } from '../sandbox/index.js';
14
15
  export const SANDBOX_CONCURRENCY = { perInstance: 4, total: 16 };
15
16
  const running = new Map();
16
17
  let runningTotal = 0;
18
+ /** Parked scripts still running, across all registries (they gave back their concurrency slot). */
19
+ let parkedRunning = 0;
17
20
  /** Scripts running now, across all instances (shutdown waits for cancelled ones to return). */
18
- export const sandboxesRunning = () => runningTotal;
21
+ export const sandboxesRunning = () => runningTotal + parkedRunning;
19
22
  function admit(deps, rt, caller) {
20
23
  const who = principalKey(caller);
21
24
  if (!deps.limiter.take(`run:${rt.instanceId}:${who}`, rt.settings.executePerMinute, 60_000)) {
@@ -40,36 +43,123 @@ export async function executeCode(deps, rt, caller, code, signal) {
40
43
  const release = admit(deps, rt, caller);
41
44
  if (typeof release !== 'function')
42
45
  return release;
43
- // Ends with the sandbox (return, error or timeout) or earlier, when the request or session goes away.
46
+ // Ends with the sandbox (return, error or timeout) or earlier, when the request or session goes away;
47
+ // once parked, only the registry ends it (design §5.6).
44
48
  const run = new AbortController();
45
49
  const stop = () => run.abort();
46
50
  signal?.addEventListener('abort', stop);
47
51
  if (signal?.aborted)
48
52
  stop();
53
+ const executionId = randomUUID();
54
+ const registry = caller.parkable ? deps.executions : undefined;
55
+ const owner = principalKey(caller);
56
+ let adopted = false;
57
+ let firstPark;
58
+ const parkedFirst = new Promise((resolve) => (firstPark = resolve));
59
+ const park = registry && {
60
+ reserve: () => adopted
61
+ ? registry.mayParkAgain(executionId)
62
+ ? null
63
+ : 'park_refused'
64
+ : registry.hasRoom(owner, rt.instanceId)
65
+ ? null
66
+ : 'too_many_parked',
67
+ offer: (a) => (adopted ? registry.awaiting(executionId, a) : firstPark(a)),
68
+ settled: (approvalId, decision) => registry.settled(executionId, approvalId, decision),
69
+ };
70
+ const sandbox = runInSandbox({
71
+ code,
72
+ bindings: createGateBindings(deps, rt, caller, run.signal, { executionId, park }),
73
+ limits: rt.settings.sandbox,
74
+ // Each gated call's result was already redacted; this covers anything the script derived or logged.
75
+ redact: rt.redact,
76
+ });
77
+ let first;
49
78
  try {
50
- return await runInSandbox({
51
- code,
52
- bindings: createGateBindings(deps, rt, caller, run.signal),
53
- limits: rt.settings.sandbox,
54
- // Each gated call's result was already redacted; this covers anything the script derived or logged.
55
- redact: rt.redact,
56
- });
79
+ first = await Promise.race([
80
+ sandbox.then((result) => ({ result })),
81
+ parkedFirst.then((approval) => ({ approval })),
82
+ ]);
57
83
  }
58
- finally {
84
+ catch (err) {
59
85
  stop();
86
+ throw err;
87
+ }
88
+ finally {
60
89
  signal?.removeEventListener('abort', stop);
61
90
  release();
62
91
  }
92
+ if ('result' in first) {
93
+ stop();
94
+ return first.result;
95
+ }
96
+ // Parked: the run outlives this tool call, under the registry's caps instead of a concurrency slot.
97
+ registry.adopt({ id: executionId, owner, instanceId: rt.instanceId, approval: first.approval, abort: stop });
98
+ adopted = true;
99
+ parkedRunning++;
100
+ void sandbox.then((result) => {
101
+ parkedRunning--;
102
+ stop();
103
+ registry.finish(executionId, result);
104
+ }, () => {
105
+ parkedRunning--;
106
+ stop();
107
+ registry.finish(executionId, { ok: false, error: { code: 'INTERNAL', message: 'Internal error' }, logs: [] });
108
+ });
109
+ return pendingResult(executionId, first.approval);
63
110
  }
64
- function describeOp(op, groupKey, access) {
111
+ /** `resume(executionId)` (design §5.6): the parked run's result, or that it still waits. */
112
+ export async function resumeExecution(deps, rt, caller, executionId, signal) {
113
+ const outcome = deps.executions
114
+ ? await deps.executions.wait(executionId, principalKey(caller), rt.instanceId, RESUME_WAIT_MS, signal)
115
+ : 'not_found';
116
+ const result = outcome === 'not_found'
117
+ ? {
118
+ ok: false,
119
+ error: {
120
+ code: 'EXECUTION_NOT_FOUND',
121
+ message: 'No parked execution with this id: it finished and was collected, expired, or the server restarted',
122
+ },
123
+ logs: [],
124
+ }
125
+ : outcome === 'busy'
126
+ ? {
127
+ ok: false,
128
+ error: { code: 'BUSY', message: 'Another resume is already waiting on this execution' },
129
+ logs: [],
130
+ }
131
+ : outcome;
132
+ writeAudit(deps.db, {
133
+ kind: 'call',
134
+ instanceId: rt.instanceId,
135
+ decision: 'resumed',
136
+ actorKind: 'mcp_client',
137
+ actorId: caller.client.id,
138
+ resultStatus: result.ok ? 'ok' : 'status' in result ? 'pending' : 'error',
139
+ detail: { executionId, ...(result.ok ? {} : { error: result.error.code }) },
140
+ }, deps.now?.() ?? new Date());
141
+ return result;
142
+ }
143
+ function describeOp(op, groupKey, access, granted = false) {
144
+ // A session grant (design §5.8) turns Ask into auto-approval, except for locked and typed-confirmation ops.
145
+ const mode = access.reachable &&
146
+ access.mode === 'approve' &&
147
+ granted &&
148
+ !op.locked &&
149
+ !op.typedConfirmation &&
150
+ access.level === 'ask'
151
+ ? 'auto'
152
+ : access.reachable
153
+ ? access.mode
154
+ : undefined;
65
155
  return {
66
156
  key: op.key,
67
157
  displayName: op.displayName ?? undefined,
68
158
  group: groupKey,
69
159
  classification: op.locked ? 'locked' : op.classification,
70
160
  // Whether a call runs straight away, waits for a human, or is auto-approved at level `write`.
71
- approval: access.reachable
72
- ? { run: 'none', approve: 'required', auto: 'auto' }[access.mode]
161
+ approval: mode
162
+ ? { run: 'none', approve: 'required', auto: 'auto' }[mode]
73
163
  : op.locked || op.classification === 'write'
74
164
  ? 'required'
75
165
  : 'none',
@@ -79,7 +169,7 @@ function describeOp(op, groupKey, access) {
79
169
  ...(access.reachable ? {} : { disabled: true, reason: access.reason }),
80
170
  };
81
171
  }
82
- function catalogBindings(db, instanceId, principal) {
172
+ function catalogBindings(db, instanceId, principal, granted) {
83
173
  const load = () => {
84
174
  const groups = new Map(db
85
175
  .select()
@@ -124,7 +214,7 @@ function catalogBindings(db, instanceId, principal) {
124
214
  if (!hay.includes(text))
125
215
  continue;
126
216
  }
127
- out.push(describeOp(op, group?.key, access));
217
+ out.push(describeOp(op, group?.key, access, granted()));
128
218
  if (out.length >= limit)
129
219
  break;
130
220
  }
@@ -136,7 +226,11 @@ function catalogBindings(db, instanceId, principal) {
136
226
  if (!op)
137
227
  return null;
138
228
  const access = accessOf(op, groups);
139
- return { ...describeOp(op, groups.get(op.groupId)?.key, access), paramsSchema: op.paramsSchema, docs: op.docs };
229
+ return {
230
+ ...describeOp(op, groups.get(op.groupId)?.key, access, granted()),
231
+ paramsSchema: op.paramsSchema,
232
+ docs: op.docs,
233
+ };
140
234
  },
141
235
  groups: async () => listGroups(db, instanceId).filter((g) => !g.stale),
142
236
  };
@@ -197,7 +291,7 @@ function guideBindings(deps, rt, caller) {
197
291
  }
198
292
  function searchBindings(deps, rt, caller) {
199
293
  const bindings = {
200
- catalog: catalogBindings(deps.db, rt.instanceId, caller.principal),
294
+ catalog: catalogBindings(deps.db, rt.instanceId, caller.principal, () => !!deps.grants?.active(rt.instanceId, principalKey(caller))),
201
295
  };
202
296
  if (rt.manifest.capabilities.registry) {
203
297
  bindings.registry = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGjE,8EAA8E;AAE9E;oFACoF;AACpF,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACjE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC1C,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,mGAAmG;AACnG,IAAI,aAAa,GAAG,CAAC,CAAC;AAEtB,+FAA+F;AAC/F,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,YAAY,GAAG,aAAa,CAAC;AAEnE,SAAS,KAAK,CAAC,IAAc,EAAE,EAAmB,EAAE,MAAqB;IACvE,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,CAAC;QAC5F,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,0CAA0C,EAAE;YACpF,IAAI,EAAE,EAAE;SACT,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,IAAI,IAAI,mBAAmB,CAAC,WAAW,IAAI,YAAY,IAAI,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACzF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iDAAiD,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACtH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;IACrC,YAAY,EAAE,CAAC;IACf,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,YAAY,EAAE,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAc,EACd,EAAmB,EACnB,MAAqB,EACrB,IAAY,EACZ,MAAoB;IAEpB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACxC,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAC;IAClD,sGAAsG;IACtG,wDAAwD;IACxD,MAAM,GAAG,GAAG,IAAI,eAAe,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAC/B,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,EAAE,OAAO;QAAE,IAAI,EAAE,CAAC;IAE5B,MAAM,WAAW,GAAG,UAAU,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,SAAuC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;IACpF,MAAM,IAAI,GAAyB,QAAQ,IAAI;QAC7C,OAAO,EAAE,GAAG,EAAE,CACZ,OAAO;YACL,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC;gBAClC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,cAAc;YAClB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC;gBACtC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,iBAAiB;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC;KACvF,CAAC;IAEF,MAAM,OAAO,GAAG,YAAY,CAAC;QAC3B,IAAI;QACJ,QAAQ,EAAE,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACjF,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO;QAC3B,oGAAoG;QACpG,MAAM,EAAE,EAAE,CAAC,MAAM;KAClB,CAAC,CAAC;IACH,IAAI,KAA+D,CAAC;IACpE,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YACtC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,EAAE,CAAC;QACP,MAAM,GAAG,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,EAAE,CAAC;QACP,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,oGAAoG;IACpG,QAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9G,OAAO,GAAG,IAAI,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,KAAK,OAAO,CAAC,IAAI,CACf,CAAC,MAAM,EAAE,EAAE;QACT,aAAa,EAAE,CAAC;QAChB,IAAI,EAAE,CAAC;QACP,QAAS,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC,EACD,GAAG,EAAE;QACH,aAAa,EAAE,CAAC;QAChB,IAAI,EAAE,CAAC;QACP,QAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACjH,CAAC,CACF,CAAC;IACF,OAAO,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAc,EACd,EAAmB,EACnB,MAAqB,EACrB,WAAmB,EACnB,MAAoB;IAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU;QAC7B,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC;QACtG,CAAC,CAAC,WAAW,CAAC;IAChB,MAAM,MAAM,GACV,OAAO,KAAK,WAAW;QACrB,CAAC,CAAC;YACE,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EACL,mGAAmG;aACtG;YACD,IAAI,EAAE,EAAE;SACT;QACH,CAAC,CAAC,OAAO,KAAK,MAAM;YAClB,CAAC,CAAC;gBACE,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qDAAqD,EAAE;gBACvF,IAAI,EAAE,EAAE;aACT;YACH,CAAC,CAAC,OAAO,CAAC;IAChB,UAAU,CACR,IAAI,CAAC,EAAE,EACP;QACE,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QACzB,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QACzE,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;KAC5E,EACD,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAC3B,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAcD,SAAS,UAAU,CACjB,EAAgB,EAChB,QAA4B,EAC5B,MAA0C,EAC1C,OAAO,GAAG,KAAK;IAEf,4GAA4G;IAC5G,MAAM,IAAI,GACR,MAAM,CAAC,SAAS;QAChB,MAAM,CAAC,IAAI,KAAK,SAAS;QACzB,OAAO;QACP,CAAC,EAAE,CAAC,MAAM;QACV,CAAC,EAAE,CAAC,iBAAiB;QACrB,MAAM,CAAC,KAAK,KAAK,KAAK;QACpB,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,MAAM,CAAC,SAAS;YAChB,CAAC,CAAC,MAAM,CAAC,IAAI;YACb,CAAC,CAAC,SAAS,CAAC;IAClB,OAAO;QACL,GAAG,EAAE,EAAE,CAAC,GAAG;QACX,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;QACxC,KAAK,EAAE,QAAQ;QACf,cAAc,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc;QACxD,8FAA8F;QAC9F,QAAQ,EAAE,IAAI;YACZ,CAAC,CAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAY,CAAC,IAAI,CAAC;YACrE,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,cAAc,KAAK,OAAO;gBAC1C,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,MAAM;QACZ,iBAAiB,EAAE,EAAE,CAAC,iBAAiB;QACvC,mBAAmB,EAAE,EAAE,CAAC,mBAAmB;QAC3C,OAAO,EAAG,EAAE,CAAC,IAAoC,EAAE,OAAO;QAC1D,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,EAAM,EACN,UAAkB,EAClB,SAA0B,EAC1B,OAAsB;IAEtB,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,EAAE;aACC,MAAM,EAAE;aACR,IAAI,CAAC,eAAe,CAAC;aACrB,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;aACjD,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CACzB,CAAC;QACF,MAAM,GAAG,GAAG,EAAE;aACX,MAAM,EAAE;aACR,IAAI,CAAC,UAAU,CAAC;aAChB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;aAC9E,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAC5B,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACzB,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,EAAgB,EAAE,MAAwD,EAAE,EAAE,CAC9F,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;IAEtE,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE;YACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAqB,CAAC;YAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAChE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,EAAE,CAAC;YACf,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,eAAe;oBAAE,SAAS;gBACtD,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK;oBAAE,SAAS;gBAChD,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;oBAAE,SAAS;gBACxC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;oBAAE,SAAS;gBAC3C,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC;gBACrD,IAAI,CAAC,CAAC,cAAc,IAAI,GAAG,KAAK,CAAC,CAAC,cAAc;oBAAE,SAAS;gBAC3D,IAAI,IAAI,EAAE,CAAC;oBACT,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,EAAG,EAAE,CAAC,IAAoC,EAAE,OAAO,CAAC;yBACpF,IAAI,CAAC,GAAG,CAAC;yBACT,WAAW,EAAE,CAAC;oBACjB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;wBAAE,SAAS;gBACpC,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;gBACxD,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK;oBAAE,MAAM;YACjC,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;YACnB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;YACrB,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACpC,OAAO;gBACL,GAAG,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBACjE,YAAY,EAAE,EAAE,CAAC,YAAY;gBAC7B,IAAI,EAAE,EAAE,CAAC,IAAI;aACd,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;KACvE,CAAC;AACJ,CAAC;AAED;mDACmD;AACnD,SAAS,aAAa,CAAC,IAAc,EAAE,EAAmB,EAAE,MAAqB;IAC/E,OAAO;QACL,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;YACnB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;iBACf,MAAM,EAAE;iBACR,IAAI,CAAC,UAAU,CAAC;iBAChB,KAAK,CACJ,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAC5G;iBACA,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,EAAE;gBAAE,MAAM,IAAI,YAAY,CAAC,mBAAmB,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YAC7F,IAAI,CAAC,EAAE,CAAC,mBAAmB;gBAAE,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YACrE,IAAI,KAAK,CAAC;YACV,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,YAAY,CAAC,cAAc,EAAE,gCAAgC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YACnF,CAAC;YACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;gBACvF,IAAI,CAAC,EAAE;qBACJ,MAAM,CAAC,MAAM,CAAC;qBACd,MAAM,CAAC;oBACN,EAAE,EAAE,UAAU,EAAE;oBAChB,UAAU,EAAE,EAAE,CAAC,UAAU;oBACzB,WAAW,EAAE,EAAE,CAAC,EAAE;oBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE;iBACtC,CAAC;qBACD,GAAG,EAAE,CAAC;YACX,CAAC;YACD,UAAU,CACR,IAAI,CAAC,EAAE,EACP;gBACE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,CAAC,UAAU;gBACzB,YAAY,EAAE,EAAE,CAAC,GAAG;gBACpB,QAAQ,EAAE,YAAY;gBACtB,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI;gBACjC,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE;aACnF,EACD,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAC3B,CAAC;YACF,OAAO;gBACL,GAAG,EAAE,EAAE,CAAC,GAAG;gBACX,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,iBAAiB,EAAE,mBAAmB,CACpC,IAAI,CAAC,cAAc,EACnB,EAAE,CAAC,UAAU,EACb,EAAE,CAAC,GAAG,EACN,KAAK,CAAC,OAAO,EACb,MAAM,CAAC,YAAY,CACpB;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,IAAc,EACd,EAAmB,EACnB,MAAqB;IAErB,MAAM,QAAQ,GAA4C;QACxD,OAAO,EAAE,eAAe,CACtB,IAAI,CAAC,EAAE,EACP,EAAE,CAAC,UAAU,EACb,MAAM,CAAC,SAAS,EAChB,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CACjE;KACF,CAAC;IACF,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,QAAQ,CAAC,QAAQ,GAAG;YAClB,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YAClB,+FAA+F;YAC/F,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAA8C,CAAC,CAAC;SACjH,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW;QAAE,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5F,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAc,EACd,EAAmB,EACnB,MAAqB,EACrB,IAAY,EACZ,OAAqB;IAErB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACxC,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAC;IAClD,IAAI,MAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,YAAY,CAAC;YAC1B,IAAI;YACJ,QAAQ,EAAE,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC;YAC1C,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO;YAC3B,MAAM,EAAE,EAAE,CAAC,MAAM;SAClB,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,UAAU,CACR,IAAI,CAAC,EAAE,EACP;QACE,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;QACzB,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;QACxC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;KACnF,EACD,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAC3B,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -7,6 +7,8 @@ declare const SETTINGS_SCHEMAS: {
7
7
  disableLocalLogin: z.ZodDefault<z.ZodBoolean>;
8
8
  sessionIdleMinutes: z.ZodDefault<z.ZodNumber>;
9
9
  sessionAbsoluteHours: z.ZodDefault<z.ZodNumber>;
10
+ approvalSessionIdleHours: z.ZodDefault<z.ZodNumber>;
11
+ approvalSessionAbsoluteDays: z.ZodDefault<z.ZodNumber>;
10
12
  }, z.core.$strip>>;
11
13
  readonly mcp: z.ZodPrefault<z.ZodObject<{
12
14
  defaultAuthMode: z.ZodDefault<z.ZodEnum<{
package/dist/settings.js CHANGED
@@ -24,6 +24,14 @@ const SETTINGS_SCHEMAS = {
24
24
  .min(1)
25
25
  .max(24 * 30)
26
26
  .default(12),
27
+ /** Approval-page sign-in on the MCP port (design §5.3): TOTP once per browser for this long. */
28
+ approvalSessionIdleHours: z
29
+ .number()
30
+ .int()
31
+ .min(1)
32
+ .max(24 * 7)
33
+ .default(12),
34
+ approvalSessionAbsoluteDays: z.number().int().min(1).max(30).default(7),
27
35
  })
28
36
  .prefault({}),
29
37
  mcp: z
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { Manifest } from '@synoikia/plugin-sdk';
2
2
  import type { AppContext, AppOptions } from '../app.js';
3
3
  import { auditLog, operations, pendingApprovals, registryEntries } from '../db/schema.js';
4
4
  import type { AccessLevel } from '../gate/access.js';
5
+ import type { ExecuteResult } from '../runtime/executions.js';
5
6
  import type { SandboxResult } from '../sandbox/index.js';
6
7
  /** Harness for plugin packages (`@synoikia/core/testing`): boots the real core on a built bundle, run
7
8
  * as in production, and drives it the way an MCP client does. */
@@ -31,6 +32,9 @@ export interface HarnessApproval {
31
32
  export interface ExecuteOptions {
32
33
  /** Decides each approval; without it, or if it throws or leaves one open, the approval is denied. */
33
34
  onApproval?: (approval: HarnessApproval) => void | Promise<void>;
35
+ /** Without `onApproval`, act as a client with no prompts: the call parks (design §5.6). Decide it with
36
+ * `parkedApproval(result)`, then collect it with `resume`. */
37
+ park?: boolean;
34
38
  }
35
39
  export interface PluginHarness {
36
40
  ctx: AppContext;
@@ -38,7 +42,12 @@ export interface PluginHarness {
38
42
  manifest: Manifest;
39
43
  /** Errors thrown by `onApproval` handlers, oldest first. */
40
44
  approvalErrors: unknown[];
41
- execute(code: string, opts?: ExecuteOptions): Promise<SandboxResult>;
45
+ /** A parked call (`opts.park`) answers with a `PendingResult`; it is also an `ok: false` SandboxResult. */
46
+ execute(code: string, opts?: ExecuteOptions): Promise<ExecuteResult>;
47
+ /** Follows a parked execution, as the `resume` tool does. */
48
+ resume(executionId: string): Promise<ExecuteResult>;
49
+ /** The approval a parked result waits on, to decide it as the approval page would. */
50
+ parkedApproval(result: ExecuteResult): HarnessApproval;
42
51
  search(code: string): Promise<SandboxResult>;
43
52
  setGroupLevel(group: string, level: AccessLevel): void;
44
53
  /** The operation's own level; `null` makes it follow its group again. */
@@ -63,6 +72,7 @@ export interface PluginHarness {
63
72
  stop(): Promise<void>;
64
73
  }
65
74
  export declare function startPluginHarness(opts: PluginHarnessOptions): Promise<PluginHarness>;
75
+ export type { ExecuteResult, PendingResult } from '../runtime/executions.js';
66
76
  export { verifyPluginRepository } from './repository.js';
67
77
  export type { VerifiedPlugin, VerifyRepositoryOptions } from './repository.js';
68
78
  export { startFakeHttp } from './fake-http.js';