thurview 0.1.5 → 0.3.0
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 +19 -12
- package/dist/cli.js +96 -5
- package/dist/cli.js.map +1 -1
- package/dist/graph.js +465 -0
- package/dist/graph.js.map +1 -0
- package/dist/server/server.js +5 -1
- package/dist/server/server.js.map +1 -1
- package/dist/symbols.js +1 -1
- package/dist/symbols.js.map +1 -1
- package/dist/threads.js +11 -3
- package/dist/threads.js.map +1 -1
- package/dist/ui/app.js +10 -2
- package/dist/ui/app.js.map +2 -2
- package/package.json +11 -1
- package/skills/thurview/SKILL.md +36 -6
- package/skills/thurview/references/lifecycle.md +4 -3
package/dist/threads.js
CHANGED
|
@@ -48,12 +48,15 @@ export async function deleteThread(reviewId, threadId) {
|
|
|
48
48
|
t.threads = t.threads.filter((x) => x.id !== threadId);
|
|
49
49
|
await writeThreads(reviewId, t);
|
|
50
50
|
}
|
|
51
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Submit the review: pending comments become visible to the agent and the status moves.
|
|
53
|
+
* `close` ends the review without approving it.
|
|
54
|
+
*/
|
|
52
55
|
export async function submitReview(reviewId, decision, body) {
|
|
53
56
|
const review = await readReview(reviewId);
|
|
54
57
|
if (!review)
|
|
55
58
|
throw new Error("review not found");
|
|
56
|
-
if (review.status === "accepted" || review.status === "
|
|
59
|
+
if (review.status === "accepted" || review.status === "closed")
|
|
57
60
|
throw new Error(`review is ${review.status}`);
|
|
58
61
|
const t = await readThreads(reviewId);
|
|
59
62
|
for (const th of t.threads)
|
|
@@ -61,7 +64,12 @@ export async function submitReview(reviewId, decision, body) {
|
|
|
61
64
|
th.submitted = true;
|
|
62
65
|
t.decisions.push({ at: now(), decision, revision: review.revision, ...(body ? { body } : {}) });
|
|
63
66
|
await writeThreads(reviewId, t);
|
|
64
|
-
review.status =
|
|
67
|
+
review.status =
|
|
68
|
+
decision === "approve"
|
|
69
|
+
? "accepted"
|
|
70
|
+
: decision === "close"
|
|
71
|
+
? "closed"
|
|
72
|
+
: "awaiting-agent-updates";
|
|
65
73
|
await writeReview(review);
|
|
66
74
|
return t;
|
|
67
75
|
}
|
package/dist/threads.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../src/threads.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../src/threads.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/app.js
CHANGED
|
@@ -210,7 +210,7 @@
|
|
|
210
210
|
}
|
|
211
211
|
function isTerminal() {
|
|
212
212
|
const s = state.data?.review.status;
|
|
213
|
-
return s === "accepted" || s === "
|
|
213
|
+
return s === "accepted" || s === "closed";
|
|
214
214
|
}
|
|
215
215
|
function readOnly() {
|
|
216
216
|
return isTerminal() || state.viewingRevision !== null;
|
|
@@ -500,6 +500,11 @@
|
|
|
500
500
|
"div",
|
|
501
501
|
{ class: "row" },
|
|
502
502
|
h("button", { class: "ghost", onclick: () => d.close() }, "Cancel"),
|
|
503
|
+
h(
|
|
504
|
+
"button",
|
|
505
|
+
{ title: "End the review without approving it", onclick: () => decide("close") },
|
|
506
|
+
"Close"
|
|
507
|
+
),
|
|
503
508
|
h("button", { onclick: () => decide("request-changes") }, "Request changes"),
|
|
504
509
|
h("button", { class: "ok", onclick: () => decide("approve") }, "Approve")
|
|
505
510
|
)
|
|
@@ -1986,7 +1991,7 @@
|
|
|
1986
1991
|
app.appendChild(el);
|
|
1987
1992
|
}
|
|
1988
1993
|
function statusClass(s) {
|
|
1989
|
-
return s === "accepted" ? "ok" : s === "awaiting-agent-updates" ? "warn" : s === "
|
|
1994
|
+
return s === "accepted" ? "ok" : s === "awaiting-agent-updates" ? "warn" : s === "closed" ? "del" : s === "awaiting-review" ? "accent" : "";
|
|
1990
1995
|
}
|
|
1991
1996
|
var center;
|
|
1992
1997
|
var side;
|
|
@@ -2236,6 +2241,9 @@
|
|
|
2236
2241
|
} else if (d.review.status === "accepted") {
|
|
2237
2242
|
banner.hidden = false;
|
|
2238
2243
|
banner.append("Approved. This review is complete.");
|
|
2244
|
+
} else if (d.review.status === "closed") {
|
|
2245
|
+
banner.hidden = false;
|
|
2246
|
+
banner.append("Closed without approval. This review is complete.");
|
|
2239
2247
|
}
|
|
2240
2248
|
}
|
|
2241
2249
|
function connectEvents() {
|