@tekmidian/pai 1.0.0 → 1.0.3

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 (219) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +67 -5
  3. package/dist/aibroker-client-BxzeEHPF.mjs +3 -0
  4. package/dist/{aibroker-client-CXEYBzbf.mjs → aibroker-client-CQPGqLxL.mjs} +1 -1
  5. package/dist/atomic-file-BorMa4T3.mjs +21 -0
  6. package/dist/{auto-route-D5SXrMpB.mjs → auto-route-B7Yu6Uam.mjs} +3 -3
  7. package/dist/auto-route-CjjQqU1o.mjs +11 -0
  8. package/dist/budget-Dod6rnA9.mjs +15 -0
  9. package/dist/{caller-identity-CVTuiLSs.mjs → caller-identity-yLFb7CKq.mjs} +6 -5
  10. package/dist/{capacity-DaXrVj3J.mjs → capacity-DEveQdFV.mjs} +3 -3
  11. package/dist/{chain-BcQlIlEd.mjs → chain-7n9Gx56r.mjs} +5 -5
  12. package/dist/cli/index.mjs +1628 -370
  13. package/dist/{cockpit-actions-ODmt8yF9.mjs → cockpit-actions-BBHeyEZI.mjs} +84 -42
  14. package/dist/cockpit-actions-DR9X514g.mjs +20 -0
  15. package/dist/cockpit-memory--dnShXBA.mjs +20 -0
  16. package/dist/{config-BSXKyeJ1.mjs → config-Bu1_vbY8.mjs} +42 -3
  17. package/dist/{config-B955yYmo.mjs → config-Cxi-aBf4.mjs} +2 -2
  18. package/dist/{config-TaWmdTLx.mjs → config-DtENJ6cL.mjs} +1 -1
  19. package/dist/{config-D5chi2LO.mjs → config-XpZWOYOG.mjs} +2 -2
  20. package/dist/{controls-BGkK_Bdi.mjs → controls-CPoeudou.mjs} +37 -22
  21. package/dist/daemon/index.mjs +43 -42
  22. package/dist/daemon-DKdBNKfa.mjs +45 -0
  23. package/dist/{daemon-CorGh6Ub.mjs → daemon-DPAo6WTa.mjs} +103 -55
  24. package/dist/daemon-mcp/index.mjs +40 -39
  25. package/dist/{define-DGFu-sCf.mjs → define-CjJsmq-6.mjs} +1 -1
  26. package/dist/{detect-C1d5cUkT.mjs → detect-9CZNO0yf.mjs} +2 -2
  27. package/dist/detect-D1ziFFfA.mjs +10 -0
  28. package/dist/{embed-pass-CeQD8kRE.mjs → embed-pass-DIWjA68P.mjs} +5 -5
  29. package/dist/{embedding-gate-BHuBsgHD.mjs → embedding-gate-6rZrWRXa.mjs} +5 -5
  30. package/dist/{embedding-gate-Z7CJSOJk.mjs → embedding-gate-Cnk4YCyX.mjs} +3 -3
  31. package/dist/{embeddings-D4t6L-EH.mjs → embeddings-BVq3esBF.mjs} +1 -1
  32. package/dist/{embeddings-OF9Pt4by.mjs → embeddings-CIkJBKd-.mjs} +1 -1
  33. package/dist/{endreason-x1KOSrcO.mjs → endreason-C577xIQz.mjs} +7 -6
  34. package/dist/{env-DArqGq-Z.mjs → env-BE8mrsxr.mjs} +1 -1
  35. package/dist/factory-Bsib-qDG.mjs +9 -0
  36. package/dist/{factory-BtjbQ0np.mjs → factory-DjAAsqr_.mjs} +15 -13
  37. package/dist/{fallback-BIyEpPsQ.mjs → fallback-DFlItw1Z.mjs} +5 -5
  38. package/dist/{fmt-age-BiSHrTKN.mjs → fmt-age-ByDkvkoU.mjs} +1 -1
  39. package/dist/{health-C6jZWvRG.mjs → health-Dnym-qcT.mjs} +4 -4
  40. package/dist/{helpers-DFmYRCOa.mjs → helpers-BD6V-p9w.mjs} +2 -2
  41. package/dist/helpers-CMGjy_0N.mjs +10 -0
  42. package/dist/{helpers-CJpb_MNB.mjs → helpers-CRuBUas3.mjs} +87 -38
  43. package/dist/hooks/capture-all-events.mjs +52 -11
  44. package/dist/hooks/capture-session-summary.mjs +64 -47
  45. package/dist/hooks/capture-tool-output.mjs +49 -8
  46. package/dist/hooks/context-compression-hook.mjs +30 -10
  47. package/dist/hooks/initialize-session.mjs +1 -0
  48. package/dist/hooks/load-core-context.mjs +1 -1
  49. package/dist/hooks/load-project-context.mjs +32 -29
  50. package/dist/hooks/security-validator.mjs +45 -13
  51. package/dist/hooks/stop-hook.mjs +54 -16
  52. package/dist/hooks/supervision-banner.mjs +9 -0
  53. package/dist/hooks/sync-todo-to-md.mjs +147 -113
  54. package/dist/hooks/worker-edit-repair.mjs +2 -1
  55. package/dist/hooks/worker-guard.mjs +40 -16
  56. package/dist/hooks/worker-note.mjs +12 -5
  57. package/dist/hooks/worker-path-repair.mjs +1 -1
  58. package/dist/hooks/worker-pool-host.mjs +329 -231
  59. package/dist/hooks/worker-status-line.mjs +195 -114
  60. package/dist/index.d.mts +18 -0
  61. package/dist/index.mjs +12 -12
  62. package/dist/{indexer-backend-BM2CUSu8.mjs → indexer-backend-Cll7le4P.mjs} +149 -96
  63. package/dist/{ipc-client-BMqWw_gv.mjs → ipc-client-CaiGJnSM.mjs} +1 -1
  64. package/dist/{ipc-client-YYDD6zzU.mjs → ipc-client-ZRmDKd5Z.mjs} +1 -1
  65. package/dist/kill-tree-BG7dRVtp.mjs +10 -0
  66. package/dist/{kill-tree-BjYz5BxK.mjs → kill-tree-EWYaEk5v.mjs} +8 -8
  67. package/dist/{launch-CLp0OJxV.mjs → launch-CXVlZjHt.mjs} +8 -8
  68. package/dist/{launch-DgqQdAjI.mjs → launch-Jh5NVeNe.mjs} +3 -3
  69. package/dist/local-candidate-DLdwQt0s.mjs +112 -0
  70. package/dist/local-instances-DOxSgT_L.mjs +210 -0
  71. package/dist/local-instances-ZeRkkuS5.mjs +6 -0
  72. package/dist/{local-tiers-DPZYqv9m.mjs → local-tiers-BE4jGaMa.mjs} +2 -2
  73. package/dist/{local-tiers-DnBIAkbK.mjs → local-tiers-DNMI5W86.mjs} +3 -3
  74. package/dist/{main-config-ops-C0SflOWk.mjs → main-config-ops-BEMpuhDz.mjs} +3 -3
  75. package/dist/{main-resolver-DVPpSWVy.mjs → main-resolver-3Ns1HPmS.mjs} +18 -17
  76. package/dist/{migrate-BUJHadA8.mjs → migrate-DrA_OwlZ.mjs} +45 -14
  77. package/dist/min-max-DrSRUaWQ.mjs +16 -0
  78. package/dist/{model-inventory-Dasber3S.mjs → model-inventory-BFVSNFT3.mjs} +13 -12
  79. package/dist/{models-add-Bt7aUHDs.mjs → models-add-C1QIc1DA.mjs} +39 -38
  80. package/dist/operator-BTqvTIc8.mjs +7 -0
  81. package/dist/{operator-DZxcP-g8.mjs → operator-CyuB3aVw.mjs} +3 -3
  82. package/dist/{pai-marker-kIYuNt3c.mjs → pai-marker-BcZyJguM.mjs} +7 -6
  83. package/dist/{pane-audit-OGYrOAik.mjs → pane-audit-DKQt71s4.mjs} +7 -7
  84. package/dist/{paths-DoRuFc60.mjs → paths-CFHTloSe.mjs} +3 -3
  85. package/dist/{paths-DoIyRnhx.mjs → paths-CHifubDh.mjs} +3 -3
  86. package/dist/{planner-DLGOYlVb.mjs → planner-BmFACdLa.mjs} +31 -30
  87. package/dist/{pool-CZ5MZaXg.mjs → pool-Dh-q3iJi.mjs} +45 -6
  88. package/dist/{pool-cli-BxNSPzzY.mjs → pool-cli-BggU8GRp.mjs} +5 -5
  89. package/dist/{pool-cli-CbJfl37y.mjs → pool-cli-DQ6OzRy2.mjs} +6 -6
  90. package/dist/postgres-BdBNkL_l.mjs +7 -0
  91. package/dist/{postgres-CDnd_k5f.mjs → postgres-C6ti4haA.mjs} +55 -34
  92. package/dist/{project-setup-DM4npnL3.mjs → project-setup-jvfONJTQ.mjs} +131 -74
  93. package/dist/providers-BeDiVEb-.mjs +16 -0
  94. package/dist/{providers-UsKtLcUR.mjs → providers-CblTFrhz.mjs} +6 -6
  95. package/dist/{query-feedback-I-txSnld.mjs → query-feedback-BRfPtqki.mjs} +2 -2
  96. package/dist/registrable-BzH4TObg.mjs +9 -0
  97. package/dist/{registrable-LrRIVYQc.mjs → registrable-DpyTtajg.mjs} +4 -4
  98. package/dist/{render-BDbb4CF-.mjs → render-BYmQkuLd.mjs} +8 -8
  99. package/dist/render-CoMvwMPs.mjs +13 -0
  100. package/dist/{reranker-B4r4vykM.mjs → reranker-8g6xMwP7.mjs} +1 -1
  101. package/dist/{reranker-DxxMCtA0.mjs → reranker-CqCbpGnX.mjs} +1 -1
  102. package/dist/root-FtJsxYnm.mjs +36 -0
  103. package/dist/{root-BMeJuHOb.mjs → root-Xglu0OPD.mjs} +11 -11
  104. package/dist/route-table-B7zpoypi.mjs +15 -0
  105. package/dist/{router-L8Nu-OHF.mjs → router-CQSc3lk3.mjs} +17 -7
  106. package/dist/{router-D6Ec6Fid.mjs → router-DwHJRgG9.mjs} +1 -1
  107. package/dist/{routing-CUyiglfu.mjs → routing-BAAST9vT.mjs} +27 -308
  108. package/dist/{routing-ZuGlc0ge.mjs → routing-CENt4HH1.mjs} +13 -12
  109. package/dist/{run-ulAi5dFD.mjs → run-CSC7mgPf.mjs} +35 -33
  110. package/dist/{scan-B7I0gPe-.mjs → scan-C_Y5W9py.mjs} +6 -6
  111. package/dist/{local-candidate-jOjTNlOL.mjs → scheduler-CtUyWJ3O.mjs} +7 -109
  112. package/dist/scheduler-dmHXoRvm.mjs +3 -0
  113. package/dist/{scope-D5VSQxe4.mjs → scope-D-h6F6DN.mjs} +4 -4
  114. package/dist/{search-CPoE0830.mjs → search-RSyeQqj1.mjs} +18 -18
  115. package/dist/{session-CNXF6DLP.mjs → session-8iqQDkqb.mjs} +55 -31
  116. package/dist/session-BeqAbNPd.mjs +35 -0
  117. package/dist/session-scan-BJI_ZO8M.mjs +9 -0
  118. package/dist/{session-scan-BDLEc4w1.mjs → session-scan-W-gbwJHM.mjs} +6 -6
  119. package/dist/{sources-CjhUKKtO.mjs → sources-ESUkZaWv.mjs} +1 -1
  120. package/dist/{status-DYydKQUI.mjs → status-Dm4dYciN.mjs} +4 -4
  121. package/dist/{status-CvVi9cDf.mjs → status-ggJ7lgVg.mjs} +17 -9
  122. package/dist/{stop-words-SdSL1WKH.mjs → stop-words-DSEYQdNe.mjs} +1 -1
  123. package/dist/{test-isolation-CoDeOVXb.mjs → test-isolation-lqSmYxr0.mjs} +1 -1
  124. package/dist/{timeouts-OwEONmc8.mjs → timeouts-1MLooEBB.mjs} +1 -1
  125. package/dist/{tool-errors-AeRQuG3Y.mjs → tool-errors-7E13StWd.mjs} +4 -3
  126. package/dist/{tool-errors-R5E0fCgf.mjs → tool-errors-CJWODvlo.mjs} +6 -6
  127. package/dist/viewer-CqozWW39.mjs +22 -0
  128. package/dist/{viewer-DtWj5Vti.mjs → viewer-mDXUNHNy.mjs} +15 -15
  129. package/dist/{wait-BMUR-U-U.mjs → wait-ByV0OyMZ.mjs} +3 -3
  130. package/dist/{worker-config-BLqa1yiD.mjs → worker-config-CJhEMk19.mjs} +294 -92
  131. package/dist/worker-config-DESkIjMF.mjs +41 -0
  132. package/dist/{workers-config-DEI9lrV4.mjs → workers-config-f8KrkY4L.mjs} +2 -2
  133. package/dist/{worktree-zmRf556h.mjs → worktree-CRs2gyg0.mjs} +37 -7
  134. package/dist/{zettelkasten-nigq7fqs.mjs → zettelkasten-B_rRRRvD.mjs} +5 -5
  135. package/dist/{zettelkasten-Cr_Xj0mG.mjs → zettelkasten-BzMm8REH.mjs} +29 -19
  136. package/docs/README.md +2 -0
  137. package/docs/cockpit.md +10 -4
  138. package/docs/commands/README.md +4 -4
  139. package/docs/commands/backup.md +2 -0
  140. package/docs/commands/install.md +29 -4
  141. package/docs/commands/providers.md +1 -1
  142. package/docs/commands/restore.md +4 -0
  143. package/docs/commands/setup.md +29 -4
  144. package/docs/commands/worker.md +1 -1
  145. package/docs/config.md +2 -0
  146. package/docs/features.md +299 -0
  147. package/docs/images/architecture.drawio +51 -0
  148. package/docs/images/architecture.png +0 -0
  149. package/docs/images/architecture.svg +3 -0
  150. package/docs/images/cockpit-01-system-tokens.jpg +0 -0
  151. package/docs/images/cockpit-02-totals-cache.jpg +0 -0
  152. package/docs/images/cockpit-03-local-servers-models-pool.jpg +0 -0
  153. package/docs/images/cockpit-04-workers-memory.jpg +0 -0
  154. package/docs/images/cockpit-05-performance.jpg +0 -0
  155. package/docs/images/cockpit-06-runs-speed-routing.jpg +0 -0
  156. package/docs/images/cockpit-07-settings-registry.jpg +0 -0
  157. package/docs/install/index.md +29 -0
  158. package/docs/three-tier-coding.md +1 -1
  159. package/gemini-extension.json +1 -1
  160. package/package.json +1 -5
  161. package/pai-plugin.json +1 -1
  162. package/plugins/context-preservation/plugin.json +1 -1
  163. package/plugins/core/plugin.json +1 -1
  164. package/plugins/core/skills/setup/SKILL.md +41 -9
  165. package/plugins/creative/plugin.json +1 -1
  166. package/plugins/observability/plugin.json +1 -1
  167. package/plugins/productivity/plugin.json +1 -1
  168. package/plugins/semantic-search/plugin.json +1 -1
  169. package/plugins/ui/plugin.json +1 -1
  170. package/plugins/zettelkasten/plugin.json +1 -1
  171. package/src/hooks/session-autosave.sh +8 -1
  172. package/src/hooks/session-stop.sh +8 -1
  173. package/src/hooks/ts/capture-all-events.ts +7 -12
  174. package/src/hooks/ts/lib/context-fill.ts +2 -1
  175. package/src/hooks/ts/lib/path-repair.ts +1 -1
  176. package/src/hooks/ts/lib/project-utils/notify.ts +1 -0
  177. package/src/hooks/ts/lib/project-utils/session-notes.ts +23 -6
  178. package/src/hooks/ts/lib/raw-capture.ts +36 -0
  179. package/src/hooks/ts/lib/session-summary.ts +129 -0
  180. package/src/hooks/ts/lib/todo-sync.ts +120 -0
  181. package/src/hooks/ts/lib/worker-git-guard.ts +1 -1
  182. package/src/hooks/ts/post-tool-use/capture-tool-output.ts +6 -10
  183. package/src/hooks/ts/post-tool-use/sync-todo-to-md.ts +5 -105
  184. package/src/hooks/ts/pre-compact/context-compression-hook.ts +1 -1
  185. package/src/hooks/ts/pre-tool-use/security-validator.ts +35 -14
  186. package/src/hooks/ts/session-end/capture-session-summary.ts +20 -128
  187. package/src/hooks/ts/session-start/load-core-context.ts +3 -3
  188. package/src/hooks/ts/session-start/load-project-context.ts +18 -22
  189. package/src/hooks/ts/stop/stop-hook.ts +13 -5
  190. package/src/hooks/ztk-auto.sh +7 -2
  191. package/dist/aibroker-client-JjE74jo0.mjs +0 -3
  192. package/dist/auto-route-BRk8NEFv.mjs +0 -11
  193. package/dist/budget-DuhQ2zzG.mjs +0 -14
  194. package/dist/cockpit-actions-DcQ-ucU8.mjs +0 -19
  195. package/dist/cockpit-memory-KV45PPO2.mjs +0 -19
  196. package/dist/daemon-C7yt_ptC.mjs +0 -44
  197. package/dist/detect-DRUkmHnb.mjs +0 -10
  198. package/dist/factory-DAGG9_n8.mjs +0 -9
  199. package/dist/helpers-DPJEHPq6.mjs +0 -10
  200. package/dist/kill-tree-LV0Q7Mte.mjs +0 -10
  201. package/dist/operator-CfL0HiBK.mjs +0 -7
  202. package/dist/postgres-DgqWyqhN.mjs +0 -7
  203. package/dist/providers-CTu2s1z2.mjs +0 -15
  204. package/dist/registrable-D9aNZOTh.mjs +0 -9
  205. package/dist/render-BSfVlYHj.mjs +0 -13
  206. package/dist/root-xI9DqVIe.mjs +0 -35
  207. package/dist/route-table-HjvnLVEU.mjs +0 -14
  208. package/dist/session-BJHzmUg2.mjs +0 -34
  209. package/dist/session-scan-YORKE1NO.mjs +0 -9
  210. package/dist/viewer-B8709jDN.mjs +0 -22
  211. package/dist/worker-config-D8tRuvo7.mjs +0 -40
  212. package/docs/images/cockpit-limits-routing.jpg +0 -0
  213. package/docs/images/cockpit-models.jpg +0 -0
  214. package/docs/images/cockpit-usage.jpg +0 -0
  215. package/docs/images/cockpit-workers-system.jpg +0 -0
  216. package/scripts/build-docs.mjs +0 -41
  217. package/scripts/build-hooks.mjs +0 -311
  218. package/scripts/build-skill-stubs.mjs +0 -216
  219. package/scripts/copy-defaults.mjs +0 -46
