@rulemetric/cli 0.2.1 → 0.2.2
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.
- package/dist/base-command.js +13 -52
- package/dist/base-command.js.map +7 -1
- package/dist/chunk-2AM54TUK.js +59 -0
- package/dist/chunk-2AM54TUK.js.map +7 -0
- package/dist/chunk-3TIMQ3O6.js +96 -0
- package/dist/chunk-3TIMQ3O6.js.map +7 -0
- package/dist/chunk-4BHDHHKL.js +48 -0
- package/dist/chunk-4BHDHHKL.js.map +7 -0
- package/dist/chunk-4D537GXE.js +99 -0
- package/dist/chunk-4D537GXE.js.map +7 -0
- package/dist/chunk-4SCZK7AL.js +129 -0
- package/dist/chunk-4SCZK7AL.js.map +7 -0
- package/dist/chunk-4WFE4PFP.js +61 -0
- package/dist/chunk-4WFE4PFP.js.map +7 -0
- package/dist/chunk-52WIYRZH.js +73 -0
- package/dist/chunk-52WIYRZH.js.map +7 -0
- package/dist/chunk-7FAA3YNB.js +1549 -0
- package/dist/chunk-7FAA3YNB.js.map +7 -0
- package/dist/chunk-7NYKWN7U.js +12 -0
- package/dist/chunk-7NYKWN7U.js.map +7 -0
- package/dist/chunk-AULP2OWH.js +99 -0
- package/dist/chunk-AULP2OWH.js.map +7 -0
- package/dist/chunk-B5KNTGMJ.js +1788 -0
- package/dist/chunk-B5KNTGMJ.js.map +7 -0
- package/dist/chunk-BD7CY42U.js +23 -0
- package/dist/chunk-BD7CY42U.js.map +7 -0
- package/dist/chunk-BO76WKJR.js +42 -0
- package/dist/chunk-BO76WKJR.js.map +7 -0
- package/dist/chunk-BRD5RUGM.js +53 -0
- package/dist/chunk-BRD5RUGM.js.map +7 -0
- package/dist/chunk-BT6Z6545.js +43 -0
- package/dist/chunk-BT6Z6545.js.map +7 -0
- package/dist/chunk-BZDKEQKU.js +39 -0
- package/dist/chunk-BZDKEQKU.js.map +7 -0
- package/dist/chunk-CROYS75W.js +161 -0
- package/dist/chunk-CROYS75W.js.map +7 -0
- package/dist/chunk-DGHWRQXL.js +17 -0
- package/dist/chunk-DGHWRQXL.js.map +7 -0
- package/dist/chunk-DQ3KELXD.js +74 -0
- package/dist/chunk-DQ3KELXD.js.map +7 -0
- package/dist/chunk-DTFXCHHI.js +108 -0
- package/dist/chunk-DTFXCHHI.js.map +7 -0
- package/dist/chunk-DU73QUS3.js +75 -0
- package/dist/chunk-DU73QUS3.js.map +7 -0
- package/dist/chunk-EHZJ6OXD.js +307 -0
- package/dist/chunk-EHZJ6OXD.js.map +7 -0
- package/dist/chunk-EJOI2ZGU.js +109 -0
- package/dist/chunk-EJOI2ZGU.js.map +7 -0
- package/dist/chunk-EKJ2CABV.js +76 -0
- package/dist/chunk-EKJ2CABV.js.map +7 -0
- package/dist/chunk-EKP32DLN.js +16 -0
- package/dist/chunk-EKP32DLN.js.map +7 -0
- package/dist/chunk-EOOP6WTC.js +148 -0
- package/dist/chunk-EOOP6WTC.js.map +7 -0
- package/dist/chunk-ERPMDAO3.js +20 -0
- package/dist/chunk-ERPMDAO3.js.map +7 -0
- package/dist/chunk-FTJRMUID.js +96 -0
- package/dist/chunk-FTJRMUID.js.map +7 -0
- package/dist/chunk-FZKLLNDS.js +228 -0
- package/dist/chunk-FZKLLNDS.js.map +7 -0
- package/dist/chunk-GQCISMAH.js +157 -0
- package/dist/chunk-GQCISMAH.js.map +7 -0
- package/dist/chunk-IGXX624H.js +55 -0
- package/dist/chunk-IGXX624H.js.map +7 -0
- package/dist/chunk-IJGF2ETG.js +68 -0
- package/dist/chunk-IJGF2ETG.js.map +7 -0
- package/dist/chunk-IWYCRLEK.js +220 -0
- package/dist/chunk-IWYCRLEK.js.map +7 -0
- package/dist/chunk-J7N3DLH6.js +117 -0
- package/dist/chunk-J7N3DLH6.js.map +7 -0
- package/dist/chunk-JX5UI6RW.js +99 -0
- package/dist/chunk-JX5UI6RW.js.map +7 -0
- package/dist/chunk-K3BFZ7KG.js +154 -0
- package/dist/chunk-K3BFZ7KG.js.map +7 -0
- package/dist/chunk-KHJUQFIK.js +51 -0
- package/dist/chunk-KHJUQFIK.js.map +7 -0
- package/dist/chunk-KRBQLMOP.js +41 -0
- package/dist/chunk-KRBQLMOP.js.map +7 -0
- package/dist/chunk-KZRFUXGF.js +145 -0
- package/dist/chunk-KZRFUXGF.js.map +7 -0
- package/dist/chunk-L674RNKQ.js +492 -0
- package/dist/chunk-L674RNKQ.js.map +7 -0
- package/dist/chunk-N52AHNBH.js +47 -0
- package/dist/chunk-N52AHNBH.js.map +7 -0
- package/dist/chunk-NIDLJO6F.js +228 -0
- package/dist/chunk-NIDLJO6F.js.map +7 -0
- package/dist/chunk-NSBPE2FW.js +17 -0
- package/dist/chunk-NSBPE2FW.js.map +7 -0
- package/dist/chunk-OGVORIFM.js +70 -0
- package/dist/chunk-OGVORIFM.js.map +7 -0
- package/dist/chunk-OQSQC7VB.js +77 -0
- package/dist/chunk-OQSQC7VB.js.map +7 -0
- package/dist/chunk-PHLMIZKM.js +153 -0
- package/dist/chunk-PHLMIZKM.js.map +7 -0
- package/dist/chunk-PQU7GZ7A.js +92 -0
- package/dist/chunk-PQU7GZ7A.js.map +7 -0
- package/dist/chunk-PXVQLD7S.js +196 -0
- package/dist/chunk-PXVQLD7S.js.map +7 -0
- package/dist/chunk-QD6X4L4L.js +79 -0
- package/dist/chunk-QD6X4L4L.js.map +7 -0
- package/dist/chunk-QJQS6TUN.js +44 -0
- package/dist/chunk-QJQS6TUN.js.map +7 -0
- package/dist/chunk-QJXAULRC.js +191 -0
- package/dist/chunk-QJXAULRC.js.map +7 -0
- package/dist/chunk-QN34TGD3.js +83 -0
- package/dist/chunk-QN34TGD3.js.map +7 -0
- package/dist/chunk-R5MFHGHR.js +122 -0
- package/dist/chunk-R5MFHGHR.js.map +7 -0
- package/dist/chunk-RH7NHVSK.js +16 -0
- package/dist/chunk-RH7NHVSK.js.map +7 -0
- package/dist/chunk-RJ7BHDLM.js +121 -0
- package/dist/chunk-RJ7BHDLM.js.map +7 -0
- package/dist/chunk-RQ2TMLKG.js +142 -0
- package/dist/chunk-RQ2TMLKG.js.map +7 -0
- package/dist/chunk-S56LOTGQ.js +63 -0
- package/dist/chunk-S56LOTGQ.js.map +7 -0
- package/dist/chunk-UF73WX2J.js +49 -0
- package/dist/chunk-UF73WX2J.js.map +7 -0
- package/dist/chunk-W53GKIZQ.js +50 -0
- package/dist/chunk-W53GKIZQ.js.map +7 -0
- package/dist/chunk-WA4MWYRW.js +254 -0
- package/dist/chunk-WA4MWYRW.js.map +7 -0
- package/dist/chunk-WFULKPEQ.js +269 -0
- package/dist/chunk-WFULKPEQ.js.map +7 -0
- package/dist/chunk-XC6M4CSW.js +44 -0
- package/dist/chunk-XC6M4CSW.js.map +7 -0
- package/dist/chunk-XPUEGHXN.js +243 -0
- package/dist/chunk-XPUEGHXN.js.map +7 -0
- package/dist/chunk-XZXS2W24.js +148 -0
- package/dist/chunk-XZXS2W24.js.map +7 -0
- package/dist/chunk-YBNW7ARH.js +167 -0
- package/dist/chunk-YBNW7ARH.js.map +7 -0
- package/dist/chunk-YNIH3KMU.js +121 -0
- package/dist/chunk-YNIH3KMU.js.map +7 -0
- package/dist/commands/antigravity/backfill.js +135 -0
- package/dist/commands/antigravity/backfill.js.map +7 -0
- package/dist/commands/auth/create-key.js +48 -33
- package/dist/commands/auth/create-key.js.map +7 -1
- package/dist/commands/auth/login.js +58 -46
- package/dist/commands/auth/login.js.map +7 -1
- package/dist/commands/auth/logout.js +28 -13
- package/dist/commands/auth/logout.js.map +7 -1
- package/dist/commands/auth/revoke-key.js +32 -18
- package/dist/commands/auth/revoke-key.js.map +7 -1
- package/dist/commands/auth/status.js +40 -22
- package/dist/commands/auth/status.js.map +7 -1
- package/dist/commands/catalog/index.js +50 -34
- package/dist/commands/catalog/index.js.map +7 -1
- package/dist/commands/catalog/recommend.js +41 -26
- package/dist/commands/catalog/recommend.js.map +7 -1
- package/dist/commands/convert.js +72 -54
- package/dist/commands/convert.js.map +7 -1
- package/dist/commands/converters.js +52 -38
- package/dist/commands/converters.js.map +7 -1
- package/dist/commands/crons/list.js +50 -24
- package/dist/commands/crons/list.js.map +7 -1
- package/dist/commands/crons/run.js +72 -47
- package/dist/commands/crons/run.js.map +7 -1
- package/dist/commands/dashboard.js +45 -24
- package/dist/commands/dashboard.js.map +7 -1
- package/dist/commands/eval-targets/create.js +51 -39
- package/dist/commands/eval-targets/create.js.map +7 -1
- package/dist/commands/eval-targets/list.js +52 -35
- package/dist/commands/eval-targets/list.js.map +7 -1
- package/dist/commands/evals/agent.js +292 -0
- package/dist/commands/evals/agent.js.map +7 -0
- package/dist/commands/evals/benchmark.js +70 -51
- package/dist/commands/evals/benchmark.js.map +7 -1
- package/dist/commands/evals/compare.js +90 -78
- package/dist/commands/evals/compare.js.map +7 -1
- package/dist/commands/evals/create.js +64 -50
- package/dist/commands/evals/create.js.map +7 -1
- package/dist/commands/evals/optimize-description.js +225 -222
- package/dist/commands/evals/optimize-description.js.map +7 -1
- package/dist/commands/evals/optimize.js +206 -196
- package/dist/commands/evals/optimize.js.map +7 -1
- package/dist/commands/evals/run.js +178 -164
- package/dist/commands/evals/run.js.map +7 -1
- package/dist/commands/gateway/ensure.js +33 -19
- package/dist/commands/gateway/ensure.js.map +7 -1
- package/dist/commands/hooks/install.js +335 -275
- package/dist/commands/hooks/install.js.map +7 -1
- package/dist/commands/hooks/run.js +72 -53
- package/dist/commands/hooks/run.js.map +7 -1
- package/dist/commands/hooks/uninstall.js +117 -94
- package/dist/commands/hooks/uninstall.js.map +7 -1
- package/dist/commands/import.js +63 -53
- package/dist/commands/import.js.map +7 -1
- package/dist/commands/instructions/create.js +71 -58
- package/dist/commands/instructions/create.js.map +7 -1
- package/dist/commands/instructions/delete.js +53 -36
- package/dist/commands/instructions/delete.js.map +7 -1
- package/dist/commands/instructions/fork.js +33 -19
- package/dist/commands/instructions/fork.js.map +7 -1
- package/dist/commands/instructions/get.js +66 -49
- package/dist/commands/instructions/get.js.map +7 -1
- package/dist/commands/instructions/list.js +63 -46
- package/dist/commands/instructions/list.js.map +7 -1
- package/dist/commands/instructions/promote.js +41 -27
- package/dist/commands/instructions/promote.js.map +7 -1
- package/dist/commands/instructions/pull.js +37 -21
- package/dist/commands/instructions/pull.js.map +7 -1
- package/dist/commands/instructions/upstream.js +36 -21
- package/dist/commands/instructions/upstream.js.map +7 -1
- package/dist/commands/instructions/versions.js +51 -33
- package/dist/commands/instructions/versions.js.map +7 -1
- package/dist/commands/launcher.js +39 -0
- package/dist/commands/launcher.js.map +7 -0
- package/dist/commands/org/current.js +74 -68
- package/dist/commands/org/current.js.map +7 -1
- package/dist/commands/org/list.js +50 -36
- package/dist/commands/org/list.js.map +7 -1
- package/dist/commands/org/switch.js +69 -51
- package/dist/commands/org/switch.js.map +7 -1
- package/dist/commands/packs/add-instruction.js +36 -22
- package/dist/commands/packs/add-instruction.js.map +7 -1
- package/dist/commands/packs/apply.js +38 -24
- package/dist/commands/packs/apply.js.map +7 -1
- package/dist/commands/packs/create.js +47 -33
- package/dist/commands/packs/create.js.map +7 -1
- package/dist/commands/packs/fork.js +33 -19
- package/dist/commands/packs/fork.js.map +7 -1
- package/dist/commands/packs/get.js +54 -35
- package/dist/commands/packs/get.js.map +7 -1
- package/dist/commands/packs/list.js +64 -47
- package/dist/commands/packs/list.js.map +7 -1
- package/dist/commands/packs/remove-instruction.js +34 -20
- package/dist/commands/packs/remove-instruction.js.map +7 -1
- package/dist/commands/proxy/env.js +126 -116
- package/dist/commands/proxy/env.js.map +7 -1
- package/dist/commands/proxy/logs.js +83 -74
- package/dist/commands/proxy/logs.js.map +7 -1
- package/dist/commands/proxy/restart.js +34 -36
- package/dist/commands/proxy/restart.js.map +7 -1
- package/dist/commands/proxy/setup.js +432 -375
- package/dist/commands/proxy/setup.js.map +7 -1
- package/dist/commands/proxy/start.js +289 -289
- package/dist/commands/proxy/start.js.map +7 -1
- package/dist/commands/proxy/status.js +74 -64
- package/dist/commands/proxy/status.js.map +7 -1
- package/dist/commands/proxy/stop.js +81 -75
- package/dist/commands/proxy/stop.js.map +7 -1
- package/dist/commands/research/backfill.js +58 -0
- package/dist/commands/research/backfill.js.map +7 -0
- package/dist/commands/research/tail-transcript.js +69 -0
- package/dist/commands/research/tail-transcript.js.map +7 -0
- package/dist/commands/service/install.js +639 -405
- package/dist/commands/service/install.js.map +7 -1
- package/dist/commands/service/status.js +178 -111
- package/dist/commands/service/status.js.map +7 -1
- package/dist/commands/service/uninstall.js +85 -110
- package/dist/commands/service/uninstall.js.map +7 -1
- package/dist/commands/sessions/analyze.js +46 -25
- package/dist/commands/sessions/analyze.js.map +7 -1
- package/dist/commands/sessions/end.js +81 -79
- package/dist/commands/sessions/end.js.map +7 -1
- package/dist/commands/sessions/import.js +44 -27
- package/dist/commands/sessions/import.js.map +7 -1
- package/dist/commands/sessions/list.js +46 -33
- package/dist/commands/sessions/list.js.map +7 -1
- package/dist/commands/sessions/start.js +88 -87
- package/dist/commands/sessions/start.js.map +7 -1
- package/dist/commands/signals/report.js +42 -34
- package/dist/commands/signals/report.js.map +7 -1
- package/dist/commands/skills/export-approved.js +44 -30
- package/dist/commands/skills/export-approved.js.map +7 -1
- package/dist/commands/skills/install.js +99 -84
- package/dist/commands/skills/install.js.map +7 -1
- package/dist/commands/skills/list.js +59 -42
- package/dist/commands/skills/list.js.map +7 -1
- package/dist/commands/skills/publish.js +95 -78
- package/dist/commands/skills/publish.js.map +7 -1
- package/dist/commands/skills/search.js +68 -53
- package/dist/commands/skills/search.js.map +7 -1
- package/dist/commands/skills/update.js +52 -39
- package/dist/commands/skills/update.js.map +7 -1
- package/dist/commands/suggestions/accept.js +82 -59
- package/dist/commands/suggestions/accept.js.map +7 -1
- package/dist/commands/suggestions/dismiss.js +44 -26
- package/dist/commands/suggestions/dismiss.js.map +7 -1
- package/dist/commands/suggestions/list.js +59 -39
- package/dist/commands/suggestions/list.js.map +7 -1
- package/dist/commands/suggestions/refresh.js +26 -11
- package/dist/commands/suggestions/refresh.js.map +7 -1
- package/dist/cursor-BGQJ4CWI.js +134 -0
- package/dist/cursor-BGQJ4CWI.js.map +7 -0
- package/dist/dashboard/Dashboard.js +229 -126
- package/dist/dashboard/Dashboard.js.map +7 -1
- package/dist/dashboard/data.js +13 -137
- package/dist/dashboard/data.js.map +7 -1
- package/dist/dashboard/launcher/ActiveJobsList.js +10 -0
- package/dist/dashboard/launcher/ActiveJobsList.js.map +7 -0
- package/dist/dashboard/launcher/LauncherOverlay.js +14 -0
- package/dist/dashboard/launcher/LauncherOverlay.js.map +7 -0
- package/dist/dashboard/launcher/NewLaunchForm.js +10 -0
- package/dist/dashboard/launcher/NewLaunchForm.js.map +7 -0
- package/dist/dashboard/launcher/api.js +14 -0
- package/dist/dashboard/launcher/api.js.map +7 -0
- package/dist/dashboard/launcher/tool-labels.js +10 -0
- package/dist/dashboard/launcher/tool-labels.js.map +7 -0
- package/dist/dashboard/launcher/types.js +1 -0
- package/dist/dashboard/launcher/types.js.map +7 -0
- package/dist/dashboard/launcher/useLaunchJobs.js +9 -0
- package/dist/dashboard/launcher/useLaunchJobs.js.map +7 -0
- package/dist/dashboard/panels/friction.js +10 -22
- package/dist/dashboard/panels/friction.js.map +7 -1
- package/dist/dashboard/panels/insights.js +10 -109
- package/dist/dashboard/panels/insights.js.map +7 -1
- package/dist/dashboard/panels/instructions.js +10 -17
- package/dist/dashboard/panels/instructions.js.map +7 -1
- package/dist/dashboard/panels/outcomes.js +9 -28
- package/dist/dashboard/panels/outcomes.js.map +7 -1
- package/dist/dashboard/panels/overview.js +10 -20
- package/dist/dashboard/panels/overview.js.map +7 -1
- package/dist/dashboard/panels/shared.js +18 -61
- package/dist/dashboard/panels/shared.js.map +7 -1
- package/dist/dashboard/types.js +23 -26
- package/dist/dashboard/types.js.map +7 -1
- package/dist/dist-CSUYFYKI.js +52 -0
- package/dist/dist-CSUYFYKI.js.map +7 -0
- package/dist/index.js +8 -2
- package/dist/index.js.map +7 -1
- package/dist/lib/active-org-refresh.js +15 -108
- package/dist/lib/active-org-refresh.js.map +7 -1
- package/dist/lib/active-org.js +15 -95
- package/dist/lib/active-org.js.map +7 -1
- package/dist/lib/agent-loop.js +44 -0
- package/dist/lib/agent-loop.js.map +7 -0
- package/dist/lib/antigravity-transcript.js +22 -0
- package/dist/lib/antigravity-transcript.js.map +7 -0
- package/dist/lib/api-client.js +21 -92
- package/dist/lib/api-client.js.map +7 -1
- package/dist/lib/auth.js +26 -137
- package/dist/lib/auth.js.map +7 -1
- package/dist/lib/detect-languages.js +8 -113
- package/dist/lib/detect-languages.js.map +7 -1
- package/dist/lib/detect-tmux.js +9 -0
- package/dist/lib/detect-tmux.js.map +7 -0
- package/dist/lib/eval-analyzer.js +9 -89
- package/dist/lib/eval-analyzer.js.map +7 -1
- package/dist/lib/eval-benchmark.js +12 -92
- package/dist/lib/eval-benchmark.js.map +7 -1
- package/dist/lib/eval-conversation-handler.js +13 -200
- package/dist/lib/eval-conversation-handler.js.map +7 -1
- package/dist/lib/eval-executor.js +8 -83
- package/dist/lib/eval-executor.js.map +7 -1
- package/dist/lib/eval-grader.js +9 -123
- package/dist/lib/eval-grader.js.map +7 -1
- package/dist/lib/eval-meta-judge.js +9 -116
- package/dist/lib/eval-meta-judge.js.map +7 -1
- package/dist/lib/eval-trigger-tester.js +11 -96
- package/dist/lib/eval-trigger-tester.js.map +7 -1
- package/dist/lib/eval-worktree.js +8 -87
- package/dist/lib/eval-worktree.js.map +7 -1
- package/dist/lib/gateway-entry.js +20 -18
- package/dist/lib/gateway-entry.js.map +7 -1
- package/dist/lib/gateway-lifecycle.js +22 -97
- package/dist/lib/gateway-lifecycle.js.map +7 -1
- package/dist/lib/gateway.js +12 -216
- package/dist/lib/gateway.js.map +7 -1
- package/dist/lib/handlers/cron-close-stale-sessions.js +18 -7
- package/dist/lib/handlers/cron-close-stale-sessions.js.map +7 -1
- package/dist/lib/handlers/cron-data-integrity-audit.js +21 -15
- package/dist/lib/handlers/cron-data-integrity-audit.js.map +7 -1
- package/dist/lib/handlers/cron-refresh-skills.js +7 -90
- package/dist/lib/handlers/cron-refresh-skills.js.map +7 -1
- package/dist/lib/handlers/cron-suggest-instructions.js +14 -158
- package/dist/lib/handlers/cron-suggest-instructions.js.map +7 -1
- package/dist/lib/handlers/process-announcement.js +11 -0
- package/dist/lib/handlers/process-announcement.js.map +7 -0
- package/dist/lib/handlers/process-changelog.js +11 -0
- package/dist/lib/handlers/process-changelog.js.map +7 -0
- package/dist/lib/handlers/process-conversation.js +14 -35
- package/dist/lib/handlers/process-conversation.js.map +7 -1
- package/dist/lib/handlers/process-eval.js +15 -207
- package/dist/lib/handlers/process-eval.js.map +7 -1
- package/dist/lib/handlers/process-insights.js +14 -300
- package/dist/lib/handlers/process-insights.js.map +7 -1
- package/dist/lib/handlers/process-launch.js +16 -41
- package/dist/lib/handlers/process-launch.js.map +7 -1
- package/dist/lib/handlers/process-run-cleanup.js +13 -0
- package/dist/lib/handlers/process-run-cleanup.js.map +7 -0
- package/dist/lib/handlers/process-send-message.js +10 -0
- package/dist/lib/handlers/process-send-message.js.map +7 -0
- package/dist/lib/handlers/process-session-goal.js +11 -74
- package/dist/lib/handlers/process-session-goal.js.map +7 -1
- package/dist/lib/hooks-config.js +52 -544
- package/dist/lib/hooks-config.js.map +7 -1
- package/dist/lib/insights-prompts.js +12 -145
- package/dist/lib/insights-prompts.js.map +7 -1
- package/dist/lib/job-helpers.js +1 -0
- package/dist/lib/job-helpers.js.map +7 -0
- package/dist/lib/llm-client.js +16 -274
- package/dist/lib/llm-client.js.map +7 -1
- package/dist/lib/manual-tasks.js +22 -0
- package/dist/lib/manual-tasks.js.map +7 -0
- package/dist/lib/output.js +12 -36
- package/dist/lib/output.js.map +7 -1
- package/dist/lib/permanent-job-error.js +10 -23
- package/dist/lib/permanent-job-error.js.map +7 -1
- package/dist/lib/provider-aggregator.js +57 -55
- package/dist/lib/provider-aggregator.js.map +7 -1
- package/dist/lib/research-client.js +12 -0
- package/dist/lib/research-client.js.map +7 -0
- package/dist/lib/skills-loader.js +8 -51
- package/dist/lib/skills-loader.js.map +7 -1
- package/dist/lib/statusline-shim.js +16 -0
- package/dist/lib/statusline-shim.js.map +7 -0
- package/dist/lib/terminal-target-heartbeat.js +15 -0
- package/dist/lib/terminal-target-heartbeat.js.map +7 -0
- package/dist/lib/tmux.js +16 -0
- package/dist/lib/tmux.js.map +7 -0
- package/dist/lib/transcript-rate-limit-watcher.js +22 -0
- package/dist/lib/transcript-rate-limit-watcher.js.map +7 -0
- package/dist/lib/types.js +8 -7
- package/dist/lib/types.js.map +7 -1
- package/dist/lib/version-check.js +10 -106
- package/dist/lib/version-check.js.map +7 -1
- package/dist/lib/which.js +8 -0
- package/dist/lib/which.js.map +7 -0
- package/dist/lib/worktree.js +17 -0
- package/dist/lib/worktree.js.map +7 -0
- package/dist/opencode-IQ7X5YMJ.js +190 -0
- package/dist/opencode-IQ7X5YMJ.js.map +7 -0
- package/oclif.manifest.json +299 -66
- package/package.json +27 -11
- package/dist/base-command.d.ts +0 -12
- package/dist/base-command.d.ts.map +0 -1
- package/dist/commands/auth/create-key.d.ts +0 -11
- package/dist/commands/auth/create-key.d.ts.map +0 -1
- package/dist/commands/auth/login.d.ts +0 -11
- package/dist/commands/auth/login.d.ts.map +0 -1
- package/dist/commands/auth/logout.d.ts +0 -7
- package/dist/commands/auth/logout.d.ts.map +0 -1
- package/dist/commands/auth/revoke-key.d.ts +0 -10
- package/dist/commands/auth/revoke-key.d.ts.map +0 -1
- package/dist/commands/auth/status.d.ts +0 -7
- package/dist/commands/auth/status.d.ts.map +0 -1
- package/dist/commands/catalog/index.d.ts +0 -11
- package/dist/commands/catalog/index.d.ts.map +0 -1
- package/dist/commands/catalog/recommend.d.ts +0 -9
- package/dist/commands/catalog/recommend.d.ts.map +0 -1
- package/dist/commands/convert.d.ts +0 -15
- package/dist/commands/convert.d.ts.map +0 -1
- package/dist/commands/converters.d.ts +0 -12
- package/dist/commands/converters.d.ts.map +0 -1
- package/dist/commands/crons/list.d.ts +0 -7
- package/dist/commands/crons/list.d.ts.map +0 -1
- package/dist/commands/crons/run.d.ts +0 -13
- package/dist/commands/crons/run.d.ts.map +0 -1
- package/dist/commands/dashboard.d.ts +0 -10
- package/dist/commands/dashboard.d.ts.map +0 -1
- package/dist/commands/eval-targets/create.d.ts +0 -14
- package/dist/commands/eval-targets/create.d.ts.map +0 -1
- package/dist/commands/eval-targets/list.d.ts +0 -10
- package/dist/commands/eval-targets/list.d.ts.map +0 -1
- package/dist/commands/evals/benchmark.d.ts +0 -13
- package/dist/commands/evals/benchmark.d.ts.map +0 -1
- package/dist/commands/evals/compare.d.ts +0 -15
- package/dist/commands/evals/compare.d.ts.map +0 -1
- package/dist/commands/evals/create.d.ts +0 -17
- package/dist/commands/evals/create.d.ts.map +0 -1
- package/dist/commands/evals/listen.d.ts +0 -37
- package/dist/commands/evals/listen.d.ts.map +0 -1
- package/dist/commands/evals/listen.js +0 -188
- package/dist/commands/evals/listen.js.map +0 -1
- package/dist/commands/evals/listen.test.d.ts +0 -2
- package/dist/commands/evals/listen.test.d.ts.map +0 -1
- package/dist/commands/evals/listen.test.js +0 -48
- package/dist/commands/evals/listen.test.js.map +0 -1
- package/dist/commands/evals/optimize-description.d.ts +0 -22
- package/dist/commands/evals/optimize-description.d.ts.map +0 -1
- package/dist/commands/evals/optimize.d.ts +0 -22
- package/dist/commands/evals/optimize.d.ts.map +0 -1
- package/dist/commands/evals/run.d.ts +0 -21
- package/dist/commands/evals/run.d.ts.map +0 -1
- package/dist/commands/gateway/ensure.d.ts +0 -7
- package/dist/commands/gateway/ensure.d.ts.map +0 -1
- package/dist/commands/hooks/install.d.ts +0 -16
- package/dist/commands/hooks/install.d.ts.map +0 -1
- package/dist/commands/hooks/run.d.ts +0 -11
- package/dist/commands/hooks/run.d.ts.map +0 -1
- package/dist/commands/hooks/uninstall.d.ts +0 -7
- package/dist/commands/hooks/uninstall.d.ts.map +0 -1
- package/dist/commands/import.d.ts +0 -17
- package/dist/commands/import.d.ts.map +0 -1
- package/dist/commands/instructions/create.d.ts +0 -17
- package/dist/commands/instructions/create.d.ts.map +0 -1
- package/dist/commands/instructions/delete.d.ts +0 -13
- package/dist/commands/instructions/delete.d.ts.map +0 -1
- package/dist/commands/instructions/fork.d.ts +0 -10
- package/dist/commands/instructions/fork.d.ts.map +0 -1
- package/dist/commands/instructions/get.d.ts +0 -15
- package/dist/commands/instructions/get.d.ts.map +0 -1
- package/dist/commands/instructions/list.d.ts +0 -12
- package/dist/commands/instructions/list.d.ts.map +0 -1
- package/dist/commands/instructions/promote.d.ts +0 -14
- package/dist/commands/instructions/promote.d.ts.map +0 -1
- package/dist/commands/instructions/pull.d.ts +0 -9
- package/dist/commands/instructions/pull.d.ts.map +0 -1
- package/dist/commands/instructions/upstream.d.ts +0 -9
- package/dist/commands/instructions/upstream.d.ts.map +0 -1
- package/dist/commands/instructions/versions.d.ts +0 -12
- package/dist/commands/instructions/versions.d.ts.map +0 -1
- package/dist/commands/org/current.d.ts +0 -7
- package/dist/commands/org/current.d.ts.map +0 -1
- package/dist/commands/org/list.d.ts +0 -7
- package/dist/commands/org/list.d.ts.map +0 -1
- package/dist/commands/org/switch.d.ts +0 -13
- package/dist/commands/org/switch.d.ts.map +0 -1
- package/dist/commands/packs/add-instruction.d.ts +0 -11
- package/dist/commands/packs/add-instruction.d.ts.map +0 -1
- package/dist/commands/packs/apply.d.ts +0 -13
- package/dist/commands/packs/apply.d.ts.map +0 -1
- package/dist/commands/packs/create.d.ts +0 -13
- package/dist/commands/packs/create.d.ts.map +0 -1
- package/dist/commands/packs/fork.d.ts +0 -10
- package/dist/commands/packs/fork.d.ts.map +0 -1
- package/dist/commands/packs/get.d.ts +0 -10
- package/dist/commands/packs/get.d.ts.map +0 -1
- package/dist/commands/packs/list.d.ts +0 -22
- package/dist/commands/packs/list.d.ts.map +0 -1
- package/dist/commands/packs/remove-instruction.d.ts +0 -11
- package/dist/commands/packs/remove-instruction.d.ts.map +0 -1
- package/dist/commands/proxy/env.d.ts +0 -14
- package/dist/commands/proxy/env.d.ts.map +0 -1
- package/dist/commands/proxy/logs.d.ts +0 -11
- package/dist/commands/proxy/logs.d.ts.map +0 -1
- package/dist/commands/proxy/restart.d.ts +0 -11
- package/dist/commands/proxy/restart.d.ts.map +0 -1
- package/dist/commands/proxy/setup.d.ts +0 -23
- package/dist/commands/proxy/setup.d.ts.map +0 -1
- package/dist/commands/proxy/start.d.ts +0 -17
- package/dist/commands/proxy/start.d.ts.map +0 -1
- package/dist/commands/proxy/status.d.ts +0 -7
- package/dist/commands/proxy/status.d.ts.map +0 -1
- package/dist/commands/proxy/stop.d.ts +0 -8
- package/dist/commands/proxy/stop.d.ts.map +0 -1
- package/dist/commands/service/install.d.ts +0 -33
- package/dist/commands/service/install.d.ts.map +0 -1
- package/dist/commands/service/install.test.d.ts +0 -2
- package/dist/commands/service/install.test.d.ts.map +0 -1
- package/dist/commands/service/install.test.js +0 -345
- package/dist/commands/service/install.test.js.map +0 -1
- package/dist/commands/service/status.d.ts +0 -6
- package/dist/commands/service/status.d.ts.map +0 -1
- package/dist/commands/service/uninstall.d.ts +0 -6
- package/dist/commands/service/uninstall.d.ts.map +0 -1
- package/dist/commands/sessions/analyze.d.ts +0 -10
- package/dist/commands/sessions/analyze.d.ts.map +0 -1
- package/dist/commands/sessions/end.d.ts +0 -9
- package/dist/commands/sessions/end.d.ts.map +0 -1
- package/dist/commands/sessions/import.d.ts +0 -13
- package/dist/commands/sessions/import.d.ts.map +0 -1
- package/dist/commands/sessions/list.d.ts +0 -11
- package/dist/commands/sessions/list.d.ts.map +0 -1
- package/dist/commands/sessions/start.d.ts +0 -11
- package/dist/commands/sessions/start.d.ts.map +0 -1
- package/dist/commands/signals/report.d.ts +0 -10
- package/dist/commands/signals/report.d.ts.map +0 -1
- package/dist/commands/signals/report.test.d.ts +0 -2
- package/dist/commands/signals/report.test.d.ts.map +0 -1
- package/dist/commands/signals/report.test.js +0 -65
- package/dist/commands/signals/report.test.js.map +0 -1
- package/dist/commands/skills/export-approved.d.ts +0 -10
- package/dist/commands/skills/export-approved.d.ts.map +0 -1
- package/dist/commands/skills/install.d.ts +0 -15
- package/dist/commands/skills/install.d.ts.map +0 -1
- package/dist/commands/skills/list.d.ts +0 -11
- package/dist/commands/skills/list.d.ts.map +0 -1
- package/dist/commands/skills/publish.d.ts +0 -17
- package/dist/commands/skills/publish.d.ts.map +0 -1
- package/dist/commands/skills/search.d.ts +0 -17
- package/dist/commands/skills/search.d.ts.map +0 -1
- package/dist/commands/skills/update.d.ts +0 -10
- package/dist/commands/skills/update.d.ts.map +0 -1
- package/dist/commands/suggestions/accept.d.ts +0 -16
- package/dist/commands/suggestions/accept.d.ts.map +0 -1
- package/dist/commands/suggestions/accept.test.d.ts +0 -2
- package/dist/commands/suggestions/accept.test.d.ts.map +0 -1
- package/dist/commands/suggestions/accept.test.js +0 -52
- package/dist/commands/suggestions/accept.test.js.map +0 -1
- package/dist/commands/suggestions/dismiss.d.ts +0 -10
- package/dist/commands/suggestions/dismiss.d.ts.map +0 -1
- package/dist/commands/suggestions/list.d.ts +0 -10
- package/dist/commands/suggestions/list.d.ts.map +0 -1
- package/dist/commands/suggestions/refresh.d.ts +0 -7
- package/dist/commands/suggestions/refresh.d.ts.map +0 -1
- package/dist/dashboard/Dashboard.d.ts +0 -3
- package/dist/dashboard/Dashboard.d.ts.map +0 -1
- package/dist/dashboard/data.d.ts +0 -11
- package/dist/dashboard/data.d.ts.map +0 -1
- package/dist/dashboard/panels/friction.d.ts +0 -7
- package/dist/dashboard/panels/friction.d.ts.map +0 -1
- package/dist/dashboard/panels/insights.d.ts +0 -8
- package/dist/dashboard/panels/insights.d.ts.map +0 -1
- package/dist/dashboard/panels/instructions.d.ts +0 -9
- package/dist/dashboard/panels/instructions.d.ts.map +0 -1
- package/dist/dashboard/panels/outcomes.d.ts +0 -7
- package/dist/dashboard/panels/outcomes.d.ts.map +0 -1
- package/dist/dashboard/panels/overview.d.ts +0 -8
- package/dist/dashboard/panels/overview.d.ts.map +0 -1
- package/dist/dashboard/panels/shared.d.ts +0 -17
- package/dist/dashboard/panels/shared.d.ts.map +0 -1
- package/dist/dashboard/types.d.ts +0 -80
- package/dist/dashboard/types.d.ts.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/lib/active-org-refresh.d.ts +0 -22
- package/dist/lib/active-org-refresh.d.ts.map +0 -1
- package/dist/lib/active-org-refresh.test.d.ts +0 -2
- package/dist/lib/active-org-refresh.test.d.ts.map +0 -1
- package/dist/lib/active-org-refresh.test.js +0 -190
- package/dist/lib/active-org-refresh.test.js.map +0 -1
- package/dist/lib/active-org.d.ts +0 -43
- package/dist/lib/active-org.d.ts.map +0 -1
- package/dist/lib/active-org.test.d.ts +0 -2
- package/dist/lib/active-org.test.d.ts.map +0 -1
- package/dist/lib/active-org.test.js +0 -147
- package/dist/lib/active-org.test.js.map +0 -1
- package/dist/lib/api-client.d.ts +0 -17
- package/dist/lib/api-client.d.ts.map +0 -1
- package/dist/lib/api-client.test.d.ts +0 -2
- package/dist/lib/api-client.test.d.ts.map +0 -1
- package/dist/lib/api-client.test.js +0 -161
- package/dist/lib/api-client.test.js.map +0 -1
- package/dist/lib/auth.d.ts +0 -27
- package/dist/lib/auth.d.ts.map +0 -1
- package/dist/lib/auth.test.d.ts +0 -2
- package/dist/lib/auth.test.d.ts.map +0 -1
- package/dist/lib/auth.test.js +0 -110
- package/dist/lib/auth.test.js.map +0 -1
- package/dist/lib/cron-registry.d.ts +0 -47
- package/dist/lib/cron-registry.d.ts.map +0 -1
- package/dist/lib/cron-registry.js +0 -102
- package/dist/lib/cron-registry.js.map +0 -1
- package/dist/lib/cron-registry.test.d.ts +0 -2
- package/dist/lib/cron-registry.test.d.ts.map +0 -1
- package/dist/lib/cron-registry.test.js +0 -136
- package/dist/lib/cron-registry.test.js.map +0 -1
- package/dist/lib/cron-runner.d.ts +0 -16
- package/dist/lib/cron-runner.d.ts.map +0 -1
- package/dist/lib/cron-runner.js +0 -68
- package/dist/lib/cron-runner.js.map +0 -1
- package/dist/lib/detect-languages.d.ts +0 -7
- package/dist/lib/detect-languages.d.ts.map +0 -1
- package/dist/lib/detect-languages.test.d.ts +0 -2
- package/dist/lib/detect-languages.test.d.ts.map +0 -1
- package/dist/lib/detect-languages.test.js +0 -29
- package/dist/lib/detect-languages.test.js.map +0 -1
- package/dist/lib/eval-analyzer.d.ts +0 -23
- package/dist/lib/eval-analyzer.d.ts.map +0 -1
- package/dist/lib/eval-benchmark.d.ts +0 -17
- package/dist/lib/eval-benchmark.d.ts.map +0 -1
- package/dist/lib/eval-conversation-handler.d.ts +0 -9
- package/dist/lib/eval-conversation-handler.d.ts.map +0 -1
- package/dist/lib/eval-executor.d.ts +0 -21
- package/dist/lib/eval-executor.d.ts.map +0 -1
- package/dist/lib/eval-executor.test.d.ts +0 -2
- package/dist/lib/eval-executor.test.d.ts.map +0 -1
- package/dist/lib/eval-executor.test.js +0 -8
- package/dist/lib/eval-executor.test.js.map +0 -1
- package/dist/lib/eval-grader.d.ts +0 -38
- package/dist/lib/eval-grader.d.ts.map +0 -1
- package/dist/lib/eval-grader.test.d.ts +0 -2
- package/dist/lib/eval-grader.test.d.ts.map +0 -1
- package/dist/lib/eval-grader.test.js +0 -8
- package/dist/lib/eval-grader.test.js.map +0 -1
- package/dist/lib/eval-meta-judge.d.ts +0 -28
- package/dist/lib/eval-meta-judge.d.ts.map +0 -1
- package/dist/lib/eval-trigger-tester.d.ts +0 -19
- package/dist/lib/eval-trigger-tester.d.ts.map +0 -1
- package/dist/lib/eval-worktree.d.ts +0 -11
- package/dist/lib/eval-worktree.d.ts.map +0 -1
- package/dist/lib/eval-worktree.test.d.ts +0 -2
- package/dist/lib/eval-worktree.test.d.ts.map +0 -1
- package/dist/lib/eval-worktree.test.js +0 -68
- package/dist/lib/eval-worktree.test.js.map +0 -1
- package/dist/lib/gateway-entry.d.ts +0 -3
- package/dist/lib/gateway-entry.d.ts.map +0 -1
- package/dist/lib/gateway-lifecycle.d.ts +0 -9
- package/dist/lib/gateway-lifecycle.d.ts.map +0 -1
- package/dist/lib/gateway.d.ts +0 -11
- package/dist/lib/gateway.d.ts.map +0 -1
- package/dist/lib/graphile-worker-runner.d.ts +0 -124
- package/dist/lib/graphile-worker-runner.d.ts.map +0 -1
- package/dist/lib/graphile-worker-runner.js +0 -530
- package/dist/lib/graphile-worker-runner.js.map +0 -1
- package/dist/lib/graphile-worker-runner.test.d.ts +0 -2
- package/dist/lib/graphile-worker-runner.test.d.ts.map +0 -1
- package/dist/lib/graphile-worker-runner.test.js +0 -153
- package/dist/lib/graphile-worker-runner.test.js.map +0 -1
- package/dist/lib/handlers/cron-close-stale-sessions.d.ts +0 -3
- package/dist/lib/handlers/cron-close-stale-sessions.d.ts.map +0 -1
- package/dist/lib/handlers/cron-data-integrity-audit.d.ts +0 -3
- package/dist/lib/handlers/cron-data-integrity-audit.d.ts.map +0 -1
- package/dist/lib/handlers/cron-refresh-skills.d.ts +0 -3
- package/dist/lib/handlers/cron-refresh-skills.d.ts.map +0 -1
- package/dist/lib/handlers/cron-refresh-skills.test.d.ts +0 -2
- package/dist/lib/handlers/cron-refresh-skills.test.d.ts.map +0 -1
- package/dist/lib/handlers/cron-refresh-skills.test.js +0 -114
- package/dist/lib/handlers/cron-refresh-skills.test.js.map +0 -1
- package/dist/lib/handlers/cron-regenerate-insights.d.ts +0 -3
- package/dist/lib/handlers/cron-regenerate-insights.d.ts.map +0 -1
- package/dist/lib/handlers/cron-regenerate-insights.js +0 -6
- package/dist/lib/handlers/cron-regenerate-insights.js.map +0 -1
- package/dist/lib/handlers/cron-suggest-instructions.d.ts +0 -3
- package/dist/lib/handlers/cron-suggest-instructions.d.ts.map +0 -1
- package/dist/lib/handlers/cron-suggest-instructions.test.d.ts +0 -2
- package/dist/lib/handlers/cron-suggest-instructions.test.d.ts.map +0 -1
- package/dist/lib/handlers/cron-suggest-instructions.test.js +0 -80
- package/dist/lib/handlers/cron-suggest-instructions.test.js.map +0 -1
- package/dist/lib/handlers/process-conversation.d.ts +0 -35
- package/dist/lib/handlers/process-conversation.d.ts.map +0 -1
- package/dist/lib/handlers/process-eval.d.ts +0 -32
- package/dist/lib/handlers/process-eval.d.ts.map +0 -1
- package/dist/lib/handlers/process-insights.d.ts +0 -39
- package/dist/lib/handlers/process-insights.d.ts.map +0 -1
- package/dist/lib/handlers/process-launch.d.ts +0 -29
- package/dist/lib/handlers/process-launch.d.ts.map +0 -1
- package/dist/lib/handlers/process-session-goal.d.ts +0 -29
- package/dist/lib/handlers/process-session-goal.d.ts.map +0 -1
- package/dist/lib/handlers/process-session-goal.test.d.ts +0 -2
- package/dist/lib/handlers/process-session-goal.test.d.ts.map +0 -1
- package/dist/lib/handlers/process-session-goal.test.js +0 -134
- package/dist/lib/handlers/process-session-goal.test.js.map +0 -1
- package/dist/lib/hooks-config.d.ts +0 -119
- package/dist/lib/hooks-config.d.ts.map +0 -1
- package/dist/lib/hooks-config.test.d.ts +0 -2
- package/dist/lib/hooks-config.test.d.ts.map +0 -1
- package/dist/lib/hooks-config.test.js +0 -231
- package/dist/lib/hooks-config.test.js.map +0 -1
- package/dist/lib/insights-prompts.d.ts +0 -13
- package/dist/lib/insights-prompts.d.ts.map +0 -1
- package/dist/lib/llm-client.d.ts +0 -26
- package/dist/lib/llm-client.d.ts.map +0 -1
- package/dist/lib/llm-client.test.d.ts +0 -2
- package/dist/lib/llm-client.test.d.ts.map +0 -1
- package/dist/lib/llm-client.test.js +0 -62
- package/dist/lib/llm-client.test.js.map +0 -1
- package/dist/lib/mirror-writer-db.d.ts +0 -12
- package/dist/lib/mirror-writer-db.d.ts.map +0 -1
- package/dist/lib/mirror-writer-db.js +0 -51
- package/dist/lib/mirror-writer-db.js.map +0 -1
- package/dist/lib/mirror-writer.d.ts +0 -35
- package/dist/lib/mirror-writer.d.ts.map +0 -1
- package/dist/lib/mirror-writer.js +0 -27
- package/dist/lib/mirror-writer.js.map +0 -1
- package/dist/lib/mirror-writer.test.d.ts +0 -2
- package/dist/lib/mirror-writer.test.d.ts.map +0 -1
- package/dist/lib/mirror-writer.test.js +0 -47
- package/dist/lib/mirror-writer.test.js.map +0 -1
- package/dist/lib/output.d.ts +0 -4
- package/dist/lib/output.d.ts.map +0 -1
- package/dist/lib/output.test.d.ts +0 -2
- package/dist/lib/output.test.d.ts.map +0 -1
- package/dist/lib/output.test.js +0 -71
- package/dist/lib/output.test.js.map +0 -1
- package/dist/lib/permanent-job-error.d.ts +0 -17
- package/dist/lib/permanent-job-error.d.ts.map +0 -1
- package/dist/lib/permanent-job-error.test.d.ts +0 -2
- package/dist/lib/permanent-job-error.test.d.ts.map +0 -1
- package/dist/lib/permanent-job-error.test.js +0 -29
- package/dist/lib/permanent-job-error.test.js.map +0 -1
- package/dist/lib/provider-aggregator.d.ts +0 -24
- package/dist/lib/provider-aggregator.d.ts.map +0 -1
- package/dist/lib/provider-aggregator.test.d.ts +0 -2
- package/dist/lib/provider-aggregator.test.d.ts.map +0 -1
- package/dist/lib/provider-aggregator.test.js +0 -103
- package/dist/lib/provider-aggregator.test.js.map +0 -1
- package/dist/lib/skills-loader.d.ts +0 -6
- package/dist/lib/skills-loader.d.ts.map +0 -1
- package/dist/lib/types.d.ts +0 -48
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/version-check.d.ts +0 -11
- package/dist/lib/version-check.d.ts.map +0 -1
- package/dist/test-helpers.d.ts +0 -58
- package/dist/test-helpers.d.ts.map +0 -1
- package/dist/test-helpers.js +0 -58
- package/dist/test-helpers.js.map +0 -1
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NewLaunchForm
|
|
3
|
+
} from "./chunk-DTFXCHHI.js";
|
|
4
|
+
import {
|
|
5
|
+
useLaunchJobs
|
|
6
|
+
} from "./chunk-KHJUQFIK.js";
|
|
7
|
+
import {
|
|
8
|
+
cancelLaunchJob,
|
|
9
|
+
createLaunchJob,
|
|
10
|
+
listLaunchers
|
|
11
|
+
} from "./chunk-N52AHNBH.js";
|
|
12
|
+
import {
|
|
13
|
+
ActiveJobsList
|
|
14
|
+
} from "./chunk-QD6X4L4L.js";
|
|
15
|
+
import {
|
|
16
|
+
ORANGE
|
|
17
|
+
} from "./chunk-QJQS6TUN.js";
|
|
18
|
+
|
|
19
|
+
// src/dashboard/launcher/LauncherOverlay.tsx
|
|
20
|
+
import { useEffect, useState } from "react";
|
|
21
|
+
import { Box, Text, useInput } from "ink";
|
|
22
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
23
|
+
function LauncherOverlay({
|
|
24
|
+
onClose,
|
|
25
|
+
activeOrg,
|
|
26
|
+
defaultProjectPath,
|
|
27
|
+
width
|
|
28
|
+
}) {
|
|
29
|
+
const { jobs, error, loading, refetch } = useLaunchJobs(20);
|
|
30
|
+
const [launchers, setLaunchers] = useState([]);
|
|
31
|
+
const [zone, setZone] = useState("list");
|
|
32
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
33
|
+
const [confirmCancel, setConfirmCancel] = useState(null);
|
|
34
|
+
const [resumePrefill, setResumePrefill] = useState(null);
|
|
35
|
+
const [toast, setToast] = useState(null);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
listLaunchers().then(setLaunchers).catch((e) => {
|
|
38
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
39
|
+
setToast(`couldn't load launchers: ${msg}`);
|
|
40
|
+
setLaunchers([
|
|
41
|
+
{ tool: "claude_code", capabilities: { headless: true, interactive: true, remoteSpawn: true } }
|
|
42
|
+
]);
|
|
43
|
+
});
|
|
44
|
+
}, []);
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
if (!toast) return;
|
|
47
|
+
const t = setTimeout(() => setToast(null), 5e3);
|
|
48
|
+
return () => clearTimeout(t);
|
|
49
|
+
}, [toast]);
|
|
50
|
+
useInput((input, key) => {
|
|
51
|
+
if (confirmCancel) {
|
|
52
|
+
if (input === "y" || input === "Y") {
|
|
53
|
+
const id = confirmCancel.id;
|
|
54
|
+
setConfirmCancel(null);
|
|
55
|
+
cancelLaunchJob(id).then(() => {
|
|
56
|
+
refetch();
|
|
57
|
+
setToast(`cancelled ${id.slice(0, 8)}`);
|
|
58
|
+
}).catch((e) => setToast(`cancel failed: ${e instanceof Error ? e.message : String(e)}`));
|
|
59
|
+
} else if (input === "n" || input === "N" || key.escape) {
|
|
60
|
+
setConfirmCancel(null);
|
|
61
|
+
}
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (key.escape) {
|
|
65
|
+
if (zone !== "none") {
|
|
66
|
+
setZone("none");
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
onClose();
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (key.tab) {
|
|
73
|
+
setZone((z) => z === "list" ? "form" : z === "form" ? "none" : "list");
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (input === "q") return;
|
|
77
|
+
if (zone === "list") {
|
|
78
|
+
if (key.upArrow) {
|
|
79
|
+
setSelectedIndex((i) => Math.max(0, i - 1));
|
|
80
|
+
} else if (key.downArrow) {
|
|
81
|
+
setSelectedIndex((i) => Math.min(jobs.length - 1, i + 1));
|
|
82
|
+
} else if (input === "c") {
|
|
83
|
+
const sel = jobs[selectedIndex];
|
|
84
|
+
if (sel && (sel.status === "running" || sel.status === "queued" || sel.status === "pending")) {
|
|
85
|
+
setConfirmCancel(sel);
|
|
86
|
+
}
|
|
87
|
+
} else if (input === "r") {
|
|
88
|
+
const sel = jobs[selectedIndex];
|
|
89
|
+
const sid = sel?.result?.externalSessionId;
|
|
90
|
+
if (sel && sel.tool === "claude_code" && sid) {
|
|
91
|
+
setResumePrefill({
|
|
92
|
+
tool: "claude_code",
|
|
93
|
+
projectPath: sel.config.projectPath,
|
|
94
|
+
resumeSessionId: sid
|
|
95
|
+
});
|
|
96
|
+
setZone("form");
|
|
97
|
+
} else {
|
|
98
|
+
setToast("resume needs a Claude Code session with a session id");
|
|
99
|
+
}
|
|
100
|
+
} else if (input === "o") {
|
|
101
|
+
const sel = jobs[selectedIndex];
|
|
102
|
+
const sid = sel?.result?.externalSessionId;
|
|
103
|
+
if (sid) {
|
|
104
|
+
const webUrl = process.env.RULEMETRIC_WEB_URL ?? "http://localhost:5174";
|
|
105
|
+
void import("node:child_process").then(({ spawn }) => {
|
|
106
|
+
spawn("open", [`${webUrl}/sessions/${sid}`], { detached: true, stdio: "ignore" }).unref();
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
async function handleSubmit(payload) {
|
|
113
|
+
await createLaunchJob(payload);
|
|
114
|
+
setResumePrefill(null);
|
|
115
|
+
setZone("list");
|
|
116
|
+
setToast("launched");
|
|
117
|
+
refetch();
|
|
118
|
+
}
|
|
119
|
+
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: ORANGE, width, paddingX: 1, children: [
|
|
120
|
+
/* @__PURE__ */ jsxs(Box, { children: [
|
|
121
|
+
/* @__PURE__ */ jsx(Text, { bold: true, color: ORANGE, children: "Launcher" }),
|
|
122
|
+
/* @__PURE__ */ jsx(Text, { dimColor: true, children: " active org: " }),
|
|
123
|
+
/* @__PURE__ */ jsx(Text, { children: activeOrg ?? "(none)" }),
|
|
124
|
+
loading && /* @__PURE__ */ jsx(Text, { dimColor: true, children: " loading\u2026" }),
|
|
125
|
+
error && /* @__PURE__ */ jsxs(Text, { color: "#F55B5B", children: [
|
|
126
|
+
" \u26A0 ",
|
|
127
|
+
error
|
|
128
|
+
] })
|
|
129
|
+
] }),
|
|
130
|
+
/* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(ActiveJobsList, { jobs, selectedIndex, focused: zone === "list" }) }),
|
|
131
|
+
/* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(
|
|
132
|
+
NewLaunchForm,
|
|
133
|
+
{
|
|
134
|
+
launchers,
|
|
135
|
+
defaultProjectPath: resumePrefill?.projectPath ?? defaultProjectPath,
|
|
136
|
+
defaultTool: resumePrefill?.tool,
|
|
137
|
+
defaultResumeSessionId: resumePrefill?.resumeSessionId,
|
|
138
|
+
focused: zone === "form",
|
|
139
|
+
onSubmit: handleSubmit
|
|
140
|
+
}
|
|
141
|
+
) }),
|
|
142
|
+
confirmCancel && /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsxs(Text, { color: "#FFD700", children: [
|
|
143
|
+
"Cancel job ",
|
|
144
|
+
confirmCancel.id.slice(0, 8),
|
|
145
|
+
"? (y/n)"
|
|
146
|
+
] }) }),
|
|
147
|
+
toast && /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
|
|
148
|
+
"\xB7 ",
|
|
149
|
+
toast
|
|
150
|
+
] }) }),
|
|
151
|
+
/* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsxs(Text, { dimColor: true, children: [
|
|
152
|
+
"\u2191\u2193 select tab focus c cancel r resume o open esc ",
|
|
153
|
+
zone === "none" ? "close" : "back"
|
|
154
|
+
] }) })
|
|
155
|
+
] });
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export {
|
|
159
|
+
LauncherOverlay
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=chunk-CROYS75W.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/dashboard/launcher/LauncherOverlay.tsx"],
|
|
4
|
+
"sourcesContent": ["import React, { useEffect, useState } from 'react';\nimport { Box, Text, useInput } from 'ink';\nimport { ORANGE } from '../types.js';\nimport { useLaunchJobs } from './useLaunchJobs.js';\nimport { ActiveJobsList } from './ActiveJobsList.js';\nimport { NewLaunchForm } from './NewLaunchForm.js';\nimport { createLaunchJob, cancelLaunchJob, listLaunchers } from './api.js';\nimport type { AvailableLauncher, LaunchJob } from './types.js';\n\ntype FocusZone = 'none' | 'list' | 'form';\n\nexport function LauncherOverlay({\n onClose,\n activeOrg,\n defaultProjectPath,\n width,\n}: {\n onClose: () => void;\n activeOrg: string | null;\n defaultProjectPath: string;\n width: number;\n}) {\n const { jobs, error, loading, refetch } = useLaunchJobs(20);\n const [launchers, setLaunchers] = useState<AvailableLauncher[]>([]);\n const [zone, setZone] = useState<FocusZone>('list');\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [confirmCancel, setConfirmCancel] = useState<LaunchJob | null>(null);\n const [resumePrefill, setResumePrefill] = useState<{\n tool: string;\n projectPath: string;\n resumeSessionId: string;\n } | null>(null);\n const [toast, setToast] = useState<string | null>(null);\n\n useEffect(() => {\n listLaunchers()\n .then(setLaunchers)\n .catch((e: unknown) => {\n const msg = e instanceof Error ? e.message : String(e);\n setToast(`couldn't load launchers: ${msg}`);\n // Still set a fallback so the form is usable; auth errors will re-surface on submit.\n setLaunchers([\n { tool: 'claude_code', capabilities: { headless: true, interactive: true, remoteSpawn: true } },\n ]);\n });\n }, []);\n\n useEffect(() => {\n if (!toast) return;\n const t = setTimeout(() => setToast(null), 5000);\n return () => clearTimeout(t);\n }, [toast]);\n\n useInput((input, key) => {\n if (confirmCancel) {\n if (input === 'y' || input === 'Y') {\n const id = confirmCancel.id;\n setConfirmCancel(null);\n cancelLaunchJob(id)\n .then(() => {\n refetch();\n setToast(`cancelled ${id.slice(0, 8)}`);\n })\n .catch((e: unknown) => setToast(`cancel failed: ${e instanceof Error ? e.message : String(e)}`));\n } else if (input === 'n' || input === 'N' || key.escape) {\n setConfirmCancel(null);\n }\n return;\n }\n if (key.escape) {\n if (zone !== 'none') {\n setZone('none');\n return;\n }\n onClose();\n return;\n }\n if (key.tab) {\n setZone((z) => (z === 'list' ? 'form' : z === 'form' ? 'none' : 'list'));\n return;\n }\n // q is intentionally swallowed; do not exit while overlay is open\n if (input === 'q') return;\n if (zone === 'list') {\n if (key.upArrow) {\n setSelectedIndex((i) => Math.max(0, i - 1));\n } else if (key.downArrow) {\n setSelectedIndex((i) => Math.min(jobs.length - 1, i + 1));\n } else if (input === 'c') {\n const sel = jobs[selectedIndex];\n if (sel && (sel.status === 'running' || sel.status === 'queued' || sel.status === 'pending')) {\n setConfirmCancel(sel);\n }\n } else if (input === 'r') {\n const sel = jobs[selectedIndex];\n const sid = sel?.result?.externalSessionId;\n if (sel && sel.tool === 'claude_code' && sid) {\n setResumePrefill({\n tool: 'claude_code',\n projectPath: sel.config.projectPath,\n resumeSessionId: sid,\n });\n setZone('form');\n } else {\n setToast('resume needs a Claude Code session with a session id');\n }\n } else if (input === 'o') {\n const sel = jobs[selectedIndex];\n const sid = sel?.result?.externalSessionId;\n if (sid) {\n const webUrl = process.env.RULEMETRIC_WEB_URL ?? 'http://localhost:5174';\n void import('node:child_process').then(({ spawn }) => {\n spawn('open', [`${webUrl}/sessions/${sid}`], { detached: true, stdio: 'ignore' }).unref();\n });\n }\n }\n }\n });\n\n async function handleSubmit(payload: Parameters<typeof createLaunchJob>[0]) {\n await createLaunchJob(payload);\n setResumePrefill(null);\n setZone('list');\n setToast('launched');\n refetch();\n }\n\n return (\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={ORANGE} width={width} paddingX={1}>\n <Box>\n <Text bold color={ORANGE}>Launcher</Text>\n <Text dimColor> active org: </Text>\n <Text>{activeOrg ?? '(none)'}</Text>\n {loading && <Text dimColor> loading\u2026</Text>}\n {error && <Text color=\"#F55B5B\"> \u26A0 {error}</Text>}\n </Box>\n <Box marginTop={1}>\n <ActiveJobsList jobs={jobs} selectedIndex={selectedIndex} focused={zone === 'list'} />\n </Box>\n <Box marginTop={1}>\n <NewLaunchForm\n launchers={launchers}\n defaultProjectPath={resumePrefill?.projectPath ?? defaultProjectPath}\n defaultTool={resumePrefill?.tool}\n defaultResumeSessionId={resumePrefill?.resumeSessionId}\n focused={zone === 'form'}\n onSubmit={handleSubmit}\n />\n </Box>\n {confirmCancel && (\n <Box marginTop={1}>\n <Text color=\"#FFD700\">Cancel job {confirmCancel.id.slice(0, 8)}? (y/n)</Text>\n </Box>\n )}\n {toast && (\n <Box marginTop={1}>\n <Text dimColor>\u00B7 {toast}</Text>\n </Box>\n )}\n <Box marginTop={1}>\n <Text dimColor>\n \u2191\u2193 select tab focus c cancel r resume o open esc {zone === 'none' ? 'close' : 'back'}\n </Text>\n </Box>\n </Box>\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// src/lib/permanent-job-error.ts
|
|
2
|
+
var PermanentJobError = class extends Error {
|
|
3
|
+
__isPermanentJobError = true;
|
|
4
|
+
constructor(message) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.name = "PermanentJobError";
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
function isPermanentJobError(err) {
|
|
10
|
+
return err instanceof Error && err.__isPermanentJobError === true;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export {
|
|
14
|
+
PermanentJobError,
|
|
15
|
+
isPermanentJobError
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=chunk-DGHWRQXL.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/lib/permanent-job-error.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Sentinel error class for handler outcomes that retry is guaranteed not to\n * help with \u2014 e.g. \"no eval cases defined for target\", \"session has too few\n * events to analyze\". The agent loop intercepts these (see agent-loop.ts)\n * and tells Graphile to skip remaining attempts (via `permanently_fail_jobs`)\n * instead of running the same handler N more times against the same data.\n *\n * Use ONLY for genuinely deterministic failures. Transient errors (LLM\n * timeout, network, tool-CLI flakiness) should remain plain Error so Graphile\n * retries them.\n */\nexport class PermanentJobError extends Error {\n readonly __isPermanentJobError = true;\n\n constructor(message: string) {\n super(message);\n this.name = 'PermanentJobError';\n }\n}\n\nexport function isPermanentJobError(err: unknown): err is PermanentJobError {\n return (\n err instanceof Error &&\n (err as { __isPermanentJobError?: boolean }).__isPermanentJobError === true\n );\n}\n"],
|
|
5
|
+
"mappings": ";AAWO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAClC,wBAAwB;AAAA,EAEjC,YAAY,SAAiB;AAC3B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;AAEO,SAAS,oBAAoB,KAAwC;AAC1E,SACE,eAAe,SACd,IAA4C,0BAA0B;AAE3E;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DIM
|
|
3
|
+
} from "./chunk-QJQS6TUN.js";
|
|
4
|
+
|
|
5
|
+
// src/dashboard/panels/shared.tsx
|
|
6
|
+
import { Box, Text } from "ink";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
function Panel({ title, color, children, width }) {
|
|
9
|
+
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: color, paddingX: 1, width, overflowX: "hidden", children: [
|
|
10
|
+
/* @__PURE__ */ jsx(Text, { bold: true, color, children: title }),
|
|
11
|
+
children
|
|
12
|
+
] });
|
|
13
|
+
}
|
|
14
|
+
function gradientColor(pct) {
|
|
15
|
+
const r = pct <= 0.5 ? Math.round(91 + pct * 2 * (255 - 91)) : 255;
|
|
16
|
+
const g = pct <= 0.5 ? Math.round(158 + pct * 2 * (200 - 158)) : Math.round(200 - (pct - 0.5) * 2 * (200 - 91));
|
|
17
|
+
const b = pct <= 0.5 ? Math.round(245 - pct * 2 * (245 - 91)) : 91;
|
|
18
|
+
return `#${r.toString(16).padStart(2, "0")}${g.toString(16).padStart(2, "0")}${b.toString(16).padStart(2, "0")}`;
|
|
19
|
+
}
|
|
20
|
+
function HBar({ value, max, width }) {
|
|
21
|
+
if (max === 0) return /* @__PURE__ */ jsx(Text, { color: DIM, children: "\u2591".repeat(width) });
|
|
22
|
+
const filled = Math.round(value / max * width);
|
|
23
|
+
const fillChars = [];
|
|
24
|
+
for (let i = 0; i < Math.min(filled, width); i++) {
|
|
25
|
+
fillChars.push(/* @__PURE__ */ jsx(Text, { color: gradientColor(i / width), children: "\u2588" }, i));
|
|
26
|
+
}
|
|
27
|
+
return /* @__PURE__ */ jsxs(Text, { children: [
|
|
28
|
+
fillChars,
|
|
29
|
+
/* @__PURE__ */ jsx(Text, { color: "#333333", children: "\u2591".repeat(Math.max(width - filled, 0)) })
|
|
30
|
+
] });
|
|
31
|
+
}
|
|
32
|
+
function fit(s, n) {
|
|
33
|
+
return s.length > n ? s.slice(0, n) : s.padEnd(n);
|
|
34
|
+
}
|
|
35
|
+
function formatTokens(n) {
|
|
36
|
+
if (n >= 1e9) return `${(n / 1e9).toFixed(1)}B`;
|
|
37
|
+
if (n >= 1e6) return `${(n / 1e6).toFixed(1)}M`;
|
|
38
|
+
if (n >= 1e3) return `${(n / 1e3).toFixed(0)}K`;
|
|
39
|
+
return String(n);
|
|
40
|
+
}
|
|
41
|
+
function formatCost(usd) {
|
|
42
|
+
if (usd >= 1e3) return `$${(usd / 1e3).toFixed(1)}K`;
|
|
43
|
+
if (usd >= 1) return `$${usd.toFixed(2)}`;
|
|
44
|
+
if (usd >= 0.01) return `$${usd.toFixed(2)}`;
|
|
45
|
+
return `$${usd.toFixed(3)}`;
|
|
46
|
+
}
|
|
47
|
+
var FRIENDLY_LABELS = {
|
|
48
|
+
fully_achieved: "Fully Achieved",
|
|
49
|
+
mostly_achieved: "Mostly Achieved",
|
|
50
|
+
partially_achieved: "Partially Achieved",
|
|
51
|
+
not_achieved: "Not Achieved",
|
|
52
|
+
unclear_from_transcript: "Unclear",
|
|
53
|
+
misunderstood_request: "Misunderstood Request",
|
|
54
|
+
wrong_approach: "Wrong Approach",
|
|
55
|
+
buggy_code: "Buggy Code",
|
|
56
|
+
user_rejected_action: "User Rejected",
|
|
57
|
+
excessive_changes: "Excessive Changes",
|
|
58
|
+
wrong_file_or_location: "Wrong File/Location",
|
|
59
|
+
slow_or_verbose: "Slow/Verbose",
|
|
60
|
+
tool_failed: "Tool Failed"
|
|
61
|
+
};
|
|
62
|
+
function friendlyLabel(key) {
|
|
63
|
+
return FRIENDLY_LABELS[key] || key.replace(/_/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export {
|
|
67
|
+
Panel,
|
|
68
|
+
HBar,
|
|
69
|
+
fit,
|
|
70
|
+
formatTokens,
|
|
71
|
+
formatCost,
|
|
72
|
+
friendlyLabel
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=chunk-DQ3KELXD.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/dashboard/panels/shared.tsx"],
|
|
4
|
+
"sourcesContent": ["import React from 'react';\nimport { Box, Text } from 'ink';\nimport { DIM } from '../types.js';\n\nexport function Panel({ title, color, children, width }: {\n title: string; color: string; children: React.ReactNode; width: number;\n}) {\n return (\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor={color} paddingX={1} width={width} overflowX=\"hidden\">\n <Text bold color={color}>{title}</Text>\n {children}\n </Box>\n );\n}\n\nfunction gradientColor(pct: number): string {\n const r = pct <= 0.5 ? Math.round(91 + pct * 2 * (255 - 91)) : 255;\n const g = pct <= 0.5 ? Math.round(158 + pct * 2 * (200 - 158)) : Math.round(200 - (pct - 0.5) * 2 * (200 - 91));\n const b = pct <= 0.5 ? Math.round(245 - pct * 2 * (245 - 91)) : 91;\n return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;\n}\n\nexport function HBar({ value, max, width }: { value: number; max: number; width: number }) {\n if (max === 0) return <Text color={DIM}>{'\u2591'.repeat(width)}</Text>;\n const filled = Math.round((value / max) * width);\n const fillChars: React.ReactNode[] = [];\n for (let i = 0; i < Math.min(filled, width); i++) {\n fillChars.push(<Text key={i} color={gradientColor(i / width)}>{'\u2588'}</Text>);\n }\n return (\n <Text>\n {fillChars}\n <Text color=\"#333333\">{'\u2591'.repeat(Math.max(width - filled, 0))}</Text>\n </Text>\n );\n}\n\nexport function fit(s: string, n: number): string {\n return s.length > n ? s.slice(0, n) : s.padEnd(n);\n}\n\nexport function formatTokens(n: number): string {\n if (n >= 1_000_000_000) return `${(n / 1_000_000_000).toFixed(1)}B`;\n if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`;\n if (n >= 1_000) return `${(n / 1_000).toFixed(0)}K`;\n return String(n);\n}\n\nexport function formatCost(usd: number): string {\n if (usd >= 1000) return `$${(usd / 1000).toFixed(1)}K`;\n if (usd >= 1) return `$${usd.toFixed(2)}`;\n if (usd >= 0.01) return `$${usd.toFixed(2)}`;\n return `$${usd.toFixed(3)}`;\n}\n\nconst FRIENDLY_LABELS: Record<string, string> = {\n fully_achieved: 'Fully Achieved',\n mostly_achieved: 'Mostly Achieved',\n partially_achieved: 'Partially Achieved',\n not_achieved: 'Not Achieved',\n unclear_from_transcript: 'Unclear',\n misunderstood_request: 'Misunderstood Request',\n wrong_approach: 'Wrong Approach',\n buggy_code: 'Buggy Code',\n user_rejected_action: 'User Rejected',\n excessive_changes: 'Excessive Changes',\n wrong_file_or_location: 'Wrong File/Location',\n slow_or_verbose: 'Slow/Verbose',\n tool_failed: 'Tool Failed',\n};\n\nexport function friendlyLabel(key: string): string {\n return FRIENDLY_LABELS[key] || key.replace(/_/g, ' ').replace(/\\b\\w/g, c => c.toUpperCase());\n}\n"],
|
|
5
|
+
"mappings": ";;;;;AACA,SAAS,KAAK,YAAY;AAOtB,SACE,KADF;AAJG,SAAS,MAAM,EAAE,OAAO,OAAO,UAAU,MAAM,GAEnD;AACD,SACE,qBAAC,OAAI,eAAc,UAAS,aAAY,SAAQ,aAAa,OAAO,UAAU,GAAG,OAAc,WAAU,UACvG;AAAA,wBAAC,QAAK,MAAI,MAAC,OAAe,iBAAM;AAAA,IAC/B;AAAA,KACH;AAEJ;AAEA,SAAS,cAAc,KAAqB;AAC1C,QAAM,IAAI,OAAO,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,GAAG,IAAI;AAC/D,QAAM,IAAI,OAAO,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,OAAO,MAAM,OAAO,KAAK,MAAM,GAAG;AAC9G,QAAM,IAAI,OAAO,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,MAAM,GAAG,IAAI;AAChE,SAAO,IAAI,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAChH;AAEO,SAAS,KAAK,EAAE,OAAO,KAAK,MAAM,GAAkD;AACzF,MAAI,QAAQ,EAAG,QAAO,oBAAC,QAAK,OAAO,KAAM,mBAAI,OAAO,KAAK,GAAE;AAC3D,QAAM,SAAS,KAAK,MAAO,QAAQ,MAAO,KAAK;AAC/C,QAAM,YAA+B,CAAC;AACtC,WAAS,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,KAAK,GAAG,KAAK;AAChD,cAAU,KAAK,oBAAC,QAAa,OAAO,cAAc,IAAI,KAAK,GAAI,sBAArC,CAAyC,CAAO;AAAA,EAC5E;AACA,SACE,qBAAC,QACE;AAAA;AAAA,IACD,oBAAC,QAAK,OAAM,WAAW,mBAAI,OAAO,KAAK,IAAI,QAAQ,QAAQ,CAAC,CAAC,GAAE;AAAA,KACjE;AAEJ;AAEO,SAAS,IAAI,GAAW,GAAmB;AAChD,SAAO,EAAE,SAAS,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;AAClD;AAEO,SAAS,aAAa,GAAmB;AAC9C,MAAI,KAAK,IAAe,QAAO,IAAI,IAAI,KAAe,QAAQ,CAAC,CAAC;AAChE,MAAI,KAAK,IAAW,QAAO,IAAI,IAAI,KAAW,QAAQ,CAAC,CAAC;AACxD,MAAI,KAAK,IAAO,QAAO,IAAI,IAAI,KAAO,QAAQ,CAAC,CAAC;AAChD,SAAO,OAAO,CAAC;AACjB;AAEO,SAAS,WAAW,KAAqB;AAC9C,MAAI,OAAO,IAAM,QAAO,KAAK,MAAM,KAAM,QAAQ,CAAC,CAAC;AACnD,MAAI,OAAO,EAAG,QAAO,IAAI,IAAI,QAAQ,CAAC,CAAC;AACvC,MAAI,OAAO,KAAM,QAAO,IAAI,IAAI,QAAQ,CAAC,CAAC;AAC1C,SAAO,IAAI,IAAI,QAAQ,CAAC,CAAC;AAC3B;AAEA,IAAM,kBAA0C;AAAA,EAC9C,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,yBAAyB;AAAA,EACzB,uBAAuB;AAAA,EACvB,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,iBAAiB;AAAA,EACjB,aAAa;AACf;AAEO,SAAS,cAAc,KAAqB;AACjD,SAAO,gBAAgB,GAAG,KAAK,IAAI,QAAQ,MAAM,GAAG,EAAE,QAAQ,SAAS,OAAK,EAAE,YAAY,CAAC;AAC7F;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import {
|
|
2
|
+
toolLabel
|
|
3
|
+
} from "./chunk-RH7NHVSK.js";
|
|
4
|
+
import {
|
|
5
|
+
DIM,
|
|
6
|
+
ORANGE,
|
|
7
|
+
RED
|
|
8
|
+
} from "./chunk-QJQS6TUN.js";
|
|
9
|
+
|
|
10
|
+
// src/dashboard/launcher/NewLaunchForm.tsx
|
|
11
|
+
import { useState } from "react";
|
|
12
|
+
import { Box, Text, useInput } from "ink";
|
|
13
|
+
import TextInput from "ink-text-input";
|
|
14
|
+
import SelectInput from "ink-select-input";
|
|
15
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
16
|
+
var FIELD_ORDER = ["tool", "project", "mode", "prompt", "submit"];
|
|
17
|
+
function NewLaunchForm({
|
|
18
|
+
launchers,
|
|
19
|
+
defaultProjectPath,
|
|
20
|
+
defaultTool,
|
|
21
|
+
defaultPrompt,
|
|
22
|
+
defaultResumeSessionId,
|
|
23
|
+
focused,
|
|
24
|
+
onSubmit
|
|
25
|
+
}) {
|
|
26
|
+
const [tool, setTool] = useState(defaultTool ?? launchers[0]?.tool ?? "claude_code");
|
|
27
|
+
const [projectPath, setProjectPath] = useState(defaultProjectPath);
|
|
28
|
+
const [mode, setMode] = useState("interactive");
|
|
29
|
+
const [prompt, setPrompt] = useState(defaultPrompt ?? "");
|
|
30
|
+
const [field, setField] = useState("tool");
|
|
31
|
+
const [submitting, setSubmitting] = useState(false);
|
|
32
|
+
const [submitError, setSubmitError] = useState(null);
|
|
33
|
+
const canSubmit = prompt.trim().length > 0 && projectPath.trim().length > 0 && !submitting;
|
|
34
|
+
useInput((input, key) => {
|
|
35
|
+
if (!focused) return;
|
|
36
|
+
if (key.upArrow) {
|
|
37
|
+
const idx = FIELD_ORDER.indexOf(field);
|
|
38
|
+
if (idx > 0) setField(FIELD_ORDER[idx - 1]);
|
|
39
|
+
} else if (key.downArrow) {
|
|
40
|
+
const idx = FIELD_ORDER.indexOf(field);
|
|
41
|
+
if (idx < FIELD_ORDER.length - 1) setField(FIELD_ORDER[idx + 1]);
|
|
42
|
+
} else if (key.return && field === "submit" && canSubmit) {
|
|
43
|
+
void doSubmit();
|
|
44
|
+
} else if (field === "mode" && (input === " " || key.return)) {
|
|
45
|
+
setMode((m) => m === "interactive" ? "headless" : "interactive");
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
async function doSubmit() {
|
|
49
|
+
setSubmitting(true);
|
|
50
|
+
setSubmitError(null);
|
|
51
|
+
try {
|
|
52
|
+
await onSubmit({
|
|
53
|
+
tool,
|
|
54
|
+
config: {
|
|
55
|
+
projectPath,
|
|
56
|
+
prompt,
|
|
57
|
+
mode,
|
|
58
|
+
...defaultResumeSessionId ? { resumeSessionId: defaultResumeSessionId } : {}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
setPrompt("");
|
|
62
|
+
setSubmitError(null);
|
|
63
|
+
} catch (e) {
|
|
64
|
+
setSubmitError(e instanceof Error ? e.message : String(e));
|
|
65
|
+
} finally {
|
|
66
|
+
setSubmitting(false);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", paddingX: 1, children: [
|
|
70
|
+
/* @__PURE__ */ jsx(Text, { bold: true, color: ORANGE, children: "\u25BC New launch" }),
|
|
71
|
+
/* @__PURE__ */ jsxs(Box, { children: [
|
|
72
|
+
/* @__PURE__ */ jsx(Text, { color: field === "tool" && focused ? ORANGE : DIM, children: " Tool: " }),
|
|
73
|
+
field === "tool" && focused ? /* @__PURE__ */ jsx(
|
|
74
|
+
SelectInput,
|
|
75
|
+
{
|
|
76
|
+
items: launchers.map((l) => ({ label: toolLabel(l.tool), value: l.tool })),
|
|
77
|
+
initialIndex: Math.max(0, launchers.findIndex((l) => l.tool === tool)),
|
|
78
|
+
onSelect: (item) => setTool(item.value)
|
|
79
|
+
}
|
|
80
|
+
) : /* @__PURE__ */ jsx(Text, { children: toolLabel(tool) })
|
|
81
|
+
] }),
|
|
82
|
+
/* @__PURE__ */ jsxs(Box, { children: [
|
|
83
|
+
/* @__PURE__ */ jsx(Text, { color: field === "project" && focused ? ORANGE : DIM, children: " Project: " }),
|
|
84
|
+
field === "project" && focused ? /* @__PURE__ */ jsx(TextInput, { value: projectPath, onChange: setProjectPath }) : /* @__PURE__ */ jsx(Text, { children: projectPath })
|
|
85
|
+
] }),
|
|
86
|
+
/* @__PURE__ */ jsxs(Box, { children: [
|
|
87
|
+
/* @__PURE__ */ jsx(Text, { color: field === "mode" && focused ? ORANGE : DIM, children: " Mode: " }),
|
|
88
|
+
/* @__PURE__ */ jsx(Text, { children: mode === "interactive" ? "(\u2022) interactive ( ) headless" : "( ) interactive (\u2022) headless" })
|
|
89
|
+
] }),
|
|
90
|
+
/* @__PURE__ */ jsxs(Box, { children: [
|
|
91
|
+
/* @__PURE__ */ jsx(Text, { color: field === "prompt" && focused ? ORANGE : DIM, children: " Prompt: " }),
|
|
92
|
+
field === "prompt" && focused ? /* @__PURE__ */ jsx(TextInput, { value: prompt, onChange: setPrompt }) : /* @__PURE__ */ jsx(Text, { children: prompt || "(empty)" })
|
|
93
|
+
] }),
|
|
94
|
+
/* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsxs(Text, { color: field === "submit" && focused ? ORANGE : DIM, children: [
|
|
95
|
+
canSubmit ? " [ Submit ]" : " [ Submit (disabled) ]",
|
|
96
|
+
submitting ? " \u2026submitting" : ""
|
|
97
|
+
] }) }),
|
|
98
|
+
submitError && /* @__PURE__ */ jsxs(Text, { color: RED, children: [
|
|
99
|
+
" \u2717 ",
|
|
100
|
+
submitError
|
|
101
|
+
] })
|
|
102
|
+
] });
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export {
|
|
106
|
+
NewLaunchForm
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=chunk-DTFXCHHI.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/dashboard/launcher/NewLaunchForm.tsx"],
|
|
4
|
+
"sourcesContent": ["import React, { useState } from 'react';\nimport { Box, Text, useInput } from 'ink';\nimport TextInput from 'ink-text-input';\nimport SelectInput from 'ink-select-input';\nimport { ORANGE, DIM, RED } from '../types.js';\nimport { toolLabel } from './tool-labels.js';\nimport type { AvailableLauncher, CreateLaunchPayload } from './types.js';\n\ntype FormField = 'tool' | 'project' | 'mode' | 'prompt' | 'submit';\nconst FIELD_ORDER: FormField[] = ['tool', 'project', 'mode', 'prompt', 'submit'];\n\nexport function NewLaunchForm({\n launchers,\n defaultProjectPath,\n defaultTool,\n defaultPrompt,\n defaultResumeSessionId,\n focused,\n onSubmit,\n}: {\n launchers: AvailableLauncher[];\n defaultProjectPath: string;\n defaultTool?: string;\n defaultPrompt?: string;\n defaultResumeSessionId?: string;\n focused: boolean;\n onSubmit: (payload: CreateLaunchPayload) => Promise<void>;\n}) {\n const [tool, setTool] = useState(defaultTool ?? launchers[0]?.tool ?? 'claude_code');\n const [projectPath, setProjectPath] = useState(defaultProjectPath);\n const [mode, setMode] = useState<'interactive' | 'headless'>('interactive');\n const [prompt, setPrompt] = useState(defaultPrompt ?? '');\n const [field, setField] = useState<FormField>('tool');\n const [submitting, setSubmitting] = useState(false);\n const [submitError, setSubmitError] = useState<string | null>(null);\n\n const canSubmit = prompt.trim().length > 0 && projectPath.trim().length > 0 && !submitting;\n\n useInput((input, key) => {\n if (!focused) return;\n if (key.upArrow) {\n const idx = FIELD_ORDER.indexOf(field);\n if (idx > 0) setField(FIELD_ORDER[idx - 1]!);\n } else if (key.downArrow) {\n const idx = FIELD_ORDER.indexOf(field);\n if (idx < FIELD_ORDER.length - 1) setField(FIELD_ORDER[idx + 1]!);\n } else if (key.return && field === 'submit' && canSubmit) {\n void doSubmit();\n } else if (field === 'mode' && (input === ' ' || key.return)) {\n setMode((m) => (m === 'interactive' ? 'headless' : 'interactive'));\n }\n });\n\n async function doSubmit() {\n setSubmitting(true);\n setSubmitError(null);\n try {\n await onSubmit({\n tool,\n config: {\n projectPath,\n prompt,\n mode,\n ...(defaultResumeSessionId ? { resumeSessionId: defaultResumeSessionId } : {}),\n },\n });\n setPrompt('');\n setSubmitError(null);\n } catch (e) {\n setSubmitError(e instanceof Error ? e.message : String(e));\n } finally {\n setSubmitting(false);\n }\n }\n\n return (\n <Box flexDirection=\"column\" paddingX={1}>\n <Text bold color={ORANGE}>\u25BC New launch</Text>\n <Box>\n <Text color={field === 'tool' && focused ? ORANGE : DIM}> Tool: </Text>\n {field === 'tool' && focused ? (\n <SelectInput\n items={launchers.map((l) => ({ label: toolLabel(l.tool), value: l.tool }))}\n initialIndex={Math.max(0, launchers.findIndex((l) => l.tool === tool))}\n onSelect={(item) => setTool(item.value)}\n />\n ) : (\n <Text>{toolLabel(tool)}</Text>\n )}\n </Box>\n <Box>\n <Text color={field === 'project' && focused ? ORANGE : DIM}> Project: </Text>\n {field === 'project' && focused ? (\n <TextInput value={projectPath} onChange={setProjectPath} />\n ) : (\n <Text>{projectPath}</Text>\n )}\n </Box>\n <Box>\n <Text color={field === 'mode' && focused ? ORANGE : DIM}> Mode: </Text>\n <Text>{mode === 'interactive' ? '(\u2022) interactive ( ) headless' : '( ) interactive (\u2022) headless'}</Text>\n </Box>\n <Box>\n <Text color={field === 'prompt' && focused ? ORANGE : DIM}> Prompt: </Text>\n {field === 'prompt' && focused ? (\n <TextInput value={prompt} onChange={setPrompt} />\n ) : (\n <Text>{prompt || '(empty)'}</Text>\n )}\n </Box>\n <Box marginTop={1}>\n <Text color={field === 'submit' && focused ? ORANGE : DIM}>\n {canSubmit ? ' [ Submit ]' : ' [ Submit (disabled) ]'}\n {submitting ? ' \u2026submitting' : ''}\n </Text>\n </Box>\n {submitError && <Text color={RED}> \u2717 {submitError}</Text>}\n </Box>\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import {
|
|
2
|
+
processChangelog
|
|
3
|
+
} from "./chunk-R5MFHGHR.js";
|
|
4
|
+
import {
|
|
5
|
+
cronRefreshSkills
|
|
6
|
+
} from "./chunk-RQ2TMLKG.js";
|
|
7
|
+
import {
|
|
8
|
+
cronSuggestInstructions
|
|
9
|
+
} from "./chunk-YBNW7ARH.js";
|
|
10
|
+
|
|
11
|
+
// src/lib/manual-tasks.ts
|
|
12
|
+
var MANUAL_TASKS = [
|
|
13
|
+
{
|
|
14
|
+
name: "cron_check_changelog",
|
|
15
|
+
description: "Parse CHANGELOG.md and create draft announcement rows for new versions.",
|
|
16
|
+
scheduledBy: "manual only \u2014 announcement drafts are reminder-driven, never scheduled",
|
|
17
|
+
handler: async (_payload, helpers) => {
|
|
18
|
+
const result = await processChangelog({
|
|
19
|
+
logger: {
|
|
20
|
+
info: (m) => helpers.logger.info(m),
|
|
21
|
+
warn: (m) => helpers.logger.warn(m)
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
helpers.logger.info(
|
|
25
|
+
`[cron_check_changelog] result: created=${result.createdCount} skipped=${result.skippedCount}`
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "cron_suggest_instructions",
|
|
31
|
+
description: "Precompute per-project instruction suggestions for the SessionStart hook.",
|
|
32
|
+
scheduledBy: "Supabase pg_cron daily 04:30 UTC \u2192 agent_jobs \u2192 agent loop (migration 00083)",
|
|
33
|
+
handler: (payload, helpers) => cronSuggestInstructions(payload, helpers)
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: "cron_refresh_skills",
|
|
37
|
+
description: "Refresh the skills registry from GitHub sources (disk JSON + public instructions sync). Requires GITHUB_TOKEN.",
|
|
38
|
+
scheduledBy: "Supabase pg_cron daily 03:30 UTC \u2192 agent_jobs \u2192 agent loop (migration 00086)",
|
|
39
|
+
handler: (payload, helpers) => cronRefreshSkills(payload, helpers)
|
|
40
|
+
}
|
|
41
|
+
];
|
|
42
|
+
async function runManualTask(name) {
|
|
43
|
+
const def = MANUAL_TASKS.find((t) => t.name === name);
|
|
44
|
+
if (!def) {
|
|
45
|
+
return { name, durationMs: 0, ok: false, error: `Unknown task: ${name}`, logs: [] };
|
|
46
|
+
}
|
|
47
|
+
const logs = [];
|
|
48
|
+
const helpers = {
|
|
49
|
+
logger: {
|
|
50
|
+
info: (message) => logs.push({ level: "info", message }),
|
|
51
|
+
warn: (message) => logs.push({ level: "warn", message }),
|
|
52
|
+
error: (message) => logs.push({ level: "error", message })
|
|
53
|
+
},
|
|
54
|
+
job: { attempts: 0 }
|
|
55
|
+
};
|
|
56
|
+
const start = Date.now();
|
|
57
|
+
try {
|
|
58
|
+
await def.handler({}, helpers);
|
|
59
|
+
return { name, durationMs: Date.now() - start, ok: true, logs };
|
|
60
|
+
} catch (err) {
|
|
61
|
+
return {
|
|
62
|
+
name,
|
|
63
|
+
durationMs: Date.now() - start,
|
|
64
|
+
ok: false,
|
|
65
|
+
error: err instanceof Error ? err.message : String(err),
|
|
66
|
+
logs
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export {
|
|
72
|
+
MANUAL_TASKS,
|
|
73
|
+
runManualTask
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=chunk-DU73QUS3.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/lib/manual-tasks.ts"],
|
|
4
|
+
"sourcesContent": ["// Manually-runnable maintenance tasks for `rulemetric crons run` / `crons list`.\n// Replaces the graphile cron-registry/cron-runner pair (deleted in Phase 4c\n// Stage 4): scheduled crons now live in Supabase pg_cron (see migrations\n// 00064/00065/00082/00083), so the only thing the CLI still needs is an\n// on-demand entry point for tasks an operator triggers by hand.\n\nimport type { JobHelpers } from './job-helpers.js';\nimport { processChangelog } from './handlers/process-changelog.js';\nimport { cronSuggestInstructions } from './handlers/cron-suggest-instructions.js';\nimport { cronRefreshSkills } from './handlers/cron-refresh-skills.js';\n\nexport interface ManualTaskDefinition {\n /** Task name, kept identical to the old cron names so muscle memory works. */\n name: string;\n /** One-line human description shown by `rulemetric crons list`. */\n description: string;\n /** Where the scheduled firing lives now (shown by `crons list`). */\n scheduledBy: string;\n handler: (payload: unknown, helpers: JobHelpers) => Promise<unknown>;\n}\n\nexport const MANUAL_TASKS: readonly ManualTaskDefinition[] = [\n {\n name: 'cron_check_changelog',\n description: 'Parse CHANGELOG.md and create draft announcement rows for new versions.',\n scheduledBy: 'manual only \u2014 announcement drafts are reminder-driven, never scheduled',\n handler: async (_payload, helpers) => {\n const result = await processChangelog({\n logger: {\n info: (m: string) => helpers.logger.info(m),\n warn: (m: string) => helpers.logger.warn(m),\n },\n });\n helpers.logger.info(\n `[cron_check_changelog] result: created=${result.createdCount} skipped=${result.skippedCount}`,\n );\n },\n },\n {\n name: 'cron_suggest_instructions',\n description: 'Precompute per-project instruction suggestions for the SessionStart hook.',\n scheduledBy: 'Supabase pg_cron daily 04:30 UTC \u2192 agent_jobs \u2192 agent loop (migration 00083)',\n handler: (payload, helpers) => cronSuggestInstructions(payload, helpers),\n },\n {\n name: 'cron_refresh_skills',\n description: 'Refresh the skills registry from GitHub sources (disk JSON + public instructions sync). Requires GITHUB_TOKEN.',\n scheduledBy: 'Supabase pg_cron daily 03:30 UTC \u2192 agent_jobs \u2192 agent loop (migration 00086)',\n handler: (payload, helpers) => cronRefreshSkills(payload, helpers),\n },\n];\n\nexport interface ManualTaskResult {\n name: string;\n durationMs: number;\n ok: boolean;\n error?: string;\n logs: Array<{ level: string; message: string }>;\n}\n\n/**\n * Synchronously invoke a manual task by name. Returns a structured result\n * with captured log lines so callers (CLI, tests) can render or assert.\n */\nexport async function runManualTask(name: string): Promise<ManualTaskResult> {\n const def = MANUAL_TASKS.find((t) => t.name === name);\n if (!def) {\n return { name, durationMs: 0, ok: false, error: `Unknown task: ${name}`, logs: [] };\n }\n\n const logs: Array<{ level: string; message: string }> = [];\n const helpers: JobHelpers = {\n logger: {\n info: (message) => logs.push({ level: 'info', message }),\n warn: (message) => logs.push({ level: 'warn', message }),\n error: (message) => logs.push({ level: 'error', message }),\n },\n job: { attempts: 0 },\n };\n\n const start = Date.now();\n try {\n await def.handler({}, helpers);\n return { name, durationMs: Date.now() - start, ok: true, logs };\n } catch (err) {\n return {\n name,\n durationMs: Date.now() - start,\n ok: false,\n error: err instanceof Error ? err.message : String(err),\n logs,\n };\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;AAqBO,IAAM,eAAgD;AAAA,EACzD;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS,OAAO,UAAU,YAAY;AAClC,YAAM,SAAS,MAAM,iBAAiB;AAAA,QAClC,QAAQ;AAAA,UACJ,MAAM,CAAC,MAAc,QAAQ,OAAO,KAAK,CAAC;AAAA,UAC1C,MAAM,CAAC,MAAc,QAAQ,OAAO,KAAK,CAAC;AAAA,QAC9C;AAAA,MACJ,CAAC;AACD,cAAQ,OAAO;AAAA,QACX,0CAA0C,OAAO,YAAY,YAAY,OAAO,YAAY;AAAA,MAChG;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS,CAAC,SAAS,YAAY,wBAAwB,SAAS,OAAO;AAAA,EAC3E;AAAA,EACA;AAAA,IACI,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS,CAAC,SAAS,YAAY,kBAAkB,SAAS,OAAO;AAAA,EACrE;AACJ;AAcA,eAAsB,cAAc,MAAyC;AACzE,QAAM,MAAM,aAAa,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AACpD,MAAI,CAAC,KAAK;AACN,WAAO,EAAE,MAAM,YAAY,GAAG,IAAI,OAAO,OAAO,iBAAiB,IAAI,IAAI,MAAM,CAAC,EAAE;AAAA,EACtF;AAEA,QAAM,OAAkD,CAAC;AACzD,QAAM,UAAsB;AAAA,IACxB,QAAQ;AAAA,MACJ,MAAM,CAAC,YAAY,KAAK,KAAK,EAAE,OAAO,QAAQ,QAAQ,CAAC;AAAA,MACvD,MAAM,CAAC,YAAY,KAAK,KAAK,EAAE,OAAO,QAAQ,QAAQ,CAAC;AAAA,MACvD,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE,OAAO,SAAS,QAAQ,CAAC;AAAA,IAC7D;AAAA,IACA,KAAK,EAAE,UAAU,EAAE;AAAA,EACvB;AAEA,QAAM,QAAQ,KAAK,IAAI;AACvB,MAAI;AACA,UAAM,IAAI,QAAQ,CAAC,GAAG,OAAO;AAC7B,WAAO,EAAE,MAAM,YAAY,KAAK,IAAI,IAAI,OAAO,IAAI,MAAM,KAAK;AAAA,EAClE,SAAS,KAAK;AACV,WAAO;AAAA,MACH;AAAA,MACA,YAAY,KAAK,IAAI,IAAI;AAAA,MACzB,IAAI;AAAA,MACJ,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MACtD;AAAA,IACJ;AAAA,EACJ;AACJ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|