@ashx-j/lunr 0.2.22 → 0.2.23

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 (132) hide show
  1. package/CHANGELOG.md +3 -1
  2. package/README.md +5 -3
  3. package/dist/builtin-extensions/lunr-browser.d.ts +7 -1
  4. package/dist/builtin-extensions/lunr-browser.d.ts.map +1 -1
  5. package/dist/builtin-extensions/lunr-browser.js +116 -3
  6. package/dist/builtin-extensions/lunr-browser.js.map +1 -1
  7. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  8. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +1 -1
  9. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  10. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts +2 -0
  11. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts.map +1 -1
  12. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js +9 -0
  13. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js.map +1 -1
  14. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
  15. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js +41 -3
  16. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
  17. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  18. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +4 -0
  19. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  20. package/dist/builtin-extensions/pi-subagents/src/tui/communication.d.ts +1 -1
  21. package/dist/builtin-extensions/pi-subagents/src/tui/communication.d.ts.map +1 -1
  22. package/dist/builtin-extensions/pi-subagents/src/tui/communication.js +3 -2
  23. package/dist/builtin-extensions/pi-subagents/src/tui/communication.js.map +1 -1
  24. package/dist/core/agent-session.d.ts +19 -0
  25. package/dist/core/agent-session.d.ts.map +1 -1
  26. package/dist/core/agent-session.js +230 -103
  27. package/dist/core/agent-session.js.map +1 -1
  28. package/dist/core/settings-manager.d.ts +4 -0
  29. package/dist/core/settings-manager.d.ts.map +1 -1
  30. package/dist/core/settings-manager.js +9 -0
  31. package/dist/core/settings-manager.js.map +1 -1
  32. package/dist/core/subagent-wait-interruption.d.ts +11 -0
  33. package/dist/core/subagent-wait-interruption.d.ts.map +1 -0
  34. package/dist/core/subagent-wait-interruption.js +19 -0
  35. package/dist/core/subagent-wait-interruption.js.map +1 -0
  36. package/dist/core/system-prompt.d.ts.map +1 -1
  37. package/dist/core/system-prompt.js +3 -1
  38. package/dist/core/system-prompt.js.map +1 -1
  39. package/dist/core/tools/render-utils.d.ts +3 -3
  40. package/dist/core/tools/render-utils.d.ts.map +1 -1
  41. package/dist/core/tools/render-utils.js +3 -3
  42. package/dist/core/tools/render-utils.js.map +1 -1
  43. package/dist/modes/interactive/components/assistant-message.d.ts +10 -2
  44. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  45. package/dist/modes/interactive/components/assistant-message.js +29 -5
  46. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  47. package/dist/modes/interactive/components/copyable-text.d.ts +2 -6
  48. package/dist/modes/interactive/components/copyable-text.d.ts.map +1 -1
  49. package/dist/modes/interactive/components/copyable-text.js +26 -35
  50. package/dist/modes/interactive/components/copyable-text.js.map +1 -1
  51. package/dist/modes/interactive/components/settings-selector.d.ts +3 -1
  52. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  53. package/dist/modes/interactive/components/settings-selector.js +13 -0
  54. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  55. package/dist/modes/interactive/components/thinking-tail.d.ts +9 -2
  56. package/dist/modes/interactive/components/thinking-tail.d.ts.map +1 -1
  57. package/dist/modes/interactive/components/thinking-tail.js +43 -1
  58. package/dist/modes/interactive/components/thinking-tail.js.map +1 -1
  59. package/dist/modes/interactive/components/tool-execution.d.ts +4 -3
  60. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  61. package/dist/modes/interactive/components/tool-execution.js +34 -45
  62. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  63. package/dist/modes/interactive/interactive-mode.d.ts +6 -0
  64. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  65. package/dist/modes/interactive/interactive-mode.js +118 -39
  66. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  67. package/dist/modes/interactive/theme/theme.d.ts +1 -0
  68. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  69. package/dist/modes/interactive/theme/theme.js +23 -0
  70. package/dist/modes/interactive/theme/theme.js.map +1 -1
  71. package/dist/node-runtime/{agent-session-services-NQ6GKOIK.js → agent-session-services-GZVSOGYR.js} +7 -7
  72. package/dist/node-runtime/{builtin-extensions-GVC6IFDU.js → builtin-extensions-QVCXNQT4.js} +3 -3
  73. package/dist/node-runtime/{chunk-6B2POMK7.js → chunk-6VYZ5UFP.js} +1 -1
  74. package/dist/node-runtime/{chunk-VJPTNWAP.js → chunk-DD5YWFSJ.js} +1 -1
  75. package/dist/node-runtime/{chunk-TDL7UWJ7.js → chunk-DQMGU675.js} +173 -57
  76. package/dist/node-runtime/{chunk-V2A7CEXK.js → chunk-EKVFP6YF.js} +2 -2
  77. package/dist/node-runtime/{chunk-5BNJ4JUH.js → chunk-GJ2RDBRL.js} +1 -1
  78. package/dist/node-runtime/{chunk-GNN7H3B7.js → chunk-GS42T6MX.js} +1 -1
  79. package/dist/node-runtime/{chunk-PC2Z5TKZ.js → chunk-HMBGROQK.js} +3 -3
  80. package/dist/node-runtime/{chunk-GJSAD4AB.js → chunk-HPUP7E4T.js} +10 -10
  81. package/dist/node-runtime/{chunk-IVXYUAJE.js → chunk-IF24A3FH.js} +1 -1
  82. package/dist/node-runtime/{chunk-BFNXONG3.js → chunk-LFZDVKSP.js} +2 -2
  83. package/dist/node-runtime/{chunk-EQ63ANHL.js → chunk-LLUIPGDR.js} +210 -125
  84. package/dist/node-runtime/{chunk-ORH324EP.js → chunk-PCEW76PM.js} +3 -3
  85. package/dist/node-runtime/{chunk-WADV2VDS.js → chunk-QAZOULTU.js} +7 -0
  86. package/dist/node-runtime/{chunk-6427XAWG.js → chunk-QH6YL7VK.js} +3 -3
  87. package/dist/node-runtime/{chunk-7QWNYZDI.js → chunk-RDDAZOMU.js} +16 -0
  88. package/dist/node-runtime/{chunk-QDGKKKUM.js → chunk-RIR5EDDJ.js} +1 -1
  89. package/dist/node-runtime/{chunk-H3XF4UVQ.js → chunk-RWTKOC3B.js} +1 -1
  90. package/dist/node-runtime/{chunk-IQIEU7SB.js → chunk-TVJUOJZJ.js} +2 -2
  91. package/dist/node-runtime/{chunk-UAFLNHSH.js → chunk-W64JC4E7.js} +8 -8
  92. package/dist/node-runtime/{chunk-LMBNLFXQ.js → chunk-X3URCYCU.js} +4 -4
  93. package/dist/node-runtime/{chunk-VSSXXL36.js → chunk-YDO2F2IA.js} +2 -2
  94. package/dist/node-runtime/{chunk-IWOWXRWU.js → chunk-YHQ3NBB3.js} +15 -15
  95. package/dist/node-runtime/cli-runtime.js +1 -1
  96. package/dist/node-runtime/{command-3JHHXOPX.js → command-PDVTBRWA.js} +3 -3
  97. package/dist/node-runtime/{commands-2JVNFGMQ.js → commands-XDCFGIGW.js} +5 -5
  98. package/dist/node-runtime/{export-html-KBFVV63J.js → export-html-KSOIMVPI.js} +1 -1
  99. package/dist/node-runtime/{extension-input-K24TVKVW.js → extension-input-E7BJZ35H.js} +4 -4
  100. package/dist/node-runtime/{extension-selector-SPNF7EDR.js → extension-selector-WU42XDTU.js} +4 -4
  101. package/dist/node-runtime/{gateway-VFO6SFKK.js → gateway-AYWM5DIO.js} +7 -7
  102. package/dist/node-runtime/index.js +17 -17
  103. package/dist/node-runtime/{install-cli-C3CF7O7N.js → install-cli-3BO4MMQ6.js} +1 -1
  104. package/dist/node-runtime/{interactive-mode-LOM6AIF6.js → interactive-mode-4MFRKAHG.js} +13 -13
  105. package/dist/node-runtime/{interactive-view-IDSCPPK7.js → interactive-view-TUZHCQM3.js} +5 -5
  106. package/dist/node-runtime/{lunr-browser-YNW7FTYX.js → lunr-browser-RYFIIVJN.js} +91 -4
  107. package/dist/node-runtime/{lunr-cron-BKHGNBKT.js → lunr-cron-YWXEPZMQ.js} +4 -4
  108. package/dist/node-runtime/main.js +14 -14
  109. package/dist/node-runtime/{mobile-commands-HMP25WBC.js → mobile-commands-LVHDAUDP.js} +4 -4
  110. package/dist/node-runtime/{package-manager-cli-VCK4E2RC.js → package-manager-cli-6GT3Z3CK.js} +9 -9
  111. package/dist/node-runtime/{pi-subagents-FEUDLJOE.js → pi-subagents-CDWK2AKY.js} +44 -10
  112. package/dist/node-runtime/rpc-entry.js +14 -14
  113. package/dist/node-runtime/{rpc-mode-P5ODXPEG.js → rpc-mode-O3XV4SID.js} +2 -2
  114. package/dist/node-runtime/{session-selector-LHRMJOKT.js → session-selector-GIM4DHQ2.js} +4 -4
  115. package/dist/node-runtime/{settings-manager-UUZ6NUXI.js → settings-manager-6VEMXRDL.js} +1 -1
  116. package/dist/node-runtime/{setup-NRXVZBLJ.js → setup-5SR2J35A.js} +1 -1
  117. package/dist/node-runtime/{subagent-executor-MLUMBWCP.js → subagent-executor-M5VWB3D3.js} +8 -4
  118. package/dist/node-runtime/{theme-U7IGOA7O.js → theme-UOO5RVFN.js} +1 -1
  119. package/dist/node-runtime/{update-cli-4TP25CNW.js → update-cli-UVKJWRRJ.js} +1 -1
  120. package/docs/features.md +2 -0
  121. package/docs/settings.md +1 -0
  122. package/docs/usage.md +2 -2
  123. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  124. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  125. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  126. package/examples/extensions/gondolin/package-lock.json +2 -2
  127. package/examples/extensions/gondolin/package.json +1 -1
  128. package/examples/extensions/sandbox/package-lock.json +2 -2
  129. package/examples/extensions/sandbox/package.json +1 -1
  130. package/examples/extensions/with-deps/package-lock.json +2 -2
  131. package/examples/extensions/with-deps/package.json +1 -1
  132. package/package.json +4 -4
