@tekmidian/pai 1.0.4 → 1.0.5

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 (137) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/dist/{auto-route-21GdHL70.mjs → auto-route-DUYr57rs.mjs} +2 -2
  3. package/dist/auto-route-DWYK_0i0.mjs +11 -0
  4. package/dist/budget-DX-VIWGf.mjs +15 -0
  5. package/dist/{caller-identity-yLFb7CKq.mjs → caller-identity-Bim8JT-D.mjs} +3 -3
  6. package/dist/{capacity-DEveQdFV.mjs → capacity-CsZMkVyg.mjs} +7 -4
  7. package/dist/{chain-D7PFur8Y.mjs → chain-Dzz6xcKH.mjs} +5 -5
  8. package/dist/cli/index.mjs +107 -91
  9. package/dist/{cockpit-actions-OodH_vx_.mjs → cockpit-actions-BTA1njMO.mjs} +27 -23
  10. package/dist/{cockpit-actions-BfRMr2sm.mjs → cockpit-actions-BgsiNcUY.mjs} +17 -17
  11. package/dist/cockpit-memory-DIrNs4xr.mjs +20 -0
  12. package/dist/config/defaults/config.yaml +3 -0
  13. package/dist/{config-XpZWOYOG.mjs → config-CST2uq1v.mjs} +29 -4
  14. package/dist/{config-Bu1_vbY8.mjs → config-DYbyEe4-.mjs} +2 -2
  15. package/dist/{config-DtENJ6cL.mjs → config-Dv3t7xnT.mjs} +1 -1
  16. package/dist/config-h5qK3fst.mjs +4 -0
  17. package/dist/{controls-JLm6g0yP.mjs → controls-OiVVbe-f.mjs} +15 -15
  18. package/dist/daemon/index.mjs +37 -36
  19. package/dist/{daemon-nXanenDM.mjs → daemon-C1dycZ3W.mjs} +28 -26
  20. package/dist/daemon-ieo0lnpq.mjs +46 -0
  21. package/dist/daemon-mcp/index.mjs +34 -34
  22. package/dist/detect-C0ZBXqDL.mjs +10 -0
  23. package/dist/{detect-BLKsUOgG.mjs → detect-CHuxFrLy.mjs} +2 -2
  24. package/dist/{embed-pass-e64AwDCa.mjs → embed-pass-DtVF2fOV.mjs} +4 -4
  25. package/dist/{embedding-gate-Cnk4YCyX.mjs → embedding-gate-B98PK_wz.mjs} +2 -2
  26. package/dist/{embedding-gate-6rZrWRXa.mjs → embedding-gate-CTAk8STe.mjs} +2 -2
  27. package/dist/{endreason-BC-v05H_.mjs → endreason-BqyyU7BH.mjs} +4 -4
  28. package/dist/{factory-B7nv75rC.mjs → factory-BV0MQA3T.mjs} +4 -4
  29. package/dist/{factory-Bs9imVMq.mjs → factory-DeASMV7Z.mjs} +4 -4
  30. package/dist/{fallback-CBWpp2F2.mjs → fallback-Bj2cyVk_.mjs} +6 -6
  31. package/dist/{health-C4FQmkJn.mjs → health-kufVIf6i.mjs} +4 -4
  32. package/dist/{helpers-DSNK_1KP.mjs → helpers-CvbYEKoD.mjs} +2 -2
  33. package/dist/{helpers-Dz7mjTSw.mjs → helpers-WV8tdQHM.mjs} +5 -5
  34. package/dist/hooks/block-sleep-poll.mjs +1 -1
  35. package/dist/hooks/load-project-context.mjs +7 -7
  36. package/dist/hooks/local-model-hint.mjs +1 -1
  37. package/dist/hooks/route-agents-to-worker.mjs +1 -1
  38. package/dist/hooks/security-validator.mjs +2 -2
  39. package/dist/hooks/worker-edit-repair.mjs +2 -2
  40. package/dist/hooks/worker-guard.mjs +8 -8
  41. package/dist/hooks/worker-note.mjs +2 -2
  42. package/dist/hooks/worker-pool-host.mjs +106 -46
  43. package/dist/hooks/worker-proxy.mjs +1 -1
  44. package/dist/hooks/worker-status-line.mjs +16 -16
  45. package/dist/hooks/worker-supervision.mjs +1 -1
  46. package/dist/hooks/worker-tool-name-repair.mjs +2 -2
  47. package/dist/index.mjs +8 -8
  48. package/dist/{indexer-backend-BdjeL4P8.mjs → indexer-backend-B2vtFl38.mjs} +13 -13
  49. package/dist/kill-tree-CXZ0WfVf.mjs +10 -0
  50. package/dist/{kill-tree-DleMNZX3.mjs → kill-tree-CcpsRLCZ.mjs} +7 -7
  51. package/dist/{launch-Di7N-J5X.mjs → launch-DpQPZGsT.mjs} +3 -3
  52. package/dist/{launch-DlZTKE3u.mjs → launch-UPQBoW2q.mjs} +3 -3
  53. package/dist/{local-candidate-DLdwQt0s.mjs → local-candidate-Cp_bw4kK.mjs} +3 -3
  54. package/dist/{local-instances-ZeRkkuS5.mjs → local-instances-B-c-CxzP.mjs} +4 -4
  55. package/dist/{local-instances-DOxSgT_L.mjs → local-instances-bdCNNSsL.mjs} +2 -2
  56. package/dist/{local-tiers-BE4jGaMa.mjs → local-tiers-BtdEEe5n.mjs} +2 -2
  57. package/dist/{local-tiers-DNMI5W86.mjs → local-tiers-OBqAAfOg.mjs} +3 -3
  58. package/dist/{main-config-ops-kTXR8Pyv.mjs → main-config-ops-BYsK3BxM.mjs} +3 -3
  59. package/dist/{main-resolver-yp_puSSb.mjs → main-resolver-CAC3xfZM.mjs} +17 -17
  60. package/dist/{model-inventory-h6Z9fN_o.mjs → model-inventory-BuTpi9a6.mjs} +13 -13
  61. package/dist/{models-add-TVni3A7V.mjs → models-add-CJx2YAwh.mjs} +36 -35
  62. package/dist/operator-Bpxq_WB5.mjs +7 -0
  63. package/dist/{operator-CyuB3aVw.mjs → operator-DrwWItVt.mjs} +2 -2
  64. package/dist/{pai-marker-BcZyJguM.mjs → pai-marker-DLKJ9Yr5.mjs} +2 -2
  65. package/dist/{pane-audit-Lqy9N_Ki.mjs → pane-audit-wv9UkyCe.mjs} +8 -8
  66. package/dist/{paths-CFHTloSe.mjs → paths-DBd78I7Z.mjs} +3 -3
  67. package/dist/{paths-CHifubDh.mjs → paths-DS5VQKoR.mjs} +3 -3
  68. package/dist/{planner-j77ndkBf.mjs → planner-K0mFrCpL.mjs} +28 -28
  69. package/dist/{pool-Dh-q3iJi.mjs → pool-BZ94nFuq.mjs} +2 -2
  70. package/dist/{pool-cli-BggU8GRp.mjs → pool-cli-B1eKySeN.mjs} +5 -5
  71. package/dist/{pool-cli-DQ6OzRy2.mjs → pool-cli-BjYQDfx6.mjs} +6 -6
  72. package/dist/{postgres-DNIOQijl.mjs → postgres-C-T5OWer.mjs} +3 -3
  73. package/dist/{postgres-BK4FP9Zg.mjs → postgres-CBHY5PIi.mjs} +3 -3
  74. package/dist/{project-setup-CBRtFFh0.mjs → project-setup-pIPHZaXf.mjs} +24 -24
  75. package/dist/{providers-C9QC0TtO.mjs → providers-Dzx5GAUI.mjs} +6 -6
  76. package/dist/providers-QJzpaNhX.mjs +16 -0
  77. package/dist/{registrable-DpyTtajg.mjs → registrable-CXBBpUcz.mjs} +4 -4
  78. package/dist/registrable-Drn8wIDO.mjs +9 -0
  79. package/dist/render-C4KR8qQ8.mjs +13 -0
  80. package/dist/{render-C84BqQRC.mjs → render-Cz3BWIBO.mjs} +8 -8
  81. package/dist/root-Bfb1zgwE.mjs +36 -0
  82. package/dist/{root-C4oXlXS_.mjs → root-bG48WVpW.mjs} +10 -10
  83. package/dist/route-table-ZVMNBsy7.mjs +15 -0
  84. package/dist/{routing-DmkheCRH.mjs → routing-BlD_tKjW.mjs} +15 -15
  85. package/dist/{routing-f2zulGwD.mjs → routing-D27jxj9x.mjs} +13 -13
  86. package/dist/{run-BwZKBJZZ.mjs → run-AZVwceiU.mjs} +35 -27
  87. package/dist/{scan-BBGvU5EB.mjs → scan-C3uotg_f.mjs} +5 -5
  88. package/dist/{scope-D-h6F6DN.mjs → scope-D8HK6vU7.mjs} +4 -4
  89. package/dist/{session-Dn5OJXlg.mjs → session-BAfypQb9.mjs} +26 -26
  90. package/dist/session-BcnhepLZ.mjs +35 -0
  91. package/dist/{session-scan-DUn10MBd.mjs → session-scan-BmnjSReu.mjs} +5 -5
  92. package/dist/session-scan-CqUQdCac.mjs +9 -0
  93. package/dist/{session-usage-CPvXvSkw.mjs → session-usage-oycSdiD3.mjs} +117 -2
  94. package/dist/{status-ggJ7lgVg.mjs → status-COtzewKV.mjs} +3 -3
  95. package/dist/{status-Dm4dYciN.mjs → status-D_SWmOlH.mjs} +4 -4
  96. package/dist/{tool-errors-CJWODvlo.mjs → tool-errors-B2LnIqR0.mjs} +6 -6
  97. package/dist/{tool-errors-7E13StWd.mjs → tool-errors-DXJ70-sr.mjs} +2 -2
  98. package/dist/{viewer-wfKnvnrI.mjs → viewer-BgGRqXfD.mjs} +14 -14
  99. package/dist/viewer-CbGN2Ri4.mjs +22 -0
  100. package/dist/{wait-ByV0OyMZ.mjs → wait-ChpHKJZV.mjs} +3 -3
  101. package/dist/worker-config-D1KVAMp4.mjs +42 -0
  102. package/dist/{worker-config-eY5Qy4vl.mjs → worker-config-DgdT0iTB.mjs} +139 -33
  103. package/dist/workers-config-BhZBrR-Q.mjs +4 -0
  104. package/dist/{worktree-CRs2gyg0.mjs → worktree-BY--Rgmy.mjs} +5 -5
  105. package/dist/{zettelkasten-tpCRBYvH.mjs → zettelkasten-BHVx5zj-.mjs} +3 -3
  106. package/dist/{zettelkasten-_h_tUm2T.mjs → zettelkasten-LoH9RBiN.mjs} +2 -2
  107. package/docs/commands/README.md +1 -0
  108. package/docs/commands/config.md +20 -0
  109. package/gemini-extension.json +1 -1
  110. package/package.json +1 -1
  111. package/pai-plugin.json +1 -1
  112. package/plugins/context-preservation/plugin.json +1 -1
  113. package/plugins/core/plugin.json +1 -1
  114. package/plugins/creative/plugin.json +1 -1
  115. package/plugins/observability/plugin.json +1 -1
  116. package/plugins/productivity/plugin.json +1 -1
  117. package/plugins/semantic-search/plugin.json +1 -1
  118. package/plugins/ui/plugin.json +1 -1
  119. package/plugins/zettelkasten/plugin.json +1 -1
  120. package/dist/auto-route-C3S2W3Bc.mjs +0 -11
  121. package/dist/budget-BrloTOZW.mjs +0 -15
  122. package/dist/cockpit-memory-teG9M8bG.mjs +0 -20
  123. package/dist/config-Cxi-aBf4.mjs +0 -4
  124. package/dist/daemon-DeYImF1F.mjs +0 -45
  125. package/dist/detect-Rrimh0xc.mjs +0 -10
  126. package/dist/kill-tree-SV6hrIa3.mjs +0 -10
  127. package/dist/operator-BTqvTIc8.mjs +0 -7
  128. package/dist/providers-FvCLzFge.mjs +0 -16
  129. package/dist/registrable-BzH4TObg.mjs +0 -9
  130. package/dist/render-B35bQTE-.mjs +0 -13
  131. package/dist/root-DD1xx_Vu.mjs +0 -36
  132. package/dist/route-table-FEfDuhIV.mjs +0 -15
  133. package/dist/session-BAhtXdxj.mjs +0 -35
  134. package/dist/session-scan-B57dNuA4.mjs +0 -9
  135. package/dist/viewer-DEySE4c_.mjs +0 -22
  136. package/dist/worker-config-CO5FXLAT.mjs +0 -41
  137. package/dist/workers-config-f8KrkY4L.mjs +0 -4
