@tekmidian/pai 1.0.5 → 1.0.6

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 (239) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/dist/{aibroker-client-CQPGqLxL.mjs → aibroker-client-CXsyC7A8.mjs} +2 -2
  3. package/dist/aibroker-client-ChB7gSxV.mjs +3 -0
  4. package/dist/auto-route-Bc8xP6TQ.mjs +11 -0
  5. package/dist/{auto-route-DUYr57rs.mjs → auto-route-YaEGVrFl.mjs} +2 -2
  6. package/dist/budget-DEiebT2A.mjs +15 -0
  7. package/dist/{caller-identity-Bim8JT-D.mjs → caller-identity-C6Nc96iM.mjs} +4 -4
  8. package/dist/{capacity-CsZMkVyg.mjs → capacity-B2PgKAg4.mjs} +65 -5
  9. package/dist/{chain-Dzz6xcKH.mjs → chain-CtK49-Ma.mjs} +5 -5
  10. package/dist/cli/index.mjs +2102 -282
  11. package/dist/{cockpit-actions-BgsiNcUY.mjs → cockpit-actions-C73mJAJ8.mjs} +18 -18
  12. package/dist/{cockpit-actions-BTA1njMO.mjs → cockpit-actions-D1OPP6Es.mjs} +26 -26
  13. package/dist/cockpit-memory-CLHZD64W.mjs +20 -0
  14. package/dist/config/defaults/config.yaml +18 -1
  15. package/dist/{config-CST2uq1v.mjs → config-Bz8pAU5Q.mjs} +3 -3
  16. package/dist/{config-Dv3t7xnT.mjs → config-DHgPx3ER.mjs} +1 -1
  17. package/dist/{config-h5qK3fst.mjs → config-DLmyEK2q.mjs} +2 -2
  18. package/dist/{config-DYbyEe4-.mjs → config-SlZ-Z52i.mjs} +3 -2
  19. package/dist/{controls-OiVVbe-f.mjs → controls-rIItFeIJ.mjs} +59 -66
  20. package/dist/daemon/index.mjs +40 -40
  21. package/dist/daemon-176qA79N.mjs +46 -0
  22. package/dist/{daemon-C1dycZ3W.mjs → daemon-SoUvPUOf.mjs} +79 -31
  23. package/dist/daemon-mcp/index.mjs +49 -38
  24. package/dist/detect-C8nFP-kR.mjs +10 -0
  25. package/dist/{detect-CHuxFrLy.mjs → detect-DLjeYwnt.mjs} +2 -2
  26. package/dist/{embed-pass-DtVF2fOV.mjs → embed-pass-CN1D8MXl.mjs} +5 -5
  27. package/dist/{embedding-gate-B98PK_wz.mjs → embedding-gate-BVQvUmox.mjs} +2 -2
  28. package/dist/{embedding-gate-CTAk8STe.mjs → embedding-gate-iq0oQEkF.mjs} +3 -3
  29. package/dist/{endreason-BqyyU7BH.mjs → endreason-C2-hYK0_.mjs} +4 -4
  30. package/dist/{factory-BV0MQA3T.mjs → factory-CYwa0jYj.mjs} +6 -6
  31. package/dist/factory-DFwez99M.mjs +9 -0
  32. package/dist/{fallback-Bj2cyVk_.mjs → fallback-CwPSCrX8.mjs} +9 -231
  33. package/dist/{health-kufVIf6i.mjs → health-D0mUAVdw.mjs} +5 -5
  34. package/dist/{helpers-CvbYEKoD.mjs → helpers-Dj2nY56t.mjs} +2 -2
  35. package/dist/{helpers-WV8tdQHM.mjs → helpers-DyHKAwrW.mjs} +6 -6
  36. package/dist/hooks/capture-all-events.mjs +68 -3
  37. package/dist/hooks/capture-tool-output.mjs +68 -3
  38. package/dist/hooks/handoff-link.mjs +128 -0
  39. package/dist/hooks/load-project-context.mjs +1 -1
  40. package/dist/hooks/security-validator.mjs +840 -88
  41. package/dist/hooks/supervision-banner.mjs +186 -48
  42. package/dist/hooks/worker-guard.mjs +57 -1
  43. package/dist/hooks/worker-note.mjs +68 -3
  44. package/dist/hooks/worker-pool-host.mjs +1417 -224
  45. package/dist/hooks/worker-status-line.mjs +209 -70
  46. package/dist/index.mjs +9 -9
  47. package/dist/{ipc-client-CnYEF31R.mjs → ipc-client-CmagIFLh.mjs} +2 -2
  48. package/dist/{ipc-client-DN7EvoVo.mjs → ipc-client-DmbSIBUK.mjs} +1 -1
  49. package/dist/{kill-tree-CcpsRLCZ.mjs → kill-tree-DPiMscaY.mjs} +8 -8
  50. package/dist/kill-tree-Dxei6qlR.mjs +10 -0
  51. package/dist/{launch-UPQBoW2q.mjs → launch-BZT3JDoZ.mjs} +3 -3
  52. package/dist/{launch-DpQPZGsT.mjs → launch-Bn2Zf90h.mjs} +3 -3
  53. package/dist/{indexer-backend-B2vtFl38.mjs → lessons-CFVU0cwA.mjs} +262 -43
  54. package/dist/{local-candidate-Cp_bw4kK.mjs → local-candidate-DFd4pp-w.mjs} +3 -3
  55. package/dist/{local-instances-bdCNNSsL.mjs → local-instances-DhF4_sV2.mjs} +2 -2
  56. package/dist/{local-instances-B-c-CxzP.mjs → local-instances-KTh8IeOT.mjs} +4 -4
  57. package/dist/{local-tiers-BtdEEe5n.mjs → local-tiers-CqwGUcEn.mjs} +3 -3
  58. package/dist/{local-tiers-OBqAAfOg.mjs → local-tiers-DSlIYvvm.mjs} +3 -3
  59. package/dist/{main-config-ops-BYsK3BxM.mjs → main-config-ops-rda08BCD.mjs} +3 -3
  60. package/dist/{main-resolver-CAC3xfZM.mjs → main-resolver-BKwI0I6H.mjs} +18 -18
  61. package/dist/{migrate-DrA_OwlZ.mjs → migrate-C2z1YmWC.mjs} +2 -2
  62. package/dist/{model-inventory-BuTpi9a6.mjs → model-inventory-BXv15B0d.mjs} +13 -13
  63. package/dist/{models-add-CJx2YAwh.mjs → models-add-5yXTyz3g.mjs} +38 -38
  64. package/dist/operator-Bmv5tiHQ.mjs +7 -0
  65. package/dist/{operator-DrwWItVt.mjs → operator-Br6GeswF.mjs} +2 -2
  66. package/dist/{pai-marker-DLKJ9Yr5.mjs → pai-marker-D6OoVbM_.mjs} +2 -2
  67. package/dist/{pane-audit-wv9UkyCe.mjs → pane-audit-DLYy9-4g.mjs} +13 -23
  68. package/dist/{paths-DS5VQKoR.mjs → paths-CypxFTfn.mjs} +4 -4
  69. package/dist/{paths-DBd78I7Z.mjs → paths-DIOwNcj-.mjs} +3 -3
  70. package/dist/{planner-K0mFrCpL.mjs → planner-BzZ_2lc-.mjs} +29 -29
  71. package/dist/{pool-BZ94nFuq.mjs → pool-9EsbKD-U.mjs} +2 -2
  72. package/dist/{pool-cli-BjYQDfx6.mjs → pool-cli-Cy5mlycP.mjs} +6 -6
  73. package/dist/{pool-cli-B1eKySeN.mjs → pool-cli-Db0uDwB9.mjs} +5 -5
  74. package/dist/{postgres-CBHY5PIi.mjs → postgres-B1B80bcj.mjs} +3 -3
  75. package/dist/{postgres-C-T5OWer.mjs → postgres-BL5oBBgY.mjs} +3 -3
  76. package/dist/{project-setup-pIPHZaXf.mjs → project-setup-DHxdJjEc.mjs} +24 -25
  77. package/dist/providers-BH6hQYbU.mjs +16 -0
  78. package/dist/{providers-Dzx5GAUI.mjs → providers-BNV7CzC-.mjs} +6 -6
  79. package/dist/{query-feedback-DN52N9C5.mjs → query-feedback-BWl2HRwN.mjs} +2 -2
  80. package/dist/registrable-BwFiqazy.mjs +9 -0
  81. package/dist/{registrable-CXBBpUcz.mjs → registrable-Dxs4oKIj.mjs} +4 -4
  82. package/dist/render-DVGXpfaT.mjs +13 -0
  83. package/dist/render-jPpMrudf.mjs +2240 -0
  84. package/dist/root-C8cxhdn9.mjs +36 -0
  85. package/dist/{root-bG48WVpW.mjs → root-DmOzMeSv.mjs} +10 -10
  86. package/dist/route-table-COAmc1nB.mjs +15 -0
  87. package/dist/{router-CQSc3lk3.mjs → router-D2476pOp.mjs} +2 -2
  88. package/dist/{router-DwHJRgG9.mjs → router-ghujlEFb.mjs} +1 -1
  89. package/dist/{routing-D27jxj9x.mjs → routing-B_cg1_Xx.mjs} +13 -13
  90. package/dist/{routing-BlD_tKjW.mjs → routing-aJKMIagQ.mjs} +15 -15
  91. package/dist/{run-AZVwceiU.mjs → run-DE9Q0ldN.mjs} +47 -31
  92. package/dist/{runtime-paths-WsO9sJFc.mjs → runtime-paths-twfV23YL.mjs} +2 -2
  93. package/dist/{scan-C3uotg_f.mjs → scan-CNMcltOX.mjs} +7 -7
  94. package/dist/{scope-D8HK6vU7.mjs → scope-BTWstJ1B.mjs} +4 -4
  95. package/dist/session-DgZifjLx.mjs +35 -0
  96. package/dist/{session-BAfypQb9.mjs → session-HBYOABWU.mjs} +28 -28
  97. package/dist/session-scan-BZxnYN1v.mjs +9 -0
  98. package/dist/{session-scan-BmnjSReu.mjs → session-scan-CX3MKCNg.mjs} +6 -6
  99. package/dist/{session-usage-oycSdiD3.mjs → session-usage-CCmPFFa6.mjs} +3 -3
  100. package/dist/{status-COtzewKV.mjs → status-Cecau8Ps.mjs} +9 -5
  101. package/dist/status-D52xC_i0.mjs +6 -0
  102. package/dist/{tool-errors-DXJ70-sr.mjs → tool-errors-BFw1gv-z.mjs} +2 -2
  103. package/dist/{tool-errors-B2LnIqR0.mjs → tool-errors-COM2JGEr.mjs} +6 -6
  104. package/dist/viewer-Ce-Xa9L3.mjs +22 -0
  105. package/dist/{viewer-BgGRqXfD.mjs → viewer-DvBg6N22.mjs} +16 -14
  106. package/dist/{wait-ChpHKJZV.mjs → wait-C5iWILj_.mjs} +3 -3
  107. package/dist/worker-config-BmcJ9R0U.mjs +42 -0
  108. package/dist/{worker-config-DgdT0iTB.mjs → worker-config-DkONNk_H.mjs} +54 -103
  109. package/dist/{workers-config-BhZBrR-Q.mjs → workers-config-DwzrtdYu.mjs} +2 -2
  110. package/dist/{worktree-BY--Rgmy.mjs → worktree-O_kU6Q3y.mjs} +164 -8
  111. package/dist/{zettelkasten-BHVx5zj-.mjs → zettelkasten-BH8AdNh8.mjs} +4 -4
  112. package/dist/{zettelkasten-LoH9RBiN.mjs → zettelkasten-FFhQFESJ.mjs} +2 -2
  113. package/docs/commands/README.md +32 -2
  114. package/docs/commands/audit.md +34 -3
  115. package/docs/commands/backup.md +1 -1
  116. package/docs/commands/build.md +4 -4
  117. package/docs/commands/cd.md +1 -1
  118. package/docs/commands/clear-names.md +1 -1
  119. package/docs/commands/cockpit.md +1 -1
  120. package/docs/commands/config.md +1 -1
  121. package/docs/commands/daemon.md +1 -1
  122. package/docs/commands/db.md +1 -1
  123. package/docs/commands/doc.md +1 -1
  124. package/docs/commands/end.md +1 -1
  125. package/docs/commands/find.md +1 -1
  126. package/docs/commands/git.md +110 -0
  127. package/docs/commands/handoff.md +70 -0
  128. package/docs/commands/harness.md +74 -0
  129. package/docs/commands/help.md +1 -1
  130. package/docs/commands/home.md +1 -1
  131. package/docs/commands/hooks-db.md +1 -1
  132. package/docs/commands/identity.md +1 -1
  133. package/docs/commands/install.md +1 -1
  134. package/docs/commands/issue.md +1 -1
  135. package/docs/commands/kg.md +1 -1
  136. package/docs/commands/launch.md +1 -1
  137. package/docs/commands/lessons.md +201 -0
  138. package/docs/commands/list.md +1 -1
  139. package/docs/commands/ls.md +1 -1
  140. package/docs/commands/mcp.md +1 -1
  141. package/docs/commands/memory.md +1 -1
  142. package/docs/commands/models.md +1 -1
  143. package/docs/commands/more.md +1 -1
  144. package/docs/commands/new.md +1 -1
  145. package/docs/commands/notes.md +1 -1
  146. package/docs/commands/notify.md +1 -1
  147. package/docs/commands/observation.md +1 -1
  148. package/docs/commands/obsidian.md +1 -1
  149. package/docs/commands/open.md +1 -1
  150. package/docs/commands/pane.md +1 -1
  151. package/docs/commands/pause.md +1 -1
  152. package/docs/commands/plan.md +1 -1
  153. package/docs/commands/project.md +1 -1
  154. package/docs/commands/projects.md +1 -1
  155. package/docs/commands/providers.md +1 -1
  156. package/docs/commands/queue.md +1 -1
  157. package/docs/commands/registry.md +1 -1
  158. package/docs/commands/reload.md +1 -1
  159. package/docs/commands/rename.md +1 -1
  160. package/docs/commands/restore.md +1 -1
  161. package/docs/commands/resume.md +1 -1
  162. package/docs/commands/router.md +1 -1
  163. package/docs/commands/rules.md +70 -0
  164. package/docs/commands/session.md +1 -1
  165. package/docs/commands/sessions.md +1 -1
  166. package/docs/commands/setup.md +1 -1
  167. package/docs/commands/setups.md +1 -1
  168. package/docs/commands/shell-init.md +1 -1
  169. package/docs/commands/skill.md +1 -1
  170. package/docs/commands/task.md +1 -1
  171. package/docs/commands/tasks.md +1 -1
  172. package/docs/commands/topic.md +1 -1
  173. package/docs/commands/update.md +1 -1
  174. package/docs/commands/worker.md +1 -1
  175. package/docs/commands/zettel.md +1 -1
  176. package/docs/concepts/panes.md +3 -2
  177. package/gemini-extension.json +1 -1
  178. package/package.json +2 -2
  179. package/pai-plugin.json +1 -1
  180. package/plugins/context-preservation/plugin.json +1 -1
  181. package/plugins/core/plugin.json +1 -1
  182. package/plugins/creative/plugin.json +1 -1
  183. package/plugins/observability/plugin.json +1 -1
  184. package/plugins/productivity/plugin.json +1 -1
  185. package/plugins/semantic-search/plugin.json +1 -1
  186. package/plugins/ui/plugin.json +1 -1
  187. package/plugins/zettelkasten/plugin.json +1 -1
  188. package/src/hooks/ts/lib/loop-guard.ts +3 -5
  189. package/src/hooks/ts/lib/rules/builtin/base64-decode-to-shell.rule.yaml +13 -0
  190. package/src/hooks/ts/lib/rules/builtin/chmod-world-writable.rule.yaml +13 -0
  191. package/src/hooks/ts/lib/rules/builtin/chmod-zero.rule.yaml +11 -0
  192. package/src/hooks/ts/lib/rules/builtin/credential-file-read.rule.yaml +13 -0
  193. package/src/hooks/ts/lib/rules/builtin/credential-read-then-network.rule.yaml +29 -0
  194. package/src/hooks/ts/lib/rules/builtin/crontab-persistence.rule.yaml +10 -0
  195. package/src/hooks/ts/lib/rules/builtin/curl-piped-to-shell.rule.yaml +15 -0
  196. package/src/hooks/ts/lib/rules/builtin/download-then-execute.rule.yaml +30 -0
  197. package/src/hooks/ts/lib/rules/builtin/find-root-delete.rule.yaml +11 -0
  198. package/src/hooks/ts/lib/rules/builtin/git-push-force.rule.yaml +24 -0
  199. package/src/hooks/ts/lib/rules/builtin/git-push-plus-refspec.rule.yaml +12 -0
  200. package/src/hooks/ts/lib/rules/builtin/git-reset-hard.rule.yaml +12 -0
  201. package/src/hooks/ts/lib/rules/builtin/injection-then-tool.rule.yaml +30 -0
  202. package/src/hooks/ts/lib/rules/builtin/instruction-override-disregard.rule.yaml +12 -0
  203. package/src/hooks/ts/lib/rules/builtin/instruction-override-ignore.rule.yaml +13 -0
  204. package/src/hooks/ts/lib/rules/builtin/launchagents-write-persistence.rule.yaml +12 -0
  205. package/src/hooks/ts/lib/rules/builtin/launchctl-load-persistence.rule.yaml +10 -0
  206. package/src/hooks/ts/lib/rules/builtin/reverse-shell-dev-tcp.rule.yaml +11 -0
  207. package/src/hooks/ts/lib/rules/builtin/reverse-shell-interactive-bash.rule.yaml +11 -0
  208. package/src/hooks/ts/lib/rules/builtin/rm-recursive-parent.rule.yaml +11 -0
  209. package/src/hooks/ts/lib/rules/builtin/rm-recursive-relative.rule.yaml +11 -0
  210. package/src/hooks/ts/lib/rules/builtin/rm-recursive-root.rule.yaml +24 -0
  211. package/src/hooks/ts/lib/rules/builtin/rm-trailing-tilde.rule.yaml +11 -0
  212. package/src/hooks/ts/lib/rules/builtin/sudoers-nopasswd.rule.yaml +15 -0
  213. package/src/hooks/ts/lib/rules/builtin.generated.ts +530 -0
  214. package/src/hooks/ts/lib/rules/eval.ts +74 -0
  215. package/src/hooks/ts/lib/rules/lint.ts +102 -0
  216. package/src/hooks/ts/lib/rules/load.ts +229 -0
  217. package/src/hooks/ts/lib/rules/types.ts +56 -0
  218. package/src/hooks/ts/pre-tool-use/security-validator.ts +27 -96
  219. package/src/hooks/ts/user-prompt/handoff-link.ts +34 -0
  220. package/dist/aibroker-client-BxzeEHPF.mjs +0 -3
  221. package/dist/auto-route-DWYK_0i0.mjs +0 -11
  222. package/dist/budget-DX-VIWGf.mjs +0 -15
  223. package/dist/cockpit-memory-DIrNs4xr.mjs +0 -20
  224. package/dist/daemon-ieo0lnpq.mjs +0 -46
  225. package/dist/detect-C0ZBXqDL.mjs +0 -10
  226. package/dist/factory-DeASMV7Z.mjs +0 -9
  227. package/dist/kill-tree-CXZ0WfVf.mjs +0 -10
  228. package/dist/operator-Bpxq_WB5.mjs +0 -7
  229. package/dist/providers-QJzpaNhX.mjs +0 -16
  230. package/dist/registrable-Drn8wIDO.mjs +0 -9
  231. package/dist/render-C4KR8qQ8.mjs +0 -13
  232. package/dist/render-Cz3BWIBO.mjs +0 -903
  233. package/dist/root-Bfb1zgwE.mjs +0 -36
  234. package/dist/route-table-ZVMNBsy7.mjs +0 -15
  235. package/dist/session-BcnhepLZ.mjs +0 -35
  236. package/dist/session-scan-CqUQdCac.mjs +0 -9
  237. package/dist/status-D_SWmOlH.mjs +0 -6
  238. package/dist/viewer-CbGN2Ri4.mjs +0 -22
  239. package/dist/worker-config-D1KVAMp4.mjs +0 -42
