@tekmidian/pai 0.59.0 → 0.60.1

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 (129) hide show
  1. package/.claude-plugin/plugin.json +8 -33
  2. package/PLUGIN-ARCHITECTURE.md +4 -6
  3. package/dist/{aibroker-client-B8Wtasez.mjs → aibroker-client-BYG-GtAg.mjs} +1 -1
  4. package/dist/{chain-Cltx0NjY.mjs → chain-CGyAIHo4.mjs} +4 -4
  5. package/dist/{chain-Cltx0NjY.mjs.map → chain-CGyAIHo4.mjs.map} +1 -1
  6. package/dist/cli/index.mjs +12 -12
  7. package/dist/cli/program.mjs +12 -12
  8. package/dist/{config-D1omG_UU.mjs → config-CQCmH_gV.mjs} +17 -4
  9. package/dist/{config-D1omG_UU.mjs.map → config-CQCmH_gV.mjs.map} +1 -1
  10. package/dist/{config-DCYWFaEi.mjs → config-DjXq_W42.mjs} +1 -1
  11. package/dist/{context-handover-cache-Dt4HW1Ro.mjs → context-handover-cache-BzM7Qudn.mjs} +4 -4
  12. package/dist/{context-handover-cache-Dt4HW1Ro.mjs.map → context-handover-cache-BzM7Qudn.mjs.map} +1 -1
  13. package/dist/daemon/index.mjs +12 -12
  14. package/dist/{daemon-CmqJfeb9.mjs → daemon-B_TodsIS.mjs} +97 -23
  15. package/dist/daemon-B_TodsIS.mjs.map +1 -0
  16. package/dist/daemon-jviL3VVJ.mjs +19 -0
  17. package/dist/daemon-mcp/index.mjs +9 -9
  18. package/dist/daemon-mcp/index.mjs.map +1 -1
  19. package/dist/{factory-C9wGUe30.mjs → factory-DW7BCJJT.mjs} +1 -1
  20. package/dist/{factory-DiuntvwG.mjs → factory-EUUhSSoq.mjs} +7 -8
  21. package/dist/factory-EUUhSSoq.mjs.map +1 -0
  22. package/dist/{fallback-B_2ozQHw.mjs → fallback-CjdakQVu.mjs} +80 -9
  23. package/dist/fallback-CjdakQVu.mjs.map +1 -0
  24. package/dist/hooks/block-sleep-poll.mjs +7590 -0
  25. package/dist/hooks/block-sleep-poll.mjs.map +7 -0
  26. package/dist/hooks/capture-all-events.mjs +8 -4
  27. package/dist/hooks/capture-all-events.mjs.map +2 -2
  28. package/dist/hooks/capture-session-summary.mjs.map +1 -1
  29. package/dist/hooks/capture-tool-output.mjs.map +1 -1
  30. package/dist/hooks/cleanup-session-files.mjs.map +1 -1
  31. package/dist/hooks/context-compression-hook.mjs +6 -6
  32. package/dist/hooks/context-compression-hook.mjs.map +3 -3
  33. package/dist/hooks/initialize-session.mjs.map +1 -1
  34. package/dist/hooks/load-core-context.mjs.map +1 -1
  35. package/dist/hooks/load-project-context.mjs.map +2 -2
  36. package/dist/hooks/post-compact-inject.mjs +1 -1
  37. package/dist/hooks/post-compact-inject.mjs.map +2 -2
  38. package/dist/hooks/route-agents-to-worker.mjs +5 -4
  39. package/dist/hooks/route-agents-to-worker.mjs.map +3 -3
  40. package/dist/hooks/security-validator.mjs +5 -4
  41. package/dist/hooks/security-validator.mjs.map +3 -3
  42. package/dist/hooks/stop-hook.mjs.map +1 -1
  43. package/dist/hooks/sync-todo-to-md.mjs.map +1 -1
  44. package/dist/hooks/whisper-rules.mjs +5 -4
  45. package/dist/hooks/whisper-rules.mjs.map +3 -3
  46. package/dist/hooks/worker-proxy.mjs +5 -4
  47. package/dist/hooks/worker-proxy.mjs.map +3 -3
  48. package/dist/hooks/worker-status-line.mjs +10 -7
  49. package/dist/hooks/worker-status-line.mjs.map +3 -3
  50. package/dist/hooks/worker-supervision.mjs +5 -4
  51. package/dist/hooks/worker-supervision.mjs.map +3 -3
  52. package/dist/{main-resolver-DYNxxNwJ.mjs → main-resolver-BFQfU5xo.mjs} +100 -21
  53. package/dist/main-resolver-BFQfU5xo.mjs.map +1 -0
  54. package/dist/main-resolver-VMBENifT.mjs +7 -0
  55. package/dist/{planner-DsZZEZCA.mjs → planner-DN967Lvm.mjs} +83 -30
  56. package/dist/planner-DN967Lvm.mjs.map +1 -0
  57. package/dist/{program-B5miXqQa.mjs → program-BnsjB57Q.mjs} +278 -92
  58. package/dist/program-BnsjB57Q.mjs.map +1 -0
  59. package/dist/router-C5hPk9YP.mjs +3 -0
  60. package/dist/{router-BdxdsAvs.mjs → router-DjFZIoDl.mjs} +2 -1
  61. package/dist/router-DjFZIoDl.mjs.map +1 -0
  62. package/dist/{run-XaA-UPdW.mjs → run-FeM1_UVa.mjs} +102 -18
  63. package/dist/run-FeM1_UVa.mjs.map +1 -0
  64. package/dist/{run-env-DyTWgZC9.mjs → run-env-CEHTeIUM.mjs} +2 -2
  65. package/dist/{run-env-DyTWgZC9.mjs.map → run-env-CEHTeIUM.mjs.map} +1 -1
  66. package/dist/{server-CzqHGbKt.mjs → server-CekGOJcp.mjs} +2 -2
  67. package/dist/{server-CzqHGbKt.mjs.map → server-CekGOJcp.mjs.map} +1 -1
  68. package/dist/{session-keepalive-DDsEo81Q.mjs → session-keepalive-Bc9aT678.mjs} +5 -5
  69. package/dist/{session-keepalive-DDsEo81Q.mjs.map → session-keepalive-Bc9aT678.mjs.map} +1 -1
  70. package/dist/{tools-Diro2s8J.mjs → tools-qXyHFwNj.mjs} +2 -2
  71. package/dist/{tools-Diro2s8J.mjs.map → tools-qXyHFwNj.mjs.map} +1 -1
  72. package/dist/{tools-KgL1rkPD.mjs → tools-r-7ZG8B5.mjs} +3 -3
  73. package/dist/{wakeup-D0uvqLsE.mjs → wakeup-C48hcN6O.mjs} +2 -2
  74. package/dist/wakeup-C48hcN6O.mjs.map +1 -0
  75. package/dist/{work-queue-worker-DL9lu8sN.mjs → work-queue-worker-BL4dq5P7.mjs} +2 -2
  76. package/dist/{work-queue-worker-DL9lu8sN.mjs.map → work-queue-worker-BL4dq5P7.mjs.map} +1 -1
  77. package/dist/work-queue-worker-DVOVcEnO.mjs +11 -0
  78. package/docker/init.sql +1 -1
  79. package/docs/commands/README.md +4 -4
  80. package/docs/commands/daemon.md +6 -6
  81. package/docs/commands/session.md +2 -2
  82. package/docs/commands/worker.md +5 -2
  83. package/docs/workers-config.md +5 -1
  84. package/package.json +1 -1
  85. package/plugins/context-preservation/hooks/hooks.json +38 -31
  86. package/plugins/context-preservation/plugin.json +1 -4
  87. package/plugins/core/hooks/hooks.json +51 -46
  88. package/plugins/core/plugin.json +1 -4
  89. package/plugins/creative/plugin.json +1 -5
  90. package/plugins/observability/hooks/hooks.json +87 -72
  91. package/plugins/observability/plugin.json +1 -5
  92. package/plugins/productivity/hooks/hooks.json +22 -19
  93. package/plugins/productivity/plugin.json +2 -5
  94. package/plugins/semantic-search/plugin.json +1 -16
  95. package/plugins/ui/hooks/hooks.json +17 -14
  96. package/plugins/ui/plugin.json +1 -5
  97. package/plugins/zettelkasten/plugin.json +1 -14
  98. package/src/hooks/session-autosave.sh +4 -2
  99. package/src/hooks/session-stop.sh +2 -2
  100. package/src/hooks/ts/capture-all-events.ts +3 -3
  101. package/src/hooks/ts/lib/metadata-extraction.ts +3 -2
  102. package/src/hooks/ts/lib/pai-paths.test.ts +1 -1
  103. package/src/hooks/ts/lib/sleep-poll-gate.test.ts +62 -0
  104. package/src/hooks/ts/lib/sleep-poll-gate.ts +77 -0
  105. package/src/hooks/ts/post-tool-use/capture-tool-output.ts +1 -1
  106. package/src/hooks/ts/post-tool-use/sync-todo-to-md.ts +1 -1
  107. package/src/hooks/ts/pre-compact/context-compression-hook.ts +1 -1
  108. package/src/hooks/ts/pre-tool-use/block-sleep-poll.test.ts +44 -0
  109. package/src/hooks/ts/pre-tool-use/block-sleep-poll.ts +50 -0
  110. package/src/hooks/ts/session-end/capture-session-summary.ts +1 -1
  111. package/src/hooks/ts/session-start/initialize-session.ts +2 -2
  112. package/src/hooks/ts/session-start/load-core-context.ts +2 -2
  113. package/src/hooks/ts/session-start/load-project-context.ts +1 -1
  114. package/src/hooks/ts/stop/stop-hook.ts +1 -1
  115. package/src/hooks/ts/user-prompt/cleanup-session-files.ts +1 -1
  116. package/statusline-command.sh +26 -11
  117. package/dist/daemon-B6hx1Ysz.mjs +0 -19
  118. package/dist/daemon-CmqJfeb9.mjs.map +0 -1
  119. package/dist/factory-DiuntvwG.mjs.map +0 -1
  120. package/dist/fallback-B_2ozQHw.mjs.map +0 -1
  121. package/dist/main-resolver-DYNxxNwJ.mjs.map +0 -1
  122. package/dist/main-resolver-Df65bPAi.mjs +0 -7
  123. package/dist/planner-DsZZEZCA.mjs.map +0 -1
  124. package/dist/program-B5miXqQa.mjs.map +0 -1
  125. package/dist/router-BXOf_e9e.mjs +0 -3
  126. package/dist/router-BdxdsAvs.mjs.map +0 -1
  127. package/dist/run-XaA-UPdW.mjs.map +0 -1
  128. package/dist/wakeup-D0uvqLsE.mjs.map +0 -1
  129. package/dist/work-queue-worker-BY7xn4pw.mjs +0 -11
