@ashx-j/lunr 0.2.11 → 0.2.13

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 (342) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +211 -236
  3. package/dist/builtin-extensions/ashxj-tui.d.ts +3 -0
  4. package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
  5. package/dist/builtin-extensions/ashxj-tui.js +28 -11
  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/lunr-cron.d.ts +1 -1
  11. package/dist/builtin-extensions/lunr-cron.d.ts.map +1 -1
  12. package/dist/builtin-extensions/lunr-cron.js +1 -1
  13. package/dist/builtin-extensions/lunr-cron.js.map +1 -1
  14. package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.d.ts.map +1 -1
  15. package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.js +3 -3
  16. package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.js.map +1 -1
  17. package/dist/builtin-extensions/pi-subagents/src/extension/doctor.d.ts +0 -2
  18. package/dist/builtin-extensions/pi-subagents/src/extension/doctor.d.ts.map +1 -1
  19. package/dist/builtin-extensions/pi-subagents/src/extension/doctor.js +1 -23
  20. package/dist/builtin-extensions/pi-subagents/src/extension/doctor.js.map +1 -1
  21. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.d.ts.map +1 -1
  22. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js +6 -7
  23. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js.map +1 -1
  24. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
  25. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  26. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +7 -14
  27. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  28. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts +12 -9
  29. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  30. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +38 -34
  31. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  32. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +3 -3
  33. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
  34. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +32 -47
  35. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
  36. package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.d.ts +2 -2
  37. package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.d.ts.map +1 -1
  38. package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.js.map +1 -1
  39. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts +7 -10
  40. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts.map +1 -1
  41. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js +90 -109
  42. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js.map +1 -1
  43. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts +3 -2
  44. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts.map +1 -1
  45. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js +37 -50
  46. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js.map +1 -1
  47. package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.d.ts.map +1 -1
  48. package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js +1 -1
  49. package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js.map +1 -1
  50. package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.d.ts +4 -0
  51. package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.d.ts.map +1 -1
  52. package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.js +5 -5
  53. package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.js.map +1 -1
  54. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
  55. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +31 -13
  56. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
  57. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts +2 -2
  58. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts.map +1 -1
  59. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.js.map +1 -1
  60. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts +4 -3
  61. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
  62. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +48 -20
  63. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
  64. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts +2 -2
  65. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
  66. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +90 -64
  67. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
  68. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts +6 -8
  69. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  70. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +262 -161
  71. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  72. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts +2 -1
  73. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts.map +1 -1
  74. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js +24 -33
  75. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js.map +1 -1
  76. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts +25 -0
  77. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -0
  78. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +51 -0
  79. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -0
  80. package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.d.ts.map +1 -1
  81. package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.js +20 -3
  82. package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.js.map +1 -1
  83. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +4 -1
  84. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
  85. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
  86. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts +5 -0
  87. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts.map +1 -1
  88. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js +9 -3
  89. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js.map +1 -1
  90. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -1
  91. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js +2 -2
  92. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
  93. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts +2 -2
  94. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts.map +1 -1
  95. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js +20 -17
  96. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js.map +1 -1
  97. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts +70 -0
  98. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts.map +1 -0
  99. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js +153 -0
  100. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js.map +1 -0
  101. package/dist/builtin-extensions/pi-subagents/src/shared/settings.d.ts +13 -8
  102. package/dist/builtin-extensions/pi-subagents/src/shared/settings.d.ts.map +1 -1
  103. package/dist/builtin-extensions/pi-subagents/src/shared/settings.js +20 -51
  104. package/dist/builtin-extensions/pi-subagents/src/shared/settings.js.map +1 -1
  105. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +80 -20
  106. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
  107. package/dist/builtin-extensions/pi-subagents/src/shared/types.js +10 -2
  108. package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
  109. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts +2 -2
  110. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
  111. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +20 -32
  112. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
  113. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +2 -1
  114. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  115. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +23 -449
  116. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  117. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -1
  118. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  119. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +13 -11
  120. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  121. package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.d.ts +2 -1
  122. package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.d.ts.map +1 -1
  123. package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.js +18 -17
  124. package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.js.map +1 -1
  125. package/dist/builtin-extensions/simple-pi-memory.d.ts +2 -2
  126. package/dist/builtin-extensions/simple-pi-memory.d.ts.map +1 -1
  127. package/dist/builtin-extensions/simple-pi-memory.js +41 -17
  128. package/dist/builtin-extensions/simple-pi-memory.js.map +1 -1
  129. package/dist/catalog/models.json +1 -1
  130. package/dist/catalog/providers/amazon-bedrock.json +1 -1
  131. package/dist/catalog/providers/azure-openai-responses.json +1 -1
  132. package/dist/catalog/providers/cloudflare-ai-gateway.json +1 -1
  133. package/dist/catalog/providers/cloudflare-workers-ai.json +1 -1
  134. package/dist/catalog/providers/fireworks.json +1 -1
  135. package/dist/catalog/providers/github-copilot.json +1 -1
  136. package/dist/catalog/providers/huggingface.json +1 -1
  137. package/dist/catalog/providers/minimax-cn.json +1 -1
  138. package/dist/catalog/providers/minimax.json +1 -1
  139. package/dist/catalog/providers/mistral.json +1 -1
  140. package/dist/catalog/providers/nvidia.json +1 -1
  141. package/dist/catalog/providers/openai.json +1 -1
  142. package/dist/catalog/providers/opencode-go.json +1 -1
  143. package/dist/catalog/providers/opencode.json +1 -1
  144. package/dist/catalog/providers/openrouter.json +1 -1
  145. package/dist/catalog/providers/qwen-cloud-cn.json +1 -1
  146. package/dist/catalog/providers/qwen-cloud.json +1 -1
  147. package/dist/catalog/providers/qwen-token-plan-cn.json +1 -1
  148. package/dist/catalog/providers/qwen-token-plan.json +1 -1
  149. package/dist/catalog/providers/together.json +1 -1
  150. package/dist/catalog/providers/vercel-ai-gateway.json +1 -1
  151. package/dist/catalog/providers/zai-coding-cn.json +1 -1
  152. package/dist/catalog/providers/zai.json +1 -1
  153. package/dist/catalog/publication.json +3 -3
  154. package/dist/core/agent-session.d.ts +7 -1
  155. package/dist/core/agent-session.d.ts.map +1 -1
  156. package/dist/core/agent-session.js +34 -4
  157. package/dist/core/agent-session.js.map +1 -1
  158. package/dist/core/context-breakdown.d.ts +3 -1
  159. package/dist/core/context-breakdown.d.ts.map +1 -1
  160. package/dist/core/context-breakdown.js +5 -2
  161. package/dist/core/context-breakdown.js.map +1 -1
  162. package/dist/core/customize.d.ts +2 -0
  163. package/dist/core/customize.d.ts.map +1 -1
  164. package/dist/core/customize.js +6 -0
  165. package/dist/core/customize.js.map +1 -1
  166. package/dist/core/memory-cap.d.ts +4 -8
  167. package/dist/core/memory-cap.d.ts.map +1 -1
  168. package/dist/core/memory-cap.js +8 -8
  169. package/dist/core/memory-cap.js.map +1 -1
  170. package/dist/core/permissions.d.ts +2 -0
  171. package/dist/core/permissions.d.ts.map +1 -1
  172. package/dist/core/permissions.js +30 -14
  173. package/dist/core/permissions.js.map +1 -1
  174. package/dist/core/plan-mode.d.ts.map +1 -1
  175. package/dist/core/plan-mode.js +1 -9
  176. package/dist/core/plan-mode.js.map +1 -1
  177. package/dist/core/rollback.d.ts.map +1 -1
  178. package/dist/core/rollback.js +1 -1
  179. package/dist/core/rollback.js.map +1 -1
  180. package/dist/core/settings-manager.d.ts +16 -5
  181. package/dist/core/settings-manager.d.ts.map +1 -1
  182. package/dist/core/settings-manager.js +37 -10
  183. package/dist/core/settings-manager.js.map +1 -1
  184. package/dist/core/slash-commands.d.ts.map +1 -1
  185. package/dist/core/slash-commands.js +1 -5
  186. package/dist/core/slash-commands.js.map +1 -1
  187. package/dist/core/subagent-permission-inherit.d.ts +34 -22
  188. package/dist/core/subagent-permission-inherit.d.ts.map +1 -1
  189. package/dist/core/subagent-permission-inherit.js +37 -80
  190. package/dist/core/subagent-permission-inherit.js.map +1 -1
  191. package/dist/core/swarm.d.ts.map +1 -1
  192. package/dist/core/swarm.js +13 -7
  193. package/dist/core/swarm.js.map +1 -1
  194. package/dist/core/system-prompt.d.ts +6 -4
  195. package/dist/core/system-prompt.d.ts.map +1 -1
  196. package/dist/core/system-prompt.js +38 -48
  197. package/dist/core/system-prompt.js.map +1 -1
  198. package/dist/core/usage-adapters/openai-codex.d.ts +1 -1
  199. package/dist/core/usage-adapters/openai-codex.d.ts.map +1 -1
  200. package/dist/core/usage-adapters/openai-codex.js +22 -17
  201. package/dist/core/usage-adapters/openai-codex.js.map +1 -1
  202. package/dist/core/usage-service.d.ts +10 -1
  203. package/dist/core/usage-service.d.ts.map +1 -1
  204. package/dist/core/usage-service.js +17 -6
  205. package/dist/core/usage-service.js.map +1 -1
  206. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  207. package/dist/gateway/agent-bridge.js +1 -4
  208. package/dist/gateway/agent-bridge.js.map +1 -1
  209. package/dist/gateway/cron.d.ts.map +1 -1
  210. package/dist/gateway/cron.js +1 -4
  211. package/dist/gateway/cron.js.map +1 -1
  212. package/dist/index.d.ts +1 -1
  213. package/dist/index.d.ts.map +1 -1
  214. package/dist/index.js.map +1 -1
  215. package/dist/main.d.ts.map +1 -1
  216. package/dist/main.js +0 -5
  217. package/dist/main.js.map +1 -1
  218. package/dist/migrations.d.ts +2 -0
  219. package/dist/migrations.d.ts.map +1 -1
  220. package/dist/migrations.js +21 -0
  221. package/dist/migrations.js.map +1 -1
  222. package/dist/modes/interactive/components/settings-selector.d.ts +7 -4
  223. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  224. package/dist/modes/interactive/components/settings-selector.js +122 -162
  225. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  226. package/dist/modes/interactive/components/usage-view.d.ts +1 -1
  227. package/dist/modes/interactive/components/usage-view.d.ts.map +1 -1
  228. package/dist/modes/interactive/components/usage-view.js +7 -4
  229. package/dist/modes/interactive/components/usage-view.js.map +1 -1
  230. package/dist/modes/interactive/interactive-mode.d.ts +1 -2
  231. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  232. package/dist/modes/interactive/interactive-mode.js +55 -96
  233. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  234. package/dist/modes/interactive/skill-tag-autocomplete.d.ts +13 -0
  235. package/dist/modes/interactive/skill-tag-autocomplete.d.ts.map +1 -0
  236. package/dist/modes/interactive/skill-tag-autocomplete.js +72 -0
  237. package/dist/modes/interactive/skill-tag-autocomplete.js.map +1 -0
  238. package/docs/compaction.md +23 -23
  239. package/docs/containerization.md +24 -24
  240. package/docs/custom-provider.md +18 -18
  241. package/docs/development.md +16 -15
  242. package/docs/docs.json +6 -2
  243. package/docs/extensions.md +82 -80
  244. package/docs/features.md +102 -0
  245. package/docs/index.md +25 -19
  246. package/docs/json.md +7 -7
  247. package/docs/keybindings.md +4 -4
  248. package/docs/models.md +2 -2
  249. package/docs/packages.md +38 -42
  250. package/docs/prompt-templates.md +4 -4
  251. package/docs/providers.md +22 -10
  252. package/docs/quickstart.md +81 -46
  253. package/docs/rpc.md +7 -13
  254. package/docs/sdk.md +43 -41
  255. package/docs/security.md +18 -18
  256. package/docs/session-format.md +9 -9
  257. package/docs/sessions.md +13 -12
  258. package/docs/settings.md +63 -24
  259. package/docs/shell-aliases.md +2 -2
  260. package/docs/skills.md +21 -11
  261. package/docs/terminal-setup.md +5 -5
  262. package/docs/termux.md +7 -7
  263. package/docs/themes.md +12 -14
  264. package/docs/tmux.md +4 -4
  265. package/docs/tui.md +23 -23
  266. package/docs/usage.md +112 -87
  267. package/docs/windows.md +10 -2
  268. package/examples/README.md +3 -1
  269. package/examples/extensions/README.md +6 -6
  270. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  271. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  272. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  273. package/examples/extensions/doom-overlay/README.md +2 -2
  274. package/examples/extensions/gondolin/package-lock.json +2 -2
  275. package/examples/extensions/gondolin/package.json +1 -1
  276. package/examples/extensions/plan-mode/README.md +3 -1
  277. package/examples/extensions/sandbox/package-lock.json +2 -2
  278. package/examples/extensions/sandbox/package.json +1 -1
  279. package/examples/extensions/subagent/README.md +13 -11
  280. package/examples/extensions/todo.ts +2 -1
  281. package/examples/extensions/with-deps/package-lock.json +2 -2
  282. package/examples/extensions/with-deps/package.json +1 -1
  283. package/examples/sdk/README.md +9 -5
  284. package/package.json +6 -7
  285. package/dist/builtin-extensions/lunr-behavior.d.ts +0 -44
  286. package/dist/builtin-extensions/lunr-behavior.d.ts.map +0 -1
  287. package/dist/builtin-extensions/lunr-behavior.js +0 -213
  288. package/dist/builtin-extensions/lunr-behavior.js.map +0 -1
  289. package/dist/builtin-extensions/pi-subagents/agents/context-builder.md +0 -46
  290. package/dist/builtin-extensions/pi-subagents/agents/deep-researcher.md +0 -36
  291. package/dist/builtin-extensions/pi-subagents/agents/delegate.md +0 -12
  292. package/dist/builtin-extensions/pi-subagents/agents/oracle.md +0 -73
  293. package/dist/builtin-extensions/pi-subagents/agents/planner.md +0 -55
  294. package/dist/builtin-extensions/pi-subagents/agents/research-writer.md +0 -37
  295. package/dist/builtin-extensions/pi-subagents/agents/researcher.md +0 -52
  296. package/dist/builtin-extensions/pi-subagents/agents/reviewer.md +0 -79
  297. package/dist/builtin-extensions/pi-subagents/agents/scout.md +0 -50
  298. package/dist/builtin-extensions/pi-subagents/agents/worker.md +0 -55
  299. package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts +0 -20
  300. package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts.map +0 -1
  301. package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js +0 -1273
  302. package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js.map +0 -1
  303. package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.d.ts +0 -49
  304. package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.d.ts.map +0 -1
  305. package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.js +0 -252
  306. package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.js.map +0 -1
  307. package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.d.ts +0 -3
  308. package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.d.ts.map +0 -1
  309. package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.js +0 -6
  310. package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.js.map +0 -1
  311. package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.d.ts +0 -3
  312. package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.d.ts.map +0 -1
  313. package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.js +0 -23
  314. package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.js.map +0 -1
  315. package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.d.ts +0 -8
  316. package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.d.ts.map +0 -1
  317. package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.js +0 -143
  318. package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.js.map +0 -1
  319. package/dist/builtin-extensions/pi-subagents/src/agents/agents.d.ts +0 -176
  320. package/dist/builtin-extensions/pi-subagents/src/agents/agents.d.ts.map +0 -1
  321. package/dist/builtin-extensions/pi-subagents/src/agents/agents.js +0 -1326
  322. package/dist/builtin-extensions/pi-subagents/src/agents/agents.js.map +0 -1
  323. package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.d.ts +0 -7
  324. package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.d.ts.map +0 -1
  325. package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.js +0 -307
  326. package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.js.map +0 -1
  327. package/dist/builtin-extensions/pi-subagents/src/agents/identity.d.ts +0 -8
  328. package/dist/builtin-extensions/pi-subagents/src/agents/identity.d.ts.map +0 -1
  329. package/dist/builtin-extensions/pi-subagents/src/agents/identity.js +0 -30
  330. package/dist/builtin-extensions/pi-subagents/src/agents/identity.js.map +0 -1
  331. package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.d.ts +0 -35
  332. package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.d.ts.map +0 -1
  333. package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.js +0 -151
  334. package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.js.map +0 -1
  335. package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts +0 -131
  336. package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts.map +0 -1
  337. package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.js +0 -491
  338. package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.js.map +0 -1
  339. package/dist/core/behavior-preset.d.ts +0 -60
  340. package/dist/core/behavior-preset.d.ts.map +0 -1
  341. package/dist/core/behavior-preset.js +0 -257
  342. package/dist/core/behavior-preset.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { Container, getCapabilities, getKeybindings, Input, SelectList, SettingsList, Spacer, Text, } from "@ashx-j/lunr-tui";
