@ashx-j/lunr 0.2.20 → 0.2.21

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 (172) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/dist/builtin-extensions/lunr-todos.d.ts +6 -5
  3. package/dist/builtin-extensions/lunr-todos.d.ts.map +1 -1
  4. package/dist/builtin-extensions/lunr-todos.js +9 -7
  5. package/dist/builtin-extensions/lunr-todos.js.map +1 -1
  6. package/dist/builtin-extensions/pi-intercom/broker/spawn.d.ts.map +1 -1
  7. package/dist/builtin-extensions/pi-intercom/broker/spawn.js +30 -21
  8. package/dist/builtin-extensions/pi-intercom/broker/spawn.js.map +1 -1
  9. package/dist/builtin-extensions/pi-intercom/index.d.ts.map +1 -1
  10. package/dist/builtin-extensions/pi-intercom/index.js +12 -3
  11. package/dist/builtin-extensions/pi-intercom/index.js.map +1 -1
  12. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.d.ts.map +1 -1
  13. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js +2 -2
  14. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js.map +1 -1
  15. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +7 -6
  16. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  17. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +63 -29
  18. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  19. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  20. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +2 -2
  21. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  22. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +3 -3
  23. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
  24. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +3 -2
  25. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
  26. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts +1 -0
  27. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts.map +1 -1
  28. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.js +26 -7
  29. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.js.map +1 -1
  30. package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.d.ts +1 -0
  31. package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.d.ts.map +1 -1
  32. package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.js +1 -1
  33. package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.js.map +1 -1
  34. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts +2 -0
  35. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts.map +1 -1
  36. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js +4 -3
  37. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js.map +1 -1
  38. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.d.ts.map +1 -1
  39. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js +2 -0
  40. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js.map +1 -1
  41. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts +6 -2
  42. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts.map +1 -1
  43. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js +23 -1
  44. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js.map +1 -1
  45. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.d.ts.map +1 -1
  46. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js +1 -0
  47. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js.map +1 -1
  48. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts +100 -0
  49. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
  50. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +46 -31
  51. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
  52. package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.d.ts +15 -2
  53. package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.d.ts.map +1 -1
  54. package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.js +14 -4
  55. package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.js.map +1 -1
  56. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
  57. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js +1 -1
  58. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
  59. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
  60. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +1 -1
  61. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
  62. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts +0 -1
  63. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  64. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +9 -9
  65. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  66. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.d.ts +1 -1
  67. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.d.ts.map +1 -1
  68. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.js +1 -1
  69. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.js.map +1 -1
  70. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +1 -0
  71. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
  72. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
  73. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts +3 -0
  74. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts.map +1 -1
  75. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js +2 -0
  76. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js.map +1 -1
  77. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts +2 -2
  78. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts.map +1 -1
  79. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js +5 -10
  80. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js.map +1 -1
  81. package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.d.ts +2 -0
  82. package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.d.ts.map +1 -0
  83. package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.js +3 -0
  84. package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.js.map +1 -0
  85. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +5 -0
  86. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
  87. package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
  88. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.d.ts.map +1 -1
  89. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.js.map +1 -1
  90. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts +7 -0
  91. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
  92. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +11 -7
  93. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
  94. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +4 -0
  95. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  96. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +22 -23
  97. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  98. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -0
  99. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  100. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +237 -374
  101. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  102. package/dist/core/customize.d.ts +2 -0
  103. package/dist/core/customize.d.ts.map +1 -1
  104. package/dist/core/customize.js +3 -0
  105. package/dist/core/customize.js.map +1 -1
  106. package/dist/core/settings-manager.d.ts +4 -0
  107. package/dist/core/settings-manager.d.ts.map +1 -1
  108. package/dist/core/settings-manager.js +11 -0
  109. package/dist/core/settings-manager.js.map +1 -1
  110. package/dist/core/subagent-spinner-setting.d.ts +6 -0
  111. package/dist/core/subagent-spinner-setting.d.ts.map +1 -0
  112. package/dist/core/subagent-spinner-setting.js +12 -0
  113. package/dist/core/subagent-spinner-setting.js.map +1 -0
  114. package/dist/core/subagent-spinner.d.ts +4 -0
  115. package/dist/core/subagent-spinner.d.ts.map +1 -0
  116. package/dist/core/subagent-spinner.js +6 -0
  117. package/dist/core/subagent-spinner.js.map +1 -0
  118. package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
  119. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  120. package/dist/modes/interactive/components/settings-selector.js +73 -1
  121. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  122. package/dist/modes/interactive/extension-widget-order.d.ts +8 -0
  123. package/dist/modes/interactive/extension-widget-order.d.ts.map +1 -0
  124. package/dist/modes/interactive/extension-widget-order.js +37 -0
  125. package/dist/modes/interactive/extension-widget-order.js.map +1 -0
  126. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  127. package/dist/modes/interactive/interactive-mode.js +15 -22
  128. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  129. package/dist/node-runtime/{agent-session-services-75JKASCW.js → agent-session-services-C743TYQE.js} +4 -3
  130. package/dist/node-runtime/{builtin-extensions-X4JMM4ZS.js → builtin-extensions-JCOPAAB5.js} +2 -1
  131. package/dist/node-runtime/{chunk-QKFMBRAL.js → chunk-2BUAYZ7K.js} +94 -25
  132. package/dist/node-runtime/chunk-5ZH3ZFIZ.js +308 -0
  133. package/dist/node-runtime/{chunk-BBUVIEZB.js → chunk-A3KMVBZV.js} +10 -1
  134. package/dist/node-runtime/{chunk-K3646JTM.js → chunk-AWVD5IEY.js} +7 -307
  135. package/dist/node-runtime/{chunk-ELWEXVO5.js → chunk-GB2MGFLI.js} +11 -11
  136. package/dist/node-runtime/chunk-LISUTZS3.js +19 -0
  137. package/dist/node-runtime/{chunk-AL2FMKKM.js → chunk-PDNXVXMD.js} +12 -12
  138. package/dist/node-runtime/{chunk-46ECNOLF.js → chunk-SY2TFMLO.js} +57 -17
  139. package/dist/node-runtime/{chunk-HQCKFM2O.js → chunk-VGYZ3APQ.js} +3 -0
  140. package/dist/node-runtime/{chunk-4DJ6HEGH.js → chunk-VZR3NCM7.js} +3 -3
  141. package/dist/node-runtime/{chunk-AOFXZQKA.js → chunk-W3SILANP.js} +1 -1
  142. package/dist/node-runtime/{chunk-CBGB57XT.js → chunk-WLLDXJRT.js} +10 -0
  143. package/dist/node-runtime/{chunk-JYNNB7DU.js → chunk-XI77KVKA.js} +2 -2
  144. package/dist/node-runtime/{chunk-4CSFRBCN.js → chunk-Y5KOEMBH.js} +1 -1
  145. package/dist/node-runtime/{chunk-AROOY4BB.js → chunk-YMEAYRBE.js} +1 -1
  146. package/dist/node-runtime/{command-RBTRL55A.js → command-P4NYCJ2M.js} +1 -1
  147. package/dist/node-runtime/{customize-XEXL2DGQ.js → customize-LF5VST47.js} +1 -1
  148. package/dist/node-runtime/{gateway-L4ANRTVE.js → gateway-BM6NLOH4.js} +1 -1
  149. package/dist/node-runtime/index.js +13 -11
  150. package/dist/node-runtime/{interactive-mode-HPUNH7SV.js → interactive-mode-EVVBA64D.js} +9 -7
  151. package/dist/node-runtime/{lunr-cron-NNYTWTGF.js → lunr-cron-4VHP4E4B.js} +1 -1
  152. package/dist/node-runtime/main.js +11 -9
  153. package/dist/node-runtime/{package-manager-cli-7RKSZGEN.js → package-manager-cli-N37546V5.js} +5 -4
  154. package/dist/node-runtime/{pi-intercom-DDQMRNPJ.js → pi-intercom-NV2LW6X7.js} +34 -33
  155. package/dist/node-runtime/{pi-subagents-T5WMMLBB.js → pi-subagents-6MUIFNDM.js} +286 -345
  156. package/dist/node-runtime/rpc-entry.js +11 -9
  157. package/dist/node-runtime/{runtime-bridges-NJQERQ72.js → runtime-bridges-2VQTLPOZ.js} +2 -2
  158. package/dist/node-runtime/{settings-manager-GHPTUN7R.js → settings-manager-CUGAZWAB.js} +2 -1
  159. package/dist/node-runtime/{subagent-executor-SRFC26SJ.js → subagent-executor-MH4A7CCF.js} +14 -46
  160. package/dist/node-runtime/{update-cli-L3JIBH2U.js → update-cli-XTZMZGOL.js} +2 -1
  161. package/docs/features.md +6 -2
  162. package/docs/settings.md +2 -1
  163. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  164. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  165. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  166. package/examples/extensions/gondolin/package-lock.json +2 -2
  167. package/examples/extensions/gondolin/package.json +1 -1
  168. package/examples/extensions/sandbox/package-lock.json +2 -2
  169. package/examples/extensions/sandbox/package.json +1 -1
  170. package/examples/extensions/with-deps/package-lock.json +2 -2
  171. package/examples/extensions/with-deps/package.json +1 -1
  172. package/package.json +4 -4