@@ -9,7 +9,7 @@ interface CommunicationArgs {
9
9
  reason?: string;
10
10
  message?: string;
11
11
  }
12
- export declare function renderCommunicationCall(name: string, args: CommunicationArgs, theme: Theme, context: Pick<ToolRenderContext<unknown, CommunicationArgs>, "result" | "expanded"> | undefined, communication?: SubagentCommunication): Container;
12
+ export declare function renderCommunicationCall(name: string, args: CommunicationArgs, theme: Theme, context: Pick<ToolRenderContext<unknown, CommunicationArgs>, "result" | "expanded"> | undefined, communication?: SubagentCommunication, displayTitle?: string): Container;
13
13
  export declare function renderCommunicationResult(content: Array<{
14
14
  type: string;
15
15
  text?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"communication.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/tui/communication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8CAA8C,CAAC;AAC1E,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE7F,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAGhG;AAED,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,CAOlH;AAED,UAAU,iBAAiB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG,SAAS,EAC/F,aAAa,CAAC,EAAE,qBAAqB,GACnC,SAAS,CAQX;AAED,wBAAgB,yBAAyB,CACxC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACV,SAAS,CAcX","sourcesContent":["import { Box, Container, Text } from \"@ashx-j/lunr-tui\";\nimport type { ToolRenderContext } from \"../../../../core/extensions/types.ts\";\nimport type { Theme } from \"../../../../modes/interactive/theme/theme.ts\";\nimport { readCommunication, type SubagentCommunication } from \"../intercom/communication.ts\";\n\nexport function renderCommunicationBody(communication: SubagentCommunication, theme: Theme): Text {\n\tconst direction = communication.direction === \"from\" ? \"From\" : \"To\";\n\treturn new Text(`${theme.fg(\"muted\", `${direction}: ${communication.peer}`)}\\n\\n${communication.message}`, 0, 0);\n}\n\nexport function renderCommunicationCard(communication: SubagentCommunication, expanded: boolean, theme: Theme): Box {\n\tconst box = new Box(1, 1, (text) => theme.bg(\"toolSuccessBg\", text));\n\tbox.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(`● subagent ${communication.kind}`)), 0, 0));\n\tif (expanded) {\n\t\tbox.addChild(renderCommunicationBody(communication, theme));\n\t}\n\treturn box;\n}\n\ninterface CommunicationArgs {\n\taction?: string;\n\treason?: string;\n\tmessage?: string;\n}\n\ninterface CommunicationResultDetails {\n\tcommunication?: SubagentCommunication;\n\tresponse?: string;\n\tsteering?: { state?: string };\n\tasyncId?: string;\n\tstate?: string;\n}\n\nexport function renderCommunicationCall(\n\tname: string,\n\targs: CommunicationArgs,\n\ttheme: Theme,\n\tcontext: Pick<ToolRenderContext<unknown, CommunicationArgs>, \"result\" | \"expanded\"> | undefined,\n\tcommunication?: SubagentCommunication,\n): Container {\n\tconst container = new Container();\n\tconst details = context?.result?.details as CommunicationResultDetails | undefined;\n\tconst saved = readCommunication(details?.communication) ?? communication;\n\tconst action = args.action ?? (args.reason === \"need_decision\" ? \"request\" : args.reason === \"interview_request\" ? \"interview\" : args.reason === \"progress_update\" ? \"progress\" : args.reason);\n\tcontainer.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(`${name}${action ? ` ${action}` : \"\"}`)), 0, 0));\n\tif (context?.expanded && saved) container.addChild(renderCommunicationBody(saved, theme));\n\treturn container;\n}\n\nexport function renderCommunicationResult(\n\tcontent: Array<{ type: string; text?: string }>,\n\tdetails: unknown,\n\texpanded: boolean,\n\tisError: boolean,\n\ttheme: Theme,\n): Container {\n\tconst container = new Container();\n\tif (!expanded) return container;\n\tif (isError) {\n\t\tcontainer.addChild(new Text(theme.fg(\"error\", content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\")), 0, 0));\n\t} else {\n\t\tconst saved = details as CommunicationResultDetails | undefined;\n\t\tif (saved?.response) container.addChild(new Text(`\\n${theme.fg(\"muted\", \"From: Supervisor\")}\\n\\n${saved.response}`, 0, 0));\n\t\telse if (saved?.steering?.state) container.addChild(new Text(`\\nDelivery: ${saved.steering.state === \"recovered\" ? \"recovered; replacement launched\" : saved.steering.state}`, 0, 0));\n\t\telse if (saved?.asyncId && saved.communication) container.addChild(new Text(\"\\nContinuation launched.\", 0, 0));\n\t\telse if (saved?.state && saved.communication) container.addChild(new Text(`\\n${saved.state === \"pending\" ? \"Question queued; awaiting an answer.\" : saved.state}`, 0, 0));\n\t\telse if (!saved?.communication) container.addChild(new Text(content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\"), 0, 0));\n\t}\n\treturn container;\n}\n"]}
1
+ {"version":3,"file":"communication.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/tui/communication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8CAA8C,CAAC;AAC1E,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE7F,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAGhG;AAED,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,CAOlH;AAED,UAAU,iBAAiB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,EACvB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG,SAAS,EAC/F,aAAa,CAAC,EAAE,qBAAqB,EACrC,YAAY,CAAC,EAAE,MAAM,GACnB,SAAS,CASX;AAED,wBAAgB,yBAAyB,CACxC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACV,SAAS,CAcX","sourcesContent":["import { Box, Container, Text } from \"@ashx-j/lunr-tui\";\nimport type { ToolRenderContext } from \"../../../../core/extensions/types.ts\";\nimport type { Theme } from \"../../../../modes/interactive/theme/theme.ts\";\nimport { readCommunication, type SubagentCommunication } from \"../intercom/communication.ts\";\n\nexport function renderCommunicationBody(communication: SubagentCommunication, theme: Theme): Text {\n\tconst direction = communication.direction === \"from\" ? \"From\" : \"To\";\n\treturn new Text(`${theme.fg(\"muted\", `${direction}: ${communication.peer}`)}\\n\\n${communication.message}`, 0, 0);\n}\n\nexport function renderCommunicationCard(communication: SubagentCommunication, expanded: boolean, theme: Theme): Box {\n\tconst box = new Box(1, 1, (text) => theme.bg(\"toolSuccessBg\", text));\n\tbox.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(`● subagent ${communication.kind}`)), 0, 0));\n\tif (expanded) {\n\t\tbox.addChild(renderCommunicationBody(communication, theme));\n\t}\n\treturn box;\n}\n\ninterface CommunicationArgs {\n\taction?: string;\n\treason?: string;\n\tmessage?: string;\n}\n\ninterface CommunicationResultDetails {\n\tcommunication?: SubagentCommunication;\n\tresponse?: string;\n\tsteering?: { state?: string };\n\tasyncId?: string;\n\tstate?: string;\n}\n\nexport function renderCommunicationCall(\n\tname: string,\n\targs: CommunicationArgs,\n\ttheme: Theme,\n\tcontext: Pick<ToolRenderContext<unknown, CommunicationArgs>, \"result\" | \"expanded\"> | undefined,\n\tcommunication?: SubagentCommunication,\n\tdisplayTitle?: string,\n): Container {\n\tconst container = new Container();\n\tconst details = context?.result?.details as CommunicationResultDetails | undefined;\n\tconst saved = readCommunication(details?.communication) ?? communication;\n\tconst action = args.action ?? (args.reason === \"need_decision\" ? \"request\" : args.reason === \"interview_request\" ? \"interview\" : args.reason === \"progress_update\" ? \"progress\" : args.reason);\n\tconst title = theme.fg(\"toolTitle\", theme.bold(`${name}${action ? ` ${action}` : \"\"}`));\n\tcontainer.addChild(new Text(displayTitle ? `${title} ${theme.fg(\"accent\", displayTitle)}` : title, 0, 0));\n\tif (context?.expanded && saved) container.addChild(renderCommunicationBody(saved, theme));\n\treturn container;\n}\n\nexport function renderCommunicationResult(\n\tcontent: Array<{ type: string; text?: string }>,\n\tdetails: unknown,\n\texpanded: boolean,\n\tisError: boolean,\n\ttheme: Theme,\n): Container {\n\tconst container = new Container();\n\tif (!expanded) return container;\n\tif (isError) {\n\t\tcontainer.addChild(new Text(theme.fg(\"error\", content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\")), 0, 0));\n\t} else {\n\t\tconst saved = details as CommunicationResultDetails | undefined;\n\t\tif (saved?.response) container.addChild(new Text(`\\n${theme.fg(\"muted\", \"From: Supervisor\")}\\n\\n${saved.response}`, 0, 0));\n\t\telse if (saved?.steering?.state) container.addChild(new Text(`\\nDelivery: ${saved.steering.state === \"recovered\" ? \"recovered; replacement launched\" : saved.steering.state}`, 0, 0));\n\t\telse if (saved?.asyncId && saved.communication) container.addChild(new Text(\"\\nContinuation launched.\", 0, 0));\n\t\telse if (saved?.state && saved.communication) container.addChild(new Text(`\\n${saved.state === \"pending\" ? \"Question queued; awaiting an answer.\" : saved.state}`, 0, 0));\n\t\telse if (!saved?.communication) container.addChild(new Text(content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\"), 0, 0));\n\t}\n\treturn container;\n}\n"]}
@@ -12,12 +12,13 @@ export function renderCommunicationCard(communication, expanded, theme) {
12
12
  }
13
13
  return box;
14
14
  }
