@narumitw/pi-subagents 2.0.1 → 2.0.3

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 (148) hide show
  1. package/README.md +20 -7
  2. package/dist/chunks/auto-transport-SY2VHUFH.ts +109 -0
  3. package/dist/chunks/auto-transport-SY2VHUFH.ts.map +7 -0
  4. package/dist/chunks/capability-grant-CGEWOEKE.ts +19 -0
  5. package/dist/chunks/capability-grant-CGEWOEKE.ts.map +7 -0
  6. package/dist/chunks/chunk-434NII74.ts +282 -0
  7. package/dist/chunks/chunk-434NII74.ts.map +7 -0
  8. package/dist/chunks/chunk-47SK2QYC.ts +56 -0
  9. package/dist/chunks/chunk-47SK2QYC.ts.map +7 -0
  10. package/dist/chunks/chunk-6KJ34M6S.ts +159 -0
  11. package/dist/chunks/chunk-6KJ34M6S.ts.map +7 -0
  12. package/dist/chunks/chunk-7OBINKFM.ts +80 -0
  13. package/dist/chunks/chunk-7OBINKFM.ts.map +7 -0
  14. package/dist/chunks/chunk-7QPPBBXZ.ts +335 -0
  15. package/dist/chunks/chunk-7QPPBBXZ.ts.map +7 -0
  16. package/dist/chunks/chunk-AEUYS7JC.ts +73 -0
  17. package/dist/chunks/chunk-AEUYS7JC.ts.map +7 -0
  18. package/dist/chunks/chunk-BFK2Z4ZF.ts +189 -0
  19. package/dist/chunks/chunk-BFK2Z4ZF.ts.map +7 -0
  20. package/dist/chunks/chunk-BOAXY55Y.ts +153 -0
  21. package/dist/chunks/chunk-BOAXY55Y.ts.map +7 -0
  22. package/dist/chunks/chunk-C4L6P266.ts +22 -0
  23. package/dist/chunks/chunk-C4L6P266.ts.map +7 -0
  24. package/dist/chunks/chunk-DPPVEQAM.ts +29 -0
  25. package/dist/chunks/chunk-DPPVEQAM.ts.map +7 -0
  26. package/dist/chunks/chunk-DQMN4OYM.ts +913 -0
  27. package/dist/chunks/chunk-DQMN4OYM.ts.map +7 -0
  28. package/dist/chunks/chunk-DSOOH73Y.ts +238 -0
  29. package/dist/chunks/chunk-DSOOH73Y.ts.map +7 -0
  30. package/dist/chunks/chunk-EFBPISNT.ts +421 -0
  31. package/dist/chunks/chunk-EFBPISNT.ts.map +7 -0
  32. package/dist/chunks/chunk-EWWXFU7N.ts +150 -0
  33. package/dist/chunks/chunk-EWWXFU7N.ts.map +7 -0
  34. package/dist/chunks/chunk-F4L2UVSK.ts +380 -0
  35. package/dist/chunks/chunk-F4L2UVSK.ts.map +7 -0
  36. package/dist/chunks/chunk-F5YWVHQX.ts +1543 -0
  37. package/dist/chunks/chunk-F5YWVHQX.ts.map +7 -0
  38. package/dist/chunks/chunk-G3RSMSXJ.ts +63 -0
  39. package/dist/chunks/chunk-G3RSMSXJ.ts.map +7 -0
  40. package/dist/chunks/chunk-G6VZTCFH.ts +70 -0
  41. package/dist/chunks/chunk-G6VZTCFH.ts.map +7 -0
  42. package/dist/chunks/chunk-H3FP6DLR.ts +160 -0
  43. package/dist/chunks/chunk-H3FP6DLR.ts.map +7 -0
  44. package/dist/chunks/chunk-HA36LPCO.ts +130 -0
  45. package/dist/chunks/chunk-HA36LPCO.ts.map +7 -0
  46. package/dist/chunks/chunk-HKC4ES4B.ts +65 -0
  47. package/dist/chunks/chunk-HKC4ES4B.ts.map +7 -0
  48. package/dist/chunks/chunk-HOP5FXDT.ts +27 -0
  49. package/dist/chunks/chunk-HOP5FXDT.ts.map +7 -0
  50. package/dist/chunks/chunk-I2FAK44T.ts +324 -0
  51. package/dist/chunks/chunk-I2FAK44T.ts.map +7 -0
  52. package/dist/chunks/chunk-IGAMVWFN.ts +139 -0
  53. package/dist/chunks/chunk-IGAMVWFN.ts.map +7 -0
  54. package/dist/chunks/chunk-KMGKCEO4.ts +38 -0
  55. package/dist/chunks/chunk-KMGKCEO4.ts.map +7 -0
  56. package/dist/chunks/chunk-N7BLVXKK.ts +73 -0
  57. package/dist/chunks/chunk-N7BLVXKK.ts.map +7 -0
  58. package/dist/chunks/chunk-NIF42QMF.ts +297 -0
  59. package/dist/chunks/chunk-NIF42QMF.ts.map +7 -0
  60. package/dist/chunks/chunk-O4VO6JUJ.ts +52 -0
  61. package/dist/chunks/chunk-O4VO6JUJ.ts.map +7 -0
  62. package/dist/chunks/chunk-ONDTY4EL.ts +91 -0
  63. package/dist/chunks/chunk-ONDTY4EL.ts.map +7 -0
  64. package/dist/chunks/chunk-OVPHFGKO.ts +1769 -0
  65. package/dist/chunks/chunk-OVPHFGKO.ts.map +7 -0
  66. package/dist/chunks/chunk-P7OH4XMF.ts +60 -0
  67. package/dist/chunks/chunk-P7OH4XMF.ts.map +7 -0
  68. package/dist/chunks/chunk-PSK43Y6A.ts +339 -0
  69. package/dist/chunks/chunk-PSK43Y6A.ts.map +7 -0
  70. package/dist/chunks/chunk-QBORTI4W.ts +468 -0
  71. package/dist/chunks/chunk-QBORTI4W.ts.map +7 -0
  72. package/dist/chunks/chunk-QDVGH2X7.ts +171 -0
  73. package/dist/chunks/chunk-QDVGH2X7.ts.map +7 -0
  74. package/dist/chunks/chunk-RHRQMT7Q.ts +490 -0
  75. package/dist/chunks/chunk-RHRQMT7Q.ts.map +7 -0
  76. package/dist/chunks/chunk-RRR66UWR.ts +28 -0
  77. package/dist/chunks/chunk-RRR66UWR.ts.map +7 -0
  78. package/dist/chunks/chunk-RSUXZD6S.ts +275 -0
  79. package/dist/chunks/chunk-RSUXZD6S.ts.map +7 -0
  80. package/dist/chunks/chunk-RTCVYIZA.ts +221 -0
  81. package/dist/chunks/chunk-RTCVYIZA.ts.map +7 -0
  82. package/dist/chunks/chunk-S2IWVK3J.ts +44 -0
  83. package/dist/chunks/chunk-S2IWVK3J.ts.map +7 -0
  84. package/dist/chunks/chunk-SCZ33MYW.ts +52 -0
  85. package/dist/chunks/chunk-SCZ33MYW.ts.map +7 -0
  86. package/dist/chunks/chunk-SWGQLFSD.ts +60 -0
  87. package/dist/chunks/chunk-SWGQLFSD.ts.map +7 -0
  88. package/dist/chunks/chunk-UMBPMVJW.ts +22 -0
  89. package/dist/chunks/chunk-UMBPMVJW.ts.map +7 -0
  90. package/dist/chunks/chunk-UVFVHIOP.ts +735 -0
  91. package/dist/chunks/chunk-UVFVHIOP.ts.map +7 -0
  92. package/dist/chunks/completion-delivery-YPOWSSV3.ts +16 -0
  93. package/dist/chunks/completion-delivery-YPOWSSV3.ts.map +7 -0
  94. package/dist/chunks/config-status-J4GPWP46.ts +34 -0
  95. package/dist/chunks/config-status-J4GPWP46.ts.map +7 -0
  96. package/dist/chunks/config-ui-3IBMHTQB.ts +1146 -0
  97. package/dist/chunks/config-ui-3IBMHTQB.ts.map +7 -0
  98. package/dist/chunks/consult-NYXVDN5G.ts +518 -0
  99. package/dist/chunks/consult-NYXVDN5G.ts.map +7 -0
  100. package/dist/chunks/context-QDKLVQXE.ts +11 -0
  101. package/dist/chunks/context-QDKLVQXE.ts.map +7 -0
  102. package/dist/chunks/create-stateful-transport-4WKZHRSI.ts +130 -0
  103. package/dist/chunks/create-stateful-transport-4WKZHRSI.ts.map +7 -0
  104. package/dist/chunks/cwd-policy-NB6XZ5GF.ts +17 -0
  105. package/dist/chunks/cwd-policy-NB6XZ5GF.ts.map +7 -0
  106. package/dist/chunks/delegation-contract-WJPT4FVS.ts +24 -0
  107. package/dist/chunks/delegation-contract-WJPT4FVS.ts.map +7 -0
  108. package/dist/chunks/discovery-K25T3SH4.ts +12 -0
  109. package/dist/chunks/discovery-K25T3SH4.ts.map +7 -0
  110. package/dist/chunks/execution-DS2DEIQZ.ts +4034 -0
  111. package/dist/chunks/execution-DS2DEIQZ.ts.map +7 -0
  112. package/dist/chunks/in-process-transport-TEYAWSEC.ts +38 -0
  113. package/dist/chunks/in-process-transport-TEYAWSEC.ts.map +7 -0
  114. package/dist/chunks/inspect-UOQQ3KNL.ts +619 -0
  115. package/dist/chunks/inspect-UOQQ3KNL.ts.map +7 -0
  116. package/dist/chunks/peer-communication-KL36Z6CO.ts +294 -0
  117. package/dist/chunks/peer-communication-KL36Z6CO.ts.map +7 -0
  118. package/dist/chunks/persistence-VSGXAW4P.ts +344 -0
  119. package/dist/chunks/persistence-VSGXAW4P.ts.map +7 -0
  120. package/dist/chunks/registry-E6XPJB7L.ts +1324 -0
  121. package/dist/chunks/registry-E6XPJB7L.ts.map +7 -0
  122. package/dist/chunks/retained-semantic-state-7WXSGRJU.ts +81 -0
  123. package/dist/chunks/retained-semantic-state-7WXSGRJU.ts.map +7 -0
  124. package/dist/chunks/rpc-transport-Y6LA5BOP.ts +1154 -0
  125. package/dist/chunks/rpc-transport-Y6LA5BOP.ts.map +7 -0
  126. package/dist/chunks/runtime-policy-5YELCOVC.ts +15 -0
  127. package/dist/chunks/runtime-policy-5YELCOVC.ts.map +7 -0
  128. package/dist/chunks/semantic-snapshot-WPJ3UAFW.ts +19 -0
  129. package/dist/chunks/semantic-snapshot-WPJ3UAFW.ts.map +7 -0
  130. package/dist/chunks/spawn-idempotency-QGHO2WKC.ts +13 -0
  131. package/dist/chunks/spawn-idempotency-QGHO2WKC.ts.map +7 -0
  132. package/dist/chunks/stateful-lifecycle-JAR6K55H.ts +15 -0
  133. package/dist/chunks/stateful-lifecycle-JAR6K55H.ts.map +7 -0
  134. package/dist/chunks/subprocess-transport-C2XVR25R.ts +158 -0
  135. package/dist/chunks/subprocess-transport-C2XVR25R.ts.map +7 -0
  136. package/dist/chunks/workspace-WDKLN72J.ts +11 -0
  137. package/dist/chunks/workspace-WDKLN72J.ts.map +7 -0
  138. package/dist/index.ts +1057 -0
  139. package/dist/index.ts.map +7 -0
  140. package/package.json +9 -5
  141. package/src/index.ts +1 -1
  142. package/src/settings-reader.ts +208 -0
  143. package/src/settings.ts +22 -187
  144. package/src/stateful-registration.ts +1230 -0
  145. package/src/stateful-safety.ts +1 -1
  146. package/src/stateful.ts +2 -1234
  147. package/src/subagents-extension.ts +307 -0
  148. package/src/subagents.ts +1 -308
@@ -0,0 +1,7 @@
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
+ }