@@ -2,14 +2,15 @@
2
2
  import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
3
3
  import {
4
4
  main
5
- } from "./chunk-AL2FMKKM.js";
6
- import "./chunk-K3646JTM.js";
7
- import "./chunk-4DJ6HEGH.js";
8
- import "./chunk-AROOY4BB.js";
5
+ } from "./chunk-PDNXVXMD.js";
6
+ import "./chunk-AWVD5IEY.js";
7
+ import "./chunk-VZR3NCM7.js";
8
+ import "./chunk-YMEAYRBE.js";
9
+ import "./chunk-5ZH3ZFIZ.js";
9
10
  import "./chunk-25I2BHAA.js";
10
- import "./chunk-JYNNB7DU.js";
11
+ import "./chunk-XI77KVKA.js";
11
12
  import "./chunk-STERBGUB.js";
12
- import "./chunk-4CSFRBCN.js";
13
+ import "./chunk-Y5KOEMBH.js";
13
14
  import "./chunk-OBMWP3I5.js";
14
15
  import "./chunk-DVGWF6A2.js";
15
16
  import "./chunk-QFWG2RVL.js";
@@ -20,10 +21,11 @@ import "./chunk-KBKMCJDU.js";
20
21
  import "./chunk-CSFI6YXL.js";
21
22
  import {
22
23
  configureHttpDispatcher
23
- } from "./chunk-CBGB57XT.js";
24
+ } from "./chunk-WLLDXJRT.js";
25
+ import "./chunk-LISUTZS3.js";
24
26
  import "./chunk-GKLEQ3I4.js";