15
- export function renderCommunicationCall(name, args, theme, context, communication) {
15
+ export function renderCommunicationCall(name, args, theme, context, communication, displayTitle) {
16
16
  const container = new Container();
17
17
  const details = context?.result?.details;
18
18
  const saved = readCommunication(details?.communication) ?? communication;
19
19
  const action = args.action ?? (args.reason === "need_decision" ? "request" : args.reason === "interview_request" ? "interview" : args.reason === "progress_update" ? "progress" : args.reason);
20
- container.addChild(new Text(theme.fg("toolTitle", theme.bold(`${name}${action ? ` ${action}` : ""}`)), 0, 0));
20
+ const title = theme.fg("toolTitle", theme.bold(`${name}${action ? ` ${action}` : ""}`));
21
+ container.addChild(new Text(displayTitle ? `${title} ${theme.fg("accent", displayTitle)}` : title, 0, 0));
21
22
  if (context?.expanded && saved)
22
23
  container.addChild(renderCommunicationBody(saved, theme));
23
24
  return container;
@@ -1 +1 @@
1
- {"version":3,"file":"communication.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/tui/communication.ts"],"names":[],"mappings":"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","sourcesContent":["import { Box, Container, Text } from \"@ashx-j/lunr-tui\";\nimport type { ToolRenderContext } from \"../../../../core/extensions/types.ts\";\nimport type { Theme } from \"../../../../modes/interactive/theme/theme.ts\";\nimport { readCommunication, type SubagentCommunication } from \"../intercom/communication.ts\";\n\nexport function renderCommunicationBody(communication: SubagentCommunication, theme: Theme): Text {\n\tconst direction = communication.direction === \"from\" ? \"From\" : \"To\";\n\treturn new Text(`${theme.fg(\"muted\", `${direction}: ${communication.peer}`)}\\n\\n${communication.message}`, 0, 0);\n}\n\nexport function renderCommunicationCard(communication: SubagentCommunication, expanded: boolean, theme: Theme): Box {\n\tconst box = new Box(1, 1, (text) => theme.bg(\"toolSuccessBg\", text));\n\tbox.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(`● subagent ${communication.kind}`)), 0, 0));\n\tif (expanded) {\n\t\tbox.addChild(renderCommunicationBody(communication, theme));\n\t}\n\treturn box;\n}\n\ninterface CommunicationArgs {\n\taction?: string;\n\treason?: string;\n\tmessage?: string;\n}\n\ninterface CommunicationResultDetails {\n\tcommunication?: SubagentCommunication;\n\tresponse?: string;\n\tsteering?: { state?: string };\n\tasyncId?: string;\n\tstate?: string;\n}\n\nexport function renderCommunicationCall(\n\tname: string,\n\targs: CommunicationArgs,\n\ttheme: Theme,\n\tcontext: Pick<ToolRenderContext<unknown, CommunicationArgs>, \"result\" | \"expanded\"> | undefined,\n\tcommunication?: SubagentCommunication,\n): Container {\n\tconst container = new Container();\n\tconst details = context?.result?.details as CommunicationResultDetails | undefined;\n\tconst saved = readCommunication(details?.communication) ?? communication;\n\tconst action = args.action ?? (args.reason === \"need_decision\" ? \"request\" : args.reason === \"interview_request\" ? \"interview\" : args.reason === \"progress_update\" ? \"progress\" : args.reason);\n\tcontainer.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(`${name}${action ? ` ${action}` : \"\"}`)), 0, 0));\n\tif (context?.expanded && saved) container.addChild(renderCommunicationBody(saved, theme));\n\treturn container;\n}\n\nexport function renderCommunicationResult(\n\tcontent: Array<{ type: string; text?: string }>,\n\tdetails: unknown,\n\texpanded: boolean,\n\tisError: boolean,\n\ttheme: Theme,\n): Container {\n\tconst container = new Container();\n\tif (!expanded) return container;\n\tif (isError) {\n\t\tcontainer.addChild(new Text(theme.fg(\"error\", content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\")), 0, 0));\n\t} else {\n\t\tconst saved = details as CommunicationResultDetails | undefined;\n\t\tif (saved?.response) container.addChild(new Text(`\\n${theme.fg(\"muted\", \"From: Supervisor\")}\\n\\n${saved.response}`, 0, 0));\n\t\telse if (saved?.steering?.state) container.addChild(new Text(`\\nDelivery: ${saved.steering.state === \"recovered\" ? \"recovered; replacement launched\" : saved.steering.state}`, 0, 0));\n\t\telse if (saved?.asyncId && saved.communication) container.addChild(new Text(\"\\nContinuation launched.\", 0, 0));\n\t\telse if (saved?.state && saved.communication) container.addChild(new Text(`\\n${saved.state === \"pending\" ? \"Question queued; awaiting an answer.\" : saved.state}`, 0, 0));\n\t\telse if (!saved?.communication) container.addChild(new Text(content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\"), 0, 0));\n\t}\n\treturn container;\n}\n"]}
1
+ {"version":3,"file":"communication.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/tui/communication.ts"],"names":[],"mappings":"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","sourcesContent":["import { Box, Container, Text } from \"@ashx-j/lunr-tui\";\nimport type { ToolRenderContext } from \"../../../../core/extensions/types.ts\";\nimport type { Theme } from \"../../../../modes/interactive/theme/theme.ts\";\nimport { readCommunication, type SubagentCommunication } from \"../intercom/communication.ts\";\n\nexport function renderCommunicationBody(communication: SubagentCommunication, theme: Theme): Text {\n\tconst direction = communication.direction === \"from\" ? \"From\" : \"To\";\n\treturn new Text(`${theme.fg(\"muted\", `${direction}: ${communication.peer}`)}\\n\\n${communication.message}`, 0, 0);\n}\n\nexport function renderCommunicationCard(communication: SubagentCommunication, expanded: boolean, theme: Theme): Box {\n\tconst box = new Box(1, 1, (text) => theme.bg(\"toolSuccessBg\", text));\n\tbox.addChild(new Text(theme.fg(\"toolTitle\", theme.bold(`● subagent ${communication.kind}`)), 0, 0));\n\tif (expanded) {\n\t\tbox.addChild(renderCommunicationBody(communication, theme));\n\t}\n\treturn box;\n}\n\ninterface CommunicationArgs {\n\taction?: string;\n\treason?: string;\n\tmessage?: string;\n}\n\ninterface CommunicationResultDetails {\n\tcommunication?: SubagentCommunication;\n\tresponse?: string;\n\tsteering?: { state?: string };\n\tasyncId?: string;\n\tstate?: string;\n}\n\nexport function renderCommunicationCall(\n\tname: string,\n\targs: CommunicationArgs,\n\ttheme: Theme,\n\tcontext: Pick<ToolRenderContext<unknown, CommunicationArgs>, \"result\" | \"expanded\"> | undefined,\n\tcommunication?: SubagentCommunication,\n\tdisplayTitle?: string,\n): Container {\n\tconst container = new Container();\n\tconst details = context?.result?.details as CommunicationResultDetails | undefined;\n\tconst saved = readCommunication(details?.communication) ?? communication;\n\tconst action = args.action ?? (args.reason === \"need_decision\" ? \"request\" : args.reason === \"interview_request\" ? \"interview\" : args.reason === \"progress_update\" ? \"progress\" : args.reason);\n\tconst title = theme.fg(\"toolTitle\", theme.bold(`${name}${action ? ` ${action}` : \"\"}`));\n\tcontainer.addChild(new Text(displayTitle ? `${title} ${theme.fg(\"accent\", displayTitle)}` : title, 0, 0));\n\tif (context?.expanded && saved) container.addChild(renderCommunicationBody(saved, theme));\n\treturn container;\n}\n\nexport function renderCommunicationResult(\n\tcontent: Array<{ type: string; text?: string }>,\n\tdetails: unknown,\n\texpanded: boolean,\n\tisError: boolean,\n\ttheme: Theme,\n): Container {\n\tconst container = new Container();\n\tif (!expanded) return container;\n\tif (isError) {\n\t\tcontainer.addChild(new Text(theme.fg(\"error\", content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\")), 0, 0));\n\t} else {\n\t\tconst saved = details as CommunicationResultDetails | undefined;\n\t\tif (saved?.response) container.addChild(new Text(`\\n${theme.fg(\"muted\", \"From: Supervisor\")}\\n\\n${saved.response}`, 0, 0));\n\t\telse if (saved?.steering?.state) container.addChild(new Text(`\\nDelivery: ${saved.steering.state === \"recovered\" ? \"recovered; replacement launched\" : saved.steering.state}`, 0, 0));\n\t\telse if (saved?.asyncId && saved.communication) container.addChild(new Text(\"\\nContinuation launched.\", 0, 0));\n\t\telse if (saved?.state && saved.communication) container.addChild(new Text(`\\n${saved.state === \"pending\" ? \"Question queued; awaiting an answer.\" : saved.state}`, 0, 0));\n\t\telse if (!saved?.communication) container.addChild(new Text(content.filter((part) => part.type === \"text\").map((part) => part.text ?? \"\").join(\"\\n\"), 0, 0));\n\t}\n\treturn container;\n}\n"]}
@@ -146,6 +146,10 @@ export interface PromptOptions {
146
146
  /** Internal hook used by RPC mode to observe prompt preflight acceptance or rejection. */
147
147
  preflightResult?: (success: boolean) => void;
148
148
  }
