@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.
Files changed (178) hide show
  1. package/README.md +152 -50
  2. package/dist/chunks/{auto-transport-SY2VHUFH.ts → auto-transport-FUUKFDIG.ts} +6 -6
  3. package/dist/chunks/{capability-grant-CGEWOEKE.ts → capability-grant-PR72SWWS.ts} +4 -4
  4. package/dist/chunks/{chunk-DPPVEQAM.ts → chunk-4AQSF7AS.ts} +1 -1
  5. package/dist/chunks/chunk-4AQSF7AS.ts.map +7 -0
  6. package/dist/chunks/chunk-6H6TBBED.ts +108 -0
  7. package/dist/chunks/chunk-6H6TBBED.ts.map +7 -0
  8. package/dist/chunks/{chunk-DSOOH73Y.ts → chunk-7AAJEUSL.ts} +3 -3
  9. package/dist/chunks/{chunk-DSOOH73Y.ts.map → chunk-7AAJEUSL.ts.map} +2 -2
  10. package/dist/chunks/{chunk-7QPPBBXZ.ts → chunk-D4CR7T73.ts} +21 -3
  11. package/dist/chunks/chunk-D4CR7T73.ts.map +7 -0
  12. package/dist/chunks/{chunk-434NII74.ts → chunk-DIHBUR2E.ts} +54 -8
  13. package/dist/chunks/chunk-DIHBUR2E.ts.map +7 -0
  14. package/dist/chunks/{chunk-NIF42QMF.ts → chunk-FEVPWRMU.ts} +7 -4
  15. package/dist/chunks/chunk-FEVPWRMU.ts.map +7 -0
  16. package/dist/chunks/{chunk-YBUWBRF7.ts → chunk-FXI45N3J.ts} +5 -5
  17. package/dist/chunks/{chunk-S2IWVK3J.ts → chunk-ILEQ27AL.ts} +3 -2
  18. package/dist/chunks/chunk-ILEQ27AL.ts.map +7 -0
  19. package/dist/chunks/{chunk-DQMN4OYM.ts → chunk-ITVWPNU4.ts} +12 -106
  20. package/dist/chunks/chunk-ITVWPNU4.ts.map +7 -0
  21. package/dist/chunks/{chunk-QDVGH2X7.ts → chunk-IWC32VPY.ts} +2 -1
  22. package/dist/chunks/{chunk-QDVGH2X7.ts.map → chunk-IWC32VPY.ts.map} +2 -2
  23. package/dist/chunks/{chunk-I2FAK44T.ts → chunk-JSZIP73U.ts} +48 -10
  24. package/dist/chunks/chunk-JSZIP73U.ts.map +7 -0
  25. package/dist/chunks/{chunk-ZHTNCZIA.ts → chunk-JU6LUNLP.ts} +2 -2
  26. package/dist/chunks/{chunk-PSK43Y6A.ts → chunk-LASD73CM.ts} +2 -2
  27. package/dist/chunks/{chunk-C4L6P266.ts → chunk-LEOYDZI3.ts} +1 -1
  28. package/dist/chunks/{chunk-C4L6P266.ts.map → chunk-LEOYDZI3.ts.map} +2 -2
  29. package/dist/chunks/{chunk-H3BFJ7HJ.ts → chunk-LL4LP2T7.ts} +5 -5
  30. package/dist/chunks/chunk-N2T5IN4X.ts +18 -0
  31. package/dist/chunks/chunk-N2T5IN4X.ts.map +7 -0
  32. package/dist/chunks/{chunk-G3RSMSXJ.ts → chunk-NTRPLF46.ts} +1 -1
  33. package/dist/chunks/chunk-NTRPLF46.ts.map +7 -0
  34. package/dist/chunks/{chunk-CBP76ARQ.ts → chunk-PABJJYP6.ts} +174 -47
  35. package/dist/chunks/chunk-PABJJYP6.ts.map +7 -0
  36. package/dist/chunks/{chunk-EFBPISNT.ts → chunk-PBZMBTNJ.ts} +104 -103
  37. package/dist/chunks/chunk-PBZMBTNJ.ts.map +7 -0
  38. package/dist/chunks/{chunk-SCZ33MYW.ts → chunk-PGLSFLYW.ts} +2 -2
  39. package/dist/chunks/{chunk-O4VO6JUJ.ts → chunk-TM2R67J3.ts} +3 -3
  40. package/dist/chunks/{chunk-QBORTI4W.ts → chunk-TMZRHIIK.ts} +32 -3
  41. package/dist/chunks/chunk-TMZRHIIK.ts.map +7 -0
  42. package/dist/chunks/chunk-TZ34IQ3M.ts +59 -0
  43. package/dist/chunks/chunk-TZ34IQ3M.ts.map +7 -0
  44. package/dist/chunks/chunk-VBDGNNLM.ts +214 -0
  45. package/dist/chunks/chunk-VBDGNNLM.ts.map +7 -0
  46. package/dist/chunks/{chunk-7OBINKFM.ts → chunk-VDG7LTYE.ts} +11 -11
  47. package/dist/chunks/chunk-VDG7LTYE.ts.map +7 -0
  48. package/dist/chunks/{chunk-AEUYS7JC.ts → chunk-X4NMONPE.ts} +1 -1
  49. package/dist/chunks/chunk-X4NMONPE.ts.map +7 -0
  50. package/dist/chunks/{chunk-HKC4ES4B.ts → chunk-YPJEN6NU.ts} +2 -2
  51. package/dist/chunks/{completion-delivery-YPOWSSV3.ts → completion-delivery-JVLNQRWX.ts} +5 -4
  52. package/dist/chunks/{config-status-J4GPWP46.ts → config-status-FKGDECZ3.ts} +7 -6
  53. package/dist/chunks/{config-ui-2YUCUEBM.ts → config-ui-DDKERQHI.ts} +297 -231
  54. package/dist/chunks/config-ui-DDKERQHI.ts.map +7 -0
  55. package/dist/chunks/{consult-IV7UBNQQ.ts → consult-PQ6PRAKC.ts} +14 -13
  56. package/dist/chunks/consult-PQ6PRAKC.ts.map +7 -0
  57. package/dist/chunks/{create-stateful-transport-ZP3IXNV3.ts → create-stateful-transport-JWC2EFYL.ts} +6 -6
  58. package/dist/chunks/{delegation-contract-WJPT4FVS.ts → delegation-contract-LA56I5DT.ts} +2 -2
  59. package/dist/chunks/{discovery-K25T3SH4.ts → discovery-MIFB2U4Y.ts} +3 -3
  60. package/dist/chunks/{execution-LA7HN5YF.ts → execution-Q2JZLKJA.ts} +19 -16
  61. package/dist/chunks/execution-Q2JZLKJA.ts.map +7 -0
  62. package/dist/chunks/{in-process-transport-4RF3J6XK.ts → in-process-transport-HJ6TZXC3.ts} +9 -9
  63. package/dist/chunks/{inspect-XV2QALMR.ts → inspect-UH2TKH6E.ts} +25 -10
  64. package/dist/chunks/inspect-UH2TKH6E.ts.map +7 -0
  65. package/dist/chunks/{persistence-VSGXAW4P.ts → persistence-XHPJBZL7.ts} +11 -7
  66. package/dist/chunks/persistence-XHPJBZL7.ts.map +7 -0
  67. package/dist/chunks/{registry-E6XPJB7L.ts → registry-XDXPECWF.ts} +136 -15
  68. package/dist/chunks/registry-XDXPECWF.ts.map +7 -0
  69. package/dist/chunks/{retained-semantic-state-7WXSGRJU.ts → retained-semantic-state-GM75FZGE.ts} +3 -3
  70. package/dist/chunks/{rpc-transport-NEHBHWX4.ts → rpc-transport-7R7DVCEB.ts} +12 -16
  71. package/dist/chunks/rpc-transport-7R7DVCEB.ts.map +7 -0
  72. package/dist/chunks/{spawn-idempotency-QGHO2WKC.ts → spawn-idempotency-BNHOSMZW.ts} +2 -2
  73. package/dist/chunks/{subprocess-transport-NSHOGDC4.ts → subprocess-transport-VHZJRBTW.ts} +15 -14
  74. package/dist/chunks/subprocess-transport-VHZJRBTW.ts.map +7 -0
  75. package/dist/chunks/usage-recording-store-CW3EH2SZ.ts +164 -0
  76. package/dist/chunks/usage-recording-store-CW3EH2SZ.ts.map +7 -0
  77. package/dist/index.ts +427 -30
  78. package/dist/index.ts.map +3 -3
  79. package/docs/async-runtime-protocol.md +69 -0
  80. package/docs/implementation-notes/pi-subagents-capability-matrix.md +62 -0
  81. package/docs/implementation-notes/pi-subagents-current-direction.md +99 -0
  82. package/docs/implementation-notes/pi-subagents-rpc-v1.md +153 -0
  83. package/docs/pi-subagents-diagrams.md +183 -0
  84. package/package.json +9 -8
  85. package/src/agents/types.ts +2 -0
  86. package/src/async-subagent-benchmark.ts +532 -0
  87. package/src/completion-delivery.ts +71 -4
  88. package/src/completion-render.ts +1 -0
  89. package/src/completion-requirement.ts +308 -0
  90. package/src/config-registration.ts +5 -5
  91. package/src/config-status.ts +66 -70
  92. package/src/config-ui.ts +244 -150
  93. package/src/consult-resources.ts +1 -1
  94. package/src/consult.ts +3 -8
  95. package/src/delegation-contract.ts +55 -9
  96. package/src/execution-plan.ts +1 -1
  97. package/src/execution-ui.ts +40 -29
  98. package/src/execution.ts +2 -3
  99. package/src/inspect.ts +24 -1
  100. package/src/orchestration-metrics.ts +1 -1
  101. package/src/panel-execution.ts +2 -3
  102. package/src/panel-failure.ts +1 -1
  103. package/src/panel-render.ts +1 -1
  104. package/src/parallel-limit-ui.ts +6 -5
  105. package/src/params.ts +2 -1
  106. package/src/persistence.ts +9 -0
  107. package/src/process-control.ts +43 -0
  108. package/src/registry-types.ts +5 -0
  109. package/src/registry.ts +162 -18
  110. package/src/render.ts +2 -1
  111. package/src/rpc-transport.ts +1 -1
  112. package/src/runner-outcome.ts +1 -1
  113. package/src/runner-result.ts +1 -1
  114. package/src/runner-types.ts +102 -0
  115. package/src/runner.ts +11 -192
  116. package/src/settings/inspection.ts +27 -0
  117. package/src/settings/schema.ts +9 -0
  118. package/src/settings-reader.ts +7 -0
  119. package/src/settings.ts +20 -0
  120. package/src/spawn-idempotency.ts +5 -0
  121. package/src/stateful-agent-view.ts +15 -19
  122. package/src/stateful-guidance.ts +14 -4
  123. package/src/stateful-limit-ui.ts +23 -20
  124. package/src/stateful-limits.ts +10 -10
  125. package/src/stateful-registration.ts +126 -9
  126. package/src/stateful-render.ts +27 -2
  127. package/src/subagent-details.ts +43 -0
  128. package/src/subagents-extension.ts +66 -8
  129. package/src/subagents.ts +2 -0
  130. package/src/subprocess-transport.ts +2 -1
  131. package/src/supervision.ts +2 -1
  132. package/src/timeout-finalization.ts +1 -1
  133. package/src/tool-schema-compatibility.ts +73 -0
  134. package/src/transport-types.ts +6 -0
  135. package/src/transport-ui.ts +18 -46
  136. package/src/usage-recording-config.ts +13 -0
  137. package/src/usage-recording-store.ts +183 -0
  138. package/src/usage-recording.ts +478 -0
  139. package/src/verification-harness.ts +1 -1
  140. package/src/workflow-ui.ts +17 -9
  141. package/dist/chunks/chunk-434NII74.ts.map +0 -7
  142. package/dist/chunks/chunk-7OBINKFM.ts.map +0 -7
  143. package/dist/chunks/chunk-7QPPBBXZ.ts.map +0 -7
  144. package/dist/chunks/chunk-AEUYS7JC.ts.map +0 -7
  145. package/dist/chunks/chunk-CBP76ARQ.ts.map +0 -7
  146. package/dist/chunks/chunk-DPPVEQAM.ts.map +0 -7
  147. package/dist/chunks/chunk-DQMN4OYM.ts.map +0 -7
  148. package/dist/chunks/chunk-EFBPISNT.ts.map +0 -7
  149. package/dist/chunks/chunk-G3RSMSXJ.ts.map +0 -7
  150. package/dist/chunks/chunk-I2FAK44T.ts.map +0 -7
  151. package/dist/chunks/chunk-NIF42QMF.ts.map +0 -7
  152. package/dist/chunks/chunk-QBORTI4W.ts.map +0 -7
  153. package/dist/chunks/chunk-S2IWVK3J.ts.map +0 -7
  154. package/dist/chunks/config-ui-2YUCUEBM.ts.map +0 -7
  155. package/dist/chunks/consult-IV7UBNQQ.ts.map +0 -7
  156. package/dist/chunks/execution-LA7HN5YF.ts.map +0 -7
  157. package/dist/chunks/inspect-XV2QALMR.ts.map +0 -7
  158. package/dist/chunks/persistence-VSGXAW4P.ts.map +0 -7
  159. package/dist/chunks/registry-E6XPJB7L.ts.map +0 -7
  160. package/dist/chunks/rpc-transport-NEHBHWX4.ts.map +0 -7
  161. package/dist/chunks/subprocess-transport-NSHOGDC4.ts.map +0 -7
  162. /package/dist/chunks/{auto-transport-SY2VHUFH.ts.map → auto-transport-FUUKFDIG.ts.map} +0 -0
  163. /package/dist/chunks/{capability-grant-CGEWOEKE.ts.map → capability-grant-PR72SWWS.ts.map} +0 -0
  164. /package/dist/chunks/{chunk-YBUWBRF7.ts.map → chunk-FXI45N3J.ts.map} +0 -0
  165. /package/dist/chunks/{chunk-ZHTNCZIA.ts.map → chunk-JU6LUNLP.ts.map} +0 -0
  166. /package/dist/chunks/{chunk-PSK43Y6A.ts.map → chunk-LASD73CM.ts.map} +0 -0
  167. /package/dist/chunks/{chunk-H3BFJ7HJ.ts.map → chunk-LL4LP2T7.ts.map} +0 -0
  168. /package/dist/chunks/{chunk-SCZ33MYW.ts.map → chunk-PGLSFLYW.ts.map} +0 -0
  169. /package/dist/chunks/{chunk-O4VO6JUJ.ts.map → chunk-TM2R67J3.ts.map} +0 -0
  170. /package/dist/chunks/{chunk-HKC4ES4B.ts.map → chunk-YPJEN6NU.ts.map} +0 -0
  171. /package/dist/chunks/{completion-delivery-YPOWSSV3.ts.map → completion-delivery-JVLNQRWX.ts.map} +0 -0
  172. /package/dist/chunks/{config-status-J4GPWP46.ts.map → config-status-FKGDECZ3.ts.map} +0 -0
  173. /package/dist/chunks/{create-stateful-transport-ZP3IXNV3.ts.map → create-stateful-transport-JWC2EFYL.ts.map} +0 -0
  174. /package/dist/chunks/{delegation-contract-WJPT4FVS.ts.map → delegation-contract-LA56I5DT.ts.map} +0 -0
  175. /package/dist/chunks/{discovery-K25T3SH4.ts.map → discovery-MIFB2U4Y.ts.map} +0 -0
  176. /package/dist/chunks/{in-process-transport-4RF3J6XK.ts.map → in-process-transport-HJ6TZXC3.ts.map} +0 -0
  177. /package/dist/chunks/{retained-semantic-state-7WXSGRJU.ts.map → retained-semantic-state-GM75FZGE.ts.map} +0 -0
  178. /package/dist/chunks/{spawn-idempotency-QGHO2WKC.ts.map → spawn-idempotency-BNHOSMZW.ts.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/timeout-finalization.ts"],
4
- "sourcesContent": ["import { redactPrivateText } from \"./context.js\";\nimport { DEFAULT_MAX_CONTEXT_BYTES, truncateUtf8 } from \"./limits.js\";\nimport { appendResultInstruction, type SubagentResultFormat } from \"./result-contract.js\";\nimport type { RecentActivityItem } from \"./runner.js\";\nimport {\n\tformatTimeoutCheckpoint,\n\ttype TimeoutCheckpoint,\n\ttype TurnTerminationReason,\n} from \"./timeout-checkpoint.js\";\n\nexport const DEFAULT_TIMEOUT_FINALIZATION_MS = 45_000;\n\nexport interface TimeoutFinalizationEvidence {\n\ttask: string;\n\tpartialOutput?: string;\n\trecentActivity?: readonly RecentActivityItem[];\n\tcheckpoint?: TimeoutCheckpoint;\n\tterminationReason?: TurnTerminationReason;\n\tresultFormat?: SubagentResultFormat;\n}\n\nexport function resolveTimeoutFinalizationMs(workTimeoutMs: number, override?: number): number {\n\tconst requested = override ?? Math.min(workTimeoutMs, DEFAULT_TIMEOUT_FINALIZATION_MS);\n\tif (!Number.isFinite(requested) || requested < 1) {\n\t\tthrow new Error(\"Timeout finalization deadline must be a positive finite number\");\n\t}\n\treturn Math.min(Math.floor(requested), DEFAULT_TIMEOUT_FINALIZATION_MS);\n}\n\nexport function buildTimeoutFinalizationPrompt(\n\tevidence: TimeoutFinalizationEvidence,\n\tmaxBytes = DEFAULT_MAX_CONTEXT_BYTES,\n): string {\n\tconst activity = (evidence.recentActivity ?? [])\n\t\t.slice(-10)\n\t\t.map((item) =>\n\t\t\titem.type === \"text\"\n\t\t\t\t? `- Assistant note: ${redactPrivateText(item.text)}`\n\t\t\t\t: `- Tool activity: ${redactPrivateText(item.name)}`,\n\t\t)\n\t\t.join(\"\\n\");\n\tconst prompt = [\n\t\tterminationHeading(evidence.terminationReason),\n\t\t\"Do not continue investigating, call tools, modify files, or retry the original task.\",\n\t\t\"Return a concise summary of only verified findings and completed evidence already available.\",\n\t\t\"Explicitly label unfinished or unverified areas.\",\n\t\t`Original task:\\n${redactPrivateText(evidence.task)}`,\n\t\tevidence.partialOutput\n\t\t\t? `Partial assistant output:\\n${redactPrivateText(evidence.partialOutput)}`\n\t\t\t: \"Partial assistant output: (none)\",\n\t\tevidence.checkpoint\n\t\t\t? `Deterministic progress checkpoint:\\n${formatTimeoutCheckpoint(evidence.checkpoint)}`\n\t\t\t: undefined,\n\t\tactivity ? `Recent bounded activity:\\n${activity}` : \"Recent bounded activity: (none)\",\n\t]\n\t\t.filter((value): value is string => Boolean(value))\n\t\t.join(\"\\n\\n\");\n\treturn truncateUtf8(appendResultInstruction(prompt, evidence.resultFormat, maxBytes), maxBytes)\n\t\t.text;\n}\n\nfunction terminationHeading(reason: TurnTerminationReason | undefined): string {\n\tswitch (reason) {\n\t\tcase \"idle_timeout\":\n\t\t\treturn \"The idle deadline expired and the active work was aborted.\";\n\t\tcase \"turn_limit\":\n\t\t\treturn \"The assistant-turn budget was exhausted and the active work was aborted.\";\n\t\tcase \"tool_call_limit\":\n\t\t\treturn \"The tool-call budget was exhausted and the active work was aborted.\";\n\t\tcase \"orchestration_timeout\":\n\t\t\treturn \"The orchestration deadline expired and the active work was aborted.\";\n\t\tdefault:\n\t\t\treturn \"Work deadline expired and the active work was aborted.\";\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;AAUO,IAAM,kCAAkC;AAWxC,SAAS,6BAA6B,eAAuB,UAA2B;AAC9F,QAAM,YAAY,YAAY,KAAK,IAAI,eAAe,+BAA+B;AACrF,MAAI,CAAC,OAAO,SAAS,SAAS,KAAK,YAAY,GAAG;AACjD,UAAM,IAAI,MAAM,gEAAgE;AAAA,EACjF;AACA,SAAO,KAAK,IAAI,KAAK,MAAM,SAAS,GAAG,+BAA+B;AACvE;AAEO,SAAS,+BACf,UACA,WAAW,2BACF;AACT,QAAM,YAAY,SAAS,kBAAkB,CAAC,GAC5C,MAAM,GAAG,EACT;AAAA,IAAI,CAAC,SACL,KAAK,SAAS,SACX,qBAAqB,kBAAkB,KAAK,IAAI,CAAC,KACjD,oBAAoB,kBAAkB,KAAK,IAAI,CAAC;AAAA,EACpD,EACC,KAAK,IAAI;AACX,QAAM,SAAS;AAAA,IACd,mBAAmB,SAAS,iBAAiB;AAAA,IAC7C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAmB,kBAAkB,SAAS,IAAI,CAAC;AAAA,IACnD,SAAS,gBACN;AAAA,EAA8B,kBAAkB,SAAS,aAAa,CAAC,KACvE;AAAA,IACH,SAAS,aACN;AAAA,EAAuC,wBAAwB,SAAS,UAAU,CAAC,KACnF;AAAA,IACH,WAAW;AAAA,EAA6B,QAAQ,KAAK;AAAA,EACtD,EACE,OAAO,CAAC,UAA2B,QAAQ,KAAK,CAAC,EACjD,KAAK,MAAM;AACb,SAAO,aAAa,wBAAwB,QAAQ,SAAS,cAAc,QAAQ,GAAG,QAAQ,EAC5F;AACH;AAEA,SAAS,mBAAmB,QAAmD;AAC9E,UAAQ,QAAQ;AAAA,IACf,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AACJ,aAAO;AAAA,IACR;AACC,aAAO;AAAA,EACT;AACD;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/delegation-contract.ts"],
4
- "sourcesContent": ["import { StringEnum } from \"@earendil-works/pi-ai\";\nimport { Type } from \"typebox\";\nimport { redactPrivateText } from \"./context.js\";\nimport { DEFAULT_MAX_CONTEXT_BYTES, MAX_SUBAGENT_TIMEOUT_MS, truncateUtf8 } from \"./limits.js\";\n\nexport const DELEGATION_CONTRACT_VERSION = \"pi-subagents:delegation:v2\" as const;\nexport const DELEGATION_CONTRACT_LEVELS = [\"minimal\", \"full\"] as const;\nexport const DELEGATION_ENFORCEMENT_MODES = [\"audit\", \"enforce\"] as const;\nexport const AUTHORITY_REQUIREMENTS = [\"unspecified\", \"denied\", \"required\"] as const;\nexport const DELEGATION_SIDE_EFFECT_POLICIES = [\"read-only\", \"idempotent\", \"mutating\"] as const;\n\nconst MAX_IDENTIFIER_BYTES = 256;\nconst MAX_TEXT_BYTES = 16 * 1024;\nconst MAX_ITEM_BYTES = 4 * 1024;\nconst MAX_ITEMS = 50;\nconst MAX_TURNS_OR_TOOLS = 1_000_000;\n\nconst BoundedString = Type.String({ maxLength: MAX_TEXT_BYTES });\nconst BoundedItem = Type.String({ maxLength: MAX_ITEM_BYTES });\nconst BoundedItems = Type.Array(BoundedItem, { maxItems: MAX_ITEMS });\nconst DependencySchema = Type.Object(\n\t{\n\t\ttaskId: Type.String({ minLength: 1, maxLength: MAX_IDENTIFIER_BYTES }),\n\t\tartifactId: Type.Optional(Type.String({ minLength: 1, maxLength: MAX_IDENTIFIER_BYTES })),\n\t\tversion: Type.Optional(Type.String({ minLength: 1, maxLength: MAX_IDENTIFIER_BYTES })),\n\t},\n\t{ additionalProperties: false },\n);\n\nexport const DelegationContractSchema = Type.Object(\n\t{\n\t\tversion: Type.Literal(DELEGATION_CONTRACT_VERSION),\n\t\tlevel: StringEnum(DELEGATION_CONTRACT_LEVELS),\n\t\ttaskId: Type.String({ minLength: 1, maxLength: MAX_IDENTIFIER_BYTES }),\n\t\tobjective: BoundedString,\n\t\tnonGoals: Type.Optional(BoundedItems),\n\t\tdependencies: Type.Optional(Type.Array(DependencySchema, { maxItems: MAX_ITEMS })),\n\t\trequiredInputs: Type.Optional(BoundedItems),\n\t\trequestedAuthority: Type.Optional(\n\t\t\tType.Object(\n\t\t\t\t{\n\t\t\t\t\tcapabilities: Type.Optional(BoundedItems),\n\t\t\t\t\ttools: Type.Optional(BoundedItems),\n\t\t\t\t\treadPaths: Type.Optional(BoundedItems),\n\t\t\t\t\twritePaths: Type.Optional(BoundedItems),\n\t\t\t\t\tnetwork: Type.Optional(StringEnum(AUTHORITY_REQUIREMENTS)),\n\t\t\t\t\tsecrets: Type.Optional(StringEnum(AUTHORITY_REQUIREMENTS)),\n\t\t\t\t},\n\t\t\t\t{ additionalProperties: false },\n\t\t\t),\n\t\t),\n\t\tacceptanceCriteria: Type.Optional(BoundedItems),\n\t\trequiredEvidence: Type.Optional(BoundedItems),\n\t\tbudget: Type.Optional(\n\t\t\tType.Object(\n\t\t\t\t{\n\t\t\t\t\ttimeoutMs: Type.Optional(Type.Integer({ minimum: 1, maximum: MAX_SUBAGENT_TIMEOUT_MS })),\n\t\t\t\t\tmaxTurns: Type.Optional(Type.Integer({ minimum: 1, maximum: MAX_TURNS_OR_TOOLS })),\n\t\t\t\t\tmaxToolCalls: Type.Optional(Type.Integer({ minimum: 1, maximum: MAX_TURNS_OR_TOOLS })),\n\t\t\t\t},\n\t\t\t\t{ additionalProperties: false },\n\t\t\t),\n\t\t),\n\t\tadmission: Type.Optional(\n\t\t\tType.Object(\n\t\t\t\t{\n\t\t\t\t\tcontextPressure: StringEnum([\"low\", \"medium\", \"high\"] as const),\n\t\t\t\t\tindependentWorkItems: Type.Integer({ minimum: 1, maximum: 2 }),\n\t\t\t\t\tcoupling: StringEnum([\"dense\", \"sparse\"] as const),\n\t\t\t\t\tverificationRequired: Type.Boolean(),\n\t\t\t\t\tverificationAvailable: Type.Boolean(),\n\t\t\t\t\tbudgetAllowsChildren: Type.Boolean(),\n\t\t\t\t\trequirementsComplete: Type.Boolean(),\n\t\t\t\t},\n\t\t\t\t{ additionalProperties: false },\n\t\t\t),\n\t\t),\n\t\tsideEffectPolicy: Type.Optional(StringEnum(DELEGATION_SIDE_EFFECT_POLICIES)),\n\t\tenforcement: Type.Optional(StringEnum(DELEGATION_ENFORCEMENT_MODES)),\n\t},\n\t{ additionalProperties: false },\n);\n\nexport interface DelegationDependency {\n\ttaskId: string;\n\tartifactId?: string;\n\tversion?: string;\n}\n\nexport interface DelegationAuthorityRequest {\n\tcapabilities?: string[];\n\ttools?: string[];\n\treadPaths?: string[];\n\twritePaths?: string[];\n\tnetwork?: (typeof AUTHORITY_REQUIREMENTS)[number];\n\tsecrets?: (typeof AUTHORITY_REQUIREMENTS)[number];\n}\n\nexport interface DelegationBudgetRequest {\n\ttimeoutMs?: number;\n\tmaxTurns?: number;\n\tmaxToolCalls?: number;\n}\n\nexport interface DelegationAdmissionRequest {\n\tcontextPressure: \"low\" | \"medium\" | \"high\";\n\tindependentWorkItems: number;\n\tcoupling: \"dense\" | \"sparse\";\n\tverificationRequired: boolean;\n\tverificationAvailable: boolean;\n\tbudgetAllowsChildren: boolean;\n\trequirementsComplete: boolean;\n}\n\nexport interface DelegationContract {\n\tversion: typeof DELEGATION_CONTRACT_VERSION;\n\tlevel: (typeof DELEGATION_CONTRACT_LEVELS)[number];\n\ttaskId: string;\n\tobjective: string;\n\tnonGoals: string[];\n\tdependencies: DelegationDependency[];\n\trequiredInputs: string[];\n\trequestedAuthority?: DelegationAuthorityRequest;\n\tacceptanceCriteria: string[];\n\trequiredEvidence: string[];\n\tbudget?: DelegationBudgetRequest;\n\tadmission?: DelegationAdmissionRequest;\n\tsideEffectPolicy: (typeof DELEGATION_SIDE_EFFECT_POLICIES)[number];\n\tenforcement: (typeof DELEGATION_ENFORCEMENT_MODES)[number];\n}\n\nexport interface AppendedDelegationContract {\n\ttext: string;\n\tcontract?: DelegationContract;\n\ttruncated: boolean;\n}\n\nexport function normalizeDelegationContract(value: unknown): DelegationContract | undefined {\n\tif (!isPlainObject(value)) return undefined;\n\tif (\n\t\t!hasOnlyKeys(value, [\n\t\t\t\"version\",\n\t\t\t\"level\",\n\t\t\t\"taskId\",\n\t\t\t\"objective\",\n\t\t\t\"nonGoals\",\n\t\t\t\"dependencies\",\n\t\t\t\"requiredInputs\",\n\t\t\t\"requestedAuthority\",\n\t\t\t\"acceptanceCriteria\",\n\t\t\t\"requiredEvidence\",\n\t\t\t\"budget\",\n\t\t\t\"admission\",\n\t\t\t\"sideEffectPolicy\",\n\t\t\t\"enforcement\",\n\t\t])\n\t) {\n\t\treturn undefined;\n\t}\n\tif (\n\t\tvalue.version !== DELEGATION_CONTRACT_VERSION ||\n\t\ttypeof value.level !== \"string\" ||\n\t\t!DELEGATION_CONTRACT_LEVELS.includes(\n\t\t\tvalue.level as (typeof DELEGATION_CONTRACT_LEVELS)[number],\n\t\t) ||\n\t\ttypeof value.taskId !== \"string\" ||\n\t\t!value.taskId.trim() ||\n\t\ttypeof value.objective !== \"string\"\n\t) {\n\t\treturn undefined;\n\t}\n\tconst taskId = bounded(value.taskId, MAX_IDENTIFIER_BYTES);\n\tconst objective = bounded(value.objective, MAX_TEXT_BYTES);\n\tif (!taskId || !objective) return undefined;\n\tconst nonGoals = normalizeStrings(value.nonGoals);\n\tconst requiredInputs = normalizeStrings(value.requiredInputs);\n\tconst acceptanceCriteria = normalizeStrings(value.acceptanceCriteria);\n\tconst requiredEvidence = normalizeStrings(value.requiredEvidence);\n\tif (!nonGoals || !requiredInputs || !acceptanceCriteria || !requiredEvidence) return undefined;\n\tconst dependencies = normalizeDependencies(value.dependencies);\n\tif (!dependencies) return undefined;\n\tconst authority = normalizeAuthority(value.requestedAuthority);\n\tif (authority === false) return undefined;\n\tconst budget = normalizeBudget(value.budget);\n\tif (budget === false) return undefined;\n\tconst admission = normalizeAdmission(value.admission);\n\tif (admission === false) return undefined;\n\tconst sideEffectPolicy = value.sideEffectPolicy ?? \"mutating\";\n\tif (\n\t\ttypeof sideEffectPolicy !== \"string\" ||\n\t\t!DELEGATION_SIDE_EFFECT_POLICIES.includes(\n\t\t\tsideEffectPolicy as (typeof DELEGATION_SIDE_EFFECT_POLICIES)[number],\n\t\t)\n\t) {\n\t\treturn undefined;\n\t}\n\tconst enforcement = value.enforcement ?? \"audit\";\n\tif (\n\t\ttypeof enforcement !== \"string\" ||\n\t\t!DELEGATION_ENFORCEMENT_MODES.includes(\n\t\t\tenforcement as (typeof DELEGATION_ENFORCEMENT_MODES)[number],\n\t\t)\n\t) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\tversion: DELEGATION_CONTRACT_VERSION,\n\t\tlevel: value.level as DelegationContract[\"level\"],\n\t\ttaskId,\n\t\tobjective,\n\t\tnonGoals,\n\t\tdependencies,\n\t\trequiredInputs,\n\t\t...(authority === undefined ? {} : { requestedAuthority: authority }),\n\t\tacceptanceCriteria,\n\t\trequiredEvidence,\n\t\t...(budget === undefined ? {} : { budget }),\n\t\t...(admission === undefined ? {} : { admission }),\n\t\tsideEffectPolicy: sideEffectPolicy as DelegationContract[\"sideEffectPolicy\"],\n\t\tenforcement: enforcement as DelegationContract[\"enforcement\"],\n\t};\n}\n\nexport function appendDelegationContract(\n\tprompt: string,\n\tvalue: unknown,\n\tmaxBytes = DEFAULT_MAX_CONTEXT_BYTES,\n): AppendedDelegationContract {\n\tconst contract = normalizeDelegationContract(value);\n\tif (!contract) return { text: prompt, truncated: false };\n\tconst suffix = [\n\t\t\"\",\n\t\t\"Delegation contract:\",\n\t\tJSON.stringify(contract),\n\t\t\"The requested authority is advisory until an executor-owned ExecutionPlan confirms which controls are enforceable and effective.\",\n\t\t\"Acknowledge missing inputs, authority, capabilities, or verification instead of guessing.\",\n\t].join(\"\\n\");\n\tconst suffixBytes = Buffer.byteLength(suffix, \"utf8\");\n\tconst boundedPrompt = truncateUtf8(\n\t\tredactPrivateText(prompt),\n\t\tMath.max(0, maxBytes - suffixBytes),\n\t);\n\tconst text = truncateUtf8(`${boundedPrompt.text}${suffix}`, maxBytes);\n\treturn {\n\t\ttext: text.text,\n\t\tcontract,\n\t\ttruncated: boundedPrompt.truncated || text.truncated,\n\t};\n}\n\nfunction normalizeAdmission(value: unknown): DelegationAdmissionRequest | undefined | false {\n\tif (value === undefined) return undefined;\n\tif (!isPlainObject(value)) return false;\n\tif (\n\t\t!hasOnlyKeys(value, [\n\t\t\t\"contextPressure\",\n\t\t\t\"independentWorkItems\",\n\t\t\t\"coupling\",\n\t\t\t\"verificationRequired\",\n\t\t\t\"verificationAvailable\",\n\t\t\t\"budgetAllowsChildren\",\n\t\t\t\"requirementsComplete\",\n\t\t]) ||\n\t\t![\"low\", \"medium\", \"high\"].includes(String(value.contextPressure)) ||\n\t\t!Number.isSafeInteger(value.independentWorkItems) ||\n\t\tNumber(value.independentWorkItems) < 1 ||\n\t\tNumber(value.independentWorkItems) > 2 ||\n\t\t![\"dense\", \"sparse\"].includes(String(value.coupling)) ||\n\t\ttypeof value.verificationRequired !== \"boolean\" ||\n\t\ttypeof value.verificationAvailable !== \"boolean\" ||\n\t\ttypeof value.budgetAllowsChildren !== \"boolean\" ||\n\t\ttypeof value.requirementsComplete !== \"boolean\"\n\t) {\n\t\treturn false;\n\t}\n\treturn {\n\t\tcontextPressure: value.contextPressure as DelegationAdmissionRequest[\"contextPressure\"],\n\t\tindependentWorkItems: Number(value.independentWorkItems),\n\t\tcoupling: value.coupling as DelegationAdmissionRequest[\"coupling\"],\n\t\tverificationRequired: value.verificationRequired,\n\t\tverificationAvailable: value.verificationAvailable,\n\t\tbudgetAllowsChildren: value.budgetAllowsChildren,\n\t\trequirementsComplete: value.requirementsComplete,\n\t};\n}\n\nfunction normalizeDependencies(value: unknown): DelegationDependency[] | undefined {\n\tif (value === undefined) return [];\n\tif (!Array.isArray(value) || value.length > MAX_ITEMS) return undefined;\n\tconst result: DelegationDependency[] = [];\n\tconst seen = new Set<string>();\n\tfor (const item of value) {\n\t\tif (\n\t\t\t!isPlainObject(item) ||\n\t\t\t!hasOnlyKeys(item, [\"taskId\", \"artifactId\", \"version\"]) ||\n\t\t\ttypeof item.taskId !== \"string\"\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst taskId = bounded(item.taskId, MAX_IDENTIFIER_BYTES);\n\t\tif (!taskId || seen.has(taskId)) return undefined;\n\t\tseen.add(taskId);\n\t\tconst artifactId = optionalString(item.artifactId, MAX_IDENTIFIER_BYTES);\n\t\tconst version = optionalString(item.version, MAX_IDENTIFIER_BYTES);\n\t\tif (artifactId === false || version === false) return undefined;\n\t\tresult.push({\n\t\t\ttaskId,\n\t\t\t...(artifactId === undefined ? {} : { artifactId }),\n\t\t\t...(version === undefined ? {} : { version }),\n\t\t});\n\t}\n\treturn result;\n}\n\nfunction normalizeAuthority(value: unknown): DelegationAuthorityRequest | undefined | false {\n\tif (value === undefined) return undefined;\n\tif (!isPlainObject(value)) return false;\n\tif (\n\t\t!hasOnlyKeys(value, [\"capabilities\", \"tools\", \"readPaths\", \"writePaths\", \"network\", \"secrets\"])\n\t) {\n\t\treturn false;\n\t}\n\tconst capabilities = normalizeOptionalStrings(value.capabilities);\n\tconst tools = normalizeOptionalStrings(value.tools);\n\tconst readPaths = normalizeOptionalStrings(value.readPaths);\n\tconst writePaths = normalizeOptionalStrings(value.writePaths);\n\tif (capabilities === false || tools === false || readPaths === false || writePaths === false) {\n\t\treturn false;\n\t}\n\tconst network = normalizeAuthorityRequirement(value.network);\n\tconst secrets = normalizeAuthorityRequirement(value.secrets);\n\tif (network === false || secrets === false) return false;\n\treturn {\n\t\t...(capabilities === undefined ? {} : { capabilities }),\n\t\t...(tools === undefined ? {} : { tools }),\n\t\t...(readPaths === undefined ? {} : { readPaths }),\n\t\t...(writePaths === undefined ? {} : { writePaths }),\n\t\t...(network === undefined ? {} : { network }),\n\t\t...(secrets === undefined ? {} : { secrets }),\n\t};\n}\n\nfunction normalizeBudget(value: unknown): DelegationBudgetRequest | undefined | false {\n\tif (value === undefined) return undefined;\n\tif (!isPlainObject(value) || !hasOnlyKeys(value, [\"timeoutMs\", \"maxTurns\", \"maxToolCalls\"])) {\n\t\treturn false;\n\t}\n\tconst timeoutMs = optionalInteger(value.timeoutMs, MAX_SUBAGENT_TIMEOUT_MS);\n\tconst maxTurns = optionalInteger(value.maxTurns, MAX_TURNS_OR_TOOLS);\n\tconst maxToolCalls = optionalInteger(value.maxToolCalls, MAX_TURNS_OR_TOOLS);\n\tif (timeoutMs === false || maxTurns === false || maxToolCalls === false) return false;\n\treturn {\n\t\t...(timeoutMs === undefined ? {} : { timeoutMs }),\n\t\t...(maxTurns === undefined ? {} : { maxTurns }),\n\t\t...(maxToolCalls === undefined ? {} : { maxToolCalls }),\n\t};\n}\n\nfunction normalizeStrings(value: unknown): string[] | undefined {\n\tif (value === undefined) return [];\n\tconst normalized = normalizeOptionalStrings(value);\n\treturn normalized === false ? undefined : normalized;\n}\n\nfunction normalizeOptionalStrings(value: unknown): string[] | undefined | false {\n\tif (value === undefined) return undefined;\n\tif (!Array.isArray(value) || value.length > MAX_ITEMS) return false;\n\tconst result: string[] = [];\n\tconst seen = new Set<string>();\n\tfor (const item of value) {\n\t\tif (typeof item !== \"string\") return false;\n\t\tconst normalized = bounded(item, MAX_ITEM_BYTES);\n\t\tif (!normalized || seen.has(normalized)) continue;\n\t\tseen.add(normalized);\n\t\tresult.push(normalized);\n\t}\n\treturn result;\n}\n\nfunction normalizeAuthorityRequirement(\n\tvalue: unknown,\n): (typeof AUTHORITY_REQUIREMENTS)[number] | undefined | false {\n\tif (value === undefined) return undefined;\n\tif (\n\t\ttypeof value !== \"string\" ||\n\t\t!AUTHORITY_REQUIREMENTS.includes(value as (typeof AUTHORITY_REQUIREMENTS)[number])\n\t) {\n\t\treturn false;\n\t}\n\treturn value as (typeof AUTHORITY_REQUIREMENTS)[number];\n}\n\nfunction optionalString(value: unknown, maxBytes: number): string | undefined | false {\n\tif (value === undefined) return undefined;\n\tif (typeof value !== \"string\") return false;\n\tconst normalized = bounded(value, maxBytes);\n\treturn normalized || false;\n}\n\nfunction optionalInteger(value: unknown, max: number): number | undefined | false {\n\tif (value === undefined) return undefined;\n\tif (!Number.isSafeInteger(value) || (value as number) < 1 || (value as number) > max)\n\t\treturn false;\n\treturn value as number;\n}\n\nfunction bounded(value: string, maxBytes: number): string {\n\treturn truncateUtf8(redactPrivateText(value), maxBytes).text.trim();\n}\n\nfunction hasOnlyKeys(value: Record<string, unknown>, allowed: readonly string[]): boolean {\n\treturn Object.keys(value).every((key) => allowed.includes(key));\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\treturn Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/params.ts", "../../src/panel-presets.ts", "../../src/verified-execution-schema.ts"],
4
- "sourcesContent": ["import { StringEnum } from \"@earendil-works/pi-ai\";\nimport { type Static, Type } from \"typebox\";\nimport { THINKING_LEVELS } from \"./agents/types.js\";\nimport { DelegationContractSchema } from \"./delegation-contract.js\";\nimport { MAX_CONFIGURABLE_PARALLEL_TASKS, MAX_SUBAGENT_TIMEOUT_MS } from \"./limits.js\";\nimport { PANEL_PRESETS } from \"./panel-presets.js\";\nimport { SUBAGENT_RESULT_FORMATS } from \"./result-contract.js\";\nimport { MAX_SUBAGENT_TOOL_CALLS, MAX_SUBAGENT_TURNS } from \"./turn-budget.js\";\nimport { VerifiedExecutionContractSchema } from \"./verified-execution-schema.js\";\n\nconst TimeoutMs = Type.Number({\n\tdescription:\n\t\t\"Work deadline in milliseconds selected for the task difficulty. On expiry, Pi aborts the work and makes one separately bounded summary attempt. Defaults to PI_SUBAGENT_TIMEOUT_MS or 600000.\",\n\tminimum: 1,\n\tmaximum: MAX_SUBAGENT_TIMEOUT_MS,\n});\n\nconst TurnLimitFields = {\n\tidleTimeoutMs: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription:\n\t\t\t\t\"Maximum milliseconds without a completed assistant turn or tool result before Pi aborts work and preserves a checkpoint.\",\n\t\t\tminimum: 1,\n\t\t\tmaximum: MAX_SUBAGENT_TIMEOUT_MS,\n\t\t}),\n\t),\n\tmaxTurns: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Maximum assistant turns before unfinished work is stopped and checkpointed.\",\n\t\t\tminimum: 1,\n\t\t\tmaximum: MAX_SUBAGENT_TURNS,\n\t\t}),\n\t),\n\tmaxToolCalls: Type.Optional(\n\t\tType.Integer({\n\t\t\tdescription: \"Maximum tool calls before additional tool work is stopped and checkpointed.\",\n\t\t\tminimum: 1,\n\t\t\tmaximum: MAX_SUBAGENT_TOOL_CALLS,\n\t\t}),\n\t),\n};\n\nconst ThinkingLevelSchema = StringEnum(THINKING_LEVELS, {\n\tdescription:\n\t\t\"Pi thinking level for the subagent process: off, minimal, low, medium, high, xhigh, or max.\",\n});\n\nconst ResultFormatSchema = StringEnum(SUBAGENT_RESULT_FORMATS, {\n\tdescription:\n\t\t\"Optional completion contract. Text preserves ordinary output; structured-v1 and structured-v2 request versioned JSON with bounded text fallback.\",\n});\n\nconst ContractFields = {\n\tcontract: Type.Optional(DelegationContractSchema),\n\tresultFormat: Type.Optional(ResultFormatSchema),\n\tretryPolicy: Type.Optional(\n\t\tType.Object(\n\t\t\t{\n\t\t\t\tmaxAttempts: Type.Integer({ minimum: 1, maximum: 3 }),\n\t\t\t\tbackoffMs: Type.Optional(Type.Integer({ minimum: 0, maximum: 30_000 })),\n\t\t\t},\n\t\t\t{ additionalProperties: false },\n\t\t),\n\t),\n\thedgeAfterMs: Type.Optional(Type.Integer({ minimum: 1, maximum: 30_000 })),\n};\n\nconst TaskItem = Type.Object({\n\tagent: Type.String({ description: \"Name of the agent to invoke\" }),\n\ttask: Type.String({ description: \"Task to delegate to the agent\" }),\n\tcwd: Type.Optional(Type.String({ description: \"Working directory for the agent process\" })),\n\ttimeoutMs: Type.Optional(TimeoutMs),\n\t...TurnLimitFields,\n\tthinkingLevel: Type.Optional(ThinkingLevelSchema),\n\t...ContractFields,\n});\n\nconst WorkflowTaskItem = Type.Object({\n\tid: Type.String({ minLength: 1, maxLength: 256 }),\n\tagent: Type.Optional(\n\t\tType.String({ description: \"Optional explicit agent; omit to route by capability manifest\" }),\n\t),\n\trequiredCapabilities: Type.Optional(\n\t\tType.Array(Type.String({ minLength: 1, maxLength: 256 }), { maxItems: 50 }),\n\t),\n\trequiredTools: Type.Optional(\n\t\tType.Array(Type.String({ minLength: 1, maxLength: 256 }), { maxItems: 50 }),\n\t),\n\trequiredVerificationRole: Type.Optional(Type.String({ minLength: 1, maxLength: 256 })),\n\tpreferredCostHint: Type.Optional(StringEnum([\"low\", \"medium\", \"high\"] as const)),\n\tpreferredLatencyHint: Type.Optional(StringEnum([\"low\", \"medium\", \"high\"] as const)),\n\ttask: Type.String({ description: \"Task to delegate to the agent\" }),\n\tdependsOn: Type.Optional(\n\t\tType.Array(Type.String({ minLength: 1, maxLength: 256 }), { maxItems: 64 }),\n\t),\n\tinputArtifacts: Type.Optional(\n\t\tType.Array(Type.String({ minLength: 1, maxLength: 256 }), { maxItems: 50 }),\n\t),\n\tinputArtifactVersions: Type.Optional(\n\t\tType.Record(\n\t\t\tType.String({ minLength: 1, maxLength: 256 }),\n\t\t\tType.String({ minLength: 1, maxLength: 256 }),\n\t\t),\n\t),\n\treadPaths: Type.Optional(Type.Array(Type.String({ maxLength: 4096 }), { maxItems: 50 })),\n\twritePaths: Type.Optional(Type.Array(Type.String({ maxLength: 4096 }), { maxItems: 50 })),\n\townershipKeys: Type.Optional(Type.Array(Type.String({ maxLength: 256 }), { maxItems: 50 })),\n\tacceptanceCriteria: Type.Optional(Type.Array(Type.String({ maxLength: 4096 }), { maxItems: 50 })),\n\tintegrationOwner: Type.Optional(Type.Boolean()),\n\tverifierFor: Type.Optional(\n\t\tType.String({\n\t\t\tminLength: 1,\n\t\t\tmaxLength: 256,\n\t\t\tdescription:\n\t\t\t\t\"Target task ID for one distinct direct-dependent structured-v2 verifier. The executor gates target acceptance on a current exact-tree receipt.\",\n\t\t}),\n\t),\n\tcwd: Type.Optional(Type.String({ description: \"Working directory for the agent process\" })),\n\ttimeoutMs: Type.Optional(TimeoutMs),\n\t...TurnLimitFields,\n\tthinkingLevel: Type.Optional(ThinkingLevelSchema),\n\t...ContractFields,\n});\n\nconst ChainItem = Type.Object({\n\tagent: Type.String({ description: \"Name of the agent to invoke\" }),\n\ttask: Type.String({ description: \"Task with optional {previous} placeholder for prior output\" }),\n\tcwd: Type.Optional(Type.String({ description: \"Working directory for the agent process\" })),\n\ttimeoutMs: Type.Optional(TimeoutMs),\n\t...TurnLimitFields,\n\tthinkingLevel: Type.Optional(ThinkingLevelSchema),\n\t...ContractFields,\n});\n\nconst AggregatorItem = Type.Object(\n\t{\n\t\tagent: Type.String({\n\t\t\tdescription: \"Name of the fan-in agent to invoke after parallel tasks complete\",\n\t\t}),\n\t\ttask: Type.String({\n\t\t\tdescription: \"Fan-in task. Use {previous} to include all parallel outputs.\",\n\t\t}),\n\t\tcwd: Type.Optional(\n\t\t\tType.String({ description: \"Working directory for the aggregator process\" }),\n\t\t),\n\t\ttimeoutMs: Type.Optional(TimeoutMs),\n\t\t...TurnLimitFields,\n\t\tthinkingLevel: Type.Optional(ThinkingLevelSchema),\n\t\t...ContractFields,\n\t},\n\t{\n\t\tdescription:\n\t\t\t\"Optional fan-in step for parallel mode. Omit this key entirely when no aggregation is needed; empty or whitespace-only agent/task values are treated as absent.\",\n\t},\n);\n\nconst PanelReviewerItem = Type.Object(\n\t{\n\t\tid: Type.String({ minLength: 1, maxLength: 256 }),\n\t\tagent: Type.String({ minLength: 1 }),\n\t\tfocus: Type.Optional(Type.String({ maxLength: 8 * 1024 })),\n\t\ttimeoutMs: Type.Optional(TimeoutMs),\n\t\t...TurnLimitFields,\n\t\tthinkingLevel: Type.Optional(ThinkingLevelSchema),\n\t},\n\t{ additionalProperties: false },\n);\n\nconst PanelSynthesizerItem = Type.Object(\n\t{\n\t\tagent: Type.String({ minLength: 1 }),\n\t\ttimeoutMs: Type.Optional(TimeoutMs),\n\t\t...TurnLimitFields,\n\t\tthinkingLevel: Type.Optional(ThinkingLevelSchema),\n\t},\n\t{ additionalProperties: false },\n);\n\nconst PanelItem = Type.Object(\n\t{\n\t\tid: Type.Optional(Type.String({ minLength: 1, maxLength: 256 })),\n\t\tpreset: Type.Optional(StringEnum(PANEL_PRESETS, { default: \"custom\" })),\n\t\ttask: Type.String({ minLength: 1, maxLength: 50 * 1024 }),\n\t\tcontext: Type.Optional(Type.String({ maxLength: 50 * 1024 })),\n\t\treviewers: Type.Array(PanelReviewerItem, {\n\t\t\tminItems: 2,\n\t\t\tmaxItems: MAX_CONFIGURABLE_PARALLEL_TASKS,\n\t\t}),\n\t\tsynthesizer: PanelSynthesizerItem,\n\t\tminValidReviews: Type.Optional(Type.Integer({ minimum: 2 })),\n\t},\n\t{\n\t\tadditionalProperties: false,\n\t\tdescription:\n\t\t\t\"One bounded independent review round followed by one evidence-preserving synthesis when enough valid reviews remain.\",\n\t},\n);\n\nconst AgentScopeSchema = StringEnum([\"user\", \"project\", \"both\"] as const, {\n\tdescription:\n\t\t'Per-invocation custom agent scope. Default: \"user\". Use \"project\" for project-local agents or \"both\" for user and project agents; this is a tool argument, not a pi-subagents.json setting.',\n\tdefault: \"user\",\n});\n\nexport const SubagentParams = Type.Object({\n\tagent: Type.Optional(\n\t\tType.String({ description: \"Name of the agent to invoke (for single mode)\" }),\n\t),\n\ttask: Type.Optional(Type.String({ description: \"Task to delegate (for single mode)\" })),\n\ttasks: Type.Optional(\n\t\tType.Array(TaskItem, {\n\t\t\tdescription: \"Array of {agent, task} for parallel execution\",\n\t\t\tmaxItems: MAX_CONFIGURABLE_PARALLEL_TASKS,\n\t\t}),\n\t),\n\tchain: Type.Optional(\n\t\tType.Array(ChainItem, { description: \"Array of {agent, task} for sequential execution\" }),\n\t),\n\taggregator: Type.Optional(AggregatorItem),\n\tpanel: Type.Optional(PanelItem),\n\tworkflow: Type.Optional(\n\t\tType.Object(\n\t\t\t{\n\t\t\t\tid: Type.Optional(Type.String({ minLength: 1, maxLength: 256 })),\n\t\t\t\tverifiedExecution: Type.Optional(VerifiedExecutionContractSchema),\n\t\t\t\thonorAdmission: Type.Optional(\n\t\t\t\t\tType.Boolean({\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"Opt in to declining workflow tasks whose explicit audit metadata recommends parent-owned work or abstention.\",\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\ttasks: Type.Array(WorkflowTaskItem, {\n\t\t\t\t\tminItems: 1,\n\t\t\t\t\tmaxItems: MAX_CONFIGURABLE_PARALLEL_TASKS,\n\t\t\t\t}),\n\t\t\t},\n\t\t\t{ additionalProperties: false },\n\t\t),\n\t),\n\tagentScope: Type.Optional(AgentScopeSchema),\n\tconfirmProjectAgents: Type.Optional(\n\t\tType.Boolean({\n\t\t\tdescription: \"Prompt before running project-local agents. Default: true.\",\n\t\t\tdefault: true,\n\t\t}),\n\t),\n\tcwd: Type.Optional(\n\t\tType.String({ description: \"Working directory for the agent process (single mode)\" }),\n\t),\n\ttimeoutMs: Type.Optional(TimeoutMs),\n\ttotalTimeoutMs: Type.Optional(\n\t\tType.Number({\n\t\t\tdescription:\n\t\t\t\t\"Overall blocking-workflow deadline in milliseconds, including queued work, workflow tasks, panel phases, chain steps, and fan-in.\",\n\t\t\tminimum: 1,\n\t\t\tmaximum: MAX_SUBAGENT_TIMEOUT_MS,\n\t\t}),\n\t),\n\t...TurnLimitFields,\n\tthinkingLevel: Type.Optional(ThinkingLevelSchema),\n\t...ContractFields,\n});\n\nexport type SubagentParams = Static<typeof SubagentParams>;\n\nexport function hasUsableAggregator(\n\taggregator: unknown,\n): aggregator is { agent: string; task: string } {\n\tif (!aggregator || typeof aggregator !== \"object\") return false;\n\tconst candidate = aggregator as { agent?: unknown; task?: unknown };\n\treturn (\n\t\ttypeof candidate.agent === \"string\" &&\n\t\tcandidate.agent.trim().length > 0 &&\n\t\ttypeof candidate.task === \"string\" &&\n\t\tcandidate.task.trim().length > 0\n\t);\n}\n", "export const PANEL_PRESETS = [\"code-review\", \"research\", \"security-review\", \"custom\"] as const;\n\nexport type PanelPreset = (typeof PANEL_PRESETS)[number];\n", "import { StringEnum } from \"@earendil-works/pi-ai\";\nimport { type Static, Type } from \"typebox\";\n\nconst VerificationCheckSchema = Type.Object(\n\t{\n\t\tid: Type.String({\n\t\t\tminLength: 1,\n\t\t\tmaxLength: 256,\n\t\t\tpattern: \"^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$\",\n\t\t}),\n\t\tcommand: StringEnum([\"git\", \"node\", \"npm\", \"npx\"] as const),\n\t\targs: Type.Optional(Type.Array(Type.String({ maxLength: 4096 }), { maxItems: 64 })),\n\t\tcwd: Type.Optional(Type.String({ minLength: 1, maxLength: 4096 })),\n\t\ttimeoutMs: Type.Optional(Type.Integer({ minimum: 1, maximum: 600_000 })),\n\t},\n\t{ additionalProperties: false },\n);\n\nexport const VerifiedExecutionContractSchema = Type.Object(\n\t{\n\t\tverifierAgent: Type.String({ minLength: 1, maxLength: 256 }),\n\t\tmaxReworkCycles: Type.Optional(Type.Integer({ minimum: 0, maximum: 1, default: 1 })),\n\t\tchecks: Type.Optional(Type.Array(VerificationCheckSchema, { maxItems: 32 })),\n\t},\n\t{\n\t\tadditionalProperties: false,\n\t\tdescription:\n\t\t\t\"Explicitly gate mutating workflow success on executor-owned deterministic checks, one least-authority independent verifier, exact submitted-state identity, and managed integration acceptance.\",\n\t},\n);\n\nexport type VerifiedExecutionContract = Static<typeof VerifiedExecutionContractSchema>;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,cAAAA,mBAAkB;AAC3B,SAAsB,QAAAC,aAAY;;;ACD3B,IAAM,gBAAgB,CAAC,eAAe,YAAY,mBAAmB,QAAQ;;;ACApF,SAAS,kBAAkB;AAC3B,SAAsB,YAAY;AAElC,IAAM,0BAA0B,KAAK;AAAA,EACpC;AAAA,IACC,IAAI,KAAK,OAAO;AAAA,MACf,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,IACV,CAAC;AAAA,IACD,SAAS,WAAW,CAAC,OAAO,QAAQ,OAAO,KAAK,CAAU;AAAA,IAC1D,MAAM,KAAK,SAAS,KAAK,MAAM,KAAK,OAAO,EAAE,WAAW,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;AAAA,IAClF,KAAK,KAAK,SAAS,KAAK,OAAO,EAAE,WAAW,GAAG,WAAW,KAAK,CAAC,CAAC;AAAA,IACjE,WAAW,KAAK,SAAS,KAAK,QAAQ,EAAE,SAAS,GAAG,SAAS,IAAQ,CAAC,CAAC;AAAA,EACxE;AAAA,EACA,EAAE,sBAAsB,MAAM;AAC/B;AAEO,IAAM,kCAAkC,KAAK;AAAA,EACnD;AAAA,IACC,eAAe,KAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,CAAC;AAAA,IAC3D,iBAAiB,KAAK,SAAS,KAAK,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC;AAAA,IACnF,QAAQ,KAAK,SAAS,KAAK,MAAM,yBAAyB,EAAE,UAAU,GAAG,CAAC,CAAC;AAAA,EAC5E;AAAA,EACA;AAAA,IACC,sBAAsB;AAAA,IACtB,aACC;AAAA,EACF;AACD;;;AFnBA,IAAM,YAAYC,MAAK,OAAO;AAAA,EAC7B,aACC;AAAA,EACD,SAAS;AAAA,EACT,SAAS;AACV,CAAC;AAED,IAAM,kBAAkB;AAAA,EACvB,eAAeA,MAAK;AAAA,IACnBA,MAAK,QAAQ;AAAA,MACZ,aACC;AAAA,MACD,SAAS;AAAA,MACT,SAAS;AAAA,IACV,CAAC;AAAA,EACF;AAAA,EACA,UAAUA,MAAK;AAAA,IACdA,MAAK,QAAQ;AAAA,MACZ,aAAa;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,IACV,CAAC;AAAA,EACF;AAAA,EACA,cAAcA,MAAK;AAAA,IAClBA,MAAK,QAAQ;AAAA,MACZ,aAAa;AAAA,MACb,SAAS;AAAA,MACT,SAAS;AAAA,IACV,CAAC;AAAA,EACF;AACD;AAEA,IAAM,sBAAsBC,YAAW,iBAAiB;AAAA,EACvD,aACC;AACF,CAAC;AAED,IAAM,qBAAqBA,YAAW,yBAAyB;AAAA,EAC9D,aACC;AACF,CAAC;AAED,IAAM,iBAAiB;AAAA,EACtB,UAAUD,MAAK,SAAS,wBAAwB;AAAA,EAChD,cAAcA,MAAK,SAAS,kBAAkB;AAAA,EAC9C,aAAaA,MAAK;AAAA,IACjBA,MAAK;AAAA,MACJ;AAAA,QACC,aAAaA,MAAK,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;AAAA,QACpD,WAAWA,MAAK,SAASA,MAAK,QAAQ,EAAE,SAAS,GAAG,SAAS,IAAO,CAAC,CAAC;AAAA,MACvE;AAAA,MACA,EAAE,sBAAsB,MAAM;AAAA,IAC/B;AAAA,EACD;AAAA,EACA,cAAcA,MAAK,SAASA,MAAK,QAAQ,EAAE,SAAS,GAAG,SAAS,IAAO,CAAC,CAAC;AAC1E;AAEA,IAAM,WAAWA,MAAK,OAAO;AAAA,EAC5B,OAAOA,MAAK,OAAO,EAAE,aAAa,8BAA8B,CAAC;AAAA,EACjE,MAAMA,MAAK,OAAO,EAAE,aAAa,gCAAgC,CAAC;AAAA,EAClE,KAAKA,MAAK,SAASA,MAAK,OAAO,EAAE,aAAa,0CAA0C,CAAC,CAAC;AAAA,EAC1F,WAAWA,MAAK,SAAS,SAAS;AAAA,EAClC,GAAG;AAAA,EACH,eAAeA,MAAK,SAAS,mBAAmB;AAAA,EAChD,GAAG;AACJ,CAAC;AAED,IAAM,mBAAmBA,MAAK,OAAO;AAAA,EACpC,IAAIA,MAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,CAAC;AAAA,EAChD,OAAOA,MAAK;AAAA,IACXA,MAAK,OAAO,EAAE,aAAa,gEAAgE,CAAC;AAAA,EAC7F;AAAA,EACA,sBAAsBA,MAAK;AAAA,IAC1BA,MAAK,MAAMA,MAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC;AAAA,EAC3E;AAAA,EACA,eAAeA,MAAK;AAAA,IACnBA,MAAK,MAAMA,MAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC;AAAA,EAC3E;AAAA,EACA,0BAA0BA,MAAK,SAASA,MAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC;AAAA,EACrF,mBAAmBA,MAAK,SAASC,YAAW,CAAC,OAAO,UAAU,MAAM,CAAU,CAAC;AAAA,EAC/E,sBAAsBD,MAAK,SAASC,YAAW,CAAC,OAAO,UAAU,MAAM,CAAU,CAAC;AAAA,EAClF,MAAMD,MAAK,OAAO,EAAE,aAAa,gCAAgC,CAAC;AAAA,EAClE,WAAWA,MAAK;AAAA,IACfA,MAAK,MAAMA,MAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC;AAAA,EAC3E;AAAA,EACA,gBAAgBA,MAAK;AAAA,IACpBA,MAAK,MAAMA,MAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC;AAAA,EAC3E;AAAA,EACA,uBAAuBA,MAAK;AAAA,IAC3BA,MAAK;AAAA,MACJA,MAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,CAAC;AAAA,MAC5CA,MAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,CAAC;AAAA,IAC7C;AAAA,EACD;AAAA,EACA,WAAWA,MAAK,SAASA,MAAK,MAAMA,MAAK,OAAO,EAAE,WAAW,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;AAAA,EACvF,YAAYA,MAAK,SAASA,MAAK,MAAMA,MAAK,OAAO,EAAE,WAAW,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;AAAA,EACxF,eAAeA,MAAK,SAASA,MAAK,MAAMA,MAAK,OAAO,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;AAAA,EAC1F,oBAAoBA,MAAK,SAASA,MAAK,MAAMA,MAAK,OAAO,EAAE,WAAW,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;AAAA,EAChG,kBAAkBA,MAAK,SAASA,MAAK,QAAQ,CAAC;AAAA,EAC9C,aAAaA,MAAK;AAAA,IACjBA,MAAK,OAAO;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,aACC;AAAA,IACF,CAAC;AAAA,EACF;AAAA,EACA,KAAKA,MAAK,SAASA,MAAK,OAAO,EAAE,aAAa,0CAA0C,CAAC,CAAC;AAAA,EAC1F,WAAWA,MAAK,SAAS,SAAS;AAAA,EAClC,GAAG;AAAA,EACH,eAAeA,MAAK,SAAS,mBAAmB;AAAA,EAChD,GAAG;AACJ,CAAC;AAED,IAAM,YAAYA,MAAK,OAAO;AAAA,EAC7B,OAAOA,MAAK,OAAO,EAAE,aAAa,8BAA8B,CAAC;AAAA,EACjE,MAAMA,MAAK,OAAO,EAAE,aAAa,6DAA6D,CAAC;AAAA,EAC/F,KAAKA,MAAK,SAASA,MAAK,OAAO,EAAE,aAAa,0CAA0C,CAAC,CAAC;AAAA,EAC1F,WAAWA,MAAK,SAAS,SAAS;AAAA,EAClC,GAAG;AAAA,EACH,eAAeA,MAAK,SAAS,mBAAmB;AAAA,EAChD,GAAG;AACJ,CAAC;AAED,IAAM,iBAAiBA,MAAK;AAAA,EAC3B;AAAA,IACC,OAAOA,MAAK,OAAO;AAAA,MAClB,aAAa;AAAA,IACd,CAAC;AAAA,IACD,MAAMA,MAAK,OAAO;AAAA,MACjB,aAAa;AAAA,IACd,CAAC;AAAA,IACD,KAAKA,MAAK;AAAA,MACTA,MAAK,OAAO,EAAE,aAAa,+CAA+C,CAAC;AAAA,IAC5E;AAAA,IACA,WAAWA,MAAK,SAAS,SAAS;AAAA,IAClC,GAAG;AAAA,IACH,eAAeA,MAAK,SAAS,mBAAmB;AAAA,IAChD,GAAG;AAAA,EACJ;AAAA,EACA;AAAA,IACC,aACC;AAAA,EACF;AACD;AAEA,IAAM,oBAAoBA,MAAK;AAAA,EAC9B;AAAA,IACC,IAAIA,MAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,CAAC;AAAA,IAChD,OAAOA,MAAK,OAAO,EAAE,WAAW,EAAE,CAAC;AAAA,IACnC,OAAOA,MAAK,SAASA,MAAK,OAAO,EAAE,WAAW,IAAI,KAAK,CAAC,CAAC;AAAA,IACzD,WAAWA,MAAK,SAAS,SAAS;AAAA,IAClC,GAAG;AAAA,IACH,eAAeA,MAAK,SAAS,mBAAmB;AAAA,EACjD;AAAA,EACA,EAAE,sBAAsB,MAAM;AAC/B;AAEA,IAAM,uBAAuBA,MAAK;AAAA,EACjC;AAAA,IACC,OAAOA,MAAK,OAAO,EAAE,WAAW,EAAE,CAAC;AAAA,IACnC,WAAWA,MAAK,SAAS,SAAS;AAAA,IAClC,GAAG;AAAA,IACH,eAAeA,MAAK,SAAS,mBAAmB;AAAA,EACjD;AAAA,EACA,EAAE,sBAAsB,MAAM;AAC/B;AAEA,IAAM,YAAYA,MAAK;AAAA,EACtB;AAAA,IACC,IAAIA,MAAK,SAASA,MAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC;AAAA,IAC/D,QAAQA,MAAK,SAASC,YAAW,eAAe,EAAE,SAAS,SAAS,CAAC,CAAC;AAAA,IACtE,MAAMD,MAAK,OAAO,EAAE,WAAW,GAAG,WAAW,KAAK,KAAK,CAAC;AAAA,IACxD,SAASA,MAAK,SAASA,MAAK,OAAO,EAAE,WAAW,KAAK,KAAK,CAAC,CAAC;AAAA,IAC5D,WAAWA,MAAK,MAAM,mBAAmB;AAAA,MACxC,UAAU;AAAA,MACV,UAAU;AAAA,IACX,CAAC;AAAA,IACD,aAAa;AAAA,IACb,iBAAiBA,MAAK,SAASA,MAAK,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;AAAA,EAC5D;AAAA,EACA;AAAA,IACC,sBAAsB;AAAA,IACtB,aACC;AAAA,EACF;AACD;AAEA,IAAM,mBAAmBC,YAAW,CAAC,QAAQ,WAAW,MAAM,GAAY;AAAA,EACzE,aACC;AAAA,EACD,SAAS;AACV,CAAC;AAEM,IAAM,iBAAiBD,MAAK,OAAO;AAAA,EACzC,OAAOA,MAAK;AAAA,IACXA,MAAK,OAAO,EAAE,aAAa,gDAAgD,CAAC;AAAA,EAC7E;AAAA,EACA,MAAMA,MAAK,SAASA,MAAK,OAAO,EAAE,aAAa,qCAAqC,CAAC,CAAC;AAAA,EACtF,OAAOA,MAAK;AAAA,IACXA,MAAK,MAAM,UAAU;AAAA,MACpB,aAAa;AAAA,MACb,UAAU;AAAA,IACX,CAAC;AAAA,EACF;AAAA,EACA,OAAOA,MAAK;AAAA,IACXA,MAAK,MAAM,WAAW,EAAE,aAAa,kDAAkD,CAAC;AAAA,EACzF;AAAA,EACA,YAAYA,MAAK,SAAS,cAAc;AAAA,EACxC,OAAOA,MAAK,SAAS,SAAS;AAAA,EAC9B,UAAUA,MAAK;AAAA,IACdA,MAAK;AAAA,MACJ;AAAA,QACC,IAAIA,MAAK,SAASA,MAAK,OAAO,EAAE,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC;AAAA,QAC/D,mBAAmBA,MAAK,SAAS,+BAA+B;AAAA,QAChE,gBAAgBA,MAAK;AAAA,UACpBA,MAAK,QAAQ;AAAA,YACZ,aACC;AAAA,UACF,CAAC;AAAA,QACF;AAAA,QACA,OAAOA,MAAK,MAAM,kBAAkB;AAAA,UACnC,UAAU;AAAA,UACV,UAAU;AAAA,QACX,CAAC;AAAA,MACF;AAAA,MACA,EAAE,sBAAsB,MAAM;AAAA,IAC/B;AAAA,EACD;AAAA,EACA,YAAYA,MAAK,SAAS,gBAAgB;AAAA,EAC1C,sBAAsBA,MAAK;AAAA,IAC1BA,MAAK,QAAQ;AAAA,MACZ,aAAa;AAAA,MACb,SAAS;AAAA,IACV,CAAC;AAAA,EACF;AAAA,EACA,KAAKA,MAAK;AAAA,IACTA,MAAK,OAAO,EAAE,aAAa,wDAAwD,CAAC;AAAA,EACrF;AAAA,EACA,WAAWA,MAAK,SAAS,SAAS;AAAA,EAClC,gBAAgBA,MAAK;AAAA,IACpBA,MAAK,OAAO;AAAA,MACX,aACC;AAAA,MACD,SAAS;AAAA,MACT,SAAS;AAAA,IACV,CAAC;AAAA,EACF;AAAA,EACA,GAAG;AAAA,EACH,eAAeA,MAAK,SAAS,mBAAmB;AAAA,EAChD,GAAG;AACJ,CAAC;AAIM,SAAS,oBACf,YACgD;AAChD,MAAI,CAAC,cAAc,OAAO,eAAe,SAAU,QAAO;AAC1D,QAAM,YAAY;AAClB,SACC,OAAO,UAAU,UAAU,YAC3B,UAAU,MAAM,KAAK,EAAE,SAAS,KAChC,OAAO,UAAU,SAAS,YAC1B,UAAU,KAAK,KAAK,EAAE,SAAS;AAEjC;",
6
- "names": ["StringEnum", "Type", "Type", "StringEnum"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/settings/schema.ts", "../../src/settings/inspection.ts", "../../src/settings-reader.ts"],
4
- "sourcesContent": ["import {\n\tCONSULT_RESOURCE_POLICIES,\n\tCONSULTATION_CWD_POLICIES,\n\ttype ConsultationCwdPolicy,\n\ttype ConsultResourcePolicy,\n\tDELEGATION_CWD_POLICIES,\n\ttype DelegationCwdPolicy,\n\tisThinkingLevel,\n\ttype SubagentAgentConfig,\n\ttype SubagentSettings,\n} from \"../agents/types.js\";\nimport { MAX_CONFIGURABLE_PARALLEL_TASKS, MAX_SUBAGENT_TIMEOUT_MS } from \"../limits.js\";\nimport { isValidStatefulLimit, STATEFUL_LIMIT_FIELDS } from \"../stateful-limits.js\";\n\nexport function hasOwn(obj: object, key: PropertyKey): boolean {\n\treturn Object.hasOwn(obj, key);\n}\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isStringArray(value: unknown): value is string[] {\n\treturn Array.isArray(value) && value.every((item) => typeof item === \"string\");\n}\n\nexport function isPositiveNumber(value: unknown): value is number {\n\treturn typeof value === \"number\" && Number.isFinite(value) && value >= 1;\n}\n\nexport function isPositiveInteger(value: unknown): value is number {\n\treturn isPositiveNumber(value) && Number.isSafeInteger(value);\n}\n\nexport function normalizeAgentSettings(value: unknown): SubagentAgentConfig | undefined {\n\tif (!isPlainObject(value)) return undefined;\n\n\tconst config: SubagentAgentConfig = {};\n\tlet hasKnownField = false;\n\n\tif (hasOwn(value, \"tools\")) {\n\t\tif (!isStringArray(value.tools)) return undefined;\n\t\tconfig.tools = value.tools;\n\t\thasKnownField = true;\n\t}\n\n\tif (hasOwn(value, \"model\")) {\n\t\tif (value.model !== null && typeof value.model !== \"string\") return undefined;\n\t\tconfig.model = value.model;\n\t\thasKnownField = true;\n\t}\n\n\tif (hasOwn(value, \"thinkingLevel\")) {\n\t\tif (value.thinkingLevel !== null && !isThinkingLevel(value.thinkingLevel)) return undefined;\n\t\tconfig.thinkingLevel = value.thinkingLevel;\n\t\thasKnownField = true;\n\t}\n\n\tif (hasOwn(value, \"timeoutMs\")) {\n\t\tif (\n\t\t\tvalue.timeoutMs !== null &&\n\t\t\t(!isPositiveNumber(value.timeoutMs) || value.timeoutMs > MAX_SUBAGENT_TIMEOUT_MS)\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconfig.timeoutMs = value.timeoutMs;\n\t\thasKnownField = true;\n\t}\n\n\treturn hasKnownField ? config : undefined;\n}\n\nexport function normalizeSubagentSettings(value: unknown): SubagentSettings | undefined {\n\tif (!isPlainObject(value)) return undefined;\n\tconst settings: SubagentSettings = {};\n\tif (hasOwn(value, \"agents\")) {\n\t\tif (!isPlainObject(value.agents)) return undefined;\n\t\tconst agents: Record<string, SubagentAgentConfig> = {};\n\t\tfor (const [name, rawConfig] of Object.entries(value.agents)) {\n\t\t\tconst config = normalizeAgentSettings(rawConfig);\n\t\t\tif (config) agents[name] = config;\n\t\t}\n\t\tif (Object.keys(agents).length > 0) settings.agents = agents;\n\t}\n\tif (hasOwn(value, \"blocking\")) {\n\t\tif (!isPlainObject(value.blocking)) return undefined;\n\t\tconst blocking: NonNullable<SubagentSettings[\"blocking\"]> = {};\n\t\tif (hasOwn(value.blocking, \"enabled\")) {\n\t\t\tif (typeof value.blocking.enabled !== \"boolean\") return undefined;\n\t\t\tblocking.enabled = value.blocking.enabled;\n\t\t}\n\t\tif (hasOwn(value.blocking, \"maxParallelTasks\")) {\n\t\t\tif (\n\t\t\t\t!isPositiveInteger(value.blocking.maxParallelTasks) ||\n\t\t\t\tvalue.blocking.maxParallelTasks > MAX_CONFIGURABLE_PARALLEL_TASKS\n\t\t\t) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tblocking.maxParallelTasks = value.blocking.maxParallelTasks;\n\t\t}\n\t\tsettings.blocking = blocking;\n\t}\n\tif (hasOwn(value, \"stateful\")) {\n\t\tif (!isPlainObject(value.stateful)) return undefined;\n\t\tconst runtime: NonNullable<SubagentSettings[\"stateful\"]> = {};\n\t\tif (hasOwn(value.stateful, \"transport\")) {\n\t\t\tif (\n\t\t\t\tvalue.stateful.transport !== \"subprocess\" &&\n\t\t\t\tvalue.stateful.transport !== \"in-process\" &&\n\t\t\t\tvalue.stateful.transport !== \"rpc\" &&\n\t\t\t\tvalue.stateful.transport !== \"auto\"\n\t\t\t) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\truntime.transport = value.stateful.transport;\n\t\t}\n\t\tif (hasOwn(value.stateful, \"completionDelivery\")) {\n\t\t\tif (\n\t\t\t\tvalue.stateful.completionDelivery !== \"next-turn\" &&\n\t\t\t\tvalue.stateful.completionDelivery !== \"auto-resume\"\n\t\t\t) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\truntime.completionDelivery = value.stateful.completionDelivery;\n\t\t}\n\t\tfor (const key of STATEFUL_LIMIT_FIELDS) {\n\t\t\tif (hasOwn(value.stateful, key)) {\n\t\t\t\tif (!isValidStatefulLimit(key, value.stateful[key])) return undefined;\n\t\t\t\truntime[key] = value.stateful[key];\n\t\t\t}\n\t\t}\n\t\tfor (const key of [\"maxMailboxMessages\", \"maxMailboxMessageBytes\", \"idleTtlMs\"] as const) {\n\t\t\tif (hasOwn(value.stateful, key)) {\n\t\t\t\tif (!isPositiveInteger(value.stateful[key])) return undefined;\n\t\t\t\truntime[key] = value.stateful[key];\n\t\t\t}\n\t\t}\n\t\tif (hasOwn(value.stateful, \"retentionDays\")) {\n\t\t\tif (!isPositiveNumber(value.stateful.retentionDays)) return undefined;\n\t\t\truntime.retentionDays = value.stateful.retentionDays;\n\t\t}\n\t\tif (hasOwn(value.stateful, \"enabled\")) {\n\t\t\tif (typeof value.stateful.enabled !== \"boolean\") return undefined;\n\t\t\truntime.enabled = value.stateful.enabled;\n\t\t}\n\t\tsettings.stateful = runtime;\n\t}\n\tif (hasOwn(value, \"consult\")) {\n\t\tif (!isPlainObject(value.consult)) return undefined;\n\t\tconst consult: NonNullable<SubagentSettings[\"consult\"]> = {};\n\t\tif (hasOwn(value.consult, \"resources\")) {\n\t\t\tif (\n\t\t\t\ttypeof value.consult.resources !== \"string\" ||\n\t\t\t\t!CONSULT_RESOURCE_POLICIES.includes(value.consult.resources as ConsultResourcePolicy)\n\t\t\t) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconsult.resources = value.consult.resources as ConsultResourcePolicy;\n\t\t}\n\t\tsettings.consult = consult;\n\t}\n\tif (hasOwn(value, \"cwdPolicy\")) {\n\t\tif (!isPlainObject(value.cwdPolicy)) return undefined;\n\t\tconst cwdPolicy: NonNullable<SubagentSettings[\"cwdPolicy\"]> = {};\n\t\tif (hasOwn(value.cwdPolicy, \"consultation\")) {\n\t\t\tif (\n\t\t\t\ttypeof value.cwdPolicy.consultation !== \"string\" ||\n\t\t\t\t!CONSULTATION_CWD_POLICIES.includes(value.cwdPolicy.consultation as ConsultationCwdPolicy)\n\t\t\t) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcwdPolicy.consultation = value.cwdPolicy.consultation as ConsultationCwdPolicy;\n\t\t}\n\t\tif (hasOwn(value.cwdPolicy, \"delegation\")) {\n\t\t\tif (\n\t\t\t\ttypeof value.cwdPolicy.delegation !== \"string\" ||\n\t\t\t\t!DELEGATION_CWD_POLICIES.includes(value.cwdPolicy.delegation as DelegationCwdPolicy)\n\t\t\t) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcwdPolicy.delegation = value.cwdPolicy.delegation as DelegationCwdPolicy;\n\t\t}\n\t\tsettings.cwdPolicy = cwdPolicy;\n\t}\n\treturn settings;\n}\n", "import type {\n\tCompletionDelivery,\n\tConsultationCwdPolicy,\n\tConsultResourcePolicy,\n\tDelegationCwdPolicy,\n\tSubagentSettings,\n\tSubagentTransportKind,\n} from \"../agents/types.js\";\nimport { DEFAULT_MAX_PARALLEL_TASKS } from \"../limits.js\";\nimport {\n\tresolveStatefulLimits,\n\tSTATEFUL_LIMIT_FIELDS,\n\ttype StatefulLimitField,\n} from \"../stateful-limits.js\";\nimport { hasOwn, isPlainObject } from \"./schema.js\";\n\nconst DEFAULT_COMPLETION_DELIVERY: CompletionDelivery = \"next-turn\";\nexport const DEFAULT_CONSULT_RESOURCE_POLICY: ConsultResourcePolicy = \"project-context\";\nexport const DEFAULT_CONSULTATION_CWD_POLICY: ConsultationCwdPolicy = \"anywhere\";\nexport const DEFAULT_DELEGATION_CWD_POLICY: DelegationCwdPolicy = \"trusted-targets\";\n\nexport type DelegationWorkflow = \"all\" | \"async-only\" | \"blocking-only\" | \"disabled\";\n\ntype SettingsSource = \"default\" | \"user settings\";\n\nexport interface InspectedSubagentSettingsDocument {\n\tpath: string;\n\traw?: Record<string, unknown>;\n\tsettings?: SubagentSettings;\n\terror?: string;\n}\n\nexport interface DelegationWorkflowSettingsSnapshot {\n\tpath: string;\n\tvalue: DelegationWorkflow;\n\tsource: SettingsSource;\n\terror?: string;\n}\n\nexport interface CompletionDeliverySettingsSnapshot {\n\tpath: string;\n\tvalue: CompletionDelivery;\n\tsource: SettingsSource;\n\terror?: string;\n}\n\nexport interface StatefulTransportSettingsSnapshot {\n\tpath: string;\n\tvalue: SubagentTransportKind;\n\tsource: SettingsSource;\n\terror?: string;\n}\n\nexport interface BlockingParallelLimitSettingsSnapshot {\n\tpath: string;\n\tvalue: number;\n\tsource: SettingsSource;\n\terror?: string;\n}\n\nexport interface StatefulLimitFieldSnapshot {\n\tvalue: number;\n\tsource: SettingsSource;\n}\n\nexport interface StatefulLimitSettingsSnapshot {\n\tpath: string;\n\twritePath: string;\n\tvalues?: Record<StatefulLimitField, StatefulLimitFieldSnapshot>;\n\terror?: string;\n}\n\nexport interface ConsultResourceSettingsSnapshot {\n\tpath: string;\n\tvalue: ConsultResourcePolicy;\n\tsource: SettingsSource;\n\terror?: string;\n}\n\nexport interface CwdPolicyFieldSnapshot<T> {\n\tvalue: T;\n\tsource: SettingsSource;\n}\n\nexport interface CwdPolicySettingsSnapshot {\n\tpath: string;\n\tconsultation: CwdPolicyFieldSnapshot<ConsultationCwdPolicy>;\n\tdelegation: CwdPolicyFieldSnapshot<DelegationCwdPolicy>;\n\terror?: string;\n}\n\nexport interface SubagentSettingsSnapshot {\n\tpath: string;\n\tsettings?: SubagentSettings;\n\tsource: SettingsSource;\n\terror?: string;\n}\n\nexport function resolveDelegationWorkflow(\n\tblockingEnabled: boolean,\n\tstatefulEnabled: boolean,\n): DelegationWorkflow {\n\tif (blockingEnabled && statefulEnabled) return \"all\";\n\tif (statefulEnabled) return \"async-only\";\n\tif (blockingEnabled) return \"blocking-only\";\n\treturn \"disabled\";\n}\n\nexport function resolveBlockingMaxParallelTasks(settings?: SubagentSettings): number {\n\treturn settings?.blocking?.maxParallelTasks ?? DEFAULT_MAX_PARALLEL_TASKS;\n}\n\nexport function buildSubagentSettingsSnapshot(\n\tinspected: InspectedSubagentSettingsDocument,\n): SubagentSettingsSnapshot {\n\treturn {\n\t\tpath: inspected.path,\n\t\tsettings: inspected.settings,\n\t\tsource: inspected.settings ? \"user settings\" : \"default\",\n\t\t...(inspected.error ? { error: inspected.error } : {}),\n\t};\n}\n\nexport function buildConsultResourceSettingsSnapshot(\n\tinspected: InspectedSubagentSettingsDocument,\n): ConsultResourceSettingsSnapshot {\n\tif (!inspected.raw || !inspected.settings) {\n\t\treturn {\n\t\t\tpath: inspected.path,\n\t\t\tvalue: DEFAULT_CONSULT_RESOURCE_POLICY,\n\t\t\tsource: \"default\",\n\t\t\t...(inspected.error ? { error: inspected.error } : {}),\n\t\t};\n\t}\n\tconst explicit =\n\t\tisPlainObject(inspected.raw.consult) && hasOwn(inspected.raw.consult, \"resources\");\n\treturn {\n\t\tpath: inspected.path,\n\t\tvalue: inspected.settings.consult?.resources ?? DEFAULT_CONSULT_RESOURCE_POLICY,\n\t\tsource: explicit ? \"user settings\" : \"default\",\n\t};\n}\n\nexport function buildCwdPolicySettingsSnapshot(\n\tinspected: InspectedSubagentSettingsDocument,\n): CwdPolicySettingsSnapshot {\n\tif (!inspected.raw || !inspected.settings) {\n\t\treturn {\n\t\t\tpath: inspected.path,\n\t\t\tconsultation: { value: DEFAULT_CONSULTATION_CWD_POLICY, source: \"default\" },\n\t\t\tdelegation: { value: DEFAULT_DELEGATION_CWD_POLICY, source: \"default\" },\n\t\t\t...(inspected.error ? { error: inspected.error } : {}),\n\t\t};\n\t}\n\tconst rawPolicy = isPlainObject(inspected.raw.cwdPolicy) ? inspected.raw.cwdPolicy : undefined;\n\treturn {\n\t\tpath: inspected.path,\n\t\tconsultation: {\n\t\t\tvalue: inspected.settings.cwdPolicy?.consultation ?? DEFAULT_CONSULTATION_CWD_POLICY,\n\t\t\tsource: rawPolicy && hasOwn(rawPolicy, \"consultation\") ? \"user settings\" : \"default\",\n\t\t},\n\t\tdelegation: {\n\t\t\tvalue: inspected.settings.cwdPolicy?.delegation ?? DEFAULT_DELEGATION_CWD_POLICY,\n\t\t\tsource: rawPolicy && hasOwn(rawPolicy, \"delegation\") ? \"user settings\" : \"default\",\n\t\t},\n\t};\n}\n\nexport function buildDelegationWorkflowSettingsSnapshot(\n\tinspected: InspectedSubagentSettingsDocument,\n): DelegationWorkflowSettingsSnapshot {\n\tif (!inspected.raw || !inspected.settings) {\n\t\treturn {\n\t\t\tpath: inspected.path,\n\t\t\tvalue: \"all\",\n\t\t\tsource: \"default\",\n\t\t\t...(inspected.error ? { error: inspected.error } : {}),\n\t\t};\n\t}\n\tconst explicit =\n\t\t(isPlainObject(inspected.raw.blocking) && hasOwn(inspected.raw.blocking, \"enabled\")) ||\n\t\t(isPlainObject(inspected.raw.stateful) && hasOwn(inspected.raw.stateful, \"enabled\"));\n\treturn {\n\t\tpath: inspected.path,\n\t\tvalue: resolveDelegationWorkflow(\n\t\t\tinspected.settings.blocking?.enabled !== false,\n\t\t\tinspected.settings.stateful?.enabled !== false,\n\t\t),\n\t\tsource: explicit ? \"user settings\" : \"default\",\n\t};\n}\n\nexport function buildCompletionDeliverySettingsSnapshot(\n\tinspected: InspectedSubagentSettingsDocument,\n): CompletionDeliverySettingsSnapshot {\n\tif (!inspected.raw || !inspected.settings) {\n\t\treturn {\n\t\t\tpath: inspected.path,\n\t\t\tvalue: DEFAULT_COMPLETION_DELIVERY,\n\t\t\tsource: \"default\",\n\t\t\t...(inspected.error ? { error: inspected.error } : {}),\n\t\t};\n\t}\n\tconst explicit =\n\t\tisPlainObject(inspected.raw.stateful) && hasOwn(inspected.raw.stateful, \"completionDelivery\");\n\treturn {\n\t\tpath: inspected.path,\n\t\tvalue: inspected.settings.stateful?.completionDelivery ?? DEFAULT_COMPLETION_DELIVERY,\n\t\tsource: explicit ? \"user settings\" : \"default\",\n\t};\n}\n\nexport function buildStatefulTransportSettingsSnapshot(\n\tinspected: InspectedSubagentSettingsDocument,\n): StatefulTransportSettingsSnapshot {\n\tif (!inspected.raw || !inspected.settings) {\n\t\treturn {\n\t\t\tpath: inspected.path,\n\t\t\tvalue: \"subprocess\",\n\t\t\tsource: \"default\",\n\t\t\t...(inspected.error ? { error: inspected.error } : {}),\n\t\t};\n\t}\n\tconst explicit =\n\t\tisPlainObject(inspected.raw.stateful) && hasOwn(inspected.raw.stateful, \"transport\");\n\treturn {\n\t\tpath: inspected.path,\n\t\tvalue: inspected.settings.stateful?.transport ?? \"subprocess\",\n\t\tsource: explicit ? \"user settings\" : \"default\",\n\t};\n}\n\nexport function buildBlockingParallelLimitSettingsSnapshot(\n\tinspected: InspectedSubagentSettingsDocument,\n): BlockingParallelLimitSettingsSnapshot {\n\tif (!inspected.raw || !inspected.settings) {\n\t\treturn {\n\t\t\tpath: inspected.path,\n\t\t\tvalue: DEFAULT_MAX_PARALLEL_TASKS,\n\t\t\tsource: \"default\",\n\t\t\t...(inspected.error ? { error: inspected.error } : {}),\n\t\t};\n\t}\n\tconst explicit =\n\t\tisPlainObject(inspected.raw.blocking) && hasOwn(inspected.raw.blocking, \"maxParallelTasks\");\n\treturn {\n\t\tpath: inspected.path,\n\t\tvalue: resolveBlockingMaxParallelTasks(inspected.settings),\n\t\tsource: explicit ? \"user settings\" : \"default\",\n\t};\n}\n\nexport function buildStatefulLimitSettingsSnapshot(\n\tinspected: InspectedSubagentSettingsDocument,\n\twritePath: string,\n): StatefulLimitSettingsSnapshot {\n\tif (inspected.error) {\n\t\treturn { path: inspected.path, writePath, error: inspected.error };\n\t}\n\tconst resolved = resolveStatefulLimits(inspected.settings?.stateful);\n\tconst rawStateful = isPlainObject(inspected.raw?.stateful) ? inspected.raw.stateful : undefined;\n\treturn {\n\t\tpath: inspected.path,\n\t\twritePath,\n\t\tvalues: Object.fromEntries(\n\t\t\tSTATEFUL_LIMIT_FIELDS.map((field) => [\n\t\t\t\tfield,\n\t\t\t\t{\n\t\t\t\t\tvalue: resolved[field],\n\t\t\t\t\tsource: rawStateful && hasOwn(rawStateful, field) ? \"user settings\" : \"default\",\n\t\t\t\t},\n\t\t\t]),\n\t\t) as unknown as Record<StatefulLimitField, StatefulLimitFieldSnapshot>,\n\t};\n}\n", "import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { getAgentDir } from \"@earendil-works/pi-coding-agent\";\nimport type { SubagentSettings } from \"./agents/types.js\";\nimport {\n\ttype BlockingParallelLimitSettingsSnapshot,\n\tbuildBlockingParallelLimitSettingsSnapshot,\n\tbuildCompletionDeliverySettingsSnapshot,\n\tbuildConsultResourceSettingsSnapshot,\n\tbuildCwdPolicySettingsSnapshot,\n\tbuildDelegationWorkflowSettingsSnapshot,\n\tbuildStatefulLimitSettingsSnapshot,\n\tbuildStatefulTransportSettingsSnapshot,\n\tbuildSubagentSettingsSnapshot,\n\ttype CompletionDeliverySettingsSnapshot,\n\ttype ConsultResourceSettingsSnapshot,\n\ttype CwdPolicySettingsSnapshot,\n\ttype DelegationWorkflowSettingsSnapshot,\n\ttype InspectedSubagentSettingsDocument,\n\ttype StatefulLimitSettingsSnapshot,\n\ttype StatefulTransportSettingsSnapshot,\n\ttype SubagentSettingsSnapshot,\n} from \"./settings/inspection.js\";\nimport { isPlainObject, normalizeSubagentSettings } from \"./settings/schema.js\";\n\nexport {\n\ttype BlockingParallelLimitSettingsSnapshot,\n\ttype CompletionDeliverySettingsSnapshot,\n\ttype ConsultResourceSettingsSnapshot,\n\ttype CwdPolicyFieldSnapshot,\n\ttype CwdPolicySettingsSnapshot,\n\tDEFAULT_CONSULT_RESOURCE_POLICY,\n\tDEFAULT_CONSULTATION_CWD_POLICY,\n\tDEFAULT_DELEGATION_CWD_POLICY,\n\ttype DelegationWorkflow,\n\ttype DelegationWorkflowSettingsSnapshot,\n\tresolveBlockingMaxParallelTasks,\n\tresolveDelegationWorkflow,\n\ttype StatefulLimitFieldSnapshot,\n\ttype StatefulLimitSettingsSnapshot,\n\ttype StatefulTransportSettingsSnapshot,\n\ttype SubagentSettingsSnapshot,\n} from \"./settings/inspection.js\";\nexport { hasOwn, normalizeAgentSettings, normalizeSubagentSettings } from \"./settings/schema.js\";\n\nexport const SUBAGENT_SETTINGS_FILE = \"pi-subagents.json\";\nconst LEGACY_SETTINGS_FILE = \"pi-subagents-config.json\";\nlet pendingSettingsNotice: string | undefined;\n\nexport function resolveSubagentSettingsPaths(): {\n\tcanonicalPath: string;\n\tlegacyPath: string;\n\tactivePath?: string;\n} {\n\tconst canonicalPath = path.join(getAgentDir(), SUBAGENT_SETTINGS_FILE);\n\tconst legacyPath = path.join(getAgentDir(), LEGACY_SETTINGS_FILE);\n\treturn {\n\t\tcanonicalPath,\n\t\tlegacyPath,\n\t\tactivePath: fs.existsSync(canonicalPath)\n\t\t\t? canonicalPath\n\t\t\t: fs.existsSync(legacyPath)\n\t\t\t\t? legacyPath\n\t\t\t\t: undefined,\n\t};\n}\n\nexport function readSubagentSettings(): SubagentSettings | undefined {\n\tpendingSettingsNotice = undefined;\n\tconst { canonicalPath, legacyPath, activePath } = resolveSubagentSettingsPaths();\n\tif (activePath === canonicalPath) {\n\t\tconst canonical = readSettingsFile(canonicalPath);\n\t\tconst notices: string[] = [];\n\t\tif (!canonical) notices.push(`${SUBAGENT_SETTINGS_FILE} is invalid and was ignored.`);\n\t\tif (fs.existsSync(legacyPath)) {\n\t\t\tnotices.push(\n\t\t\t\t`${LEGACY_SETTINGS_FILE} ignored because ${SUBAGENT_SETTINGS_FILE} takes precedence.`,\n\t\t\t);\n\t\t}\n\t\tif (notices.length > 0) pendingSettingsNotice = notices.join(\"\\n\");\n\t\treturn canonical;\n\t}\n\tif (activePath === undefined) return undefined;\n\tconst legacy = readSettingsFile(legacyPath);\n\tif (fs.existsSync(canonicalPath)) {\n\t\tconst canonical = readSettingsFile(canonicalPath);\n\t\tpendingSettingsNotice = [\n\t\t\t...(!canonical ? [`${SUBAGENT_SETTINGS_FILE} is invalid and was ignored.`] : []),\n\t\t\t`${LEGACY_SETTINGS_FILE} ignored because ${SUBAGENT_SETTINGS_FILE} was created concurrently.`,\n\t\t].join(\"\\n\");\n\t\treturn canonical;\n\t}\n\tif (!legacy) {\n\t\tpendingSettingsNotice = `${LEGACY_SETTINGS_FILE} is invalid and was ignored.`;\n\t\treturn undefined;\n\t}\n\tpendingSettingsNotice = `Using legacy ${LEGACY_SETTINGS_FILE}; rename it to ${SUBAGENT_SETTINGS_FILE}. Future saves write ${SUBAGENT_SETTINGS_FILE} without modifying the legacy file.`;\n\treturn legacy;\n}\n\nexport function consumeSubagentSettingsNotice() {\n\tconst notice = pendingSettingsNotice;\n\tpendingSettingsNotice = undefined;\n\treturn notice;\n}\n\nexport function subagentSettingsFilePath(): string {\n\treturn path.join(getAgentDir(), SUBAGENT_SETTINGS_FILE);\n}\n\nfunction inspectSubagentSettingsDocument(): InspectedSubagentSettingsDocument {\n\tconst { canonicalPath, activePath } = resolveSubagentSettingsPaths();\n\tif (activePath === undefined) return { path: canonicalPath };\n\tconst inspected = inspectSubagentSettingsPath(activePath);\n\treturn activePath !== canonicalPath && fs.existsSync(canonicalPath)\n\t\t? inspectSubagentSettingsPath(canonicalPath)\n\t\t: inspected;\n}\n\nfunction inspectSubagentSettingsPath(configPath: string): InspectedSubagentSettingsDocument {\n\tconst fileName = path.basename(configPath);\n\tlet contents: string;\n\ttry {\n\t\tcontents = fs.readFileSync(configPath, \"utf8\");\n\t} catch (error) {\n\t\tconst code = (error as NodeJS.ErrnoException).code;\n\t\treturn {\n\t\t\tpath: configPath,\n\t\t\terror: `${fileName} could not be read${code ? ` (${safeErrorCode(code)})` : \"\"}`,\n\t\t};\n\t}\n\tlet raw: unknown;\n\ttry {\n\t\traw = JSON.parse(contents);\n\t} catch {\n\t\treturn { path: configPath, error: `${fileName} contains malformed JSON` };\n\t}\n\tconst settings = normalizeSubagentSettings(raw);\n\tif (!isPlainObject(raw) || !settings) {\n\t\treturn { path: configPath, error: `${fileName} is not a valid settings object` };\n\t}\n\treturn { path: configPath, raw, settings };\n}\n\nexport function inspectSubagentSettings(): SubagentSettingsSnapshot {\n\treturn buildSubagentSettingsSnapshot(inspectSubagentSettingsDocument());\n}\n\nexport function inspectConsultResourceSettings(): ConsultResourceSettingsSnapshot {\n\treturn buildConsultResourceSettingsSnapshot(inspectSubagentSettingsDocument());\n}\n\nexport function inspectCwdPolicySettings(): CwdPolicySettingsSnapshot {\n\treturn buildCwdPolicySettingsSnapshot(inspectSubagentSettingsDocument());\n}\n\nexport function inspectDelegationWorkflowSettings(): DelegationWorkflowSettingsSnapshot {\n\treturn buildDelegationWorkflowSettingsSnapshot(inspectSubagentSettingsDocument());\n}\n\nexport function inspectCompletionDeliverySettings(): CompletionDeliverySettingsSnapshot {\n\treturn buildCompletionDeliverySettingsSnapshot(inspectSubagentSettingsDocument());\n}\n\nexport function inspectStatefulTransportSettings(): StatefulTransportSettingsSnapshot {\n\treturn buildStatefulTransportSettingsSnapshot(inspectSubagentSettingsDocument());\n}\n\nexport function inspectBlockingParallelLimitSettings(): BlockingParallelLimitSettingsSnapshot {\n\treturn buildBlockingParallelLimitSettingsSnapshot(inspectSubagentSettingsDocument());\n}\n\nexport function inspectStatefulLimitSettings(): StatefulLimitSettingsSnapshot {\n\treturn buildStatefulLimitSettingsSnapshot(\n\t\tinspectSubagentSettingsDocument(),\n\t\tsubagentSettingsFilePath(),\n\t);\n}\n\nexport function pathEntryExists(filePath: string): boolean {\n\ttry {\n\t\tfs.lstatSync(filePath);\n\t\treturn true;\n\t} catch (error) {\n\t\tif ((error as NodeJS.ErrnoException).code === \"ENOENT\") return false;\n\t\tthrow error;\n\t}\n}\n\nfunction readSettingsFile(configPath: string): SubagentSettings | undefined {\n\treturn readSettingsSnapshot(configPath).settings;\n}\n\nexport function readSettingsSnapshot(configPath: string): {\n\tsettings?: SubagentSettings;\n\tcontents?: string;\n} {\n\ttry {\n\t\tconst contents = fs.readFileSync(configPath, \"utf8\");\n\t\treturn { settings: normalizeSubagentSettings(JSON.parse(contents)), contents };\n\t} catch {\n\t\treturn {};\n\t}\n}\n\nfunction safeErrorCode(value: string): string {\n\treturn value.replace(/[^A-Z0-9_-]/giu, \"?\").slice(0, 64);\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/spawn-idempotency.ts"],
4
- "sourcesContent": ["import { createHash } from \"node:crypto\";\nimport type { AgentScope, SubagentThinkingLevel } from \"./agents/types.js\";\nimport type { DelegationContract } from \"./delegation-contract.js\";\nimport type { SubagentResultFormat } from \"./result-contract.js\";\n\nexport const MAX_SPAWN_IDEMPOTENCY_KEY_LENGTH = 256;\n\nexport interface CanonicalSpawnRequest {\n\tagent: string;\n\ttaskName?: string;\n\ttask: string;\n\tcwd: string;\n\tagentScope: AgentScope;\n\tthinkingLevel?: SubagentThinkingLevel;\n\ttimeoutMs?: number;\n\tidleTimeoutMs?: number;\n\tmaxTurns?: number;\n\tmaxToolCalls?: number;\n\tparentId?: string;\n\tcontext?: string;\n\tcontextSourceIds: readonly string[];\n\tworkspaceMode: \"shared\" | \"worktree\";\n\tallowConcurrentWrites: boolean;\n\tcontract?: DelegationContract;\n\tresultFormat: SubagentResultFormat;\n}\n\nexport function hashSpawnRequest(request: CanonicalSpawnRequest): string {\n\treturn createHash(\"sha256\")\n\t\t.update(\n\t\t\tJSON.stringify({\n\t\t\t\tagent: request.agent,\n\t\t\t\t...(request.taskName === undefined ? {} : { taskName: request.taskName }),\n\t\t\t\ttask: request.task,\n\t\t\t\tcwd: request.cwd,\n\t\t\t\tagentScope: request.agentScope,\n\t\t\t\tthinkingLevel: request.thinkingLevel ?? null,\n\t\t\t\t...(request.timeoutMs === undefined ? {} : { timeoutMs: request.timeoutMs }),\n\t\t\t\t...(request.idleTimeoutMs === undefined ? {} : { idleTimeoutMs: request.idleTimeoutMs }),\n\t\t\t\t...(request.maxTurns === undefined ? {} : { maxTurns: request.maxTurns }),\n\t\t\t\t...(request.maxToolCalls === undefined ? {} : { maxToolCalls: request.maxToolCalls }),\n\t\t\t\tparentId: request.parentId ?? null,\n\t\t\t\tcontextHash: request.context\n\t\t\t\t\t? createHash(\"sha256\").update(request.context).digest(\"hex\")\n\t\t\t\t\t: null,\n\t\t\t\tcontextSourceIds: [...request.contextSourceIds],\n\t\t\t\tworkspaceMode: request.workspaceMode,\n\t\t\t\tallowConcurrentWrites: request.allowConcurrentWrites,\n\t\t\t\t...(request.contract === undefined ? {} : { contract: request.contract }),\n\t\t\t\tresultFormat: request.resultFormat,\n\t\t\t}),\n\t\t)\n\t\t.digest(\"hex\");\n}\n\nexport function assertSpawnIdempotencyKey(value: string | undefined): void {\n\tif (value === undefined) return;\n\tif (!value || value.length > MAX_SPAWN_IDEMPOTENCY_KEY_LENGTH) {\n\t\tthrow new Error(\n\t\t\t`subagent_spawn idempotencyKey must contain 1-${MAX_SPAWN_IDEMPOTENCY_KEY_LENGTH} characters`,\n\t\t);\n\t}\n}\n"],
5
- "mappings": ";;;;AAAA,SAAS,kBAAkB;AAKpB,IAAM,mCAAmC;AAsBzC,SAAS,iBAAiB,SAAwC;AACxE,SAAO,WAAW,QAAQ,EACxB;AAAA,IACA,KAAK,UAAU;AAAA,MACd,OAAO,QAAQ;AAAA,MACf,GAAI,QAAQ,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,QAAQ,SAAS;AAAA,MACvE,MAAM,QAAQ;AAAA,MACd,KAAK,QAAQ;AAAA,MACb,YAAY,QAAQ;AAAA,MACpB,eAAe,QAAQ,iBAAiB;AAAA,MACxC,GAAI,QAAQ,cAAc,SAAY,CAAC,IAAI,EAAE,WAAW,QAAQ,UAAU;AAAA,MAC1E,GAAI,QAAQ,kBAAkB,SAAY,CAAC,IAAI,EAAE,eAAe,QAAQ,cAAc;AAAA,MACtF,GAAI,QAAQ,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,QAAQ,SAAS;AAAA,MACvE,GAAI,QAAQ,iBAAiB,SAAY,CAAC,IAAI,EAAE,cAAc,QAAQ,aAAa;AAAA,MACnF,UAAU,QAAQ,YAAY;AAAA,MAC9B,aAAa,QAAQ,UAClB,WAAW,QAAQ,EAAE,OAAO,QAAQ,OAAO,EAAE,OAAO,KAAK,IACzD;AAAA,MACH,kBAAkB,CAAC,GAAG,QAAQ,gBAAgB;AAAA,MAC9C,eAAe,QAAQ;AAAA,MACvB,uBAAuB,QAAQ;AAAA,MAC/B,GAAI,QAAQ,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,QAAQ,SAAS;AAAA,MACvE,cAAc,QAAQ;AAAA,IACvB,CAAC;AAAA,EACF,EACC,OAAO,KAAK;AACf;AAEO,SAAS,0BAA0B,OAAiC;AAC1E,MAAI,UAAU,OAAW;AACzB,MAAI,CAAC,SAAS,MAAM,SAAS,kCAAkC;AAC9D,UAAM,IAAI;AAAA,MACT,gDAAgD,gCAAgC;AAAA,IACjF;AAAA,EACD;AACD;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/execution-ui.ts", "../../src/parallel-limit-ui.ts", "../../src/transport-ui.ts", "../../src/config-ui.ts"],
4
- "sourcesContent": ["import type { ExtensionCommandContext } from \"@earendil-works/pi-coding-agent\";\nimport type { AgentConfig, SubagentThinkingLevel } from \"./agents/types.js\";\nimport { MAX_SUBAGENT_TIMEOUT_MS } from \"./limits.js\";\nimport { safeTerminalLine as safeTerminalText } from \"./safe-text.js\";\nimport { readSubagentSettings, updateAgentSettingsPatch } from \"./settings.js\";\n\nexport function executionAgentPickerScreen(agents: readonly AgentConfig[]) {\n\tconst configured = readSubagentSettings()?.agents ?? {};\n\treturn {\n\t\tkind: \"actions\" as const,\n\t\ttitle: \"Agent Execution Defaults\",\n\t\tlines: [\"Choose an agent to edit its inherited model, thinking, or timeout.\"],\n\t\titems: [\n\t\t\t...agents.map((agent) => {\n\t\t\t\tconst value = configured[agent.name];\n\t\t\t\treturn {\n\t\t\t\t\tid: agent.name,\n\t\t\t\t\tlabel: safeTerminalText(agent.name),\n\t\t\t\t\tdescription: safeTerminalText(\n\t\t\t\t\t\t`${agent.source} \u00B7 model ${value?.model ?? agent.model ?? \"inherited\"} \u00B7 thinking ${value?.thinkingLevel ?? agent.thinkingLevel ?? \"inherited\"} \u00B7 timeout ${value?.timeoutMs ?? agent.timeoutMs ?? \"inherited\"}`,\n\t\t\t\t\t),\n\t\t\t\t\taction: \"pick-execution-agent\" as const,\n\t\t\t\t};\n\t\t\t}),\n\t\t\t{ id: \"back\", label: \"Back\", action: \"back\" as const },\n\t\t],\n\t\thint: \"back\" as const,\n\t};\n}\n\nexport function executionAgentScreen(agent: AgentConfig | undefined) {\n\tif (!agent) {\n\t\treturn {\n\t\t\tkind: \"actions\" as const,\n\t\t\ttitle: \"Agent Execution Defaults\",\n\t\t\tlines: [\"No agent selected.\"],\n\t\t\titems: [{ id: \"back\", label: \"Back\", action: \"back\" as const }],\n\t\t\thint: \"back\" as const,\n\t\t};\n\t}\n\tconst configured = readSubagentSettings()?.agents?.[agent.name];\n\treturn {\n\t\tkind: \"actions\" as const,\n\t\ttitle: `${safeTerminalText(agent.name)} execution`,\n\t\tlines: [\n\t\t\t`Model: ${safeTerminalText(configured?.model ?? agent.model ?? \"inherited\")}`,\n\t\t\t`Thinking: ${configured?.thinkingLevel ?? agent.thinkingLevel ?? \"inherited\"}`,\n\t\t\t`Timeout: ${configured?.timeoutMs ?? agent.timeoutMs ?? \"inherited\"}`,\n\t\t\t\"Explicit tool-call values remain authoritative.\",\n\t\t],\n\t\titems: [\n\t\t\t{ id: \"thinking\", label: \"Thinking level\", to: \"execution-thinking\" as const },\n\t\t\t{ id: \"model\", label: \"Model\", to: \"execution-model\" as const },\n\t\t\t{ id: \"timeout\", label: \"Timeout\", to: \"execution-timeout\" as const },\n\t\t\t{\n\t\t\t\tid: \"reset\",\n\t\t\t\tlabel: \"Reset execution defaults\",\n\t\t\t\tdescription: \"Restore frontmatter or Pi inheritance without changing tools\",\n\t\t\t\taction: \"reset-agent-execution\" as const,\n\t\t\t},\n\t\t\t{ id: \"back\", label: \"Back\", action: \"back\" as const },\n\t\t],\n\t\thint: \"back\" as const,\n\t};\n}\n\nexport function executionThinkingScreen(agent: AgentConfig | undefined) {\n\tconst configured = agent ? readSubagentSettings()?.agents?.[agent.name] : undefined;\n\treturn {\n\t\tkind: \"settings\" as const,\n\t\ttitle: agent ? `${safeTerminalText(agent.name)} thinking` : \"Agent thinking\",\n\t\titems: agent\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"thinking\",\n\t\t\t\t\t\tlabel: \"Default thinking level\",\n\t\t\t\t\t\tdescription: \"Explicit spawn or blocking call values still win.\",\n\t\t\t\t\t\tcurrentValue: configured?.thinkingLevel ?? agent.thinkingLevel ?? \"Inherited\",\n\t\t\t\t\t\tvalues: [\"Inherited\", \"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"],\n\t\t\t\t\t\taction: \"set-agent-thinking\" as const,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t: [],\n\t\thint: \"back\" as const,\n\t};\n}\n\nexport function executionModelScreen(agent: AgentConfig | undefined, ctx: ExtensionCommandContext) {\n\tconst configured = agent ? readSubagentSettings()?.agents?.[agent.name] : undefined;\n\tconst models = ctx.modelRegistry\n\t\t.getAvailable()\n\t\t.map((model) => `${model.provider}/${model.id}`)\n\t\t.sort((left, right) => left.localeCompare(right))\n\t\t.slice(0, 100);\n\treturn {\n\t\tkind: \"actions\" as const,\n\t\ttitle: agent ? `${safeTerminalText(agent.name)} model` : \"Agent model\",\n\t\tlines: [\n\t\t\t`Current: ${safeTerminalText(configured?.model ?? agent?.model ?? \"inherited\")}`,\n\t\t\t\"Choose a session-available model or enter a custom Pi model pattern.\",\n\t\t],\n\t\titems: agent\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"model:__inherited__\",\n\t\t\t\t\t\tlabel: \"Inherited\",\n\t\t\t\t\t\tdescription: \"Use frontmatter or active Pi model resolution\",\n\t\t\t\t\t\taction: \"set-agent-model\" as const,\n\t\t\t\t\t},\n\t\t\t\t\t...models.map((model) => ({\n\t\t\t\t\t\tid: `model:${model}`,\n\t\t\t\t\t\tlabel: safeTerminalText(model),\n\t\t\t\t\t\taction: \"set-agent-model\" as const,\n\t\t\t\t\t})),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"custom\",\n\t\t\t\t\t\tlabel: \"Custom model pattern\",\n\t\t\t\t\t\tdescription: \"Enter provider/model, a model pattern, or an optional :thinking suffix\",\n\t\t\t\t\t\tto: \"execution-model-input\" as const,\n\t\t\t\t\t},\n\t\t\t\t\t{ id: \"back\", label: \"Back\", action: \"back\" as const },\n\t\t\t\t]\n\t\t\t: [],\n\t\thint: \"back\" as const,\n\t};\n}\n\nexport function executionModelInputScreen(agent: AgentConfig | undefined) {\n\tconst configured = agent ? readSubagentSettings()?.agents?.[agent.name] : undefined;\n\treturn {\n\t\tkind: \"input\" as const,\n\t\ttitle: agent ? `${safeTerminalText(agent.name)} model` : \"Agent model\",\n\t\tlines: [\n\t\t\t`Current: ${safeTerminalText(configured?.model ?? agent?.model ?? \"inherited\")}`,\n\t\t\t\"Enter a Pi CLI model pattern, including an optional :thinking suffix.\",\n\t\t\t\"Use Reset execution defaults to restore inheritance.\",\n\t\t],\n\t\tplaceholder: \"provider/model or model pattern\",\n\t\taction: \"set-agent-model\" as const,\n\t\thint: \"back\" as const,\n\t};\n}\n\nexport function executionTimeoutInputScreen(agent: AgentConfig | undefined) {\n\tconst configured = agent ? readSubagentSettings()?.agents?.[agent.name] : undefined;\n\treturn {\n\t\tkind: \"input\" as const,\n\t\ttitle: agent ? `${safeTerminalText(agent.name)} timeout` : \"Agent timeout\",\n\t\tlines: [\n\t\t\t`Current: ${configured?.timeoutMs ?? agent?.timeoutMs ?? \"inherited\"}`,\n\t\t\t`Allowed: 1-${MAX_SUBAGENT_TIMEOUT_MS} milliseconds.`,\n\t\t\t\"Use Reset execution defaults to restore inheritance.\",\n\t\t],\n\t\tplaceholder: \"Timeout in milliseconds\",\n\t\taction: \"set-agent-timeout\" as const,\n\t\thint: \"back\" as const,\n\t};\n}\n\nexport function applyAgentThinking(\n\tagent: AgentConfig | undefined,\n\tvalue: string | undefined,\n\tctx: ExtensionCommandContext,\n) {\n\tif (!agent) return { kind: \"rejected\" as const };\n\tconst thinkingLevel = value === \"Inherited\" ? undefined : (value as SubagentThinkingLevel);\n\tif (\n\t\tthinkingLevel !== undefined &&\n\t\t![\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"].includes(thinkingLevel)\n\t) {\n\t\treturn { kind: \"rejected\" as const };\n\t}\n\treturn saveAgentPatch(agent.name, { thinkingLevel }, ctx, \"thinking level\");\n}\n\nexport function applyAgentModel(\n\tagent: AgentConfig | undefined,\n\tvalue: string | undefined,\n\tctx: ExtensionCommandContext,\n) {\n\tif (!agent) return { kind: \"rejected\" as const };\n\tif (value === undefined) return saveAgentPatch(agent.name, { model: undefined }, ctx, \"model\");\n\tconst model = value.trim();\n\tif (!model || Buffer.byteLength(model, \"utf8\") > 1_024 || hasTerminalControl(model)) {\n\t\tctx.ui.notify(\"Model must contain 1-1024 UTF-8 bytes on one line.\", \"warning\");\n\t\treturn { kind: \"rejected\" as const };\n\t}\n\treturn saveAgentPatch(agent.name, { model }, ctx, \"model\");\n}\n\nexport function applyAgentTimeout(\n\tagent: AgentConfig | undefined,\n\tvalue: string | undefined,\n\tctx: ExtensionCommandContext,\n) {\n\tif (!agent) return { kind: \"rejected\" as const };\n\tconst normalized = value?.trim() ?? \"\";\n\tif (!/^\\d+$/u.test(normalized)) {\n\t\tctx.ui.notify(\"Timeout must be a whole number of milliseconds.\", \"warning\");\n\t\treturn { kind: \"rejected\" as const };\n\t}\n\tconst timeoutMs = Number(normalized);\n\tif (!Number.isSafeInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > MAX_SUBAGENT_TIMEOUT_MS) {\n\t\tctx.ui.notify(`Timeout must be between 1 and ${MAX_SUBAGENT_TIMEOUT_MS}.`, \"warning\");\n\t\treturn { kind: \"rejected\" as const };\n\t}\n\treturn saveAgentPatch(agent.name, { timeoutMs }, ctx, \"timeout\");\n}\n\nexport function resetAgentExecution(agent: AgentConfig | undefined, ctx: ExtensionCommandContext) {\n\tif (!agent) return { kind: \"rejected\" as const };\n\treturn saveAgentPatch(\n\t\tagent.name,\n\t\t{ model: undefined, thinkingLevel: undefined, timeoutMs: undefined },\n\t\tctx,\n\t\t\"execution defaults\",\n\t);\n}\n\nfunction saveAgentPatch(\n\tname: string,\n\tpatch: Parameters<typeof updateAgentSettingsPatch>[0][string],\n\tctx: ExtensionCommandContext,\n\tlabel: string,\n) {\n\ttry {\n\t\tupdateAgentSettingsPatch({ [name]: patch });\n\t\tctx.ui.notify(`${safeTerminalText(name)} ${label} saved.`, \"info\");\n\t\treturn { kind: \"back\" as const };\n\t} catch (error) {\n\t\tctx.ui.notify(\n\t\t\t`${safeTerminalText(name)} ${label} was not saved: ${formatError(error)}`,\n\t\t\t\"error\",\n\t\t);\n\t\treturn { kind: \"rejected\" as const };\n\t}\n}\n\nfunction hasTerminalControl(value: string): boolean {\n\treturn [...value].some((character) => {\n\t\tconst code = character.codePointAt(0) ?? 0;\n\t\treturn code <= 0x1f || (code >= 0x7f && code <= 0x9f);\n\t});\n}\n\nfunction formatError(error: unknown): string {\n\treturn safeTerminalText(error instanceof Error ? error.message : String(error));\n}\n", "import type { ExtensionCommandContext } from \"@earendil-works/pi-coding-agent\";\nimport { MAX_BLOCKING_PARALLEL_CONCURRENCY, MAX_CONFIGURABLE_PARALLEL_TASKS } from \"./limits.js\";\nimport {\n\tinspectBlockingParallelLimitSettings,\n\tupdateBlockingMaxParallelTasksSetting,\n} from \"./settings.js\";\n\nexport interface BlockingParallelLimitRuntime {\n\tgetMaxParallelTasks(): number;\n\tsetMaxParallelTasks(value: number): void;\n}\n\nexport function blockingParallelLimitScreen(runtime: BlockingParallelLimitRuntime) {\n\tconst limit = inspectBlockingParallelLimitSettings();\n\treturn {\n\t\tkind: \"input\" as const,\n\t\ttitle: \"Maximum Parallel Workers\",\n\t\tlines: [\n\t\t\t`Current: ${runtime.getMaxParallelTasks()} worker tasks per blocking call`,\n\t\t\t`Allowed: 1-${MAX_CONFIGURABLE_PARALLEL_TASKS}`,\n\t\t\t`Parallel execution still starts at most ${MAX_BLOCKING_PARALLEL_CONCURRENCY} workers at once.`,\n\t\t\tsafeTerminalText(limit.path),\n\t\t],\n\t\tplaceholder: \"Enter a whole number\",\n\t\taction: \"set-parallel-limit\" as const,\n\t\thint: \"back\" as const,\n\t};\n}\n\nexport function applyBlockingParallelLimitSetting(\n\tvalue: string | undefined,\n\tctx: ExtensionCommandContext,\n\truntime: BlockingParallelLimitRuntime,\n) {\n\tconst normalized = value?.trim() ?? \"\";\n\tif (!/^\\d+$/u.test(normalized)) {\n\t\tnotifyValidationError(ctx);\n\t\treturn { kind: \"rejected\" as const };\n\t}\n\tconst next = Number(normalized);\n\tif (!Number.isSafeInteger(next) || next < 1 || next > MAX_CONFIGURABLE_PARALLEL_TASKS) {\n\t\tnotifyValidationError(ctx);\n\t\treturn { kind: \"rejected\" as const };\n\t}\n\tconst configured = inspectBlockingParallelLimitSettings();\n\tif (configured.error) {\n\t\tctx.ui.notify(\n\t\t\t`Subagent settings cannot be edited: ${safeTerminalText(configured.error)}`,\n\t\t\t\"error\",\n\t\t);\n\t\treturn { kind: \"rejected\" as const };\n\t}\n\tconst previousRuntime = runtime.getMaxParallelTasks();\n\tconst runtimeChanged = next !== previousRuntime;\n\tconst settingsChanged = next !== configured.value;\n\tif (!runtimeChanged && !settingsChanged) return { kind: \"back\" as const };\n\n\tif (runtimeChanged) {\n\t\ttry {\n\t\t\truntime.setMaxParallelTasks(next);\n\t\t} catch (error) {\n\t\t\tctx.ui.notify(\n\t\t\t\t`Parallel-worker limit was not applied; user settings are unchanged: ${formatError(error)}`,\n\t\t\t\t\"error\",\n\t\t\t);\n\t\t\treturn { kind: \"rejected\" as const };\n\t\t}\n\t}\n\tif (settingsChanged) {\n\t\ttry {\n\t\t\tupdateBlockingMaxParallelTasksSetting(next);\n\t\t} catch (saveError) {\n\t\t\tif (runtimeChanged) {\n\t\t\t\ttry {\n\t\t\t\t\truntime.setMaxParallelTasks(previousRuntime);\n\t\t\t\t} catch (rollbackError) {\n\t\t\t\t\tctx.ui.notify(\n\t\t\t\t\t\t`Subagent settings were not saved, and the runtime rollback failed: ${formatError(new AggregateError([saveError, rollbackError]))}`,\n\t\t\t\t\t\t\"error\",\n\t\t\t\t\t);\n\t\t\t\t\treturn { kind: \"rejected\" as const };\n\t\t\t\t}\n\t\t\t}\n\t\t\tctx.ui.notify(\n\t\t\t\t\"Subagent settings were not saved; the previous runtime limit was restored.\",\n\t\t\t\t\"error\",\n\t\t\t);\n\t\t\treturn { kind: \"rejected\" as const };\n\t\t}\n\t}\n\tctx.ui.notify(\n\t\t`${settingsChanged ? \"Saved and \" : \"\"}applied: maximum ${next} parallel workers per blocking call.`,\n\t\t\"info\",\n\t);\n\treturn { kind: \"back\" as const };\n}\n\nfunction notifyValidationError(ctx: ExtensionCommandContext): void {\n\tctx.ui.notify(\n\t\t`Maximum parallel workers must be a whole number from 1 to ${MAX_CONFIGURABLE_PARALLEL_TASKS}.`,\n\t\t\"warning\",\n\t);\n}\n\nfunction safeTerminalText(value: string): string {\n\t// biome-ignore lint/suspicious/noControlCharactersInRegex: Escape untrusted terminal controls.\n\treturn value.replace(/[\\u0000-\\u001f\\u007f-\\u009f]/gu, \"?\");\n}\n\nfunction formatError(error: unknown): string {\n\treturn safeTerminalText(error instanceof Error ? error.message : String(error));\n}\n", "import type { ExtensionCommandContext } from \"@earendil-works/pi-coding-agent\";\nimport type { SubagentTransportKind } from \"./agents/types.js\";\nimport { safeTerminalLine as safeTerminalText } from \"./safe-text.js\";\nimport { inspectStatefulTransportSettings, updateStatefulTransportSetting } from \"./settings.js\";\nimport type { StatefulSubagentRuntimeStatus } from \"./stateful.js\";\n\nconst TRANSPORT_OPTIONS: Array<{\n\tvalue: SubagentTransportKind;\n\tlabel: string;\n\tdescription: string;\n}> = [\n\t{\n\t\tvalue: \"subprocess\",\n\t\tlabel: \"Fresh subprocess\",\n\t\tdescription: \"Compatibility path with a fresh isolated Pi process for every turn.\",\n\t},\n\t{\n\t\tvalue: \"in-process\",\n\t\tlabel: \"In process\",\n\t\tdescription:\n\t\t\t\"Lowest follow-up overhead for built-in tools, with shared memory and crash boundary.\",\n\t},\n\t{\n\t\tvalue: \"rpc\",\n\t\tlabel: \"Persistent RPC process\",\n\t\tdescription: \"Retain native history in one isolated Pi process per active retained agent.\",\n\t},\n\t{\n\t\tvalue: \"auto\",\n\t\tlabel: \"Automatic\",\n\t\tdescription:\n\t\t\t\"Read-only built-ins use in-process, write-capable built-ins use RPC, and custom tools use subprocess.\",\n\t},\n];\n\nexport interface TransportUiRuntime {\n\tgetRuntimeStatus(): StatefulSubagentRuntimeStatus;\n}\n\nexport function transportSettingsScreen(runtime: TransportUiRuntime) {\n\tconst configured = inspectStatefulTransportSettings();\n\tconst current = runtime.getRuntimeStatus();\n\treturn {\n\t\tkind: \"actions\" as const,\n\t\ttitle: configured.error ? \"Detached Transport \u00B7 Read only\" : \"Detached Transport\",\n\t\tlines: [\n\t\t\t`Current session: ${transportLabel(current.transport)}`,\n\t\t\t`Configured after reload: ${transportLabel(configured.value)} (${configured.source})`,\n\t\t\t\"Transport isolation is not a filesystem or network sandbox.\",\n\t\t\t\"RPC v1 disables child extensions and supports built-in Pi tools only.\",\n\t\t\t...(configured.error\n\t\t\t\t? [\n\t\t\t\t\t\t`Settings cannot be edited: ${safeTerminalText(configured.error)}`,\n\t\t\t\t\t\t`Repair ${safeTerminalText(configured.path)} and retry.`,\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t],\n\t\titems: [\n\t\t\t...(configured.error\n\t\t\t\t? []\n\t\t\t\t: TRANSPORT_OPTIONS.map((option) => ({\n\t\t\t\t\t\tid: option.value,\n\t\t\t\t\t\tlabel: option.label,\n\t\t\t\t\t\tdescription: option.description,\n\t\t\t\t\t\taction: \"set-transport\" as const,\n\t\t\t\t\t}))),\n\t\t\t{ id: \"back\", label: \"Back\", action: \"back\" as const },\n\t\t],\n\t\thint: \"back\" as const,\n\t};\n}\n\nexport async function applyTransportSetting(\n\tvalue: string,\n\tctx: ExtensionCommandContext,\n\truntime: TransportUiRuntime,\n\tsignal: AbortSignal,\n\tisCurrent: () => boolean,\n) {\n\tif (!isTransport(value)) return { kind: \"rejected\" as const };\n\tconst before = inspectStatefulTransportSettings();\n\tif (before.error) return { kind: \"rejected\" as const };\n\tif (value === before.value) return { kind: \"stay\" as const };\n\tconst status = runtime.getRuntimeStatus();\n\tif (status.retainedAgents > 0) {\n\t\tctx.ui.notify(\n\t\t\t`Cannot change transport while ${status.retainedAgents} detached agent${status.retainedAgents === 1 ? \" is\" : \"s are\"} retained. Clear Current agents first.`,\n\t\t\t\"warning\",\n\t\t);\n\t\treturn { kind: \"rejected\" as const };\n\t}\n\tconst option = TRANSPORT_OPTIONS.find((candidate) => candidate.value === value);\n\tconst confirmed = await ctx.ui.confirm(\n\t\t`Use ${transportLabel(value)} after reload?`,\n\t\t`${option?.description ?? \"\"}\\n\\nThis saves the setting but does not reload Pi automatically.`,\n\t\t{ signal },\n\t);\n\tif (signal.aborted || !isCurrent()) return { kind: \"close\" as const };\n\tif (!confirmed) return { kind: \"rejected\" as const };\n\tconst after = inspectStatefulTransportSettings();\n\tif (after.error || after.value !== before.value || after.source !== before.source) {\n\t\tctx.ui.notify(\"Transport settings changed while confirming; review again.\", \"warning\");\n\t\treturn { kind: \"rejected\" as const };\n\t}\n\tif (runtime.getRuntimeStatus().retainedAgents > 0) {\n\t\tctx.ui.notify(\n\t\t\t\"Detached agents appeared while confirming; clear them before changing transport.\",\n\t\t\t\"warning\",\n\t\t);\n\t\treturn { kind: \"rejected\" as const };\n\t}\n\ttry {\n\t\tupdateStatefulTransportSetting(value);\n\t\tctx.ui.notify(`Saved ${transportLabel(value)}. Run /reload when ready.`, \"info\");\n\t\treturn { kind: \"stay\" as const };\n\t} catch (error) {\n\t\tctx.ui.notify(\n\t\t\t`Transport was not saved; the previous setting remains: ${safeTerminalText(error instanceof Error ? error.message : String(error))}`,\n\t\t\t\"error\",\n\t\t);\n\t\treturn { kind: \"rejected\" as const };\n\t}\n}\n\nexport function responsivenessSetupScreen(runtime: TransportUiRuntime) {\n\tconst current = runtime.getRuntimeStatus();\n\tconst configured = inspectStatefulTransportSettings();\n\treturn {\n\t\tkind: \"actions\" as const,\n\t\ttitle: \"Responsiveness Setup\",\n\t\tlines: [\n\t\t\t`Current transport: ${transportLabel(current.transport)}`,\n\t\t\t`Configured transport: ${transportLabel(configured.value)}`,\n\t\t\t\"Transport, completion delivery, and thinking defaults are separate explicit choices.\",\n\t\t\t\"Use Automatic to reduce retained follow-up startup while keeping custom-tool compatibility.\",\n\t\t],\n\t\titems: [\n\t\t\t{\n\t\t\t\tid: \"auto\",\n\t\t\t\tlabel: \"Preview Automatic transport\",\n\t\t\t\tdescription: \"Choose a deterministic transport before each retained agent starts\",\n\t\t\t\taction: \"set-transport\" as const,\n\t\t\t},\n\t\t\t{ id: \"transport\", label: \"Compare all transports\", to: \"transport\" as const },\n\t\t\t{\n\t\t\t\tid: \"completion\",\n\t\t\t\tlabel: \"Completion delivery\",\n\t\t\t\tdescription: \"Choose separately whether an idle root resumes for synthesis\",\n\t\t\t\tto: \"settings\" as const,\n\t\t\t},\n\t\t\t{ id: \"back\", label: \"Back\", action: \"back\" as const },\n\t\t],\n\t\thint: \"back\" as const,\n\t};\n}\n\nexport function transportLabel(value: SubagentTransportKind): string {\n\treturn TRANSPORT_OPTIONS.find((option) => option.value === value)?.label ?? value;\n}\n\nfunction isTransport(value: string): value is SubagentTransportKind {\n\treturn [\"subprocess\", \"in-process\", \"rpc\", \"auto\"].includes(value);\n}\n", "import type { ExtensionAPI, ExtensionCommandContext } from \"@earendil-works/pi-coding-agent\";\nimport { discoverAgents } from \"./agents/discovery.js\";\nimport type {\n\tCompletionDelivery,\n\tConsultationCwdPolicy,\n\tConsultResourcePolicy,\n\tDelegationCwdPolicy,\n} from \"./agents/types.js\";\nimport {\n\tcompletionLabel,\n\tconsultationCwdLabel,\n\tconsultResourceLabel,\n\tcurrentWorkflow,\n\tdelegationCwdLabel,\n\tformatManagerSummary,\n\thelpLines,\n\tshowSubagentHelp,\n\tshowSubagentStatus,\n\tstatusLines,\n} from \"./config-status.js\";\nimport {\n\tapplyAgentModel,\n\tapplyAgentThinking,\n\tapplyAgentTimeout,\n\texecutionAgentPickerScreen,\n\texecutionAgentScreen,\n\texecutionModelInputScreen,\n\texecutionModelScreen,\n\texecutionThinkingScreen,\n\texecutionTimeoutInputScreen,\n\tresetAgentExecution,\n} from \"./execution-ui.js\";\nimport {\n\tapplyBlockingParallelLimitSetting,\n\tblockingParallelLimitScreen,\n} from \"./parallel-limit-ui.js\";\nimport type { ManagedAgent } from \"./registry.js\";\nimport { safeTerminalLine as safeTerminalText } from \"./safe-text.js\";\nimport type { DelegationWorkflow } from \"./settings/inspection.js\";\nimport {\n\thasOwn,\n\tinspectBlockingParallelLimitSettings,\n\tinspectCompletionDeliverySettings,\n\tinspectConsultResourceSettings,\n\tinspectCwdPolicySettings,\n\tinspectDelegationWorkflowSettings,\n\treadSubagentSettings,\n\tsameToolSet,\n\tuniqueToolNames,\n\tupdateAgentToolsSetting,\n\tupdateCompletionDeliverySetting,\n\tupdateConsultResourceSetting,\n\tupdateCwdPolicySetting,\n\tupdateDelegationWorkflowSetting,\n} from \"./settings.js\";\nimport { formatStatefulAgentLine, type StatefulSubagentRuntimeStatus } from \"./stateful.js\";\nimport {\n\tapplyStatefulLimitSetting,\n\tformatDetachedLimitSummary,\n\tformatEmptyStatefulRuntime,\n\tstatefulLimitInputScreen,\n\tstatefulLimitListScreen,\n} from \"./stateful-limit-ui.js\";\nimport { isStatefulLimitField, type StatefulLimitField } from \"./stateful-limits.js\";\nimport {\n\tapplyTransportSetting,\n\tresponsivenessSetupScreen,\n\ttransportSettingsScreen,\n} from \"./transport-ui.js\";\nimport { showWorkflowPreview, workflowLabel } from \"./workflow-ui.js\";\n\nconst SUBCOMMANDS = [\n\t{ value: \"settings\", label: \"settings\", description: \"Configure subagent user settings\" },\n\t{ value: \"status\", label: \"status\", description: \"Show effective subagent settings\" },\n\t{ value: \"help\", label: \"help\", description: \"Show subagent settings help\" },\n];\nconst TOOL_VIEWPORT_SIZE = 10;\n\nexport interface SubagentSettingsRuntime {\n\tgetBlockingEnabled(): boolean;\n\tgetMaxParallelTasks(): number;\n\tgetCompletionDelivery(): CompletionDelivery;\n\tgetConsultResourcePolicy(): ConsultResourcePolicy;\n\tgetConsultationCwdPolicy(): ConsultationCwdPolicy;\n\tgetDelegationCwdPolicy(): DelegationCwdPolicy;\n\tsetMaxParallelTasks(value: number): void;\n\tsetCompletionDelivery(value: CompletionDelivery): void;\n\tsetConsultResourcePolicy(value: ConsultResourcePolicy): void;\n\tsetConsultationCwdPolicy(value: ConsultationCwdPolicy): void;\n\tsetDelegationCwdPolicy(value: DelegationCwdPolicy): void;\n\tgetRuntimeStatus(): StatefulSubagentRuntimeStatus;\n\tlistAgents(includeClosed?: boolean): ManagedAgent[];\n\tclearAgents(): Promise<number>;\n}\n\nexport interface SubagentMenuOwner {\n\tgeneration: number;\n\tcontroller: AbortController;\n}\n\ninterface ToolDraft {\n\tagentName: string;\n\tagentSource: string;\n\tallTools: string[];\n\tdefaultTools?: string[];\n\torderedTools: string[];\n\tselected: Set<string>;\n}\n\nexport function registerSubagentConfigLifecycle(pi: ExtensionAPI): SubagentMenuOwner {\n\tconst owner: SubagentMenuOwner = { generation: 0, controller: new AbortController() };\n\tpi.on(\"session_start\", () => {\n\t\towner.generation += 1;\n\t\towner.controller.abort(new DOMException(\"Subagent session replaced\", \"AbortError\"));\n\t\towner.controller = new AbortController();\n\t});\n\tpi.on(\"session_shutdown\", () => {\n\t\towner.generation += 1;\n\t\towner.controller.abort(new DOMException(\"Subagent session shut down\", \"AbortError\"));\n\t});\n\treturn owner;\n}\n\nexport function registerSubagentConfigCommand(\n\tpi: ExtensionAPI,\n\truntime: SubagentSettingsRuntime,\n\towner = registerSubagentConfigLifecycle(pi),\n) {\n\tregisterSubagentPrimaryCommand(pi, runtime, owner);\n}\n\nfunction registerSubagentPrimaryCommand(\n\tpi: ExtensionAPI,\n\truntime: SubagentSettingsRuntime,\n\towner: SubagentMenuOwner,\n) {\n\tpi.registerCommand(\"subagents\", {\n\t\tdescription: \"Manage current-session subagents and user settings\",\n\t\tgetArgumentCompletions(prefix: string) {\n\t\t\tconst normalized = prefix.trim().toLowerCase();\n\t\t\tconst matches = SUBCOMMANDS.filter((item) => item.value.startsWith(normalized));\n\t\t\treturn matches.length > 0 ? matches : null;\n\t\t},\n\t\tasync handler(args, ctx) {\n\t\t\tconst subcommand = args.trim().toLowerCase();\n\t\t\tif (!subcommand) {\n\t\t\t\tawait showSubagentManager(pi, ctx, runtime, owner);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tswitch (subcommand) {\n\t\t\t\tcase \"settings\":\n\t\t\t\t\tawait showSubagentSettings(ctx, runtime, owner);\n\t\t\t\t\treturn;\n\t\t\t\tcase \"status\":\n\t\t\t\t\tshowSubagentStatus(ctx, runtime);\n\t\t\t\t\treturn;\n\t\t\t\tcase \"help\":\n\t\t\t\t\tshowSubagentHelp(ctx, runtime);\n\t\t\t\t\treturn;\n\t\t\t\tdefault:\n\t\t\t\t\tif (ctx.mode === \"tui\" || ctx.hasUI) {\n\t\t\t\t\t\tctx.ui.notify(`Unknown /subagents subcommand: ${subcommand}`, \"warning\");\n\t\t\t\t\t}\n\t\t\t}\n\t\t},\n\t});\n}\n\nexport async function showSubagentManager(\n\tpi: ExtensionAPI,\n\tctx: ExtensionCommandContext,\n\truntime: SubagentSettingsRuntime,\n\towner: SubagentMenuOwner,\n) {\n\tif (ctx.mode !== \"tui\") {\n\t\tshowSubagentStatus(ctx, runtime);\n\t\treturn;\n\t}\n\tconst generation = owner.generation;\n\tconst isCurrent = () => generation === owner.generation && !owner.controller.signal.aborted;\n\tconst { defineMenu, runMenu } = await import(\"@narumitw/pi-tui-kit\");\n\tif (!isCurrent()) return;\n\tlet availableAgents = discoverAgents(ctx.cwd, \"user\", readSubagentSettings() ?? {}).agents;\n\tlet toolDraft: ToolDraft | undefined;\n\tlet selectedExecutionAgent: (typeof availableAgents)[number] | undefined;\n\tlet selectedStatefulLimit: StatefulLimitField = \"maxAgents\";\n\ttype Screen =\n\t\t| \"main\"\n\t\t| \"workflow\"\n\t\t| \"agents\"\n\t\t| \"settings\"\n\t\t| \"advanced\"\n\t\t| \"performance\"\n\t\t| \"responsiveness\"\n\t\t| \"transport\"\n\t\t| \"execution-agent-picker\"\n\t\t| \"execution-agent\"\n\t\t| \"execution-thinking\"\n\t\t| \"execution-model\"\n\t\t| \"execution-model-input\"\n\t\t| \"execution-timeout\"\n\t\t| \"parallel-limit\"\n\t\t| \"stateful-limits\"\n\t\t| \"stateful-limit-input\"\n\t\t| \"status\"\n\t\t| \"help\"\n\t\t| \"agent-picker\"\n\t\t| \"tool-draft\";\n\ttype Action =\n\t\t| \"set-workflow\"\n\t\t| \"clear-agents\"\n\t\t| \"set-transport\"\n\t\t| \"pick-execution-agent\"\n\t\t| \"set-agent-thinking\"\n\t\t| \"set-agent-model\"\n\t\t| \"set-agent-timeout\"\n\t\t| \"reset-agent-execution\"\n\t\t| \"set-parallel-limit\"\n\t\t| \"pick-stateful-limit\"\n\t\t| \"set-stateful-limit\"\n\t\t| \"set-completion\"\n\t\t| \"set-consult-resources\"\n\t\t| \"set-consultation-cwd\"\n\t\t| \"set-delegation-cwd\"\n\t\t| \"load-agent-picker\"\n\t\t| \"pick-agent\"\n\t\t| \"toggle-tool\"\n\t\t| \"save-tools\"\n\t\t| \"discard-tools\"\n\t\t| \"back\";\n\tconst menu = defineMenu<undefined, Screen, Action, ExtensionCommandContext>({\n\t\tstart: \"main\",\n\t\tscreens: {\n\t\t\tmain: () => {\n\t\t\t\tconst status = runtime.getRuntimeStatus();\n\t\t\t\tconst workflow = inspectDelegationWorkflowSettings();\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"actions\",\n\t\t\t\t\ttitle: \"Subagents\",\n\t\t\t\t\tlines: formatManagerSummary(runtime, status, workflow).split(\"\\n\"),\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"workflow\",\n\t\t\t\t\t\t\tlabel: \"Change delegation\",\n\t\t\t\t\t\t\tdescription: \"Choose async only (recommended) or a compatibility workflow\",\n\t\t\t\t\t\t\tto: \"workflow\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"agents\",\n\t\t\t\t\t\t\tlabel: \"Current agents\",\n\t\t\t\t\t\t\tdescription: `${status.activeAgents} active \u00B7 ${status.retainedAgents} retained`,\n\t\t\t\t\t\t\tto: \"agents\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"settings\",\n\t\t\t\t\t\t\tlabel: \"Settings\",\n\t\t\t\t\t\t\tdescription: \"Configure targets, trusted resources, and async completion\",\n\t\t\t\t\t\t\tto: \"settings\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"advanced\",\n\t\t\t\t\t\t\tlabel: \"Advanced settings\",\n\t\t\t\t\t\t\tdescription: \"Agent permissions, parallel limit, runtime details, and settings path\",\n\t\t\t\t\t\t\tto: \"advanced\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ id: \"help\", label: \"Help\", to: \"help\" },\n\t\t\t\t\t],\n\t\t\t\t\thint: \"close\",\n\t\t\t\t};\n\t\t\t},\n\t\t\tworkflow: () => {\n\t\t\t\tconst snapshot = inspectDelegationWorkflowSettings();\n\t\t\t\tconst active = currentWorkflow(runtime, runtime.getRuntimeStatus());\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"actions\",\n\t\t\t\t\ttitle: \"Change Delegation\",\n\t\t\t\t\tlines: [\n\t\t\t\t\t\t`Current: ${workflowLabel(active)}`,\n\t\t\t\t\t\t\"Recommended: Async only keeps the main agent responsive and omits blocking delegation and consultation.\",\n\t\t\t\t\t\t\"Final-answer-dependent detached work needs automatic resume.\",\n\t\t\t\t\t\t...(snapshot.value !== active\n\t\t\t\t\t\t\t? [`Configured after reload: ${workflowLabel(snapshot.value)}`]\n\t\t\t\t\t\t\t: []),\n\t\t\t\t\t\t...(snapshot.error\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t`Settings cannot be edited: ${safeTerminalText(snapshot.error)}`,\n\t\t\t\t\t\t\t\t\t`Repair ${safeTerminalText(snapshot.path)} and retry.`,\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t: []),\n\t\t\t\t\t],\n\t\t\t\t\titems: snapshot.error\n\t\t\t\t\t\t? []\n\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: \"async-only\",\n\t\t\t\t\t\t\t\t\tlabel: \"Async only \u00B7 Recommended\",\n\t\t\t\t\t\t\t\t\tdescription: \"Detached lifecycle plus inspection; omit blocking and consultation\",\n\t\t\t\t\t\t\t\t\taction: \"set-workflow\" as const,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: \"all\",\n\t\t\t\t\t\t\t\t\tlabel: \"All delegation methods\",\n\t\t\t\t\t\t\t\t\tdescription: \"Compatibility: async, blocking, inspection, and consultation\",\n\t\t\t\t\t\t\t\t\taction: \"set-workflow\" as const,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tid: \"blocking-only\",\n\t\t\t\t\t\t\t\t\tlabel: \"Blocking only\",\n\t\t\t\t\t\t\t\t\tdescription: \"Compatibility: blocking and consultation without async lifecycle\",\n\t\t\t\t\t\t\t\t\taction: \"set-workflow\" as const,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\thint: \"back\",\n\t\t\t\t};\n\t\t\t},\n\t\t\tagents: () => {\n\t\t\t\tconst agents = runtime.listAgents();\n\t\t\t\tconst status = runtime.getRuntimeStatus();\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"actions\",\n\t\t\t\t\ttitle: \"Current-session Subagents\",\n\t\t\t\t\tlines: agents.length\n\t\t\t\t\t\t? agents.map(formatStatefulAgentLine)\n\t\t\t\t\t\t: [formatEmptyStatefulRuntime(status)],\n\t\t\t\t\titems: [\n\t\t\t\t\t\t...(agents.length > 0\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"clear\",\n\t\t\t\t\t\t\t\t\t\tlabel: \"Clear current-session agents\",\n\t\t\t\t\t\t\t\t\t\tdescription: \"Close and delete retained agents for this session\",\n\t\t\t\t\t\t\t\t\t\taction: \"clear-agents\" as const,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t: []),\n\t\t\t\t\t\t{ id: \"back\", label: \"Back\", action: \"back\" },\n\t\t\t\t\t],\n\t\t\t\t\thint: \"back\",\n\t\t\t\t};\n\t\t\t},\n\t\t\tsettings: () => subagentSettingsScreen(runtime),\n\t\t\tadvanced: () => {\n\t\t\t\tconst limit = inspectBlockingParallelLimitSettings();\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"actions\",\n\t\t\t\t\ttitle: \"Advanced Subagent Settings\",\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"agent-tools\",\n\t\t\t\t\t\t\tlabel: \"Agent tool permissions\",\n\t\t\t\t\t\t\tdescription: \"Customize persistent per-agent tool allow-lists\",\n\t\t\t\t\t\t\taction: \"load-agent-picker\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"status\",\n\t\t\t\t\t\t\tlabel: \"Runtime details\",\n\t\t\t\t\t\t\tdescription: \"Show transport, configured source, and settings path\",\n\t\t\t\t\t\t\tto: \"status\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"parallel-limit\",\n\t\t\t\t\t\t\tlabel: \"Maximum parallel workers\",\n\t\t\t\t\t\t\tdescription: `Current: ${runtime.getMaxParallelTasks()} per blocking call`,\n\t\t\t\t\t\t\tto: \"parallel-limit\",\n\t\t\t\t\t\t\tdisabled: limit.error !== undefined,\n\t\t\t\t\t\t\tdisabledReason: limit.error\n\t\t\t\t\t\t\t\t? `Repair ${safeTerminalText(limit.path)} before editing this setting`\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"stateful-limits\",\n\t\t\t\t\t\t\tlabel: \"Detached agent limits\",\n\t\t\t\t\t\t\tdescription: formatDetachedLimitSummary(runtime.getRuntimeStatus()),\n\t\t\t\t\t\t\tto: \"stateful-limits\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"performance\",\n\t\t\t\t\t\t\tlabel: \"Performance and execution\",\n\t\t\t\t\t\t\tdescription: \"Transport, responsiveness, and agent defaults\",\n\t\t\t\t\t\t\tto: \"performance\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ id: \"back\", label: \"Back\", action: \"back\" },\n\t\t\t\t\t],\n\t\t\t\t\thint: \"back\",\n\t\t\t\t};\n\t\t\t},\n\t\t\tperformance: () => ({\n\t\t\t\tkind: \"actions\",\n\t\t\t\ttitle: \"Performance and Execution\",\n\t\t\t\titems: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"responsiveness\",\n\t\t\t\t\t\tlabel: \"Responsiveness setup\",\n\t\t\t\t\t\tdescription: \"Preview automatic retained transport and completion guidance\",\n\t\t\t\t\t\tto: \"responsiveness\",\n\t\t\t\t\t},\n\t\t\t\t\t{ id: \"transport\", label: \"Detached transport\", to: \"transport\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"agents\",\n\t\t\t\t\t\tlabel: \"Agent execution defaults\",\n\t\t\t\t\t\tdescription: \"Model, thinking level, and timeout\",\n\t\t\t\t\t\tto: \"execution-agent-picker\",\n\t\t\t\t\t},\n\t\t\t\t\t{ id: \"back\", label: \"Back\", action: \"back\" },\n\t\t\t\t],\n\t\t\t\thint: \"back\",\n\t\t\t}),\n\t\t\tresponsiveness: () => responsivenessSetupScreen(runtime),\n\t\t\ttransport: () => transportSettingsScreen(runtime),\n\t\t\t\"execution-agent-picker\": () => executionAgentPickerScreen(availableAgents),\n\t\t\t\"execution-agent\": () => executionAgentScreen(selectedExecutionAgent),\n\t\t\t\"execution-thinking\": () => executionThinkingScreen(selectedExecutionAgent),\n\t\t\t\"execution-model\": () => executionModelScreen(selectedExecutionAgent, ctx),\n\t\t\t\"execution-model-input\": () => executionModelInputScreen(selectedExecutionAgent),\n\t\t\t\"execution-timeout\": () => executionTimeoutInputScreen(selectedExecutionAgent),\n\t\t\t\"parallel-limit\": () => blockingParallelLimitScreen(runtime),\n\t\t\t\"stateful-limits\": () => statefulLimitListScreen(runtime),\n\t\t\t\"stateful-limit-input\": () => statefulLimitInputScreen(selectedStatefulLimit, runtime),\n\t\t\tstatus: () => ({\n\t\t\t\tkind: \"detail\",\n\t\t\t\ttitle: \"Subagent runtime details\",\n\t\t\t\tlines: statusLines(runtime),\n\t\t\t\thint: \"back\",\n\t\t\t}),\n\t\t\thelp: () => ({\n\t\t\t\tkind: \"detail\",\n\t\t\t\ttitle: \"Subagents help\",\n\t\t\t\tlines: helpLines(runtime),\n\t\t\t\thint: \"back\",\n\t\t\t}),\n\t\t\t\"agent-picker\": () => {\n\t\t\t\tconst settings = readSubagentSettings() ?? {};\n\t\t\t\tconst configured = settings.agents ?? {};\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"actions\",\n\t\t\t\t\ttitle: \"Subagent Tool Configuration\",\n\t\t\t\t\tlines: [\"Select an agent to configure its allowed tools.\"],\n\t\t\t\t\titems: availableAgents.map((agent) => {\n\t\t\t\t\t\tconst override = configured[agent.name];\n\t\t\t\t\t\tconst hasOverride = override ? hasOwn(override, \"tools\") : false;\n\t\t\t\t\t\tconst summary = hasOverride\n\t\t\t\t\t\t\t? override?.tools && override.tools.length > 0\n\t\t\t\t\t\t\t\t? override.tools.join(\", \")\n\t\t\t\t\t\t\t\t: \"none\"\n\t\t\t\t\t\t\t: \"defaults\";\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: agent.name,\n\t\t\t\t\t\t\tlabel: safeTerminalText(agent.name),\n\t\t\t\t\t\t\tdescription: safeTerminalText(`${agent.source} \u00B7 tools: ${summary}`),\n\t\t\t\t\t\t\taction: \"pick-agent\" as const,\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t\thint: \"back\",\n\t\t\t\t};\n\t\t\t},\n\t\t\t\"tool-draft\": () => ({\n\t\t\t\tkind: \"multiSelect\",\n\t\t\t\ttitle: toolDraft ? `${safeTerminalText(toolDraft.agentName)} tools` : \"Agent tools\",\n\t\t\t\tenableSearch: true,\n\t\t\t\tlines: toolDraft\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t`Source: ${safeTerminalText(toolDraft.agentSource)}`,\n\t\t\t\t\t\t\t\"Toggle a draft, then Save changes.\",\n\t\t\t\t\t\t]\n\t\t\t\t\t: [\"No agent selected.\"],\n\t\t\t\tviewportSize: TOOL_VIEWPORT_SIZE,\n\t\t\t\titems:\n\t\t\t\t\ttoolDraft?.orderedTools.map((name) => {\n\t\t\t\t\t\tconst available = toolDraft?.allTools.includes(name) ?? false;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: name,\n\t\t\t\t\t\t\tlabel: safeTerminalText(name),\n\t\t\t\t\t\t\tdescription: available ? \"Available tool\" : \"Configured tool is not currently loaded\",\n\t\t\t\t\t\t\tsearchText: available ? \"available tool\" : \"configured unavailable preserved\",\n\t\t\t\t\t\t\tselected: toolDraft?.selected.has(name) ?? false,\n\t\t\t\t\t\t\tdisabled: !available,\n\t\t\t\t\t\t\tdisabledReason: available\n\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t: \"Unavailable; preserved until explicitly changed in JSON\",\n\t\t\t\t\t\t};\n\t\t\t\t\t}) ?? [],\n\t\t\t\taction: \"toggle-tool\",\n\t\t\t\tactions: [\n\t\t\t\t\t{ id: \"save\", label: \"Save changes\", action: \"save-tools\" },\n\t\t\t\t\t{ id: \"discard\", label: \"Discard draft\", action: \"discard-tools\" },\n\t\t\t\t],\n\t\t\t\thint: \"back\",\n\t\t\t\tdoneLabel: \"Close without saving\",\n\t\t\t}),\n\t\t},\n\t\tactions: {\n\t\t\t\"set-workflow\": async ({ itemId, signal }) => {\n\t\t\t\tif (!isWorkflow(itemId)) return { kind: \"rejected\" };\n\t\t\t\tconst snapshot = inspectDelegationWorkflowSettings();\n\t\t\t\tif (snapshot.error) return { kind: \"rejected\" };\n\t\t\t\tconst active = currentWorkflow(runtime, runtime.getRuntimeStatus());\n\t\t\t\tif (itemId === active && itemId === snapshot.value) {\n\t\t\t\t\tctx.ui.notify(`Delegation already uses ${workflowLabel(itemId)}.`, \"info\");\n\t\t\t\t\treturn { kind: \"stay\" };\n\t\t\t\t}\n\t\t\t\tconst requiresReload = itemId !== active;\n\t\t\t\tif (requiresReload && blockReloadWithRetainedAgents(ctx, runtime)) {\n\t\t\t\t\treturn { kind: \"rejected\" };\n\t\t\t\t}\n\t\t\t\tif (!(await showWorkflowPreview(ctx, active, itemId, requiresReload, signal))) {\n\t\t\t\t\treturn signal.aborted || !isCurrent() ? { kind: \"close\" } : { kind: \"rejected\" };\n\t\t\t\t}\n\t\t\t\tif (signal.aborted || !isCurrent()) return { kind: \"close\" };\n\t\t\t\tif (requiresReload && blockReloadWithRetainedAgents(ctx, runtime)) {\n\t\t\t\t\treturn { kind: \"rejected\" };\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tupdateDelegationWorkflowSetting(itemId);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tctx.ui.notify(\n\t\t\t\t\t\t`Delegation settings were not saved: ${formatError(error)}. The current workflow is unchanged.`,\n\t\t\t\t\t\t\"error\",\n\t\t\t\t\t);\n\t\t\t\t\treturn { kind: \"rejected\" };\n\t\t\t\t}\n\t\t\t\tif (!requiresReload) {\n\t\t\t\t\tctx.ui.notify(\n\t\t\t\t\t\t`Saved ${workflowLabel(itemId)}. The current tool surface already matches.`,\n\t\t\t\t\t\t\"info\",\n\t\t\t\t\t);\n\t\t\t\t\treturn { kind: \"stay\" };\n\t\t\t\t}\n\t\t\t\tctx.ui.notify(\n\t\t\t\t\t`Saved ${workflowLabel(itemId)}. Reloading subagent tools\u2026 If the tool surface does not refresh, run /reload.`,\n\t\t\t\t\t\"info\",\n\t\t\t\t);\n\t\t\t\tawait ctx.reload();\n\t\t\t\treturn { kind: \"close\" };\n\t\t\t},\n\t\t\t\"clear-agents\": async ({ signal }) => {\n\t\t\t\tconst agents = runtime.listAgents();\n\t\t\t\tif (agents.length === 0) return { kind: \"stay\" };\n\t\t\t\tconst confirmed = await ctx.ui.confirm(\n\t\t\t\t\t\"Clear current-session subagents?\",\n\t\t\t\t\t`Close and delete ${agents.length} retained agent${agents.length === 1 ? \"\" : \"s\"}?`,\n\t\t\t\t\t{ signal },\n\t\t\t\t);\n\t\t\t\tif (signal.aborted || !isCurrent()) return { kind: \"close\" };\n\t\t\t\tif (!confirmed) return { kind: \"rejected\" };\n\t\t\t\tif (\n\t\t\t\t\truntime\n\t\t\t\t\t\t.listAgents()\n\t\t\t\t\t\t.map((agent) => agent.id)\n\t\t\t\t\t\t.join(\"\\0\") !== agents.map((agent) => agent.id).join(\"\\0\")\n\t\t\t\t) {\n\t\t\t\t\tctx.ui.notify(\n\t\t\t\t\t\t\"Detached agents changed while confirming; review the list again.\",\n\t\t\t\t\t\t\"warning\",\n\t\t\t\t\t);\n\t\t\t\t\treturn { kind: \"rejected\" };\n\t\t\t\t}\n\t\t\t\tconst cleared = await runtime.clearAgents();\n\t\t\t\tif (signal.aborted || !isCurrent()) return { kind: \"close\" };\n\t\t\t\tctx.ui.notify(\n\t\t\t\t\t`Cleared ${cleared} current-session subagent${cleared === 1 ? \"\" : \"s\"}.`,\n\t\t\t\t\t\"info\",\n\t\t\t\t);\n\t\t\t\treturn { kind: \"stay\" };\n\t\t\t},\n\t\t\t\"set-transport\": async ({ itemId, signal }) =>\n\t\t\t\tapplyTransportSetting(itemId, ctx, runtime, signal, isCurrent),\n\t\t\t\"pick-execution-agent\": async ({ itemId }) => {\n\t\t\t\tselectedExecutionAgent = availableAgents.find((agent) => agent.name === itemId);\n\t\t\t\treturn selectedExecutionAgent\n\t\t\t\t\t? { kind: \"to\", screen: \"execution-agent\" as const }\n\t\t\t\t\t: { kind: \"rejected\" as const };\n\t\t\t},\n\t\t\t\"set-agent-thinking\": async ({ value }) =>\n\t\t\t\tapplyAgentThinking(selectedExecutionAgent, value, ctx),\n\t\t\t\"set-agent-model\": async ({ itemId, value }) => {\n\t\t\t\tconst selected = value ?? (itemId.startsWith(\"model:\") ? itemId.slice(6) : undefined);\n\t\t\t\treturn applyAgentModel(\n\t\t\t\t\tselectedExecutionAgent,\n\t\t\t\t\tselected === \"__inherited__\" ? undefined : selected,\n\t\t\t\t\tctx,\n\t\t\t\t);\n\t\t\t},\n\t\t\t\"set-agent-timeout\": async ({ value }) =>\n\t\t\t\tapplyAgentTimeout(selectedExecutionAgent, value, ctx),\n\t\t\t\"reset-agent-execution\": async () => resetAgentExecution(selectedExecutionAgent, ctx),\n\t\t\t\"set-parallel-limit\": async ({ value }) =>\n\t\t\t\tapplyBlockingParallelLimitSetting(value, ctx, runtime),\n\t\t\t\"pick-stateful-limit\": async ({ itemId }) => {\n\t\t\t\tif (!isStatefulLimitField(itemId)) return { kind: \"rejected\" };\n\t\t\t\tselectedStatefulLimit = itemId;\n\t\t\t\treturn { kind: \"to\", screen: \"stateful-limit-input\" };\n\t\t\t},\n\t\t\t\"set-stateful-limit\": async ({ value, signal }) =>\n\t\t\t\tapplyStatefulLimitSetting(selectedStatefulLimit, value, ctx, runtime, {\n\t\t\t\t\tsignal,\n\t\t\t\t\tisCurrent,\n\t\t\t\t}),\n\t\t\t\"set-completion\": async ({ value }) => applyCompletionSetting(value, ctx, runtime),\n\t\t\t\"set-consult-resources\": async ({ value }) =>\n\t\t\t\tapplyConsultResourceSetting(value, ctx, runtime),\n\t\t\t\"set-consultation-cwd\": async ({ value }) => applyConsultationCwdSetting(value, ctx, runtime),\n\t\t\t\"set-delegation-cwd\": async ({ value }) => applyDelegationCwdSetting(value, ctx, runtime),\n\t\t\t\"load-agent-picker\": async () => {\n\t\t\t\tavailableAgents = discoverAgents(ctx.cwd, \"user\", readSubagentSettings() ?? {}).agents;\n\t\t\t\tif (availableAgents.length === 0) {\n\t\t\t\t\tctx.ui.notify(\"No agents found\", \"warning\");\n\t\t\t\t\treturn { kind: \"rejected\" };\n\t\t\t\t}\n\t\t\t\treturn { kind: \"to\", screen: \"agent-picker\" };\n\t\t\t},\n\t\t\t\"pick-agent\": async ({ itemId }) => {\n\t\t\t\tconst agent = availableAgents.find((candidate) => candidate.name === itemId);\n\t\t\t\tif (!agent) return { kind: \"rejected\" };\n\t\t\t\tconst settings = readSubagentSettings() ?? {};\n\t\t\t\tconst configured = settings.agents?.[agent.name];\n\t\t\t\tconst configuredTools =\n\t\t\t\t\tconfigured && hasOwn(configured, \"tools\") ? (configured.tools ?? []) : undefined;\n\t\t\t\tconst defaults = discoverAgents(ctx.cwd, \"user\").agents.find(\n\t\t\t\t\t(candidate) => candidate.name === agent.name,\n\t\t\t\t)?.tools;\n\t\t\t\tconst allTools = uniqueToolNames(pi.getAllTools().map((tool) => tool.name)).sort((a, b) =>\n\t\t\t\t\ta.localeCompare(b),\n\t\t\t\t);\n\t\t\t\tconst selected = uniqueToolNames(configuredTools ?? defaults ?? allTools);\n\t\t\t\tconst selectedSet = new Set(selected);\n\t\t\t\ttoolDraft = {\n\t\t\t\t\tagentName: agent.name,\n\t\t\t\t\tagentSource: agent.source,\n\t\t\t\t\tallTools,\n\t\t\t\t\tdefaultTools: defaults,\n\t\t\t\t\torderedTools: [...selected, ...allTools.filter((name) => !selectedSet.has(name))],\n\t\t\t\t\tselected: selectedSet,\n\t\t\t\t};\n\t\t\t\treturn { kind: \"to\", screen: \"tool-draft\" };\n\t\t\t},\n\t\t\t\"toggle-tool\": async ({ itemId, selected }) => {\n\t\t\t\tif (!toolDraft?.allTools.includes(itemId)) return { kind: \"rejected\" };\n\t\t\t\tif (selected) toolDraft.selected.add(itemId);\n\t\t\t\telse toolDraft.selected.delete(itemId);\n\t\t\t\treturn { kind: \"stay\" };\n\t\t\t},\n\t\t\t\"save-tools\": async () => {\n\t\t\t\tif (!toolDraft) return { kind: \"rejected\" };\n\t\t\t\tconst selected = toolDraft.orderedTools.filter((name) => toolDraft?.selected.has(name));\n\t\t\t\tconst restoredDefaults =\n\t\t\t\t\ttoolDraft.defaultTools === undefined\n\t\t\t\t\t\t? sameToolSet(selected, toolDraft.allTools)\n\t\t\t\t\t\t: sameToolSet(selected, toolDraft.defaultTools);\n\t\t\t\ttry {\n\t\t\t\t\tupdateAgentToolsSetting(toolDraft.agentName, restoredDefaults ? undefined : selected);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tctx.ui.notify(`Agent tool settings were not saved: ${formatError(error)}`, \"error\");\n\t\t\t\t\treturn { kind: \"rejected\" };\n\t\t\t\t}\n\t\t\t\tctx.ui.notify(\n\t\t\t\t\trestoredDefaults\n\t\t\t\t\t\t? `${safeTerminalText(toolDraft.agentName)}: defaults restored`\n\t\t\t\t\t\t: `${safeTerminalText(toolDraft.agentName)}: ${selected.length} tool${selected.length === 1 ? \"\" : \"s\"} configured`,\n\t\t\t\t\t\"info\",\n\t\t\t\t);\n\t\t\t\ttoolDraft = undefined;\n\t\t\t\treturn { kind: \"back\" };\n\t\t\t},\n\t\t\t\"discard-tools\": async () => {\n\t\t\t\ttoolDraft = undefined;\n\t\t\t\treturn { kind: \"back\" };\n\t\t\t},\n\t\t\tback: async () => ({ kind: \"back\" }),\n\t\t},\n\t});\n\tawait runMenu(ctx, menu, {\n\t\tgetState: () => undefined,\n\t\tsignal: owner.controller.signal,\n\t\tisCurrent,\n\t});\n}\n\nexport async function showSubagentSettings(\n\tctx: ExtensionCommandContext,\n\truntime: SubagentSettingsRuntime,\n\towner: SubagentMenuOwner,\n) {\n\tconst snapshot = inspectConsultResourceSettings();\n\tif (ctx.mode !== \"tui\") {\n\t\tif (ctx.hasUI) {\n\t\t\tctx.ui.notify(\n\t\t\t\t`User settings apply to this and future sessions. Edit settings manually: ${safeTerminalText(snapshot.path)}`,\n\t\t\t\t\"info\",\n\t\t\t);\n\t\t}\n\t\treturn;\n\t}\n\tconst generation = owner.generation;\n\tconst isCurrent = () => generation === owner.generation && !owner.controller.signal.aborted;\n\tconst { defineMenu, runMenu } = await import(\"@narumitw/pi-tui-kit\");\n\tif (!isCurrent()) return;\n\ttype SettingsAction =\n\t\t| \"set-completion\"\n\t\t| \"set-consult-resources\"\n\t\t| \"set-consultation-cwd\"\n\t\t| \"set-delegation-cwd\";\n\tconst menu = defineMenu<undefined, \"settings\", SettingsAction, ExtensionCommandContext>({\n\t\tstart: \"settings\",\n\t\tscreens: { settings: () => subagentSettingsScreen(runtime) },\n\t\tactions: {\n\t\t\t\"set-completion\": async ({ value }) => applyCompletionSetting(value, ctx, runtime),\n\t\t\t\"set-consult-resources\": async ({ value }) =>\n\t\t\t\tapplyConsultResourceSetting(value, ctx, runtime),\n\t\t\t\"set-consultation-cwd\": async ({ value }) => applyConsultationCwdSetting(value, ctx, runtime),\n\t\t\t\"set-delegation-cwd\": async ({ value }) => applyDelegationCwdSetting(value, ctx, runtime),\n\t\t},\n\t});\n\tawait runMenu(ctx, menu, {\n\t\tgetState: () => undefined,\n\t\tsignal: owner.controller.signal,\n\t\tisCurrent,\n\t});\n}\n\nfunction subagentSettingsScreen(runtime: SubagentSettingsRuntime) {\n\tconst completion = inspectCompletionDeliverySettings();\n\tconst consult = inspectConsultResourceSettings();\n\tconst cwdPolicy = inspectCwdPolicySettings();\n\tconst error = completion.error ?? consult.error ?? cwdPolicy.error;\n\treturn {\n\t\tkind: \"settings\" as const,\n\t\ttitle: error ? \"Subagent User Settings \u00B7 Read only\" : \"Subagent User Settings\",\n\t\tlines: [\n\t\t\t\"Applies now and to future sessions\",\n\t\t\t\"Target and trust settings control startup resources, not filesystem access or sandboxing.\",\n\t\t\t\"Manage folder trust with Pi /trust; restart Pi after changing it.\",\n\t\t\tsafeTerminalText(consult.path),\n\t\t\t...(error ? [`Settings cannot be edited: ${safeTerminalText(error)}`] : []),\n\t\t],\n\t\titems: error\n\t\t\t? []\n\t\t\t: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"consultationCwd\",\n\t\t\t\t\t\tlabel: \"Read-only consultation target\",\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"Untrusted external targets inherit no target/project resources; agent and package read-only prompts remain.\",\n\t\t\t\t\t\tcurrentValue: consultationCwdLabel(runtime.getConsultationCwdPolicy()),\n\t\t\t\t\t\tvalues: [\"Anywhere \u00B7 untrusted targets inherit nothing\", \"Current workspace only\"],\n\t\t\t\t\t\taction: \"set-consultation-cwd\" as const,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"delegationCwd\",\n\t\t\t\t\t\tlabel: \"General delegation target\",\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"Controls starting directories, not absolute paths, shell commands, or OS permissions.\",\n\t\t\t\t\t\tcurrentValue: delegationCwdLabel(runtime.getDelegationCwdPolicy()),\n\t\t\t\t\t\tvalues: [\n\t\t\t\t\t\t\t\"Current or saved-trusted folders\",\n\t\t\t\t\t\t\t\"Current workspace only\",\n\t\t\t\t\t\t\t\"Anywhere \u00B7 normal Pi permissions\",\n\t\t\t\t\t\t],\n\t\t\t\t\t\taction: \"set-delegation-cwd\" as const,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"consultResources\",\n\t\t\t\t\t\tlabel: \"Consultation resources for trusted targets\",\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"Choose which trusted context, system, skill, and prompt resources a consultation inherits.\",\n\t\t\t\t\t\tcurrentValue: consultResourceLabel(runtime.getConsultResourcePolicy()),\n\t\t\t\t\t\tvalues: [\"Project context only\", \"No inherited resources\", \"All trusted resources\"],\n\t\t\t\t\t\taction: \"set-consult-resources\" as const,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"completionDelivery\",\n\t\t\t\t\t\tlabel: \"When async work finishes\",\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\"Wait for your next turn, or request one synthesis turn after the root settles.\",\n\t\t\t\t\t\tcurrentValue: completionLabel(runtime.getCompletionDelivery()),\n\t\t\t\t\t\tvalues: [\"Wait until my next turn\", \"Resume automatically when finished\"],\n\t\t\t\t\t\taction: \"set-completion\" as const,\n\t\t\t\t\t},\n\t\t\t\t],\n\t};\n}\n\nfunction applyCompletionSetting(\n\tvalue: string | undefined,\n\tctx: ExtensionCommandContext,\n\truntime: SubagentSettingsRuntime,\n) {\n\tconst previous = runtime.getCompletionDelivery();\n\tconst next: CompletionDelivery =\n\t\tvalue === \"Resume automatically when finished\" ? \"auto-resume\" : \"next-turn\";\n\tif (next === previous) return { kind: \"stay\" as const };\n\ttry {\n\t\tupdateCompletionDeliverySetting(next);\n\t\truntime.setCompletionDelivery(next);\n\t\tctx.ui.notify(`Saved and applied: ${completionLabel(next)}.`, \"info\");\n\t\treturn { kind: \"stay\" as const };\n\t} catch (error) {\n\t\tctx.ui.notify(`Subagent settings were not saved: ${formatError(error)}`, \"error\");\n\t\treturn { kind: \"rejected\" as const };\n\t}\n}\n\nfunction applyConsultResourceSetting(\n\tvalue: string | undefined,\n\tctx: ExtensionCommandContext,\n\truntime: SubagentSettingsRuntime,\n) {\n\tconst previous = runtime.getConsultResourcePolicy();\n\tconst next: ConsultResourcePolicy =\n\t\tvalue === \"No inherited resources\"\n\t\t\t? \"none\"\n\t\t\t: value === \"All trusted resources\"\n\t\t\t\t? \"all\"\n\t\t\t\t: \"project-context\";\n\tif (next === previous) return { kind: \"stay\" as const };\n\ttry {\n\t\tupdateConsultResourceSetting(next);\n\t\truntime.setConsultResourcePolicy(next);\n\t\tctx.ui.notify(`Saved and applied: ${consultResourceLabel(next)}.`, \"info\");\n\t\treturn { kind: \"stay\" as const };\n\t} catch (error) {\n\t\tctx.ui.notify(`Subagent settings were not saved: ${formatError(error)}`, \"error\");\n\t\treturn { kind: \"rejected\" as const };\n\t}\n}\n\nfunction applyConsultationCwdSetting(\n\tvalue: string | undefined,\n\tctx: ExtensionCommandContext,\n\truntime: SubagentSettingsRuntime,\n) {\n\tconst previous = runtime.getConsultationCwdPolicy();\n\tconst next: ConsultationCwdPolicy =\n\t\tvalue === \"Current workspace only\" ? \"current-workspace\" : \"anywhere\";\n\tif (next === previous) return { kind: \"stay\" as const };\n\ttry {\n\t\tupdateCwdPolicySetting(\"consultation\", next);\n\t\truntime.setConsultationCwdPolicy(next);\n\t\tctx.ui.notify(`Saved and applied: ${consultationCwdLabel(next)}.`, \"info\");\n\t\treturn { kind: \"stay\" as const };\n\t} catch (error) {\n\t\tctx.ui.notify(`Subagent settings were not saved: ${formatError(error)}`, \"error\");\n\t\treturn { kind: \"rejected\" as const };\n\t}\n}\n\nfunction applyDelegationCwdSetting(\n\tvalue: string | undefined,\n\tctx: ExtensionCommandContext,\n\truntime: SubagentSettingsRuntime,\n) {\n\tconst previous = runtime.getDelegationCwdPolicy();\n\tconst next: DelegationCwdPolicy =\n\t\tvalue === \"Current workspace only\"\n\t\t\t? \"current-workspace\"\n\t\t\t: value === \"Anywhere \u00B7 normal Pi permissions\"\n\t\t\t\t? \"anywhere\"\n\t\t\t\t: \"trusted-targets\";\n\tif (next === previous) return { kind: \"stay\" as const };\n\ttry {\n\t\tupdateCwdPolicySetting(\"delegation\", next);\n\t\truntime.setDelegationCwdPolicy(next);\n\t\tctx.ui.notify(`Saved and applied: ${delegationCwdLabel(next)}.`, \"info\");\n\t\treturn { kind: \"stay\" as const };\n\t} catch (error) {\n\t\tctx.ui.notify(`Subagent settings were not saved: ${formatError(error)}`, \"error\");\n\t\treturn { kind: \"rejected\" as const };\n\t}\n}\n\nfunction blockReloadWithRetainedAgents(\n\tctx: ExtensionCommandContext,\n\truntime: SubagentSettingsRuntime,\n): boolean {\n\tconst status = runtime.getRuntimeStatus();\n\tif (status.retainedAgents === 0) return false;\n\tctx.ui.notify(\n\t\t`Cannot reload while ${status.retainedAgents} detached subagent${status.retainedAgents === 1 ? \" is\" : \"s are\"} retained (${status.activeAgents} active). Open Current agents and clear them after their work is safe to discard, then change delegation.`,\n\t\t\"warning\",\n\t);\n\treturn true;\n}\n\nfunction isWorkflow(value: string): value is Exclude<DelegationWorkflow, \"disabled\"> {\n\treturn value === \"all\" || value === \"async-only\" || value === \"blocking-only\";\n}\n\nfunction formatError(error: unknown): string {\n\treturn safeTerminalText(error instanceof Error ? error.message : String(error));\n}\n"],
5
- "mappings": "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",
6
- "names": ["formatError", "formatError"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/consult.ts", "../../src/consult-resources.ts"],
4
- "sourcesContent": ["import * as path from \"node:path\";\nimport type { AgentToolResult } from \"@earendil-works/pi-agent-core\";\nimport type { Usage } from \"@earendil-works/pi-ai\";\nimport { CONFIG_DIR_NAME, type ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport { DEFAULT_AGENT_CATALOG_MAX_ITEMS } from \"./agents/catalog.js\";\nimport { type AgentDiscoveryResult, discoverAgents } from \"./agents/discovery.js\";\nimport {\n\ttype AgentConfig,\n\ttype AgentScope,\n\ttype ConsultResourcePolicy,\n\tisThinkingLevel,\n\ttype SubagentSettings,\n\ttype THINKING_LEVELS,\n} from \"./agents/types.js\";\nimport { resolveConsultTools } from \"./consult-policy.js\";\nimport { resolveConsultResourceLaunchPolicy } from \"./consult-resources.js\";\nimport type {\n\tConsultDetails,\n\tConsultProgress,\n\tConsultProgressActivity,\n\tSubagentConsultParams,\n} from \"./consult-tool.js\";\nimport {\n\tassertConsultationTargetAllowed,\n\ttype ResolvedSubagentTarget,\n\tresolveSubagentTarget,\n} from \"./cwd-policy.js\";\nimport {\n\tassertSubagentDepthAllowed,\n\tresolveDefaultSubagentTimeoutMs,\n} from \"./execution/runtime-policy.js\";\nimport {\n\tDEFAULT_MAX_CONTEXT_BYTES,\n\tDEFAULT_MAX_STDERR_BYTES,\n\tMAX_SUBAGENT_TIMEOUT_MS,\n} from \"./limits.js\";\nimport {\n\ttype ChildLaunchPolicy,\n\tgetResultFinalOutput,\n\tisResultError,\n\trunSingleAgent,\n\ttype SingleResult,\n\ttype SubagentDetails,\n} from \"./runner.js\";\nimport { boundedPrivateText, boundText, safeDisplayPath, safeTerminalLine } from \"./safe-text.js\";\nimport {\n\tDEFAULT_CONSULT_RESOURCE_POLICY,\n\tDEFAULT_CONSULTATION_CWD_POLICY,\n} from \"./settings/inspection.js\";\nimport { resolveSubagentThinkingLevel } from \"./settings.js\";\n\nexport { registerSubagentConsult } from \"./consult-registration.js\";\nexport type {\n\tConsultDetails,\n\tConsultProgress,\n\tConsultProgressActivity,\n} from \"./consult-tool.js\";\nexport { SubagentConsultParams } from \"./consult-tool.js\";\n\nexport interface ConsultChildRequest {\n\tagent: AgentConfig;\n\ttask: string;\n\tcwd: string;\n\tagentScope: AgentScope;\n\tthinkingLevel?: (typeof THINKING_LEVELS)[number];\n\ttimeoutMs: number;\n\teffectiveTools: string[];\n\tresourcePolicy: ConsultResourcePolicy;\n\tlaunchPolicy: ChildLaunchPolicy;\n\tsignal: AbortSignal;\n\tonUpdate?: (result: SingleResult) => void;\n}\n\nexport interface RegisterSubagentConsultOptions {\n\tgetSettings(): SubagentSettings | undefined;\n\trunChild?: (request: ConsultChildRequest) => Promise<SingleResult>;\n\tinvocationOverride?: { command: string; argsPrefix?: string[] };\n\tresolveResourceLaunchPolicy?: typeof resolveConsultResourceLaunchPolicy;\n}\n\nconst READ_ONLY_INSTRUCTION = [\n\t\"This is a read-only consultation.\",\n\t\"Use only the tools made available by the executor to inspect and reason about existing content.\",\n\t\"Do not claim to edit files, run shell commands, mutate state, or persist a session.\",\n\t\"If the task asks for implementation, return analysis or instructions instead of claiming changes.\",\n].join(\"\\n\");\n\nconst MAX_UNKNOWN_AGENT_NAME_BYTES = 128;\n\nexport async function executeSubagentConsult(\n\tparams: SubagentConsultParams,\n\tsignal: AbortSignal,\n\tonUpdate: ((partial: AgentToolResult<ConsultDetails>) => void) | undefined,\n\tctx: ExtensionContext,\n\toptions: RegisterSubagentConsultOptions,\n\tisCurrent: () => boolean = () => true,\n): Promise<AgentToolResult<ConsultDetails>> {\n\tconst operation = validateConsultParams(params);\n\tassertSubagentDepthAllowed();\n\tif (signal.aborted) throw abortError(\"Subagent consultation was aborted before start\");\n\treturn executeConsult(\n\t\toperation,\n\t\tctx,\n\t\tsignal,\n\t\toptions,\n\t\t(partial) => {\n\t\t\tif (signal.aborted || !isCurrent()) return;\n\t\t\tonUpdate?.(partial);\n\t\t},\n\t\tisCurrent,\n\t\t() => undefined,\n\t);\n}\n\nfunction formatAvailableConsultAgents(discovery: AgentDiscoveryResult): string {\n\tconst listed = discovery.agents.slice(0, DEFAULT_AGENT_CATALOG_MAX_ITEMS);\n\tconst labels = listed.map(\n\t\t(agent) => `${safeTerminalLine(agent.name, MAX_UNKNOWN_AGENT_NAME_BYTES)} (${agent.source})`,\n\t);\n\tconst omitted =\n\t\tdiscovery.agents.length - listed.length + (discovery.omittedAgentDefinitions ?? 0);\n\tconst parts = [labels.join(\", \") || \"none\"];\n\tif (omitted > 0) {\n\t\tparts.push(`[${omitted} additional agent definition${omitted === 1 ? \"\" : \"s\"} omitted.]`);\n\t}\n\tif (discovery.metadataDiscoveryIncomplete) {\n\t\tparts.push(\"[Agent metadata discovery was incomplete; some definitions may be unavailable.]\");\n\t}\n\treturn parts.join(\" \");\n}\n\nfunction validateConsultParams(\n\tparams: unknown,\n): Required<Pick<SubagentConsultParams, \"agent\" | \"task\" | \"agentScope\" | \"confirmProjectAgents\">> &\n\tPick<SubagentConsultParams, \"cwd\" | \"timeoutMs\" | \"thinkingLevel\"> {\n\tif (!params || typeof params !== \"object\" || Array.isArray(params)) {\n\t\tthrow new Error(\"subagent_consult parameters must be an object\");\n\t}\n\tconst values = params as Record<string, unknown>;\n\tconst allowed = [\n\t\t\"agent\",\n\t\t\"task\",\n\t\t\"agentScope\",\n\t\t\"confirmProjectAgents\",\n\t\t\"cwd\",\n\t\t\"timeoutMs\",\n\t\t\"thinkingLevel\",\n\t];\n\tconst unexpected = Object.keys(values).find(\n\t\t(key) => values[key] !== undefined && !allowed.includes(key),\n\t);\n\tif (unexpected) throw new Error(`subagent_consult does not accept ${unexpected}`);\n\tconst agent = requiredString(values.agent, \"agent\");\n\tconst task = requiredString(values.task, \"task\");\n\tif (task.includes(\"\\0\")) throw new Error(\"subagent_consult task must not contain NUL bytes\");\n\tif (Buffer.byteLength(task, \"utf8\") > DEFAULT_MAX_CONTEXT_BYTES) {\n\t\tthrow new Error(\n\t\t\t`subagent_consult task must be at most ${DEFAULT_MAX_CONTEXT_BYTES} UTF-8 bytes`,\n\t\t);\n\t}\n\tconst agentScope = optionalScope(values.agentScope);\n\tif (\n\t\tvalues.confirmProjectAgents !== undefined &&\n\t\ttypeof values.confirmProjectAgents !== \"boolean\"\n\t) {\n\t\tthrow new Error(\"subagent_consult confirmProjectAgents must be boolean\");\n\t}\n\tif (values.cwd !== undefined && (typeof values.cwd !== \"string\" || !values.cwd.trim())) {\n\t\tthrow new Error(\"subagent_consult cwd must be a non-empty string\");\n\t}\n\tif (\n\t\tvalues.timeoutMs !== undefined &&\n\t\t(typeof values.timeoutMs !== \"number\" ||\n\t\t\t!Number.isFinite(values.timeoutMs) ||\n\t\t\tvalues.timeoutMs < 1 ||\n\t\t\tvalues.timeoutMs > MAX_SUBAGENT_TIMEOUT_MS)\n\t) {\n\t\tthrow new Error(`subagent_consult timeoutMs must be between 1 and ${MAX_SUBAGENT_TIMEOUT_MS}`);\n\t}\n\tif (values.thinkingLevel !== undefined && !isThinkingLevel(values.thinkingLevel)) {\n\t\tthrow new Error(\"subagent_consult thinkingLevel is invalid\");\n\t}\n\treturn {\n\t\tagent,\n\t\ttask,\n\t\tagentScope,\n\t\tconfirmProjectAgents: values.confirmProjectAgents !== false,\n\t\tcwd: values.cwd as string | undefined,\n\t\ttimeoutMs: values.timeoutMs as number | undefined,\n\t\tthinkingLevel: values.thinkingLevel as (typeof THINKING_LEVELS)[number] | undefined,\n\t};\n}\n\nasync function executeConsult(\n\toperation: ReturnType<typeof validateConsultParams>,\n\tctx: ExtensionContext,\n\tsignal: AbortSignal,\n\toptions: RegisterSubagentConsultOptions,\n\temitUpdate: (partial: AgentToolResult<ConsultDetails>) => void,\n\tisCurrent: () => boolean,\n\ttrackWork: (work: Promise<unknown>) => void,\n): Promise<AgentToolResult<ConsultDetails>> {\n\tif (\n\t\t(operation.agentScope === \"project\" || operation.agentScope === \"both\") &&\n\t\t!ctx.isProjectTrusted()\n\t) {\n\t\tthrow new Error(\"Project-local subagent definitions require a trusted project\");\n\t}\n\tconst settings = options.getSettings();\n\tconst target = resolveSubagentTarget({\n\t\tworkspace: ctx.cwd,\n\t\trequestedCwd: operation.cwd,\n\t\tcurrentProjectTrusted: ctx.isProjectTrusted(),\n\t});\n\tassertConsultationTargetAllowed(\n\t\ttarget,\n\t\tsettings?.cwdPolicy?.consultation ?? DEFAULT_CONSULTATION_CWD_POLICY,\n\t);\n\tconst discovery = discoverAgents(ctx.cwd, operation.agentScope, settings);\n\tconst agent = discovery.agents.find((candidate) => candidate.name === operation.agent);\n\tif (!agent) {\n\t\tthrow new Error(\n\t\t\t`Unknown subagent definition: ${boundedPrivateText(operation.agent, 256)}. ` +\n\t\t\t\t`Available agents for agentScope \"${operation.agentScope}\": ${formatAvailableConsultAgents(discovery)}`,\n\t\t);\n\t}\n\tconst setupWork = resolveConsultSetup(operation, agent, settings, target, options);\n\ttrackWork(setupWork);\n\tconst setup = await setupWork;\n\tassertCurrentRequest(signal, isCurrent);\n\n\tif (agent.source === \"project\" && operation.confirmProjectAgents) {\n\t\tif (!ctx.hasUI) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Project-local subagent confirmation requires UI; pass confirmProjectAgents: false explicitly in a trusted project\",\n\t\t\t);\n\t\t}\n\t\tconst approved = await ctx.ui.confirm(\n\t\t\t\"Run project-local read-only agent?\",\n\t\t\t`Agent: ${safeTerminalLine(agent.name, 256)}\\nSource: ${safeTerminalLine(path.posix.join(CONFIG_DIR_NAME, \"agents\", path.basename(agent.filePath)))}`,\n\t\t);\n\t\tassertCurrentRequest(signal, isCurrent);\n\t\tif (!approved) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: \"Read-only subagent consultation cancelled.\" }],\n\t\t\t\tdetails: { ...setup.details, cancelled: true },\n\t\t\t};\n\t\t}\n\t}\n\tassertCurrentRequest(signal, isCurrent);\n\temitUpdate(consultStartingUpdate(setup.details));\n\tassertCurrentRequest(signal, isCurrent);\n\tconst runChild = options.runChild ?? ((request) => runConsultChild(request, options));\n\tconst child = runChild({\n\t\tagent: setup.agent,\n\t\ttask: operation.task,\n\t\tcwd: setup.cwd,\n\t\tagentScope: operation.agentScope,\n\t\tthinkingLevel: setup.thinkingLevel,\n\t\ttimeoutMs: setup.timeoutMs,\n\t\teffectiveTools: setup.effectiveTools,\n\t\tresourcePolicy: setup.resourcePolicy,\n\t\tlaunchPolicy: setup.launchPolicy,\n\t\tsignal,\n\t\tonUpdate: (result) => {\n\t\t\tif (signal.aborted || !isCurrent()) return;\n\t\t\temitUpdate(consultUpdate(result, setup.details));\n\t\t},\n\t});\n\ttrackWork(child);\n\tconst result = await child;\n\tif (!isCurrent()) throw abortError(\"Subagent consultation owner was replaced\");\n\tif (result.aborted && !result.processStarted) {\n\t\tthrow abortError(result.errorMessage || \"Subagent consultation was aborted before launch\");\n\t}\n\tif (result.launchFailed) {\n\t\tthrow new Error(\n\t\t\tboundedPrivateText(\n\t\t\t\tresult.errorMessage || result.stderr.trim() || \"Subagent consultation failed to launch\",\n\t\t\t\t2 * 1024,\n\t\t\t),\n\t\t);\n\t}\n\tconst error = isResultError(result);\n\tconst output = error\n\t\t? formatConsultFailure(result)\n\t\t: getResultFinalOutput(result) || \"(no output)\";\n\tconst bounded = boundText(output);\n\tconst details: ConsultDetails = {\n\t\t...setup.details,\n\t\tchild: projectChildResult(result),\n\t\t...(error ? { isError: true } : {}),\n\t\t...(bounded.truncated ? { truncated: true } : {}),\n\t};\n\treturn {\n\t\tcontent: [{ type: \"text\", text: bounded.text }],\n\t\tdetails,\n\t\tusage: usageFromResult(result),\n\t};\n}\n\nasync function resolveConsultSetup(\n\toperation: ReturnType<typeof validateConsultParams>,\n\tagent: AgentConfig,\n\tsettings: SubagentSettings | undefined,\n\ttarget: ResolvedSubagentTarget,\n\toptions: RegisterSubagentConsultOptions,\n) {\n\tconst requestedResourcePolicy = settings?.consult?.resources ?? DEFAULT_CONSULT_RESOURCE_POLICY;\n\tconst resourcePolicy = target.trust.projectTrusted ? requestedResourcePolicy : \"none\";\n\tconst effectiveTools = resolveConsultTools(agent.tools);\n\tconst projectTrusted = target.trust.projectTrusted;\n\tconst thinkingLevel = resolveSubagentThinkingLevel([agent], agent.name, operation.thinkingLevel);\n\tconst timeoutMs = operation.timeoutMs ?? agent.timeoutMs ?? resolveDefaultSubagentTimeoutMs();\n\tif (!Number.isFinite(timeoutMs) || timeoutMs < 1 || timeoutMs > MAX_SUBAGENT_TIMEOUT_MS) {\n\t\tthrow new Error(\n\t\t\t`Subagent consultation timeout must be between 1 and ${MAX_SUBAGENT_TIMEOUT_MS}ms`,\n\t\t);\n\t}\n\tconst resolveResources =\n\t\toptions.resolveResourceLaunchPolicy ?? resolveConsultResourceLaunchPolicy;\n\tconst launchPolicy = await resolveResources(resourcePolicy, projectTrusted, target.cwd);\n\tlaunchPolicy.tools = effectiveTools;\n\tconst childAgent: AgentConfig = {\n\t\t...agent,\n\t\ttools: effectiveTools,\n\t\tsystemPrompt: [agent.systemPrompt, READ_ONLY_INSTRUCTION].filter(Boolean).join(\"\\n\\n\"),\n\t};\n\tconst effectiveResources = {\n\t\tpolicy: resourcePolicy,\n\t\tprojectResources: projectTrusted && resourcePolicy !== \"none\",\n\t\tcontextFiles: !launchPolicy.disableContextFiles,\n\t\tskills: !launchPolicy.disableSkills,\n\t\tpromptTemplates: !launchPolicy.disablePromptTemplates,\n\t};\n\tconst details: ConsultDetails = {\n\t\tagent: boundedPrivateText(agent.name, 256),\n\t\tagentSource: agent.source,\n\t\tagentScope: operation.agentScope,\n\t\tcwd: safeDisplayPath(target.cwd, target.workspace),\n\t\tmodel: agent.model ? boundedPrivateText(agent.model, 256) : undefined,\n\t\tthinkingLevel,\n\t\ttimeoutMs,\n\t\tpolicy: {\n\t\t\trequestedTools:\n\t\t\t\tagent.tools === undefined\n\t\t\t\t\t? null\n\t\t\t\t\t: agent.tools.slice(0, 100).map((tool) => boundedPrivateText(tool, 256)),\n\t\t\teffectiveTools,\n\t\t\tcwdBoundary: target.boundary,\n\t\t\ttargetTrust: {\n\t\t\t\tkind: target.trust.kind,\n\t\t\t\tprojectTrusted,\n\t\t\t\tsourcePath: target.trust.sourcePath\n\t\t\t\t\t? safeDisplayPath(target.trust.sourcePath, target.workspace)\n\t\t\t\t\t: undefined,\n\t\t\t\twarning: target.trust.warning,\n\t\t\t},\n\t\t\trequestedResources: requestedResourcePolicy,\n\t\t\teffectiveResources,\n\t\t\t...(resourcePolicy !== requestedResourcePolicy\n\t\t\t\t? { resourceDowngradeReason: `Target trust is ${target.trust.kind}` }\n\t\t\t\t: {}),\n\t\t\textensions: \"disabled\",\n\t\t\tsessionPersistence: \"disabled\",\n\t\t\tretainedAgent: false,\n\t\t},\n\t};\n\treturn {\n\t\tagent: childAgent,\n\t\tcwd: target.cwd,\n\t\tresourcePolicy,\n\t\teffectiveTools,\n\t\tthinkingLevel,\n\t\ttimeoutMs,\n\t\tlaunchPolicy,\n\t\tdetails,\n\t};\n}\n\nasync function runConsultChild(\n\trequest: ConsultChildRequest,\n\toptions: RegisterSubagentConsultOptions,\n): Promise<SingleResult> {\n\treturn runSingleAgent(\n\t\trequest.cwd,\n\t\t[request.agent],\n\t\trequest.agent.name,\n\t\trequest.task,\n\t\trequest.cwd,\n\t\tundefined,\n\t\trequest.signal,\n\t\trequest.thinkingLevel,\n\t\trequest.timeoutMs,\n\t\t(partial) => {\n\t\t\tconst result = partial.details.results[0];\n\t\t\tif (result) request.onUpdate?.(result);\n\t\t},\n\t\t(results): SubagentDetails => ({\n\t\t\tmode: \"single\",\n\t\t\tagentScope: request.agentScope,\n\t\t\tprojectAgentsDir: null,\n\t\t\tresults,\n\t\t}),\n\t\toptions.invocationOverride,\n\t\trequest.launchPolicy,\n\t);\n}\n\nfunction consultStartingUpdate(details: ConsultDetails): AgentToolResult<ConsultDetails> {\n\treturn {\n\t\tcontent: [{ type: \"text\", text: \"Read-only subagent consultation starting.\" }],\n\t\tdetails: {\n\t\t\t...details,\n\t\t\tprogress: {\n\t\t\t\tphase: \"starting\",\n\t\t\t\trecentActivity: [],\n\t\t\t\trecentActivityTotal: 0,\n\t\t\t\tusage: emptyProgressUsage(),\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction consultUpdate(\n\tresult: SingleResult,\n\tdetails: ConsultDetails,\n): AgentToolResult<ConsultDetails> {\n\tconst output = boundText(getResultFinalOutput(result) || \"(running...)\");\n\treturn {\n\t\tcontent: [{ type: \"text\", text: output.text }],\n\t\tdetails: {\n\t\t\t...details,\n\t\t\tchild: projectChildResult(result),\n\t\t\tprogress: projectConsultProgress(result),\n\t\t},\n\t};\n}\n\nconst CONSULT_ACTIVITY_ARGUMENTS: Record<\"read\" | \"grep\" | \"find\" | \"ls\", readonly string[]> = {\n\tread: [\"path\", \"file_path\", \"offset\", \"limit\"],\n\tgrep: [\"pattern\", \"path\", \"glob\", \"limit\"],\n\tfind: [\"pattern\", \"path\", \"limit\"],\n\tls: [\"path\", \"limit\"],\n};\n\nfunction projectConsultProgress(result: SingleResult): ConsultProgress {\n\tconst recentActivity: ConsultProgressActivity[] = [];\n\tfor (const item of result.recentActivity ?? []) {\n\t\tif (item.type === \"text\") {\n\t\t\tconst text = boundedPrivateText(item.text, 1024).trim();\n\t\t\tif (text) recentActivity.push({ type: \"text\", text });\n\t\t\tcontinue;\n\t\t}\n\t\tif (!Object.hasOwn(CONSULT_ACTIVITY_ARGUMENTS, item.name)) continue;\n\t\tconst name = item.name as keyof typeof CONSULT_ACTIVITY_ARGUMENTS;\n\t\tconst args: Record<string, string | number | boolean> = {};\n\t\tfor (const key of CONSULT_ACTIVITY_ARGUMENTS[name]) {\n\t\t\tconst value = item.args[key];\n\t\t\tif (typeof value === \"string\") args[key] = safeTerminalLine(value, 512);\n\t\t\telse if (typeof value === \"number\" && Number.isFinite(value)) args[key] = value;\n\t\t\telse if (typeof value === \"boolean\") args[key] = value;\n\t\t}\n\t\trecentActivity.push({ type: \"toolCall\", name, args });\n\t}\n\treturn {\n\t\tphase: \"running\",\n\t\trecentActivity,\n\t\trecentActivityTotal: Math.max(recentActivity.length, result.recentActivityTotal ?? 0),\n\t\tactualProvider: result.actualProvider\n\t\t\t? boundedPrivateText(result.actualProvider, 256)\n\t\t\t: undefined,\n\t\tactualModel: result.actualModel ? boundedPrivateText(result.actualModel, 256) : undefined,\n\t\tusage: {\n\t\t\tinput: result.usage.input,\n\t\t\toutput: result.usage.output,\n\t\t\tcacheRead: result.usage.cacheRead,\n\t\t\tcacheWrite: result.usage.cacheWrite,\n\t\t\tcost: result.usage.cost,\n\t\t\tcontextTokens: result.usage.contextTokens,\n\t\t\tturns: result.usage.turns,\n\t\t},\n\t};\n}\n\nfunction emptyProgressUsage(): ConsultProgress[\"usage\"] {\n\treturn {\n\t\tinput: 0,\n\t\toutput: 0,\n\t\tcacheRead: 0,\n\t\tcacheWrite: 0,\n\t\tcost: 0,\n\t\tcontextTokens: 0,\n\t\tturns: 0,\n\t};\n}\n\nfunction projectChildResult(result: SingleResult): Record<string, unknown> {\n\treturn {\n\t\texitCode: result.exitCode,\n\t\tstopReason:\n\t\t\ttypeof result.stopReason === \"string\"\n\t\t\t\t? boundedPrivateText(result.stopReason, 256)\n\t\t\t\t: undefined,\n\t\ttimedOut: result.timedOut,\n\t\taborted: result.aborted,\n\t\ttruncated: result.truncated,\n\t\tmalformedEvents: result.malformedEvents,\n\t\tprocessStarted: result.processStarted,\n\t\tactualProvider: result.actualProvider\n\t\t\t? boundedPrivateText(result.actualProvider, 256)\n\t\t\t: undefined,\n\t\tactualModel: result.actualModel ? boundedPrivateText(result.actualModel, 256) : undefined,\n\t\tpartialOutput: result.finalOutput\n\t\t\t? boundedPrivateText(result.finalOutput, 8 * 1024)\n\t\t\t: undefined,\n\t\terror: result.errorMessage ? boundedPrivateText(result.errorMessage, 2 * 1024) : undefined,\n\t\tusage: { ...result.usage },\n\t};\n}\n\nfunction formatConsultFailure(result: SingleResult): string {\n\tconst rawError = result.errorMessage || result.stderr.trim();\n\tconst error = rawError ? boundedPrivateText(rawError, DEFAULT_MAX_STDERR_BYTES) : \"\";\n\tconst output = getResultFinalOutput(result);\n\treturn error && output\n\t\t? `${error}\\n\\nPartial output:\\n${output}`\n\t\t: error || output || \"(no output)\";\n}\n\nfunction usageFromResult(result: SingleResult): Usage {\n\treturn {\n\t\tinput: result.usage.input,\n\t\toutput: result.usage.output,\n\t\tcacheRead: result.usage.cacheRead,\n\t\tcacheWrite: result.usage.cacheWrite,\n\t\ttotalTokens:\n\t\t\tresult.usage.totalTokens ??\n\t\t\tresult.usage.input + result.usage.output + result.usage.cacheRead + result.usage.cacheWrite,\n\t\tcost: {\n\t\t\tinput: result.usage.costInput ?? 0,\n\t\t\toutput: result.usage.costOutput ?? 0,\n\t\t\tcacheRead: result.usage.costCacheRead ?? 0,\n\t\t\tcacheWrite: result.usage.costCacheWrite ?? 0,\n\t\t\ttotal: result.usage.cost,\n\t\t},\n\t};\n}\n\nfunction assertCurrentRequest(signal: AbortSignal, isCurrent: () => boolean): void {\n\tif (signal.aborted || !isCurrent()) throw abortError(\"Subagent consultation owner was replaced\");\n}\n\nfunction abortError(message: string): Error {\n\tconst error = new Error(message);\n\terror.name = \"AbortError\";\n\treturn error;\n}\n\nfunction requiredString(value: unknown, name: string): string {\n\tif (typeof value !== \"string\" || !value.trim()) {\n\t\tthrow new Error(`subagent_consult requires ${name}`);\n\t}\n\treturn value;\n}\n\nfunction optionalScope(value: unknown): AgentScope {\n\tif (value === undefined) return \"user\";\n\tif (value === \"user\" || value === \"project\" || value === \"both\") return value;\n\tthrow new Error(\"subagent_consult agentScope must be user, project, or both\");\n}\n", "import type { ConsultResourcePolicy } from \"./agents/types.js\";\nimport { DEFAULT_MAX_CONTEXT_BYTES, truncateUtf8 } from \"./limits.js\";\nimport { resolvePiPromptResources } from \"./prompt-resources.js\";\nimport type { ChildLaunchPolicy } from \"./runner.js\";\n\nconst MINIMAL_CONSULT_SYSTEM_PROMPT =\n\t\"You are a read-only consultation assistant. Analyze the delegated task using only executor-provided capabilities and return a grounded answer.\";\n\n/**\n * Resolve Pi-owned prompt files without loading target settings, packages, or extensions.\n * The child still owns context-file, skill, and prompt-template loading according to this policy.\n */\nexport async function resolveConsultResourceLaunchPolicy(\n\tpolicy: ConsultResourcePolicy,\n\tprojectTrusted: boolean,\n\tcwd: string,\n): Promise<ChildLaunchPolicy> {\n\tif (policy === \"none\") {\n\t\treturn {\n\t\t\tdisableExtensions: true,\n\t\t\tdisableSkills: true,\n\t\t\tdisablePromptTemplates: true,\n\t\t\tdisableContextFiles: true,\n\t\t\tprojectTrust: false,\n\t\t\tbaseSystemPrompt: MINIMAL_CONSULT_SYSTEM_PROMPT,\n\t\t};\n\t}\n\n\tconst resources = await resolvePiPromptResources(cwd, projectTrusted);\n\tconst discoveredSystemPrompt = resources.systemPrompt;\n\tconst baseSystemPrompt = discoveredSystemPrompt\n\t\t? truncateUtf8(discoveredSystemPrompt, DEFAULT_MAX_CONTEXT_BYTES).text\n\t\t: undefined;\n\tconst appendSystemPromptPaths = resources.appendSystemPromptPaths;\n\tconst shared = {\n\t\tdisableExtensions: true,\n\t\tdisableContextFiles: !projectTrusted,\n\t\tprojectTrust: projectTrusted,\n\t\tbaseSystemPrompt,\n\t\tappendSystemPromptPaths:\n\t\t\tappendSystemPromptPaths.length > 0 ? appendSystemPromptPaths : undefined,\n\t};\n\tif (policy === \"project-context\") {\n\t\treturn {\n\t\t\t...shared,\n\t\t\tdisableSkills: true,\n\t\t\tdisablePromptTemplates: true,\n\t\t};\n\t}\n\treturn shared;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,YAAY,UAAU;AAGtB,SAAS,uBAA8C;;;ACEvD,IAAM,gCACL;AAMD,eAAsB,mCACrB,QACA,gBACA,KAC6B;AAC7B,MAAI,WAAW,QAAQ;AACtB,WAAO;AAAA,MACN,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,wBAAwB;AAAA,MACxB,qBAAqB;AAAA,MACrB,cAAc;AAAA,MACd,kBAAkB;AAAA,IACnB;AAAA,EACD;AAEA,QAAM,YAAY,MAAM,yBAAyB,KAAK,cAAc;AACpE,QAAM,yBAAyB,UAAU;AACzC,QAAM,mBAAmB,yBACtB,aAAa,wBAAwB,yBAAyB,EAAE,OAChE;AACH,QAAM,0BAA0B,UAAU;AAC1C,QAAM,SAAS;AAAA,IACd,mBAAmB;AAAA,IACnB,qBAAqB,CAAC;AAAA,IACtB,cAAc;AAAA,IACd;AAAA,IACA,yBACC,wBAAwB,SAAS,IAAI,0BAA0B;AAAA,EACjE;AACA,MAAI,WAAW,mBAAmB;AACjC,WAAO;AAAA,MACN,GAAG;AAAA,MACH,eAAe;AAAA,MACf,wBAAwB;AAAA,IACzB;AAAA,EACD;AACA,SAAO;AACR;;;AD8BA,IAAM,wBAAwB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,EAAE,KAAK,IAAI;AAEX,IAAM,+BAA+B;AAErC,eAAsB,uBACrB,QACA,QACA,UACA,KACA,SACA,YAA2B,MAAM,MACU;AAC3C,QAAM,YAAY,sBAAsB,MAAM;AAC9C,6BAA2B;AAC3B,MAAI,OAAO,QAAS,OAAM,WAAW,gDAAgD;AACrF,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC,YAAY;AACZ,UAAI,OAAO,WAAW,CAAC,UAAU,EAAG;AACpC,iBAAW,OAAO;AAAA,IACnB;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACP;AACD;AAEA,SAAS,6BAA6B,WAAyC;AAC9E,QAAM,SAAS,UAAU,OAAO,MAAM,GAAG,+BAA+B;AACxE,QAAM,SAAS,OAAO;AAAA,IACrB,CAAC,UAAU,GAAG,iBAAiB,MAAM,MAAM,4BAA4B,CAAC,KAAK,MAAM,MAAM;AAAA,EAC1F;AACA,QAAM,UACL,UAAU,OAAO,SAAS,OAAO,UAAU,UAAU,2BAA2B;AACjF,QAAM,QAAQ,CAAC,OAAO,KAAK,IAAI,KAAK,MAAM;AAC1C,MAAI,UAAU,GAAG;AAChB,UAAM,KAAK,IAAI,OAAO,+BAA+B,YAAY,IAAI,KAAK,GAAG,YAAY;AAAA,EAC1F;AACA,MAAI,UAAU,6BAA6B;AAC1C,UAAM,KAAK,iFAAiF;AAAA,EAC7F;AACA,SAAO,MAAM,KAAK,GAAG;AACtB;AAEA,SAAS,sBACR,QAEmE;AACnE,MAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AACnE,UAAM,IAAI,MAAM,+CAA+C;AAAA,EAChE;AACA,QAAM,SAAS;AACf,QAAM,UAAU;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACA,QAAM,aAAa,OAAO,KAAK,MAAM,EAAE;AAAA,IACtC,CAAC,QAAQ,OAAO,GAAG,MAAM,UAAa,CAAC,QAAQ,SAAS,GAAG;AAAA,EAC5D;AACA,MAAI,WAAY,OAAM,IAAI,MAAM,oCAAoC,UAAU,EAAE;AAChF,QAAM,QAAQ,eAAe,OAAO,OAAO,OAAO;AAClD,QAAM,OAAO,eAAe,OAAO,MAAM,MAAM;AAC/C,MAAI,KAAK,SAAS,IAAI,EAAG,OAAM,IAAI,MAAM,kDAAkD;AAC3F,MAAI,OAAO,WAAW,MAAM,MAAM,IAAI,2BAA2B;AAChE,UAAM,IAAI;AAAA,MACT,yCAAyC,yBAAyB;AAAA,IACnE;AAAA,EACD;AACA,QAAM,aAAa,cAAc,OAAO,UAAU;AAClD,MACC,OAAO,yBAAyB,UAChC,OAAO,OAAO,yBAAyB,WACtC;AACD,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACxE;AACA,MAAI,OAAO,QAAQ,WAAc,OAAO,OAAO,QAAQ,YAAY,CAAC,OAAO,IAAI,KAAK,IAAI;AACvF,UAAM,IAAI,MAAM,iDAAiD;AAAA,EAClE;AACA,MACC,OAAO,cAAc,WACpB,OAAO,OAAO,cAAc,YAC5B,CAAC,OAAO,SAAS,OAAO,SAAS,KACjC,OAAO,YAAY,KACnB,OAAO,YAAY,0BACnB;AACD,UAAM,IAAI,MAAM,oDAAoD,uBAAuB,EAAE;AAAA,EAC9F;AACA,MAAI,OAAO,kBAAkB,UAAa,CAAC,gBAAgB,OAAO,aAAa,GAAG;AACjF,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC5D;AACA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,sBAAsB,OAAO,yBAAyB;AAAA,IACtD,KAAK,OAAO;AAAA,IACZ,WAAW,OAAO;AAAA,IAClB,eAAe,OAAO;AAAA,EACvB;AACD;AAEA,eAAe,eACd,WACA,KACA,QACA,SACA,YACA,WACA,WAC2C;AAC3C,OACE,UAAU,eAAe,aAAa,UAAU,eAAe,WAChE,CAAC,IAAI,iBAAiB,GACrB;AACD,UAAM,IAAI,MAAM,8DAA8D;AAAA,EAC/E;AACA,QAAM,WAAW,QAAQ,YAAY;AACrC,QAAM,SAAS,sBAAsB;AAAA,IACpC,WAAW,IAAI;AAAA,IACf,cAAc,UAAU;AAAA,IACxB,uBAAuB,IAAI,iBAAiB;AAAA,EAC7C,CAAC;AACD;AAAA,IACC;AAAA,IACA,UAAU,WAAW,gBAAgB;AAAA,EACtC;AACA,QAAM,YAAY,eAAe,IAAI,KAAK,UAAU,YAAY,QAAQ;AACxE,QAAM,QAAQ,UAAU,OAAO,KAAK,CAAC,cAAc,UAAU,SAAS,UAAU,KAAK;AACrF,MAAI,CAAC,OAAO;AACX,UAAM,IAAI;AAAA,MACT,gCAAgC,mBAAmB,UAAU,OAAO,GAAG,CAAC,sCACnC,UAAU,UAAU,MAAM,6BAA6B,SAAS,CAAC;AAAA,IACvG;AAAA,EACD;AACA,QAAM,YAAY,oBAAoB,WAAW,OAAO,UAAU,QAAQ,OAAO;AACjF,YAAU,SAAS;AACnB,QAAM,QAAQ,MAAM;AACpB,uBAAqB,QAAQ,SAAS;AAEtC,MAAI,MAAM,WAAW,aAAa,UAAU,sBAAsB;AACjE,QAAI,CAAC,IAAI,OAAO;AACf,YAAM,IAAI;AAAA,QACT;AAAA,MACD;AAAA,IACD;AACA,UAAM,WAAW,MAAM,IAAI,GAAG;AAAA,MAC7B;AAAA,MACA,UAAU,iBAAiB,MAAM,MAAM,GAAG,CAAC;AAAA,UAAa,iBAAsB,WAAM,KAAK,iBAAiB,UAAe,cAAS,MAAM,QAAQ,CAAC,CAAC,CAAC;AAAA,IACpJ;AACA,yBAAqB,QAAQ,SAAS;AACtC,QAAI,CAAC,UAAU;AACd,aAAO;AAAA,QACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,6CAA6C,CAAC;AAAA,QAC9E,SAAS,EAAE,GAAG,MAAM,SAAS,WAAW,KAAK;AAAA,MAC9C;AAAA,IACD;AAAA,EACD;AACA,uBAAqB,QAAQ,SAAS;AACtC,aAAW,sBAAsB,MAAM,OAAO,CAAC;AAC/C,uBAAqB,QAAQ,SAAS;AACtC,QAAM,WAAW,QAAQ,aAAa,CAAC,YAAY,gBAAgB,SAAS,OAAO;AACnF,QAAM,QAAQ,SAAS;AAAA,IACtB,OAAO,MAAM;AAAA,IACb,MAAM,UAAU;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,YAAY,UAAU;AAAA,IACtB,eAAe,MAAM;AAAA,IACrB,WAAW,MAAM;AAAA,IACjB,gBAAgB,MAAM;AAAA,IACtB,gBAAgB,MAAM;AAAA,IACtB,cAAc,MAAM;AAAA,IACpB;AAAA,IACA,UAAU,CAACA,YAAW;AACrB,UAAI,OAAO,WAAW,CAAC,UAAU,EAAG;AACpC,iBAAW,cAAcA,SAAQ,MAAM,OAAO,CAAC;AAAA,IAChD;AAAA,EACD,CAAC;AACD,YAAU,KAAK;AACf,QAAM,SAAS,MAAM;AACrB,MAAI,CAAC,UAAU,EAAG,OAAM,WAAW,0CAA0C;AAC7E,MAAI,OAAO,WAAW,CAAC,OAAO,gBAAgB;AAC7C,UAAM,WAAW,OAAO,gBAAgB,iDAAiD;AAAA,EAC1F;AACA,MAAI,OAAO,cAAc;AACxB,UAAM,IAAI;AAAA,MACT;AAAA,QACC,OAAO,gBAAgB,OAAO,OAAO,KAAK,KAAK;AAAA,QAC/C,IAAI;AAAA,MACL;AAAA,IACD;AAAA,EACD;AACA,QAAM,QAAQ,cAAc,MAAM;AAClC,QAAM,SAAS,QACZ,qBAAqB,MAAM,IAC3B,qBAAqB,MAAM,KAAK;AACnC,QAAM,UAAU,UAAU,MAAM;AAChC,QAAM,UAA0B;AAAA,IAC/B,GAAG,MAAM;AAAA,IACT,OAAO,mBAAmB,MAAM;AAAA,IAChC,GAAI,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,IACjC,GAAI,QAAQ,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;AAAA,EAChD;AACA,SAAO;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,QAAQ,KAAK,CAAC;AAAA,IAC9C;AAAA,IACA,OAAO,gBAAgB,MAAM;AAAA,EAC9B;AACD;AAEA,eAAe,oBACd,WACA,OACA,UACA,QACA,SACC;AACD,QAAM,0BAA0B,UAAU,SAAS,aAAa;AAChE,QAAM,iBAAiB,OAAO,MAAM,iBAAiB,0BAA0B;AAC/E,QAAM,iBAAiB,oBAAoB,MAAM,KAAK;AACtD,QAAM,iBAAiB,OAAO,MAAM;AACpC,QAAM,gBAAgB,6BAA6B,CAAC,KAAK,GAAG,MAAM,MAAM,UAAU,aAAa;AAC/F,QAAM,YAAY,UAAU,aAAa,MAAM,aAAa,gCAAgC;AAC5F,MAAI,CAAC,OAAO,SAAS,SAAS,KAAK,YAAY,KAAK,YAAY,yBAAyB;AACxF,UAAM,IAAI;AAAA,MACT,uDAAuD,uBAAuB;AAAA,IAC/E;AAAA,EACD;AACA,QAAM,mBACL,QAAQ,+BAA+B;AACxC,QAAM,eAAe,MAAM,iBAAiB,gBAAgB,gBAAgB,OAAO,GAAG;AACtF,eAAa,QAAQ;AACrB,QAAM,aAA0B;AAAA,IAC/B,GAAG;AAAA,IACH,OAAO;AAAA,IACP,cAAc,CAAC,MAAM,cAAc,qBAAqB,EAAE,OAAO,OAAO,EAAE,KAAK,MAAM;AAAA,EACtF;AACA,QAAM,qBAAqB;AAAA,IAC1B,QAAQ;AAAA,IACR,kBAAkB,kBAAkB,mBAAmB;AAAA,IACvD,cAAc,CAAC,aAAa;AAAA,IAC5B,QAAQ,CAAC,aAAa;AAAA,IACtB,iBAAiB,CAAC,aAAa;AAAA,EAChC;AACA,QAAM,UAA0B;AAAA,IAC/B,OAAO,mBAAmB,MAAM,MAAM,GAAG;AAAA,IACzC,aAAa,MAAM;AAAA,IACnB,YAAY,UAAU;AAAA,IACtB,KAAK,gBAAgB,OAAO,KAAK,OAAO,SAAS;AAAA,IACjD,OAAO,MAAM,QAAQ,mBAAmB,MAAM,OAAO,GAAG,IAAI;AAAA,IAC5D;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,MACP,gBACC,MAAM,UAAU,SACb,OACA,MAAM,MAAM,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,SAAS,mBAAmB,MAAM,GAAG,CAAC;AAAA,MACzE;AAAA,MACA,aAAa,OAAO;AAAA,MACpB,aAAa;AAAA,QACZ,MAAM,OAAO,MAAM;AAAA,QACnB;AAAA,QACA,YAAY,OAAO,MAAM,aACtB,gBAAgB,OAAO,MAAM,YAAY,OAAO,SAAS,IACzD;AAAA,QACH,SAAS,OAAO,MAAM;AAAA,MACvB;AAAA,MACA,oBAAoB;AAAA,MACpB;AAAA,MACA,GAAI,mBAAmB,0BACpB,EAAE,yBAAyB,mBAAmB,OAAO,MAAM,IAAI,GAAG,IAClE,CAAC;AAAA,MACJ,YAAY;AAAA,MACZ,oBAAoB;AAAA,MACpB,eAAe;AAAA,IAChB;AAAA,EACD;AACA,SAAO;AAAA,IACN,OAAO;AAAA,IACP,KAAK,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEA,eAAe,gBACd,SACA,SACwB;AACxB,SAAO;AAAA,IACN,QAAQ;AAAA,IACR,CAAC,QAAQ,KAAK;AAAA,IACd,QAAQ,MAAM;AAAA,IACd,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,CAAC,YAAY;AACZ,YAAM,SAAS,QAAQ,QAAQ,QAAQ,CAAC;AACxC,UAAI,OAAQ,SAAQ,WAAW,MAAM;AAAA,IACtC;AAAA,IACA,CAAC,aAA8B;AAAA,MAC9B,MAAM;AAAA,MACN,YAAY,QAAQ;AAAA,MACpB,kBAAkB;AAAA,MAClB;AAAA,IACD;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ;AAAA,EACT;AACD;AAEA,SAAS,sBAAsB,SAA0D;AACxF,SAAO;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,4CAA4C,CAAC;AAAA,IAC7E,SAAS;AAAA,MACR,GAAG;AAAA,MACH,UAAU;AAAA,QACT,OAAO;AAAA,QACP,gBAAgB,CAAC;AAAA,QACjB,qBAAqB;AAAA,QACrB,OAAO,mBAAmB;AAAA,MAC3B;AAAA,IACD;AAAA,EACD;AACD;AAEA,SAAS,cACR,QACA,SACkC;AAClC,QAAM,SAAS,UAAU,qBAAqB,MAAM,KAAK,cAAc;AACvE,SAAO;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,OAAO,KAAK,CAAC;AAAA,IAC7C,SAAS;AAAA,MACR,GAAG;AAAA,MACH,OAAO,mBAAmB,MAAM;AAAA,MAChC,UAAU,uBAAuB,MAAM;AAAA,IACxC;AAAA,EACD;AACD;AAEA,IAAM,6BAAyF;AAAA,EAC9F,MAAM,CAAC,QAAQ,aAAa,UAAU,OAAO;AAAA,EAC7C,MAAM,CAAC,WAAW,QAAQ,QAAQ,OAAO;AAAA,EACzC,MAAM,CAAC,WAAW,QAAQ,OAAO;AAAA,EACjC,IAAI,CAAC,QAAQ,OAAO;AACrB;AAEA,SAAS,uBAAuB,QAAuC;AACtE,QAAM,iBAA4C,CAAC;AACnD,aAAW,QAAQ,OAAO,kBAAkB,CAAC,GAAG;AAC/C,QAAI,KAAK,SAAS,QAAQ;AACzB,YAAM,OAAO,mBAAmB,KAAK,MAAM,IAAI,EAAE,KAAK;AACtD,UAAI,KAAM,gBAAe,KAAK,EAAE,MAAM,QAAQ,KAAK,CAAC;AACpD;AAAA,IACD;AACA,QAAI,CAAC,OAAO,OAAO,4BAA4B,KAAK,IAAI,EAAG;AAC3D,UAAM,OAAO,KAAK;AAClB,UAAM,OAAkD,CAAC;AACzD,eAAW,OAAO,2BAA2B,IAAI,GAAG;AACnD,YAAM,QAAQ,KAAK,KAAK,GAAG;AAC3B,UAAI,OAAO,UAAU,SAAU,MAAK,GAAG,IAAI,iBAAiB,OAAO,GAAG;AAAA,eAC7D,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,EAAG,MAAK,GAAG,IAAI;AAAA,eACjE,OAAO,UAAU,UAAW,MAAK,GAAG,IAAI;AAAA,IAClD;AACA,mBAAe,KAAK,EAAE,MAAM,YAAY,MAAM,KAAK,CAAC;AAAA,EACrD;AACA,SAAO;AAAA,IACN,OAAO;AAAA,IACP;AAAA,IACA,qBAAqB,KAAK,IAAI,eAAe,QAAQ,OAAO,uBAAuB,CAAC;AAAA,IACpF,gBAAgB,OAAO,iBACpB,mBAAmB,OAAO,gBAAgB,GAAG,IAC7C;AAAA,IACH,aAAa,OAAO,cAAc,mBAAmB,OAAO,aAAa,GAAG,IAAI;AAAA,IAChF,OAAO;AAAA,MACN,OAAO,OAAO,MAAM;AAAA,MACpB,QAAQ,OAAO,MAAM;AAAA,MACrB,WAAW,OAAO,MAAM;AAAA,MACxB,YAAY,OAAO,MAAM;AAAA,MACzB,MAAM,OAAO,MAAM;AAAA,MACnB,eAAe,OAAO,MAAM;AAAA,MAC5B,OAAO,OAAO,MAAM;AAAA,IACrB;AAAA,EACD;AACD;AAEA,SAAS,qBAA+C;AACvD,SAAO;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,eAAe;AAAA,IACf,OAAO;AAAA,EACR;AACD;AAEA,SAAS,mBAAmB,QAA+C;AAC1E,SAAO;AAAA,IACN,UAAU,OAAO;AAAA,IACjB,YACC,OAAO,OAAO,eAAe,WAC1B,mBAAmB,OAAO,YAAY,GAAG,IACzC;AAAA,IACJ,UAAU,OAAO;AAAA,IACjB,SAAS,OAAO;AAAA,IAChB,WAAW,OAAO;AAAA,IAClB,iBAAiB,OAAO;AAAA,IACxB,gBAAgB,OAAO;AAAA,IACvB,gBAAgB,OAAO,iBACpB,mBAAmB,OAAO,gBAAgB,GAAG,IAC7C;AAAA,IACH,aAAa,OAAO,cAAc,mBAAmB,OAAO,aAAa,GAAG,IAAI;AAAA,IAChF,eAAe,OAAO,cACnB,mBAAmB,OAAO,aAAa,IAAI,IAAI,IAC/C;AAAA,IACH,OAAO,OAAO,eAAe,mBAAmB,OAAO,cAAc,IAAI,IAAI,IAAI;AAAA,IACjF,OAAO,EAAE,GAAG,OAAO,MAAM;AAAA,EAC1B;AACD;AAEA,SAAS,qBAAqB,QAA8B;AAC3D,QAAM,WAAW,OAAO,gBAAgB,OAAO,OAAO,KAAK;AAC3D,QAAM,QAAQ,WAAW,mBAAmB,UAAU,wBAAwB,IAAI;AAClF,QAAM,SAAS,qBAAqB,MAAM;AAC1C,SAAO,SAAS,SACb,GAAG,KAAK;AAAA;AAAA;AAAA,EAAwB,MAAM,KACtC,SAAS,UAAU;AACvB;AAEA,SAAS,gBAAgB,QAA6B;AACrD,SAAO;AAAA,IACN,OAAO,OAAO,MAAM;AAAA,IACpB,QAAQ,OAAO,MAAM;AAAA,IACrB,WAAW,OAAO,MAAM;AAAA,IACxB,YAAY,OAAO,MAAM;AAAA,IACzB,aACC,OAAO,MAAM,eACb,OAAO,MAAM,QAAQ,OAAO,MAAM,SAAS,OAAO,MAAM,YAAY,OAAO,MAAM;AAAA,IAClF,MAAM;AAAA,MACL,OAAO,OAAO,MAAM,aAAa;AAAA,MACjC,QAAQ,OAAO,MAAM,cAAc;AAAA,MACnC,WAAW,OAAO,MAAM,iBAAiB;AAAA,MACzC,YAAY,OAAO,MAAM,kBAAkB;AAAA,MAC3C,OAAO,OAAO,MAAM;AAAA,IACrB;AAAA,EACD;AACD;AAEA,SAAS,qBAAqB,QAAqB,WAAgC;AAClF,MAAI,OAAO,WAAW,CAAC,UAAU,EAAG,OAAM,WAAW,0CAA0C;AAChG;AAEA,SAAS,WAAW,SAAwB;AAC3C,QAAM,QAAQ,IAAI,MAAM,OAAO;AAC/B,QAAM,OAAO;AACb,SAAO;AACR;AAEA,SAAS,eAAe,OAAgB,MAAsB;AAC7D,MAAI,OAAO,UAAU,YAAY,CAAC,MAAM,KAAK,GAAG;AAC/C,UAAM,IAAI,MAAM,6BAA6B,IAAI,EAAE;AAAA,EACpD;AACA,SAAO;AACR;AAEA,SAAS,cAAc,OAA4B;AAClD,MAAI,UAAU,OAAW,QAAO;AAChC,MAAI,UAAU,UAAU,UAAU,aAAa,UAAU,OAAQ,QAAO;AACxE,QAAM,IAAI,MAAM,4DAA4D;AAC7E;",
6
- "names": ["result"]
7
- }