zidane 9.1.1 → 9.1.3
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/{acp-Di9WvMDF.js → acp-CeCavNlg.js} +7 -7
- package/dist/{acp-Di9WvMDF.js.map → acp-CeCavNlg.js.map} +1 -1
- package/dist/acp-cli.js +5 -5
- package/dist/acp.d.ts +2 -2
- package/dist/acp.js +1 -1
- package/dist/{agent-DJhpTS-B.js → agent-Dh_XZ7fj.js} +74 -19
- package/dist/agent-Dh_XZ7fj.js.map +1 -0
- package/dist/agent.d.ts +1 -1
- package/dist/agent.js +1 -1
- package/dist/{auth-store-port-DFgf22oo.js → auth-store-port-BKpjlJ8a.js} +2 -2
- package/dist/{auth-store-port-DFgf22oo.js.map → auth-store-port-BKpjlJ8a.js.map} +1 -1
- package/dist/{auto-update-restart-BFB7Ek87.js → auto-update-restart-CQJtndMG.js} +277 -41
- package/dist/auto-update-restart-CQJtndMG.js.map +1 -0
- package/dist/{browser-BcoCCB_n.js → browser-BkdeKnxO.js} +56 -2
- package/dist/browser-BkdeKnxO.js.map +1 -0
- package/dist/{browser-entry-ypi8CyE-.d.ts → browser-entry-BCwruqNa.d.ts} +10 -10
- package/dist/{browser-entry-ypi8CyE-.d.ts.map → browser-entry-BCwruqNa.d.ts.map} +1 -1
- package/dist/channels.d.ts +5 -5
- package/dist/chat/browser.d.ts +4 -4
- package/dist/chat/browser.js +6 -6
- package/dist/chat/pure.d.ts +5 -5
- package/dist/chat/pure.js +8 -8
- package/dist/chat.d.ts +5 -5
- package/dist/chat.js +55 -55
- package/dist/chat.js.map +1 -1
- package/dist/{cli-shared-CabruH8Z.js → cli-shared-DeRHgYvl.js} +4 -4
- package/dist/{cli-shared-CabruH8Z.js.map → cli-shared-DeRHgYvl.js.map} +1 -1
- package/dist/cli-style-DBEm6CyT.js +105 -0
- package/dist/cli-style-DBEm6CyT.js.map +1 -0
- package/dist/{client-core-CIixwznM.d.ts → client-core-C_4m_oL6.d.ts} +4 -4
- package/dist/{client-core-CIixwznM.d.ts.map → client-core-C_4m_oL6.d.ts.map} +1 -1
- package/dist/{client-CCaIXWue.d.ts → client-ygTASGis.d.ts} +2 -2
- package/dist/{client-CCaIXWue.d.ts.map → client-ygTASGis.d.ts.map} +1 -1
- package/dist/codemode-worker.js +8 -5
- package/dist/codemode-worker.js.map +1 -1
- package/dist/codemode.d.ts +16 -0
- package/dist/codemode.d.ts.map +1 -1
- package/dist/codemode.js +2 -2
- package/dist/{connection-loop-QmWL-fJf.d.ts → connection-loop-D_pRONCr.d.ts} +4 -4
- package/dist/{connection-loop-QmWL-fJf.d.ts.map → connection-loop-D_pRONCr.d.ts.map} +1 -1
- package/dist/contexts/daytona.d.ts +3 -3
- package/dist/contexts/docker.d.ts +1 -1
- package/dist/contexts/e2b.d.ts +2 -2
- package/dist/contexts/sandbox.d.ts +1 -1
- package/dist/{contexts-C72b0mMa.js → contexts-DLZTSRHU.js} +17 -106
- package/dist/contexts-DLZTSRHU.js.map +1 -0
- package/dist/contexts.d.ts +4 -4
- package/dist/contexts.js +2 -2
- package/dist/{credentials-wwETW8rI.js → credentials-Bqg-qNBM.js} +2 -2
- package/dist/{credentials-wwETW8rI.js.map → credentials-Bqg-qNBM.js.map} +1 -1
- package/dist/{cwd-picker-CcekODCt.js → cwd-picker-BsHA6HKv.js} +4 -4
- package/dist/{cwd-picker-CcekODCt.js.map → cwd-picker-BsHA6HKv.js.map} +1 -1
- package/dist/daemon-cli.js +4 -3
- package/dist/daemon-cli.js.map +1 -1
- package/dist/{decisions-CXmK0nz9.js → decisions-hsw5XS2g.js} +3 -1
- package/dist/decisions-hsw5XS2g.js.map +1 -0
- package/dist/{discovery-DycXFxdA.js → discovery-CX7nbMCn.js} +4 -4
- package/dist/{discovery-DycXFxdA.js.map → discovery-CX7nbMCn.js.map} +1 -1
- package/dist/durable/sqlite.d.ts +2 -2
- package/dist/durable.d.ts +1 -1
- package/dist/{engine-VQ86XGdG.js → engine-CxBGgU94.js} +6 -6
- package/dist/{engine-VQ86XGdG.js.map → engine-CxBGgU94.js.map} +1 -1
- package/dist/{eval-Bod0I1W_.js → eval-CfGUDAkN.js} +3 -3
- package/dist/{eval-Bod0I1W_.js.map → eval-CfGUDAkN.js.map} +1 -1
- package/dist/eval.d.ts +1 -1
- package/dist/eval.js +1 -1
- package/dist/{executor-C7RQrkEq.js → executor-j_LFRBwS.js} +4 -4
- package/dist/{executor-C7RQrkEq.js.map → executor-j_LFRBwS.js.map} +1 -1
- package/dist/{extension-mark-BqKdEZwF.js → extension-mark-_rhkDWL5.js} +9 -6
- package/dist/extension-mark-_rhkDWL5.js.map +1 -0
- package/dist/extensions/testing.d.ts +1 -1
- package/dist/extensions/testing.js +2 -2
- package/dist/{extensions-BCx4QuGB.js → extensions-ADlhBQ_1.js} +8 -8
- package/dist/{extensions-BCx4QuGB.js.map → extensions-ADlhBQ_1.js.map} +1 -1
- package/dist/{extensions-client-D8tEAcMw.d.ts → extensions-client-D4Q2XRKV.d.ts} +31 -5
- package/dist/extensions-client-D4Q2XRKV.d.ts.map +1 -0
- package/dist/extensions.d.ts +1 -1
- package/dist/extensions.js +6 -6
- package/dist/{fold-rules-DvLK8pbf.d.ts → fold-rules-1DpDwG9h.d.ts} +2 -2
- package/dist/{fold-rules-DvLK8pbf.d.ts.map → fold-rules-1DpDwG9h.d.ts.map} +1 -1
- package/dist/{google-Crva32sk.js → google-B-Dhmzzf.js} +2 -2
- package/dist/{google-Crva32sk.js.map → google-B-Dhmzzf.js.map} +1 -1
- package/dist/{headless-CCm-jLLT.js → headless-CQm19BL0.js} +4 -4
- package/dist/{headless-CCm-jLLT.js.map → headless-CQm19BL0.js.map} +1 -1
- package/dist/headless.d.ts +1 -1
- package/dist/headless.js +1 -1
- package/dist/history-worker.js +1 -1
- package/dist/{host-wO_6GW0y.js → host-C61ntFBC.js} +276 -103
- package/dist/host-C61ntFBC.js.map +1 -0
- package/dist/{host-BHMs9jsN.js → host-DEoEzQal.js} +13 -4
- package/dist/host-DEoEzQal.js.map +1 -0
- package/dist/{host-scoped-settings-CrbcqOkP.js → host-scoped-settings-WBYaCork.js} +2 -2
- package/dist/{host-scoped-settings-CrbcqOkP.js.map → host-scoped-settings-WBYaCork.js.map} +1 -1
- package/dist/{host-signals-Jsjd_-4g.js → host-signals-Cb2TlGtN.js} +5 -5
- package/dist/{host-signals-Jsjd_-4g.js.map → host-signals-Cb2TlGtN.js.map} +1 -1
- package/dist/{host-version-CNAr9pov.js → host-version-BIx4CuBM.js} +2 -2
- package/dist/{host-version-CNAr9pov.js.map → host-version-BIx4CuBM.js.map} +1 -1
- package/dist/{index-C6nnKu32.d.ts → index-B0PLo9jn.d.ts} +4 -4
- package/dist/{index-C6nnKu32.d.ts.map → index-B0PLo9jn.d.ts.map} +1 -1
- package/dist/{index-Djnc8Peh.d.ts → index-De4x-s76.d.ts} +14 -14
- package/dist/{index-Djnc8Peh.d.ts.map → index-De4x-s76.d.ts.map} +1 -1
- package/dist/{index-CGbOWa7y.d.ts → index-WlE93Q6d.d.ts} +411 -3
- package/dist/index-WlE93Q6d.d.ts.map +1 -0
- package/dist/{index-CCf_WeTQ.d.ts → index-f-XWIoYo.d.ts} +2 -2
- package/dist/{index-CCf_WeTQ.d.ts.map → index-f-XWIoYo.d.ts.map} +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +17 -17
- package/dist/ipc/browser-types.d.ts +304 -7
- package/dist/ipc/browser-types.d.ts.map +1 -1
- package/dist/ipc/browser.d.ts +4 -4
- package/dist/ipc/browser.js +2 -2
- package/dist/ipc/remote.d.ts +6 -6
- package/dist/ipc/remote.js +3 -3
- package/dist/{ipc-BzWhIybr.js → ipc-DiH_P-wr.js} +4 -4
- package/dist/{ipc-BzWhIybr.js.map → ipc-DiH_P-wr.js.map} +1 -1
- package/dist/ipc.d.ts +10 -10
- package/dist/ipc.js +8 -8
- package/dist/{json-Dj-YATkZ.js → json-BjClr43H.js} +2 -20
- package/dist/json-BjClr43H.js.map +1 -0
- package/dist/{links-CJG_rFvf.js → links-BbC_lOnn.js} +9 -9
- package/dist/{links-CJG_rFvf.js.map → links-BbC_lOnn.js.map} +1 -1
- package/dist/{loaded-entry-DTURJo_R.js → loaded-entry-C0vkCVNQ.js} +2 -2
- package/dist/{loaded-entry-DTURJo_R.js.map → loaded-entry-C0vkCVNQ.js.map} +1 -1
- package/dist/mcp.d.ts +1 -1
- package/dist/{media-type-BtA0cbfI.d.ts → media-type-ZSmAGHvg.d.ts} +188 -7
- package/dist/media-type-ZSmAGHvg.d.ts.map +1 -0
- package/dist/{memory-DuVGrzbl.js → memory-C3w8nO8f.js} +132 -31
- package/dist/memory-C3w8nO8f.js.map +1 -0
- package/dist/model-test-CAtJ76kM.js.map +1 -1
- package/dist/{move-session-kylExJ5H.js → move-session-D7ILECs-.js} +4 -4
- package/dist/{move-session-kylExJ5H.js.map → move-session-D7ILECs-.js.map} +1 -1
- package/dist/{nested-call-record-DlzPeTB7.js → nested-call-record-OayszZBQ.js} +4 -3
- package/dist/nested-call-record-OayszZBQ.js.map +1 -0
- package/dist/output/stream-json.d.ts +1 -1
- package/dist/output/terminal.d.ts +1 -1
- package/dist/{path-display-COVV71Yu.js → path-display-DRAEpKOU.js} +3 -3
- package/dist/{path-display-COVV71Yu.js.map → path-display-DRAEpKOU.js.map} +1 -1
- package/dist/plugins.d.ts +1 -1
- package/dist/{prelude-CVKoUzV8.js → prelude-BwiSR1uA.js} +16 -5
- package/dist/prelude-BwiSR1uA.js.map +1 -0
- package/dist/{presets-CBt6rFfS.js → presets-CMY43nUP.js} +3 -3
- package/dist/{presets-CBt6rFfS.js.map → presets-CMY43nUP.js.map} +1 -1
- package/dist/presets.d.ts +1 -1
- package/dist/presets.js +1 -1
- package/dist/{protocol-CEVqBO-q.d.ts → protocol-C2lqKuMd.d.ts} +50 -7
- package/dist/protocol-C2lqKuMd.d.ts.map +1 -0
- package/dist/protocol-DOGyHgLQ.js.map +1 -1
- package/dist/protocol-NSllElLw.js.map +1 -1
- package/dist/providers/anthropic.d.ts +1 -1
- package/dist/providers/arcee.d.ts +1 -1
- package/dist/providers/baseten.d.ts +1 -1
- package/dist/providers/cerebras.d.ts +1 -1
- package/dist/providers/google.d.ts +1 -1
- package/dist/providers/google.js +1 -1
- package/dist/providers/local.d.ts +1 -1
- package/dist/providers/neuralwatt.d.ts +1 -1
- package/dist/providers/openai-compat.d.ts +1 -1
- package/dist/providers/openai.d.ts +1 -1
- package/dist/providers/openrouter.d.ts +1 -1
- package/dist/providers/xai.d.ts +1 -1
- package/dist/{providers-Z0TaBp1O.js → providers-CpXV_uLE.js} +5 -5
- package/dist/providers-CpXV_uLE.js.map +1 -0
- package/dist/providers.d.ts +1 -1
- package/dist/providers.js +1 -1
- package/dist/{readonly-db-D7Z-k0pQ.js → readonly-db-DrbT8tX6.js} +2 -2
- package/dist/{readonly-db-D7Z-k0pQ.js.map → readonly-db-DrbT8tX6.js.map} +1 -1
- package/dist/{registry-BKjeBnoy.js → registry-CJHvmvaP.js} +2 -2
- package/dist/{registry-BKjeBnoy.js.map → registry-CJHvmvaP.js.map} +1 -1
- package/dist/{registry-B6Ww76iW.js → registry-CN6JlZKj.js} +2 -2
- package/dist/{registry-B6Ww76iW.js.map → registry-CN6JlZKj.js.map} +1 -1
- package/dist/{registry-B9INJwJR.js → registry-CnnKaY9s.js} +324 -39
- package/dist/registry-CnnKaY9s.js.map +1 -0
- package/dist/{remote-hosts-BMWoHCWO.js → remote-hosts-DoO9CJUQ.js} +4 -4
- package/dist/{remote-hosts-BMWoHCWO.js.map → remote-hosts-DoO9CJUQ.js.map} +1 -1
- package/dist/{repo-url-D4Dr8NfZ.js → repo-url-DLjjuVk_.js} +169 -2
- package/dist/repo-url-DLjjuVk_.js.map +1 -0
- package/dist/restate.d.ts +2 -2
- package/dist/{sandbox-BwiPGKF7.d.ts → sandbox-B4OW6oNx.d.ts} +2 -2
- package/dist/{sandbox-BwiPGKF7.d.ts.map → sandbox-B4OW6oNx.d.ts.map} +1 -1
- package/dist/script-progress-CrZ507Qq.js +900 -0
- package/dist/script-progress-CrZ507Qq.js.map +1 -0
- package/dist/session/sqlite.d.ts +1 -1
- package/dist/session.d.ts +1 -1
- package/dist/{setting-BQBSyUq0.js → setting-D_FpKFMw.js} +6 -6
- package/dist/{setting-BQBSyUq0.js.map → setting-D_FpKFMw.js.map} +1 -1
- package/dist/{settings-catalog-4IU2i_jG.js → settings-catalog-DEZlXP51.js} +14 -2
- package/dist/settings-catalog-DEZlXP51.js.map +1 -0
- package/dist/{settings-keys-iI_Y-7MC.js → settings-keys-CW2UgHgb.js} +3 -3
- package/dist/{settings-keys-iI_Y-7MC.js.map → settings-keys-CW2UgHgb.js.map} +1 -1
- package/dist/{skills-CFXRItJ6.js → skills-CEbosUlM.js} +2 -2
- package/dist/{skills-CFXRItJ6.js.map → skills-CEbosUlM.js.map} +1 -1
- package/dist/skills.d.ts +1 -1
- package/dist/skills.js +1 -1
- package/dist/{source-Bl1Z501r.js → source-3ZnEPOSa.js} +3 -2
- package/dist/source-3ZnEPOSa.js.map +1 -0
- package/dist/{sqlite-runtime-BZ2L4RaG.d.ts → sqlite-runtime-CS_LBaAN.d.ts} +2 -2
- package/dist/sqlite-runtime-CS_LBaAN.d.ts.map +1 -0
- package/dist/{src-BY_ND2xn.js → src-BmTXDta8.js} +2 -2
- package/dist/{src-BY_ND2xn.js.map → src-BmTXDta8.js.map} +1 -1
- package/dist/{store-C6gI7FfZ.js → store-ByCDaKgJ.js} +14 -3
- package/dist/store-ByCDaKgJ.js.map +1 -0
- package/dist/{system-freeze-m5o1sGIM.js → system-freeze-XgDPIwQS.js} +3 -3
- package/dist/{system-freeze-m5o1sGIM.js.map → system-freeze-XgDPIwQS.js.map} +1 -1
- package/dist/{todo-edits-CbukbjyV.js → todo-edits-Dyj32ds6.js} +4 -3
- package/dist/todo-edits-Dyj32ds6.js.map +1 -0
- package/dist/tools/fetch-url.d.ts +1 -1
- package/dist/tools/web-search.d.ts +1 -1
- package/dist/{tools-CVTGhggj.js → tools-BsrGQ8K4.js} +2 -2
- package/dist/{tools-CVTGhggj.js.map → tools-BsrGQ8K4.js.map} +1 -1
- package/dist/tools.d.ts +1 -1
- package/dist/tools.js +3 -3
- package/dist/{transcript-anchors-CiSi_UBn.js → transcript-anchors-DMjvyUjk.js} +3 -3
- package/dist/{transcript-anchors-CiSi_UBn.js.map → transcript-anchors-DMjvyUjk.js.map} +1 -1
- package/dist/{transcript-reconcile-jbSBjLq2.js → transcript-reconcile-DpQO85wl.js} +3 -3
- package/dist/{transcript-reconcile-jbSBjLq2.js.map → transcript-reconcile-DpQO85wl.js.map} +1 -1
- package/dist/tui.d.ts +9 -9
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +289 -38
- package/dist/tui.js.map +1 -1
- package/dist/{types-bDQagoiL.d.ts → types-2HrgolQz.d.ts} +20 -8
- package/dist/types-2HrgolQz.d.ts.map +1 -0
- package/dist/types-4q1bFG53.js +122 -0
- package/dist/types-4q1bFG53.js.map +1 -0
- package/dist/{types-DnRd9_cA.d.ts → types-SXqk6hLD.d.ts} +3 -3
- package/dist/{types-DnRd9_cA.d.ts.map → types-SXqk6hLD.d.ts.map} +1 -1
- package/dist/types-myxheQkw.js.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/{usage-summary-BfcXjiSM.js → usage-summary-BM7B3JdI.js} +2 -2
- package/dist/{usage-summary-BfcXjiSM.js.map → usage-summary-BM7B3JdI.js.map} +1 -1
- package/dist/{version-DqqqvHDP.js → version-szdW1Od9.js} +2 -2
- package/dist/{version-DqqqvHDP.js.map → version-szdW1Od9.js.map} +1 -1
- package/dist/{wait-task-BX4NcOOm.js → wait-task-BiI5UaZQ.js} +13 -3
- package/dist/wait-task-BiI5UaZQ.js.map +1 -0
- package/dist/{wire-CLm2rMK0.js → wire-C3l9jl9x.js} +2 -2
- package/dist/{wire-CLm2rMK0.js.map → wire-C3l9jl9x.js.map} +1 -1
- package/dist/{write-file-0E6TUJ9A.js → write-file-Dquu7MzB.js} +5 -3
- package/dist/write-file-Dquu7MzB.js.map +1 -0
- package/dist/{ws-DfGGYQ4W.js → ws-CEHi0CiB.js} +4 -4
- package/dist/{ws-DfGGYQ4W.js.map → ws-CEHi0CiB.js.map} +1 -1
- package/dist/{ws-client-CFMbhsNq.js → ws-client-t8XNWxcq.js} +2 -2
- package/dist/{ws-client-CFMbhsNq.js.map → ws-client-t8XNWxcq.js.map} +1 -1
- package/docs/CHAT.md +55 -0
- package/docs/CODEMODE.md +37 -0
- package/docs/EXTENSIONS.md +8 -6
- package/docs/RELEASE-NOTES-NEXT.md +48 -1
- package/docs/RELEASE.md +9 -1
- package/package.json +2 -3
- package/dist/agent-DJhpTS-B.js.map +0 -1
- package/dist/auto-update-restart-BFB7Ek87.js.map +0 -1
- package/dist/browser-BcoCCB_n.js.map +0 -1
- package/dist/contexts-C72b0mMa.js.map +0 -1
- package/dist/decisions-CXmK0nz9.js.map +0 -1
- package/dist/extension-mark-BqKdEZwF.js.map +0 -1
- package/dist/extensions-client-D8tEAcMw.d.ts.map +0 -1
- package/dist/host-BHMs9jsN.js.map +0 -1
- package/dist/host-wO_6GW0y.js.map +0 -1
- package/dist/index-CGbOWa7y.d.ts.map +0 -1
- package/dist/json-Dj-YATkZ.js.map +0 -1
- package/dist/media-type-BtA0cbfI.d.ts.map +0 -1
- package/dist/memory-DuVGrzbl.js.map +0 -1
- package/dist/nested-call-events-BYk8XvGX.js +0 -182
- package/dist/nested-call-events-BYk8XvGX.js.map +0 -1
- package/dist/nested-call-record-DlzPeTB7.js.map +0 -1
- package/dist/prelude-CVKoUzV8.js.map +0 -1
- package/dist/protocol-CEVqBO-q.d.ts.map +0 -1
- package/dist/providers-Z0TaBp1O.js.map +0 -1
- package/dist/registry-B9INJwJR.js.map +0 -1
- package/dist/repo-url-D4Dr8NfZ.js.map +0 -1
- package/dist/settings-catalog-4IU2i_jG.js.map +0 -1
- package/dist/source-Bl1Z501r.js.map +0 -1
- package/dist/sqlite-runtime-BZ2L4RaG.d.ts.map +0 -1
- package/dist/store-C6gI7FfZ.js.map +0 -1
- package/dist/todo-edits-CbukbjyV.js.map +0 -1
- package/dist/types-DTMEhKJO.js +0 -14
- package/dist/types-DTMEhKJO.js.map +0 -1
- package/dist/types-bDQagoiL.d.ts.map +0 -1
- package/dist/wait-task-BX4NcOOm.js.map +0 -1
- package/dist/write-file-0E6TUJ9A.js.map +0 -1
- package/scripts/eval.ts +0 -179
package/scripts/eval.ts
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
/**
|
|
3
|
-
* Eval runner CLI. Parses flags into ZIDANE_EVAL_* env vars and spawns the
|
|
4
|
-
* real-inference test file. Keeps the flag surface stable regardless of how
|
|
5
|
-
* `bun test` treats unknown argv.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* bun run test:eval --model claude-opus-4-8 --scorer claude-opus-4-8
|
|
9
|
-
* bun run test:eval --provider openai --model gpt-5 --filter vite --repeat 3
|
|
10
|
-
* bun run test:eval --provider all # every provider with an API key in env/.env
|
|
11
|
-
* bun run test:eval --provider baseten --models zai-org/GLM-5.1,moonshotai/Kimi-K2.6
|
|
12
|
-
* bun run test:eval --setups build,codemode -g vite-todolist-react --repeat 3 # Build vs Codemode
|
|
13
|
-
*
|
|
14
|
-
* Flags:
|
|
15
|
-
* --provider <name> agent provider (anthropic|openai|openrouter|cerebras|arcee|baseten|local).
|
|
16
|
-
* `*` or `all` runs every provider with a configured API key, on default models.
|
|
17
|
-
* --model <id> agent model override
|
|
18
|
-
* --models <id1>,<id2> run every eval on each listed model (requires a specific --provider)
|
|
19
|
-
* --judge-provider <name> judge provider (defaults to agent provider)
|
|
20
|
-
* --judge-model | --scorer judge model override
|
|
21
|
-
* --filter | -g <text> run only evals whose suite/id/tag contains <text>
|
|
22
|
-
* --repeat <n> repeat each eval n times
|
|
23
|
-
* --concurrency | --jobs <n> max eval cases to run in parallel (default 4)
|
|
24
|
-
* --report-dir <dir> write per-case + run-summary JSON here
|
|
25
|
-
* --artifact-dir <dir> write per-case result/events/transcript/workspace here
|
|
26
|
-
* --baseline [path] write a settings+measurements snapshot after the run
|
|
27
|
-
* (default path: benchmarks/evals/baseline.json)
|
|
28
|
-
* --extensions <names> enable repo extensions for the run, comma-separated
|
|
29
|
-
* (e.g. pxpipe,headroom — see benchmarks/evals/_extensions.ts)
|
|
30
|
-
* --setups <names> run every eval once per agent setup and compare them
|
|
31
|
-
* (e.g. build,codemode — see benchmarks/evals/_setups.ts)
|
|
32
|
-
* --timeout <ms> per-test timeout (default 180000)
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
import { existsSync } from 'node:fs'
|
|
36
|
-
import { resolve } from 'node:path'
|
|
37
|
-
|
|
38
|
-
const DEFAULT_TIMEOUT_MS = '180000'
|
|
39
|
-
const EVAL_TEST_FILE = 'test/eval-real.ts'
|
|
40
|
-
const DEFAULT_BASELINE_PATH = 'benchmarks/evals/baseline.json'
|
|
41
|
-
|
|
42
|
-
const FLAG_TO_ENV: Record<string, string> = {
|
|
43
|
-
'provider': 'ZIDANE_EVAL_PROVIDER',
|
|
44
|
-
'model': 'ZIDANE_EVAL_MODEL',
|
|
45
|
-
'models': 'ZIDANE_EVAL_MODELS',
|
|
46
|
-
'judge-provider': 'ZIDANE_EVAL_JUDGE_PROVIDER',
|
|
47
|
-
'judge-model': 'ZIDANE_EVAL_JUDGE_MODEL',
|
|
48
|
-
'scorer': 'ZIDANE_EVAL_JUDGE_MODEL',
|
|
49
|
-
'filter': 'ZIDANE_EVAL_FILTER',
|
|
50
|
-
'g': 'ZIDANE_EVAL_FILTER',
|
|
51
|
-
'repeat': 'ZIDANE_EVAL_REPEAT',
|
|
52
|
-
'concurrency': 'ZIDANE_EVAL_CONCURRENCY',
|
|
53
|
-
'jobs': 'ZIDANE_EVAL_CONCURRENCY',
|
|
54
|
-
'report-dir': 'ZIDANE_EVAL_REPORT_DIR',
|
|
55
|
-
'artifact-dir': 'ZIDANE_EVAL_ARTIFACT_DIR',
|
|
56
|
-
'baseline': 'ZIDANE_EVAL_BASELINE',
|
|
57
|
-
'extensions': 'ZIDANE_EVAL_EXTENSIONS',
|
|
58
|
-
'setups': 'ZIDANE_EVAL_SETUPS',
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/** Flags whose value may be omitted, falling back to a default. */
|
|
62
|
-
const OPTIONAL_VALUE_FLAGS: Record<string, string> = {
|
|
63
|
-
baseline: DEFAULT_BASELINE_PATH,
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const NUMERIC_FLAGS = new Set(['repeat', 'concurrency', 'jobs', 'timeout'])
|
|
67
|
-
|
|
68
|
-
export interface EvalCliParseOptions {
|
|
69
|
-
cwd?: string
|
|
70
|
-
now?: Date
|
|
71
|
-
existingEnv?: Record<string, string | undefined>
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export interface EvalCliParseResult {
|
|
75
|
-
env: Record<string, string>
|
|
76
|
-
timeout: string
|
|
77
|
-
testFile: string
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export class EvalCliError extends Error {
|
|
81
|
-
constructor(message: string, readonly exitCode = 2) {
|
|
82
|
-
super(message)
|
|
83
|
-
this.name = 'EvalCliError'
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export function parseEvalCliArgs(argv: string[], options: EvalCliParseOptions = {}): EvalCliParseResult {
|
|
88
|
-
const env: Record<string, string> = {}
|
|
89
|
-
let timeout = DEFAULT_TIMEOUT_MS
|
|
90
|
-
for (let i = 0; i < argv.length; i++) {
|
|
91
|
-
const token = argv[i]
|
|
92
|
-
if (!token.startsWith('-'))
|
|
93
|
-
continue
|
|
94
|
-
const key = token.replace(/^-+/, '')
|
|
95
|
-
const eq = key.indexOf('=')
|
|
96
|
-
const rawKey = eq === -1 ? key : key.slice(0, eq)
|
|
97
|
-
const inlineVal = eq === -1 ? undefined : key.slice(eq + 1)
|
|
98
|
-
let value = inlineVal ?? (argv[i + 1] && !argv[i + 1].startsWith('-') ? argv[++i] : undefined)
|
|
99
|
-
if (!value) {
|
|
100
|
-
const fallback = OPTIONAL_VALUE_FLAGS[rawKey]
|
|
101
|
-
if (!fallback)
|
|
102
|
-
throw new EvalCliError(`Missing value for eval flag: --${rawKey}`)
|
|
103
|
-
value = fallback
|
|
104
|
-
}
|
|
105
|
-
if (NUMERIC_FLAGS.has(rawKey))
|
|
106
|
-
assertPositiveInteger(rawKey, value)
|
|
107
|
-
if (rawKey === 'timeout') {
|
|
108
|
-
timeout = value
|
|
109
|
-
continue
|
|
110
|
-
}
|
|
111
|
-
const envKey = FLAG_TO_ENV[rawKey]
|
|
112
|
-
if (!envKey)
|
|
113
|
-
throw new EvalCliError(`Unknown eval flag: --${rawKey}`)
|
|
114
|
-
env[envKey] = value
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Cross-flag validation. `_config.ts` re-checks at run time (env vars can
|
|
118
|
-
// come from elsewhere), but failing here gives a clean exit-2 before any
|
|
119
|
-
// test process spawns.
|
|
120
|
-
const provider = env.ZIDANE_EVAL_PROVIDER
|
|
121
|
-
const wildcard = provider === '*' || provider === 'all'
|
|
122
|
-
if (env.ZIDANE_EVAL_MODELS && env.ZIDANE_EVAL_MODEL)
|
|
123
|
-
throw new EvalCliError('Use either --model or --models, not both.')
|
|
124
|
-
if (env.ZIDANE_EVAL_MODELS && (!provider || wildcard))
|
|
125
|
-
throw new EvalCliError('--models requires a specific --provider.')
|
|
126
|
-
if (wildcard && env.ZIDANE_EVAL_MODEL)
|
|
127
|
-
throw new EvalCliError('--model cannot be combined with --provider=* — each detected provider runs its default model.')
|
|
128
|
-
|
|
129
|
-
const cwd = options.cwd ?? process.cwd()
|
|
130
|
-
const existingEnv = options.existingEnv ?? process.env
|
|
131
|
-
if (env.ZIDANE_EVAL_BASELINE)
|
|
132
|
-
env.ZIDANE_EVAL_BASELINE = resolve(cwd, env.ZIDANE_EVAL_BASELINE)
|
|
133
|
-
// Default a run-scoped artifact dir so the summary can render clickable links
|
|
134
|
-
// to each case's output. Overridable via --artifact-dir / ZIDANE_EVAL_ARTIFACT_DIR.
|
|
135
|
-
if (!env.ZIDANE_EVAL_ARTIFACT_DIR && !existingEnv.ZIDANE_EVAL_ARTIFACT_DIR) {
|
|
136
|
-
const stamp = (options.now ?? new Date()).toISOString().replace(/[:.]/g, '-')
|
|
137
|
-
env.ZIDANE_EVAL_ARTIFACT_DIR = `${cwd}/.zidane/evals/${stamp}`
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
return { env, timeout, testFile: resolve(cwd, EVAL_TEST_FILE) }
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
export async function runEvalCli(argv: string[]): Promise<number> {
|
|
144
|
-
let parsed: EvalCliParseResult
|
|
145
|
-
try {
|
|
146
|
-
parsed = parseEvalCliArgs(argv)
|
|
147
|
-
}
|
|
148
|
-
catch (err) {
|
|
149
|
-
if (err instanceof EvalCliError) {
|
|
150
|
-
console.error(err.message)
|
|
151
|
-
return err.exitCode
|
|
152
|
-
}
|
|
153
|
-
throw err
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if (!existsSync(parsed.testFile)) {
|
|
157
|
-
console.error('`bun run test:eval` is only available from a zidane source checkout.')
|
|
158
|
-
console.error(`Missing ${parsed.testFile}.`)
|
|
159
|
-
return 1
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
const proc = Bun.spawn(['bun', 'test', `--timeout=${parsed.timeout}`, parsed.testFile], {
|
|
163
|
-
env: { ...process.env, ...parsed.env },
|
|
164
|
-
stdout: 'inherit',
|
|
165
|
-
stderr: 'inherit',
|
|
166
|
-
stdin: 'inherit',
|
|
167
|
-
})
|
|
168
|
-
|
|
169
|
-
return await proc.exited
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
function assertPositiveInteger(flag: string, value: string): void {
|
|
173
|
-
const parsed = Number(value)
|
|
174
|
-
if (!Number.isInteger(parsed) || parsed <= 0)
|
|
175
|
-
throw new EvalCliError(`Eval flag --${flag} must be a positive integer, got ${JSON.stringify(value)}`)
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
if (import.meta.main)
|
|
179
|
-
process.exit(await runEvalCli(process.argv.slice(2)))
|