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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-progress-CrZ507Qq.js","names":[],"sources":["../src/chat/command-notes.ts","../src/chat/nested-call-events.ts","../src/chat/ansi.ts","../src/chat/output-tail.ts","../src/chat/script-progress.ts"],"sourcesContent":["/**\n * How a `/` command reads in the transcript: the invocation is the user's\n * prompt, everything the command did is that one exchange, and the notes it\n * left for the model (`ctx.appendContext`) close it as one quiet receipt\n * line. Shared by the live hosts, the replay in `eventsFromTurns`, and both\n * renderers, so the shape cannot drift between them.\n */\nimport type { StreamEvent } from './types'\n\n/** The persisted invocation header block: `` `❯ /commit args` ``. */\nexport function commandHeaderBlock(invocation: string): string {\n return `\\`❯ ${invocation}\\``\n}\n\n/** `/name args` from a persisted header block, or null when the text is not one. */\nexport function parseCommandHeader(text: string): string | null {\n const match = /^`❯ (\\/[\\s\\S]+)`$/.exec(text.trim())\n return match ? match[1]! : null\n}\n\nconst PREFIX_SEPARATOR = /^\\s*(?:[:·—-]\\s*)?/\n\n/**\n * The receipt text for one note. Older displays repeat the command\n * (`/commit: 83dfea7`, `/review — 3 reviewers, fixes applied`); the prompt\n * bubble above already names it, so the prefix goes, and a leftover ` — `\n * becomes a comma. A note without a display shows its first line.\n */\nexport function commandNoteText(display: string | undefined, text: string, invocation?: string): string {\n let line = (display ?? text.split('\\n').find(l => l.trim()) ?? '').trim()\n const name = invocation?.split(/\\s/, 1)[0]\n const prefixes = [invocation, name].filter((p): p is string => Boolean(p))\n const prefix = prefixes.find(p => line.startsWith(p))\n ?? /^\\/[\\w.:-]+/.exec(line)?.[0]\n if (prefix) {\n const rest = line.slice(prefix.length).replace(PREFIX_SEPARATOR, '')\n // Older /commit displays were the bare sha.\n if (rest)\n line = /^[0-9a-f]{7,40}$/.test(rest) ? `committed ${rest}` : rest\n }\n line = line.replace(/\\s+—\\s+/g, ', ')\n return line.length > 160 ? `${line.slice(0, 159)}…` : line\n}\n\n/**\n * The `display` a context note persists with: the command's marker, its\n * first line when it gave none, or `''` for a model-only note\n * (`display: false`), which shows nothing.\n */\nexport function noteDisplay(display: string | false | undefined, text: string): string {\n return display === false ? '' : (display ?? commandNoteText(undefined, text))\n}\n\n/** A command step label: the display as given, a leftover ` — ` turned into a comma. */\nexport function commandStepLabel(display: string): string {\n return display.replace(/\\s+—\\s+/g, ', ')\n}\n\nconst merged = new WeakMap<StreamEvent, { key: string, event: StreamEvent }>()\n\nfunction isTopPrompt(event: StreamEvent): boolean {\n return event.kind === 'user-prompt' && !event.childId && (event.depth ?? 0) === 0\n}\n\n/**\n * One receipt line per exchange: every `command-note` in an exchange moves\n * to its end and joins into a single event (`committed 83dfea7, pushed to\n * origin/main`). Returns `events` itself when there is nothing to merge;\n * the merged event keeps its identity while its notes do not change, so\n * memoised rows stay put.\n *\n * @param events - Transcript events in display order.\n */\nexport function gatherCommandNotes<E extends StreamEvent>(events: readonly E[]): readonly E[] {\n if (!events.some(e => e.kind === 'command-note'))\n return events\n const out: E[] = []\n let notes: E[] = []\n const flush = () => {\n if (notes.length === 0)\n return\n const first = notes[0]!\n const key = notes.map(n => n.text).join('\\u0000')\n let event = first\n if (notes.length > 1) {\n const cached = merged.get(first)\n event = cached?.key === key ? cached.event as E : { ...first, text: notes.map(n => n.text).join(', ') }\n merged.set(first, { key, event })\n }\n // Ahead of the separators that close the exchange.\n let at = out.length\n while (at > 0 && out[at - 1]!.kind === 'separator')\n at--\n out.splice(at, 0, event)\n notes = []\n }\n for (const event of events) {\n if (isTopPrompt(event))\n flush()\n if (event.kind === 'command-note' && !event.childId) {\n notes.push(event)\n continue\n }\n out.push(event)\n }\n flush()\n return out.length === events.length && out.every((e, i) => e === events[i]) ? events : out\n}\n","/**\n * Transcript events for calls a tool made through `ToolContext.callTool`\n * (a codemode script's `tools.*`). One builder for both paths, so a live\n * run and a reload produce the same rows: the live hooks call\n * {@link nestedToolEvent} / {@link nestedResultEvent} as each call starts and\n * ends, the replay expands the persisted record with {@link nestedRecordEvents}.\n *\n * Every event carries `parentToolCallId`; renderers group them under the\n * calling row (and hide them unless `Settings.codemodeShowCalls`). Results are\n * previews (`previewNestedOutput`), the same length either way.\n *\n * Node-free (exported from `zidane/chat/pure`).\n */\n\nimport type { NestedToolCallRecord } from '../types'\nimport type { StreamEvent } from './types'\nimport { previewNestedOutput } from '../nested-call-record'\n\n/** `name(json args)`, as `store.ts`' `toolCallPreview` writes it (not imported: `store.ts` imports this module). */\nfunction callPreview(name: string, input: Record<string, unknown>): string {\n const args = JSON.stringify(input)\n return args && args !== '{}' ? `${name}(${args})` : name\n}\n\n/** Where nested events sit in the transcript; copied onto each event when set. */\nexport interface NestedEventTag {\n /** Turn of the calling tool. */\n turnId?: string\n /** Subagent that made the call; absent for the top-level agent. */\n childId?: string\n /** Nesting depth: 0 for the top-level agent, 1 and up for subagents. */\n depth?: number\n}\n\nfunction tagFields(tag: NestedEventTag | undefined): NestedEventTag {\n return {\n ...(tag?.turnId ? { turnId: tag.turnId } : {}),\n ...(tag?.childId !== undefined ? { childId: tag.childId } : {}),\n ...(tag?.depth !== undefined ? { depth: tag.depth } : {}),\n }\n}\n\n/**\n * The `tool` row for a nested call as it starts.\n *\n * @param call - The nested call.\n * @param call.callId - Its call id.\n * @param call.name - Tool it called.\n * @param call.input - Arguments it passed.\n * @param call.parentToolCallId - Id of the calling tool, which the row groups under.\n * @param call.runsNestedAgent - The called tool runs a subagent.\n * @param call.startedAt - When the call started (epoch ms, the host's clock), live only.\n * @param tag - Turn, subagent and depth to stamp on the event.\n */\nexport function nestedToolEvent(call: { callId: string, name: string, input: Record<string, unknown>, parentToolCallId: string, runsNestedAgent?: boolean, startedAt?: number }, tag?: NestedEventTag): StreamEvent {\n return {\n kind: 'tool',\n text: callPreview(call.name, call.input),\n tool: call.name,\n callId: call.callId,\n input: call.input,\n parentToolCallId: call.parentToolCallId,\n ...(call.runsNestedAgent ? { runsNestedAgent: true as const } : {}),\n ...(call.startedAt !== undefined ? { startedAt: call.startedAt } : {}),\n ...tagFields(tag),\n }\n}\n\n/**\n * The `tool-result` row for a nested call as it ends; the output is cut to a preview.\n *\n * @param result - The nested call's result.\n * @param result.callId - Its call id.\n * @param result.name - Tool it called.\n * @param result.output - Full output; the row keeps a preview.\n * @param result.isError - The call failed.\n * @param result.parentToolCallId - Id of the calling tool, which the row groups under.\n * @param result.runsNestedAgent - The called tool runs a subagent.\n * @param result.durationMs - How long the call ran. `0` reads as unknown: a durable run's records carry no wall time.\n * @param tag - Turn, subagent and depth to stamp on the event.\n */\nexport function nestedResultEvent(result: { callId: string, name: string, output: string, isError: boolean, parentToolCallId: string, runsNestedAgent?: boolean, durationMs?: number }, tag?: NestedEventTag): StreamEvent {\n return {\n kind: 'tool-result',\n text: previewNestedOutput(result.output).output,\n tool: result.name,\n callId: result.callId,\n parentToolCallId: result.parentToolCallId,\n ...(result.runsNestedAgent ? { runsNestedAgent: true as const } : {}),\n ...(result.isError ? { isError: true as const } : {}),\n ...(result.durationMs ? { durationMs: result.durationMs } : {}),\n ...tagFields(tag),\n }\n}\n\n/**\n * A persisted record as the events the live run emitted for it.\n *\n * @param records - Nested calls stored on the calling tool's result.\n * @param parentToolCallId - Id of the calling tool.\n * @param tag - Turn, subagent and depth to stamp on the events.\n */\nexport function nestedRecordEvents(records: readonly NestedToolCallRecord[], parentToolCallId: string, tag?: NestedEventTag): StreamEvent[] {\n return records.flatMap(record => [\n nestedToolEvent({ callId: record.id, name: record.name, input: record.input ?? {}, parentToolCallId, runsNestedAgent: record.runsNestedAgent }, tag),\n nestedResultEvent({ callId: record.id, name: record.name, output: record.output ?? '', isError: record.status !== 'ok', parentToolCallId, runsNestedAgent: record.runsNestedAgent, durationMs: record.durationMs }, tag),\n ])\n}\n","/**\n * Terminal output as styled lines: ANSI SGR codes (colors, bold, dim, italic,\n * underline, inverse) become styles on spans of text; every other escape\n * (cursor moves, titles, charsets) is dropped; a carriage return rewrites its\n * line as a terminal does (a progress bar keeps its last state), backspace\n * erases. One incremental parser ({@link createAnsiLines}) serves the whole\n * text ({@link parseAnsi}) and plain text ({@link stripAnsi}). A line cut\n * out of a stream keeps its spans, so it renders with the colors it had.\n *\n * Node-free (exported from `zidane/chat/pure`).\n */\n\n/** A color: one of the 256 palette entries (0 to 15 are the theme's), or `#rrggbb`. */\nexport type AnsiColor = number | `#${string}`\n\n/** How a span of text is drawn. Absent fields are the default. */\nexport interface AnsiStyle {\n /** Text color. */\n fg?: AnsiColor\n /** Background color. */\n bg?: AnsiColor\n /** Bold (SGR 1). */\n bold?: true\n /** Faint (SGR 2). */\n dim?: true\n /** Italic (SGR 3). */\n italic?: true\n /** Underlined (SGR 4). */\n underline?: true\n /** Foreground and background swapped. */\n inverse?: true\n}\n\n/** Text in one style. `style` is absent for plain text. */\nexport interface AnsiSpan {\n /** The text, without escapes. */\n text: string\n /** Its style, absent for plain text. */\n style?: AnsiStyle\n}\n\n/** Reads terminal output in chunks, as lines of styled spans. */\nexport interface AnsiLines {\n /** Feeds a chunk; returns the lines it completed, without their newlines. */\n push: (chunk: string) => AnsiSpan[][]\n /** The line being written, not ended yet. */\n partial: () => AnsiSpan[]\n}\n\nconst ESC = 0x1B\n/** Parser states: plain text, after ESC, in a CSI, in an OSC / DCS string, after ESC inside one. */\nconst TEXT = 0\nconst AFTER_ESC = 1\nconst CSI = 2\nconst STRING = 3\nconst STRING_ESC = 4\n\n/**\n * Whether `text` holds anything {@link parseAnsi} changes: an escape, a carriage return, a backspace.\n *\n * @param text - Terminal output.\n */\nexport function hasAnsi(text: string): boolean {\n for (let i = 0; i < text.length; i++) {\n const code = text.charCodeAt(i)\n if (code === ESC || code === 0x9B || code === 0x9D || code === 0x0D || code === 0x08)\n return true\n }\n return false\n}\n\nfunction sameStyle(a: AnsiStyle | undefined, b: AnsiStyle | undefined): boolean {\n if (a === b)\n return true\n if (!a || !b)\n return false\n return a.fg === b.fg && a.bg === b.bg && a.bold === b.bold && a.dim === b.dim && a.italic === b.italic && a.underline === b.underline && a.inverse === b.inverse\n}\n\nfunction hex(n: number): string {\n return Math.max(0, Math.min(255, n)).toString(16).padStart(2, '0')\n}\n\n/** An extended color (`38;5;n`, `38;2;r;g;b`) read from `params` at `i` (the `5` or `2`); returns it and the index after it. */\nfunction extendedColor(params: number[], i: number): [AnsiColor | undefined, number] {\n if (params[i] === 5)\n return [params[i + 1] !== undefined ? Math.max(0, Math.min(255, params[i + 1]!)) : undefined, i + 2]\n if (params[i] === 2)\n return [`#${hex(params[i + 1] ?? 0)}${hex(params[i + 2] ?? 0)}${hex(params[i + 3] ?? 0)}`, i + 4]\n return [undefined, i + 1]\n}\n\n/** `style` after an SGR sequence. A style object is never changed, so spans can compare by reference. */\nfunction applySgr(style: AnsiStyle | undefined, raw: string): AnsiStyle | undefined {\n const params = raw === '' ? [0] : raw.split(/[;:]/).map(p => (p === '' ? 0 : Number(p)))\n let next: AnsiStyle = { ...style }\n for (let i = 0; i < params.length; i++) {\n const p = params[i]!\n if (p === 0) {\n next = {}\n }\n else if (p === 1) {\n next.bold = true\n }\n else if (p === 2) {\n next.dim = true\n }\n else if (p === 3) {\n next.italic = true\n }\n else if (p === 4) {\n next.underline = true\n }\n else if (p === 7) {\n next.inverse = true\n }\n else if (p === 22) {\n delete next.bold\n delete next.dim\n }\n else if (p === 23) {\n delete next.italic\n }\n else if (p === 24) {\n delete next.underline\n }\n else if (p === 27) {\n delete next.inverse\n }\n else if (p >= 30 && p <= 37) {\n next.fg = p - 30\n }\n else if (p >= 90 && p <= 97) {\n next.fg = p - 90 + 8\n }\n else if (p === 39) {\n delete next.fg\n }\n else if (p >= 40 && p <= 47) {\n next.bg = p - 40\n }\n else if (p >= 100 && p <= 107) {\n next.bg = p - 100 + 8\n }\n else if (p === 49) {\n delete next.bg\n }\n else if (p === 38 || p === 48) {\n const [color, after] = extendedColor(params, i + 1)\n if (color !== undefined) {\n if (p === 38)\n next.fg = color\n else\n next.bg = color\n }\n i = after - 1\n }\n }\n const empty = Object.keys(next).length === 0\n if (empty)\n return undefined\n return sameStyle(style, next) ? style : next\n}\n\n/** Creates an incremental {@link AnsiLines} reader. The style carries across chunks and lines, as in a terminal. */\nexport function createAnsiLines(): AnsiLines {\n let state = TEXT\n let params = ''\n let style: AnsiStyle | undefined\n let line: AnsiSpan[] = []\n /** A `\\r` arrived: the next printable starts the line over, unless `\\n` follows. */\n let pendingCr = false\n\n const append = (text: string): void => {\n if (pendingCr) {\n line = []\n pendingCr = false\n }\n const last = line[line.length - 1]\n if (last && sameStyle(last.style, style)) {\n last.text += text\n return\n }\n line.push(style ? { text, style } : { text })\n }\n const backspace = (): void => {\n const last = line[line.length - 1]\n if (!last)\n return\n last.text = last.text.slice(0, -1)\n if (last.text === '')\n line.pop()\n }\n\n return {\n push(chunk) {\n const done: AnsiSpan[][] = []\n let i = 0\n while (i < chunk.length) {\n const code = chunk.charCodeAt(i)\n if (state === TEXT) {\n if (code === ESC) {\n state = AFTER_ESC\n }\n else if (code === 0x0A) {\n done.push(line)\n line = []\n pendingCr = false\n }\n else if (code === 0x0D) {\n pendingCr = true\n }\n else if (code === 0x08) {\n backspace()\n }\n else if (code === 0x9B) {\n state = CSI\n params = ''\n }\n else if (code === 0x9D) {\n state = STRING\n }\n else if (code === 0x09 || (code >= 0x20 && !(code >= 0x7F && code < 0xA0))) {\n // A run of plain characters at once.\n let end = i + 1\n while (end < chunk.length) {\n const c = chunk.charCodeAt(end)\n if (c === ESC || c === 0x0A || c === 0x0D || c === 0x08 || (c < 0x20 && c !== 0x09) || (c >= 0x7F && c < 0xA0))\n break\n end++\n }\n append(chunk.slice(i, end))\n i = end\n continue\n }\n }\n else if (state === AFTER_ESC) {\n if (code === 0x5B) {\n state = CSI\n params = ''\n }\n else if (code === 0x5D || code === 0x50 || code === 0x58 || code === 0x5E || code === 0x5F) {\n state = STRING\n }\n else if (code < 0x20 || code > 0x2F) {\n // An intermediate byte (`ESC ( B`) waits for its final byte; anything else ends here.\n state = TEXT\n }\n }\n else if (state === CSI) {\n if (code >= 0x40 && code <= 0x7E) {\n if (code === 0x6D)\n style = applySgr(style, params)\n state = TEXT\n }\n else if (params.length < 64) {\n params += chunk[i]\n }\n }\n else if (state === STRING) {\n if (code === 0x07 || code === 0x9C)\n state = TEXT\n else if (code === ESC)\n state = STRING_ESC\n }\n else {\n state = code === 0x5C ? TEXT : STRING\n }\n i++\n }\n return done\n },\n partial: () => (pendingCr ? [] : line),\n }\n}\n\n/**\n * `text` as lines of styled spans. A text without a closing newline still\n * yields its last line; an empty text yields one empty line.\n *\n * @param text - Terminal output.\n */\nexport function parseAnsi(text: string): AnsiSpan[][] {\n const reader = createAnsiLines()\n const lines = reader.push(text)\n lines.push(reader.partial())\n return lines\n}\n\n/**\n * The visible text of a line.\n *\n * @param spans - The line's spans.\n */\nexport function ansiLineText(spans: readonly AnsiSpan[]): string {\n return spans.map(span => span.text).join('')\n}\n\n/**\n * `text` without its escapes, as a terminal would show it.\n *\n * @param text - Terminal output.\n */\nexport function stripAnsi(text: string): string {\n if (!hasAnsi(text))\n return text\n return parseAnsi(text).map(ansiLineText).join('\\n')\n}\n\n/**\n * A line cut to `max` visible characters, the last one an ellipsis when it is cut.\n *\n * @param spans - The line's spans.\n * @param max - Visible characters kept.\n */\nexport function clipAnsiLine(spans: readonly AnsiSpan[], max: number): AnsiSpan[] {\n if (ansiLineText(spans).length <= max)\n return [...spans]\n const out: AnsiSpan[] = []\n let room = max - 1\n for (const span of spans) {\n if (room <= 0)\n break\n const text = span.text.slice(0, room)\n out.push(span.style ? { text, style: span.style } : { text })\n room -= text.length\n }\n out.push({ text: '…' })\n return out\n}\n","/**\n * The last lines of a running thing's output (a codemode script, a Run here),\n * as a view shows them live: each line keeps a stable id while it shows (a\n * command's line still being written keeps its id once it ends), carries its\n * colors as spans (`ansi.ts`), and is cut to a width. Printed items (`text()`,\n * `console.*`) are whole; command output comes in chunks that can end\n * mid-line, read per stream (and per source line) as a terminal would.\n *\n * Node-free (exported from `zidane/chat/pure`).\n */\n\nimport type { AnsiLines, AnsiSpan } from './ansi'\nimport { ansiLineText, clipAnsiLine, createAnsiLines } from './ansi'\n\n/** Where an output line came from: a printed item (`output`, `console`) or a command's `stdout` / `stderr`. */\nexport type OutputStream = 'output' | 'console' | 'stdout' | 'stderr'\n\n/** One line of output. */\nexport interface OutputLine {\n /**\n * The line's number in the whole output, from 0: the same while the line\n * shows (a command's line keeps its id as it is written, then ended), so a\n * view can key on it and animate only what is new.\n */\n id: number\n /** Where it came from. */\n stream: OutputStream\n /** The line's visible text, without its newline, cut to the tail's width. */\n text: string\n /** The same text in styled spans, when it had colors or styles (ANSI codes). */\n spans?: AnsiSpan[]\n /** Script line of the call that wrote it (codemode). */\n line?: number\n}\n\n/** The last lines of an output. */\nexport interface OutputTail {\n /** A whole item: each of its lines. */\n item: (stream: OutputStream, text: string, line?: number) => void\n /** A chunk of a command's output, which can end mid-line. */\n chunk: (stream: OutputStream, text: string, line?: number) => void\n /** The last lines, oldest first; a command's line still being written comes last. */\n lines: () => OutputLine[]\n}\n\n/**\n * Creates an empty {@link OutputTail}.\n *\n * @param maxLines - Lines kept.\n * @param lineChars - Characters kept per line.\n */\nexport function createOutputTail(maxLines: number, lineChars: number): OutputTail {\n const tail: OutputLine[] = []\n const commands = new Map<string, { reader: AnsiLines, stream: OutputStream, line?: number, openId?: number }>()\n let nextId = 0\n\n const shape = (spans: readonly AnsiSpan[]): { text: string, spans?: AnsiSpan[] } => {\n const clipped = clipAnsiLine(spans, lineChars)\n const text = ansiLineText(clipped)\n return clipped.some(span => span.style) ? { text, spans: clipped } : { text }\n }\n const push = (entry: OutputLine): void => {\n tail.push(entry)\n if (tail.length > maxLines)\n tail.splice(0, tail.length - maxLines)\n }\n\n return {\n item(stream, text, line) {\n const at = line !== undefined ? { line } : {}\n for (const spans of createAnsiLines().push(`${text}\\n`))\n push({ id: nextId++, stream, ...shape(spans), ...at })\n },\n chunk(stream, text, line) {\n const key = `${stream}\\u0000${line ?? ''}`\n let command = commands.get(key)\n if (!command) {\n command = { reader: createAnsiLines(), stream, ...(line !== undefined ? { line } : {}) }\n commands.set(key, command)\n }\n const at = line !== undefined ? { line } : {}\n for (const spans of command.reader.push(text)) {\n push({ id: command.openId ?? nextId++, stream, ...shape(spans), ...at })\n command.openId = undefined\n }\n if (command.reader.partial().length > 0 && command.openId === undefined)\n command.openId = nextId++\n },\n lines() {\n const open = [...commands.values()].flatMap(({ reader, stream, line, openId }) => {\n const spans = reader.partial()\n return spans.length === 0 || openId === undefined ? [] : [{ id: openId, stream, ...shape(spans), ...(line !== undefined ? { line } : {}) }]\n })\n return [...tail, ...open].slice(-maxLines)\n },\n }\n}\n","/**\n * Live progress of a codemode script (`Settings.codemodeStreamProgress`):\n * which script lines made calls and how those calls stand, and the last lines\n * the script printed or its shell calls wrote.\n *\n * The host tracks it with {@link createScriptProgressTracker} from the hooks of\n * the script's calls (`scriptLine`) and its `tool:progress` reports, and sends\n * each new state as a live `tool-progress` event, which clients keep one of\n * per script ({@link upsertToolProgress}). A reload rebuilds the final line\n * states from the saved call records (`NestedToolCallRecord.line`).\n * {@link scriptProgressView} turns a script and its progress into what the\n * GUI and the TUI draw.\n *\n * Node-free (exported from `zidane/chat/pure`).\n */\n\nimport type { NestedToolCallRecord, ToolProgress } from '../types'\nimport type { OutputLine } from './output-tail'\nimport type { StreamEvent } from './types'\nimport { createOutputTail } from './output-tail'\n\n/** How the latest call of a script line stands. */\nexport type ScriptCallStatus = 'running' | 'ok' | 'error'\n\n/** A script line that made calls. */\nexport interface ScriptLineProgress {\n /** 1-based line in the script as the model wrote it. */\n line: number\n /** State of the latest call made from this line. */\n status: ScriptCallStatus\n /** Calls made from this line so far. */\n calls: number\n}\n\n/** One line of what a script printed or its shell calls wrote. */\nexport type ScriptOutputLine = OutputLine\n\n/** A script's progress as a `tool-progress` event carries it. */\nexport interface ScriptProgress {\n /** Lines that made calls, by line. */\n lines: ScriptLineProgress[]\n /** Calls that ended, failed ones included. */\n done: number\n /** Calls still running. */\n running: number\n /** Calls that failed. */\n failed: number\n /** The last lines of output, oldest first. A command's line still being written comes last. */\n output: ScriptOutputLine[]\n /** How the script ended, once it did: its last line shows done when it ended without error. */\n ended?: 'ok' | 'error'\n}\n\n/** Output lines a progress state keeps. */\nexport const SCRIPT_OUTPUT_TAIL_LINES = 8\n/** Characters kept per output line. */\nexport const SCRIPT_OUTPUT_LINE_CHARS = 240\n\n/** Builds a script's {@link ScriptProgress} from its calls and output, in the order they happen. */\nexport interface ScriptProgressTracker {\n /** A call started. Calls without a line are ignored. */\n start: (callId: string, line: number | undefined) => void\n /** A call ended. */\n finish: (callId: string, ok: boolean) => void\n /** The script printed, or a command wrote, `text`. */\n output: (stream: ToolProgress['stream'], text: string, line?: number) => void\n /** The script itself ended. */\n end: (ok: boolean) => void\n /** The state now. */\n snapshot: () => ScriptProgress\n}\n\n/** Creates an empty {@link ScriptProgressTracker}. */\nexport function createScriptProgressTracker(): ScriptProgressTracker {\n const lines = new Map<number, ScriptLineProgress & { latest: string }>()\n const lineOf = new Map<string, number>()\n const running = new Set<string>()\n let done = 0\n let failed = 0\n let ended: ScriptProgress['ended']\n const output = createOutputTail(SCRIPT_OUTPUT_TAIL_LINES, SCRIPT_OUTPUT_LINE_CHARS)\n\n return {\n start(callId, line) {\n if (line === undefined || lineOf.has(callId))\n return\n lineOf.set(callId, line)\n running.add(callId)\n const entry = lines.get(line)\n if (entry) {\n entry.calls++\n entry.status = 'running'\n entry.latest = callId\n }\n else {\n lines.set(line, { line, status: 'running', calls: 1, latest: callId })\n }\n },\n finish(callId, ok) {\n if (!running.delete(callId))\n return\n done++\n if (!ok)\n failed++\n const entry = lines.get(lineOf.get(callId)!)\n if (entry && entry.latest === callId)\n entry.status = ok ? 'ok' : 'error'\n },\n output(stream, text, line) {\n // A printed item is whole; a command's output comes in chunks.\n if (stream === 'output' || stream === 'console')\n output.item(stream, text, line)\n else\n output.chunk(stream, text, line)\n },\n end(ok) {\n ended = ok ? 'ok' : 'error'\n },\n snapshot() {\n return {\n lines: [...lines.values()].sort((a, b) => a.line - b.line).map(({ line, status, calls }) => ({ line, status, calls })),\n done,\n running: running.size,\n failed,\n output: output.lines(),\n ...(ended ? { ended } : {}),\n }\n },\n }\n}\n\n/**\n * The final progress of a script from its saved call records, or `undefined`\n * when none carries a line (the script ran without live progress).\n *\n * @param records - The calls saved on the script's result.\n * @param ok - The script's own result was no error.\n */\nexport function scriptProgressFromRecords(records: readonly NestedToolCallRecord[], ok?: boolean): ScriptProgress | undefined {\n if (!records.some(record => record.line !== undefined))\n return undefined\n const tracker = createScriptProgressTracker()\n for (const record of records) {\n tracker.start(record.id, record.line)\n tracker.finish(record.id, record.status === 'ok')\n }\n if (ok !== undefined)\n tracker.end(ok)\n return tracker.snapshot()\n}\n\n/**\n * `events` with `event`, a `tool-progress` state, in place of the one it\n * replaces (same call, same subagent), or appended. Other events are appended.\n * A script keeps one progress event, however long it runs.\n *\n * @param events - The transcript so far.\n * @param event - The live event.\n */\nexport function upsertToolProgress<E extends Pick<StreamEvent, 'kind' | 'callId' | 'childId'>>(events: readonly E[], event: E): E[] {\n if (event.kind === 'tool-progress') {\n const at = events.findLastIndex(e => e.kind === 'tool-progress' && e.callId === event.callId && e.childId === event.childId)\n if (at !== -1) {\n const next = events.slice()\n next[at] = event\n return next\n }\n }\n return [...events, event]\n}\n\n/**\n * The latest `tool-progress` state of each script, by call id (`childId` + NUL + `callId`).\n *\n * @param events - The transcript's events.\n */\nexport function scriptProgressByCall(events: readonly Pick<StreamEvent, 'kind' | 'callId' | 'childId' | 'scriptProgress'>[]): ReadonlyMap<string, ScriptProgress> {\n const found = new Map<string, ScriptProgress>()\n for (const event of events) {\n if (event.kind === 'tool-progress' && event.callId && event.scriptProgress)\n found.set(scriptProgressKey(event.callId, event.childId), event.scriptProgress)\n }\n return found\n}\n\n/**\n * Key of a script in {@link scriptProgressByCall}.\n *\n * @param callId - The script's call id.\n * @param childId - The subagent that ran it, if any.\n */\nexport function scriptProgressKey(callId: string, childId?: string): string {\n return `${childId ?? ''}\\u0000${callId}`\n}\n\n// ---------------------------------------------------------------------------\n// The view\n// ---------------------------------------------------------------------------\n\n/**\n * How a script line draws: `idle` (not reached yet), `passed` (the script went\n * past it, or it makes no call), `running`, `done` or `failed` (its latest call).\n */\nexport type ScriptLineState = 'idle' | 'passed' | 'running' | 'done' | 'failed'\n\n/** One line of a script as the view draws it. */\nexport interface ScriptViewLine {\n /** 1-based line in the script as the model wrote it: the line the progress and errors name. */\n number: number\n /** The number to show: counted from the first line of code, the `// @options` line left out. */\n label: number\n /** The line's source, without its newline. */\n text: string\n /** How it draws: see {@link ScriptLineState}. */\n state: ScriptLineState\n /** Calls this line made. */\n calls: number\n}\n\n/** What the GUI and the TUI draw for a script. */\nexport interface ScriptProgressView {\n /** The script's lines, the `// @options` line and blank edges left out. */\n lines: ScriptViewLine[]\n /** The `// @options` line's settings, read (left out of {@link lines}). */\n options?: ScriptOptions\n /** Whether live progress exists for this script (the lines carry states). */\n tracked: boolean\n /** Calls that ended, failed ones included. */\n done: number\n /** Calls still running. */\n running: number\n /** Calls that failed. */\n failed: number\n /** Calls the script makes in all, when each can run once at most. */\n total?: number\n /** 0 to 100, only with {@link total}. */\n percent?: number\n /** The line to keep in view: the first running one, else the furthest reached. */\n active?: number\n /** The last lines the script printed or its shell calls wrote, oldest first. */\n output: ScriptOutputLine[]\n /** The error the script itself threw, at the line it names (its result's excerpt). */\n error?: { line: number, message: string }\n}\n\n/** What a script's `// @options` line sets. */\nexport interface ScriptOptions {\n /** `timeout_ms`: the script's deadline, tool calls included. */\n timeoutMs?: number\n /** `max_output_tokens`: the budget for what the script returns. */\n maxOutputTokens?: number\n /** Fields the view does not know, as written. */\n other: Array<{ key: string, value: string }>\n /** The JSON as written, when it does not read as an object. */\n raw?: string\n}\n\nconst OPTIONS_LINE = /^\\s*\\/\\/ @options:(.*)$/\n\nfunction readOptions(json: string): ScriptOptions {\n let value: unknown\n try {\n value = JSON.parse(json)\n }\n catch {\n return { other: [], raw: json }\n }\n if (typeof value !== 'object' || value === null || Array.isArray(value))\n return { other: [], raw: json }\n const options: ScriptOptions = { other: [] }\n for (const [key, field] of Object.entries(value)) {\n if (key === 'timeout_ms' && typeof field === 'number')\n options.timeoutMs = field\n else if (key === 'max_output_tokens' && typeof field === 'number')\n options.maxOutputTokens = field\n else\n options.other.push({ key, value: JSON.stringify(field) })\n }\n return options\n}\n\n/**\n * The view of a script: its lines with their states, the counts, and the\n * percent when it is exact (see {@link countOnceCallSites}).\n *\n * @param code - The script, as the model wrote it.\n * @param progress - Its progress, when it streamed any.\n * @param finished - The script ended (`ok` tells how).\n * @param ok - It ended without error.\n * @param result - Its result text: a failed script's names the line it threw at.\n */\nexport function scriptProgressView(code: string, progress: ScriptProgress | undefined, finished: boolean, ok = true, result?: string | null): ScriptProgressView {\n // The progress knows how the script ended, where the caller does not (a row without its result).\n const ended = finished || progress?.ended !== undefined\n const endedOk = progress?.ended !== undefined ? progress.ended === 'ok' : ok\n const error = ended && !endedOk && result ? scriptErrorOf(result) : undefined\n const source = code.split('\\n').map(line => line.replace(/\\r$/, ''))\n const optionsMatch = source[0] !== undefined ? OPTIONS_LINE.exec(source[0]) : null\n const options = optionsMatch ? readOptions(optionsMatch[1]!.trim()) : undefined\n let first = optionsMatch ? 1 : 0\n while (first < source.length && source[first]!.trim() === '')\n first++\n let last = source.length - 1\n while (last >= first && source[last]!.trim() === '')\n last--\n\n const byLine = new Map(progress?.lines.map(entry => [entry.line, entry]))\n const furthest = progress?.lines.length ? progress.lines[progress.lines.length - 1]!.line : 0\n const reached = ended && endedOk ? Number.POSITIVE_INFINITY : furthest\n const lines: ScriptViewLine[] = []\n for (let i = first; i <= last; i++) {\n const number = i + 1\n const entry = byLine.get(number)\n const state: ScriptLineState = error?.line === number\n ? 'failed'\n : !progress\n ? 'passed'\n : entry\n ? entry.status === 'running' ? 'running' : entry.status === 'ok' ? 'done' : 'failed'\n : number <= reached ? 'passed' : 'idle'\n lines.push({ number, label: number - first, text: source[i]!, state, calls: entry?.calls ?? 0 })\n }\n // A script that ended without error shows it on its last line, unless that line's own call says otherwise.\n const lastLine = lines.at(-1)\n if (progress && ended && endedOk && lastLine?.state === 'passed')\n lastLine.state = 'done'\n\n const done = progress?.done ?? 0\n const total = progress ? countOnceCallSites(code) : undefined\n const exact = total !== undefined && done + (progress?.running ?? 0) <= total\n const running = progress?.lines.find(entry => entry.status === 'running')?.line\n return {\n lines,\n ...(options !== undefined ? { options } : {}),\n tracked: progress !== undefined,\n done,\n running: progress?.running ?? 0,\n failed: progress?.failed ?? 0,\n ...(exact ? { total, percent: ended && endedOk ? 100 : Math.min(100, Math.round((done / total) * 100)) } : {}),\n ...(!ended && progress ? { active: running ?? (furthest || undefined) } : {}),\n output: progress?.output ?? [],\n ...(error && lines.some(line => line.number === error.line) ? { error } : {}),\n }\n}\n\nconst SCRIPT_ERROR = /^Script error: (.+)$/m\nconst EXCERPT_LINE = /^(\\d+) \\| /m\n\n/**\n * The error a failed script threw and the line it names, out of its result\n * (`Script error: …` then the `12 | source` excerpt the sandbox writes).\n *\n * @param result - The script's result text.\n */\nexport function scriptErrorOf(result: string): { line: number, message: string } | undefined {\n const message = SCRIPT_ERROR.exec(result)?.[1]?.trim()\n const line = EXCERPT_LINE.exec(result)?.[1]\n return message && line ? { line: Number(line), message } : undefined\n}\n\n// ---------------------------------------------------------------------------\n// Static count of a script's calls\n// ---------------------------------------------------------------------------\n\n/**\n * `code` with the text of strings, comments and regular expressions replaced\n * by spaces (newlines kept), so a scan sees only code. Template literals keep\n * their `${…}` expressions.\n *\n * @param code - The script, as the model wrote it.\n */\nexport function maskScriptSource(code: string): string {\n const out = code.split('')\n const blank = (from: number, to: number): void => {\n for (let k = from; k < to; k++) {\n if (out[k] !== '\\n')\n out[k] = ' '\n }\n }\n /** Brace depth of each open `${`, innermost last. */\n const templates: number[] = []\n let braces = 0\n let prev = ''\n let i = 0\n const n = code.length\n /** Skip a template's text from `i` (after the backtick or the `}` of an expression). */\n const templateText = (): void => {\n const start = i\n while (i < n) {\n const c = code[i]!\n if (c === '\\\\') {\n i += 2\n continue\n }\n if (c === '`') {\n blank(start, i)\n i++\n prev = '`'\n return\n }\n if (c === '$' && code[i + 1] === '{') {\n blank(start, i)\n templates.push(braces)\n i += 2\n prev = '{'\n return\n }\n i++\n }\n blank(start, n)\n }\n while (i < n) {\n const c = code[i]!\n if (c === '/' && code[i + 1] === '/') {\n const end = code.indexOf('\\n', i)\n blank(i, end === -1 ? n : end)\n i = end === -1 ? n : end\n continue\n }\n if (c === '/' && code[i + 1] === '*') {\n const end = code.indexOf('*/', i + 2)\n blank(i, end === -1 ? n : end + 2)\n i = end === -1 ? n : end + 2\n continue\n }\n if (c === '\"' || c === '\\'') {\n let j = i + 1\n while (j < n && code[j] !== c && code[j] !== '\\n')\n j += code[j] === '\\\\' ? 2 : 1\n blank(i + 1, Math.min(j, n))\n i = j + 1\n prev = c\n continue\n }\n if (c === '`') {\n i++\n templateText()\n continue\n }\n // A slash where a value starts opens a regular expression.\n if (c === '/' && (prev === '' || '(,=:[!&|?{};+-*%<>~^'.includes(prev))) {\n let j = i + 1\n let inClass = false\n while (j < n && code[j] !== '\\n') {\n const d = code[j]!\n if (d === '\\\\') {\n j += 2\n continue\n }\n if (d === '[')\n inClass = true\n else if (d === ']')\n inClass = false\n else if (d === '/' && !inClass)\n break\n j++\n }\n blank(i + 1, Math.min(j, n))\n i = j + 1\n prev = ')'\n continue\n }\n if (c === '{') {\n braces++\n }\n else if (c === '}') {\n if (templates.length > 0 && templates[templates.length - 1] === braces) {\n templates.pop()\n i++\n templateText()\n continue\n }\n braces--\n }\n if (!/\\s/.test(c))\n prev = /[\\w$]/.test(c) ? 'w' : c\n i++\n }\n return out.join('')\n}\n\nconst TOOL_CALL = /\\btools\\s*(?:\\.\\s*[A-Z_$][\\w$]*|\\[\\s*([\"'`])\\s*\\1\\s*\\])\\s*\\(/gi\nconst TOOL_REF = /\\btools\\b/g\nconst SH_CALL = /(?<![\\w$.])sh\\s*\\(/g\nconst SH_REF = /(?<![\\w$.])sh\\b/g\nconst WORD = /[\\w$]/\n\ntype Pending = 'loopBody' | 'fnBody' | 'braceIsFn' | 'arrowBody' | null\ntype ParenKind = 'loop' | 'cond' | 'fn' | 'other'\ninterface Scope {\n close: ')' | ']' | '}' | 'stmt' | 'expr'\n repeats: boolean\n kind?: ParenKind\n}\n\n/**\n * How many calls a script makes, when every call can run once at most: each\n * `tools.<name>(…)` or `sh(…)` sits outside loops and functions (callbacks,\n * helpers, methods). `undefined` when one may run more than once, when the\n * script reaches `tools` or `sh` another way (a reference, a computed name),\n * or when it makes no call. A call in a branch that does not run makes the\n * count high, never low, so a percent from it never runs ahead.\n *\n * @param code - The script, as the model wrote it.\n */\nexport function countOnceCallSites(code: string): number | undefined {\n const masked = maskScriptSource(code)\n const sites = new Set<number>()\n for (const match of masked.matchAll(TOOL_CALL))\n sites.add(match.index)\n if ((masked.match(TOOL_REF)?.length ?? 0) !== sites.size)\n return undefined\n const shCalls = [...masked.matchAll(SH_CALL)]\n if ((masked.match(SH_REF)?.length ?? 0) !== shCalls.length)\n return undefined\n for (const match of shCalls)\n sites.add(match.index)\n if (sites.size === 0)\n return undefined\n\n const stack: Scope[] = []\n let pending: Pending = null\n let nextParen: ParenKind | null = null\n const repeating = (): boolean => stack.some(scope => scope.repeats)\n /** A body without braces opens where its first token starts. */\n const openBody = (): void => {\n if (pending === 'loopBody')\n stack.push({ close: 'stmt', repeats: true })\n else if (pending === 'arrowBody')\n stack.push({ close: 'expr', repeats: true })\n pending = null\n }\n const closeTo = (close: Scope['close']): Scope | undefined => {\n while (stack.length > 0) {\n const scope = stack.pop()!\n if (scope.close === close)\n return scope\n }\n return undefined\n }\n const popWhile = (closes: readonly Scope['close'][]): void => {\n while (stack.length > 0 && closes.includes(stack[stack.length - 1]!.close))\n stack.pop()\n }\n\n let i = 0\n const n = masked.length\n while (i < n) {\n const c = masked[i]!\n if (/\\s/.test(c)) {\n i++\n continue\n }\n if (WORD.test(c)) {\n let j = i\n while (j < n && WORD.test(masked[j]!))\n j++\n const word = masked.slice(i, j)\n openBody()\n if (sites.has(i) && repeating())\n return undefined\n if (word === 'for' || word === 'while')\n nextParen = 'loop'\n else if (word === 'if' || word === 'switch' || word === 'catch' || word === 'with')\n nextParen = 'cond'\n else if (word === 'function')\n nextParen = 'fn'\n else if (word === 'do')\n pending = 'loopBody'\n i = j\n continue\n }\n if (c === '=' && masked[i + 1] === '>') {\n pending = 'arrowBody'\n i += 2\n continue\n }\n if (c === '{') {\n const repeats = pending === 'loopBody' || pending === 'fnBody' || pending === 'braceIsFn' || pending === 'arrowBody'\n stack.push({ close: '}', repeats })\n pending = null\n i++\n continue\n }\n if (c === ';') {\n popWhile(['stmt', 'expr'])\n pending = null\n i++\n continue\n }\n if (c === ',') {\n popWhile(['expr'])\n pending = null\n i++\n continue\n }\n if (c === ')' || c === ']' || c === '}') {\n const scope = closeTo(c)\n pending = null\n if (c === ')' && scope) {\n if (scope.kind === 'loop')\n pending = 'loopBody'\n else if (scope.kind === 'fn')\n pending = 'fnBody'\n else if (scope.kind === 'other')\n pending = 'braceIsFn'\n }\n i++\n continue\n }\n openBody()\n if (c === '(') {\n stack.push({ close: ')', repeats: false, kind: nextParen ?? 'other' })\n nextParen = null\n }\n else if (c === '[') {\n stack.push({ close: ']', repeats: false })\n }\n i++\n }\n return sites.size\n}\n"],"mappings":"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"}
|
package/dist/session/sqlite.d.ts
CHANGED
package/dist/session.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $
|
|
1
|
+
import { $L as deleteExtensionSessionState, $R as mergeArtifact, AR as toAnthropic, BL as Session, DR as fromOpenAI, ER as fromAnthropic, FL as CreateSessionOptions, FP as SessionMessage, FR as PairingDrop, GL as SessionRun, GR as ARTIFACTS_METADATA_KEY, HL as SessionHistory, HR as dropInvalidToolPairings, IL as LoadSessionOptions, IP as SessionTurn, IR as PairingDropKind, JL as SessionStore, JR as ARTIFACT_META_MAX_BYTES, KL as SessionRunAgent, KR as ARTIFACTS_PER_SESSION_CAP, LL as RunEstimate, MP as SessionContentBlock, MR as toWireMessages, PL as AppendTurnsOptions, QL as currentExtensionSession, QR as matchesArtifactFilter, RL as RunEstimateFailure, SR as autoDetectAndConvert, UL as SessionMetaListener, VL as SessionData, WL as SessionMetaRow, XL as UpdateRunOptions, XR as SessionArtifact, YL as StoredRunOptions, YR as ArtifactFilter, ZL as createSession, ZR as SessionArtifactInput, _R as SaveMetaOptions, aR as setExtensionSessionState, bR as ToWireMessagesOptions, cR as createRemoteStore, dR as FileMapStoreOptions, eR as demoteStaleRunningStatus, ez as normalizeArtifactInput, fR as createFileMapStore, gR as RunOwner, hR as SendRequestRecord, iR as resumeChainRunIds, jR as toOpenAI, lR as createMemoryStore, mR as SendRequestClaim, nR as interruptedToolResultOutput, nz as sortArtifacts, oR as withExtensionSession, pR as SEND_REQUEST_HISTORY, qL as SessionSavedListener, qR as ARTIFACT_KINDS, rR as loadSession, sR as RemoteStoreOptions, tR as getExtensionSessionState, tz as selectArtifactEvictions, uR as FileMapAdapter, vR as mergeSessionMetadata, zL as RunUserWait } from "./index-WlE93Q6d.js";
|
|
2
2
|
export { ARTIFACTS_METADATA_KEY, ARTIFACTS_PER_SESSION_CAP, ARTIFACT_KINDS, ARTIFACT_META_MAX_BYTES, AppendTurnsOptions, type ArtifactFilter, CreateSessionOptions, type FileMapAdapter, type FileMapStoreOptions, LoadSessionOptions, type PairingDrop, type PairingDropKind, type RemoteStoreOptions, RunEstimate, RunEstimateFailure, type RunOwner, RunUserWait, SEND_REQUEST_HISTORY, type SaveMetaOptions, type SendRequestClaim, type SendRequestRecord, Session, type SessionArtifact, type SessionArtifactInput, type SessionContentBlock, SessionData, SessionHistory, type SessionMessage, SessionMetaListener, SessionMetaRow, SessionRun, SessionRunAgent, SessionSavedListener, SessionStore, type SessionTurn, StoredRunOptions, type ToWireMessagesOptions, UpdateRunOptions, autoDetectAndConvert, createFileMapStore, createMemoryStore, createRemoteStore, createSession, currentExtensionSession, deleteExtensionSessionState, demoteStaleRunningStatus, dropInvalidToolPairings, fromAnthropic, fromOpenAI, getExtensionSessionState, interruptedToolResultOutput, loadSession, matchesArtifactFilter, mergeArtifact, mergeSessionMetadata, normalizeArtifactInput, resumeChainRunIds, selectArtifactEvictions, setExtensionSessionState, sortArtifacts, toAnthropic, toOpenAI, toWireMessages, withExtensionSession };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { S as resolveSessionDir, _ as rehomePersistedStubs, m as cleanupPersistedSession, v as resolveLegacyPersistDir, x as resolvePersistDir, y as resolveLegacySessionDir } from "./agent-
|
|
1
|
+
import { S as resolveSessionDir, _ as rehomePersistedStubs, m as cleanupPersistedSession, v as resolveLegacyPersistDir, x as resolvePersistDir, y as resolveLegacySessionDir } from "./agent-Dh_XZ7fj.js";
|
|
2
2
|
import { n as definePreset, t as composePresets } from "./compose-Db9ZMbyD.js";
|
|
3
3
|
import { t as createSession } from "./session-BORxmqlM.js";
|
|
4
|
-
import { a as shell, n as waitTask, r as shellKill } from "./wait-task-
|
|
4
|
+
import { a as shell, n as waitTask, r as shellKill } from "./wait-task-BiI5UaZQ.js";
|
|
5
5
|
import { c as projectRootOf } from "./project-root-BZcgGJMi.js";
|
|
6
|
-
import { c as edit, f as createSpawnTool, n as readFile, o as multiEdit, s as listFiles, t as writeFile } from "./write-file-
|
|
6
|
+
import { c as edit, f as createSpawnTool, n as readFile, o as multiEdit, s as listFiles, t as writeFile } from "./write-file-Dquu7MzB.js";
|
|
7
7
|
import { n as DEFAULT_MEDIA_BUDGET, t as DEFAULT_MAX_IMAGE_EDGE } from "./defaults-DjjIPknt.js";
|
|
8
|
-
import { h as editSessionMetadata } from "./system-freeze-
|
|
9
|
-
import { n as grep, r as glob } from "./tools-
|
|
8
|
+
import { h as editSessionMetadata } from "./system-freeze-XgDPIwQS.js";
|
|
9
|
+
import { n as grep, r as glob } from "./tools-BsrGQ8K4.js";
|
|
10
10
|
import { r as fetchUrl } from "./fetch-url-BSKbUkJw.js";
|
|
11
11
|
import { webSearch } from "./tools/web-search.js";
|
|
12
12
|
import { d as buildBuildSystem, f as buildPlanSystem } from "./agent-prompt-BXVwL89Y.js";
|
|
@@ -1495,4 +1495,4 @@ function isDurabilityMode(value) {
|
|
|
1495
1495
|
//#endregion
|
|
1496
1496
|
export { TODOWRITE_TOOL as A, selectActiveTodos as B, profileTools as C, DEFAULT_MAX_TODO_ITEMS as D, singleAgentRegistry as E, getTodosForRun as F, todoProgressLabel as H, isTodoTool as I, pickActiveRunId as L, applyTodosSnapshot as M, createTodoTools as N, TODOREAD_TOOL as O, getArchivedTodosForRun as P, pruneTodosByRun as R, profileComposition as S, sessionComposition as T, useActiveTodos as U, setTodosForRun as V, availableAgents as _, deleteSessionData as a, compositionFits as b, newSession as c, BUILTIN_AGENTS as d, DEFAULT_AGENT_ID as f, READ_ONLY_TOOLS as g, PLAN_AGENT as h, createSessionInStore as i, TODO_WRITE_COUNTS_METADATA_KEY as j, TODOS_METADATA_KEY as k, BUILD_AGENT as l, DEFAULT_PERSIST_EXCLUDE_TOOLS as m, isDurabilityMode as n, describeForkFailure as o, DEFAULT_BUDGET_EXCLUDE_TOOLS as p, createMainSession as r, forkSession as s, DEFAULT_DURABILITY as t, BUILD_CODEMODE_AGENT as u, builtInPromptOf as v, resolveAgentId as w, compositionTools as x, compositionByKey as y, sanitizeTodoItems as z };
|
|
1497
1497
|
|
|
1498
|
-
//# sourceMappingURL=setting-
|
|
1498
|
+
//# sourceMappingURL=setting-D_FpKFMw.js.map
|