@markusylisiurunen/tau 0.3.59 → 0.3.61
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/code_mode/runtime.js +4 -2
- package/dist/code_mode/runtime.js.map +1 -1
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/diff_review/review_instructions.js +2 -1
- package/dist/core/diff_review/review_instructions.js.map +1 -1
- package/dist/core/diff_review/tool.js +1 -1
- package/dist/core/diff_review/tool.js.map +1 -1
- package/dist/core/session/compaction.js +8 -7
- package/dist/core/session/compaction.js.map +1 -1
- package/dist/core/static/code_mode/sandbox_runner.mjs +2 -1
- package/dist/core/static/tau_docs/configuration.md +1 -1
- package/dist/core/static/tau_docs/getting-started.md +3 -4
- package/dist/core/static/tau_docs/history.md +1 -1
- package/dist/core/static/tau_docs/index.md +1 -0
- package/dist/core/static/tau_docs/manifest.json +1 -0
- package/dist/core/static/tau_docs/node-sdk.md +6 -0
- package/dist/core/static/tau_docs/nook.md +3 -3
- package/dist/core/static/tau_docs/sdk-diff-review.md +79 -0
- package/dist/core/static/tau_docs/telegram.md +21 -22
- package/dist/core/static/tau_docs/tools.md +4 -4
- package/dist/core/static/tau_docs/troubleshooting.md +2 -2
- package/dist/core/telegram/config.js +20 -2
- package/dist/core/telegram/config.js.map +1 -1
- package/dist/core/telegram/workspace.js +3 -39
- package/dist/core/telegram/workspace.js.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/diff_tool/app/dist/assets/{angular-html-DoxI_och.js → angular-html-DuYRAXV5.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{angular-ts-C7CUd-D2.js → angular-ts-DgeuYxSF.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{apl-7dieYM-l.js → apl-wxWa3Ydu.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{astro-Czj3O4jM.js → astro-C4ttudxw.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{blade-ClS0E2cC.js → blade-DWkdu_xo.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{c-BKvTh-Jt.js → c-DiBfVf2Z.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{chapel-qvFrfwEr.js → chapel-Bean9Neq.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{cobol-B0vsaB-J.js → cobol-BU20Tg-_.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{coffee-BUlcrU75.js → coffee-BNUM3vlm.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{cpp-CKqEgX1l.js → cpp-BZ8z_KH7.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{crystal-FCqSmIJ_.js → crystal-B5GhOPvy.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{css-zZvYFJFc.js → css-DUSE-ie6.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{edge-BKlbCo1f.js → edge-DzxgXKaz.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elixir-B2gSxtgZ.js → elixir-ycLoSLHp.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{elm-DFEdzPJz.js → elm-DwDckPwp.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{erb-DSgn8fHS.js → erb-CJOEvUBw.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{git-rebase-CcgDECQr.js → git-rebase-BDL_AWDi.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glimmer-js-Dwxi4cX2.js → glimmer-js-z-oDGObE.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glimmer-ts-BnJVER8W.js → glimmer-ts-PtiYCBTb.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{glsl-z7_gU-HN.js → glsl-Bzae6vfC.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{graphql-Dt7V-d3L.js → graphql-BrEGWNkj.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{hack-jVkr6EC8.js → hack-Dn4MCbdB.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{haml-BF7cRiOF.js → haml-m4zNurSd.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{handlebars-DAhNxR3E.js → handlebars-BnDqrwGf.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{html-B7QW5YvU.js → html-BX2wi91g.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{html-derivative-B-vyaE-N.js → html-derivative-DgD5ucSP.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{http-Drkl04RP.js → http-Dp9EXJcu.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{hurl-7gTFrvcN.js → hurl-BeZOac4Y.js} +1 -1
- package/dist/diff_tool/app/dist/assets/index-BV57bp-I.css +1 -0
- package/dist/diff_tool/app/dist/assets/{index-C9CiIimI.js → index-ScvXFe2C.js} +5 -5
- package/dist/diff_tool/app/dist/assets/{java-ZmvXuvs3.js → java-gPCWrEej.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{javascript-C-OECu_Z.js → javascript-McqleDP-.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jinja-hvkV87CG.js → jinja-IsM9Sv2h.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jison-eJBDxKI8.js → jison-DwGiYqd_.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{json-BPQU2w0u.js → json-Ct3yo1MZ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{jsx-C19s5MOj.js → jsx-zWyK7x89.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{julia-CYISvCwi.js → julia-BUDOglEU.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{just-5omBg5pB.js → just-BFEGZnDI.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{latex-B_L85F2z.js → latex-BqtnpXRd.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{liquid-BxbaQPPS.js → liquid-Dp6kE-SV.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{lua-DQA0z-44.js → lua-VsbzDN8O.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{marko-Dj5RV8IH.js → marko-CI82Cfi_.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{mdc-CoHI6VJN.js → mdc-CX8BBCs1.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{nginx-COnrY-gb.js → nginx-C43WH_V_.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{nim-Ccfp0p1j.js → nim-CSnVEePF.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{org-RForNsWm.js → org-Cmyc8nHh.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{perl-DhHRsiUu.js → perl-CozuBSKr.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{php-BlxKhJek.js → php-DQ3CuepV.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{pug-o9YxnGzH.js → pug-BpRKzivp.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{qml-Dzf494vL.js → qml-9RzFciO7.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{r-Dp0OUrF6.js → r-CGfCJAgp.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{razor-gylahu-m.js → razor-5S5yhlXJ.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{regexp-C0rsDjCm.js → regexp-oQnZo4wn.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{rst-D-DRAFtq.js → rst-CjLPbx7h.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{ruby-BnY40vXq.js → ruby-1JWX2ibq.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{sas-BaSo_s7i.js → sas-DaA-thHB.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{scss-BX5R-Yyw.js → scss-CZ0MRiRt.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{shellscript-CpRFVBRj.js → shellscript-BoYsyXZ_.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{shellsession-BGRUDtms.js → shellsession-DPqct_qW.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{soy-C2WL9FSb.js → soy-CCm_-AyN.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{sql-CGmNnOfz.js → sql-Bfu-3tRP.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{stata-CDamV3Uz.js → stata-mJR2kwNh.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{surrealql-BqI4o6tP.js → surrealql-JwQqQzxg.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{svelte-DPaOUioa.js → svelte-Cv-fRyqg.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{templ-aqrZIEoc.js → templ-yxSnbTDs.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{tex-Bjjtfacp.js → tex-CKB2BLjY.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{ts-tags-BGFnsvdQ.js → ts-tags-BI6TUx3p.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{tsx-C_rOxPqZ.js → tsx-BJh43aDa.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{twig-DYqVwCOf.js → twig-CYqEEuwX.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{typescript-CppQYc7K.js → typescript-AdEpX3cM.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{typst-KIbA0FZG.js → typst-ChqNVVBe.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-iOYoJEJi.js → vue-8USuF5fp.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-html-DcZpMui9.js → vue-html-BQzG9utp.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{vue-vine-C6v6c0Lr.js → vue-vine-BqtwbefK.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{xml-zR0RltJO.js → xml-DJ0gKoKh.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{xsl-B9pBLsIV.js → xsl-V1Fg3vOx.js} +1 -1
- package/dist/diff_tool/app/dist/assets/{yaml-sicIihvu.js → yaml-DmkHyU0p.js} +1 -1
- package/dist/diff_tool/app/dist/index.html +2 -2
- package/dist/diff_tool/http_server.js +129 -36
- package/dist/diff_tool/http_server.js.map +1 -1
- package/dist/diff_tool/index.js.map +1 -1
- package/dist/diff_tool/review_state.js +43 -4
- package/dist/diff_tool/review_state.js.map +1 -1
- package/dist/diff_tool/review_state_persistence.js +152 -0
- package/dist/diff_tool/review_state_persistence.js.map +1 -0
- package/dist/host/local_session_host.js +66 -59
- package/dist/host/local_session_host.js.map +1 -1
- package/dist/sdk/diff_review.d.ts +40 -0
- package/dist/sdk/diff_review.js +111 -0
- package/dist/sdk/diff_review.js.map +1 -0
- package/dist/sdk/index.d.ts +1 -0
- package/dist/sdk/index.js +1 -0
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/session_tool_execution_backend.d.ts +16 -0
- package/dist/sdk/session_tool_execution_backend.js +157 -0
- package/dist/sdk/session_tool_execution_backend.js.map +1 -0
- package/dist/tui/session_tool_execution_backend.js +1 -156
- package/dist/tui/session_tool_execution_backend.js.map +1 -1
- package/package.json +1 -1
- package/dist/diff_tool/app/dist/assets/index-Az_6lupE.css +0 -1
|
@@ -34,6 +34,35 @@ export class DiffToolReviewStateStore {
|
|
|
34
34
|
brief: cloneBrief(this.state.brief),
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
+
clone() {
|
|
38
|
+
const clone = new DiffToolReviewStateStore();
|
|
39
|
+
clone.replaceState(this.state);
|
|
40
|
+
return clone;
|
|
41
|
+
}
|
|
42
|
+
replaceState(state) {
|
|
43
|
+
this.state.diffStyle = state.diffStyle;
|
|
44
|
+
this.state.overflowMode = state.overflowMode;
|
|
45
|
+
this.state.codeTheme = state.codeTheme;
|
|
46
|
+
this.state.sidebarOpen = state.sidebarOpen;
|
|
47
|
+
this.state.collapsedFileIds = [...state.collapsedFileIds];
|
|
48
|
+
this.state.viewedFileIds = [...state.viewedFileIds];
|
|
49
|
+
this.state.threads = state.threads.map(cloneThread);
|
|
50
|
+
this.state.brief = cloneBrief(state.brief);
|
|
51
|
+
}
|
|
52
|
+
replaceStatePreservingConcurrentLoading(state, previousState) {
|
|
53
|
+
const currentThreadLoading = new Map(this.state.threads.map((thread) => [thread.id, thread.loading]));
|
|
54
|
+
const previousThreadLoading = new Map(previousState.threads.map((thread) => [thread.id, thread.loading]));
|
|
55
|
+
const currentBriefLoading = this.state.brief.loading;
|
|
56
|
+
this.replaceState(state);
|
|
57
|
+
for (const thread of this.state.threads) {
|
|
58
|
+
if (thread.loading === previousThreadLoading.get(thread.id)) {
|
|
59
|
+
thread.loading = currentThreadLoading.get(thread.id) ?? thread.loading;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (this.state.brief.loading === previousState.brief.loading) {
|
|
63
|
+
this.state.brief.loading = currentBriefLoading;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
37
66
|
updateState(patch) {
|
|
38
67
|
if (patch.diffStyle === "split" || patch.diffStyle === "stacked") {
|
|
39
68
|
this.state.diffStyle = patch.diffStyle;
|
|
@@ -168,10 +197,20 @@ export class DiffToolReviewStateStore {
|
|
|
168
197
|
if (!userText) {
|
|
169
198
|
return "";
|
|
170
199
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
200
|
+
if (thread.threadId) {
|
|
201
|
+
return userText;
|
|
202
|
+
}
|
|
203
|
+
const locationPrefix = thread.anchor.kind === "line"
|
|
204
|
+
? `[${thread.anchor.filePath}:${thread.anchor.lineNumber} (${thread.anchor.side === "additions" ? "new" : "old"})]\n\n`
|
|
205
|
+
: "";
|
|
206
|
+
const hasAssistantMessage = thread.messages.some((message) => message.role === "assistant");
|
|
207
|
+
if (!hasAssistantMessage) {
|
|
208
|
+
return `${locationPrefix}${userText}`;
|
|
209
|
+
}
|
|
210
|
+
const transcript = thread.messages
|
|
211
|
+
.map((message) => `**${message.role === "assistant" ? "agent" : "user"}**\n\n${message.text}`)
|
|
212
|
+
.join("\n\n");
|
|
213
|
+
return `${locationPrefix}Continue this restored review conversation. Its previous transcript is included below.\n\n${transcript}`;
|
|
175
214
|
}
|
|
176
215
|
buildReviewText(submissionMessage) {
|
|
177
216
|
const trimmedSubmissionMessage = submissionMessage?.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review_state.js","sourceRoot":"","sources":["../../src/diff_tool/review_state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAExF,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAmC,qBAAqB,CAAC,CAAC;AAEpF,SAAS,kBAAkB,CAAC,OAE3B;IACC,OAAO;QACL,SAAS,EAAE,OAAO;QAClB,YAAY,EAAE,MAAM;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,4BAA4B;QAC5D,WAAW,EAAE,KAAK;QAClB,gBAAgB,EAAE,EAAE;QACpB,aAAa,EAAE,EAAE;QACjB,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE,GAAG,UAAU,EAAE;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,wBAAwB;IAClB,KAAK,CAAsB;IAE5C,YAAY,OAAO,GAAqD,EAAE;QACxE,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ;QACN,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;YACrC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC/B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;YACnC,gBAAgB,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAClD,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YAC5C,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YAC5C,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;SACpC,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,KAAyB;QACnC,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACzC,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,KAAK,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QAC/C,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAC7C,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CACzD,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CACjF,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CACnD,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CACjF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,UAAU,CAAC,EAAU;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;IAED,YAAY,CAAC,OAAoC;QAC/C,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACtB,EAAE;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAChD,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,QAAQ,CAAC,EAAU,EAAE,IAAY;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB,CAAC,EAAU,EAAE,YAAoB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC1E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,EAAU,EAAE,OAAgB;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,EAAU,EAAE,QAAiB;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,EAAU,EAAE,SAAkB;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;YACjB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;YACjC,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,MAA8C;QAC7D,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,OAAgB;QAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;YACjB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;YACjC,OAAO;SACR,CAAC;IACJ,CAAC;IAED,mBAAmB,CAAC,EAAU,EAAE,MAA8C;QAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB,CAAC,EAAU;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,cAAc,GAClB,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;YAC9C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;QAC5H,OAAO,GAAG,cAAc,GAAG,QAAQ,EAAE,CAAC;IACxC,CAAC;IAED,eAAe,CAAC,iBAA0B;QACxC,MAAM,wBAAwB,GAAG,iBAAiB,EAAE,IAAI,EAAE,CAAC;QAC3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,wBAAwB,IAAI,eAAe,CAAC;QACrD,CAAC;QAED,MAAM,QAAQ,GAAG;YACf,mFAAmF;YACnF,EAAE;YACF,iDAAiD;YACjD,4DAA4D;YAC5D,EAAE;YACF,8FAA8F;SAC/F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,OAAO,GAAG,iBAAiB;aAC9B,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,QAAQ,GACZ,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;gBAC3B,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;gBACjH,CAAC,CAAC,oBAAoB,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ;iBACzB,GAAG,CACF,CAAC,OAAO,EAAE,EAAE,CACV,KAAK,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,SAAS,OAAO,CAAC,IAAI,EAAE,CAC9E;iBACA,IAAI,CAAC,MAAM,CAAC,CAAC;YAChB,OAAO,aAAa,KAAK,GAAG,CAAC,SAAS,QAAQ,SAAS,IAAI,EAAE,CAAC;QAChE,CAAC,CAAC;aACD,IAAI,CAAC,aAAa,CAAC,CAAC;QAEvB,MAAM,OAAO,GAAG,wBAAwB;YACtC,CAAC,CAAC,4BAA4B,wBAAwB,aAAa;YACnE,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO,GAAG,QAAQ,cAAc,OAAO,GAAG,OAAO,EAAE,CAAC;IACtD,CAAC;IAEO,kBAAkB,CAAC,EAAU;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;CACF;AAED,SAAS,UAAU,CAAC,KAAoB;IACtC,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAA6B;IAChD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC5D,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAA4B;IAC/C,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,eAAe,CAAC,MAA6B;IACpD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,MAAM;QACR,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"review_state.js","sourceRoot":"","sources":["../../src/diff_tool/review_state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { DIFF_TOOL_CODE_THEMES } from "./shared_types.js";
|
|
4
|
+
const DIFF_TOOL_REVIEW_STATE_VERSION = 1;
|
|
5
|
+
const MAX_PERSISTED_REVIEW_STATE_BYTES = 2 * 1024 * 1024;
|
|
6
|
+
const MAX_THREADS = 1_000;
|
|
7
|
+
const MAX_MESSAGES_PER_THREAD = 1_000;
|
|
8
|
+
const MAX_TEXT_LENGTH = 512 * 1024;
|
|
9
|
+
const MAX_ID_LENGTH = 1_024;
|
|
10
|
+
const MAX_FILE_IDS = 10_000;
|
|
11
|
+
const idSchema = z.string().min(1).max(MAX_ID_LENGTH);
|
|
12
|
+
const textSchema = z.string().max(MAX_TEXT_LENGTH);
|
|
13
|
+
const lineAnchorSchema = z
|
|
14
|
+
.object({
|
|
15
|
+
kind: z.literal("line"),
|
|
16
|
+
fileId: idSchema,
|
|
17
|
+
filePath: idSchema,
|
|
18
|
+
lineNumber: z.number().int().nonnegative(),
|
|
19
|
+
side: z.enum(["additions", "deletions"]),
|
|
20
|
+
})
|
|
21
|
+
.strict();
|
|
22
|
+
const detachedAnchorSchema = z.object({ kind: z.literal("detached") }).strict();
|
|
23
|
+
const persistedThreadSchema = z
|
|
24
|
+
.object({
|
|
25
|
+
id: idSchema,
|
|
26
|
+
anchor: z.union([lineAnchorSchema, detachedAnchorSchema]),
|
|
27
|
+
messages: z
|
|
28
|
+
.array(z
|
|
29
|
+
.object({
|
|
30
|
+
role: z.enum(["user", "assistant"]),
|
|
31
|
+
text: textSchema,
|
|
32
|
+
})
|
|
33
|
+
.strict())
|
|
34
|
+
.min(1)
|
|
35
|
+
.max(MAX_MESSAGES_PER_THREAD),
|
|
36
|
+
resolved: z.boolean(),
|
|
37
|
+
collapsed: z.boolean(),
|
|
38
|
+
})
|
|
39
|
+
.strict()
|
|
40
|
+
.refine((thread) => thread.messages[0]?.role === "user", {
|
|
41
|
+
message: "thread must start with a user message",
|
|
42
|
+
});
|
|
43
|
+
const persistedStateSchema = z
|
|
44
|
+
.object({
|
|
45
|
+
diffStyle: z.enum(["stacked", "split"]),
|
|
46
|
+
overflowMode: z.enum(["wrap", "scroll"]),
|
|
47
|
+
codeTheme: z.enum(DIFF_TOOL_CODE_THEMES),
|
|
48
|
+
sidebarOpen: z.boolean(),
|
|
49
|
+
collapsedFileIds: z.array(idSchema).max(MAX_FILE_IDS),
|
|
50
|
+
viewedFileIds: z.array(idSchema).max(MAX_FILE_IDS),
|
|
51
|
+
threads: z
|
|
52
|
+
.array(persistedThreadSchema)
|
|
53
|
+
.max(MAX_THREADS)
|
|
54
|
+
.refine((threads) => new Set(threads.map((thread) => thread.id)).size === threads.length, {
|
|
55
|
+
message: "thread ids must be unique",
|
|
56
|
+
}),
|
|
57
|
+
brief: z.object({ content: textSchema }).strict(),
|
|
58
|
+
})
|
|
59
|
+
.strict();
|
|
60
|
+
const persistedDocumentSchema = z
|
|
61
|
+
.object({
|
|
62
|
+
version: z.literal(DIFF_TOOL_REVIEW_STATE_VERSION),
|
|
63
|
+
scopeFingerprint: z.string().regex(/^[0-9a-f]{64}$/),
|
|
64
|
+
state: persistedStateSchema,
|
|
65
|
+
})
|
|
66
|
+
.strict();
|
|
67
|
+
export function createDiffReviewScopeFingerprint(context, files, patch) {
|
|
68
|
+
return createHash("sha256")
|
|
69
|
+
.update(JSON.stringify({
|
|
70
|
+
repoRoot: context.repoRoot,
|
|
71
|
+
cwd: context.cwd,
|
|
72
|
+
diffArgs: context.diffArgs,
|
|
73
|
+
diffCommand: context.diffCommand,
|
|
74
|
+
files,
|
|
75
|
+
patch,
|
|
76
|
+
}))
|
|
77
|
+
.digest("hex");
|
|
78
|
+
}
|
|
79
|
+
export function createDiffToolPersistedReviewStateDocument(scopeFingerprint, state) {
|
|
80
|
+
const document = {
|
|
81
|
+
version: DIFF_TOOL_REVIEW_STATE_VERSION,
|
|
82
|
+
scopeFingerprint,
|
|
83
|
+
state: {
|
|
84
|
+
diffStyle: state.diffStyle,
|
|
85
|
+
overflowMode: state.overflowMode,
|
|
86
|
+
codeTheme: state.codeTheme,
|
|
87
|
+
sidebarOpen: state.sidebarOpen,
|
|
88
|
+
collapsedFileIds: [...state.collapsedFileIds],
|
|
89
|
+
viewedFileIds: [...state.viewedFileIds],
|
|
90
|
+
threads: state.threads.map((thread) => ({
|
|
91
|
+
id: thread.id,
|
|
92
|
+
anchor: thread.anchor.kind === "line" ? { ...thread.anchor } : { kind: "detached" },
|
|
93
|
+
messages: thread.messages.map((message) => ({ ...message })),
|
|
94
|
+
resolved: thread.resolved,
|
|
95
|
+
collapsed: thread.collapsed,
|
|
96
|
+
})),
|
|
97
|
+
brief: { content: state.brief.content },
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
assertDocumentSize(document);
|
|
101
|
+
const parsed = persistedDocumentSchema.safeParse(document);
|
|
102
|
+
if (!parsed.success) {
|
|
103
|
+
throw new Error(`diff review state cannot be persisted: ${z.prettifyError(parsed.error)}`);
|
|
104
|
+
}
|
|
105
|
+
return parsed.data;
|
|
106
|
+
}
|
|
107
|
+
export function parseDiffToolPersistedReviewStateDocument(document, scopeFingerprint) {
|
|
108
|
+
assertDocumentSize(document);
|
|
109
|
+
const parsed = persistedDocumentSchema.safeParse(document);
|
|
110
|
+
if (!parsed.success) {
|
|
111
|
+
throw new Error(`stored diff review state is invalid: ${z.prettifyError(parsed.error)}`);
|
|
112
|
+
}
|
|
113
|
+
if (parsed.data.scopeFingerprint !== scopeFingerprint) {
|
|
114
|
+
throw new Error("stored diff review state belongs to a different diff snapshot");
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
diffStyle: parsed.data.state.diffStyle,
|
|
118
|
+
overflowMode: parsed.data.state.overflowMode,
|
|
119
|
+
codeTheme: parsed.data.state.codeTheme,
|
|
120
|
+
sidebarOpen: parsed.data.state.sidebarOpen,
|
|
121
|
+
collapsedFileIds: [...parsed.data.state.collapsedFileIds],
|
|
122
|
+
viewedFileIds: [...parsed.data.state.viewedFileIds],
|
|
123
|
+
threads: parsed.data.state.threads.map((thread) => ({
|
|
124
|
+
id: thread.id,
|
|
125
|
+
anchor: thread.anchor.kind === "line" ? { ...thread.anchor } : { kind: "detached" },
|
|
126
|
+
messages: thread.messages.map((message) => ({ ...message })),
|
|
127
|
+
loading: false,
|
|
128
|
+
resolved: thread.resolved,
|
|
129
|
+
collapsed: thread.collapsed,
|
|
130
|
+
})),
|
|
131
|
+
brief: {
|
|
132
|
+
content: parsed.data.state.brief.content,
|
|
133
|
+
loading: false,
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function assertDocumentSize(document) {
|
|
138
|
+
let serialized;
|
|
139
|
+
try {
|
|
140
|
+
serialized = JSON.stringify(document);
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
throw new Error(`diff review state document is not JSON serializable: ${error instanceof Error ? error.message : String(error)}`);
|
|
144
|
+
}
|
|
145
|
+
if (serialized === undefined) {
|
|
146
|
+
throw new Error("diff review state document is not JSON serializable");
|
|
147
|
+
}
|
|
148
|
+
if (Buffer.byteLength(serialized, "utf8") > MAX_PERSISTED_REVIEW_STATE_BYTES) {
|
|
149
|
+
throw new Error(`diff review state document exceeds ${MAX_PERSISTED_REVIEW_STATE_BYTES} bytes`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=review_state_persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review_state_persistence.js","sourceRoot":"","sources":["../../src/diff_tool/review_state_persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,9 +85,7 @@ export class LocalSessionHost {
|
|
|
85
85
|
? { usageCheckpoint: { ...recovered.snapshot.agentState.usageCheckpoint } }
|
|
86
86
|
: {}),
|
|
87
87
|
});
|
|
88
|
-
|
|
89
|
-
await hostedSession.persistRecoveredAgentState(agentRecovery);
|
|
90
|
-
}
|
|
88
|
+
await hostedSession.reconcileRecoveredState(agentRecovery);
|
|
91
89
|
return hostedSession;
|
|
92
90
|
}
|
|
93
91
|
catch (error) {
|
|
@@ -415,6 +413,7 @@ class LocalHostedSessionHandle {
|
|
|
415
413
|
goal;
|
|
416
414
|
pendingGoalCommit;
|
|
417
415
|
forceNextSnapshotRevision;
|
|
416
|
+
projectionFailure;
|
|
418
417
|
disposed = false;
|
|
419
418
|
constructor(runtime, promptBootstrap, catalog, bootstrap, remoteCatalog, getLatestRemoteModelCatalog, includeAgentContext, executionEnvironment, store, history, historyRemote, attributes, createdAt, committedSnapshot, forceNextSnapshotRevision, recordUsage, removeFromHost = () => { }) {
|
|
420
419
|
this.runtime = runtime;
|
|
@@ -433,15 +432,15 @@ class LocalHostedSessionHandle {
|
|
|
433
432
|
this.recordUsage = recordUsage;
|
|
434
433
|
this.removeFromHost = removeFromHost;
|
|
435
434
|
this.session = runtime;
|
|
436
|
-
this.committedSnapshot = committedSnapshot
|
|
437
|
-
? cloneSessionProtocolSnapshot(committedSnapshot)
|
|
438
|
-
: undefined;
|
|
439
435
|
this.persistedSnapshot = committedSnapshot
|
|
440
436
|
? cloneSessionProtocolSnapshot(committedSnapshot)
|
|
441
437
|
: undefined;
|
|
442
438
|
this.goal = structuredClone(committedSnapshot?.goal ?? null);
|
|
443
439
|
this.forceNextSnapshotRevision = forceNextSnapshotRevision;
|
|
444
440
|
this.restoreProtocolState(committedSnapshot);
|
|
441
|
+
this.committedSnapshot = committedSnapshot
|
|
442
|
+
? cloneSessionProtocolSnapshot(committedSnapshot)
|
|
443
|
+
: { ...this.buildSnapshotDraft(), revision: 1 };
|
|
445
444
|
}
|
|
446
445
|
getRemoteModelCatalog() {
|
|
447
446
|
return this.remoteCatalog;
|
|
@@ -869,15 +868,12 @@ class LocalHostedSessionHandle {
|
|
|
869
868
|
}
|
|
870
869
|
async setReasoning(reasoning) {
|
|
871
870
|
this.assertActive();
|
|
872
|
-
return await this.
|
|
873
|
-
const fromRevision = this.committedSnapshot
|
|
871
|
+
return await this.enqueueConfigurationMutation(async () => {
|
|
872
|
+
const fromRevision = this.committedSnapshot.revision;
|
|
874
873
|
this.runtime.setReasoning(reasoning);
|
|
875
874
|
this.bootstrap.persona.settings.reasoning = reasoning;
|
|
876
875
|
const snapshot = await this.commitSnapshot();
|
|
877
|
-
if (
|
|
878
|
-
this.emitSnapshotReset("configuration", snapshot);
|
|
879
|
-
}
|
|
880
|
-
else if (snapshot.revision !== fromRevision) {
|
|
876
|
+
if (snapshot.revision !== fromRevision) {
|
|
881
877
|
this.emitDelta(createSessionProtocolDeltaMessage({
|
|
882
878
|
sessionId: snapshot.sessionId,
|
|
883
879
|
fromRevision,
|
|
@@ -908,7 +904,7 @@ class LocalHostedSessionHandle {
|
|
|
908
904
|
includeAgentContext: this.includeAgentContext,
|
|
909
905
|
agentContextFiles: runtimeConfig.config.agentContextFiles ?? [],
|
|
910
906
|
});
|
|
911
|
-
return await this.
|
|
907
|
+
return await this.enqueueConfigurationMutation(async () => {
|
|
912
908
|
this.runtime.setRuntimeConfig(runtimeConfig.config, runtimeConfig.bootstrap.modelResolver.resolveModel);
|
|
913
909
|
this.runtime.updatePromptContext(runtimeContext.promptBootstrap.promptContext);
|
|
914
910
|
this.runtime.setPersona(selectedPersona, {
|
|
@@ -945,7 +941,7 @@ class LocalHostedSessionHandle {
|
|
|
945
941
|
includeAgentContext: this.includeAgentContext,
|
|
946
942
|
agentContextFiles: runtimeConfig.config.agentContextFiles ?? [],
|
|
947
943
|
});
|
|
948
|
-
return await this.
|
|
944
|
+
return await this.enqueueConfigurationMutation(async () => {
|
|
949
945
|
this.runtime.setRuntimeConfig(runtimeConfig.config, runtimeConfig.bootstrap.modelResolver.resolveModel);
|
|
950
946
|
this.runtime.updatePromptContext(runtimeContext.promptBootstrap.promptContext);
|
|
951
947
|
this.runtime.setPersona(nextPersona, {
|
|
@@ -1019,7 +1015,7 @@ class LocalHostedSessionHandle {
|
|
|
1019
1015
|
return await this.pathAutocompleteLoad;
|
|
1020
1016
|
}
|
|
1021
1017
|
async compact(options) {
|
|
1022
|
-
return await this.runMaintenance(async (signal) => {
|
|
1018
|
+
return await this.runAgentStateMutation(() => this.runMaintenance(async (signal) => {
|
|
1023
1019
|
const result = await this.session.compact({
|
|
1024
1020
|
mode: options.mode === "summary-only" ? "only-summary" : "with-last-assistant",
|
|
1025
1021
|
...(options.guidance !== undefined ? { guidance: options.guidance } : {}),
|
|
@@ -1031,7 +1027,7 @@ class LocalHostedSessionHandle {
|
|
|
1031
1027
|
compactionMessage: result.compactionMessage,
|
|
1032
1028
|
includedLastAssistant: result.includedLastAssistant,
|
|
1033
1029
|
};
|
|
1034
|
-
});
|
|
1030
|
+
}));
|
|
1035
1031
|
}
|
|
1036
1032
|
async runMaintenance(operation) {
|
|
1037
1033
|
this.assertActive();
|
|
@@ -1077,14 +1073,16 @@ class LocalHostedSessionHandle {
|
|
|
1077
1073
|
if (!this.timeline.items.some((item) => item.type === "message" && item.messageId === historyEntryId)) {
|
|
1078
1074
|
throw new Error("rewind failed");
|
|
1079
1075
|
}
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1076
|
+
return await this.runAgentStateMutation(async () => {
|
|
1077
|
+
const result = await this.session.rewindToHistoryEntryId(historyEntryId);
|
|
1078
|
+
if (!result) {
|
|
1079
|
+
throw new Error("rewind failed");
|
|
1080
|
+
}
|
|
1081
|
+
return {
|
|
1082
|
+
snapshot: await this.snapshot(),
|
|
1083
|
+
...result,
|
|
1084
|
+
};
|
|
1085
|
+
});
|
|
1088
1086
|
}
|
|
1089
1087
|
async interruptSubagent(subagentId) {
|
|
1090
1088
|
this.assertActive();
|
|
@@ -1139,11 +1137,9 @@ class LocalHostedSessionHandle {
|
|
|
1139
1137
|
}
|
|
1140
1138
|
async snapshot() {
|
|
1141
1139
|
this.assertActive();
|
|
1142
|
-
return await this.enqueueMutation(
|
|
1143
|
-
? await this.commitProjectedSnapshot()
|
|
1144
|
-
: await this.commitSnapshot());
|
|
1140
|
+
return await this.enqueueMutation(() => this.commitProjectedSnapshot());
|
|
1145
1141
|
}
|
|
1146
|
-
async
|
|
1142
|
+
async reconcileRecoveredState(recovery) {
|
|
1147
1143
|
this.assertActive();
|
|
1148
1144
|
await this.enqueueMutation(async () => {
|
|
1149
1145
|
const recoveredTools = [];
|
|
@@ -1347,7 +1343,7 @@ class LocalHostedSessionHandle {
|
|
|
1347
1343
|
if (options.removeMissingAgents) {
|
|
1348
1344
|
this.removeMissingSubagentActivities();
|
|
1349
1345
|
}
|
|
1350
|
-
return cloneSessionProtocolSnapshot(this.committedSnapshot
|
|
1346
|
+
return cloneSessionProtocolSnapshot(this.committedSnapshot);
|
|
1351
1347
|
}
|
|
1352
1348
|
await this.store.commitSessionSnapshot(snapshot, {
|
|
1353
1349
|
expectedRevision: this.persistedSnapshot?.revision ?? 0,
|
|
@@ -1361,11 +1357,7 @@ class LocalHostedSessionHandle {
|
|
|
1361
1357
|
}
|
|
1362
1358
|
async commitProjectedSnapshot() {
|
|
1363
1359
|
this.assertNotDisposed();
|
|
1364
|
-
const
|
|
1365
|
-
if (!current) {
|
|
1366
|
-
return await this.commitSnapshot();
|
|
1367
|
-
}
|
|
1368
|
-
const snapshot = cloneSessionProtocolSnapshot(current);
|
|
1360
|
+
const snapshot = cloneSessionProtocolSnapshot(this.committedSnapshot);
|
|
1369
1361
|
if (this.persistedSnapshot && isDeepStrictEqual(this.persistedSnapshot, snapshot)) {
|
|
1370
1362
|
return snapshot;
|
|
1371
1363
|
}
|
|
@@ -1378,9 +1370,6 @@ class LocalHostedSessionHandle {
|
|
|
1378
1370
|
async commitSnapshotPatch(cause, changes) {
|
|
1379
1371
|
this.assertNotDisposed();
|
|
1380
1372
|
const current = this.committedSnapshot;
|
|
1381
|
-
if (!current) {
|
|
1382
|
-
throw new Error("cannot persist a session patch without a committed snapshot");
|
|
1383
|
-
}
|
|
1384
1373
|
const delta = createSessionProtocolDeltaMessage({
|
|
1385
1374
|
sessionId: current.sessionId,
|
|
1386
1375
|
fromRevision: current.revision,
|
|
@@ -1613,38 +1602,67 @@ class LocalHostedSessionHandle {
|
|
|
1613
1602
|
}
|
|
1614
1603
|
}
|
|
1615
1604
|
}
|
|
1605
|
+
async enqueueConfigurationMutation(mutation) {
|
|
1606
|
+
try {
|
|
1607
|
+
return await this.enqueueMutation(mutation);
|
|
1608
|
+
}
|
|
1609
|
+
catch (error) {
|
|
1610
|
+
this.invalidateProjection(error);
|
|
1611
|
+
throw error;
|
|
1612
|
+
}
|
|
1613
|
+
}
|
|
1614
|
+
async runAgentStateMutation(mutation) {
|
|
1615
|
+
const runtimeState = this.runtime.snapshot();
|
|
1616
|
+
try {
|
|
1617
|
+
return await mutation();
|
|
1618
|
+
}
|
|
1619
|
+
catch (error) {
|
|
1620
|
+
if (!isDeepStrictEqual(this.runtime.snapshot(), runtimeState)) {
|
|
1621
|
+
this.invalidateProjection(error);
|
|
1622
|
+
}
|
|
1623
|
+
throw error;
|
|
1624
|
+
}
|
|
1625
|
+
}
|
|
1616
1626
|
enqueueMutation(mutation) {
|
|
1617
1627
|
const result = this.mutationQueue
|
|
1618
1628
|
.catch(() => undefined)
|
|
1619
1629
|
.then(async () => {
|
|
1630
|
+
this.assertProjectionValid();
|
|
1620
1631
|
try {
|
|
1621
1632
|
return await mutation();
|
|
1622
1633
|
}
|
|
1623
1634
|
catch (error) {
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
this.restoreProtocolState(this.committedSnapshot);
|
|
1627
|
-
}
|
|
1635
|
+
this.goal = structuredClone(this.committedSnapshot.goal);
|
|
1636
|
+
this.restoreProtocolState(this.committedSnapshot);
|
|
1628
1637
|
throw error;
|
|
1629
1638
|
}
|
|
1630
1639
|
});
|
|
1631
1640
|
this.mutationQueue = result.then(() => undefined, () => undefined);
|
|
1632
1641
|
return result;
|
|
1633
1642
|
}
|
|
1643
|
+
invalidateProjection(error) {
|
|
1644
|
+
this.projectionFailure ??= new Error("session state is inconsistent after a failed mutation", {
|
|
1645
|
+
cause: error,
|
|
1646
|
+
});
|
|
1647
|
+
}
|
|
1648
|
+
assertProjectionValid() {
|
|
1649
|
+
if (this.projectionFailure) {
|
|
1650
|
+
throw this.projectionFailure;
|
|
1651
|
+
}
|
|
1652
|
+
}
|
|
1634
1653
|
assertActive() {
|
|
1635
1654
|
if (this.disposing || this.disposed) {
|
|
1636
1655
|
throw new Error(`session is shut down: ${this.sessionId}`);
|
|
1637
1656
|
}
|
|
1657
|
+
this.assertProjectionValid();
|
|
1638
1658
|
}
|
|
1639
1659
|
assertNotDisposed() {
|
|
1640
1660
|
if (this.disposed) {
|
|
1641
1661
|
throw new Error(`session is shut down: ${this.sessionId}`);
|
|
1642
1662
|
}
|
|
1663
|
+
this.assertProjectionValid();
|
|
1643
1664
|
}
|
|
1644
1665
|
nextSnapshotRevision(next) {
|
|
1645
|
-
if (!this.committedSnapshot) {
|
|
1646
|
-
return 1;
|
|
1647
|
-
}
|
|
1648
1666
|
if (this.forceNextSnapshotRevision) {
|
|
1649
1667
|
this.forceNextSnapshotRevision = false;
|
|
1650
1668
|
return this.committedSnapshot.revision + 1;
|
|
@@ -1688,7 +1706,7 @@ class LocalHostedSessionHandle {
|
|
|
1688
1706
|
]);
|
|
1689
1707
|
}
|
|
1690
1708
|
async appendToolHistory(tool, resultHistoryEntryId, result) {
|
|
1691
|
-
const callMessage = this.committedSnapshot
|
|
1709
|
+
const callMessage = this.committedSnapshot.messages.find((message) => message.id === tool.call.messageId);
|
|
1692
1710
|
const call = callMessage?.message.role === "assistant"
|
|
1693
1711
|
? callMessage.message.content[tool.call.contentIndex]
|
|
1694
1712
|
: undefined;
|
|
@@ -1928,7 +1946,7 @@ class LocalHostedSessionHandle {
|
|
|
1928
1946
|
message: event.message,
|
|
1929
1947
|
},
|
|
1930
1948
|
},
|
|
1931
|
-
...(this.committedSnapshot
|
|
1949
|
+
...(this.committedSnapshot.lifecycle !== lifecycle
|
|
1932
1950
|
? [{ type: "lifecycle.set", lifecycle }]
|
|
1933
1951
|
: []),
|
|
1934
1952
|
...toolChanges,
|
|
@@ -2295,17 +2313,6 @@ class LocalHostedSessionHandle {
|
|
|
2295
2313
|
if (changes.length === 0) {
|
|
2296
2314
|
return;
|
|
2297
2315
|
}
|
|
2298
|
-
if (!this.committedSnapshot) {
|
|
2299
|
-
if (options.persist === false) {
|
|
2300
|
-
const snapshot = { ...this.buildSnapshotDraft(), revision: 1 };
|
|
2301
|
-
this.committedSnapshot = snapshot;
|
|
2302
|
-
this.emitSnapshotReset(cause, snapshot);
|
|
2303
|
-
return;
|
|
2304
|
-
}
|
|
2305
|
-
const snapshot = await this.commitSnapshot();
|
|
2306
|
-
this.emitSnapshotReset(cause, snapshot);
|
|
2307
|
-
return;
|
|
2308
|
-
}
|
|
2309
2316
|
if (options.persist !== false) {
|
|
2310
2317
|
this.emitDelta(await this.commitSnapshotPatch(cause, changes));
|
|
2311
2318
|
return;
|
|
@@ -2333,7 +2340,7 @@ class LocalHostedSessionHandle {
|
|
|
2333
2340
|
await this.enqueueMutation(() => this.emitSnapshotResetIfChanged(cause));
|
|
2334
2341
|
}
|
|
2335
2342
|
async emitSnapshotResetIfChanged(cause) {
|
|
2336
|
-
const previousRevision = this.committedSnapshot
|
|
2343
|
+
const previousRevision = this.committedSnapshot.revision;
|
|
2337
2344
|
const snapshot = await this.commitSnapshot();
|
|
2338
2345
|
if (snapshot.revision !== previousRevision) {
|
|
2339
2346
|
this.emitSnapshotReset(cause, snapshot);
|
|
@@ -2399,7 +2406,7 @@ class LocalHostedSessionHandle {
|
|
|
2399
2406
|
return;
|
|
2400
2407
|
}
|
|
2401
2408
|
const interruptedMessage = createInterruptedAssistantMessage(draft, this.runtime.persona.model);
|
|
2402
|
-
await this.session.commitInterruptedAssistant(interruptedMessage, draft.id);
|
|
2409
|
+
await this.runAgentStateMutation(() => this.session.commitInterruptedAssistant(interruptedMessage, draft.id));
|
|
2403
2410
|
}
|
|
2404
2411
|
async cleanupFailedTurn(rootHistoryEntryId, error) {
|
|
2405
2412
|
if (this.draftAssistantMessage) {
|