@@ -1,20 +1,20 @@
1
- import "./config-CST2uq1v.mjs";
2
- import "./config-DYbyEe4-.mjs";
3
- import "./paths-DS5VQKoR.mjs";
4
- import "./status-COtzewKV.mjs";
5
- import "./scope-D8HK6vU7.mjs";
6
- import "./routing-BlD_tKjW.mjs";
7
- import "./tool-errors-DXJ70-sr.mjs";
8
- import "./wait-ChpHKJZV.mjs";
9
- import "./local-tiers-BtdEEe5n.mjs";
10
- import "./caller-identity-Bim8JT-D.mjs";
11
- import "./capacity-CsZMkVyg.mjs";
12
- import "./local-instances-bdCNNSsL.mjs";
13
- import "./local-candidate-Cp_bw4kK.mjs";
14
- import "./providers-Dzx5GAUI.mjs";
15
- import "./main-config-ops-BYsK3BxM.mjs";
16
- import { C as runtimeOpRefusal, D as writeLedgerLine, E as tierNames, S as runtimeJobProgress, T as spawnMemoryRun, _ as resolveTierName, a as classesOnProvider, b as runningRuntimeJob, c as defaultDeps, d as labelPath, f as logTailSince, g as readLabels, h as readCockpitJob, i as WORKER_ROLE_CLASSES, l as engineInflight, m as orchestratorProvider, n as RUNTIME_START_EVENT, o as cockpitActionLedger, p as memoryRunRefusal, r as RUNTIME_STOP_EVENT, s as cockpitJobFile, t as COCKPIT_ACTION_EVENT, u as labelFor, v as runCockpitAction, w as runtimeStartStop, x as runningRuntimeJobs, y as runningLocalModel } from "./cockpit-actions-BTA1njMO.mjs";
17
- import "./ipc-client-CnYEF31R.mjs";
18
- import "./embed-pass-DtVF2fOV.mjs";
1
+ import "./config-Bz8pAU5Q.mjs";
2
+ import "./config-SlZ-Z52i.mjs";
3
+ import "./paths-CypxFTfn.mjs";
4
+ import "./status-Cecau8Ps.mjs";
5
+ import "./scope-BTWstJ1B.mjs";
6
+ import "./routing-aJKMIagQ.mjs";
7
+ import "./tool-errors-BFw1gv-z.mjs";
8
+ import "./wait-C5iWILj_.mjs";
9
+ import "./local-tiers-CqwGUcEn.mjs";
10
+ import "./caller-identity-C6Nc96iM.mjs";
11
+ import "./capacity-B2PgKAg4.mjs";
12
+ import "./local-instances-DhF4_sV2.mjs";
13
+ import "./local-candidate-DFd4pp-w.mjs";
14
+ import "./providers-BNV7CzC-.mjs";
15
+ import "./main-config-ops-rda08BCD.mjs";
16
+ import { C as runtimeOpRefusal, D as writeLedgerLine, E as tierNames, S as runtimeJobProgress, T as spawnMemoryRun, _ as resolveTierName, a as classesOnProvider, b as runningRuntimeJob, c as defaultDeps, d as labelPath, f as logTailSince, g as readLabels, h as readCockpitJob, i as WORKER_ROLE_CLASSES, l as engineInflight, m as orchestratorProvider, n as RUNTIME_START_EVENT, o as cockpitActionLedger, p as memoryRunRefusal, r as RUNTIME_STOP_EVENT, s as cockpitJobFile, t as COCKPIT_ACTION_EVENT, u as labelFor, v as runCockpitAction, w as runtimeStartStop, x as runningRuntimeJobs, y as runningLocalModel } from "./cockpit-actions-D1OPP6Es.mjs";
17
+ import "./ipc-client-CmagIFLh.mjs";
18
+ import "./embed-pass-CN1D8MXl.mjs";
19
19
 
