claude-mux 0.30.7 → 0.30.8
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/CLAUDE.md +16 -0
- package/dist/git-graph.d.ts +30 -0
- package/dist/git-graph.d.ts.map +1 -0
- package/dist/git-graph.js +56 -0
- package/dist/git-graph.js.map +1 -0
- package/dist/server/git-history.d.ts +75 -0
- package/dist/server/git-history.d.ts.map +1 -0
- package/dist/server/git-history.js +186 -0
- package/dist/server/git-history.js.map +1 -0
- package/dist/transcript/changes.d.ts +3 -0
- package/dist/transcript/changes.d.ts.map +1 -1
- package/dist/transcript/changes.js +2 -2
- package/dist/transcript/changes.js.map +1 -1
- package/dist/transcript/commits.d.ts +33 -0
- package/dist/transcript/commits.d.ts.map +1 -0
- package/dist/transcript/commits.js +107 -0
- package/dist/transcript/commits.js.map +1 -0
- package/dist/utils/version.d.ts +1 -1
- package/dist/utils/version.js +1 -1
- package/dist/web/client/_app/immutable/assets/sidebarActions.ggyFkiVa.css +1 -0
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/DoSoHhfi.js → dist/web/client/_app/immutable/chunks/2TLW-l2v.js} +2 -2
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/DoSoHhfi.js.map → dist/web/client/_app/immutable/chunks/2TLW-l2v.js.map} +1 -1
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/CSwk5Q3m.js → dist/web/client/_app/immutable/chunks/7uqjrfsF.js} +7 -7
- package/dist/web/client/_app/immutable/chunks/{CSwk5Q3m.js.map → 7uqjrfsF.js.map} +1 -1
- package/dist/web/client/_app/immutable/chunks/BP3lFqtA.js +2 -0
- package/dist/web/client/_app/immutable/chunks/BP3lFqtA.js.map +1 -0
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/CiA3iXD3.js → dist/web/client/_app/immutable/chunks/BP4scVXW.js} +2 -2
- package/dist/web/client/_app/immutable/chunks/{CiA3iXD3.js.map → BP4scVXW.js.map} +1 -1
- package/dist/web/client/_app/immutable/chunks/CMC_kKBx.js +10 -0
- package/dist/web/client/_app/immutable/chunks/CMC_kKBx.js.map +1 -0
- package/dist/web/client/_app/immutable/chunks/{pupajRv2.js → CRM1TmjB.js} +2 -2
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/pupajRv2.js.map → dist/web/client/_app/immutable/chunks/CRM1TmjB.js.map} +1 -1
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/CqAZ-V8_.js → dist/web/client/_app/immutable/chunks/CYqlB4Hc.js} +21 -21
- package/dist/web/client/_app/immutable/chunks/CYqlB4Hc.js.map +1 -0
- package/dist/web/client/_app/immutable/chunks/{Diwipoek.js → CZL1L1I4.js} +2 -2
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/Diwipoek.js.map → dist/web/client/_app/immutable/chunks/CZL1L1I4.js.map} +1 -1
- package/dist/web/client/_app/immutable/chunks/{BJ1KpJtM.js → CmQLQpkg.js} +3 -3
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/BJ1KpJtM.js.map → dist/web/client/_app/immutable/chunks/CmQLQpkg.js.map} +1 -1
- package/dist/web/client/_app/immutable/chunks/{DWocsT_p.js → CmWC-nOM.js} +2 -2
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/DWocsT_p.js.map → dist/web/client/_app/immutable/chunks/CmWC-nOM.js.map} +1 -1
- package/{web/.svelte-kit/output/client/_app/immutable/chunks/BVm-frHm.js → dist/web/client/_app/immutable/chunks/QIbXlNkX.js} +3 -3
- package/dist/web/client/_app/immutable/chunks/{BVm-frHm.js.map → QIbXlNkX.js.map} +1 -1
- package/dist/web/client/_app/immutable/chunks/{GgcuRiIe.js → _rpPynN-.js} +2 -2
- package/dist/web/client/_app/immutable/chunks/{GgcuRiIe.js.map → _rpPynN-.js.map} +1 -1
- package/dist/web/client/_app/immutable/chunks/{gZcfYVo1.js → dqXS413R.js} +2 -2
- package/dist/web/client/_app/immutable/chunks/{gZcfYVo1.js.map → dqXS413R.js.map} +1 -1
- package/dist/web/client/_app/immutable/entry/app.BC-6fuE7.js +3 -0
- package/{web/.svelte-kit/output/client/_app/immutable/entry/app.G6HNJnwa.js.map → dist/web/client/_app/immutable/entry/app.BC-6fuE7.js.map} +1 -1
- package/dist/web/client/_app/immutable/entry/start.CSvL30xc.js +2 -0
- package/dist/web/client/_app/immutable/entry/start.CSvL30xc.js.map +1 -0
- package/{web/.svelte-kit/output/client/_app/immutable/nodes/0.CvU8dHVe.js → dist/web/client/_app/immutable/nodes/0.Bi1CyF9i.js} +2 -2
- package/dist/web/client/_app/immutable/nodes/{0.CvU8dHVe.js.map → 0.Bi1CyF9i.js.map} +1 -1
- package/dist/web/client/_app/immutable/nodes/{1.CZxyZwvg.js → 1.BtsEBYU3.js} +2 -2
- package/dist/web/client/_app/immutable/nodes/{1.CZxyZwvg.js.map → 1.BtsEBYU3.js.map} +1 -1
- package/dist/web/client/_app/immutable/nodes/{2.CPhL7bJS.js → 2.C8D7Yl5G.js} +2 -2
- package/dist/web/client/_app/immutable/nodes/{2.CPhL7bJS.js.map → 2.C8D7Yl5G.js.map} +1 -1
- package/{web/.svelte-kit/output/client/_app/immutable/nodes/3.cUN9QtbH.js → dist/web/client/_app/immutable/nodes/3.BeaWiIY-.js} +8 -8
- package/dist/web/client/_app/immutable/nodes/3.BeaWiIY-.js.map +1 -0
- package/{web/.svelte-kit/output/client/_app/immutable/nodes/4.CsAVbUQR.js → dist/web/client/_app/immutable/nodes/4.D-0Zpy_6.js} +3 -3
- package/{web/.svelte-kit/output/client/_app/immutable/nodes/4.CsAVbUQR.js.map → dist/web/client/_app/immutable/nodes/4.D-0Zpy_6.js.map} +1 -1
- package/dist/web/client/_app/immutable/nodes/{5.dLS7DgiK.js → 5.BA5ufYuS.js} +3 -3
- package/{web/.svelte-kit/output/client/_app/immutable/nodes/5.dLS7DgiK.js.map → dist/web/client/_app/immutable/nodes/5.BA5ufYuS.js.map} +1 -1
- package/dist/web/client/_app/version.json +1 -1
- package/dist/web/server/chunks/{0-DCW3pBIT.js → 0-BcOQ5oDL.js} +16 -16
- package/dist/web/server/chunks/{0-DCW3pBIT.js.map → 0-BcOQ5oDL.js.map} +1 -1
- package/dist/web/server/chunks/{1-DUshZypG.js → 1-DDku6r0a.js} +5 -5
- package/dist/web/server/chunks/{1-DUshZypG.js.map → 1-DDku6r0a.js.map} +1 -1
- package/dist/web/server/chunks/2-BbS2nkQT.js +28 -0
- package/dist/web/server/chunks/{2-C7YTgQec.js.map → 2-BbS2nkQT.js.map} +1 -1
- package/dist/web/server/chunks/{3-DCM_KE6A.js → 3-Dh0INrb5.js} +13 -13
- package/dist/web/server/chunks/{3-DCM_KE6A.js.map → 3-Dh0INrb5.js.map} +1 -1
- package/dist/web/server/chunks/{4-DQQwGHtd.js → 4-CBGVm5RD.js} +10 -10
- package/dist/web/server/chunks/{4-DQQwGHtd.js.map → 4-CBGVm5RD.js.map} +1 -1
- package/dist/web/server/chunks/{5-DHgCBAhZ.js → 5-SZIMbMMC.js} +5 -5
- package/dist/web/server/chunks/{5-DHgCBAhZ.js.map → 5-SZIMbMMC.js.map} +1 -1
- package/dist/web/server/chunks/{_layout.svelte-CnijGjYa.js → _layout.svelte-BV4UAybS.js} +2 -2
- package/dist/web/server/chunks/{_layout.svelte-CnijGjYa.js.map → _layout.svelte-BV4UAybS.js.map} +1 -1
- package/dist/web/server/chunks/{_page.svelte-CtB6R3mI.js → _page.svelte-CTiX32bM.js} +2 -2
- package/dist/web/server/chunks/{_page.svelte-CtB6R3mI.js.map → _page.svelte-CTiX32bM.js.map} +1 -1
- package/dist/web/server/chunks/{_server.ts-UWXlpFNs.js → _server.ts-B5qZ_ZzV.js} +3 -3
- package/dist/web/server/chunks/{_server.ts-UWXlpFNs.js.map → _server.ts-B5qZ_ZzV.js.map} +1 -1
- package/dist/web/server/chunks/_server.ts-BBVIyIZX.js.map +1 -1
- package/dist/web/server/chunks/{_server.ts-q04XUJun.js → _server.ts-BMQQla-a.js} +2 -2
- package/dist/web/server/chunks/{_server.ts-q04XUJun.js.map → _server.ts-BMQQla-a.js.map} +1 -1
- package/dist/web/server/chunks/{_server.ts-CnLt6mBq.js → _server.ts-BZZVW8kD.js} +3 -3
- package/dist/web/server/chunks/{_server.ts-CnLt6mBq.js.map → _server.ts-BZZVW8kD.js.map} +1 -1
- package/dist/web/server/chunks/{_server.ts-DWGk3EA3.js → _server.ts-BbliFJ9O.js} +4 -4
- package/dist/web/server/chunks/{_server.ts-DWGk3EA3.js.map → _server.ts-BbliFJ9O.js.map} +1 -1
- package/dist/web/server/chunks/_server.ts-Biy31wFx.js +112 -0
- package/dist/web/server/chunks/_server.ts-Biy31wFx.js.map +1 -0
- package/dist/web/server/chunks/{_server.ts-DhjBI-1W.js → _server.ts-BmMGwuD3.js} +2 -2
- package/dist/web/server/chunks/{_server.ts-DhjBI-1W.js.map → _server.ts-BmMGwuD3.js.map} +1 -1
- package/dist/web/server/chunks/{_server.ts-D0Ltb5Nr.js → _server.ts-Bmh753Xq.js} +3 -3
- package/dist/web/server/chunks/{_server.ts-D0Ltb5Nr.js.map → _server.ts-Bmh753Xq.js.map} +1 -1
- package/dist/web/server/chunks/_server.ts-BuulgPtF.js.map +1 -1
- package/dist/web/server/chunks/{_server.ts-D66EZdj2.js → _server.ts-ByijImRO.js} +2 -2
- package/dist/web/server/chunks/{_server.ts-D66EZdj2.js.map → _server.ts-ByijImRO.js.map} +1 -1
- package/dist/web/server/chunks/_server.ts-C2EaHN3j.js +19 -0
- package/dist/web/server/chunks/_server.ts-C2EaHN3j.js.map +1 -0
- package/dist/web/server/chunks/{_server.ts-EqyYfD6n.js → _server.ts-Cd5PnMrX.js} +2 -2
- package/dist/web/server/chunks/{_server.ts-EqyYfD6n.js.map → _server.ts-Cd5PnMrX.js.map} +1 -1
- package/dist/web/server/chunks/{_server.ts-Bssaoutj.js → _server.ts-CqvyzD3s.js} +2 -2
- package/dist/web/server/chunks/{_server.ts-Bssaoutj.js.map → _server.ts-CqvyzD3s.js.map} +1 -1
- package/dist/web/server/chunks/{_server.ts-C0KK0Ann.js → _server.ts-Cx6lLYAj.js} +2 -2
- package/dist/web/server/chunks/{_server.ts-C0KK0Ann.js.map → _server.ts-Cx6lLYAj.js.map} +1 -1
- package/dist/web/server/chunks/{_server.ts-CAClJN_l.js → _server.ts-CzUO92tQ.js} +2 -2
- package/dist/web/server/chunks/{_server.ts-CAClJN_l.js.map → _server.ts-CzUO92tQ.js.map} +1 -1
- package/dist/web/server/chunks/{_server.ts-E0XeqG2M.js → _server.ts-D7OC6b2h.js} +2 -2
- package/dist/web/server/chunks/{_server.ts-E0XeqG2M.js.map → _server.ts-D7OC6b2h.js.map} +1 -1
- package/dist/web/server/chunks/{_server.ts-D7UeBt6q.js → _server.ts-DS4EruDl.js} +2 -2
- package/dist/web/server/chunks/{_server.ts-D7UeBt6q.js.map → _server.ts-DS4EruDl.js.map} +1 -1
- package/dist/web/server/chunks/{_server.ts-Df6W7-sb.js → _server.ts-DZ1G0yCR.js} +2 -2
- package/dist/web/server/chunks/{_server.ts-Df6W7-sb.js.map → _server.ts-DZ1G0yCR.js.map} +1 -1
- package/dist/web/server/chunks/{_server.ts-DQJaVH_H.js → _server.ts-DzE_YmNn.js} +2 -2
- package/dist/web/server/chunks/{_server.ts-DQJaVH_H.js.map → _server.ts-DzE_YmNn.js.map} +1 -1
- package/dist/web/server/chunks/_server.ts-Grwaw__t.js +24 -0
- package/dist/web/server/chunks/_server.ts-Grwaw__t.js.map +1 -0
- package/dist/web/server/chunks/_server.ts-NZnd7f15.js +24 -0
- package/dist/web/server/chunks/_server.ts-NZnd7f15.js.map +1 -0
- package/dist/web/server/chunks/{_server.ts-DWUGx_4i.js → _server.ts-_PUQ8WJz.js} +3 -3
- package/dist/web/server/chunks/{_server.ts-DWUGx_4i.js.map → _server.ts-_PUQ8WJz.js.map} +1 -1
- package/dist/web/server/chunks/{_server.ts-YxKqywyR.js → _server.ts-s57NmHy5.js} +2 -2
- package/dist/web/server/chunks/{_server.ts-YxKqywyR.js.map → _server.ts-s57NmHy5.js.map} +1 -1
- package/dist/web/server/chunks/{drafts.svelte-CR_8kxir.js → drafts.svelte-2--eKLri.js} +184 -26
- package/dist/web/server/chunks/{drafts.svelte-CR_8kxir.js.map → drafts.svelte-2--eKLri.js.map} +1 -1
- package/dist/web/server/chunks/{files-DK8L_Dnb.js → files-CfxJj5am.js} +2 -2
- package/dist/web/server/chunks/{files-DK8L_Dnb.js.map → files-CfxJj5am.js.map} +1 -1
- package/dist/web/server/chunks/{git-DqBIjJ3K.js → git-CSFcH-28.js} +2 -2
- package/dist/web/server/chunks/{git-DqBIjJ3K.js.map → git-CSFcH-28.js.map} +1 -1
- package/dist/web/server/chunks/git-history-DhX6S-BH.js +237 -0
- package/dist/web/server/chunks/git-history-DhX6S-BH.js.map +1 -0
- package/dist/web/server/chunks/{hooks.server-DulzVPiC.js → hooks.server-CtNw9IGk.js} +3 -3
- package/dist/web/server/chunks/{hooks.server-DulzVPiC.js.map → hooks.server-CtNw9IGk.js.map} +1 -1
- package/dist/web/server/chunks/message-queue-BLKZze9k.js.map +1 -1
- package/dist/web/server/chunks/{project-BvgiivO0.js → project-BUab2jAC.js} +2 -2
- package/dist/web/server/chunks/{project-BvgiivO0.js.map → project-BUab2jAC.js.map} +1 -1
- package/dist/web/server/chunks/sessions-json-I00ORZj0.js.map +1 -1
- package/dist/web/server/chunks/{web-preview-8S8TY_HO.js → web-preview-BlBJfrIH.js} +2 -2
- package/dist/web/server/chunks/{web-preview-8S8TY_HO.js.map → web-preview-BlBJfrIH.js.map} +1 -1
- package/dist/web/server/chunks/{ws-handlers-C4JCyX3s.js → ws-handlers-DS44e2G4.js} +2 -2
- package/dist/web/server/chunks/{ws-handlers-C4JCyX3s.js.map → ws-handlers-DS44e2G4.js.map} +1 -1
- package/dist/web/server/chunks/{ws-managers-frMhJ_4i.js → ws-managers-C1QZbzOk.js} +2 -2
- package/dist/web/server/chunks/{ws-managers-frMhJ_4i.js.map → ws-managers-C1QZbzOk.js.map} +1 -1
- package/dist/web/server/index.js +2 -2
- package/dist/web/server/index.js.map +1 -1
- package/dist/web/server/manifest.js +80 -32
- package/dist/web/server/manifest.js.map +1 -1
- package/package.json +1 -1
- package/src/git-graph.ts +75 -0
- package/src/server/git-history.ts +238 -0
- package/src/transcript/changes.ts +2 -2
- package/src/transcript/commits.ts +121 -0
- package/src/utils/version.ts +1 -1
- package/tests/git-graph.test.ts +45 -0
- package/tests/server/git-history.test.ts +68 -0
- package/tests/transcript/commits.test.ts +44 -0
- package/tests/web/changes-view.test.ts +9 -4
- package/web/.svelte-kit/adapter-bun/.vite/manifest.json +53 -4
- package/web/.svelte-kit/adapter-bun/_app/immutable/assets/drafts.ggyFkiVa.css +1 -0
- package/web/.svelte-kit/adapter-bun/chunks/drafts.svelte.js +196 -24
- package/web/.svelte-kit/adapter-bun/chunks/drafts.svelte.js.map +1 -1
- package/web/.svelte-kit/adapter-bun/chunks/files.js +1 -1
- package/web/.svelte-kit/adapter-bun/chunks/git-history.js +145 -0
- package/web/.svelte-kit/adapter-bun/chunks/git-history.js.map +1 -0
- package/web/.svelte-kit/adapter-bun/chunks/git.js +11 -6
- package/web/.svelte-kit/adapter-bun/chunks/git.js.map +1 -1
- package/web/.svelte-kit/adapter-bun/chunks/internal2.js +1 -1
- package/web/.svelte-kit/adapter-bun/chunks/internal2.js.map +1 -1
- package/web/.svelte-kit/adapter-bun/chunks/markdown.js +14 -7
- package/web/.svelte-kit/adapter-bun/chunks/markdown.js.map +1 -1
- package/web/.svelte-kit/adapter-bun/chunks/message-queue.js +6 -6
- package/web/.svelte-kit/adapter-bun/chunks/project.js +1 -1
- package/web/.svelte-kit/adapter-bun/chunks/sessions-json.js +3 -3
- package/web/.svelte-kit/adapter-bun/chunks/transcript.svelte.js +1 -1
- package/web/.svelte-kit/adapter-bun/chunks/ws-handlers.js +3 -3
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/history/_server.ts.js +96 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/history/_server.ts.js.map +1 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/history/commit/_server.ts.js +15 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/history/commit/_server.ts.js.map +1 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/history/diff/_server.ts.js +17 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/history/diff/_server.ts.js.map +1 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/history/file/_server.ts.js +17 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/history/file/_server.ts.js.map +1 -0
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +1 -1
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/queue/_server.ts.js +1 -1
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/rc/_server.ts.js +1 -1
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/rename/_server.ts.js +2 -2
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/restart/_server.ts.js +1 -1
- package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/steer/_server.ts.js +1 -1
- package/web/.svelte-kit/adapter-bun/entries/pages/session/_target_/_page.svelte.js +7 -3
- package/web/.svelte-kit/adapter-bun/entries/pages/session/_target_/_page.svelte.js.map +1 -1
- package/web/.svelte-kit/adapter-bun/manifest-full.js +29 -1
- package/web/.svelte-kit/adapter-bun/manifest.js +29 -1
- package/web/.svelte-kit/adapter-bun/nodes/0.js +2 -2
- package/web/.svelte-kit/adapter-bun/nodes/1.js +1 -1
- package/web/.svelte-kit/adapter-bun/nodes/2.js +2 -2
- package/web/.svelte-kit/adapter-bun/nodes/3.js +2 -2
- package/web/.svelte-kit/adapter-bun/nodes/4.js +1 -1
- package/web/.svelte-kit/adapter-bun/nodes/5.js +1 -1
- package/web/.svelte-kit/generated/server/internal.js +1 -1
- package/web/.svelte-kit/non-ambient.d.ts +10 -2
- package/web/.svelte-kit/output/client/.vite/manifest.json +156 -159
- package/web/.svelte-kit/output/client/_app/immutable/assets/sidebarActions.ggyFkiVa.css +1 -0
- package/{dist/web/client/_app/immutable/chunks/DoSoHhfi.js → web/.svelte-kit/output/client/_app/immutable/chunks/2TLW-l2v.js} +2 -2
- package/{dist/web/client/_app/immutable/chunks/DoSoHhfi.js.map → web/.svelte-kit/output/client/_app/immutable/chunks/2TLW-l2v.js.map} +1 -1
- package/{dist/web/client/_app/immutable/chunks/CSwk5Q3m.js → web/.svelte-kit/output/client/_app/immutable/chunks/7uqjrfsF.js} +7 -7
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{CSwk5Q3m.js.map → 7uqjrfsF.js.map} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/BP3lFqtA.js +2 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/BP3lFqtA.js.map +1 -0
- package/{dist/web/client/_app/immutable/chunks/CiA3iXD3.js → web/.svelte-kit/output/client/_app/immutable/chunks/BP4scVXW.js} +2 -2
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{CiA3iXD3.js.map → BP4scVXW.js.map} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/CMC_kKBx.js +10 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/CMC_kKBx.js.map +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{pupajRv2.js → CRM1TmjB.js} +2 -2
- package/{dist/web/client/_app/immutable/chunks/pupajRv2.js.map → web/.svelte-kit/output/client/_app/immutable/chunks/CRM1TmjB.js.map} +1 -1
- package/{dist/web/client/_app/immutable/chunks/CqAZ-V8_.js → web/.svelte-kit/output/client/_app/immutable/chunks/CYqlB4Hc.js} +21 -21
- package/web/.svelte-kit/output/client/_app/immutable/chunks/CYqlB4Hc.js.map +1 -0
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{Diwipoek.js → CZL1L1I4.js} +2 -2
- package/{dist/web/client/_app/immutable/chunks/Diwipoek.js.map → web/.svelte-kit/output/client/_app/immutable/chunks/CZL1L1I4.js.map} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{BJ1KpJtM.js → CmQLQpkg.js} +3 -3
- package/{dist/web/client/_app/immutable/chunks/BJ1KpJtM.js.map → web/.svelte-kit/output/client/_app/immutable/chunks/CmQLQpkg.js.map} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{DWocsT_p.js → CmWC-nOM.js} +2 -2
- package/{dist/web/client/_app/immutable/chunks/DWocsT_p.js.map → web/.svelte-kit/output/client/_app/immutable/chunks/CmWC-nOM.js.map} +1 -1
- package/{dist/web/client/_app/immutable/chunks/BVm-frHm.js → web/.svelte-kit/output/client/_app/immutable/chunks/QIbXlNkX.js} +3 -3
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{BVm-frHm.js.map → QIbXlNkX.js.map} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{GgcuRiIe.js → _rpPynN-.js} +2 -2
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{GgcuRiIe.js.map → _rpPynN-.js.map} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{gZcfYVo1.js → dqXS413R.js} +2 -2
- package/web/.svelte-kit/output/client/_app/immutable/chunks/{gZcfYVo1.js.map → dqXS413R.js.map} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/entry/app.BC-6fuE7.js +3 -0
- package/{dist/web/client/_app/immutable/entry/app.G6HNJnwa.js.map → web/.svelte-kit/output/client/_app/immutable/entry/app.BC-6fuE7.js.map} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/entry/start.CSvL30xc.js +2 -0
- package/web/.svelte-kit/output/client/_app/immutable/entry/start.CSvL30xc.js.map +1 -0
- package/{dist/web/client/_app/immutable/nodes/0.CvU8dHVe.js → web/.svelte-kit/output/client/_app/immutable/nodes/0.Bi1CyF9i.js} +2 -2
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{0.CvU8dHVe.js.map → 0.Bi1CyF9i.js.map} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{1.CZxyZwvg.js → 1.BtsEBYU3.js} +2 -2
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{1.CZxyZwvg.js.map → 1.BtsEBYU3.js.map} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{2.CPhL7bJS.js → 2.C8D7Yl5G.js} +2 -2
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{2.CPhL7bJS.js.map → 2.C8D7Yl5G.js.map} +1 -1
- package/{dist/web/client/_app/immutable/nodes/3.cUN9QtbH.js → web/.svelte-kit/output/client/_app/immutable/nodes/3.BeaWiIY-.js} +8 -8
- package/web/.svelte-kit/output/client/_app/immutable/nodes/3.BeaWiIY-.js.map +1 -0
- package/{dist/web/client/_app/immutable/nodes/4.CsAVbUQR.js → web/.svelte-kit/output/client/_app/immutable/nodes/4.D-0Zpy_6.js} +3 -3
- package/{dist/web/client/_app/immutable/nodes/4.CsAVbUQR.js.map → web/.svelte-kit/output/client/_app/immutable/nodes/4.D-0Zpy_6.js.map} +1 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/{5.dLS7DgiK.js → 5.BA5ufYuS.js} +3 -3
- package/{dist/web/client/_app/immutable/nodes/5.dLS7DgiK.js.map → web/.svelte-kit/output/client/_app/immutable/nodes/5.BA5ufYuS.js.map} +1 -1
- package/web/.svelte-kit/output/client/_app/version.json +1 -1
- package/web/.svelte-kit/output/server/.vite/manifest.json +53 -4
- package/web/.svelte-kit/output/server/_app/immutable/assets/drafts.ggyFkiVa.css +1 -0
- package/web/.svelte-kit/output/server/chunks/drafts.svelte.js +196 -24
- package/web/.svelte-kit/output/server/chunks/drafts.svelte.js.map +1 -1
- package/web/.svelte-kit/output/server/chunks/files.js +1 -1
- package/web/.svelte-kit/output/server/chunks/git-history.js +145 -0
- package/web/.svelte-kit/output/server/chunks/git-history.js.map +1 -0
- package/web/.svelte-kit/output/server/chunks/git.js +11 -6
- package/web/.svelte-kit/output/server/chunks/git.js.map +1 -1
- package/web/.svelte-kit/output/server/chunks/internal2.js +1 -1
- package/web/.svelte-kit/output/server/chunks/internal2.js.map +1 -1
- package/web/.svelte-kit/output/server/chunks/markdown.js +14 -7
- package/web/.svelte-kit/output/server/chunks/markdown.js.map +1 -1
- package/web/.svelte-kit/output/server/chunks/message-queue.js +6 -6
- package/web/.svelte-kit/output/server/chunks/project.js +1 -1
- package/web/.svelte-kit/output/server/chunks/sessions-json.js +3 -3
- package/web/.svelte-kit/output/server/chunks/transcript.svelte.js +1 -1
- package/web/.svelte-kit/output/server/chunks/ws-handlers.js +3 -3
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/history/_server.ts.js +96 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/history/_server.ts.js.map +1 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/history/commit/_server.ts.js +15 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/history/commit/_server.ts.js.map +1 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/history/diff/_server.ts.js +17 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/history/diff/_server.ts.js.map +1 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/history/file/_server.ts.js +17 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/history/file/_server.ts.js.map +1 -0
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +1 -1
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/queue/_server.ts.js +1 -1
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/rc/_server.ts.js +1 -1
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/rename/_server.ts.js +2 -2
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/restart/_server.ts.js +1 -1
- package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/steer/_server.ts.js +1 -1
- package/web/.svelte-kit/output/server/entries/pages/session/_target_/_page.svelte.js +7 -3
- package/web/.svelte-kit/output/server/entries/pages/session/_target_/_page.svelte.js.map +1 -1
- package/web/.svelte-kit/output/server/manifest-full.js +29 -1
- package/web/.svelte-kit/output/server/manifest.js +29 -1
- package/web/.svelte-kit/output/server/nodes/0.js +2 -2
- package/web/.svelte-kit/output/server/nodes/1.js +1 -1
- package/web/.svelte-kit/output/server/nodes/2.js +2 -2
- package/web/.svelte-kit/output/server/nodes/3.js +2 -2
- package/web/.svelte-kit/output/server/nodes/4.js +1 -1
- package/web/.svelte-kit/output/server/nodes/5.js +1 -1
- package/web/.svelte-kit/types/route_meta_data.json +12 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/history/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/history/commit/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/history/diff/$types.d.ts +10 -0
- package/web/.svelte-kit/types/src/routes/api/sessions/[id]/history/file/$types.d.ts +10 -0
- package/web/src/lib/components/side-panel/ChangesPane.svelte +50 -136
- package/web/src/lib/components/side-panel/DiffLines.svelte +295 -0
- package/web/src/lib/components/side-panel/HistoryPane.svelte +782 -0
- package/web/src/lib/components/side-panel/SidePanel.svelte +5 -1
- package/web/src/lib/side-panel/changes.ts +23 -6
- package/web/src/lib/side-panel/history.ts +37 -0
- package/web/src/lib/side-panel/panes.ts +12 -0
- package/web/src/routes/api/sessions/[id]/history/+server.ts +27 -0
- package/web/src/routes/api/sessions/[id]/history/commit/+server.ts +14 -0
- package/web/src/routes/api/sessions/[id]/history/diff/+server.ts +16 -0
- package/web/src/routes/api/sessions/[id]/history/file/+server.ts +16 -0
- package/web/src/routes/session/[target]/+page.svelte +1 -0
- package/dist/web/client/_app/immutable/assets/sidebarActions.gLybmCiQ.css +0 -1
- package/dist/web/client/_app/immutable/chunks/CqAZ-V8_.js.map +0 -1
- package/dist/web/client/_app/immutable/chunks/DfYTm80S.js +0 -9
- package/dist/web/client/_app/immutable/chunks/DfYTm80S.js.map +0 -1
- package/dist/web/client/_app/immutable/chunks/NNwNDi92.js +0 -2
- package/dist/web/client/_app/immutable/chunks/NNwNDi92.js.map +0 -1
- package/dist/web/client/_app/immutable/entry/app.G6HNJnwa.js +0 -3
- package/dist/web/client/_app/immutable/entry/start.BIwJt4zv.js +0 -2
- package/dist/web/client/_app/immutable/entry/start.BIwJt4zv.js.map +0 -1
- package/dist/web/client/_app/immutable/nodes/3.cUN9QtbH.js.map +0 -1
- package/dist/web/server/chunks/2-C7YTgQec.js +0 -28
- package/web/.svelte-kit/adapter-bun/_app/immutable/assets/drafts.gLybmCiQ.css +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/assets/sidebarActions.gLybmCiQ.css +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/CqAZ-V8_.js.map +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/DfYTm80S.js +0 -9
- package/web/.svelte-kit/output/client/_app/immutable/chunks/DfYTm80S.js.map +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/chunks/NNwNDi92.js +0 -2
- package/web/.svelte-kit/output/client/_app/immutable/chunks/NNwNDi92.js.map +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/entry/app.G6HNJnwa.js +0 -3
- package/web/.svelte-kit/output/client/_app/immutable/entry/start.BIwJt4zv.js +0 -2
- package/web/.svelte-kit/output/client/_app/immutable/entry/start.BIwJt4zv.js.map +0 -1
- package/web/.svelte-kit/output/client/_app/immutable/nodes/3.cUN9QtbH.js.map +0 -1
- package/web/.svelte-kit/output/server/_app/immutable/assets/drafts.gLybmCiQ.css +0 -1
package/CLAUDE.md
CHANGED
|
@@ -271,6 +271,22 @@ cache is re-read when a session in the repo writes its JSON, at most every
|
|
|
271
271
|
2s, never on a timer. The live field `changes` carries the count: git's when
|
|
272
272
|
the session is in a repo, the log's otherwise.
|
|
273
273
|
|
|
274
|
+
The History pane (`HistoryPane.svelte`) lists the repo's commits, read-only.
|
|
275
|
+
`src/server/git-history.ts` reads them on request (`GET
|
|
276
|
+
/api/sessions/<id>/history`, then `/history/commit?hash=` for a commit's files
|
|
277
|
+
and `/history/diff?hash=&file=` for one file, each against the commit's first
|
|
278
|
+
parent); a hash is checked to be a hash and nothing else before git sees it.
|
|
279
|
+
"List" follows the checked-out branch; "Graph" (`scope=all`) adds the branch of
|
|
280
|
+
every worktree and the upstream, and `layoutGraph()` in `src/git-graph.ts`
|
|
281
|
+
gives each a lane that never shifts sideways. A tip's branch is named after
|
|
282
|
+
the worker whose session sits in that worktree. Two marks come from outside
|
|
283
|
+
git: `pushed` is false while no remote branch holds the commit, and `mine`
|
|
284
|
+
says this session made it. The second is read off the log by
|
|
285
|
+
`src/transcript/commits.ts`, by time and not by output, since `git commit -q`
|
|
286
|
+
prints nothing: a commit whose committer time falls inside a run of a
|
|
287
|
+
commit-writing command belongs to that run's turn, which "Go to turn" reveals.
|
|
288
|
+
`DiffLines.svelte` draws a diff for this pane and for Changes.
|
|
289
|
+
|
|
274
290
|
The side panel's Files pane (`FilesPane.svelte`) follows t3code's file
|
|
275
291
|
preview: with a file open the tree is a column on the file's far side, which a
|
|
276
292
|
button in the file's header puts away, and on a narrow pane the two take turns.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lanes for a commit graph.
|
|
3
|
+
*
|
|
4
|
+
* Commits arrive newest first, each naming its parents. A lane is a column a
|
|
5
|
+
* line of history runs down; a commit sits in the lane that was waiting for
|
|
6
|
+
* it, its first parent carries that lane on, and any other parent opens a lane
|
|
7
|
+
* of its own (or joins the one already waiting for it). Lanes never shift
|
|
8
|
+
* sideways, so a branch is a straight line from its tip to where it forks.
|
|
9
|
+
*/
|
|
10
|
+
export interface GraphInput {
|
|
11
|
+
hash: string;
|
|
12
|
+
parents: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface GraphRow {
|
|
15
|
+
/** The column the commit's dot sits in. */
|
|
16
|
+
lane: number;
|
|
17
|
+
/** Lanes with a line arriving from above that end at this commit. */
|
|
18
|
+
into: number[];
|
|
19
|
+
/** Lanes with a line that passes this row without touching the commit. */
|
|
20
|
+
through: number[];
|
|
21
|
+
/** Lanes a line leaves this commit toward, one per parent that is listed further down. */
|
|
22
|
+
out: number[];
|
|
23
|
+
}
|
|
24
|
+
export interface Graph {
|
|
25
|
+
rows: GraphRow[];
|
|
26
|
+
/** The most lanes any row uses, for sizing the column the graph is drawn in. */
|
|
27
|
+
width: number;
|
|
28
|
+
}
|
|
29
|
+
export declare function layoutGraph(commits: readonly GraphInput[]): Graph;
|
|
30
|
+
//# sourceMappingURL=git-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-graph.d.ts","sourceRoot":"","sources":["../src/git-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0EAA0E;IAC1E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,0FAA0F;IAC1F,GAAG,EAAE,MAAM,EAAE,CAAC;CACf;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,KAAK,CA0CjE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lanes for a commit graph.
|
|
3
|
+
*
|
|
4
|
+
* Commits arrive newest first, each naming its parents. A lane is a column a
|
|
5
|
+
* line of history runs down; a commit sits in the lane that was waiting for
|
|
6
|
+
* it, its first parent carries that lane on, and any other parent opens a lane
|
|
7
|
+
* of its own (or joins the one already waiting for it). Lanes never shift
|
|
8
|
+
* sideways, so a branch is a straight line from its tip to where it forks.
|
|
9
|
+
*/
|
|
10
|
+
export function layoutGraph(commits) {
|
|
11
|
+
const listed = new Set(commits.map((c) => c.hash));
|
|
12
|
+
/** What each lane is waiting for next, or null when it is free. */
|
|
13
|
+
const waiting = [];
|
|
14
|
+
const free = () => {
|
|
15
|
+
const at = waiting.indexOf(null);
|
|
16
|
+
return at === -1 ? waiting.length : at;
|
|
17
|
+
};
|
|
18
|
+
const rows = [];
|
|
19
|
+
let width = 0;
|
|
20
|
+
for (const commit of commits) {
|
|
21
|
+
const into = [];
|
|
22
|
+
waiting.forEach((hash, lane) => {
|
|
23
|
+
if (hash === commit.hash)
|
|
24
|
+
into.push(lane);
|
|
25
|
+
});
|
|
26
|
+
const lane = into[0] ?? free();
|
|
27
|
+
const through = [];
|
|
28
|
+
waiting.forEach((hash, i) => {
|
|
29
|
+
if (hash !== null && hash !== commit.hash)
|
|
30
|
+
through.push(i);
|
|
31
|
+
});
|
|
32
|
+
// Every lane that was waiting for this commit ends here; its own carries on below.
|
|
33
|
+
for (const i of into)
|
|
34
|
+
waiting[i] = null;
|
|
35
|
+
waiting[lane] = null;
|
|
36
|
+
const out = [];
|
|
37
|
+
// A parent outside the listing (history cut short) draws no line: nothing is there to reach.
|
|
38
|
+
const parents = commit.parents.filter((p) => listed.has(p));
|
|
39
|
+
parents.forEach((parent, n) => {
|
|
40
|
+
// The first parent carries this lane on, even when another lane already
|
|
41
|
+
// waits for the same commit: the two meet there, and neither bends early.
|
|
42
|
+
let to = n === 0 ? lane : waiting.indexOf(parent);
|
|
43
|
+
if (to === -1)
|
|
44
|
+
to = free();
|
|
45
|
+
waiting[to] = parent;
|
|
46
|
+
if (!out.includes(to))
|
|
47
|
+
out.push(to);
|
|
48
|
+
});
|
|
49
|
+
while (waiting.length > 0 && waiting[waiting.length - 1] === null)
|
|
50
|
+
waiting.pop();
|
|
51
|
+
width = Math.max(width, lane + 1, ...through.map((i) => i + 1), ...out.map((i) => i + 1));
|
|
52
|
+
rows.push({ lane, into, through, out });
|
|
53
|
+
}
|
|
54
|
+
return { rows, width };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=git-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-graph.js","sourceRoot":"","sources":["../src/git-graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A repo's commits, for the side panel's History pane.
|
|
3
|
+
*
|
|
4
|
+
* Read on request and never cached: a few hundred commits with their line
|
|
5
|
+
* counts take git a few hundred milliseconds, and the pane asks again only
|
|
6
|
+
* when its session's commits may have changed. Everything goes through `execFile` with the revision validated first, so
|
|
7
|
+
* nothing a browser sends is ever parsed by a shell or taken for an option.
|
|
8
|
+
*/
|
|
9
|
+
import { type GitDiff, type GitFileKind } from './git.js';
|
|
10
|
+
export interface HistoryCommit {
|
|
11
|
+
hash: string;
|
|
12
|
+
parents: string[];
|
|
13
|
+
author: string;
|
|
14
|
+
/** Committer time, ms. */
|
|
15
|
+
at: number;
|
|
16
|
+
subject: string;
|
|
17
|
+
/** Branches and tags that point here, as git names them: `main`, `origin/main`, `tag: v1`. */
|
|
18
|
+
refs: string[];
|
|
19
|
+
additions: number;
|
|
20
|
+
deletions: number;
|
|
21
|
+
files: number;
|
|
22
|
+
/** False while no remote branch holds the commit yet; always true in a repo with no remote. */
|
|
23
|
+
pushed: boolean;
|
|
24
|
+
}
|
|
25
|
+
/** A branch checked out somewhere: the repo itself, or one of its worktrees. */
|
|
26
|
+
export interface HistoryTip {
|
|
27
|
+
path: string;
|
|
28
|
+
branch: string | null;
|
|
29
|
+
hash: string;
|
|
30
|
+
}
|
|
31
|
+
export interface GitHistory {
|
|
32
|
+
root: string;
|
|
33
|
+
/** The branch checked out where the session sits, or null on a detached HEAD. */
|
|
34
|
+
branch: string | null;
|
|
35
|
+
commits: HistoryCommit[];
|
|
36
|
+
/** Every checkout of the repo, so a lane can be named after the worker in it. */
|
|
37
|
+
tips: HistoryTip[];
|
|
38
|
+
/** More commits exist than were listed. */
|
|
39
|
+
truncated: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface CommitFile {
|
|
42
|
+
file: string;
|
|
43
|
+
oldPath?: string;
|
|
44
|
+
kind: GitFileKind;
|
|
45
|
+
binary?: true;
|
|
46
|
+
additions: number;
|
|
47
|
+
deletions: number;
|
|
48
|
+
}
|
|
49
|
+
/** `branch` follows the checked-out branch alone; `all` adds every worktree's branch and the upstream. */
|
|
50
|
+
export type HistoryScope = 'branch' | 'all';
|
|
51
|
+
/** Commits listed at once: enough to scroll back a few weeks, and a graph a browser draws without thought. */
|
|
52
|
+
export declare const HISTORY_LIMIT = 300;
|
|
53
|
+
/** Parse `git log` written with `FORMAT` and `--shortstat`. */
|
|
54
|
+
export declare function parseLog(out: string): Omit<HistoryCommit, 'pushed'>[];
|
|
55
|
+
/** Parse `git worktree list --porcelain`. */
|
|
56
|
+
export declare function parseWorktrees(out: string): HistoryTip[];
|
|
57
|
+
/** Parse `git diff --name-status -z`: `M\0path\0`, or `R100\0old\0new\0` for a rename or copy. */
|
|
58
|
+
export declare function parseNameStatus(out: string): Pick<CommitFile, 'file' | 'oldPath' | 'kind'>[];
|
|
59
|
+
export declare function gitHistory(cwd: string, scope: HistoryScope): Promise<GitHistory | null>;
|
|
60
|
+
/** The files a commit changed against its first parent, which for a merge is what the merge brought in. */
|
|
61
|
+
export declare function commitFiles(cwd: string, hash: string): Promise<{
|
|
62
|
+
hash: string;
|
|
63
|
+
files: CommitFile[];
|
|
64
|
+
} | null>;
|
|
65
|
+
/** One file's diff within a commit; null when the commit or the path is not one this repo has. */
|
|
66
|
+
export declare function commitFileDiff(cwd: string, hash: string, file: string): Promise<GitDiff | null>;
|
|
67
|
+
/**
|
|
68
|
+
* A file as a commit left it, for showing the lines a diff leaves out. Null
|
|
69
|
+
* when the commit has no such file (it was deleted there) or it is not text.
|
|
70
|
+
*/
|
|
71
|
+
export declare function commitFileText(cwd: string, hash: string, file: string): Promise<{
|
|
72
|
+
text: string;
|
|
73
|
+
truncated: boolean;
|
|
74
|
+
} | null>;
|
|
75
|
+
//# sourceMappingURL=git-history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-history.d.ts","sourceRoot":"","sources":["../../src/server/git-history.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAMN,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,8FAA8F;IAC9F,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,+FAA+F;IAC/F,MAAM,EAAE,OAAO,CAAC;CAChB;AAED,gFAAgF;AAChF,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,iFAAiF;IACjF,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,2CAA2C;IAC3C,SAAS,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,0GAA0G;AAC1G,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE5C,8GAA8G;AAC9G,eAAO,MAAM,aAAa,MAAM,CAAC;AAQjC,+DAA+D;AAC/D,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,CA0BrE;AAED,6CAA6C;AAC7C,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,CAUxD;AAED,kGAAkG;AAClG,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,EAAE,CAe5F;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAiC7F;AAeD,2GAA2G;AAC3G,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CAoBlH;AAED,kGAAkG;AAClG,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CASrG;AAKD;;;GAGG;AACH,wBAAsB,cAAc,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAAC,CAStD"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A repo's commits, for the side panel's History pane.
|
|
3
|
+
*
|
|
4
|
+
* Read on request and never cached: a few hundred commits with their line
|
|
5
|
+
* counts take git a few hundred milliseconds, and the pane asks again only
|
|
6
|
+
* when its session's commits may have changed. Everything goes through `execFile` with the revision validated first, so
|
|
7
|
+
* nothing a browser sends is ever parsed by a shell or taken for an option.
|
|
8
|
+
*/
|
|
9
|
+
import { confinePath, git, parseNumstat, parseUnifiedDiff, repoRoot } from './git.js';
|
|
10
|
+
/** Commits listed at once: enough to scroll back a few weeks, and a graph a browser draws without thought. */
|
|
11
|
+
export const HISTORY_LIMIT = 300;
|
|
12
|
+
/** What git writes for an empty tree, to diff a root commit against. */
|
|
13
|
+
const EMPTY_TREE = '4b825dc642cb6eb9a060e54bf8d69288fbee4904';
|
|
14
|
+
const RECORD = '\x1e';
|
|
15
|
+
const FIELD = '\x1f';
|
|
16
|
+
const FORMAT = `--format=${RECORD}%H${FIELD}%P${FIELD}%an${FIELD}%ct${FIELD}%D${FIELD}%s`;
|
|
17
|
+
const SHORTSTAT = /(\d+) files? changed(?:, (\d+) insertions?\(\+\))?(?:, (\d+) deletions?\(-\))?/;
|
|
18
|
+
/** Parse `git log` written with `FORMAT` and `--shortstat`. */
|
|
19
|
+
export function parseLog(out) {
|
|
20
|
+
const commits = [];
|
|
21
|
+
for (const record of out.split(RECORD)) {
|
|
22
|
+
if (!record.trim())
|
|
23
|
+
continue;
|
|
24
|
+
const [head, ...rest] = record.split('\n');
|
|
25
|
+
const [hash, parents, author, ct, refs, subject] = head.split(FIELD);
|
|
26
|
+
if (!hash || subject === undefined)
|
|
27
|
+
continue;
|
|
28
|
+
const stat = SHORTSTAT.exec(rest.join('\n'));
|
|
29
|
+
commits.push({
|
|
30
|
+
hash,
|
|
31
|
+
parents: parents ? parents.split(' ') : [],
|
|
32
|
+
author,
|
|
33
|
+
at: Number(ct) * 1000,
|
|
34
|
+
subject,
|
|
35
|
+
refs: refs
|
|
36
|
+
? refs
|
|
37
|
+
.split(', ')
|
|
38
|
+
.map((r) => r.replace(/^HEAD -> /, ''))
|
|
39
|
+
.filter((r) => r !== 'HEAD' && !r.endsWith('/HEAD'))
|
|
40
|
+
: [],
|
|
41
|
+
files: Number(stat?.[1] ?? 0),
|
|
42
|
+
additions: Number(stat?.[2] ?? 0),
|
|
43
|
+
deletions: Number(stat?.[3] ?? 0)
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return commits;
|
|
47
|
+
}
|
|
48
|
+
/** Parse `git worktree list --porcelain`. */
|
|
49
|
+
export function parseWorktrees(out) {
|
|
50
|
+
const tips = [];
|
|
51
|
+
for (const block of out.split('\n\n')) {
|
|
52
|
+
const path = /^worktree (.+)$/m.exec(block)?.[1];
|
|
53
|
+
const hash = /^HEAD ([0-9a-f]+)$/m.exec(block)?.[1];
|
|
54
|
+
if (!path || !hash)
|
|
55
|
+
continue;
|
|
56
|
+
const branch = /^branch refs\/heads\/(.+)$/m.exec(block)?.[1] ?? null;
|
|
57
|
+
tips.push({ path, branch, hash });
|
|
58
|
+
}
|
|
59
|
+
return tips;
|
|
60
|
+
}
|
|
61
|
+
/** Parse `git diff --name-status -z`: `M\0path\0`, or `R100\0old\0new\0` for a rename or copy. */
|
|
62
|
+
export function parseNameStatus(out) {
|
|
63
|
+
const files = [];
|
|
64
|
+
const fields = out.split('\0');
|
|
65
|
+
for (let i = 0; i < fields.length; i++) {
|
|
66
|
+
const code = fields[i];
|
|
67
|
+
if (!code)
|
|
68
|
+
continue;
|
|
69
|
+
if (code[0] === 'R' || code[0] === 'C') {
|
|
70
|
+
files.push({ file: fields[i + 2] ?? '', oldPath: fields[i + 1], kind: 'renamed' });
|
|
71
|
+
i += 2;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
files.push({ file: fields[i + 1] ?? '', kind: code[0] === 'A' ? 'added' : code[0] === 'D' ? 'deleted' : 'modified' });
|
|
75
|
+
i += 1;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return files.filter((f) => f.file);
|
|
79
|
+
}
|
|
80
|
+
export async function gitHistory(cwd, scope) {
|
|
81
|
+
const root = await repoRoot(cwd);
|
|
82
|
+
if (!root)
|
|
83
|
+
return null;
|
|
84
|
+
const [worktrees, branchOut, upstream, remotes] = await Promise.all([
|
|
85
|
+
git(['worktree', 'list', '--porcelain'], root),
|
|
86
|
+
git(['symbolic-ref', '--short', '-q', 'HEAD'], root, [0, 1]),
|
|
87
|
+
git(['rev-parse', '--verify', '-q', '@{upstream}'], root, [0, 1, 128]),
|
|
88
|
+
git(['remote'], root)
|
|
89
|
+
]);
|
|
90
|
+
const tips = parseWorktrees(worktrees ?? '');
|
|
91
|
+
const revs = new Set(['HEAD']);
|
|
92
|
+
if (scope === 'all') {
|
|
93
|
+
for (const tip of tips)
|
|
94
|
+
revs.add(tip.hash);
|
|
95
|
+
if (upstream?.trim())
|
|
96
|
+
revs.add(upstream.trim());
|
|
97
|
+
}
|
|
98
|
+
const from = [...revs];
|
|
99
|
+
const [log, local] = await Promise.all([
|
|
100
|
+
// One more than is shown says whether there is more.
|
|
101
|
+
git(['log', '--date-order', `-n${HISTORY_LIMIT + 1}`, FORMAT, '--shortstat', ...from, '--'], root),
|
|
102
|
+
remotes?.trim()
|
|
103
|
+
? git(['rev-list', `-n${HISTORY_LIMIT + 1}`, ...from, '--not', '--remotes', '--'], root)
|
|
104
|
+
: Promise.resolve('')
|
|
105
|
+
]);
|
|
106
|
+
if (log === null)
|
|
107
|
+
return null;
|
|
108
|
+
const unpushed = new Set((local ?? '').split('\n').filter(Boolean));
|
|
109
|
+
const parsed = parseLog(log);
|
|
110
|
+
return {
|
|
111
|
+
root,
|
|
112
|
+
branch: branchOut?.trim() || null,
|
|
113
|
+
commits: parsed.slice(0, HISTORY_LIMIT).map((c) => ({ ...c, pushed: !unpushed.has(c.hash) })),
|
|
114
|
+
tips,
|
|
115
|
+
truncated: parsed.length > HISTORY_LIMIT
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/** A full or abbreviated hash and nothing else: never a ref name, a range or an option. */
|
|
119
|
+
const HASH = /^[0-9a-f]{7,40}$/;
|
|
120
|
+
/** The commit a hash names and what to diff it against: its first parent, or the empty tree. */
|
|
121
|
+
async function resolveCommit(root, hash) {
|
|
122
|
+
if (!HASH.test(hash))
|
|
123
|
+
return null;
|
|
124
|
+
const full = (await git(['rev-parse', '--verify', '-q', `${hash}^{commit}`], root, [0, 1, 128]))?.trim();
|
|
125
|
+
if (!full || !HASH.test(full))
|
|
126
|
+
return null;
|
|
127
|
+
// A root commit has no parent to name; rev-parse says so with a non-zero exit.
|
|
128
|
+
const parent = (await git(['rev-parse', '--verify', '-q', `${full}^`], root, [0, 1, 128]))?.trim();
|
|
129
|
+
return { hash: full, base: parent && HASH.test(parent) ? parent : EMPTY_TREE };
|
|
130
|
+
}
|
|
131
|
+
/** The files a commit changed against its first parent, which for a merge is what the merge brought in. */
|
|
132
|
+
export async function commitFiles(cwd, hash) {
|
|
133
|
+
const root = await repoRoot(cwd);
|
|
134
|
+
const commit = root && (await resolveCommit(root, hash));
|
|
135
|
+
if (!root || !commit)
|
|
136
|
+
return null;
|
|
137
|
+
const [names, counts] = await Promise.all([
|
|
138
|
+
git(['diff', '-M', '--name-status', '-z', commit.base, commit.hash, '--'], root),
|
|
139
|
+
git(['diff', '-M', '--numstat', '-z', commit.base, commit.hash, '--'], root)
|
|
140
|
+
]);
|
|
141
|
+
if (names === null || counts === null)
|
|
142
|
+
return null;
|
|
143
|
+
const lines = parseNumstat(counts);
|
|
144
|
+
const files = parseNameStatus(names).map((f) => {
|
|
145
|
+
const count = lines.get(f.file);
|
|
146
|
+
return {
|
|
147
|
+
...f,
|
|
148
|
+
additions: count?.additions ?? 0,
|
|
149
|
+
deletions: count?.deletions ?? 0,
|
|
150
|
+
...(count?.binary ? { binary: true } : {})
|
|
151
|
+
};
|
|
152
|
+
});
|
|
153
|
+
return { hash: commit.hash, files };
|
|
154
|
+
}
|
|
155
|
+
/** One file's diff within a commit; null when the commit or the path is not one this repo has. */
|
|
156
|
+
export async function commitFileDiff(cwd, hash, file) {
|
|
157
|
+
const root = await repoRoot(cwd);
|
|
158
|
+
const commit = root && (await resolveCommit(root, hash));
|
|
159
|
+
const rel = root && confinePath(root, file);
|
|
160
|
+
if (!root || !commit || !rel)
|
|
161
|
+
return null;
|
|
162
|
+
const out = await git(['diff', '-M', commit.base, commit.hash, '--', rel], root);
|
|
163
|
+
if (out === null)
|
|
164
|
+
return null;
|
|
165
|
+
const parsed = parseUnifiedDiff(out);
|
|
166
|
+
return { file: rel, binary: parsed.binary, hunks: parsed.hunks };
|
|
167
|
+
}
|
|
168
|
+
/** The most of a file read for a diff's hidden lines; past it the rest stays hidden. */
|
|
169
|
+
const TEXT_LIMIT_BYTES = 1024 * 1024;
|
|
170
|
+
/**
|
|
171
|
+
* A file as a commit left it, for showing the lines a diff leaves out. Null
|
|
172
|
+
* when the commit has no such file (it was deleted there) or it is not text.
|
|
173
|
+
*/
|
|
174
|
+
export async function commitFileText(cwd, hash, file) {
|
|
175
|
+
const root = await repoRoot(cwd);
|
|
176
|
+
const commit = root && (await resolveCommit(root, hash));
|
|
177
|
+
const rel = root && confinePath(root, file);
|
|
178
|
+
if (!root || !commit || !rel)
|
|
179
|
+
return null;
|
|
180
|
+
const out = await git(['show', `${commit.hash}:${rel}`], root, [0]);
|
|
181
|
+
if (out === null || out.includes('\0'))
|
|
182
|
+
return null;
|
|
183
|
+
const truncated = out.length > TEXT_LIMIT_BYTES;
|
|
184
|
+
return { text: truncated ? out.slice(0, TEXT_LIMIT_BYTES) : out, truncated };
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=git-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-history.js","sourceRoot":"","sources":["../../src/server/git-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,9 @@ export declare function summarize(files: {
|
|
|
51
51
|
* or when it carries content but no `originalFile` to have changed.
|
|
52
52
|
*/
|
|
53
53
|
export declare function fileChangeFromSidecar(sidecar: unknown): FileChange | null;
|
|
54
|
+
/** The text that opens a turn, or null when the line is not a prompt. */
|
|
55
|
+
export declare function promptText(record: Record<string, unknown>): string | null;
|
|
56
|
+
export declare function parseTs(value: unknown): number;
|
|
54
57
|
/**
|
|
55
58
|
* Feed a session's JSONL lines in file order; read the changes out per turn
|
|
56
59
|
* or per session. Lines that cannot carry a change or open a turn are passed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../src/transcript/changes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAyD,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAEpG,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAE9D,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,yFAAyF;IACzF,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,cAAc,CAM3F;AA2BD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAWzE;
|
|
1
|
+
{"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../src/transcript/changes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAyD,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAEpG,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAE9D,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,yFAAyF;IACzF,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,cAAc,CAM3F;AA2BD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAWzE;AAKD,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAuBzE;AAQD,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAG9C;AA2BD;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAc;IAC3B,6EAA6E;IAC7E,OAAO,CAAC,IAAI,CAAqB;IAEjC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAmDxB,6EAA6E;IAC7E,SAAS,IAAI,MAAM,EAAE;IAIrB,sDAAsD;IACtD,MAAM,IAAI,WAAW,EAAE;IAYvB,6EAA6E;IAC7E,OAAO,CAAC,OAAO;IAYf,yFAAyF;IACzF,KAAK,IAAI,UAAU,EAAE;IAIrB,uDAAuD;IACvD,MAAM,IAAI,eAAe,EAAE;IAI3B,oFAAoF;IACpF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI;IAQ7D,OAAO,IAAI,cAAc;CAG1B;AAiBD,qCAAqC;AACrC,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GAAG,gBAAgB,GAAG,IAAI,CAoB1B"}
|
|
@@ -73,7 +73,7 @@ export function fileChangeFromSidecar(sidecar) {
|
|
|
73
73
|
/** Prompts the harness wrote rather than a person: notifications, reminders, a local command's lines. */
|
|
74
74
|
const HARNESS_PROMPT = /^<(task-notification|system-reminder|local-command-)/;
|
|
75
75
|
/** The text that opens a turn, or null when the line is not a prompt. */
|
|
76
|
-
function promptText(record) {
|
|
76
|
+
export function promptText(record) {
|
|
77
77
|
if (record.isMeta === true || record.isCompactSummary === true)
|
|
78
78
|
return null;
|
|
79
79
|
const kind = asRecord(record.origin)?.kind;
|
|
@@ -111,7 +111,7 @@ function isCommand(record) {
|
|
|
111
111
|
const content = asRecord(record.message)?.content;
|
|
112
112
|
return typeof content === "string" && parseSlashCommand(content.trim()) !== null;
|
|
113
113
|
}
|
|
114
|
-
function parseTs(value) {
|
|
114
|
+
export function parseTs(value) {
|
|
115
115
|
const ts = typeof value === "string" ? Date.parse(value) : NaN;
|
|
116
116
|
return Number.isFinite(ts) ? ts : 0;
|
|
117
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changes.js","sourceRoot":"","sources":["../../src/transcript/changes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"changes.js","sourceRoot":"","sources":["../../src/transcript/changes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,mBAAmB,EAAkB,MAAM,aAAa,CAAC;AAiCpG,2CAA2C;AAC3C,MAAM,UAAU,SAAS,CAAC,KAAiD;IACzE,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACrD,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,SAAS,WAAW,CAAC,EAA2B;IAC9C,OAAO,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,UAAU,CAAC,KAAkB;IACpC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS,EAAE,CAAC;iBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED,yDAAyD;AACzD,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAChD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,OAAO,GACX,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC;IACjG,IAAI,KAAK,GAAG,mBAAmB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IACpD,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,IAAI;QAAE,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACrF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AACrF,CAAC;AAED,yGAAyG;AACzG,MAAM,cAAc,GAAG,sDAAsD,CAAC;AAE9E,yEAAyE;AACzE,MAAM,UAAU,UAAU,CAAC,MAA+B;IACxD,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5E,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IAC3C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClD,IAAI,IAAY,CAAC;IACjB,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,IAAI,GAAG,OAAO,CAAC;SAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,GAAG,EAAE,IAAI,KAAK,aAAa;gBAAE,OAAO,IAAI,CAAC;YAC7C,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAChE,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;;QAAM,OAAO,IAAI,CAAC;IACnB,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,IAAI,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3E,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,OAAO;QAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACpF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,OAAO,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED,wEAAwE;AACxE,SAAS,SAAS,CAAC,MAA+B;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClD,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,MAAM,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/D,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AAWD,4DAA4D;AAC5D,SAAS,KAAK,CAAC,IAAY,EAAE,OAAqB;IAChD,OAAO;QACL,IAAI;QACJ,uEAAuE;QACvE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACrB,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACvD,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,SAAS,KAAK,CAAC,IAAY,EAAE,OAAqB;IAChD,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IACnB,KAAK,GAAW,EAAE,CAAC;IAC3B,6EAA6E;IACrE,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,IAAI,CAAC,IAAY;QACf,2EAA2E;QAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAAE,OAAO;QAClG,IAAI,MAAsC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI;YAAE,OAAO;QAE7E,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;YAClD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBACnC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,aAAa,CAAC;gBACtE,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAClD,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;oBAAE,OAAO;gBACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;gBACzF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;gBACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO;QAC5B,4EAA4E;QAC5E,6EAA6E;QAC7E,qEAAqE;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/C,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;YAAE,OAAO;QAC3F,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;YAC3B,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;YAClD,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;YAC7B,MAAM;YACN,OAAO,EAAE,IAAI,GAAG,EAAE;SACnB,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,sDAAsD;IACtD,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;aACvC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACd,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAClE,CAAC,CAAC,CAAC;IACR,CAAC;IAED,6EAA6E;IACrE,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC5B,IAAI,KAAK;oBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;;oBAC1B,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,yFAAyF;IACzF,KAAK;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,uDAAuD;IACvD,MAAM;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,oFAAoF;IACpF,IAAI,CAAC,IAAY,EAAE,MAAsB;QACvC,MAAM,IAAI,GACR,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,OAAO;QACL,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;CACF;AAYD,4EAA4E;AAC5E,MAAM,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC;AAE9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE3C,qCAAqC;AACrC,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAI9B;IACC,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,OAAO;QAAE,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChG,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,gBAAgB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC;IACf,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC5B,CAAC,CAAC,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACrC,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;YAAE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;gBAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnF,OAAO,CAAC,CAAC,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which commits a session made, read off its log.
|
|
3
|
+
*
|
|
4
|
+
* A commit's own output is no evidence: `git commit -q` prints nothing, and a
|
|
5
|
+
* hash in someone's prose is not a commit. What the log does say for certain
|
|
6
|
+
* is when the session ran a command that writes commits, and how long it took.
|
|
7
|
+
* A commit whose committer time falls inside one of those runs was made by
|
|
8
|
+
* it, and the turn the run belongs to is the place in the conversation that
|
|
9
|
+
* explains the commit.
|
|
10
|
+
*/
|
|
11
|
+
/** One run of a command that can write commits. */
|
|
12
|
+
export interface CommitRun {
|
|
13
|
+
/** The id of the prompt that opened the turn, or null before the first one. */
|
|
14
|
+
turn: string | null;
|
|
15
|
+
from: number;
|
|
16
|
+
/** When its result came back; null while it is still running. */
|
|
17
|
+
to: number | null;
|
|
18
|
+
}
|
|
19
|
+
export declare class CommitRunCollector {
|
|
20
|
+
private runs;
|
|
21
|
+
private open;
|
|
22
|
+
private turn;
|
|
23
|
+
feed(line: string): void;
|
|
24
|
+
/** The run a commit made at `at` (ms) belongs to, if the session was writing commits then. */
|
|
25
|
+
runAt(at: number): CommitRun | null;
|
|
26
|
+
}
|
|
27
|
+
/** The session's commit-writing runs as its log has them now, or null when it has no log yet. */
|
|
28
|
+
export declare function sessionCommitRuns(session: {
|
|
29
|
+
id: string;
|
|
30
|
+
cwd: string;
|
|
31
|
+
transcript_path?: string | null;
|
|
32
|
+
}): CommitRunCollector | null;
|
|
33
|
+
//# sourceMappingURL=commits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commits.d.ts","sourceRoot":"","sources":["../../src/transcript/commits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACnB;AAUD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,IAAI,CAAuB;IAEnC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAuCxB,8FAA8F;IAC9F,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CAKpC;AAYD,iGAAiG;AACjG,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,GAAG,kBAAkB,GAAG,IAAI,CAoB5B"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which commits a session made, read off its log.
|
|
3
|
+
*
|
|
4
|
+
* A commit's own output is no evidence: `git commit -q` prints nothing, and a
|
|
5
|
+
* hash in someone's prose is not a commit. What the log does say for certain
|
|
6
|
+
* is when the session ran a command that writes commits, and how long it took.
|
|
7
|
+
* A commit whose committer time falls inside one of those runs was made by
|
|
8
|
+
* it, and the turn the run belongs to is the place in the conversation that
|
|
9
|
+
* explains the commit.
|
|
10
|
+
*/
|
|
11
|
+
import { asRecord, readString } from "./json.js";
|
|
12
|
+
import { peekTranscriptPath } from "./context-peek.js";
|
|
13
|
+
import { JsonlTailer } from "./tailer.js";
|
|
14
|
+
import { parseTs, promptText } from "./changes.js";
|
|
15
|
+
/** git's commit-writing verbs, and the release script that commits a version bump. */
|
|
16
|
+
const WRITES_COMMITS = /\bgit\b[^|;&\n]*\b(?:commit|merge|cherry-pick|revert|rebase|am)\b|\bnpm version\b/;
|
|
17
|
+
/** A clock on another machine, or a second lost to rounding, should not unmake a match. */
|
|
18
|
+
const SLACK_MS = 2_000;
|
|
19
|
+
/** How long a run with no result yet is believed: an interrupted one never gets its result. */
|
|
20
|
+
const OPEN_RUN_MS = 10 * 60_000;
|
|
21
|
+
export class CommitRunCollector {
|
|
22
|
+
runs = [];
|
|
23
|
+
open = new Map();
|
|
24
|
+
turn = null;
|
|
25
|
+
feed(line) {
|
|
26
|
+
const isUser = line.includes('"type":"user"');
|
|
27
|
+
const mayCommit = line.includes('"tool_use"') && (line.includes("git ") || line.includes("npm version"));
|
|
28
|
+
if (!isUser && !mayCommit)
|
|
29
|
+
return;
|
|
30
|
+
if (isUser && this.open.size === 0 && line.includes('"tool_result"'))
|
|
31
|
+
return;
|
|
32
|
+
let record;
|
|
33
|
+
try {
|
|
34
|
+
record = asRecord(JSON.parse(line));
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (!record || record.isSidechain === true)
|
|
40
|
+
return;
|
|
41
|
+
const content = asRecord(record.message)?.content;
|
|
42
|
+
const blocks = Array.isArray(content) ? content.map(asRecord) : [];
|
|
43
|
+
const ts = parseTs(record.timestamp);
|
|
44
|
+
if (record.type === "assistant") {
|
|
45
|
+
for (const block of blocks) {
|
|
46
|
+
if (block?.type !== "tool_use" || block.name !== "Bash")
|
|
47
|
+
continue;
|
|
48
|
+
const id = readString(block.id);
|
|
49
|
+
const command = readString(asRecord(block.input)?.command);
|
|
50
|
+
if (!id || !command || !WRITES_COMMITS.test(command))
|
|
51
|
+
continue;
|
|
52
|
+
const run = { turn: this.turn, from: ts, to: null };
|
|
53
|
+
this.runs.push(run);
|
|
54
|
+
this.open.set(id, run);
|
|
55
|
+
}
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (record.type !== "user")
|
|
59
|
+
return;
|
|
60
|
+
for (const block of blocks) {
|
|
61
|
+
if (block?.type !== "tool_result")
|
|
62
|
+
continue;
|
|
63
|
+
const run = this.open.get(readString(block.tool_use_id) ?? "");
|
|
64
|
+
if (!run)
|
|
65
|
+
continue;
|
|
66
|
+
run.to = ts;
|
|
67
|
+
this.open.delete(readString(block.tool_use_id) ?? "");
|
|
68
|
+
}
|
|
69
|
+
if (promptText(record) !== null)
|
|
70
|
+
this.turn = readString(record.uuid);
|
|
71
|
+
}
|
|
72
|
+
/** The run a commit made at `at` (ms) belongs to, if the session was writing commits then. */
|
|
73
|
+
runAt(at) {
|
|
74
|
+
return (this.runs.find((run) => at >= run.from - SLACK_MS && at <= (run.to ?? run.from + OPEN_RUN_MS) + SLACK_MS) ?? null);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** A log nobody has asked about for this long is dropped. */
|
|
78
|
+
const FORGET_MS = 10 * 60_000;
|
|
79
|
+
const tracked = new Map();
|
|
80
|
+
/** The session's commit-writing runs as its log has them now, or null when it has no log yet. */
|
|
81
|
+
export function sessionCommitRuns(session) {
|
|
82
|
+
const path = peekTranscriptPath(session);
|
|
83
|
+
if (!path)
|
|
84
|
+
return null;
|
|
85
|
+
const now = Date.now();
|
|
86
|
+
for (const [other, entry] of tracked)
|
|
87
|
+
if (now - entry.usedAt > FORGET_MS)
|
|
88
|
+
tracked.delete(other);
|
|
89
|
+
let t = tracked.get(path);
|
|
90
|
+
if (!t) {
|
|
91
|
+
t = { tailer: new JsonlTailer(path), collector: new CommitRunCollector(), usedAt: now };
|
|
92
|
+
tracked.set(path, t);
|
|
93
|
+
}
|
|
94
|
+
t.usedAt = now;
|
|
95
|
+
for (;;) {
|
|
96
|
+
const read = t.tailer.read();
|
|
97
|
+
if (read.status === "reset") {
|
|
98
|
+
t.collector = new CommitRunCollector();
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (read.status === "lines")
|
|
102
|
+
for (const line of read.lines)
|
|
103
|
+
t.collector.feed(line);
|
|
104
|
+
return t.collector;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=commits.js.map
|