2
- import { detectBehaviorPreset, readBehaviorFile } from "../../../core/behavior-preset.js";
3
2
  import { getCustomizeBridge } from "../../../core/customize.js";
4
3
  import { formatHttpIdleTimeoutMs, HTTP_IDLE_TIMEOUT_CHOICES } from "../../../core/http-dispatcher.js";
5
4
  import { MEMORY_CHAR_CAP_DEFAULT, MEMORY_CHAR_CAP_MAX, MEMORY_CHAR_CAP_MIN } from "../../../core/memory-cap.js";
5
+ import { SKILL_TAG_CHARACTERS, } from "../../../core/settings-manager.js";
6
6
  import { getSelectListTheme, getSettingsListTheme, parseAutoThemeSetting, theme, } from "../theme/theme.js";
7
7
  import { DynamicBorder } from "./dynamic-border.js";
8
8
  import { keyDisplayText } from "./keybinding-hints.js";
@@ -29,17 +29,17 @@ const MODEL_TIER_ROWS = [
29
29
  {
30
30
  tier: "light",
31
31
  label: "Light tier model",
32
- description: "Cheap/fast model for simple subagent tasks (lookups, formatting)",
32
+ description: "Fast, low-cost model for simple subagent tasks",
33
33
  },
34
34
  {
35
35
  tier: "standard",
36
36
  label: "Standard tier model",
37
- description: "Mid-tier model for typical coding subagent tasks",
37
+ description: "Balanced model for everyday coding tasks",
38
38
  },
39
39
  {
40
40
  tier: "heavy",
41
41
  label: "Heavy tier model",
42
- description: "Strongest model for deep reasoning and complex debugging subagents",
42
+ description: "Strong model for complex reasoning and debugging",
43
43
  },
44
44
  ];