@@ -1,33 +1,33 @@
1
1
  import { _ as warn, c as ok, i as err, n as dim } from "./utils-J2b9y8PC.mjs";
2
2
  import { g as paiHomePath, h as paiHomeDir, l as claudeHomeDir, t as aibrokerHomeDir, u as claudeProjectsDir } from "./runtime-paths-WsO9sJFc.mjs";
3
- import { Et as parseLedger, G as inlineWorkersYamlKeys, J as parseBuiltinAnthropic, K as migrateWorkersToYaml, Q as relocateWorkersYaml, R as isLoopbackUrl, T as parseProvider, W as initWorkersYaml, Y as parseWorkersYamlDocument, c as WorkersConfigError, et as workersYamlLegacyNotice, ft as parseEntry, it as yamlProviderToRaw, j as readWorkersSection, lt as findTier, m as isLocalProvider, o as PROVIDER_TAGS, p as getProviderOrNative, q as needsWorkersYamlRelocation, t as ANTHROPIC_NATIVE, tt as workersYamlPath, wt as appendLedger, y as nativeAnthropicProvider, z as loopbackUrl } from "./config-XpZWOYOG.mjs";
4
- import { D as readJsonStrict, O as writeJsonAtomic, f as readMainConfigRaw, m as deepMergeConfig, n as CONFIG_FILE, o as expandHome, u as paiConfigFilePath, v as shippedDefaultsDir, y as shippedMainDefaults } from "./config-Bu1_vbY8.mjs";
5
- import { i as ledgerPath, t as WORKER_ID_RE, u as workersLogDir } from "./paths-CHifubDh.mjs";
6
- import { E as worktreesStatsCached, l as formatWorktreesStats } from "./worktree-CRs2gyg0.mjs";
7
- import { T as ownsPidCached, b as loadStatusesCached, g as isLive, v as loadStatus } from "./status-ggJ7lgVg.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-Dh-q3iJi.mjs";
9
- import { a as ownerSessionName } from "./scope-D-h6F6DN.mjs";
10
- import { $n as splitBySessionKind, $t as POLICY_MODES, E as budgetCache, Ft as applyPolicyToRoutes, Gt as routeText, Ht as resolveSessionArg, I as buildSpeed, It as clearSessionRoute, Kt as servingChip, L as percentile, Mt as isTailnetOrLocalName, Nt as loopbackRefusal, Sn as probeLoopback, Tt as duplicateModelIds, Ut as routeChoices, W as currentInventory, Wt as routeRows, Xn as markTimeOrdered, Xt as setSessionRoute, Yn as isTimeOrdered, Yt as setRoute, an as parseDuration, at as readInventoryInput, bn as localTierOrder, cn as writePolicy, en as clearPolicy, er as usageLogFile, fn as getProfile, in as onBattery, it as readInventory, mn as readProfiles, on as readPolicy, rn as findLocal, rt as processTreeRssMb, sn as routeRun, vn as currentLocalStatus, xn as pickLocal, zt as flowText } from "./routing-DmkheCRH.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-BE4jGaMa.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-yLFb7CKq.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";
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-DEveQdFV.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-DOxSgT_L.mjs";
16
- import { i as localStatusLine, s as readLocalStatus } from "./local-candidate-DLdwQt0s.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";
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-DNIOQijl.mjs";
20
- import { c as ensureProxyRunning, l as proxyPort, u as stopProxy } from "./launch-Di7N-J5X.mjs";
21
- import { a as colorEnabled, f as renderTable, n as readBudget, o as makeStyle } from "./health-C4FQmkJn.mjs";
22
- import { H as testProvider, o as sessionWorkersLine } from "./run-BwZKBJZZ.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-JLm6g0yP.mjs";
24
- import { w as parseDenialText } from "./render-C84BqQRC.mjs";
25
- import { n as diskBundleMtime, r as ensurePoolHost } from "./pool-cli-BggU8GRp.mjs";
26
- import { a as readAudit, d as loadPaneRunStatuses, f as paneRunRows } from "./pane-audit-Lqy9N_Ki.mjs";
27
- import { i as fallbackStatusText, n as fallbackOn, r as fallbackStatus, t as fallbackOff } from "./fallback-CBWpp2F2.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-C9QC0TtO.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-OodH_vx_.mjs";
30
- import { n as isRealUserPrompt, t as extractUserPromptText } from "./session-usage-CPvXvSkw.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
31
  import { appendFileSync, chmodSync, closeSync, copyFileSync, createReadStream, existsSync, fstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, realpathSync, renameSync, rmSync, rmdirSync, statSync, unlinkSync, writeFileSync } from "node:fs";