@@ -7370,7 +7370,7 @@ import { join as join5 } from "node:path";
7370
7370
 
7371
7371
  // src/daemon/config.ts
7372
7372
  import { homedir as homedir2, userInfo } from "node:os";
7373
- import { join as join3, dirname as dirname3 } from "node:path";
7373
+ import { join as join3, dirname as dirname3, basename as basename2 } from "node:path";
7374
7374
 
7375
7375
  // src/notifications/types.ts
7376
7376
  var DEFAULT_ROUTING = {
@@ -7453,7 +7453,7 @@ function resolvePaiFile(newPath, oldCandidates, migrateHint) {
7453
7453
 
7454
7454
  // src/config/main-config.ts
7455
7455
  var import_yaml2 = __toESM(require_dist(), 1);
7456
- import { existsSync as existsSync3, readFileSync as readFileSync3, renameSync as renameSync3 } from "node:fs";
7456
+ import { existsSync as existsSync3, readFileSync as readFileSync3, renameSync as renameSync3, chmodSync as chmodSync2 } from "node:fs";
7457
7457
  import { dirname as dirname2, join as join2, basename } from "node:path";
7458
7458
 
7459
7459
  // src/config/json-store.ts
@@ -7464,7 +7464,8 @@ import {
7464
7464
  copyFileSync as copyFileSync2,
7465
7465
  renameSync as renameSync2,
7466
7466
  unlinkSync,
7467
- mkdirSync as mkdirSync2
7467
+ mkdirSync as mkdirSync2,
7468
+ chmodSync
7468
7469
  } from "node:fs";
7469
7470
  function readJsonStrict(path, label = path) {
7470
7471
  if (!existsSync2(path)) return {};
@@ -7584,7 +7585,7 @@ function readMainConfigRaw(path = CONFIG_FILE) {
7584
7585
 
7585
7586
  // src/workers/workers-config.ts
7586
7587
  var import_yaml3 = __toESM(require_dist(), 1);
7587
- import { existsSync as existsSync4, readFileSync as readFileSync4, writeFileSync as writeFileSync2, chmodSync } from "node:fs";
7588
+ import { existsSync as existsSync4, readFileSync as readFileSync4, writeFileSync as writeFileSync2, chmodSync as chmodSync3 } from "node:fs";
7588
7589
  import { homedir as homedir3 } from "node:os";
7589
7590
  import { dirname as dirname4, join as join4 } from "node:path";
7590
7591
  var WORKERS_YAML_FILENAME = "workers.yaml";
@@ -8487,9 +8488,11 @@ function fullContractPrompt(format) {
8487
8488
  "will pick something up later, never leave a background command as your final action. Finish, then",
8488
8489
  "report.",
8489
8490
  "No narration, no timestamps, no greetings, no summaries of what you read; act, verify, then stop.",
8490
- "Never sleep-poll: no `sleep N` over 60 seconds, standalone or leading a compound command.",
8491
- "Long builds and tests run in background with no arbitrary `timeout` \u2014 the task notification",
8492
- "wakes you; read the output then. Wait on a bounded timeout or event instead.",
8491
+ "Never sleep-poll: no `sleep N` over 60 seconds, anywhere in a command \u2014 standalone, after `&&`/`||`/",
8492
+ "`;`/`|`, or inside a loop or subshell. Ending your turn ends this process, so a background job gets",
8493
+ "no later wake-up here: run the long command in the FOREGROUND with a Bash timeout up to 600000 ms;",
8494
+ "if it can run longer than that, start it in the background and wait with a foreground loop that ends",
8495
+ "when the job ends: `while kill -0 <pid> 2>/dev/null; do sleep 15; done`.",
8493
8496
  ...fileNotInlineBlock(),
8494
8497
  "",
8495
8498
  `Operator messages: a user turn starting with ${OPERATOR_MARK} was typed by the operator while you`,