45
45
  /**
@@ -65,7 +65,7 @@ class ModelTiersSubmenu extends Container {
65
65
  {
66
66
  id: "enabled",
67
67
  label: "Enable model tiers",
68
- description: "Route subagents to per-tier models. An explicit model choice overrides the tier; tiers without a model inherit the parent model.",
68
+ description: "Route subagent work by model tier",
69
69
  currentValue: this.state.enabled ? "on" : "off",
70
70
  values: ["on", "off"],
71
71
  },
@@ -84,11 +84,15 @@ class ModelTiersSubmenu extends Container {
84
84
  {
85
85
  id: `${tier}-thinking`,
86
86
  label: `${row.label.replace(" model", "")} thinking`,
87
- description: "Reasoning depth for this tier. Inherit uses the parent session level.",
87
+ description: "Reasoning level for this tier",
88
88
  currentValue: this.state[tKey] ?? "inherit",
89
89
  disabled: () => !this.state.enabled,
90
- submenu: (_currentValue, done) => new SelectSubmenu(`${row.label} thinking`, "Unset inherits the parent session thinking level.", [
91
- { value: "inherit", label: "inherit", description: "Use the parent session thinking level" },
90
+ submenu: (_currentValue, done) => new SelectSubmenu(`${row.label} thinking`, "Inherit uses the parent session's reasoning level", [
91
+ {
92
+ value: "inherit",
93
+ label: "inherit",
94
+ description: "Use the parent session's reasoning level",
95
+ },
92
96
  ...callbacks.getTierThinkingLevels(tier).map((level) => ({
93
97
  value: level,
94
98
  label: level,
@@ -135,7 +139,7 @@ class MemoryCharCapSubmenu extends Container {
135
139
  super();
136
140
  this.addChild(new Text(theme.bold(theme.fg("accent", "Memory Character Cap")), 0, 0));
137
141
  this.addChild(new Spacer(1));
138
- this.addChild(new Text(theme.fg("muted", `Max characters in the memory file (${MEMORY_CHAR_CAP_MIN}-${MEMORY_CHAR_CAP_MAX}, default ${MEMORY_CHAR_CAP_DEFAULT}).`), 0, 0));
142
+ this.addChild(new Text(theme.fg("muted", `Maximum agent memory size (${MEMORY_CHAR_CAP_MIN} to ${MEMORY_CHAR_CAP_MAX} characters, default ${MEMORY_CHAR_CAP_DEFAULT})`), 0, 0));
139
143
  this.addChild(new Spacer(1));
140
144
  this.input = new Input();
141
145
  this.input.setValue(currentValue);
@@ -158,71 +162,6 @@ class MemoryCharCapSubmenu extends Container {
158
162
  }
159
163
  }
160
164
  const SEARCH_CURATOR_VALUES = ["off", "on", "auto-summary"];
161
- const BEHAVIOR_PRESET_ITEMS = [
162
- {
163
- value: "default",
164
- label: "default",
165
- description: "Empty built-in. Selecting this writes a blank behavior.md.",
166
- },
167
- {
168
- value: "humanizer",
169
- label: "humanizer",
170
- description: "Write like a person. Strip AI tells. Skips the character cap.",
171
- },
172
- {
173
- value: "concise",
174
- label: "concise",
175
- description: "Fragments, tables, numbered next steps last. Skips the character cap.",
176
- },
177
- {
178
- value: "custom",
179
- label: "custom",
180
- description: "Keep the current behavior.md. Edit the file or use the behavior tools.",
181
- },
182
- ];
183
- /**
184
- * Built-in vs custom behavior.md picker.
185
- * Selecting a built-in while the file no longer matches a template asks before overwrite.
186
- * Custom never writes. No in-app editor; the file is the source of truth.
187
- */
188
- class BehaviorPresetSubmenu extends Container {
189
- inner;
190
- constructor(currentValue, done) {
191
- super();
192
- this.inner = this.buildList(currentValue, done);
193
- this.addChild(this.inner);
194
- }
195
- buildList(currentValue, done) {
196
- return new SelectSubmenu("Behavior preset", "Built-in options replace ~/.lunr/agent/behavior.md. Custom keeps the file. Cap skipped for built-ins.", BEHAVIOR_PRESET_ITEMS, currentValue, (value) => {
197
- if (value === currentValue) {
198
- done();
199
- return;
200
- }
201
- if (value !== "custom" && detectBehaviorPreset(readBehaviorFile()) === "custom") {
202
- this.showOverwriteConfirm(value, done);
203
- return;
204
- }
205
- done(value);
206
- }, () => done());
207
- }
208
- showOverwriteConfirm(preset, done) {
209
- this.clear();
210
- this.inner = new SelectSubmenu("Overwrite behavior.md", `Replace the custom behavior file with the ${preset} preset? This cannot be undone from settings.`, [
211
- { value: "cancel", label: "Cancel" },
212
- { value: "overwrite", label: `Overwrite with ${preset}` },
213
- ], "cancel", (value) => {
214
- if (value === "overwrite") {
215
- done(preset);
216
- return;
217
- }
218
- done();
219
- }, () => done());
220
- this.addChild(this.inner);
221
- }
222
- handleInput(data) {
223
- this.inner.handleInput?.(data);
224
- }
225
- }
226
165
  // lunr: Customize submenu — toggles for the lunR TUI customize settings.
