@rulemetric/cli 0.7.2 → 0.7.4
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 +1 -14
- package/dist/chunk-2TC6WCUT.js +34 -0
- package/dist/chunk-2UC3ULIG.js +1 -0
- package/dist/chunk-3AV3GTMP.js +1 -0
- package/dist/chunk-4Z5ECCJE.js +1 -0
- package/dist/chunk-5RBLIVBF.js +1 -0
- package/dist/chunk-67QCYUJU.js +1 -0
- package/dist/chunk-6QKI756T.js +2 -0
- package/dist/chunk-6V4WM73L.js +1 -0
- package/dist/chunk-6XEC6474.js +1 -0
- package/dist/chunk-72XLQE3X.js +2 -0
- package/dist/chunk-7DFNBRLY.js +61 -0
- package/dist/chunk-7XQ4VPLC.js +2 -0
- package/dist/chunk-AHRHCERJ.js +1 -0
- package/dist/chunk-ARNZQBMX.js +1 -0
- package/dist/chunk-CADKBP3D.js +58 -0
- package/dist/chunk-CDI5CCHU.js +1 -0
- package/dist/chunk-CNQ5DTNC.js +1 -0
- package/dist/chunk-CRAKDQ4H.js +1 -0
- package/dist/chunk-DNF4HDI6.js +14 -0
- package/dist/chunk-DSO2U4Y6.js +56 -0
- package/dist/chunk-DT4GKEP5.js +5 -0
- package/dist/chunk-DVN7GFJG.js +1 -0
- package/dist/chunk-E4SFUPYR.js +15 -0
- package/dist/chunk-EUHNCVJQ.js +33 -0
- package/dist/chunk-F2VP4B4J.js +1 -0
- package/dist/chunk-FEHM5OKW.js +1 -0
- package/dist/chunk-FHVBTDBM.js +69 -0
- package/dist/chunk-GBMF3TP6.js +1 -0
- package/dist/chunk-GY5IJ4RS.js +1 -0
- package/dist/chunk-HOHD5HY2.js +5 -0
- package/dist/chunk-HP2BUPGS.js +24 -0
- package/dist/{chunk-OQBBVTDG.js → chunk-I2DZGJRR.js} +6 -71
- package/dist/chunk-I4YJ7NTX.js +1 -0
- package/dist/chunk-IY5NXR3N.js +1 -0
- package/dist/chunk-IZTIYR5Q.js +2 -0
- package/dist/chunk-KKDHD4XA.js +2 -0
- package/dist/chunk-LQRYQE6Q.js +4 -0
- package/dist/chunk-M6AJDVCL.js +5 -0
- package/dist/chunk-MGHFDHHM.js +1 -0
- package/dist/chunk-ML36XQW7.js +1 -0
- package/dist/chunk-MODXEGCU.js +1 -0
- package/dist/chunk-MVM6OGAF.js +4 -0
- package/dist/chunk-N7ODX6PO.js +1 -0
- package/dist/chunk-NBTC5FNV.js +1 -0
- package/dist/chunk-NJ5UED3H.js +1 -0
- package/dist/chunk-NVKX36YN.js +3 -0
- package/dist/chunk-NVOTOQBA.js +1 -0
- package/dist/chunk-O7ZMHCMG.js +31 -0
- package/dist/chunk-OMXUK4M6.js +1 -0
- package/dist/chunk-PZS2KOU7.js +1 -0
- package/dist/chunk-RSKQRVPJ.js +1 -0
- package/dist/chunk-RTEATXTP.js +1 -0
- package/dist/chunk-RTWRHIKY.js +7 -0
- package/dist/chunk-RVO4HV3M.js +1 -0
- package/dist/chunk-SBILN45P.js +1 -0
- package/dist/chunk-SZ62CP55.js +1 -0
- package/dist/chunk-T3W5N3BP.js +2 -0
- package/dist/chunk-TDD7IOV2.js +1 -0
- package/dist/chunk-TIQ7DQ3M.js +1 -0
- package/dist/chunk-TU2AR6XO.js +1 -0
- package/dist/chunk-UF6US7VU.js +1 -0
- package/dist/chunk-V5QFOF4F.js +9 -0
- package/dist/chunk-V5U3E4BZ.js +1 -0
- package/dist/chunk-VAFAH6QL.js +1 -0
- package/dist/chunk-VMWY7KHH.js +1 -0
- package/dist/chunk-VUGRXM7R.js +1 -0
- package/dist/{chunk-XZXS2W24.js → chunk-VWEXKDWG.js} +10 -56
- package/dist/chunk-W2MV25SB.js +1 -0
- package/dist/chunk-WJ3H73G6.js +1 -0
- package/dist/chunk-WJUQBMTF.js +9 -0
- package/dist/chunk-WLVQJH4E.js +1 -0
- package/dist/chunk-WPJ2BND4.js +1 -0
- package/dist/chunk-WSCK4WNK.js +1 -0
- package/dist/chunk-Y65CSJFF.js +3 -0
- package/dist/chunk-ZL4MZMUK.js +34 -0
- package/dist/chunk-ZLLER3HP.js +1 -0
- package/dist/chunk-ZXF5NE54.js +1 -0
- package/dist/commands/antigravity/backfill.js +2 -136
- package/dist/commands/auth/create-key.js +1 -52
- package/dist/commands/auth/login.js +1 -85
- package/dist/commands/auth/logout.js +1 -29
- package/dist/commands/auth/revoke-key.js +1 -33
- package/dist/commands/auth/signup.js +1 -89
- package/dist/commands/auth/status.js +1 -42
- package/dist/commands/catalog/index.js +2 -52
- package/dist/commands/catalog/recommend.js +3 -43
- package/dist/commands/convert.js +1 -75
- package/dist/commands/converters.js +1 -54
- package/dist/commands/crons/list.js +1 -41
- package/dist/commands/crons/run.js +2 -76
- package/dist/commands/dashboard.js +1 -46
- package/dist/commands/diagnostics.js +1 -117
- package/dist/commands/eval-targets/create.js +1 -53
- package/dist/commands/eval-targets/list.js +1 -54
- package/dist/commands/evals/agent.js +3 -309
- package/dist/commands/evals/benchmark.js +6 -73
- package/dist/commands/evals/compare.js +13 -96
- package/dist/commands/evals/create.js +1 -67
- package/dist/commands/evals/optimize-description.js +25 -239
- package/dist/commands/evals/optimize.js +5 -211
- package/dist/commands/evals/run.js +3 -183
- package/dist/commands/gateway/ensure.js +1 -104
- package/dist/commands/hooks/emit-instructions.js +1 -25
- package/dist/commands/hooks/install.js +1 -442
- package/dist/commands/hooks/run.js +3 -81
- package/dist/commands/hooks/uninstall.js +2 -156
- package/dist/commands/import.js +1 -66
- package/dist/commands/instructions/create.js +1 -74
- package/dist/commands/instructions/delete.js +1 -55
- package/dist/commands/instructions/fork.js +1 -34
- package/dist/commands/instructions/get.js +1 -68
- package/dist/commands/instructions/list.js +1 -65
- package/dist/commands/instructions/promote.js +1 -42
- package/dist/commands/instructions/pull.js +1 -39
- package/dist/commands/instructions/upstream.js +1 -38
- package/dist/commands/instructions/versions.js +1 -53
- package/dist/commands/launcher.js +1 -40
- package/dist/commands/org/current.js +1 -77
- package/dist/commands/org/list.js +1 -52
- package/dist/commands/org/switch.js +1 -71
- package/dist/commands/packs/add-instruction.js +1 -37
- package/dist/commands/packs/apply.js +1 -39
- package/dist/commands/packs/create.js +1 -50
- package/dist/commands/packs/fork.js +1 -34
- package/dist/commands/packs/get.js +3 -56
- package/dist/commands/packs/list.js +1 -66
- package/dist/commands/packs/remove-instruction.js +1 -35
- package/dist/commands/proxy/env.js +3 -131
- package/dist/commands/proxy/logs.js +3 -85
- package/dist/commands/proxy/restart.js +1 -35
- package/dist/commands/proxy/setup.js +15 -454
- package/dist/commands/proxy/start.js +10 -333
- package/dist/commands/proxy/status.js +1 -78
- package/dist/commands/proxy/stop.js +1 -94
- package/dist/commands/research/backfill.js +1 -59
- package/dist/commands/research/tail-transcript.js +1 -70
- package/dist/commands/service/install.js +57 -781
- package/dist/commands/service/status.js +1 -180
- package/dist/commands/service/uninstall.js +1 -119
- package/dist/commands/sessions/analyze.js +3 -48
- package/dist/commands/sessions/end.js +2 -85
- package/dist/commands/sessions/import.js +1 -46
- package/dist/commands/sessions/list.js +1 -48
- package/dist/commands/sessions/start.js +3 -90
- package/dist/commands/setup.js +3 -150
- package/dist/commands/skills/export-approved.js +1 -46
- package/dist/commands/skills/install.js +4 -107
- package/dist/commands/skills/list.js +4 -65
- package/dist/commands/skills/publish.js +2 -98
- package/dist/commands/skills/search.js +3 -72
- package/dist/commands/skills/update.js +3 -55
- package/dist/commands/suggestions/accept.js +8 -84
- package/dist/commands/suggestions/dismiss.js +1 -45
- package/dist/commands/suggestions/list.js +1 -61
- package/dist/commands/suggestions/refresh.js +1 -27
- package/dist/cursor-T7AMCMKS.js +13 -0
- package/dist/dashboard/Dashboard.js +1 -243
- package/dist/dashboard/data.js +1 -15
- package/dist/dashboard/launcher/ActiveJobsList.js +1 -10
- package/dist/dashboard/launcher/LauncherOverlay.js +1 -16
- package/dist/dashboard/launcher/NewLaunchForm.js +1 -10
- package/dist/dashboard/launcher/api.js +1 -16
- package/dist/dashboard/launcher/tool-labels.js +1 -10
- package/dist/dashboard/launcher/types.js +0 -1
- package/dist/dashboard/launcher/useLaunchJobs.js +1 -11
- package/dist/dashboard/panels/friction.js +1 -10
- package/dist/dashboard/panels/insights.js +1 -10
- package/dist/dashboard/panels/instructions.js +1 -10
- package/dist/dashboard/panels/outcomes.js +1 -10
- package/dist/dashboard/panels/overview.js +1 -10
- package/dist/dashboard/panels/shared.js +1 -19
- package/dist/dashboard/types.js +1 -24
- package/dist/dist-FAVALJ5C.js +1 -0
- package/dist/index.js +1 -8
- package/dist/lib/active-org-refresh.js +1 -15
- package/dist/lib/active-org.js +1 -16
- package/dist/lib/agent-loop.js +1 -46
- package/dist/lib/antigravity-transcript.js +1 -22
- package/dist/lib/api-client.js +1 -23
- package/dist/lib/auth.js +1 -30
- package/dist/lib/capture-hosts.js +1 -8
- package/dist/lib/detect-languages.js +1 -8
- package/dist/lib/detect-tmux.js +1 -9
- package/dist/lib/diagnostics.js +1 -12
- package/dist/lib/editor-proxy-pins.js +1 -14
- package/dist/lib/ensure-api-key.js +1 -11
- package/dist/lib/eval-analyzer.js +1 -9
- package/dist/lib/eval-benchmark.js +1 -12
- package/dist/lib/eval-conversation-handler.js +1 -13
- package/dist/lib/eval-executor.js +1 -8
- package/dist/lib/eval-grader.js +1 -9
- package/dist/lib/eval-meta-judge.js +1 -9
- package/dist/lib/eval-trigger-tester.js +1 -11
- package/dist/lib/eval-worktree.js +1 -8
- package/dist/lib/gateway-entry.js +1 -61
- package/dist/lib/gateway-identity.js +1 -16
- package/dist/lib/gateway-lifecycle.js +1 -32
- package/dist/lib/gateway.js +1 -14
- package/dist/lib/handlers/cron-refresh-pricing.js +1 -0
- package/dist/lib/handlers/cron-refresh-skills.js +1 -8
- package/dist/lib/handlers/cron-suggest-instructions.js +1 -15
- package/dist/lib/handlers/process-announcement.js +1 -11
- package/dist/lib/handlers/process-changelog.js +1 -11
- package/dist/lib/handlers/process-conversation.js +1 -14
- package/dist/lib/handlers/process-eval.js +1 -15
- package/dist/lib/handlers/process-insights.js +1 -14
- package/dist/lib/handlers/process-launch.js +1 -16
- package/dist/lib/handlers/process-run-cleanup.js +1 -13
- package/dist/lib/handlers/process-send-message.js +1 -10
- package/dist/lib/handlers/process-session-goal.js +1 -11
- package/dist/lib/hooks-config.js +1 -81
- package/dist/lib/insights-prompts.js +1 -12
- package/dist/lib/instruction-snapshot.js +1 -8
- package/dist/lib/job-helpers.js +0 -1
- package/dist/lib/llm-client.js +1 -17
- package/dist/lib/manual-tasks-meta.js +1 -8
- package/dist/lib/manual-tasks.js +1 -79
- package/dist/lib/output.js +1 -12
- package/dist/lib/permanent-job-error.js +1 -10
- package/dist/lib/pid-identity.js +1 -14
- package/dist/lib/proxy-respawn.js +1 -12
- package/dist/lib/research-client.js +1 -12
- package/dist/lib/setup-steps.js +1 -33
- package/dist/lib/skills-loader.js +1 -8
- package/dist/lib/statusline-shim.js +1 -20
- package/dist/lib/telemetry.js +1 -16
- package/dist/lib/terminal-target-heartbeat.js +1 -15
- package/dist/lib/tmux.js +1 -16
- package/dist/lib/transcript-rate-limit-watcher.js +1 -22
- package/dist/lib/types.js +1 -8
- package/dist/lib/version-check.js +1 -12
- package/dist/lib/which.js +1 -8
- package/dist/lib/worktree.js +1 -17
- package/dist/opencode-QRJ3BH23.js +1 -0
- package/oclif.manifest.json +135 -135
- package/package.json +8 -7
- package/dist/base-command.js.map +0 -7
- package/dist/chunk-2HK7RGZB.js +0 -82
- package/dist/chunk-2HK7RGZB.js.map +0 -7
- package/dist/chunk-2ORJWTNZ.js +0 -307
- package/dist/chunk-2ORJWTNZ.js.map +0 -7
- package/dist/chunk-37LN5O7M.js +0 -59
- package/dist/chunk-37LN5O7M.js.map +0 -7
- package/dist/chunk-3S7223UR.js +0 -81
- package/dist/chunk-3S7223UR.js.map +0 -7
- package/dist/chunk-3TIMQ3O6.js +0 -96
- package/dist/chunk-3TIMQ3O6.js.map +0 -7
- package/dist/chunk-42GFSAJP.js +0 -32
- package/dist/chunk-42GFSAJP.js.map +0 -7
- package/dist/chunk-4BHDHHKL.js +0 -48
- package/dist/chunk-4BHDHHKL.js.map +0 -7
- package/dist/chunk-4D537GXE.js +0 -99
- package/dist/chunk-4D537GXE.js.map +0 -7
- package/dist/chunk-4LYCDS2N.js +0 -139
- package/dist/chunk-4LYCDS2N.js.map +0 -7
- package/dist/chunk-4SCZK7AL.js +0 -129
- package/dist/chunk-4SCZK7AL.js.map +0 -7
- package/dist/chunk-4XAWK6S2.js +0 -161
- package/dist/chunk-4XAWK6S2.js.map +0 -7
- package/dist/chunk-52WIYRZH.js +0 -73
- package/dist/chunk-52WIYRZH.js.map +0 -7
- package/dist/chunk-5BAOGNUH.js +0 -79
- package/dist/chunk-5BAOGNUH.js.map +0 -7
- package/dist/chunk-5EDMGK3W.js +0 -39
- package/dist/chunk-5EDMGK3W.js.map +0 -7
- package/dist/chunk-6NBS5XFS.js +0 -99
- package/dist/chunk-6NBS5XFS.js.map +0 -7
- package/dist/chunk-7DULPSFU.js +0 -299
- package/dist/chunk-7DULPSFU.js.map +0 -7
- package/dist/chunk-7LVVKQMZ.js +0 -98
- package/dist/chunk-7LVVKQMZ.js.map +0 -7
- package/dist/chunk-7NNFYWKK.js +0 -243
- package/dist/chunk-7NNFYWKK.js.map +0 -7
- package/dist/chunk-7NYKWN7U.js +0 -12
- package/dist/chunk-7NYKWN7U.js.map +0 -7
- package/dist/chunk-BO76WKJR.js +0 -42
- package/dist/chunk-BO76WKJR.js.map +0 -7
- package/dist/chunk-BRD5RUGM.js +0 -53
- package/dist/chunk-BRD5RUGM.js.map +0 -7
- package/dist/chunk-BT6Z6545.js +0 -43
- package/dist/chunk-BT6Z6545.js.map +0 -7
- package/dist/chunk-BZDKEQKU.js +0 -39
- package/dist/chunk-BZDKEQKU.js.map +0 -7
- package/dist/chunk-DGHWRQXL.js +0 -17
- package/dist/chunk-DGHWRQXL.js.map +0 -7
- package/dist/chunk-DNKSVWMD.js +0 -108
- package/dist/chunk-DNKSVWMD.js.map +0 -7
- package/dist/chunk-DQ3KELXD.js +0 -74
- package/dist/chunk-DQ3KELXD.js.map +0 -7
- package/dist/chunk-DUJSRBLP.js +0 -122
- package/dist/chunk-DUJSRBLP.js.map +0 -7
- package/dist/chunk-E3BIT53W.js +0 -154
- package/dist/chunk-E3BIT53W.js.map +0 -7
- package/dist/chunk-EARWG4EV.js +0 -22
- package/dist/chunk-EARWG4EV.js.map +0 -7
- package/dist/chunk-EI5BHWXA.js +0 -1662
- package/dist/chunk-EI5BHWXA.js.map +0 -7
- package/dist/chunk-EJ3YAFDP.js +0 -37
- package/dist/chunk-EJ3YAFDP.js.map +0 -7
- package/dist/chunk-EKJ2CABV.js +0 -76
- package/dist/chunk-EKJ2CABV.js.map +0 -7
- package/dist/chunk-EKP32DLN.js +0 -16
- package/dist/chunk-EKP32DLN.js.map +0 -7
- package/dist/chunk-EYPAAGN5.js +0 -51
- package/dist/chunk-EYPAAGN5.js.map +0 -7
- package/dist/chunk-F5N6CLJJ.js +0 -1995
- package/dist/chunk-F5N6CLJJ.js.map +0 -7
- package/dist/chunk-FZKLLNDS.js +0 -228
- package/dist/chunk-FZKLLNDS.js.map +0 -7
- package/dist/chunk-GIUBARWS.js +0 -99
- package/dist/chunk-GIUBARWS.js.map +0 -7
- package/dist/chunk-GQNJO2P2.js +0 -102
- package/dist/chunk-GQNJO2P2.js.map +0 -7
- package/dist/chunk-IJGF2ETG.js +0 -68
- package/dist/chunk-IJGF2ETG.js.map +0 -7
- package/dist/chunk-ILYDELUE.js +0 -46
- package/dist/chunk-ILYDELUE.js.map +0 -7
- package/dist/chunk-J6QFW4LD.js +0 -55
- package/dist/chunk-J6QFW4LD.js.map +0 -7
- package/dist/chunk-J7N3DLH6.js +0 -117
- package/dist/chunk-J7N3DLH6.js.map +0 -7
- package/dist/chunk-JFDWKLQC.js +0 -23
- package/dist/chunk-JFDWKLQC.js.map +0 -7
- package/dist/chunk-JULOLTZS.js +0 -61
- package/dist/chunk-JULOLTZS.js.map +0 -7
- package/dist/chunk-KJKBDQ4D.js +0 -220
- package/dist/chunk-KJKBDQ4D.js.map +0 -7
- package/dist/chunk-KRBQLMOP.js +0 -41
- package/dist/chunk-KRBQLMOP.js.map +0 -7
- package/dist/chunk-LXKPNATC.js +0 -624
- package/dist/chunk-LXKPNATC.js.map +0 -7
- package/dist/chunk-NSBPE2FW.js +0 -17
- package/dist/chunk-NSBPE2FW.js.map +0 -7
- package/dist/chunk-OK3I555A.js +0 -243
- package/dist/chunk-OK3I555A.js.map +0 -7
- package/dist/chunk-OKWCKCPE.js +0 -414
- package/dist/chunk-OKWCKCPE.js.map +0 -7
- package/dist/chunk-OO7JDFS4.js +0 -157
- package/dist/chunk-OO7JDFS4.js.map +0 -7
- package/dist/chunk-OQBBVTDG.js.map +0 -7
- package/dist/chunk-OQSQC7VB.js +0 -77
- package/dist/chunk-OQSQC7VB.js.map +0 -7
- package/dist/chunk-PED7L5GX.js +0 -92
- package/dist/chunk-PED7L5GX.js.map +0 -7
- package/dist/chunk-PMI56ED5.js +0 -167
- package/dist/chunk-PMI56ED5.js.map +0 -7
- package/dist/chunk-QJQS6TUN.js +0 -44
- package/dist/chunk-QJQS6TUN.js.map +0 -7
- package/dist/chunk-QN34TGD3.js +0 -83
- package/dist/chunk-QN34TGD3.js.map +0 -7
- package/dist/chunk-QSN77T7C.js +0 -250
- package/dist/chunk-QSN77T7C.js.map +0 -7
- package/dist/chunk-R56PH7YE.js +0 -78
- package/dist/chunk-R56PH7YE.js.map +0 -7
- package/dist/chunk-RH7NHVSK.js +0 -16
- package/dist/chunk-RH7NHVSK.js.map +0 -7
- package/dist/chunk-RMTT4KDY.js +0 -191
- package/dist/chunk-RMTT4KDY.js.map +0 -7
- package/dist/chunk-RQ2TMLKG.js +0 -142
- package/dist/chunk-RQ2TMLKG.js.map +0 -7
- package/dist/chunk-SO3T35U7.js +0 -80
- package/dist/chunk-SO3T35U7.js.map +0 -7
- package/dist/chunk-UKMLICWS.js +0 -51
- package/dist/chunk-UKMLICWS.js.map +0 -7
- package/dist/chunk-W2YERO7E.js +0 -170
- package/dist/chunk-W2YERO7E.js.map +0 -7
- package/dist/chunk-W53GKIZQ.js +0 -50
- package/dist/chunk-W53GKIZQ.js.map +0 -7
- package/dist/chunk-WA4MWYRW.js +0 -254
- package/dist/chunk-WA4MWYRW.js.map +0 -7
- package/dist/chunk-XC6M4CSW.js +0 -44
- package/dist/chunk-XC6M4CSW.js.map +0 -7
- package/dist/chunk-XK42ZBDE.js +0 -23
- package/dist/chunk-XK42ZBDE.js.map +0 -7
- package/dist/chunk-XUV6DDBF.js +0 -124
- package/dist/chunk-XUV6DDBF.js.map +0 -7
- package/dist/chunk-XZXS2W24.js.map +0 -7
- package/dist/chunk-Y3WD5CSW.js +0 -49
- package/dist/chunk-Y3WD5CSW.js.map +0 -7
- package/dist/chunk-Y4BJXXYV.js +0 -148
- package/dist/chunk-Y4BJXXYV.js.map +0 -7
- package/dist/chunk-YNIH3KMU.js +0 -121
- package/dist/chunk-YNIH3KMU.js.map +0 -7
- package/dist/chunk-YOBA3NAM.js +0 -55
- package/dist/chunk-YOBA3NAM.js.map +0 -7
- package/dist/chunk-ZUJBM6HE.js +0 -125
- package/dist/chunk-ZUJBM6HE.js.map +0 -7
- package/dist/commands/antigravity/backfill.js.map +0 -7
- package/dist/commands/auth/create-key.js.map +0 -7
- package/dist/commands/auth/login.js.map +0 -7
- package/dist/commands/auth/logout.js.map +0 -7
- package/dist/commands/auth/revoke-key.js.map +0 -7
- package/dist/commands/auth/signup.js.map +0 -7
- package/dist/commands/auth/status.js.map +0 -7
- package/dist/commands/catalog/index.js.map +0 -7
- package/dist/commands/catalog/recommend.js.map +0 -7
- package/dist/commands/convert.js.map +0 -7
- package/dist/commands/converters.js.map +0 -7
- package/dist/commands/crons/list.js.map +0 -7
- package/dist/commands/crons/run.js.map +0 -7
- package/dist/commands/dashboard.js.map +0 -7
- package/dist/commands/diagnostics.js.map +0 -7
- package/dist/commands/eval-targets/create.js.map +0 -7
- package/dist/commands/eval-targets/list.js.map +0 -7
- package/dist/commands/evals/agent.js.map +0 -7
- package/dist/commands/evals/benchmark.js.map +0 -7
- package/dist/commands/evals/compare.js.map +0 -7
- package/dist/commands/evals/create.js.map +0 -7
- package/dist/commands/evals/optimize-description.js.map +0 -7
- package/dist/commands/evals/optimize.js.map +0 -7
- package/dist/commands/evals/run.js.map +0 -7
- package/dist/commands/gateway/ensure.js.map +0 -7
- package/dist/commands/hooks/emit-instructions.js.map +0 -7
- package/dist/commands/hooks/install.js.map +0 -7
- package/dist/commands/hooks/run.js.map +0 -7
- package/dist/commands/hooks/uninstall.js.map +0 -7
- package/dist/commands/import.js.map +0 -7
- package/dist/commands/instructions/create.js.map +0 -7
- package/dist/commands/instructions/delete.js.map +0 -7
- package/dist/commands/instructions/fork.js.map +0 -7
- package/dist/commands/instructions/get.js.map +0 -7
- package/dist/commands/instructions/list.js.map +0 -7
- package/dist/commands/instructions/promote.js.map +0 -7
- package/dist/commands/instructions/pull.js.map +0 -7
- package/dist/commands/instructions/upstream.js.map +0 -7
- package/dist/commands/instructions/versions.js.map +0 -7
- package/dist/commands/launcher.js.map +0 -7
- package/dist/commands/org/current.js.map +0 -7
- package/dist/commands/org/list.js.map +0 -7
- package/dist/commands/org/switch.js.map +0 -7
- package/dist/commands/packs/add-instruction.js.map +0 -7
- package/dist/commands/packs/apply.js.map +0 -7
- package/dist/commands/packs/create.js.map +0 -7
- package/dist/commands/packs/fork.js.map +0 -7
- package/dist/commands/packs/get.js.map +0 -7
- package/dist/commands/packs/list.js.map +0 -7
- package/dist/commands/packs/remove-instruction.js.map +0 -7
- package/dist/commands/proxy/env.js.map +0 -7
- package/dist/commands/proxy/logs.js.map +0 -7
- package/dist/commands/proxy/restart.js.map +0 -7
- package/dist/commands/proxy/setup.js.map +0 -7
- package/dist/commands/proxy/start.js.map +0 -7
- package/dist/commands/proxy/status.js.map +0 -7
- package/dist/commands/proxy/stop.js.map +0 -7
- package/dist/commands/research/backfill.js.map +0 -7
- package/dist/commands/research/tail-transcript.js.map +0 -7
- package/dist/commands/service/install.js.map +0 -7
- package/dist/commands/service/status.js.map +0 -7
- package/dist/commands/service/uninstall.js.map +0 -7
- package/dist/commands/sessions/analyze.js.map +0 -7
- package/dist/commands/sessions/end.js.map +0 -7
- package/dist/commands/sessions/import.js.map +0 -7
- package/dist/commands/sessions/list.js.map +0 -7
- package/dist/commands/sessions/start.js.map +0 -7
- package/dist/commands/setup.js.map +0 -7
- package/dist/commands/skills/export-approved.js.map +0 -7
- package/dist/commands/skills/install.js.map +0 -7
- package/dist/commands/skills/list.js.map +0 -7
- package/dist/commands/skills/publish.js.map +0 -7
- package/dist/commands/skills/search.js.map +0 -7
- package/dist/commands/skills/update.js.map +0 -7
- package/dist/commands/suggestions/accept.js.map +0 -7
- package/dist/commands/suggestions/dismiss.js.map +0 -7
- package/dist/commands/suggestions/list.js.map +0 -7
- package/dist/commands/suggestions/refresh.js.map +0 -7
- package/dist/cursor-BGQJ4CWI.js +0 -134
- package/dist/cursor-BGQJ4CWI.js.map +0 -7
- package/dist/dashboard/Dashboard.js.map +0 -7
- package/dist/dashboard/data.js.map +0 -7
- package/dist/dashboard/launcher/ActiveJobsList.js.map +0 -7
- package/dist/dashboard/launcher/LauncherOverlay.js.map +0 -7
- package/dist/dashboard/launcher/NewLaunchForm.js.map +0 -7
- package/dist/dashboard/launcher/api.js.map +0 -7
- package/dist/dashboard/launcher/tool-labels.js.map +0 -7
- package/dist/dashboard/launcher/types.js.map +0 -7
- package/dist/dashboard/launcher/useLaunchJobs.js.map +0 -7
- package/dist/dashboard/panels/friction.js.map +0 -7
- package/dist/dashboard/panels/insights.js.map +0 -7
- package/dist/dashboard/panels/instructions.js.map +0 -7
- package/dist/dashboard/panels/outcomes.js.map +0 -7
- package/dist/dashboard/panels/overview.js.map +0 -7
- package/dist/dashboard/panels/shared.js.map +0 -7
- package/dist/dashboard/types.js.map +0 -7
- package/dist/dist-UNYP5PJR.js +0 -56
- package/dist/dist-UNYP5PJR.js.map +0 -7
- package/dist/index.js.map +0 -7
- package/dist/lib/active-org-refresh.js.map +0 -7
- package/dist/lib/active-org.js.map +0 -7
- package/dist/lib/agent-loop.js.map +0 -7
- package/dist/lib/antigravity-transcript.js.map +0 -7
- package/dist/lib/api-client.js.map +0 -7
- package/dist/lib/auth.js.map +0 -7
- package/dist/lib/capture-hosts.js.map +0 -7
- package/dist/lib/detect-languages.js.map +0 -7
- package/dist/lib/detect-tmux.js.map +0 -7
- package/dist/lib/diagnostics.js.map +0 -7
- package/dist/lib/editor-proxy-pins.js.map +0 -7
- package/dist/lib/ensure-api-key.js.map +0 -7
- package/dist/lib/eval-analyzer.js.map +0 -7
- package/dist/lib/eval-benchmark.js.map +0 -7
- package/dist/lib/eval-conversation-handler.js.map +0 -7
- package/dist/lib/eval-executor.js.map +0 -7
- package/dist/lib/eval-grader.js.map +0 -7
- package/dist/lib/eval-meta-judge.js.map +0 -7
- package/dist/lib/eval-trigger-tester.js.map +0 -7
- package/dist/lib/eval-worktree.js.map +0 -7
- package/dist/lib/gateway-entry.js.map +0 -7
- package/dist/lib/gateway-identity.js.map +0 -7
- package/dist/lib/gateway-lifecycle.js.map +0 -7
- package/dist/lib/gateway.js.map +0 -7
- package/dist/lib/handlers/cron-refresh-skills.js.map +0 -7
- package/dist/lib/handlers/cron-suggest-instructions.js.map +0 -7
- package/dist/lib/handlers/process-announcement.js.map +0 -7
- package/dist/lib/handlers/process-changelog.js.map +0 -7
- package/dist/lib/handlers/process-conversation.js.map +0 -7
- package/dist/lib/handlers/process-eval.js.map +0 -7
- package/dist/lib/handlers/process-insights.js.map +0 -7
- package/dist/lib/handlers/process-launch.js.map +0 -7
- package/dist/lib/handlers/process-run-cleanup.js.map +0 -7
- package/dist/lib/handlers/process-send-message.js.map +0 -7
- package/dist/lib/handlers/process-session-goal.js.map +0 -7
- package/dist/lib/hooks-config.js.map +0 -7
- package/dist/lib/insights-prompts.js.map +0 -7
- package/dist/lib/instruction-snapshot.js.map +0 -7
- package/dist/lib/job-helpers.js.map +0 -7
- package/dist/lib/llm-client.js.map +0 -7
- package/dist/lib/manual-tasks-meta.js.map +0 -7
- package/dist/lib/manual-tasks.js.map +0 -7
- package/dist/lib/output.js.map +0 -7
- package/dist/lib/permanent-job-error.js.map +0 -7
- package/dist/lib/pid-identity.js.map +0 -7
- package/dist/lib/proxy-respawn.js.map +0 -7
- package/dist/lib/research-client.js.map +0 -7
- package/dist/lib/setup-steps.js.map +0 -7
- package/dist/lib/skills-loader.js.map +0 -7
- package/dist/lib/statusline-shim.js.map +0 -7
- package/dist/lib/telemetry.js.map +0 -7
- package/dist/lib/terminal-target-heartbeat.js.map +0 -7
- package/dist/lib/tmux.js.map +0 -7
- package/dist/lib/transcript-rate-limit-watcher.js.map +0 -7
- package/dist/lib/types.js.map +0 -7
- package/dist/lib/version-check.js.map +0 -7
- package/dist/lib/which.js.map +0 -7
- package/dist/lib/worktree.js.map +0 -7
- package/dist/opencode-IQ7X5YMJ.js +0 -190
- package/dist/opencode-IQ7X5YMJ.js.map +0 -7
package/dist/chunk-JULOLTZS.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ensureWorktree
|
|
3
|
-
} from "./chunk-Y4BJXXYV.js";
|
|
4
|
-
import {
|
|
5
|
-
PermanentJobError
|
|
6
|
-
} from "./chunk-DGHWRQXL.js";
|
|
7
|
-
import {
|
|
8
|
-
apiPatch
|
|
9
|
-
} from "./chunk-ZUJBM6HE.js";
|
|
10
|
-
|
|
11
|
-
// src/lib/handlers/process-launch.ts
|
|
12
|
-
async function resolveWorktreeForLaunch(config) {
|
|
13
|
-
if (!config.worktree?.create) {
|
|
14
|
-
return config;
|
|
15
|
-
}
|
|
16
|
-
const { branch, baseRef } = config.worktree;
|
|
17
|
-
const wt = await ensureWorktree({
|
|
18
|
-
repoRoot: config.projectPath,
|
|
19
|
-
branch,
|
|
20
|
-
baseRef
|
|
21
|
-
});
|
|
22
|
-
return {
|
|
23
|
-
...config,
|
|
24
|
-
projectPath: wt.path,
|
|
25
|
-
gitBranch: wt.branch
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
async function processLaunch(payload, helpers) {
|
|
29
|
-
const { mirrorId, tool } = payload;
|
|
30
|
-
let { config } = payload;
|
|
31
|
-
const log = (msg) => helpers.logger.info(msg);
|
|
32
|
-
if (helpers.job.attempts > 1) {
|
|
33
|
-
throw new PermanentJobError(
|
|
34
|
-
`process_launch is not safe to retry (attempt ${helpers.job.attempts}). Re-launch manually.`
|
|
35
|
-
);
|
|
36
|
-
}
|
|
37
|
-
config = await resolveWorktreeForLaunch(config);
|
|
38
|
-
if (config.worktree?.create) {
|
|
39
|
-
log(`Worktree resolved: ${config.projectPath} (branch ${config.gitBranch})`);
|
|
40
|
-
}
|
|
41
|
-
log(`Launching ${tool}...`);
|
|
42
|
-
const { getLauncher } = await import("./dist-UNYP5PJR.js");
|
|
43
|
-
const launcher = getLauncher(tool);
|
|
44
|
-
const launcherResult = await launcher.launch(config);
|
|
45
|
-
log(`Launch completed: sessionId=${launcherResult.sessionId}`);
|
|
46
|
-
const result = {
|
|
47
|
-
...launcherResult,
|
|
48
|
-
worktreePath: config.worktree?.create ? config.projectPath : void 0,
|
|
49
|
-
runId: config.runId
|
|
50
|
-
};
|
|
51
|
-
await apiPatch(`/api/launch-jobs/${mirrorId}/state`, { result }).catch((err) => {
|
|
52
|
-
log(`result persist failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
53
|
-
});
|
|
54
|
-
return result;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export {
|
|
58
|
-
resolveWorktreeForLaunch,
|
|
59
|
-
processLaunch
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=chunk-JULOLTZS.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/lib/handlers/process-launch.ts"],
|
|
4
|
-
"sourcesContent": ["import type { JobHelpers } from '../job-helpers.js';\nimport type { LaunchConfig as LauncherConfig } from '@rulemetric/session';\nimport { apiPatch } from '../api-client.js';\nimport { PermanentJobError } from '../permanent-job-error.js';\nimport { ensureWorktree } from '../worktree.js';\n\n/**\n * Extends the canonical launcher config (`@rulemetric/session`) with the\n * worker-only fields the `POST /api/runs` fan-out stamps. Extending \u2014 rather\n * than re-declaring \u2014 keeps the shared launcher fields (`projectPath`,\n * `prompt`, `mode`, `resumeSessionId`, \u2026) in lock-step with the launcher so\n * the two can't drift.\n */\nexport interface LaunchConfig extends LauncherConfig {\n gitBranch?: string;\n /**\n * Set by the `POST /api/runs` fan-out (Task 1.1). When `create` is true the\n * worker provisions an isolated git worktree+branch before launching, so the\n * session runs inside its own checkout of the repo.\n */\n worktree?: {\n create: boolean;\n branch: string;\n baseRef: string;\n };\n /**\n * The owning run's id, stamped by the fan-out. Carried through untouched and\n * passed to the launcher, which injects it as RULEMETRIC_RUN_ID into the\n * spawned session's env (Task 3.1). The session-start hook\n * (packages/hooks/scripts/_ensure-session.sh) forwards it as `runId` to\n * POST /api/sessions, which stamps sessions.run_id after validating ownership.\n */\n runId?: string;\n}\n\ninterface LaunchPayload {\n mirrorId: string;\n tool: string;\n config: LaunchConfig;\n}\n\n/**\n * If the launch carries a worktree spec, provision the worktree and return a\n * NEW config pointed at it (`projectPath` = worktree path, `gitBranch` = the\n * branch). When `worktree.create` is falsy the config is returned unchanged.\n *\n * Extracted as a pure-ish helper so it's unit-testable against a real temp git\n * repo without mocking the `@rulemetric/session` launcher. `allowExistingBranch`\n * is left at its default (false): same-run idempotency is handled by\n * `ensureWorktree`'s pre-existence guard, and the `attempts > 1` guard in\n * `processLaunch` prevents a retry from re-running this at all.\n */\nexport async function resolveWorktreeForLaunch(config: LaunchConfig): Promise<LaunchConfig> {\n if (!config.worktree?.create) {\n return config;\n }\n const { branch, baseRef } = config.worktree;\n const wt = await ensureWorktree({\n repoRoot: config.projectPath,\n branch,\n baseRef,\n });\n // New object \u2014 never mutate the caller's config in place.\n return {\n ...config,\n projectPath: wt.path,\n gitBranch: wt.branch,\n };\n}\n\n/**\n * Graphile-shaped handler for the `process_launch` task.\n *\n * Lifted from the legacy `eval-worker.ts:processLaunchJob`, with the queue\n * plumbing stripped out:\n * - no claim \u2014 Graphile already claimed the job before invoking us\n * - no /complete POST \u2014 we return the launcher result (or throw)\n * - no surrounding try/catch \u2014 errors propagate to Graphile's retry path\n *\n * The dynamic import of `@rulemetric/session` is intentional: it avoids\n * loading the launcher (and its tool-specific subprocess wrappers) unless a\n * launch job actually fires.\n */\nexport async function processLaunch(\n payload: LaunchPayload,\n helpers: JobHelpers,\n): Promise<Record<string, unknown>> {\n const { mirrorId, tool } = payload;\n let { config } = payload;\n const log = (msg: string) => helpers.logger.info(msg);\n\n // Fail-fast on retry. The launcher spawns subprocesses and registers a\n // session \u2014 re-running on Graphile retry would create a second session\n // with no link back to the first. Until the launcher path is properly\n // idempotent (resume from sessionId persisted to the mirror row),\n // surface the failure to the user instead of silently double-launching.\n // See docs/audits/2026-05-07-worker-audit.md \"Handlers not idempotent\".\n if (helpers.job.attempts > 1) {\n throw new PermanentJobError(\n `process_launch is not safe to retry (attempt ${helpers.job.attempts}). Re-launch manually.`,\n );\n }\n\n // Provision an isolated worktree (idempotent) BEFORE the launcher spawns \u2014\n // the launcher uses config.projectPath as the session cwd, so swapping it to\n // the worktree path is what makes the session run inside the worktree.\n config = await resolveWorktreeForLaunch(config);\n if (config.worktree?.create) {\n log(`Worktree resolved: ${config.projectPath} (branch ${config.gitBranch})`);\n }\n\n log(`Launching ${tool}...`);\n const { getLauncher } = await import('@rulemetric/session');\n const launcher = getLauncher(tool);\n // config.runId rides through here untouched; the launcher injects it as\n // RULEMETRIC_RUN_ID into the spawned session's env (Task 3.1).\n const launcherResult = await launcher.launch(config);\n log(`Launch completed: sessionId=${launcherResult.sessionId}`);\n\n // Persist the RESOLVED worktree path + runId onto the launch result so the\n // API's reconcile fallback (POST /api/runs/:id/link-sessions, Task 3.2) can\n // match a run's launch jobs to its captured sessions on `projectPath`. The\n // env\u2192hook path (Task 3.1) is the primary attribution channel; this is the\n // defense-in-depth join key for sessions that channel misses (non-Claude-Code\n // tools whose launchers don't inject RULEMETRIC_RUN_ID, proxy-created\n // sessions, tools without our hooks). `config.projectPath` here is already\n // the worktree path \u2014 `resolveWorktreeForLaunch` swapped it above \u2014 so the\n // captured `sessions.projectPath` (the session's cwd) equals it.\n const result: Record<string, unknown> = {\n ...launcherResult,\n worktreePath: config.worktree?.create ? config.projectPath : undefined,\n runId: config.runId,\n };\n\n // Graphile discards task return values, so persist the launcher result\n // (sessionId, etc.) onto the mirror row. Best-effort.\n await apiPatch(`/api/launch-jobs/${mirrorId}/state`, { result }).catch((err: unknown) => {\n log(`result persist failed: ${err instanceof Error ? err.message : String(err)}`);\n });\n\n return result;\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;AAoDA,eAAsB,yBAAyB,QAA6C;AAC1F,MAAI,CAAC,OAAO,UAAU,QAAQ;AAC5B,WAAO;AAAA,EACT;AACA,QAAM,EAAE,QAAQ,QAAQ,IAAI,OAAO;AACnC,QAAM,KAAK,MAAM,eAAe;AAAA,IAC9B,UAAU,OAAO;AAAA,IACjB;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,GAAG;AAAA,IACH,aAAa,GAAG;AAAA,IAChB,WAAW,GAAG;AAAA,EAChB;AACF;AAeA,eAAsB,cACpB,SACA,SACkC;AAClC,QAAM,EAAE,UAAU,KAAK,IAAI;AAC3B,MAAI,EAAE,OAAO,IAAI;AACjB,QAAM,MAAM,CAAC,QAAgB,QAAQ,OAAO,KAAK,GAAG;AAQpD,MAAI,QAAQ,IAAI,WAAW,GAAG;AAC5B,UAAM,IAAI;AAAA,MACR,gDAAgD,QAAQ,IAAI,QAAQ;AAAA,IACtE;AAAA,EACF;AAKA,WAAS,MAAM,yBAAyB,MAAM;AAC9C,MAAI,OAAO,UAAU,QAAQ;AAC3B,QAAI,sBAAsB,OAAO,WAAW,YAAY,OAAO,SAAS,GAAG;AAAA,EAC7E;AAEA,MAAI,aAAa,IAAI,KAAK;AAC1B,QAAM,EAAE,YAAY,IAAI,MAAM,OAAO,oBAAqB;AAC1D,QAAM,WAAW,YAAY,IAAI;AAGjC,QAAM,iBAAiB,MAAM,SAAS,OAAO,MAAM;AACnD,MAAI,+BAA+B,eAAe,SAAS,EAAE;AAW7D,QAAM,SAAkC;AAAA,IACtC,GAAG;AAAA,IACH,cAAc,OAAO,UAAU,SAAS,OAAO,cAAc;AAAA,IAC7D,OAAO,OAAO;AAAA,EAChB;AAIA,QAAM,SAAS,oBAAoB,QAAQ,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,QAAiB;AACvF,QAAI,0BAA0B,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC,EAAE;AAAA,EAClF,CAAC;AAED,SAAO;AACT;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/chunk-KJKBDQ4D.js
DELETED
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
analyzeEvalResults
|
|
3
|
-
} from "./chunk-3TIMQ3O6.js";
|
|
4
|
-
import {
|
|
5
|
-
gradeEvalOutput
|
|
6
|
-
} from "./chunk-YNIH3KMU.js";
|
|
7
|
-
import {
|
|
8
|
-
executeEval
|
|
9
|
-
} from "./chunk-QN34TGD3.js";
|
|
10
|
-
import {
|
|
11
|
-
apiGet,
|
|
12
|
-
apiPost
|
|
13
|
-
} from "./chunk-ZUJBM6HE.js";
|
|
14
|
-
|
|
15
|
-
// src/lib/eval-conversation-handler.ts
|
|
16
|
-
async function processConversationJob(jobConfig, evalTargetId, logger) {
|
|
17
|
-
const { conversationId, messageId, messageContent } = jobConfig;
|
|
18
|
-
const target = await apiGet(`/api/eval-targets/${evalTargetId}`);
|
|
19
|
-
const evalCases = await apiGet(`/api/eval-targets/${evalTargetId}/evals`);
|
|
20
|
-
const messages = await apiGet(
|
|
21
|
-
`/api/eval-conversations/${conversationId}/messages`
|
|
22
|
-
);
|
|
23
|
-
const msgIdx = messages.findIndex((m) => m.id === messageId);
|
|
24
|
-
if (msgIdx >= 0) {
|
|
25
|
-
const hasResponse = messages.slice(msgIdx + 1).some(
|
|
26
|
-
(m) => m.role === "assistant" && (m.type === "results" || m.type === "proposal" || m.type === "generated" || m.type === "text")
|
|
27
|
-
);
|
|
28
|
-
if (hasResponse) {
|
|
29
|
-
logger(`Message ${messageId} already processed \u2014 skipping (idempotency guard)`);
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
const postMessage = async (content, type, data) => {
|
|
34
|
-
await apiPost(`/api/eval-conversations/${conversationId}/messages/assistant`, {
|
|
35
|
-
content,
|
|
36
|
-
type,
|
|
37
|
-
data
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
const decision = await decideAction(target, evalCases, messages, messageContent, logger);
|
|
41
|
-
logger(`Action: ${decision.action}`);
|
|
42
|
-
switch (decision.action) {
|
|
43
|
-
case "run_evals":
|
|
44
|
-
await handleRunEvals(target, evalCases, conversationId, postMessage, logger);
|
|
45
|
-
break;
|
|
46
|
-
case "generate_cases":
|
|
47
|
-
await handleGenerateCases(target, evalTargetId, conversationId, postMessage, logger);
|
|
48
|
-
break;
|
|
49
|
-
case "analyze_results":
|
|
50
|
-
case "propose_changes":
|
|
51
|
-
await handleAnalyzeAndPropose(target, evalCases, messages, messageContent, conversationId, postMessage, logger);
|
|
52
|
-
break;
|
|
53
|
-
case "respond":
|
|
54
|
-
await postMessage(decision.response, "text");
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
async function decideAction(target, evalCases, messages, latestMessage, logger) {
|
|
59
|
-
const recentMessages = messages.slice(-10).map(
|
|
60
|
-
(m) => `${m.role}: ${m.content.slice(0, 200)}`
|
|
61
|
-
).join("\n");
|
|
62
|
-
const prompt = `You are an eval assistant. Decide what action to take based on the user's message.
|
|
63
|
-
|
|
64
|
-
## Current State
|
|
65
|
-
- Eval target: "${target.name}" v${target.version} (${target.type})
|
|
66
|
-
- Eval cases: ${evalCases.length} defined${evalCases.length > 0 ? ` (${evalCases.map((e) => e.name).join(", ")})` : ""}
|
|
67
|
-
- Content length: ${target.content.length} chars
|
|
68
|
-
|
|
69
|
-
## Recent Conversation
|
|
70
|
-
${recentMessages}
|
|
71
|
-
|
|
72
|
-
## User's Latest Message
|
|
73
|
-
${latestMessage}
|
|
74
|
-
|
|
75
|
-
## Available Actions
|
|
76
|
-
- run_evals: Run all eval cases against current version (with + without target). Choose this when the user wants to test, evaluate, or see how the instruction performs.
|
|
77
|
-
- generate_cases: Auto-generate eval test cases from the instruction content. Choose this when there are no eval cases (${evalCases.length} currently) or user asks to create/generate tests.
|
|
78
|
-
- analyze_results: Analyze recent eval failures and propose improvements based on user feedback. Choose this when user gives qualitative feedback like "this is wrong", "missing X", etc.
|
|
79
|
-
- propose_changes: Propose specific content edits based on conversation. Choose this when user asks for improvements or changes.
|
|
80
|
-
- respond: Just answer a question without running any evals. Choose this for informational questions.
|
|
81
|
-
|
|
82
|
-
Respond with ONLY valid JSON:
|
|
83
|
-
{"action": "run_evals", "response": "What you want to say to the user", "params": {}}`;
|
|
84
|
-
const result = await executeEval({ prompt, timeout: 3e4 });
|
|
85
|
-
try {
|
|
86
|
-
let jsonStr = result.output.trim();
|
|
87
|
-
const jsonMatch = jsonStr.match(/\{[\s\S]*\}/);
|
|
88
|
-
if (jsonMatch) jsonStr = jsonMatch[0];
|
|
89
|
-
return JSON.parse(jsonStr);
|
|
90
|
-
} catch {
|
|
91
|
-
logger("Failed to parse action decision, defaulting to respond");
|
|
92
|
-
const lower = latestMessage.toLowerCase();
|
|
93
|
-
if (lower.includes("run") || lower.includes("test") || lower.includes("eval")) {
|
|
94
|
-
return { action: "run_evals", response: "Running evals now..." };
|
|
95
|
-
}
|
|
96
|
-
if (lower.includes("generate") || lower.includes("create") || evalCases.length === 0 && lower.includes("start")) {
|
|
97
|
-
return { action: "generate_cases", response: "Generating test cases..." };
|
|
98
|
-
}
|
|
99
|
-
return { action: "respond", response: "I can help you run evals, generate test cases, or analyze results. What would you like to do?" };
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
async function handleRunEvals(target, evalCases, _conversationId, postMessage, logger) {
|
|
103
|
-
if (evalCases.length === 0) {
|
|
104
|
-
await postMessage(
|
|
105
|
-
"No eval cases exist yet. Would you like me to generate some from the instruction content?",
|
|
106
|
-
"text"
|
|
107
|
-
);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
await postMessage(`Running ${evalCases.length} evals against "${target.name}" v${target.version}...`, "status");
|
|
111
|
-
const results = [];
|
|
112
|
-
for (const eval_ of evalCases) {
|
|
113
|
-
logger(`Running: ${eval_.name} (with_target)`);
|
|
114
|
-
const execResult = await executeEval({
|
|
115
|
-
prompt: eval_.prompt,
|
|
116
|
-
targetContent: target.content,
|
|
117
|
-
timeout: 12e4
|
|
118
|
-
});
|
|
119
|
-
let passed = false;
|
|
120
|
-
let evidence = "";
|
|
121
|
-
if (!execResult.error && eval_.expectations.length > 0) {
|
|
122
|
-
const grading = await gradeEvalOutput({
|
|
123
|
-
prompt: eval_.prompt,
|
|
124
|
-
output: execResult.output,
|
|
125
|
-
expectations: eval_.expectations,
|
|
126
|
-
timeout: 12e4
|
|
127
|
-
});
|
|
128
|
-
const summary = grading?.summary;
|
|
129
|
-
passed = summary?.pass_rate >= 1;
|
|
130
|
-
evidence = grading?.expectations?.map((e) => `${e.passed ? "PASS" : "FAIL"}: ${e.text} \u2014 ${e.evidence}`).join("\n") ?? "";
|
|
131
|
-
}
|
|
132
|
-
results.push({
|
|
133
|
-
evalName: eval_.name,
|
|
134
|
-
passed,
|
|
135
|
-
output: execResult.error ?? execResult.output.slice(0, 2e3),
|
|
136
|
-
expectations: eval_.expectations,
|
|
137
|
-
evidence,
|
|
138
|
-
configuration: "with_target"
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
const passedCount = results.filter((r) => r.passed).length;
|
|
142
|
-
const total = results.length;
|
|
143
|
-
await postMessage(
|
|
144
|
-
`${passedCount} of ${total} evals passed (${Math.round(passedCount / total * 100)}%)`,
|
|
145
|
-
"results",
|
|
146
|
-
{
|
|
147
|
-
summary: { passed: passedCount, failed: total - passedCount, total, passRate: passedCount / total },
|
|
148
|
-
results: results.map((r) => ({
|
|
149
|
-
evalName: r.evalName,
|
|
150
|
-
passed: r.passed,
|
|
151
|
-
output: r.output,
|
|
152
|
-
expectations: r.expectations,
|
|
153
|
-
evidence: r.evidence
|
|
154
|
-
}))
|
|
155
|
-
}
|
|
156
|
-
);
|
|
157
|
-
}
|
|
158
|
-
async function handleGenerateCases(target, _evalTargetId, _conversationId, postMessage, logger) {
|
|
159
|
-
await postMessage("Generating eval cases from instruction content...", "status");
|
|
160
|
-
logger("Calling eval-from-context endpoint");
|
|
161
|
-
const result = await apiPost("/api/eval-from-context", {
|
|
162
|
-
contentHash: "",
|
|
163
|
-
name: target.name,
|
|
164
|
-
type: target.type,
|
|
165
|
-
content: target.content,
|
|
166
|
-
config: { skipBaseline: false, skipGrading: false }
|
|
167
|
-
});
|
|
168
|
-
const cases = result.evals ?? [];
|
|
169
|
-
await postMessage(
|
|
170
|
-
`Generated ${cases.length} eval cases. Review them below:`,
|
|
171
|
-
"generated",
|
|
172
|
-
{
|
|
173
|
-
cases: cases.map((c) => ({
|
|
174
|
-
id: c.id,
|
|
175
|
-
name: c.name,
|
|
176
|
-
prompt: c.prompt,
|
|
177
|
-
expectations: c.expectations
|
|
178
|
-
}))
|
|
179
|
-
}
|
|
180
|
-
);
|
|
181
|
-
}
|
|
182
|
-
async function handleAnalyzeAndPropose(target, evalCases, messages, userFeedback, _conversationId, postMessage, logger) {
|
|
183
|
-
await postMessage("Analyzing results and preparing improvements...", "status");
|
|
184
|
-
const lastResults = [...messages].reverse().find((m) => m.type === "results");
|
|
185
|
-
const evalResults = lastResults?.data?.results?.map((r) => ({
|
|
186
|
-
evalName: r.evalName,
|
|
187
|
-
prompt: "",
|
|
188
|
-
expectations: r.expectations ?? [],
|
|
189
|
-
grading: {
|
|
190
|
-
summary: { pass_rate: r.passed ? 1 : 0 },
|
|
191
|
-
expectations: r.expectations?.map((e) => ({
|
|
192
|
-
text: e,
|
|
193
|
-
passed: r.passed,
|
|
194
|
-
evidence: r.evidence ?? ""
|
|
195
|
-
}))
|
|
196
|
-
}
|
|
197
|
-
})) ?? [];
|
|
198
|
-
logger(`Analyzing ${evalResults.length} eval results with user feedback`);
|
|
199
|
-
const analysis = await analyzeEvalResults({
|
|
200
|
-
content: target.content,
|
|
201
|
-
evalResults,
|
|
202
|
-
model: void 0,
|
|
203
|
-
timeout: 12e4,
|
|
204
|
-
userFeedback
|
|
205
|
-
});
|
|
206
|
-
await postMessage(
|
|
207
|
-
analysis.overallAssessment,
|
|
208
|
-
"proposal",
|
|
209
|
-
{
|
|
210
|
-
suggestions: analysis.suggestions,
|
|
211
|
-
proposedContent: analysis.proposedContent,
|
|
212
|
-
fromVersion: target.version
|
|
213
|
-
}
|
|
214
|
-
);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
export {
|
|
218
|
-
processConversationJob
|
|
219
|
-
};
|
|
220
|
-
//# sourceMappingURL=chunk-KJKBDQ4D.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/lib/eval-conversation-handler.ts"],
|
|
4
|
-
"sourcesContent": ["import { apiGet, apiPost } from './api-client.js';\nimport { executeEval } from './eval-executor.js';\nimport { gradeEvalOutput } from './eval-grader.js';\nimport { analyzeEvalResults } from './eval-analyzer.js';\n\ninterface ConversationMessage {\n id: string;\n role: 'user' | 'assistant';\n content: string;\n type?: string;\n data?: Record<string, unknown>;\n createdAt: string;\n}\n\ninterface EvalTarget {\n id: string;\n name: string;\n type: string;\n content: string;\n description: string;\n version: number;\n}\n\ninterface EvalCase {\n id: string;\n name: string;\n prompt: string;\n expectedOutput: string;\n expectations: string[];\n}\n\ninterface ConversationJobConfig {\n type: 'conversation';\n conversationId: string;\n messageId: string;\n messageContent: string;\n}\n\ninterface ActionDecision {\n action: 'run_evals' | 'generate_cases' | 'analyze_results' | 'propose_changes' | 'respond';\n response: string;\n params?: Record<string, unknown>;\n}\n\nexport async function processConversationJob(\n jobConfig: ConversationJobConfig,\n evalTargetId: string,\n logger: (msg: string) => void,\n): Promise<void> {\n const { conversationId, messageId, messageContent } = jobConfig;\n\n // Fetch context\n const target = await apiGet<EvalTarget>(`/api/eval-targets/${evalTargetId}`);\n const evalCases = await apiGet<EvalCase[]>(`/api/eval-targets/${evalTargetId}/evals`);\n const messages = await apiGet<ConversationMessage[]>(\n `/api/eval-conversations/${conversationId}/messages`,\n );\n\n // Idempotency: check if this message was already processed (has assistant responses after it)\n const msgIdx = messages.findIndex((m) => m.id === messageId);\n if (msgIdx >= 0) {\n const hasResponse = messages.slice(msgIdx + 1).some(\n (m) => m.role === 'assistant' && (m.type === 'results' || m.type === 'proposal' || m.type === 'generated' || m.type === 'text'),\n );\n if (hasResponse) {\n logger(`Message ${messageId} already processed \u2014 skipping (idempotency guard)`);\n return;\n }\n }\n\n // Helper to post assistant messages\n const postMessage = async (content: string, type: string, data?: Record<string, unknown>) => {\n await apiPost(`/api/eval-conversations/${conversationId}/messages/assistant`, {\n content,\n type,\n data,\n });\n };\n\n // Decide what action to take\n const decision = await decideAction(target, evalCases, messages, messageContent, logger);\n\n logger(`Action: ${decision.action}`);\n\n switch (decision.action) {\n case 'run_evals':\n await handleRunEvals(target, evalCases, conversationId, postMessage, logger);\n break;\n\n case 'generate_cases':\n await handleGenerateCases(target, evalTargetId, conversationId, postMessage, logger);\n break;\n\n case 'analyze_results':\n case 'propose_changes':\n await handleAnalyzeAndPropose(target, evalCases, messages, messageContent, conversationId, postMessage, logger);\n break;\n\n case 'respond':\n await postMessage(decision.response, 'text');\n break;\n }\n}\n\nasync function decideAction(\n target: EvalTarget,\n evalCases: EvalCase[],\n messages: ConversationMessage[],\n latestMessage: string,\n logger: (msg: string) => void,\n): Promise<ActionDecision> {\n // Build conversation summary for context\n const recentMessages = messages.slice(-10).map((m) =>\n `${m.role}: ${m.content.slice(0, 200)}`\n ).join('\\n');\n\n const prompt = `You are an eval assistant. Decide what action to take based on the user's message.\n\n## Current State\n- Eval target: \"${target.name}\" v${target.version} (${target.type})\n- Eval cases: ${evalCases.length} defined${evalCases.length > 0 ? ` (${evalCases.map((e) => e.name).join(', ')})` : ''}\n- Content length: ${target.content.length} chars\n\n## Recent Conversation\n${recentMessages}\n\n## User's Latest Message\n${latestMessage}\n\n## Available Actions\n- run_evals: Run all eval cases against current version (with + without target). Choose this when the user wants to test, evaluate, or see how the instruction performs.\n- generate_cases: Auto-generate eval test cases from the instruction content. Choose this when there are no eval cases (${evalCases.length} currently) or user asks to create/generate tests.\n- analyze_results: Analyze recent eval failures and propose improvements based on user feedback. Choose this when user gives qualitative feedback like \"this is wrong\", \"missing X\", etc.\n- propose_changes: Propose specific content edits based on conversation. Choose this when user asks for improvements or changes.\n- respond: Just answer a question without running any evals. Choose this for informational questions.\n\nRespond with ONLY valid JSON:\n{\"action\": \"run_evals\", \"response\": \"What you want to say to the user\", \"params\": {}}`;\n\n const result = await executeEval({ prompt, timeout: 30_000 });\n\n try {\n let jsonStr = result.output.trim();\n const jsonMatch = jsonStr.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) jsonStr = jsonMatch[0];\n return JSON.parse(jsonStr) as ActionDecision;\n } catch {\n logger('Failed to parse action decision, defaulting to respond');\n // Fallback: simple heuristics\n const lower = latestMessage.toLowerCase();\n if (lower.includes('run') || lower.includes('test') || lower.includes('eval')) {\n return { action: 'run_evals', response: 'Running evals now...' };\n }\n if (lower.includes('generate') || lower.includes('create') || (evalCases.length === 0 && lower.includes('start'))) {\n return { action: 'generate_cases', response: 'Generating test cases...' };\n }\n return { action: 'respond', response: 'I can help you run evals, generate test cases, or analyze results. What would you like to do?' };\n }\n}\n\nasync function handleRunEvals(\n target: EvalTarget,\n evalCases: EvalCase[],\n _conversationId: string,\n postMessage: (content: string, type: string, data?: Record<string, unknown>) => Promise<void>,\n logger: (msg: string) => void,\n): Promise<void> {\n if (evalCases.length === 0) {\n await postMessage(\n 'No eval cases exist yet. Would you like me to generate some from the instruction content?',\n 'text',\n );\n return;\n }\n\n await postMessage(`Running ${evalCases.length} evals against \"${target.name}\" v${target.version}...`, 'status');\n\n const results: Array<{\n evalName: string;\n passed: boolean;\n output: string;\n expectations: string[];\n evidence: string;\n configuration: string;\n }> = [];\n\n // Run with_target\n for (const eval_ of evalCases) {\n logger(`Running: ${eval_.name} (with_target)`);\n const execResult = await executeEval({\n prompt: eval_.prompt,\n targetContent: target.content,\n timeout: 120_000,\n });\n\n let passed = false;\n let evidence = '';\n\n if (!execResult.error && eval_.expectations.length > 0) {\n const grading = await gradeEvalOutput({\n prompt: eval_.prompt,\n output: execResult.output,\n expectations: eval_.expectations,\n timeout: 120_000,\n });\n const summary = (grading as any)?.summary;\n passed = summary?.pass_rate >= 1.0;\n evidence = (grading as any)?.expectations\n ?.map((e: any) => `${e.passed ? 'PASS' : 'FAIL'}: ${e.text} \u2014 ${e.evidence}`)\n .join('\\n') ?? '';\n }\n\n results.push({\n evalName: eval_.name,\n passed,\n output: execResult.error ?? execResult.output.slice(0, 2000),\n expectations: eval_.expectations,\n evidence,\n configuration: 'with_target',\n });\n }\n\n const passedCount = results.filter((r) => r.passed).length;\n const total = results.length;\n\n await postMessage(\n `${passedCount} of ${total} evals passed (${Math.round((passedCount / total) * 100)}%)`,\n 'results',\n {\n summary: { passed: passedCount, failed: total - passedCount, total, passRate: passedCount / total },\n results: results.map((r) => ({\n evalName: r.evalName,\n passed: r.passed,\n output: r.output,\n expectations: r.expectations,\n evidence: r.evidence,\n })),\n },\n );\n}\n\nasync function handleGenerateCases(\n target: EvalTarget,\n _evalTargetId: string,\n _conversationId: string,\n postMessage: (content: string, type: string, data?: Record<string, unknown>) => Promise<void>,\n logger: (msg: string) => void,\n): Promise<void> {\n await postMessage('Generating eval cases from instruction content...', 'status');\n\n logger('Calling eval-from-context endpoint');\n\n // Use eval-from-context endpoint\n const result = await apiPost<{\n evalTarget: { id: string };\n evals: Array<{ id: string; name: string; prompt: string; expectations: string[] }>;\n job: { id: string } | null;\n }>('/api/eval-from-context', {\n contentHash: '',\n name: target.name,\n type: target.type,\n content: target.content,\n config: { skipBaseline: false, skipGrading: false },\n });\n\n const cases = result.evals ?? [];\n\n await postMessage(\n `Generated ${cases.length} eval cases. Review them below:`,\n 'generated',\n {\n cases: cases.map((c) => ({\n id: c.id,\n name: c.name,\n prompt: c.prompt,\n expectations: c.expectations,\n })),\n },\n );\n}\n\nasync function handleAnalyzeAndPropose(\n target: EvalTarget,\n evalCases: EvalCase[],\n messages: ConversationMessage[],\n userFeedback: string,\n _conversationId: string,\n postMessage: (content: string, type: string, data?: Record<string, unknown>) => Promise<void>,\n logger: (msg: string) => void,\n): Promise<void> {\n await postMessage('Analyzing results and preparing improvements...', 'status');\n\n // Find the most recent results message for context\n const lastResults = [...messages]\n .reverse()\n .find((m) => m.type === 'results');\n\n const evalResults = (lastResults?.data as any)?.results?.map((r: any) => ({\n evalName: r.evalName,\n prompt: '',\n expectations: r.expectations ?? [],\n grading: {\n summary: { pass_rate: r.passed ? 1 : 0 },\n expectations: r.expectations?.map((e: string) => ({\n text: e,\n passed: r.passed,\n evidence: r.evidence ?? '',\n })),\n },\n })) ?? [];\n\n logger(`Analyzing ${evalResults.length} eval results with user feedback`);\n\n // Include user feedback in the analysis\n const analysis = await analyzeEvalResults({\n content: target.content,\n evalResults,\n model: undefined,\n timeout: 120_000,\n userFeedback,\n });\n\n await postMessage(\n analysis.overallAssessment,\n 'proposal',\n {\n suggestions: analysis.suggestions,\n proposedContent: analysis.proposedContent,\n fromVersion: target.version,\n },\n );\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/chunk-KRBQLMOP.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
// src/lib/tmux.ts
|
|
2
|
-
import { spawn } from "node:child_process";
|
|
3
|
-
function tmuxSpawnEnv() {
|
|
4
|
-
const extraDirs = ["/opt/homebrew/bin", "/usr/local/bin"];
|
|
5
|
-
const parts = (process.env.PATH ?? "").split(":").filter(Boolean);
|
|
6
|
-
const missing = extraDirs.filter((d) => !parts.includes(d));
|
|
7
|
-
if (missing.length === 0) return process.env;
|
|
8
|
-
return { ...process.env, PATH: [...parts, ...missing].join(":") };
|
|
9
|
-
}
|
|
10
|
-
function runTmux(args) {
|
|
11
|
-
return new Promise((resolve) => {
|
|
12
|
-
const proc = spawn("tmux", args, {
|
|
13
|
-
stdio: ["ignore", "ignore", "pipe"],
|
|
14
|
-
env: tmuxSpawnEnv()
|
|
15
|
-
});
|
|
16
|
-
let stderr = "";
|
|
17
|
-
proc.stderr.on("data", (d) => {
|
|
18
|
-
stderr += d.toString();
|
|
19
|
-
});
|
|
20
|
-
proc.on("close", (code) => resolve({ code, stderr }));
|
|
21
|
-
proc.on("error", (err) => resolve({ code: null, stderr: err.message }));
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
function buildTmuxHasSessionArgs(target) {
|
|
25
|
-
return ["has-session", "-t", target];
|
|
26
|
-
}
|
|
27
|
-
function buildTmuxSendLiteralArgs(target, message) {
|
|
28
|
-
return ["send-keys", "-t", target, "-l", "--", message];
|
|
29
|
-
}
|
|
30
|
-
function buildTmuxSendEnterArgs(target) {
|
|
31
|
-
return ["send-keys", "-t", target, "Enter"];
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export {
|
|
35
|
-
tmuxSpawnEnv,
|
|
36
|
-
runTmux,
|
|
37
|
-
buildTmuxHasSessionArgs,
|
|
38
|
-
buildTmuxSendLiteralArgs,
|
|
39
|
-
buildTmuxSendEnterArgs
|
|
40
|
-
};
|
|
41
|
-
//# sourceMappingURL=chunk-KRBQLMOP.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/lib/tmux.ts"],
|
|
4
|
-
"sourcesContent": ["import { spawn } from 'node:child_process';\n\nexport interface TmuxRunResult {\n code: number | null;\n stderr: string;\n}\n\n// Homebrew installs tmux to /opt/homebrew/bin (Apple Silicon) or\n// /usr/local/bin (Intel). The launchd worker's minimal PATH omits\n// /opt/homebrew/bin, so a bare spawn('tmux') fails with ENOENT under launchd\n// \u2014 which silently flips every terminal target to `missing` and breaks live\n// send. Augment PATH at the spawn boundary. Mirrors the same fix in\n// packages/session terminal tmux (verified 2026-06-09).\nexport function tmuxSpawnEnv(): NodeJS.ProcessEnv {\n const extraDirs = ['/opt/homebrew/bin', '/usr/local/bin'];\n const parts = (process.env.PATH ?? '').split(':').filter(Boolean);\n const missing = extraDirs.filter((d) => !parts.includes(d));\n if (missing.length === 0) return process.env;\n return { ...process.env, PATH: [...parts, ...missing].join(':') };\n}\n\nexport function runTmux(args: string[]): Promise<TmuxRunResult> {\n return new Promise((resolve) => {\n const proc = spawn('tmux', args, {\n stdio: ['ignore', 'ignore', 'pipe'],\n env: tmuxSpawnEnv(),\n });\n let stderr = '';\n proc.stderr.on('data', (d: Buffer) => {\n stderr += d.toString();\n });\n proc.on('close', (code) => resolve({ code, stderr }));\n proc.on('error', (err) => resolve({ code: null, stderr: err.message }));\n });\n}\n\nexport function buildTmuxHasSessionArgs(target: string): string[] {\n return ['has-session', '-t', target];\n}\n\nexport function buildTmuxSendLiteralArgs(target: string, message: string): string[] {\n return ['send-keys', '-t', target, '-l', '--', message];\n}\n\nexport function buildTmuxSendEnterArgs(target: string): string[] {\n return ['send-keys', '-t', target, 'Enter'];\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,SAAS,aAAa;AAaf,SAAS,eAAkC;AAChD,QAAM,YAAY,CAAC,qBAAqB,gBAAgB;AACxD,QAAM,SAAS,QAAQ,IAAI,QAAQ,IAAI,MAAM,GAAG,EAAE,OAAO,OAAO;AAChE,QAAM,UAAU,UAAU,OAAO,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;AAC1D,MAAI,QAAQ,WAAW,EAAG,QAAO,QAAQ;AACzC,SAAO,EAAE,GAAG,QAAQ,KAAK,MAAM,CAAC,GAAG,OAAO,GAAG,OAAO,EAAE,KAAK,GAAG,EAAE;AAClE;AAEO,SAAS,QAAQ,MAAwC;AAC9D,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,UAAM,OAAO,MAAM,QAAQ,MAAM;AAAA,MAC/B,OAAO,CAAC,UAAU,UAAU,MAAM;AAAA,MAClC,KAAK,aAAa;AAAA,IACpB,CAAC;AACD,QAAI,SAAS;AACb,SAAK,OAAO,GAAG,QAAQ,CAAC,MAAc;AACpC,gBAAU,EAAE,SAAS;AAAA,IACvB,CAAC;AACD,SAAK,GAAG,SAAS,CAAC,SAAS,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC;AACpD,SAAK,GAAG,SAAS,CAAC,QAAQ,QAAQ,EAAE,MAAM,MAAM,QAAQ,IAAI,QAAQ,CAAC,CAAC;AAAA,EACxE,CAAC;AACH;AAEO,SAAS,wBAAwB,QAA0B;AAChE,SAAO,CAAC,eAAe,MAAM,MAAM;AACrC;AAEO,SAAS,yBAAyB,QAAgB,SAA2B;AAClF,SAAO,CAAC,aAAa,MAAM,QAAQ,MAAM,MAAM,OAAO;AACxD;AAEO,SAAS,uBAAuB,QAA0B;AAC/D,SAAO,CAAC,aAAa,MAAM,QAAQ,OAAO;AAC5C;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|