@narumitw/pi-subagents 2.0.6 → 2.1.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/README.md +152 -50
- package/dist/chunks/{auto-transport-SY2VHUFH.ts → auto-transport-FUUKFDIG.ts} +6 -6
- package/dist/chunks/{capability-grant-CGEWOEKE.ts → capability-grant-PR72SWWS.ts} +4 -4
- package/dist/chunks/{chunk-DPPVEQAM.ts → chunk-4AQSF7AS.ts} +1 -1
- package/dist/chunks/chunk-4AQSF7AS.ts.map +7 -0
- package/dist/chunks/chunk-6H6TBBED.ts +108 -0
- package/dist/chunks/chunk-6H6TBBED.ts.map +7 -0
- package/dist/chunks/{chunk-DSOOH73Y.ts → chunk-7AAJEUSL.ts} +3 -3
- package/dist/chunks/{chunk-DSOOH73Y.ts.map → chunk-7AAJEUSL.ts.map} +2 -2
- package/dist/chunks/{chunk-7QPPBBXZ.ts → chunk-D4CR7T73.ts} +21 -3
- package/dist/chunks/chunk-D4CR7T73.ts.map +7 -0
- package/dist/chunks/{chunk-434NII74.ts → chunk-DIHBUR2E.ts} +54 -8
- package/dist/chunks/chunk-DIHBUR2E.ts.map +7 -0
- package/dist/chunks/{chunk-NIF42QMF.ts → chunk-FEVPWRMU.ts} +7 -4
- package/dist/chunks/chunk-FEVPWRMU.ts.map +7 -0
- package/dist/chunks/{chunk-YBUWBRF7.ts → chunk-FXI45N3J.ts} +5 -5
- package/dist/chunks/{chunk-S2IWVK3J.ts → chunk-ILEQ27AL.ts} +3 -2
- package/dist/chunks/chunk-ILEQ27AL.ts.map +7 -0
- package/dist/chunks/{chunk-DQMN4OYM.ts → chunk-ITVWPNU4.ts} +12 -106
- package/dist/chunks/chunk-ITVWPNU4.ts.map +7 -0
- package/dist/chunks/{chunk-QDVGH2X7.ts → chunk-IWC32VPY.ts} +2 -1
- package/dist/chunks/{chunk-QDVGH2X7.ts.map → chunk-IWC32VPY.ts.map} +2 -2
- package/dist/chunks/{chunk-I2FAK44T.ts → chunk-JSZIP73U.ts} +48 -10
- package/dist/chunks/chunk-JSZIP73U.ts.map +7 -0
- package/dist/chunks/{chunk-ZHTNCZIA.ts → chunk-JU6LUNLP.ts} +2 -2
- package/dist/chunks/{chunk-PSK43Y6A.ts → chunk-LASD73CM.ts} +2 -2
- package/dist/chunks/{chunk-C4L6P266.ts → chunk-LEOYDZI3.ts} +1 -1
- package/dist/chunks/{chunk-C4L6P266.ts.map → chunk-LEOYDZI3.ts.map} +2 -2
- package/dist/chunks/{chunk-H3BFJ7HJ.ts → chunk-LL4LP2T7.ts} +5 -5
- package/dist/chunks/chunk-N2T5IN4X.ts +18 -0
- package/dist/chunks/chunk-N2T5IN4X.ts.map +7 -0
- package/dist/chunks/{chunk-G3RSMSXJ.ts → chunk-NTRPLF46.ts} +1 -1
- package/dist/chunks/chunk-NTRPLF46.ts.map +7 -0
- package/dist/chunks/{chunk-CBP76ARQ.ts → chunk-PABJJYP6.ts} +174 -47
- package/dist/chunks/chunk-PABJJYP6.ts.map +7 -0
- package/dist/chunks/{chunk-EFBPISNT.ts → chunk-PBZMBTNJ.ts} +104 -103
- package/dist/chunks/chunk-PBZMBTNJ.ts.map +7 -0
- package/dist/chunks/{chunk-SCZ33MYW.ts → chunk-PGLSFLYW.ts} +2 -2
- package/dist/chunks/{chunk-O4VO6JUJ.ts → chunk-TM2R67J3.ts} +3 -3
- package/dist/chunks/{chunk-QBORTI4W.ts → chunk-TMZRHIIK.ts} +32 -3
- package/dist/chunks/chunk-TMZRHIIK.ts.map +7 -0
- package/dist/chunks/chunk-TZ34IQ3M.ts +59 -0
- package/dist/chunks/chunk-TZ34IQ3M.ts.map +7 -0
- package/dist/chunks/chunk-VBDGNNLM.ts +214 -0
- package/dist/chunks/chunk-VBDGNNLM.ts.map +7 -0
- package/dist/chunks/{chunk-7OBINKFM.ts → chunk-VDG7LTYE.ts} +11 -11
- package/dist/chunks/chunk-VDG7LTYE.ts.map +7 -0
- package/dist/chunks/{chunk-AEUYS7JC.ts → chunk-X4NMONPE.ts} +1 -1
- package/dist/chunks/chunk-X4NMONPE.ts.map +7 -0
- package/dist/chunks/{chunk-HKC4ES4B.ts → chunk-YPJEN6NU.ts} +2 -2
- package/dist/chunks/{completion-delivery-YPOWSSV3.ts → completion-delivery-JVLNQRWX.ts} +5 -4
- package/dist/chunks/{config-status-J4GPWP46.ts → config-status-FKGDECZ3.ts} +7 -6
- package/dist/chunks/{config-ui-2YUCUEBM.ts → config-ui-DDKERQHI.ts} +297 -231
- package/dist/chunks/config-ui-DDKERQHI.ts.map +7 -0
- package/dist/chunks/{consult-IV7UBNQQ.ts → consult-PQ6PRAKC.ts} +14 -13
- package/dist/chunks/consult-PQ6PRAKC.ts.map +7 -0
- package/dist/chunks/{create-stateful-transport-ZP3IXNV3.ts → create-stateful-transport-JWC2EFYL.ts} +6 -6
- package/dist/chunks/{delegation-contract-WJPT4FVS.ts → delegation-contract-LA56I5DT.ts} +2 -2
- package/dist/chunks/{discovery-K25T3SH4.ts → discovery-MIFB2U4Y.ts} +3 -3
- package/dist/chunks/{execution-LA7HN5YF.ts → execution-Q2JZLKJA.ts} +19 -16
- package/dist/chunks/execution-Q2JZLKJA.ts.map +7 -0
- package/dist/chunks/{in-process-transport-4RF3J6XK.ts → in-process-transport-HJ6TZXC3.ts} +9 -9
- package/dist/chunks/{inspect-XV2QALMR.ts → inspect-UH2TKH6E.ts} +25 -10
- package/dist/chunks/inspect-UH2TKH6E.ts.map +7 -0
- package/dist/chunks/{persistence-VSGXAW4P.ts → persistence-XHPJBZL7.ts} +11 -7
- package/dist/chunks/persistence-XHPJBZL7.ts.map +7 -0
- package/dist/chunks/{registry-E6XPJB7L.ts → registry-XDXPECWF.ts} +136 -15
- package/dist/chunks/registry-XDXPECWF.ts.map +7 -0
- package/dist/chunks/{retained-semantic-state-7WXSGRJU.ts → retained-semantic-state-GM75FZGE.ts} +3 -3
- package/dist/chunks/{rpc-transport-NEHBHWX4.ts → rpc-transport-7R7DVCEB.ts} +12 -16
- package/dist/chunks/rpc-transport-7R7DVCEB.ts.map +7 -0
- package/dist/chunks/{spawn-idempotency-QGHO2WKC.ts → spawn-idempotency-BNHOSMZW.ts} +2 -2
- package/dist/chunks/{subprocess-transport-NSHOGDC4.ts → subprocess-transport-VHZJRBTW.ts} +15 -14
- package/dist/chunks/subprocess-transport-VHZJRBTW.ts.map +7 -0
- package/dist/chunks/usage-recording-store-CW3EH2SZ.ts +164 -0
- package/dist/chunks/usage-recording-store-CW3EH2SZ.ts.map +7 -0
- package/dist/index.ts +427 -30
- package/dist/index.ts.map +3 -3
- package/docs/async-runtime-protocol.md +69 -0
- package/docs/implementation-notes/pi-subagents-capability-matrix.md +62 -0
- package/docs/implementation-notes/pi-subagents-current-direction.md +99 -0
- package/docs/implementation-notes/pi-subagents-rpc-v1.md +153 -0
- package/docs/pi-subagents-diagrams.md +183 -0
- package/package.json +9 -8
- package/src/agents/types.ts +2 -0
- package/src/async-subagent-benchmark.ts +532 -0
- package/src/completion-delivery.ts +71 -4
- package/src/completion-render.ts +1 -0
- package/src/completion-requirement.ts +308 -0
- package/src/config-registration.ts +5 -5
- package/src/config-status.ts +66 -70
- package/src/config-ui.ts +244 -150
- package/src/consult-resources.ts +1 -1
- package/src/consult.ts +3 -8
- package/src/delegation-contract.ts +55 -9
- package/src/execution-plan.ts +1 -1
- package/src/execution-ui.ts +40 -29
- package/src/execution.ts +2 -3
- package/src/inspect.ts +24 -1
- package/src/orchestration-metrics.ts +1 -1
- package/src/panel-execution.ts +2 -3
- package/src/panel-failure.ts +1 -1
- package/src/panel-render.ts +1 -1
- package/src/parallel-limit-ui.ts +6 -5
- package/src/params.ts +2 -1
- package/src/persistence.ts +9 -0
- package/src/process-control.ts +43 -0
- package/src/registry-types.ts +5 -0
- package/src/registry.ts +162 -18
- package/src/render.ts +2 -1
- package/src/rpc-transport.ts +1 -1
- package/src/runner-outcome.ts +1 -1
- package/src/runner-result.ts +1 -1
- package/src/runner-types.ts +102 -0
- package/src/runner.ts +11 -192
- package/src/settings/inspection.ts +27 -0
- package/src/settings/schema.ts +9 -0
- package/src/settings-reader.ts +7 -0
- package/src/settings.ts +20 -0
- package/src/spawn-idempotency.ts +5 -0
- package/src/stateful-agent-view.ts +15 -19
- package/src/stateful-guidance.ts +14 -4
- package/src/stateful-limit-ui.ts +23 -20
- package/src/stateful-limits.ts +10 -10
- package/src/stateful-registration.ts +126 -9
- package/src/stateful-render.ts +27 -2
- package/src/subagent-details.ts +43 -0
- package/src/subagents-extension.ts +66 -8
- package/src/subagents.ts +2 -0
- package/src/subprocess-transport.ts +2 -1
- package/src/supervision.ts +2 -1
- package/src/timeout-finalization.ts +1 -1
- package/src/tool-schema-compatibility.ts +73 -0
- package/src/transport-types.ts +6 -0
- package/src/transport-ui.ts +18 -46
- package/src/usage-recording-config.ts +13 -0
- package/src/usage-recording-store.ts +183 -0
- package/src/usage-recording.ts +478 -0
- package/src/verification-harness.ts +1 -1
- package/src/workflow-ui.ts +17 -9
- package/dist/chunks/chunk-434NII74.ts.map +0 -7
- package/dist/chunks/chunk-7OBINKFM.ts.map +0 -7
- package/dist/chunks/chunk-7QPPBBXZ.ts.map +0 -7
- package/dist/chunks/chunk-AEUYS7JC.ts.map +0 -7
- package/dist/chunks/chunk-CBP76ARQ.ts.map +0 -7
- package/dist/chunks/chunk-DPPVEQAM.ts.map +0 -7
- package/dist/chunks/chunk-DQMN4OYM.ts.map +0 -7
- package/dist/chunks/chunk-EFBPISNT.ts.map +0 -7
- package/dist/chunks/chunk-G3RSMSXJ.ts.map +0 -7
- package/dist/chunks/chunk-I2FAK44T.ts.map +0 -7
- package/dist/chunks/chunk-NIF42QMF.ts.map +0 -7
- package/dist/chunks/chunk-QBORTI4W.ts.map +0 -7
- package/dist/chunks/chunk-S2IWVK3J.ts.map +0 -7
- package/dist/chunks/config-ui-2YUCUEBM.ts.map +0 -7
- package/dist/chunks/consult-IV7UBNQQ.ts.map +0 -7
- package/dist/chunks/execution-LA7HN5YF.ts.map +0 -7
- package/dist/chunks/inspect-XV2QALMR.ts.map +0 -7
- package/dist/chunks/persistence-VSGXAW4P.ts.map +0 -7
- package/dist/chunks/registry-E6XPJB7L.ts.map +0 -7
- package/dist/chunks/rpc-transport-NEHBHWX4.ts.map +0 -7
- package/dist/chunks/subprocess-transport-NSHOGDC4.ts.map +0 -7
- /package/dist/chunks/{auto-transport-SY2VHUFH.ts.map → auto-transport-FUUKFDIG.ts.map} +0 -0
- /package/dist/chunks/{capability-grant-CGEWOEKE.ts.map → capability-grant-PR72SWWS.ts.map} +0 -0
- /package/dist/chunks/{chunk-YBUWBRF7.ts.map → chunk-FXI45N3J.ts.map} +0 -0
- /package/dist/chunks/{chunk-ZHTNCZIA.ts.map → chunk-JU6LUNLP.ts.map} +0 -0
- /package/dist/chunks/{chunk-PSK43Y6A.ts.map → chunk-LASD73CM.ts.map} +0 -0
- /package/dist/chunks/{chunk-H3BFJ7HJ.ts.map → chunk-LL4LP2T7.ts.map} +0 -0
- /package/dist/chunks/{chunk-SCZ33MYW.ts.map → chunk-PGLSFLYW.ts.map} +0 -0
- /package/dist/chunks/{chunk-O4VO6JUJ.ts.map → chunk-TM2R67J3.ts.map} +0 -0
- /package/dist/chunks/{chunk-HKC4ES4B.ts.map → chunk-YPJEN6NU.ts.map} +0 -0
- /package/dist/chunks/{completion-delivery-YPOWSSV3.ts.map → completion-delivery-JVLNQRWX.ts.map} +0 -0
- /package/dist/chunks/{config-status-J4GPWP46.ts.map → config-status-FKGDECZ3.ts.map} +0 -0
- /package/dist/chunks/{create-stateful-transport-ZP3IXNV3.ts.map → create-stateful-transport-JWC2EFYL.ts.map} +0 -0
- /package/dist/chunks/{delegation-contract-WJPT4FVS.ts.map → delegation-contract-LA56I5DT.ts.map} +0 -0
- /package/dist/chunks/{discovery-K25T3SH4.ts.map → discovery-MIFB2U4Y.ts.map} +0 -0
- /package/dist/chunks/{in-process-transport-4RF3J6XK.ts.map → in-process-transport-HJ6TZXC3.ts.map} +0 -0
- /package/dist/chunks/{retained-semantic-state-7WXSGRJU.ts.map → retained-semantic-state-GM75FZGE.ts.map} +0 -0
- /package/dist/chunks/{spawn-idempotency-QGHO2WKC.ts.map → spawn-idempotency-BNHOSMZW.ts.map} +0 -0
|
@@ -9,21 +9,21 @@ import {
|
|
|
9
9
|
resolveChildModel,
|
|
10
10
|
seedChildSessionManager,
|
|
11
11
|
validateInProcessTools
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-LL4LP2T7.ts";
|
|
13
13
|
import "./chunk-RY2AEGMZ.ts";
|
|
14
14
|
import "./chunk-G6VZTCFH.ts";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-NTRPLF46.ts";
|
|
16
16
|
import "./chunk-RTCVYIZA.ts";
|
|
17
17
|
import "./chunk-ONDTY4EL.ts";
|
|
18
18
|
import "./chunk-5DGRMKNV.ts";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-LASD73CM.ts";
|
|
20
20
|
import "./chunk-RSUXZD6S.ts";
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-D4CR7T73.ts";
|
|
22
|
+
import "./chunk-TMZRHIIK.ts";
|
|
23
|
+
import "./chunk-VDG7LTYE.ts";
|
|
24
|
+
import "./chunk-4AQSF7AS.ts";
|
|
25
25
|
import "./chunk-SWGQLFSD.ts";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-JSZIP73U.ts";
|
|
27
27
|
import "./chunk-H3FP6DLR.ts";
|
|
28
28
|
import "./chunk-RRR66UWR.ts";
|
|
29
29
|
export {
|
|
@@ -36,4 +36,4 @@ export {
|
|
|
36
36
|
seedChildSessionManager,
|
|
37
37
|
validateInProcessTools
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=in-process-transport-
|
|
39
|
+
//# sourceMappingURL=in-process-transport-HJ6TZXC3.ts.map
|
|
@@ -13,14 +13,14 @@ import {
|
|
|
13
13
|
INSPECT_ACTIONS,
|
|
14
14
|
SubagentInspectParams,
|
|
15
15
|
registerSubagentInspect
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-JU6LUNLP.ts";
|
|
17
17
|
import "./chunk-HOP5FXDT.ts";
|
|
18
18
|
import {
|
|
19
19
|
discoverAgents,
|
|
20
20
|
projectCapabilityManifest
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-LASD73CM.ts";
|
|
22
22
|
import "./chunk-RSUXZD6S.ts";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-D4CR7T73.ts";
|
|
24
24
|
import {
|
|
25
25
|
inspectBlockingParallelLimitSettings,
|
|
26
26
|
inspectCompletionDeliverySettings,
|
|
@@ -30,10 +30,11 @@ import {
|
|
|
30
30
|
inspectStatefulLimitSettings,
|
|
31
31
|
inspectStatefulTransportSettings,
|
|
32
32
|
inspectSubagentSettings,
|
|
33
|
+
inspectUsageRecordingSettings,
|
|
33
34
|
resolveDelegationWorkflow
|
|
34
|
-
} from "./chunk-
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
35
|
+
} from "./chunk-TMZRHIIK.ts";
|
|
36
|
+
import "./chunk-VDG7LTYE.ts";
|
|
37
|
+
import "./chunk-4AQSF7AS.ts";
|
|
37
38
|
import "./chunk-BFK2Z4ZF.ts";
|
|
38
39
|
import {
|
|
39
40
|
boundText,
|
|
@@ -289,7 +290,8 @@ function projectRunSummary(run) {
|
|
|
289
290
|
historyCount: run.historyCount,
|
|
290
291
|
unreadMessages: run.unreadMessages,
|
|
291
292
|
turnGeneration: run.turnGeneration,
|
|
292
|
-
pendingCompletionCount: run.pendingCompletionCount
|
|
293
|
+
pendingCompletionCount: run.pendingCompletionCount,
|
|
294
|
+
...run.pendingRequiredCompletionCount === void 0 ? {} : { pendingRequiredCompletionCount: run.pendingRequiredCompletionCount }
|
|
293
295
|
};
|
|
294
296
|
}
|
|
295
297
|
function projectRun(run, ctx) {
|
|
@@ -322,6 +324,9 @@ function projectRun(run, ctx) {
|
|
|
322
324
|
requiredEvidence: run.contract.requiredEvidence.length
|
|
323
325
|
} : void 0,
|
|
324
326
|
resultFormat: run.resultFormat ?? "text",
|
|
327
|
+
completionRequirements: (run.completionRequirements ?? []).map((requirement) => ({
|
|
328
|
+
...requirement
|
|
329
|
+
})),
|
|
325
330
|
structuredResult: run.structuredResult,
|
|
326
331
|
termination: run.termination,
|
|
327
332
|
outcome: run.outcome,
|
|
@@ -485,6 +490,8 @@ function projectStatus(runtime) {
|
|
|
485
490
|
const parallelLimit = inspectBlockingParallelLimitSettings();
|
|
486
491
|
const detachedLimits = inspectStatefulLimitSettings();
|
|
487
492
|
const transport = inspectStatefulTransportSettings();
|
|
493
|
+
const usageRecording = inspectUsageRecordingSettings();
|
|
494
|
+
const usageStatus = runtime.getUsageRecordingStatus?.();
|
|
488
495
|
const configuredDetachedLimits = detachedLimits.values ? Object.fromEntries(
|
|
489
496
|
Object.entries(detachedLimits.values).map(([field, snapshot]) => [field, snapshot.value])
|
|
490
497
|
) : void 0;
|
|
@@ -503,6 +510,14 @@ function projectStatus(runtime) {
|
|
|
503
510
|
configuredStatefulLimitSources: configuredDetachedLimitSources,
|
|
504
511
|
configuredCompletionDelivery: completion.value,
|
|
505
512
|
configuredCompletionDeliverySource: completion.source,
|
|
513
|
+
usageRecording: usageStatus ? {
|
|
514
|
+
enabled: usageStatus.enabled,
|
|
515
|
+
retentionDays: usageStatus.retentionDays,
|
|
516
|
+
recordedEvents: usageStatus.recordedEvents,
|
|
517
|
+
writeFailure: usageStatus.writeFailure
|
|
518
|
+
} : { enabled: false },
|
|
519
|
+
configuredUsageRecording: usageRecording.enabled,
|
|
520
|
+
configuredUsageRecordingSource: usageRecording.source,
|
|
506
521
|
maxParallelTasks: runtime.getMaxParallelTasks(),
|
|
507
522
|
configuredMaxParallelTasks: parallelLimit.value,
|
|
508
523
|
configuredMaxParallelTasksSource: parallelLimit.source,
|
|
@@ -516,8 +531,8 @@ function projectStatus(runtime) {
|
|
|
516
531
|
configuredConsultResources: resources.value,
|
|
517
532
|
consultResourcesSource: resources.source,
|
|
518
533
|
settingsPath: safeDisplayPath(resources.path, process.cwd()),
|
|
519
|
-
settingsError: configured.error || resources.error || cwdPolicy.error || completion.error || parallelLimit.error || detachedLimits.error || transport.error ? boundedPrivateText(
|
|
520
|
-
configured.error ?? resources.error ?? cwdPolicy.error ?? completion.error ?? parallelLimit.error ?? detachedLimits.error ?? transport.error ?? "",
|
|
534
|
+
settingsError: configured.error || resources.error || cwdPolicy.error || completion.error || parallelLimit.error || detachedLimits.error || transport.error || usageRecording.error ? boundedPrivateText(
|
|
535
|
+
configured.error ?? resources.error ?? cwdPolicy.error ?? completion.error ?? parallelLimit.error ?? detachedLimits.error ?? transport.error ?? usageRecording.error ?? "",
|
|
521
536
|
2 * 1024
|
|
522
537
|
) : void 0
|
|
523
538
|
};
|
|
@@ -616,4 +631,4 @@ export {
|
|
|
616
631
|
registerSubagentInspect,
|
|
617
632
|
validateInspectParams
|
|
618
633
|
};
|
|
619
|
-
//# sourceMappingURL=inspect-
|
|
634
|
+
//# sourceMappingURL=inspect-UH2TKH6E.ts.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/inspect.ts"],
|
|
4
|
+
"sourcesContent": ["import * as path from \"node:path\";\nimport { CONFIG_DIR_NAME, type ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport { discoverAgents } from \"./agents/discovery.js\";\nimport type {\n\tAgentConfig,\n\tAgentScope,\n\tConsultationCwdPolicy,\n\tDelegationCwdPolicy,\n} from \"./agents/types.js\";\nimport { projectCapabilityManifest } from \"./capabilities.js\";\nimport { resolveConsultTools } from \"./consult-policy.js\";\nimport { buildContextSnapshot, type ContextMode } from \"./context.js\";\nimport { INSPECT_ACTIONS } from \"./inspect-tool.js\";\nimport { DEFAULT_MAX_CONTEXT_BYTES } from \"./limits.js\";\nimport { resolvePiInvocation } from \"./pi-invocation.js\";\nimport type { AgentRunInspectionDetail, AgentRunInspectionSummary } from \"./registry.js\";\nimport { boundedPrivateText, boundText, safeDisplayPath, safeTerminalLine } from \"./safe-text.js\";\nimport { resolveDelegationWorkflow } from \"./settings/inspection.js\";\nimport {\n\tinspectBlockingParallelLimitSettings,\n\tinspectCompletionDeliverySettings,\n\tinspectConsultResourceSettings,\n\tinspectCwdPolicySettings,\n\tinspectDelegationWorkflowSettings,\n\tinspectStatefulLimitSettings,\n\tinspectStatefulTransportSettings,\n\tinspectSubagentSettings,\n\tinspectUsageRecordingSettings,\n} from \"./settings.js\";\nimport type { StatefulSubagentRuntimeStatus } from \"./stateful.js\";\nimport type { UsageRecordingStatus } from \"./usage-recording.js\";\nimport type { WorkItemLedgerSnapshot } from \"./work-item-ledger.js\";\nimport { inspectSessionWorkflows } from \"./work-item-persistence.js\";\n\nconst MAX_DETAILS_LIST_BYTES = 40 * 1024;\n\nexport { registerSubagentInspect } from \"./inspect-registration.js\";\nexport { SubagentInspectParams } from \"./inspect-tool.js\";\n\nexport interface SubagentInspectRuntime {\n\tgetBlockingEnabled(): boolean;\n\tgetMaxParallelTasks(): number;\n\tgetConsultResourcePolicy(): \"project-context\" | \"none\" | \"all\";\n\tgetConsultationCwdPolicy(): ConsultationCwdPolicy;\n\tgetDelegationCwdPolicy(): DelegationCwdPolicy;\n\tgetUsageRecordingStatus?(): UsageRecordingStatus;\n\tgetRuntimeStatus(): StatefulSubagentRuntimeStatus;\n\tlistRunInspection(includeClosed?: boolean): AgentRunInspectionSummary[];\n\tgetRunInspection(agentId: string): AgentRunInspectionDetail | undefined;\n}\n\ninterface InspectToolResult {\n\tcontent: Array<{ type: \"text\"; text: string }>;\n\tdetails: Record<string, unknown>;\n}\n\ntype ValidatedInspectOperation =\n\t| { action: \"list_agents\"; agentScope: AgentScope; limit: number }\n\t| { action: \"get_agent\"; agent: string; agentScope: AgentScope }\n\t| { action: \"list_runs\"; includeClosed: boolean; limit: number }\n\t| { action: \"get_run\"; agentId: string }\n\t| { action: \"list_workflows\"; limit: number }\n\t| { action: \"get_workflow\"; workflowId: string }\n\t| { action: \"list_models\"; limit: number }\n\t| { action: \"preview_context\"; context: ContextMode; contextEntryIds?: string[] }\n\t| { action: \"status\" }\n\t| { action: \"diagnose\" };\n\nexport function validateInspectParams(params: unknown): ValidatedInspectOperation {\n\tconst values = parameterRecord(params);\n\tconst rawAction = values.action;\n\tif (\n\t\ttypeof rawAction !== \"string\" ||\n\t\t!INSPECT_ACTIONS.includes(rawAction as (typeof INSPECT_ACTIONS)[number])\n\t) {\n\t\tthrow new Error(`subagent_inspect action must be one of: ${INSPECT_ACTIONS.join(\", \")}`);\n\t}\n\tconst action = rawAction as (typeof INSPECT_ACTIONS)[number];\n\tconst allowed: Record<(typeof INSPECT_ACTIONS)[number], readonly string[]> = {\n\t\tlist_agents: [\"action\", \"agentScope\", \"limit\"],\n\t\tget_agent: [\"action\", \"agent\", \"agentScope\"],\n\t\tlist_runs: [\"action\", \"includeClosed\", \"limit\"],\n\t\tget_run: [\"action\", \"agentId\"],\n\t\tlist_workflows: [\"action\", \"limit\"],\n\t\tget_workflow: [\"action\", \"workflowId\"],\n\t\tlist_models: [\"action\", \"limit\"],\n\t\tpreview_context: [\"action\", \"context\", \"contextEntryIds\"],\n\t\tstatus: [\"action\"],\n\t\tdiagnose: [\"action\"],\n\t};\n\tconst unexpected = Object.keys(values).find(\n\t\t(key) => values[key] !== undefined && !allowed[action].includes(key),\n\t);\n\tif (unexpected)\n\t\tthrow new Error(`subagent_inspect action \"${action}\" does not accept ${unexpected}`);\n\n\tif (action === \"list_agents\" || action === \"get_agent\") {\n\t\tconst agentScope = optionalAgentScope(values.agentScope);\n\t\tif (action === \"get_agent\") {\n\t\t\treturn { action, agent: requiredString(values.agent, action, \"agent\"), agentScope };\n\t\t}\n\t\treturn { action, agentScope, limit: optionalLimit(values.limit, 32) };\n\t}\n\tif (action === \"list_runs\") {\n\t\tif (values.includeClosed !== undefined && typeof values.includeClosed !== \"boolean\") {\n\t\t\tthrow new Error('subagent_inspect action \"list_runs\" requires includeClosed to be boolean');\n\t\t}\n\t\treturn {\n\t\t\taction,\n\t\t\tincludeClosed: values.includeClosed === true,\n\t\t\tlimit: optionalLimit(values.limit, 50),\n\t\t};\n\t}\n\tif (action === \"get_run\") {\n\t\treturn { action, agentId: requiredString(values.agentId, action, \"agentId\") };\n\t}\n\tif (action === \"list_workflows\") {\n\t\treturn { action, limit: optionalLimit(values.limit, 50) };\n\t}\n\tif (action === \"get_workflow\") {\n\t\treturn { action, workflowId: requiredString(values.workflowId, action, \"workflowId\") };\n\t}\n\tif (action === \"list_models\") {\n\t\treturn { action, limit: optionalLimit(values.limit, 50) };\n\t}\n\tif (action === \"preview_context\") {\n\t\tconst context = optionalContextMode(values.context);\n\t\tconst contextEntryIds = optionalStringArray(values.contextEntryIds, \"contextEntryIds\");\n\t\treturn {\n\t\t\taction,\n\t\t\tcontext: values.context === undefined && contextEntryIds ? \"all\" : context,\n\t\t\t...(contextEntryIds ? { contextEntryIds } : {}),\n\t\t};\n\t}\n\treturn { action };\n}\n\nexport async function executeSubagentInspect(\n\tparams: unknown,\n\tctx: ExtensionContext,\n\truntime: SubagentInspectRuntime,\n): Promise<InspectToolResult> {\n\tconst operation = validateInspectParams(params);\n\tif (operation.action === \"list_agents\" || operation.action === \"get_agent\") {\n\t\tassertTrustedScope(operation.agentScope, ctx);\n\t\tconst settings = inspectSubagentSettings().settings;\n\t\tconst discovery = discoverAgents(ctx.cwd, operation.agentScope, settings);\n\t\tconst agents = [...discovery.agents].sort((left, right) =>\n\t\t\tleft.name === right.name\n\t\t\t\t? left.source.localeCompare(right.source)\n\t\t\t\t: left.name.localeCompare(right.name),\n\t\t);\n\t\tif (operation.action === \"list_agents\") {\n\t\t\tconst selected = boundedProjection(agents, operation.limit, (agent) =>\n\t\t\t\tprojectAgent(agent, ctx, false),\n\t\t\t);\n\t\t\treturn inspectResult({\n\t\t\t\taction: operation.action,\n\t\t\t\tagents: selected.items,\n\t\t\t\treturned: selected.items.length,\n\t\t\t\tomitted: selected.omitted + (discovery.omittedAgentDefinitions ?? 0),\n\t\t\t\tdiscoveryIncomplete: discovery.metadataDiscoveryIncomplete === true,\n\t\t\t});\n\t\t}\n\t\tconst agent = agents.find((candidate) => candidate.name === operation.agent);\n\t\tif (!agent) {\n\t\t\tthrow new Error(`Unknown subagent definition: ${boundedPrivateText(operation.agent, 256)}`);\n\t\t}\n\t\treturn inspectResult({ action: operation.action, agent: projectAgent(agent, ctx) });\n\t}\n\n\tif (operation.action === \"list_runs\") {\n\t\tconst runs = runtime.listRunInspection(operation.includeClosed);\n\t\tconst selected = boundedProjection(runs, operation.limit, projectRunSummary);\n\t\treturn inspectResult({\n\t\t\taction: operation.action,\n\t\t\truns: selected.items,\n\t\t\treturned: selected.items.length,\n\t\t\tomitted: selected.omitted,\n\t\t});\n\t}\n\tif (operation.action === \"get_run\") {\n\t\tconst run = runtime.getRunInspection(operation.agentId);\n\t\tif (!run) {\n\t\t\tthrow new Error(`Unknown retained run: ${boundedPrivateText(operation.agentId, 256)}`);\n\t\t}\n\t\treturn inspectResult({ action: operation.action, run: projectRun(run, ctx) });\n\t}\n\tif (operation.action === \"list_workflows\" || operation.action === \"get_workflow\") {\n\t\tconst owner =\n\t\t\tctx.sessionManager.getSessionId?.() ??\n\t\t\tctx.sessionManager.getSessionFile?.() ??\n\t\t\t`ephemeral:${ctx.cwd}`;\n\t\tconst inspected = inspectSessionWorkflows(owner, {\n\t\t\tmaxStoredWorkflows: operation.action === \"list_workflows\" ? operation.limit : 64,\n\t\t});\n\t\tif (operation.action === \"list_workflows\") {\n\t\t\tconst selected = boundedProjection(\n\t\t\t\tinspected.workflows,\n\t\t\t\toperation.limit,\n\t\t\t\tprojectWorkflowSummary,\n\t\t\t);\n\t\t\treturn inspectResult({\n\t\t\t\taction: operation.action,\n\t\t\t\tworkflows: selected.items,\n\t\t\t\treturned: selected.items.length,\n\t\t\t\tomitted: inspected.omitted + selected.omitted,\n\t\t\t\tinvalid: inspected.invalid,\n\t\t\t});\n\t\t}\n\t\tconst workflow = inspected.workflows.find(\n\t\t\t(candidate) => candidate.workflowId === operation.workflowId,\n\t\t);\n\t\tif (!workflow) {\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown persisted workflow: ${boundedPrivateText(operation.workflowId, 256)}`,\n\t\t\t);\n\t\t}\n\t\treturn inspectResult({ action: operation.action, workflow: projectWorkflow(workflow) });\n\t}\n\tif (operation.action === \"list_models\") {\n\t\treturn inspectResult({ action: operation.action, ...projectModels(ctx, operation.limit) });\n\t}\n\tif (operation.action === \"preview_context\") {\n\t\tconst snapshot = buildContextSnapshot(\n\t\t\tctx.sessionManager.getBranch(),\n\t\t\toperation.context,\n\t\t\tDEFAULT_MAX_CONTEXT_BYTES,\n\t\t\toperation.contextEntryIds,\n\t\t);\n\t\treturn inspectResult({\n\t\t\taction: operation.action,\n\t\t\tpreview: {\n\t\t\t\tmode: operation.context,\n\t\t\t\tturns: snapshot.turns,\n\t\t\t\tsourceCount: snapshot.sourceIds.length,\n\t\t\t\tbytes: Buffer.byteLength(snapshot.text, \"utf8\"),\n\t\t\t\ttruncated: snapshot.truncated,\n\t\t\t},\n\t\t});\n\t}\n\tif (operation.action === \"status\") {\n\t\treturn inspectResult({ action: operation.action, status: projectStatus(runtime) });\n\t}\n\n\tconst settings = inspectSubagentSettings();\n\tconst userDiscovery = discoverAgents(ctx.cwd, \"user\", settings.settings);\n\tconst modelCount = availableModelCount(ctx);\n\tconst runtimeStatus = runtime.getRuntimeStatus();\n\tconst rpcCapability = inspectRpcCapability();\n\tconst inProcessCapability = await inspectInProcessCapability();\n\tconst checks = [\n\t\t{\n\t\t\tname: \"settings\",\n\t\t\tstatus: settings.error ? \"fail\" : \"pass\",\n\t\t\tmessage: settings.error\n\t\t\t\t? boundedPrivateText(settings.error, 2 * 1024)\n\t\t\t\t: \"Settings are valid or absent.\",\n\t\t},\n\t\t{\n\t\t\tname: \"agent-discovery\",\n\t\t\tstatus:\n\t\t\t\tuserDiscovery.metadataDiscoveryIncomplete ||\n\t\t\t\t(userDiscovery.omittedAgentDefinitions ?? 0) > 0\n\t\t\t\t\t? \"warning\"\n\t\t\t\t\t: \"pass\",\n\t\t\tmessage: `${userDiscovery.agents.length} user-scope definitions available.`,\n\t\t},\n\t\t{\n\t\t\tname: \"models\",\n\t\t\tstatus: modelCount > 0 ? \"pass\" : \"fail\",\n\t\t\tmessage: `${modelCount} session-usable models available.`,\n\t\t},\n\t\t{\n\t\t\tname: \"runtime\",\n\t\t\tstatus: runtimeStatus.enabled && !runtimeStatus.initialized ? \"warning\" : \"pass\",\n\t\t\tmessage: runtimeStatus.initialized\n\t\t\t\t? \"Stateful runtime initialized.\"\n\t\t\t\t: \"Stateful runtime not initialized.\",\n\t\t},\n\t\t{\n\t\t\tname: \"in-process-sdk\",\n\t\t\tstatus: inProcessCapability.error ? \"fail\" : \"pass\",\n\t\t\tmessage: inProcessCapability.error\n\t\t\t\t? boundedPrivateText(inProcessCapability.error, 2 * 1024)\n\t\t\t\t: \"Required public Pi in-process session APIs are available.\",\n\t\t},\n\t\t{\n\t\t\tname: \"rpc-cli\",\n\t\t\tstatus: rpcCapability.error ? \"fail\" : \"pass\",\n\t\t\tmessage: rpcCapability.error\n\t\t\t\t? boundedPrivateText(rpcCapability.error, 2 * 1024)\n\t\t\t\t: \"The exact loaded Pi CLI is available for persistent RPC transport.\",\n\t\t},\n\t\t{\n\t\t\tname: \"consultation\",\n\t\t\tstatus: runtime.getBlockingEnabled() && modelCount > 0 ? \"pass\" : \"fail\",\n\t\t\tmessage: runtime.getBlockingEnabled()\n\t\t\t\t? modelCount > 0\n\t\t\t\t\t? \"Read-only consultation is supported.\"\n\t\t\t\t\t: \"Consultation has no available model.\"\n\t\t\t\t: \"Blocking delegation is disabled, so consultation is not registered.\",\n\t\t},\n\t] as const;\n\treturn inspectResult({\n\t\taction: operation.action,\n\t\tchecks,\n\t\tok: checks.every((check) => check.status !== \"fail\"),\n\t});\n}\n\nfunction projectAgent(\n\tagent: AgentConfig,\n\tctx: ExtensionContext,\n\tincludeTools = true,\n): Record<string, unknown> {\n\tconst tools = agent.tools === undefined ? undefined : projectToolNames(agent.tools);\n\treturn {\n\t\tname: boundedPrivateText(agent.name, 256),\n\t\tdescription: boundedPrivateText(agent.description, 256),\n\t\tsource: agent.source,\n\t\tscope: agent.source === \"project\" ? \"project\" : \"user\",\n\t\tpath:\n\t\t\tagent.source === \"project\"\n\t\t\t\t? safeTerminalLine(\n\t\t\t\t\t\tpath.posix.join(CONFIG_DIR_NAME, \"agents\", path.basename(agent.filePath)),\n\t\t\t\t\t)\n\t\t\t\t: safeDisplayPath(agent.filePath, ctx.cwd),\n\t\tmodel: agent.model ? boundedPrivateText(agent.model, 256) : undefined,\n\t\tthinkingLevel: agent.thinkingLevel,\n\t\tcapabilityManifest: projectCapabilityManifest(agent.capabilityManifest),\n\t\t...(includeTools\n\t\t\t? { tools, toolCount: agent.tools?.length }\n\t\t\t: { toolCount: agent.tools?.length }),\n\t\tconsultTools: resolveConsultTools(agent.tools),\n\t};\n}\n\nfunction projectRunSummary(run: AgentRunInspectionSummary): Record<string, unknown> {\n\treturn {\n\t\tid: boundedPrivateText(run.id, 256),\n\t\tagent: boundedPrivateText(run.agent, 256),\n\t\tstate: run.state,\n\t\tcreatedAt: run.createdAt,\n\t\tupdatedAt: run.updatedAt,\n\t\thistoryCount: run.historyCount,\n\t\tunreadMessages: run.unreadMessages,\n\t\tturnGeneration: run.turnGeneration,\n\t\tpendingCompletionCount: run.pendingCompletionCount,\n\t\t...(run.pendingRequiredCompletionCount === undefined\n\t\t\t? {}\n\t\t\t: { pendingRequiredCompletionCount: run.pendingRequiredCompletionCount }),\n\t};\n}\n\nfunction projectRun(run: AgentRunInspectionDetail, ctx: ExtensionContext): Record<string, unknown> {\n\treturn {\n\t\t...projectRunSummary(run),\n\t\tcwd: safeDisplayPath(run.cwd, ctx.cwd),\n\t\tworkspaceMode: run.workspaceMode ?? \"shared\",\n\t\tthinkingLevel: run.thinkingLevel,\n\t\ttimeoutMs: run.timeoutMs,\n\t\tcurrentTimeoutMs: run.currentTimeoutMs,\n\t\tidleTimeoutMs: run.idleTimeoutMs,\n\t\tcurrentIdleTimeoutMs: run.currentIdleTimeoutMs,\n\t\tmaxTurns: run.maxTurns,\n\t\tcurrentMaxTurns: run.currentMaxTurns,\n\t\tmaxToolCalls: run.maxToolCalls,\n\t\tcurrentMaxToolCalls: run.currentMaxToolCalls,\n\t\tcontext: {\n\t\t\tturns: run.contextTurns ?? 0,\n\t\t\tsources: run.contextSources ?? 0,\n\t\t\tbytes: run.contextBytes ?? 0,\n\t\t\ttruncated: run.contextTruncated === true,\n\t\t},\n\t\tcontract: run.contract\n\t\t\t? {\n\t\t\t\t\tversion: run.contract.version,\n\t\t\t\t\tlevel: run.contract.level,\n\t\t\t\t\ttaskId: boundedPrivateText(run.contract.taskId, 256),\n\t\t\t\t\tenforcement: run.contract.enforcement,\n\t\t\t\t\tdependencies: run.contract.dependencies.length,\n\t\t\t\t\tacceptanceCriteria: run.contract.acceptanceCriteria.length,\n\t\t\t\t\trequiredEvidence: run.contract.requiredEvidence.length,\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tresultFormat: run.resultFormat ?? \"text\",\n\t\tcompletionRequirements: (run.completionRequirements ?? []).map((requirement) => ({\n\t\t\t...requirement,\n\t\t})),\n\t\tstructuredResult: run.structuredResult,\n\t\ttermination: run.termination,\n\t\toutcome: run.outcome,\n\t\tcapabilityGrant: run.capabilityGrant\n\t\t\t? {\n\t\t\t\t\tversion: run.capabilityGrant.version,\n\t\t\t\t\tid: run.capabilityGrant.id,\n\t\t\t\t\texecutionPlanId: run.capabilityGrant.executionPlanId,\n\t\t\t\t\ttaskGeneration: run.capabilityGrant.taskGeneration,\n\t\t\t\t\tissuedAt: run.capabilityGrant.issuedAt,\n\t\t\t\t\texpiresAt: run.capabilityGrant.expiresAt,\n\t\t\t\t\tstate: run.capabilityGrant.state,\n\t\t\t\t\trevokedAt: run.capabilityGrant.revokedAt,\n\t\t\t\t\trevocationReason: run.capabilityGrant.revocationReason,\n\t\t\t\t}\n\t\t\t: undefined,\n\t\texecutionPlan: run.executionPlan\n\t\t\t? {\n\t\t\t\t\t...run.executionPlan,\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\t...run.executionPlan.target,\n\t\t\t\t\t\tcwd: safeDisplayPath(run.executionPlan.target.cwd, ctx.cwd),\n\t\t\t\t\t\ttrust: { ...run.executionPlan.target.trust, sourcePath: undefined },\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tsemanticSnapshot: run.semanticSnapshot\n\t\t\t? {\n\t\t\t\t\tversion: run.semanticSnapshot.version,\n\t\t\t\t\tdigest: run.semanticSnapshot.digest,\n\t\t\t\t\tcomponents: { ...run.semanticSnapshot.components },\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tsemanticCompatibility: run.semanticCompatibility,\n\t\ttelemetry: run.telemetry,\n\t\tcurrentRunId: run.currentRunId,\n\t\tcurrentTurnGeneration: run.currentTurnGeneration,\n\t\tcurrentTask: run.currentTask ? boundedPrivateText(run.currentTask, 2 * 1024) : undefined,\n\t\terror: run.error ? boundedPrivateText(run.error, 2 * 1024) : undefined,\n\t\ttarget: run.target\n\t\t\t? {\n\t\t\t\t\tcwd: safeDisplayPath(run.target.cwd, ctx.cwd),\n\t\t\t\t\tboundary: run.target.boundary,\n\t\t\t\t\ttrust: {\n\t\t\t\t\t\tkind: run.target.trust.kind,\n\t\t\t\t\t\tprojectTrusted: run.target.trust.projectTrusted,\n\t\t\t\t\t\tsourcePath: run.target.trust.sourcePath\n\t\t\t\t\t\t\t? safeDisplayPath(run.target.trust.sourcePath, ctx.cwd)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\twarning: run.target.trust.warning\n\t\t\t\t\t\t\t? boundedPrivateText(run.target.trust.warning, 512)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tpolicy: run.policy\n\t\t\t? {\n\t\t\t\t\tinherited: projectToolNames(run.policy.inherited),\n\t\t\t\t\toverridden: projectToolNames(run.policy.overridden),\n\t\t\t\t\tunsupported: projectToolNames(run.policy.unsupported),\n\t\t\t\t}\n\t\t\t: undefined,\n\t};\n}\n\nfunction projectWorkflowSummary(workflow: WorkItemLedgerSnapshot): Record<string, unknown> {\n\treturn {\n\t\tworkflowId: boundedPrivateText(workflow.workflowId, 256),\n\t\tgeneration: workflow.generation,\n\t\titemCount: workflow.items.length,\n\t\tstates: Object.fromEntries(\n\t\t\t[...new Set(workflow.items.map((item) => item.state))]\n\t\t\t\t.sort()\n\t\t\t\t.map((state) => [state, workflow.items.filter((item) => item.state === state).length]),\n\t\t),\n\t};\n}\n\nfunction projectWorkflow(workflow: WorkItemLedgerSnapshot): Record<string, unknown> {\n\tconst projected = boundedProjection(workflow.items, 64, (item) => ({\n\t\tid: boundedPrivateText(item.id, 256),\n\t\tstate: item.state,\n\t\tgeneration: item.generation,\n\t\ttaskGeneration: item.taskGeneration,\n\t\tdependencies: item.dependencies.map((value) => boundedPrivateText(value, 256)),\n\t\tassignedAgentId: item.assignedAgentId\n\t\t\t? boundedPrivateText(item.assignedAgentId, 256)\n\t\t\t: undefined,\n\t\tacceptedExecutionPlanId: item.acceptedExecutionPlanId,\n\t\tartifacts: item.artifacts.map((artifact) => ({\n\t\t\tid: boundedPrivateText(artifact.id, 256),\n\t\t\tkind: boundedPrivateText(artifact.kind, 256),\n\t\t\tversion: boundedPrivateText(artifact.version, 256),\n\t\t\tproducerTaskId: artifact.producerTaskId\n\t\t\t\t? boundedPrivateText(artifact.producerTaskId, 256)\n\t\t\t\t: undefined,\n\t\t\tgeneration: artifact.generation,\n\t\t\tverified: artifact.verified,\n\t\t})),\n\t\tverificationAccepted: item.verificationAccepted,\n\t\tacceptanceStateVersion: item.acceptanceStateVersion,\n\t\tacceptanceRequired: item.acceptanceRequired,\n\t\tacceptanceState: item.acceptanceState,\n\t\treworkCount: item.reworkCount,\n\t\tmaxReworkCycles: item.maxReworkCycles,\n\t\tacceptanceReceipt: item.acceptanceReceipt\n\t\t\t? {\n\t\t\t\t\tversion: item.acceptanceReceipt.version,\n\t\t\t\t\tdecision: item.acceptanceReceipt.decision,\n\t\t\t\t\ttargetTaskId: boundedPrivateText(item.acceptanceReceipt.targetTaskId, 256),\n\t\t\t\t\ttargetTaskGeneration: item.acceptanceReceipt.targetTaskGeneration,\n\t\t\t\t\ttargetExecutionPlanId: item.acceptanceReceipt.targetExecutionPlanId,\n\t\t\t\t\tverifierTaskId: boundedPrivateText(item.acceptanceReceipt.verifierTaskId, 256),\n\t\t\t\t\tverifierTaskGeneration: item.acceptanceReceipt.verifierTaskGeneration,\n\t\t\t\t\tverifierExecutionPlanId: item.acceptanceReceipt.verifierExecutionPlanId,\n\t\t\t\t\tverifierAgent: boundedPrivateText(item.acceptanceReceipt.verifierAgent, 256),\n\t\t\t\t\tbeforeTreeIdentity: item.acceptanceReceipt.beforeTreeIdentity,\n\t\t\t\t\tafterTreeIdentity: item.acceptanceReceipt.afterTreeIdentity,\n\t\t\t\t\tpatchDigest: item.acceptanceReceipt.patchDigest,\n\t\t\t\t\tchangedPathCount: item.acceptanceReceipt.changedPaths.length,\n\t\t\t\t\tcheckCount: item.acceptanceReceipt.checks.length,\n\t\t\t\t\trequiredEvidenceCount: item.acceptanceReceipt.requiredEvidenceIds.length,\n\t\t\t\t\tcreatedAt: item.acceptanceReceipt.createdAt,\n\t\t\t\t\tsourceTruncated: item.acceptanceReceipt.sourceTruncated,\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tacceptanceReceiptHistoryCount: item.acceptanceReceiptHistory.length,\n\t\tstagedTreeIdentity: item.stagedTreeIdentity\n\t\t\t? {\n\t\t\t\t\tversion: item.stagedTreeIdentity.version,\n\t\t\t\t\tkind: item.stagedTreeIdentity.kind,\n\t\t\t\t\tdigest: item.stagedTreeIdentity.digest,\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tverificationReceipt: item.verificationReceipt\n\t\t\t? {\n\t\t\t\t\tversion: item.verificationReceipt.version,\n\t\t\t\t\tdecision: item.verificationReceipt.decision,\n\t\t\t\t\ttargetTaskId: boundedPrivateText(item.verificationReceipt.targetTaskId, 256),\n\t\t\t\t\ttargetTaskGeneration: item.verificationReceipt.targetTaskGeneration,\n\t\t\t\t\ttargetExecutionPlanId: item.verificationReceipt.targetExecutionPlanId,\n\t\t\t\t\tverifierTaskId: boundedPrivateText(item.verificationReceipt.verifierTaskId, 256),\n\t\t\t\t\tverifierTaskGeneration: item.verificationReceipt.verifierTaskGeneration,\n\t\t\t\t\tverifierExecutionPlanId: item.verificationReceipt.verifierExecutionPlanId,\n\t\t\t\t\ttreeIdentity: item.verificationReceipt.treeIdentity,\n\t\t\t\t\tsummary: boundedPrivateText(item.verificationReceipt.summary, 8 * 1024),\n\t\t\t\t\tevidenceCount: item.verificationReceipt.evidence.length,\n\t\t\t\t\tlimitationCount: item.verificationReceipt.limitations.length,\n\t\t\t\t\tcreatedAt: item.verificationReceipt.createdAt,\n\t\t\t\t\ttruncated: item.verificationReceipt.truncated,\n\t\t\t\t}\n\t\t\t: undefined,\n\t\toutcomeReason: item.outcomeReason\n\t\t\t? boundedPrivateText(item.outcomeReason, 2 * 1024)\n\t\t\t: undefined,\n\t}));\n\treturn {\n\t\t...projectWorkflowSummary(workflow),\n\t\titems: projected.items,\n\t\tomittedItems: projected.omitted,\n\t};\n}\n\nfunction projectModels(ctx: ExtensionContext, limit: number): Record<string, unknown> {\n\tconst scoped = ctx.scopedModels ?? [];\n\tconst candidates =\n\t\tscoped.length > 0\n\t\t\t? scoped\n\t\t\t: ctx.modelRegistry.getAvailable().map((model) => ({ model, thinkingLevel: undefined }));\n\tconst selected = boundedProjection(candidates, limit, ({ model, thinkingLevel }) => ({\n\t\tprovider: boundedPrivateText(model.provider, 256),\n\t\tid: boundedPrivateText(model.id, 256),\n\t\tname: boundedPrivateText(model.name, 256),\n\t\treasoning: model.reasoning,\n\t\tinput: [...model.input],\n\t\tcontextWindow: model.contextWindow,\n\t\tmaxTokens: model.maxTokens,\n\t\tthinkingLevel,\n\t\tcurrent: ctx.model?.provider === model.provider && ctx.model?.id === model.id,\n\t}));\n\treturn {\n\t\tmodels: selected.items,\n\t\treturned: selected.items.length,\n\t\tomitted: selected.omitted,\n\t\tsource: scoped.length > 0 ? \"session scope\" : \"available snapshot\",\n\t};\n}\n\nfunction projectStatus(runtime: SubagentInspectRuntime): Record<string, unknown> {\n\tconst stateful = runtime.getRuntimeStatus();\n\tconst workflow = resolveDelegationWorkflow(runtime.getBlockingEnabled(), stateful.enabled);\n\tconst configured = inspectDelegationWorkflowSettings();\n\tconst resources = inspectConsultResourceSettings();\n\tconst cwdPolicy = inspectCwdPolicySettings();\n\tconst completion = inspectCompletionDeliverySettings();\n\tconst parallelLimit = inspectBlockingParallelLimitSettings();\n\tconst detachedLimits = inspectStatefulLimitSettings();\n\tconst transport = inspectStatefulTransportSettings();\n\tconst usageRecording = inspectUsageRecordingSettings();\n\tconst usageStatus = runtime.getUsageRecordingStatus?.();\n\tconst configuredDetachedLimits = detachedLimits.values\n\t\t? Object.fromEntries(\n\t\t\t\tObject.entries(detachedLimits.values).map(([field, snapshot]) => [field, snapshot.value]),\n\t\t\t)\n\t\t: undefined;\n\tconst configuredDetachedLimitSources = detachedLimits.values\n\t\t? Object.fromEntries(\n\t\t\t\tObject.entries(detachedLimits.values).map(([field, snapshot]) => [field, snapshot.source]),\n\t\t\t)\n\t\t: undefined;\n\treturn {\n\t\tworkflow,\n\t\tconfiguredWorkflow: configured.value,\n\t\tconfiguredWorkflowSource: configured.source,\n\t\tstateful,\n\t\tstatefulLimits: stateful.limits,\n\t\tconfiguredTransport: transport.value,\n\t\tconfiguredTransportSource: transport.source,\n\t\tconfiguredStatefulLimits: configuredDetachedLimits,\n\t\tconfiguredStatefulLimitSources: configuredDetachedLimitSources,\n\t\tconfiguredCompletionDelivery: completion.value,\n\t\tconfiguredCompletionDeliverySource: completion.source,\n\t\tusageRecording: usageStatus\n\t\t\t? {\n\t\t\t\t\tenabled: usageStatus.enabled,\n\t\t\t\t\tretentionDays: usageStatus.retentionDays,\n\t\t\t\t\trecordedEvents: usageStatus.recordedEvents,\n\t\t\t\t\twriteFailure: usageStatus.writeFailure,\n\t\t\t\t}\n\t\t\t: { enabled: false },\n\t\tconfiguredUsageRecording: usageRecording.enabled,\n\t\tconfiguredUsageRecordingSource: usageRecording.source,\n\t\tmaxParallelTasks: runtime.getMaxParallelTasks(),\n\t\tconfiguredMaxParallelTasks: parallelLimit.value,\n\t\tconfiguredMaxParallelTasksSource: parallelLimit.source,\n\t\tconsultResources: runtime.getConsultResourcePolicy(),\n\t\tconsultationCwdPolicy: runtime.getConsultationCwdPolicy(),\n\t\tconfiguredConsultationCwdPolicy: cwdPolicy.consultation.value,\n\t\tconsultationCwdPolicySource: cwdPolicy.consultation.source,\n\t\tdelegationCwdPolicy: runtime.getDelegationCwdPolicy(),\n\t\tconfiguredDelegationCwdPolicy: cwdPolicy.delegation.value,\n\t\tdelegationCwdPolicySource: cwdPolicy.delegation.source,\n\t\tconfiguredConsultResources: resources.value,\n\t\tconsultResourcesSource: resources.source,\n\t\tsettingsPath: safeDisplayPath(resources.path, process.cwd()),\n\t\tsettingsError:\n\t\t\tconfigured.error ||\n\t\t\tresources.error ||\n\t\t\tcwdPolicy.error ||\n\t\t\tcompletion.error ||\n\t\t\tparallelLimit.error ||\n\t\t\tdetachedLimits.error ||\n\t\t\ttransport.error ||\n\t\t\tusageRecording.error\n\t\t\t\t? boundedPrivateText(\n\t\t\t\t\t\tconfigured.error ??\n\t\t\t\t\t\t\tresources.error ??\n\t\t\t\t\t\t\tcwdPolicy.error ??\n\t\t\t\t\t\t\tcompletion.error ??\n\t\t\t\t\t\t\tparallelLimit.error ??\n\t\t\t\t\t\t\tdetachedLimits.error ??\n\t\t\t\t\t\t\ttransport.error ??\n\t\t\t\t\t\t\tusageRecording.error ??\n\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t2 * 1024,\n\t\t\t\t\t)\n\t\t\t\t: undefined,\n\t};\n}\n\nasync function inspectInProcessCapability(): Promise<{ error?: string }> {\n\ttry {\n\t\tconst moduleSpecifier = \"@earendil-works/pi-coding-agent\";\n\t\tconst core = await import(moduleSpecifier);\n\t\tfor (const name of [\n\t\t\t\"createAgentSessionServices\",\n\t\t\t\"createAgentSessionFromServices\",\n\t\t\t\"resolveCliModel\",\n\t\t] as const) {\n\t\t\tif (typeof core[name] !== \"function\") return { error: `Pi core does not export ${name}()` };\n\t\t}\n\t\treturn {};\n\t} catch (error) {\n\t\treturn { error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\nfunction inspectRpcCapability(): { error?: string } {\n\ttry {\n\t\tresolvePiInvocation([\"--mode\", \"rpc\", \"--no-session\"]);\n\t\treturn {};\n\t} catch (error) {\n\t\treturn { error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\nfunction availableModelCount(ctx: ExtensionContext): number {\n\treturn (ctx.scopedModels?.length ?? 0) > 0\n\t\t? ctx.scopedModels.length\n\t\t: ctx.modelRegistry.getAvailable().length;\n}\n\nfunction projectToolNames(tools: readonly string[]): string[] {\n\treturn tools.slice(0, 100).map((tool) => boundedPrivateText(tool, 256));\n}\n\nfunction boundedProjection<T, TProjected>(\n\tvalues: readonly T[],\n\tlimit: number,\n\tproject: (value: T) => TProjected,\n): { items: TProjected[]; omitted: number } {\n\tconst items: TProjected[] = [];\n\tfor (const value of values.slice(0, limit)) {\n\t\tconst next = project(value);\n\t\tif (Buffer.byteLength(JSON.stringify([...items, next]), \"utf8\") > MAX_DETAILS_LIST_BYTES) break;\n\t\titems.push(next);\n\t}\n\treturn { items, omitted: Math.max(0, values.length - items.length) };\n}\n\nfunction inspectResult(details: Record<string, unknown>): InspectToolResult {\n\tconst rendered = boundText(JSON.stringify(details, null, 2));\n\treturn {\n\t\tcontent: [{ type: \"text\", text: rendered.text }],\n\t\tdetails: { ...details, ...(rendered.truncated ? { truncated: true } : {}) },\n\t};\n}\n\nfunction assertTrustedScope(scope: AgentScope, ctx: ExtensionContext): void {\n\tif ((scope === \"project\" || scope === \"both\") && !ctx.isProjectTrusted()) {\n\t\tthrow new Error(\"Project-local subagent definitions require a trusted project\");\n\t}\n}\n\nfunction parameterRecord(params: unknown): Record<string, unknown> {\n\tif (!params || typeof params !== \"object\" || Array.isArray(params)) {\n\t\tthrow new Error(\"subagent_inspect parameters must be an object\");\n\t}\n\treturn params as Record<string, unknown>;\n}\n\nfunction optionalAgentScope(value: unknown): AgentScope {\n\tif (value === undefined) return \"user\";\n\tif (value === \"user\" || value === \"project\" || value === \"both\") return value;\n\tthrow new Error(\"subagent_inspect agentScope must be user, project, or both\");\n}\n\nfunction requiredString(value: unknown, action: string, field: string): string {\n\tif (typeof value !== \"string\" || value.length === 0) {\n\t\tthrow new Error(`subagent_inspect action \"${action}\" requires ${field}`);\n\t}\n\treturn value;\n}\n\nfunction optionalContextMode(value: unknown): ContextMode {\n\tif (value === undefined) return \"none\";\n\tif (value === \"none\" || value === \"all\" || value === \"summary\") return value;\n\tif (typeof value === \"number\" && Number.isSafeInteger(value) && value >= 1) return value;\n\tthrow new Error(\"subagent_inspect context must be none, all, summary, or a positive integer\");\n}\n\nfunction optionalStringArray(value: unknown, field: string): string[] | undefined {\n\tif (value === undefined) return undefined;\n\tif (\n\t\t!Array.isArray(value) ||\n\t\t!value.every((item) => typeof item === \"string\" && item.length > 0)\n\t) {\n\t\tthrow new Error(`subagent_inspect ${field} must be an array of non-empty strings`);\n\t}\n\treturn [...value];\n}\n\nfunction optionalLimit(value: unknown, defaultValue: number): number {\n\tif (value === undefined) return defaultValue;\n\tif (!Number.isSafeInteger(value) || (value as number) < 1 || (value as number) > 100) {\n\t\tthrow new Error(\"subagent_inspect limit must be an integer between 1 and 100\");\n\t}\n\treturn value as number;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["settings", "agent"]
|
|
7
|
+
}
|
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
isCapabilityGrant,
|
|
8
8
|
revokeCapabilityGrant
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-YPJEN6NU.ts";
|
|
10
10
|
import {
|
|
11
11
|
copyExecutionPlan,
|
|
12
12
|
isExecutionPlan
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-7AAJEUSL.ts";
|
|
14
14
|
import {
|
|
15
15
|
validateTaskName,
|
|
16
16
|
validateTaskPath
|
|
@@ -31,13 +31,16 @@ import {
|
|
|
31
31
|
} from "./chunk-KMGKCEO4.ts";
|
|
32
32
|
import {
|
|
33
33
|
resolveStatefulLimits
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-VDG7LTYE.ts";
|
|
35
35
|
import {
|
|
36
36
|
isThinkingLevel
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-4AQSF7AS.ts";
|
|
38
|
+
import {
|
|
39
|
+
isCompletionRequirementRecord
|
|
40
|
+
} from "./chunk-VBDGNNLM.ts";
|
|
38
41
|
import {
|
|
39
42
|
normalizeDelegationContract
|
|
40
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-JSZIP73U.ts";
|
|
41
44
|
import {
|
|
42
45
|
MAX_SUBAGENT_TIMEOUT_MS,
|
|
43
46
|
redactPrivateText
|
|
@@ -174,6 +177,7 @@ function sanitizeAgent(agent) {
|
|
|
174
177
|
output: redactPrivateText(completion.output),
|
|
175
178
|
error: completion.error ? redactPrivateText(completion.error) : void 0
|
|
176
179
|
})),
|
|
180
|
+
completionRequirements: (agent.completionRequirements ?? []).filter(isCompletionRequirementRecord).slice(-MAX_STORED_COMPLETIONS_PER_AGENT).map((record) => ({ ...record })),
|
|
177
181
|
currentTimeoutMs: void 0,
|
|
178
182
|
currentIdleTimeoutMs: void 0,
|
|
179
183
|
currentMaxTurns: void 0,
|
|
@@ -223,7 +227,7 @@ function isStoredState(value) {
|
|
|
223
227
|
return state.agents.every((agent) => {
|
|
224
228
|
if (!agent || typeof agent !== "object") return false;
|
|
225
229
|
const record = agent;
|
|
226
|
-
return typeof record.id === "string" && (record.taskName === void 0 || isValidTaskName(record.taskName)) && (record.taskPath === void 0 || isValidTaskPath(record.taskPath)) && typeof record.agent === "string" && typeof record.cwd === "string" && typeof record.createdAt === "number" && Number.isFinite(record.createdAt) && typeof record.updatedAt === "number" && Number.isFinite(record.updatedAt) && (record.parentId === void 0 || typeof record.parentId === "string") && (record.thinkingLevel === void 0 || isThinkingLevel(record.thinkingLevel)) && (record.timeoutMs === void 0 || isTurnTimeout(record.timeoutMs)) && (record.idleTimeoutMs === void 0 || isTurnTimeout(record.idleTimeoutMs)) && (record.maxTurns === void 0 || isPositiveBounded(record.maxTurns, MAX_SUBAGENT_TURNS)) && (record.maxToolCalls === void 0 || isPositiveBounded(record.maxToolCalls, MAX_SUBAGENT_TOOL_CALLS)) && (record.termination === void 0 || isTerminationReport(record.termination)) && (record.contextTurns === void 0 || isNonNegativeInteger(record.contextTurns)) && (record.contextBytes === void 0 || isNonNegativeInteger(record.contextBytes)) && (record.turnGeneration === void 0 || isNonNegativeInteger(record.turnGeneration)) && (record.pendingCompletions === void 0 || isCompletionOutbox(record.pendingCompletions, record.turnGeneration ?? 0)) && (record.spawnIdempotencyKey === void 0 || typeof record.spawnIdempotencyKey === "string" && record.spawnIdempotencyKey.length > 0 && record.spawnIdempotencyKey.length <= 256) && (record.spawnRequestHash === void 0 || isSha256(record.spawnRequestHash)) && (record.contract === void 0 || normalizeDelegationContract(record.contract) !== void 0) && (record.resultFormat === void 0 || SUBAGENT_RESULT_FORMATS.includes(record.resultFormat)) && (record.structuredResult === void 0 || record.resultFormat !== void 0 && parseAnyStructuredSubagentResult(
|
|
230
|
+
return typeof record.id === "string" && (record.taskName === void 0 || isValidTaskName(record.taskName)) && (record.taskPath === void 0 || isValidTaskPath(record.taskPath)) && typeof record.agent === "string" && typeof record.cwd === "string" && typeof record.createdAt === "number" && Number.isFinite(record.createdAt) && typeof record.updatedAt === "number" && Number.isFinite(record.updatedAt) && (record.parentId === void 0 || typeof record.parentId === "string") && (record.thinkingLevel === void 0 || isThinkingLevel(record.thinkingLevel)) && (record.timeoutMs === void 0 || isTurnTimeout(record.timeoutMs)) && (record.idleTimeoutMs === void 0 || isTurnTimeout(record.idleTimeoutMs)) && (record.maxTurns === void 0 || isPositiveBounded(record.maxTurns, MAX_SUBAGENT_TURNS)) && (record.maxToolCalls === void 0 || isPositiveBounded(record.maxToolCalls, MAX_SUBAGENT_TOOL_CALLS)) && (record.termination === void 0 || isTerminationReport(record.termination)) && (record.contextTurns === void 0 || isNonNegativeInteger(record.contextTurns)) && (record.contextBytes === void 0 || isNonNegativeInteger(record.contextBytes)) && (record.turnGeneration === void 0 || isNonNegativeInteger(record.turnGeneration)) && (record.pendingCompletions === void 0 || isCompletionOutbox(record.pendingCompletions, record.turnGeneration ?? 0)) && (record.completionRequirements === void 0 || Array.isArray(record.completionRequirements) && record.completionRequirements.length <= MAX_STORED_COMPLETIONS_PER_AGENT && record.completionRequirements.every(isCompletionRequirementRecord)) && (record.spawnIdempotencyKey === void 0 || typeof record.spawnIdempotencyKey === "string" && record.spawnIdempotencyKey.length > 0 && record.spawnIdempotencyKey.length <= 256) && (record.spawnRequestHash === void 0 || isSha256(record.spawnRequestHash)) && (record.contract === void 0 || normalizeDelegationContract(record.contract) !== void 0) && (record.resultFormat === void 0 || SUBAGENT_RESULT_FORMATS.includes(record.resultFormat)) && (record.structuredResult === void 0 || record.resultFormat !== void 0 && parseAnyStructuredSubagentResult(
|
|
227
231
|
JSON.stringify(record.structuredResult),
|
|
228
232
|
record.resultFormat
|
|
229
233
|
) !== void 0) && (record.executionPlan === void 0 || isExecutionPlan(record.executionPlan)) && (record.capabilityGrant === void 0 || isCapabilityGrant(record.capabilityGrant)) && (record.semanticSnapshot === void 0 || isSemanticSnapshot(record.semanticSnapshot)) && (record.semanticCompatibility === void 0 || isSemanticCompatibility(record.semanticCompatibility)) && (record.workspaceMode === void 0 || record.workspaceMode === "worktree") && (record.target === void 0 || isTargetPolicyAudit(record.target)) && (record.children === void 0 || Array.isArray(record.children) && record.children.every((id) => typeof id === "string")) && Array.isArray(record.history) && record.history.every(isAgentTurn) && (record.mailbox === void 0 || Array.isArray(record.mailbox) && record.mailbox.every(isMailboxMessage));
|
|
@@ -341,4 +345,4 @@ function isMailboxMessage(value) {
|
|
|
341
345
|
export {
|
|
342
346
|
AgentPersistence
|
|
343
347
|
};
|
|
344
|
-
//# sourceMappingURL=persistence-
|
|
348
|
+
//# sourceMappingURL=persistence-XHPJBZL7.ts.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/persistence.ts"],
|
|
4
|
+
"sourcesContent": ["import { createHash } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { getAgentDir, withFileMutationQueue } from \"@earendil-works/pi-coding-agent\";\nimport { projectAgentRecords } from \"./agent-projection.js\";\nimport { isThinkingLevel } from \"./agents/types.js\";\nimport { isCapabilityGrant, revokeCapabilityGrant } from \"./capability-grant.js\";\nimport { isCompletionRequirementRecord } from \"./completion-requirement.js\";\nimport { redactPrivateText } from \"./context.js\";\nimport { normalizeDelegationContract } from \"./delegation-contract.js\";\nimport { copyExecutionPlan, isExecutionPlan } from \"./execution-plan.js\";\nimport { MAX_SUBAGENT_TIMEOUT_MS } from \"./limits.js\";\nimport type { ManagedAgent } from \"./registry.js\";\nimport { parseAnyStructuredSubagentResult, SUBAGENT_RESULT_FORMATS } from \"./result-contract.js\";\nimport { isSemanticSnapshot } from \"./semantic-snapshot.js\";\nimport { resolveStatefulLimits } from \"./stateful-limits.js\";\nimport { validateTaskName, validateTaskPath } from \"./task-path.js\";\nimport { copyTurnTerminationReport, type TurnTerminationReport } from \"./timeout-checkpoint.js\";\nimport { MAX_SUBAGENT_TOOL_CALLS, MAX_SUBAGENT_TURNS } from \"./turn-budget.js\";\n\nconst STATE_VERSION = 3;\nconst MAX_STORED_COMPLETIONS_PER_AGENT = 20;\nconst DEFAULT_STATEFUL_LIMITS = resolveStatefulLimits();\nconst MAX_STATE_BYTES = 5 * 1024 * 1024;\n\ninterface StoredState {\n\tversion: 3;\n\tupdatedAt: number;\n\tagents: ManagedAgent[];\n}\n\nexport interface PersistenceOptions {\n\tretentionDays?: number;\n\tmaxStoredAgents?: number;\n\tstateDir?: string;\n}\n\nexport class AgentPersistence {\n\treadonly filePath: string;\n\tprivate readonly retentionMs: number;\n\tprivate readonly maxStoredAgents: number;\n\n\tconstructor(owner: string, options: PersistenceOptions = {}) {\n\t\tconst retentionDays = options.retentionDays ?? 30;\n\t\tif (!Number.isFinite(retentionDays) || retentionDays <= 0) {\n\t\t\tthrow new Error(\"Subagent retentionDays must be a positive finite number\");\n\t\t}\n\t\tconst retentionMs = retentionDays * 24 * 60 * 60 * 1000;\n\t\tif (!Number.isFinite(retentionMs)) {\n\t\t\tthrow new Error(\"Subagent retentionDays is too large\");\n\t\t}\n\t\tconst maxStoredAgents = options.maxStoredAgents ?? DEFAULT_STATEFUL_LIMITS.maxStoredAgents;\n\t\tif (!Number.isSafeInteger(maxStoredAgents) || maxStoredAgents < 1) {\n\t\t\tthrow new Error(\"Subagent maxStoredAgents must be a positive safe integer\");\n\t\t}\n\t\tconst safeOwner = createHash(\"sha256\").update(owner).digest(\"hex\").slice(0, 24);\n\t\tconst stateDir = options.stateDir ?? path.join(getAgentDir(), \"pi-subagents-state\");\n\t\tthis.filePath = path.join(stateDir, `${safeOwner}.json`);\n\t\tthis.retentionMs = retentionMs;\n\t\tthis.maxStoredAgents = maxStoredAgents;\n\t}\n\n\tload(): ManagedAgent[] {\n\t\tif (!fs.existsSync(this.filePath)) return [];\n\t\ttry {\n\t\t\tconst stat = fs.statSync(this.filePath);\n\t\t\tif (stat.size > MAX_STATE_BYTES) throw new Error(\"state exceeds size limit\");\n\t\t\tconst parsed = JSON.parse(fs.readFileSync(this.filePath, \"utf8\")) as unknown;\n\t\t\tif (!isStoredState(parsed)) throw new Error(\"unsupported or malformed state\");\n\t\t\tconst cutoff = Date.now() - this.retentionMs;\n\t\t\treturn projectAgentRecords(\n\t\t\t\tparsed.agents.filter((agent) => agent.updatedAt >= cutoff && agent.state !== \"closed\"),\n\t\t\t\t{ maxAgents: this.maxStoredAgents },\n\t\t\t).map(sanitizeAgent);\n\t\t} catch {\n\t\t\tthis.quarantine();\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tasync save(agents: readonly ManagedAgent[]): Promise<void> {\n\t\tconst cutoff = Date.now() - this.retentionMs;\n\t\tconst eligible = agents.filter(\n\t\t\t(agent) => agent.state !== \"closed\" && agent.updatedAt >= cutoff,\n\t\t);\n\t\tconst records = projectAgentRecords(eligible, {\n\t\t\tmaxAgents: this.maxStoredAgents,\n\t\t}).map(sanitizeAgent);\n\t\tconst state: StoredState = { version: STATE_VERSION, updatedAt: Date.now(), agents: records };\n\t\tlet content = `${JSON.stringify(state, null, \"\\t\")}\\n`;\n\t\twhile (Buffer.byteLength(content, \"utf8\") > MAX_STATE_BYTES && state.agents.length > 0) {\n\t\t\tconst rootsWithPendingCompletions = new Set(\n\t\t\t\tstate.agents\n\t\t\t\t\t.filter((agent) => (agent.pendingCompletions?.length ?? 0) > 0)\n\t\t\t\t\t.map((agent) => agent.rootId),\n\t\t\t);\n\t\t\tconst droppableRoot = state.agents.find(\n\t\t\t\t(agent) => !rootsWithPendingCompletions.has(agent.rootId),\n\t\t\t)?.rootId;\n\t\t\tif (droppableRoot) {\n\t\t\t\tstate.agents = state.agents.filter((agent) => agent.rootId !== droppableRoot);\n\t\t\t} else if (!trimOldestHistory(state.agents) && !clearOldestContext(state.agents)) {\n\t\t\t\tthrow new Error(\"Subagent state exceeds its durable completion storage limit\");\n\t\t\t}\n\t\t\tcontent = `${JSON.stringify(state, null, \"\\t\")}\\n`;\n\t\t}\n\t\tawait fs.promises.mkdir(path.dirname(this.filePath), { recursive: true });\n\t\tawait withFileMutationQueue(this.filePath, async () => {\n\t\t\tconst tempPath = `${this.filePath}.${process.pid}.${Date.now()}.tmp`;\n\t\t\tawait fs.promises.writeFile(tempPath, content, { encoding: \"utf8\", mode: 0o600 });\n\t\t\tawait fs.promises.rename(tempPath, this.filePath);\n\t\t});\n\t}\n\n\tasync delete(): Promise<void> {\n\t\tawait withFileMutationQueue(this.filePath, async () => {\n\t\t\tawait fs.promises.rm(this.filePath, { force: true });\n\t\t});\n\t}\n\n\tprivate quarantine(): void {\n\t\ttry {\n\t\t\tfs.renameSync(this.filePath, `${this.filePath}.invalid-${Date.now()}`);\n\t\t} catch {\n\t\t\t// A concurrent process may already have moved or removed it.\n\t\t}\n\t}\n}\n\nfunction trimOldestHistory(agents: ManagedAgent[]): boolean {\n\tconst candidate = agents\n\t\t.filter((agent) => agent.history.length > 0)\n\t\t.sort(\n\t\t\t(left, right) =>\n\t\t\t\t(left.history[0]?.completedAt ?? Number.POSITIVE_INFINITY) -\n\t\t\t\t(right.history[0]?.completedAt ?? Number.POSITIVE_INFINITY),\n\t\t)[0];\n\tif (!candidate) return false;\n\tcandidate.history.shift();\n\treturn true;\n}\n\nfunction clearOldestContext(agents: ManagedAgent[]): boolean {\n\tconst candidate = agents.find((agent) => agent.context !== undefined);\n\tif (!candidate) return false;\n\tcandidate.context = undefined;\n\tcandidate.contextTruncated = true;\n\treturn true;\n}\n\nfunction sanitizeAgent(agent: ManagedAgent): ManagedAgent {\n\treturn {\n\t\t...agent,\n\t\trootId: agent.rootId ?? agent.id,\n\t\tdepth: agent.depth ?? 0,\n\t\tchildren: [...(agent.children ?? [])],\n\t\tmailbox: (agent.mailbox ?? []).map((message) => ({\n\t\t\t...message,\n\t\t\trecipientId: agent.id,\n\t\t\tcontent: redactPrivateText(message.content),\n\t\t})),\n\t\tstate: agent.state === \"running\" || agent.state === \"starting\" ? \"interrupted\" : agent.state,\n\t\tcurrentTask: undefined,\n\t\tcurrentRunId: undefined,\n\t\tcurrentTurnGeneration: undefined,\n\t\tturnGeneration: agent.turnGeneration ?? 0,\n\t\tpendingCompletions: (agent.pendingCompletions ?? [])\n\t\t\t.slice(-MAX_STORED_COMPLETIONS_PER_AGENT)\n\t\t\t.map((completion) => ({\n\t\t\t\t...completion,\n\t\t\t\ttask: redactPrivateText(completion.task),\n\t\t\t\toutput: redactPrivateText(completion.output),\n\t\t\t\terror: completion.error ? redactPrivateText(completion.error) : undefined,\n\t\t\t})),\n\t\tcompletionRequirements: (agent.completionRequirements ?? [])\n\t\t\t.filter(isCompletionRequirementRecord)\n\t\t\t.slice(-MAX_STORED_COMPLETIONS_PER_AGENT)\n\t\t\t.map((record) => ({ ...record })),\n\t\tcurrentTimeoutMs: undefined,\n\t\tcurrentIdleTimeoutMs: undefined,\n\t\tcurrentMaxTurns: undefined,\n\t\tcurrentMaxToolCalls: undefined,\n\t\tcurrentMailboxMessageIds: undefined,\n\t\ttelemetry: undefined,\n\t\tcontract: normalizeDelegationContract(agent.contract),\n\t\tstructuredResult:\n\t\t\tagent.structuredResult && agent.resultFormat\n\t\t\t\t? parseAnyStructuredSubagentResult(\n\t\t\t\t\t\tJSON.stringify(agent.structuredResult),\n\t\t\t\t\t\tagent.resultFormat,\n\t\t\t\t\t)\n\t\t\t\t: undefined,\n\t\texecutionPlan: agent.executionPlan ? copyExecutionPlan(agent.executionPlan) : undefined,\n\t\tcapabilityGrant: agent.capabilityGrant\n\t\t\t? agent.capabilityGrant.state === \"active\"\n\t\t\t\t? revokeCapabilityGrant(agent.capabilityGrant, \"persistence-boundary\", Date.now())\n\t\t\t\t: structuredClone(agent.capabilityGrant)\n\t\t\t: undefined,\n\t\tsemanticSnapshot: agent.semanticSnapshot ? structuredClone(agent.semanticSnapshot) : undefined,\n\t\tsemanticCompatibility: agent.semanticCompatibility\n\t\t\t? structuredClone(agent.semanticCompatibility)\n\t\t\t: undefined,\n\t\ttermination: agent.termination ? sanitizeTermination(agent.termination) : undefined,\n\t\tcontext: agent.context ? redactPrivateText(agent.context) : undefined,\n\t\terror: agent.error ? redactPrivateText(agent.error) : undefined,\n\t\thistory: agent.history.map((turn) => ({\n\t\t\t...turn,\n\t\t\ttask: redactPrivateText(turn.task),\n\t\t\toutput: redactPrivateText(turn.output),\n\t\t\ttermination: turn.termination ? sanitizeTermination(turn.termination) : undefined,\n\t\t})),\n\t};\n}\n\nfunction sanitizeTermination(report: TurnTerminationReport): TurnTerminationReport {\n\tconst copy = copyTurnTerminationReport(report);\n\tcopy.checkpoint.task = redactPrivateText(copy.checkpoint.task);\n\tcopy.checkpoint.partialOutput = copy.checkpoint.partialOutput\n\t\t? redactPrivateText(copy.checkpoint.partialOutput)\n\t\t: undefined;\n\tcopy.checkpoint.assistantNotes = copy.checkpoint.assistantNotes.map(redactPrivateText);\n\tcopy.checkpoint.completedTools = copy.checkpoint.completedTools.map((item) => ({\n\t\t...item,\n\t\ttoolName: redactPrivateText(item.toolName),\n\t\toutput: redactPrivateText(item.output),\n\t}));\n\tcopy.checkpoint.changedFiles = copy.checkpoint.changedFiles.map(redactPrivateText);\n\tcopy.finalization.error = copy.finalization.error\n\t\t? redactPrivateText(copy.finalization.error)\n\t\t: undefined;\n\treturn copy;\n}\n\nfunction isStoredState(value: unknown): value is StoredState {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst state = value as { version?: unknown; agents?: unknown };\n\tif (\n\t\t(state.version !== 1 && state.version !== 2 && state.version !== STATE_VERSION) ||\n\t\t!Array.isArray(state.agents)\n\t) {\n\t\treturn false;\n\t}\n\treturn state.agents.every((agent) => {\n\t\tif (!agent || typeof agent !== \"object\") return false;\n\t\tconst record = agent as Partial<ManagedAgent>;\n\t\treturn (\n\t\t\ttypeof record.id === \"string\" &&\n\t\t\t(record.taskName === undefined || isValidTaskName(record.taskName)) &&\n\t\t\t(record.taskPath === undefined || isValidTaskPath(record.taskPath)) &&\n\t\t\ttypeof record.agent === \"string\" &&\n\t\t\ttypeof record.cwd === \"string\" &&\n\t\t\ttypeof record.createdAt === \"number\" &&\n\t\t\tNumber.isFinite(record.createdAt) &&\n\t\t\ttypeof record.updatedAt === \"number\" &&\n\t\t\tNumber.isFinite(record.updatedAt) &&\n\t\t\t(record.parentId === undefined || typeof record.parentId === \"string\") &&\n\t\t\t(record.thinkingLevel === undefined || isThinkingLevel(record.thinkingLevel)) &&\n\t\t\t(record.timeoutMs === undefined || isTurnTimeout(record.timeoutMs)) &&\n\t\t\t(record.idleTimeoutMs === undefined || isTurnTimeout(record.idleTimeoutMs)) &&\n\t\t\t(record.maxTurns === undefined || isPositiveBounded(record.maxTurns, MAX_SUBAGENT_TURNS)) &&\n\t\t\t(record.maxToolCalls === undefined ||\n\t\t\t\tisPositiveBounded(record.maxToolCalls, MAX_SUBAGENT_TOOL_CALLS)) &&\n\t\t\t(record.termination === undefined || isTerminationReport(record.termination)) &&\n\t\t\t(record.contextTurns === undefined || isNonNegativeInteger(record.contextTurns)) &&\n\t\t\t(record.contextBytes === undefined || isNonNegativeInteger(record.contextBytes)) &&\n\t\t\t(record.turnGeneration === undefined || isNonNegativeInteger(record.turnGeneration)) &&\n\t\t\t(record.pendingCompletions === undefined ||\n\t\t\t\tisCompletionOutbox(record.pendingCompletions, record.turnGeneration ?? 0)) &&\n\t\t\t(record.completionRequirements === undefined ||\n\t\t\t\t(Array.isArray(record.completionRequirements) &&\n\t\t\t\t\trecord.completionRequirements.length <= MAX_STORED_COMPLETIONS_PER_AGENT &&\n\t\t\t\t\trecord.completionRequirements.every(isCompletionRequirementRecord))) &&\n\t\t\t(record.spawnIdempotencyKey === undefined ||\n\t\t\t\t(typeof record.spawnIdempotencyKey === \"string\" &&\n\t\t\t\t\trecord.spawnIdempotencyKey.length > 0 &&\n\t\t\t\t\trecord.spawnIdempotencyKey.length <= 256)) &&\n\t\t\t(record.spawnRequestHash === undefined || isSha256(record.spawnRequestHash)) &&\n\t\t\t(record.contract === undefined ||\n\t\t\t\tnormalizeDelegationContract(record.contract) !== undefined) &&\n\t\t\t(record.resultFormat === undefined ||\n\t\t\t\tSUBAGENT_RESULT_FORMATS.includes(record.resultFormat)) &&\n\t\t\t(record.structuredResult === undefined ||\n\t\t\t\t(record.resultFormat !== undefined &&\n\t\t\t\t\tparseAnyStructuredSubagentResult(\n\t\t\t\t\t\tJSON.stringify(record.structuredResult),\n\t\t\t\t\t\trecord.resultFormat,\n\t\t\t\t\t) !== undefined)) &&\n\t\t\t(record.executionPlan === undefined || isExecutionPlan(record.executionPlan)) &&\n\t\t\t(record.capabilityGrant === undefined || isCapabilityGrant(record.capabilityGrant)) &&\n\t\t\t(record.semanticSnapshot === undefined || isSemanticSnapshot(record.semanticSnapshot)) &&\n\t\t\t(record.semanticCompatibility === undefined ||\n\t\t\t\tisSemanticCompatibility(record.semanticCompatibility)) &&\n\t\t\t(record.workspaceMode === undefined || record.workspaceMode === \"worktree\") &&\n\t\t\t(record.target === undefined || isTargetPolicyAudit(record.target)) &&\n\t\t\t(record.children === undefined ||\n\t\t\t\t(Array.isArray(record.children) &&\n\t\t\t\t\trecord.children.every((id) => typeof id === \"string\"))) &&\n\t\t\tArray.isArray(record.history) &&\n\t\t\trecord.history.every(isAgentTurn) &&\n\t\t\t(record.mailbox === undefined ||\n\t\t\t\t(Array.isArray(record.mailbox) && record.mailbox.every(isMailboxMessage)))\n\t\t);\n\t});\n}\n\nfunction isValidTaskName(value: unknown): value is string {\n\tif (typeof value !== \"string\") return false;\n\ttry {\n\t\treturn validateTaskName(value) === value;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction isValidTaskPath(value: unknown): value is string {\n\tif (typeof value !== \"string\") return false;\n\ttry {\n\t\treturn validateTaskPath(value) === value;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction isSemanticCompatibility(value: unknown): boolean {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst compatibility = value as Record<string, unknown>;\n\treturn (\n\t\t[\"compatible\", \"warning\", \"needs-revalidation\", \"rejected\"].includes(\n\t\t\tString(compatibility.status),\n\t\t) &&\n\t\tArray.isArray(compatibility.changedComponents) &&\n\t\tcompatibility.changedComponents.every((item) => typeof item === \"string\")\n\t);\n}\n\nfunction isNonNegativeInteger(value: unknown): value is number {\n\treturn typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n\nfunction isTurnTimeout(value: unknown): value is number {\n\treturn (\n\t\ttypeof value === \"number\" &&\n\t\tNumber.isSafeInteger(value) &&\n\t\tvalue >= 1 &&\n\t\tvalue <= MAX_SUBAGENT_TIMEOUT_MS\n\t);\n}\n\nfunction isPositiveBounded(value: unknown, maximum: number): value is number {\n\treturn typeof value === \"number\" && Number.isSafeInteger(value) && value >= 1 && value <= maximum;\n}\n\nfunction isTerminationReport(value: unknown): value is TurnTerminationReport {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst report = value as Record<string, unknown>;\n\tif (\n\t\treport.version !== \"pi-subagents:termination:v1\" ||\n\t\t![\n\t\t\t\"work_timeout\",\n\t\t\t\"idle_timeout\",\n\t\t\t\"turn_limit\",\n\t\t\t\"tool_call_limit\",\n\t\t\t\"orchestration_timeout\",\n\t\t].includes(String(report.reason)) ||\n\t\t!isPositiveBounded(report.limit, MAX_SUBAGENT_TIMEOUT_MS)\n\t) {\n\t\treturn false;\n\t}\n\tconst checkpoint = report.checkpoint;\n\tconst finalization = report.finalization;\n\tif (!checkpoint || typeof checkpoint !== \"object\" || Array.isArray(checkpoint)) return false;\n\tif (!finalization || typeof finalization !== \"object\" || Array.isArray(finalization))\n\t\treturn false;\n\tconst checkpointValue = checkpoint as Record<string, unknown>;\n\tconst finalizationValue = finalization as Record<string, unknown>;\n\treturn (\n\t\tcheckpointValue.version === \"pi-subagents:checkpoint:v1\" &&\n\t\ttypeof checkpointValue.task === \"string\" &&\n\t\t(checkpointValue.partialOutput === undefined ||\n\t\t\ttypeof checkpointValue.partialOutput === \"string\") &&\n\t\tArray.isArray(checkpointValue.assistantNotes) &&\n\t\tcheckpointValue.assistantNotes.every((item) => typeof item === \"string\") &&\n\t\tArray.isArray(checkpointValue.completedTools) &&\n\t\tcheckpointValue.completedTools.every(isCompletedToolEvidence) &&\n\t\tArray.isArray(checkpointValue.changedFiles) &&\n\t\tcheckpointValue.changedFiles.every((item) => typeof item === \"string\") &&\n\t\ttypeof checkpointValue.sideEffectsMayHaveOccurred === \"boolean\" &&\n\t\ttypeof checkpointValue.truncated === \"boolean\" &&\n\t\ttypeof finalizationValue.attempted === \"boolean\" &&\n\t\t[\"completed\", \"failed\", \"timed_out\", \"skipped\"].includes(String(finalizationValue.status)) &&\n\t\ttypeof finalizationValue.durationMs === \"number\" &&\n\t\tNumber.isFinite(finalizationValue.durationMs) &&\n\t\tfinalizationValue.durationMs >= 0 &&\n\t\t(finalizationValue.error === undefined || typeof finalizationValue.error === \"string\")\n\t);\n}\n\nfunction isCompletedToolEvidence(value: unknown): boolean {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst item = value as Record<string, unknown>;\n\treturn (\n\t\ttypeof item.toolName === \"string\" &&\n\t\ttypeof item.output === \"string\" &&\n\t\ttypeof item.isError === \"boolean\"\n\t);\n}\n\nfunction isSha256(value: unknown): value is string {\n\treturn typeof value === \"string\" && /^[a-f0-9]{64}$/u.test(value);\n}\n\nfunction isTargetPolicyAudit(value: unknown): boolean {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst target = value as Record<string, unknown>;\n\tif (\n\t\ttypeof target.cwd !== \"string\" ||\n\t\t(target.boundary !== \"current-workspace\" && target.boundary !== \"external\") ||\n\t\t!target.trust ||\n\t\ttypeof target.trust !== \"object\"\n\t) {\n\t\treturn false;\n\t}\n\tconst trust = target.trust as Record<string, unknown>;\n\treturn (\n\t\t[\n\t\t\t\"session-trusted\",\n\t\t\t\"session-untrusted\",\n\t\t\t\"saved-trusted\",\n\t\t\t\"saved-denied\",\n\t\t\t\"unsaved\",\n\t\t\t\"trust-error\",\n\t\t].includes(String(trust.kind)) &&\n\t\ttypeof trust.projectTrusted === \"boolean\" &&\n\t\t(trust.sourcePath === undefined || typeof trust.sourcePath === \"string\") &&\n\t\t(trust.warning === undefined || typeof trust.warning === \"string\")\n\t);\n}\n\nfunction isCompletionOutbox(value: unknown, turnGeneration: number): boolean {\n\tif (!Array.isArray(value) || value.length > MAX_STORED_COMPLETIONS_PER_AGENT) return false;\n\tconst ids = new Set<string>();\n\tlet previousGeneration = 0;\n\tlet previousCreatedAt = Number.NEGATIVE_INFINITY;\n\tfor (const completion of value) {\n\t\tif (!isPersistedCompletion(completion, turnGeneration)) return false;\n\t\tif (ids.has(completion.completionId)) return false;\n\t\tif (completion.generation <= previousGeneration || completion.createdAt <= previousCreatedAt) {\n\t\t\treturn false;\n\t\t}\n\t\tids.add(completion.completionId);\n\t\tpreviousGeneration = completion.generation;\n\t\tpreviousCreatedAt = completion.createdAt;\n\t}\n\treturn true;\n}\n\nfunction isPersistedCompletion(\n\tvalue: unknown,\n\tturnGeneration: number,\n): value is import(\"./registry.js\").PersistedAgentCompletion {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst completion = value as Record<string, unknown>;\n\treturn (\n\t\ttypeof completion.completionId === \"string\" &&\n\t\tcompletion.completionId.length > 0 &&\n\t\tcompletion.completionId.length <= 256 &&\n\t\t(completion.recipientId === undefined ||\n\t\t\t(typeof completion.recipientId === \"string\" && completion.recipientId.length > 0)) &&\n\t\t(completion.recipientPath === undefined || isValidTaskPath(completion.recipientPath)) &&\n\t\ttypeof completion.runId === \"string\" &&\n\t\tcompletion.runId.length > 0 &&\n\t\tcompletion.runId.length <= 256 &&\n\t\ttypeof completion.generation === \"number\" &&\n\t\tNumber.isSafeInteger(completion.generation) &&\n\t\tcompletion.generation >= 1 &&\n\t\tcompletion.generation <= turnGeneration &&\n\t\ttypeof completion.task === \"string\" &&\n\t\ttypeof completion.output === \"string\" &&\n\t\t(completion.error === undefined || typeof completion.error === \"string\") &&\n\t\ttypeof completion.createdAt === \"number\" &&\n\t\tNumber.isFinite(completion.createdAt)\n\t);\n}\n\nfunction isAgentTurn(value: unknown): boolean {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst turn = value as Record<string, unknown>;\n\treturn (\n\t\t(turn.runId === undefined ||\n\t\t\t(typeof turn.runId === \"string\" && turn.runId.length > 0 && turn.runId.length <= 256)) &&\n\t\t(turn.generation === undefined ||\n\t\t\t(typeof turn.generation === \"number\" &&\n\t\t\t\tNumber.isSafeInteger(turn.generation) &&\n\t\t\t\tturn.generation >= 1)) &&\n\t\ttypeof turn.task === \"string\" &&\n\t\ttypeof turn.output === \"string\" &&\n\t\ttypeof turn.startedAt === \"number\" &&\n\t\tNumber.isFinite(turn.startedAt) &&\n\t\ttypeof turn.completedAt === \"number\" &&\n\t\tNumber.isFinite(turn.completedAt) &&\n\t\ttypeof turn.exitCode === \"number\" &&\n\t\tNumber.isFinite(turn.exitCode) &&\n\t\t(turn.termination === undefined || isTerminationReport(turn.termination))\n\t);\n}\n\nfunction isMailboxMessage(value: unknown): boolean {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst message = value as Record<string, unknown>;\n\treturn (\n\t\ttypeof message.id === \"string\" &&\n\t\ttypeof message.senderId === \"string\" &&\n\t\ttypeof message.recipientId === \"string\" &&\n\t\ttypeof message.content === \"string\" &&\n\t\ttypeof message.createdAt === \"number\" &&\n\t\tNumber.isFinite(message.createdAt) &&\n\t\t(message.readAt === undefined ||\n\t\t\t(typeof message.readAt === \"number\" && Number.isFinite(message.readAt))) &&\n\t\t(message.deduplicationKey === undefined || typeof message.deduplicationKey === \"string\") &&\n\t\t(message.completionId === undefined || typeof message.completionId === \"string\")\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,kBAAkB;AAC3B,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,SAAS,aAAa,6BAA6B;AAiBnD,IAAM,gBAAgB;AACtB,IAAM,mCAAmC;AACzC,IAAM,0BAA0B,sBAAsB;AACtD,IAAM,kBAAkB,IAAI,OAAO;AAc5B,IAAM,mBAAN,MAAuB;AAAA,EACpB;AAAA,EACQ;AAAA,EACA;AAAA,EAEjB,YAAY,OAAe,UAA8B,CAAC,GAAG;AAC5D,UAAM,gBAAgB,QAAQ,iBAAiB;AAC/C,QAAI,CAAC,OAAO,SAAS,aAAa,KAAK,iBAAiB,GAAG;AAC1D,YAAM,IAAI,MAAM,yDAAyD;AAAA,IAC1E;AACA,UAAM,cAAc,gBAAgB,KAAK,KAAK,KAAK;AACnD,QAAI,CAAC,OAAO,SAAS,WAAW,GAAG;AAClC,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACtD;AACA,UAAM,kBAAkB,QAAQ,mBAAmB,wBAAwB;AAC3E,QAAI,CAAC,OAAO,cAAc,eAAe,KAAK,kBAAkB,GAAG;AAClE,YAAM,IAAI,MAAM,0DAA0D;AAAA,IAC3E;AACA,UAAM,YAAY,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE;AAC9E,UAAM,WAAW,QAAQ,YAAiB,UAAK,YAAY,GAAG,oBAAoB;AAClF,SAAK,WAAgB,UAAK,UAAU,GAAG,SAAS,OAAO;AACvD,SAAK,cAAc;AACnB,SAAK,kBAAkB;AAAA,EACxB;AAAA,EAEA,OAAuB;AACtB,QAAI,CAAI,cAAW,KAAK,QAAQ,EAAG,QAAO,CAAC;AAC3C,QAAI;AACH,YAAM,OAAU,YAAS,KAAK,QAAQ;AACtC,UAAI,KAAK,OAAO,gBAAiB,OAAM,IAAI,MAAM,0BAA0B;AAC3E,YAAM,SAAS,KAAK,MAAS,gBAAa,KAAK,UAAU,MAAM,CAAC;AAChE,UAAI,CAAC,cAAc,MAAM,EAAG,OAAM,IAAI,MAAM,gCAAgC;AAC5E,YAAM,SAAS,KAAK,IAAI,IAAI,KAAK;AACjC,aAAO;AAAA,QACN,OAAO,OAAO,OAAO,CAAC,UAAU,MAAM,aAAa,UAAU,MAAM,UAAU,QAAQ;AAAA,QACrF,EAAE,WAAW,KAAK,gBAAgB;AAAA,MACnC,EAAE,IAAI,aAAa;AAAA,IACpB,QAAQ;AACP,WAAK,WAAW;AAChB,aAAO,CAAC;AAAA,IACT;AAAA,EACD;AAAA,EAEA,MAAM,KAAK,QAAgD;AAC1D,UAAM,SAAS,KAAK,IAAI,IAAI,KAAK;AACjC,UAAM,WAAW,OAAO;AAAA,MACvB,CAAC,UAAU,MAAM,UAAU,YAAY,MAAM,aAAa;AAAA,IAC3D;AACA,UAAM,UAAU,oBAAoB,UAAU;AAAA,MAC7C,WAAW,KAAK;AAAA,IACjB,CAAC,EAAE,IAAI,aAAa;AACpB,UAAM,QAAqB,EAAE,SAAS,eAAe,WAAW,KAAK,IAAI,GAAG,QAAQ,QAAQ;AAC5F,QAAI,UAAU,GAAG,KAAK,UAAU,OAAO,MAAM,GAAI,CAAC;AAAA;AAClD,WAAO,OAAO,WAAW,SAAS,MAAM,IAAI,mBAAmB,MAAM,OAAO,SAAS,GAAG;AACvF,YAAM,8BAA8B,IAAI;AAAA,QACvC,MAAM,OACJ,OAAO,CAAC,WAAW,MAAM,oBAAoB,UAAU,KAAK,CAAC,EAC7D,IAAI,CAAC,UAAU,MAAM,MAAM;AAAA,MAC9B;AACA,YAAM,gBAAgB,MAAM,OAAO;AAAA,QAClC,CAAC,UAAU,CAAC,4BAA4B,IAAI,MAAM,MAAM;AAAA,MACzD,GAAG;AACH,UAAI,eAAe;AAClB,cAAM,SAAS,MAAM,OAAO,OAAO,CAAC,UAAU,MAAM,WAAW,aAAa;AAAA,MAC7E,WAAW,CAAC,kBAAkB,MAAM,MAAM,KAAK,CAAC,mBAAmB,MAAM,MAAM,GAAG;AACjF,cAAM,IAAI,MAAM,6DAA6D;AAAA,MAC9E;AACA,gBAAU,GAAG,KAAK,UAAU,OAAO,MAAM,GAAI,CAAC;AAAA;AAAA,IAC/C;AACA,UAAS,YAAS,MAAW,aAAQ,KAAK,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AACxE,UAAM,sBAAsB,KAAK,UAAU,YAAY;AACtD,YAAM,WAAW,GAAG,KAAK,QAAQ,IAAI,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;AAC9D,YAAS,YAAS,UAAU,UAAU,SAAS,EAAE,UAAU,QAAQ,MAAM,IAAM,CAAC;AAChF,YAAS,YAAS,OAAO,UAAU,KAAK,QAAQ;AAAA,IACjD,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,SAAwB;AAC7B,UAAM,sBAAsB,KAAK,UAAU,YAAY;AACtD,YAAS,YAAS,GAAG,KAAK,UAAU,EAAE,OAAO,KAAK,CAAC;AAAA,IACpD,CAAC;AAAA,EACF;AAAA,EAEQ,aAAmB;AAC1B,QAAI;AACH,MAAG,cAAW,KAAK,UAAU,GAAG,KAAK,QAAQ,YAAY,KAAK,IAAI,CAAC,EAAE;AAAA,IACtE,QAAQ;AAAA,IAER;AAAA,EACD;AACD;AAEA,SAAS,kBAAkB,QAAiC;AAC3D,QAAM,YAAY,OAChB,OAAO,CAAC,UAAU,MAAM,QAAQ,SAAS,CAAC,EAC1C;AAAA,IACA,CAAC,MAAM,WACL,KAAK,QAAQ,CAAC,GAAG,eAAe,OAAO,sBACvC,MAAM,QAAQ,CAAC,GAAG,eAAe,OAAO;AAAA,EAC3C,EAAE,CAAC;AACJ,MAAI,CAAC,UAAW,QAAO;AACvB,YAAU,QAAQ,MAAM;AACxB,SAAO;AACR;AAEA,SAAS,mBAAmB,QAAiC;AAC5D,QAAM,YAAY,OAAO,KAAK,CAAC,UAAU,MAAM,YAAY,MAAS;AACpE,MAAI,CAAC,UAAW,QAAO;AACvB,YAAU,UAAU;AACpB,YAAU,mBAAmB;AAC7B,SAAO;AACR;AAEA,SAAS,cAAc,OAAmC;AACzD,SAAO;AAAA,IACN,GAAG;AAAA,IACH,QAAQ,MAAM,UAAU,MAAM;AAAA,IAC9B,OAAO,MAAM,SAAS;AAAA,IACtB,UAAU,CAAC,GAAI,MAAM,YAAY,CAAC,CAAE;AAAA,IACpC,UAAU,MAAM,WAAW,CAAC,GAAG,IAAI,CAAC,aAAa;AAAA,MAChD,GAAG;AAAA,MACH,aAAa,MAAM;AAAA,MACnB,SAAS,kBAAkB,QAAQ,OAAO;AAAA,IAC3C,EAAE;AAAA,IACF,OAAO,MAAM,UAAU,aAAa,MAAM,UAAU,aAAa,gBAAgB,MAAM;AAAA,IACvF,aAAa;AAAA,IACb,cAAc;AAAA,IACd,uBAAuB;AAAA,IACvB,gBAAgB,MAAM,kBAAkB;AAAA,IACxC,qBAAqB,MAAM,sBAAsB,CAAC,GAChD,MAAM,CAAC,gCAAgC,EACvC,IAAI,CAAC,gBAAgB;AAAA,MACrB,GAAG;AAAA,MACH,MAAM,kBAAkB,WAAW,IAAI;AAAA,MACvC,QAAQ,kBAAkB,WAAW,MAAM;AAAA,MAC3C,OAAO,WAAW,QAAQ,kBAAkB,WAAW,KAAK,IAAI;AAAA,IACjE,EAAE;AAAA,IACH,yBAAyB,MAAM,0BAA0B,CAAC,GACxD,OAAO,6BAA6B,EACpC,MAAM,CAAC,gCAAgC,EACvC,IAAI,CAAC,YAAY,EAAE,GAAG,OAAO,EAAE;AAAA,IACjC,kBAAkB;AAAA,IAClB,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,qBAAqB;AAAA,IACrB,0BAA0B;AAAA,IAC1B,WAAW;AAAA,IACX,UAAU,4BAA4B,MAAM,QAAQ;AAAA,IACpD,kBACC,MAAM,oBAAoB,MAAM,eAC7B;AAAA,MACA,KAAK,UAAU,MAAM,gBAAgB;AAAA,MACrC,MAAM;AAAA,IACP,IACC;AAAA,IACJ,eAAe,MAAM,gBAAgB,kBAAkB,MAAM,aAAa,IAAI;AAAA,IAC9E,iBAAiB,MAAM,kBACpB,MAAM,gBAAgB,UAAU,WAC/B,sBAAsB,MAAM,iBAAiB,wBAAwB,KAAK,IAAI,CAAC,IAC/E,gBAAgB,MAAM,eAAe,IACtC;AAAA,IACH,kBAAkB,MAAM,mBAAmB,gBAAgB,MAAM,gBAAgB,IAAI;AAAA,IACrF,uBAAuB,MAAM,wBAC1B,gBAAgB,MAAM,qBAAqB,IAC3C;AAAA,IACH,aAAa,MAAM,cAAc,oBAAoB,MAAM,WAAW,IAAI;AAAA,IAC1E,SAAS,MAAM,UAAU,kBAAkB,MAAM,OAAO,IAAI;AAAA,IAC5D,OAAO,MAAM,QAAQ,kBAAkB,MAAM,KAAK,IAAI;AAAA,IACtD,SAAS,MAAM,QAAQ,IAAI,CAAC,UAAU;AAAA,MACrC,GAAG;AAAA,MACH,MAAM,kBAAkB,KAAK,IAAI;AAAA,MACjC,QAAQ,kBAAkB,KAAK,MAAM;AAAA,MACrC,aAAa,KAAK,cAAc,oBAAoB,KAAK,WAAW,IAAI;AAAA,IACzE,EAAE;AAAA,EACH;AACD;AAEA,SAAS,oBAAoB,QAAsD;AAClF,QAAM,OAAO,0BAA0B,MAAM;AAC7C,OAAK,WAAW,OAAO,kBAAkB,KAAK,WAAW,IAAI;AAC7D,OAAK,WAAW,gBAAgB,KAAK,WAAW,gBAC7C,kBAAkB,KAAK,WAAW,aAAa,IAC/C;AACH,OAAK,WAAW,iBAAiB,KAAK,WAAW,eAAe,IAAI,iBAAiB;AACrF,OAAK,WAAW,iBAAiB,KAAK,WAAW,eAAe,IAAI,CAAC,UAAU;AAAA,IAC9E,GAAG;AAAA,IACH,UAAU,kBAAkB,KAAK,QAAQ;AAAA,IACzC,QAAQ,kBAAkB,KAAK,MAAM;AAAA,EACtC,EAAE;AACF,OAAK,WAAW,eAAe,KAAK,WAAW,aAAa,IAAI,iBAAiB;AACjF,OAAK,aAAa,QAAQ,KAAK,aAAa,QACzC,kBAAkB,KAAK,aAAa,KAAK,IACzC;AACH,SAAO;AACR;AAEA,SAAS,cAAc,OAAsC;AAC5D,MAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAChD,QAAM,QAAQ;AACd,MACE,MAAM,YAAY,KAAK,MAAM,YAAY,KAAK,MAAM,YAAY,iBACjE,CAAC,MAAM,QAAQ,MAAM,MAAM,GAC1B;AACD,WAAO;AAAA,EACR;AACA,SAAO,MAAM,OAAO,MAAM,CAAC,UAAU;AACpC,QAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAChD,UAAM,SAAS;AACf,WACC,OAAO,OAAO,OAAO,aACpB,OAAO,aAAa,UAAa,gBAAgB,OAAO,QAAQ,OAChE,OAAO,aAAa,UAAa,gBAAgB,OAAO,QAAQ,MACjE,OAAO,OAAO,UAAU,YACxB,OAAO,OAAO,QAAQ,YACtB,OAAO,OAAO,cAAc,YAC5B,OAAO,SAAS,OAAO,SAAS,KAChC,OAAO,OAAO,cAAc,YAC5B,OAAO,SAAS,OAAO,SAAS,MAC/B,OAAO,aAAa,UAAa,OAAO,OAAO,aAAa,cAC5D,OAAO,kBAAkB,UAAa,gBAAgB,OAAO,aAAa,OAC1E,OAAO,cAAc,UAAa,cAAc,OAAO,SAAS,OAChE,OAAO,kBAAkB,UAAa,cAAc,OAAO,aAAa,OACxE,OAAO,aAAa,UAAa,kBAAkB,OAAO,UAAU,kBAAkB,OACtF,OAAO,iBAAiB,UACxB,kBAAkB,OAAO,cAAc,uBAAuB,OAC9D,OAAO,gBAAgB,UAAa,oBAAoB,OAAO,WAAW,OAC1E,OAAO,iBAAiB,UAAa,qBAAqB,OAAO,YAAY,OAC7E,OAAO,iBAAiB,UAAa,qBAAqB,OAAO,YAAY,OAC7E,OAAO,mBAAmB,UAAa,qBAAqB,OAAO,cAAc,OACjF,OAAO,uBAAuB,UAC9B,mBAAmB,OAAO,oBAAoB,OAAO,kBAAkB,CAAC,OACxE,OAAO,2BAA2B,UACjC,MAAM,QAAQ,OAAO,sBAAsB,KAC3C,OAAO,uBAAuB,UAAU,oCACxC,OAAO,uBAAuB,MAAM,6BAA6B,OAClE,OAAO,wBAAwB,UAC9B,OAAO,OAAO,wBAAwB,YACtC,OAAO,oBAAoB,SAAS,KACpC,OAAO,oBAAoB,UAAU,SACtC,OAAO,qBAAqB,UAAa,SAAS,OAAO,gBAAgB,OACzE,OAAO,aAAa,UACpB,4BAA4B,OAAO,QAAQ,MAAM,YACjD,OAAO,iBAAiB,UACxB,wBAAwB,SAAS,OAAO,YAAY,OACpD,OAAO,qBAAqB,UAC3B,OAAO,iBAAiB,UACxB;AAAA,MACC,KAAK,UAAU,OAAO,gBAAgB;AAAA,MACtC,OAAO;AAAA,IACR,MAAM,YACP,OAAO,kBAAkB,UAAa,gBAAgB,OAAO,aAAa,OAC1E,OAAO,oBAAoB,UAAa,kBAAkB,OAAO,eAAe,OAChF,OAAO,qBAAqB,UAAa,mBAAmB,OAAO,gBAAgB,OACnF,OAAO,0BAA0B,UACjC,wBAAwB,OAAO,qBAAqB,OACpD,OAAO,kBAAkB,UAAa,OAAO,kBAAkB,gBAC/D,OAAO,WAAW,UAAa,oBAAoB,OAAO,MAAM,OAChE,OAAO,aAAa,UACnB,MAAM,QAAQ,OAAO,QAAQ,KAC7B,OAAO,SAAS,MAAM,CAAC,OAAO,OAAO,OAAO,QAAQ,MACtD,MAAM,QAAQ,OAAO,OAAO,KAC5B,OAAO,QAAQ,MAAM,WAAW,MAC/B,OAAO,YAAY,UAClB,MAAM,QAAQ,OAAO,OAAO,KAAK,OAAO,QAAQ,MAAM,gBAAgB;AAAA,EAE1E,CAAC;AACF;AAEA,SAAS,gBAAgB,OAAiC;AACzD,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI;AACH,WAAO,iBAAiB,KAAK,MAAM;AAAA,EACpC,QAAQ;AACP,WAAO;AAAA,EACR;AACD;AAEA,SAAS,gBAAgB,OAAiC;AACzD,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI;AACH,WAAO,iBAAiB,KAAK,MAAM;AAAA,EACpC,QAAQ;AACP,WAAO;AAAA,EACR;AACD;AAEA,SAAS,wBAAwB,OAAyB;AACzD,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,EAAG,QAAO;AACxE,QAAM,gBAAgB;AACtB,SACC,CAAC,cAAc,WAAW,sBAAsB,UAAU,EAAE;AAAA,IAC3D,OAAO,cAAc,MAAM;AAAA,EAC5B,KACA,MAAM,QAAQ,cAAc,iBAAiB,KAC7C,cAAc,kBAAkB,MAAM,CAAC,SAAS,OAAO,SAAS,QAAQ;AAE1E;AAEA,SAAS,qBAAqB,OAAiC;AAC9D,SAAO,OAAO,UAAU,YAAY,OAAO,cAAc,KAAK,KAAK,SAAS;AAC7E;AAEA,SAAS,cAAc,OAAiC;AACvD,SACC,OAAO,UAAU,YACjB,OAAO,cAAc,KAAK,KAC1B,SAAS,KACT,SAAS;AAEX;AAEA,SAAS,kBAAkB,OAAgB,SAAkC;AAC5E,SAAO,OAAO,UAAU,YAAY,OAAO,cAAc,KAAK,KAAK,SAAS,KAAK,SAAS;AAC3F;AAEA,SAAS,oBAAoB,OAAgD;AAC5E,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,EAAG,QAAO;AACxE,QAAM,SAAS;AACf,MACC,OAAO,YAAY,iCACnB,CAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,EAAE,SAAS,OAAO,OAAO,MAAM,CAAC,KAChC,CAAC,kBAAkB,OAAO,OAAO,uBAAuB,GACvD;AACD,WAAO;AAAA,EACR;AACA,QAAM,aAAa,OAAO;AAC1B,QAAM,eAAe,OAAO;AAC5B,MAAI,CAAC,cAAc,OAAO,eAAe,YAAY,MAAM,QAAQ,UAAU,EAAG,QAAO;AACvF,MAAI,CAAC,gBAAgB,OAAO,iBAAiB,YAAY,MAAM,QAAQ,YAAY;AAClF,WAAO;AACR,QAAM,kBAAkB;AACxB,QAAM,oBAAoB;AAC1B,SACC,gBAAgB,YAAY,gCAC5B,OAAO,gBAAgB,SAAS,aAC/B,gBAAgB,kBAAkB,UAClC,OAAO,gBAAgB,kBAAkB,aAC1C,MAAM,QAAQ,gBAAgB,cAAc,KAC5C,gBAAgB,eAAe,MAAM,CAAC,SAAS,OAAO,SAAS,QAAQ,KACvE,MAAM,QAAQ,gBAAgB,cAAc,KAC5C,gBAAgB,eAAe,MAAM,uBAAuB,KAC5D,MAAM,QAAQ,gBAAgB,YAAY,KAC1C,gBAAgB,aAAa,MAAM,CAAC,SAAS,OAAO,SAAS,QAAQ,KACrE,OAAO,gBAAgB,+BAA+B,aACtD,OAAO,gBAAgB,cAAc,aACrC,OAAO,kBAAkB,cAAc,aACvC,CAAC,aAAa,UAAU,aAAa,SAAS,EAAE,SAAS,OAAO,kBAAkB,MAAM,CAAC,KACzF,OAAO,kBAAkB,eAAe,YACxC,OAAO,SAAS,kBAAkB,UAAU,KAC5C,kBAAkB,cAAc,MAC/B,kBAAkB,UAAU,UAAa,OAAO,kBAAkB,UAAU;AAE/E;AAEA,SAAS,wBAAwB,OAAyB;AACzD,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,EAAG,QAAO;AACxE,QAAM,OAAO;AACb,SACC,OAAO,KAAK,aAAa,YACzB,OAAO,KAAK,WAAW,YACvB,OAAO,KAAK,YAAY;AAE1B;AAEA,SAAS,SAAS,OAAiC;AAClD,SAAO,OAAO,UAAU,YAAY,kBAAkB,KAAK,KAAK;AACjE;AAEA,SAAS,oBAAoB,OAAyB;AACrD,MAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAChD,QAAM,SAAS;AACf,MACC,OAAO,OAAO,QAAQ,YACrB,OAAO,aAAa,uBAAuB,OAAO,aAAa,cAChE,CAAC,OAAO,SACR,OAAO,OAAO,UAAU,UACvB;AACD,WAAO;AAAA,EACR;AACA,QAAM,QAAQ,OAAO;AACrB,SACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,EAAE,SAAS,OAAO,MAAM,IAAI,CAAC,KAC7B,OAAO,MAAM,mBAAmB,cAC/B,MAAM,eAAe,UAAa,OAAO,MAAM,eAAe,cAC9D,MAAM,YAAY,UAAa,OAAO,MAAM,YAAY;AAE3D;AAEA,SAAS,mBAAmB,OAAgB,gBAAiC;AAC5E,MAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,iCAAkC,QAAO;AACrF,QAAM,MAAM,oBAAI,IAAY;AAC5B,MAAI,qBAAqB;AACzB,MAAI,oBAAoB,OAAO;AAC/B,aAAW,cAAc,OAAO;AAC/B,QAAI,CAAC,sBAAsB,YAAY,cAAc,EAAG,QAAO;AAC/D,QAAI,IAAI,IAAI,WAAW,YAAY,EAAG,QAAO;AAC7C,QAAI,WAAW,cAAc,sBAAsB,WAAW,aAAa,mBAAmB;AAC7F,aAAO;AAAA,IACR;AACA,QAAI,IAAI,WAAW,YAAY;AAC/B,yBAAqB,WAAW;AAChC,wBAAoB,WAAW;AAAA,EAChC;AACA,SAAO;AACR;AAEA,SAAS,sBACR,OACA,gBAC4D;AAC5D,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,EAAG,QAAO;AACxE,QAAM,aAAa;AACnB,SACC,OAAO,WAAW,iBAAiB,YACnC,WAAW,aAAa,SAAS,KACjC,WAAW,aAAa,UAAU,QACjC,WAAW,gBAAgB,UAC1B,OAAO,WAAW,gBAAgB,YAAY,WAAW,YAAY,SAAS,OAC/E,WAAW,kBAAkB,UAAa,gBAAgB,WAAW,aAAa,MACnF,OAAO,WAAW,UAAU,YAC5B,WAAW,MAAM,SAAS,KAC1B,WAAW,MAAM,UAAU,OAC3B,OAAO,WAAW,eAAe,YACjC,OAAO,cAAc,WAAW,UAAU,KAC1C,WAAW,cAAc,KACzB,WAAW,cAAc,kBACzB,OAAO,WAAW,SAAS,YAC3B,OAAO,WAAW,WAAW,aAC5B,WAAW,UAAU,UAAa,OAAO,WAAW,UAAU,aAC/D,OAAO,WAAW,cAAc,YAChC,OAAO,SAAS,WAAW,SAAS;AAEtC;AAEA,SAAS,YAAY,OAAyB;AAC7C,MAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAChD,QAAM,OAAO;AACb,UACE,KAAK,UAAU,UACd,OAAO,KAAK,UAAU,YAAY,KAAK,MAAM,SAAS,KAAK,KAAK,MAAM,UAAU,SACjF,KAAK,eAAe,UACnB,OAAO,KAAK,eAAe,YAC3B,OAAO,cAAc,KAAK,UAAU,KACpC,KAAK,cAAc,MACrB,OAAO,KAAK,SAAS,YACrB,OAAO,KAAK,WAAW,YACvB,OAAO,KAAK,cAAc,YAC1B,OAAO,SAAS,KAAK,SAAS,KAC9B,OAAO,KAAK,gBAAgB,YAC5B,OAAO,SAAS,KAAK,WAAW,KAChC,OAAO,KAAK,aAAa,YACzB,OAAO,SAAS,KAAK,QAAQ,MAC5B,KAAK,gBAAgB,UAAa,oBAAoB,KAAK,WAAW;AAEzE;AAEA,SAAS,iBAAiB,OAAyB;AAClD,MAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAChD,QAAM,UAAU;AAChB,SACC,OAAO,QAAQ,OAAO,YACtB,OAAO,QAAQ,aAAa,YAC5B,OAAO,QAAQ,gBAAgB,YAC/B,OAAO,QAAQ,YAAY,YAC3B,OAAO,QAAQ,cAAc,YAC7B,OAAO,SAAS,QAAQ,SAAS,MAChC,QAAQ,WAAW,UAClB,OAAO,QAAQ,WAAW,YAAY,OAAO,SAAS,QAAQ,MAAM,OACrE,QAAQ,qBAAqB,UAAa,OAAO,QAAQ,qBAAqB,cAC9E,QAAQ,iBAAiB,UAAa,OAAO,QAAQ,iBAAiB;AAEzE;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|