@@ -1,19 +1,21 @@
1
1
  import { g as paiHomePath, h as paiHomeDir } from "./runtime-paths-WsO9sJFc.mjs";
2
- import { j as readWorkersSection, t as ANTHROPIC_NATIVE, tt as workersYamlPath, wt as appendLedger } from "./config-D5chi2LO.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-BSXKyeJ1.mjs";
4
- import { i as ledgerPath, u as workersLogDir } from "./paths-DoIyRnhx.mjs";
5
- import { Fn as instanceEngineKey, it as readInventory } from "./routing-CUyiglfu.mjs";
6
- import { _ as readLocalConfig } from "./local-tiers-DPZYqv9m.mjs";
7
- import { g as sharedScheduler, o as readLocalStatus } from "./local-candidate-jOjTNlOL.mjs";
8
- import { t as LOCAL_PROBE_TIMEOUT_MS } from "./timeouts-OwEONmc8.mjs";
9
- import { f as setClass } from "./providers-UsKtLcUR.mjs";
10
- import { o as setConfigValueOp, s as unsetConfigValueOp } from "./main-config-ops-C0SflOWk.mjs";
11
- import { n as PaiClient } from "./ipc-client-BMqWw_gv.mjs";
12
- import { l as readEmbedPasses } from "./embed-pass-CeQD8kRE.mjs";
2
+ import { Et as parseLedger, j as readWorkersSection, t as ANTHROPIC_NATIVE, tt as workersYamlPath, wt as appendLedger } from "./config-XpZWOYOG.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-Bu1_vbY8.mjs";
4
+ import { i as ledgerPath, u as workersLogDir } from "./paths-CHifubDh.mjs";
5
+ import { it as readInventory } from "./routing-BAAST9vT.mjs";
6
+ import { _ as readLocalConfig } from "./local-tiers-BE4jGaMa.mjs";
7
+ import { f as sharedScheduler } from "./scheduler-CtUyWJ3O.mjs";
8
+ import { r as instanceEngineKey } from "./local-instances-DOxSgT_L.mjs";
9
+ import { o as primaryLocal, s as readLocalStatus } from "./local-candidate-DLdwQt0s.mjs";
10
+ import { t as LOCAL_PROBE_TIMEOUT_MS } from "./timeouts-1MLooEBB.mjs";
11
+ import { f as setClass } from "./providers-CblTFrhz.mjs";
12
+ import { o as setConfigValueOp, s as unsetConfigValueOp } from "./main-config-ops-BEMpuhDz.mjs";
13
+ import { n as PaiClient } from "./ipc-client-CaiGJnSM.mjs";
14
+ import { l as readEmbedPasses } from "./embed-pass-DIWjA68P.mjs";
13
15
  import { appendFileSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, renameSync, rmSync, rmdirSync, statSync, writeFileSync } from "node:fs";