227
166
  class CustomizeSubmenu extends Container {
228
167
  settingsList;
@@ -235,77 +174,84 @@ class CustomizeSubmenu extends Container {
235
174
  {
236
175
  id: "gutter-rail",
237
176
  label: "Gutter rail",
238
- description: "Render a thin left │ rail spanning each turn, closing with ╰.",
177
+ description: "Turn boundary rail",
239
178
  currentValue: (bridge?.getGutterRail() ?? true) ? "on" : "off",
240
179
  values: ["on", "off"],
241
180
  },
242
181
  {
243
182
  id: "prompt-symbol",
244
183
  label: "Prompt symbol",
245
- description: "Show the ☾ › prompt glyph on the editor's first line.",
184
+ description: "Moon prompt glyph",
246
185
  currentValue: (bridge?.getPromptSymbol() ?? true) ? "on" : "off",
247
186
  values: ["on", "off"],
248
187
  },
249
188
  {
250
189
  id: "footer-mcp",
251
190
  label: "Footer: MCP status",
252
- description: "Show the MCP server status segment in the footer stats line.",
191
+ description: "MCP server status",
253
192
  currentValue: (bridge?.getFooterMcp() ?? true) ? "on" : "off",
254
193
  values: ["on", "off"],
255
194
  },
256
195
  {
257
196
  id: "footer-lsp",
258
197
  label: "Footer: LSP status",
259
- description: "Show the LSP status segment in the footer stats line.",
198
+ description: "Language server status",
260
199
  currentValue: (bridge?.getFooterLsp() ?? false) ? "on" : "off",
261
200
  values: ["on", "off"],
262
201
  },
263
202
  {
264
203
  id: "footer-context",
265
204
  label: "Footer: context meter",
266
- description: "Show the context-usage pct/window segment in the footer stats line.",
205
+ description: "Context usage",
267
206
  currentValue: (bridge?.getFooterContext() ?? true) ? "on" : "off",
268
207
  values: ["on", "off"],
269
208
  },
270
209
  {
271
210
  id: "footer-tokens",
272
211
  label: "Footer: token counter",
273
- description: "Show the ↑in ↓out token totals segment in the footer stats line.",
212
+ description: "Input and output token counts",
274
213
  currentValue: (bridge?.getFooterTokens() ?? true) ? "on" : "off",
275
214
  values: ["on", "off"],
276
215
  },
216
+ {
217
+ id: "footer-cache-hit-rate",
218
+ label: "Footer: cache hit rate",
219
+ description: "Latest prompt cache hit rate",
220
+ currentValue: (bridge?.getFooterCacheHitRate() ?? true) ? "on" : "off",
221
+ values: ["on", "off"],
222
+ },
277
223
  {
278
224
  id: "footer-tps",
279
225
  label: "Footer: TPS counter",
280
- description: "Show the ✓ 174.0 t/s · tokens-in-time segment in the footer stats line.",
226
+ description: "Token generation speed",
281
227
  currentValue: (bridge?.getFooterTps() ?? true) ? "on" : "off",
282
228
  values: ["on", "off"],
283
229
  },
284
230
  {
285
231
  id: "footer-statuses",
286
232
  label: "Footer: feature statuses",
287
- description: "Show the plan/goal/swarm/research status segments in the footer stats line.",
233
+ description: "Active plan, goal, and swarm status",
288
234
  currentValue: (bridge?.getFooterStatuses() ?? true) ? "on" : "off",
289
235
  values: ["on", "off"],
290
236
  },
291
237
  {
292
238
  id: "footer-git",
293
239
  label: "Footer: git branch",
294
- description: "Show the current git branch and added/removed line counts in the footer stats line.",
240
+ description: "Git branch and line changes",
295
241
  currentValue: (bridge?.getFooterGit() ?? true) ? "on" : "off",
296
242
  values: ["on", "off"],
297
243
  },
298
244
  {
299
245
  id: "footer-plan",
300
246
  label: "Footer: plan usage",
301
- description: "Show the live subscription usage percent when the current model is on a plan.",
247
+ description: "Subscription usage percentage",
302
248
  currentValue: (bridge?.getFooterPlan() ?? true) ? "on" : "off",
303
249
  values: ["on", "off"],
304
250
  },
305
251
  {
306
252
  id: "footer-plan-bar",
307
253
  label: "Footer: plan bar",
308
- description: "Show the filled █░ bar next to the plan percent. Off keeps the percent only.",
254
+ description: "Bar beside the subscription usage percentage",
309
255
  currentValue: (bridge?.getFooterPlanBar() ?? true) ? "on" : "off",
310
256
  values: ["on", "off"],
311
257
  },
@@ -330,6 +276,9 @@ class CustomizeSubmenu extends Container {
330
276
  case "footer-tokens":
331
277
  callbacks.onFooterTokensChange(newValue === "on");
332
278
  break;
279
+ case "footer-cache-hit-rate":
280
+ callbacks.onFooterCacheHitRateChange(newValue === "on");
281
+ break;
333
282
  case "footer-tps":
334
283
  callbacks.onFooterTpsChange(newValue === "on");
335
284
  break;
@@ -364,8 +313,7 @@ class RollbackSubmenu extends Container {
364
313
  {
365
314
  id: "rollback-enabled",
366
315
  label: "Rollback enabled",
367
- description: "Copy files before edits so /rollback can restore them. Uses extra disk + processing." +
368
- (sessionForceEnabled ? " (forced on by auto mode)" : ""),
316
+ description: `Save file snapshots for /rollback${sessionForceEnabled ? ". Always on in Auto mode" : ""}`,
369
317
  currentValue: this.enabled ? "on" : "off",
370
318
  values: ["on", "off"],
371
319
  disabled: () => sessionForceEnabled,
@@ -373,7 +321,7 @@ class RollbackSubmenu extends Container {
373
321
  {
374
322
  id: "rollback-turns",
375
323
  label: "Rollback turns",
376
- description: `How many turns of snapshots to retain (1-20, default 2).`,
324
+ description: "Number of turns kept for rollback",
377
325
  currentValue: String(config.rollbackTurns),
378
326
  disabled: () => !this.enabled,
379
327
  submenu: (currentValue, submenuDone) => new RollbackTurnsSubmenu(currentValue, submenuDone),
@@ -381,24 +329,24 @@ class RollbackSubmenu extends Container {
381
329
  {
382
330
  id: "rollback-capture",
383
331
  label: "Capture mode",
384
- description: "How snapshots are taken: copies = restore edited files + delete tool-created files, hybrid = also delete files created outside tools (tree scope), shadow-git = hidden git repo (needs git).",
332
+ description: "How rollback snapshots are stored",
385
333
  currentValue: config.rollbackCapture,
386
334
  disabled: () => !this.enabled,
387
- submenu: (currentValue, submenuDone) => new SelectSubmenu("Rollback Capture Mode", "How file snapshots are captured before edits.", [
335
+ submenu: (currentValue, submenuDone) => new SelectSubmenu("Rollback Capture Mode", "Snapshot storage method", [
388
336
  {
389
337
  value: "copies",
390
338
  label: "copies",
391
- description: "fast; restores edits, deletes tool-created files",
339
+ description: "File copies for tool edits and created files",
392
340
  },
393
341
  {
394
342
  value: "hybrid",
395
343
  label: "hybrid",
396
- description: "also deletes files created outside tools (tree scope)",
344
+ description: "Track files created outside tools with tree scope",
397
345
  },
398
346
  {
399
347
  value: "shadow-git",
400
348
  label: "shadow-git",
401
- description: "needs git, hidden repo — deferred, falls back to copies",
349
+ description: "Reserved mode; currently falls back to copies",
402
350
  },
403
351
  ], currentValue, (value) => {
404
352
  callbacks.onRollbackCaptureChange(value);
@@ -408,15 +356,15 @@ class RollbackSubmenu extends Container {
408
356
  {
409
357
  id: "rollback-scope",
410
358
  label: "Rollback scope",
411
- description: "tools = only edit/write changes; tree = also catches bash side-effects via git status (slower on large repos).",
359
+ description: "Which file changes rollback tracks",
412
360
  currentValue: config.rollbackScope,
413
361
  disabled: () => !this.enabled,
414
- submenu: (currentValue, submenuDone) => new SelectSubmenu("Rollback Scope", "What file changes to snapshot.", [
415
- { value: "tools", label: "tools", description: "only edit/write tool changes" },
362
+ submenu: (currentValue, submenuDone) => new SelectSubmenu("Rollback Scope", "File changes included in snapshots", [
363
+ { value: "tools", label: "tools", description: "Changes made by edit and write tools" },
416
364
  {
417
365
  value: "tree",
418
366
  label: "tree",
419
- description: "also catches bash side-effects; slower on large repos",
367
+ description: "Tool and shell changes across the repository",
420
368
  },
421
369
  ], currentValue, (value) => {
422
370
  callbacks.onRollbackScopeChange(value);
@@ -448,7 +396,7 @@ class RollbackTurnsSubmenu extends Container {
448
396
  super();
449
397
  this.addChild(new Text(theme.bold(theme.fg("accent", "Rollback Turns")), 0, 0));
450
398
  this.addChild(new Spacer(1));
451
- this.addChild(new Text(theme.fg("muted", "How many turns of snapshots to retain (1-20, default 2)."), 0, 0));
399
+ this.addChild(new Text(theme.fg("muted", "Number of turns kept for rollback (1 to 20, default 2)"), 0, 0));
452
400
  this.addChild(new Spacer(1));
453
401
  this.input = new Input();
454
402
  this.input.setValue(currentValue);
@@ -519,8 +467,8 @@ class SubscriptionActionSubmenu extends Container {
519
467
  id: "set-active",
520
468
  label: "Set active",
521
469
  description: subs.autoManage()
522
- ? "Manual switching is disabled while Auto-manage subscriptions is on."
523
- : "Use this key for new requests.",
470
+ ? "Turn off automatic key rotation to switch keys"
471
+ : "Use this key for new requests",
524
472
  currentValue: row.active ? "already active" : "activate",
525
473
  values: ["activate"],
526
474
  disabled: () => subs.autoManage() || row.active,
@@ -528,7 +476,7 @@ class SubscriptionActionSubmenu extends Container {
528
476
  {
529
477
  id: "rename",
530
478
  label: "Rename",
531
- description: "Display name for this key.",
479
+ description: "Change the key's display name",
532
480
  currentValue: row.name,
533
481
  submenu: (currentValue, renameDone) => new SubscriptionRenameSubmenu(currentValue, (name) => {
534
482
  if (name === undefined) {
@@ -547,7 +495,7 @@ class SubscriptionActionSubmenu extends Container {
547
495
  label: "Clear exhausted flag",
548
496
  description: row.exhaustedUntil !== undefined
549
497
  ? `Marked exhausted until ${formatSubscriptionExhaustedUntil(row.exhaustedUntil)}.`
550
- : "Only available for keys marked exhausted.",
498
+ : "Unavailable until the key is marked exhausted",
551
499
  currentValue: "clear",
552
500
  values: ["clear"],
553
501
  disabled: () => row.exhaustedUntil === undefined,
@@ -555,9 +503,9 @@ class SubscriptionActionSubmenu extends Container {
555
503
  {
556
504
  id: "remove",
557
505
  label: "Remove",
558
- description: "Delete this key. Removing the provider's last key logs it out completely.",
506
+ description: "Delete this stored key",
559
507
  currentValue: "remove…",
560
- submenu: (_currentValue, confirmDone) => new SelectSubmenu("Remove Subscription", `Remove "${row.name}" (${row.providerName})? Removing the provider's last key logs it out.`, [
508
+ submenu: (_currentValue, confirmDone) => new SelectSubmenu("Remove Subscription", `Delete "${row.name}" from ${row.providerName}? The last key also logs out the provider.`, [
561
509
  { value: "cancel", label: "Cancel" },
562
510
  { value: "remove", label: "Remove key" },
563
511
  ], "cancel", (value) => {
@@ -707,7 +655,7 @@ function singleModeThemeItems(availableThemes) {
707
655
  {
708
656
  value: AUTOMATIC_THEME_VALUE,
709
657
  label: "Automatic",
710
- description: "Use separate themes for light and dark terminal appearance",
658
+ description: "Follow the terminal's light or dark appearance",
711
659
  },
712
660
  ...themeItems(availableThemes),
713
661
  ];
@@ -769,7 +717,7 @@ class ThemeSubmenu extends Container {
769
717
  }
770
718
  showSingleMenu() {
771
719
  this.mode = "single";
772
- const menu = new SelectSubmenu("Theme", "Select a theme, or choose Automatic to follow terminal appearance.", singleModeThemeItems(this.availableThemes), this.singleTheme, (value) => {
720
+ const menu = new SelectSubmenu("Theme", "Choose a theme or follow terminal appearance", singleModeThemeItems(this.availableThemes), this.singleTheme, (value) => {
773
721
  if (value === AUTOMATIC_THEME_VALUE) {
774
722
  this.mode = "automatic";
775
723
  this.callbacks.onThemePreview?.(this.getThemeSetting());
@@ -788,16 +736,16 @@ class ThemeSubmenu extends Container {
788
736
  const content = new Container();
789
737
  content.addChild(new Text(theme.bold(theme.fg("accent", "Automatic Theme")), 0, 0));
790
738
  content.addChild(new Spacer(1));
791
- content.addChild(new Text(theme.fg("muted", "Choose themes for terminal light and dark appearance."), 0, 0));
739
+ content.addChild(new Text(theme.fg("muted", "Use different themes for light and dark terminals."), 0, 0));
792
740
  content.addChild(new Text(theme.fg("muted", "Light/dark detection requires terminal support."), 0, 0));
793
741
  content.addChild(new Spacer(1));
794
742
  const items = [
795
743
  {
796
744
  id: "light-theme",
797
745
  label: "Light theme",
798
- description: "Theme to use in automatic mode when the terminal is light",
746
+ description: "Theme for light terminals",
799
747
  currentValue: this.lightTheme,
800
- submenu: (currentValue, done) => this.createThemeSelect("Light Theme", "Select the theme to use for light terminal appearance", currentValue, done, (value) => {
748
+ submenu: (currentValue, done) => this.createThemeSelect("Light Theme", "Theme for light terminals", currentValue, done, (value) => {
801
749
  this.lightTheme = value;
802
750
  this.callbacks.onThemePreview?.(this.getThemeSetting());
803
751
  done(value);
@@ -806,9 +754,9 @@ class ThemeSubmenu extends Container {
806
754
  {
807
755
  id: "dark-theme",
808
756
  label: "Dark theme",
809
- description: "Theme to use in automatic mode when the terminal is dark",
757
+ description: "Theme for dark terminals",
810
758
  currentValue: this.darkTheme,
811
- submenu: (currentValue, done) => this.createThemeSelect("Dark Theme", "Select the theme to use for dark terminal appearance", currentValue, done, (value) => {
759
+ submenu: (currentValue, done) => this.createThemeSelect("Dark Theme", "Theme for dark terminals", currentValue, done, (value) => {
812
760
  this.darkTheme = value;
813
761
  this.callbacks.onThemePreview?.(this.getThemeSetting());
814
762
  done(value);
@@ -817,14 +765,14 @@ class ThemeSubmenu extends Container {
817
765
  {
818
766
  id: "apply",
819
767
  label: "Apply",
820
- description: "Save and go back",
768
+ description: "Save theme settings",
821
769
  currentValue: "save and go back",
822
770
  values: ["save and go back"],
823
771
  },
824
772
  {
825
773
  id: "single-mode",
826
774
  label: "Change mode",
827
- description: "Switch to one theme for light and dark",
775
+ description: "Use one theme for all terminal appearances",
828
776
  currentValue: "switch to single theme",
829
777
  values: ["switch to single theme"],
830
778
  },
@@ -882,42 +830,42 @@ export class SettingsSelectorComponent extends Container {
882
830
  {
883
831
  id: "autocompact",
884
832
  label: "Auto-compact",
885
- description: "Automatically compact context when it gets too large",
833
+ description: "Compact context before it reaches the model limit",
886
834
  currentValue: config.autoCompact ? "true" : "false",
887
835
  values: ["true", "false"],
888
836
  },
889
837
  {
890
838
  id: "steering-mode",
891
839
  label: "Steering mode",
892
- description: "Enter while streaming queues steering messages. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.",
840
+ description: "How new messages interrupt a streaming response",
893
841
  currentValue: config.steeringMode,
894
842
  values: ["one-at-a-time", "all"],
895
843
  },
896
844
  {
897
845
  id: "follow-up-mode",
898
846
  label: "Follow-up mode",
899
- description: `${followUpKey} queues follow-up messages until agent stops. 'one-at-a-time': deliver one, wait for response. 'all': deliver all at once.`,
847
+ description: `How ${followUpKey} messages run after the current response`,
900
848
  currentValue: config.followUpMode,
901
849
  values: ["one-at-a-time", "all"],
902
850
  },
903
851
  {
904
852
  id: "transport",
905
853
  label: "Transport",
906
- description: "Preferred transport for providers that support multiple transports",
854
+ description: "Connection method for supported providers",
907
855
  currentValue: config.transport,
908
856
  values: ["sse", "websocket", "websocket-cached", "auto"],
909
857
  },
910
858
  {
911
859
  id: "http-idle-timeout",
912
860
  label: "HTTP idle timeout",
913
- description: "Maximum idle gap while waiting for HTTP headers or body chunks. Disable for local models that pause longer than five minutes.",
861
+ description: "Time before an inactive HTTP request times out",
914
862
  currentValue: formatHttpIdleTimeoutMs(config.httpIdleTimeoutMs),
915
863
  values: HTTP_IDLE_TIMEOUT_CHOICES.map((choice) => choice.label),
916
864
  },
917
865
  {
918
866
  id: "hide-thinking",
919
867
  label: "Hide thinking",
920
- description: "Hide thinking blocks in assistant responses",
868
+ description: "Thinking block visibility",
921
869
  currentValue: config.hideThinkingBlock ? "true" : "false",
922
870
  values: ["true", "false"],
923
871
  },
@@ -926,7 +874,7 @@ export class SettingsSelectorComponent extends Container {
926
874
  // "✻ Thought for Xs" + first sentence. Disabled when thinking is hidden.
927
875
  id: "thinking-collapse",
928
876
  label: "Collapse thinking",
929
- description: "Collapse completed thinking blocks to a short summary",
877
+ description: "Short summaries for completed thinking",
930
878
  currentValue: config.thinkingCollapse ? "true" : "false",
931
879
  values: ["true", "false"],
932
880
  disabled: () => config.hideThinkingBlock,
@@ -934,7 +882,7 @@ export class SettingsSelectorComponent extends Container {
934
882
  {
935
883
  id: "cache-miss-notices",
936
884
  label: "Cache miss notices",
937
- description: "Show transcript notices for significant prompt-cache misses",
885
+ description: "Prompt cache miss notices in the transcript",
938
886
  currentValue: config.showCacheMissNotices ? "true" : "false",
939
887
  values: ["true", "false"],
940
888
  },
@@ -943,88 +891,88 @@ export class SettingsSelectorComponent extends Container {
943
891
  // applies; the row displays "short" as the implicit default.
944
892
  id: "cache-retention",
945
893
  label: "Cache retention",
946
- description: "Prompt-cache TTL: short (5 min), long (1h where supported), or none",
894
+ description: "Prompt cache lifetime",
947
895
  currentValue: config.cacheRetention,
948
896
  values: ["short", "long", "none"],
949
897
  },
950
898
  {
951
899
  id: "quiet-startup",
952
900
  label: "Quiet startup",
953
- description: "Disable verbose printing at startup",
901
+ description: "Startup log visibility",
954
902
  currentValue: config.quietStartup ? "true" : "false",
955
903
  values: ["true", "false"],
956
904
  },
957
905
  {
958
906
  id: "smooth-streaming",
959
907
  label: "Smooth streaming",
960
- description: "Reveal responses grapheme by grapheme (~30 FPS typewriter)",
908
+ description: "Typewriter-style response streaming",
961
909
  currentValue: config.smoothStreaming ? "true" : "false",
962
910
  values: ["true", "false"],
963
911
  },
912
+ {
913
+ id: "agent-memory",
914
+ label: "Agent memory",
915
+ description: "Durable facts the agent can manage",
916
+ currentValue: config.memoryEnabled ? "on" : "off",
917
+ values: ["on", "off"],
918
+ },
964
919
  {
965
920
  id: "memory-char-cap",
966
921
  label: "Memory character cap",
967
- description: `Max characters in the simple-pi-memory memory file AND a custom behavior file (${MEMORY_CHAR_CAP_MIN}-${MEMORY_CHAR_CAP_MAX}, default ${MEMORY_CHAR_CAP_DEFAULT}). Built-in behavior presets skip the cap. Also settable via /memory-char-cap.`,
922
+ description: "Maximum agent memory size",
968
923
  currentValue: String(config.memoryCharCap),
969
924
  submenu: (currentValue, submenuDone) => new MemoryCharCapSubmenu(currentValue, submenuDone),
970
925
  },
971
- {
972
- id: "behavior-preset",
973
- label: "Behavior preset",
974
- description: "Built-in options replace ~/.lunr/agent/behavior.md (default / humanizer / concise). Custom keeps the file. Built-ins skip the character cap.",
975
- currentValue: config.behaviorPreset,
976
- submenu: (currentValue, submenuDone) => new BehaviorPresetSubmenu(currentValue, submenuDone),
977
- },
978
926
  {
979
927
  id: "search-curator",
980
928
  label: "Search curator",
981
929
  description: curatorAvailable
982
- ? "pi-web-access search curator: off = raw results, on = browser curator with summary draft, auto-summary = summary without the curator. Also settable via /curator."
983
- : "pi-web-access is not loaded; the search curator is unavailable.",
930
+ ? "Web search review and summary mode"
931
+ : "Unavailable because web access is not loaded",
984
932
  currentValue: config.searchCurator ?? "unavailable",
985
933
  values: curatorAvailable ? SEARCH_CURATOR_VALUES : undefined,
986
934
  },
987
935
  {
988
936
  id: "session-retention-days",
989
937
  label: "Session retention",
990
- description: "Auto-delete session files older than N days at launch (0 = keep forever)",
938
+ description: "How long session files are kept",
991
939
  currentValue: String(config.sessionRetentionDays),
992
940
  values: ["0", "7", "14", "30", "60", "90", "365"],
993
941
  },
994
942
  {
995
943
  id: "default-project-trust",
996
944
  label: "Default project trust",
997
- description: "Fallback behavior when no extension or saved trust decision decides project trust",
945
+ description: "Trust choice when a project has no saved decision",
998
946
  currentValue: DEFAULT_PROJECT_TRUST_LABELS[config.defaultProjectTrust],
999
947
  values: Object.values(DEFAULT_PROJECT_TRUST_LABELS),
1000
948
  },
1001
949
  {
1002
950
  id: "default-permission-mode",
1003
951
  label: "Default permission mode",
1004
- description: "Permission mode new sessions start with: manual = approve every action, yolo = auto-approve tools, plan = read-only, auto = fully autonomous. Change per-session with /mode or Shift+Tab.",
952
+ description: "Starting permission mode for new sessions",
1005
953
  currentValue: config.defaultPermissionMode,
1006
954
  values: ["manual", "yolo", "plan", "auto"],
1007
955
  },
1008
956
  {
1009
957
  id: "double-escape-action",
1010
958
  label: "Double-escape action",
1011
- description: "Action when pressing Escape twice with empty editor",
959
+ description: "Action for double Escape in an empty editor",
1012
960
  currentValue: config.doubleEscapeAction,
1013
961
  values: ["tree", "fork", "none"],
1014
962
  },
1015
963
  {
1016
964
  id: "tree-filter-mode",
1017
965
  label: "Tree filter mode",
1018
- description: "Default filter when opening /tree",
966
+ description: "Default /tree filter",
1019
967
  currentValue: config.treeFilterMode,
1020
968
  values: ["default", "no-tools", "user-only", "labeled-only", "all"],
1021
969
  },
1022
970
  {
1023
971
  id: "thinking",
1024
972
  label: "Thinking level",
1025
- description: "Reasoning depth for thinking-capable models",
973
+ description: "Reasoning level for supported models",
1026
974
  currentValue: config.thinkingLevel,
1027
- submenu: (currentValue, done) => new SelectSubmenu("Thinking Level", "Select reasoning depth for thinking-capable models", config.availableThinkingLevels.map((level) => ({
975
+ submenu: (currentValue, done) => new SelectSubmenu("Thinking Level", "Reasoning level for supported models", config.availableThinkingLevels.map((level) => ({
1028
976
  value: level,
1029
977
  label: level,
1030
978
  description: THINKING_DESCRIPTIONS[level],
@@ -1036,21 +984,21 @@ export class SettingsSelectorComponent extends Container {
1036
984
  {
1037
985
  id: "theme",
1038
986
  label: "Theme",
1039
- description: "Color theme for the interface",
987
+ description: "Interface color theme",
1040
988
  currentValue: config.currentTheme,
1041
989
  submenu: (currentValue, done) => new ThemeSubmenu(currentValue, config.terminalTheme, config.availableThemes, callbacks, done),
1042
990
  },
1043
991
  {
1044
992
  id: "model-tiers",
1045
993
  label: "Model tiers",
1046
- description: "Route subagents to light/standard/heavy tier models. An explicit model choice overrides the tier.",
994
+ description: "Subagent model routing",
1047
995
  currentValue: config.modelTiers.enabled ? "on" : "off",
1048
996
  submenu: (currentValue, done) => new ModelTiersSubmenu(currentValue, config.modelTiers, callbacks, done),
1049
997
  },
1050
998
  {
1051
999
  id: "plan-usage-window",
1052
1000
  label: "Plan usage window",
1053
- description: "Preferred subscription window for the footer bar. Missing 5h falls back to weekly.",
1001
+ description: "Subscription usage period shown in the footer",
1054
1002
  currentValue: config.planUsageWindow,
1055
1003
  values: ["5h", "weekly"],
1056
1004
  },
@@ -1058,7 +1006,7 @@ export class SettingsSelectorComponent extends Container {
1058
1006
  {
1059
1007
  id: "customize",
1060
1008
  label: "Customize",
1061
- description: "lunR TUI customizations: gutter rail, prompt symbol, footer segments",
1009
+ description: "Interface and footer options",
1062
1010
  currentValue: "configure",
1063
1011
  submenu: (_currentValue, done) => new CustomizeSubmenu(config, callbacks, done),
1064
1012
  },
@@ -1066,7 +1014,7 @@ export class SettingsSelectorComponent extends Container {
1066
1014
  {
1067
1015
  id: "rollback",
1068
1016
  label: "Rollback",
1069
- description: "Pre-edit file snapshots so /rollback can restore them. Capture mode, scope, retention.",
1017
+ description: "Rollback behavior options",
1070
1018
  currentValue: config.rollbackEnabled ? "on" : "off",
1071
1019
  submenu: (currentValue, done) => new RollbackSubmenu(currentValue, config, callbacks, callbacks.isRollbackSessionForceEnabled(), done),
1072
1020
  },
@@ -1074,7 +1022,7 @@ export class SettingsSelectorComponent extends Container {
1074
1022
  {
1075
1023
  id: "auto-manage-subscriptions",
1076
1024
  label: "Auto-manage subscriptions",
1077
- description: "When on, lunr rotates API keys automatically on usage limits and the model selector won't offer manual subscription switching.",
1025
+ description: "Automatic API key rotation after usage limits",
1078
1026
  currentValue: config.autoManageSubscriptions ? "on" : "off",
1079
1027
  values: ["on", "off"],
1080
1028
  },
@@ -1085,7 +1033,7 @@ export class SettingsSelectorComponent extends Container {
1085
1033
  items.push({
1086
1034
  id: "subscriptions",
1087
1035
  label: "Subscriptions",
1088
- description: "Per-provider API key pools: set the active key, rename, clear exhaustion, remove.",
1036
+ description: "Saved API key management",
1089
1037
  currentValue: config.subscriptionCount === 0
1090
1038
  ? "none"
1091
1039
  : `${config.subscriptionCount} key${config.subscriptionCount === 1 ? "" : "s"}`,
@@ -1098,14 +1046,14 @@ export class SettingsSelectorComponent extends Container {
1098
1046
  items.splice(1, 0, {
1099
1047
  id: "show-images",
1100
1048
  label: "Show images",
1101
- description: "Render images inline in terminal",
1049
+ description: "Inline terminal image rendering",
1102
1050
  currentValue: config.showImages ? "true" : "false",
1103
1051
  values: ["true", "false"],
1104
1052
  });
1105
1053
  items.splice(2, 0, {
1106
1054
  id: "image-width-cells",
1107
1055
  label: "Image width",
1108
- description: "Preferred inline image width in terminal cells",
1056
+ description: "Inline image width in terminal cells",
1109
1057
  currentValue: String(config.imageWidthCells),
1110
1058
  values: ["60", "80", "120"],
1111
1059
  });
@@ -1114,7 +1062,7 @@ export class SettingsSelectorComponent extends Container {
1114
1062
  items.splice(supportsImages ? 3 : 1, 0, {
1115
1063
  id: "auto-resize-images",
1116
1064
  label: "Auto-resize images",
1117
- description: "Resize large images to 2000x2000 max for better model compatibility",
1065
+ description: "Limit images to 2000 x 2000 pixels",
1118
1066
  currentValue: config.autoResizeImages ? "true" : "false",
1119
1067
  values: ["true", "false"],
1120
1068
  });
@@ -1123,7 +1071,7 @@ export class SettingsSelectorComponent extends Container {
1123
1071
  items.splice(autoResizeIndex + 1, 0, {
1124
1072
  id: "block-images",
1125
1073
  label: "Block images",
1126
- description: "Prevent images from being sent to LLM providers",
1074
+ description: "Prevent images from reaching model providers",
1127
1075
  currentValue: config.blockImages ? "true" : "false",
1128
1076
  values: ["true", "false"],
1129
1077
  });
@@ -1132,16 +1080,25 @@ export class SettingsSelectorComponent extends Container {
1132
1080
  items.splice(blockImagesIndex + 1, 0, {
1133
1081
  id: "skill-commands",
1134
1082
  label: "Skill commands",
1135
- description: "Register skills as /skill:name commands",
1083
+ description: "Skills as /skill:name commands",
1136
1084
  currentValue: config.enableSkillCommands ? "true" : "false",
1137
1085
  values: ["true", "false"],
1138
1086
  });
1139
- // Hardware cursor toggle (insert after skill-commands)
1087
+ // Skill tag character (insert after skill-commands)
1140
1088
  const skillCommandsIndex = items.findIndex((item) => item.id === "skill-commands");
1141
1089
  items.splice(skillCommandsIndex + 1, 0, {
1090
+ id: "skill-tag-character",
1091
+ label: "Skill tag",
1092
+ description: "After a space, this character lists skills to tag in the message",
1093
+ currentValue: config.skillTagCharacter,
1094
+ values: [...SKILL_TAG_CHARACTERS],
1095
+ });
1096
+ // Hardware cursor toggle (insert after skill-tag-character)
1097
+ const skillTagIndex = items.findIndex((item) => item.id === "skill-tag-character");
1098
+ items.splice(skillTagIndex + 1, 0, {
1142
1099
  id: "show-hardware-cursor",
1143
1100
  label: "Show hardware cursor",
1144
- description: "Show the terminal cursor while still positioning it for IME support",
1101
+ description: "Terminal cursor for input method editors",
1145
1102
  currentValue: config.showHardwareCursor ? "true" : "false",
1146
1103
  values: ["true", "false"],
1147
1104
  });
@@ -1150,7 +1107,7 @@ export class SettingsSelectorComponent extends Container {
1150
1107
  items.splice(hardwareCursorIndex + 1, 0, {
1151
1108
  id: "editor-padding",
1152
1109
  label: "Editor padding",
1153
- description: "Horizontal padding for input editor (0-3)",
1110
+ description: "Horizontal editor padding",
1154
1111
  currentValue: String(config.editorPaddingX),
1155
1112
  values: ["0", "1", "2", "3"],
1156
1113
  });
@@ -1159,7 +1116,7 @@ export class SettingsSelectorComponent extends Container {
1159
1116
  items.splice(editorPaddingIndex + 1, 0, {
1160
1117
  id: "output-padding",
1161
1118
  label: "Output padding",
1162
- description: "Horizontal padding for user messages, assistant messages, and thinking",
1119
+ description: "Horizontal message padding",
1163
1120
  currentValue: String(config.outputPad),
1164
1121
  values: ["0", "1"],
1165
1122
  });
@@ -1168,7 +1125,7 @@ export class SettingsSelectorComponent extends Container {
1168
1125
  items.splice(outputPaddingIndex + 1, 0, {
1169
1126
  id: "autocomplete-max-visible",
1170
1127
  label: "Autocomplete max items",
1171
- description: "Max visible items in autocomplete dropdown (3-20)",
1128
+ description: "Visible autocomplete items",
1172
1129
  currentValue: String(config.autocompleteMaxVisible),
1173
1130
  values: ["3", "5", "7", "10", "15", "20"],
1174
1131
  });
@@ -1177,7 +1134,7 @@ export class SettingsSelectorComponent extends Container {
1177
1134
  items.splice(autocompleteIndex + 1, 0, {
1178
1135
  id: "clear-on-shrink",
1179
1136
  label: "Clear on shrink",
1180
- description: "Clear empty rows when content shrinks (may cause flicker)",
1137
+ description: "Clear leftover terminal rows when content shrinks",
1181
1138
  currentValue: config.clearOnShrink ? "true" : "false",
1182
1139
  values: ["true", "false"],
1183
1140
  });
@@ -1186,7 +1143,7 @@ export class SettingsSelectorComponent extends Container {
1186
1143
  items.splice(clearOnShrinkIndex + 1, 0, {
1187
1144
  id: "terminal-progress",
1188
1145
  label: "Terminal progress",
1189
- description: "Show OSC 9;4 progress indicators in the terminal tab bar",
1146
+ description: "Progress in supported terminal tabs",
1190
1147
  currentValue: config.showTerminalProgress ? "true" : "false",
1191
1148
  values: ["true", "false"],
1192
1149
  });
@@ -1212,6 +1169,9 @@ export class SettingsSelectorComponent extends Container {
1212
1169
  case "skill-commands":
1213
1170
  callbacks.onEnableSkillCommandsChange(newValue === "true");
1214
1171
  break;
1172
+ case "skill-tag-character":
1173
+ callbacks.onSkillTagCharacterChange(newValue);
1174
+ break;
1215
1175
  case "steering-mode":
1216
1176
  callbacks.onSteeringModeChange(newValue);
1217
1177
  break;
@@ -1252,8 +1212,8 @@ export class SettingsSelectorComponent extends Container {
1252
1212
  case "memory-char-cap":
1253
1213
  callbacks.onMemoryCharCapChange(parseInt(newValue, 10));
1254
1214
  break;
1255
- case "behavior-preset":
1256
- callbacks.onBehaviorPresetChange(newValue);
1215
+ case "agent-memory":
1216
+ callbacks.onMemoryEnabledChange(newValue === "on");
1257
1217
  break;
1258
1218
  case "search-curator":
1259
1219
  callbacks.onSearchCuratorChange(newValue);