@ashx-j/lunr 0.2.18 → 0.2.20

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 (190) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/README.md +2 -2
  3. package/dist/builtin-extensions/ashxj-tui.d.ts +2 -2
  4. package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
  5. package/dist/builtin-extensions/ashxj-tui.js +11 -8
  6. package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
  7. package/dist/builtin-extensions/index.d.ts.map +1 -1
  8. package/dist/builtin-extensions/index.js +0 -2
  9. package/dist/builtin-extensions/index.js.map +1 -1
  10. package/dist/builtin-extensions/pi-intercom/broker/spawn.d.ts +6 -4
  11. package/dist/builtin-extensions/pi-intercom/broker/spawn.d.ts.map +1 -1
  12. package/dist/builtin-extensions/pi-intercom/broker/spawn.js +93 -49
  13. package/dist/builtin-extensions/pi-intercom/broker/spawn.js.map +1 -1
  14. package/dist/builtin-extensions/pi-intercom/index.d.ts.map +1 -1
  15. package/dist/builtin-extensions/pi-intercom/index.js +351 -351
  16. package/dist/builtin-extensions/pi-intercom/index.js.map +1 -1
  17. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +2 -1
  18. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  19. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +80 -43
  20. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  21. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts +18 -8
  22. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  23. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +36 -11
  24. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  25. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +4 -3
  26. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
  27. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +21 -12
  28. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
  29. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts +7 -1
  30. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts.map +1 -1
  31. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.js +225 -15
  32. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.js.map +1 -1
  33. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.d.ts +29 -0
  34. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.d.ts.map +1 -0
  35. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.js +179 -0
  36. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.js.map +1 -0
  37. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.d.ts +89 -0
  38. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.d.ts.map +1 -0
  39. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.js +541 -0
  40. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.js.map +1 -0
  41. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts +9 -1
  42. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts.map +1 -1
  43. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js +34 -9
  44. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js.map +1 -1
  45. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.d.ts.map +1 -1
  46. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js +1 -2
  47. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js.map +1 -1
  48. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts +2 -1
  49. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts.map +1 -1
  50. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js +35 -8
  51. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js.map +1 -1
  52. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts +1 -1
  53. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts.map +1 -1
  54. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js +3 -3
  55. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js.map +1 -1
  56. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.d.ts +1 -0
  57. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.d.ts.map +1 -1
  58. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js +54 -38
  59. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js.map +1 -1
  60. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts +3 -6
  61. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts.map +1 -1
  62. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js +64 -5
  63. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js.map +1 -1
  64. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
  65. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js +1 -0
  66. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
  67. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
  68. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +21 -8
  69. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
  70. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  71. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +62 -16
  72. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  73. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts +2 -0
  74. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts.map +1 -1
  75. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js +75 -18
  76. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js.map +1 -1
  77. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts +13 -1
  78. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts.map +1 -1
  79. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js +67 -11
  80. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js.map +1 -1
  81. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts.map +1 -1
  82. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js +5 -2
  83. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js.map +1 -1
  84. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -1
  85. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js +13 -3
  86. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
  87. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts +3 -0
  88. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts.map +1 -1
  89. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js +68 -11
  90. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js.map +1 -1
  91. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts +12 -1
  92. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts.map +1 -1
  93. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js +21 -2
  94. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js.map +1 -1
  95. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +16 -4
  96. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
  97. package/dist/builtin-extensions/pi-subagents/src/shared/types.js +1 -1
  98. package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
  99. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +2 -0
  100. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  101. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +24 -6
  102. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  103. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +44 -4
  104. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  105. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +227 -133
  106. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  107. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.d.ts.map +1 -1
  108. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.js +1 -1
  109. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.js.map +1 -1
  110. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.d.ts +2 -13
  111. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.d.ts.map +1 -1
  112. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.js +5 -91
  113. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.js.map +1 -1
  114. package/dist/core/permissions.d.ts +1 -0
  115. package/dist/core/permissions.d.ts.map +1 -1
  116. package/dist/core/permissions.js +8 -4
  117. package/dist/core/permissions.js.map +1 -1
  118. package/dist/core/plan-mode.d.ts.map +1 -1
  119. package/dist/core/plan-mode.js +0 -5
  120. package/dist/core/plan-mode.js.map +1 -1
  121. package/dist/core/runtime-bridges.d.ts.map +1 -1
  122. package/dist/core/runtime-bridges.js +0 -2
  123. package/dist/core/runtime-bridges.js.map +1 -1
  124. package/dist/core/subagent-cancellation.d.ts +21 -0
  125. package/dist/core/subagent-cancellation.d.ts.map +1 -0
  126. package/dist/core/subagent-cancellation.js +53 -0
  127. package/dist/core/subagent-cancellation.js.map +1 -0
  128. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  129. package/dist/modes/interactive/components/assistant-message.js +12 -18
  130. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  131. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  132. package/dist/modes/interactive/components/tool-execution.js +12 -0
  133. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  134. package/dist/modes/interactive/interactive-mode.d.ts +1 -2
  135. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  136. package/dist/modes/interactive/interactive-mode.js +29 -22
  137. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  138. package/dist/node-runtime/{agent-session-services-35WNVGMR.js → agent-session-services-75JKASCW.js} +3 -3
  139. package/dist/node-runtime/{builtin-extensions-QATGXENO.js → builtin-extensions-X4JMM4ZS.js} +3 -3
  140. package/dist/node-runtime/{chunk-XATUM2HK.js → chunk-25I2BHAA.js} +1 -1
  141. package/dist/node-runtime/{chunk-MCUNIRD5.js → chunk-46ECNOLF.js} +477 -246
  142. package/dist/node-runtime/{chunk-J26TSGDL.js → chunk-6N22HULO.js} +8 -5
  143. package/dist/node-runtime/{chunk-NI6OTSBH.js → chunk-AL2FMKKM.js} +7 -7
  144. package/dist/node-runtime/chunk-AOFXZQKA.js +24 -0
  145. package/dist/node-runtime/chunk-BBUVIEZB.js +51 -0
  146. package/dist/node-runtime/{chunk-EBF6COVM.js → chunk-ELWEXVO5.js} +7 -7
  147. package/dist/node-runtime/{chunk-R5EDISSV.js → chunk-JHYKXIMM.js} +5 -2
  148. package/dist/node-runtime/{chunk-ATGA2WLC.js → chunk-JYNNB7DU.js} +397 -34
  149. package/dist/node-runtime/{chunk-ZBV7FAHG.js → chunk-K3646JTM.js} +17 -118
  150. package/dist/node-runtime/{chunk-PNJSG3IZ.js → chunk-LTYWTR3V.js} +1 -369
  151. package/dist/node-runtime/{chunk-G4P75AIS.js → chunk-QKFMBRAL.js} +47 -54
  152. package/dist/node-runtime/cli-runtime.js +1 -1
  153. package/dist/node-runtime/{command-AAV3YRR5.js → command-RBTRL55A.js} +1 -1
  154. package/dist/node-runtime/{gateway-OAC4OBBL.js → gateway-L4ANRTVE.js} +2 -2
  155. package/dist/node-runtime/index.js +10 -9
  156. package/dist/node-runtime/{interactive-mode-2SZUO53H.js → interactive-mode-HPUNH7SV.js} +5 -4
  157. package/dist/node-runtime/{interactive-view-S6J3QHEF.js → interactive-view-ILS6TAN5.js} +1 -1
  158. package/dist/node-runtime/{lunr-cron-AUUYP4N4.js → lunr-cron-NNYTWTGF.js} +2 -2
  159. package/dist/node-runtime/main.js +8 -8
  160. package/dist/node-runtime/{pi-intercom-EEMBGQID.js → pi-intercom-DDQMRNPJ.js} +96 -76
  161. package/dist/node-runtime/{pi-subagents-7YJ3I4VE.js → pi-subagents-T5WMMLBB.js} +1040 -318
  162. package/dist/node-runtime/rpc-entry.js +8 -8
  163. package/dist/node-runtime/{runtime-bridges-3RKBDLNA.js → runtime-bridges-NJQERQ72.js} +2 -4
  164. package/dist/node-runtime/{subagent-executor-5Q5A4HJ2.js → subagent-executor-SRFC26SJ.js} +168 -249
  165. package/docs/features.md +17 -3
  166. package/docs/keybindings.md +3 -1
  167. package/docs/settings.md +1 -1
  168. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  169. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  170. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  171. package/examples/extensions/gondolin/package-lock.json +2 -2
  172. package/examples/extensions/gondolin/package.json +1 -1
  173. package/examples/extensions/sandbox/package-lock.json +2 -2
  174. package/examples/extensions/sandbox/package.json +1 -1
  175. package/examples/extensions/with-deps/package-lock.json +2 -2
  176. package/examples/extensions/with-deps/package.json +1 -1
  177. package/package.json +4 -4
  178. package/dist/builtin-extensions/lunr-settings-tools.d.ts +0 -4
  179. package/dist/builtin-extensions/lunr-settings-tools.d.ts.map +0 -1
  180. package/dist/builtin-extensions/lunr-settings-tools.js +0 -120
  181. package/dist/builtin-extensions/lunr-settings-tools.js.map +0 -1
  182. package/dist/core/settings-tools-bridge.d.ts +0 -35
  183. package/dist/core/settings-tools-bridge.d.ts.map +0 -1
  184. package/dist/core/settings-tools-bridge.js +0 -56
  185. package/dist/core/settings-tools-bridge.js.map +0 -1
  186. package/dist/modes/interactive/injected-context.d.ts +0 -2
  187. package/dist/modes/interactive/injected-context.d.ts.map +0 -1
  188. package/dist/modes/interactive/injected-context.js +0 -7
  189. package/dist/modes/interactive/injected-context.js.map +0 -1
  190. package/dist/node-runtime/chunk-3NMWLTPV.js +0 -64