32
32
  import { createHash } from "node:crypto";
33
33
  import { basename, dirname, isAbsolute, join, normalize, relative, resolve } from "node:path";
@@ -231,6 +231,37 @@ function pathFromMessage(msg) {
231
231
  text: m[2]
232
232
  };
233
233
  }
234
+ /** Shadowed/unused keys of `text` against config.yaml: unchanged ones warn, a new or changed one is refused (the effective value lives elsewhere). */
235
+ function shadowFindings(text, current, ctx, at) {
236
+ const out = {
237
+ errors: [],
238
+ warnings: []
239
+ };
240
+ const parse = (t) => {
241
+ const v = parseDocument(t, { uniqueKeys: false }).toJS() ?? {};
242
+ return typeof v === "object" && v !== null && !Array.isArray(v) ? v : {};
243
+ };
244
+ let main = {};
245
+ try {
246
+ main = readDualFormatConfigRaw(ctx.mainConfigPath ?? paiConfigFilePath());
247
+ } catch {}
248
+ const before = new Map(workersConfigShadows(main, parse(current)).filter((s) => s.file === "workers.yaml").map((s) => [s.key, JSON.stringify(s.value)]));
249
+ for (const s of workersConfigShadows(main, parse(text))) {
250
+ if (s.file !== "workers.yaml") continue;
251
+ const path = s.key.split(".");
252
+ if (before.get(s.key) === JSON.stringify(s.value)) out.warnings.push({
253
+ path: s.key,
254
+ line: at(path),
255
+ message: s.message
256
+ });
257
+ else out.errors.push({
258
+ path: s.key,
259
+ line: at(path),
260
+ message: `${s.message}; not saved here`
261
+ });
262
+ }
263
+ return out;
264
+ }
234
265
  /**
235
266
  * Validate registry YAML text. `current` (the text on disk) scopes the
236
267
  * port-in-use and removal checks to what the edit changes.
@@ -332,6 +363,8 @@ function validateRegistry(yamlText, ctx, current = "") {
332
363
  "model"
333
364
  ], `model file not found: ${t.model}`);
334
365
  }
366
+ const shadow = shadowFindings(yamlText, current, ctx, at);
367
+ errors.push(...shadow.errors);
335
368
  const running = (ctx.running?.() ?? []).filter((i) => i.state === "starting" || i.state === "ready");
336
369
  for (const name of Object.keys(before)) {
337
370
  if (tiers[name]) continue;
@@ -340,7 +373,10 @@ function validateRegistry(yamlText, ctx, current = "") {
340
373
  }
341
374
  const provNames = new Set(Object.keys(providers));
342
375
  for (const inst of running) if (inst.origin === "registered" && !provNames.has(inst.provider)) add(["providers"], `cannot remove provider "${inst.provider}": instance ${inst.id} is running`);
343
- return { errors };
376
+ return {
377
+ errors,
378
+ warnings: shadow.warnings
379
+ };
344
380
  }
345
381
  /**
346
382
  * Every providers.<name> entry carries an explicit `enabled:` so a search for `enabled: true` finds
@@ -419,7 +455,7 @@ function validateRequest(yamlText, baseHash, ctx) {
419
455
  }],
420
456
  diff: []
421
457
  };
422
- const { errors } = validateRegistry(yamlText, ctx, cur);
458
+ const { errors, warnings } = validateRegistry(yamlText, ctx, cur);
423
459
  let shown = yamlText;
424
460
  if (!errors.length) {
425
461
  if (ctx.explicitEnabled) shown = withExplicitEnabled(shown);
@@ -428,6 +464,7 @@ function validateRequest(yamlText, baseHash, ctx) {
428
464
  return {
429
465
  ok: errors.length === 0,
430
466
  errors,
467
+ warnings,
431
468
  diff: diffLines(cur, shown)
432
469
  };
433
470
  }
@@ -4181,11 +4218,25 @@ function wmdModelActs(id){
4181
4218
  run:function(){var m=wmdModel(id);runIt("more","local.scale",{target:m.tier,count:m.instances.length+1})}}
4182
4219
  ];
4183
4220
  }
4221
+ /** "parallel N" with -/+ for a provider that has a concurrency cap; over the server's slot count a warning tooltip. */
4222
+ function wmdParallel(m){
4223
+ if(!m.maxConcurrent||!m.provider)return"";
4224
+ var over=m.slots&&m.maxConcurrent>m.slots,min=m.capMin||1,max=m.capMax||16;
4225
+ return' <span class="num wmd-par'+(over?" warn":"")+'"'+(over?' title="above the server\'s '+m.slots+' slots: extra runs queue at the server"':' title="runs the provider admits in parallel"')+'>parallel '+m.maxConcurrent+(m.slots?" / "+m.slots+" slots":"")+
4226
+ ' <button type="button" class="b wmd-par-b" data-p="'+esc(m.provider)+'" data-d="-1"'+(m.maxConcurrent<=min?" disabled":"")+' title="one parallel run fewer">\u2212</button>'+
4227
+ '<button type="button" class="b wmd-par-b" data-p="'+esc(m.provider)+'" data-d="1"'+(m.maxConcurrent>=max?" disabled":"")+' title="one parallel run more">+</button></span>';
4228
+ }
4184
4229
  Win.registerType("model",{minW:300,minH:90,defaultH:120,
4185
4230
  mount:function(ctx){
4186
4231
  ctx.body.innerHTML='<div class="wmd"><div class="wmd-top" data-k="badges"></div><div class="dim wmd-n" data-k="note"></div><div class="wmd-i" data-k="inst"></div></div>';
4187
4232
  ctx.body.addEventListener("click",function(ev){
4188
4233
  var b=ev.target;
4234
+ if(b&&b.classList&&b.classList.contains("wmd-par-b")){
4235
+ b.disabled=true;
4236
+ winHost().fetch("/cockpit/providers/"+encodeURIComponent(b.getAttribute("data-p"))+"/concurrency",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({delta:Number(b.getAttribute("data-d"))}),cache:"no-store"})
4237
+ .then(function(){if(typeof loadModels==="function")loadModels()},function(){b.disabled=false});
4238
+ return;
4239
+ }
4189
4240
  if(!b||!b.classList||!b.classList.contains("wmd-stop"))return;
4190
4241
  WinA.winClick(b,ctx.id,"local.stop",{target:b.getAttribute("data-id"),value:b.getAttribute("data-busy")!=="0"?"confirm":undefined},winHost());
4191
4242
  });
@@ -4194,7 +4245,7 @@ Win.registerType("model",{minW:300,minH:90,defaultH:120,
4194
4245
  var m=wmdModel(ctx.id);
4195
4246
  if(!m){ctx.status("stale","no longer reported");return}
4196
4247
  var n=m.instances.length;
4197
- ctx.html("badges",'<span class="badge">'+esc(m.engine)+'</span> <span class="badge mstate">'+esc(m.state)+'</span> '+(WMD&&WMD.inv&&WMD.inv.localDefaultTier===m.tier?'<span class="badge ok" title="the running model local work goes to (pai worker run --local)">local default</span> ':"")+'<span class="num" title="running instances / max instances">instances '+n+" / "+m.maxInstances+'</span> <span class="num" title="requests in flight / the provider maxConcurrent (none = no cap)">requests '+m.instances.reduce(function(a,x){return a+(x.inflight||0)},0)+(m.maxConcurrent?" / "+m.maxConcurrent:"")+"</span>");
4248
+ ctx.html("badges",'<span class="badge">'+esc(m.engine)+'</span> <span class="badge mstate">'+esc(m.state)+'</span> '+(WMD&&WMD.inv&&WMD.inv.localDefaultTier===m.tier?'<span class="badge ok" title="the running model local work goes to (pai worker run --local)">local default</span> ':"")+'<span class="num" title="running instances / max instances">instances '+n+" / "+m.maxInstances+'</span> <span class="num" title="requests in flight / the provider maxConcurrent (none = no cap)">requests '+m.instances.reduce(function(a,x){return a+(x.inflight||0)},0)+(m.maxConcurrent?" / "+m.maxConcurrent:"")+"</span>"+wmdParallel(m));
4198
4249
  ctx.html("note",(m.weightsBytes?'<span class="num" title="weight size on disk">'+gbm(m.weightsBytes/1048576)+" GB</span> · ":"")+'<span title="'+esc(m.file)+'">'+esc(String(m.file).replace(/^.*\//,""))+"</span> · :"+m.port);
4199
4250
  ctx.list("inst",m.instances,function(i){return i.id},function(){var d=document.createElement("div");d.className="linst";return d},function(d,i){
4200
4251
  var h='<span class="ok">'+esc(i.id)+'</span> <span class="dim">:'+i.port+(i.pid!=null?" · pid "+i.pid:"")+" · "+(i.inflight||0)+' in flight</span> <button type="button" class="b wmd-stop" data-act="local.stop" data-id="'+esc(i.id)+'" data-busy="'+(i.inflight||0)+'" title="stop instance '+esc(i.id)+' (asks to confirm when requests are in flight)">stop</button>';
@@ -7625,7 +7676,20 @@ async function cockpitModelsPayload() {
7625
7676
  function registryModelsNow() {
7626
7677
  try {
7627
7678
  const providers = readWorkersSection().workers.providers;
7628
- return registryModels(readLocalConfig(workersYamlPath()), localInstanceRows(), weightsBytes, (t) => providers[t.provider]?.maxConcurrent);
7679
+ const { concurrencyMin, concurrencyMax } = cockpitLayout();
7680
+ const cfg = readLocalConfig(workersYamlPath());
7681
+ return registryModels(cfg, localInstanceRows(), weightsBytes, (t) => providers[t.provider]?.maxConcurrent).map((m) => {
7682
+ const provider = cfg.tiers[m.tier]?.provider;
7683
+ const p = provider ? providers[provider] : void 0;
7684
+ if (m.maxConcurrent === void 0 || !provider || !p) return m;
7685
+ return {
7686
+ ...m,
7687
+ provider,
7688
+ ...p.conversationSlots !== void 0 ? { slots: p.conversationSlots } : {},
7689
+ capMin: concurrencyMin,
7690
+ capMax: concurrencyMax
7691
+ };
7692
+ });
7629
7693
  } catch {
7630
7694
  return [];
7631
7695
  }
@@ -8214,6 +8278,48 @@ function handleCockpit(req, res, limits, readRows = cachedRows(), sessionMap = l
8214
8278
  })));
8215
8279
  return true;
8216
8280
  }
8281
+ const concurrency = req.method === "POST" ? /^\/cockpit\/providers\/([^/]+)\/concurrency$/.exec(url.pathname) : null;
8282
+ if (concurrency) {
8283
+ if (!sameOriginAction(req)) return send(403, "application/json", JSON.stringify({
8284
+ ok: false,
8285
+ message: "cross-origin action refused"
8286
+ })), true;
8287
+ const name = decodeURIComponent(concurrency[1]);
8288
+ readJsonObject(readBody, req).then((b) => {
8289
+ const { delta } = b;
8290
+ if (delta !== 1 && delta !== -1) return send(400, "application/json", JSON.stringify({
8291
+ ok: false,
8292
+ message: "delta must be +1 or -1"
8293
+ }));
8294
+ try {
8295
+ const cur = readWorkersSection().workers.providers[name]?.maxConcurrent;
8296
+ if (cur === void 0) return send(404, "application/json", JSON.stringify({
8297
+ ok: false,
8298
+ message: `provider "${name}" has no concurrency cap`
8299
+ }));
8300
+ const { concurrencyMin, concurrencyMax } = cockpitLayout();
8301
+ const next = Math.min(concurrencyMax, Math.max(concurrencyMin, cur + delta));
8302
+ if (next !== cur) setProviderCap(name, next);
8303
+ send(200, "application/json", JSON.stringify({
8304
+ ok: true,
8305
+ provider: name,
8306
+ maxConcurrent: next,
8307
+ min: concurrencyMin,
8308
+ max: concurrencyMax,
8309
+ clamped: next !== cur + delta
8310
+ }));
8311
+ } catch (e) {
8312
+ send(409, "application/json", JSON.stringify({
8313
+ ok: false,
8314
+ message: e.message
8315
+ }));
8316
+ }
8317
+ }).catch((e) => send(bodyErrorStatus(e), "application/json", JSON.stringify({
8318
+ ok: false,
8319
+ message: e.message
8320
+ })));
8321
+ return true;
8322
+ }
8217
8323
  if (req.method === "POST" && url.pathname === "/cockpit/action") {
8218
8324
  if (!sameOriginAction(req)) return send(403, "application/json", JSON.stringify({
8219
8325
  ok: false,
@@ -10568,9 +10674,9 @@ async function stopInstance(cfg, target, opts = {}, deps = {}) {
10568
10674
  */
10569
10675
  async function cliInflight(cfg, deps = {}) {
10570
10676
  const [{ engineInflight }, { readSchedFile }, { instanceEngineKey }] = await Promise.all([
10571
- import("./cockpit-actions-BfRMr2sm.mjs"),
10677
+ import("./cockpit-actions-BgsiNcUY.mjs"),
10572
10678
  import("./scheduler-dmHXoRvm.mjs"),
10573
- import("./local-instances-ZeRkkuS5.mjs")
10679
+ import("./local-instances-B-c-CxzP.mjs")
10574
10680
  ]);
10575
10681
  const now = deps.now ?? Date.now();
10576
10682
  const snap = readSchedFile(deps.startDir ?? logDir(), now);
@@ -10988,7 +11094,7 @@ const workerPoolCommand = {
10988
11094
  async run(ctx) {
10989
11095
  try {
10990
11096
  const action = ctx.args.ACTION;
10991
- const { poolOn, poolOff, poolStatusText } = await import("./pool-cli-DQ6OzRy2.mjs");
11097
+ const { poolOn, poolOff, poolStatusText } = await import("./pool-cli-BjYQDfx6.mjs");
10992
11098
  if (action === void 0 || action === "status") return void out(await poolStatusText(logDir()));
10993
11099
  if (action === "on") return void (await poolOn(logDir())).forEach((l) => out(l));
10994
11100
  if (action === "off") return void (await poolOff(logDir())).forEach((l) => out(l));
@@ -11165,4 +11271,4 @@ const WORKER_CONFIG_COMMANDS = [
11165
11271
 
11166
11272
  //#endregion
11167
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 };
11168
- //# sourceMappingURL=worker-config-eY5Qy4vl.mjs.map
11274
+ //# sourceMappingURL=worker-config-DgdT0iTB.mjs.map
@@ -0,0 +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";
3
+
4
+ export { workersYamlPath };
@@ -1,9 +1,9 @@
1
1
  import { t as writeFileAtomic } from "./atomic-file-BorMa4T3.mjs";
2
- import { wt as appendLedger } from "./config-XpZWOYOG.mjs";
3
- import { i as ledgerPath, l as statusPath } from "./paths-CHifubDh.mjs";
4
- import { a as UNLABELED, g as isLive, k as saveStatus, v as loadStatus, y as loadStatuses } from "./status-ggJ7lgVg.mjs";
2
+ import { Et as appendLedger } from "./config-CST2uq1v.mjs";
3
+ import { i as ledgerPath, l as statusPath } from "./paths-DS5VQKoR.mjs";
4
+ import { a as UNLABELED, g as isLive, k as saveStatus, v as loadStatus, y as loadStatuses } from "./status-COtzewKV.mjs";
5
5
  import { t as fmtAge } from "./fmt-age-ByDkvkoU.mjs";
6
- import { v as readPoolState } from "./pool-Dh-q3iJi.mjs";
6
+ import { v as readPoolState } from "./pool-BZ94nFuq.mjs";
7
7
  import { existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, readlinkSync, realpathSync, rmSync, statSync, writeFileSync } from "node:fs";
8
8
  import { basename, dirname, isAbsolute, join, resolve, sep } from "node:path";
9
9
  import { platform, tmpdir } from "node:os";
@@ -2710,4 +2710,4 @@ function gcWorktreesThrottled(logDir, everyMin = 60, now = Date.now(), opts = {}
2710
2710
 
2711
2711
  //#endregion
2712
2712
  export { applyScratchEnv as A, worktreeWanted as C, formatPending as D, worktreesStatsCached as E, pendingGate as O, worktreeSystemPrompt as S, worktreesStats as T, ownedTree as _, archiveEmptyResult as a, verifyWorker as b, formatKnowledge as c, gcWorktrees as d, gcWorktreesThrottled as f, mergeWorker as g, markResumed as h, adoptTree as i, scratchPromptLine as j, pendingResults as k, formatWorktreesStats as l, leftoverWorktrees as m, MergeConflictError as n, commitLines as o, inPlaceSystemPrompt as p, addWorktree as r, discardWorker as s, GATE_MARK as t, gcPoolWorktrees as u, recordWorktree as v, worktreesDir as w, worktreeRefusesStart as x, salvageOnExit as y };
2713
- //# sourceMappingURL=worktree-CRs2gyg0.mjs.map
2713
+ //# sourceMappingURL=worktree-BY--Rgmy.mjs.map
@@ -1,7 +1,7 @@
1
- import "./config-Bu1_vbY8.mjs";
2
- import "./embedding-gate-6rZrWRXa.mjs";
1
+ import "./config-DYbyEe4-.mjs";
2
+ import "./embedding-gate-CTAk8STe.mjs";
3
3
  import "./embeddings-BVq3esBF.mjs";
4
4
  import { r as saveQueryResult } from "./query-feedback-DN52N9C5.mjs";
5
- import { a as zettelThemes, c as zettelExplore, i as zettelHealth, n as zettelGodNotes, o as zettelConverse, r as zettelSuggest, s as zettelSurprise, t as zettelCommunities } from "./zettelkasten-_h_tUm2T.mjs";
5
+ import { a as zettelThemes, c as zettelExplore, i as zettelHealth, n as zettelGodNotes, o as zettelConverse, r as zettelSuggest, s as zettelSurprise, t as zettelCommunities } from "./zettelkasten-LoH9RBiN.mjs";
6
6
 
7
7
  export { zettelConverse, zettelExplore, zettelHealth, zettelSuggest, zettelSurprise, zettelThemes };
@@ -1,5 +1,5 @@
1
1
  import { t as STOP_WORDS$1 } from "./stop-words-DSEYQdNe.mjs";
2
- import { a as requireQueryEmbedding } from "./embedding-gate-6rZrWRXa.mjs";
2
+ import { a as requireQueryEmbedding } from "./embedding-gate-CTAk8STe.mjs";
3
3
  import { i as deserializeEmbedding, r as cosineSimilarity } from "./embeddings-BVq3esBF.mjs";
4
4
  import { basename, dirname } from "node:path";
5
5
 
@@ -1213,4 +1213,4 @@ async function zettelCommunities(backend, opts) {
1213
1213
 
1214
1214
  //#endregion
1215
1215
  export { zettelThemes as a, zettelExplore as c, zettelHealth as i, zettelGodNotes as n, zettelConverse as o, zettelSuggest as r, zettelSurprise as s, zettelCommunities as t };
1216
- //# sourceMappingURL=zettelkasten-_h_tUm2T.mjs.map
1216
+ //# sourceMappingURL=zettelkasten-LoH9RBiN.mjs.map
@@ -104,6 +104,7 @@ Generated reference for every `pai` command. Read any page in the terminal with
104
104
  | `pai config path` | Print where PAI keeps its settings |
105
105
  | `pai config set` | Change one setting |
106
106
  | `pai config unset` | Reset one setting to its default |
107
+ | `pai config validate` | Warn about workers settings that are shadowed or unused |
107
108
  | `pai config yaml` | Convert config.json to config.yaml |
108
109
  | `pai daemon` | The background service: status, start, stop, restart, logs |
109
110
  | `pai daemon install` | Install the daemon as a login service |
@@ -168,6 +168,25 @@ pai config list
168
168
 
169
169
  See also: `pai config migrate`, `pai config set`
170
170
 
171
+ ### pai config validate
172
+
173
+ Warn about workers settings that are shadowed or unused
174
+
175
+ ```
176
+ pai config validate
177
+ ```
178
+
179
+ Warn about workers settings that are shadowed or unused.
180
+
181
+ The non-provider workers.* settings (pool, pane, routing, …) are read from config.yaml only; the routing tables (providers, tiers, classes, mcp_sets, …) from workers.yaml only. Names every key written in the file that does not win, and every top-level workers.yaml block nothing reads.
182
+
183
+ ```sh
184
+ pai config validate
185
+ pai config get workers.pool.maxSlots --source
186
+ ```
187
+
188
+ See also: `pai config get`, `pai config set`
189
+
171
190
  ### pai config migrate
172
191
 
173
192
  Move old settings files into the current layout
@@ -218,6 +237,7 @@ See also: `pai config unset`
218
237
  | `pai config get` | Print one setting |
219
238
  | `pai config set` | Change one setting |
220
239
  | `pai config unset` | Reset one setting to its default |
240
+ | `pai config validate` | Warn about workers settings that are shadowed or unused |
221
241
  | `pai config migrate` | Move old settings files into the current layout |
222
242
 
223
243
  ## See also
@@ -2,7 +2,7 @@
2
2
  "name": "@tekmidian/pai",
3
3
  "displayName": "PAI Knowledge OS",
4
4
  "description": "Personal AI Infrastructure — persistent memory and session continuity for AI coding assistants",
5
- "version": "1.0.4",
5
+ "version": "1.0.5",
6
6
  "author": "Matthias Nott",
7
7
  "license": "MIT",
8
8
  "homepage": "https://github.com/mnott/PAI",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tekmidian/pai",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "PAI Knowledge OS — Personal AI Infrastructure with federated memory and project management",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",
package/pai-plugin.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "@tekmidian/pai",
4
4
  "displayName": "PAI Knowledge OS",
5
5
  "description": "Personal AI Infrastructure — persistent memory, session continuity, and knowledge graph",
6
- "version": "1.0.4",
6
+ "version": "1.0.5",
7
7
  "author": "Matthias Nott",
8
8
  "license": "MIT",
9
9
  "homepage": "https://github.com/mnott/PAI",
@@ -2,6 +2,6 @@
2
2
  "name": "pai-context-preservation",
3
3
  "displayName": "PAI Context Preservation",
4
4
  "description": "Context compression and relay across compaction cycles",
5
- "version": "1.0.4",
5
+ "version": "1.0.5",
6
6
  "hooks": "./hooks/hooks.json"
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "name": "pai-core",
3
3
  "displayName": "PAI Core",
4
4
  "description": "Core memory engine, session management, and project registry",
5
- "version": "1.0.4",
5
+ "version": "1.0.5",
6
6
  "hooks": "./hooks/hooks.json"
7
7
  }
@@ -2,5 +2,5 @@
2
2
  "name": "pai-creative",
3
3
  "displayName": "PAI Creative Studio",
4
4
  "description": "Art direction, story explanation, voice/prosody configuration",
5
- "version": "1.0.4"
5
+ "version": "1.0.5"
6
6
  }
@@ -2,6 +2,6 @@
2
2
  "name": "pai-observability",
3
3
  "displayName": "PAI Observability Suite",
4
4
  "description": "Automatic observation capture, classification, session summaries, and search history",
5
- "version": "1.0.4",
5
+ "version": "1.0.5",
6
6
  "hooks": "./hooks/hooks.json"
7
7
  }
@@ -2,7 +2,7 @@
2
2
  "name": "pai-productivity",
3
3
  "displayName": "PAI Productivity",
4
4
  "description": "Planning, journaling, reviewing, research, sharing, and cross-session task routing",
5
- "version": "1.0.4",
5
+ "version": "1.0.5",
6
6
  "hooks": "./hooks/hooks.json",
7
7
  "skills": ["./skills/"]
8
8
  }
@@ -2,5 +2,5 @@
2
2
  "name": "pai-semantic-search",
3
3
  "displayName": "PAI Semantic Search",
4
4
  "description": "Vector search with pgvector, cross-encoder reranking, hybrid mode, recency boost",
5
- "version": "1.0.4"
5
+ "version": "1.0.5"
6
6
  }
@@ -2,6 +2,6 @@
2
2
  "name": "pai-ui",
3
3
  "displayName": "PAI UI Customization",
4
4
  "description": "Terminal tab titles, statusline, tab coloring, and visual customization",
5
- "version": "1.0.4",
5
+ "version": "1.0.5",
6
6
  "hooks": "./hooks/hooks.json"
7
7
  }
@@ -2,5 +2,5 @@
2
2
  "name": "pai-zettelkasten",
3
3
  "displayName": "PAI Zettelkasten Intelligence",
4
4
  "description": "Luhmann-inspired vault intelligence with graph operations and Obsidian integration",
5
- "version": "1.0.4"
5
+ "version": "1.0.5"
6
6
  }
@@ -1,11 +0,0 @@
1
- import "./config-XpZWOYOG.mjs";
2
- import "./config-Bu1_vbY8.mjs";
3
- import "./paths-CHifubDh.mjs";
4
- import "./worktree-CRs2gyg0.mjs";
5
- import "./status-ggJ7lgVg.mjs";
6
- import "./pool-Dh-q3iJi.mjs";
7
- import "./registrable-DpyTtajg.mjs";
8
- import "./pai-marker-BcZyJguM.mjs";
9
- import { n as formatAutoRouteJson, t as autoRoute } from "./auto-route-21GdHL70.mjs";
10
-
11
- export { autoRoute, formatAutoRouteJson };
@@ -1,15 +0,0 @@
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 { A as budgetSkipReason, D as budgetExceeded, E as budgetCache, M as budgetWall, N as fetchBudgetReading, O as budgetFresh, P as pickBudgetWindow, T as BudgetCache, j as budgetUntilLabel, k as budgetFull, w as BUDGET_TTL_MS } from "./routing-DmkheCRH.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
-
15
- export { BUDGET_TTL_MS, BudgetCache, budgetCache, budgetExceeded, budgetFresh, budgetFull, budgetSkipReason, budgetUntilLabel, budgetWall, fetchBudgetReading, pickBudgetWindow };
@@ -1,20 +0,0 @@
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-DmkheCRH.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-C9QC0TtO.mjs";
15
- import "./main-config-ops-kTXR8Pyv.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-OodH_vx_.mjs";
17
- import "./ipc-client-CnYEF31R.mjs";
18
- import "./embed-pass-e64AwDCa.mjs";
19
-
20
- export { fetchDaemonMemory };
@@ -1,4 +0,0 @@
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
-
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,45 +0,0 @@
1
- import "./utils-J2b9y8PC.mjs";
2
- import "./migrate-DrA_OwlZ.mjs";
3
- import "./config-XpZWOYOG.mjs";
4
- import "./config-Bu1_vbY8.mjs";
5
- import "./paths-CHifubDh.mjs";
6
- import "./worktree-CRs2gyg0.mjs";
7
- import "./status-ggJ7lgVg.mjs";
8
- import "./pool-Dh-q3iJi.mjs";
9
- import "./registrable-DpyTtajg.mjs";
10
- import "./pai-marker-BcZyJguM.mjs";
11
- import "./helpers-CRuBUas3.mjs";
12
- import "./reranker-CqCbpGnX.mjs";
13
- import "./scope-D-h6F6DN.mjs";
14
- import "./routing-DmkheCRH.mjs";
15
- import "./tool-errors-7E13StWd.mjs";
16
- import "./wait-ByV0OyMZ.mjs";
17
- import "./local-tiers-BE4jGaMa.mjs";
18
- import "./caller-identity-yLFb7CKq.mjs";
19
- import "./capacity-DEveQdFV.mjs";
20
- import "./local-instances-DOxSgT_L.mjs";
21
- import "./local-candidate-DLdwQt0s.mjs";
22
- import "./factory-B7nv75rC.mjs";
23
- import "./postgres-DNIOQijl.mjs";
24
- import "./embedding-gate-6rZrWRXa.mjs";
25
- import "./embeddings-BVq3esBF.mjs";
26
- import "./router-CQSc3lk3.mjs";
27
- import "./detect-BLKsUOgG.mjs";
28
- import "./scan-BBGvU5EB.mjs";
29
- import "./launch-Di7N-J5X.mjs";
30
- import "./run-BwZKBJZZ.mjs";
31
- import "./controls-JLm6g0yP.mjs";
32
- import "./endreason-BC-v05H_.mjs";
33
- import "./render-C84BqQRC.mjs";
34
- import "./operator-CyuB3aVw.mjs";
35
- import "./kill-tree-DleMNZX3.mjs";
36
- import "./pool-cli-BggU8GRp.mjs";
37
- import "./pane-audit-Lqy9N_Ki.mjs";
38
- import "./ipc-client-CnYEF31R.mjs";
39
- import "./embed-pass-e64AwDCa.mjs";
40
- import "./indexer-backend-BdjeL4P8.mjs";
41
- import { t as serve } from "./daemon-nXanenDM.mjs";
42
- import "./auto-route-21GdHL70.mjs";
43
- import "./zettelkasten-_h_tUm2T.mjs";
44
-
45
- export { serve };
@@ -1,10 +0,0 @@
1
- import "./config-Bu1_vbY8.mjs";
2
- import "./helpers-CRuBUas3.mjs";
3
- import "./factory-B7nv75rC.mjs";
4
- import "./postgres-DNIOQijl.mjs";
5
- import "./embedding-gate-6rZrWRXa.mjs";
6
- import "./embeddings-BVq3esBF.mjs";
7
- import "./router-CQSc3lk3.mjs";
8
- import { n as formatDetection, r as formatDetectionJson, t as detectProject } from "./detect-BLKsUOgG.mjs";
9
-
10
- export { detectProject };
@@ -1,10 +0,0 @@
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 "./caller-identity-yLFb7CKq.mjs";
7
- import "./endreason-BC-v05H_.mjs";
8
- import { i as killTree, n as isOwner, r as killRefusal, t as descendantsLeavesFirst } from "./kill-tree-DleMNZX3.mjs";
9
-
10
- export { killTree };
@@ -1,7 +0,0 @@
1
- import "./config-XpZWOYOG.mjs";
2
- import "./config-Bu1_vbY8.mjs";
3
- import "./paths-CHifubDh.mjs";
4
- import "./status-ggJ7lgVg.mjs";
5
- import { n as operatorSocketPath, r as sayToWorker, t as createOperatorServer } from "./operator-CyuB3aVw.mjs";
6
-
7
- export { sayToWorker };