otacon 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -5
- package/dist/cli/browser.js +1 -1
- package/dist/cli/browser.js.map +1 -1
- package/dist/cli/client.js +3 -3
- package/dist/cli/client.js.map +1 -1
- package/dist/cli/commands/answer.js +1 -1
- package/dist/cli/commands/answer.js.map +1 -1
- package/dist/cli/commands/ask.js +3 -3
- package/dist/cli/commands/ask.js.map +1 -1
- package/dist/cli/commands/clean.js +14 -16
- package/dist/cli/commands/clean.js.map +1 -1
- package/dist/cli/commands/config.js +1 -1
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/doctor.js +4 -4
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/expose.js +7 -7
- package/dist/cli/commands/expose.js.map +1 -1
- package/dist/cli/commands/implement-done.js +1 -1
- package/dist/cli/commands/implement-done.js.map +1 -1
- package/dist/cli/commands/install.js +16 -10
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/open.js +31 -7
- package/dist/cli/commands/open.js.map +1 -1
- package/dist/cli/commands/progress.js +1 -1
- package/dist/cli/commands/progress.js.map +1 -1
- package/dist/cli/commands/resume.js +67 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/start.js +18 -4
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.js +15 -4
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/submit.js +5 -5
- package/dist/cli/commands/submit.js.map +1 -1
- package/dist/cli/commands/update.js +24 -17
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/wait.js +1 -1
- package/dist/cli/commands/wait.js.map +1 -1
- package/dist/cli/install/assets.js +123 -48
- package/dist/cli/install/assets.js.map +1 -1
- package/dist/cli/install/locations.js +1 -1
- package/dist/cli/install/locations.js.map +1 -1
- package/dist/cli/install/tailscale.js +2 -2
- package/dist/cli/install/tailscale.js.map +1 -1
- package/dist/cli/install/wrapper.js +202 -0
- package/dist/cli/install/wrapper.js.map +1 -0
- package/dist/cli/main.js +5 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/output.js +2 -2
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/session.js +18 -7
- package/dist/cli/session.js.map +1 -1
- package/dist/cli/update.js +79 -38
- package/dist/cli/update.js.map +1 -1
- package/dist/daemon/activity.js +1 -1
- package/dist/daemon/activity.js.map +1 -1
- package/dist/daemon/anchor.js +1 -1
- package/dist/daemon/anchor.js.map +1 -1
- package/dist/daemon/app.js +370 -82
- package/dist/daemon/app.js.map +1 -1
- package/dist/daemon/approve.js +3 -3
- package/dist/daemon/approve.js.map +1 -1
- package/dist/daemon/capture/adapter.js +23 -0
- package/dist/daemon/capture/adapter.js.map +1 -0
- package/dist/daemon/capture/claude.js +274 -0
- package/dist/daemon/capture/claude.js.map +1 -0
- package/dist/daemon/capture/codex.js +413 -0
- package/dist/daemon/capture/codex.js.map +1 -0
- package/dist/daemon/capture/normalize.js +89 -0
- package/dist/daemon/capture/normalize.js.map +1 -0
- package/dist/daemon/capture/opencode.js +330 -0
- package/dist/daemon/capture/opencode.js.map +1 -0
- package/dist/daemon/capture/registry.js +33 -0
- package/dist/daemon/capture/registry.js.map +1 -0
- package/dist/daemon/capture/stream-store.js +121 -0
- package/dist/daemon/capture/stream-store.js.map +1 -0
- package/dist/daemon/capture/tailer.js +108 -0
- package/dist/daemon/capture/tailer.js.map +1 -0
- package/dist/daemon/desktop-notify.js +11 -5
- package/dist/daemon/desktop-notify.js.map +1 -1
- package/dist/daemon/diagrams.js +90 -0
- package/dist/daemon/diagrams.js.map +1 -0
- package/dist/daemon/diff.js +1 -2
- package/dist/daemon/diff.js.map +1 -1
- package/dist/daemon/linter/parse.js +45 -12
- package/dist/daemon/linter/parse.js.map +1 -1
- package/dist/daemon/linter/rules.js +20 -17
- package/dist/daemon/linter/rules.js.map +1 -1
- package/dist/daemon/main.js +1 -1
- package/dist/daemon/main.js.map +1 -1
- package/dist/daemon/notify.js +1 -1
- package/dist/daemon/notify.js.map +1 -1
- package/dist/daemon/presence.js +1 -1
- package/dist/daemon/presence.js.map +1 -1
- package/dist/daemon/queue.js +7 -7
- package/dist/daemon/queue.js.map +1 -1
- package/dist/daemon/store.js +66 -79
- package/dist/daemon/store.js.map +1 -1
- package/dist/daemon/threads.js +111 -25
- package/dist/daemon/threads.js.map +1 -1
- package/dist/daemon/transcript.js +1 -1
- package/dist/daemon/transcript.js.map +1 -1
- package/dist/daemon/ui.js +8 -6
- package/dist/daemon/ui.js.map +1 -1
- package/dist/daemon/viewers.js +37 -0
- package/dist/daemon/viewers.js.map +1 -0
- package/dist/shared/config.js +42 -8
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/gwt.js +1 -1
- package/dist/shared/gwt.js.map +1 -1
- package/dist/shared/paths.js +63 -36
- package/dist/shared/paths.js.map +1 -1
- package/dist/shared/question-spec.js +1 -1
- package/dist/shared/question-spec.js.map +1 -1
- package/dist/shared/types.js +7 -3
- package/dist/shared/types.js.map +1 -1
- package/dist/shared/version.js +1 -1
- package/dist/skills/otacon/SKILL.md +250 -0
- package/dist/ui/assets/{arc-Cp3sPd_U.js → arc-BUR2DxNA.js} +1 -1
- package/dist/ui/assets/architecture-7EHR7CIX-TTokq2IO.js +1 -0
- package/dist/ui/assets/{architectureDiagram-3BPJPVTR-C4F3heWP.js → architectureDiagram-3BPJPVTR-unLnkDyM.js} +1 -1
- package/dist/ui/assets/{blockDiagram-GPEHLZMM-DmJoG8ky.js → blockDiagram-GPEHLZMM-DHx8lNeL.js} +1 -1
- package/dist/ui/assets/{c4Diagram-AAUBKEIU-BDEf52Jp.js → c4Diagram-AAUBKEIU-BU9T562l.js} +1 -1
- package/dist/ui/assets/channel-BA6ChrT3.js +1 -0
- package/dist/ui/assets/{chunk-2J33WTMH-Dh_UFriv.js → chunk-2J33WTMH-BEb0myVl.js} +1 -1
- package/dist/ui/assets/{chunk-3OPIFGDE-c66RlAN8.js → chunk-3OPIFGDE-DESBG_RB.js} +1 -1
- package/dist/ui/assets/{chunk-4BX2VUAB-CrGJaCCg.js → chunk-4BX2VUAB-dt3F_E_5.js} +1 -1
- package/dist/ui/assets/{chunk-55IACEB6-BvwqEeyq.js → chunk-55IACEB6-BcyuZM7U.js} +1 -1
- package/dist/ui/assets/{chunk-5ZQYHXKU-BfF2IfQe.js → chunk-5ZQYHXKU-DqdwSJlO.js} +1 -1
- package/dist/ui/assets/{chunk-727SXJPM-DOEUwc9I.js → chunk-727SXJPM-B04SqNWj.js} +1 -1
- package/dist/ui/assets/{chunk-AQP2D5EJ-CVf2xV2Z.js → chunk-AQP2D5EJ-DpjCPBWN.js} +1 -1
- package/dist/ui/assets/{chunk-BSJP7CBP-D_EbTWTC.js → chunk-BSJP7CBP-BNOU3k5G.js} +1 -1
- package/dist/ui/assets/{chunk-CSCIHK7Q-CkxTSMAM.js → chunk-CSCIHK7Q-iWOtNZm_.js} +1 -1
- package/dist/ui/assets/{chunk-FMBD7UC4-DVShhFc7.js → chunk-FMBD7UC4-BHH_etky.js} +1 -1
- package/dist/ui/assets/{chunk-KSCS5N6A-DnHEEYpq.js → chunk-KSCS5N6A-DbRuazP3.js} +1 -1
- package/dist/ui/assets/{chunk-L5ZTLDWV-B_gjyajS.js → chunk-L5ZTLDWV-B2ZZFONi.js} +1 -1
- package/dist/ui/assets/{chunk-LZXEDZCA-Bsf7basG.js → chunk-LZXEDZCA-DryVpwAh.js} +2 -2
- package/dist/ui/assets/{chunk-ND2GUHAM-DGepGb8_.js → chunk-ND2GUHAM-2Bb1izqg.js} +1 -1
- package/dist/ui/assets/{chunk-NZK2D7GU-BJIlh-gB.js → chunk-NZK2D7GU-2DhvLbqL.js} +1 -1
- package/dist/ui/assets/{chunk-O5CBEL6O-cdVbOOCs.js → chunk-O5CBEL6O-B5oigO7D.js} +1 -1
- package/dist/ui/assets/chunk-QZHKN3VN-BDHgdxoT.js +1 -0
- package/dist/ui/assets/chunk-WU5MYG2G-FDJTP_wT.js +1 -0
- package/dist/ui/assets/{chunk-XPW4576I-DPW39hNO.js → chunk-XPW4576I-Dmq-O7bc.js} +1 -1
- package/dist/ui/assets/classDiagram-4FO5ZUOK-B5kZsiIt.js +1 -0
- package/dist/ui/assets/classDiagram-v2-Q7XG4LA2-B5kZsiIt.js +1 -0
- package/dist/ui/assets/{cose-bilkent-S5V4N54A-DmMsC6om.js → cose-bilkent-S5V4N54A-oTsqU1DY.js} +1 -1
- package/dist/ui/assets/{dagre-BM42HDAG-BmVr7T7Z.js → dagre-BM42HDAG-CZykCU6B.js} +1 -1
- package/dist/ui/assets/{diagram-2AECGRRQ-e0VnXEyj.js → diagram-2AECGRRQ-BY7clIlO.js} +1 -1
- package/dist/ui/assets/{diagram-5GNKFQAL-SCJGYE6m.js → diagram-5GNKFQAL-BWdq4hV0.js} +1 -1
- package/dist/ui/assets/{diagram-KO2AKTUF-DDUZO1Mj.js → diagram-KO2AKTUF-CCGEaiZg.js} +1 -1
- package/dist/ui/assets/{diagram-LMA3HP47-5x1ypf6a.js → diagram-LMA3HP47-CVkepFYU.js} +1 -1
- package/dist/ui/assets/{diagram-OG6HWLK6-3nDhrQ20.js → diagram-OG6HWLK6-f-NjsfLG.js} +1 -1
- package/dist/ui/assets/{dist-NEinnePC.js → dist-ZqsueX9_.js} +1 -1
- package/dist/ui/assets/{erDiagram-TEJ5UH35-BNvwSDNZ.js → erDiagram-TEJ5UH35-D8Wn6QP3.js} +1 -1
- package/dist/ui/assets/eventmodeling-FCH6USID-BODDoY6e.js +1 -0
- package/dist/ui/assets/{flowDiagram-I6XJVG4X-Bt_wDUhb.js → flowDiagram-I6XJVG4X-BYnhla9k.js} +1 -1
- package/dist/ui/assets/{ganttDiagram-6RSMTGT7-DVcJ0rNX.js → ganttDiagram-6RSMTGT7-Dpu52ZRF.js} +1 -1
- package/dist/ui/assets/{gitGraph-WXDBUCRP-CO_SyAgP.js → gitGraph-WXDBUCRP-ou8xzQe1.js} +1 -1
- package/dist/ui/assets/{gitGraphDiagram-PVQCEYII-oDyO3lWI.js → gitGraphDiagram-PVQCEYII-BnTuFH7F.js} +1 -1
- package/dist/ui/assets/index-B2mL0c61.js +11 -0
- package/dist/ui/assets/index-sZ1TgAvb.css +1 -0
- package/dist/ui/assets/{info-J43DQDTF-Bn17NS7h.js → info-J43DQDTF-xgUHa7k0.js} +1 -1
- package/dist/ui/assets/{infoDiagram-5YYISTIA-HG1opLLT.js → infoDiagram-5YYISTIA-DJBudrwD.js} +1 -1
- package/dist/ui/assets/{ishikawaDiagram-YF4QCWOH-Di_yQwi8.js → ishikawaDiagram-YF4QCWOH-DpFHgERI.js} +1 -1
- package/dist/ui/assets/{journeyDiagram-JHISSGLW-DZtHvLeE.js → journeyDiagram-JHISSGLW-Cd32hdpY.js} +1 -1
- package/dist/ui/assets/{kanban-definition-UN3LZRKU-B_RCx3Km.js → kanban-definition-UN3LZRKU-Dm1V8lr0.js} +1 -1
- package/dist/ui/assets/{line-DenX-zXQ.js → line-CZu6_PMX.js} +1 -1
- package/dist/ui/assets/{linear-dly_ngoq.js → linear-2tkTX_U2.js} +1 -1
- package/dist/ui/assets/{mermaid-parser.core-CRmtm0s9.js → mermaid-parser.core-C4m04cRe.js} +2 -2
- package/dist/ui/assets/{mermaid.core-C_3KVfpx.js → mermaid.core-BPeg1ewg.js} +3 -3
- package/dist/ui/assets/{mindmap-definition-RKZ34NQL-wdzSyYO6.js → mindmap-definition-RKZ34NQL-BENqEkIK.js} +1 -1
- package/dist/ui/assets/{packet-YPE3B663-tUyFmR11.js → packet-YPE3B663-DNO0oBLH.js} +1 -1
- package/dist/ui/assets/{pie-LRSECV5Y-Cel48VVp.js → pie-LRSECV5Y-CWoz31oB.js} +1 -1
- package/dist/ui/assets/{pieDiagram-4H26LBE5-B55ypWtu.js → pieDiagram-4H26LBE5-CtmxhUGI.js} +1 -1
- package/dist/ui/assets/{plan-view-CMoo3_gE.js → plan-view-bZtdFbit.js} +4 -4
- package/dist/ui/assets/{quadrantDiagram-W4KKPZXB-9WcKQV0a.js → quadrantDiagram-W4KKPZXB-BO3IZNbx.js} +1 -1
- package/dist/ui/assets/{radar-GUYGQ44K-w5pk53Vr.js → radar-GUYGQ44K-AEfROz99.js} +1 -1
- package/dist/ui/assets/{requirementDiagram-4Y6WPE33-CzE82fXz.js → requirementDiagram-4Y6WPE33-D-wQ1szT.js} +1 -1
- package/dist/ui/assets/{sankeyDiagram-5OEKKPKP-DSGO39je.js → sankeyDiagram-5OEKKPKP-Bj4kD_AJ.js} +1 -1
- package/dist/ui/assets/{sequenceDiagram-3UESZ5HK-BKSDDr0S.js → sequenceDiagram-3UESZ5HK-M8QVVH74.js} +1 -1
- package/dist/ui/assets/{src-JXBGgRt-.js → src-DvptJAGq.js} +1 -1
- package/dist/ui/assets/{stateDiagram-AJRCARHV-DZHYA9aj.js → stateDiagram-AJRCARHV-BiPRs9rN.js} +1 -1
- package/dist/ui/assets/stateDiagram-v2-BHNVJYJU-BYjicZlC.js +1 -0
- package/dist/ui/assets/{timeline-definition-PNZ67QCA-WqJFw7aE.js → timeline-definition-PNZ67QCA-DS0AGRKw.js} +1 -1
- package/dist/ui/assets/{treeView-BLDUP644-DoIQYMiz.js → treeView-BLDUP644-DJakvUbF.js} +1 -1
- package/dist/ui/assets/{treemap-LRROVOQU-BA9si_Mo.js → treemap-LRROVOQU-QXfc2Vwr.js} +1 -1
- package/dist/ui/assets/{vennDiagram-CIIHVFJN-BvWRUfFr.js → vennDiagram-CIIHVFJN-CBdJA0hv.js} +1 -1
- package/dist/ui/assets/{wardley-L42UT6IY-Cf9PU44t.js → wardley-L42UT6IY-DI9SdW45.js} +1 -1
- package/dist/ui/assets/{wardleyDiagram-YWT4CUSO-CGuxl7AU.js → wardleyDiagram-YWT4CUSO-RMmsKLRe.js} +1 -1
- package/dist/ui/assets/{xychartDiagram-2RQKCTM6-CNteNXpe.js → xychartDiagram-2RQKCTM6-DFXccP8B.js} +1 -1
- package/dist/ui/index.html +2 -2
- package/package.json +7 -5
- package/dist/ui/assets/architecture-7EHR7CIX-BbwstElO.js +0 -1
- package/dist/ui/assets/channel-BMK3JFRf.js +0 -1
- package/dist/ui/assets/chunk-QZHKN3VN-DLNUTn7U.js +0 -1
- package/dist/ui/assets/chunk-WU5MYG2G-ipH3YPcA.js +0 -1
- package/dist/ui/assets/classDiagram-4FO5ZUOK-CvIMLlSD.js +0 -1
- package/dist/ui/assets/classDiagram-v2-Q7XG4LA2-CvIMLlSD.js +0 -1
- package/dist/ui/assets/eventmodeling-FCH6USID-BeFWDbla.js +0 -1
- package/dist/ui/assets/index-CJJIQ0dr.css +0 -1
- package/dist/ui/assets/index-Dh5CsH24.js +0 -11
- package/dist/ui/assets/stateDiagram-v2-BHNVJYJU-DnAfDlvZ.js +0 -1
package/dist/daemon/queue.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Per-session disk-backed FIFO event queue with waiter parking
|
|
1
|
+
// Per-session disk-backed FIFO event queue with waiter parking.
|
|
2
2
|
//
|
|
3
3
|
// Every method is synchronous: Node's single thread therefore cannot interleave
|
|
4
4
|
// an enqueue between a queue-empty check and a waiter parking — the whole
|
|
@@ -85,19 +85,19 @@ export class SessionQueue {
|
|
|
85
85
|
/**
|
|
86
86
|
* Detach from disk forever (DELETE /api/sessions/:id evicted this instance):
|
|
87
87
|
* flush and requeue become no-ops. A delivered-but-unacked event's
|
|
88
|
-
* post-response ack callback can fire after
|
|
89
|
-
* session dir
|
|
90
|
-
*
|
|
88
|
+
* post-response ack callback can fire after the delete removes the home
|
|
89
|
+
* session dir: writing then would recreate ~/.otacon/sessions/<id>/
|
|
90
|
+
* (writeFileAtomic mkdirs). The events file leaves with the dir.
|
|
91
91
|
*/
|
|
92
92
|
close() {
|
|
93
93
|
this.closed = true;
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
96
96
|
* Detach from disk AND wake every parked waiter with one terminal event
|
|
97
|
-
* (DELETE of a
|
|
98
|
-
* flush/requeue/dispatch all become no-ops
|
|
97
|
+
* (DELETE of a live session, approval and archive lifecycle): set `closed` first so
|
|
98
|
+
* flush/requeue/dispatch all become no-ops (the synthetic event is never
|
|
99
99
|
* persisted or requeued, and a late post-response ack can't recreate the
|
|
100
|
-
*
|
|
100
|
+
* `~/.otacon/sessions/<id>/` dir the caller is about to remove), then hand each
|
|
101
101
|
* parked waiter the same payload so its long-poll resolves cleanly instead of
|
|
102
102
|
* 404ing on the next call. No waiter parked = nobody to wake (an agent that
|
|
103
103
|
* is not parked discovers the delete via its next call's 404). The synthetic
|
package/dist/daemon/queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/daemon/queue.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/daemon/queue.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/store.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Global session registry, per-session daemon state, and revision snapshots
|
|
2
|
-
// (
|
|
2
|
+
// (session registry and switcher, approval and archive lifecycle). All state is plain JSON written atomically — temp file +
|
|
3
3
|
// rename — so a crash can never leave a half-written file (DECISIONS.md
|
|
4
4
|
// "Storage: plain JSON files, not SQLite"). A file that is corrupt anyway
|
|
5
5
|
// (manual edit, disk fault) is quarantined, never fatal: it is renamed aside
|
|
@@ -106,10 +106,10 @@ function parseState(raw) {
|
|
|
106
106
|
return file;
|
|
107
107
|
}
|
|
108
108
|
/** Highest r<N>.md snapshot on disk — the revision counter's source of truth. */
|
|
109
|
-
function recoverRevision(
|
|
109
|
+
function recoverRevision(id) {
|
|
110
110
|
let max = 0;
|
|
111
111
|
try {
|
|
112
|
-
for (const name of readdirSync(paths.sessionDir(
|
|
112
|
+
for (const name of readdirSync(paths.sessionDir(id))) {
|
|
113
113
|
const match = /^r(\d+)\.md$/.exec(name);
|
|
114
114
|
if (match)
|
|
115
115
|
max = Math.max(max, Number(match[1]));
|
|
@@ -127,14 +127,14 @@ function recoverRevision(repo, id) {
|
|
|
127
127
|
* loosely (no thread validation): a half-corrupt file should still surrender
|
|
128
128
|
* every id it can.
|
|
129
129
|
*/
|
|
130
|
-
function recoverCounters(
|
|
130
|
+
function recoverCounters(id) {
|
|
131
131
|
const counters = { batch: 0, thread: 0, question: 0, eventSeq: 0 };
|
|
132
132
|
const see = (key, raw, re) => {
|
|
133
133
|
const match = typeof raw === "string" ? re.exec(raw) : null;
|
|
134
134
|
if (match)
|
|
135
135
|
counters[key] = Math.max(counters[key], Number(match[1]));
|
|
136
136
|
};
|
|
137
|
-
const threadsRaw = readJsonOr(paths.threadsPath(
|
|
137
|
+
const threadsRaw = readJsonOr(paths.threadsPath(id));
|
|
138
138
|
for (const t of Array.isArray(threadsRaw?.threads) ? threadsRaw.threads : []) {
|
|
139
139
|
const thread = t;
|
|
140
140
|
see("thread", thread?.id, /^t(\d+)$/);
|
|
@@ -142,11 +142,11 @@ function recoverCounters(repo, id) {
|
|
|
142
142
|
see("batch", thread?.batch, /^b(\d+)$/);
|
|
143
143
|
}
|
|
144
144
|
// Agent grill questions share the q counter with user-question threads.
|
|
145
|
-
const transcriptRaw = readJsonOr(paths.transcriptPath(
|
|
145
|
+
const transcriptRaw = readJsonOr(paths.transcriptPath(id));
|
|
146
146
|
for (const e of Array.isArray(transcriptRaw?.entries) ? transcriptRaw.entries : []) {
|
|
147
147
|
see("question", e?.id, /^q(\d+)$/);
|
|
148
148
|
}
|
|
149
|
-
const eventsRaw = readJsonOr(paths.eventsPath(
|
|
149
|
+
const eventsRaw = readJsonOr(paths.eventsPath(id));
|
|
150
150
|
for (const e of Array.isArray(eventsRaw?.events) ? eventsRaw.events : []) {
|
|
151
151
|
const event = e;
|
|
152
152
|
if (typeof event?.seq === "number") {
|
|
@@ -162,9 +162,10 @@ function recoverCounters(repo, id) {
|
|
|
162
162
|
}
|
|
163
163
|
const BASE36 = "0123456789abcdefghijklmnopqrstuvwxyz";
|
|
164
164
|
/**
|
|
165
|
-
* Owns `$OTACON_HOME/registry.json` plus each session's
|
|
166
|
-
*
|
|
167
|
-
* so they survive queue drains and daemon
|
|
165
|
+
* Owns `$OTACON_HOME/registry.json` plus each session's working state in the
|
|
166
|
+
* home store (`~/.otacon/sessions/<id>/`). Event seqs and the b/t/q stable ids
|
|
167
|
+
* are minted here (bumpCounter) so they survive queue drains and daemon
|
|
168
|
+
* restarts.
|
|
168
169
|
*/
|
|
169
170
|
export class Store {
|
|
170
171
|
registryFile;
|
|
@@ -180,8 +181,9 @@ export class Store {
|
|
|
180
181
|
this.registry = parsed;
|
|
181
182
|
return;
|
|
182
183
|
}
|
|
183
|
-
// Sessions registered there are forgotten (their
|
|
184
|
-
// manual recovery); the alternative is a daemon that can
|
|
184
|
+
// Sessions registered there are forgotten (their ~/.otacon/sessions/<id>/
|
|
185
|
+
// dirs survive for manual recovery); the alternative is a daemon that can
|
|
186
|
+
// never boot again.
|
|
185
187
|
quarantineCorruptFile(this.registryFile, "session registry");
|
|
186
188
|
this.registry = { version: 1, sessions: {} };
|
|
187
189
|
this.flushRegistry();
|
|
@@ -207,16 +209,17 @@ export class Store {
|
|
|
207
209
|
updatedAt: now,
|
|
208
210
|
};
|
|
209
211
|
// State files first, registry entry last: the registry is the commit point.
|
|
210
|
-
// A crash in between leaves an orphan
|
|
211
|
-
// registered session whose state files are missing
|
|
212
|
+
// A crash in between leaves an orphan ~/.otacon/sessions/<id>/ dir
|
|
213
|
+
// (harmless), never a registered session whose state files are missing
|
|
214
|
+
// (wedged forever).
|
|
212
215
|
const state = {
|
|
213
216
|
id,
|
|
214
217
|
revision: 0,
|
|
215
218
|
lastReviewedRevision: 0,
|
|
216
219
|
counters: { batch: 0, thread: 0, question: 0, eventSeq: 0 },
|
|
217
220
|
};
|
|
218
|
-
writeFileAtomic(paths.sessionStatePath(
|
|
219
|
-
writeFileAtomic(paths.eventsPath(
|
|
221
|
+
writeFileAtomic(paths.sessionStatePath(id), stringify(state));
|
|
222
|
+
writeFileAtomic(paths.eventsPath(id), stringify({ version: 1, events: [] }));
|
|
220
223
|
this.registry.sessions[id] = session;
|
|
221
224
|
this.flushRegistry();
|
|
222
225
|
return { ...session };
|
|
@@ -229,8 +232,8 @@ export class Store {
|
|
|
229
232
|
return { ...session };
|
|
230
233
|
}
|
|
231
234
|
/**
|
|
232
|
-
* Remove a session from the registry (otacon clean,
|
|
233
|
-
*
|
|
235
|
+
* Remove a session from the registry (otacon clean, approval and archive lifecycle); its home
|
|
236
|
+
* dir `~/.otacon/sessions/<id>/` is the CLI's/daemon's to remove afterwards.
|
|
234
237
|
*/
|
|
235
238
|
deleteSession(id) {
|
|
236
239
|
const session = this.require(id);
|
|
@@ -239,39 +242,18 @@ export class Store {
|
|
|
239
242
|
return { ...session };
|
|
240
243
|
}
|
|
241
244
|
/**
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
*
|
|
245
|
-
*
|
|
246
|
-
* dir is fine (force).
|
|
245
|
+
* Permanently remove a session's home dir `~/.otacon/sessions/<id>/` (UI delete
|
|
246
|
+
* and `otacon clean`, all statuses): no archive, nothing recoverable from
|
|
247
|
+
* otacon itself. The durable copies are the Save copy under `plans.dir` and
|
|
248
|
+
* (for Implement plans) the PR. Called after the caller deregisters, so it
|
|
249
|
+
* takes the id directly. Idempotent: a missing dir is fine (force).
|
|
247
250
|
*/
|
|
248
|
-
removeSessionDir(
|
|
249
|
-
rmSync(paths.sessionDir(
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Archive a session's working dir `.otacon/<id>/` → `.otacon/archive/<id>/`
|
|
253
|
-
* in its repo (numeric suffix on name collision); returns the destination, or
|
|
254
|
-
* null when there was no dir. The recoverable counterpart to removeSessionDir,
|
|
255
|
-
* for a session whose plan is already preserved in the home archive (approved):
|
|
256
|
-
* `otacon clean` and the UI's delete of an approved session both archive
|
|
257
|
-
* through here. `repo` is
|
|
258
|
-
* passed explicitly because the caller deregisters first (require() throws).
|
|
259
|
-
*/
|
|
260
|
-
archiveSessionDir(repo, id) {
|
|
261
|
-
const source = paths.sessionDir(repo, id);
|
|
262
|
-
if (!existsSync(source))
|
|
263
|
-
return null;
|
|
264
|
-
const base = join(paths.otaconDir(repo), "archive");
|
|
265
|
-
mkdirSync(base, { recursive: true });
|
|
266
|
-
let dest = join(base, id);
|
|
267
|
-
for (let n = 2; existsSync(dest); n++)
|
|
268
|
-
dest = join(base, `${id}-${n}`);
|
|
269
|
-
renameSync(source, dest);
|
|
270
|
-
return dest;
|
|
251
|
+
removeSessionDir(id) {
|
|
252
|
+
rmSync(paths.sessionDir(id), { recursive: true, force: true });
|
|
271
253
|
}
|
|
272
254
|
readState(id) {
|
|
273
|
-
|
|
274
|
-
const path = paths.sessionStatePath(
|
|
255
|
+
this.require(id);
|
|
256
|
+
const path = paths.sessionStatePath(id);
|
|
275
257
|
if (existsSync(path)) {
|
|
276
258
|
const parsed = parseState(readJsonOr(path));
|
|
277
259
|
if (parsed && parsed.id === id)
|
|
@@ -286,9 +268,9 @@ export class Store {
|
|
|
286
268
|
// degrades to "previous revision", which the user can re-select.
|
|
287
269
|
const state = {
|
|
288
270
|
id,
|
|
289
|
-
revision: recoverRevision(
|
|
271
|
+
revision: recoverRevision(id),
|
|
290
272
|
lastReviewedRevision: 0,
|
|
291
|
-
counters: recoverCounters(
|
|
273
|
+
counters: recoverCounters(id),
|
|
292
274
|
};
|
|
293
275
|
writeFileAtomic(path, stringify(state));
|
|
294
276
|
return state;
|
|
@@ -299,36 +281,33 @@ export class Store {
|
|
|
299
281
|
* backwards — older baselines stay reachable via the diff endpoint's ?from=.
|
|
300
282
|
*/
|
|
301
283
|
markReviewed(id, n) {
|
|
302
|
-
const
|
|
303
|
-
const state = this.readState(id);
|
|
284
|
+
const state = this.readState(id); // throws on unknown id
|
|
304
285
|
if (n > state.lastReviewedRevision) {
|
|
305
286
|
state.lastReviewedRevision = Math.min(n, state.revision);
|
|
306
|
-
writeFileAtomic(paths.sessionStatePath(
|
|
287
|
+
writeFileAtomic(paths.sessionStatePath(id), stringify(state));
|
|
307
288
|
}
|
|
308
289
|
return state.lastReviewedRevision;
|
|
309
290
|
}
|
|
310
291
|
/**
|
|
311
|
-
* Arm a deferred approval (comment & approve
|
|
292
|
+
* Arm a deferred approval (comment & approve): the session
|
|
312
293
|
* has flipped to `finalizing`, and the agent's next clean `submit` finalizes,
|
|
313
294
|
* carrying the `implement` choice and the swept comment-thread ids. Persisted
|
|
314
295
|
* on session.json (not the registry) — daemon-owned detail, like the counters.
|
|
315
296
|
*/
|
|
316
297
|
setPendingApproval(id, pendingApproval) {
|
|
317
|
-
const
|
|
318
|
-
const state = this.readState(id);
|
|
298
|
+
const state = this.readState(id); // throws on unknown id
|
|
319
299
|
state.pendingApproval = pendingApproval;
|
|
320
|
-
writeFileAtomic(paths.sessionStatePath(
|
|
300
|
+
writeFileAtomic(paths.sessionStatePath(id), stringify(state));
|
|
321
301
|
}
|
|
322
302
|
/** Disarm the deferred approval once it has finalized (or been force-escaped). */
|
|
323
303
|
clearPendingApproval(id) {
|
|
324
|
-
const
|
|
325
|
-
const state = this.readState(id);
|
|
304
|
+
const state = this.readState(id); // throws on unknown id
|
|
326
305
|
if (state.pendingApproval === undefined)
|
|
327
306
|
return;
|
|
328
307
|
delete state.pendingApproval;
|
|
329
|
-
writeFileAtomic(paths.sessionStatePath(
|
|
308
|
+
writeFileAtomic(paths.sessionStatePath(id), stringify(state));
|
|
330
309
|
}
|
|
331
|
-
/** Increment one daemon-owned counter (
|
|
310
|
+
/** Increment one daemon-owned counter (review loop and daemon API stable ids) and persist it. */
|
|
332
311
|
bumpCounter(id, key) {
|
|
333
312
|
return this.bumpCounters(id, { [key]: 1 })[key];
|
|
334
313
|
}
|
|
@@ -338,17 +317,16 @@ export class Store {
|
|
|
338
317
|
* updated counter values.
|
|
339
318
|
*/
|
|
340
319
|
bumpCounters(id, by) {
|
|
341
|
-
const
|
|
342
|
-
const state = this.readState(id);
|
|
320
|
+
const state = this.readState(id); // throws on unknown id
|
|
343
321
|
for (const key of Object.keys(by)) {
|
|
344
322
|
state.counters[key] += by[key] ?? 0;
|
|
345
323
|
}
|
|
346
|
-
writeFileAtomic(paths.sessionStatePath(
|
|
324
|
+
writeFileAtomic(paths.sessionStatePath(id), stringify(state));
|
|
347
325
|
return { ...state.counters };
|
|
348
326
|
}
|
|
349
327
|
/**
|
|
350
328
|
* Store the next revision snapshot r<N>.md plus the lint warnings it was
|
|
351
|
-
* accepted with (r<N>.warnings.json — the UI's L6 badges;
|
|
329
|
+
* accepted with (r<N>.warnings.json — the UI's L6 badges; approval and archive lifecycle)
|
|
352
330
|
* and the agent's changelog when one accompanied it (r<N>.changelog.md);
|
|
353
331
|
* returns N.
|
|
354
332
|
*/
|
|
@@ -356,25 +334,25 @@ export class Store {
|
|
|
356
334
|
const session = this.require(id);
|
|
357
335
|
const state = this.readState(id);
|
|
358
336
|
state.revision += 1;
|
|
359
|
-
writeFileAtomic(paths.revisionPath(
|
|
360
|
-
writeFileAtomic(paths.revisionWarningsPath(
|
|
337
|
+
writeFileAtomic(paths.revisionPath(id, state.revision), content);
|
|
338
|
+
writeFileAtomic(paths.revisionWarningsPath(id, state.revision), stringify(warnings));
|
|
361
339
|
if (changelog !== undefined && changelog.trim() !== "") {
|
|
362
|
-
writeFileAtomic(paths.revisionChangelogPath(
|
|
340
|
+
writeFileAtomic(paths.revisionChangelogPath(id, state.revision), changelog);
|
|
363
341
|
}
|
|
364
|
-
writeFileAtomic(paths.sessionStatePath(
|
|
342
|
+
writeFileAtomic(paths.sessionStatePath(id), stringify(state));
|
|
365
343
|
session.updatedAt = new Date().toISOString();
|
|
366
344
|
this.flushRegistry();
|
|
367
345
|
return state.revision;
|
|
368
346
|
}
|
|
369
347
|
readRevision(id, n) {
|
|
370
|
-
|
|
371
|
-
return readFileSync(paths.revisionPath(
|
|
348
|
+
this.require(id); // throws on unknown id
|
|
349
|
+
return readFileSync(paths.revisionPath(id, n), "utf8");
|
|
372
350
|
}
|
|
373
351
|
/** The changelog submitted with r<n>.md; null when none was (r1, typically). */
|
|
374
352
|
readRevisionChangelog(id, n) {
|
|
375
|
-
|
|
353
|
+
this.require(id); // throws on unknown id
|
|
376
354
|
try {
|
|
377
|
-
return readFileSync(paths.revisionChangelogPath(
|
|
355
|
+
return readFileSync(paths.revisionChangelogPath(id, n), "utf8");
|
|
378
356
|
}
|
|
379
357
|
catch {
|
|
380
358
|
return null;
|
|
@@ -385,25 +363,34 @@ export class Store {
|
|
|
385
363
|
* badges are presentation metadata, never worth quarantine machinery.
|
|
386
364
|
*/
|
|
387
365
|
readRevisionWarnings(id, n) {
|
|
388
|
-
|
|
389
|
-
const raw = readJsonOr(paths.revisionWarningsPath(
|
|
366
|
+
this.require(id); // throws on unknown id
|
|
367
|
+
const raw = readJsonOr(paths.revisionWarningsPath(id, n));
|
|
390
368
|
return Array.isArray(raw) ? raw : [];
|
|
391
369
|
}
|
|
392
370
|
/** Where this session's SessionQueue persists — for the daemon to wire queues. */
|
|
393
371
|
eventsPath(id) {
|
|
394
|
-
|
|
372
|
+
this.require(id); // throws on unknown id
|
|
373
|
+
return paths.eventsPath(id);
|
|
395
374
|
}
|
|
396
375
|
/** Where this session's review threads persist (src/daemon/threads.ts). */
|
|
397
376
|
threadsPath(id) {
|
|
398
|
-
|
|
377
|
+
this.require(id); // throws on unknown id
|
|
378
|
+
return paths.threadsPath(id);
|
|
399
379
|
}
|
|
400
380
|
/** Where this session's grill transcript persists (src/daemon/transcript.ts). */
|
|
401
381
|
transcriptPath(id) {
|
|
402
|
-
|
|
382
|
+
this.require(id); // throws on unknown id
|
|
383
|
+
return paths.transcriptPath(id);
|
|
403
384
|
}
|
|
404
385
|
/** Where this session's live-activity feed persists (src/daemon/activity.ts). */
|
|
405
386
|
activityPath(id) {
|
|
406
|
-
|
|
387
|
+
this.require(id); // throws on unknown id
|
|
388
|
+
return paths.activityPath(id);
|
|
389
|
+
}
|
|
390
|
+
/** Where this session's normalized live-activity stream persists (src/daemon/capture/stream-store.ts). */
|
|
391
|
+
streamPath(id) {
|
|
392
|
+
this.require(id); // throws on unknown id
|
|
393
|
+
return paths.streamPath(id);
|
|
407
394
|
}
|
|
408
395
|
require(id) {
|
|
409
396
|
const session = this.registry.sessions[id];
|
package/dist/daemon/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/daemon/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/daemon/store.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/threads.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Per-session thread persistence: .otacon/<id>/threads.json holds every
|
|
2
2
|
// comment and question thread so the review UI's rail can render the whole
|
|
3
|
-
// conversation on any load (
|
|
3
|
+
// conversation on any load (threaded review and revision, approval and archive lifecycle) — the event queue drains, so
|
|
4
4
|
// it cannot be the rail's source. Same storage posture as the rest of the
|
|
5
5
|
// daemon: atomic writes, corrupt files quarantined and rebuilt empty, never
|
|
6
6
|
// fatal (DECISIONS.md "Threads: one threads.json per session").
|
|
@@ -14,6 +14,16 @@ function isAnchor(raw) {
|
|
|
14
14
|
const anchor = raw;
|
|
15
15
|
return typeof anchor === "object" && typeof anchor.section === "string";
|
|
16
16
|
}
|
|
17
|
+
/** The reviewer-close stamp (`resolved`) on either thread variant; absent = open. */
|
|
18
|
+
function isResolved(raw) {
|
|
19
|
+
if (raw === undefined)
|
|
20
|
+
return true;
|
|
21
|
+
const resolved = raw;
|
|
22
|
+
return (typeof resolved === "object" &&
|
|
23
|
+
resolved !== null &&
|
|
24
|
+
typeof resolved.revision === "number" &&
|
|
25
|
+
typeof resolved.at === "string");
|
|
26
|
+
}
|
|
17
27
|
function isThread(raw) {
|
|
18
28
|
const thread = raw;
|
|
19
29
|
if (typeof thread !== "object" || thread === null)
|
|
@@ -27,18 +37,28 @@ function isThread(raw) {
|
|
|
27
37
|
if (thread.kind === "comment") {
|
|
28
38
|
if (typeof thread.batch !== "string")
|
|
29
39
|
return false;
|
|
30
|
-
|
|
31
|
-
|
|
40
|
+
if (thread.replyTo !== undefined && typeof thread.replyTo !== "string")
|
|
41
|
+
return false;
|
|
42
|
+
if (!isResolved(thread.resolved))
|
|
43
|
+
return false;
|
|
44
|
+
// A leftover legacy `resolution` (an old-code in-flight session, normalized
|
|
45
|
+
// to `reply` in normalizeThread) is tolerated with the new `reply` shape.
|
|
46
|
+
const reply = thread.reply ?? thread.resolution;
|
|
47
|
+
if (reply === undefined)
|
|
32
48
|
return true;
|
|
33
|
-
return (typeof
|
|
34
|
-
|
|
35
|
-
typeof
|
|
36
|
-
typeof
|
|
37
|
-
|
|
49
|
+
return (typeof reply === "object" &&
|
|
50
|
+
reply !== null &&
|
|
51
|
+
typeof reply.body === "string" &&
|
|
52
|
+
typeof reply.revision === "number" &&
|
|
53
|
+
// accept either the new `repliedAt` or the legacy `resolvedAt`
|
|
54
|
+
(typeof reply.repliedAt === "string" ||
|
|
55
|
+
typeof reply.resolvedAt === "string"));
|
|
38
56
|
}
|
|
39
57
|
if (thread.kind === "question") {
|
|
40
58
|
if (thread.replyTo !== undefined && typeof thread.replyTo !== "string")
|
|
41
59
|
return false;
|
|
60
|
+
if (!isResolved(thread.resolved))
|
|
61
|
+
return false;
|
|
42
62
|
const { answer } = thread;
|
|
43
63
|
if (answer === undefined)
|
|
44
64
|
return true;
|
|
@@ -49,6 +69,21 @@ function isThread(raw) {
|
|
|
49
69
|
}
|
|
50
70
|
return false;
|
|
51
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Read-path normalization: an in-flight session written by the pre-Phase-2 code
|
|
74
|
+
* stores the agent's response as `resolution: {body, revision, resolvedAt}`. Map
|
|
75
|
+
* it onto the current `reply: {body, revision, repliedAt}` so the old session is
|
|
76
|
+
* never quarantined (and the rest of the daemon only ever sees `reply`).
|
|
77
|
+
*/
|
|
78
|
+
function normalizeThread(thread) {
|
|
79
|
+
const legacy = thread;
|
|
80
|
+
if (thread.kind === "comment" && thread.reply === undefined && legacy.resolution !== undefined) {
|
|
81
|
+
const { body, revision, resolvedAt } = legacy.resolution;
|
|
82
|
+
thread.reply = { body, revision, repliedAt: resolvedAt };
|
|
83
|
+
delete legacy.resolution;
|
|
84
|
+
}
|
|
85
|
+
return thread;
|
|
86
|
+
}
|
|
52
87
|
// Every element is validated, not just the envelope: a JSON-valid file with a
|
|
53
88
|
// corrupt element would otherwise flow a non-Thread into answerQuestion (500)
|
|
54
89
|
// and the rail (render crash) — exactly the "never fatal" failures quarantine
|
|
@@ -60,7 +95,9 @@ function parseThreads(raw) {
|
|
|
60
95
|
file.version === 1 &&
|
|
61
96
|
Array.isArray(file.threads) &&
|
|
62
97
|
file.threads.every(isThread);
|
|
63
|
-
|
|
98
|
+
// Normalize the legacy `resolution` field to `reply` post-validation, so an
|
|
99
|
+
// in-flight old-code session reads (and re-writes) as the current shape.
|
|
100
|
+
return valid ? { ...file, threads: file.threads.map(normalizeThread) } : undefined;
|
|
64
101
|
}
|
|
65
102
|
/** All threads, oldest first. Missing file = no threads yet; corrupt = quarantined, []. */
|
|
66
103
|
export function readThreads(path) {
|
|
@@ -97,9 +134,10 @@ export function answerQuestion(path, id, body) {
|
|
|
97
134
|
}
|
|
98
135
|
/**
|
|
99
136
|
* Apply an accepted revision to the threads file, in one read + one atomic
|
|
100
|
-
* write: record the
|
|
101
|
-
* already vouched for them; re-
|
|
102
|
-
*
|
|
137
|
+
* write: record the agent's replies on their comment threads (lint L5 has
|
|
138
|
+
* already vouched for them; re-replying overwrites — at-least-once) — a reply is
|
|
139
|
+
* a *response*, not a close (the reviewer closes via resolveThread) — then
|
|
140
|
+
* re-locate every thread's anchor in the new plan (plan structure, lint, and anchoring) — lost or
|
|
103
141
|
* ambiguous quotes turn anchorState "orphaned", re-found ones recover.
|
|
104
142
|
* Returns the threads that changed, for the daemon's SSE `thread` upserts.
|
|
105
143
|
*/
|
|
@@ -108,16 +146,16 @@ export function applyRevisionToThreads(path, opts) {
|
|
|
108
146
|
if (threads.length === 0)
|
|
109
147
|
return [];
|
|
110
148
|
const changed = new Map();
|
|
111
|
-
const
|
|
149
|
+
const repliedAt = new Date().toISOString();
|
|
112
150
|
// Segment the new plan once for the whole pass (lazily — a rail of
|
|
113
151
|
// whole-plan threads never needs it), not per anchored thread.
|
|
114
152
|
let units;
|
|
115
153
|
for (const thread of threads) {
|
|
116
154
|
if (thread.kind === "comment" && opts.replies[thread.id] !== undefined) {
|
|
117
|
-
thread.
|
|
155
|
+
thread.reply = {
|
|
118
156
|
body: opts.replies[thread.id],
|
|
119
157
|
revision: opts.revision,
|
|
120
|
-
|
|
158
|
+
repliedAt,
|
|
121
159
|
};
|
|
122
160
|
changed.set(thread.id, thread);
|
|
123
161
|
}
|
|
@@ -144,21 +182,69 @@ export function applyRevisionToThreads(path, opts) {
|
|
|
144
182
|
}
|
|
145
183
|
return [...changed.values()];
|
|
146
184
|
}
|
|
147
|
-
/**
|
|
185
|
+
/**
|
|
186
|
+
* Set or clear the reviewer's close on a thread (the Resolve verb), in one read +
|
|
187
|
+
* one atomic write: `resolved:true` stamps `{revision, at}` (pass the session's
|
|
188
|
+
* current revision in), `false` clears it. Returns the updated thread, or
|
|
189
|
+
* undefined when no thread with that id exists. Mirrors answerQuestion — at-least-
|
|
190
|
+
* once delivery makes a duplicate resolve a shrug (re-stamps the same close).
|
|
191
|
+
*/
|
|
192
|
+
export function resolveThread(path, id, resolved, revision) {
|
|
193
|
+
const threads = readThreads(path);
|
|
194
|
+
const thread = threads.find((t) => t.id === id);
|
|
195
|
+
if (!thread)
|
|
196
|
+
return undefined;
|
|
197
|
+
if (resolved)
|
|
198
|
+
thread.resolved = { revision, at: new Date().toISOString() };
|
|
199
|
+
else
|
|
200
|
+
delete thread.resolved;
|
|
201
|
+
writeFileAtomic(path, stringify({ version: 1, threads }));
|
|
202
|
+
return thread;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* The reviewer-resolved comment conversation ROOTS — a comment thread carrying
|
|
206
|
+
* `resolved` is a root (the Resolve verb lands on the root), so its id is what a
|
|
207
|
+
* follow-up turn keys on. Resolving the root withdraws every turn of the
|
|
208
|
+
* conversation at once.
|
|
209
|
+
*/
|
|
210
|
+
function resolvedCommentRoots(threads) {
|
|
211
|
+
return new Set(threads
|
|
212
|
+
.filter((t) => t.kind === "comment" && t.resolved !== undefined)
|
|
213
|
+
.map((t) => t.id));
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Per-comment-turn states L5 needs to skip a turn — the daemon's L5 context
|
|
217
|
+
* input, one entry per comment thread (root or follow-up): `replied` (this turn
|
|
218
|
+
* has an agent response) and `resolved` (the turn's CONVERSATION ROOT is
|
|
219
|
+
* reviewer-closed). Resolving the root withdraws all its turns from L5 at once,
|
|
220
|
+
* because a follow-up keys its `resolved` on `replyTo ?? id`. L5 demands a reply
|
|
221
|
+
* only for a turn that is neither replied nor (root-)resolved.
|
|
222
|
+
*/
|
|
148
223
|
export function commentThreadStates(path) {
|
|
149
|
-
|
|
224
|
+
const threads = readThreads(path);
|
|
225
|
+
const resolvedRootIds = resolvedCommentRoots(threads);
|
|
226
|
+
return threads
|
|
150
227
|
.filter((t) => t.kind === "comment")
|
|
151
|
-
.map((t) => ({
|
|
228
|
+
.map((t) => ({
|
|
229
|
+
id: t.id,
|
|
230
|
+
replied: t.reply !== undefined,
|
|
231
|
+
resolved: resolvedRootIds.has(t.replyTo ?? t.id),
|
|
232
|
+
}));
|
|
152
233
|
}
|
|
153
234
|
/**
|
|
154
|
-
* The still
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
*
|
|
235
|
+
* The comment turns still owed a response — no agent `reply` on this turn AND the
|
|
236
|
+
* turn's conversation root is not reviewer-`resolved` (a resolved/withdrawn
|
|
237
|
+
* conversation owes nothing). This is what a **comment & approve** fold-in
|
|
238
|
+
* sweeps: each is re-delivered to the agent in the `final:true` comments batch
|
|
239
|
+
* and replayed into the committed `## Review notes`. Pure over an already-read
|
|
240
|
+
* thread list so the approve handler reads disk once. Open *questions* are not
|
|
241
|
+
* swept — they are answered via `otacon answer`, never folded into the plan, and
|
|
242
|
+
* an open one at approve still drops as today.
|
|
160
243
|
*/
|
|
161
244
|
export function openCommentThreads(threads) {
|
|
162
|
-
|
|
245
|
+
const resolvedRootIds = resolvedCommentRoots(threads);
|
|
246
|
+
return threads.filter((t) => t.kind === "comment" &&
|
|
247
|
+
t.reply === undefined &&
|
|
248
|
+
!resolvedRootIds.has(t.replyTo ?? t.id));
|
|
163
249
|
}
|
|
164
250
|
//# sourceMappingURL=threads.js.map
|