@kynver-app/runtime 0.2.24 → 0.2.29

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 (416) hide show
  1. package/dist/chat/command-auth-proof.js +1 -1
  2. package/dist/cli.js +69 -68
  3. package/dist/index.js +89 -88
  4. package/dist/instruction-bundle/contract.js +2 -2
  5. package/dist/local-run-store/index.js +6 -6
  6. package/dist/server/adapter-contract.js +1 -1
  7. package/dist/server/cleanup.js +9 -9
  8. package/dist/server/db-credentials.js +2 -2
  9. package/dist/server/default-repo.js +1 -1
  10. package/dist/server/heavy-verification.js +1 -1
  11. package/dist/server/memory-cost-enforce.js +2 -2
  12. package/dist/server/memory-cost.js +2 -2
  13. package/dist/server/model-routing.js +3 -3
  14. package/dist/server/monitor.js +5 -5
  15. package/dist/server/orchestration.js +1 -1
  16. package/dist/server/worker-policy.js +2 -2
  17. package/package.json +4 -2
  18. package/dist/active-harness-workers.d.ts +0 -11
  19. package/dist/auto-complete.d.ts +0 -60
  20. package/dist/bootstrap.d.ts +0 -49
  21. package/dist/bounded-build/admission.d.ts +0 -30
  22. package/dist/bounded-build/constants.d.ts +0 -10
  23. package/dist/bounded-build/exec.d.ts +0 -35
  24. package/dist/bounded-build/index.d.ts +0 -6
  25. package/dist/bounded-build/meminfo.d.ts +0 -5
  26. package/dist/bounded-build/node-options.d.ts +0 -9
  27. package/dist/bounded-build/systemd-wrap.d.ts +0 -17
  28. package/dist/box-identity.d.ts +0 -19
  29. package/dist/box-resource-snapshot-shared.d.ts +0 -13
  30. package/dist/box-resource-snapshot.d.ts +0 -45
  31. package/dist/box-worker-cap.d.ts +0 -9
  32. package/dist/byoc/context-hydration.d.ts +0 -54
  33. package/dist/byoc/execution-proof.d.ts +0 -46
  34. package/dist/byoc/index.d.ts +0 -5
  35. package/dist/byoc/job-envelope.d.ts +0 -39
  36. package/dist/byoc/m6-golden-path.d.ts +0 -86
  37. package/dist/byoc/mcp-tool-proof.d.ts +0 -42
  38. package/dist/callback-headers.d.ts +0 -2
  39. package/dist/callbacks.d.ts +0 -74
  40. package/dist/chat/anthropic-credentials.d.ts +0 -11
  41. package/dist/chat/anthropic-stream.d.ts +0 -43
  42. package/dist/chat/chat-claim-loop.d.ts +0 -41
  43. package/dist/chat/chat-primary-cli.d.ts +0 -2
  44. package/dist/chat/command-allowlist.d.ts +0 -8
  45. package/dist/chat/command-auth-proof.d.ts +0 -67
  46. package/dist/chat/command-executor.d.ts +0 -18
  47. package/dist/chat/delta-batcher.d.ts +0 -13
  48. package/dist/cleanup-active-worktrees.d.ts +0 -14
  49. package/dist/cleanup-build-cache-paths.d.ts +0 -5
  50. package/dist/cleanup-cli.d.ts +0 -1
  51. package/dist/cleanup-completion-blocker.d.ts +0 -10
  52. package/dist/cleanup-dependency-scan.d.ts +0 -13
  53. package/dist/cleanup-dir-size.d.ts +0 -5
  54. package/dist/cleanup-disk-pressure.d.ts +0 -15
  55. package/dist/cleanup-duplicate-worktrees.d.ts +0 -8
  56. package/dist/cleanup-evidence.d.ts +0 -10
  57. package/dist/cleanup-execute.d.ts +0 -7
  58. package/dist/cleanup-git-probe.d.ts +0 -5
  59. package/dist/cleanup-git-rev-cache.d.ts +0 -5
  60. package/dist/cleanup-git-status-cache.d.ts +0 -5
  61. package/dist/cleanup-guards-helpers.d.ts +0 -2
  62. package/dist/cleanup-guards.d.ts +0 -53
  63. package/dist/cleanup-harness-path-validate.d.ts +0 -5
  64. package/dist/cleanup-harness-roots.d.ts +0 -6
  65. package/dist/cleanup-index-status.d.ts +0 -16
  66. package/dist/cleanup-orphan-safety.d.ts +0 -17
  67. package/dist/cleanup-path-ownership.d.ts +0 -9
  68. package/dist/cleanup-privileged-remove.d.ts +0 -13
  69. package/dist/cleanup-progress.d.ts +0 -2
  70. package/dist/cleanup-remove-path.d.ts +0 -17
  71. package/dist/cleanup-retention-config.d.ts +0 -26
  72. package/dist/cleanup-run-directory.d.ts +0 -20
  73. package/dist/cleanup-run-liveness.d.ts +0 -21
  74. package/dist/cleanup-run-terminal-cache.d.ts +0 -6
  75. package/dist/cleanup-salvage-evidence.d.ts +0 -33
  76. package/dist/cleanup-scan.d.ts +0 -15
  77. package/dist/cleanup-summary.d.ts +0 -29
  78. package/dist/cleanup-types.d.ts +0 -154
  79. package/dist/cleanup-worker-harness-live.d.ts +0 -9
  80. package/dist/cleanup-worktree-index.d.ts +0 -18
  81. package/dist/cleanup-worktree-salvage.d.ts +0 -7
  82. package/dist/cleanup.d.ts +0 -5
  83. package/dist/cli-output/worker-start-stdout.d.ts +0 -11
  84. package/dist/cli.d.ts +0 -14
  85. package/dist/command-center-contract-cli.d.ts +0 -1
  86. package/dist/completion-ack.d.ts +0 -18
  87. package/dist/completion-replay.d.ts +0 -10
  88. package/dist/completion-response.d.ts +0 -15
  89. package/dist/config.d.ts +0 -122
  90. package/dist/context-budget-receipt.d.ts +0 -96
  91. package/dist/context-preview/chat-memory-preview.d.ts +0 -33
  92. package/dist/cron/cron-cli-bin.d.ts +0 -7
  93. package/dist/cron/cron-env-file.d.ts +0 -22
  94. package/dist/cron/cron-env.d.ts +0 -21
  95. package/dist/cron/cron-fire.d.ts +0 -8
  96. package/dist/cron/cron-id.d.ts +0 -3
  97. package/dist/cron/cron-install-api.d.ts +0 -27
  98. package/dist/cron/cron-install-cli.d.ts +0 -2
  99. package/dist/cron/cron-install-plan.d.ts +0 -34
  100. package/dist/cron/cron-install-secrets.d.ts +0 -6
  101. package/dist/cron/cron-install-systemd.d.ts +0 -18
  102. package/dist/cron/cron-install-verify.d.ts +0 -15
  103. package/dist/cron/cron-install.d.ts +0 -51
  104. package/dist/cron/cron-lock.d.ts +0 -9
  105. package/dist/cron/cron-match.d.ts +0 -8
  106. package/dist/cron/cron-readiness.d.ts +0 -35
  107. package/dist/cron/cron-status.d.ts +0 -10
  108. package/dist/cron/cron-store.d.ts +0 -8
  109. package/dist/cron/cron-tick-cli.d.ts +0 -2
  110. package/dist/cron/cron-tick-state.d.ts +0 -5
  111. package/dist/cron/cron-tick.d.ts +0 -19
  112. package/dist/cron/cron-types.d.ts +0 -53
  113. package/dist/cron/hermes-provider-notice.d.ts +0 -1
  114. package/dist/daemon-box-identity.d.ts +0 -16
  115. package/dist/daemon-heartbeat.d.ts +0 -30
  116. package/dist/daemon-keeper.d.ts +0 -53
  117. package/dist/daemon-platform-guard.d.ts +0 -2
  118. package/dist/daemon-supervision/host.d.ts +0 -4
  119. package/dist/daemon-supervision/index.d.ts +0 -6
  120. package/dist/daemon-supervision/policy.d.ts +0 -16
  121. package/dist/daemon-supervision/setup.d.ts +0 -23
  122. package/dist/daemon-supervision/start.d.ts +0 -26
  123. package/dist/daemon-supervision/supervision-health.d.ts +0 -20
  124. package/dist/daemon-supervision/verify.d.ts +0 -13
  125. package/dist/daemon.d.ts +0 -5
  126. package/dist/db-credential-env-paths.d.ts +0 -13
  127. package/dist/db-credential-resolver.d.ts +0 -38
  128. package/dist/db-url-hint.d.ts +0 -4
  129. package/dist/default-repo-cli.d.ts +0 -20
  130. package/dist/default-repo-discovery.d.ts +0 -25
  131. package/dist/default-repo.d.ts +0 -32
  132. package/dist/device-login.d.ts +0 -8
  133. package/dist/discard-disposable.d.ts +0 -6
  134. package/dist/disk-gate.d.ts +0 -25
  135. package/dist/dispatch-callback-timeout.d.ts +0 -1
  136. package/dist/dispatch-claim-release.d.ts +0 -23
  137. package/dist/dispatch-lane-normalization.d.ts +0 -14
  138. package/dist/dispatch-model-guard.d.ts +0 -26
  139. package/dist/dispatch-progress.d.ts +0 -3
  140. package/dist/dispatch-resource-gate.d.ts +0 -20
  141. package/dist/dispatch-start-abort.d.ts +0 -3
  142. package/dist/dispatch-start-readback.d.ts +0 -27
  143. package/dist/dispatch.d.ts +0 -24
  144. package/dist/disposable-artifacts.d.ts +0 -2
  145. package/dist/doctor/context-envelope-cli.d.ts +0 -1
  146. package/dist/doctor/context-envelope.d.ts +0 -13
  147. package/dist/doctor/context-envelope.probes.d.ts +0 -25
  148. package/dist/doctor/context-envelope.types.d.ts +0 -42
  149. package/dist/doctor/doctor.types.d.ts +0 -50
  150. package/dist/doctor/github-readiness.d.ts +0 -16
  151. package/dist/doctor/index.d.ts +0 -7
  152. package/dist/doctor/local-store-cli.d.ts +0 -11
  153. package/dist/doctor/local-store.d.ts +0 -35
  154. package/dist/doctor/node-runtime-cli.d.ts +0 -6
  155. package/dist/doctor/node-runtime.d.ts +0 -19
  156. package/dist/doctor/runner-install-cli.d.ts +0 -1
  157. package/dist/doctor/runner-install.d.ts +0 -86
  158. package/dist/doctor/runtime-takeover-cli.d.ts +0 -1
  159. package/dist/doctor/runtime-takeover-daemon-supervision.d.ts +0 -3
  160. package/dist/doctor/runtime-takeover-deploy-evidence.d.ts +0 -13
  161. package/dist/doctor/runtime-takeover-scheduler.d.ts +0 -29
  162. package/dist/doctor/runtime-takeover.d.ts +0 -3
  163. package/dist/doctor/runtime-takeover.probes.d.ts +0 -45
  164. package/dist/executor-ref-routing.d.ts +0 -14
  165. package/dist/exit-classify.d.ts +0 -12
  166. package/dist/exited-salvage.d.ts +0 -22
  167. package/dist/exited-worker-handoff-capture.d.ts +0 -19
  168. package/dist/factory-status/collect.d.ts +0 -12
  169. package/dist/factory-status/lightweight.d.ts +0 -5
  170. package/dist/factory-status/render.d.ts +0 -5
  171. package/dist/factory-status/types.d.ts +0 -46
  172. package/dist/factory-status-cli.d.ts +0 -1
  173. package/dist/factory-steer-delivery.d.ts +0 -7
  174. package/dist/finalize.d.ts +0 -25
  175. package/dist/fortress-engagement-gate.d.ts +0 -5
  176. package/dist/git.d.ts +0 -37
  177. package/dist/github-repo.d.ts +0 -5
  178. package/dist/harness-expert-review.d.ts +0 -12
  179. package/dist/harness-lease-owner.d.ts +0 -13
  180. package/dist/harness-notice/harness-notice.auto-complete.d.ts +0 -3
  181. package/dist/harness-notice/harness-notice.monitor-tick.d.ts +0 -6
  182. package/dist/harness-notice/harness-notice.parse.d.ts +0 -3
  183. package/dist/harness-notice/harness-notice.tool-response.d.ts +0 -3
  184. package/dist/harness-notice/harness-notice.types.d.ts +0 -17
  185. package/dist/harness-notice/harness-notice.worker-complete.d.ts +0 -3
  186. package/dist/harness-notice/harness-notice.worker-start.d.ts +0 -7
  187. package/dist/harness-notice/harness-notice.worker-status.d.ts +0 -2
  188. package/dist/harness-notice/index.d.ts +0 -8
  189. package/dist/harness-repair-target.d.ts +0 -23
  190. package/dist/harness-storage-snapshot.d.ts +0 -26
  191. package/dist/harness-verify-cli.d.ts +0 -1
  192. package/dist/harness-verify.d.ts +0 -30
  193. package/dist/harness-worker-active.d.ts +0 -12
  194. package/dist/harness-worktree-build-guard.d.ts +0 -12
  195. package/dist/heartbeat-final-result.d.ts +0 -5
  196. package/dist/heartbeat.d.ts +0 -27
  197. package/dist/heavy-verification/command-classify.d.ts +0 -9
  198. package/dist/heavy-verification/gate.d.ts +0 -10
  199. package/dist/heavy-verification/index.d.ts +0 -5
  200. package/dist/heavy-verification/paths.d.ts +0 -3
  201. package/dist/heavy-verification/slot.d.ts +0 -49
  202. package/dist/heavy-verification/worker-command-gate.d.ts +0 -23
  203. package/dist/index.d.ts +0 -88
  204. package/dist/installed-package-versions.d.ts +0 -8
  205. package/dist/instruction-bundle/cache.d.ts +0 -6
  206. package/dist/instruction-bundle/client.d.ts +0 -25
  207. package/dist/instruction-bundle/contract.d.ts +0 -4
  208. package/dist/instruction-bundle/embedded-bundle.d.ts +0 -3
  209. package/dist/instruction-bundle/index.d.ts +0 -7
  210. package/dist/instruction-bundle/keys.d.ts +0 -14
  211. package/dist/instruction-bundle/state.d.ts +0 -24
  212. package/dist/instruction-bundle/types.d.ts +0 -42
  213. package/dist/instruction-bundle/verify.d.ts +0 -15
  214. package/dist/landing/cli-auth.d.ts +0 -11
  215. package/dist/landing/land-pr-check-classify.d.ts +0 -17
  216. package/dist/landing/land-pr-completion-post.d.ts +0 -12
  217. package/dist/landing/land-pr.d.ts +0 -28
  218. package/dist/landing-contract-gate.d.ts +0 -27
  219. package/dist/landing-contract-pr-classify.d.ts +0 -4
  220. package/dist/landing-gate.d.ts +0 -24
  221. package/dist/lane/landing-maintainer-local.d.ts +0 -15
  222. package/dist/lane/landing-maintainer-tick.d.ts +0 -16
  223. package/dist/lane/lane-spec.d.ts +0 -8
  224. package/dist/lane/lane-tick-cli.d.ts +0 -1
  225. package/dist/lease-renewal.d.ts +0 -15
  226. package/dist/local-pr-attention-reconcile.d.ts +0 -25
  227. package/dist/local-run-store/admission-enforce.d.ts +0 -38
  228. package/dist/local-run-store/admission-shadow.d.ts +0 -56
  229. package/dist/local-run-store/dispatch-claim-recovery-startup.d.ts +0 -11
  230. package/dist/local-run-store/dispatch-claim-recovery.d.ts +0 -54
  231. package/dist/local-run-store/dispatch-receipts.d.ts +0 -90
  232. package/dist/local-run-store/index.d.ts +0 -15
  233. package/dist/local-run-store/local-run-store.d.ts +0 -106
  234. package/dist/local-run-store/remote-surface-flags.d.ts +0 -15
  235. package/dist/local-run-store/small-surfaces.d.ts +0 -37
  236. package/dist/local-run-store/sqlite/sqlite-filesystem-policy.d.ts +0 -16
  237. package/dist/local-run-store/sqlite/sqlite-local-run-store.d.ts +0 -68
  238. package/dist/local-run-store/sqlite/sqlite-recovery.d.ts +0 -14
  239. package/dist/local-run-store/sqlite/sqlite-schema.d.ts +0 -13
  240. package/dist/local-run-store/store-lifecycle.d.ts +0 -38
  241. package/dist/local-run-store/surface-flags.d.ts +0 -47
  242. package/dist/local-run-store/tick-posture.d.ts +0 -27
  243. package/dist/material-worktree-changes.d.ts +0 -2
  244. package/dist/memory-cost-package-version-guard-enforce.d.ts +0 -10
  245. package/dist/memory-cost-package-version-guard.d.ts +0 -49
  246. package/dist/mesh-liveness/mesh-cron-lease-store.d.ts +0 -9
  247. package/dist/model-routing-task-enrich.d.ts +0 -8
  248. package/dist/model-routing.d.ts +0 -49
  249. package/dist/monitor/index.d.ts +0 -7
  250. package/dist/monitor/monitor-cli.d.ts +0 -9
  251. package/dist/monitor/monitor-loop.d.ts +0 -1
  252. package/dist/monitor/monitor-spawn.d.ts +0 -18
  253. package/dist/monitor/monitor.classify.d.ts +0 -15
  254. package/dist/monitor/monitor.service.d.ts +0 -17
  255. package/dist/monitor/monitor.store.d.ts +0 -6
  256. package/dist/monitor/monitor.task-lease.d.ts +0 -11
  257. package/dist/monitor/monitor.terminal.d.ts +0 -11
  258. package/dist/monitor/monitor.types.d.ts +0 -77
  259. package/dist/node-runtime-policy.d.ts +0 -25
  260. package/dist/orchestration-enforcement/config.d.ts +0 -5
  261. package/dist/orchestration-enforcement/evaluator.d.ts +0 -6
  262. package/dist/orchestration-enforcement/idempotency.d.ts +0 -8
  263. package/dist/orchestration-enforcement/index.d.ts +0 -4
  264. package/dist/orchestration-enforcement/types.d.ts +0 -24
  265. package/dist/orchestration-providers/adapter-contract.d.ts +0 -50
  266. package/dist/orchestration-providers/audit.d.ts +0 -3
  267. package/dist/orchestration-providers/capabilities.d.ts +0 -3
  268. package/dist/orchestration-providers/claude-oauth-binding.d.ts +0 -6
  269. package/dist/orchestration-providers/codex-oauth-binding.d.ts +0 -5
  270. package/dist/orchestration-providers/codex-orchestration-adapter.d.ts +0 -13
  271. package/dist/orchestration-providers/cost-router.d.ts +0 -24
  272. package/dist/orchestration-providers/cursor-oauth-binding.d.ts +0 -5
  273. package/dist/orchestration-providers/hermes-cli-adapter.d.ts +0 -15
  274. package/dist/orchestration-providers/hermes-openai-codex-binding.d.ts +0 -15
  275. package/dist/orchestration-providers/index.d.ts +0 -14
  276. package/dist/orchestration-providers/inventory.d.ts +0 -54
  277. package/dist/orchestration-providers/oauth-binding-utils.d.ts +0 -22
  278. package/dist/orchestration-providers/routing.d.ts +0 -16
  279. package/dist/orchestration-providers/types.d.ts +0 -45
  280. package/dist/package-version.d.ts +0 -5
  281. package/dist/path-values.d.ts +0 -5
  282. package/dist/paths.d.ts +0 -16
  283. package/dist/pipeline-dispatch.d.ts +0 -8
  284. package/dist/pipeline-exact-targets.d.ts +0 -2
  285. package/dist/pipeline-max-starts.d.ts +0 -26
  286. package/dist/pipeline-tick.d.ts +0 -50
  287. package/dist/plan-persist/agentos-api.d.ts +0 -28
  288. package/dist/plan-persist/body-hash.d.ts +0 -3
  289. package/dist/plan-persist/drain.d.ts +0 -7
  290. package/dist/plan-persist/errors.d.ts +0 -9
  291. package/dist/plan-persist/handoff.d.ts +0 -7
  292. package/dist/plan-persist/idempotency.d.ts +0 -2
  293. package/dist/plan-persist/index.d.ts +0 -8
  294. package/dist/plan-persist/outbox-durability.d.ts +0 -31
  295. package/dist/plan-persist/outbox-store.d.ts +0 -36
  296. package/dist/plan-persist/paths.d.ts +0 -8
  297. package/dist/plan-persist/persist.d.ts +0 -10
  298. package/dist/plan-persist/readback.d.ts +0 -17
  299. package/dist/plan-persist/types.d.ts +0 -95
  300. package/dist/plan-persist-cli.d.ts +0 -3
  301. package/dist/plan-progress-daemon-sync.d.ts +0 -7
  302. package/dist/plan-progress-sync.d.ts +0 -21
  303. package/dist/plan-progress.d.ts +0 -10
  304. package/dist/post-restart-unblock.d.ts +0 -24
  305. package/dist/pr-handoff/index.d.ts +0 -6
  306. package/dist/pr-handoff/pr-handoff-assess.d.ts +0 -44
  307. package/dist/pr-handoff/pr-handoff-dedupe.d.ts +0 -18
  308. package/dist/pr-handoff/pr-handoff-gh.d.ts +0 -52
  309. package/dist/pr-handoff/pr-handoff-supersede.d.ts +0 -17
  310. package/dist/pr-handoff/pr-handoff.d.ts +0 -8
  311. package/dist/pr-handoff/pr-handoff.types.d.ts +0 -45
  312. package/dist/pr-handoff/same-head-pr-guard.d.ts +0 -10
  313. package/dist/prompt.d.ts +0 -56
  314. package/dist/provider-evidence/collect.d.ts +0 -31
  315. package/dist/provider-evidence/exec.d.ts +0 -5
  316. package/dist/provider-evidence/index.d.ts +0 -7
  317. package/dist/provider-evidence/recipes-github.d.ts +0 -5
  318. package/dist/provider-evidence/recipes-vercel.d.ts +0 -2
  319. package/dist/provider-evidence/registry.d.ts +0 -6
  320. package/dist/provider-evidence/shared-cache.d.ts +0 -8
  321. package/dist/provider-evidence/types.d.ts +0 -48
  322. package/dist/provider-evidence/wanted-store.d.ts +0 -13
  323. package/dist/provider-quota-preflight.d.ts +0 -38
  324. package/dist/providers/claude.d.ts +0 -8
  325. package/dist/providers/codex.d.ts +0 -14
  326. package/dist/providers/cursor-windows.d.ts +0 -7
  327. package/dist/providers/cursor.d.ts +0 -13
  328. package/dist/providers/hermes-codex.d.ts +0 -12
  329. package/dist/providers/model-preflight.d.ts +0 -41
  330. package/dist/providers/openai-codex-resilience.d.ts +0 -33
  331. package/dist/providers/openai-compatible-response.d.ts +0 -23
  332. package/dist/providers/openai-compatible-runner.d.ts +0 -1
  333. package/dist/providers/openai-compatible.d.ts +0 -46
  334. package/dist/providers/registry.d.ts +0 -4
  335. package/dist/providers/types.d.ts +0 -36
  336. package/dist/redact.d.ts +0 -1
  337. package/dist/repair-target-worktree.d.ts +0 -4
  338. package/dist/repo-search.d.ts +0 -53
  339. package/dist/resource-gate.d.ts +0 -74
  340. package/dist/retry-limits.d.ts +0 -12
  341. package/dist/review-head-reconcile.d.ts +0 -17
  342. package/dist/run-list.d.ts +0 -38
  343. package/dist/run-metadata-retention.d.ts +0 -38
  344. package/dist/run-resolve.d.ts +0 -4
  345. package/dist/run-store.d.ts +0 -38
  346. package/dist/run-worker-index.d.ts +0 -10
  347. package/dist/runner-boundary/index.d.ts +0 -6
  348. package/dist/runner-boundary/runner-boundary.dispatch-guard.d.ts +0 -4
  349. package/dist/runner-boundary/runner-boundary.forge-legacy-migration.d.ts +0 -23
  350. package/dist/runner-boundary/runner-boundary.harness-root.d.ts +0 -17
  351. package/dist/runner-boundary/runner-boundary.resolve.d.ts +0 -4
  352. package/dist/runner-boundary/runner-boundary.run-guard.d.ts +0 -12
  353. package/dist/runner-boundary/runner-boundary.types.d.ts +0 -31
  354. package/dist/runner-config-backfill.d.ts +0 -18
  355. package/dist/runner-identity.d.ts +0 -21
  356. package/dist/runtime-identity.d.ts +0 -9
  357. package/dist/runtime-memory-envelope.d.ts +0 -16
  358. package/dist/scheduler-cutover-cli.d.ts +0 -2
  359. package/dist/scheduler-cutover.d.ts +0 -25
  360. package/dist/security-review-environment.d.ts +0 -27
  361. package/dist/server/adapter-contract.d.ts +0 -1
  362. package/dist/server/cleanup.d.ts +0 -3
  363. package/dist/server/context-budget-receipt.d.ts +0 -2
  364. package/dist/server/db-credentials.d.ts +0 -1
  365. package/dist/server/default-repo.d.ts +0 -1
  366. package/dist/server/harness-notice.d.ts +0 -2
  367. package/dist/server/heavy-verification.d.ts +0 -3
  368. package/dist/server/landing.d.ts +0 -1
  369. package/dist/server/memory-cost-enforce.d.ts +0 -1
  370. package/dist/server/memory-cost.d.ts +0 -1
  371. package/dist/server/model-routing.d.ts +0 -3
  372. package/dist/server/monitor.d.ts +0 -3
  373. package/dist/server/node-runtime-policy.d.ts +0 -1
  374. package/dist/server/orchestration.d.ts +0 -10
  375. package/dist/server/pr-evidence.d.ts +0 -2
  376. package/dist/server/prompt.d.ts +0 -1
  377. package/dist/server/repo-search.d.ts +0 -1
  378. package/dist/server/worker-policy.d.ts +0 -6
  379. package/dist/server/wsl-crash-dumps.d.ts +0 -2
  380. package/dist/shell-command-outcome.d.ts +0 -32
  381. package/dist/sidecar-cli.d.ts +0 -16
  382. package/dist/stale-reconcile.d.ts +0 -31
  383. package/dist/start-box-identity.d.ts +0 -12
  384. package/dist/start.d.ts +0 -13
  385. package/dist/status.d.ts +0 -262
  386. package/dist/stream.d.ts +0 -33
  387. package/dist/supervisor.d.ts +0 -40
  388. package/dist/sweep.d.ts +0 -1
  389. package/dist/util.d.ts +0 -35
  390. package/dist/validate.d.ts +0 -15
  391. package/dist/vercel/index.d.ts +0 -4
  392. package/dist/vercel/vercel-api.d.ts +0 -17
  393. package/dist/vercel/vercel-evidence.d.ts +0 -48
  394. package/dist/vercel/vercel-github-status.d.ts +0 -19
  395. package/dist/vercel/vercel-url.d.ts +0 -18
  396. package/dist/verify-live/verify-live-prompt.d.ts +0 -2
  397. package/dist/worker-cap-source.d.ts +0 -29
  398. package/dist/worker-env.d.ts +0 -52
  399. package/dist/worker-execution-mode.d.ts +0 -5
  400. package/dist/worker-final-result-embed.d.ts +0 -1
  401. package/dist/worker-lease-sync.d.ts +0 -15
  402. package/dist/worker-lifecycle.d.ts +0 -28
  403. package/dist/worker-metadata-paths.d.ts +0 -26
  404. package/dist/worker-metadata-reconcile.d.ts +0 -21
  405. package/dist/worker-ops.d.ts +0 -45
  406. package/dist/worker-persona-catalog.d.ts +0 -29
  407. package/dist/worker-provider-policy.d.ts +0 -43
  408. package/dist/worker-usage.d.ts +0 -20
  409. package/dist/workspace-runtime-config.d.ts +0 -10
  410. package/dist/worktree-base-ref.d.ts +0 -34
  411. package/dist/worktree-completion-handoff.d.ts +0 -17
  412. package/dist/worktree.d.ts +0 -44
  413. package/dist/wsl-crash-dumps-cleanup.d.ts +0 -31
  414. package/dist/wsl-crash-dumps-cli.d.ts +0 -1
  415. package/dist/wsl-crash-dumps.d.ts +0 -90
  416. package/dist/wsl-host.d.ts +0 -71
