@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,9 +1,9 @@
1
1
  import { h as smartDecodeDir } from "./utils-J2b9y8PC.mjs";
2
- import { _ as resolvePaiFile, f as legacyConfigDir, g as paiHomePath, l as claudeHomeDir, m as migratePaiFile, u as claudeProjectsDir } from "./runtime-paths-WsO9sJFc.mjs";
3
- import { M as readWorkersSection } from "./config-CST2uq1v.mjs";
4
- import { u as workersLogDir } from "./paths-DS5VQKoR.mjs";
2
+ import { _ as paiHomePath, f as legacyConfigDir, h as migratePaiFile, l as claudeHomeDir, u as claudeProjectsDir, v as resolvePaiFile } from "./runtime-paths-twfV23YL.mjs";
3
+ import { M as readWorkersSection } from "./config-Bz8pAU5Q.mjs";
4
+ import { u as workersLogDir } from "./paths-CypxFTfn.mjs";
5
5
  import { t as fmtAge$1 } from "./fmt-age-ByDkvkoU.mjs";
6
- import { i as itermUuid, l as sessionMapPath, t as AIBROKER_REGISTRY } from "./scope-D8HK6vU7.mjs";
6
+ import { i as itermUuid, l as sessionMapPath, t as AIBROKER_REGISTRY } from "./scope-BTWstJ1B.mjs";
7
7
  import { closeSync, existsSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, realpathSync, renameSync, statSync, writeFileSync } from "node:fs";
8
8
  import { basename, join } from "node:path";
9
9
 