16
+ import { randomBytes } from "node:crypto";
14
17
  import { dirname, join } from "node:path";
15
18
  import { execFileSync, spawn } from "node:child_process";
16
- import { randomBytes } from "node:crypto";
17
19
 
18
20
  //#region src/memory/run-state.ts
19
21
  /**
@@ -262,6 +264,11 @@ function num(section, key, fallback) {
262
264
  const v = section[key];
263
265
  return typeof v === "number" && Number.isFinite(v) && v > 0 ? v : fallback;
264
266
  }
267
+ /** Like num, but 0 is a real setting (a threshold or hold of 0 turns it off). */
268
+ function numZ(section, key, fallback) {
269
+ const v = section[key];
270
+ return typeof v === "number" && Number.isFinite(v) && v >= 0 ? v : fallback;
271
+ }
265
272
  /** A non-empty string from the config subtree, else the shipped fallback. */
266
273
  function str(section, key, fallback) {
267
274
  return typeof section[key] === "string" && section[key] ? section[key] : fallback;
@@ -379,42 +386,42 @@ function cockpitLayout() {
379
386
  sparkHeightPx: num(s, "sparkHeightPx", SHIPPED.sparkHeightPx),
380
387
  sparkViewMaxPx: num(s, "sparkViewMaxPx", SHIPPED.sparkViewMaxPx),
381
388
  sparkPlotHeightPx: num(s, "sparkPlotHeightPx", SHIPPED.sparkPlotHeightPx),
382
- sparkPlotTopPx: num(s, "sparkPlotTopPx", SHIPPED.sparkPlotTopPx),
389
+ sparkPlotTopPx: numZ(s, "sparkPlotTopPx", SHIPPED.sparkPlotTopPx),
383
390
  donutSizePx: num(s, "donutSizePx", SHIPPED.donutSizePx),
384
391
  donutRadiusPx: num(s, "donutRadiusPx", SHIPPED.donutRadiusPx),
385
392
  donutStrokePx: num(s, "donutStrokePx", SHIPPED.donutStrokePx),
386
393
  donutViewBoxPx: num(s, "donutViewBoxPx", SHIPPED.donutViewBoxPx),
387
- minLabelGapPx: num(s, "minLabelGapPx", SHIPPED.minLabelGapPx),
388
- minBarPx: num(s, "minBarPx", SHIPPED.minBarPx),
394
+ minLabelGapPx: numZ(s, "minLabelGapPx", SHIPPED.minLabelGapPx),
395
+ minBarPx: numZ(s, "minBarPx", SHIPPED.minBarPx),
389
396
  sysHistoryLen: num(s, "sysHistoryLen", SHIPPED.sysHistoryLen),
390
397
  dailyDays: num(s, "dailyDays", SHIPPED.dailyDays),
391
398
  sessionsRows: num(s, "sessionsRows", SHIPPED.sessionsRows),
392
399
  sessionsTopRows: num(s, "sessionsTopRows", SHIPPED.sessionsTopRows),
393
400
  sessionNameMaxPct: num(s, "sessionNameMaxPct", SHIPPED.sessionNameMaxPct),
394
401
  workerRows: num(s, "workerRows", SHIPPED.workerRows),
395
- lowRequestMin: num(s, "lowRequestMin", SHIPPED.lowRequestMin),
402
+ lowRequestMin: numZ(s, "lowRequestMin", SHIPPED.lowRequestMin),
396
403
  colorPruneDays: num(s, "colorPruneDays", SHIPPED.colorPruneDays),
397
404
  pollMs: num(s, "pollMs", SHIPPED.pollMs),
398
405
  limitsPollMs: num(s, "limitsPollMs", SHIPPED.limitsPollMs),
399
406
  poolPollMs: num(s, "poolPollMs", SHIPPED.poolPollMs),
400
407
  clockTickMs: num(s, "clockTickMs", SHIPPED.clockTickMs),
401
408
  stampStaleSecs: num(s, "stampStaleSecs", SHIPPED.stampStaleSecs),
402
- holdLastGoodSecs: num(s, "holdLastGoodSecs", SHIPPED.holdLastGoodSecs),
409
+ holdLastGoodSecs: numZ(s, "holdLastGoodSecs", SHIPPED.holdLastGoodSecs),
403
410
  jobPollMs: num(s, "jobPollMs", SHIPPED.jobPollMs),
404
- jobFirstDelayMs: num(s, "jobFirstDelayMs", SHIPPED.jobFirstDelayMs),
411
+ jobFirstDelayMs: numZ(s, "jobFirstDelayMs", SHIPPED.jobFirstDelayMs),
405
412
  jobMaxTries: num(s, "jobMaxTries", SHIPPED.jobMaxTries),
406
413
  serverCounterStaleSecs: num(s, "serverCounterStaleSecs", SHIPPED.serverCounterStaleSecs),
407
- gaugeWarnPct: num(s, "gaugeWarnPct", SHIPPED.gaugeWarnPct),
408
- gaugeBadPct: num(s, "gaugeBadPct", SHIPPED.gaugeBadPct),
409
- hitWarn: num(s, "hitWarn", SHIPPED.hitWarn),
410
- hitBad: num(s, "hitBad", SHIPPED.hitBad),
411
- errorWarn: num(s, "errorWarn", SHIPPED.errorWarn),
412
- errorBad: num(s, "errorBad", SHIPPED.errorBad),
414
+ gaugeWarnPct: numZ(s, "gaugeWarnPct", SHIPPED.gaugeWarnPct),
415
+ gaugeBadPct: numZ(s, "gaugeBadPct", SHIPPED.gaugeBadPct),
416
+ hitWarn: numZ(s, "hitWarn", SHIPPED.hitWarn),
417
+ hitBad: numZ(s, "hitBad", SHIPPED.hitBad),
418
+ errorWarn: numZ(s, "errorWarn", SHIPPED.errorWarn),
419
+ errorBad: numZ(s, "errorBad", SHIPPED.errorBad),
413
420
  memoryTitle: str(s, "memoryTitle", SHIPPED.memoryTitle),
414
421
  memoryPollMs: num(s, "memoryPollMs", SHIPPED.memoryPollMs),
415
- memoryCoverageWarn: num(s, "memoryCoverageWarn", SHIPPED.memoryCoverageWarn),
416
- memoryCoverageBad: num(s, "memoryCoverageBad", SHIPPED.memoryCoverageBad),
417
- memoryStartGraceSecs: num(s, "memoryStartGraceSecs", SHIPPED.memoryStartGraceSecs),
422
+ memoryCoverageWarn: numZ(s, "memoryCoverageWarn", SHIPPED.memoryCoverageWarn),
423
+ memoryCoverageBad: numZ(s, "memoryCoverageBad", SHIPPED.memoryCoverageBad),
424
+ memoryStartGraceSecs: numZ(s, "memoryStartGraceSecs", SHIPPED.memoryStartGraceSecs),
418
425
  memoryStallSecs: num(s, "memoryStallSecs", SHIPPED.memoryStallSecs),
419
426
  memoryHistoryLen: num(s, "memoryHistoryLen", SHIPPED.memoryHistoryLen),
420
427
  memoryRingPx: num(s, "memoryRingPx", SHIPPED.memoryRingPx)
@@ -1195,6 +1202,11 @@ function writeJob(home, j) {
1195
1202
  writeFileSync(path, JSON.stringify(j) + "\n", "utf8");
1196
1203
  } catch {}
1197
1204
  }
1205
+ /** The running local model's name, for the "stops X first" confirm text. */
1206
+ function runningLocalModel(st) {
1207
+ const r = primaryLocal(st);
1208
+ return r ? `${r.provider} (${r.model})` : null;
1209
+ }
1198
1210
  /** The catalogue model a name stands for: a model name as is, a provider name (the Local servers card) resolved to the model that serves it. */
1199
1211
  function resolveTierName(name, models, yamlPath) {
1200
1212
  if (models.includes(name)) return name;
@@ -1226,6 +1238,31 @@ function readLabels() {
1226
1238
  return {};
1227
1239
  }
1228
1240
  }
1241
+ /** The label of a runtime (or one of its models), "" when none is set. */
1242
+ function labelFor(runtime, model) {
1243
+ const block = readLabels()[runtime];
1244
+ if (model) {
1245
+ if (block && typeof block === "object" && !Array.isArray(block)) {
1246
+ const v = block[model];
1247
+ return typeof v === "string" ? v : "";
1248
+ }
1249
+ return "";
1250
+ }
1251
+ return typeof block === "string" ? block : "";
1252
+ }
1253
+ /** Which classes currently pin this provider (the "workers" toggle state). */
1254
+ function classesOnProvider(workers, provider) {
1255
+ return Object.entries(workers.classes).filter(([, t]) => (typeof t === "string" ? t.split("/")[0] : t.provider) === provider).map(([c]) => c);
1256
+ }
1257
+ /** The provider the orchestrate/chat side runs on: the session profile's chat
1258
+ * provider when set, else the active provider ("" = the built-in anthropic). */
1259
+ function orchestratorProvider(workers) {
1260
+ try {
1261
+ const p = readWorkersSection().raw.session?.profile?.chat?.provider;
1262
+ if (typeof p === "string" && p) return p;
1263
+ } catch {}
1264
+ return workers.active && workers.active !== "auto" ? workers.active : "";
1265
+ }
1229
1266
  /** Requests running or waiting on one engine key in a scheduler snapshot. */
1230
1267
  function engineInflight(snap, key) {
1231
1268
  const e = snap.engines[key];
@@ -1236,23 +1273,23 @@ function defaultDeps() {
1236
1273
  const logDir = workersLogDir(workers);
1237
1274
  return {
1238
1275
  startTier: async (tierName) => {
1239
- const { startTier } = await import("./worker-config-D8tRuvo7.mjs");
1276
+ const { startTier } = await import("./worker-config-DESkIjMF.mjs");
1240
1277
  const cfg = readLocalConfig(workersYamlPath());
1241
1278
  const tier = cfg.tiers[tierName];
1242
1279
  if (!tier) throw new Error(`no tier "${tierName}" (configured: ${Object.keys(cfg.tiers).join(", ") || "none"})`);
1243
1280
  await startTier(cfg, tierName, tier);
1244
1281
  },
1245
1282
  stopAll: async () => {
1246
- const { stopAll } = await import("./worker-config-D8tRuvo7.mjs");
1283
+ const { stopAll } = await import("./worker-config-DESkIjMF.mjs");
1247
1284
  await stopAll(readLocalConfig(workersYamlPath()));
1248
1285
  },
1249
1286
  startModel: async (model) => {
1250
- const { startInstance } = await import("./worker-config-D8tRuvo7.mjs");
1287
+ const { startInstance } = await import("./worker-config-DESkIjMF.mjs");
1251
1288
  await startInstance(readLocalConfig(workersYamlPath()), model);
1252
1289
  },
1253
1290
  stopModel: async (target, opts) => {
1254
- const { stopInstance } = await import("./worker-config-D8tRuvo7.mjs");
1255
- const { currentInstances } = await import("./worker-config-D8tRuvo7.mjs");
1291
+ const { stopInstance } = await import("./worker-config-DESkIjMF.mjs");
1292
+ const { currentInstances } = await import("./worker-config-DESkIjMF.mjs");
1256
1293
  const cfg = readLocalConfig(workersYamlPath());
1257
1294
  const keys = new Map(currentInstances(cfg).map((r) => [r.id, instanceEngineKey(r)]));
1258
1295
  await stopInstance(cfg, target, opts, {
@@ -1261,7 +1298,7 @@ function defaultDeps() {
1261
1298
  });
1262
1299
  },
1263
1300
  runningCount: async (model) => {
1264
- const { currentInstances } = await import("./worker-config-D8tRuvo7.mjs");
1301
+ const { currentInstances } = await import("./worker-config-DESkIjMF.mjs");
1265
1302
  return currentInstances(readLocalConfig(workersYamlPath())).filter((r) => r.model === model && r.state !== "failed").length;
1266
1303
  },
1267
1304
  setClass: (cls, target) => void setClass(cls, target),
@@ -1545,7 +1582,7 @@ async function runCockpitAction(body, deps, hooks = {}) {
1545
1582
  if (action === "route.set") {
1546
1583
  if (!target) return fail("target (tier) required");
1547
1584
  try {
1548
- const { setRoute } = await import("./route-table-HjvnLVEU.mjs");
1585
+ const { setRoute } = await import("./route-table-B7zpoypi.mjs");
1549
1586
  const models = Array.isArray(body.models) ? body.models : value !== void 0 ? value.split(",") : body.models;
1550
1587
  const change = setRoute(target, models, deps.configPath);
1551
1588
  writeLedgerLine(deps, action, change.id, `set:${change.entries.join(">")}`);
@@ -1562,7 +1599,7 @@ async function runCockpitAction(body, deps, hooks = {}) {
1562
1599
  if (value !== "on" && value !== "off") return fail(`value must be on or off, got "${value ?? ""}"`);
1563
1600
  if (!deps.workers.providers[target]?.characteristics) return fail(`"${target}" is not a registered endpoint (providers.${target}.characteristics)`);
1564
1601
  try {
1565
- const { setProviderEnabled } = await import("./providers-CTu2s1z2.mjs");
1602
+ const { setProviderEnabled } = await import("./providers-BeDiVEb-.mjs");
1566
1603
  setProviderEnabled(target, value === "on", deps.configPath);
1567
1604
  writeLedgerLine(deps, action, target, `routing ${value}`);
1568
1605
  return {
@@ -1588,7 +1625,7 @@ async function runCockpitAction(body, deps, hooks = {}) {
1588
1625
  message: `worker classes → ${provider}`
1589
1626
  };
1590
1627
  }
1591
- const { useProvider } = await import("./providers-CTu2s1z2.mjs");
1628
+ const { useProvider } = await import("./providers-BeDiVEb-.mjs");
1592
1629
  useProvider(provider);
1593
1630
  try {
1594
1631
  const raw = readMainConfigRaw();
@@ -1623,14 +1660,14 @@ async function memoryRunRefusal(deps, nowMs = Date.now()) {
1623
1660
  }
1624
1661
  /** The daemon's count of chunks without vectors; null when it does not answer. */
1625
1662
  async function daemonEmbedBacklog() {
1626
- const { fetchDaemonMemory } = await import("./cockpit-memory-KV45PPO2.mjs");
1663
+ const { fetchDaemonMemory } = await import("./cockpit-memory--dnShXBA.mjs");
1627
1664
  return (await fetchDaemonMemory())?.embedBacklog ?? null;
1628
1665
  }
1629
1666
  /** The daemon's in-process passes (no child, so no marker): its status says whether one runs. */
1630
1667
  async function daemonMemoryBusy() {
1631
1668
  try {
1632
- const { PaiClient } = await import("./ipc-client-YYDD6zzU.mjs");
1633
- const { loadConfig } = await import("./config-TaWmdTLx.mjs");
1669
+ const { PaiClient } = await import("./ipc-client-ZRmDKd5Z.mjs");
1670
+ const { loadConfig } = await import("./config-DtENJ6cL.mjs");
1634
1671
  const s = await new PaiClient(loadConfig().socketPath).call("status", {}, 5e3);
1635
1672
  if (s.embedInProgress) return "embed already running (started by daemon)";
1636
1673
  if (s.indexInProgress) return "index already running (started by daemon)";
@@ -1744,7 +1781,7 @@ async function finishRuntimeJob(deps, hooks, id, runtime, op) {
1744
1781
  end(state, message);
1745
1782
  }
1746
1783
  async function defaultRefreshInventory() {
1747
- const { computeInventory, readInventoryInput, writeInventory } = await import("./model-inventory-Dasber3S.mjs");
1784
+ const { computeInventory, readInventoryInput, writeInventory } = await import("./model-inventory-BFVSNFT3.mjs");
1748
1785
  writeInventory(workersLogDir(readWorkersSection().workers), await computeInventory(readInventoryInput()));
1749
1786
  }
1750
1787
  /** Runs the injected local job, records its outcome in the job file and ledger. */
@@ -1806,7 +1843,12 @@ async function scaleModel(deps, model, count) {
1806
1843
  }
1807
1844
  await needDep(deps.stopModel)(model, count === 0 ? { all: true } : { count: have - count });
1808
1845
  }
1846
+ /** The ledger lines of cockpit actions (for the card's result text / history). */
1847
+ function cockpitActionLedger(ledgerFile, lastN = 10) {
1848
+ if (!existsSync(ledgerFile)) return [];
1849
+ return parseLedger(readFileSync(ledgerFile, "utf8")).filter((l) => l.event === COCKPIT_ACTION_EVENT).slice(-lastN).map((l) => `${l.stamp} ${l.fields.action ?? "?"} ${l.fields.target ?? "-"} ${l.fields.result ?? ""}`);
1850
+ }
1809
1851
 
1810
1852
  //#endregion
1811
- export { memoryRunLog as A, embeddingRuntimeName as C, latestMemoryJob as D, fetchDaemonMemory as E, cockpitLayout as F, cockpitProbeSettings as I, acquireRun as L, runProgress as M, runningMemoryJob as N, liveMemoryDeps as O, sameModel as P, readRun as R, writeLedgerLine as S, cockpitMemoryPayload as T, runtimeJobProgress as _, cockpitJobFile as a, spawnMemoryRun as b, labelPath as c, readCockpitJob as d, readLabels as f, runningRuntimeJobs as g, runningRuntimeJob as h, WORKER_ROLE_CLASSES as i, rateSeries as j, memoryJobProgress as k, logTailSince as l, runCockpitAction as m, RUNTIME_START_EVENT as n, defaultDeps as o, resolveTierName as p, RUNTIME_STOP_EVENT as r, engineInflight as s, COCKPIT_ACTION_EVENT as t, memoryRunRefusal as u, runtimeOpRefusal as v, readRuntimeCommands as w, tierNames as x, runtimeStartStop as y };
1812
- //# sourceMappingURL=cockpit-actions-ODmt8yF9.mjs.map
1853
+ 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 };
1854
+ //# sourceMappingURL=cockpit-actions-BBHeyEZI.mjs.map
@@ -0,0 +1,20 @@
1
+ import "./config-XpZWOYOG.mjs";
2
+ import "./config-Bu1_vbY8.mjs";
3
+ import "./paths-CHifubDh.mjs";
4
+ import "./status-ggJ7lgVg.mjs";
5
+ import "./scope-D-h6F6DN.mjs";
6
+ import "./routing-BAAST9vT.mjs";
7
+ import "./tool-errors-7E13StWd.mjs";
8
+ import "./wait-ByV0OyMZ.mjs";
9
+ import "./local-tiers-BE4jGaMa.mjs";
10
+ import "./caller-identity-yLFb7CKq.mjs";
11
+ import "./capacity-DEveQdFV.mjs";
12
+ import "./local-instances-DOxSgT_L.mjs";
13
+ import "./local-candidate-DLdwQt0s.mjs";
14
+ import "./providers-CblTFrhz.mjs";
15
+ import "./main-config-ops-BEMpuhDz.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-BBHeyEZI.mjs";
17
+ import "./ipc-client-CaiGJnSM.mjs";
18
+ import "./embed-pass-DIWjA68P.mjs";
19
+
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 };
@@ -0,0 +1,20 @@
1
+ import "./config-XpZWOYOG.mjs";
2
+ import "./config-Bu1_vbY8.mjs";
3
+ import "./paths-CHifubDh.mjs";
4
+ import "./status-ggJ7lgVg.mjs";
5
+ import "./scope-D-h6F6DN.mjs";
6
+ import "./routing-BAAST9vT.mjs";
7
+ import "./tool-errors-7E13StWd.mjs";
8
+ import "./wait-ByV0OyMZ.mjs";
9
+ import "./local-tiers-BE4jGaMa.mjs";
10
+ import "./caller-identity-yLFb7CKq.mjs";
11
+ import "./capacity-DEveQdFV.mjs";
12
+ import "./local-instances-DOxSgT_L.mjs";
13
+ import "./local-candidate-DLdwQt0s.mjs";
14
+ import "./providers-CblTFrhz.mjs";
15
+ import "./main-config-ops-BEMpuhDz.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-BBHeyEZI.mjs";
17
+ import "./ipc-client-CaiGJnSM.mjs";
18
+ import "./embed-pass-DIWjA68P.mjs";
19
+
20
+ export { fetchDaemonMemory };
@@ -1,5 +1,5 @@
1
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";
2
- import { t as assertTestWriteAllowed } from "./test-isolation-CoDeOVXb.mjs";
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";
5
5
  import { homedir, userInfo } from "node:os";
@@ -13,6 +13,45 @@ const DEFAULT_PG_CONNECTION_TIMEOUT_MS = 5e3;
13
13
  function postgresConnectionString(config) {
14
14
  return config.connectionString ?? `postgresql://${config.user ?? "pai"}:${config.password ?? "pai"}@${config.host ?? "localhost"}:${config.port ?? 5432}/${config.database ?? "pai"}`;
15
15
  }
16
+ /** Postgres truncates identifiers beyond this many bytes. */
17
+ const PG_IDENT_MAX_BYTES = 63;
18
+ /** Throws unless `name` is usable as a database or role name: non-empty, no NUL, not option-like, at most `maxBytes`. */
19
+ function assertPgName(name, kind, maxBytes = PG_IDENT_MAX_BYTES) {
20
+ if (name === "" || name.includes("\0") || name.startsWith("-")) throw new Error(`invalid Postgres ${kind} name ${JSON.stringify(name)}`);
21
+ if (Buffer.byteLength(name) > maxBytes) throw new Error(`Postgres ${kind} name "${name}" is longer than ${maxBytes} bytes`);
22
+ }
23
+ /** Double-quoted SQL identifier; keeps case and neutralises any character. */
24
+ function quoteIdent(name) {
25
+ if (name === "" || name.includes("\0")) throw new Error(`invalid Postgres identifier ${JSON.stringify(name)}`);
26
+ return `"${name.replace(/"/g, "\"\"")}"`;
27
+ }
28
+ /** Full target (names and server) read from the URL the storage backend uses. */
29
+ function postgresFullTarget(config) {
30
+ const connectionString = postgresConnectionString(config);
31
+ const url = new URL(connectionString);
32
+ const database = decodeURIComponent(url.pathname.replace(/^\//, ""));
33
+ const user = decodeURIComponent(url.username);
34
+ assertPgName(database, "database");
35
+ assertPgName(user, "user");
36
+ return {
37
+ database,
38
+ user,
39
+ host: url.hostname.replace(/^\[|\]$/g, "") || "localhost",
40
+ port: url.port ? Number(url.port) : 5432,
41
+ password: url.password ? decodeURIComponent(url.password) : void 0,
42
+ connectionString
43
+ };
44
+ }
45
+ const LOCAL_HOSTS = new Set([
46
+ "localhost",
47
+ "127.0.0.1",
48
+ "::1",
49
+ "0.0.0.0"
50
+ ]);
51
+ /** True when the target is the local server PAI's `pai-pgvector` container publishes; anything else is an external server reached directly. */
52
+ function isContainerTarget(t) {
53
+ return t.host === void 0 || LOCAL_HOSTS.has(t.host.toLowerCase());
54
+ }
16
55
 
17
56
  //#endregion
18
57
  //#region src/config/json-store.ts
@@ -752,5 +791,5 @@ function ensureConfigDir() {
752
791
  }
753
792
 
754
793
  //#endregion
755
- export { postgresConnectionString as A, migrateMainConfigToYaml as C, readJsonStrict as D, writeYamlFileAtomic as E, writeJsonAtomic as O, MainConfigError as S, YamlStoreError 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, DEFAULT_PG_CONNECTION_TIMEOUT_MS 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, resolvedMainConfigPath as w, userWorkersYamlRaw as x, shippedMainDefaults as y };
756
- //# sourceMappingURL=config-BSXKyeJ1.mjs.map
794
+ export { assertPgName as A, migrateMainConfigToYaml as C, readJsonStrict as D, writeYamlFileAtomic as E, postgresConnectionString as M, postgresFullTarget as N, writeJsonAtomic as O, quoteIdent as P, MainConfigError as S, YamlStoreError 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, isContainerTarget as j, DEFAULT_PG_CONNECTION_TIMEOUT_MS 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, resolvedMainConfigPath as w, userWorkersYamlRaw as x, shippedMainDefaults as y };
795
+ //# sourceMappingURL=config-Bu1_vbY8.mjs.map
@@ -1,4 +1,4 @@
1
- import { A as providerQuotaSkipAt, C as parseMcpSetsValue, D as providerContextWindow, E as parseWorkersConfig, F as writeWorkersSection, M as resolveCapability, N as resolveModelCapability, O as providerCostTier, P as resolveProviderKey, S as parseClassesValue, T as parseProvider, _ as maskKey, a as MODEL_CAPABILITIES, b as nativeOrchestratorModel, c as WorkersConfigError, d as defaultWorkersConfig, f as escalationCloud, g as keysDir, h as isModelCapability, ht as DEFAULT_CONTEXT_WINDOW, i as DEFAULT_POOL_PORT, j as readWorkersSection, 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-D5chi2LO.mjs";
2
- import { o as expandHome, s as homeRel } from "./config-BSXKyeJ1.mjs";
1
+ import { A as providerQuotaSkipAt, C as parseMcpSetsValue, D as providerContextWindow, E as parseWorkersConfig, F as writeWorkersSection, M as resolveCapability, N as resolveModelCapability, O as providerCostTier, P as resolveProviderKey, S as parseClassesValue, T as parseProvider, _ as maskKey, a as MODEL_CAPABILITIES, b as nativeOrchestratorModel, c as WorkersConfigError, d as defaultWorkersConfig, f as escalationCloud, g as keysDir, h as isModelCapability, ht as DEFAULT_CONTEXT_WINDOW, i as DEFAULT_POOL_PORT, j as readWorkersSection, 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-XpZWOYOG.mjs";
2
+ import { o as expandHome, s as homeRel } from "./config-Bu1_vbY8.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, readWorkersSection, resolveCapability, resolveModelCapability, resolveProviderKey, writeWorkersSection };
@@ -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-BSXKyeJ1.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-Bu1_vbY8.mjs";
2
2
 
3
3
  export { CONFIG_DIR, CONFIG_FILE, ConfigMigrationError, defaults, ensureConfigDir, expandHome, homeRel, loadConfig, migrateConfigFile, paiConfigFilePath, paiConfigYamlFilePath, readMainConfigRaw, writeMainConfigRaw };
@@ -1,5 +1,5 @@
1
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 readJsonStrict, E as writeYamlFileAtomic, O as writeJsonAtomic, T as YamlStoreError, _ as effectiveWorkersYamlRaw, b as shippedWorkersDefaults, f as readMainConfigRaw, g as effectiveWorkersYamlDoc, h as effectiveMainConfig, n as CONFIG_FILE, o as expandHome, p as writeMainConfigRaw, u as paiConfigFilePath, x as userWorkersYamlRaw } from "./config-BSXKyeJ1.mjs";
2
+ import { D as readJsonStrict, E as writeYamlFileAtomic, O as writeJsonAtomic, T as YamlStoreError, _ as effectiveWorkersYamlRaw, b as shippedWorkersDefaults, f as readMainConfigRaw, g as effectiveWorkersYamlDoc, h as effectiveMainConfig, n as CONFIG_FILE, o as expandHome, p as writeMainConfigRaw, u as paiConfigFilePath, x as userWorkersYamlRaw } from "./config-Bu1_vbY8.mjs";
3
3
  import { appendFileSync, chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
4
4
  import { dirname, join, resolve } from "node:path";
5
5
  import { Document, Scalar, parseDocument } from "yaml";
@@ -2475,4 +2475,4 @@ function escalationCloud() {
2475
2475
 
2476
2476
  //#endregion
2477
2477
  export { starterWorkersYamlText as $, providerQuotaSkipAt as A, WORKERS_YAML_FILENAME as B, parseMcpSetsValue as C, withSummary as Ct, providerContextWindow as D, parseWorkersConfig as E, parseLedger as Et, writeWorkersSection as F, inlineWorkersYamlKeys as G, defaultWorkersYamlPath as H, LOOPBACK_HOST as I, parseBuiltinAnthropic as J, migrateWorkersToYaml as K, isLoopbackHostname as L, resolveCapability as M, resolveModelCapability as N, providerCostTier as O, resolveProviderKey as P, relocateWorkersYaml as Q, isLoopbackUrl as R, parseClassesValue as S, sessionNote as St, parseProvider as T, ledgerSummary as Tt, effectiveWorkersYamlData as U, buildWorkersYamlText as V, initWorkersYaml as W, readMergeVerify as X, parseWorkersYamlDocument as Y, readWorkersYaml as Z, maskKey as _, contextWindowFromModelId as _t, MODEL_CAPABILITIES as a, MAX_ROUTE_MODELS as at, nativeOrchestratorModel as b, ledgerEscalate as bt, WorkersConfigError as c, entryProvider as ct, defaultWorkersConfig as d, migrateSessionRoutes as dt, workersYamlLegacyNotice as et, escalationCloud as f, parseEntry as ft, keysDir as g, certainContextWindow as gt, isModelCapability as h, DEFAULT_CONTEXT_WINDOW as ht, DEFAULT_POOL_PORT as i, yamlProviderToRaw as it, readWorkersSection as j, providerKeyPath as k, assertProviderRunnable as l, findTier as lt, isLocalProvider as m, targetList as mt, CAPABILITY_NAME_RE as n, writeWorkersYaml as nt, PROVIDER_TAGS as o, applyRouteOverrides as ot, getProviderOrNative as p, sessionTier as pt, needsWorkersYamlRelocation as q, DEFAULT_COST_TIER as r, writeWorkersYamlText as rt, WORKER_CLASSES as s, classRoute as st, ANTHROPIC_NATIVE as t, workersYamlPath as tt, classModelCapability as u, listForPolicy as ut, nativeAnthropicModels as v, stripModelVariant as vt, parseModelsBlock as w, appendLedger as wt, parseCapabilitiesValue as x, planEscalation as xt, nativeAnthropicProvider as y, ESCALATE_FAILURES as yt, loopbackUrl as z };
2478
- //# sourceMappingURL=config-D5chi2LO.mjs.map
2478
+ //# sourceMappingURL=config-XpZWOYOG.mjs.map
@@ -1,20 +1,20 @@
1
1
  import { g as paiHomePath } from "./runtime-paths-WsO9sJFc.mjs";
2
- import { Et as parseLedger, d as defaultWorkersConfig, f as escalationCloud, j as readWorkersSection, m as isLocalProvider, wt as appendLedger, yt as ESCALATE_FAILURES } from "./config-D5chi2LO.mjs";
3
- import { h as effectiveMainConfig, u as paiConfigFilePath } from "./config-BSXKyeJ1.mjs";
4
- import { i as ledgerPath, l as statusPath, o as panesDir, u as workersLogDir } from "./paths-DoIyRnhx.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-CvVi9cDf.mjs";
6
- import { c as scopeKey, i as itermUuid$1, p as currentWorkerId } from "./scope-D5VSQxe4.mjs";
7
- import { c as listBuildsSync, i as buildsDir, p as ticketKind } from "./caller-identity-CVTuiLSs.mjs";
8
- import { n as tierProviderNames, o as readLocalStatus, t as isLocalCandidate } from "./local-candidate-jOjTNlOL.mjs";
9
- import { o as providerCap, s as queueRows } from "./capacity-DaXrVj3J.mjs";
10
- import { d as paneRunStatusRow, f as paneStatusRow } from "./render-BDbb4CF-.mjs";
11
- import { r as sayToWorker } from "./operator-DZxcP-g8.mjs";
2
+ import { Et as parseLedger, d as defaultWorkersConfig, f as escalationCloud, j as readWorkersSection, m as isLocalProvider, wt as appendLedger, yt as ESCALATE_FAILURES } from "./config-XpZWOYOG.mjs";
3
+ import { h as effectiveMainConfig, u as paiConfigFilePath } from "./config-Bu1_vbY8.mjs";
4
+ import { i as ledgerPath, l as statusPath, o as panesDir, u as workersLogDir } from "./paths-CHifubDh.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-ggJ7lgVg.mjs";
6
+ import { c as scopeKey, i as itermUuid$1, p as currentWorkerId } from "./scope-D-h6F6DN.mjs";
7
+ import { a as buildsDir, l as listBuildsSync, m as ticketKind } from "./caller-identity-yLFb7CKq.mjs";
8
+ import { o as providerCap, s as queueRows } from "./capacity-DEveQdFV.mjs";
9
+ import { n as tierProviderNames, s as readLocalStatus, t as isLocalCandidate } from "./local-candidate-DLdwQt0s.mjs";
10
+ import { d as paneRunStatusRow, f as paneStatusRow } from "./render-BYmQkuLd.mjs";
11
+ import { r as sayToWorker } from "./operator-CyuB3aVw.mjs";
12
12
  import { appendFileSync, existsSync, mkdirSync, mkdtempSync, openSync, readFileSync, readdirSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
13
+ import { createHash } from "node:crypto";
13
14
  import { dirname, isAbsolute, join, resolve } from "node:path";
14
15
  import { homedir, tmpdir } from "node:os";
15
16
  import { execFile, execFileSync, spawn } from "node:child_process";
16
17
  import { parse } from "yaml";
17
- import { createHash } from "node:crypto";
18
18
  import { createConnection, createServer } from "node:net";
19
19
  import { PassThrough, Writable } from "node:stream";
20
20
  import { createInterface } from "node:readline";
@@ -847,8 +847,8 @@ async function runPaneExec(id, d = {}) {
847
847
  let show = out;
848
848
  let showErr = err;
849
849
  if (sp.statusLine && (d.tty ?? process.stdout.isTTY === true)) {
850
- const { loadStatus } = await import("./status-DYydKQUI.mjs");
851
- const { sayToWorker } = await import("./operator-CfL0HiBK.mjs");
850
+ const { loadStatus } = await import("./status-Dm4dYciN.mjs");
851
+ const { sayToWorker } = await import("./operator-BTqvTIc8.mjs");
852
852
  const b = startPaneBar({
853
853
  spec: sp.statusLine,
854
854
  write: (x) => out(x),
@@ -955,8 +955,8 @@ async function renderer(sp, id, out, err) {
955
955
  err: (c) => err(c),
956
956
  end: () => void 0
957
957
  };
958
- const { applyEvent, initialFollowState } = await import("./viewer-B8709jDN.mjs");
959
- const { makeColor } = await import("./render-BSfVlYHj.mjs");
958
+ const { applyEvent, initialFollowState } = await import("./viewer-CqozWW39.mjs");
959
+ const { makeColor } = await import("./render-CoMvwMPs.mjs");
960
960
  const c = makeColor(true);
961
961
  let state = initialFollowState("");
962
962
  let buf = "";
@@ -2866,13 +2866,28 @@ function readRunLock(path, isAlive = (p) => pidAlive$1(p)) {
2866
2866
  async function withRunLock(path, what, fn, deps = {}) {
2867
2867
  if (!path) return fn();
2868
2868
  const pid = deps.pid ?? process.pid;
2869
- const held = readRunLock(path, deps.isAlive);
2870
- if (held && held.pid !== pid) throw new RunLockedError(what, held);
2871
2869
  mkdirSync(dirname(path), { recursive: true });
2872
- writeFileSync(path, JSON.stringify({
2870
+ const body = JSON.stringify({
2873
2871
  pid,
2874
2872
  startedAt: (deps.now ?? Date.now)()
2875
- }), "utf8");
2873
+ });
2874
+ for (let attempt = 0;; attempt++) {
2875
+ const held = readRunLock(path, deps.isAlive);
2876
+ if (held && held.pid !== pid) throw new RunLockedError(what, held);
2877
+ try {
2878
+ writeFileSync(path, body, {
2879
+ encoding: "utf8",
2880
+ flag: held ? "w" : "wx"
2881
+ });
2882
+ break;
2883
+ } catch (e) {
2884
+ if (e.code !== "EEXIST") throw e;
2885
+ if (attempt >= 2) throw e;
2886
+ if (!readRunLock(path, deps.isAlive)) try {
2887
+ unlinkSync(path);
2888
+ } catch {}
2889
+ }
2890
+ }
2876
2891
  const release = () => {
2877
2892
  try {
2878
2893
  if (JSON.parse(readFileSync(path, "utf8")).pid === pid) unlinkSync(path);
@@ -4142,11 +4157,11 @@ function originTarget(origin) {
4142
4157
  }
4143
4158
  /** Real messenger over AIBroker's socket; unreachable AIBroker is logged and ignored. */
4144
4159
  function aibrokerMessenger(logDir, warn = (s) => process.stderr.write(s + "\n"), resolveHost = async () => "", send = async (target, text) => {
4145
- const { sendToSession } = await import("./aibroker-client-JjE74jo0.mjs");
4160
+ const { sendToSession } = await import("./aibroker-client-BxzeEHPF.mjs");
4146
4161
  return sendToSession(target, text);
4147
4162
  }, toPailot = (text) => guardedPailot(logDir, text, async (t) => {
4148
4163
  try {
4149
- const { callAiBroker } = await import("./aibroker-client-JjE74jo0.mjs");
4164
+ const { callAiBroker } = await import("./aibroker-client-BxzeEHPF.mjs");
4150
4165
  await callAiBroker("pailot_send", { text: t }, 8e3);
4151
4166
  return true;
4152
4167
  } catch (e) {
@@ -4691,4 +4706,4 @@ async function returnControlsIfHeld(logDir, id) {
4691
4706
 
4692
4707
  //#endregion
4693
4708
  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 };
4694
- //# sourceMappingURL=controls-BGkK_Bdi.mjs.map
4709
+ //# sourceMappingURL=controls-CPoeudou.mjs.map
@@ -1,47 +1,48 @@
1
1
  #!/usr/bin/env node
2
2
  import "../utils-J2b9y8PC.mjs";
3
- import "../migrate-BUJHadA8.mjs";
4
- import "../config-D5chi2LO.mjs";
5
- import { a as ensureConfigDir, c as loadConfig } from "../config-BSXKyeJ1.mjs";
6
- import "../paths-DoIyRnhx.mjs";
7
- import "../worktree-zmRf556h.mjs";
8
- import "../status-CvVi9cDf.mjs";
9
- import "../pool-CZ5MZaXg.mjs";
10
- import "../registrable-LrRIVYQc.mjs";
11
- import "../pai-marker-kIYuNt3c.mjs";
12
- import "../helpers-CJpb_MNB.mjs";
13
- import "../reranker-DxxMCtA0.mjs";
14
- import { t as dropItermBundleId } from "../env-DArqGq-Z.mjs";
15
- import "../scope-D5VSQxe4.mjs";
16
- import "../routing-CUyiglfu.mjs";
17
- import "../tool-errors-AeRQuG3Y.mjs";
18
- import "../wait-BMUR-U-U.mjs";
19
- import "../local-tiers-DPZYqv9m.mjs";
20
- import "../caller-identity-CVTuiLSs.mjs";
21
- import "../local-candidate-jOjTNlOL.mjs";
22
- import "../capacity-DaXrVj3J.mjs";
23
- import "../factory-BtjbQ0np.mjs";
24
- import "../postgres-CDnd_k5f.mjs";
25
- import "../embedding-gate-BHuBsgHD.mjs";
26
- import "../embeddings-D4t6L-EH.mjs";
27
- import "../router-L8Nu-OHF.mjs";
28
- import "../detect-C1d5cUkT.mjs";
29
- import "../scan-B7I0gPe-.mjs";
30
- import "../launch-DgqQdAjI.mjs";
31
- import "../run-ulAi5dFD.mjs";
32
- import "../controls-BGkK_Bdi.mjs";
33
- import "../endreason-x1KOSrcO.mjs";
34
- import "../render-BDbb4CF-.mjs";
35
- import "../operator-DZxcP-g8.mjs";
36
- import "../kill-tree-BjYz5BxK.mjs";
37
- import "../pool-cli-BxNSPzzY.mjs";
38
- import "../pane-audit-OGYrOAik.mjs";
39
- import { n as PaiClient } from "../ipc-client-BMqWw_gv.mjs";
40
- import "../embed-pass-CeQD8kRE.mjs";
41
- import "../indexer-backend-BM2CUSu8.mjs";
42
- import { t as serve } from "../daemon-CorGh6Ub.mjs";
43
- import "../auto-route-D5SXrMpB.mjs";
44
- import "../zettelkasten-Cr_Xj0mG.mjs";
3
+ import "../migrate-DrA_OwlZ.mjs";
4
+ import "../config-XpZWOYOG.mjs";
5
+ import { a as ensureConfigDir, c as loadConfig } from "../config-Bu1_vbY8.mjs";
6
+ import "../paths-CHifubDh.mjs";
7
+ import "../worktree-CRs2gyg0.mjs";
8
+ import "../status-ggJ7lgVg.mjs";
9
+ import "../pool-Dh-q3iJi.mjs";
10
+ import "../registrable-DpyTtajg.mjs";
11
+ import "../pai-marker-BcZyJguM.mjs";
12
+ import "../helpers-CRuBUas3.mjs";
13
+ import "../reranker-CqCbpGnX.mjs";
14
+ import { t as dropItermBundleId } from "../env-BE8mrsxr.mjs";
15
+ import "../scope-D-h6F6DN.mjs";
16
+ import "../routing-BAAST9vT.mjs";
17
+ import "../tool-errors-7E13StWd.mjs";
18
+ import "../wait-ByV0OyMZ.mjs";
19
+ import "../local-tiers-BE4jGaMa.mjs";
20
+ import "../caller-identity-yLFb7CKq.mjs";
21
+ import "../capacity-DEveQdFV.mjs";
22
+ import "../local-instances-DOxSgT_L.mjs";
23
+ import "../local-candidate-DLdwQt0s.mjs";
24
+ import "../factory-DjAAsqr_.mjs";
25
+ import "../postgres-C6ti4haA.mjs";
26
+ import "../embedding-gate-6rZrWRXa.mjs";
27
+ import "../embeddings-BVq3esBF.mjs";
28
+ import "../router-CQSc3lk3.mjs";
29
+ import "../detect-9CZNO0yf.mjs";
30
+ import "../scan-C_Y5W9py.mjs";
31
+ import "../launch-Jh5NVeNe.mjs";
32
+ import "../run-CSC7mgPf.mjs";
33
+ import "../controls-CPoeudou.mjs";
34
+ import "../endreason-C577xIQz.mjs";
35
+ import "../render-BYmQkuLd.mjs";
36
+ import "../operator-CyuB3aVw.mjs";
37
+ import "../kill-tree-EWYaEk5v.mjs";
38
+ import "../pool-cli-BggU8GRp.mjs";
39
+ import "../pane-audit-DKQt71s4.mjs";
40
+ import { n as PaiClient } from "../ipc-client-CaiGJnSM.mjs";
41
+ import "../embed-pass-DIWjA68P.mjs";
42
+ import "../indexer-backend-Cll7le4P.mjs";
43
+ import { t as serve } from "../daemon-DPAo6WTa.mjs";
44
+ import "../auto-route-B7Yu6Uam.mjs";
45
+ import "../zettelkasten-BzMm8REH.mjs";
45
46
 
46
47
  //#region src/daemon/index.ts
47
48
  /**