@@ -1,16 +1,16 @@
1
- var f=(e,r,n)=>()=>{if(n)throw n[0];try{return e&&(r=e(e=0)),r}catch(t){throw n=[t],t}};import{existsSync as Es,mkdirSync as ws,readFileSync as Un,readdirSync as qu,renameSync as As,rmSync as Ps,statSync as Bn,writeFileSync as Is}from"node:fs";import{randomBytes as Os}from"node:crypto";import Ds from"node:path";function jr(e){console.error(e),process.exit(1)}function $r(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function Ge(e){try{return JSON.parse(e)}catch{return null}}function _(e,r){try{return JSON.parse(Un(e,"utf8"))}catch(n){if(arguments.length>1)return r;jr(`failed to read ${e}: ${n.message}`)}}function Kn(e,r){ws(Ds.dirname(e),{recursive:!0});let n=`${e}.${process.pid}.${Os(4).toString("hex")}.tmp`;try{Is(n,`${JSON.stringify(r,null,2)}
1
+ var f=(e,r,n)=>()=>{if(n)throw n[0];try{return e&&(r=e(e=0)),r}catch(t){throw n=[t],t}};import{existsSync as Es,mkdirSync as ws,readFileSync as Un,readdirSync as qu,renameSync as As,rmSync as Ps,statSync as Bn,writeFileSync as Os}from"node:fs";import{randomBytes as Is}from"node:crypto";import Ds from"node:path";function jr(e){console.error(e),process.exit(1)}function $r(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}function Ge(e){try{return JSON.parse(e)}catch{return null}}function _(e,r){try{return JSON.parse(Un(e,"utf8"))}catch(n){if(arguments.length>1)return r;jr(`failed to read ${e}: ${n.message}`)}}function Kn(e,r){ws(Ds.dirname(e),{recursive:!0});let n=`${e}.${process.pid}.${Is(4).toString("hex")}.tmp`;try{Os(n,`${JSON.stringify(r,null,2)}
2
2
  `),As(n,e)}catch(t){try{Ps(n,{force:!0})}catch{}throw t}}function v(e){return String(e||"").toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"worker"}function Ye(e){try{return Bn(e).size}catch{return 0}}function Ve(e){try{return Bn(e).mtime.toISOString()}catch{return null}}function Fn(e,r){return Es(e)?Un(e,"utf8").split(`
3
3
  `).slice(-r).join(`
4
- `):""}function Z(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Hn(e){let r=null,n=-1/0;for(let t of e){if(!t)continue;let o=Date.parse(t);Number.isFinite(o)&&o>n&&(n=o,r=t)}return r}function Gr(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var b=f(()=>{"use strict"});var Ns,rl,Ws,nl,Ln=f(()=>{"use strict";Ns=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],rl=new Set(Ns),Ws=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],nl=new Set(Ws)});import{spawnSync as $n}from"node:child_process";function ke(e,r,n={}){let t=$n("git",r,$r({cwd:e,encoding:"utf8"}));if(t.status!==0&&!n.allowFailure){let o=`git ${r.join(" ")} failed: ${t.stderr||t.stdout}`;if(n.throwError)throw new Error(o);jr(o)}return t.stdout||""}function Pe(e){return ke(e,["status","--short"],{allowFailure:!0}).split(`
5
- `).map(r=>r.trim()).filter(Boolean)}function w(e,r){try{let n=$n("git",r,$r({cwd:e,encoding:"utf8"}));return{status:n.status,stdout:n.stdout||"",stderr:n.stderr||"",error:n.error?n.error.message:null}}catch(n){return{status:null,stdout:"",stderr:"",error:n.message}}}function jn(e,r,n){let t=w(e,["merge-base","--is-ancestor",r,n]);return t.status===0?{isAncestor:!0,error:null}:t.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:t.error||t.stderr||t.stdout||`git exited ${t.status}`}}function ze(e,r="origin/main"){let n=typeof r=="string"?{base:r}:r,t=n.baseCommit?.trim()||n.base?.trim()||"origin/main",o=n.baseCommit?.trim()||null;if(!e)return Yr(t,"missing worktree path");let s=w(e,["rev-parse","HEAD"]);if(s.status!==0)return Yr(t,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let m=w(e,["rev-parse",t]);if(m.status!==0)return Yr(t,m.error||m.stderr||m.stdout||`failed to resolve ${t}`,s.stdout.trim());i=m.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:t,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let u=jn(e,i,a),l=jn(e,a,i),c=u.error||l.error||void 0;if(u.isAncestor==null||l.isAncestor==null)return{checked:!1,base:t,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:l.isAncestor,relation:"unknown",...c?{error:c}:{}};let d=u.isAncestor?"ahead":l.isAncestor?"merged":"diverged";return{checked:!0,base:t,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:l.isAncestor,relation:d,...c?{error:c}:{}}}function Yr(e,r,n=null){return{checked:!1,base:e,head:n,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var F=f(()=>{"use strict";b();Ln()});import{homedir as Gn}from"node:os";import Yn from"node:path";function Ms(e){return e==="~"?Gn():e.startsWith("~/")||e.startsWith("~\\")?Yn.join(Gn(),e.slice(2)):e}function Je(e){return Yn.resolve(Ms(e))}var Re=f(()=>{"use strict"});var Xe=f(()=>{"use strict";F();Re()});function te(e){let r=(e??"").trim().toLowerCase();return r==="ghost"||r==="forge"?r:r.includes("forge")?"forge":r.includes("ghost")||r.includes("openclaw")?"ghost":"forge"}function qe(e,r){return e[r]?.trim()||null}function Vn(e){let r=e?.split(":")[0]?.trim();return r?te(r):null}function ye(e=process.env,r={}){let n=[],t=Vn(r.boxId),o=Vn(qe(e,"KYNVER_BOX_ID")),s=r.boxKind?.trim();if(s)return t&&t!==te(s)&&n.push(`config.boxId=${r.boxId} conflicts with boxKind=${s}; using explicit boxKind=${s}`),{boxKind:te(s),source:"config",slugInferenceBlocked:!1,warnings:n};let i=qe(e,"KYNVER_BOX_KIND");if(i)return o&&o!==te(i)&&n.push(`KYNVER_BOX_ID=${qe(e,"KYNVER_BOX_ID")} conflicts with KYNVER_BOX_KIND=${i}; using explicit KYNVER_BOX_KIND=${i}`),{boxKind:te(i),source:"env",slugInferenceBlocked:!1,warnings:n};if(t)return{boxKind:t,source:"config",slugInferenceBlocked:!1,warnings:n};if(o)return{boxKind:o,source:"env",slugInferenceBlocked:!1,warnings:n};let a=qe(e,"KYNVER_AGENT_OS_SLUG");return a&&n.push(`KYNVER_AGENT_OS_SLUG=${a} is a workspace slug, not box identity \u2014 set boxKind via \`kynver setup --box-kind forge|ghost\` or KYNVER_BOX_KIND (defaulting box kind to forge)`),{boxKind:"forge",source:"default",slugInferenceBlocked:!!a,warnings:n}}var oe=f(()=>{"use strict"});function Vr(e,r){return e==="forge"?4:Math.max(1,r)}function Ze(e,r){return e==="forge"?Math.min(Math.max(1,r),4):Math.max(1,r)}var Qe=f(()=>{"use strict"});var zn=f(()=>{"use strict"});import{existsSync as Ts,readFileSync as Us,statfsSync as Bs}from"node:fs";function zr(){if(process.platform!=="linux")return!1;for(let e of["/proc/sys/kernel/osrelease","/proc/version"])try{if(!Ts(e))continue;let r=Us(e,"utf8");if(/microsoft|wsl/i.test(r))return!0}catch{}return!1}function Jn(e={}){if(!(e.forceWsl===void 0?zr():e.forceWsl))return null;let n=e.wslHostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||be,t=e.wslHostFreeWarnBytes??Ks,o=e.wslHostFreeCriticalBytes??Fs,s=e.statfs??Bs,i;try{i=s(n)}catch(R){return{ok:!1,path:n,freeBytes:0,totalBytes:0,usedPercent:100,warnBelowBytes:t,criticalBelowBytes:o,reason:`Windows host disk probe failed at ${n}: ${R.message}`,probeError:R.message}}let a=Number(i.bavail)*Number(i.bsize),u=Number(i.blocks)*Number(i.bsize),l=u>0?(u-a)/u*100:100,c=a<t,d=a<o,m=!c&&!d,g=(a/(1024*1024*1024)).toFixed(1),p=null;return m||(p=`Windows host disk ${n} at ${d?"critical":"warning"}: ${g} GiB free (<${(d?o:t)/1024/1024/1024} GiB); WSL VHDX cannot grow safely. ${Hs()}`),{ok:m,path:n,freeBytes:a,totalBytes:u,usedPercent:l,warnBelowBytes:t,criticalBelowBytes:o,reason:p,probeError:null}}function Hs(){return"Recovery: 1) free Windows C: (empty Recycle Bin / Storage Sense / clear %TEMP% and %LOCALAPPDATA%\\Temp\\wsl-crashes); 2) shut down WSL (`wsl --shutdown`) then compact the VHDX (`Optimize-VHD` or `diskpart compact vdisk`); 3) clear local node_modules / .next / harness worktrees before restarting workers; 4) disable recurring dumps via `%USERPROFILE%/.wslconfig` (`maxCrashDumpCount=-1`) or `kynver wsl-crashes --execute`. Full runbook: docs/runbooks/wsl-disk-pressure.md."}var Ks,Fs,be,Jr=f(()=>{"use strict";Ks=25*1024*1024*1024,Fs=12*1024*1024*1024,be="/mnt/c"});import{execFileSync as Xn}from"node:child_process";import{existsSync as rr,readFileSync as qn,readdirSync as Ls,statSync as js}from"node:fs";import Xr from"node:path";function er(e,r){let n=process.env[e];if(!n)return r;let t=Number(n);return Number.isFinite(t)?t:r}function Zn(){let e=process.env.KYNVER_WSL_WIN_USER?.trim();if(e)return e;try{let t=Xn("cmd.exe",["/c","echo","%USERNAME%"],{encoding:"utf8",timeout:5e3,stdio:["ignore","pipe","ignore"]}).trim();if(t&&t!=="%USERNAME%"&&!t.includes("%"))return t}catch{}let r=process.env.USER?.trim()||process.env.LOGNAME?.trim(),n=process.env.KYNVER_WSL_HOST_MOUNT?.trim()||be;return r&&rr(Xr.join(n,"Users",r))?r:null}function zs(e={}){let r=e.crashDumpDir?.trim()||process.env.KYNVER_WSL_CRASH_DUMP_DIR?.trim();if(r)return r;let n=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||be,t=e.windowsUser??Zn();return t?`${n.replace(/\\/g,"/").replace(/\/$/,"")}/Users/${t}/AppData/Local/Temp/wsl-crashes`:null}function Js(e){let r=/^wsl-crash-\d+-(\d+)-(.+)-(\d+)\.dmp$/i.exec(e);if(!r)return{executableHint:null,signal:null,pid:null};let n=Number(r[1]),t=r[2]??"",o=Number(r[3]),s=t.split("_").filter(Boolean);return{executableHint:s.length>0?s[s.length-1]:null,signal:Number.isFinite(o)?o:null,pid:Number.isFinite(n)?n:null}}function Xs(){try{if(rr("/proc/sys/kernel/core_pattern"))return qn("/proc/sys/kernel/core_pattern","utf8").trim()}catch{}try{return Xn("sysctl",["-n","kernel.core_pattern"],{encoding:"utf8",timeout:2e3,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function qs(e){return!!(e&&/wsl-capture-crash/i.test(e))}function Zs(e,r=be){let n=Xr.join(r,"Users",e,".wslconfig");if(!rr(n))return{maxCrashDumpCount:null,crashDumpFolder:null};let t;try{t=qn(n,"utf8")}catch{return null}let o=null,s=null;for(let i of t.split(/\r?\n/)){let a=i.replace(/#.*$/,"").trim();if(!a||a.startsWith("["))continue;let u=a.indexOf("=");if(u<0)continue;let l=a.slice(0,u).trim().toLowerCase(),c=a.slice(u+1).trim();if(l==="maxcrashdumpcount"){let d=Number(c);o=Number.isFinite(d)?d:null}else l==="crashdumpfolder"&&(s=c.replace(/^["']|["']$/g,"")||null)}return{maxCrashDumpCount:o,crashDumpFolder:s}}function Qs(e){if(!rr(e))return[];let r=Ls(e,{withFileTypes:!0}),n=[];for(let t of r){if(!t.isFile()||!t.name.toLowerCase().endsWith(".dmp"))continue;let o=Xr.join(e,t.name);try{let s=js(o),i=Js(t.name);n.push({name:t.name,path:o,bytes:s.size,mtimeMs:s.mtimeMs,executableHint:i.executableHint,signal:i.signal,pid:i.pid})}catch{}}return n.sort((t,o)=>o.mtimeMs-t.mtimeMs),n}function Se(e={}){if(!(e.forceWsl===void 0?zr():e.forceWsl))return null;let n=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||be,t=e.windowsUser??Zn(),o=e.warnBelowBytes??er("KYNVER_WSL_CRASH_DUMP_WARN_BYTES",$s),s=e.criticalBelowBytes??er("KYNVER_WSL_CRASH_DUMP_CRITICAL_BYTES",Gs),i=e.warnCount??er("KYNVER_WSL_CRASH_DUMP_WARN_COUNT",Ys),a=e.criticalCount??er("KYNVER_WSL_CRASH_DUMP_CRITICAL_COUNT",Vs),u=(e.readCorePattern??Xs)(),l=qs(u),c=null;t&&(c=(e.readWslConfig??Zs)(t,n));let d=c?.maxCrashDumpCount??null,m=d===-1,g=zs({hostMount:n,windowsUser:t,crashDumpDir:e.crashDumpDir});if(!g)return{ok:!0,path:null,windowsUser:t,dumpCount:0,totalBytes:0,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:[],executables:[],corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:m,reason:null,probeError:"windows_user_unresolved"};let p;try{p=(e.listDumps??Qs)(g)}catch(P){return{ok:!1,path:g,windowsUser:t,dumpCount:0,totalBytes:0,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:[],executables:[],corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:m,reason:`WSL crash dump probe failed at ${g}: ${P.message}`,probeError:P.message}}let R=p.reduce((P,h)=>P+h.bytes,0),S=p.length,y=[...new Set(p.map(P=>P.executableHint).filter(P=>!!P))],A=R>=s,j=R>=o,B=S>=a,Le=S>=i,re=!(A||B||j||Le),ne=null;if(!re){let P=A||B?"critical":"warning",h=(R/1024**3).toFixed(1),q=y.length>0?y.join(", "):"unknown";ne=`WSL crash dumps ${P}: ${S} file(s), ${h} GiB at ${g} (executables: ${q}). `+ei({wslCaptureEnabled:l,dumpsDisabledInWslConfig:m})}return{ok:re,path:g,windowsUser:t,dumpCount:S,totalBytes:R,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:p,executables:y,corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:m,reason:ne,probeError:null}}function ei(e={}){let r=["Recovery:","1) run `kynver wsl-crashes --execute` or scripts/cleanup-wsl-crashes.ps1 to prune old .dmp files;"];return e.dumpsDisabledInWslConfig||r.push("2) add `[wsl2]\\nmaxCrashDumpCount=-1` to %USERPROFILE%/.wslconfig then `wsl --shutdown` to disable future dumps;"),e.wslCaptureEnabled&&r.push("3) investigate crashing executables (node OOM/SIGBUS often follows Windows C: pressure \u2014 see docs/runbooks/wsl-disk-pressure.md);"),r.push("full runbook: docs/runbooks/wsl-disk-pressure.md."),r.join(" ")}var $s,Gs,Ys,Vs,nr=f(()=>{"use strict";Jr();$s=5*1024*1024*1024,Gs=10*1024*1024*1024,Ys=2,Vs=4});import{statfsSync as ri}from"node:fs";function tr(e={}){let r=e.diskPath?.trim()||"/",n=e.diskFreeWarnBytes??ni,t=e.diskFreeCriticalBytes??ti,o=e.diskMaxUsedPercent??oi,s=e.diskHardMaxUsedPercent??si,i=ri(r),a=Number(i.bavail)*Number(i.bsize),u=Number(i.blocks)*Number(i.bsize),l=u>0?(u-a)/u*100:100,c=a<n,d=a<t,m=a<n*2,g=m&&l>o,p=m&&l>s,R=!c&&!d&&!g&&!p,S=e.skipWslHostCheck?null:Jn(e.wslHost),y=e.skipWslCrashDumpCheck?null:Se(e.wslCrashDumps),A=R&&(S?S.ok:!0)&&(y?y.ok:!0),j=null;return A||(j=[d?`free space below critical ${t} bytes`:null,c?`free space below warning ${n} bytes`:null,p?`used percent above hard cap ${s}%`:null,g?`used percent above cap ${o}%`:null,S&&!S.ok?S.reason:null,y&&!y.ok?y.reason:null].filter(Boolean).join("; ")),ii({ok:A,path:r,freeBytes:a,totalBytes:u,usedPercent:l,warnBelowBytes:n,criticalBelowBytes:t,maxUsedPercent:o,hardMaxUsedPercent:s,reason:j,wslHost:S,wslCrashDumps:y?{ok:y.ok,path:y.path,dumpCount:y.dumpCount,totalBytes:y.totalBytes,executables:y.executables,wslCaptureEnabled:y.wslCaptureEnabled,dumpsDisabledInWslConfig:y.dumpsDisabledInWslConfig,reason:y.reason,probeError:y.probeError}:null})}function ii(e){let r=process.env.KYNVER_DISPATCH_DISK_GATE_FORCE?.trim().toLowerCase();return r?r==="ok"||r==="open"||r==="none"?e.ok?e:{...e,ok:!0,reason:`disk gate forced open by KYNVER_DISPATCH_DISK_GATE_FORCE (suppressed: ${e.reason??"no reason"})`}:r==="block"||r==="pressured"?{...e,ok:!1,reason:`disk gate forced closed by KYNVER_DISPATCH_DISK_GATE_FORCE${e.reason?` (underlying: ${e.reason})`:""}`}:e:e}var ni,ti,oi,si,or=f(()=>{"use strict";nr();Jr();ni=30*1024*1024*1024,ti=15*1024*1024*1024,oi=80,si=90});import{existsSync as ai,readdirSync as ui,statSync as li}from"node:fs";import qr from"node:path";function sr(){return et()}function Zr(){let{runsDir:e}=sr();return Qn(e)}function ir(e){return Qn(G(e))}function ci(e){try{return li(e).isDirectory()}catch{return!1}}function Qn(e){if(!ai(e))return[];let r=[];for(let n of ui(e,{withFileTypes:!0})){if(n.name==="runs")continue;let t=qr.join(e,n.name);if(!ci(t))continue;let o=_(qr.join(t,"run.json"),void 0);o?.id&&r.push(o)}return r}function Qr(e){let{runsDir:r}=sr();Kn(qr.join(en(r,e.id),"run.json"),e)}function Ie(e){let{harnessRoot:r}=sr();return Oe(r,e)}function Oe(e,r){return en(G(e),v(r))}var se=f(()=>{"use strict";Y();b()});import{existsSync as di,readdirSync as pi}from"node:fs";import mi from"node:path";function rn(e){let r=new Set;for(let t of Object.keys(e.workers||{}))r.add(v(t));let n=mi.join(Ie(e.id),"workers");if(!di(n))return[...r];for(let t of pi(n,{withFileTypes:!0}))t.isDirectory()&&r.add(v(t.name));return[...r]}var nn=f(()=>{"use strict";se();b()});function tn(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let n=JSON.parse(r);if(n&&typeof n=="object"&&!Array.isArray(n))return n}catch{return null}return null}function rt(e){let r=e.trim();if(!r)return null;let n=tn(r);if(n)return n;let t=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let u=tn(s[1]??"");u&&t.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=tn(r.slice(i,a+1));u&&t.push(u)}return t.length>0?t[t.length-1]:null}function nt(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?rt(r)??(r.trim()||null):r;let n=typeof e.summary=="string"?e.summary.trim():"";if(!n)return null;let t=rt(n);return t||n}var tt=f(()=>{"use strict"});import{existsSync as fi,readFileSync as gi}from"node:fs";function ot(e){return e==="complete"}function st(e){return ot(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function ve(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!fi(e))return r;let n=Date.now()+hi,t=new Date(n).toISOString(),o=gi(e,"utf8").split(`
4
+ `):""}function Z(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Hn(e){let r=null,n=-1/0;for(let t of e){if(!t)continue;let o=Date.parse(t);Number.isFinite(o)&&o>n&&(n=o,r=t)}return r}function Gr(e){return Math.max(0,Math.round((Date.now()-e)/1e3))}var b=f(()=>{"use strict"});var Ns,rl,Ws,nl,Ln=f(()=>{"use strict";Ns=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],rl=new Set(Ns),Ws=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],nl=new Set(Ws)});import{spawnSync as $n}from"node:child_process";function ke(e,r,n={}){let t=$n("git",r,$r({cwd:e,encoding:"utf8"}));if(t.status!==0&&!n.allowFailure){let o=`git ${r.join(" ")} failed: ${t.stderr||t.stdout}`;if(n.throwError)throw new Error(o);jr(o)}return t.stdout||""}function Pe(e){return ke(e,["status","--short"],{allowFailure:!0}).split(`
5
+ `).map(r=>r.trim()).filter(Boolean)}function w(e,r){try{let n=$n("git",r,$r({cwd:e,encoding:"utf8"}));return{status:n.status,stdout:n.stdout||"",stderr:n.stderr||"",error:n.error?n.error.message:null}}catch(n){return{status:null,stdout:"",stderr:"",error:n.message}}}function jn(e,r,n){let t=w(e,["merge-base","--is-ancestor",r,n]);return t.status===0?{isAncestor:!0,error:null}:t.status===1?{isAncestor:!1,error:null}:{isAncestor:null,error:t.error||t.stderr||t.stdout||`git exited ${t.status}`}}function ze(e,r="origin/main"){let n=typeof r=="string"?{base:r}:r,t=n.baseCommit?.trim()||n.base?.trim()||"origin/main",o=n.baseCommit?.trim()||null;if(!e)return Yr(t,"missing worktree path");let s=w(e,["rev-parse","HEAD"]);if(s.status!==0)return Yr(t,s.error||s.stderr||s.stdout||"failed to resolve HEAD");let i;if(o)i=o;else{let m=w(e,["rev-parse",t]);if(m.status!==0)return Yr(t,m.error||m.stderr||m.stdout||`failed to resolve ${t}`,s.stdout.trim());i=m.stdout.trim()}let a=s.stdout.trim();if(a===i)return{checked:!0,base:t,head:a,baseHead:i,baseIsAncestorOfHead:!0,headIsAncestorOfBase:!0,relation:"synced"};let u=jn(e,i,a),l=jn(e,a,i),c=u.error||l.error||void 0;if(u.isAncestor==null||l.isAncestor==null)return{checked:!1,base:t,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:l.isAncestor,relation:"unknown",...c?{error:c}:{}};let d=u.isAncestor?"ahead":l.isAncestor?"merged":"diverged";return{checked:!0,base:t,head:a,baseHead:i,baseIsAncestorOfHead:u.isAncestor,headIsAncestorOfBase:l.isAncestor,relation:d,...c?{error:c}:{}}}function Yr(e,r,n=null){return{checked:!1,base:e,head:n,baseHead:null,baseIsAncestorOfHead:null,headIsAncestorOfBase:null,relation:"unknown",error:r}}var F=f(()=>{"use strict";b();Ln()});import{homedir as Gn}from"node:os";import Yn from"node:path";function Ms(e){return e==="~"?Gn():e.startsWith("~/")||e.startsWith("~\\")?Yn.join(Gn(),e.slice(2)):e}function Je(e){return Yn.resolve(Ms(e))}var Re=f(()=>{"use strict"});var Xe=f(()=>{"use strict";F();Re()});function te(e){let r=(e??"").trim().toLowerCase();return r==="ghost"||r==="forge"||r==="box"?r:r.includes("forge")?"forge":r.includes("ghost")||r.includes("openclaw")?"ghost":"box"}function qe(e,r){return e[r]?.trim()||null}function Vn(e){let r=e?.split(":")[0]?.trim();return r?te(r):null}function ye(e=process.env,r={}){let n=[],t=Vn(r.boxId),o=Vn(qe(e,"KYNVER_BOX_ID")),s=r.boxKind?.trim();if(s)return t&&t!==te(s)&&n.push(`config.boxId=${r.boxId} conflicts with boxKind=${s}; using explicit boxKind=${s}`),{boxKind:te(s),source:"config",slugInferenceBlocked:!1,warnings:n};let i=qe(e,"KYNVER_BOX_KIND");if(i)return o&&o!==te(i)&&n.push(`KYNVER_BOX_ID=${qe(e,"KYNVER_BOX_ID")} conflicts with KYNVER_BOX_KIND=${i}; using explicit KYNVER_BOX_KIND=${i}`),{boxKind:te(i),source:"env",slugInferenceBlocked:!1,warnings:n};if(t)return{boxKind:t,source:"config",slugInferenceBlocked:!1,warnings:n};if(o)return{boxKind:o,source:"env",slugInferenceBlocked:!1,warnings:n};let a=qe(e,"KYNVER_AGENT_OS_SLUG");return a&&n.push(`KYNVER_AGENT_OS_SLUG=${a} is a workspace slug, not box identity \u2014 operators set boxKind via \`kynver setup --box-kind forge|ghost\` or KYNVER_BOX_KIND; customers default to box`),{boxKind:"box",source:"default",slugInferenceBlocked:!!a,warnings:n}}var oe=f(()=>{"use strict"});function Vr(e,r){return e==="forge"?4:Math.max(1,r)}function Ze(e,r){return e==="forge"?Math.min(Math.max(1,r),4):Math.max(1,r)}var Qe=f(()=>{"use strict"});var zn=f(()=>{"use strict"});import{existsSync as Ts,readFileSync as Us,statfsSync as Bs}from"node:fs";function zr(){if(process.platform!=="linux")return!1;for(let e of["/proc/sys/kernel/osrelease","/proc/version"])try{if(!Ts(e))continue;let r=Us(e,"utf8");if(/microsoft|wsl/i.test(r))return!0}catch{}return!1}function Jn(e={}){if(!(e.forceWsl===void 0?zr():e.forceWsl))return null;let n=e.wslHostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||be,t=e.wslHostFreeWarnBytes??Ks,o=e.wslHostFreeCriticalBytes??Fs,s=e.statfs??Bs,i;try{i=s(n)}catch(R){return{ok:!1,path:n,freeBytes:0,totalBytes:0,usedPercent:100,warnBelowBytes:t,criticalBelowBytes:o,reason:`Windows host disk probe failed at ${n}: ${R.message}`,probeError:R.message}}let a=Number(i.bavail)*Number(i.bsize),u=Number(i.blocks)*Number(i.bsize),l=u>0?(u-a)/u*100:100,c=a<t,d=a<o,m=!c&&!d,g=(a/(1024*1024*1024)).toFixed(1),p=null;return m||(p=`Windows host disk ${n} at ${d?"critical":"warning"}: ${g} GiB free (<${(d?o:t)/1024/1024/1024} GiB); WSL VHDX cannot grow safely. ${Hs()}`),{ok:m,path:n,freeBytes:a,totalBytes:u,usedPercent:l,warnBelowBytes:t,criticalBelowBytes:o,reason:p,probeError:null}}function Hs(){return"Recovery: 1) free Windows C: (empty Recycle Bin / Storage Sense / clear %TEMP% and %LOCALAPPDATA%\\Temp\\wsl-crashes); 2) shut down WSL (`wsl --shutdown`) then compact the VHDX (`Optimize-VHD` or `diskpart compact vdisk`); 3) clear local node_modules / .next / harness worktrees before restarting workers; 4) disable recurring dumps via `%USERPROFILE%/.wslconfig` (`maxCrashDumpCount=-1`) or `kynver wsl-crashes --execute`. Full runbook: docs/runbooks/wsl-disk-pressure.md."}var Ks,Fs,be,Jr=f(()=>{"use strict";Ks=25*1024*1024*1024,Fs=12*1024*1024*1024,be="/mnt/c"});import{execFileSync as Xn}from"node:child_process";import{existsSync as rr,readFileSync as qn,readdirSync as Ls,statSync as js}from"node:fs";import Xr from"node:path";function er(e,r){let n=process.env[e];if(!n)return r;let t=Number(n);return Number.isFinite(t)?t:r}function Zn(){let e=process.env.KYNVER_WSL_WIN_USER?.trim();if(e)return e;try{let t=Xn("cmd.exe",["/c","echo","%USERNAME%"],{encoding:"utf8",timeout:5e3,stdio:["ignore","pipe","ignore"]}).trim();if(t&&t!=="%USERNAME%"&&!t.includes("%"))return t}catch{}let r=process.env.USER?.trim()||process.env.LOGNAME?.trim(),n=process.env.KYNVER_WSL_HOST_MOUNT?.trim()||be;return r&&rr(Xr.join(n,"Users",r))?r:null}function zs(e={}){let r=e.crashDumpDir?.trim()||process.env.KYNVER_WSL_CRASH_DUMP_DIR?.trim();if(r)return r;let n=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||be,t=e.windowsUser??Zn();return t?`${n.replace(/\\/g,"/").replace(/\/$/,"")}/Users/${t}/AppData/Local/Temp/wsl-crashes`:null}function Js(e){let r=/^wsl-crash-\d+-(\d+)-(.+)-(\d+)\.dmp$/i.exec(e);if(!r)return{executableHint:null,signal:null,pid:null};let n=Number(r[1]),t=r[2]??"",o=Number(r[3]),s=t.split("_").filter(Boolean);return{executableHint:s.length>0?s[s.length-1]:null,signal:Number.isFinite(o)?o:null,pid:Number.isFinite(n)?n:null}}function Xs(){try{if(rr("/proc/sys/kernel/core_pattern"))return qn("/proc/sys/kernel/core_pattern","utf8").trim()}catch{}try{return Xn("sysctl",["-n","kernel.core_pattern"],{encoding:"utf8",timeout:2e3,stdio:["ignore","pipe","ignore"]}).trim()||null}catch{return null}}function qs(e){return!!(e&&/wsl-capture-crash/i.test(e))}function Zs(e,r=be){let n=Xr.join(r,"Users",e,".wslconfig");if(!rr(n))return{maxCrashDumpCount:null,crashDumpFolder:null};let t;try{t=qn(n,"utf8")}catch{return null}let o=null,s=null;for(let i of t.split(/\r?\n/)){let a=i.replace(/#.*$/,"").trim();if(!a||a.startsWith("["))continue;let u=a.indexOf("=");if(u<0)continue;let l=a.slice(0,u).trim().toLowerCase(),c=a.slice(u+1).trim();if(l==="maxcrashdumpcount"){let d=Number(c);o=Number.isFinite(d)?d:null}else l==="crashdumpfolder"&&(s=c.replace(/^["']|["']$/g,"")||null)}return{maxCrashDumpCount:o,crashDumpFolder:s}}function Qs(e){if(!rr(e))return[];let r=Ls(e,{withFileTypes:!0}),n=[];for(let t of r){if(!t.isFile()||!t.name.toLowerCase().endsWith(".dmp"))continue;let o=Xr.join(e,t.name);try{let s=js(o),i=Js(t.name);n.push({name:t.name,path:o,bytes:s.size,mtimeMs:s.mtimeMs,executableHint:i.executableHint,signal:i.signal,pid:i.pid})}catch{}}return n.sort((t,o)=>o.mtimeMs-t.mtimeMs),n}function Se(e={}){if(!(e.forceWsl===void 0?zr():e.forceWsl))return null;let n=e.hostMount?.trim()||process.env.KYNVER_WSL_HOST_MOUNT?.trim()||be,t=e.windowsUser??Zn(),o=e.warnBelowBytes??er("KYNVER_WSL_CRASH_DUMP_WARN_BYTES",$s),s=e.criticalBelowBytes??er("KYNVER_WSL_CRASH_DUMP_CRITICAL_BYTES",Gs),i=e.warnCount??er("KYNVER_WSL_CRASH_DUMP_WARN_COUNT",Ys),a=e.criticalCount??er("KYNVER_WSL_CRASH_DUMP_CRITICAL_COUNT",Vs),u=(e.readCorePattern??Xs)(),l=qs(u),c=null;t&&(c=(e.readWslConfig??Zs)(t,n));let d=c?.maxCrashDumpCount??null,m=d===-1,g=zs({hostMount:n,windowsUser:t,crashDumpDir:e.crashDumpDir});if(!g)return{ok:!0,path:null,windowsUser:t,dumpCount:0,totalBytes:0,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:[],executables:[],corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:m,reason:null,probeError:"windows_user_unresolved"};let p;try{p=(e.listDumps??Qs)(g)}catch(P){return{ok:!1,path:g,windowsUser:t,dumpCount:0,totalBytes:0,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:[],executables:[],corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:m,reason:`WSL crash dump probe failed at ${g}: ${P.message}`,probeError:P.message}}let R=p.reduce((P,h)=>P+h.bytes,0),S=p.length,y=[...new Set(p.map(P=>P.executableHint).filter(P=>!!P))],A=R>=s,j=R>=o,B=S>=a,Le=S>=i,re=!(A||B||j||Le),ne=null;if(!re){let P=A||B?"critical":"warning",h=(R/1024**3).toFixed(1),q=y.length>0?y.join(", "):"unknown";ne=`WSL crash dumps ${P}: ${S} file(s), ${h} GiB at ${g} (executables: ${q}). `+ei({wslCaptureEnabled:l,dumpsDisabledInWslConfig:m})}return{ok:re,path:g,windowsUser:t,dumpCount:S,totalBytes:R,warnBelowBytes:o,criticalBelowBytes:s,warnCount:i,criticalCount:a,dumps:p,executables:y,corePattern:u,wslCaptureEnabled:l,maxCrashDumpCount:d,dumpsDisabledInWslConfig:m,reason:ne,probeError:null}}function ei(e={}){let r=["Recovery:","1) run `kynver wsl-crashes --execute` or scripts/cleanup-wsl-crashes.ps1 to prune old .dmp files;"];return e.dumpsDisabledInWslConfig||r.push("2) add `[wsl2]\\nmaxCrashDumpCount=-1` to %USERPROFILE%/.wslconfig then `wsl --shutdown` to disable future dumps;"),e.wslCaptureEnabled&&r.push("3) investigate crashing executables (node OOM/SIGBUS often follows Windows C: pressure \u2014 see docs/runbooks/wsl-disk-pressure.md);"),r.push("full runbook: docs/runbooks/wsl-disk-pressure.md."),r.join(" ")}var $s,Gs,Ys,Vs,nr=f(()=>{"use strict";Jr();$s=5*1024*1024*1024,Gs=10*1024*1024*1024,Ys=2,Vs=4});import{statfsSync as ri}from"node:fs";function tr(e={}){let r=e.diskPath?.trim()||"/",n=e.diskFreeWarnBytes??ni,t=e.diskFreeCriticalBytes??ti,o=e.diskMaxUsedPercent??oi,s=e.diskHardMaxUsedPercent??si,i=ri(r),a=Number(i.bavail)*Number(i.bsize),u=Number(i.blocks)*Number(i.bsize),l=u>0?(u-a)/u*100:100,c=a<n,d=a<t,m=a<n*2,g=m&&l>o,p=m&&l>s,R=!c&&!d&&!g&&!p,S=e.skipWslHostCheck?null:Jn(e.wslHost),y=e.skipWslCrashDumpCheck?null:Se(e.wslCrashDumps),A=R&&(S?S.ok:!0)&&(y?y.ok:!0),j=null;return A||(j=[d?`free space below critical ${t} bytes`:null,c?`free space below warning ${n} bytes`:null,p?`used percent above hard cap ${s}%`:null,g?`used percent above cap ${o}%`:null,S&&!S.ok?S.reason:null,y&&!y.ok?y.reason:null].filter(Boolean).join("; ")),ii({ok:A,path:r,freeBytes:a,totalBytes:u,usedPercent:l,warnBelowBytes:n,criticalBelowBytes:t,maxUsedPercent:o,hardMaxUsedPercent:s,reason:j,wslHost:S,wslCrashDumps:y?{ok:y.ok,path:y.path,dumpCount:y.dumpCount,totalBytes:y.totalBytes,executables:y.executables,wslCaptureEnabled:y.wslCaptureEnabled,dumpsDisabledInWslConfig:y.dumpsDisabledInWslConfig,reason:y.reason,probeError:y.probeError}:null})}function ii(e){let r=process.env.KYNVER_DISPATCH_DISK_GATE_FORCE?.trim().toLowerCase();return r?r==="ok"||r==="open"||r==="none"?e.ok?e:{...e,ok:!0,reason:`disk gate forced open by KYNVER_DISPATCH_DISK_GATE_FORCE (suppressed: ${e.reason??"no reason"})`}:r==="block"||r==="pressured"?{...e,ok:!1,reason:`disk gate forced closed by KYNVER_DISPATCH_DISK_GATE_FORCE${e.reason?` (underlying: ${e.reason})`:""}`}:e:e}var ni,ti,oi,si,or=f(()=>{"use strict";nr();Jr();ni=30*1024*1024*1024,ti=15*1024*1024*1024,oi=80,si=90});import{existsSync as ai,readdirSync as ui,statSync as li}from"node:fs";import qr from"node:path";function sr(){return et()}function Zr(){let{runsDir:e}=sr();return Qn(e)}function ir(e){return Qn(G(e))}function ci(e){try{return li(e).isDirectory()}catch{return!1}}function Qn(e){if(!ai(e))return[];let r=[];for(let n of ui(e,{withFileTypes:!0})){if(n.name==="runs")continue;let t=qr.join(e,n.name);if(!ci(t))continue;let o=_(qr.join(t,"run.json"),void 0);o?.id&&r.push(o)}return r}function Qr(e){let{runsDir:r}=sr();Kn(qr.join(en(r,e.id),"run.json"),e)}function Oe(e){let{harnessRoot:r}=sr();return Ie(r,e)}function Ie(e,r){return en(G(e),v(r))}var se=f(()=>{"use strict";Y();b()});import{existsSync as di,readdirSync as pi}from"node:fs";import mi from"node:path";function rn(e){let r=new Set;for(let t of Object.keys(e.workers||{}))r.add(v(t));let n=mi.join(Oe(e.id),"workers");if(!di(n))return[...r];for(let t of pi(n,{withFileTypes:!0}))t.isDirectory()&&r.add(v(t.name));return[...r]}var nn=f(()=>{"use strict";se();b()});function tn(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let n=JSON.parse(r);if(n&&typeof n=="object"&&!Array.isArray(n))return n}catch{return null}return null}function rt(e){let r=e.trim();if(!r)return null;let n=tn(r);if(n)return n;let t=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let u=tn(s[1]??"");u&&t.push(u)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let u=tn(r.slice(i,a+1));u&&t.push(u)}return t.length>0?t[t.length-1]:null}function nt(e){let r=e.finalResult??e.final_result;if(r!=null)return typeof r=="string"?rt(r)??(r.trim()||null):r;let n=typeof e.summary=="string"?e.summary.trim():"";if(!n)return null;let t=rt(n);return t||n}var tt=f(()=>{"use strict"});import{existsSync as fi,readFileSync as gi}from"node:fs";function ot(e){return e==="complete"}function st(e){return ot(e.lastHeartbeatPhase)?e.terminalFinalResult!==void 0&&e.terminalFinalResult!==null?e.terminalFinalResult:e.lastHeartbeatSummary?.trim()||"completed":null}function ve(e){let r={heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,terminalFinalResult:null,heartbeatBlocker:null,timestampAnomalies:[],lastBoxResourceSnapshot:null,lastPrEvidence:[]};if(!fi(e))return r;let n=Date.now()+hi,t=new Date(n).toISOString(),o=gi(e,"utf8").split(`
6
6
  `).filter(Boolean);for(let s of o){let i=Ge(s);if(!i||typeof i!="object"||Array.isArray(i))continue;let a=i;if(r.heartbeatCount++,a.ts){let u=String(a.ts),l=Date.parse(u);Number.isFinite(l)&&l>n?r.timestampAnomalies.push({kind:"future_heartbeat_timestamp",observedAt:u,clampedTo:t}):r.lastHeartbeatAt=u}a.phase!==void 0&&a.phase!==null&&(r.lastHeartbeatPhase=String(a.phase)),a.summary!==void 0&&a.summary!==null&&(r.lastHeartbeatSummary=String(a.summary)),ot(r.lastHeartbeatPhase)&&(r.terminalFinalResult=nt(a)),r.heartbeatBlocker=a.blocker?String(a.blocker):null,a.boxResourceSnapshot&&typeof a.boxResourceSnapshot=="object"&&!Array.isArray(a.boxResourceSnapshot)&&(r.lastBoxResourceSnapshot=a.boxResourceSnapshot),Array.isArray(a.prEvidence)&&(r.lastPrEvidence=a.prEvidence.filter(u=>!!u&&typeof u=="object"&&typeof u.prUrl=="string"))}return r}var hi,ar=f(()=>{"use strict";tt();b();hi=6e4});function at(e){return e?(e.split("/").pop()??e).replace(/\.exe$/i,"").toLowerCase():null}function ur(e){if(!e)return[];let r=[],n="",t,o=!1;for(let s of e){if(o){n+=s,o=!1;continue}if(s==="\\"){o=!0;continue}if(t){s===t?t=void 0:n+=s;continue}if(s==='"'||s==="'"){t=s;continue}if(/\s/.test(s)){n&&(r.push(n),n="");continue}n+=s}return n&&r.push(n),r}function ut(e){let r=at(e[0]);return!!(r&&ki.has(r))}function yi(e){let r=e.trim();return r.includes("/")?r.split("/").pop()??r:r}function bi(e){if(!e||e.includes("*"))return null;let r=yi(e);return!r||r.includes("/")?null:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(r)?r:null}function lt(e){return!e||e.includes("/")||e.includes("*")?!1:/\.(?:json|md|mjs|cjs|js|ts|tsx|yaml|yml)$/iu.test(e)}function on(e){if(!e)return!1;let r=e.trim();return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")}function Si(e){if(!e.startsWith("--glob="))return e;let r=e.slice(7);return r.startsWith("!")&&!r.includes("/")&&!r.endsWith("/**")?`--glob=${r}/**`:e}function vi(e){let r=[];for(let n=1;n<e.length;n+=1){let t=e[n];if(t){if(t==="--"){r.push(...e.slice(n+1));break}if(t.startsWith("-")){if(t.includes("="))continue;it.has(t)&&(n+=1);continue}r.push(t)}}return r}function _i(e){let r=!1,n=e.map((o,s)=>{let i=Si(o),a=e[s-1];return a&&it.has(a)&&o.startsWith("!")&&!o.includes("/")&&!o.endsWith("/**")&&(i=`${o}/**`),i!==o&&(r=!0),i}),t=vi(n);if(t.length===2){let[o,s]=t;if(on(s))return{argv:[n[0]??"rg",o,"-g",`${s}/**`,"."],changed:!0};let i=bi(s);if(i)return{argv:[n[0]??"rg","-g",i,o,"."],changed:!0}}return r&&t.length===1?{argv:[...n,"."],changed:!0}:{argv:n,changed:r}}function ct(e){for(let r=1;r<e.length;r+=1){let n=e[r];if(n&&(n==="-c"||n==="-lc"||n==="-cl"||/^-[a-zA-Z]*c[a-zA-Z]*$/u.test(n)))return r+1}return-1}function lr(e){let r=e.trim();if(!r)return{command:r,wrapped:!1};let n=ur(r);if(!n.length)return{command:r,wrapped:!1};let t=at(n[0]);if(!t||!Ri.has(t))return{command:r,wrapped:!1};let o=ct(n);if(o<0||o>=n.length)return{command:r,wrapped:!1};let s=n.slice(o).join(" ").trim();return s?{command:s,wrapped:!0}:{command:r,wrapped:!1}}function xi(e,r){let n=e.trim(),t=ur(n),o=ct(t);if(o<0)return r;let s=t.slice(0,o).join(" "),i=r.includes("'")?`"${r.replace(/"/g,'\\"')}"`:`'${r}'`;return`${s} ${i}`}function Ci(e){let r=e.trim(),n=lr(r),t=ur(n.command);if(!t.length||!ut(t))return{segment:r,changed:!1};let o=_i(t);if(!o.changed)return{segment:r,changed:!1};let s=o.argv.join(" ");return n.wrapped?{segment:xi(r,s),changed:!0}:{segment:s,changed:!0}}function sn(e){let r=e.trim();if(!r)return{command:r,changed:!1};let n=r.includes("&&")?" && ":r.includes("||")?" || ":"; ",t=r.split(/\s*(?:&&|\|\||;)\s*/u),o=!1,s=t.map(i=>{let a=Ci(i);return a.changed&&(o=!0),a.segment});return o?{command:s.join(n),changed:!0}:{command:r,changed:!1}}function dt(e){let r=lr(e).command,n=ur(r.trim());return n.length&&ut(n)?!0:/\b(rg|ripgrep)\b/i.test(r)}function pt(e){if(!e)return{};let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(|$)/iu);if(r)return{pattern:r[1],target:r[2]?.trim()};let n=e.match(/^search\s+"(.+)"\s+in\s+(.+)$/iu);return n?{pattern:n[1],target:n[2]?.trim()}:{}}function Ei(e){let{pattern:r,target:n}=pt(e);return r?on(n)?{kind:"rg_exclude_syntax",pattern:r,target:n}:lt(n)?{kind:"bad_scope",pattern:r,target:n}:{kind:"not_repo_search",pattern:r,target:n}:{kind:"not_repo_search"}}function wi(e){let{pattern:r,target:n}=pt(e);if(!r)return null;if(on(n)){let t=`${n.trim()}/**`;return{command:`rg "${r}" -g '${t}' .`,changed:!0}}return n&&lt(n)?{command:`rg -g ${n} "${r}" .`,changed:!0}:null}function Ai(e){if(e.kind==="bad_scope"&&e.pattern?.includes("agent-os-land-pr")&&e.target==="package.json")return"Search package.json with a glob from the repo root: `rg -g package.json agent-os-land-pr .` \u2014 or run `node scripts/agent-os-land-pr.mjs <pr-url>` directly.";if(e.kind==="bad_scope"&&e.pattern&&e.target)return`Use \`rg -g '${e.target}' ${e.pattern} .\` from the repo root instead of treating ${e.target} as a folder.`;if(e.kind==="rg_exclude_syntax"&&e.pattern){let r=e.target?`${e.target.trim()}/**`:"!node_modules/**";return`Repo search scope \`${e.target??"!node_modules"}\` is not a valid ripgrep path. Use \`rg "${e.pattern}" -g '${r}' .\` from the repo root (exclude globs need a \`/**\` suffix).`}return e.kind==="no_matches"&&e.pattern?`No matches for "${e.pattern}". Try a broader pattern, drop overly short tokens, or search from the repo root with \`rg "${e.pattern}" .\`.`:null}function Pi(e){let r=e.match(/search\s+"(.+)"\s+in\s+([^()]+?)(?:\s*\(agent\)|\s*failed|$)/iu);return r?`search "${r[1]}" in ${r[2]?.trim()}`:null}function an(e){let r=e.meta?.trim()||(e.command?Pi(e.command):null)||null;if(r){let n=Ei(r),t=Ai(n);if(t)return t;let o=wi(r);if(o?.changed)return`Repo search used an invalid scope. Retry with: \`${o.command}\`.`}if(e.command&&/\b(rg|ripgrep)\b/i.test(e.command)){let n=sn(e.command);if(n.changed)return`Ripgrep scope may be invalid. Retry with: \`${n.command}\`.`;if(e.exitCode===1)return"Ripgrep returned no matches (exit 1). Try a broader pattern or search from the repo root."}return null}var ki,Ri,it,mt=f(()=>{"use strict";ki=new Set(["rg","ripgrep","grep"]),Ri=new Set(["bash","sh","dash","zsh"]),it=new Set(["-e","--regexp","-f","--file","-m","--max-count","-A","--after-context","-B","--before-context","-C","--context","-g","--glob","--iglob"])});function De(e,r=200){let n=e.replace(/\s+/g," ").trim();return n.length>r?`${n.slice(0,r-1)}\u2026`:n}function Di(e){let r=e.trim();if(!r)return null;if(r.startsWith("{"))try{return JSON.parse(r)}catch{}let n=r.indexOf("{"),t=r.lastIndexOf("}");if(n>=0&&t>n)try{return JSON.parse(r.slice(n,t+1))}catch{return null}return null}function Ne(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Ni(e){let r=e.metadata;if(!Ne(r))return null;let n=r.vulnerabilities;if(!Ne(n))return null;let t=s=>typeof n[s]=="number"?n[s]:0,o={info:t("info"),low:t("low"),moderate:t("moderate"),high:t("high"),critical:t("critical"),total:t("total")};return typeof n.total!="number"&&!o.critical&&!o.high&&!o.moderate&&!o.low&&!o.info?null:o}function Wi(e){let r=[];e.critical&&r.push(`${e.critical} critical`),e.high&&r.push(`${e.high} high`),e.moderate&&r.push(`${e.moderate} moderate`),e.low&&r.push(`${e.low} low`),e.info&&r.push(`${e.info} info`);let n=r.length?r.join(", "):"see report";return`npm audit: ${e.total} vulnerabilit${e.total===1?"y":"ies"} (${n}) \u2014 remediation required`}function Mi(e,r){let n=e.error;if(Ne(n)){let s=typeof n.summary=="string"?n.summary.trim():"",i=typeof n.code=="string"?n.code.trim():"";if(s)return i?`${i}: ${s}`:s;if(i)return i}let t=typeof e.message=="string"?e.message.trim():"";if(t)return t;let o=r.trim();return o?De(o.split(`
7
7
  `).find(Boolean)??o,160):"npm audit failed"}function Ti(e){let r=`${e.stdout}
8
- ${e.stderr}`.trim(),n=Di(r);if(!n||!Ne(n)){let o=De(r||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit failed (invalid or missing JSON): ${o}`,parseError:"invalid_json"}}if(Ne(n.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Mi(n,e.stderr)}`};let t=Ni(n);return t?e.exitCode===0&&t.total===0?{kind:"success",exitCode:0,summary:"npm audit: no vulnerabilities reported",audit:t}:{kind:"audit_findings",exitCode:e.exitCode,summary:Wi(t),audit:t}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function Ui(e){return Ii.test(e)}function Bi(e){let r=lr(e).command;return ft.test(e)||ft.test(r)||dt(e)}function Ki(e){let r=an({command:e.command,exitCode:e.exitCode});if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"ripgrep finished (exit 0)"};if(e.exitCode===1){let t=(e.stderr||e.interleaved).trim();if(t&&Oi.test(t)){let i=De(t,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=sn(e.command),s=o.changed&&!r?` Retry with: \`${o.command}\`.`:"";return{kind:"search_no_matches",exitCode:1,summary:r??`ripgrep: no matches (exit 1).${s} Try a broader pattern or search from the repo root.`}}let n=De(e.interleaved||e.stdout||e.stderr||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:r??`ripgrep failed (exit ${e.exitCode}): ${n}`}}function gt(e){let r=e.stdout??"",n=e.stderr??"",t=e.interleavedOutput??"";if(Ui(e.command)){let i=r.trim()||t.trim()||n.trim();return Ti({exitCode:e.exitCode,stdout:i,stderr:n})}if(Bi(e.command))return Ki({command:e.command,exitCode:e.exitCode,stdout:r,stderr:n,interleaved:t});let o=an({command:e.command,exitCode:e.exitCode});if(o&&e.exitCode!==0)return{kind:"command_failure",exitCode:e.exitCode,summary:o};if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"command succeeded (exit 0)"};let s=De(t||r||n||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var Ii,ft,Oi,ht=f(()=>{"use strict";mt();Ii=/\bnpm\s+audit\b/i,ft=/\b(rg|ripgrep)\b/i,Oi=/\b(error|invalid|unknown|panic|not found)\b/i});import{existsSync as Fi,readFileSync as Hi}from"node:fs";function Li(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function ji(e){if(!e)return null;for(let r of Object.keys(e))if(r.endsWith("ToolCall")){let n=r.slice(0,-8);return n.length?n:r}return null}function $i(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",r.is_error&&(e.error=String(r.result||r.api_error_status||"stream result error"))}function _e(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Gi(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function Yi(e){if(typeof e.model=="string"&&e.model.trim())return e.model.trim();let r=e.modelUsage;if(r&&typeof r=="object"&&!Array.isArray(r)){let n=Object.keys(r)[0];if(n?.trim())return n.trim()}}function Vi(e,r){let n=Gi(r);if(!n)return;let t=_e(n.input_tokens)??_e(n.inputTokens)??_e(n.prompt_tokens),o=_e(n.output_tokens)??_e(n.outputTokens)??_e(n.completion_tokens);if(t===void 0&&o===void 0)return;let s=Yi(r)??e.usage?.model;e.usage={...t!==void 0?{inputTokens:t}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function zi(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let n=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!n||typeof n!="object"||Array.isArray(n))return null;let t=n,o=t.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=t.result;if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i.success??i.failure;if(!a||typeof a!="object"||Array.isArray(a))return null;let u=a,l=typeof u.exitCode=="number"?u.exitCode:0;return{command:s,exitCode:l,stdout:typeof u.stdout=="string"?u.stdout:"",stderr:typeof u.stderr=="string"?u.stderr:"",interleaved:typeof u.interleavedOutput=="string"?u.interleavedOutput:""}}function Ji(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function kt(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!Fi(e))return r;let n=Hi(e,"utf8").split(`
9
- `).filter(Boolean);for(let t of n){let o=Ge(t);if(!o)continue;let s=Li(o);if(s&&(r.firstEventAt||=s,r.lastEventAt=s),o.type==="stream_event"&&o.event&&typeof o.event=="object"&&o.event.type==="content_block_start"){let a=o.event.content_block;a?.type==="tool_use"&&(r.currentTool=String(a.name||"tool"))}if(o.type==="assistant"&&o.message&&typeof o.message=="object"){let a=o.message.content;if(Array.isArray(a)){let u=a.find(l=>l?.type==="tool_use");u&&(r.currentTool=String(u.name||r.currentTool))}}if(o.type==="tool_call"&&o.subtype==="started"){let a=o.tool_call&&typeof o.tool_call=="object"&&!Array.isArray(o.tool_call)?o.tool_call:void 0,u=ji(a);u&&(r.currentTool=u)}let i=zi(o);i&&Ji(r,gt({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&$i(r,o),Vi(r,o)}return r}var Rt=f(()=>{"use strict";ht();b()});function qi(e,r=240){let n=e.replace(/\s+/g," ").trim();return n.length>r?`${n.slice(0,r-1)}\u2026`:n}function yt(e){let r=(e??"").trim();if(!r)return null;for(let n of Xi)if(n.test.test(r))return{blocked:!0,reason:`${n.label}: ${qi(r)}`};return null}var Xi,bt=f(()=>{"use strict";Xi=[{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"},{test:/\b(?:out of usage|increase limits?|switch to auto|ask your admin to increase your limit|usage limits?|quota exceeded|insufficient_quota|credits? exhausted|billing|payment required)\b/i,label:"provider quota exhausted"}]});function St(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Zi(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function Qi(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:St(e.head)}function ea(e,r,n){let t=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&t.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&n){let o=n.length>12?n.slice(0,12):n;t.push(`commit ${o} ahead of base with no final result`)}return t.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),t.join(": ")}function vt(e){if(e.alive||Zi(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,n=St(e.headCommit)??Qi(e.gitAncestry),t=r>0,o=!!n;if(!t&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=t&&o?"both":t?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:n,attentionReason:ea(s,r,n)}}var _t=f(()=>{"use strict"});function We(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function ra(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function na(e){if(We(e.headCommit)||We(e.prUrl)||We(e.artifactBundlePath)||We(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&We(r.head))}function xe(e){return ra(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:na(e)?{blocked:!0,detail:`Worktree has ${e.changedFiles.length} uncommitted change(s); commit or discard before landing`}:{blocked:!0,reason:"dirty_worktree_no_pr",detail:`Worktree has ${e.changedFiles.length} uncommitted change(s) with no commit or PR; commit, open a PR, or discard before landing`}:{blocked:!1}}function xt(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var cr=f(()=>{"use strict"});function un(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let n=JSON.parse(r);if(n&&typeof n=="object"&&!Array.isArray(n))return n}catch{return null}return null}function Ct(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function dr(e){let r=e.trim();if(!r)return null;let n=un(r);if(n)return n;let t=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let c=un(s[1]??"");c&&t.push(c)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let c=un(r.slice(i,a+1));c&&t.push(c)}if(t.length===0)return null;let u=t[t.length-1],l=Ct(u);for(let c of t){let d=Ct(c);d>l&&(u=c,l=d)}return u}var ln=f(()=>{"use strict"});function Et(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:e.trim()||null}function wt(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function ta(e){return new Set(e.map(r=>wt(Et(r)??r)).filter(Boolean))}function At(e,r,n){let t=Et(e)??e;if(!t)return"unrelated";let o=wt(t);return ta(r).has(o)?"contract":n?(n.outcome==="skipped"||n.outcome==="blocked")&&n.reason?.trim()?"support":(n.outcome==="merged","unrelated"):"unrelated"}var Pt=f(()=>{"use strict"});function Ce(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function oa(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function ie(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:Ce(e)}function pr(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function It(e){let r=null;if(typeof e=="string"){let o=dr(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let n=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(n))return[];let t=[];for(let o of n){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=ie(String(s.prUrl??s.pr_url??"")),a=Ce(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||t.push({prUrl:i,outcome:a,mergeCommit:Ce(s.mergeCommit??s.merge_commit),reason:Ce(s.reason)})}return t}function Ot(e,r){let n=[],t=ie(Ce(e.prUrl)??"");if(t&&n.push(t),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=ie(String(o.prUrl??o.pr_url??""));s&&n.push(s)}return[...new Set(n)]}function Dt(e){let{contract:r,snapshot:n}=e,t=e.finalResult??n.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!oa(t))return(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&r.targetPrUrls.length>0?{blocked:!0,reason:"missing_target_pr_reconciliation",detail:`Final result required to reconcile target PR(s): ${r.targetPrUrls.join(", ")}`}:{blocked:!1};if(!(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&!r.repairEnforceOriginalPr)return{blocked:!1};let s=r.repairEnforceOriginalPr?ie(Ce(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?ie(r.targetPrUrls[0]):null):null;if(s){let d=Ot(n,t);if(!(t&&typeof t=="object"&&!Array.isArray(t)&&t.supersedesOriginalTargetPr===!0)){for(let R of d)if(R!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${R} instead of canonical target ${s}`}}let p=It(t).find(R=>R.prUrl===s);if(!p||p.outcome!=="merged"&&!(p.reason?.trim()&&(p.outcome==="skipped"||p.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=It(t),a=new Map(i.map(d=>[pr(d.prUrl),d])),u=new Set(r.targetPrUrls.map(d=>pr(ie(d)??d)).filter(Boolean)),l=Ot(n,t);if(r.landingOnly)for(let d of l){let m=a.get(pr(d)),g=At(d,r.targetPrUrls,m);if(!(g==="contract"||g==="support"))return u.size>0?{blocked:!0,reason:"unrelated_implementation_pr",detail:`Landing-only worker attached unrelated PR ${d}`}:{blocked:!0,reason:"unrelated_implementation_pr",detail:"Landing-only worker must not open new implementation PRs"}}if(r.targetPrUrls.length===0)return{blocked:!1};let c=[];for(let d of r.targetPrUrls){let m=pr(ie(d)??d),g=a.get(m);if(!g){c.push(m);continue}g.outcome!=="merged"&&!g.reason?.trim()&&c.push(m)}return c.length>0?{blocked:!0,reason:c.every(d=>a.has(d))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${c.join(", ")}`}:{blocked:!1}}function Nt(e){if(e.blocked)return e.detail??e.reason}var Wt=f(()=>{"use strict";ln();Pt()});function aa(e){let r=Date.now();if(e.completionBlocker&&!Mt(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&la(e.finalResult))return{state:"done",reason:"local-only worker superseded by merged PR"};let o={finalResult:e.finalResult,changedFiles:e.changedFiles??[],gitAncestry:e.gitAncestry??null,prUrl:e.prUrl??null},s=xe(o);if(s.blocked){let i=xt(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=Dt({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=Nt(i);if(a)return{state:"needs_attention",reason:i.reason?`landing contract (${i.reason}): ${a}`:`landing contract: ${a}`}}return{state:"done",reason:"final result recorded"}}if(!e.alive){if(ua(e))return{state:"done",reason:"empty abandoned worker record"};let o=yt(e.error);if(o)return{state:"blocked",reason:o.reason};let s=vt({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let a=e.error?.trim();return{state:"needs_attention",reason:a?`${s.attentionReason} (${a})`:s.attentionReason}}let i=e.error?.trim();return{state:"needs_attention",reason:i?`process exited without a final result: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let n=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(n)&&r-n>sa)return{state:"needs_attention",reason:`no first stream event ${Gr(n)}s after start`};let t=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(t)&&r-t>ia?{state:"stale",reason:`no log/event/heartbeat activity for ${Gr(t)}s`}:{state:"ok",reason:"recent activity"}}function Mt(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function ua(e){return e.finalResult||e.taskId||e.agentOsId||e.stdoutBytes>0||(e.stderrBytes??0)>0||e.heartbeatBytes>0||e.error?.trim()||(e.changedFiles??[]).some(r=>r.trim())?!1:/empty worker dir|marked abandoned/i.test(e.reconcileReason??"")}function la(e){let r=null;if(typeof e=="string"?r=dr(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let n=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(n)?n.some(t=>!t||typeof t!="object"||Array.isArray(t)?!1:String(t.outcome??"").trim()==="merged"):!1}function ca(e,r,n){let t=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&t!==void 0&&t!==null?t:r||(t??st(n))}function Me(e,r={}){let n=kt(e.stdoutPath),t=ve(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=ca(e,n.finalResult,t),i=o?!1:Z(e.pid),a=Ye(e.stdoutPath),u=Ye(e.stderrPath),l=Ye(e.heartbeatPath),c=Pe(e.worktreePath),d=ze(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),m=Hn([n.lastEventAt,t.lastHeartbeatAt,Ve(e.stdoutPath),Ve(e.stderrPath),Ve(e.heartbeatPath)]),g=n.error||!i&&!s&&Fn(e.stderrPath,10).trim()||void 0,p=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,R=Mt(p)?null:p,S=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,y=aa({alive:i,finalResult:s,firstEventAt:n.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,lastActivityAt:m,heartbeatBlocker:t.heartbeatBlocker,startedAt:e.startedAt,error:g,changedFiles:c,gitAncestry:d,completionBlocker:R,landingContract:S,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),A=R||y.state==="blocked"?"blocked":o||y.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:A,attention:y,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,firstEventAt:n.firstEventAt,lastEventAt:n.lastEventAt,lastActivityAt:m,currentTool:o?null:n.currentTool,heartbeatCount:t.heartbeatCount,lastHeartbeatAt:t.lastHeartbeatAt,lastHeartbeatPhase:t.lastHeartbeatPhase,lastHeartbeatSummary:t.lastHeartbeatSummary,heartbeatBlocker:t.heartbeatBlocker,timestampAnomalies:t.timestampAnomalies,finalResult:s,error:g,changedFiles:c,gitAncestry:d,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.provider??e.orchestrationAudit?.provider??null,usage:n.usage??null,boxKind:e.boxKind??null,boxId:e.boxId??null,runtimeId:e.runtimeId??null,personaSlug:e.personaSlug??null,dispatched:e.dispatched??null,localOnly:e.localOnly??null}}function ae(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function Tt(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var sa,ia,ue=f(()=>{"use strict";ar();Rt();bt();_t();F();cr();Wt();ln();b();sa=18e4,ia=6e5});var Ut=f(()=>{"use strict";ue()});function Bt(e,r={}){let n=r.perWorkerMemBytes??cn,t=r.memReserveBytes??dn,o=r.memUtilization??pn,s=Math.max(0,Math.floor(e*o)-t),i=Math.max(1,Math.floor(s/n));return Math.min(i,mr)}var cn,dn,pn,mr,Kt=f(()=>{"use strict";zn();ce();oe();Qe();fr();or();se();nn();Ut();b();cn=500*1024*1024,dn=4*1024*1024*1024,pn=.85,mr=64});function Te(e,r){let n=Number(e);return!Number.isFinite(n)||n<=0?r:Math.floor(n)}function mn(e){let r=e.config??{},n=e.env??process.env,t=Te(r.perWorkerMemBytes,cn),o=Te(r.memReserveBytes,dn),s=Math.min(1,Math.max(.1,Number(r.memUtilization)>0?Number(r.memUtilization):pn)),i=Bt(e.totalMemBytes,{perWorkerMemBytes:t,memReserveBytes:o,memUtilization:s});if(e.configuredMaxWorkersOverride!==void 0&&e.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:Te(e.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(r.maxConcurrentWorkers!==void 0&&r.maxConcurrentWorkers!==null){let l=Te(r.maxConcurrentWorkers,0)||null;if(l)return{configuredMaxWorkers:Math.min(l,mr),autoCap:i,workerCapSource:"config"}}let u=(n.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||n.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&n.KYNVER_MAX_WORKERS&&Te(n.KYNVER_MAX_WORKERS,0)||null;return u?{configuredMaxWorkers:Math.min(u,mr),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var fr=f(()=>{"use strict";Kt()});import{homedir as da}from"node:os";import pa from"node:path";var Ft,fn=f(()=>{"use strict";Ft=pa.join(da(),".kynver",".env")});var Ht=f(()=>{"use strict"});var Lt=f(()=>{"use strict";Ht()});var jt=f(()=>{"use strict"});var gn=f(()=>{"use strict";Lt();jt()});var $t=f(()=>{"use strict"});var Gt=f(()=>{"use strict";$t()});var gr=f(()=>{"use strict";fn();Re();ce();gn();Gt()});var zt=f(()=>{"use strict";oe();oe()});var Jt=f(()=>{"use strict";fn();gn();gr()});import{existsSync as V,mkdirSync as fa,readdirSync as hr,renameSync as Xt,statSync as ga}from"node:fs";import z from"node:path";function Zt(e){try{return ga(e).isDirectory()}catch{return!1}}function ha(e){if(!V(e))return!0;for(let r of qt){let n=z.join(e,r);if(V(n)&&(!Zt(n)||hr(n).length>0))return!1}return!0}function ka(e){let r=z.join(e,"runs");if(!V(r)||!Zt(r))return!1;for(let n of hr(r,{withFileTypes:!0})){if(!n.isDirectory()||n.name==="runs")continue;let t=z.join(r,n.name,"run.json");if(_(t,void 0)?.id)return!0}return!1}function Ra(e){let r=z.join(e,"runs");if(!V(r))return!1;for(let n of hr(r,{withFileTypes:!0})){if(!n.isDirectory())continue;if(_(z.join(r,n.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function ya(e){let r=z.join(e,"ghost");return V(r)?!V(z.join(r,"runs")):Ra(e)}function Qt(e){return ka(e.sharedRoot)?ha(e.forgeRoot)?ya(e.sharedRoot)?{action:"blocked",blocker:"Forge legacy harness migration blocked: Ghost pool is co-hosted on this host (ghost namespace or ghost-attributed runs under ~/.kynver/harness). Drain in-flight Ghost runs from the shared root, or get operator sign-off for a fresh Forge cutover before enabling box-scoped isolation."}:{action:"migrate"}:{action:"none"}:{action:"none"}}function eo(e,r){fa(r,{recursive:!0});for(let n of qt){let t=z.join(e,n),o=z.join(r,n);if(V(t)){if(V(o)&&hr(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(V(o)){Xt(t,o);continue}Xt(t,o)}}}var qt,ro=f(()=>{"use strict";b();qt=["runs","worktrees"]});import{existsSync as E}from"node:fs";import{homedir as ba}from"node:os";import C from"node:path";function hn(e=process.env){return e.HOME?.trim()||ba()}function kn(e=process.env){return C.join(hn(e),".kynver","harness")}function kr(e){let r=C.resolve(Je(e.trim()));for(;Sa.has(C.basename(r));)r=C.dirname(r);return r}function va(e,r=process.env){return C.join(kn(r),e)}function _a(e=process.env){let r=kn(e);if(E(C.join(r,"runs")))return!0;if(E(r)&&!E(C.join(r,"ghost"))&&!E(C.join(r,"forge")))return E(r);let n=C.join(hn(e),no);return E(n)}function Rr(e){let r=e.env??process.env,n=r.KYNVER_HARNESS_ROOT?.trim()||r.OPUS_HARNESS_ROOT?.trim();if(n)return{harnessRoot:kr(n),source:"env"};let t=e.configuredHarnessRoot?.trim();if(t)return{harnessRoot:kr(t),source:"config"};let o=va(e.boxKind,r);if(E(C.join(o,"runs"))||E(o)&&!xa(o))return{harnessRoot:o,source:"box_scoped"};let i=kn(r);if(e.boxKind==="forge"){let a=Qt({sharedRoot:i,forgeRoot:o});if(a.action==="blocked")return{harnessRoot:o,source:"box_scoped",migrationBlocker:a.blocker};if(a.action==="migrate")return e.allowForgeLegacyMigration!==!1&&eo(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(e.boxKind==="ghost"&&_a(r)){if(E(C.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(E(i)&&!E(C.join(i,"ghost"))&&!E(C.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let u=C.join(hn(r),no);if(E(u))return{harnessRoot:u,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function xa(e){if(!E(e))return!0;for(let r of["runs","worktrees"]){let n=C.join(e,r);if(E(n))return!1}return!0}var no,Sa,Rn=f(()=>{"use strict";Re();ro();no=C.join(".openclaw","harness");Sa=new Set(["runs","worktrees"])});import to from"node:os";function yr(e){return e?.trim()?e.trim():null}function Ca(e,r){let n=r.trim().toLowerCase()||"host";return`${e}-${n}`.replace(/[^a-z0-9._-]+/g,"-")}function Ea(e){return e.KYNVER_DISPATCH_STRICT_IDENTITY==="1"||e.KYNVER_DISPATCH_STRICT_IDENTITY==="true"||e.KYNVER_DAEMON_STRICT_IDENTITY==="1"||e.KYNVER_DAEMON_STRICT_IDENTITY==="true"}function br(e=le(),r=process.env,n={}){let t=ye(r,e),o=[...t.warnings],s=[],i=!!(e.boxKind?.trim()||yr(r.KYNVER_BOX_KIND)),a=n.strict===!0||Ea(r);if((n.requireExplicitBoxKind||a)&&!i&&s.push("boxKind is not persisted in ~/.kynver/config.json and KYNVER_BOX_KIND is unset \u2014 run `kynver setup --box-kind forge|ghost` before dispatch"),t.slugInferenceBlocked&&!i){let R="ambiguous box identity: KYNVER_AGENT_OS_SLUG is set without KYNVER_BOX_KIND or config.boxKind";a||n.requireExplicitBoxKind?s.push(R):o.push(`${R} \u2014 defaulting box kind to forge`)}let u=yr(e.runnerId),l=yr(r.KYNVER_RUNTIME_ID)??yr(r.OPENCLAW_RUNTIME_ID),c=u??l??Ca(t.boxKind,to.hostname()),d=u?"config":l?"env":"derived";d==="derived"&&o.push(`runnerId not persisted \u2014 using derived id "${c}"; run \`kynver setup --box-kind ${t.boxKind}\` to persist runner identity`);let m=mn({config:e,env:r,totalMemBytes:to.totalmem()}),g=Ze(t.boxKind,m.configuredMaxWorkers??Vr(t.boxKind,m.autoCap)),p=Rr({boxKind:t.boxKind,configuredHarnessRoot:e.harnessRoot,env:r});return p.migrationBlocker&&s.push(p.migrationBlocker),s.length>0?{ok:!1,identity:null,errors:s,warnings:o}:{ok:!0,identity:{boxKind:t.boxKind,boxKindSource:t.source,runnerId:c,runnerIdSource:d,maxConcurrentWorkers:g,workerCapSource:m.workerCapSource,harnessRoot:p.harnessRoot,harnessRootSource:p.source},errors:s,warnings:o}}var Sr=f(()=>{"use strict";ce();oe();Qe();fr();Rn()});var so=f(()=>{"use strict";Xe();oe();zt();ce();gr();Jt();b();Sr()});import{existsSync as Oa,mkdirSync as Qd,readFileSync as Da,writeFileSync as ep}from"node:fs";import{homedir as Na,totalmem as np}from"node:os";import yn from"node:path";function le(){if(!Oa(io))return{};try{return JSON.parse(Da(io,"utf8"))}catch{return{}}}var ao,io,fp,gp,hp,ce=f(()=>{"use strict";Xe();Re();b();oe();Qe();fr();or();gr();so();Sr();ao=yn.join(Na(),".kynver"),io=yn.join(ao,"config.json"),fp=yn.join(ao,"credentials");gp=500*1024*1024,hp=4*1024*1024*1024});import bn from"node:path";function O(e){return kr(e)}function Q(){let e=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(e)return O(e);let r=le(),n=r.harnessRoot?.trim();if(n)return O(n);let t=br(r,process.env);return t.identity?t.identity.harnessRoot:Rr({boxKind:"forge",configuredHarnessRoot:null}).harnessRoot}function G(e){return bn.join(O(e),"runs")}function Ee(e){return bn.join(O(e),"worktrees")}function et(){let e=Q();return{harnessRoot:e,runsDir:G(e),worktreesDir:Ee(e)}}function en(e,r){return bn.join(e,v(r))}var Y=f(()=>{"use strict";ce();Rn();Sr();b()});Y();import M from"node:path";cr();import Cr from"node:path";F();ue();var Sn=[".next",".turbo","dist","build",".cache","node_modules/.cache"];function uo(e){let r=e.replace(/\\/g,"/").replace(/\/+$/,"");if(r==="node_modules"||r.startsWith("node_modules/"))return!0;for(let n of Sn)if(r===n||r.startsWith(`${n}/`))return!0;return!1}function D(e){return e.filter(r=>{let n=r.trim(),t=n.startsWith("??")?n.slice(2).trim():n.length>3?n.slice(3).trim():n;return!uo(t)})}function de(e){if(typeof e=="string")return e.match(/https:\/\/github\.com\/[^\s]+\/pull\/\d+/i)?.[0]??null;if(e&&typeof e=="object"){let r=e;for(let n of["prUrl","pr_url","pullRequestUrl"]){let t=r[n];if(typeof t=="string"&&t.trim())return t.trim()}}return null}function Ue(e){let r=e.gitAncestry?.relation;return r==="merged"||r==="synced"?D(e.changedFiles).length>0:!!(de(e.finalResult)||r==="ahead"||r==="diverged"||e.changedFiles.length>0&&e.finalResult)}b();function Be(e){return e.status||(e.status=Me(e.worker,{base:e.run.base,baseCommit:e.run.baseCommit})),e.status}function vn(e,r){if(e.status)return D(e.status.changedFiles).length>0;let n=r?r.porcelain(e.worktreePath):Pe(e.worktreePath);return D(n).length>0}function Wa(e){let r=e.worker.completionSnapshot?.finalResult;return r??(e.worker.taskPrUrl?{prUrl:e.worker.taskPrUrl}:null)}function _n(e,r){if(e.status)return e.status;let n=e.worker,t=typeof n.completionReportedAt=="string"&&n.completionReportedAt.trim().length>0,o=!!(n.status&&["done","exited","blocked","failed","abandoned"].includes(n.status))||t,s=Wa(e);if(o&&!Z(n.pid)){let i=r?.gitStatusCache?r.gitStatusCache.porcelain(e.worktreePath):Pe(e.worktreePath),a=e.run.baseCommit?.trim()||e.run.base?.trim()||"origin/main",l=r?.gitRevCache?.countAheadOfMain(e.worktreePath,a)===0?{checked:!0,base:a,relation:"synced"}:ze(e.worktreePath,{base:e.run.base,baseCommit:e.run.baseCommit}),c={runId:e.runId,worker:e.workerName,pid:n.pid,alive:!1,status:n.status??(t?"done":"exited"),attention:{state:t?"done":"stale"},branch:n.branch,worktreePath:e.worktreePath,ownedPaths:n.ownedPaths,stdoutBytes:0,stderrBytes:0,heartbeatBytes:0,firstEventAt:null,lastEventAt:null,lastActivityAt:n.completionReportedAt??null,currentTool:null,heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,heartbeatBlocker:null,changedFiles:i,gitAncestry:l,finalResult:s,completionBlocker:typeof n.completionBlocker=="string"&&n.completionBlocker.trim()||null,prUrl:n.repairTargetPrUrl??n.taskPrUrl??de(s)};return e.status=c,c}return Be(e)}ue();se();nn();ue();b();import Ma from"node:path";var Ta=new Set(["running","dispatching","pending","queued","needs_attention"]),pe=new Set(["completed","failed","cancelled","done"]);function me(e){let r=rn(e);if(r.length===0)return"failed";let n=!1,t=!1,o=!1,s=!1;for(let i of r){let a=_(Ma.join(Ie(e.id),"workers",v(i),"worker.json"),void 0);if(!a)continue;let u=Me(a,{base:e.base,baseCommit:e.baseCommit});if(u.alive&&!u.finalResult){n=!0;break}typeof a.completionBlocker=="string"&&a.completionBlocker&&(o=!0),Tt(u)&&(s=!0),u.finalResult&&u.attention.state==="done"&&(t=!0)}return n||o||s?null:t?"completed":"failed"}function lo(){let e=[];for(let r of Zr()){if(!Ta.has(r.status))continue;let n=me(r);if(!n||n===r.status)continue;let t=r.status;r.status=n,Qr(r),e.push({runId:r.id,from:t,to:n})}return e}ue();ar();import{existsSync as vr,mkdirSync as Qp,readdirSync as mo,renameSync as em,statSync as Ua}from"node:fs";import fe from"node:path";ce();Xe();Re();F();ar();Y();se();Y();b();import ee from"node:path";var zp=`${ee.sep}runs${ee.sep}runs${ee.sep}`;function co(e){return{workerJsonPath:ee.join(e,"worker.json"),stdoutPath:ee.join(e,"stdout.jsonl"),stderrPath:ee.join(e,"stderr.log"),heartbeatPath:ee.join(e,"heartbeat.jsonl"),lastStatusPath:ee.join(e,"last-status.json")}}b();var Ke=900*1e3,lm=3600*1e3;function fo(e,r){let n=fe.resolve(e),t=fe.resolve(G(r)),o=fe.relative(t,n);return o!==".."&&!o.startsWith("..")&&!fe.isAbsolute(o)}function Ba(e){if(!vr(e))return[];try{return mo(e,{withFileTypes:!0}).filter(r=>r.isDirectory()&&r.name!=="runs").map(r=>r.name)}catch{return[]}}function Ka(e){let r=fe.join(e,"workers");if(!vr(r))return[];try{return mo(r,{withFileTypes:!0}).filter(n=>n.isDirectory()).map(n=>n.name)}catch{return[]}}function po(e,r,n){if(!vr(e))return!1;try{let t=r-Ua(e).mtimeMs;return Number.isFinite(t)&&t>=0&&t<n}catch{return!1}}function Fa(e,r=Date.now(),n=Ke){if(!vr(e))return!1;let t=co(e),o=_(t.workerJsonPath,void 0);if(o?.status==="running"&&Z(o.pid))return!0;let s=ve(t.heartbeatPath);if(s.lastHeartbeatAt){let i=r-Date.parse(s.lastHeartbeatAt);if(Number.isFinite(i)&&i>=0&&i<n)return!0}return!!(po(t.stdoutPath,r,n)||po(t.heartbeatPath,r,n))}function Ha(e,r=Date.now(),n=Ke){for(let t of Ka(e))if(Fa(fe.join(e,"workers",t),r,n))return!0;return!1}function go(e,r=Date.now()){let n=new Set,t=G(e);for(let o of Ba(t)){let s=fe.join(t,o);Ha(s,r)&&n.add(`${e}\0${o}`)}return n}b();function xn(e,r=Date.now(),n=Ke){let t=ve(e.heartbeatPath);if(!t.lastHeartbeatAt)return!1;let o=r-Date.parse(t.lastHeartbeatAt);return Number.isFinite(o)&&o>=0&&o<n}function _r(e,r=Date.now(),n=Ke){return Z(e.pid)?!0:xn(e,r,n)}function La(e,r){return r?r.runTerminalCache.derive(e.run):me(e.run)}function J(e,r=Date.now()){return _r(e.worker,r)}function Cn(e,r){return pe.has(e.run.status)?!1:La(e,r)!==null}function ho(e,r,n=Date.now()){if(J(e,n))return!0;if(pe.has(e.run.status)||Cn(e,r))return!1;let t=Be(e);return ae(t)?!1:!!J(e,n)}cr();ue();function ko(e,r){if(!(typeof e.worker.completionBlocker=="string"?e.worker.completionBlocker.trim():""))return!1;if(J(e))return!0;let t=r??Be(e);return!!(!ae(t)||Ue(t)||D(t.changedFiles).length>0||xe({finalResult:t.finalResult,changedFiles:t.changedFiles,gitAncestry:t.gitAncestry,prUrl:de(t.finalResult)}).blocked)}F();b();import{existsSync as yo,mkdirSync as ja,writeFileSync as Ro}from"node:fs";import xr from"node:path";function bo(e,r,n){return xr.join(e,"salvage",v(r),v(n))}function So(e){return yo(xr.join(bo(e.harnessRoot,e.runId,e.workerName),"evidence.json"))}function vo(e){let r=bo(e.harnessRoot,e.indexed.runId,e.indexed.workerName);ja(r,{recursive:!0});let n=xr.join(r,"salvage.patch"),t=!1;if(yo(e.indexed.worktreePath)){let s=w(e.indexed.worktreePath,["diff","HEAD"]),i=w(e.indexed.worktreePath,["diff","--cached"]),a=[s.stdout,i.stdout].filter(u=>u.trim()).join(`
8
+ ${e.stderr}`.trim(),n=Di(r);if(!n||!Ne(n)){let o=De(r||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit failed (invalid or missing JSON): ${o}`,parseError:"invalid_json"}}if(Ne(n.error))return{kind:"command_failure",exitCode:e.exitCode,summary:`npm audit command failed: ${Mi(n,e.stderr)}`};let t=Ni(n);return t?e.exitCode===0&&t.total===0?{kind:"success",exitCode:0,summary:"npm audit: no vulnerabilities reported",audit:t}:{kind:"audit_findings",exitCode:e.exitCode,summary:Wi(t),audit:t}:{kind:"command_failure",exitCode:e.exitCode,summary:"npm audit failed: JSON response missing vulnerability metadata",parseError:"missing_metadata"}}function Ui(e){return Oi.test(e)}function Bi(e){let r=lr(e).command;return ft.test(e)||ft.test(r)||dt(e)}function Ki(e){let r=an({command:e.command,exitCode:e.exitCode});if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"ripgrep finished (exit 0)"};if(e.exitCode===1){let t=(e.stderr||e.interleaved).trim();if(t&&Ii.test(t)){let i=De(t,160);return{kind:"command_failure",exitCode:1,summary:r??`ripgrep failed (exit 1): ${i}`}}let o=sn(e.command),s=o.changed&&!r?` Retry with: \`${o.command}\`.`:"";return{kind:"search_no_matches",exitCode:1,summary:r??`ripgrep: no matches (exit 1).${s} Try a broader pattern or search from the repo root.`}}let n=De(e.interleaved||e.stdout||e.stderr||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:r??`ripgrep failed (exit ${e.exitCode}): ${n}`}}function gt(e){let r=e.stdout??"",n=e.stderr??"",t=e.interleavedOutput??"";if(Ui(e.command)){let i=r.trim()||t.trim()||n.trim();return Ti({exitCode:e.exitCode,stdout:i,stderr:n})}if(Bi(e.command))return Ki({command:e.command,exitCode:e.exitCode,stdout:r,stderr:n,interleaved:t});let o=an({command:e.command,exitCode:e.exitCode});if(o&&e.exitCode!==0)return{kind:"command_failure",exitCode:e.exitCode,summary:o};if(e.exitCode===0)return{kind:"success",exitCode:0,summary:"command succeeded (exit 0)"};let s=De(t||r||n||`exit ${e.exitCode}`,180);return{kind:"command_failure",exitCode:e.exitCode,summary:`command failed (exit ${e.exitCode}): ${s}`}}var Oi,ft,Ii,ht=f(()=>{"use strict";mt();Oi=/\bnpm\s+audit\b/i,ft=/\b(rg|ripgrep)\b/i,Ii=/\b(error|invalid|unknown|panic|not found)\b/i});import{existsSync as Fi,readFileSync as Hi}from"node:fs";function Li(e){let r=e.timestamp_ms;return e.timestamp||e.ts||(r?new Date(r).toISOString():void 0)}function ji(e){if(!e)return null;for(let r of Object.keys(e))if(r.endsWith("ToolCall")){let n=r.slice(0,-8);return n.length?n:r}return null}function $i(e,r){e.finalResult=r.result||r.subtype||r.terminal_reason||"completed",r.is_error&&(e.error=String(r.result||r.api_error_status||"stream result error"))}function _e(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Gi(e){let r=e.usage;return r&&typeof r=="object"&&!Array.isArray(r)?r:null}function Yi(e){if(typeof e.model=="string"&&e.model.trim())return e.model.trim();let r=e.modelUsage;if(r&&typeof r=="object"&&!Array.isArray(r)){let n=Object.keys(r)[0];if(n?.trim())return n.trim()}}function Vi(e,r){let n=Gi(r);if(!n)return;let t=_e(n.input_tokens)??_e(n.inputTokens)??_e(n.prompt_tokens),o=_e(n.output_tokens)??_e(n.outputTokens)??_e(n.completion_tokens);if(t===void 0&&o===void 0)return;let s=Yi(r)??e.usage?.model;e.usage={...t!==void 0?{inputTokens:t}:{},...o!==void 0?{outputTokens:o}:{},...s?{model:s}:{}}}function zi(e){if(e.type!=="tool_call"||e.subtype!=="completed")return null;let n=(e.tool_call&&typeof e.tool_call=="object"&&!Array.isArray(e.tool_call)?e.tool_call:null)?.shellToolCall;if(!n||typeof n!="object"||Array.isArray(n))return null;let t=n,o=t.args,s=o&&typeof o=="object"&&!Array.isArray(o)&&typeof o.command=="string"?String(o.command):"",i=t.result;if(!i||typeof i!="object"||Array.isArray(i))return null;let a=i.success??i.failure;if(!a||typeof a!="object"||Array.isArray(a))return null;let u=a,l=typeof u.exitCode=="number"?u.exitCode:0;return{command:s,exitCode:l,stdout:typeof u.stdout=="string"?u.stdout:"",stderr:typeof u.stderr=="string"?u.stderr:"",interleaved:typeof u.interleavedOutput=="string"?u.interleavedOutput:""}}function Ji(e,r){r.kind==="success"||r.kind==="search_no_matches"||(e.lastShellOutcome=r)}function kt(e){let r={firstEventAt:null,lastEventAt:null,currentTool:null,finalResult:null,error:null,lastShellOutcome:null,usage:null};if(!Fi(e))return r;let n=Hi(e,"utf8").split(`
9
+ `).filter(Boolean);for(let t of n){let o=Ge(t);if(!o)continue;let s=Li(o);if(s&&(r.firstEventAt||=s,r.lastEventAt=s),o.type==="stream_event"&&o.event&&typeof o.event=="object"&&o.event.type==="content_block_start"){let a=o.event.content_block;a?.type==="tool_use"&&(r.currentTool=String(a.name||"tool"))}if(o.type==="assistant"&&o.message&&typeof o.message=="object"){let a=o.message.content;if(Array.isArray(a)){let u=a.find(l=>l?.type==="tool_use");u&&(r.currentTool=String(u.name||r.currentTool))}}if(o.type==="tool_call"&&o.subtype==="started"){let a=o.tool_call&&typeof o.tool_call=="object"&&!Array.isArray(o.tool_call)?o.tool_call:void 0,u=ji(a);u&&(r.currentTool=u)}let i=zi(o);i&&Ji(r,gt({command:i.command,exitCode:i.exitCode,stdout:i.stdout,stderr:i.stderr,interleavedOutput:i.interleaved})),o.type==="result"&&$i(r,o),Vi(r,o)}return r}var Rt=f(()=>{"use strict";ht();b()});function qi(e,r=240){let n=e.replace(/\s+/g," ").trim();return n.length>r?`${n.slice(0,r-1)}\u2026`:n}function yt(e){let r=(e??"").trim();if(!r)return null;for(let n of Xi)if(n.test.test(r))return{blocked:!0,reason:`${n.label}: ${qi(r)}`};return null}var Xi,bt=f(()=>{"use strict";Xi=[{test:/\b(?:invalid|unknown|unsupported|unrecognized)\b[^.\n]*\bmodel\b/i,label:"provider rejected the requested model"},{test:/\bmodel\b[^.\n]*\b(?:not\s+(?:found|supported|available|recognized|valid)|is\s+not\s+valid|does\s+not\s+exist)/i,label:"provider rejected the requested model"},{test:/\b(?:did you mean|available models|choose (?:a|one of)|supported models)\b/i,label:"provider rejected the requested model"},{test:/model preflight failed/i,label:"model/provider preflight failed"},{test:/\b(?:command not found|ENOENT|is the .*CLI on PATH|executable not found|no such file or directory)\b/i,label:"provider CLI is missing or not on PATH"},{test:/\bfailed to spawn\b/i,label:"provider failed to spawn the worker process"},{test:/\b(?:not logged in|unauthorized|authentication (?:failed|required)|invalid api key|missing api key|401)\b/i,label:"provider authentication failed"},{test:/\b(?:out of usage|increase limits?|switch to auto|ask your admin to increase your limit|usage limits?|quota exceeded|insufficient_quota|credits? exhausted|billing|payment required)\b/i,label:"provider quota exhausted"}]});function St(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function Zi(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function Qi(e){return!e?.checked||e.headIsAncestorOfBase!==!1?null:St(e.head)}function ea(e,r,n){let t=["exited_with_changes_salvage"];if((e==="uncommitted"||e==="both")&&t.push(`${r} uncommitted change${r===1?"":"s"} with no final result`),(e==="committed_ahead"||e==="both")&&n){let o=n.length>12?n.slice(0,12):n;t.push(`commit ${o} ahead of base with no final result`)}return t.push("review worktree \u2014 commit, open a PR, or run a salvage worker before discarding"),t.join(": ")}function vt(e){if(e.alive||Zi(e.finalResult))return null;let r=(e.changedFiles??[]).filter(i=>i.trim()).length,n=St(e.headCommit)??Qi(e.gitAncestry),t=r>0,o=!!n;if(!t&&!o)return{kind:"none",salvageable:!1,uncommittedCount:0,headCommit:null,attentionReason:"process exited without a final result"};let s=t&&o?"both":t?"uncommitted":"committed_ahead";return{kind:s,salvageable:!0,uncommittedCount:r,headCommit:n,attentionReason:ea(s,r,n)}}var _t=f(()=>{"use strict"});function We(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function ra(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="boolean"?e:Array.isArray(e)?e.length>0:typeof e=="object"?Object.keys(e).length>0:!0}function na(e){if(We(e.headCommit)||We(e.prUrl)||We(e.artifactBundlePath)||We(e.patchPath))return!0;let r=e.gitAncestry;return!!(r?.checked&&r.headIsAncestorOfBase===!1&&We(r.head))}function xe(e){return ra(e.finalResult)?e.changedFiles.length===0?{blocked:!1}:na(e)?{blocked:!0,detail:`Worktree has ${e.changedFiles.length} uncommitted change(s); commit or discard before landing`}:{blocked:!0,reason:"dirty_worktree_no_pr",detail:`Worktree has ${e.changedFiles.length} uncommitted change(s) with no commit or PR; commit, open a PR, or discard before landing`}:{blocked:!1}}function xt(e){if(e.blocked)return e.detail??e.reason??"dirty_worktree_no_pr"}var cr=f(()=>{"use strict"});function un(e){let r=e.trim();if(!r.startsWith("{"))return null;try{let n=JSON.parse(r);if(n&&typeof n=="object"&&!Array.isArray(n))return n}catch{return null}return null}function Ct(e){let r=e.targetPrReconciliation??e.target_pr_reconciliation??e.targetPrs??e.target_prs;return Array.isArray(r)?r.length:0}function dr(e){let r=e.trim();if(!r)return null;let n=un(r);if(n)return n;let t=[],o=/```(?:json)?\s*([\s\S]*?)```/gi,s;for(;(s=o.exec(r))!==null;){let c=un(s[1]??"");c&&t.push(c)}let i=r.indexOf("{"),a=r.lastIndexOf("}");if(i>=0&&a>i){let c=un(r.slice(i,a+1));c&&t.push(c)}if(t.length===0)return null;let u=t[t.length-1],l=Ct(u);for(let c of t){let d=Ct(c);d>l&&(u=c,l=d)}return u}var ln=f(()=>{"use strict"});function Et(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:e.trim()||null}function wt(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function ta(e){return new Set(e.map(r=>wt(Et(r)??r)).filter(Boolean))}function At(e,r,n){let t=Et(e)??e;if(!t)return"unrelated";let o=wt(t);return ta(r).has(o)?"contract":n?(n.outcome==="skipped"||n.outcome==="blocked")&&n.reason?.trim()?"support":(n.outcome==="merged","unrelated"):"unrelated"}var Pt=f(()=>{"use strict"});function Ce(e){if(typeof e!="string")return null;let r=e.trim();return r.length?r:null}function oa(e){return e==null?!1:typeof e=="string"?e.trim().length>0:typeof e=="object"?Object.keys(e).length>0:!0}function ie(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`https://github.com/${r[1]}/pull/${r[2]}`:Ce(e)}function pr(e){let r=e.trim().match(/github\.com\/([^/]+\/[^/]+)\/(?:pull|pulls)\/(\d+)/i);return r?`${r[1].toLowerCase()}/pull/${r[2]}`:e.trim().toLowerCase()}function Ot(e){let r=null;if(typeof e=="string"){let o=dr(e);o&&(r=o)}else e&&typeof e=="object"&&!Array.isArray(e)&&(r=e);if(!r)return[];let n=r.targetPrReconciliation??r.target_pr_reconciliation;if(!Array.isArray(n))return[];let t=[];for(let o of n){if(!o||typeof o!="object"||Array.isArray(o))continue;let s=o,i=ie(String(s.prUrl??s.pr_url??"")),a=Ce(s.outcome);!i||a!=="merged"&&a!=="skipped"&&a!=="blocked"||t.push({prUrl:i,outcome:a,mergeCommit:Ce(s.mergeCommit??s.merge_commit),reason:Ce(s.reason)})}return t}function It(e,r){let n=[],t=ie(Ce(e.prUrl)??"");if(t&&n.push(t),r&&typeof r=="object"&&!Array.isArray(r)){let o=r,s=ie(String(o.prUrl??o.pr_url??""));s&&n.push(s)}return[...new Set(n)]}function Dt(e){let{contract:r,snapshot:n}=e,t=e.finalResult??n.finalResult;if(!r.landingOnly&&r.targetPrUrls.length===0&&!r.repairEnforceOriginalPr)return{blocked:!1};if(!oa(t))return(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&r.targetPrUrls.length>0?{blocked:!0,reason:"missing_target_pr_reconciliation",detail:`Final result required to reconcile target PR(s): ${r.targetPrUrls.join(", ")}`}:{blocked:!1};if(!(r.requiresTargetPrReconciliation??(r.landingOnly||!!r.repairEnforceOriginalPr||r.targetPrUrls.length>0))&&!r.repairEnforceOriginalPr)return{blocked:!1};let s=r.repairEnforceOriginalPr?ie(Ce(r.targetPrUrl)??"")??(r.targetPrUrls.length===1?ie(r.targetPrUrls[0]):null):null;if(s){let d=It(n,t);if(!(t&&typeof t=="object"&&!Array.isArray(t)&&t.supersedesOriginalTargetPr===!0)){for(let R of d)if(R!==s)return{blocked:!0,reason:"duplicate_repair_pr",detail:`Repair worker opened or attached PR ${R} instead of canonical target ${s}`}}let p=Ot(t).find(R=>R.prUrl===s);if(!p||p.outcome!=="merged"&&!(p.reason?.trim()&&(p.outcome==="skipped"||p.outcome==="blocked")))return{blocked:!0,reason:"missing_repair_target_reconciliation",detail:`Repair worker must reconcile target PR ${s}`}}let i=Ot(t),a=new Map(i.map(d=>[pr(d.prUrl),d])),u=new Set(r.targetPrUrls.map(d=>pr(ie(d)??d)).filter(Boolean)),l=It(n,t);if(r.landingOnly)for(let d of l){let m=a.get(pr(d)),g=At(d,r.targetPrUrls,m);if(!(g==="contract"||g==="support"))return u.size>0?{blocked:!0,reason:"unrelated_implementation_pr",detail:`Landing-only worker attached unrelated PR ${d}`}:{blocked:!0,reason:"unrelated_implementation_pr",detail:"Landing-only worker must not open new implementation PRs"}}if(r.targetPrUrls.length===0)return{blocked:!1};let c=[];for(let d of r.targetPrUrls){let m=pr(ie(d)??d),g=a.get(m);if(!g){c.push(m);continue}g.outcome!=="merged"&&!g.reason?.trim()&&c.push(m)}return c.length>0?{blocked:!0,reason:c.every(d=>a.has(d))?"incomplete_target_pr_landing":"missing_target_pr_reconciliation",detail:`Target PR reconciliation incomplete: ${c.join(", ")}`}:{blocked:!1}}function Nt(e){if(e.blocked)return e.detail??e.reason}var Wt=f(()=>{"use strict";ln();Pt()});function aa(e){let r=Date.now();if(e.completionBlocker&&!Mt(e.completionBlocker))return{state:"blocked",reason:e.completionBlocker};if(e.finalResult){if(e.localOnly&&la(e.finalResult))return{state:"done",reason:"local-only worker superseded by merged PR"};let o={finalResult:e.finalResult,changedFiles:e.changedFiles??[],gitAncestry:e.gitAncestry??null,prUrl:e.prUrl??null},s=xe(o);if(s.blocked){let i=xt(s);return{state:"needs_attention",reason:s.reason?`landing blocked (${s.reason}): ${i}`:`landing blocked: ${i}`}}if(e.landingContract){let i=Dt({contract:e.landingContract,snapshot:o,finalResult:e.finalResult}),a=Nt(i);if(a)return{state:"needs_attention",reason:i.reason?`landing contract (${i.reason}): ${a}`:`landing contract: ${a}`}}return{state:"done",reason:"final result recorded"}}if(!e.alive){if(ua(e))return{state:"done",reason:"empty abandoned worker record"};let o=yt(e.error);if(o)return{state:"blocked",reason:o.reason};let s=vt({alive:!1,finalResult:null,changedFiles:e.changedFiles,gitAncestry:e.gitAncestry});if(s?.salvageable){let a=e.error?.trim();return{state:"needs_attention",reason:a?`${s.attentionReason} (${a})`:s.attentionReason}}let i=e.error?.trim();return{state:"needs_attention",reason:i?`process exited without a final result: ${i}`:s?.attentionReason??"process exited without a final result"}}if(e.heartbeatBlocker)return{state:"blocked",reason:`worker heartbeat reported blocker: ${e.heartbeatBlocker}`};let n=e.startedAt?Date.parse(e.startedAt):NaN;if(!e.firstEventAt&&e.stdoutBytes===0&&e.heartbeatBytes===0&&Number.isFinite(n)&&r-n>sa)return{state:"needs_attention",reason:`no first stream event ${Gr(n)}s after start`};let t=e.lastActivityAt?Date.parse(e.lastActivityAt):NaN;return Number.isFinite(t)&&r-t>ia?{state:"stale",reason:`no log/event/heartbeat activity for ${Gr(t)}s`}:{state:"ok",reason:"recent activity"}}function Mt(e){let r=e?.trim();return r?/completion acknowledged but board not advanced/i.test(r)&&/task already terminal/i.test(r):!1}function ua(e){return e.finalResult||e.taskId||e.agentOsId||e.stdoutBytes>0||(e.stderrBytes??0)>0||e.heartbeatBytes>0||e.error?.trim()||(e.changedFiles??[]).some(r=>r.trim())?!1:/empty worker dir|marked abandoned/i.test(e.reconcileReason??"")}function la(e){let r=null;if(typeof e=="string"?r=dr(e):e&&typeof e=="object"&&!Array.isArray(e)&&(r=e),!r)return!1;let n=r.targetPrReconciliation??r.target_pr_reconciliation;return Array.isArray(n)?n.some(t=>!t||typeof t!="object"||Array.isArray(t)?!1:String(t.outcome??"").trim()==="merged"):!1}function ca(e,r,n){let t=e.completionSnapshot?.finalResult;return e.completionAckSource==="local-pr-merged-reconcile"&&t!==void 0&&t!==null?t:r||(t??st(n))}function Me(e,r={}){let n=kt(e.stdoutPath),t=ve(e.heartbeatPath),o=typeof e.completionReportedAt=="string"&&e.completionReportedAt.trim().length>0,s=ca(e,n.finalResult,t),i=o?!1:Z(e.pid),a=Ye(e.stdoutPath),u=Ye(e.stderrPath),l=Ye(e.heartbeatPath),c=Pe(e.worktreePath),d=ze(e.worktreePath,{base:r.base,baseCommit:r.baseCommit}),m=Hn([n.lastEventAt,t.lastHeartbeatAt,Ve(e.stdoutPath),Ve(e.stderrPath),Ve(e.heartbeatPath)]),g=n.error||!i&&!s&&Fn(e.stderrPath,10).trim()||void 0,p=typeof e.completionBlocker=="string"&&e.completionBlocker.trim()?e.completionBlocker.trim():null,R=Mt(p)?null:p,S=e.repairTargetPrUrl?{landingOnly:!1,targetPrUrls:[e.repairTargetPrUrl],targetPrUrl:e.repairTargetPrUrl,repairEnforceOriginalPr:!0}:null,y=aa({alive:i,finalResult:s,firstEventAt:n.firstEventAt,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,lastActivityAt:m,heartbeatBlocker:t.heartbeatBlocker,startedAt:e.startedAt,error:g,changedFiles:c,gitAncestry:d,completionBlocker:R,landingContract:S,prUrl:e.repairTargetPrUrl??e.taskPrUrl??null,localOnly:e.localOnly===!0,taskId:e.taskId??null,agentOsId:e.agentOsId??null,reconcileReason:e.reconcileReason??null}),A=R||y.state==="blocked"?"blocked":o||y.state==="done"?"done":s?"exited":i?"running":"exited";return{runId:e.runId,worker:e.name,pid:e.pid,alive:i,status:A,attention:y,branch:e.branch,worktreePath:e.worktreePath,ownedPaths:e.ownedPaths,stdoutBytes:a,stderrBytes:u,heartbeatBytes:l,firstEventAt:n.firstEventAt,lastEventAt:n.lastEventAt,lastActivityAt:m,currentTool:o?null:n.currentTool,heartbeatCount:t.heartbeatCount,lastHeartbeatAt:t.lastHeartbeatAt,lastHeartbeatPhase:t.lastHeartbeatPhase,lastHeartbeatSummary:t.lastHeartbeatSummary,heartbeatBlocker:t.heartbeatBlocker,timestampAnomalies:t.timestampAnomalies,finalResult:s,error:g,changedFiles:c,gitAncestry:d,instructionPolicyFingerprint:e.instructionPolicyFingerprint??null,instructionPolicyEvidence:e.instructionPolicyEvidence??null,model:e.model??e.orchestrationAudit?.model??null,provider:e.provider??e.orchestrationAudit?.provider??null,usage:n.usage??null,boxKind:e.boxKind??null,boxId:e.boxId??null,runtimeId:e.runtimeId??null,personaSlug:e.personaSlug??null,dispatched:e.dispatched??null,localOnly:e.localOnly??null}}function ae(e){return!!(e.finalResult||e.alive===!1||e.status==="exited"||e.status==="done")}function Tt(e){return e.finalResult?e.attention.state==="needs_attention"||e.attention.state==="blocked":!1}var sa,ia,ue=f(()=>{"use strict";ar();Rt();bt();_t();F();cr();Wt();ln();b();sa=18e4,ia=6e5});var Ut=f(()=>{"use strict";ue()});function Bt(e,r={}){let n=r.perWorkerMemBytes??cn,t=r.memReserveBytes??dn,o=r.memUtilization??pn,s=Math.max(0,Math.floor(e*o)-t),i=Math.max(1,Math.floor(s/n));return Math.min(i,mr)}var cn,dn,pn,mr,Kt=f(()=>{"use strict";zn();ce();oe();Qe();fr();or();se();nn();Ut();b();cn=500*1024*1024,dn=4*1024*1024*1024,pn=.85,mr=64});function Te(e,r){let n=Number(e);return!Number.isFinite(n)||n<=0?r:Math.floor(n)}function mn(e){let r=e.config??{},n=e.env??process.env,t=Te(r.perWorkerMemBytes,cn),o=Te(r.memReserveBytes,dn),s=Math.min(1,Math.max(.1,Number(r.memUtilization)>0?Number(r.memUtilization):pn)),i=Bt(e.totalMemBytes,{perWorkerMemBytes:t,memReserveBytes:o,memUtilization:s});if(e.configuredMaxWorkersOverride!==void 0&&e.configuredMaxWorkersOverride!==null)return{configuredMaxWorkers:Te(e.configuredMaxWorkersOverride,i),autoCap:i,workerCapSource:"workspace_override"};if(r.maxConcurrentWorkers!==void 0&&r.maxConcurrentWorkers!==null){let l=Te(r.maxConcurrentWorkers,0)||null;if(l)return{configuredMaxWorkers:Math.min(l,mr),autoCap:i,workerCapSource:"config"}}let u=(n.KYNVER_MAX_WORKERS_INTENTIONAL==="1"||n.KYNVER_MAX_WORKERS_INTENTIONAL==="true")&&n.KYNVER_MAX_WORKERS&&Te(n.KYNVER_MAX_WORKERS,0)||null;return u?{configuredMaxWorkers:Math.min(u,mr),autoCap:i,workerCapSource:"env"}:{configuredMaxWorkers:null,autoCap:i,workerCapSource:"auto"}}var fr=f(()=>{"use strict";Kt()});import{homedir as da}from"node:os";import pa from"node:path";var Ft,fn=f(()=>{"use strict";Ft=pa.join(da(),".kynver",".env")});var Ht=f(()=>{"use strict"});var Lt=f(()=>{"use strict";Ht()});var jt=f(()=>{"use strict"});var gn=f(()=>{"use strict";Lt();jt()});var $t=f(()=>{"use strict"});var Gt=f(()=>{"use strict";$t()});var gr=f(()=>{"use strict";fn();Re();ce();gn();Gt()});var zt=f(()=>{"use strict";oe();oe()});var Jt=f(()=>{"use strict";fn();gn();gr()});import{existsSync as V,mkdirSync as fa,readdirSync as hr,renameSync as Xt,statSync as ga}from"node:fs";import z from"node:path";function Zt(e){try{return ga(e).isDirectory()}catch{return!1}}function ha(e){if(!V(e))return!0;for(let r of qt){let n=z.join(e,r);if(V(n)&&(!Zt(n)||hr(n).length>0))return!1}return!0}function ka(e){let r=z.join(e,"runs");if(!V(r)||!Zt(r))return!1;for(let n of hr(r,{withFileTypes:!0})){if(!n.isDirectory()||n.name==="runs")continue;let t=z.join(r,n.name,"run.json");if(_(t,void 0)?.id)return!0}return!1}function Ra(e){let r=z.join(e,"runs");if(!V(r))return!1;for(let n of hr(r,{withFileTypes:!0})){if(!n.isDirectory())continue;if(_(z.join(r,n.name,"run.json"),void 0)?.boxKind==="ghost")return!0}return!1}function ya(e){let r=z.join(e,"ghost");return V(r)?!V(z.join(r,"runs")):Ra(e)}function Qt(e){return ka(e.sharedRoot)?ha(e.forgeRoot)?ya(e.sharedRoot)?{action:"blocked",blocker:"Forge legacy harness migration blocked: Ghost pool is co-hosted on this host (ghost namespace or ghost-attributed runs under ~/.kynver/harness). Drain in-flight Ghost runs from the shared root, or get operator sign-off for a fresh Forge cutover before enabling box-scoped isolation."}:{action:"migrate"}:{action:"none"}:{action:"none"}}function eo(e,r){fa(r,{recursive:!0});for(let n of qt){let t=z.join(e,n),o=z.join(r,n);if(V(t)){if(V(o)&&hr(o).length>0)throw new Error(`Forge legacy harness migration failed: ${o} is not empty`);if(V(o)){Xt(t,o);continue}Xt(t,o)}}}var qt,ro=f(()=>{"use strict";b();qt=["runs","worktrees"]});import{existsSync as E}from"node:fs";import{homedir as ba}from"node:os";import C from"node:path";function hn(e=process.env){return e.HOME?.trim()||ba()}function kn(e=process.env){return C.join(hn(e),".kynver","harness")}function kr(e){let r=C.resolve(Je(e.trim()));for(;Sa.has(C.basename(r));)r=C.dirname(r);return r}function va(e,r=process.env){return C.join(kn(r),e)}function _a(e=process.env){let r=kn(e);if(E(C.join(r,"runs")))return!0;if(E(r)&&!E(C.join(r,"ghost"))&&!E(C.join(r,"forge")))return E(r);let n=C.join(hn(e),no);return E(n)}function Rr(e){let r=e.env??process.env,n=r.KYNVER_HARNESS_ROOT?.trim()||r.OPUS_HARNESS_ROOT?.trim();if(n)return{harnessRoot:kr(n),source:"env"};let t=e.configuredHarnessRoot?.trim();if(t)return{harnessRoot:kr(t),source:"config"};let o=va(e.boxKind,r);if(E(C.join(o,"runs"))||E(o)&&!xa(o))return{harnessRoot:o,source:"box_scoped"};let i=kn(r);if(e.boxKind==="forge"){let a=Qt({sharedRoot:i,forgeRoot:o});if(a.action==="blocked")return{harnessRoot:o,source:"box_scoped",migrationBlocker:a.blocker};if(a.action==="migrate")return e.allowForgeLegacyMigration!==!1&&eo(i,o),{harnessRoot:o,source:"legacy_migrated"}}if(e.boxKind==="ghost"&&_a(r)){if(E(C.join(i,"runs")))return{harnessRoot:i,source:"legacy_shared"};if(E(i)&&!E(C.join(i,"ghost"))&&!E(C.join(i,"forge")))return{harnessRoot:i,source:"legacy_shared"};let u=C.join(hn(r),no);if(E(u))return{harnessRoot:u,source:"legacy_shared"}}return{harnessRoot:o,source:"box_scoped"}}function xa(e){if(!E(e))return!0;for(let r of["runs","worktrees"]){let n=C.join(e,r);if(E(n))return!1}return!0}var no,Sa,Rn=f(()=>{"use strict";Re();ro();no=C.join(".openclaw","harness");Sa=new Set(["runs","worktrees"])});import to from"node:os";function yr(e){return e?.trim()?e.trim():null}function Ca(e,r){let n=r.trim().toLowerCase()||"host";return`${e}-${n}`.replace(/[^a-z0-9._-]+/g,"-")}function Ea(e){return e.KYNVER_DISPATCH_STRICT_IDENTITY==="1"||e.KYNVER_DISPATCH_STRICT_IDENTITY==="true"||e.KYNVER_DAEMON_STRICT_IDENTITY==="1"||e.KYNVER_DAEMON_STRICT_IDENTITY==="true"}function br(e=le(),r=process.env,n={}){let t=ye(r,e),o=[...t.warnings],s=[],i=!!(e.boxKind?.trim()||yr(r.KYNVER_BOX_KIND)),a=n.strict===!0||Ea(r);if((n.requireExplicitBoxKind||a)&&!i&&s.push("boxKind is not persisted in ~/.kynver/config.json and KYNVER_BOX_KIND is unset \u2014 run `kynver setup` (customers: boxKind=box) or `kynver setup --box-kind forge|ghost` for operator pools before dispatch"),t.slugInferenceBlocked&&!i){let R="ambiguous box identity: KYNVER_AGENT_OS_SLUG is set without KYNVER_BOX_KIND or config.boxKind";a||n.requireExplicitBoxKind?s.push(R):o.push(`${R} \u2014 defaulting box kind to box (customer), not forge/ghost`)}let u=yr(e.runnerId),l=yr(r.KYNVER_RUNTIME_ID)??yr(r.OPENCLAW_RUNTIME_ID),c=u??l??Ca(t.boxKind,to.hostname()),d=u?"config":l?"env":"derived";d==="derived"&&o.push(`runnerId not persisted \u2014 using derived id "${c}"; run \`kynver setup --box-kind ${t.boxKind}\` to persist runner identity`);let m=mn({config:e,env:r,totalMemBytes:to.totalmem()}),g=Ze(t.boxKind,m.configuredMaxWorkers??Vr(t.boxKind,m.autoCap)),p=Rr({boxKind:t.boxKind,configuredHarnessRoot:e.harnessRoot,env:r});return p.migrationBlocker&&s.push(p.migrationBlocker),s.length>0?{ok:!1,identity:null,errors:s,warnings:o}:{ok:!0,identity:{boxKind:t.boxKind,boxKindSource:t.source,runnerId:c,runnerIdSource:d,maxConcurrentWorkers:g,workerCapSource:m.workerCapSource,harnessRoot:p.harnessRoot,harnessRootSource:p.source},errors:s,warnings:o}}var Sr=f(()=>{"use strict";ce();oe();Qe();fr();Rn()});var so=f(()=>{"use strict";Xe();oe();zt();ce();gr();Jt();b();Sr()});import{existsSync as Ia,mkdirSync as Qd,readFileSync as Da,writeFileSync as ep}from"node:fs";import{homedir as Na,totalmem as np}from"node:os";import yn from"node:path";function le(){if(!Ia(io))return{};try{return JSON.parse(Da(io,"utf8"))}catch{return{}}}var ao,io,fp,gp,hp,ce=f(()=>{"use strict";Xe();Re();b();oe();Qe();fr();or();gr();so();Sr();ao=yn.join(Na(),".kynver"),io=yn.join(ao,"config.json"),fp=yn.join(ao,"credentials");gp=500*1024*1024,hp=4*1024*1024*1024});import bn from"node:path";function I(e){return kr(e)}function Q(){let e=process.env.KYNVER_HARNESS_ROOT||process.env.OPUS_HARNESS_ROOT;if(e)return I(e);let r=le(),n=r.harnessRoot?.trim();if(n)return I(n);let t=br(r,process.env);return t.identity?t.identity.harnessRoot:Rr({boxKind:"forge",configuredHarnessRoot:null}).harnessRoot}function G(e){return bn.join(I(e),"runs")}function Ee(e){return bn.join(I(e),"worktrees")}function et(){let e=Q();return{harnessRoot:e,runsDir:G(e),worktreesDir:Ee(e)}}function en(e,r){return bn.join(e,v(r))}var Y=f(()=>{"use strict";ce();Rn();Sr();b()});Y();import M from"node:path";cr();import Cr from"node:path";F();ue();var Sn=[".next",".turbo","dist","build",".cache","node_modules/.cache"];function uo(e){let r=e.replace(/\\/g,"/").replace(/\/+$/,"");if(r==="node_modules"||r.startsWith("node_modules/"))return!0;for(let n of Sn)if(r===n||r.startsWith(`${n}/`))return!0;return!1}function D(e){return e.filter(r=>{let n=r.trim(),t=n.startsWith("??")?n.slice(2).trim():n.length>3?n.slice(3).trim():n;return!uo(t)})}function de(e){if(typeof e=="string")return e.match(/https:\/\/github\.com\/[^\s]+\/pull\/\d+/i)?.[0]??null;if(e&&typeof e=="object"){let r=e;for(let n of["prUrl","pr_url","pullRequestUrl"]){let t=r[n];if(typeof t=="string"&&t.trim())return t.trim()}}return null}function Ue(e){let r=e.gitAncestry?.relation;return r==="merged"||r==="synced"?D(e.changedFiles).length>0:!!(de(e.finalResult)||r==="ahead"||r==="diverged"||e.changedFiles.length>0&&e.finalResult)}b();function Be(e){return e.status||(e.status=Me(e.worker,{base:e.run.base,baseCommit:e.run.baseCommit})),e.status}function vn(e,r){if(e.status)return D(e.status.changedFiles).length>0;let n=r?r.porcelain(e.worktreePath):Pe(e.worktreePath);return D(n).length>0}function Wa(e){let r=e.worker.completionSnapshot?.finalResult;return r??(e.worker.taskPrUrl?{prUrl:e.worker.taskPrUrl}:null)}function _n(e,r){if(e.status)return e.status;let n=e.worker,t=typeof n.completionReportedAt=="string"&&n.completionReportedAt.trim().length>0,o=!!(n.status&&["done","exited","blocked","failed","abandoned"].includes(n.status))||t,s=Wa(e);if(o&&!Z(n.pid)){let i=r?.gitStatusCache?r.gitStatusCache.porcelain(e.worktreePath):Pe(e.worktreePath),a=e.run.baseCommit?.trim()||e.run.base?.trim()||"origin/main",l=r?.gitRevCache?.countAheadOfMain(e.worktreePath,a)===0?{checked:!0,base:a,relation:"synced"}:ze(e.worktreePath,{base:e.run.base,baseCommit:e.run.baseCommit}),c={runId:e.runId,worker:e.workerName,pid:n.pid,alive:!1,status:n.status??(t?"done":"exited"),attention:{state:t?"done":"stale"},branch:n.branch,worktreePath:e.worktreePath,ownedPaths:n.ownedPaths,stdoutBytes:0,stderrBytes:0,heartbeatBytes:0,firstEventAt:null,lastEventAt:null,lastActivityAt:n.completionReportedAt??null,currentTool:null,heartbeatCount:0,lastHeartbeatAt:null,lastHeartbeatPhase:null,lastHeartbeatSummary:null,heartbeatBlocker:null,changedFiles:i,gitAncestry:l,finalResult:s,completionBlocker:typeof n.completionBlocker=="string"&&n.completionBlocker.trim()||null,prUrl:n.repairTargetPrUrl??n.taskPrUrl??de(s)};return e.status=c,c}return Be(e)}ue();se();nn();ue();b();import Ma from"node:path";var Ta=new Set(["running","dispatching","pending","queued","needs_attention"]),pe=new Set(["completed","failed","cancelled","done"]);function me(e){let r=rn(e);if(r.length===0)return"failed";let n=!1,t=!1,o=!1,s=!1;for(let i of r){let a=_(Ma.join(Oe(e.id),"workers",v(i),"worker.json"),void 0);if(!a)continue;let u=Me(a,{base:e.base,baseCommit:e.baseCommit});if(u.alive&&!u.finalResult){n=!0;break}typeof a.completionBlocker=="string"&&a.completionBlocker&&(o=!0),Tt(u)&&(s=!0),u.finalResult&&u.attention.state==="done"&&(t=!0)}return n||o||s?null:t?"completed":"failed"}function lo(){let e=[];for(let r of Zr()){if(!Ta.has(r.status))continue;let n=me(r);if(!n||n===r.status)continue;let t=r.status;r.status=n,Qr(r),e.push({runId:r.id,from:t,to:n})}return e}ue();ar();import{existsSync as vr,mkdirSync as Qp,readdirSync as mo,renameSync as em,statSync as Ua}from"node:fs";import fe from"node:path";ce();Xe();Re();F();ar();Y();se();Y();b();import ee from"node:path";var zp=`${ee.sep}runs${ee.sep}runs${ee.sep}`;function co(e){return{workerJsonPath:ee.join(e,"worker.json"),stdoutPath:ee.join(e,"stdout.jsonl"),stderrPath:ee.join(e,"stderr.log"),heartbeatPath:ee.join(e,"heartbeat.jsonl"),lastStatusPath:ee.join(e,"last-status.json")}}b();var Ke=900*1e3,lm=3600*1e3;function fo(e,r){let n=fe.resolve(e),t=fe.resolve(G(r)),o=fe.relative(t,n);return o!==".."&&!o.startsWith("..")&&!fe.isAbsolute(o)}function Ba(e){if(!vr(e))return[];try{return mo(e,{withFileTypes:!0}).filter(r=>r.isDirectory()&&r.name!=="runs").map(r=>r.name)}catch{return[]}}function Ka(e){let r=fe.join(e,"workers");if(!vr(r))return[];try{return mo(r,{withFileTypes:!0}).filter(n=>n.isDirectory()).map(n=>n.name)}catch{return[]}}function po(e,r,n){if(!vr(e))return!1;try{let t=r-Ua(e).mtimeMs;return Number.isFinite(t)&&t>=0&&t<n}catch{return!1}}function Fa(e,r=Date.now(),n=Ke){if(!vr(e))return!1;let t=co(e),o=_(t.workerJsonPath,void 0);if(o?.status==="running"&&Z(o.pid))return!0;let s=ve(t.heartbeatPath);if(s.lastHeartbeatAt){let i=r-Date.parse(s.lastHeartbeatAt);if(Number.isFinite(i)&&i>=0&&i<n)return!0}return!!(po(t.stdoutPath,r,n)||po(t.heartbeatPath,r,n))}function Ha(e,r=Date.now(),n=Ke){for(let t of Ka(e))if(Fa(fe.join(e,"workers",t),r,n))return!0;return!1}function go(e,r=Date.now()){let n=new Set,t=G(e);for(let o of Ba(t)){let s=fe.join(t,o);Ha(s,r)&&n.add(`${e}\0${o}`)}return n}b();function xn(e,r=Date.now(),n=Ke){let t=ve(e.heartbeatPath);if(!t.lastHeartbeatAt)return!1;let o=r-Date.parse(t.lastHeartbeatAt);return Number.isFinite(o)&&o>=0&&o<n}function _r(e,r=Date.now(),n=Ke){return Z(e.pid)?!0:xn(e,r,n)}function La(e,r){return r?r.runTerminalCache.derive(e.run):me(e.run)}function J(e,r=Date.now()){return _r(e.worker,r)}function Cn(e,r){return pe.has(e.run.status)?!1:La(e,r)!==null}function ho(e,r,n=Date.now()){if(J(e,n))return!0;if(pe.has(e.run.status)||Cn(e,r))return!1;let t=Be(e);return ae(t)?!1:!!J(e,n)}cr();ue();function ko(e,r){if(!(typeof e.worker.completionBlocker=="string"?e.worker.completionBlocker.trim():""))return!1;if(J(e))return!0;let t=r??Be(e);return!!(!ae(t)||Ue(t)||D(t.changedFiles).length>0||xe({finalResult:t.finalResult,changedFiles:t.changedFiles,gitAncestry:t.gitAncestry,prUrl:de(t.finalResult)}).blocked)}F();b();import{existsSync as yo,mkdirSync as ja,writeFileSync as Ro}from"node:fs";import xr from"node:path";function bo(e,r,n){return xr.join(e,"salvage",v(r),v(n))}function So(e){return yo(xr.join(bo(e.harnessRoot,e.runId,e.workerName),"evidence.json"))}function vo(e){let r=bo(e.harnessRoot,e.indexed.runId,e.indexed.workerName);ja(r,{recursive:!0});let n=xr.join(r,"salvage.patch"),t=!1;if(yo(e.indexed.worktreePath)){let s=w(e.indexed.worktreePath,["diff","HEAD"]),i=w(e.indexed.worktreePath,["diff","--cached"]),a=[s.stdout,i.stdout].filter(u=>u.trim()).join(`
10
10
  `);a.trim()&&(Ro(n,a.endsWith(`
11
11
  `)?a:`${a}
12
12
  `),t=!0)}let o={capturedAt:new Date(e.now??Date.now()).toISOString(),skipReason:e.skipReason,runId:e.indexed.runId,workerName:e.indexed.workerName,worktreePath:e.indexed.worktreePath,taskId:e.indexed.worker.taskId,agentOsId:e.indexed.worker.agentOsId,branch:e.indexed.worker.branch,completionBlocker:e.indexed.worker.completionBlocker,finalResult:e.status.finalResult,changedFiles:e.status.changedFiles,gitAncestry:e.status.gitAncestry,prUrl:e.status.prUrl??null,...t?{patchPath:n}:{}};return Ro(xr.join(r,"evidence.json"),`${JSON.stringify(o,null,2)}
13
- `),o}var $a=new Set(["completion_blocked","dirty_worktree","pr_or_unmerged_commits","landing_blocked"]);function Ga(e){return!$a.has(e.skipReason)||J(e.indexed,e.now)?!1:So({harnessRoot:e.harnessRoot,runId:e.indexed.runId,workerName:e.indexed.workerName})?!0:e.writeSalvageEvidence?(vo({harnessRoot:e.harnessRoot,indexed:e.indexed,skipReason:e.skipReason,status:e.status,now:e.now}),!0):!1}function Ya(e){let{indexed:r,worktreesAgeMs:n,terminalWorktreesAgeMs:t}=e;return r&&(pe.has(r.run.status)||e.liveness&&Cn(r,e.liveness)||e.liveness&&ae(_n(r,e.liveness))&&!J(r))?t:n}function Va(e){return!e.indexed||e.includeOrphans&&e.worktreesAgeMs<=0?0:Ya(e)}function za(e,r){if(e.harnessRoot?.trim())return Cr.resolve(e.harnessRoot);let n=r.worker.workerDir;if(!n)return null;let t=`${Cr.sep}runs${Cr.sep}`,o=n.indexOf(t);return o<0?null:n.slice(0,o+t.length-1)}function _o(e){let{indexed:r,includeOrphans:n,worktreesAgeMs:t,ageMs:o,orphanSafety:s,worktreeRemovalGuard:i}=e,a=e.now??Date.now();if(!r)return n?s??null:"orphan_without_flag";let u=Va(e);if(t<=0&&!n&&u<=0)return"worktrees_disabled";if(u>0&&o<u)return"below_age_threshold";if(J(r,a))return"active_worker";let l=_n(r,e.liveness),c=za(e,r),d=p=>c&&Ga({indexed:r,harnessRoot:c,skipReason:p,status:l,now:a,writeSalvageEvidence:e.writeSalvageEvidence===!0})?null:p;if(ko(r,l)){let p=d("completion_blocked");if(p)return p}if(vn(r,e.liveness?.gitStatusCache)){let p=d("dirty_worktree");if(p)return p}let m=e.liveness?.gitRevCache?.countAheadOfMain(e.worktreePath);if(m!=null&&m>0){let p=d("pr_or_unmerged_commits");if(p)return p}if(ho(r,e.liveness,a)||!ae(l))return"run_still_active";if(Ue(l)){let p=d("pr_or_unmerged_commits");if(p)return p}if(D(l.changedFiles).length>0){let p=d("dirty_worktree");if(p)return p}if(xe({finalResult:l.finalResult,changedFiles:l.changedFiles,gitAncestry:l.gitAncestry,prUrl:de(l.finalResult)}).blocked){let p=d("landing_blocked");if(p)return p}if(i&&e.worktreePath){let p=i({worktreePath:e.worktreePath,indexed:!!r,runId:r?.runId,worker:r?.workerName});if(p)return p.detail?{reason:p.reason,detail:p.detail}:p.reason}return null}function En(e){let{indexed:r,nodeModulesAgeMs:n,ageMs:t,worktreePath:o,activeWorktreePaths:s,diskPressure:i}=e;return!i&&t<n?"below_age_threshold":s.has(Cr.resolve(o))||r&&J(r)?"active_worker":r&&vn(r,e.gitStatusCache)?"dirty_worktree":null}function xo(e){return En(e)}var wn=216e5,Er=6048e5;var An=36e5,wr=120;var Co=new Set(["active_worker","run_still_active","completion_blocked","landing_blocked"]);function Eo(e,r){let n=[],t=new Set,o=(s,i,a)=>{let u=`${s}\0${i}`;t.has(u)||n.length>=24||(t.add(u),n.push({path:s,reason:i,...a?{detail:a}:{}}))};for(let s of r)Co.has(s.reason)&&o(s.path,s.reason,s.detail);for(let s of e)!s.skipped||!s.skipReason||Co.has(s.skipReason)&&o(s.path,s.skipReason);return n}import{existsSync as Io,readdirSync as Oo,statSync as qa}from"node:fs";import Do from"node:path";se();Y();import wo from"node:path";b();function Xa(e,r){return _r(e,r)}function Ao(e,r=Date.now()){let n=new Set,t=new Set;for(let o of e){for(let s of ir(o)){let i=!1;for(let a of Object.keys(s.workers||{})){let u=_(wo.join(Oe(o,s.id),"workers",v(a),"worker.json"),void 0);if(!u?.worktreePath)continue;let l=wo.resolve(u.worktreePath);Xa(u,r)&&(i=!0,n.add(l))}i&&t.add(`${o}\0${s.id}`)}for(let s of go(o))t.add(s)}return{activeWorktreePaths:n,liveRunKeys:t}}function Po(e,r,n,t){return n?t.has(`${r}\0${n}`):!1}b();function Za(e,r){try{let n=qa(e).mtimeMs;return Math.max(0,r-n)}catch{return 0}}function Qa(e,r){let n=Do.join(e,"runs",r,"run.json");return Io(n)?_(n,null):null}function No(e){try{return Oo(e).length===0}catch{return!1}}function Wo(e){let{harnessRoot:r,runId:n,runPath:t,ageMs:o,runDirectoriesAgeMs:s,activeGuards:i}=e;if(Po(t,r,n,i.liveRunKeys)||!No(t))return"run_still_active";let a=Qa(r,n);return a&&!pe.has(a.status)&&!me(a)?"run_still_active":s>0&&o<s?"below_age_threshold":null}function Mo(e){if(!Io(e.worktreesDir))return[];let r=[],n;try{n=Oo(e.worktreesDir,{withFileTypes:!0})}catch{return[]}for(let t of n){if(!t.isDirectory())continue;let o=t.name;if(e.runIdFilter&&o!==e.runIdFilter)continue;let s=Do.join(e.worktreesDir,o);No(s)&&r.push({kind:"remove_run_directory",path:s,bytes:null,harnessRoot:e.harnessRoot,runId:o,ageMs:Za(s,e.now)})}return r}F();import{existsSync as In,rmSync as Yo}from"node:fs";import{execFileSync as eu}from"node:child_process";import{existsSync as To,readdirSync as ru,statSync as nu}from"node:fs";import tu from"node:path";var ou=2500;function su(e,r=ou){if(!To(e))return 0;try{let t=eu("du",["-sb",e],{encoding:"utf8",timeout:r,stdio:["ignore","pipe","ignore"]}).trim().split(/\s+/)[0],o=Number(t);return Number.isFinite(o)&&o>=0?o:null}catch{return null}}function X(e,r=5e4){if(!To(e))return 0;let n=su(e);if(n!==null)return n;let t=0,o=0,s=[e];for(;s.length>0;){let i=s.pop(),a;try{a=ru(i)}catch{continue}for(let u of a){if(o++>r)return null;let l=tu.join(i,u),c;try{c=nu(l)}catch{continue}c.isDirectory()?s.push(l):t+=c.size}}return t}import{existsSync as lu,rmSync as cu}from"node:fs";Y();import{lstatSync as iu,readdirSync as au}from"node:fs";function Uo(e){try{let r=iu(e),n=typeof process.getuid=="function"?process.getuid():null,t=typeof process.getgid=="function"?process.getgid():null,o=n!==null&&(r.uid!==n||t!==null&&r.gid!==t);return{uid:r.uid,gid:r.gid,foreign:o}}catch{return null}}function Bo(e,r=32){let n=Uo(e);if(!n)return!1;if(n.foreign)return!0;try{let t=au(e),o=0;for(let s of t){if(o>=r)break;let i=`${e.replace(/\/$/,"")}/${s}`,a=Uo(i);if(o+=1,a?.foreign)return!0}}catch{}return!1}import{spawnSync as uu}from"node:child_process";import Ho from"node:path";import N from"node:path";function Ko(e,r,n,t){let o=N.resolve(e),s=`${N.sep}${t}`,i=o.endsWith(s)?o:null;if(!i)return"path_outside_harness";let a=N.relative(n,i);if(a.startsWith("..")||N.isAbsolute(a))return"path_outside_harness";let u=a.split(N.sep);return u.length<3||u[u.length-1]!==t||!o.startsWith(N.resolve(r))?"path_outside_harness":null}function Ar(e,r,n){return Ko(e,r,n,"node_modules")}function Pr(e,r,n){return Ko(e,r,n,".next")}function Ir(e,r,n){let t=N.resolve(e),o=N.relative(n,t);return o.startsWith("..")||N.isAbsolute(o)||o.split(N.sep).length<3||!t.startsWith(N.resolve(r))?"path_outside_harness":null}function Fo(e,r,n){let t=N.resolve(e);return Ar(t,r,n)===null||Pr(t,r,n)===null||Ir(t,r,n)===null}function jo(){let e=(process.env.KYNVER_CLEANUP_PRIVILEGED??"auto").trim().toLowerCase();return e==="0"||e==="false"||e==="off"||e==="no"?"off":e==="1"||e==="true"||e==="force"||e==="yes"?"force":"auto"}function Lo(e){let r=uu("sudo",["-n",...e],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return{ok:r.status===0,stderr:`${r.stderr??""}${r.stdout??""}`.trim()}}function $o(e,r,n){if(!Fo(e,r,n))return{ok:!1,error:"path is not an allowed harness generated cache"};let t=typeof process.getuid=="function"?process.getuid():null,o=typeof process.getgid=="function"?process.getgid():null;if(t===null||o===null)return{ok:!1,error:"privileged reclaim requires POSIX uid/gid"};let s=Lo(["chown","-R",`${t}:${o}`,Ho.resolve(e)]);if(s.ok)return{ok:!0,method:"chown_then_rm"};let i=Lo(["rm","-rf",Ho.resolve(e)]);return i.ok?{ok:!0,method:"sudo_rm"}:{ok:!1,error:s.stderr||i.stderr||"sudo -n failed (password required or not permitted)"}}var Pn="Root-owned harness caches require operator reclaim: configure passwordless sudo for chown/rm under ~/.kynver/harness/worktrees, or run `node scripts/reclaim-harness-root-owned-cache.mjs --execute` as the harness owner with sudo available. See docs/runbooks/harness-root-owned-cache-reclaim.md.";function du(e){let r=e?.code;return r==="EACCES"||r==="EPERM"}function Go(e,r,n={}){if(!lu(e.path))return{executed:!1,skipped:!0,skipReason:"missing_worktree"};if(!r)return{executed:!1,skipped:!0,skipReason:"dry_run"};let t=e.harnessRoot,o=t?Ee(t):null,i=e.bytes??X(e.path)??void 0,a=n.removePath??cu,u=n.hasForeignOwnedEntry??Bo;try{return a(e.path,{recursive:!0,force:!0}),{executed:!0,skipped:!1,bytes:i}}catch(l){if(!du(l)||!t||!o)return{executed:!1,skipped:!0,skipReason:"remove_failed",error:l.message};let c=u(e.path),d=jo();if(!(d==="force"||d==="auto"&&c))return c?{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${l.message}; ${Pn}`}:{executed:!1,skipped:!0,skipReason:"remove_failed",error:l.message};let g=$o(e.path,t,o);if(g.ok&&g.method==="sudo_rm")return{executed:!0,skipped:!1,bytes:i,privilegedReclaim:!0};if(g.ok)try{return a(e.path,{recursive:!0,force:!0}),{executed:!0,skipped:!1,bytes:i,privilegedReclaim:!0}}catch(p){return{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${p.message}; privileged chown succeeded but rm still failed`}}return{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${l.message}; privileged reclaim failed: ${g.error}; ${Pn}`}}}function On(e){let r=e.harnessRoot;return!r||!fo(e.path,r)?null:{...e,executed:!1,skipped:!0,skipReason:"run_metadata_protected"}}function Dn(e,r){let n=On(e);if(n)return n;let t=Go(e,r);return{...e,bytes:t.bytes??e.bytes,executed:t.executed,skipped:t.skipped,skipReason:t.skipReason,error:t.error}}function Vo(e,r){return Dn(e,r)}function zo(e,r){return Dn(e,r)}function Jo(e,r){return Dn(e,r)}function Xo(e,r){let n=On(e);if(n)return n;if(!In(e.path))return{...e,executed:!1,skipped:!0,skipReason:"missing_worktree"};if(!r)return{...e,executed:!1,skipped:!0,skipReason:"dry_run"};try{let t=e.bytes??X(e.path);return Yo(e.path,{recursive:!0,force:!0}),{...e,bytes:t,executed:!0,skipped:!1}}catch(t){return{...e,executed:!1,skipped:!0,skipReason:"remove_failed",error:t.message}}}function qo(e,r){let n=On(e);if(n)return n;if(!In(e.path))return{...e,executed:!1,skipped:!0,skipReason:"missing_worktree"};if(!r)return{...e,executed:!1,skipped:!0,skipReason:"dry_run"};let t=e.repo;try{let o=e.bytes??X(e.path);return t&&ke(t,["worktree","remove","--force",e.path],{allowFailure:!0}),In(e.path)&&Yo(e.path,{recursive:!0,force:!0}),{...e,bytes:o,executed:!0,skipped:!1}}catch(o){return{...e,executed:!1,skipped:!0,skipReason:"remove_failed",error:o.message}}}import{existsSync as Or,readdirSync as Dr,statSync as pu}from"node:fs";import H from"node:path";function Nn(e,r){try{let n=pu(e).mtimeMs;return Math.max(0,r-n)}catch{return 0}}function Qo(e,r){let n=H.relative(r,e);return n===""||!n.startsWith("..")&&!H.isAbsolute(n)}function Zo(e,r,n,t){let o=[];for(let s of Sn){if(s===".next")continue;let i=H.join(e,s);if(!Or(i))continue;let a=H.resolve(i);n.has(a)||Qo(a,r.harnessRoot)&&(n.add(a),o.push({kind:"remove_build_cache",path:a,bytes:null,runId:t.runId,worker:t.worker,repo:t.repo,ageMs:Nn(a,r.now)}))}return o}function es(e){let r=[],n=new Set;for(let t of e.index.values())e.runIdFilter&&t.runId!==e.runIdFilter||r.push(...Zo(t.worktreePath,e,n,{runId:t.runId,worker:t.workerName,repo:t.run.repo}));if(!e.includeOrphans||!Or(e.worktreesDir))return r;for(let t of Dr(e.worktreesDir,{withFileTypes:!0})){if(!t.isDirectory())continue;let o=H.join(e.worktreesDir,t.name);for(let s of Dr(o,{withFileTypes:!0})){if(!s.isDirectory())continue;let i=H.join(o,s.name);r.push(...Zo(i,e,n,{runId:t.name,worker:s.name}))}}return r}function rs(e){let r=e.worktreesAgeMs>0||e.includeOrphans,n=e.includeOrphans;if(!r&&!n)return[];let t=[],o=new Set;if(r)for(let i of e.index.values()){if(e.runIdFilter&&i.runId!==e.runIdFilter)continue;let a=i.worktreePath;Or(a)&&(o.has(a)||(o.add(a),t.push({kind:"remove_worktree",path:a,bytes:null,runId:i.runId,worker:i.workerName,repo:i.run.repo,ageMs:Nn(a,e.now)})))}if(!n||!Or(e.worktreesDir))return t;let s=new Set;for(let i of e.index.values())s.add(H.resolve(i.worktreePath));for(let i of Dr(e.worktreesDir,{withFileTypes:!0})){if(!i.isDirectory()||e.runIdFilter&&i.name!==e.runIdFilter)continue;let a=H.join(e.worktreesDir,i.name),u;try{u=Dr(a,{withFileTypes:!0})}catch{continue}for(let l of u){if(!l.isDirectory())continue;let c=H.resolve(H.join(a,l.name));o.has(c)||s.has(c)||Qo(c,e.harnessRoot)&&(o.add(c),t.push({kind:"remove_worktree",path:c,bytes:null,runId:i.name,worker:l.name,ageMs:Nn(c,e.now)}))}}return t}import{existsSync as os,readdirSync as ns,statSync as mu}from"node:fs";import we from"node:path";var fu=[{dirName:"node_modules",kind:"remove_node_modules"},{dirName:".next",kind:"remove_next_cache"}];function gu(e,r){try{let n=mu(e).mtimeMs;return Math.max(0,r-n)}catch{return 0}}function hu(e,r){let n=we.relative(r,e);return n===""||!n.startsWith("..")&&!we.isAbsolute(n)}function ku(e,r,n,t,o,s){if(!os(t))return;let i=we.resolve(t);r.has(i)||hu(i,n.harnessRoot)&&(r.add(i),e.push({kind:o,path:i,bytes:null,harnessRoot:n.harnessRoot,runId:s.runId,worker:s.worker,repo:s.repo,ageMs:gu(i,n.now)}))}function ts(e,r,n,t,o){for(let s of fu)ku(e,r,n,we.join(t,s.dirName),s.kind,o)}function ss(e){let r=[],n=new Set;for(let t of e.index.values())e.runIdFilter&&t.runId!==e.runIdFilter||ts(r,n,e,t.worktreePath,{runId:t.runId,worker:t.workerName,repo:t.run.repo});if(!e.includeOrphans||!os(e.worktreesDir))return r;for(let t of ns(e.worktreesDir,{withFileTypes:!0})){if(!t.isDirectory()||e.runIdFilter&&t.name!==e.runIdFilter)continue;let o=we.join(e.worktreesDir,t.name),s;try{s=ns(o,{withFileTypes:!0})}catch{continue}for(let i of s){if(!i.isDirectory())continue;let a=we.join(o,i.name);ts(r,n,e,a,{runId:t.name,worker:i.name})}}return r}F();import{existsSync as is,statSync as Ru}from"node:fs";import L from"node:path";function yu(e,r){try{let n=Ru(e).mtimeMs;return Math.max(0,r-n)}catch{return 0}}function bu(e){let r=[],n=null;for(let t of e.split(`
14
- `)){if(!t.trim())continue;let[o,...s]=t.split(" "),i=s.join(" ");if(o==="worktree"){n&&r.push(n),n={path:i};continue}n&&(o==="branch"&&(n.branch=i),o==="HEAD"&&(n.head=i),o==="bare"&&(n.bare=!0))}return n&&r.push(n),r}function Su(e,r){let n=L.relative(L.resolve(r),L.resolve(e));return n!==""&&!n.startsWith("..")&&!L.isAbsolute(n)}var vu=200;function as(e){if(!e.includeOrphans||!is(e.worktreesDir))return[];let r=new Set;for(let s of e.index.values())s.run.repo&&r.add(L.resolve(s.run.repo));let n=new Set;for(let s of e.index.values())n.add(L.resolve(s.worktreePath));let t=[],o=new Set;for(let s of r){let i=0,a;try{a=ke(s,["worktree","list","--porcelain"],{allowFailure:!0})}catch{continue}let u=bu(a);for(let l of u){if(i>=vu)break;let c=L.resolve(l.path);if(c===L.resolve(s)||!Su(c,e.worktreesDir)||n.has(c)||o.has(c)||!is(c))continue;let m=L.relative(e.worktreesDir,c).split(L.sep),g=m[0],p=m[1]??"unknown";o.add(c),i+=1,t.push({kind:"remove_worktree",path:c,bytes:null,runId:g,worker:p,repo:s,ageMs:yu(c,e.now)})}}return t}se();b();import Fe from"node:path";function us(e,r){let n=Fe.resolve(r),t=new Map;for(let[o,s]of e){let i=s.harnessRoot?Fe.resolve(s.harnessRoot):null;i&&i!==n||t.set(o,s)}return t}function ls(e){let r=new Map;for(let n of ir(e))for(let t of Object.keys(n.workers||{})){let o=Fe.join(Oe(e,n.id),"workers",v(t),"worker.json"),s=_(o,void 0);s?.worktreePath&&r.set(Fe.resolve(s.worktreePath),{harnessRoot:e,worktreePath:Fe.resolve(s.worktreePath),runId:n.id,workerName:t,run:n,worker:s})}return r}function He(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function ge(e,r){let n=process.env[e];if(!n)return r;let t=Number(n);return Number.isFinite(t)&&t>=0?t:r}function cs(e={}){let r=e.execute===!0||e.execute!==!1&&He("KYNVER_CLEANUP_EXECUTE"),n=e.finalizeStaleRuns!==!1&&!He("KYNVER_CLEANUP_SKIP_FINALIZE"),t=e.nodeModulesAgeMs??ge("KYNVER_CLEANUP_NODE_MODULES_AGE_MS",216e5),o=e.scanDependencyCaches??(e.nodeModulesAgeMs!==void 0||process.env.KYNVER_CLEANUP_NODE_MODULES_AGE_MS!=null),s=e.worktreesAgeMs??ge("KYNVER_CLEANUP_WORKTREES_AGE_MS",0),i=e.terminalWorktreesAgeMs??ge("KYNVER_CLEANUP_TERMINAL_WORKTREES_AGE_MS",216e5),a=e.runDirectoriesAgeMs??ge("KYNVER_CLEANUP_RUN_DIRECTORIES_AGE_MS",36e5),u=e.maxActionsPerSweep??ge("KYNVER_CLEANUP_MAX_ACTIONS_PER_SWEEP",120),l=e.includeOrphans===!0||He("KYNVER_CLEANUP_INCLUDE_ORPHANS"),d=He("KYNVER_CLEANUP_SCOPE_ALL")||process.env.KYNVER_CLEANUP_SCOPE==="all"?e.runIdFilter:e.runIdFilter??(process.env.KYNVER_CLEANUP_RUN_ID||void 0),m=e.accountBytes!==!1&&!He("KYNVER_CLEANUP_SKIP_BYTE_ACCOUNTING"),g=ge("KYNVER_CLEANUP_STORAGE_ENTRY_CAP",2e3),p=e.storagePerRunEntryCap!==void 0?e.storagePerRunEntryCap:m&&g>0?g:null,R=ge("KYNVER_CLEANUP_BYTE_ENTRY_CAP",2e3),S=e.byteAccountingEntryCap??(Number.isFinite(R)&&R>0?Math.floor(R):2e3);return{execute:r,finalizeStaleRuns:n,scanDependencyCaches:o,nodeModulesAgeMs:t,worktreesAgeMs:s>0?s:0,terminalWorktreesAgeMs:i>=0?i:0,runDirectoriesAgeMs:a>=0?a:0,maxActionsPerSweep:Number.isFinite(u)&&u>0?Math.floor(u):120,includeOrphans:l,runIdFilter:d?String(d):void 0,accountBytes:m,storagePerRunEntryCap:p,byteAccountingEntryCap:S}}F();import{existsSync as Wn,statSync as xu}from"node:fs";import Nr from"node:path";b();var Cu=1800*1e3;function ds(e){let r=e.now??Date.now(),n=e.heartbeatFreshMs??Cu;if(!Wn(e.worktreePath))return null;if(e.runId&&e.workerName){let l=Nr.join(e.harnessRoot,"runs",e.runId,"workers",e.workerName),c=_(Nr.join(l,"worker.json"),void 0);if(c&&xn(c,r,n))return"active_worker";if(!c){let d=Nr.join(l,"heartbeat.jsonl");if(Wn(d))try{let m=r-xu(d).mtimeMs;if(Number.isFinite(m)&&m>=0&&m<n)return"active_worker"}catch{}}}let t=Nr.join(e.worktreePath,".git");if(!Wn(t))return null;let o=w(e.worktreePath,["status","--porcelain"]);if(o.status!==0)return"pr_or_unmerged_commits";let s=o.stdout.split(`
15
- `).map(l=>l.trim()).filter(l=>l.length>0);if(D(s).length>0)return"dirty_worktree";let i=w(e.worktreePath,["rev-list","--count","@{u}..HEAD"]);if(i.status===0){let l=Number(i.stdout.trim());if(Number.isFinite(l)&&l>0)return"pr_or_unmerged_commits"}let a=w(e.worktreePath,["rev-list","--count","origin/main..HEAD"]);if(a.status!==0)return i.status!==0?"pr_or_unmerged_commits":null;let u=Number(a.stdout.trim());return Number.isFinite(u)&&u>0?"pr_or_unmerged_commits":null}Y();import{existsSync as Eu,readdirSync as ps,statSync as wu}from"node:fs";import Au from"node:path";function ms(e={}){let r=O(e.harnessRoot??Q()),n=Ee(r),t=e.now??Date.now(),o=new Date(t).toISOString();if(!Eu(n))return{harnessRoot:r,worktreesDir:n,worktreesBytes:0,runCount:0,workerCount:0,oldestRunAt:null,scannedAt:o};let s=0,i=0,a=0,u=null,l;try{l=ps(n,{withFileTypes:!0})}catch{return{harnessRoot:r,worktreesDir:n,worktreesBytes:null,runCount:0,workerCount:0,oldestRunAt:null,scannedAt:o}}for(let c of l){if(!c.isDirectory())continue;i+=1;let d=Au.join(n,c.name);try{let m=wu(d);u=u===null?m.mtimeMs:Math.min(u,m.mtimeMs)}catch{}try{for(let m of ps(d,{withFileTypes:!0}))m.isDirectory()&&(a+=1)}catch{}if(s!==null&&e.perRunEntryCap!==null){let m=e.perRunEntryCap??5e4;if(m<=0)s=null;else{let g=X(d,m);g===null?s=null:s+=g}}}return{harnessRoot:r,worktreesDir:n,worktreesBytes:s,runCount:i,workerCount:a,oldestRunAt:u===null?null:new Date(u).toISOString(),scannedAt:o}}Y();import{existsSync as Pu}from"node:fs";import{homedir as Iu}from"node:os";import fs from"node:path";var Ou=["/var/tmp/kynver-harness",fs.join(Iu(),".openclaw","harness")];function Mn(e,r,n){if(!n?.trim())return;let t=O(n.trim());e.has(t)||(e.add(t),r.push(t))}function Du(e){return e.scanWellKnown!=null?e.scanWellKnown:process.env.VITEST==="true"?!1:process.env.KYNVER_CLEANUP_SCAN_WELL_KNOWN!=="0"&&!["0","false","no"].includes((process.env.KYNVER_CLEANUP_SCAN_WELL_KNOWN??"").toLowerCase())}function gs(e={}){let r=new Set,n=[];Mn(r,n,e.harnessRoot??Q());let t=process.env.KYNVER_CLEANUP_EXTRA_ROOTS?.split(",").map(o=>o.trim()).filter(Boolean);for(let o of t??[])Mn(r,n,o);if(Du(e))for(let o of Ou){let s=fs.resolve(o);!r.has(s)&&Pu(s)&&Mn(r,n,s)}return n}or();function Nu(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function Wu(e,r){let n=process.env[e];if(!n)return r;let t=Number(n);return Number.isFinite(t)?t:r}function hs(e={}){let r=e.diskPath?.trim()||process.env.KYNVER_DISK_GUARD_PATH?.trim()||"/",n=Wu("KYNVER_DISK_GUARD_MAX_USED_PERCENT",75),t=tr({...e,diskPath:r,diskMaxUsedPercent:e.diskMaxUsedPercent??n}),o=!t.ok||t.usedPercent>=n,s=process.env.KYNVER_CLEANUP_DISK_PRESSURE_FORCE?.trim().toLowerCase();return s==="none"||s==="off"||s==="0"?o=!1:(s==="pressured"||s==="on"||s==="1")&&(o=!0),{diskGate:t,pressured:o,maxUsedPercent:n}}function ks(e,r){if(!r.pressured)return e;let n=e.execute||!Nu("KYNVER_CLEANUP_DRY_RUN_ON_PRESSURE");return{...e,execute:n,nodeModulesAgeMs:0,runIdFilter:void 0,includeOrphans:!0,terminalWorktreesAgeMs:0,runDirectoriesAgeMs:0,worktreesAgeMs:e.worktreesAgeMs>0?e.worktreesAgeMs:6048e5,diskPressure:!0,diskGate:r.diskGate}}nr();import{unlinkSync as Mu}from"node:fs";function Wr(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function Rs(e,r){let n=process.env[e];if(!n)return r;let t=Number(n);return Number.isFinite(t)?t:r}function Tu(e,r,n){return e.length===0?[]:n?[...e]:e.length<=r?[]:e.slice(r)}function ys(e={}){let r=e.execute===!0||Wr("KYNVER_WSL_CRASH_DUMP_EXECUTE")||Wr("KYNVER_CLEANUP_EXECUTE"),n=e.purgeAll===!0||Wr("KYNVER_WSL_CRASH_DUMP_PURGE_ALL"),t=Math.max(0,e.keepNewest??Rs("KYNVER_WSL_CRASH_DUMP_KEEP_NEWEST",n?0:1)),o=Se({forceWsl:e.forceWsl});if(!o?.path)return{observation:o,execute:r,keepNewest:t,removed:[],removedBytes:0,skipped:o?.probeError?[{path:o.path??"(unresolved)",reason:o.probeError}]:[]};let s=Tu(o.dumps,t,n),i=[],a=[],u=0;for(let l of s){if(!r){a.push({path:l.path,reason:"dry_run"});continue}try{Mu(l.path),i.push({path:l.path,bytes:l.bytes,name:l.name}),u+=l.bytes}catch(c){a.push({path:l.path,reason:c.message})}}return{observation:o,execute:r,keepNewest:t,removed:i,removedBytes:u,skipped:a}}function bs(e){return e?Wr("KYNVER_WSL_CRASH_DUMP_CLEANUP")||!e.ok?!0:e.dumpCount>Rs("KYNVER_WSL_CRASH_DUMP_KEEP_NEWEST",1):!1}nr();function W(e,r){if(process.env.KYNVER_CLEANUP_QUIET==="1")return;let n=r?`: ${r}`:"";console.error(`[kynver cleanup] ${e}${n}`)}F();var Mr=class{aheadOfMain=new Map;countAheadOfMain(r,n="origin/main"){let t=`${r}\0${n}`;if(this.aheadOfMain.has(t))return this.aheadOfMain.get(t)??null;let o=w(r,["rev-list","--count",`${n}..HEAD`]);if(o.status!==0)return this.aheadOfMain.set(t,null),null;let s=Number(o.stdout.trim()),i=Number.isFinite(s)?s:null;return this.aheadOfMain.set(t,i),i}};import{spawnSync as Uu}from"node:child_process";import{existsSync as Bu}from"node:fs";import Ku from"node:path";var Fu=5e3;function Hu(e,r){if(!Bu(Ku.join(e,".git")))return{status:null,stdout:"",stderr:"",error:"not_a_git_repo"};try{let n=Uu("git",r,{cwd:e,encoding:"utf8",timeout:Fu}),t=n.error?.message?.includes("ETIMEDOUT")===!0;return{status:t?null:n.status,stdout:n.stdout||"",stderr:n.stderr||"",error:t?"git_timeout":n.error?n.error.message:null}}catch(n){return{status:null,stdout:"",stderr:"",error:n.message}}}function Ss(e){let r=Hu(e,["status","--short"]);return r.error==="not_a_git_repo"?[]:r.error==="git_timeout"||r.status!==0?null:r.stdout.split(`
16
- `).map(n=>n.trim()).filter(Boolean)}var Tr=class{cache=new Map;porcelain(r){let n=r,t=this.cache.get(n);if(t!==void 0)return t;let o=Ss(n)??[];return this.cache.set(n,o),o}};var Ur=class{cache=new Map;derive(r){let n=this.cache.get(r.id);if(n!==void 0)return n;let t=me(r);return this.cache.set(r.id,t),t}};function Lu(e){let r={};for(let n of e)r[n.kind]=(r[n.kind]??0)+1;return r}function vs(e,r={}){let n=r.maxSampleActions??12,t=r.maxSampleSkips??8;return{harnessRoot:e.harnessRoot,scanRoots:e.scanRoots,dryRun:e.dryRun,execute:e.execute,scannedAt:e.scannedAt,finalizedRuns:e.finalizedRuns.length,actionCount:e.actions.length,actionKinds:Lu(e.actions),totals:e.totals,...e.storage?{storage:e.storage}:{},...e.preservedLivePaths?.length?{preservedLivePaths:e.preservedLivePaths}:{},...e.removedRunDirectories!=null?{removedRunDirectories:e.removedRunDirectories}:{},sampleActions:e.actions.slice(0,n).map(o=>({kind:o.kind,path:o.path,...o.skipReason?{skipReason:o.skipReason}:{},...o.bytes!=null?{bytes:o.bytes}:{},...o.runId?{runId:o.runId}:{},...o.worker?{worker:o.worker}:{}})),sampleSkips:e.skips.slice(0,t)}}function ju(e={}){let r=e.harnessRoot?O(e.harnessRoot):Q(),n=gs({harnessRoot:r}),t=e.now??Date.now();return{harnessRoot:r,scanRoots:n,now:t}}function $u(e){return typeof e=="string"?{reason:e}:e}function Ae(e,r,n,t){e.push({path:r,reason:n,...t?{detail:t}:{}})}function Br(e,r,n){return!r||e.bytes!=null?e:{...e,bytes:X(e.path,n)}}function _s(e,r){let n={};for(let t of r)n[t.reason]=(n[t.reason]??0)+1;for(let t of e)t.skipReason&&(n[t.skipReason]=(n[t.skipReason]??0)+1);return n}function Gu(e,r){return e.kind==="remove_next_cache"?zo(e,r):Vo(e,r)}function Yu(e,r,n){return e.kind==="remove_next_cache"?Pr(e.path,r,n):Ar(e.path,r,n)}function Vu(e){let r=new Map;for(let n of e)for(let[t,o]of ls(n))r.set(t,o);return r}function xs(e,r){return e.runId&&e.worker?M.join(r,e.runId,e.worker):M.resolve(e.path,"..")}function zu(e={}){let r=cs(e),n=hs();r=ks(r,n);let t=ju(e);W("scan",`${t.scanRoots.length} harness root(s)`);let o=Ao(t.scanRoots,t.now),s=r.finalizeStaleRuns?lo().map(h=>({runId:h.runId,from:h.from,to:h.to})):[];s.length>0&&W("finalize",`${s.length} stale run(s) marked terminal`),W("index","building worktree index");let i=Vu(t.scanRoots);W("index",`${i.size} indexed worktree(s)`);let a={runTerminalCache:new Ur,gitStatusCache:new Tr,gitRevCache:new Mr},u=[],l=[],c=new Set,d=r.maxActionsPerSweep,m=()=>l.length>=d;for(let h of t.scanRoots){if(m())break;W("root",h);let q=M.join(h,"worktrees"),je=us(i,h),$e={harnessRoot:h,worktreesDir:q,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,runIdFilter:r.runIdFilter,index:je,now:t.now},Kr=r.scanDependencyCaches?ss($e):[];W("dependency",r.scanDependencyCaches?`${Kr.length} cache candidate(s) at ${h}`:"skipped (worktree-only sweep)");let Fr=0;for(let T of Kr){if(m())break;Fr+=1,Fr%50===0&&W("dependency",`${Fr}/${Kr.length} evaluated`);let x=M.resolve(T.path);if(c.has(x))continue;c.add(x);let k={...T,path:x},I=Yu(k,h,q);if(I){Ae(u,k.path,I),l.push({...k,executed:!1,skipped:!0,skipReason:I});continue}let U=xs(k,q),he=je.get(M.resolve(U))??null,K=En({indexed:he,includeOrphans:!0,nodeModulesAgeMs:r.nodeModulesAgeMs,ageMs:k.ageMs,worktreePath:U,activeWorktreePaths:o.activeWorktreePaths,diskPressure:r.diskPressure,gitStatusCache:a.gitStatusCache});if(K){Ae(u,k.path,K),l.push({...k,executed:!1,skipped:!0,skipReason:K});continue}l.push(Gu(Br(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}if(r.scanDependencyCaches)for(let T of es($e)){if(m())break;let x=M.resolve(T.path);if(c.has(x))continue;c.add(x);let k={...T,path:x},I=Ir(k.path,h,q);if(I){Ae(u,k.path,I),l.push({...k,executed:!1,skipped:!0,skipReason:I});continue}let U=xs(k,q),he=je.get(M.resolve(U))??null,K=xo({indexed:he,includeOrphans:!0,nodeModulesAgeMs:r.nodeModulesAgeMs,ageMs:k.ageMs,worktreePath:U,activeWorktreePaths:o.activeWorktreePaths,diskPressure:r.diskPressure,gitStatusCache:a.gitStatusCache});if(K){Ae(u,k.path,K),l.push({...k,executed:!1,skipped:!0,skipReason:K});continue}l.push(Jo(Br(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}let Hr=[...rs($e),...as($e)];W("worktrees",`${Hr.length} candidate(s) at ${h}`);let Tn=new Set,Lr=0;for(let T of Hr){if(m())break;Lr+=1,Lr%50===0&&W("worktrees",`${Lr}/${Hr.length} evaluated`);let x=M.resolve(T.path);if(Tn.has(x))continue;Tn.add(x);let k={...T,path:x},I=je.get(M.resolve(k.path))??null,U=I?null:ds({worktreePath:k.path,harnessRoot:h,runId:k.runId,workerName:k.worker,now:t.now}),he=_o({indexed:I,worktreePath:M.resolve(k.path),includeOrphans:r.includeOrphans,worktreesAgeMs:r.worktreesAgeMs,terminalWorktreesAgeMs:r.terminalWorktreesAgeMs,ageMs:k.ageMs,orphanSafety:U,worktreeRemovalGuard:e.worktreeRemovalGuard,liveness:a,now:t.now,harnessRoot:h,writeSalvageEvidence:r.execute});if(he){let{reason:K,detail:Cs}=$u(he);Ae(u,k.path,K,Cs),l.push({...k,executed:!1,skipped:!0,skipReason:K});continue}l.push(qo(Br(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}if(!m()&&r.runDirectoriesAgeMs>=0)for(let T of Mo({harnessRoot:h,worktreesDir:q,runDirectoriesAgeMs:r.runDirectoriesAgeMs,runIdFilter:r.runIdFilter,activeGuards:o,now:t.now})){if(m())break;let x=M.resolve(T.path);if(c.has(x))continue;c.add(x);let k={...T,path:x},I=k.runId??M.basename(x),U=Wo({harnessRoot:h,runId:I,runPath:x,ageMs:k.ageMs,runDirectoriesAgeMs:r.runDirectoriesAgeMs,activeGuards:o});if(U){Ae(u,k.path,U),l.push({...k,executed:!1,skipped:!0,skipReason:U});continue}l.push(Xo(Br(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}}let g=0,p=0,R=0,S=0,y=0,A=0;for(let h of l)h.bytes&&(g+=h.bytes),!h.skipped&&!h.executed&&h.bytes&&(R+=h.bytes),h.executed?(y+=1,S+=h.bytes??0,h.kind==="remove_run_directory"&&(p+=1)):h.skipped&&(A+=1,h.skipReason==="dry_run"&&h.bytes&&(R+=h.bytes));let j=r.accountBytes?ms({harnessRoot:t.harnessRoot,now:t.now,perRunEntryCap:r.storagePerRunEntryCap}):void 0,B=Se(),Le=r.execute&&bs(B),$=Le?ys({execute:!0}):null,re=B?{observed:!0,execute:Le,dumpCount:B.dumpCount,totalBytes:B.totalBytes,removedCount:$?.removed.length??0,removedBytes:$?.removedBytes??0,executables:B.executables,path:B.path,reason:B.reason}:void 0;$&&$.removed.length>0&&(S+=$.removedBytes,y+=$.removed.length,W("wsl-crashes",`removed ${$.removed.length} dump(s), ${$.removedBytes} bytes`)),W("complete",`${l.length} action(s), ${A} skipped, ${y} removed`);let ne=Eo(l,u),P=vs({harnessRoot:t.harnessRoot,scanRoots:t.scanRoots,dryRun:!r.execute,execute:r.execute,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,diskPressure:r.diskPressure,diskGate:r.diskGate?{ok:r.diskGate.ok,path:r.diskGate.path,freeBytes:r.diskGate.freeBytes,usedPercent:r.diskGate.usedPercent,reason:r.diskGate.reason}:void 0,scannedAt:new Date(t.now).toISOString(),finalizedRuns:s,actions:l,skips:u,totals:{candidateBytes:g,reclaimableBytes:R,removedBytes:S,removedPaths:y,skippedPaths:A,skipReasons:_s(l,u)},...j?{storage:j}:{},...ne.length>0?{preservedLivePaths:ne}:{},...p>0?{removedRunDirectories:p}:{},...re?{wslCrashDumps:re}:{}});return{harnessRoot:t.harnessRoot,scanRoots:t.scanRoots,dryRun:!r.execute,execute:r.execute,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,diskPressure:r.diskPressure,diskGate:r.diskGate?{ok:r.diskGate.ok,path:r.diskGate.path,freeBytes:r.diskGate.freeBytes,usedPercent:r.diskGate.usedPercent,reason:r.diskGate.reason}:void 0,scannedAt:new Date(t.now).toISOString(),finalizedRuns:s,actions:l,skips:u,totals:{candidateBytes:g,reclaimableBytes:R,removedBytes:S,removedPaths:y,skippedPaths:A,skipReasons:_s(l,u)},...j?{storage:j}:{},...ne.length>0?{preservedLivePaths:ne}:{},...p>0?{removedRunDirectories:p}:{},...re?{wslCrashDumps:re}:{},compactSummary:P}}export{wr as DEFAULT_MAX_ACTIONS_PER_SWEEP,wn as DEFAULT_NODE_MODULES_AGE_MS,An as DEFAULT_RUN_DIRECTORIES_AGE_MS,Er as DEFAULT_WORKTREES_AGE_MS,zu as runHarnessCleanup};
13
+ `),o}var $a=new Set(["completion_blocked","dirty_worktree","pr_or_unmerged_commits","landing_blocked"]);function Ga(e){return!$a.has(e.skipReason)||J(e.indexed,e.now)?!1:So({harnessRoot:e.harnessRoot,runId:e.indexed.runId,workerName:e.indexed.workerName})?!0:e.writeSalvageEvidence?(vo({harnessRoot:e.harnessRoot,indexed:e.indexed,skipReason:e.skipReason,status:e.status,now:e.now}),!0):!1}function Ya(e){let{indexed:r,worktreesAgeMs:n,terminalWorktreesAgeMs:t}=e;return r&&(pe.has(r.run.status)||e.liveness&&Cn(r,e.liveness)||e.liveness&&ae(_n(r,e.liveness))&&!J(r))?t:n}function Va(e){return!e.indexed||e.includeOrphans&&e.worktreesAgeMs<=0?0:Ya(e)}function za(e,r){if(e.harnessRoot?.trim())return Cr.resolve(e.harnessRoot);let n=r.worker.workerDir;if(!n)return null;let t=`${Cr.sep}runs${Cr.sep}`,o=n.indexOf(t);return o<0?null:n.slice(0,o+t.length-1)}function _o(e){let{indexed:r,includeOrphans:n,worktreesAgeMs:t,ageMs:o,orphanSafety:s,worktreeRemovalGuard:i}=e,a=e.now??Date.now();if(!r)return n?s??null:"orphan_without_flag";let u=Va(e);if(t<=0&&!n&&u<=0)return"worktrees_disabled";if(u>0&&o<u)return"below_age_threshold";if(J(r,a))return"active_worker";let l=_n(r,e.liveness),c=za(e,r),d=p=>c&&Ga({indexed:r,harnessRoot:c,skipReason:p,status:l,now:a,writeSalvageEvidence:e.writeSalvageEvidence===!0})?null:p;if(ko(r,l)){let p=d("completion_blocked");if(p)return p}if(vn(r,e.liveness?.gitStatusCache)){let p=d("dirty_worktree");if(p)return p}let m=e.liveness?.gitRevCache?.countAheadOfMain(e.worktreePath);if(m!=null&&m>0){let p=d("pr_or_unmerged_commits");if(p)return p}if(ho(r,e.liveness,a)||!ae(l))return"run_still_active";if(Ue(l)){let p=d("pr_or_unmerged_commits");if(p)return p}if(D(l.changedFiles).length>0){let p=d("dirty_worktree");if(p)return p}if(xe({finalResult:l.finalResult,changedFiles:l.changedFiles,gitAncestry:l.gitAncestry,prUrl:de(l.finalResult)}).blocked){let p=d("landing_blocked");if(p)return p}if(i&&e.worktreePath){let p=i({worktreePath:e.worktreePath,indexed:!!r,runId:r?.runId,worker:r?.workerName});if(p)return p.detail?{reason:p.reason,detail:p.detail}:p.reason}return null}function En(e){let{indexed:r,nodeModulesAgeMs:n,ageMs:t,worktreePath:o,activeWorktreePaths:s,diskPressure:i}=e;return!i&&t<n?"below_age_threshold":s.has(Cr.resolve(o))||r&&J(r)?"active_worker":r&&vn(r,e.gitStatusCache)?"dirty_worktree":null}function xo(e){return En(e)}var wn=216e5,Er=6048e5;var An=36e5,wr=120;var Co=new Set(["active_worker","run_still_active","completion_blocked","landing_blocked"]);function Eo(e,r){let n=[],t=new Set,o=(s,i,a)=>{let u=`${s}\0${i}`;t.has(u)||n.length>=24||(t.add(u),n.push({path:s,reason:i,...a?{detail:a}:{}}))};for(let s of r)Co.has(s.reason)&&o(s.path,s.reason,s.detail);for(let s of e)!s.skipped||!s.skipReason||Co.has(s.skipReason)&&o(s.path,s.skipReason);return n}import{existsSync as Oo,readdirSync as Io,statSync as qa}from"node:fs";import Do from"node:path";se();Y();import wo from"node:path";b();function Xa(e,r){return _r(e,r)}function Ao(e,r=Date.now()){let n=new Set,t=new Set;for(let o of e){for(let s of ir(o)){let i=!1;for(let a of Object.keys(s.workers||{})){let u=_(wo.join(Ie(o,s.id),"workers",v(a),"worker.json"),void 0);if(!u?.worktreePath)continue;let l=wo.resolve(u.worktreePath);Xa(u,r)&&(i=!0,n.add(l))}i&&t.add(`${o}\0${s.id}`)}for(let s of go(o))t.add(s)}return{activeWorktreePaths:n,liveRunKeys:t}}function Po(e,r,n,t){return n?t.has(`${r}\0${n}`):!1}b();function Za(e,r){try{let n=qa(e).mtimeMs;return Math.max(0,r-n)}catch{return 0}}function Qa(e,r){let n=Do.join(e,"runs",r,"run.json");return Oo(n)?_(n,null):null}function No(e){try{return Io(e).length===0}catch{return!1}}function Wo(e){let{harnessRoot:r,runId:n,runPath:t,ageMs:o,runDirectoriesAgeMs:s,activeGuards:i}=e;if(Po(t,r,n,i.liveRunKeys)||!No(t))return"run_still_active";let a=Qa(r,n);return a&&!pe.has(a.status)&&!me(a)?"run_still_active":s>0&&o<s?"below_age_threshold":null}function Mo(e){if(!Oo(e.worktreesDir))return[];let r=[],n;try{n=Io(e.worktreesDir,{withFileTypes:!0})}catch{return[]}for(let t of n){if(!t.isDirectory())continue;let o=t.name;if(e.runIdFilter&&o!==e.runIdFilter)continue;let s=Do.join(e.worktreesDir,o);No(s)&&r.push({kind:"remove_run_directory",path:s,bytes:null,harnessRoot:e.harnessRoot,runId:o,ageMs:Za(s,e.now)})}return r}F();import{existsSync as On,rmSync as Yo}from"node:fs";import{execFileSync as eu}from"node:child_process";import{existsSync as To,readdirSync as ru,statSync as nu}from"node:fs";import tu from"node:path";var ou=2500;function su(e,r=ou){if(!To(e))return 0;try{let t=eu("du",["-sb",e],{encoding:"utf8",timeout:r,stdio:["ignore","pipe","ignore"]}).trim().split(/\s+/)[0],o=Number(t);return Number.isFinite(o)&&o>=0?o:null}catch{return null}}function X(e,r=5e4){if(!To(e))return 0;let n=su(e);if(n!==null)return n;let t=0,o=0,s=[e];for(;s.length>0;){let i=s.pop(),a;try{a=ru(i)}catch{continue}for(let u of a){if(o++>r)return null;let l=tu.join(i,u),c;try{c=nu(l)}catch{continue}c.isDirectory()?s.push(l):t+=c.size}}return t}import{existsSync as lu,rmSync as cu}from"node:fs";Y();import{lstatSync as iu,readdirSync as au}from"node:fs";function Uo(e){try{let r=iu(e),n=typeof process.getuid=="function"?process.getuid():null,t=typeof process.getgid=="function"?process.getgid():null,o=n!==null&&(r.uid!==n||t!==null&&r.gid!==t);return{uid:r.uid,gid:r.gid,foreign:o}}catch{return null}}function Bo(e,r=32){let n=Uo(e);if(!n)return!1;if(n.foreign)return!0;try{let t=au(e),o=0;for(let s of t){if(o>=r)break;let i=`${e.replace(/\/$/,"")}/${s}`,a=Uo(i);if(o+=1,a?.foreign)return!0}}catch{}return!1}import{spawnSync as uu}from"node:child_process";import Ho from"node:path";import N from"node:path";function Ko(e,r,n,t){let o=N.resolve(e),s=`${N.sep}${t}`,i=o.endsWith(s)?o:null;if(!i)return"path_outside_harness";let a=N.relative(n,i);if(a.startsWith("..")||N.isAbsolute(a))return"path_outside_harness";let u=a.split(N.sep);return u.length<3||u[u.length-1]!==t||!o.startsWith(N.resolve(r))?"path_outside_harness":null}function Ar(e,r,n){return Ko(e,r,n,"node_modules")}function Pr(e,r,n){return Ko(e,r,n,".next")}function Or(e,r,n){let t=N.resolve(e),o=N.relative(n,t);return o.startsWith("..")||N.isAbsolute(o)||o.split(N.sep).length<3||!t.startsWith(N.resolve(r))?"path_outside_harness":null}function Fo(e,r,n){let t=N.resolve(e);return Ar(t,r,n)===null||Pr(t,r,n)===null||Or(t,r,n)===null}function jo(){let e=(process.env.KYNVER_CLEANUP_PRIVILEGED??"auto").trim().toLowerCase();return e==="0"||e==="false"||e==="off"||e==="no"?"off":e==="1"||e==="true"||e==="force"||e==="yes"?"force":"auto"}function Lo(e){let r=uu("sudo",["-n",...e],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return{ok:r.status===0,stderr:`${r.stderr??""}${r.stdout??""}`.trim()}}function $o(e,r,n){if(!Fo(e,r,n))return{ok:!1,error:"path is not an allowed harness generated cache"};let t=typeof process.getuid=="function"?process.getuid():null,o=typeof process.getgid=="function"?process.getgid():null;if(t===null||o===null)return{ok:!1,error:"privileged reclaim requires POSIX uid/gid"};let s=Lo(["chown","-R",`${t}:${o}`,Ho.resolve(e)]);if(s.ok)return{ok:!0,method:"chown_then_rm"};let i=Lo(["rm","-rf",Ho.resolve(e)]);return i.ok?{ok:!0,method:"sudo_rm"}:{ok:!1,error:s.stderr||i.stderr||"sudo -n failed (password required or not permitted)"}}var Pn="Root-owned harness caches require operator reclaim: configure passwordless sudo for chown/rm under ~/.kynver/harness/worktrees, or run `node scripts/reclaim-harness-root-owned-cache.mjs --execute` as the harness owner with sudo available. See docs/runbooks/harness-root-owned-cache-reclaim.md.";function du(e){let r=e?.code;return r==="EACCES"||r==="EPERM"}function Go(e,r,n={}){if(!lu(e.path))return{executed:!1,skipped:!0,skipReason:"missing_worktree"};if(!r)return{executed:!1,skipped:!0,skipReason:"dry_run"};let t=e.harnessRoot,o=t?Ee(t):null,i=e.bytes??X(e.path)??void 0,a=n.removePath??cu,u=n.hasForeignOwnedEntry??Bo;try{return a(e.path,{recursive:!0,force:!0}),{executed:!0,skipped:!1,bytes:i}}catch(l){if(!du(l)||!t||!o)return{executed:!1,skipped:!0,skipReason:"remove_failed",error:l.message};let c=u(e.path),d=jo();if(!(d==="force"||d==="auto"&&c))return c?{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${l.message}; ${Pn}`}:{executed:!1,skipped:!0,skipReason:"remove_failed",error:l.message};let g=$o(e.path,t,o);if(g.ok&&g.method==="sudo_rm")return{executed:!0,skipped:!1,bytes:i,privilegedReclaim:!0};if(g.ok)try{return a(e.path,{recursive:!0,force:!0}),{executed:!0,skipped:!1,bytes:i,privilegedReclaim:!0}}catch(p){return{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${p.message}; privileged chown succeeded but rm still failed`}}return{executed:!1,skipped:!0,skipReason:"foreign_owner",error:`${l.message}; privileged reclaim failed: ${g.error}; ${Pn}`}}}function In(e){let r=e.harnessRoot;return!r||!fo(e.path,r)?null:{...e,executed:!1,skipped:!0,skipReason:"run_metadata_protected"}}function Dn(e,r){let n=In(e);if(n)return n;let t=Go(e,r);return{...e,bytes:t.bytes??e.bytes,executed:t.executed,skipped:t.skipped,skipReason:t.skipReason,error:t.error}}function Vo(e,r){return Dn(e,r)}function zo(e,r){return Dn(e,r)}function Jo(e,r){return Dn(e,r)}function Xo(e,r){let n=In(e);if(n)return n;if(!On(e.path))return{...e,executed:!1,skipped:!0,skipReason:"missing_worktree"};if(!r)return{...e,executed:!1,skipped:!0,skipReason:"dry_run"};try{let t=e.bytes??X(e.path);return Yo(e.path,{recursive:!0,force:!0}),{...e,bytes:t,executed:!0,skipped:!1}}catch(t){return{...e,executed:!1,skipped:!0,skipReason:"remove_failed",error:t.message}}}function qo(e,r){let n=In(e);if(n)return n;if(!On(e.path))return{...e,executed:!1,skipped:!0,skipReason:"missing_worktree"};if(!r)return{...e,executed:!1,skipped:!0,skipReason:"dry_run"};let t=e.repo;try{let o=e.bytes??X(e.path);return t&&ke(t,["worktree","remove","--force",e.path],{allowFailure:!0}),On(e.path)&&Yo(e.path,{recursive:!0,force:!0}),{...e,bytes:o,executed:!0,skipped:!1}}catch(o){return{...e,executed:!1,skipped:!0,skipReason:"remove_failed",error:o.message}}}import{existsSync as Ir,readdirSync as Dr,statSync as pu}from"node:fs";import H from"node:path";function Nn(e,r){try{let n=pu(e).mtimeMs;return Math.max(0,r-n)}catch{return 0}}function Qo(e,r){let n=H.relative(r,e);return n===""||!n.startsWith("..")&&!H.isAbsolute(n)}function Zo(e,r,n,t){let o=[];for(let s of Sn){if(s===".next")continue;let i=H.join(e,s);if(!Ir(i))continue;let a=H.resolve(i);n.has(a)||Qo(a,r.harnessRoot)&&(n.add(a),o.push({kind:"remove_build_cache",path:a,bytes:null,runId:t.runId,worker:t.worker,repo:t.repo,ageMs:Nn(a,r.now)}))}return o}function es(e){let r=[],n=new Set;for(let t of e.index.values())e.runIdFilter&&t.runId!==e.runIdFilter||r.push(...Zo(t.worktreePath,e,n,{runId:t.runId,worker:t.workerName,repo:t.run.repo}));if(!e.includeOrphans||!Ir(e.worktreesDir))return r;for(let t of Dr(e.worktreesDir,{withFileTypes:!0})){if(!t.isDirectory())continue;let o=H.join(e.worktreesDir,t.name);for(let s of Dr(o,{withFileTypes:!0})){if(!s.isDirectory())continue;let i=H.join(o,s.name);r.push(...Zo(i,e,n,{runId:t.name,worker:s.name}))}}return r}function rs(e){let r=e.worktreesAgeMs>0||e.includeOrphans,n=e.includeOrphans;if(!r&&!n)return[];let t=[],o=new Set;if(r)for(let i of e.index.values()){if(e.runIdFilter&&i.runId!==e.runIdFilter)continue;let a=i.worktreePath;Ir(a)&&(o.has(a)||(o.add(a),t.push({kind:"remove_worktree",path:a,bytes:null,runId:i.runId,worker:i.workerName,repo:i.run.repo,ageMs:Nn(a,e.now)})))}if(!n||!Ir(e.worktreesDir))return t;let s=new Set;for(let i of e.index.values())s.add(H.resolve(i.worktreePath));for(let i of Dr(e.worktreesDir,{withFileTypes:!0})){if(!i.isDirectory()||e.runIdFilter&&i.name!==e.runIdFilter)continue;let a=H.join(e.worktreesDir,i.name),u;try{u=Dr(a,{withFileTypes:!0})}catch{continue}for(let l of u){if(!l.isDirectory())continue;let c=H.resolve(H.join(a,l.name));o.has(c)||s.has(c)||Qo(c,e.harnessRoot)&&(o.add(c),t.push({kind:"remove_worktree",path:c,bytes:null,runId:i.name,worker:l.name,ageMs:Nn(c,e.now)}))}}return t}import{existsSync as os,readdirSync as ns,statSync as mu}from"node:fs";import we from"node:path";var fu=[{dirName:"node_modules",kind:"remove_node_modules"},{dirName:".next",kind:"remove_next_cache"}];function gu(e,r){try{let n=mu(e).mtimeMs;return Math.max(0,r-n)}catch{return 0}}function hu(e,r){let n=we.relative(r,e);return n===""||!n.startsWith("..")&&!we.isAbsolute(n)}function ku(e,r,n,t,o,s){if(!os(t))return;let i=we.resolve(t);r.has(i)||hu(i,n.harnessRoot)&&(r.add(i),e.push({kind:o,path:i,bytes:null,harnessRoot:n.harnessRoot,runId:s.runId,worker:s.worker,repo:s.repo,ageMs:gu(i,n.now)}))}function ts(e,r,n,t,o){for(let s of fu)ku(e,r,n,we.join(t,s.dirName),s.kind,o)}function ss(e){let r=[],n=new Set;for(let t of e.index.values())e.runIdFilter&&t.runId!==e.runIdFilter||ts(r,n,e,t.worktreePath,{runId:t.runId,worker:t.workerName,repo:t.run.repo});if(!e.includeOrphans||!os(e.worktreesDir))return r;for(let t of ns(e.worktreesDir,{withFileTypes:!0})){if(!t.isDirectory()||e.runIdFilter&&t.name!==e.runIdFilter)continue;let o=we.join(e.worktreesDir,t.name),s;try{s=ns(o,{withFileTypes:!0})}catch{continue}for(let i of s){if(!i.isDirectory())continue;let a=we.join(o,i.name);ts(r,n,e,a,{runId:t.name,worker:i.name})}}return r}F();import{existsSync as is,statSync as Ru}from"node:fs";import L from"node:path";function yu(e,r){try{let n=Ru(e).mtimeMs;return Math.max(0,r-n)}catch{return 0}}function bu(e){let r=[],n=null;for(let t of e.split(`
14
+ `)){if(!t.trim())continue;let[o,...s]=t.split(" "),i=s.join(" ");if(o==="worktree"){n&&r.push(n),n={path:i};continue}n&&(o==="branch"&&(n.branch=i),o==="HEAD"&&(n.head=i),o==="bare"&&(n.bare=!0))}return n&&r.push(n),r}function Su(e,r){let n=L.relative(L.resolve(r),L.resolve(e));return n!==""&&!n.startsWith("..")&&!L.isAbsolute(n)}var vu=200;function as(e){if(!e.includeOrphans||!is(e.worktreesDir))return[];let r=new Set;for(let s of e.index.values())s.run.repo&&r.add(L.resolve(s.run.repo));let n=new Set;for(let s of e.index.values())n.add(L.resolve(s.worktreePath));let t=[],o=new Set;for(let s of r){let i=0,a;try{a=ke(s,["worktree","list","--porcelain"],{allowFailure:!0})}catch{continue}let u=bu(a);for(let l of u){if(i>=vu)break;let c=L.resolve(l.path);if(c===L.resolve(s)||!Su(c,e.worktreesDir)||n.has(c)||o.has(c)||!is(c))continue;let m=L.relative(e.worktreesDir,c).split(L.sep),g=m[0],p=m[1]??"unknown";o.add(c),i+=1,t.push({kind:"remove_worktree",path:c,bytes:null,runId:g,worker:p,repo:s,ageMs:yu(c,e.now)})}}return t}se();b();import Fe from"node:path";function us(e,r){let n=Fe.resolve(r),t=new Map;for(let[o,s]of e){let i=s.harnessRoot?Fe.resolve(s.harnessRoot):null;i&&i!==n||t.set(o,s)}return t}function ls(e){let r=new Map;for(let n of ir(e))for(let t of Object.keys(n.workers||{})){let o=Fe.join(Ie(e,n.id),"workers",v(t),"worker.json"),s=_(o,void 0);s?.worktreePath&&r.set(Fe.resolve(s.worktreePath),{harnessRoot:e,worktreePath:Fe.resolve(s.worktreePath),runId:n.id,workerName:t,run:n,worker:s})}return r}function He(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function ge(e,r){let n=process.env[e];if(!n)return r;let t=Number(n);return Number.isFinite(t)&&t>=0?t:r}function cs(e={}){let r=e.execute===!0||e.execute!==!1&&He("KYNVER_CLEANUP_EXECUTE"),n=e.finalizeStaleRuns!==!1&&!He("KYNVER_CLEANUP_SKIP_FINALIZE"),t=e.nodeModulesAgeMs??ge("KYNVER_CLEANUP_NODE_MODULES_AGE_MS",216e5),o=e.scanDependencyCaches??(e.nodeModulesAgeMs!==void 0||process.env.KYNVER_CLEANUP_NODE_MODULES_AGE_MS!=null),s=e.worktreesAgeMs??ge("KYNVER_CLEANUP_WORKTREES_AGE_MS",0),i=e.terminalWorktreesAgeMs??ge("KYNVER_CLEANUP_TERMINAL_WORKTREES_AGE_MS",216e5),a=e.runDirectoriesAgeMs??ge("KYNVER_CLEANUP_RUN_DIRECTORIES_AGE_MS",36e5),u=e.maxActionsPerSweep??ge("KYNVER_CLEANUP_MAX_ACTIONS_PER_SWEEP",120),l=e.includeOrphans===!0||He("KYNVER_CLEANUP_INCLUDE_ORPHANS"),d=He("KYNVER_CLEANUP_SCOPE_ALL")||process.env.KYNVER_CLEANUP_SCOPE==="all"?e.runIdFilter:e.runIdFilter??(process.env.KYNVER_CLEANUP_RUN_ID||void 0),m=e.accountBytes!==!1&&!He("KYNVER_CLEANUP_SKIP_BYTE_ACCOUNTING"),g=ge("KYNVER_CLEANUP_STORAGE_ENTRY_CAP",2e3),p=e.storagePerRunEntryCap!==void 0?e.storagePerRunEntryCap:m&&g>0?g:null,R=ge("KYNVER_CLEANUP_BYTE_ENTRY_CAP",2e3),S=e.byteAccountingEntryCap??(Number.isFinite(R)&&R>0?Math.floor(R):2e3);return{execute:r,finalizeStaleRuns:n,scanDependencyCaches:o,nodeModulesAgeMs:t,worktreesAgeMs:s>0?s:0,terminalWorktreesAgeMs:i>=0?i:0,runDirectoriesAgeMs:a>=0?a:0,maxActionsPerSweep:Number.isFinite(u)&&u>0?Math.floor(u):120,includeOrphans:l,runIdFilter:d?String(d):void 0,accountBytes:m,storagePerRunEntryCap:p,byteAccountingEntryCap:S}}F();import{existsSync as Wn,statSync as xu}from"node:fs";import Nr from"node:path";b();var Cu=1800*1e3;function ds(e){let r=e.now??Date.now(),n=e.heartbeatFreshMs??Cu;if(!Wn(e.worktreePath))return null;if(e.runId&&e.workerName){let l=Nr.join(e.harnessRoot,"runs",e.runId,"workers",e.workerName),c=_(Nr.join(l,"worker.json"),void 0);if(c&&xn(c,r,n))return"active_worker";if(!c){let d=Nr.join(l,"heartbeat.jsonl");if(Wn(d))try{let m=r-xu(d).mtimeMs;if(Number.isFinite(m)&&m>=0&&m<n)return"active_worker"}catch{}}}let t=Nr.join(e.worktreePath,".git");if(!Wn(t))return null;let o=w(e.worktreePath,["status","--porcelain"]);if(o.status!==0)return"pr_or_unmerged_commits";let s=o.stdout.split(`
15
+ `).map(l=>l.trim()).filter(l=>l.length>0);if(D(s).length>0)return"dirty_worktree";let i=w(e.worktreePath,["rev-list","--count","@{u}..HEAD"]);if(i.status===0){let l=Number(i.stdout.trim());if(Number.isFinite(l)&&l>0)return"pr_or_unmerged_commits"}let a=w(e.worktreePath,["rev-list","--count","origin/main..HEAD"]);if(a.status!==0)return i.status!==0?"pr_or_unmerged_commits":null;let u=Number(a.stdout.trim());return Number.isFinite(u)&&u>0?"pr_or_unmerged_commits":null}Y();import{existsSync as Eu,readdirSync as ps,statSync as wu}from"node:fs";import Au from"node:path";function ms(e={}){let r=I(e.harnessRoot??Q()),n=Ee(r),t=e.now??Date.now(),o=new Date(t).toISOString();if(!Eu(n))return{harnessRoot:r,worktreesDir:n,worktreesBytes:0,runCount:0,workerCount:0,oldestRunAt:null,scannedAt:o};let s=0,i=0,a=0,u=null,l;try{l=ps(n,{withFileTypes:!0})}catch{return{harnessRoot:r,worktreesDir:n,worktreesBytes:null,runCount:0,workerCount:0,oldestRunAt:null,scannedAt:o}}for(let c of l){if(!c.isDirectory())continue;i+=1;let d=Au.join(n,c.name);try{let m=wu(d);u=u===null?m.mtimeMs:Math.min(u,m.mtimeMs)}catch{}try{for(let m of ps(d,{withFileTypes:!0}))m.isDirectory()&&(a+=1)}catch{}if(s!==null&&e.perRunEntryCap!==null){let m=e.perRunEntryCap??5e4;if(m<=0)s=null;else{let g=X(d,m);g===null?s=null:s+=g}}}return{harnessRoot:r,worktreesDir:n,worktreesBytes:s,runCount:i,workerCount:a,oldestRunAt:u===null?null:new Date(u).toISOString(),scannedAt:o}}Y();import{existsSync as Pu}from"node:fs";import{homedir as Ou}from"node:os";import fs from"node:path";var Iu=["/var/tmp/kynver-harness",fs.join(Ou(),".openclaw","harness")];function Mn(e,r,n){if(!n?.trim())return;let t=I(n.trim());e.has(t)||(e.add(t),r.push(t))}function Du(e){return e.scanWellKnown!=null?e.scanWellKnown:process.env.VITEST==="true"?!1:process.env.KYNVER_CLEANUP_SCAN_WELL_KNOWN!=="0"&&!["0","false","no"].includes((process.env.KYNVER_CLEANUP_SCAN_WELL_KNOWN??"").toLowerCase())}function gs(e={}){let r=new Set,n=[];Mn(r,n,e.harnessRoot??Q());let t=process.env.KYNVER_CLEANUP_EXTRA_ROOTS?.split(",").map(o=>o.trim()).filter(Boolean);for(let o of t??[])Mn(r,n,o);if(Du(e))for(let o of Iu){let s=fs.resolve(o);!r.has(s)&&Pu(s)&&Mn(r,n,s)}return n}or();function Nu(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function Wu(e,r){let n=process.env[e];if(!n)return r;let t=Number(n);return Number.isFinite(t)?t:r}function hs(e={}){let r=e.diskPath?.trim()||process.env.KYNVER_DISK_GUARD_PATH?.trim()||"/",n=Wu("KYNVER_DISK_GUARD_MAX_USED_PERCENT",75),t=tr({...e,diskPath:r,diskMaxUsedPercent:e.diskMaxUsedPercent??n}),o=!t.ok||t.usedPercent>=n,s=process.env.KYNVER_CLEANUP_DISK_PRESSURE_FORCE?.trim().toLowerCase();return s==="none"||s==="off"||s==="0"?o=!1:(s==="pressured"||s==="on"||s==="1")&&(o=!0),{diskGate:t,pressured:o,maxUsedPercent:n}}function ks(e,r){if(!r.pressured)return e;let n=e.execute||!Nu("KYNVER_CLEANUP_DRY_RUN_ON_PRESSURE");return{...e,execute:n,nodeModulesAgeMs:0,runIdFilter:void 0,includeOrphans:!0,terminalWorktreesAgeMs:0,runDirectoriesAgeMs:0,worktreesAgeMs:e.worktreesAgeMs>0?e.worktreesAgeMs:6048e5,diskPressure:!0,diskGate:r.diskGate}}nr();import{unlinkSync as Mu}from"node:fs";function Wr(e){let r=process.env[e];return r==="1"||r==="true"||r==="yes"}function Rs(e,r){let n=process.env[e];if(!n)return r;let t=Number(n);return Number.isFinite(t)?t:r}function Tu(e,r,n){return e.length===0?[]:n?[...e]:e.length<=r?[]:e.slice(r)}function ys(e={}){let r=e.execute===!0||Wr("KYNVER_WSL_CRASH_DUMP_EXECUTE")||Wr("KYNVER_CLEANUP_EXECUTE"),n=e.purgeAll===!0||Wr("KYNVER_WSL_CRASH_DUMP_PURGE_ALL"),t=Math.max(0,e.keepNewest??Rs("KYNVER_WSL_CRASH_DUMP_KEEP_NEWEST",n?0:1)),o=Se({forceWsl:e.forceWsl});if(!o?.path)return{observation:o,execute:r,keepNewest:t,removed:[],removedBytes:0,skipped:o?.probeError?[{path:o.path??"(unresolved)",reason:o.probeError}]:[]};let s=Tu(o.dumps,t,n),i=[],a=[],u=0;for(let l of s){if(!r){a.push({path:l.path,reason:"dry_run"});continue}try{Mu(l.path),i.push({path:l.path,bytes:l.bytes,name:l.name}),u+=l.bytes}catch(c){a.push({path:l.path,reason:c.message})}}return{observation:o,execute:r,keepNewest:t,removed:i,removedBytes:u,skipped:a}}function bs(e){return e?Wr("KYNVER_WSL_CRASH_DUMP_CLEANUP")||!e.ok?!0:e.dumpCount>Rs("KYNVER_WSL_CRASH_DUMP_KEEP_NEWEST",1):!1}nr();function W(e,r){if(process.env.KYNVER_CLEANUP_QUIET==="1")return;let n=r?`: ${r}`:"";console.error(`[kynver cleanup] ${e}${n}`)}F();var Mr=class{aheadOfMain=new Map;countAheadOfMain(r,n="origin/main"){let t=`${r}\0${n}`;if(this.aheadOfMain.has(t))return this.aheadOfMain.get(t)??null;let o=w(r,["rev-list","--count",`${n}..HEAD`]);if(o.status!==0)return this.aheadOfMain.set(t,null),null;let s=Number(o.stdout.trim()),i=Number.isFinite(s)?s:null;return this.aheadOfMain.set(t,i),i}};import{spawnSync as Uu}from"node:child_process";import{existsSync as Bu}from"node:fs";import Ku from"node:path";var Fu=5e3;function Hu(e,r){if(!Bu(Ku.join(e,".git")))return{status:null,stdout:"",stderr:"",error:"not_a_git_repo"};try{let n=Uu("git",r,{cwd:e,encoding:"utf8",timeout:Fu}),t=n.error?.message?.includes("ETIMEDOUT")===!0;return{status:t?null:n.status,stdout:n.stdout||"",stderr:n.stderr||"",error:t?"git_timeout":n.error?n.error.message:null}}catch(n){return{status:null,stdout:"",stderr:"",error:n.message}}}function Ss(e){let r=Hu(e,["status","--short"]);return r.error==="not_a_git_repo"?[]:r.error==="git_timeout"||r.status!==0?null:r.stdout.split(`
16
+ `).map(n=>n.trim()).filter(Boolean)}var Tr=class{cache=new Map;porcelain(r){let n=r,t=this.cache.get(n);if(t!==void 0)return t;let o=Ss(n)??[];return this.cache.set(n,o),o}};var Ur=class{cache=new Map;derive(r){let n=this.cache.get(r.id);if(n!==void 0)return n;let t=me(r);return this.cache.set(r.id,t),t}};function Lu(e){let r={};for(let n of e)r[n.kind]=(r[n.kind]??0)+1;return r}function vs(e,r={}){let n=r.maxSampleActions??12,t=r.maxSampleSkips??8;return{harnessRoot:e.harnessRoot,scanRoots:e.scanRoots,dryRun:e.dryRun,execute:e.execute,scannedAt:e.scannedAt,finalizedRuns:e.finalizedRuns.length,actionCount:e.actions.length,actionKinds:Lu(e.actions),totals:e.totals,...e.storage?{storage:e.storage}:{},...e.preservedLivePaths?.length?{preservedLivePaths:e.preservedLivePaths}:{},...e.removedRunDirectories!=null?{removedRunDirectories:e.removedRunDirectories}:{},sampleActions:e.actions.slice(0,n).map(o=>({kind:o.kind,path:o.path,...o.skipReason?{skipReason:o.skipReason}:{},...o.bytes!=null?{bytes:o.bytes}:{},...o.runId?{runId:o.runId}:{},...o.worker?{worker:o.worker}:{}})),sampleSkips:e.skips.slice(0,t)}}function ju(e={}){let r=e.harnessRoot?I(e.harnessRoot):Q(),n=gs({harnessRoot:r}),t=e.now??Date.now();return{harnessRoot:r,scanRoots:n,now:t}}function $u(e){return typeof e=="string"?{reason:e}:e}function Ae(e,r,n,t){e.push({path:r,reason:n,...t?{detail:t}:{}})}function Br(e,r,n){return!r||e.bytes!=null?e:{...e,bytes:X(e.path,n)}}function _s(e,r){let n={};for(let t of r)n[t.reason]=(n[t.reason]??0)+1;for(let t of e)t.skipReason&&(n[t.skipReason]=(n[t.skipReason]??0)+1);return n}function Gu(e,r){return e.kind==="remove_next_cache"?zo(e,r):Vo(e,r)}function Yu(e,r,n){return e.kind==="remove_next_cache"?Pr(e.path,r,n):Ar(e.path,r,n)}function Vu(e){let r=new Map;for(let n of e)for(let[t,o]of ls(n))r.set(t,o);return r}function xs(e,r){return e.runId&&e.worker?M.join(r,e.runId,e.worker):M.resolve(e.path,"..")}function zu(e={}){let r=cs(e),n=hs();r=ks(r,n);let t=ju(e);W("scan",`${t.scanRoots.length} harness root(s)`);let o=Ao(t.scanRoots,t.now),s=r.finalizeStaleRuns?lo().map(h=>({runId:h.runId,from:h.from,to:h.to})):[];s.length>0&&W("finalize",`${s.length} stale run(s) marked terminal`),W("index","building worktree index");let i=Vu(t.scanRoots);W("index",`${i.size} indexed worktree(s)`);let a={runTerminalCache:new Ur,gitStatusCache:new Tr,gitRevCache:new Mr},u=[],l=[],c=new Set,d=r.maxActionsPerSweep,m=()=>l.length>=d;for(let h of t.scanRoots){if(m())break;W("root",h);let q=M.join(h,"worktrees"),je=us(i,h),$e={harnessRoot:h,worktreesDir:q,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,runIdFilter:r.runIdFilter,index:je,now:t.now},Kr=r.scanDependencyCaches?ss($e):[];W("dependency",r.scanDependencyCaches?`${Kr.length} cache candidate(s) at ${h}`:"skipped (worktree-only sweep)");let Fr=0;for(let T of Kr){if(m())break;Fr+=1,Fr%50===0&&W("dependency",`${Fr}/${Kr.length} evaluated`);let x=M.resolve(T.path);if(c.has(x))continue;c.add(x);let k={...T,path:x},O=Yu(k,h,q);if(O){Ae(u,k.path,O),l.push({...k,executed:!1,skipped:!0,skipReason:O});continue}let U=xs(k,q),he=je.get(M.resolve(U))??null,K=En({indexed:he,includeOrphans:!0,nodeModulesAgeMs:r.nodeModulesAgeMs,ageMs:k.ageMs,worktreePath:U,activeWorktreePaths:o.activeWorktreePaths,diskPressure:r.diskPressure,gitStatusCache:a.gitStatusCache});if(K){Ae(u,k.path,K),l.push({...k,executed:!1,skipped:!0,skipReason:K});continue}l.push(Gu(Br(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}if(r.scanDependencyCaches)for(let T of es($e)){if(m())break;let x=M.resolve(T.path);if(c.has(x))continue;c.add(x);let k={...T,path:x},O=Or(k.path,h,q);if(O){Ae(u,k.path,O),l.push({...k,executed:!1,skipped:!0,skipReason:O});continue}let U=xs(k,q),he=je.get(M.resolve(U))??null,K=xo({indexed:he,includeOrphans:!0,nodeModulesAgeMs:r.nodeModulesAgeMs,ageMs:k.ageMs,worktreePath:U,activeWorktreePaths:o.activeWorktreePaths,diskPressure:r.diskPressure,gitStatusCache:a.gitStatusCache});if(K){Ae(u,k.path,K),l.push({...k,executed:!1,skipped:!0,skipReason:K});continue}l.push(Jo(Br(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}let Hr=[...rs($e),...as($e)];W("worktrees",`${Hr.length} candidate(s) at ${h}`);let Tn=new Set,Lr=0;for(let T of Hr){if(m())break;Lr+=1,Lr%50===0&&W("worktrees",`${Lr}/${Hr.length} evaluated`);let x=M.resolve(T.path);if(Tn.has(x))continue;Tn.add(x);let k={...T,path:x},O=je.get(M.resolve(k.path))??null,U=O?null:ds({worktreePath:k.path,harnessRoot:h,runId:k.runId,workerName:k.worker,now:t.now}),he=_o({indexed:O,worktreePath:M.resolve(k.path),includeOrphans:r.includeOrphans,worktreesAgeMs:r.worktreesAgeMs,terminalWorktreesAgeMs:r.terminalWorktreesAgeMs,ageMs:k.ageMs,orphanSafety:U,worktreeRemovalGuard:e.worktreeRemovalGuard,liveness:a,now:t.now,harnessRoot:h,writeSalvageEvidence:r.execute});if(he){let{reason:K,detail:Cs}=$u(he);Ae(u,k.path,K,Cs),l.push({...k,executed:!1,skipped:!0,skipReason:K});continue}l.push(qo(Br(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}if(!m()&&r.runDirectoriesAgeMs>=0)for(let T of Mo({harnessRoot:h,worktreesDir:q,runDirectoriesAgeMs:r.runDirectoriesAgeMs,runIdFilter:r.runIdFilter,activeGuards:o,now:t.now})){if(m())break;let x=M.resolve(T.path);if(c.has(x))continue;c.add(x);let k={...T,path:x},O=k.runId??M.basename(x),U=Wo({harnessRoot:h,runId:O,runPath:x,ageMs:k.ageMs,runDirectoriesAgeMs:r.runDirectoriesAgeMs,activeGuards:o});if(U){Ae(u,k.path,U),l.push({...k,executed:!1,skipped:!0,skipReason:U});continue}l.push(Xo(Br(k,r.accountBytes,r.byteAccountingEntryCap),r.execute))}}let g=0,p=0,R=0,S=0,y=0,A=0;for(let h of l)h.bytes&&(g+=h.bytes),!h.skipped&&!h.executed&&h.bytes&&(R+=h.bytes),h.executed?(y+=1,S+=h.bytes??0,h.kind==="remove_run_directory"&&(p+=1)):h.skipped&&(A+=1,h.skipReason==="dry_run"&&h.bytes&&(R+=h.bytes));let j=r.accountBytes?ms({harnessRoot:t.harnessRoot,now:t.now,perRunEntryCap:r.storagePerRunEntryCap}):void 0,B=Se(),Le=r.execute&&bs(B),$=Le?ys({execute:!0}):null,re=B?{observed:!0,execute:Le,dumpCount:B.dumpCount,totalBytes:B.totalBytes,removedCount:$?.removed.length??0,removedBytes:$?.removedBytes??0,executables:B.executables,path:B.path,reason:B.reason}:void 0;$&&$.removed.length>0&&(S+=$.removedBytes,y+=$.removed.length,W("wsl-crashes",`removed ${$.removed.length} dump(s), ${$.removedBytes} bytes`)),W("complete",`${l.length} action(s), ${A} skipped, ${y} removed`);let ne=Eo(l,u),P=vs({harnessRoot:t.harnessRoot,scanRoots:t.scanRoots,dryRun:!r.execute,execute:r.execute,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,diskPressure:r.diskPressure,diskGate:r.diskGate?{ok:r.diskGate.ok,path:r.diskGate.path,freeBytes:r.diskGate.freeBytes,usedPercent:r.diskGate.usedPercent,reason:r.diskGate.reason}:void 0,scannedAt:new Date(t.now).toISOString(),finalizedRuns:s,actions:l,skips:u,totals:{candidateBytes:g,reclaimableBytes:R,removedBytes:S,removedPaths:y,skippedPaths:A,skipReasons:_s(l,u)},...j?{storage:j}:{},...ne.length>0?{preservedLivePaths:ne}:{},...p>0?{removedRunDirectories:p}:{},...re?{wslCrashDumps:re}:{}});return{harnessRoot:t.harnessRoot,scanRoots:t.scanRoots,dryRun:!r.execute,execute:r.execute,nodeModulesAgeMs:r.nodeModulesAgeMs,worktreesAgeMs:r.worktreesAgeMs,includeOrphans:r.includeOrphans,diskPressure:r.diskPressure,diskGate:r.diskGate?{ok:r.diskGate.ok,path:r.diskGate.path,freeBytes:r.diskGate.freeBytes,usedPercent:r.diskGate.usedPercent,reason:r.diskGate.reason}:void 0,scannedAt:new Date(t.now).toISOString(),finalizedRuns:s,actions:l,skips:u,totals:{candidateBytes:g,reclaimableBytes:R,removedBytes:S,removedPaths:y,skippedPaths:A,skipReasons:_s(l,u)},...j?{storage:j}:{},...ne.length>0?{preservedLivePaths:ne}:{},...p>0?{removedRunDirectories:p}:{},...re?{wslCrashDumps:re}:{},compactSummary:P}}export{wr as DEFAULT_MAX_ACTIONS_PER_SWEEP,wn as DEFAULT_NODE_MODULES_AGE_MS,An as DEFAULT_RUN_DIRECTORIES_AGE_MS,Er as DEFAULT_WORKTREES_AGE_MS,zu as runHarnessCleanup};
@@ -1,2 +1,2 @@
1
- import{execFileSync as m,spawnSync as I}from"node:child_process";import*as R from"node:fs";import*as v from"node:path";import*as u from"node:fs";import{homedir as O}from"node:os";import*as c from"node:path";function P(e){return e.startsWith("~/")?c.join(O(),e.slice(2)):e}function p(e={}){let n=e.env??process.env,o=e.cwd??process.cwd(),r=e.homeDir??(n.HOME?.trim()||n.USERPROFILE?.trim()||O()),t=new Set,s=[],l=E=>{let i=c.resolve(P(E));t.has(i)||(t.add(i),s.push(i))},d=n.KYNVER_ENV_FILE?.trim();d&&l(d);let _=o;for(let E=0;E<12;E+=1){l(c.join(_,".env"));let i=c.dirname(_);if(i===_)break;_=i}l(c.join(r,".kynver",".env"));try{let E=c.join(r,".kynver","config.json");if(u.existsSync(E)){let A=JSON.parse(u.readFileSync(E,"utf8")).defaultRepo?.trim();A&&l(c.join(A,".env"))}}catch{}return s}function N(e){if(!e?.trim())return"(not set)";try{let n=new URL(e),o=(n.pathname||"").replace(/^\//,"").split("?")[0]||"(no database name)";return`${n.hostname} / ${o}`}catch{return"(invalid URL)"}}var b=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],k=new Set(b);var T=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],B=new Set(T);var K="KYNVER_NO_PROD_DB_CREDENTIALS";var C=new Set(["1","true","yes","on"]);function D(e){let n=e[K]?.trim().toLowerCase();return n!==void 0&&C.has(n)}var f=["KYNVER_PRODUCTION_DATABASE_URL","PRODUCTION_DATABASE_URL"],S=[...f];function a(e,n){return e[n]?.trim()||void 0}function h(e){if(!R.existsSync(e))return{};let n={},o=new Set(S);for(let r of R.readFileSync(e,"utf8").split(`
2
- `)){let t=r.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/);if(!t||!o.has(t[1]))continue;let s=t[1];n[s]=t[2].replace(/^["']|["']$/g,"").trim()}return n}function g(e){for(let n of f){let o=a(e,n);if(o)return{ok:!0,databaseUrl:o,source:`env:${n}`,hint:N(o)}}return null}function Y(e,n){for(let o of p({cwd:e,env:n})){let r=h(o);for(let t of S){let s=r[t]?.trim();if(s)return{ok:!0,databaseUrl:s,source:`env-file:${t}`,hint:`${N(s)} (${v.basename(o)})`}}}return null}function L(e){let n=process.platform==="win32"?"neon.cmd":"neon",o=["connection-string",e.branch,"--prisma","-o","json","--no-color","--no-analytics"];e.projectId&&o.push("--project-id",e.projectId),e.databaseName&&o.push("--database-name",e.databaseName),e.roleName&&o.push("--role-name",e.roleName),e.pooled&&o.push("--pooled");let r;try{let t=I(n,o,{encoding:"utf8",env:process.env,timeout:3e4});if(t.status!==0)return null;r=(t.stdout||"").trim()}catch{try{r=m("neonctl",o,{encoding:"utf8",env:process.env,timeout:3e4}).trim()}catch{return null}}if(!r)return null;try{let t=JSON.parse(r),s=typeof t.connection_uri=="string"&&t.connection_uri||typeof t.connection_string=="string"&&t.connection_string||typeof t.connectionString=="string"&&t.connectionString;if(s)return s}catch{}return/^postgres(ql)?:\/\//i.test(r)?r:null}function w(e,n){let o=a(e,"KYNVER_NEON_BRANCH")||a(e,"NEON_BRANCH")||"production",r=n({branch:o,projectId:a(e,"KYNVER_NEON_PROJECT_ID")||a(e,"NEON_PROJECT_ID"),databaseName:a(e,"KYNVER_NEON_DATABASE_NAME")||a(e,"NEON_DATABASE_NAME"),roleName:a(e,"KYNVER_NEON_ROLE_NAME")||a(e,"NEON_ROLE_NAME"),pooled:a(e,"KYNVER_NEON_POOLED")==="1"||a(e,"NEON_POOLED")==="1"});return r?{ok:!0,databaseUrl:r,source:"neon-cli",hint:N(r)}:null}function U(e={}){let n=e.env??process.env;if(D(n))return{ok:!1,reason:"Production database credentials are blocked in this harness worker (KYNVER_NO_PROD_DB_CREDENTIALS). Review workers must use scoped AgentOS APIs \u2014 not direct prod DB access.",attempted:[]};let o=e.cwd??process.cwd(),r=e.neonConnectionString??L,t=[],s=p({cwd:o,env:n}),l=w(n,r);if(t.push("neon-cli"),l)return l;for(let i of f)t.push(`env:${i}`);let d=g(n);if(d)return d;for(let i of S)t.push(`env-file:${i}`);let _=Y(o,n);return _||{ok:!1,reason:"No production database credentials found. Authenticate Neon CLI (`neon auth`), set KYNVER_NEON_* / NEON_* project hints, or provide PRODUCTION_DATABASE_URL / KYNVER_PRODUCTION_DATABASE_URL (process env, KYNVER_ENV_FILE, ~/.kynver/.env, or selective .env keys in the repo / defaultRepo checkout)."+(s.length>0?` Searched env files: ${s.slice(0,6).join(", ")}${s.length>6?"\u2026":""}.`:""),attempted:t}}export{U as resolveProductionDatabaseUrl};
1
+ import{execFileSync as m,spawnSync as I}from"node:child_process";import*as R from"node:fs";import*as v from"node:path";import*as u from"node:fs";import{homedir as O}from"node:os";import*as c from"node:path";function P(e){return e.startsWith("~/")?c.join(O(),e.slice(2)):e}function p(e={}){let n=e.env??process.env,o=e.cwd??process.cwd(),r=e.homeDir??(n.HOME?.trim()||n.USERPROFILE?.trim()||O()),t=new Set,s=[],l=E=>{let i=c.resolve(P(E));t.has(i)||(t.add(i),s.push(i))},d=n.KYNVER_ENV_FILE?.trim();d&&l(d);let _=o;for(let E=0;E<12;E+=1){l(c.join(_,".env"));let i=c.dirname(_);if(i===_)break;_=i}l(c.join(r,".kynver",".env"));try{let E=c.join(r,".kynver","config.json");if(u.existsSync(E)){let A=JSON.parse(u.readFileSync(E,"utf8")).defaultRepo?.trim();A&&l(c.join(A,".env"))}}catch{}return s}function N(e){if(!e?.trim())return"(not set)";try{let n=new URL(e),o=(n.pathname||"").replace(/^\//,"").split("?")[0]||"(no database name)";return`${n.hostname} / ${o}`}catch{return"(invalid URL)"}}var b=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],k=new Set(b);var T=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],B=new Set(T);var K="KYNVER_NO_PROD_DB_CREDENTIALS";var C=new Set(["1","true","yes","on"]);function D(e){let n=e[K]?.trim().toLowerCase();return n!==void 0&&C.has(n)}var f=["KYNVER_PRODUCTION_DATABASE_URL","PRODUCTION_DATABASE_URL"],S=[...f];function a(e,n){return e[n]?.trim()||void 0}function h(e){if(!R.existsSync(e))return{};let n={},o=new Set(S);for(let r of R.readFileSync(e,"utf8").split(`
2
+ `)){let t=r.match(/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/);if(!t||!o.has(t[1]))continue;let s=t[1];n[s]=t[2].replace(/^["']|["']$/g,"").trim()}return n}function Y(e){for(let n of f){let o=a(e,n);if(o)return{ok:!0,databaseUrl:o,source:`env:${n}`,hint:N(o)}}return null}function g(e,n){for(let o of p({cwd:e,env:n})){let r=h(o);for(let t of S){let s=r[t]?.trim();if(s)return{ok:!0,databaseUrl:s,source:`env-file:${t}`,hint:`${N(s)} (${v.basename(o)})`}}}return null}function L(e){let n=process.platform==="win32"?"neon.cmd":"neon",o=["connection-string",e.branch,"--prisma","-o","json","--no-color","--no-analytics"];e.projectId&&o.push("--project-id",e.projectId),e.databaseName&&o.push("--database-name",e.databaseName),e.roleName&&o.push("--role-name",e.roleName),e.pooled&&o.push("--pooled");let r;try{let t=I(n,o,{encoding:"utf8",env:process.env,timeout:3e4});if(t.status!==0)return null;r=(t.stdout||"").trim()}catch{try{r=m("neonctl",o,{encoding:"utf8",env:process.env,timeout:3e4}).trim()}catch{return null}}if(!r)return null;try{let t=JSON.parse(r),s=typeof t.connection_uri=="string"&&t.connection_uri||typeof t.connection_string=="string"&&t.connection_string||typeof t.connectionString=="string"&&t.connectionString;if(s)return s}catch{}return/^postgres(ql)?:\/\//i.test(r)?r:null}function w(e,n){let o=a(e,"KYNVER_NEON_BRANCH")||a(e,"NEON_BRANCH")||"production",r=n({branch:o,projectId:a(e,"KYNVER_NEON_PROJECT_ID")||a(e,"NEON_PROJECT_ID"),databaseName:a(e,"KYNVER_NEON_DATABASE_NAME")||a(e,"NEON_DATABASE_NAME"),roleName:a(e,"KYNVER_NEON_ROLE_NAME")||a(e,"NEON_ROLE_NAME"),pooled:a(e,"KYNVER_NEON_POOLED")==="1"||a(e,"NEON_POOLED")==="1"});return r?{ok:!0,databaseUrl:r,source:"neon-cli",hint:N(r)}:null}function U(e={}){let n=e.env??process.env;if(D(n))return{ok:!1,reason:"Production database credentials are blocked in this harness worker (KYNVER_NO_PROD_DB_CREDENTIALS). Review workers must use scoped AgentOS APIs \u2014 not direct prod DB access.",attempted:[]};let o=e.cwd??process.cwd(),r=e.neonConnectionString??L,t=[],s=p({cwd:o,env:n}),l=w(n,r);if(t.push("neon-cli"),l)return l;for(let i of f)t.push(`env:${i}`);let d=Y(n);if(d)return d;for(let i of S)t.push(`env-file:${i}`);let _=g(o,n);return _||{ok:!1,reason:"No production database credentials found. Authenticate Neon CLI (`neon auth`), set KYNVER_NEON_* / NEON_* project hints, or provide PRODUCTION_DATABASE_URL / KYNVER_PRODUCTION_DATABASE_URL (process env, KYNVER_ENV_FILE, ~/.kynver/.env, or selective .env keys in the repo / defaultRepo checkout)."+(s.length>0?` Searched env files: ${s.slice(0,6).join(", ")}${s.length>6?"\u2026":""}.`:""),attempted:t}}export{U as resolveProductionDatabaseUrl};
@@ -1 +1 @@
1
- var r=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(o){throw n=[o],o}};function K(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}var i=r(()=>{"use strict"});var _e,ir,ve,ar,D=r(()=>{"use strict";_e=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],ir=new Set(_e),ve=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],ar=new Set(ve)});import{spawnSync as Ee}from"node:child_process";function T(e,t){try{let n=Ee("git",t,K({cwd:e,encoding:"utf8"}));return{status:n.status,stdout:n.stdout||"",stderr:n.stderr||"",error:n.error?n.error.message:null}}catch(n){return{status:null,stdout:"",stderr:"",error:n.message}}}var k=r(()=>{"use strict";i();D()});import{homedir as W}from"node:os";import B from"node:path";function Ce(e){return e==="~"?W():e.startsWith("~/")||e.startsWith("~\\")?B.join(W(),e.slice(2)):e}function f(e){return B.resolve(Ce(e))}var c=r(()=>{"use strict"});import{existsSync as x,readFileSync as F}from"node:fs";import{homedir as Ae}from"node:os";import a from"node:path";import{fileURLToPath as Oe}from"node:url";function Ie(e){let t=a.join(e,"package.json");if(!x(t))return null;try{let n=JSON.parse(F(t,"utf8"));return typeof n.name=="string"?n.name.trim():null}catch{return null}}function Pe(e){return Ie(e)==="kynver"}function M(e){let t=a.resolve(e);if(!x(t))return null;let n=T(t,["rev-parse","--show-toplevel"]);if(n.status!==0)return null;let o=n.stdout.trim();return o.length?a.resolve(o):null}function Ne(e=import.meta.url){let t=a.dirname(Oe(e));for(let n=0;n<8;n+=1){let o=a.join(t,"package.json");if(x(o))try{if(JSON.parse(F(o,"utf8")).name==="@kynver-app/runtime")return t}catch{}let s=a.dirname(t);if(s===t)break;t=s}return null}function S(e,t,n,o){if(!n)return;let s=a.resolve(n);e.has(s)||Pe(s)&&(e.add(s),t.push({repo:s,source:o}))}function Ue(e){let t=e?.cwd??process.cwd(),n=new Set,o=[];S(n,o,M(t),"cwd_git");let s=Ne(e?.runtimeModuleUrl??import.meta.url);s&&S(n,o,M(s),"runtime_checkout");let m=Ae();for(let xe of we)S(n,o,f(a.join(m,xe)),"well_known_path");return o}function _(e){return Ue(e)[0]??null}var we,p=r(()=>{"use strict";k();c();we=["Kynver","repos/Kynver","repos/kynver-source-main","code/Kynver","projects/Kynver"]});var u=r(()=>{"use strict"});var g=r(()=>{"use strict"});var L=r(()=>{"use strict"});var wr,Ir,v=r(()=>{"use strict";wr=25*1024*1024*1024,Ir=12*1024*1024*1024});var Dr,Tr,H=r(()=>{"use strict";v();Dr=5*1024*1024*1024,Tr=10*1024*1024*1024});var Hr,$r,E=r(()=>{"use strict";H();v();Hr=30*1024*1024*1024,$r=15*1024*1024*1024});var j=r(()=>{"use strict";i()});import Ke from"node:path";var Zr,C=r(()=>{"use strict";c();j();Zr=Ke.join(".openclaw","harness")});var h=r(()=>{"use strict";l();u();g();b();C()});var G=r(()=>{"use strict";l();C();h();i()});var O=r(()=>{"use strict";G();i()});var z=r(()=>{"use strict";O();i()});var J=r(()=>{"use strict"});var q=r(()=>{"use strict";J();i()});var X=r(()=>{"use strict"});var Z=r(()=>{"use strict";X()});var Q=r(()=>{"use strict";Z();i()});var ee=r(()=>{"use strict"});var re=r(()=>{"use strict"});var ne=r(()=>{"use strict"});var w=r(()=>{"use strict"});var te=r(()=>{"use strict"});var oe=r(()=>{"use strict";w();te()});var se=r(()=>{"use strict";q();Q();ee();re();k();ne();oe();w();i()});var ie=r(()=>{"use strict";se()});var He,$e,ae=r(()=>{"use strict";L();l();u();g();b();E();O();z();ie();i();He=500*1024*1024,$e=4*1024*1024*1024});var b=r(()=>{"use strict";ae()});import{homedir as je}from"node:os";import Ye from"node:path";var ue,I=r(()=>{"use strict";ue=Ye.join(je(),".kynver",".env")});var le=r(()=>{"use strict"});var ce=r(()=>{"use strict";le()});var de=r(()=>{"use strict"});var P=r(()=>{"use strict";ce();de()});var me=r(()=>{"use strict"});var fe=r(()=>{"use strict";me()});var R=r(()=>{"use strict";I();c();l();P();fe()});var ye=r(()=>{"use strict";u();u()});var he=r(()=>{"use strict";I();P();R()});var Re=r(()=>{"use strict";p();u();ye();l();R();he();i();h()});import{existsSync as Xe,mkdirSync as zo,readFileSync as Ze,writeFileSync as Jo}from"node:fs";import{homedir as Qe,totalmem as Xo}from"node:os";import N from"node:path";function d(){if(!Xe(ke))return{};try{return JSON.parse(Ze(ke,"utf8"))}catch{return{}}}var Se,ke,ls,cs,ds,l=r(()=>{"use strict";p();c();i();u();g();b();E();R();Re();h();Se=N.join(Qe(),".kynver"),ke=N.join(Se,"config.json"),ls=N.join(Se,"credentials");cs=500*1024*1024,ds=4*1024*1024*1024});l();p();c();import er from"node:path";function rr(e){return er.resolve(f(e.trim()))}function U(e,t,n){let o=e?.trim();return o?{repo:rr(o),source:t,persistedInConfig:n}:null}function nr(e){return e?{repo:e.repo,source:e.source,persistedInConfig:!1}:null}function tr(e={}){let t=e.env??process.env,n=e.config??d(),o=U(n.defaultRepo,"config",!0);if(o)return o;let s=U(t.KYNVER_DEFAULT_REPO,"env_default_repo",!1);if(s)return s;let m=U(t.KYNVER_HARNESS_REPO,"env_harness_repo",!1);return m||nr(_({cwd:e.cwd,runtimeModuleUrl:e.runtimeModuleUrl}))}export{tr as resolveDefaultRepo};
1
+ var r=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(o){throw n=[o],o}};function U(e){return process.platform!=="win32"?e:{windowsHide:!0,...e}}var s=r(()=>{"use strict"});var _e,ir,ve,ar,D=r(()=>{"use strict";_e=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],ir=new Set(_e),ve=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],ar=new Set(ve)});import{spawnSync as Ee}from"node:child_process";function T(e,t){try{let n=Ee("git",t,U({cwd:e,encoding:"utf8"}));return{status:n.status,stdout:n.stdout||"",stderr:n.stderr||"",error:n.error?n.error.message:null}}catch(n){return{status:null,stdout:"",stderr:"",error:n.message}}}var k=r(()=>{"use strict";s();D()});import{homedir as W}from"node:os";import B from"node:path";function Ce(e){return e==="~"?W():e.startsWith("~/")||e.startsWith("~\\")?B.join(W(),e.slice(2)):e}function f(e){return B.resolve(Ce(e))}var d=r(()=>{"use strict"});import{existsSync as S,readFileSync as F}from"node:fs";import{homedir as Ae}from"node:os";import u from"node:path";import{fileURLToPath as Oe}from"node:url";function Ie(e){let t=u.join(e,"package.json");if(!S(t))return null;try{let n=JSON.parse(F(t,"utf8"));return typeof n.name=="string"?n.name.trim():null}catch{return null}}function Pe(e){return Ie(e)==="kynver"}function M(e){let t=u.resolve(e);if(!S(t))return null;let n=T(t,["rev-parse","--show-toplevel"]);if(n.status!==0)return null;let o=n.stdout.trim();return o.length?u.resolve(o):null}function Ne(e=import.meta.url){let t=u.dirname(Oe(e));for(let n=0;n<8;n+=1){let o=u.join(t,"package.json");if(S(o))try{if(JSON.parse(F(o,"utf8")).name==="@kynver-app/runtime")return t}catch{}let i=u.dirname(t);if(i===t)break;t=i}return null}function x(e,t,n,o,i){if(!n)return;let a=u.resolve(n);e.has(a)||(i?.requireMonorepo??!0)&&!Pe(a)||(e.add(a),t.push({repo:a,source:o}))}function Ke(e){let t=e?.cwd??process.cwd(),n=new Set,o=[];x(n,o,M(t),"cwd_git",{requireMonorepo:!1});let i=Ne(e?.runtimeModuleUrl??import.meta.url);i&&x(n,o,M(i),"runtime_checkout");let a=Ae();for(let Se of we)x(n,o,f(u.join(a,Se)),"well_known_path");return o}function _(e){return Ke(e)[0]??null}var we,p=r(()=>{"use strict";k();d();we=["Kynver","repos/Kynver","repos/kynver-source-main","code/Kynver","projects/Kynver"]});var l=r(()=>{"use strict"});var g=r(()=>{"use strict"});var L=r(()=>{"use strict"});var wr,Ir,v=r(()=>{"use strict";wr=25*1024*1024*1024,Ir=12*1024*1024*1024});var Dr,Tr,H=r(()=>{"use strict";v();Dr=5*1024*1024*1024,Tr=10*1024*1024*1024});var Hr,$r,E=r(()=>{"use strict";H();v();Hr=30*1024*1024*1024,$r=15*1024*1024*1024});var j=r(()=>{"use strict";s()});import Ue from"node:path";var Zr,C=r(()=>{"use strict";d();j();Zr=Ue.join(".openclaw","harness")});var y=r(()=>{"use strict";c();l();g();b();C()});var G=r(()=>{"use strict";c();C();y();s()});var O=r(()=>{"use strict";G();s()});var z=r(()=>{"use strict";O();s()});var J=r(()=>{"use strict"});var q=r(()=>{"use strict";J();s()});var X=r(()=>{"use strict"});var Z=r(()=>{"use strict";X()});var Q=r(()=>{"use strict";Z();s()});var ee=r(()=>{"use strict"});var re=r(()=>{"use strict"});var ne=r(()=>{"use strict"});var w=r(()=>{"use strict"});var te=r(()=>{"use strict"});var oe=r(()=>{"use strict";w();te()});var se=r(()=>{"use strict";q();Q();ee();re();k();ne();oe();w();s()});var ie=r(()=>{"use strict";se()});var He,$e,ae=r(()=>{"use strict";L();c();l();g();b();E();O();z();ie();s();He=500*1024*1024,$e=4*1024*1024*1024});var b=r(()=>{"use strict";ae()});import{homedir as je}from"node:os";import Ye from"node:path";var ue,I=r(()=>{"use strict";ue=Ye.join(je(),".kynver",".env")});var le=r(()=>{"use strict"});var ce=r(()=>{"use strict";le()});var de=r(()=>{"use strict"});var P=r(()=>{"use strict";ce();de()});var me=r(()=>{"use strict"});var fe=r(()=>{"use strict";me()});var R=r(()=>{"use strict";I();d();c();P();fe()});var he=r(()=>{"use strict";l();l()});var ye=r(()=>{"use strict";I();P();R()});var Re=r(()=>{"use strict";p();l();he();c();R();ye();s();y()});import{existsSync as Xe,mkdirSync as zo,readFileSync as Ze,writeFileSync as Jo}from"node:fs";import{homedir as Qe,totalmem as Xo}from"node:os";import N from"node:path";function m(){if(!Xe(ke))return{};try{return JSON.parse(Ze(ke,"utf8"))}catch{return{}}}var xe,ke,ls,cs,ds,c=r(()=>{"use strict";p();d();s();l();g();b();E();R();Re();y();xe=N.join(Qe(),".kynver"),ke=N.join(xe,"config.json"),ls=N.join(xe,"credentials");cs=500*1024*1024,ds=4*1024*1024*1024});c();p();d();import er from"node:path";function rr(e){return er.resolve(f(e.trim()))}function K(e,t,n){let o=e?.trim();return o?{repo:rr(o),source:t,persistedInConfig:n}:null}function nr(e){return e?{repo:e.repo,source:e.source,persistedInConfig:!1}:null}function tr(e={}){let t=e.env??process.env,n=e.config??m(),o=K(n.defaultRepo,"config",!0);if(o)return o;let i=K(t.KYNVER_DEFAULT_REPO,"env_default_repo",!1);if(i)return i;let a=K(t.KYNVER_HARNESS_REPO,"env_harness_repo",!1);return a||nr(_({cwd:e.cwd,runtimeModuleUrl:e.runtimeModuleUrl}))}export{tr as resolveDefaultRepo};
@@ -1 +1 @@
1
- import{closeSync as G,existsSync as l,mkdirSync as Y,openSync as L,readdirSync as C,readFileSync as U,statSync as F,unlinkSync as b,writeFileSync as W}from"node:fs";import v from"node:path";function h(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}import{mkdirSync as D}from"node:fs";import{tmpdir as K}from"node:os";import m from"node:path";import{homedir as T}from"node:os";import A from"node:path";function k(){let e=process.env.KYNVER_STATE_ROOT;return e?A.resolve(e):A.join(T(),".kynver","state")}function H(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function $(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?m.resolve(e):H()?m.join(K(),"kynver","state","heavy-verification"):m.join(k(),"heavy-verification")}function y(){return m.join($(),"slots")}function u(){let e=y();return D(e,{recursive:!0}),e}var f=120*6e4,x=1;function j(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function S(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function p(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?j(e,x):x}function B(e){return`slot-${e}`}function J(e,r=y()){return v.join(r,`${e}.json`)}function E(e){if(!l(e))return null;try{let r=JSON.parse(U(e,"utf8"));if(typeof r.slotId=="string"&&typeof r.pid=="number"&&typeof r.acquiredAt=="string"&&typeof r.command=="string")return r}catch{return null}return null}function O(e,r=f){if(!e||!h(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function V(e,r){let t=E(e);if(t)return O(t,r);if(!l(e))return!0;try{return Date.now()-F(e).mtimeMs>r}catch{return!0}}function X(e,r){if(V(e,r))try{b(e)}catch{}}function q(e){return Y(e,{recursive:!0}),e}function _(e={}){let r=q(e.slotsDir??u()),t=e.staleMs??f,o=0;for(let n of C(r)){if(!n.endsWith(".json"))continue;let s=v.join(r,n),i=l(s);X(s,t),i&&!l(s)&&(o+=1)}return o}function z(e={}){let r=e.slotsDir??u(),t=e.staleMs??f;_({slotsDir:r,staleMs:t});let o=[];for(let n of C(r)){if(!n.endsWith(".json"))continue;let s=E(v.join(r,n));s&&!O(s,t)&&o.push(s)}return o}function d(e={}){return z(e).length}function R(e,r={}){if(S())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:p(),reason:null};let t=r.slotsDir??u(),o=r.staleMs??f,n=r.maxSlots??p();_({slotsDir:t,staleMs:o});for(let i=0;i<n;i+=1){let g=B(i),a=J(g,t),P=E(a);if(V(a,o))try{b(a)}catch{}else if(P||l(a))continue;let w={slotId:g,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let c=L(a,"wx");W(c,JSON.stringify(w,null,2),"utf8"),G(c);let I=d({slotsDir:t,staleMs:o});return{admitted:!0,slotId:g,activeSlots:I,maxSlots:n,reason:null}}catch(c){if(c.code==="EEXIST")continue;throw c}}let s=d({slotsDir:t,staleMs:o});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:n,reason:`heavy verification at capacity (${s}/${n} slots)`}}function N(e,r={}){if(S())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:p(),reason:null};let t=r.slotsDir??u(),o=r.staleMs??f,n=r.maxSlots??p();_({slotsDir:t,staleMs:o});let s=d({slotsDir:t,staleMs:o}),i=s<n;return{admitted:i,slotId:null,activeSlots:s,maxSlots:n,reason:i?null:`heavy verification at capacity (${s}/${n} slots); waiting for ${e}`}}import{spawnSync as Q}from"node:child_process";function Z(e){e<=0||Q(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function ee(e,r,t=2e3,o={}){let n=Date.now()+Math.max(0,r),s=R(e,o);for(;!s.admitted&&Date.now()<n;)Z(Math.min(t,n-Date.now())),s=R(e,o);return s}var re=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],he=new Set(re);var te=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN"],Ae=new Set(te);var ne={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},Ge=Object.keys(ne);function M(e){let r=e.trim().split("-")[0]?.split("+")[0];if(!r)return null;let t=r.split(".");if(t.length<1||t.length>3)return null;let o=t.map(n=>Number.parseInt(n,10));if(o.some(n=>!Number.isFinite(n)||n<0))return null;for(;o.length<3;)o.push(0);return[o[0],o[1],o[2]]}function oe(e,r){let t=M(e),o=M(r);if(!t||!o)return 0;for(let n=0;n<3;n+=1){if(t[n]>o[n])return 1;if(t[n]<o[n])return-1}return 0}export{N as assessHeavyVerificationGate,oe as compareSemver,d as countActiveHeavyVerificationSlots,S as isHeavyVerificationGateSkipped,p as resolveHeavyVerificationMaxConcurrent,ee as waitForHeavyVerificationSlot};
1
+ import{closeSync as Y,existsSync as l,mkdirSync as G,openSync as L,readdirSync as C,readFileSync as U,statSync as F,unlinkSync as b,writeFileSync as W}from"node:fs";import v from"node:path";function A(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}import{mkdirSync as D}from"node:fs";import{tmpdir as K}from"node:os";import d from"node:path";import{homedir as T}from"node:os";import h from"node:path";function k(){let e=process.env.KYNVER_STATE_ROOT;return e?h.resolve(e):h.join(T(),".kynver","state")}function H(){return!!(process.env.VERCEL||process.env.VERCEL_ENV||process.env.AWS_LAMBDA_FUNCTION_NAME||process.env.AWS_EXECUTION_ENV)}function $(){let e=process.env.KYNVER_HEAVY_VERIFICATION_STATE_ROOT;return e?d.resolve(e):H()?d.join(K(),"kynver","state","heavy-verification"):d.join(k(),"heavy-verification")}function y(){return d.join($(),"slots")}function u(){let e=y();return D(e,{recursive:!0}),e}var f=120*6e4,x=1;function j(e,r){let t=Number(e);return!Number.isFinite(t)||t<=0?r:Math.floor(t)}function S(){let e=process.env.KYNVER_HEAVY_VERIFICATION_SKIP?.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"}function p(){let e=process.env.KYNVER_HEAVY_VERIFICATION_MAX_CONCURRENT;return e?j(e,x):x}function B(e){return`slot-${e}`}function J(e,r=y()){return v.join(r,`${e}.json`)}function E(e){if(!l(e))return null;try{let r=JSON.parse(U(e,"utf8"));if(typeof r.slotId=="string"&&typeof r.pid=="number"&&typeof r.acquiredAt=="string"&&typeof r.command=="string")return r}catch{return null}return null}function O(e,r=f){if(!e||!A(e.pid))return!0;let t=Date.parse(e.acquiredAt);return Number.isNaN(t)?!0:Date.now()-t>r}function M(e,r){let t=E(e);if(t)return O(t,r);if(!l(e))return!0;try{return Date.now()-F(e).mtimeMs>r}catch{return!0}}function q(e,r){if(M(e,r))try{b(e)}catch{}}function X(e){return G(e,{recursive:!0}),e}function _(e={}){let r=X(e.slotsDir??u()),t=e.staleMs??f,o=0;for(let n of C(r)){if(!n.endsWith(".json"))continue;let s=v.join(r,n),i=l(s);q(s,t),i&&!l(s)&&(o+=1)}return o}function z(e={}){let r=e.slotsDir??u(),t=e.staleMs??f;_({slotsDir:r,staleMs:t});let o=[];for(let n of C(r)){if(!n.endsWith(".json"))continue;let s=E(v.join(r,n));s&&!O(s,t)&&o.push(s)}return o}function m(e={}){return z(e).length}function R(e,r={}){if(S())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:p(),reason:null};let t=r.slotsDir??u(),o=r.staleMs??f,n=r.maxSlots??p();_({slotsDir:t,staleMs:o});for(let i=0;i<n;i+=1){let g=B(i),a=J(g,t),P=E(a);if(M(a,o))try{b(a)}catch{}else if(P||l(a))continue;let w={slotId:g,pid:process.pid,acquiredAt:new Date().toISOString(),command:e};try{let c=L(a,"wx");W(c,JSON.stringify(w,null,2),"utf8"),Y(c);let I=m({slotsDir:t,staleMs:o});return{admitted:!0,slotId:g,activeSlots:I,maxSlots:n,reason:null}}catch(c){if(c.code==="EEXIST")continue;throw c}}let s=m({slotsDir:t,staleMs:o});return{admitted:!1,slotId:null,activeSlots:s,maxSlots:n,reason:`heavy verification at capacity (${s}/${n} slots)`}}function V(e,r={}){if(S())return{admitted:!0,slotId:null,activeSlots:0,maxSlots:p(),reason:null};let t=r.slotsDir??u(),o=r.staleMs??f,n=r.maxSlots??p();_({slotsDir:t,staleMs:o});let s=m({slotsDir:t,staleMs:o}),i=s<n;return{admitted:i,slotId:null,activeSlots:s,maxSlots:n,reason:i?null:`heavy verification at capacity (${s}/${n} slots); waiting for ${e}`}}import{spawnSync as Q}from"node:child_process";function Z(e){e<=0||Q(process.execPath,["-e",`const d=Date.now()+${Math.floor(e)};while(Date.now()<d);`],{stdio:"ignore"})}function ee(e,r,t=2e3,o={}){let n=Date.now()+Math.max(0,r),s=R(e,o);for(;!s.admitted&&Date.now()<n;)Z(Math.min(t,n-Date.now())),s=R(e,o);return s}var re=["ANTHROPIC_API_KEY","ANALYST_API_KEY","RECRUITER_API_KEY","AUTH_SECRET","NEXTAUTH_SECRET","DATABASE_URL","PRODUCTION_DATABASE_URL","KYNVER_PRODUCTION_DATABASE_URL","REDIS_URL","GOOGLE_CLIENT_SECRET","GITHUB_CLIENT_SECRET","KYNVER_API_KEY","KYNVER_SERVICE_SECRET","KYNVER_RUNTIME_SECRET","KYNVER_CRON_SECRET","OPENCLAW_CRON_SECRET","QSTASH_TOKEN","QSTASH_CURRENT_SIGNING_KEY","QSTASH_NEXT_SIGNING_KEY","TOOL_SECRETS_KEK","TOOL_EXECUTOR_DISPATCH_SECRET","CLOUDFLARE_API_TOKEN","STRIPE_SECRET_KEY","STRIPE_WEBHOOK_SECRET","STRIPE_IDENTITY_WEBHOOK_SECRET","VOYAGE_API_KEY","PERPLEXITY_API_KEY","FRED_API_KEY","FMP_API_KEY","CURSOR_API_KEY","MEMORY_CONTENT_KEK","LLM_BYOK_KEK","KYNVER_COMMAND_AUTH_KEY","KYNVER_INSTRUCTION_BUNDLE_KEY","KYNVER_MEMORY_LEDGER_KEY","KYNVER_JWKS_PRIVATE_KEY_JWK"],Ae=new Set(re);var te=["GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","CODEX_API_KEY"],he=new Set(te);var ne={"@kynver-app/runtime":"0.1.83","@kynver-app/openclaw-agent-os":"0.1.43","@kynver-app/mcp-agent-os":"0.3.34"},Ye=Object.keys(ne);function N(e){let r=e.trim().split("-")[0]?.split("+")[0];if(!r)return null;let t=r.split(".");if(t.length<1||t.length>3)return null;let o=t.map(n=>Number.parseInt(n,10));if(o.some(n=>!Number.isFinite(n)||n<0))return null;for(;o.length<3;)o.push(0);return[o[0],o[1],o[2]]}function oe(e,r){let t=N(e),o=N(r);if(!t||!o)return 0;for(let n=0;n<3;n+=1){if(t[n]>o[n])return 1;if(t[n]<o[n])return-1}return 0}export{V as assessHeavyVerificationGate,oe as compareSemver,m as countActiveHeavyVerificationSlots,S as isHeavyVerificationGateSkipped,p as resolveHeavyVerificationMaxConcurrent,ee as waitForHeavyVerificationSlot};