20
20
  export { COCKPIT_ACTION_EVENT, RUNTIME_START_EVENT, RUNTIME_STOP_EVENT, WORKER_ROLE_CLASSES, classesOnProvider, cockpitActionLedger, cockpitJobFile, defaultDeps, engineInflight, labelFor, labelPath, logTailSince, memoryRunRefusal, orchestratorProvider, readCockpitJob, readLabels, resolveTierName, runCockpitAction, runningLocalModel, runningRuntimeJob, runningRuntimeJobs, runtimeJobProgress, runtimeOpRefusal, runtimeStartStop, spawnMemoryRun, tierNames, writeLedgerLine };
@@ -1,17 +1,17 @@
1
- import { g as paiHomePath, h as paiHomeDir } from "./runtime-paths-WsO9sJFc.mjs";
2
- import { Et as appendLedger, M as readWorkersSection, Ot as parseLedger, rt as workersYamlPath, t as ANTHROPIC_NATIVE } from "./config-CST2uq1v.mjs";
3
- import { c as loadConfig, f as readMainConfigRaw, h as effectiveMainConfig, m as deepMergeConfig, p as writeMainConfigRaw, u as paiConfigFilePath, y as shippedMainDefaults } from "./config-DYbyEe4-.mjs";
4
- import { i as ledgerPath, u as workersLogDir } from "./paths-DS5VQKoR.mjs";
5
- import { it as readInventory } from "./routing-BlD_tKjW.mjs";
6
- import { _ as readLocalConfig } from "./local-tiers-BtdEEe5n.mjs";
1
+ import { _ as paiHomePath, g as paiHomeDir } from "./runtime-paths-twfV23YL.mjs";
2
+ import { Et as appendLedger, M as readWorkersSection, Ot as parseLedger, rt as workersYamlPath, t as ANTHROPIC_NATIVE } from "./config-Bz8pAU5Q.mjs";
3
+ import { c as loadConfig, f as readMainConfigRaw, h as effectiveMainConfig, m as deepMergeConfig, p as writeMainConfigRaw, u as paiConfigFilePath, y as shippedMainDefaults } from "./config-SlZ-Z52i.mjs";
4
+ import { i as ledgerPath, u as workersLogDir } from "./paths-CypxFTfn.mjs";
5
+ import { it as readInventory } from "./routing-aJKMIagQ.mjs";
6
+ import { _ as readLocalConfig } from "./local-tiers-CqwGUcEn.mjs";
7
7
  import { f as sharedScheduler } from "./scheduler-CtUyWJ3O.mjs";
8
- import { r as instanceEngineKey } from "./local-instances-bdCNNSsL.mjs";
9
- import { o as primaryLocal, s as readLocalStatus } from "./local-candidate-Cp_bw4kK.mjs";
8
+ import { r as instanceEngineKey } from "./local-instances-DhF4_sV2.mjs";
9
+ import { o as primaryLocal, s as readLocalStatus } from "./local-candidate-DFd4pp-w.mjs";
10
10
  import { t as LOCAL_PROBE_TIMEOUT_MS } from "./timeouts-1MLooEBB.mjs";
11
- import { f as setClass } from "./providers-Dzx5GAUI.mjs";
12
- import { o as setConfigValueOp, s as unsetConfigValueOp } from "./main-config-ops-BYsK3BxM.mjs";
13
- import { n as PaiClient } from "./ipc-client-CnYEF31R.mjs";
14
- import { l as readEmbedPasses } from "./embed-pass-DtVF2fOV.mjs";
11
+ import { f as setClass } from "./providers-BNV7CzC-.mjs";
12
+ import { o as setConfigValueOp, s as unsetConfigValueOp } from "./main-config-ops-rda08BCD.mjs";
13
+ import { n as PaiClient } from "./ipc-client-CmagIFLh.mjs";
14
+ import { l as readEmbedPasses } from "./embed-pass-CN1D8MXl.mjs";
15
15
  import { appendFileSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, renameSync, rmSync, rmdirSync, statSync, writeFileSync } from "node:fs";
16
16
  import { randomBytes } from "node:crypto";
17
17
  import { dirname, join } from "node:path";