@@ -137,7 +137,7 @@ function loadBrokerNames(registryPath = AIBROKER_REGISTRY, mapPath) {
137
137
  /** Build encoded_dir → root_path map from PAI registry (authoritative cwd). */
138
138
  async function buildRegistryRootPathMap() {
139
139
  try {
140
- const { getRegistryBackend } = await import("./factory-DeASMV7Z.mjs");
140
+ const { getRegistryBackend } = await import("./factory-DFwez99M.mjs");
141
141
  const projects = await (await getRegistryBackend()).listProjects();
142
142
  const map = /* @__PURE__ */ new Map();
143
143
  for (const p of projects) if (p.encoded_dir) map.set(p.encoded_dir, p.root_path);
@@ -870,4 +870,4 @@ function transcriptCustomTitle(claudeSessionId, projectsDir = CLAUDE_PROJECTS_DI
870
870
 
871
871
  //#endregion
872
872
  export { resolveSessionByNameOrId as a, transcriptCustomTitle as c, resolveFriendlyName as i, loadBrokerNames as n, scanCacheFilePath as o, migrateSessionScanCache as r, scanSessions as s, fmtAge as t };
873
- //# sourceMappingURL=session-scan-BmnjSReu.mjs.map
873
+ //# sourceMappingURL=session-scan-CX3MKCNg.mjs.map
@@ -1,5 +1,5 @@
1
- import { rt as workersYamlPath } from "./config-CST2uq1v.mjs";
2
- import { u as paiConfigFilePath, w as readDualFormatConfigRaw, x as userWorkersYamlRaw } from "./config-DYbyEe4-.mjs";
1
+ import { rt as workersYamlPath } from "./config-Bz8pAU5Q.mjs";
2
+ import { u as paiConfigFilePath, w as readDualFormatConfigRaw, x as userWorkersYamlRaw } from "./config-SlZ-Z52i.mjs";
3
3
  import { createReadStream, existsSync, readFileSync } from "node:fs";
4
4
  import { createInterface } from "node:readline";
5
5
 
@@ -334,4 +334,4 @@ function totalUsageTokens(totals) {
334
334
 
335
335
  //#endregion
336
336
  export { liveWorkersConfigShadows as a, totalUsageTokens as i, isRealUserPrompt as n, logWorkersConfigShadowsOnce as o, parseSessionUsage as r, workersConfigShadows as s, extractUserPromptText as t };
337
- //# sourceMappingURL=session-usage-oycSdiD3.mjs.map
337
+ //# sourceMappingURL=session-usage-CCmPFFa6.mjs.map
@@ -1,5 +1,5 @@
1
- import { f as readMainConfigRaw } from "./config-DYbyEe4-.mjs";
2
- import { l as statusPath } from "./paths-DS5VQKoR.mjs";
1
+ import { f as readMainConfigRaw } from "./config-SlZ-Z52i.mjs";
2
+ import { l as statusPath } from "./paths-CypxFTfn.mjs";
3
3
  import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
4
4
  import { createHash } from "node:crypto";
5
5
  import { join } from "node:path";
@@ -782,6 +782,10 @@ function parentPidOf(pid) {
782
782
  return;
783
783
  }
784
784
  }
785
+ /** Start time (ms epoch) of this process, for a status it writes about itself (procStart). */
786
+ function selfProcStart() {
787
+ return Math.round(Date.now() - process.uptime() * 1e3);
788
+ }
785
789
  function ownsPid(status) {
786
790
  if (status.pool) return status.pid > 0 && alive(status.pid) && parentPidOf(status.pid) === status.pool.hostPid;
787
791
  if (status.pid <= 0 || !alive(status.pid)) return false;
@@ -799,7 +803,7 @@ function ownsPid(status) {
799
803
  }
800
804
  }).trim();
801
805
  const psStart = Date.parse(out);
802
- const started = spawnTimeOf(status) ?? Date.parse(status.started.replace(" ", "T"));
806
+ const started = status.procStart ?? spawnTimeOf(status) ?? Date.parse(status.started.replace(" ", "T"));
803
807
  if (Number.isNaN(psStart) || Number.isNaN(started)) return alive(status.pid);
804
808
  return Math.abs(psStart - started) <= 12e4;
805
809
  } catch {
@@ -920,5 +924,5 @@ function describeTool(name, inp) {
920
924
  }
921
925
 
922
926
  //#endregion
923
- export { isFlagToken as $, setWorkerLabel as A, loadStatusConfig as B, nowStamp as C, pidAlive as D, parseSleepSecs as E, ForgeError as F, writeSectionToForge as G, setClaim as H, PROJECT_CONFIG_REL as I, loadPreamble as J, PREAMBLE_MAX_BYTES as K, formatStale as L, spawnTimeOf as M, statusTmpPath as N, reconcileStatuses as O, waitForTerminalStatus as P, appendSystemPromptArgs as Q, listClaims as R, newWorkerId as S, ownsPidCached as T, upsertSection as U, parseStatusConfig as V, writeContinueToForge as W, preambleLine as X, preambleBlock as Y, projectRoot as Z, isTerminal as _, UNLABELED as a, loadStatusesCached as b, contextFooter as c, describeTool as d, longInlinePromptHint as et, elapsedOf as f, isLive as g, isChatPane as h, TERMINAL_RECHECK_MS as i, setWorkerNote as j, saveStatus as k, contextLabel as l, fmtTokens as m, OWNS_TTL_MS as n, shortText as nt, ageOf as o, fmtContextK as p, PREAMBLE_REL as q, SLEEP_FLOOR_SECS as r, stripPromptValues as rt, alive as s, LOST_GRACE_MS as t, parseRunnerArgs as tt, contextPercent as u, loadStatus as v, ownsPid as w, markStartFailed as x, loadStatuses as y, listStale as z };
924
- //# sourceMappingURL=status-COtzewKV.mjs.map
927
+ export { appendSystemPromptArgs as $, selfProcStart as A, listStale as B, nowStamp as C, pidAlive as D, parseSleepSecs as E, waitForTerminalStatus as F, writeContinueToForge as G, parseStatusConfig as H, ForgeError as I, PREAMBLE_REL as J, writeSectionToForge as K, PROJECT_CONFIG_REL as L, setWorkerNote as M, spawnTimeOf as N, reconcileStatuses as O, statusTmpPath as P, projectRoot as Q, formatStale as R, newWorkerId as S, ownsPidCached as T, setClaim as U, loadStatusConfig as V, upsertSection as W, preambleBlock as X, loadPreamble as Y, preambleLine as Z, isTerminal as _, UNLABELED as a, loadStatusesCached as b, contextFooter as c, describeTool as d, isFlagToken as et, elapsedOf as f, isLive as g, isChatPane as h, TERMINAL_RECHECK_MS as i, stripPromptValues as it, setWorkerLabel as j, saveStatus as k, contextLabel as l, fmtTokens as m, OWNS_TTL_MS as n, parseRunnerArgs as nt, ageOf as o, fmtContextK as p, PREAMBLE_MAX_BYTES as q, SLEEP_FLOOR_SECS as r, shortText as rt, alive as s, LOST_GRACE_MS as t, longInlinePromptHint as tt, contextPercent as u, loadStatus as v, ownsPid as w, markStartFailed as x, loadStatuses as y, listClaims as z };
928
+ //# sourceMappingURL=status-Cecau8Ps.mjs.map
@@ -0,0 +1,6 @@
1
+ import "./config-Bz8pAU5Q.mjs";
2
+ import "./config-SlZ-Z52i.mjs";
3
+ import "./paths-CypxFTfn.mjs";
4
+ import { A as selfProcStart, C as nowStamp, D as pidAlive, E as parseSleepSecs, F as waitForTerminalStatus, M as setWorkerNote, N as spawnTimeOf, O as reconcileStatuses, P as statusTmpPath, S as newWorkerId, T as ownsPidCached, _ as isTerminal, a as UNLABELED, b as loadStatusesCached, c as contextFooter, d as describeTool, f as elapsedOf, g as isLive, h as isChatPane, i as TERMINAL_RECHECK_MS, j as setWorkerLabel, k as saveStatus, l as contextLabel, m as fmtTokens, n as OWNS_TTL_MS, o as ageOf, p as fmtContextK, r as SLEEP_FLOOR_SECS, s as alive, t as LOST_GRACE_MS, u as contextPercent, v as loadStatus, w as ownsPid, x as markStartFailed, y as loadStatuses } from "./status-Cecau8Ps.mjs";
5
+
6
+ export { loadStatus };
@@ -1,5 +1,5 @@
1
1
  import { t as maxOf } from "./min-max-DrSRUaWQ.mjs";
2
- import { n as bashExitCode, r as isExpectedWaitExit } from "./wait-ChpHKJZV.mjs";
2
+ import { n as bashExitCode, r as isExpectedWaitExit } from "./wait-C5iWILj_.mjs";
3
3
  import { appendFileSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, readSync, statSync } from "node:fs";
4
4
  import { join } from "node:path";
5
5
 
@@ -589,4 +589,4 @@ function errorsTable(groups) {
589
589
 
590
590
  //#endregion
591
591
  export { toolErrorSigTag as C, toolErrorsPath as E, summarizeToolInput as S, toolErrorText as T, lastCommand as _, SAME_WORKER_WINDOW_MS as a, readToolErrors as b, classifyToolError as c, detectToolErrors as d, errorsTable as f, isBenignBash as g, harnessToolErrorTexts as h, SAME_WORKER_MIN as i, clipRaw as l, groupToolErrors as m, CROSS_WORKER_WINDOW_MS as n, TOOL_ERRORS_FILE as o, grantedToolNames as p, RESEND_MS as r, benignNote as s, CROSS_WORKER_MIN as t, detectRunningWorkerErrors as u, normalizeError as v, toolErrorSummary as w, recordToolError as x, parseSince as y };
592
- //# sourceMappingURL=tool-errors-DXJ70-sr.mjs.map
592
+ //# sourceMappingURL=tool-errors-BFw1gv-z.mjs.map
@@ -1,8 +1,8 @@
1
- import "./config-CST2uq1v.mjs";
2
- import "./config-DYbyEe4-.mjs";
3
- import "./paths-DS5VQKoR.mjs";
4
- import "./status-COtzewKV.mjs";
5
- import { C as toolErrorSigTag, E as toolErrorsPath, S as summarizeToolInput, T as toolErrorText, _ as lastCommand, a as SAME_WORKER_WINDOW_MS, b as readToolErrors, c as classifyToolError, d as detectToolErrors, f as errorsTable, g as isBenignBash, h as harnessToolErrorTexts, i as SAME_WORKER_MIN, l as clipRaw, m as groupToolErrors, n as CROSS_WORKER_WINDOW_MS, o as TOOL_ERRORS_FILE, p as grantedToolNames, r as RESEND_MS, s as benignNote, t as CROSS_WORKER_MIN, u as detectRunningWorkerErrors, v as normalizeError, w as toolErrorSummary, x as recordToolError, y as parseSince } from "./tool-errors-DXJ70-sr.mjs";
6
- import "./wait-ChpHKJZV.mjs";
1
+ import "./config-Bz8pAU5Q.mjs";
2
+ import "./config-SlZ-Z52i.mjs";
3
+ import "./paths-CypxFTfn.mjs";
4
+ import "./status-Cecau8Ps.mjs";
5
+ import { C as toolErrorSigTag, E as toolErrorsPath, S as summarizeToolInput, T as toolErrorText, _ as lastCommand, a as SAME_WORKER_WINDOW_MS, b as readToolErrors, c as classifyToolError, d as detectToolErrors, f as errorsTable, g as isBenignBash, h as harnessToolErrorTexts, i as SAME_WORKER_MIN, l as clipRaw, m as groupToolErrors, n as CROSS_WORKER_WINDOW_MS, o as TOOL_ERRORS_FILE, p as grantedToolNames, r as RESEND_MS, s as benignNote, t as CROSS_WORKER_MIN, u as detectRunningWorkerErrors, v as normalizeError, w as toolErrorSummary, x as recordToolError, y as parseSince } from "./tool-errors-BFw1gv-z.mjs";
6
+ import "./wait-C5iWILj_.mjs";
7
7
 
8
8
  export { errorsTable, groupToolErrors, parseSince, readToolErrors };
@@ -0,0 +1,22 @@
1
+ import "./config-Bz8pAU5Q.mjs";
2
+ import "./config-SlZ-Z52i.mjs";
3
+ import "./paths-CypxFTfn.mjs";
4
+ import "./worktree-O_kU6Q3y.mjs";
5
+ import "./status-Cecau8Ps.mjs";
6
+ import "./pool-9EsbKD-U.mjs";
7
+ import "./scope-BTWstJ1B.mjs";
8
+ import "./tool-errors-BFw1gv-z.mjs";
9
+ import "./wait-C5iWILj_.mjs";
10
+ import "./local-tiers-CqwGUcEn.mjs";
11
+ import "./caller-identity-C6Nc96iM.mjs";
12
+ import "./capacity-B2PgKAg4.mjs";
13
+ import "./local-candidate-DFd4pp-w.mjs";
14
+ import "./controls-rIItFeIJ.mjs";
15
+ import "./endreason-C2-hYK0_.mjs";
16
+ import "./render-jPpMrudf.mjs";
17
+ import "./operator-Br6GeswF.mjs";
18
+ import "./kill-tree-DPiMscaY.mjs";
19
+ import "./pane-audit-DLYy9-4g.mjs";
20
+ import { a as followTailOutput, c as inboxCounts, d as psOutput, f as replayOutput, g as workerEnded, h as strayWorkerProcesses, i as backfillLines, l as initialFollowState, m as statusLineOutput, n as FOLLOW_TAIL_ENTRIES, o as followWorkers, p as resumeArgv, r as applyEvent, s as gutterBody, t as BACKFILL_EVENTS, u as makeOperatorInput } from "./viewer-DvBg6N22.mjs";
21
+
22
+ export { applyEvent, initialFollowState };
@@ -1,17 +1,17 @@
1
- import { Et as appendLedger } from "./config-CST2uq1v.mjs";
2
- import { i as ledgerPath, r as eventsPath } from "./paths-DS5VQKoR.mjs";
3
- import { T as worktreesStats, l as formatWorktreesStats } from "./worktree-BY--Rgmy.mjs";
4
- import { O as reconcileStatuses, _ as isTerminal, g as isLive, h as isChatPane, v as loadStatus, w as ownsPid, y as loadStatuses } from "./status-COtzewKV.mjs";
5
- import { a as ownerSessionName, f as workerInScope, n as currentTabKey, o as resolveSession } from "./scope-D8HK6vU7.mjs";
6
- import { _ as lastCommand } from "./tool-errors-DXJ70-sr.mjs";
7
- import { M as waitingLine, O as parseWaitOn, i as isWaitPollCommand } from "./wait-ChpHKJZV.mjs";
8
- import { a as buildsDir, l as listBuildsSync, p as renderBuildQueue, v as poolSlots } from "./caller-identity-Bim8JT-D.mjs";
1
+ import { Et as appendLedger } from "./config-Bz8pAU5Q.mjs";
2
+ import { i as ledgerPath, r as eventsPath } from "./paths-CypxFTfn.mjs";
3
+ import { T as worktreesStats, l as formatWorktreesStats } from "./worktree-O_kU6Q3y.mjs";
4
+ import { O as reconcileStatuses, _ as isTerminal, g as isLive, h as isChatPane, v as loadStatus, w as ownsPid, y as loadStatuses } from "./status-Cecau8Ps.mjs";
5
+ import { a as ownerSessionName, f as workerInScope, n as currentTabKey, o as resolveSession } from "./scope-BTWstJ1B.mjs";
6
+ import { _ as lastCommand } from "./tool-errors-BFw1gv-z.mjs";
7
+ import { M as waitingLine, O as parseWaitOn, i as isWaitPollCommand } from "./wait-C5iWILj_.mjs";
8
+ import { a as buildsDir, l as listBuildsSync, p as renderBuildQueue, v as poolSlots } from "./caller-identity-C6Nc96iM.mjs";
9
9
  import { l as schedLine, o as readSchedFile } from "./scheduler-CtUyWJ3O.mjs";
10
- import { Bt as chatTickerRow, Ft as chatEnter, Ht as parseChatLine, It as chatInsertLine, K as renderPlanLines, Lt as chatLeave, Nt as CHAT_HELP, Pt as chatBlankRow, Rt as chatPromptRow, Ut as wrapText, V as loadPlanStatuses, Vt as holdAutoExit, _t as paneTitle, i as localIdleLine, n as markControlsHeld, qt as readInbox, s as readLocalIdle, t as clickrControlsArgv, tt as closeOwnPane, vt as writePaneTitle, yt as psTable, zt as chatScrollRegion } from "./controls-OiVVbe-f.mjs";
11
- import { a as endLabel } from "./endreason-BqyyU7BH.mjs";
12
- import { C as denialLines, _ as renderTable, b as tickerTool, c as headerLine, f as paneStatusRow, g as renderStatusLine, h as renderEvent, i as dayOf, l as intentOf, r as contextMeter, s as gutterFor, t as blankBetween, u as makeColor, y as tickerText } from "./render-Cz3BWIBO.mjs";
13
- import { r as sayToWorker } from "./operator-DrwWItVt.mjs";
14
- import { a as readAudit, d as loadPaneRunStatuses, p as renderPaneRunLines } from "./pane-audit-wv9UkyCe.mjs";
10
+ import { At as CHAT_HELP, Bt as wrapText, Ft as chatPromptRow, It as chatScrollRegion, K as renderPlanLines, Lt as chatTickerRow, Mt as chatEnter, Nt as chatInsertLine, Pt as chatLeave, Rt as holdAutoExit, V as loadPlanStatuses, Wt as readInbox, _t as paneTitle, i as localIdleLine, jt as chatBlankRow, n as markControlsHeld, s as readLocalIdle, t as clickrControlsArgv, tt as closeOwnPane, vt as writePaneTitle, zt as parseChatLine } from "./controls-rIItFeIJ.mjs";
11
+ import { a as endLabel } from "./endreason-C2-hYK0_.mjs";
12
+ import { C as denialLines, F as scanLine, _ as renderTable, b as tickerTool, c as headerLine, f as paneStatusRow, g as renderStatusLine, h as renderEvent, i as dayOf, l as intentOf, q as psTable, r as contextMeter, s as gutterFor, t as blankBetween, u as makeColor, y as tickerText } from "./render-jPpMrudf.mjs";
13
+ import { r as sayToWorker } from "./operator-Br6GeswF.mjs";
14
+ import { a as readAudit, d as loadPaneRunStatuses, p as renderPaneRunLines } from "./pane-audit-DLYy9-4g.mjs";
15
15
  import { closeSync, existsSync, openSync, readFileSync, readSync } from "node:fs";
16
16
  import { spawn } from "node:child_process";
17
17
  import { createInterface } from "node:readline";
@@ -235,6 +235,8 @@ function replayOutput(logDir, wid, color = process.stdout.isTTY === true, tailLi
235
235
  };
236
236
  const wrapWidth = typeof process.stdout.columns === "number" ? process.stdout.columns : FALLBACK_COLUMNS;
237
237
  const out = [headerLine(c, st), ...denialLines(st)];
238
+ const scan = scanLine(st.findings);
239
+ if (scan) out.push(c(st.findings?.block ? "red" : "yellow", ` ${scan}`));
238
240
  const raw = readFileSync(path, "utf8");
239
241
  const lines = tailLines !== void 0 ? raw.trimEnd().split("\n").slice(-tailLines) : raw.split("\n");
240
242
  const handoffs = readInbox(logDir, wid).map((h) => ({
@@ -909,4 +911,4 @@ function statusLineOutput(logDir, term, _cwd, claudeSession = "", now = /* @__PU
909
911
 
910
912
  //#endregion
911
913
  export { followTailOutput as a, inboxCounts as c, psOutput as d, replayOutput as f, workerEnded as g, strayWorkerProcesses as h, backfillLines as i, initialFollowState as l, statusLineOutput as m, FOLLOW_TAIL_ENTRIES as n, followWorkers as o, resumeArgv as p, applyEvent as r, gutterBody as s, BACKFILL_EVENTS as t, makeOperatorInput as u };
912
- //# sourceMappingURL=viewer-BgGRqXfD.mjs.map
914
+ //# sourceMappingURL=viewer-DvBg6N22.mjs.map
@@ -1,5 +1,5 @@
1
- import { r as eventsPath } from "./paths-DS5VQKoR.mjs";
2
- import { D as pidAlive, O as reconcileStatuses, k as saveStatus, nt as shortText, v as loadStatus, y as loadStatuses } from "./status-COtzewKV.mjs";
1
+ import { r as eventsPath } from "./paths-CypxFTfn.mjs";
2
+ import { D as pidAlive, O as reconcileStatuses, k as saveStatus, rt as shortText, v as loadStatus, y as loadStatuses } from "./status-Cecau8Ps.mjs";
3
3
  import { existsSync, readFileSync, statSync } from "node:fs";
4
4
  import { isAbsolute, relative, resolve } from "node:path";
5
5
  import { execFileSync } from "node:child_process";
@@ -1274,4 +1274,4 @@ async function runWait(logDir, ids, o, out, errOut) {
1274
1274
 
1275
1275
  //#endregion
1276
1276
  export { waitOnCallLine as A, statusMarker as C, fmtElapsed as D, detachedLine as E, waitingLine as M, parseWaitOn as O, realDeps as S, waitOn as T, workerContractPrompt as _, runWait as a, killProcessTree as b, checkProof as c, parseWorkerReport as d, promptTrailer as f, verifyReportChanges as g, verifyFailNote as h, isWaitPollCommand as i, waitOnResultLine as j, realWaitDeps as k, newUntracked as l, untrackedPaths as m, bashExitCode as n, AG2_REASK_TEXT as o, renderReport as p, isExpectedWaitExit as r, OPERATOR_MARK as s, WAIT_EXIT_STILL_RUNNING as t, noteTokenSentence as u, repairAndValidateAg2 as v, statusQueue as w, processTree as x, validateAg2 as y };
1277
- //# sourceMappingURL=wait-ChpHKJZV.mjs.map
1277
+ //# sourceMappingURL=wait-C5iWILj_.mjs.map
@@ -0,0 +1,42 @@
1
+ import "./utils-J2b9y8PC.mjs";
2
+ import "./config-Bz8pAU5Q.mjs";
3
+ import "./config-SlZ-Z52i.mjs";
4
+ import "./paths-CypxFTfn.mjs";
5
+ import "./worktree-O_kU6Q3y.mjs";
6
+ import "./status-Cecau8Ps.mjs";
7
+ import "./pool-9EsbKD-U.mjs";
8
+ import "./helpers-CRuBUas3.mjs";
9
+ import "./scope-BTWstJ1B.mjs";
10
+ import "./routing-aJKMIagQ.mjs";
11
+ import "./tool-errors-BFw1gv-z.mjs";
12
+ import "./wait-C5iWILj_.mjs";
13
+ import "./local-tiers-CqwGUcEn.mjs";
14
+ import "./caller-identity-C6Nc96iM.mjs";
15
+ import "./capacity-B2PgKAg4.mjs";
16
+ import "./local-instances-DhF4_sV2.mjs";
17
+ import "./local-candidate-DFd4pp-w.mjs";
18
+ import "./factory-CYwa0jYj.mjs";
19
+ import "./postgres-BL5oBBgY.mjs";
20
+ import "./embedding-gate-iq0oQEkF.mjs";
21
+ import "./embeddings-BVq3esBF.mjs";
22
+ import "./router-D2476pOp.mjs";
23
+ import "./launch-Bn2Zf90h.mjs";
24
+ import "./health-D0mUAVdw.mjs";
25
+ import "./run-DE9Q0ldN.mjs";
26
+ import "./controls-rIItFeIJ.mjs";
27
+ import "./endreason-C2-hYK0_.mjs";
28
+ import "./render-jPpMrudf.mjs";
29
+ import "./operator-Br6GeswF.mjs";
30
+ import "./kill-tree-DPiMscaY.mjs";
31
+ import "./pool-cli-Db0uDwB9.mjs";
32
+ import "./pane-audit-DLYy9-4g.mjs";
33
+ import "./providers-BNV7CzC-.mjs";
34
+ import { A as workerMcpCommand, C as workerBenchCommand, D as workerFallbackCommand, E as workerControlsCommand, F as workerProvidersCommand, I as workerProxyCommand, L as workerRolesCommand, M as workerOnCommand, N as workerPolicyCommand, O as workerInstallCommand, P as workerPoolCommand, R as workerRouteCommand, S as stopInstance, T as workerConfigCommand, _ as portOpen, a as collectEnv, b as startTier, c as currentInstances, d as isUp, f as killInstance, g as portListeners, h as parseCostTier, i as cliInflight, j as workerOffCommand, k as workerLocalCommand, l as fail, m as listServers, n as WORKER_CONFIG_COMMANDS, o as collectTags, p as launchDetached, r as buildClassTarget, s as controlsArgv, t as PROVIDER_EDIT_COMMANDS, u as healthOk, v as serverLine, w as workerClassesCommand, x as stopAll, y as startInstance } from "./worker-config-DkONNk_H.mjs";
35
+ import "./main-config-ops-rda08BCD.mjs";
36
+ import "./cockpit-actions-D1OPP6Es.mjs";
37
+ import "./ipc-client-CmagIFLh.mjs";
38
+ import "./embed-pass-CN1D8MXl.mjs";
39
+ import "./session-usage-CCmPFFa6.mjs";
40
+ import "./fallback-CwPSCrX8.mjs";
41
+
42
+ export { currentInstances, startInstance, startTier, stopAll, stopInstance };
@@ -1,36 +1,36 @@
1
1
  import { _ as warn, c as ok, i as err, n as dim } from "./utils-J2b9y8PC.mjs";
2
- import { g as paiHomePath, h as paiHomeDir, l as claudeHomeDir, t as aibrokerHomeDir, u as claudeProjectsDir } from "./runtime-paths-WsO9sJFc.mjs";
3
- import { B as isLoopbackUrl, Et as appendLedger, J as migrateWorkersToYaml, K as initWorkersYaml, M as readWorkersSection, Ot as parseLedger, T as parseProvider, V as loopbackUrl, X as parseBuiltinAnthropic, Y as needsWorkersYamlRelocation, Z as parseWorkersYamlDocument, c as WorkersConfigError, dt as findTier, et as relocateWorkersYaml, m as isLocalProvider, mt as parseEntry, nt as workersYamlLegacyNotice, o as PROVIDER_TAGS, ot as yamlProviderToRaw, p as getProviderOrNative, q as inlineWorkersYamlKeys, rt as workersYamlPath, t as ANTHROPIC_NATIVE, y as nativeAnthropicProvider } from "./config-CST2uq1v.mjs";
4
- import { O as readJsonStrict, f as readMainConfigRaw, k as writeJsonAtomic, m as deepMergeConfig, n as CONFIG_FILE, o as expandHome, u as paiConfigFilePath, v as shippedDefaultsDir, w as readDualFormatConfigRaw, y as shippedMainDefaults } from "./config-DYbyEe4-.mjs";
5
- import { i as ledgerPath, t as WORKER_ID_RE, u as workersLogDir } from "./paths-DS5VQKoR.mjs";
6
- import { E as worktreesStatsCached, l as formatWorktreesStats } from "./worktree-BY--Rgmy.mjs";
7
- import { T as ownsPidCached, b as loadStatusesCached, g as isLive, v as loadStatus } from "./status-COtzewKV.mjs";
8
- import { C as describeMcp, _ as readPoolMetrics, f as poolMetricsPath, h as poolSettings, i as bundleBuildStamp, l as poolHostProbe, o as poolCarry, u as poolHostStale, v as readPoolState, x as warmOrCold } from "./pool-BZ94nFuq.mjs";
9
- import { a as ownerSessionName } from "./scope-D8HK6vU7.mjs";
10
- import { $n as usageLogFile, $t as clearPolicy, E as budgetCache, Ft as clearSessionRoute, Gt as servingChip, Ht as routeChoices, I as buildSpeed, Jn as isTimeOrdered, Jt as setRoute, L as percentile, Mt as loopbackRefusal, Pt as applyPolicyToRoutes, Qn as splitBySessionKind, Qt as POLICY_MODES, Rt as flowText, Tt as duplicateModelIds, Ut as routeRows, Vt as resolveSessionArg, W as currentInventory, Wt as routeText, Yn as markTimeOrdered, Yt as setSessionRoute, _n as currentLocalStatus, an as readPolicy, at as readInventoryInput, bn as pickLocal, dn as getProfile, in as parseDuration, it as readInventory, jt as isTailnetOrLocalName, nn as findLocal, on as routeRun, pn as readProfiles, rn as onBattery, rt as processTreeRssMb, sn as writePolicy, xn as probeLoopback, yn as localTierOrder } from "./routing-BlD_tKjW.mjs";
11
- import { C as stopLines, T as tierButtons, _ as readLocalConfig, a as LocalTierError, c as fetchServedModels, f as listensOnPort, g as planStart, h as parseServers, l as fmtRss, m as parseLocalConfig, u as healthUrl, v as resolveModelPath, x as stopCommandFor } from "./local-tiers-BtdEEe5n.mjs";
12
- import { _ as buildSlots, a as buildsDir, g as waitReason, l as listBuildsSync, m as ticketKind, n as breakStaleMutex, x as testSlots } from "./caller-identity-Bim8JT-D.mjs";
2
+ import { _ as paiHomePath, g as paiHomeDir, l as claudeHomeDir, t as aibrokerHomeDir, u as claudeProjectsDir } from "./runtime-paths-twfV23YL.mjs";
3
+ import { B as isLoopbackUrl, Et as appendLedger, J as migrateWorkersToYaml, K as initWorkersYaml, M as readWorkersSection, Ot as parseLedger, T as parseProvider, V as loopbackUrl, X as parseBuiltinAnthropic, Y as needsWorkersYamlRelocation, Z as parseWorkersYamlDocument, c as WorkersConfigError, dt as findTier, et as relocateWorkersYaml, m as isLocalProvider, mt as parseEntry, nt as workersYamlLegacyNotice, o as PROVIDER_TAGS, ot as yamlProviderToRaw, p as getProviderOrNative, q as inlineWorkersYamlKeys, rt as workersYamlPath, t as ANTHROPIC_NATIVE, y as nativeAnthropicProvider } from "./config-Bz8pAU5Q.mjs";
4
+ import { O as readJsonStrict, f as readMainConfigRaw, k as writeJsonAtomic, m as deepMergeConfig, n as CONFIG_FILE, o as expandHome, u as paiConfigFilePath, v as shippedDefaultsDir, w as readDualFormatConfigRaw, y as shippedMainDefaults } from "./config-SlZ-Z52i.mjs";
5
+ import { i as ledgerPath, t as WORKER_ID_RE, u as workersLogDir } from "./paths-CypxFTfn.mjs";
6
+ import { E as worktreesStatsCached, l as formatWorktreesStats } from "./worktree-O_kU6Q3y.mjs";
7
+ import { T as ownsPidCached, b as loadStatusesCached, g as isLive, v as loadStatus } from "./status-Cecau8Ps.mjs";
8
+ import { C as describeMcp, _ as readPoolMetrics, f as poolMetricsPath, h as poolSettings, i as bundleBuildStamp, l as poolHostProbe, o as poolCarry, u as poolHostStale, v as readPoolState, x as warmOrCold } from "./pool-9EsbKD-U.mjs";
9
+ import { a as ownerSessionName } from "./scope-BTWstJ1B.mjs";
10
+ import { $n as usageLogFile, $t as clearPolicy, E as budgetCache, Ft as clearSessionRoute, Gt as servingChip, Ht as routeChoices, I as buildSpeed, Jn as isTimeOrdered, Jt as setRoute, L as percentile, Mt as loopbackRefusal, Pt as applyPolicyToRoutes, Qn as splitBySessionKind, Qt as POLICY_MODES, Rt as flowText, Tt as duplicateModelIds, Ut as routeRows, Vt as resolveSessionArg, W as currentInventory, Wt as routeText, Yn as markTimeOrdered, Yt as setSessionRoute, _n as currentLocalStatus, an as readPolicy, at as readInventoryInput, bn as pickLocal, dn as getProfile, in as parseDuration, it as readInventory, jt as isTailnetOrLocalName, nn as findLocal, on as routeRun, pn as readProfiles, rn as onBattery, rt as processTreeRssMb, sn as writePolicy, xn as probeLoopback, yn as localTierOrder } from "./routing-aJKMIagQ.mjs";
11
+ import { C as stopLines, T as tierButtons, _ as readLocalConfig, a as LocalTierError, c as fetchServedModels, f as listensOnPort, g as planStart, h as parseServers, l as fmtRss, m as parseLocalConfig, u as healthUrl, v as resolveModelPath, x as stopCommandFor } from "./local-tiers-CqwGUcEn.mjs";
12
+ import { _ as buildSlots, a as buildsDir, g as waitReason, l as listBuildsSync, m as ticketKind, n as breakStaleMutex, x as testSlots } from "./caller-identity-C6Nc96iM.mjs";
13
13
  import { f as sharedScheduler, o as readSchedFile, u as schedPlain } from "./scheduler-CtUyWJ3O.mjs";
14
- import { l as reorderQueue, o as providerCap, s as queueRows, u as reorderQueueTo } from "./capacity-CsZMkVyg.mjs";
15
- import { a as instancesFromProcesses, d as reconcileInstances, i as instanceNumber, l as readInstances, p as writeInstances, r as instanceEngineKey, u as readLiveInstances } from "./local-instances-bdCNNSsL.mjs";
16
- import { i as localStatusLine, s as readLocalStatus } from "./local-candidate-Cp_bw4kK.mjs";
14
+ import { m as reorderQueueTo, o as providerCap, p as reorderQueue, s as queueRows } from "./capacity-B2PgKAg4.mjs";
15
+ import { a as instancesFromProcesses, d as reconcileInstances, i as instanceNumber, l as readInstances, p as writeInstances, r as instanceEngineKey, u as readLiveInstances } from "./local-instances-DhF4_sV2.mjs";
16
+ import { i as localStatusLine, s as readLocalStatus } from "./local-candidate-DFd4pp-w.mjs";
17
17
  import { t as LOCAL_PROBE_TIMEOUT_MS } from "./timeouts-1MLooEBB.mjs";
18
18
  import { n as OPT, t as CliError } from "./define-CjJsmq-6.mjs";
19
- import { c as resolveFromModule } from "./postgres-C-T5OWer.mjs";
20
- import { c as ensureProxyRunning, l as proxyPort, u as stopProxy } from "./launch-DpQPZGsT.mjs";
21
- import { a as colorEnabled, f as renderTable, n as readBudget, o as makeStyle } from "./health-kufVIf6i.mjs";
22
- import { H as testProvider, o as sessionWorkersLine } from "./run-AZVwceiU.mjs";
23
- import { U as planRows, V as loadPlanStatuses, i as localIdleLine, n as markControlsHeld, s as readLocalIdle, t as clickrControlsArgv, yt as psTable } from "./controls-OiVVbe-f.mjs";
24
- import { w as parseDenialText } from "./render-Cz3BWIBO.mjs";
25
- import { n as diskBundleMtime, r as ensurePoolHost } from "./pool-cli-B1eKySeN.mjs";
26
- import { a as readAudit, d as loadPaneRunStatuses, f as paneRunRows } from "./pane-audit-wv9UkyCe.mjs";
27
- import { i as fallbackStatusText, n as fallbackOn, r as fallbackStatus, t as fallbackOff } from "./fallback-Bj2cyVk_.mjs";
28
- import { b as useProvider, f as setClass, g as setWorkersEnabled, l as removeProvider, m as setProviderEnabled, p as setProviderCap, r as classTargetText, s as describeProviders, t as addProvider, v as unsetClass, y as updateProvider } from "./providers-Dzx5GAUI.mjs";
29
- import { A as cockpitMemoryPayload, B as cockpitLayout, N as liveMemoryDeps, O as embeddingRuntimeName, P as memoryJobProgress, S as runtimeJobProgress, V as cockpitProbeSettings, c as defaultDeps, g as readLabels, h as readCockpitJob, k as readRuntimeCommands, t as COCKPIT_ACTION_EVENT, v as runCockpitAction, x as runningRuntimeJobs } from "./cockpit-actions-BTA1njMO.mjs";
30
- import { n as isRealUserPrompt, s as workersConfigShadows, t as extractUserPromptText } from "./session-usage-oycSdiD3.mjs";
31
- import { appendFileSync, chmodSync, closeSync, copyFileSync, createReadStream, existsSync, fstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, realpathSync, renameSync, rmSync, rmdirSync, statSync, unlinkSync, writeFileSync } from "node:fs";
19
+ import { c as resolveFromModule } from "./postgres-BL5oBBgY.mjs";
20
+ import { c as ensureProxyRunning, l as proxyPort, u as stopProxy } from "./launch-Bn2Zf90h.mjs";
21
+ import { a as colorEnabled, f as renderTable, n as readBudget, o as makeStyle } from "./health-D0mUAVdw.mjs";
22
+ import { H as testProvider, o as sessionWorkersLine } from "./run-DE9Q0ldN.mjs";
23
+ import { U as planRows, V as loadPlanStatuses, i as localIdleLine, n as markControlsHeld, s as readLocalIdle, t as clickrControlsArgv } from "./controls-rIItFeIJ.mjs";
24
+ import { V as maskSecrets, q as psTable, w as parseDenialText } from "./render-jPpMrudf.mjs";
25
+ import { n as diskBundleMtime, r as ensurePoolHost } from "./pool-cli-Db0uDwB9.mjs";
26
+ import { a as readAudit, d as loadPaneRunStatuses, f as paneRunRows } from "./pane-audit-DLYy9-4g.mjs";
27
+ import { b as useProvider, f as setClass, g as setWorkersEnabled, l as removeProvider, m as setProviderEnabled, p as setProviderCap, r as classTargetText, s as describeProviders, t as addProvider, v as unsetClass, y as updateProvider } from "./providers-BNV7CzC-.mjs";
28
+ import { A as cockpitMemoryPayload, B as cockpitLayout, N as liveMemoryDeps, O as embeddingRuntimeName, P as memoryJobProgress, S as runtimeJobProgress, V as cockpitProbeSettings, c as defaultDeps, g as readLabels, h as readCockpitJob, k as readRuntimeCommands, t as COCKPIT_ACTION_EVENT, v as runCockpitAction, x as runningRuntimeJobs } from "./cockpit-actions-D1OPP6Es.mjs";
29
+ import { n as isRealUserPrompt, s as workersConfigShadows, t as extractUserPromptText } from "./session-usage-CCmPFFa6.mjs";
30
+ import { i as fallbackStatusText, n as fallbackOn, r as fallbackStatus, t as fallbackOff } from "./fallback-CwPSCrX8.mjs";
31
+ import { appendFileSync, chmodSync, closeSync, copyFileSync, createReadStream, existsSync, fstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, renameSync, rmSync, rmdirSync, statSync, unlinkSync, writeFileSync } from "node:fs";
32
32
  import { createHash } from "node:crypto";
33
- import { basename, dirname, isAbsolute, join, normalize, relative, resolve } from "node:path";
33
+ import { basename, dirname, join, resolve } from "node:path";
34
34
  import chalk from "chalk";
35
35
  import { homedir, loadavg } from "node:os";
36
36
  import { execFile, execFileSync, spawn } from "node:child_process";
@@ -946,7 +946,7 @@ const shellHead = (L, n, q, hex) => String.raw(_templateObject$1 || (_templateOb
946
946
  const shellBody = (L, n, q, hex) => String.raw`</style><style>
947
947
  #legend>.lgline{gap:2px 8px;font-size:11px}#legend>.lgline span{white-space:nowrap}
948
948
  </style></head><body>
949
- <header><div class="hl"><h1>PAI<span class="hc"> Cockpit</span></h1><span id="ver" title="PAI __COCKPIT_VERSION__ · build __COCKPIT_BUILD__"><span class="vm">v__COCKPIT_VERSION_SHORT__</span><span class="vp">__COCKPIT_VERSION_PATCH__</span></span></div>
949
+ <header><div class="hl"><h1>__COCKPIT_HOMEPAGE__</h1><span id="ver" title="PAI __COCKPIT_VERSION__ · build __COCKPIT_BUILD__"><span class="vm">v__COCKPIT_VERSION_SHORT__</span><span class="vp">__COCKPIT_VERSION_PATCH__</span></span></div>
950
950
  <div class="tabs" id="tabs"><button data-w="1h">1 hour</button><button data-w="24h">Today</button><button data-w="7d">Week</button></div>
951
951
  <div class="hr"><span id="stamp">loading...</span><span id="ask" hidden><span class="aq"></span> <button id="askyes" type="button" aria-label="confirm">✓</button><button id="askno" type="button" aria-label="cancel">✕</button></span><button id="reset" type="button" title="reset to the default layout" aria-label="reset to the default layout">⟲</button><button id="savedef" type="button" title="save this layout as the default for all devices" aria-label="save layout as default">☆</button><button id="lock" type="button" title="lock layout" aria-label="layout unlocked" aria-pressed="false"><svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="7" width="10" height="7" rx="1.5"/><path d="M5 7V5a3 3 0 0 1 6 0"/></svg></button><button id="theme" type="button" title="Dark mode" aria-label="Dark mode"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path class="ic-moon" d="M21 12.8A9 9 0 1 1 11.2 3 7 7 0 0 0 21 12.8Z"/><g class="ic-sun"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></g></svg></button></div></header><a id="newer" href="#" hidden title="The router now serves a newer cockpit build than this open page; reload to get it.">newer cockpit available — reload</a><a id="newdef" href="#" hidden title="A newer default layout was saved on another device; your layout here was edited after it.">newer default available · use it</a>
952
952
  <div id="toast" role="status" hidden></div>
@@ -1263,6 +1263,7 @@ const css = (L, n, q, hex) => String.raw`:root{--bg:#f6f7f9;--card:#fff;--fg:#1d
1263
1263
  *{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:13px/1.45 -apple-system,BlinkMacSystemFont,"SF Pro Text",sans-serif}
1264
1264
  header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:8px 14px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--bg);z-index:2}
1265
1265
  h1{font-size:15px;margin:0;font-weight:600}
1266
+ h1 .home{color:inherit;text-decoration:none}h1 .home:hover,h1 .home:focus-visible{text-decoration:underline}
1266
1267
  .hl{display:flex;align-items:baseline;min-width:0}.hr{display:flex;align-items:center;justify-content:flex-end;gap:16px;min-width:0}
1267
1268
  #ver{display:flex;flex:0 100 auto;min-width:0;overflow:hidden;font-size:11px;color:var(--dim,#888);opacity:.7;margin-left:6px;white-space:nowrap;cursor:default}
1268
1269
  .tabs button{background:var(--card);color:var(--fg);border:1px solid var(--line);padding:3px 12px;cursor:pointer;font:inherit}
@@ -6574,74 +6575,6 @@ function selectorChoices(workers, endpoints) {
6574
6575
  ];
6575
6576
  }
6576
6577
 
6577
- //#endregion
6578
- //#region src/hooks/ts/lib/build-gate.ts
6579
- /** Tiny reader for the two keys of builds.yaml: flow `[a, b]` or block `- a` lists. */
6580
- function parseBuildsYaml(text) {
6581
- const res = {
6582
- doors: [],
6583
- patterns: []
6584
- };
6585
- let key = null;
6586
- const unq = (s) => s.trim().replace(/^(['"])(.*)\1$/, "$2");
6587
- for (const raw of text.split("\n")) {
6588
- const line = raw.replace(/(^|\s)#.*$/, "");
6589
- if (!line.trim()) continue;
6590
- const m = /^(doors|patterns)\s*:\s*(.*)$/.exec(line);
6591
- if (m) {
6592
- key = m[1];
6593
- const rest = m[2].trim();
6594
- if (rest.startsWith("[")) {
6595
- res[key].push(...rest.replace(/^\[|\]$/g, "").split(",").map(unq).filter(Boolean));
6596
- key = null;
6597
- }
6598
- continue;
6599
- }
6600
- const li = /^\s*-\s+(.*)$/.exec(line);
6601
- if (li && key) res[key].push(unq(li[1]));
6602
- else if (!/^\s/.test(line)) key = null;
6603
- }
6604
- return res;
6605
- }
6606
- /** The nearest `.pai/builds.yaml` at or above `cwd`. */
6607
- function loadBuildsConfig(cwd) {
6608
- let dir = resolve(cwd);
6609
- for (;;) {
6610
- const f = join(dir, ".pai", "builds.yaml");
6611
- if (existsSync(f)) try {
6612
- return {
6613
- root: dir,
6614
- ...parseBuildsYaml(readFileSync(f, "utf8"))
6615
- };
6616
- } catch {
6617
- return null;
6618
- }
6619
- const up = dirname(dir);
6620
- if (up === dir) return null;
6621
- dir = up;
6622
- }
6623
- }
6624
-
6625
- //#endregion
6626
- //#region src/hooks/ts/lib/loop-guard.ts
6627
- const LOOP_MAX_REPEATS = 4;
6628
- /** Consecutive same-template read-only Bash calls without a worktree change after which the next one is denied (env PAI_LOOP_READ_STREAK overrides). */
6629
- const LOOP_READ_STREAK = Number(process.env.PAI_LOOP_READ_STREAK) > 0 ? Number(process.env.PAI_LOOP_READ_STREAK) : 15;
6630
- const SELF = "If your part is done, commit and write your R report. If you are stuck, report the blocker in R x= (or use pai worker help if available).";
6631
- const LOOP_DENY_REASON = `loop guard: you ran this command ${LOOP_MAX_REPEATS} times with the same result and nothing changed. Stop repeating it. ${SELF}`;
6632
- /** Total polling time per command key after which a "still running" helper is treated as an ordinary repeat again. */
6633
- const WAIT_CAP_MS = 45 * 6e4;
6634
- /** Untracked files up to this size are hashed by content; larger ones by size + mtime. */
6635
- const FP_FULL_READ_BYTES = 256 * 1024;
6636
- /** Content bytes read per fingerprint across all untracked files; past it files are hashed by size + mtime. */
6637
- const FP_TOTAL_BYTES = 4 * 1024 * 1024;
6638
- const SECRET_LINE = /pass(?:word|wd)|secret|token|api[_-]?key|credential|authorization|bearer|private key|^\s*(?:export\s+)?[A-Z][A-Z0-9_]*(?:KEY|SECRET|TOKEN|PASS\w*|CRED\w*|AUTH\w*)\s*=|\b(?:sk|ghp|gho|xox[bap])[-_][A-Za-z0-9_-]{16,}|\b[A-Za-z0-9+]{40,}={0,2}(?![\w/])|\b[a-z][a-z0-9+.-]*:\/\/[^\s\/:@]+:[^\s\/@]+@|\b(?:AKIA|ASIA|AGPA|AIDA|AROA)[A-Z0-9]{16}\b|\bgh[pousr]_[A-Za-z0-9]{20,}/i;
6639
- const MASKED_LINE = "[line masked: looks like a secret]";
6640
- /** Result text with lines that look like secrets replaced by a marker. */
6641
- function maskSecrets(text) {
6642
- return text.split("\n").map((l) => SECRET_LINE.test(l) ? MASKED_LINE : l).join("\n");
6643
- }
6644
-
6645
6578
  //#endregion
6646
6579
  //#region src/router/session-detail.ts
6647
6580
  /**
@@ -8180,6 +8113,9 @@ const BUILD_PLACEHOLDER = /__COCKPIT_BUILD__/g;
8180
8113
  const VERSION_PLACEHOLDER = /__COCKPIT_VERSION__/g;
8181
8114
  const VERSION_SHORT_PLACEHOLDER = /__COCKPIT_VERSION_SHORT__/g;
8182
8115
  const VERSION_PATCH_PLACEHOLDER = /__COCKPIT_VERSION_PATCH__/g;
8116
+ const HOMEPAGE_PLACEHOLDER = /__COCKPIT_HOMEPAGE__/g;
8117
+ /** The header title markup, spelled once: the link's inner content and the no-homepage fallback. */
8118
+ const TITLE_MARKUP = "PAI<span class=\"hc\"> Cockpit</span>";
8183
8119
  let pkgVersion = null;
8184
8120
  /** The version this router runs: package.json, read once at startup (the one owner of the header's "v<version>"). */
8185
8121
  function cockpitVersion() {
@@ -8191,6 +8127,17 @@ function cockpitVersion() {
8191
8127
  }
8192
8128
  return pkgVersion;
8193
8129
  }
8130
+ /** The project homepage from package.json, read once at startup; null when absent (the header title then stays plain text).
8131
+ * The placeholder stands in for the whole h1 content, so no URL literal is in the page source. */
8132
+ let pkgHomepage;
8133
+ function cockpitHomepage() {
8134
+ if (pkgHomepage === void 0) try {
8135
+ pkgHomepage = JSON.parse(readFileSync(resolveFromModule(import.meta.url, "package.json"), "utf8")).homepage ?? null;
8136
+ } catch {
8137
+ pkgHomepage = null;
8138
+ }
8139
+ return pkgHomepage;
8140
+ }
8194
8141
  /** Where the page gets the default layout this install serves (null = compose its own). */
8195
8142
  const SAVED_AT_PLACEHOLDER = "0/*__COCKPIT_LAYOUT_SAVED_AT__*/";
8196
8143
  const LAYOUT_PLACEHOLDER = "null/*__COCKPIT_LAYOUT__*/";
@@ -8373,7 +8320,11 @@ function handleCockpit(req, res, limits, readRows = cachedRows(), sessionMap = l
8373
8320
  if (url.pathname === "/cockpit") {
8374
8321
  let html = "";
8375
8322
  try {
8376
- html = cockpitHtml().replace(BUILD_PLACEHOLDER, cockpitBuildId()).replace(VERSION_SHORT_PLACEHOLDER, cockpitVersion().split(".").slice(0, 2).join(".")).replace(VERSION_PATCH_PLACEHOLDER, cockpitVersion().split(".").slice(2).map((p) => "." + p).join("")).replace(VERSION_PLACEHOLDER, cockpitVersion()).replace(LAYOUT_PLACEHOLDER, () => JSON.stringify(readDefaultLayout()).replace(/</g, "\\u003c")).replace(SAVED_AT_PLACEHOLDER, String(defaultSavedAt()));
8323
+ html = cockpitHtml().replace(BUILD_PLACEHOLDER, cockpitBuildId()).replace(VERSION_SHORT_PLACEHOLDER, cockpitVersion().split(".").slice(0, 2).join(".")).replace(VERSION_PATCH_PLACEHOLDER, cockpitVersion().split(".").slice(2).map((p) => "." + p).join("")).replace(VERSION_PLACEHOLDER, cockpitVersion()).replace(HOMEPAGE_PLACEHOLDER, () => {
8324
+ const home = cockpitHomepage();
8325
+ if (!home) return TITLE_MARKUP;
8326
+ return `<a class="home" href="${home.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;")}" target="_blank" rel="noopener">${TITLE_MARKUP}</a>`;
8327
+ }).replace(LAYOUT_PLACEHOLDER, () => JSON.stringify(readDefaultLayout()).replace(/</g, "\\u003c")).replace(SAVED_AT_PLACEHOLDER, String(defaultSavedAt()));
8377
8328
  } catch {}
8378
8329
  if (html) send(200, "text/html; charset=utf-8", html);
8379
8330
  else {
@@ -10674,9 +10625,9 @@ async function stopInstance(cfg, target, opts = {}, deps = {}) {
10674
10625
  */
10675
10626
  async function cliInflight(cfg, deps = {}) {
10676
10627
  const [{ engineInflight }, { readSchedFile }, { instanceEngineKey }] = await Promise.all([
10677
- import("./cockpit-actions-BgsiNcUY.mjs"),
10628
+ import("./cockpit-actions-C73mJAJ8.mjs"),
10678
10629
  import("./scheduler-dmHXoRvm.mjs"),
10679
- import("./local-instances-B-c-CxzP.mjs")
10630
+ import("./local-instances-KTh8IeOT.mjs")
10680
10631
  ]);
10681
10632
  const now = deps.now ?? Date.now();
10682
10633
  const snap = readSchedFile(deps.startDir ?? logDir(), now);
@@ -11094,7 +11045,7 @@ const workerPoolCommand = {
11094
11045
  async run(ctx) {
11095
11046
  try {
11096
11047
  const action = ctx.args.ACTION;
11097
- const { poolOn, poolOff, poolStatusText } = await import("./pool-cli-BjYQDfx6.mjs");
11048
+ const { poolOn, poolOff, poolStatusText } = await import("./pool-cli-Cy5mlycP.mjs");
11098
11049
  if (action === void 0 || action === "status") return void out(await poolStatusText(logDir()));
11099
11050
  if (action === "on") return void (await poolOn(logDir())).forEach((l) => out(l));
11100
11051
  if (action === "off") return void (await poolOff(logDir())).forEach((l) => out(l));
@@ -11270,5 +11221,5 @@ const WORKER_CONFIG_COMMANDS = [
11270
11221
  ];
11271
11222
 
11272
11223
  //#endregion
11273
- export { exportDefaultLayout as $, workerMcpCommand as A, mergeSettings as B, workerBenchCommand as C, workerFallbackCommand as D, workerControlsCommand as E, workerProvidersCommand as F, cachedRows as G, canBind as H, workerProxyCommand as I, handleCockpit as J, cachedSessionMap as K, workerRolesCommand as L, workerOnCommand as M, workerPolicyCommand as N, workerInstallCommand as O, workerPoolCommand as P, warmCockpit as Q, workerRouteCommand as R, stopInstance as S, workerConfigCommand as T, sizeOnDiskGb as U, allocatePort as V, SystemMonitor as W, setEndpointHealth as X, setActionHooks as Y, setRuntimeSampler as Z, portOpen as _, collectEnv as a, withWorkerAttribution as at, startTier as b, currentInstances as c, saveRegistry as ct, isUp as d, loadBuildsConfig as et, killInstance as f, portListeners as g, parseCostTier as h, cliInflight as i, sessionDisplayName as it, workerOffCommand as j, workerLocalCommand as k, fail as l, providersCommand as lt, listServers as m, WORKER_CONFIG_COMMANDS as n, loadSessionMap as nt, collectTags as o, defaultRegistryCtx as ot, launchDetached as p, cachedWorkerWindows as q, buildClassTarget as r, loadWorkerWindows as rt, controlsArgv as s, hashText as st, PROVIDER_EDIT_COMMANDS as t, createEndpointHealth as tt, healthOk as u, serverLine as v, workerClassesCommand as w, stopAll as x, startInstance as y, installWorkers as z };
11274
- //# sourceMappingURL=worker-config-DgdT0iTB.mjs.map
11224
+ export { exportDefaultLayout as $, workerMcpCommand as A, mergeSettings as B, workerBenchCommand as C, workerFallbackCommand as D, workerControlsCommand as E, workerProvidersCommand as F, cachedRows as G, canBind as H, workerProxyCommand as I, handleCockpit as J, cachedSessionMap as K, workerRolesCommand as L, workerOnCommand as M, workerPolicyCommand as N, workerInstallCommand as O, workerPoolCommand as P, warmCockpit as Q, workerRouteCommand as R, stopInstance as S, workerConfigCommand as T, sizeOnDiskGb as U, allocatePort as V, SystemMonitor as W, setEndpointHealth as X, setActionHooks as Y, setRuntimeSampler as Z, portOpen as _, collectEnv as a, defaultRegistryCtx as at, startTier as b, currentInstances as c, providersCommand as ct, isUp as d, createEndpointHealth as et, killInstance as f, portListeners as g, parseCostTier as h, cliInflight as i, withWorkerAttribution as it, workerOffCommand as j, workerLocalCommand as k, fail as l, listServers as m, WORKER_CONFIG_COMMANDS as n, loadWorkerWindows as nt, collectTags as o, hashText as ot, launchDetached as p, cachedWorkerWindows as q, buildClassTarget as r, sessionDisplayName as rt, controlsArgv as s, saveRegistry as st, PROVIDER_EDIT_COMMANDS as t, loadSessionMap as tt, healthOk as u, serverLine as v, workerClassesCommand as w, stopAll as x, startInstance as y, installWorkers as z };
11225
+ //# sourceMappingURL=worker-config-DkONNk_H.mjs.map
@@ -1,4 +1,4 @@
1
- import { $ as readWorkersYaml, G as effectiveWorkersYamlData, H as WORKERS_YAML_FILENAME, J as migrateWorkersToYaml, K as initWorkersYaml, Q as readMergeVerify, U as buildWorkersYamlText, W as defaultWorkersYamlPath, X as parseBuiltinAnthropic, Y as needsWorkersYamlRelocation, Z as parseWorkersYamlDocument, at as writeWorkersYamlText, et as relocateWorkersYaml, it as writeWorkersYaml, nt as workersYamlLegacyNotice, ot as yamlProviderToRaw, q as inlineWorkersYamlKeys, rt as workersYamlPath, tt as starterWorkersYamlText } from "./config-CST2uq1v.mjs";
2
- import "./config-DYbyEe4-.mjs";
1
+ import { $ as readWorkersYaml, G as effectiveWorkersYamlData, H as WORKERS_YAML_FILENAME, J as migrateWorkersToYaml, K as initWorkersYaml, Q as readMergeVerify, U as buildWorkersYamlText, W as defaultWorkersYamlPath, X as parseBuiltinAnthropic, Y as needsWorkersYamlRelocation, Z as parseWorkersYamlDocument, at as writeWorkersYamlText, et as relocateWorkersYaml, it as writeWorkersYaml, nt as workersYamlLegacyNotice, ot as yamlProviderToRaw, q as inlineWorkersYamlKeys, rt as workersYamlPath, tt as starterWorkersYamlText } from "./config-Bz8pAU5Q.mjs";
2
+ import "./config-SlZ-Z52i.mjs";
3
3
 
4
4
  export { workersYamlPath };