@@ -389,13 +389,13 @@ var IntercomClient = class extends EventEmitter {
389
389
 
390
390
  // packages/coding-agent/dist/builtin-extensions/pi-intercom/broker/spawn.js
391
391
  import { spawn } from "child_process";
392
- import { existsSync, readFileSync as readFileSync2, unlinkSync, writeFileSync } from "fs";
392
+ import { closeSync, existsSync, openSync, readFileSync as readFileSync2, unlinkSync, writeFileSync } from "fs";
393
393
  import { join as join2, dirname } from "path";
394
394
  import { fileURLToPath } from "url";
395
395
  import { createRequire } from "module";
396
396
  import net2 from "net";
397
397
  import { randomUUID as randomUUID2 } from "crypto";
398
- var INTERCOM_DIR = getIntercomDirPath(), EXTENSION_DIR = join2(dirname(fileURLToPath(new URL("../builtin-extensions/pi-intercom/broker/spawn.js", import.meta.url).href)), ".."), BROKER_PID = join2(INTERCOM_DIR, "broker.pid"), BROKER_SPAWN_LOCK = join2(INTERCOM_DIR, "broker.spawn.lock");
398
+ var INTERCOM_DIR = getIntercomDirPath(), EXTENSION_DIR = join2(dirname(fileURLToPath(new URL("../builtin-extensions/pi-intercom/broker/spawn.js", import.meta.url).href)), ".."), BROKER_PID = join2(INTERCOM_DIR, "broker.pid"), BROKER_SPAWN_LOCK = join2(INTERCOM_DIR, "broker.spawn.lock"), BROKER_STDERR = join2(INTERCOM_DIR, "broker.stderr.log"), NATIVE_SUPERVISOR_CHANNEL_DIR_ENV = "PI_SUBAGENT_SUPERVISOR_CHANNEL_DIR";
399
399
  function sleep(ms) {
400
400
  return new Promise((resolve2) => setTimeout(resolve2, ms));
401
401
  }
@@ -407,6 +407,16 @@ function getTsxCliPath(extensionDir = EXTENSION_DIR) {
407
407
  return join2(extensionDir, "node_modules", "tsx", "dist", "cli.mjs");
408
408
  }
409
409
  }