@@ -1279,23 +1279,23 @@ function defaultDeps() {
1279
1279
  const logDir = workersLogDir(workers);
1280
1280
  return {
1281
1281
  startTier: async (tierName) => {
1282
- const { startTier } = await import("./worker-config-D1KVAMp4.mjs");
1282
+ const { startTier } = await import("./worker-config-BmcJ9R0U.mjs");
1283
1283
  const cfg = readLocalConfig(workersYamlPath());
1284
1284
  const tier = cfg.tiers[tierName];
1285
1285
  if (!tier) throw new Error(`no tier "${tierName}" (configured: ${Object.keys(cfg.tiers).join(", ") || "none"})`);
1286
1286
  await startTier(cfg, tierName, tier);
1287
1287
  },
1288
1288
  stopAll: async () => {
1289
- const { stopAll } = await import("./worker-config-D1KVAMp4.mjs");
1289
+ const { stopAll } = await import("./worker-config-BmcJ9R0U.mjs");
1290
1290
  await stopAll(readLocalConfig(workersYamlPath()));
1291
1291
  },
1292
1292
  startModel: async (model) => {
1293
- const { startInstance } = await import("./worker-config-D1KVAMp4.mjs");
1293
+ const { startInstance } = await import("./worker-config-BmcJ9R0U.mjs");
1294
1294
  await startInstance(readLocalConfig(workersYamlPath()), model);
1295
1295
  },
1296
1296
  stopModel: async (target, opts) => {
1297
- const { stopInstance } = await import("./worker-config-D1KVAMp4.mjs");
1298
- const { currentInstances } = await import("./worker-config-D1KVAMp4.mjs");
1297
+ const { stopInstance } = await import("./worker-config-BmcJ9R0U.mjs");
1298
+ const { currentInstances } = await import("./worker-config-BmcJ9R0U.mjs");
1299
1299
  const cfg = readLocalConfig(workersYamlPath());
1300
1300
  const keys = new Map(currentInstances(cfg).map((r) => [r.id, instanceEngineKey(r)]));
1301
1301
  await stopInstance(cfg, target, opts, {
@@ -1304,7 +1304,7 @@ function defaultDeps() {
1304
1304
  });
1305
1305
  },
1306
1306
  runningCount: async (model) => {
1307
- const { currentInstances } = await import("./worker-config-D1KVAMp4.mjs");
1307
+ const { currentInstances } = await import("./worker-config-BmcJ9R0U.mjs");
1308
1308
  return currentInstances(readLocalConfig(workersYamlPath())).filter((r) => r.model === model && r.state !== "failed").length;
1309
1309
  },
1310
1310
  setClass: (cls, target) => void setClass(cls, target),
@@ -1588,7 +1588,7 @@ async function runCockpitAction(body, deps, hooks = {}) {
1588
1588
  if (action === "route.set") {
1589
1589
  if (!target) return fail("target (tier) required");
1590
1590
  try {
1591
- const { setRoute } = await import("./route-table-ZVMNBsy7.mjs");
1591
+ const { setRoute } = await import("./route-table-COAmc1nB.mjs");
1592
1592
  const models = Array.isArray(body.models) ? body.models : value !== void 0 ? value.split(",") : body.models;
1593
1593
  const change = setRoute(target, models, deps.configPath);
1594
1594
  writeLedgerLine(deps, action, change.id, `set:${change.entries.join(">")}`);
@@ -1605,7 +1605,7 @@ async function runCockpitAction(body, deps, hooks = {}) {
1605
1605
  if (value !== "on" && value !== "off") return fail(`value must be on or off, got "${value ?? ""}"`);
1606
1606
  if (!deps.workers.providers[target]?.characteristics) return fail(`"${target}" is not a registered endpoint (providers.${target}.characteristics)`);
1607
1607
  try {
1608
- const { setProviderEnabled } = await import("./providers-QJzpaNhX.mjs");
1608
+ const { setProviderEnabled } = await import("./providers-BH6hQYbU.mjs");
1609
1609
  setProviderEnabled(target, value === "on", deps.configPath);
1610
1610
  writeLedgerLine(deps, action, target, `routing ${value}`);
1611
1611
  return {
@@ -1631,7 +1631,7 @@ async function runCockpitAction(body, deps, hooks = {}) {
1631
1631
  message: `worker classes → ${provider}`
1632
1632
  };
1633
1633
  }
1634
- const { useProvider } = await import("./providers-QJzpaNhX.mjs");
1634
+ const { useProvider } = await import("./providers-BH6hQYbU.mjs");
1635
1635
  useProvider(provider);
1636
1636
  try {
1637
1637
  const raw = readMainConfigRaw();
@@ -1666,14 +1666,14 @@ async function memoryRunRefusal(deps, nowMs = Date.now()) {
1666
1666
  }
1667
1667
  /** The daemon's count of chunks without vectors; null when it does not answer. */
1668
1668
  async function daemonEmbedBacklog() {
1669
- const { fetchDaemonMemory } = await import("./cockpit-memory-DIrNs4xr.mjs");
1669
+ const { fetchDaemonMemory } = await import("./cockpit-memory-CLHZD64W.mjs");
1670
1670
  return (await fetchDaemonMemory())?.embedBacklog ?? null;
1671
1671
  }
1672
1672
  /** The daemon's in-process passes (no child, so no marker): its status says whether one runs. */
1673
1673
  async function daemonMemoryBusy() {
1674
1674
  try {
1675
- const { PaiClient } = await import("./ipc-client-DN7EvoVo.mjs");
1676
- const { loadConfig } = await import("./config-Dv3t7xnT.mjs");
1675
+ const { PaiClient } = await import("./ipc-client-DmbSIBUK.mjs");
1676
+ const { loadConfig } = await import("./config-DHgPx3ER.mjs");
1677
1677
  const s = await new PaiClient(loadConfig().socketPath).call("status", {}, 5e3);
1678
1678
  if (s.embedInProgress) return "embed already running (started by daemon)";
1679
1679
  if (s.indexInProgress) return "index already running (started by daemon)";
@@ -1787,7 +1787,7 @@ async function finishRuntimeJob(deps, hooks, id, runtime, op) {
1787
1787
  end(state, message);
1788
1788
  }
1789
1789
  async function defaultRefreshInventory() {
1790
- const { computeInventory, readInventoryInput, writeInventory } = await import("./model-inventory-BuTpi9a6.mjs");
1790
+ const { computeInventory, readInventoryInput, writeInventory } = await import("./model-inventory-BXv15B0d.mjs");
1791
1791
  writeInventory(workersLogDir(readWorkersSection().workers), await computeInventory(readInventoryInput()));
1792
1792
  }
1793
1793
  /** Runs the injected local job, records its outcome in the job file and ledger. */
@@ -1857,4 +1857,4 @@ function cockpitActionLedger(ledgerFile, lastN = 10) {
1857
1857
 
1858
1858
  //#endregion
1859
1859
  export { cockpitMemoryPayload as A, cockpitLayout as B, runtimeOpRefusal as C, writeLedgerLine as D, tierNames as E, memoryRunLog as F, acquireRun as H, rateSeries as I, runProgress as L, latestMemoryJob as M, liveMemoryDeps as N, embeddingRuntimeName as O, memoryJobProgress as P, runningMemoryJob as R, runtimeJobProgress as S, spawnMemoryRun as T, readRun as U, cockpitProbeSettings as V, resolveTierName as _, classesOnProvider as a, runningRuntimeJob as b, defaultDeps as c, labelPath as d, logTailSince as f, readLabels as g, readCockpitJob as h, WORKER_ROLE_CLASSES as i, fetchDaemonMemory as j, readRuntimeCommands as k, engineInflight as l, orchestratorProvider as m, RUNTIME_START_EVENT as n, cockpitActionLedger as o, memoryRunRefusal as p, RUNTIME_STOP_EVENT as r, cockpitJobFile as s, COCKPIT_ACTION_EVENT as t, labelFor as u, runCockpitAction as v, runtimeStartStop as w, runningRuntimeJobs as x, runningLocalModel as y, sameModel as z };
1860
- //# sourceMappingURL=cockpit-actions-BTA1njMO.mjs.map
1860
+ //# sourceMappingURL=cockpit-actions-D1OPP6Es.mjs.map
@@ -0,0 +1,20 @@
1
+ import "./config-Bz8pAU5Q.mjs";
2
+ import "./config-SlZ-Z52i.mjs";
3
+ import "./paths-CypxFTfn.mjs";
4
+ import "./status-Cecau8Ps.mjs";
5
+ import "./scope-BTWstJ1B.mjs";
6
+ import "./routing-aJKMIagQ.mjs";
7
+ import "./tool-errors-BFw1gv-z.mjs";
8
+ import "./wait-C5iWILj_.mjs";
9
+ import "./local-tiers-CqwGUcEn.mjs";
10
+ import "./caller-identity-C6Nc96iM.mjs";
11
+ import "./capacity-B2PgKAg4.mjs";
12
+ import "./local-instances-DhF4_sV2.mjs";
13
+ import "./local-candidate-DFd4pp-w.mjs";
14
+ import "./providers-BNV7CzC-.mjs";
15
+ import "./main-config-ops-rda08BCD.mjs";
16
+ import { A as cockpitMemoryPayload, F as memoryRunLog, I as rateSeries, L as runProgress, M as latestMemoryJob, N as liveMemoryDeps, P as memoryJobProgress, R as runningMemoryJob, j as fetchDaemonMemory, z as sameModel } from "./cockpit-actions-D1OPP6Es.mjs";
17
+ import "./ipc-client-CmagIFLh.mjs";
18
+ import "./embed-pass-CN1D8MXl.mjs";
19
+
20
+ export { fetchDaemonMemory };
@@ -132,6 +132,16 @@ sessions:
132
132
  minContextTokens: 20000
133
133
  # The exact word typed into the session.
134
134
  prompt: keepalive
135
+ # Worker settings.
136
+ workers:
137
+ merge:
138
+ # Globs of generated files. When a `pai worker merge` conflicts only in
139
+ # these (plus pure-addition clashes, which are union-merged), the merge
140
+ # takes our side, runs `regenerate`, stages these paths and completes.
141
+ generated:
142
+ - "docs/commands/**"
143
+ # Shell command, run in the target checkout, that rewrites the generated files.
144
+ regenerate: "npm run build"
135
145
  # Obsidian sync into the PAI-generated vault. Gates only writing; vault
136
146
  # indexing is vaultIndex.
137
147
  obsidian:
@@ -140,6 +150,13 @@ obsidian:
140
150
  # obsidian.enabled.
141
151
  vaultIndex:
142
152
  enabled: true
153
+ # Index <PAI home>/lessons (review-gated lessons) for memory search.
154
+ lessonsIndex:
155
+ enabled: true
156
+ # Harness session ingestion (src/harness): names from the adapter registry
157
+ # (claude-code, codex). Read-only; an adapter whose store is absent never runs.
158
+ harness:
159
+ adapters: [claude-code]
143
160
  # Keep `pai router` (127.0.0.1:8790) running under the daemon.
144
161
  router:
145
162
  enabled: false
@@ -335,7 +352,7 @@ models:
335
352
  note: idle loads a model on the first request
336
353
  # Worker panes (src/workers/pane*.ts; read through src/workers/pane-policy.ts).
337
354
  panes:
338
- # Smallest pane a worker may be placed in; smaller is flagged SMALL.
355
+ # Smallest pane a worker may be placed in; guides which pane is split. A small pane is never a violation.
339
356
  minCols: 40
340
357
  minRows: 6
341
358
  # Verify a new pane: attempts and the poll interval between them.
@@ -1,5 +1,5 @@
1
- import { _ as resolvePaiFile, f as legacyConfigDir, g as paiHomePath, l as claudeHomeDir, m as migratePaiFile } from "./runtime-paths-WsO9sJFc.mjs";
2
- import { D as writeYamlFileAtomic, E as YamlStoreError, O as readJsonStrict, _ as effectiveWorkersYamlRaw, b as shippedWorkersDefaults, f as readMainConfigRaw, g as effectiveWorkersYamlDoc, h as effectiveMainConfig, k as writeJsonAtomic, n as CONFIG_FILE, o as expandHome, p as writeMainConfigRaw, u as paiConfigFilePath, x as userWorkersYamlRaw } from "./config-DYbyEe4-.mjs";
1
+ import { _ as paiHomePath, f as legacyConfigDir, h as migratePaiFile, l as claudeHomeDir, v as resolvePaiFile } from "./runtime-paths-twfV23YL.mjs";
2
+ import { D as writeYamlFileAtomic, E as YamlStoreError, O as readJsonStrict, _ as effectiveWorkersYamlRaw, b as shippedWorkersDefaults, f as readMainConfigRaw, g as effectiveWorkersYamlDoc, h as effectiveMainConfig, k as writeJsonAtomic, n as CONFIG_FILE, o as expandHome, p as writeMainConfigRaw, u as paiConfigFilePath, x as userWorkersYamlRaw } from "./config-SlZ-Z52i.mjs";
3
3
  import { appendFileSync, chmodSync, existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
4
4
  import { dirname, join, resolve } from "node:path";
5
5
  import { Document, Scalar, parseDocument } from "yaml";
@@ -2500,4 +2500,4 @@ function escalationCloud() {
2500
2500
 
2501
2501
  //#endregion
2502
2502
  export { readWorkersYaml as $, providerQuotaSkipAt as A, isLoopbackUrl as B, parseMcpSetsValue as C, planEscalation as Ct, providerContextWindow as D, ledgerSummary as Dt, parseWorkersConfig as E, appendLedger as Et, resolveProviderKey as F, effectiveWorkersYamlData as G, WORKERS_YAML_FILENAME as H, workersConfigStamp as I, migrateWorkersToYaml as J, initWorkersYaml as K, writeWorkersSection as L, readWorkersSection as M, resolveCapability as N, providerCostTier as O, parseLedger as Ot, resolveModelCapability as P, readMergeVerify as Q, LOOPBACK_HOST as R, parseClassesValue as S, ledgerEscalate as St, parseProvider as T, withSummary as Tt, buildWorkersYamlText as U, loopbackUrl as V, defaultWorkersYamlPath as W, parseBuiltinAnthropic as X, needsWorkersYamlRelocation as Y, parseWorkersYamlDocument as Z, maskKey as _, DEFAULT_CONTEXT_WINDOW as _t, MODEL_CAPABILITIES as a, writeWorkersYamlText as at, nativeOrchestratorModel as b, stripModelVariant as bt, WorkersConfigError as c, applyRouteOverrides as ct, defaultWorkersConfig as d, findTier as dt, relocateWorkersYaml as et, escalationCloud as f, listForPolicy as ft, keysDir as g, targetList as gt, isModelCapability as h, sessionTier as ht, DEFAULT_POOL_PORT as i, writeWorkersYaml as it, readWorkersCached as j, providerKeyPath as k, assertProviderRunnable as l, classRoute as lt, isLocalProvider as m, parseEntry as mt, CAPABILITY_NAME_RE as n, workersYamlLegacyNotice as nt, PROVIDER_TAGS as o, yamlProviderToRaw as ot, getProviderOrNative as p, migrateSessionRoutes as pt, inlineWorkersYamlKeys as q, DEFAULT_COST_TIER as r, workersYamlPath as rt, WORKER_CLASSES as s, MAX_ROUTE_MODELS as st, ANTHROPIC_NATIVE as t, starterWorkersYamlText as tt, classModelCapability as u, entryProvider as ut, nativeAnthropicModels as v, certainContextWindow as vt, parseModelsBlock as w, sessionNote as wt, parseCapabilitiesValue as x, ESCALATE_FAILURES as xt, nativeAnthropicProvider as y, contextWindowFromModelId as yt, isLoopbackHostname as z };
2503
- //# sourceMappingURL=config-CST2uq1v.mjs.map
2503
+ //# sourceMappingURL=config-Bz8pAU5Q.mjs.map
@@ -1,3 +1,3 @@
1
- import { a as ensureConfigDir, c as loadConfig, d as paiConfigYamlFilePath, f as readMainConfigRaw, i as defaults, l as migrateConfigFile, n as CONFIG_FILE, o as expandHome, p as writeMainConfigRaw, r as ConfigMigrationError, s as homeRel, t as CONFIG_DIR, u as paiConfigFilePath } from "./config-DYbyEe4-.mjs";
1
+ import { a as ensureConfigDir, c as loadConfig, d as paiConfigYamlFilePath, f as readMainConfigRaw, i as defaults, l as migrateConfigFile, n as CONFIG_FILE, o as expandHome, p as writeMainConfigRaw, r as ConfigMigrationError, s as homeRel, t as CONFIG_DIR, u as paiConfigFilePath } from "./config-SlZ-Z52i.mjs";
2
2
 
3
3
  export { CONFIG_DIR, CONFIG_FILE, ConfigMigrationError, defaults, ensureConfigDir, expandHome, homeRel, loadConfig, migrateConfigFile, paiConfigFilePath, paiConfigYamlFilePath, readMainConfigRaw, writeMainConfigRaw };
@@ -1,4 +1,4 @@
1
- import { A as providerQuotaSkipAt, C as parseMcpSetsValue, D as providerContextWindow, E as parseWorkersConfig, F as resolveProviderKey, I as workersConfigStamp, L as writeWorkersSection, M as readWorkersSection, N as resolveCapability, O as providerCostTier, P as resolveModelCapability, S as parseClassesValue, T as parseProvider, _ as maskKey, _t as DEFAULT_CONTEXT_WINDOW, a as MODEL_CAPABILITIES, b as nativeOrchestratorModel, c as WorkersConfigError, d as defaultWorkersConfig, f as escalationCloud, g as keysDir, h as isModelCapability, i as DEFAULT_POOL_PORT, j as readWorkersCached, k as providerKeyPath, l as assertProviderRunnable, m as isLocalProvider, n as CAPABILITY_NAME_RE, o as PROVIDER_TAGS, p as getProviderOrNative, r as DEFAULT_COST_TIER, s as WORKER_CLASSES, t as ANTHROPIC_NATIVE, u as classModelCapability, v as nativeAnthropicModels, w as parseModelsBlock, x as parseCapabilitiesValue, y as nativeAnthropicProvider } from "./config-CST2uq1v.mjs";
2
- import { o as expandHome, s as homeRel } from "./config-DYbyEe4-.mjs";
1
+ import { A as providerQuotaSkipAt, C as parseMcpSetsValue, D as providerContextWindow, E as parseWorkersConfig, F as resolveProviderKey, I as workersConfigStamp, L as writeWorkersSection, M as readWorkersSection, N as resolveCapability, O as providerCostTier, P as resolveModelCapability, S as parseClassesValue, T as parseProvider, _ as maskKey, _t as DEFAULT_CONTEXT_WINDOW, a as MODEL_CAPABILITIES, b as nativeOrchestratorModel, c as WorkersConfigError, d as defaultWorkersConfig, f as escalationCloud, g as keysDir, h as isModelCapability, i as DEFAULT_POOL_PORT, j as readWorkersCached, k as providerKeyPath, l as assertProviderRunnable, m as isLocalProvider, n as CAPABILITY_NAME_RE, o as PROVIDER_TAGS, p as getProviderOrNative, r as DEFAULT_COST_TIER, s as WORKER_CLASSES, t as ANTHROPIC_NATIVE, u as classModelCapability, v as nativeAnthropicModels, w as parseModelsBlock, x as parseCapabilitiesValue, y as nativeAnthropicProvider } from "./config-Bz8pAU5Q.mjs";
2
+ import { o as expandHome, s as homeRel } from "./config-SlZ-Z52i.mjs";
3
3
 
4
4
  export { ANTHROPIC_NATIVE, CAPABILITY_NAME_RE, DEFAULT_CONTEXT_WINDOW, DEFAULT_COST_TIER, DEFAULT_POOL_PORT, MODEL_CAPABILITIES, PROVIDER_TAGS, WORKER_CLASSES, WorkersConfigError, assertProviderRunnable, classModelCapability, defaultWorkersConfig, escalationCloud, expandHome, getProviderOrNative, homeRel, isLocalProvider, isModelCapability, keysDir, maskKey, nativeAnthropicModels, nativeAnthropicProvider, nativeOrchestratorModel, parseCapabilitiesValue, parseClassesValue, parseMcpSetsValue, parseModelsBlock, parseProvider, parseWorkersConfig, providerContextWindow, providerCostTier, providerKeyPath, providerQuotaSkipAt, readWorkersCached, readWorkersSection, resolveCapability, resolveModelCapability, resolveProviderKey, workersConfigStamp, writeWorkersSection };
@@ -1,4 +1,4 @@
1
- import { _ as resolvePaiFile, c as PaiFileMigrationError, f as legacyConfigDir, g as paiHomePath, l as claudeHomeDir, m as migratePaiFile, o as paiSocketPath } from "./runtime-paths-WsO9sJFc.mjs";
1
+ import { _ as paiHomePath, c as PaiFileMigrationError, f as legacyConfigDir, h as migratePaiFile, l as claudeHomeDir, o as paiSocketPath, v as resolvePaiFile } from "./runtime-paths-twfV23YL.mjs";
2
2
  import { t as assertTestWriteAllowed } from "./test-isolation-lqSmYxr0.mjs";
3
3
  import { chmodSync, copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
4
4
  import { basename, dirname, join } from "node:path";
@@ -352,6 +352,7 @@ const MAIN_CONFIG_SECTION_COMMENTS = {
352
352
  logLevel: "Daemon log level: debug, info, warn, or error.",
353
353
  obsidian: "Obsidian sync into the PAI-generated vault: { enabled } (default false). Gates only writing; vault indexing is vaultIndex.",
354
354
  vaultIndex: "Read-only indexing of vaultPath for memory search: { enabled } (default true). Independent of obsidian.enabled.",
355
+ lessonsIndex: "Indexing of <PAI home>/lessons (review-gated lessons) for memory search: { enabled } (default true).",
355
356
  vaultPath: "Obsidian vault root path for zettelkasten indexing, if any.",
356
357
  vaultProjectId: "Registry project_id used for vault chunks in memory_chunks. Default: auto-detected.",
357
358
  notifications: "Notification subsystem configuration.",
@@ -792,4 +793,4 @@ function ensureConfigDir() {
792
793
 
793
794
  //#endregion
794
795
  export { DEFAULT_PG_CONNECTION_TIMEOUT_MS as A, migrateMainConfigToYaml as C, writeYamlFileAtomic as D, YamlStoreError as E, quoteIdent as F, isContainerTarget as M, postgresConnectionString as N, readJsonStrict as O, postgresFullTarget as P, MainConfigError as S, resolvedMainConfigPath as T, effectiveWorkersYamlRaw as _, ensureConfigDir as a, shippedWorkersDefaults as b, loadConfig as c, paiConfigYamlFilePath as d, readMainConfigRaw as f, effectiveWorkersYamlDoc as g, effectiveMainConfig as h, defaults as i, assertPgName as j, writeJsonAtomic as k, migrateConfigFile as l, deepMergeConfig as m, CONFIG_FILE as n, expandHome as o, writeMainConfigRaw as p, ConfigMigrationError as r, homeRel as s, CONFIG_DIR as t, paiConfigFilePath as u, shippedDefaultsDir as v, readDualFormatConfigRaw as w, userWorkersYamlRaw as x, shippedMainDefaults as y };
795
- //# sourceMappingURL=config-DYbyEe4-.mjs.map
796
+ //# sourceMappingURL=config-SlZ-Z52i.mjs.map
@@ -1,14 +1,14 @@
1
- import { g as paiHomePath } from "./runtime-paths-WsO9sJFc.mjs";
2
- import { Et as appendLedger, M as readWorkersSection, Ot as parseLedger, d as defaultWorkersConfig, f as escalationCloud, m as isLocalProvider, xt as ESCALATE_FAILURES } from "./config-CST2uq1v.mjs";
3
- import { h as effectiveMainConfig, u as paiConfigFilePath } from "./config-DYbyEe4-.mjs";
4
- import { i as ledgerPath, l as statusPath, o as panesDir, u as workersLogDir } from "./paths-DS5VQKoR.mjs";
5
- import { C as nowStamp, D as pidAlive$1, T as ownsPidCached, b as loadStatusesCached, g as isLive, h as isChatPane, k as saveStatus, v as loadStatus } from "./status-COtzewKV.mjs";
6
- import { c as scopeKey, i as itermUuid$1, p as currentWorkerId } from "./scope-D8HK6vU7.mjs";
7
- import { a as buildsDir, l as listBuildsSync, m as ticketKind } from "./caller-identity-Bim8JT-D.mjs";
8
- import { o as providerCap, s as queueRows } from "./capacity-CsZMkVyg.mjs";
9
- import { n as tierProviderNames, s as readLocalStatus, t as isLocalCandidate } from "./local-candidate-Cp_bw4kK.mjs";
10
- import { d as paneRunStatusRow, f as paneStatusRow } from "./render-Cz3BWIBO.mjs";
11
- import { r as sayToWorker } from "./operator-DrwWItVt.mjs";
1
+ import { _ as paiHomePath } from "./runtime-paths-twfV23YL.mjs";
2
+ import { Et as appendLedger, M as readWorkersSection, Ot as parseLedger, d as defaultWorkersConfig, f as escalationCloud, m as isLocalProvider, xt as ESCALATE_FAILURES } from "./config-Bz8pAU5Q.mjs";
3
+ import { h as effectiveMainConfig, u as paiConfigFilePath } from "./config-SlZ-Z52i.mjs";
4
+ import { i as ledgerPath, l as statusPath, o as panesDir, u as workersLogDir } from "./paths-CypxFTfn.mjs";
5
+ import { C as nowStamp, D as pidAlive$1, T as ownsPidCached, b as loadStatusesCached, g as isLive, h as isChatPane, k as saveStatus, v as loadStatus } from "./status-Cecau8Ps.mjs";
6
+ import { c as scopeKey, i as itermUuid$1, p as currentWorkerId } from "./scope-BTWstJ1B.mjs";
7
+ import { a as buildsDir, l as listBuildsSync, m as ticketKind } from "./caller-identity-C6Nc96iM.mjs";
8
+ import { c as queuedFilePath, d as readQueued, f as removeQueued, l as queuedPaneLine, o as providerCap, s as queueRows, v as writeQueued } from "./capacity-B2PgKAg4.mjs";
9
+ import { n as tierProviderNames, s as readLocalStatus, t as isLocalCandidate } from "./local-candidate-DFd4pp-w.mjs";
10
+ import { J as psTableOrNull, d as paneRunStatusRow, f as paneStatusRow, q as psTable } from "./render-jPpMrudf.mjs";
11
+ import { r as sayToWorker } from "./operator-Br6GeswF.mjs";
12
12
  import { appendFileSync, existsSync, mkdirSync, mkdtempSync, openSync, readFileSync, readdirSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
13
13
  import { createHash } from "node:crypto";
14
14
  import { dirname, isAbsolute, join, resolve } from "node:path";
@@ -569,6 +569,8 @@ function startPaneBar(d) {
569
569
  let status = null;
570
570
  const text = () => {
571
571
  if (d.spec.kind === "run") return paneRunStatusRow(d.spec.label, d.spec.startedMs, new Date(now()));
572
+ const queued = (d.readQueued ?? readQueued)(d.queuedDir ?? paneExecDir(), d.spec.id);
573
+ if (queued) return paneStatusRow(status ?? {}, new Date(now()), d.columns(), queued);
572
574
  status = (d.loadStatus ?? (() => null))(d.spec.logDir, d.spec.id) ?? status;
573
575
  return status ? paneStatusRow(status, new Date(now()), d.columns()) : d.spec.id;
574
576
  };
@@ -667,6 +669,8 @@ const PANE_EXEC_PID_ENV = "PAI_PANE_EXEC_PID";
667
669
  const paneExecDir = () => paiHomePath("state", "pane-exec");
668
670
  const exitFilePath = (id) => join(paneExecDir(), `${id}.exit`);
669
671
  const recordPath = (id) => join(paneExecDir(), `${id}.json`);
672
+ /** The caller's queue file beside the launch record: what the pane shows while the run waits for a provider slot. */
673
+ const queuedPath = (id) => queuedFilePath(paneExecDir(), id);
670
674
  /** Unix socket path; the home path is hashed into /tmp when it would exceed the sockaddr limit. */
671
675
  function sockPath(id) {
672
676
  const p = join(paneExecDir(), `${id}.sock`);
@@ -764,8 +768,27 @@ async function runPaneExec(id, d = {}) {
764
768
  await Promise.race([d.closePane?.().catch(() => void 0), new Promise((r) => setTimeout(r, CLOSE_WAIT_MS).unref())]);
765
769
  return rec.code;
766
770
  };
771
+ const qdir = d.queuedDir ?? paneExecDir();
772
+ let qShown = null;
773
+ const drawQueued = (clear = false) => {
774
+ const q = readQueued(qdir, id);
775
+ const line = q ? queuedPaneLine(q) : null;
776
+ if (clear) {
777
+ if (qShown === null) return;
778
+ err("\r\x1B[K");
779
+ return;
780
+ }
781
+ if (line === qShown) return;
782
+ qShown = line;
783
+ err(line ? `\r\x1b[K${line}` : "\r\x1B[K");
784
+ };
785
+ const queuedWatch = setInterval(() => drawQueued(), d.queuedPollMs ?? 2e3);
786
+ queuedWatch.unref();
787
+ drawQueued();
767
788
  const sock = await connect$1(sockPath(id), d.connectMs ?? panePolicy().connectMs);
768
789
  if (!sock) {
790
+ clearInterval(queuedWatch);
791
+ drawQueued(true);
769
792
  err(`pai pane exec: no caller listens for ${id}; nothing to run\n`);
770
793
  return finish({
771
794
  code: 1,
@@ -832,23 +855,26 @@ async function runPaneExec(id, d = {}) {
832
855
  });
833
856
  const cleanup = () => sigs.forEach((s, i) => proc.off(s, handlers[i]));
834
857
  await started;
858
+ clearInterval(queuedWatch);
835
859
  if (cancelled || callerGone || !spec) {
836
860
  cleanup();
837
861
  sock.destroy();
862
+ drawQueued(true);
838
863
  return finish({
839
864
  code: cancelled ? 0 : 143,
840
865
  cancelled,
841
866
  reason: cancelled ? "cancelled" : "caller gone"
842
867
  });
843
868
  }
869
+ drawQueued(true);
844
870
  const sp = spec;
845
871
  if (sp.title) d.setTitle?.(sp.title);
846
872
  let bar = null;
847
873
  let show = out;
848
874
  let showErr = err;
849
875
  if (sp.statusLine && (d.tty ?? process.stdout.isTTY === true)) {
850
- const { loadStatus } = await import("./status-D_SWmOlH.mjs");
851
- const { sayToWorker } = await import("./operator-Bpxq_WB5.mjs");
876
+ const { loadStatus } = await import("./status-D52xC_i0.mjs");
877
+ const { sayToWorker } = await import("./operator-Bmv5tiHQ.mjs");
852
878
  const b = startPaneBar({
853
879
  spec: sp.statusLine,
854
880
  write: (x) => out(x),
@@ -955,8 +981,8 @@ async function renderer(sp, id, out, err) {
955
981
  err: (c) => err(c),
956
982
  end: () => void 0
957
983
  };
958
- const { applyEvent, initialFollowState } = await import("./viewer-CbGN2Ri4.mjs");
959
- const { makeColor } = await import("./render-C4KR8qQ8.mjs");
984
+ const { applyEvent, initialFollowState } = await import("./viewer-Ce-Xa9L3.mjs");
985
+ const { makeColor } = await import("./render-DVGXpfaT.mjs");
960
986
  const c = makeColor(true);
961
987
  let state = initialFollowState("");
962
988
  let buf = "";
@@ -1049,7 +1075,12 @@ let exitHooked = false;
1049
1075
  */
1050
1076
  async function openOwnedPane(o) {
1051
1077
  mkdirSync(paneExecDir(), { recursive: true });
1052
- for (const f of [exitFilePath(o.id), sockPath(o.id)]) rmQuiet(f);
1078
+ for (const f of [
1079
+ exitFilePath(o.id),
1080
+ queuedPath(o.id),
1081
+ sockPath(o.id)
1082
+ ]) rmQuiet(f);
1083
+ removeQueued(paneExecDir(), o.id);
1053
1084
  let wrapper = 0;
1054
1085
  let session;
1055
1086
  let sock = null;
@@ -1102,6 +1133,7 @@ async function openOwnedPane(o) {
1102
1133
  ended = true;
1103
1134
  live.delete(pane);
1104
1135
  clearInterval(watch);
1136
+ removeQueued(paneExecDir(), o.id);
1105
1137
  if (proc) {
1106
1138
  proc.exitCode = code;
1107
1139
  proc.stdout.end();
@@ -1162,7 +1194,13 @@ async function openOwnedPane(o) {
1162
1194
  ended = true;
1163
1195
  live.delete(pane);
1164
1196
  clearInterval(watch);
1197
+ removeQueued(paneExecDir(), o.id);
1165
1198
  s.end();
1199
+ },
1200
+ setQueued: (q) => {
1201
+ if (ended) return;
1202
+ if (q === null) removeQueued(paneExecDir(), o.id);
1203
+ else writeQueued(paneExecDir(), o.id, q);
1166
1204
  }
1167
1205
  };
1168
1206
  live.add(pane);
@@ -1178,42 +1216,6 @@ function rmQuiet(path) {
1178
1216
  } catch {}
1179
1217
  }
1180
1218
 
1181
- //#endregion
1182
- //#region src/workers/ps-table.ts
1183
- /**
1184
- * The one way PAI reads the whole process table. A table with a few dozen
1185
- * Xcode swift-frontend processes (23k-99k char command lines) is over 1 MB,
1186
- * Node's default maxBuffer, so a bare execFileSync("ps", ...) died with ENOBUFS.
1187
- * Here the buffer is large and every line is cut to MAX_LINE chars after reading
1188
- * (the identifying words of a command come first).
1189
- */
1190
- const PS_MAX_BUFFER = 64 * 1024 * 1024;
1191
- const PS_MAX_LINE = 1024;
1192
- const realRunner = (args) => execFileSync("ps", args, {
1193
- encoding: "utf8",
1194
- env: {
1195
- ...process.env,
1196
- LC_ALL: "C"
1197
- },
1198
- maxBuffer: PS_MAX_BUFFER,
1199
- timeout: 15e3
1200
- });
1201
- /** Cut each line of `text` to `max` chars. */
1202
- function truncateLines(text, max = PS_MAX_LINE) {
1203
- return text.split("\n").map((l) => l.length > max ? l.slice(0, max) : l).join("\n");
1204
- }
1205
- /** `ps -axo <format>` with a large buffer and truncated lines; throws when ps fails. */
1206
- function psTable(format, run = realRunner, maxLine = PS_MAX_LINE) {
1207
- return truncateLines(run(["-axo", format]), maxLine);
1208
- }
1209
- /** psTable that retries, then returns null ("unknown") instead of throwing. */
1210
- function psTableOrNull(format, run = realRunner, tries = 3, maxLine = PS_MAX_LINE) {
1211
- for (let i = 0; i < tries; i++) try {
1212
- return psTable(format, run, maxLine);
1213
- } catch {}
1214
- return null;
1215
- }
1216
-
1217
1219
  //#endregion
1218
1220
  //#region src/workers/pane-title.ts
1219
1221
  /**
@@ -2735,7 +2737,7 @@ function followRunsOn(tty, wid) {
2735
2737
  /**
2736
2738
  * Check the iTerm pane of a worker. Resolves with a line naming window, tab and size,
2737
2739
  * followed by a mark for each visibility shortfall (NOT SELECTED, MINIMISED, HIDDEN,
2738
- * OFF SCREEN, SMALL); rejects only when the pane does not exist or does not run the
2740
+ * OFF SCREEN); rejects only when the pane does not exist or does not run the
2739
2741
  * worker: gone, other window or tab, or its follow command not running
2740
2742
  * (polled for up to ~7 s while the new session starts it).
2741
2743
  */
@@ -2762,7 +2764,6 @@ async function verifyPane(hostUid, paneUid, wid, run = osascript, running = foll
2762
2764
  if (r.miniaturized === true) marks.push("MINIMISED");
2763
2765
  if (r.hidden === true) marks.push("HIDDEN");
2764
2766
  if (r.onScreen !== true) marks.push("OFF SCREEN");
2765
- if (rows < panePolicy().minRows || cols < panePolicy().minCols) marks.push(`SMALL (< ${panePolicy().minCols}x${panePolicy().minRows})`);
2766
2767
  if (running(String(r.tty), wid)) return marks.length ? `${where} ${marks.join(" ")}` : where;
2767
2768
  last = where;
2768
2769
  await new Promise((res) => setTimeout(res, pollMs));
@@ -2800,14 +2801,6 @@ async function openVerifiedPane(logDir, config, wid, term, env, ops = realPaneOp
2800
2801
  try {
2801
2802
  const where = await verify(hostUid, r.session, wid);
2802
2803
  placements.set(wid, "split");
2803
- if (/ SMALL /.test(where)) {
2804
- appendLedger(ledgerPath(logDir), "PANE-SMALL", {
2805
- id: wid,
2806
- session: r.session,
2807
- where
2808
- });
2809
- process.stderr.write(`[pai worker] pane: small pane for ${wid}: ${where}\n`);
2810
- }
2811
2804
  const shown = where.match(/\b(NOT SELECTED|MINIMISED|HIDDEN|OFF SCREEN)\b/g);
2812
2805
  if (shown) {
2813
2806
  appendLedger(ledgerPath(logDir), "PANE-MARK", {
@@ -4159,11 +4152,11 @@ function originTarget(origin) {
4159
4152
  }
4160
4153
  /** Real messenger over AIBroker's socket; unreachable AIBroker is logged and ignored. */
4161
4154
  function aibrokerMessenger(logDir, warn = (s) => process.stderr.write(s + "\n"), resolveHost = async () => "", send = async (target, text) => {
4162
- const { sendToSession } = await import("./aibroker-client-BxzeEHPF.mjs");
4155
+ const { sendToSession } = await import("./aibroker-client-ChB7gSxV.mjs");
4163
4156
  return sendToSession(target, text);
4164
4157
  }, toPailot = (text) => guardedPailot(logDir, text, async (t) => {
4165
4158
  try {
4166
- const { callAiBroker } = await import("./aibroker-client-BxzeEHPF.mjs");
4159
+ const { callAiBroker } = await import("./aibroker-client-ChB7gSxV.mjs");
4167
4160
  await callAiBroker("pailot_send", { text: t }, 8e3);
4168
4161
  return true;
4169
4162
  } catch (e) {
@@ -4707,5 +4700,5 @@ async function returnControlsIfHeld(logDir, id) {
4707
4700
  }
4708
4701
 
4709
4702
  //#endregion
4710
- export { checkPaneForWorker as $, tail as A, recordPath as At, loadPlanStatus as B, chatTickerRow as Bt, readRunLog as C, PANE_EXEC_PID_ENV as Ct, resumeState as D, pidAlive as Dt, requestPlanStop as E, openOwnedPane as Et, runLogPath as F, chatEnter as Ft, planRunId as G, handoffFromInside as Gt, planLogTail as H, parseChatLine as Ht, PlanTracker as I, chatInsertLine as It, queueLockPath as J, LOCAL_FAILURE_LIMIT as Jt, renderPlanLines as K, isHandoffMessage as Kt, fmtElapsed as L, chatLeave as Lt, dirtyConflicts as M, panePolicy as Mt, filesOverlap as N, CHAT_HELP as Nt, runExitCode as O, readExit as Ot, loadPlan as P, chatBlankRow as Pt, NoTerminalError as Q, followPlanLog as R, chatPromptRow as Rt, planStopPath as S, PANE_EXEC_ENV as St, renderStatus as T, listRecords as Tt, planRows as U, wrapText as Ut, loadPlanStatuses as V, holdAutoExit as Vt, planRunEnded as W, deliverHandoff as Wt, sinceText as X, localFailures as Xt, readRunLock as Y, classifyRoute as Yt, withRunLock as Z, routeLine as Zt, troublePolicy as _, paneTitle as _t, localIdleTick as a, headlessAllowed as at, idleText as b, psTableOrNull as bt, setMuted as c, openFollowPane as ct, aibrokerMessenger as d, osascript as dt, closeEndedPanes as et, detachRun as f, paneBackend as ft, sweepRuns as g, workerEnded as gt, originFromEnv as h, resolveHostSession as ht, localIdleLine as i, followCommand as it, PlanError as j, runPaneExec as jt, runPlan as k, readRecord as kt, PlanReporter as l, openPaneForWorker as lt, markRunDone as m, realPaneOps as mt, markControlsHeld as n, closePaneForWorker as nt, ownerOf as o, inVisiblePane as ot, eventLine as p, paneMayClose as pt, planLockPath as q, readInbox as qt, returnControlsIfHeld as r, closeSelfPane as rt, readLocalIdle as s, loadRegistry as st, clickrControlsArgv as t, closeOwnPane as tt, QueueReporter as u, openVerifiedPane as ut, appendRunLog as v, writePaneTitle as vt, renderSchedule as w, exitFilePath as wt, planStatus as x, truncateLines as xt, blockedMessage as y, psTable as yt, gatePhaseName as z, chatScrollRegion as zt };
4711
- //# sourceMappingURL=controls-OiVVbe-f.mjs.map
4703
+ export { checkPaneForWorker as $, tail as A, CHAT_HELP as At, loadPlanStatus as B, wrapText as Bt, readRunLog as C, openOwnedPane as Ct, resumeState as D, recordPath as Dt, requestPlanStop as E, readRecord as Et, runLogPath as F, chatPromptRow as Ft, planRunId as G, LOCAL_FAILURE_LIMIT as Gt, planLogTail as H, handoffFromInside as Ht, PlanTracker as I, chatScrollRegion as It, queueLockPath as J, routeLine as Jt, renderPlanLines as K, classifyRoute as Kt, fmtElapsed as L, chatTickerRow as Lt, dirtyConflicts as M, chatEnter as Mt, filesOverlap as N, chatInsertLine as Nt, runExitCode as O, runPaneExec as Ot, loadPlan as P, chatLeave as Pt, NoTerminalError as Q, followPlanLog as R, holdAutoExit as Rt, planStopPath as S, listRecords as St, renderStatus as T, readExit as Tt, planRows as U, isHandoffMessage as Ut, loadPlanStatuses as V, deliverHandoff as Vt, planRunEnded as W, readInbox as Wt, sinceText as X, readRunLock as Y, withRunLock as Z, troublePolicy as _, paneTitle as _t, localIdleTick as a, headlessAllowed as at, idleText as b, PANE_EXEC_PID_ENV as bt, setMuted as c, openFollowPane as ct, aibrokerMessenger as d, osascript as dt, closeEndedPanes as et, detachRun as f, paneBackend as ft, sweepRuns as g, workerEnded as gt, originFromEnv as h, resolveHostSession as ht, localIdleLine as i, followCommand as it, PlanError as j, chatBlankRow as jt, runPlan as k, panePolicy as kt, PlanReporter as l, openPaneForWorker as lt, markRunDone as m, realPaneOps as mt, markControlsHeld as n, closePaneForWorker as nt, ownerOf as o, inVisiblePane as ot, eventLine as p, paneMayClose as pt, planLockPath as q, localFailures as qt, returnControlsIfHeld as r, closeSelfPane as rt, readLocalIdle as s, loadRegistry as st, clickrControlsArgv as t, closeOwnPane as tt, QueueReporter as u, openVerifiedPane as ut, appendRunLog as v, writePaneTitle as vt, renderSchedule as w, pidAlive as wt, planStatus as x, exitFilePath as xt, blockedMessage as y, PANE_EXEC_ENV as yt, gatePhaseName as z, parseChatLine as zt };
4704
+ //# sourceMappingURL=controls-rIItFeIJ.mjs.map
@@ -1,49 +1,49 @@
1
1
  #!/usr/bin/env node
2
2
  import "../utils-J2b9y8PC.mjs";
3
- import "../migrate-DrA_OwlZ.mjs";
4
- import "../config-CST2uq1v.mjs";
5
- import { a as ensureConfigDir, c as loadConfig } from "../config-DYbyEe4-.mjs";
6
- import "../paths-DS5VQKoR.mjs";
7
- import "../worktree-BY--Rgmy.mjs";
8
- import "../status-COtzewKV.mjs";
9
- import "../pool-BZ94nFuq.mjs";
10
- import "../registrable-CXBBpUcz.mjs";
11
- import "../pai-marker-DLKJ9Yr5.mjs";
3
+ import "../migrate-C2z1YmWC.mjs";
4
+ import "../config-Bz8pAU5Q.mjs";
5
+ import { a as ensureConfigDir, c as loadConfig } from "../config-SlZ-Z52i.mjs";
6
+ import "../paths-CypxFTfn.mjs";
7
+ import "../worktree-O_kU6Q3y.mjs";
8
+ import "../status-Cecau8Ps.mjs";
9
+ import "../pool-9EsbKD-U.mjs";
10
+ import "../registrable-Dxs4oKIj.mjs";
11
+ import "../pai-marker-D6OoVbM_.mjs";
12
12
  import "../helpers-CRuBUas3.mjs";
13
13
  import "../reranker-CqCbpGnX.mjs";
14
14
  import { t as dropItermBundleId } from "../env-BE8mrsxr.mjs";
15
- import "../scope-D8HK6vU7.mjs";
16
- import "../routing-BlD_tKjW.mjs";
17
- import "../tool-errors-DXJ70-sr.mjs";
18
- import "../wait-ChpHKJZV.mjs";
19
- import "../local-tiers-BtdEEe5n.mjs";
20
- import "../caller-identity-Bim8JT-D.mjs";
21
- import "../capacity-CsZMkVyg.mjs";
22
- import "../local-instances-bdCNNSsL.mjs";
23
- import "../local-candidate-Cp_bw4kK.mjs";
24
- import "../factory-BV0MQA3T.mjs";
25
- import "../postgres-C-T5OWer.mjs";
26
- import "../embedding-gate-CTAk8STe.mjs";
15
+ import "../scope-BTWstJ1B.mjs";
16
+ import "../routing-aJKMIagQ.mjs";
17
+ import "../tool-errors-BFw1gv-z.mjs";
18
+ import "../wait-C5iWILj_.mjs";
19
+ import "../local-tiers-CqwGUcEn.mjs";
20
+ import "../caller-identity-C6Nc96iM.mjs";
21
+ import "../capacity-B2PgKAg4.mjs";
22
+ import "../local-instances-DhF4_sV2.mjs";
23
+ import "../local-candidate-DFd4pp-w.mjs";
24
+ import "../factory-CYwa0jYj.mjs";
25
+ import "../postgres-BL5oBBgY.mjs";
26
+ import "../embedding-gate-iq0oQEkF.mjs";
27
27
  import "../embeddings-BVq3esBF.mjs";
28
- import "../router-CQSc3lk3.mjs";
29
- import "../detect-CHuxFrLy.mjs";
30
- import "../scan-C3uotg_f.mjs";
31
- import "../launch-DpQPZGsT.mjs";
32
- import "../run-AZVwceiU.mjs";
33
- import "../controls-OiVVbe-f.mjs";
34
- import "../endreason-BqyyU7BH.mjs";
35
- import "../render-Cz3BWIBO.mjs";
36
- import "../operator-DrwWItVt.mjs";
37
- import "../kill-tree-CcpsRLCZ.mjs";
38
- import "../pool-cli-B1eKySeN.mjs";
39
- import "../pane-audit-wv9UkyCe.mjs";
40
- import { n as PaiClient } from "../ipc-client-CnYEF31R.mjs";
41
- import "../embed-pass-DtVF2fOV.mjs";
42
- import "../session-usage-oycSdiD3.mjs";
43
- import "../indexer-backend-B2vtFl38.mjs";
44
- import { t as serve } from "../daemon-C1dycZ3W.mjs";
45
- import "../auto-route-DUYr57rs.mjs";
46
- import "../zettelkasten-LoH9RBiN.mjs";
28
+ import "../router-D2476pOp.mjs";
29
+ import "../detect-DLjeYwnt.mjs";
30
+ import "../scan-CNMcltOX.mjs";
31
+ import "../launch-Bn2Zf90h.mjs";
32
+ import "../run-DE9Q0ldN.mjs";
33
+ import "../controls-rIItFeIJ.mjs";
34
+ import "../endreason-C2-hYK0_.mjs";
35
+ import "../render-jPpMrudf.mjs";
36
+ import "../operator-Br6GeswF.mjs";
37
+ import "../kill-tree-DPiMscaY.mjs";
38
+ import "../pool-cli-Db0uDwB9.mjs";
39
+ import "../pane-audit-DLYy9-4g.mjs";
40
+ import { n as PaiClient } from "../ipc-client-CmagIFLh.mjs";
41
+ import "../embed-pass-CN1D8MXl.mjs";
42
+ import "../session-usage-CCmPFFa6.mjs";
43
+ import "../lessons-CFVU0cwA.mjs";
44
+ import { t as serve } from "../daemon-SoUvPUOf.mjs";
45
+ import "../auto-route-YaEGVrFl.mjs";
46
+ import "../zettelkasten-FFhQFESJ.mjs";
47
47
 
48
48
  //#region src/daemon/index.ts
49
49
  /**