149
+ export interface WaitPromptHandoff {
150
+ /** Resolves after the reserved prompt finishes its fresh parent run. */
151
+ completion: Promise<void>;
152
+ }
149
153
  /** Result from cycleModel() */
150
154
  export interface ModelCycleResult {
151
155
  model: Model<any>;
@@ -187,6 +191,11 @@ export declare class AgentSession {
187
191
  private _isAgentRunActive;
188
192
  private _idleWaitPromise;
189
193
  private _resolveIdleWait;
194
+ private _activePromptRun;
195
+ private _waitPromptHandoff;
196
+ private _waitPromptAcceptance;
197
+ private _waitPromptGeneration;
198
+ private _unregisterSubagentWaitInterruptionOwners;
190
199
  /** Tracks pending steering messages for UI display. Removed when delivered. */
191
200
  private _steeringMessages;
192
201
  /** Tracks pending follow-up messages for UI display. Removed when delivered. */
@@ -300,6 +309,8 @@ export declare class AgentSession {
300
309
  get isStreaming(): boolean;
301
310
  /** Whether the session has no active agent run, retry, auto-compaction, or queued continuation. */
302
311
  get isIdle(): boolean;
312
+ /** Whether normal Enter is still being reserved for an interrupted wait handoff. */
313
+ get isWaitPromptHandoffActive(): boolean;
303
314
  /** Current effective system prompt (includes any per-turn extension modifications) */
304
315
  get systemPrompt(): string;
305
316
  /**
@@ -365,6 +376,9 @@ export declare class AgentSession {
365
376
  private _normalizePromptGuidelines;
366
377
  private _rebuildSystemPrompt;
367
378
  private _refreshSystemPromptForCurrentModel;
379
+ private _registerSubagentWaitInterruption;
380
+ private _interruptSubagentWaits;
381
+ private _invalidateWaitPromptHandoffs;
368
382
  private _runAgentPrompt;
369
383
  private _handlePostAgentRun;
370
384
  /**
@@ -377,6 +391,11 @@ export declare class AgentSession {
377
391
  * @throws Error if no model selected or no API key available (when not streaming)
378
392
  */
379
393
  prompt(text: string, options?: PromptOptions): Promise<void>;
394
+ private _preparePromptInput;
395
+ private _createPromptMessages;
396
+ interruptSubagentWaitWithPrompt(text: string, options?: Pick<PromptOptions, "expandPromptTemplates" | "images" | "source">): Promise<WaitPromptHandoff | undefined>;
397
+ private _reserveWaitPrompt;
398
+ private _drainWaitPromptHandoff;
380
399
  private _tryExecuteExtensionCommand;
381
400
  /**
382
401
  * Expand skill commands (/skill:name args) to their full content.