410
+ function isNativeSupervisorChannelActive(env = process.env) {
411
+ return !!env[NATIVE_SUPERVISOR_CHANNEL_DIR_ENV]?.trim();
412
+ }
413
+ function resolveBrokerScriptPath(brokerDir = dirname(fileURLToPath(new URL("../builtin-extensions/pi-intercom/broker/spawn.js", import.meta.url).href))) {
414
+ let tsPath = join2(brokerDir, "broker.ts");
415
+ return existsSync(tsPath) ? tsPath : join2(brokerDir, "broker.js");
416
+ }
417
+ function isCompiledBrokerScript(brokerPath) {
418
+ return brokerPath.endsWith(".js");
419
+ }
410
420
  function quoteWindowsArg(value) {
411
421
  return `"${value.replace(/"/g, '""')}"`;
412
422
  }
@@ -416,8 +426,15 @@ function getWindowsHiddenLauncherPath(intercomDir = INTERCOM_DIR) {
416
426
  function usesDefaultBrokerCommand(brokerCommand, brokerArgs) {
417
427
  return brokerCommand === "npx" && brokerArgs.length === 2 && brokerArgs[0] === "--no-install" && brokerArgs[1] === "tsx";
418
428
  }
419
- function getWindowsBrokerCommandLine(brokerPath, extensionDir = EXTENSION_DIR, nodePath = process.execPath, brokerCommand = "npx", brokerArgs = ["--no-install", "tsx"]) {
420
- return usesDefaultBrokerCommand(brokerCommand, brokerArgs) ? [quoteWindowsArg(nodePath), quoteWindowsArg(getTsxCliPath(extensionDir)), quoteWindowsArg(brokerPath)].join(" ") : [quoteWindowsArg(brokerCommand), ...brokerArgs.map(quoteWindowsArg), quoteWindowsArg(brokerPath)].join(" ");
429
+ function defaultBrokerArgv(brokerPath, extensionDir, nodePath, brokerCommand, brokerArgs) {
430
+ return usesDefaultBrokerCommand(brokerCommand, brokerArgs) && isCompiledBrokerScript(brokerPath) ? { command: nodePath, args: [brokerPath] } : usesDefaultBrokerCommand(brokerCommand, brokerArgs) ? { command: nodePath, args: [getTsxCliPath(extensionDir), brokerPath] } : { command: brokerCommand, args: [...brokerArgs, brokerPath] };
431
+ }
432
+ function withWindowsStderr(commandLine, stderrLogPath) {
433
+ return stderrLogPath ? `cmd.exe /s /c "${`${commandLine} 1>NUL 2>>${quoteWindowsArg(stderrLogPath)}`}"` : commandLine;
434
+ }
435
+ function getWindowsBrokerCommandLine(brokerPath, extensionDir = EXTENSION_DIR, nodePath = process.execPath, brokerCommand = "npx", brokerArgs = ["--no-install", "tsx"], stderrLogPath) {
436
+ let argv = defaultBrokerArgv(brokerPath, extensionDir, nodePath, brokerCommand, brokerArgs), commandLine = [quoteWindowsArg(argv.command), ...argv.args.map(quoteWindowsArg)].join(" ");
437
+ return withWindowsStderr(commandLine, stderrLogPath);
421
438
  }
422
439
  function getWindowsHiddenLauncherScript(commandLine) {
423
440
  return [
@@ -440,7 +457,7 @@ function writeWindowsHiddenLauncher(commandLine, launcherPath = getWindowsHidden
440
457
  mode: INTERCOM_RUNTIME_FILE_MODE
441
458
  }), restrictIntercomRuntimeFile(launcherPath), launcherPath;
442
459
  }
443
- function getBrokerLaunchSpec(brokerPath, brokerCommand, brokerArgs, extensionDir = EXTENSION_DIR, platform = process.platform, intercomDir = INTERCOM_DIR, nodePath = process.execPath) {
460
+ function getBrokerLaunchSpec(brokerPath, brokerCommand, brokerArgs, extensionDir = EXTENSION_DIR, platform = process.platform, intercomDir = INTERCOM_DIR, nodePath = process.execPath, stderrLogPath) {
444
461
  if (platform === "win32") {
445
462
  let launcherPath = getWindowsHiddenLauncherPath(intercomDir);
446
463
  return {
@@ -448,23 +465,20 @@ function getBrokerLaunchSpec(brokerPath, brokerCommand, brokerArgs, extensionDir
448
465
  command: "wscript.exe",
449
466
  args: [launcherPath],
450
467
  launcherPath,
451
- launcherCommandLine: getWindowsBrokerCommandLine(brokerPath, extensionDir, nodePath, brokerCommand, brokerArgs)
468
+ launcherCommandLine: getWindowsBrokerCommandLine(brokerPath, extensionDir, nodePath, brokerCommand, brokerArgs, stderrLogPath)
452
469
  };
453
470
  }
454
- return usesDefaultBrokerCommand(brokerCommand, brokerArgs) ? {
455
- kind: "direct",
456
- command: nodePath,
457
- args: [getTsxCliPath(extensionDir), brokerPath]
458
- } : {
471
+ let argv = defaultBrokerArgv(brokerPath, extensionDir, nodePath, brokerCommand, brokerArgs);
472
+ return {
459
473
  kind: "direct",
460
- command: brokerCommand,
461
- args: [...brokerArgs, brokerPath]
474
+ command: argv.command,
475
+ args: argv.args
462
476
  };
463
477
  }
464
- function getBrokerSpawnOptions(extensionDir = EXTENSION_DIR, env = process.env) {
478
+ function getBrokerSpawnOptions(extensionDir = EXTENSION_DIR, env = process.env, stderrFd) {
465
479
  return {
466
480
  detached: !0,
467
- stdio: "ignore",
481
+ stdio: stderrFd === void 0 ? "ignore" : ["ignore", "ignore", stderrFd],
468
482
  cwd: extensionDir,
469
483
  env: { ...env, PI_CODING_AGENT_DIR: getAgentDirPath(env), NODE_NO_WARNINGS: "1" },
470
484
  windowsHide: !0
@@ -474,7 +488,7 @@ function toError2(error) {
474
488
  return error instanceof Error ? error : new Error(String(error));
475
489
  }
476
490
  async function spawnBrokerIfNeeded(brokerCommand, brokerArgs) {
477
- if (ensureIntercomRuntimeDir(INTERCOM_DIR), await isBrokerRunning())
491
+ if (isNativeSupervisorChannelActive() || (ensureIntercomRuntimeDir(INTERCOM_DIR), await isBrokerRunning()))
478
492
  return;
479
493
  if (!acquireSpawnLock()) {
480
494
  await waitForBroker();
@@ -483,29 +497,43 @@ async function spawnBrokerIfNeeded(brokerCommand, brokerArgs) {
483
497
  try {
484
498
  if (await isBrokerRunning())
485
499
  return;
486
- let brokerPath = join2(dirname(fileURLToPath(new URL("../builtin-extensions/pi-intercom/broker/spawn.js", import.meta.url).href)), "broker.ts"), launch = getBrokerLaunchSpec(brokerPath, brokerCommand, brokerArgs);
500
+ let brokerPath = resolveBrokerScriptPath(), launch = getBrokerLaunchSpec(brokerPath, brokerCommand, brokerArgs, EXTENSION_DIR, process.platform, INTERCOM_DIR, process.execPath, BROKER_STDERR);
487
501
  launch.kind === "windows-launcher" && writeWindowsHiddenLauncher(launch.launcherCommandLine, launch.launcherPath);
488
- let child = spawn(launch.command, launch.args, getBrokerSpawnOptions());
489
- child.unref(), await new Promise((resolve2, reject) => {
490
- let cleanup = () => {
491
- child.off("error", onError), child.off("exit", onExit);
492
- }, onError = (error) => {
493
- cleanup(), reject(new Error(`Failed to spawn intercom broker: ${error.message}`, { cause: error }));
494
- }, onExit = (code, signal) => {
495
- if (!(launch.kind === "windows-launcher" && code === 0 && signal === null)) {
496
- if (cleanup(), signal) {
497
- reject(new Error(`Intercom broker exited before startup with signal ${signal}`));
498
- return;
502
+ let stderrFd;
503
+ try {
504
+ stderrFd = openSync(BROKER_STDERR, "a");
505
+ } catch {
506
+ stderrFd = void 0;
507
+ }
508
+ try {
509
+ let child = spawn(launch.command, launch.args, getBrokerSpawnOptions(EXTENSION_DIR, process.env, launch.kind === "windows-launcher" ? void 0 : stderrFd));
510
+ child.unref(), await new Promise((resolve2, reject) => {
511
+ let cleanup = () => {
512
+ child.off("error", onError), child.off("exit", onExit);
513
+ }, onError = (error) => {
514
+ cleanup(), reject(new Error(`Failed to spawn intercom broker: ${error.message}`, { cause: error }));
515
+ }, onExit = (code, signal) => {
516
+ if (!(launch.kind === "windows-launcher" && code === 0 && signal === null)) {
517
+ if (cleanup(), signal) {
518
+ reject(new Error(`Intercom broker exited before startup with signal ${signal}`));
519
+ return;
520
+ }
521
+ reject(new Error(`Intercom broker exited before startup with code ${code ?? "unknown"}`));
499
522
  }
500
- reject(new Error(`Intercom broker exited before startup with code ${code ?? "unknown"}`));
501
- }
502
- };
503
- child.once("error", onError), child.once("exit", onExit), waitForBroker().then(() => {
504
- cleanup(), resolve2();
505
- }, (error) => {
506
- cleanup(), reject(toError2(error));
523
+ };
524
+ child.once("error", onError), child.once("exit", onExit), waitForBroker().then(() => {
525
+ cleanup(), resolve2();
526
+ }, (error) => {
527
+ cleanup(), reject(toError2(error));
528
+ });
507
529
  });
508
- });
530
+ } finally {
531
+ if (stderrFd !== void 0)
532
+ try {
533
+ closeSync(stderrFd);
534
+ } catch {
535
+ }
536
+ }
509
537
  } finally {
510
538
  releaseSpawnLock();
511
539
  }
@@ -1531,8 +1559,9 @@ ${entry.bodyText}`,
1531
1559
  }
1532
1560
  function startSessionRuntime(ctx) {
1533
1561
  let previousClient = client;
1534
- previousClient && (client = null, previousClient.disconnect().catch(() => {
1535
- })), shuttingDown = !1, disposed = !1, runtimeStarted = !0, runtimeGeneration += 1, reconnectAttempt = 0, clearReconnectTimer(), clearStartupConnectTimer(), clearNamePollTimer(), clearInboundFlushTimer(), rejectReplyWaiter(new Error("Session replaced")), replyTracker.reset(), pendingIdleMessages.length = 0, runtimeContext = ctx, currentSessionId = ctx.sessionManager.getSessionId(), publishIntercomSessionId(currentSessionId), currentModel = ctx.model?.id ?? "unknown", sessionStartedAt = Date.now(), lastPresenceName = buildPresenceIdentity(pi, currentSessionId).name, agentRunning = !1, activeTools.clear(), startNamePoll();
1562
+ if (previousClient && (client = null, previousClient.disconnect().catch(() => {
1563
+ })), shuttingDown = !1, disposed = !1, runtimeStarted = !0, runtimeGeneration += 1, reconnectAttempt = 0, clearReconnectTimer(), clearStartupConnectTimer(), clearNamePollTimer(), clearInboundFlushTimer(), rejectReplyWaiter(new Error("Session replaced")), replyTracker.reset(), pendingIdleMessages.length = 0, runtimeContext = ctx, currentSessionId = ctx.sessionManager.getSessionId(), publishIntercomSessionId(currentSessionId), currentModel = ctx.model?.id ?? "unknown", sessionStartedAt = Date.now(), lastPresenceName = buildPresenceIdentity(pi, currentSessionId).name, agentRunning = !1, activeTools.clear(), startNamePoll(), isNativeSupervisorChannelActive())
1564
+ return;
1536
1565
  let startupGeneration = runtimeGeneration;
1537
1566
  startupConnectTimer = setTimeout(() => {
1538
1567
  startupConnectTimer = null, getLiveContext(ctx, startupGeneration) && ensureConnected("startup").catch(() => {
@@ -1547,50 +1576,41 @@ ${entry.bodyText}`,
1547
1576
  ...error ? { error: getErrorMessage(error) } : {}
1548
1577
  });
1549
1578
  }
1579
+ let resultDeliveries = /* @__PURE__ */ new Map(), acknowledgedResults = [];
1550
1580
  function relaySubagentIntercomPayload(payload, options) {
1551
1581
  let parsed = parseSubagentIntercomPayload(payload);
1552
1582
  if (!parsed)
1553
1583
  return;
1554
- let relayGeneration = runtimeGeneration;
1555
- (async () => {
1584
+ let relayGeneration = runtimeGeneration, key = options.acknowledge && parsed.requestId ? `${relayGeneration}:${parsed.requestId}` : void 0, delivery = key ? resultDeliveries.get(key) : void 0;
1585
+ delivery || (delivery = (async () => {
1556
1586
  let relayStillLive = () => !runtimeStarted || !!getLiveContext(runtimeContext, relayGeneration);
1557
- if (!relayStillLive())
1558
- return;
1559
- if (currentSessionTargetMatches(parsed.to)) {
1560
- deliverLocalSubagentRelayMessage(options.sender, options.status, parsed.message), options.acknowledge && emitResultDelivery(parsed.requestId, !0);
1561
- return;
1562
- }
1563
- let activeClient, target;
1564
1587
  try {
1565
- activeClient = await ensureConnected("background"), target = await resolveSessionTarget(activeClient, parsed.to) ?? parsed.to;
1566
- } catch (error) {
1567
1588
  if (!relayStillLive())
1568
- return;
1569
- recordSubagentDeliveryError(options.errorEntryType, parsed.to, parsed.message, error), options.acknowledge && emitResultDelivery(parsed.requestId, !1, error);
1570
- return;
1589
+ return !1;
1590
+ if (currentSessionTargetMatches(parsed.to))
1591
+ return deliverLocalSubagentRelayMessage(options.sender, options.status, parsed.message), !0;
1592
+ let activeClient = await ensureConnected("background"), target = await resolveSessionTarget(activeClient, parsed.to) ?? parsed.to;
1593
+ if (!relayStillLive())
1594
+ return !1;
1595
+ if (currentSessionTargetMatches(parsed.to, target, activeClient))
1596
+ return deliverLocalSubagentRelayMessage(options.sender, options.status, parsed.message), !0;
1597
+ let result = await activeClient.send(target, { text: parsed.message });
1598
+ if (!result.delivered)
1599
+ throw new Error(result.reason ?? "Session may not exist or has disconnected.");
1600
+ return !0;
1601
+ } catch (error) {
1602
+ return relayStillLive() && recordSubagentDeliveryError(options.errorEntryType, parsed.to, parsed.message, error), !1;
1571
1603
  }
1572
- if (relayStillLive()) {
1573
- if (currentSessionTargetMatches(parsed.to, target, activeClient)) {
1574
- deliverLocalSubagentRelayMessage(options.sender, options.status, parsed.message), options.acknowledge && emitResultDelivery(parsed.requestId, !0);
1575
- return;
1576
- }
1577
- try {
1578
- let result = await activeClient.send(target, { text: parsed.message });
1579
- if (!relayStillLive())
1580
- return;
1581
- if (!result.delivered) {
1582
- let error = new Error(result.reason ?? "Session may not exist or has disconnected.");
1583
- recordSubagentDeliveryError(options.errorEntryType, parsed.to, parsed.message, error), options.acknowledge && emitResultDelivery(parsed.requestId, !1, error);
1584
- return;
1585
- }
1586
- options.acknowledge && emitResultDelivery(parsed.requestId, !0);
1587
- } catch (error) {
1588
- if (!relayStillLive())
1589
- return;
1590
- recordSubagentDeliveryError(options.errorEntryType, parsed.to, parsed.message, error), options.acknowledge && emitResultDelivery(parsed.requestId, !1, error);
1591
- }
1604
+ })(), key && (resultDeliveries.set(key, delivery), delivery.then((delivered) => {
1605
+ if (!delivered) {
1606
+ resultDeliveries.get(key) === delivery && resultDeliveries.delete(key);
1607
+ return;
1592
1608
  }
1593
- })();
1609
+ for (acknowledgedResults.push(key); acknowledgedResults.length > 1024; )
1610
+ resultDeliveries.delete(acknowledgedResults.shift());
1611
+ }))), delivery.then((delivered) => {
1612
+ options.acknowledge && emitResultDelivery(parsed.requestId, delivered);
1613
+ });
1594
1614
  }
1595
1615
  let unsubscribeSubagentControlIntercom = pi.events.on(SUBAGENT_CONTROL_INTERCOM_EVENT, (payload) => {
1596
1616
  relaySubagentIntercomPayload(payload, {
@@ -1649,8 +1669,8 @@ ${entry.bodyText}`,
1649
1669
  if (details.error === !0 || details.delivered === !1)
1650
1670
  return { isError: !0 };
1651
1671
  });
1652
- let childOrchestratorMetadata = readChildOrchestratorMetadata();
1653
- childOrchestratorMetadata && pi.registerTool({
1672
+ let childOrchestratorMetadata = readChildOrchestratorMetadata(), nativeSupervisorChannel = isNativeSupervisorChannelActive();
1673
+ childOrchestratorMetadata && !nativeSupervisorChannel && pi.registerTool({
1654
1674
  name: "contact_supervisor",
1655
1675
  label: "Contact Supervisor",
1656
1676
  description: "Subagent-only tool for contacting the supervisor agent that delegated this task. Use need_decision when blocked, uncertain, needing approval, or facing a product/API/scope decision before continuing; this waits for the supervisor's reply. Use interview_request when multiple structured questions need supervisor answers; this also waits for a reply. Use progress_update only for meaningful progress or unexpected discoveries that change the plan; this does not wait for a reply. Do not use for routine completion handoffs.",
@@ -1847,7 +1867,7 @@ ${replyText}${replyAttachments}` }],
1847
1867
  return text += theme.fg(failed ? "error" : "text", textContent), parseWarning && (text += `
1848
1868
  ` + theme.fg("warning", `Structured reply parse issue: ${details.structuredReplyParseError}`)), new Text(text, 0, 0);
1849
1869
  }
1850
- }), pi.registerTool({
1870
+ }), nativeSupervisorChannel || pi.registerTool({
1851
1871
  name: "intercom",
1852
1872
  label: "Intercom",
1853
1873
  description: `Send a message to another pi session running on this machine.