25
27
  import "./chunk-FVDOXRUD.js";
26
- import "./chunk-AOFXZQKA.js";
28
+ import "./chunk-W3SILANP.js";
27
29
  import "./chunk-W3CVH5RX.js";
28
30
  import "./chunk-LTYWTR3V.js";
29
31
  import "./chunk-PL6JKXWI.js";
@@ -35,7 +37,7 @@ import "./chunk-JHYKXIMM.js";
35
37
  import "./chunk-H2EOZYMP.js";
36
38
  import "./chunk-PVCDKGR6.js";
37
39
  import "./chunk-OR4L3IB2.js";
38
- import "./chunk-HQCKFM2O.js";
40
+ import "./chunk-VGYZ3APQ.js";
39
41
  import "./chunk-AY6CAJSL.js";
40
42
  import "./chunk-QZMODZQ2.js";
41
43
  import "./chunk-CCZJ3PYY.js";
@@ -1,10 +1,10 @@
1
1
  import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
2
  import {
3
3
  bindRuntimeBridges
4
- } from "./chunk-AOFXZQKA.js";
4
+ } from "./chunk-W3SILANP.js";
5
5
  import "./chunk-W3CVH5RX.js";
6
6
  import "./chunk-LTYWTR3V.js";
7
- import "./chunk-HQCKFM2O.js";
7
+ import "./chunk-VGYZ3APQ.js";
8
8
  import "./chunk-AY6CAJSL.js";
9
9
  import "./chunk-BRJX2PRC.js";
10
10
  export {
@@ -6,7 +6,8 @@ import {
6
6
  SKILL_TAG_CHARACTERS,
7
7
  SettingsManager,
8
8
  parseSkillTagCharacter
9
- } from "./chunk-CBGB57XT.js";
9
+ } from "./chunk-WLLDXJRT.js";
10
+ import "./chunk-LISUTZS3.js";
10
11
  import "./chunk-AY6CAJSL.js";
11
12
  import "./chunk-FQMM2EZ2.js";
12
13
  import "./chunk-Q4Q6D4IY.js";
@@ -14,6 +14,7 @@ import {
14
14
  PI_CODING_AGENT_PACKAGE_ROOT_ENV,
15
15
  RESULTS_DIR,
16
16
  SUBAGENT_ACTIONS,
17
+ SUBAGENT_ASYNC_GUIDANCE,
17
18
  SUBAGENT_ASYNC_STARTED_EVENT,
18
19
  SUBAGENT_CONTROL_EVENT,
19
20
  SUBAGENT_CONTROL_INTERCOM_EVENT,
@@ -147,6 +148,7 @@ import {
147
148
  resolveSkillsWithFallback,
148
149
  resolveStepBehavior,
149
150
  resolveSubagentIntercomTarget,
151
+ resolveSubagentRequestParams,
150
152
  resolveSubagentResultStatus,
151
153
  resolveSubagentRunId,
152
154
  resolveTopLevelParallelConcurrency,
@@ -161,6 +163,7 @@ import {
161
163
  splitThinkingSuffix,
162
164
  stripAcceptanceReport,
163
165
  stripDetailsOutputsForIntercomReceipt,
166
+ subagentLaunchRunsAsync,
164
167
  sumResultsCost,
165
168
  sumResultsUsage,
166
169
  suppressProgressForReadOnlyTask,
@@ -184,7 +187,7 @@ import {
184
187
  writeNestedControlRequest,
185
188
  writeNestedEvent,
186
189
  writePrivateAtomicJson
187
- } from "./chunk-46ECNOLF.js";
190
+ } from "./chunk-SY2TFMLO.js";
188
191
  import {
189
192
  PLAN_MODE_WRITE_SPAWN_ERROR,
190
193
  resolveChildPermissions,
@@ -894,34 +897,6 @@ var ChainClarifyComponent = class {
894
897
  }
895
898
  };
896
899
 
897
- // packages/coding-agent/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js
898
- var LAUNCH_COMPATIBLE_ACTIONS = /* @__PURE__ */ new Set(["schedule", "append-step", "resume", "steer"]);
899
- function omitExecutionModeActionAlias(params) {
900
- let action = params.action?.toLowerCase();
901
- if (action === "single" && params.task !== void 0) {
902
- let rest = { ...params };
903
- return delete rest.action, rest;
904
- }
905
- if ((action === "parallel" || action === "tasks") && (params.tasks?.length ?? 0) > 0) {
906
- let rest = { ...params };
907
- return delete rest.action, rest;
908
- }
909
- return params;
910
- }
911
- function hasLaunchFields(params) {
912
- return params.task !== void 0 || Array.isArray(params.tasks) && params.tasks.length > 0 || Array.isArray(params.chain) && params.chain.length > 0;
913
- }
914
- function omitConflictingControlAction(params) {
915
- let action = params.action?.toLowerCase();
916
- if (!action || LAUNCH_COMPATIBLE_ACTIONS.has(action) || !hasLaunchFields(params))
917
- return params;
918
- let rest = { ...params };
919
- return delete rest.action, typeof rest.task == "string" && rest.task.length > 0 && (delete rest.tasks, delete rest.chain), rest;
920
- }
921
- function resolveSubagentRequestParams(params) {
922
- return omitConflictingControlAction(omitExecutionModeActionAlias(params));
923
- }
924
-
925
900
  // packages/coding-agent/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js
926
901
  import * as fs7 from "node:fs";
927
902
  import * as path6 from "node:path";
@@ -1223,7 +1198,7 @@ function hasMutationToolCall(messages) {
1223
1198
  return !1;
1224
1199
  }
1225
1200
  function evaluateCompletionMutationGuard(input) {
1226
- let expectedMutation = hasMutationToolCapability(input.tools, input.mcpDirectTools) ? expectsImplementationMutation(input.agent, input.task) : !1, attemptedMutation = hasMutationToolCall(input.messages);
1201
+ let expectedMutation = hasMutationToolCapability(input.tools, input.mcpDirectTools) ? expectsImplementationMutation(input.permissions, input.task) : !1, attemptedMutation = hasMutationToolCall(input.messages);
1227
1202
  return {
1228
1203
  expectedMutation,
1229
1204
  attemptedMutation,
@@ -2160,7 +2135,7 @@ ${fullOutput}` : timeoutMessage;
2160
2135
  ${fullOutput}` : note;
2161
2136
  }
2162
2137
  if ((result2.exitCode === 0 && !result2.error ? evaluateCompletionMutationGuard({
2163
- agent: spec.effectivePermissions,
2138
+ permissions: spec.effectivePermissions,
2164
2139
  task: shared.originalTask ?? task,
2165
2140
  messages: result2.messages,
2166
2141
  tools: spec.effectivePermissions === "read-only" ? ["read", "grep", "find", "ls", "bash"] : void 0
@@ -4033,9 +4008,8 @@ function formatAsyncStartedMessage(headline) {
4033
4008
  return [
4034
4009
  headline,
4035
4010
  "",
4036
- "The async run is detached. Do not run sleep timers or polling loops just to wait for it.",
4037
- "If you have independent work, continue that work. When you have nothing left to do until the async result arrives, call subagent_wait() \u2014 it blocks until the run finishes and delivers the completion here. Only if you are certain you will get another turn (an interactive session where the user will prompt you again) can you instead stop and let Pi wake you; inside a skill that must run to completion, or in a non-interactive run, there is no next turn, so use subagent_wait().",
4038
- 'Use subagent({ action: "status", id: "..." }) when you need a one-shot status/result or to inspect a blocked/stale run. To block until completion, prefer subagent_wait(). Do not poll in a loop just to wait.'
4011
+ SUBAGENT_ASYNC_GUIDANCE,
4012
+ 'For one-time inspection or recovery of a blocked or stale run, use subagent({ action: "status", id: "..." }).'
4039
4013
  ].join(`
4040
4014
  `);
4041
4015
  }
@@ -4673,6 +4647,7 @@ ${injection}` : injection;
4673
4647
  permissions: spec.effectivePermissions,
4674
4648
  agent,
4675
4649
  task: taskWithOutputInstruction,
4650
+ completionTask: params.completionTask ?? task,
4676
4651
  cwd: runnerCwd,
4677
4652
  model,
4678
4653
  thinking: resolveEffectiveThinking(model, effectiveThinking),
@@ -5737,11 +5712,6 @@ function inspectSubagentStatus(params, deps = {}) {
5737
5712
  };
5738
5713
  }
5739
5714
 
5740
- // packages/coding-agent/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.js
5741
- function applyForceTopLevelAsyncOverride(params, depth, forceTopLevelAsync) {
5742
- return params.foregroundOnly || !(depth === 0 && forceTopLevelAsync) ? params : { ...params, async: !0, clarify: !1 };
5743
- }
5744
-
5745
5715
  // packages/coding-agent/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js
5746
5716
  var MUTATING_MANAGEMENT_ACTIONS = /* @__PURE__ */ new Set(["create", "update", "delete", "eject", "disable", "enable", "reset"]);
5747
5717
  function resolveRequestedCwd(runtimeCwd, requestedCwd) {
@@ -6568,6 +6538,7 @@ ${followUp}`, 500, { source: "async-resume", runId: target.runId, agent: target.
6568
6538
  }
6569
6539
  let result2 = executeAsyncSingle(runId, {
6570
6540
  spec: recoverySpec,
6541
+ completionTask: followUp,
6571
6542
  goal: followUp,
6572
6543
  ctx: {
6573
6544
  pi: input.deps.pi,
@@ -8003,7 +7974,7 @@ function foregroundCapacityResult(params, inFlight, limit) {
8003
7974
  return {
8004
7975
  content: [{
8005
7976
  type: "text",
8006
- text: `Foreground subagent capacity reached (${inFlight}/${limit} running). Wait for a child to finish, use ONE subagent call with tasks: [{task, description}, \u2026], or set async: true.`
7977
+ text: `Foreground subagent capacity reached (${inFlight}/${limit} running). Wait for a child to finish, combine work in ONE tasks call, or launch without async:false or clarify:true when foreground execution is unnecessary.`
8007
7978
  }],
8008
7979
  isError: !0,
8009
7980
  details: { mode: inferExecutionMode(params), results: [] }
@@ -8191,7 +8162,7 @@ function createSubagentExecutor(deps) {
8191
8162
  let normalized = normalizeRepeatedParallelCounts(paramsWithResolvedCwd);
8192
8163
  if (normalized.error)
8193
8164
  return normalized.error;
8194
- let normalizedParams = normalized.params, effectiveParams = applyForceTopLevelAsyncOverride(normalizedParams, depth, deps.config.forceTopLevelAsync === !0), runToolBudget = resolveToolBudget(effectiveParams.toolBudget, "toolBudget");
8165
+ let effectiveParams = normalized.params, runToolBudget = resolveToolBudget(effectiveParams.toolBudget, "toolBudget");
8195
8166
  if (runToolBudget.error)
8196
8167
  return buildRequestedModeError(effectiveParams, runToolBudget.error);
8197
8168
  let configToolBudget = resolveToolBudget(deps.config.toolBudget, "config.toolBudget");
@@ -8242,7 +8213,7 @@ function createSubagentExecutor(deps) {
8242
8213
  } catch (error) {
8243
8214
  return toExecutionErrorResult(effectiveParams, error);
8244
8215
  }
8245
- let requestedAsync = effectiveParams.async ?? deps.asyncByDefault, backgroundRequestedWhileClarifying = (hasChain || hasTasks) && requestedAsync && effectiveParams.clarify === !0, effectiveAsync = requestedAsync && effectiveParams.clarify !== !0, controlConfig = resolveControlConfig(deps.config.control, effectiveParams.control), artifactConfig = {
8216
+ let backgroundRequestedWhileClarifying = (hasChain || hasTasks) && effectiveParams.async === !0 && effectiveParams.clarify === !0, effectiveAsync = subagentLaunchRunsAsync(effectiveParams), controlConfig = resolveControlConfig(deps.config.control, effectiveParams.control), artifactConfig = {
8246
8217
  ...DEFAULT_ARTIFACT_CONFIG,
8247
8218
  enabled: effectiveParams.artifacts !== !1
8248
8219
  }, artifactsDir = getArtifactsDir(parentSessionFile, effectiveCwd), sessionRoot;
@@ -8397,10 +8368,7 @@ function createSubagentExecutor(deps) {
8397
8368
  };
8398
8369
  return { execute: async (id, params, signal, onUpdate, ctx) => {
8399
8370
  let requestParams = resolveSubagentRequestParams(params);
8400
- if (requestParams.action)
8401
- return execute(id, requestParams, signal, onUpdate, ctx);
8402
- let { depth } = checkSubagentDepth(deps.config.maxSubagentDepth), dispatchParams = applyForceTopLevelAsyncOverride(requestParams, depth, deps.config.forceTopLevelAsync === !0);
8403
- if (!(dispatchParams.clarify === !0 || (dispatchParams.async ?? deps.asyncByDefault) !== !0))
8371
+ if (requestParams.action || !!subagentLaunchRunsAsync(requestParams))
8404
8372
  return execute(id, requestParams, signal, onUpdate, ctx);
8405
8373
  let limit = resolveTopLevelParallelConcurrency(void 0, deps.config.parallel?.concurrency), inFlight = deps.state.foregroundSubagentInFlight ?? 0;
8406
8374
  if (inFlight >= limit)
@@ -6,7 +6,8 @@ import {
6
6
  import "./chunk-DVGWF6A2.js";
7
7
  import {
8
8
  SettingsManager
9
- } from "./chunk-CBGB57XT.js";
9
+ } from "./chunk-WLLDXJRT.js";
10
+ import "./chunk-LISUTZS3.js";
10
11
  import "./chunk-AY6CAJSL.js";
11
12
  import {
12
13
  APP_NAME,
package/docs/features.md CHANGED
@@ -21,7 +21,11 @@ Permission modes: `manual | yolo | plan | auto`. Shift+Tab (`app.mode.cycle`) cy
21
21
 
22
22
  Advertised subagents always start **fresh** (no forked parent context). Default parallel concurrency / max tasks / global run cap are unlimited; an explicit `concurrency` is still honored.
23
23
 
24
- Collapsed subagent rows (foreground and async) are one line: status glyph, description, selected tier or explicit model, tokens, and elapsed time. Running rows keep a live spinner and clock; completed collapsed rows freeze those stats. Async launches show `subagent async` in the tool header. Completed notify cards show title and status only; the model still receives the full result text.
24
+ Single, parallel, and chain launches run async when `async` is omitted. Set `async:false` for an immediate foreground result or use `clarify:true` for the interactive preview/editor. Continue independent work after an async launch, then yield for normal interactive completion. Use `subagent_wait` only when the same turn or skill must finish after its children. Headless sessions auto-drain current-session work. Use status for one-time inspection rather than polling or sleeping for completion.
25
+
26
+ The legacy extension config keys `asyncByDefault` and `forceTopLevelAsync` remain accepted but no longer change launch mode. Omitted `async` resolves to async, while explicit `async:false`, `clarify:true`, and internal `foregroundOnly` calls stay foreground. RPC and scheduled launches remain always async.
27
+
28
+ Collapsed subagent rows (foreground and async) are one line: status glyph, description, selected tier or explicit model, tokens, and elapsed time. Mixed async runs use the same flat child rows without an aggregate tree. Running rows keep a live spinner and clock; completed collapsed rows freeze those stats. Choose the running child spinner under `/settings` → Customize. Async launches show `subagent async` in the tool header. Completed notify cards show title and status only; the model still receives the full result text.
25
29
 
26
30
  A launch of 3+ parallel children in one `tasks`/`chain.parallel` call, or 3+ same-turn SINGLE `subagent` calls, receives one aggregate confirmation in **manual and yolo**. Sequential work stays `chain`. Auto bypasses this confirmation, and it can be disabled independently in `/settings`.
27
31
 
@@ -41,7 +45,7 @@ The agent must ask only when the child has missing context, the answer changes a
41
45
 
42
46
  ## Todos, memory, and global instructions
43
47
 
44
- - **Todos** — lunr-todos is a full-replace list. Completed todos prune on the next user turn (no leftover `✓ N done` footer).
48
+ - **Todos** — lunr-todos is a full-replace list. Collapsed lists show all four active items; lists of five or more show three and a `+N more` line. Completed todos prune on the next user turn (no leftover `✓ N done` footer).
45
49
  - **Agent memory** — durable established facts and stable preferences in `~/.lunr/simple-memory/memory.md`. `/settings` → Agent memory controls injection and the `memory_add`, `memory_remove`, and `memory_load` tools without deleting stored facts. `memoryCharCap` defaults to 5000. Behavior instructions, transient task state, transcripts, guesses, and secrets do not belong in memory.
46
50
  - **Global instructions** — create `~/.lunr/agent/agents/AGENTS.md` yourself when you want global behavior or instructions. lunR injects it through the normal context loader; `/reload` picks up changes. The model cannot modify this user-managed file. The retired `behavior.md` file and behavior presets are no longer loaded.
47
51
  - **Model instructions** — `/settings` can enable `~/.lunr/agent/agents/<model-name>/AGENTS.md` and choose **Both** (global then model-specific) or **Model only**. The folder name is provider-independent and filesystem-safe. Project `AGENTS.md`/`CLAUDE.md` files are unaffected, and `--no-context-files` disables all instruction files.
package/docs/settings.md CHANGED
@@ -55,6 +55,7 @@ Use `/trust` in interactive mode to save a project trust decision for future ses
55
55
  | `externalEditor` | string | `$VISUAL`, then `$EDITOR`, then Notepad on Windows or `nano` elsewhere | Command for Ctrl+G external editor; takes precedence over environment variables |
56
56
  | `quietStartup` | boolean | `false` | Hide startup header |
57
57
  | `smoothStreaming` | boolean | `false` | Reveal streamed responses grapheme by grapheme (~30 FPS). Interactive TUI only |
58
+ | `subagentSpinner` | string | `"braille"` | Foreground and async running child indicator: `"braille"`, `"orbit"`, `"snake"`, or `"sparkle"` |
58
59
  | `thinkingCollapse` | boolean | `true` | Collapse completed thinking blocks to a short label plus the first sentence |
59
60
  | `cacheRetention` | string | unset → `PI_CACHE_RETENTION` → `"short"` | `"none"`, `"short"`, or `"long"` prompt-cache retention |
60
61
  | `defaultProjectTrust` | string | `"ask"` | Fallback project trust behavior: `"ask"`, `"always"`, or `"never"`. Global setting only |
@@ -238,7 +239,7 @@ When multiple sources specify a session directory, precedence is `--session-dir`
238
239
  | `footerPlanBar` | boolean | `true` | Show the █░ fill; off keeps the percent only |
239
240
  | `planUsageWindow` | string | `"5h"` | Preferred plan window: `"5h"` or `"weekly"`. Missing 5h falls back to weekly |
240
241
 
241
- Customize these from `/settings` → Customize as well.
242
+ Customize these from `/settings` → Customize as well. The same menu controls `subagentSpinner` with an animated preview.
242
243
 
243
244
  ### Cron, rollback, subscriptions
244
245
 
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider",
3
- "version": "0.2.19",
3
+ "version": "0.2.21",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-custom-provider",
9
- "version": "0.2.19",
9
+ "version": "0.2.21",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sdk": "^0.52.0"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider-anthropic",
3
3
  "private": true,
4
- "version": "0.2.19",
4
+ "version": "0.2.21",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider-gitlab-duo",
3
3
  "private": true,
4
- "version": "0.2.19",
4
+ "version": "0.2.21",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-gondolin",
3
- "version": "0.2.19",
3
+ "version": "0.2.21",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-gondolin",
9
- "version": "0.2.19",
9
+ "version": "0.2.21",
10
10
  "dependencies": {
11
11
  "@earendil-works/gondolin": "0.12.0"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-gondolin",
3
3
  "private": true,
4
- "version": "0.2.19",
4
+ "version": "0.2.21",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
- "version": "0.2.19",
3
+ "version": "0.2.21",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-sandbox",
9
- "version": "0.2.19",
9
+ "version": "0.2.21",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sandbox-runtime": "^0.0.26"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
3
  "private": true,
4
- "version": "0.2.19",
4
+ "version": "0.2.21",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-with-deps",
3
- "version": "0.2.19",
3
+ "version": "0.2.21",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-with-deps",
9
- "version": "0.2.19",
9
+ "version": "0.2.21",
10
10
  "dependencies": {
11
11
  "ms": "^2.1.3"
12
12
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-with-deps",
3
3
  "private": true,
4
- "version": "0.2.19",
4
+ "version": "0.2.21",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ashx-j/lunr",
3
- "version": "0.2.20",
3
+ "version": "0.2.21",
4
4
  "description": "lunR — terminal coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "piConfig": {
@@ -37,9 +37,9 @@
37
37
  "shrinkwrap": "node ../../scripts/generate-coding-agent-shrinkwrap.mjs"
38
38
  },
39
39
  "dependencies": {
40
- "@ashx-j/lunr-agent": "^0.2.20",
41
- "@ashx-j/lunr-ai": "^0.2.20",
42
- "@ashx-j/lunr-tui": "^0.2.20",
40
+ "@ashx-j/lunr-agent": "^0.2.21",
41
+ "@ashx-j/lunr-ai": "^0.2.21",
42
+ "@ashx-j/lunr-tui": "^0.2.21",
43
43
  "@modelcontextprotocol/ext-apps": "1.7.4",
44
44
  "@modelcontextprotocol/sdk": "1.30.0",
45
45
  "@mozilla/readability": "0.6.0",