plan-assistant 1.0.0 → 1.1.0-alpha.2
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/build/client/_app/immutable/assets/0.Bq_FaoWl.css +1 -0
- package/build/client/_app/immutable/assets/{3.CeEJ2rrR.css → 3.OXdAvKD0.css} +1 -1
- package/build/client/_app/immutable/chunks/{CBW7agkG.js → 27pbX_vq.js} +5 -5
- package/build/client/_app/immutable/chunks/{BbQSm0Zl.js → 3gbRUow6.js} +1 -1
- package/build/client/_app/immutable/chunks/{j27NcumQ.js → 3x4V3rib.js} +1 -1
- package/build/client/_app/immutable/chunks/A-lKs3gv.js +74 -0
- package/build/client/_app/immutable/chunks/{D9DlXbtP.js → B17VT3PG.js} +1 -1
- package/build/client/_app/immutable/chunks/{B1jEhT6Y.js → B7-lqzLh.js} +1 -1
- package/build/client/_app/immutable/chunks/BACBRawl.js +1 -0
- package/build/client/_app/immutable/chunks/{8d4Xe_BE.js → BHHdvoSH.js} +1 -1
- package/build/client/_app/immutable/chunks/{thT0GKfC.js → BHw-l2wV.js} +1 -1
- package/build/client/_app/immutable/chunks/{CW0iy9tI.js → BJVVtbLm.js} +1 -1
- package/build/client/_app/immutable/chunks/{D-sluzJn.js → BKr8fofx.js} +1 -1
- package/build/client/_app/immutable/chunks/{I9hXWnMX.js → BMUXKGDC.js} +1 -1
- package/build/client/_app/immutable/chunks/BSO9I9UJ.js +1 -0
- package/build/client/_app/immutable/chunks/{CcjchtPD.js → BSaHOkA3.js} +1 -1
- package/build/client/_app/immutable/chunks/{E1kKiM5I.js → BWoswMls.js} +1 -1
- package/build/client/_app/immutable/chunks/{BWR4y0Zt.js → BZGvZOQ_.js} +1 -1
- package/build/client/_app/immutable/chunks/{CHH2Hy6S.js → BbYVrus6.js} +1 -1
- package/build/client/_app/immutable/chunks/{DEKji6wA.js → BrOCVqoA.js} +1 -1
- package/build/client/_app/immutable/chunks/{xC_GeI4S.js → Bs5gzZS4.js} +1 -1
- package/build/client/_app/immutable/chunks/{CIhVjBiN.js → BwLOb1Wn.js} +1 -1
- package/build/client/_app/immutable/chunks/BxZQzzNN.js +2 -0
- package/build/client/_app/immutable/chunks/{BUD_gazk.js → C0jK4BD7.js} +1 -1
- package/build/client/_app/immutable/chunks/C9yhtPpT.js +2 -0
- package/build/client/_app/immutable/chunks/{DhXvBouI.js → CQkfit2w.js} +1 -1
- package/build/client/_app/immutable/chunks/{Cll_sCfU.js → CSfKjQ0I.js} +1 -1
- package/build/client/_app/immutable/chunks/{DQY6FbTx.js → CSu73blV.js} +1 -1
- package/build/client/_app/immutable/chunks/{BjW-a7Pq.js → CXUcq-YP.js} +1 -1
- package/build/client/_app/immutable/chunks/CYKegBgW.js +261 -0
- package/build/client/_app/immutable/chunks/{C0zVmx2X.js → CeSpp7tt.js} +1 -1
- package/build/client/_app/immutable/chunks/{B7EE0k5h.js → Ck8WbYGw.js} +1 -1
- package/build/client/_app/immutable/chunks/{CBHsRRno.js → Cmszw5Cl.js} +1 -1
- package/build/client/_app/immutable/chunks/{C8Hc9oGK.js → Cn3nFa7o.js} +1 -1
- package/build/client/_app/immutable/chunks/{C64iTk26.js → CuhKrOcY.js} +1 -1
- package/build/client/_app/immutable/chunks/{C6vzr1mx.js → Cuv5_ZSE.js} +1 -1
- package/build/client/_app/immutable/chunks/{BNk8MoDp.js → CynZAR7H.js} +1 -1
- package/build/client/_app/immutable/chunks/{RPcZpviV.js → D8dTirg7.js} +1 -1
- package/build/client/_app/immutable/chunks/{CGRgCg7L.js → DA4y-H0X.js} +1 -1
- package/build/client/_app/immutable/chunks/{BN-dANbA.js → DMV2jaHH.js} +1 -1
- package/build/client/_app/immutable/chunks/DOby5SdZ.js +1 -0
- package/build/client/_app/immutable/chunks/{CL5zNpIk.js → DerooFEc.js} +1 -1
- package/build/client/_app/immutable/chunks/{DDcQfCr1.js → Dg39zZi-.js} +1 -1
- package/build/client/_app/immutable/chunks/DgQ5Uiai.js +1 -0
- package/build/client/_app/immutable/chunks/{Df2trAOx.js → Djn_m5-z.js} +1 -1
- package/build/client/_app/immutable/chunks/DsOk_FuF.js +1 -0
- package/build/client/_app/immutable/chunks/{CrMrqXop.js → Dtn6zpNk.js} +1 -1
- package/build/client/_app/immutable/chunks/{DjFganl6.js → DwxD4VoU.js} +1 -1
- package/build/client/_app/immutable/chunks/{9WCvTzvP.js → F3KQyRed.js} +1 -1
- package/build/client/_app/immutable/chunks/{BqnH-2nD.js → G87VHMzq.js} +1 -1
- package/build/client/_app/immutable/chunks/{BdH5KtWM.js → PwIl2sky.js} +1 -1
- package/build/client/_app/immutable/chunks/{D6JFlLal.js → doKPUQyX.js} +1 -1
- package/build/client/_app/immutable/chunks/{BKZ1WW5F.js → j3oZsiEE.js} +1 -1
- package/build/client/_app/immutable/chunks/{B9NrHbKt.js → lpvBQYGo.js} +2 -2
- package/build/client/_app/immutable/chunks/{CKNA4rS6.js → m1m5l4tr.js} +1 -1
- package/build/client/_app/immutable/chunks/{DiQnLIBs.js → m84Yg0Sb.js} +1 -1
- package/build/client/_app/immutable/chunks/{Dw8vPuxF.js → q1NMS_J4.js} +1 -1
- package/build/client/_app/immutable/chunks/{CEvYmTSL.js → uIeuq4gO.js} +1 -1
- package/build/client/_app/immutable/entry/app.CN5rztzO.js +2 -0
- package/build/client/_app/immutable/entry/start.6PzYqVo7.js +1 -0
- package/build/client/_app/immutable/nodes/0.gU1lH8s5.js +1 -0
- package/build/client/_app/immutable/nodes/1.CC6OszXJ.js +1 -0
- package/build/client/_app/immutable/nodes/{2.BFZlqDci.js → 2.BOK9ed2v.js} +1 -1
- package/build/client/_app/immutable/nodes/3.QjIm_ISX.js +1 -0
- package/build/client/_app/version.json +1 -1
- package/build/server/chunks/0-DNDs86bn.js +9 -0
- package/build/server/chunks/{0-2tcE_VjV.js.map → 0-DNDs86bn.js.map} +1 -1
- package/build/server/chunks/1-D4qMBfFX.js +9 -0
- package/build/server/chunks/{1-DWcaSlgd.js.map → 1-D4qMBfFX.js.map} +1 -1
- package/build/server/chunks/{2-CfB7f5t8.js → 2-CPKgdtjG.js} +2 -2
- package/build/server/chunks/{2-CfB7f5t8.js.map → 2-CPKgdtjG.js.map} +1 -1
- package/build/server/chunks/{3-B8I1c8lQ.js → 3-C-ekC7zH.js} +4 -4
- package/build/server/chunks/{3-B8I1c8lQ.js.map → 3-C-ekC7zH.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-z7NjfvoB.js → _page.svelte-B3mDWNcy.js} +139 -47
- package/build/server/chunks/_page.svelte-B3mDWNcy.js.map +1 -0
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +5 -5
- package/build/server/manifest.js.map +1 -1
- package/dist/markdown-to-plan.js +33 -0
- package/package.json +1 -1
- package/build/client/_app/immutable/assets/0.BlaeNPJ-.css +0 -1
- package/build/client/_app/immutable/chunks/C3o2aqQ1.js +0 -1
- package/build/client/_app/immutable/chunks/CBSAILhF.js +0 -261
- package/build/client/_app/immutable/chunks/CC-X9pS2.js +0 -74
- package/build/client/_app/immutable/chunks/DAR7HuC9.js +0 -1
- package/build/client/_app/immutable/chunks/DJxCrHhv.js +0 -1
- package/build/client/_app/immutable/chunks/DbxUCpDB.js +0 -1
- package/build/client/_app/immutable/chunks/DxAe9_g6.js +0 -2
- package/build/client/_app/immutable/chunks/DzBCqAw8.js +0 -1
- package/build/client/_app/immutable/chunks/DzpZEw0h.js +0 -2
- package/build/client/_app/immutable/entry/app.DWGL5PtS.js +0 -2
- package/build/client/_app/immutable/entry/start.CaGwWzQK.js +0 -1
- package/build/client/_app/immutable/nodes/0.BPDSzXRH.js +0 -1
- package/build/client/_app/immutable/nodes/1.Dhe0l_pO.js +0 -1
- package/build/client/_app/immutable/nodes/3.C07rQAMW.js +0 -1
- package/build/server/chunks/0-2tcE_VjV.js +0 -9
- package/build/server/chunks/1-DWcaSlgd.js +0 -9
- package/build/server/chunks/_page.svelte-z7NjfvoB.js.map +0 -1
|
@@ -26,11 +26,11 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
|
|
|
26
26
|
|
|
27
27
|
const index = 3;
|
|
28
28
|
let component_cache;
|
|
29
|
-
const component = async () => component_cache ??= (await import('./_page.svelte-
|
|
29
|
+
const component = async () => component_cache ??= (await import('./_page.svelte-B3mDWNcy.js')).default;
|
|
30
30
|
const server_id = "src/routes/plan/[sessionId]/+page.server.ts";
|
|
31
|
-
const imports = ["_app/immutable/nodes/3.
|
|
32
|
-
const stylesheets = ["_app/immutable/assets/3.
|
|
31
|
+
const imports = ["_app/immutable/nodes/3.QjIm_ISX.js","_app/immutable/chunks/A-lKs3gv.js","_app/immutable/chunks/DsOk_FuF.js","_app/immutable/chunks/DOby5SdZ.js","_app/immutable/chunks/BHHdvoSH.js","_app/immutable/chunks/BxZQzzNN.js","_app/immutable/chunks/G87VHMzq.js","_app/immutable/chunks/Bs5gzZS4.js","_app/immutable/chunks/C9yhtPpT.js","_app/immutable/chunks/DgQ5Uiai.js"];
|
|
32
|
+
const stylesheets = ["_app/immutable/assets/3.OXdAvKD0.css"];
|
|
33
33
|
const fonts = [];
|
|
34
34
|
|
|
35
35
|
export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
|
|
36
|
-
//# sourceMappingURL=3-
|
|
36
|
+
//# sourceMappingURL=3-C-ekC7zH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"3-
|
|
1
|
+
{"version":3,"file":"3-C-ekC7zH.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/plan/_sessionId_/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/3.js"],"sourcesContent":["import { error } from \"@sveltejs/kit\";\nimport { g as getSession, a as getPlan, d as getFeedback, e as listVersions } from \"../../../../chunks/session-manager.js\";\nconst load = async ({ params }) => {\n const session = getSession(params.sessionId);\n if (!session) throw error(404, \"Session not found\");\n const plan = getPlan(params.sessionId);\n const feedback = getFeedback(params.sessionId);\n const versions = listVersions(params.sessionId);\n return {\n session,\n plan,\n feedback,\n versions,\n sessionId: params.sessionId\n };\n};\nexport {\n load\n};\n","import * as server from '../entries/pages/plan/_sessionId_/_page.server.ts.js';\n\nexport const index = 3;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/plan/_sessionId_/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/plan/[sessionId]/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/3.QjIm_ISX.js\",\"_app/immutable/chunks/A-lKs3gv.js\",\"_app/immutable/chunks/DsOk_FuF.js\",\"_app/immutable/chunks/DOby5SdZ.js\",\"_app/immutable/chunks/BHHdvoSH.js\",\"_app/immutable/chunks/BxZQzzNN.js\",\"_app/immutable/chunks/G87VHMzq.js\",\"_app/immutable/chunks/Bs5gzZS4.js\",\"_app/immutable/chunks/C9yhtPpT.js\",\"_app/immutable/chunks/DgQ5Uiai.js\"];\nexport const stylesheets = [\"_app/immutable/assets/3.OXdAvKD0.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;;;;;AAEA,MAAM,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK;AACnC,EAAE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;AAC9C,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC;AACrD,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AACxC,EAAE,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;AAChD,EAAE,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;AACjD,EAAE,OAAO;AACT,IAAI,OAAO;AACX,IAAI,IAAI;AACR,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,SAAS,EAAE,MAAM,CAAC;AACtB,GAAG;AACH,CAAC;;;;;;;ACbW,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAmD,CAAC,EAAE;AAEjH,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACpX,MAAC,WAAW,GAAG,CAAC,sCAAsC;AACtD,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a8 as ensure_array_like,
|
|
1
|
+
import { a8 as ensure_array_like, a9 as attr, aa as stringify, c as escape_html, a3 as derived, ac as attr_style, ab as attr_class, ad as clsx } from './index-CR1Ji1kt.js';
|
|
2
2
|
import { marked } from 'marked';
|
|
3
3
|
|
|
4
4
|
function html(value) {
|
|
@@ -79,12 +79,16 @@ function getFeedbackStore() {
|
|
|
79
79
|
get phaseStatuses() {
|
|
80
80
|
return currentFeedback?.phaseStatuses ?? {};
|
|
81
81
|
},
|
|
82
|
+
get subItemStatuses() {
|
|
83
|
+
return currentFeedback?.subItemStatuses ?? {};
|
|
84
|
+
},
|
|
82
85
|
get status() {
|
|
83
86
|
return currentFeedback?.status ?? "reviewing";
|
|
84
87
|
},
|
|
85
88
|
init(sid, planTitle, planVersion, existing) {
|
|
86
89
|
sessionId = sid;
|
|
87
90
|
if (existing) {
|
|
91
|
+
if (!existing.subItemStatuses) existing.subItemStatuses = {};
|
|
88
92
|
currentFeedback = existing;
|
|
89
93
|
} else {
|
|
90
94
|
currentFeedback = {
|
|
@@ -94,6 +98,7 @@ function getFeedbackStore() {
|
|
|
94
98
|
sessionId: sid,
|
|
95
99
|
status: "reviewing",
|
|
96
100
|
phaseStatuses: {},
|
|
101
|
+
subItemStatuses: {},
|
|
97
102
|
comments: [],
|
|
98
103
|
updatedAt: /* @__PURE__ */ (/* @__PURE__ */ new Date()).toISOString()
|
|
99
104
|
};
|
|
@@ -142,6 +147,26 @@ function getFeedbackStore() {
|
|
|
142
147
|
currentFeedback.updatedAt = /* @__PURE__ */ (/* @__PURE__ */ new Date()).toISOString();
|
|
143
148
|
debouncedSave();
|
|
144
149
|
},
|
|
150
|
+
setSubItemStatus(subItemId, phaseId, status, allSubItemIds) {
|
|
151
|
+
if (!currentFeedback) return;
|
|
152
|
+
currentFeedback.subItemStatuses = {
|
|
153
|
+
...currentFeedback.subItemStatuses,
|
|
154
|
+
[subItemId]: { subItemId, phaseId, status }
|
|
155
|
+
};
|
|
156
|
+
const statuses = allSubItemIds.map((id) => currentFeedback.subItemStatuses[id]?.status ?? "pending");
|
|
157
|
+
const allSame = statuses.every((s) => s === statuses[0]);
|
|
158
|
+
const aggregated = allSame ? statuses[0] : "pending";
|
|
159
|
+
currentFeedback.phaseStatuses = {
|
|
160
|
+
...currentFeedback.phaseStatuses,
|
|
161
|
+
[phaseId]: {
|
|
162
|
+
phaseId,
|
|
163
|
+
status: aggregated,
|
|
164
|
+
note: currentFeedback.phaseStatuses[phaseId]?.note
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
currentFeedback.updatedAt = /* @__PURE__ */ (/* @__PURE__ */ new Date()).toISOString();
|
|
168
|
+
debouncedSave();
|
|
169
|
+
},
|
|
145
170
|
async submitFeedback(status) {
|
|
146
171
|
if (!currentFeedback) return;
|
|
147
172
|
currentFeedback.status = status;
|
|
@@ -220,11 +245,12 @@ function PhaseTable($$renderer, $$props) {
|
|
|
220
245
|
}
|
|
221
246
|
function ChangeBlock($$renderer, $$props) {
|
|
222
247
|
$$renderer.component(($$renderer2) => {
|
|
223
|
-
let { change } = $$props;
|
|
224
|
-
$$renderer2.push(`<div class="mb-3"
|
|
248
|
+
let { change, commentLabel } = $$props;
|
|
249
|
+
$$renderer2.push(`<div class="mb-3" data-commentable=""${attr(
|
|
250
|
+
"data-comment-label",
|
|
225
251
|
// Reset any previous highlighting
|
|
226
|
-
change.componentName
|
|
227
|
-
)}</h4> <p class="mb-1 text-sm"><strong>File:</strong> <code class="bg-surface2 text-accent rounded px-1 py-0.5 font-mono text-xs">${escape_html(change.filePath)}</code></p> <p class="text-text-dim text-sm">${escape_html(change.description)}</p> `);
|
|
252
|
+
commentLabel ?? change.componentName
|
|
253
|
+
)}><h4 class="text-text-dim mb-1 text-sm font-medium">${escape_html(change.componentName)}</h4> <p class="mb-1 text-sm"><strong>File:</strong> <code class="bg-surface2 text-accent rounded px-1 py-0.5 font-mono text-xs">${escape_html(change.filePath)}</code></p> <p class="text-text-dim text-sm">${escape_html(change.description)}</p> `);
|
|
228
254
|
if (change.codeSnippet) {
|
|
229
255
|
$$renderer2.push("<!--[-->");
|
|
230
256
|
$$renderer2.push(`<pre class="bg-surface border-border mt-2 overflow-x-auto rounded-md border p-3 text-xs"><code${attr_class(clsx(change.codeLanguage ? `language-${change.codeLanguage}` : ""))}>${escape_html(change.codeSnippet)}</code></pre>`);
|
|
@@ -236,7 +262,7 @@ function ChangeBlock($$renderer, $$props) {
|
|
|
236
262
|
}
|
|
237
263
|
function MarkdownBlock($$renderer, $$props) {
|
|
238
264
|
$$renderer.component(($$renderer2) => {
|
|
239
|
-
let { content } = $$props;
|
|
265
|
+
let { content, sectionPrefix } = $$props;
|
|
240
266
|
let html$1 = derived(() => {
|
|
241
267
|
marked.setOptions({ gfm: true, breaks: false });
|
|
242
268
|
return marked.parse(content);
|
|
@@ -246,7 +272,7 @@ function MarkdownBlock($$renderer, $$props) {
|
|
|
246
272
|
}
|
|
247
273
|
function PhaseStatusControl($$renderer, $$props) {
|
|
248
274
|
$$renderer.component(($$renderer2) => {
|
|
249
|
-
let { status } = $$props;
|
|
275
|
+
let { status, onSetStatus } = $$props;
|
|
250
276
|
const states = [
|
|
251
277
|
{
|
|
252
278
|
value: "pending",
|
|
@@ -275,23 +301,77 @@ function PhaseStatusControl($$renderer, $$props) {
|
|
|
275
301
|
}
|
|
276
302
|
function PhaseCard($$renderer, $$props) {
|
|
277
303
|
$$renderer.component(($$renderer2) => {
|
|
278
|
-
let {
|
|
304
|
+
let {
|
|
305
|
+
phase,
|
|
306
|
+
phaseStatus,
|
|
307
|
+
onSetStatus,
|
|
308
|
+
subItemStatuses = {},
|
|
309
|
+
onSetSubItemStatus
|
|
310
|
+
} = $$props;
|
|
279
311
|
let expanded = true;
|
|
280
|
-
|
|
281
|
-
|
|
312
|
+
let phaseLabel = derived(() => `Phase ${phase.number}`);
|
|
313
|
+
$$renderer2.push(`<section${attr("data-section", `Phase ${stringify(phase.number)}: ${stringify(phase.name)}`)} data-commentable=""${attr("data-comment-label", `Phase ${stringify(phase.number)}: ${stringify(phase.name)}`)} class="mt-6"><div class="flex items-center gap-3"><button class="text-accent flex-1 cursor-pointer border-b border-border pb-2 text-left text-xl font-semibold"><span${attr_class("mr-2 inline-block transition-transform", void 0, { "rotate-90": expanded })}>▶</span> Phase ${escape_html(phase.number)}: ${escape_html(phase.name)}</button> `);
|
|
314
|
+
PhaseStatusControl($$renderer2, { status: phaseStatus?.status ?? "pending", onSetStatus });
|
|
282
315
|
$$renderer2.push(`<!----></div> `);
|
|
283
316
|
{
|
|
284
317
|
$$renderer2.push("<!--[-->");
|
|
285
318
|
$$renderer2.push(`<div class="mt-4 space-y-4">`);
|
|
286
|
-
|
|
287
|
-
|
|
319
|
+
if (phase.content) {
|
|
320
|
+
$$renderer2.push("<!--[-->");
|
|
321
|
+
MarkdownBlock($$renderer2, {
|
|
322
|
+
content: phase.content,
|
|
323
|
+
sectionPrefix: `${stringify(phaseLabel())} > Content`
|
|
324
|
+
});
|
|
325
|
+
} else if (phase.overview) {
|
|
326
|
+
$$renderer2.push("<!--[1-->");
|
|
327
|
+
MarkdownBlock($$renderer2, {
|
|
328
|
+
content: phase.overview,
|
|
329
|
+
sectionPrefix: `${stringify(phaseLabel())} > Overview`
|
|
330
|
+
});
|
|
331
|
+
} else {
|
|
332
|
+
$$renderer2.push("<!--[!-->");
|
|
333
|
+
}
|
|
334
|
+
$$renderer2.push(`<!--]--> `);
|
|
335
|
+
if (phase.subItems.length > 0) {
|
|
336
|
+
$$renderer2.push("<!--[-->");
|
|
337
|
+
$$renderer2.push(`<div class="mt-4 space-y-3"><!--[-->`);
|
|
338
|
+
const each_array = ensure_array_like(phase.subItems);
|
|
339
|
+
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
340
|
+
let subItem = each_array[$$index];
|
|
341
|
+
$$renderer2.push(`<div class="bg-surface border-border rounded-lg border p-4" data-commentable=""${attr("data-comment-label", `${stringify(phaseLabel())} > ${stringify(phase.number)}${stringify(subItem.letter)}. ${stringify(subItem.name)}`)}><div class="flex items-center justify-between gap-3"><h4 class="text-sm font-semibold">${escape_html(phase.number)}${escape_html(subItem.letter)}. ${escape_html(subItem.name)}</h4> `);
|
|
342
|
+
PhaseStatusControl($$renderer2, {
|
|
343
|
+
status: subItemStatuses[subItem.id]?.status ?? "pending",
|
|
344
|
+
onSetStatus: (status) => onSetSubItemStatus?.(subItem.id, status)
|
|
345
|
+
});
|
|
346
|
+
$$renderer2.push(`<!----></div> `);
|
|
347
|
+
if (subItem.content) {
|
|
348
|
+
$$renderer2.push("<!--[-->");
|
|
349
|
+
$$renderer2.push(`<div class="mt-2">`);
|
|
350
|
+
MarkdownBlock($$renderer2, {
|
|
351
|
+
content: subItem.content,
|
|
352
|
+
sectionPrefix: `${stringify(phaseLabel())} > ${stringify(subItem.name)}`
|
|
353
|
+
});
|
|
354
|
+
$$renderer2.push(`<!----></div>`);
|
|
355
|
+
} else {
|
|
356
|
+
$$renderer2.push("<!--[!-->");
|
|
357
|
+
}
|
|
358
|
+
$$renderer2.push(`<!--]--></div>`);
|
|
359
|
+
}
|
|
360
|
+
$$renderer2.push(`<!--]--></div>`);
|
|
361
|
+
} else {
|
|
362
|
+
$$renderer2.push("<!--[!-->");
|
|
363
|
+
}
|
|
364
|
+
$$renderer2.push(`<!--]--> `);
|
|
288
365
|
if (phase.changes.length > 0) {
|
|
289
366
|
$$renderer2.push("<!--[-->");
|
|
290
367
|
$$renderer2.push(`<h3 class="mt-4 mb-2 text-base font-semibold">Changes Required</h3> <!--[-->`);
|
|
291
|
-
const
|
|
292
|
-
for (let $$
|
|
293
|
-
let change =
|
|
294
|
-
ChangeBlock($$renderer2, {
|
|
368
|
+
const each_array_1 = ensure_array_like(phase.changes);
|
|
369
|
+
for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
|
|
370
|
+
let change = each_array_1[$$index_1];
|
|
371
|
+
ChangeBlock($$renderer2, {
|
|
372
|
+
change,
|
|
373
|
+
commentLabel: `${stringify(phaseLabel())} > Changes > ${stringify(change.componentName)}`
|
|
374
|
+
});
|
|
295
375
|
}
|
|
296
376
|
$$renderer2.push(`<!--]-->`);
|
|
297
377
|
} else {
|
|
@@ -301,10 +381,10 @@ function PhaseCard($$renderer, $$props) {
|
|
|
301
381
|
if (phase.successCriteria.automated.length > 0) {
|
|
302
382
|
$$renderer2.push("<!--[-->");
|
|
303
383
|
$$renderer2.push(`<h4 class="text-text-dim mt-3 mb-1 text-sm font-medium">Automated Verification</h4> <ul class="space-y-1.5 pl-1"><!--[-->`);
|
|
304
|
-
const
|
|
305
|
-
for (let $$
|
|
306
|
-
let criterion =
|
|
307
|
-
$$renderer2.push(`<li class="text-text-dim flex items-start gap-2 text-sm"><input type="checkbox" class="mt-0.5 accent-green"/> <span>`);
|
|
384
|
+
const each_array_2 = ensure_array_like(phase.successCriteria.automated);
|
|
385
|
+
for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {
|
|
386
|
+
let criterion = each_array_2[$$index_2];
|
|
387
|
+
$$renderer2.push(`<li class="text-text-dim flex items-start gap-2 text-sm" data-commentable=""${attr("data-comment-label", `${stringify(phaseLabel())} > Automated > ${stringify(criterion.text.slice(0, 40))}`)}><input type="checkbox" class="mt-0.5 accent-green"/> <span>`);
|
|
308
388
|
if (criterion.command) {
|
|
309
389
|
$$renderer2.push("<!--[-->");
|
|
310
390
|
$$renderer2.push(`<code class="bg-surface2 rounded px-1 py-0.5 font-mono text-xs">${escape_html(criterion.command)}</code> —`);
|
|
@@ -321,10 +401,10 @@ function PhaseCard($$renderer, $$props) {
|
|
|
321
401
|
if (phase.successCriteria.manual.length > 0) {
|
|
322
402
|
$$renderer2.push("<!--[-->");
|
|
323
403
|
$$renderer2.push(`<h4 class="text-text-dim mt-3 mb-1 text-sm font-medium">Manual Verification</h4> <ul class="space-y-1.5 pl-1"><!--[-->`);
|
|
324
|
-
const
|
|
325
|
-
for (let $$
|
|
326
|
-
let criterion =
|
|
327
|
-
$$renderer2.push(`<li class="text-text-dim flex items-start gap-2 text-sm"><input type="checkbox" class="mt-0.5 accent-green"/> <span>${escape_html(criterion.text)}</span></li>`);
|
|
404
|
+
const each_array_3 = ensure_array_like(phase.successCriteria.manual);
|
|
405
|
+
for (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {
|
|
406
|
+
let criterion = each_array_3[$$index_3];
|
|
407
|
+
$$renderer2.push(`<li class="text-text-dim flex items-start gap-2 text-sm" data-commentable=""${attr("data-comment-label", `${stringify(phaseLabel())} > Manual > ${stringify(criterion.text.slice(0, 40))}`)}><input type="checkbox" class="mt-0.5 accent-green"/> <span>${escape_html(criterion.text)}</span></li>`);
|
|
328
408
|
}
|
|
329
409
|
$$renderer2.push(`<!--]--></ul>`);
|
|
330
410
|
} else {
|
|
@@ -432,10 +512,10 @@ function FeedbackPanel($$renderer, $$props) {
|
|
|
432
512
|
comments
|
|
433
513
|
} = $$props;
|
|
434
514
|
let unresolvedCount = derived(() => comments.filter((c) => !c.resolved).length);
|
|
435
|
-
$$renderer2.push(`<aside data-feedback-panel="" class="fixed top-2 right-4 z-40 flex w-80 max-h-[calc(100vh-1rem)] flex-col rounded-xl bg-[#0f172a] shadow-xl shadow-black/35"><header class="border-b border-white/10 px-4 py-3"><h3 class="flex items-center gap-2 text-base font-semibold text-slate-200">Review <span class="bg-accent/15 text-accent inline-block rounded-full px-2 py-0.5 text-xs font-semibold">${escape_html(unresolvedCount())}</span></h3> <p class="mt-1 text-xs text-slate-400">
|
|
515
|
+
$$renderer2.push(`<aside data-feedback-panel="" class="fixed top-2 right-4 z-40 flex w-80 max-h-[calc(100vh-1rem)] flex-col rounded-xl bg-[#0f172a] shadow-xl shadow-black/35"><header class="border-b border-white/10 px-4 py-3"><h3 class="flex items-center gap-2 text-base font-semibold text-slate-200">Review <span class="bg-accent/15 text-accent inline-block rounded-full px-2 py-0.5 text-xs font-semibold">${escape_html(unresolvedCount())}</span></h3> <p class="mt-1 text-xs text-slate-400">Hover over plan elements to comment. Click Submit when done.</p> <button class="mt-2 w-full cursor-pointer rounded-lg bg-blue-600 px-3 py-1.5 text-xs font-medium text-white hover:bg-blue-500">Add comment</button></header> <div class="flex-1 space-y-2 overflow-y-auto p-3">`);
|
|
436
516
|
if (comments.length === 0) {
|
|
437
517
|
$$renderer2.push("<!--[-->");
|
|
438
|
-
$$renderer2.push(`<div class="rounded-lg border border-dashed border-slate-600 p-3 text-sm text-slate-400">No comments yet.
|
|
518
|
+
$$renderer2.push(`<div class="rounded-lg border border-dashed border-slate-600 p-3 text-sm text-slate-400">No comments yet. Hover and click on any plan element to add a comment.</div>`);
|
|
439
519
|
} else {
|
|
440
520
|
$$renderer2.push("<!--[!-->");
|
|
441
521
|
$$renderer2.push(`<!--[-->`);
|
|
@@ -451,7 +531,7 @@ function FeedbackPanel($$renderer, $$props) {
|
|
|
451
531
|
$$renderer2.push(`<!--]--></div></aside>`);
|
|
452
532
|
});
|
|
453
533
|
}
|
|
454
|
-
function
|
|
534
|
+
function HoverToolbar($$renderer, $$props) {
|
|
455
535
|
$$renderer.component(($$renderer2) => {
|
|
456
536
|
{
|
|
457
537
|
$$renderer2.push("<!--[!-->");
|
|
@@ -487,7 +567,9 @@ function _page($$renderer, $$props) {
|
|
|
487
567
|
async function handleSelectVersion(version) {
|
|
488
568
|
if (!/* ignore */
|
|
489
569
|
/* ignore */
|
|
570
|
+
// Track the version we initialized feedback for
|
|
490
571
|
// Initialize stores from server data
|
|
572
|
+
// Reset feedback when plan version changes via SSE (new version = fresh review)
|
|
491
573
|
plan()) return;
|
|
492
574
|
if (version === plan().meta.version) return;
|
|
493
575
|
try {
|
|
@@ -522,21 +604,21 @@ function _page($$renderer, $$props) {
|
|
|
522
604
|
{
|
|
523
605
|
$$renderer2.push("<!--[!-->");
|
|
524
606
|
}
|
|
525
|
-
$$renderer2.push(`<!--]--> <section data-section="Overview"><h2 class="text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold">Overview</h2> `);
|
|
526
|
-
MarkdownBlock($$renderer2, { content: plan().overview });
|
|
607
|
+
$$renderer2.push(`<!--]--> <section data-section="Overview" data-commentable="" data-comment-label="Overview"><h2 class="text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold">Overview</h2> `);
|
|
608
|
+
MarkdownBlock($$renderer2, { content: plan().overview, sectionPrefix: "Overview" });
|
|
527
609
|
$$renderer2.push(`<!----></section> <!--[-->`);
|
|
528
610
|
const each_array = ensure_array_like(plan().diagrams);
|
|
529
611
|
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
530
612
|
let diagram = each_array[$$index];
|
|
531
|
-
$$renderer2.push(`<section data-section="Diagrams"><h3 class="mt-6 mb-3 text-lg font-semibold">${escape_html(diagram.title)}</h3> `);
|
|
613
|
+
$$renderer2.push(`<section data-section="Diagrams" data-commentable=""${attr("data-comment-label", `Diagram: ${stringify(diagram.title)}`)}><h3 class="mt-6 mb-3 text-lg font-semibold">${escape_html(diagram.title)}</h3> `);
|
|
532
614
|
MermaidDiagram($$renderer2, { code: diagram.mermaidCode, id: diagram.id });
|
|
533
615
|
$$renderer2.push(`<!----></section>`);
|
|
534
616
|
}
|
|
535
617
|
$$renderer2.push(`<!--]--> `);
|
|
536
618
|
if (plan().currentState) {
|
|
537
619
|
$$renderer2.push("<!--[-->");
|
|
538
|
-
$$renderer2.push(`<section data-section="Current State"><h2 class="text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold">Current State</h2> `);
|
|
539
|
-
MarkdownBlock($$renderer2, { content: plan().currentState });
|
|
620
|
+
$$renderer2.push(`<section data-section="Current State" data-commentable="" data-comment-label="Current State"><h2 class="text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold">Current State</h2> `);
|
|
621
|
+
MarkdownBlock($$renderer2, { content: plan().currentState, sectionPrefix: "Current State" });
|
|
540
622
|
$$renderer2.push(`<!----> `);
|
|
541
623
|
if (plan().keyDiscoveries.length > 0) {
|
|
542
624
|
$$renderer2.push("<!--[-->");
|
|
@@ -544,7 +626,7 @@ function _page($$renderer, $$props) {
|
|
|
544
626
|
const each_array_1 = ensure_array_like(plan().keyDiscoveries);
|
|
545
627
|
for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
|
|
546
628
|
let discovery = each_array_1[$$index_1];
|
|
547
|
-
$$renderer2.push(`<li>${escape_html(discovery.text)} `);
|
|
629
|
+
$$renderer2.push(`<li data-commentable=""${attr("data-comment-label", `Key Discovery: ${stringify(discovery.text.slice(0, 50))}`)}>${escape_html(discovery.text)} `);
|
|
548
630
|
if (discovery.codeRef) {
|
|
549
631
|
$$renderer2.push("<!--[-->");
|
|
550
632
|
$$renderer2.push(`<code class="bg-surface2 text-accent rounded px-1 py-0.5 font-mono text-xs">${escape_html(discovery.codeRef)}</code>`);
|
|
@@ -564,11 +646,11 @@ function _page($$renderer, $$props) {
|
|
|
564
646
|
$$renderer2.push(`<!--]--> `);
|
|
565
647
|
if (plan().scopeExclusions.length > 0) {
|
|
566
648
|
$$renderer2.push("<!--[-->");
|
|
567
|
-
$$renderer2.push(`<section data-section="Scope Exclusions"><h2 class="text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold">What We're NOT Doing</h2> <div class="grid grid-cols-2 gap-3"><!--[-->`);
|
|
649
|
+
$$renderer2.push(`<section data-section="Scope Exclusions" data-commentable="" data-comment-label="Scope Exclusions"><h2 class="text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold">What We're NOT Doing</h2> <div class="grid grid-cols-2 gap-3"><!--[-->`);
|
|
568
650
|
const each_array_2 = ensure_array_like(plan().scopeExclusions);
|
|
569
651
|
for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {
|
|
570
652
|
let exclusion = each_array_2[$$index_2];
|
|
571
|
-
$$renderer2.push(`<div class="bg-surface border-border rounded-lg border border-l-3 border-l-red p-4"><div class="text-red text-xs font-semibold uppercase tracking-wide">Out of scope</div> <h4 class="mt-1 mb-1 text-sm font-semibold">${escape_html(exclusion.title)}</h4> <p class="text-text-dim text-xs">${escape_html(exclusion.reason)}</p></div>`);
|
|
653
|
+
$$renderer2.push(`<div class="bg-surface border-border rounded-lg border border-l-3 border-l-red p-4" data-commentable=""${attr("data-comment-label", `Scope > ${stringify(exclusion.title)}`)}><div class="text-red text-xs font-semibold uppercase tracking-wide">Out of scope</div> <h4 class="mt-1 mb-1 text-sm font-semibold">${escape_html(exclusion.title)}</h4> <p class="text-text-dim text-xs">${escape_html(exclusion.reason)}</p></div>`);
|
|
572
654
|
}
|
|
573
655
|
$$renderer2.push(`<!--]--></div></section>`);
|
|
574
656
|
} else {
|
|
@@ -577,8 +659,11 @@ function _page($$renderer, $$props) {
|
|
|
577
659
|
$$renderer2.push(`<!--]--> `);
|
|
578
660
|
if (plan().implementationApproach) {
|
|
579
661
|
$$renderer2.push("<!--[-->");
|
|
580
|
-
$$renderer2.push(`<section data-section="Implementation Approach"><h2 class="text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold">Implementation Approach</h2> `);
|
|
581
|
-
MarkdownBlock($$renderer2, {
|
|
662
|
+
$$renderer2.push(`<section data-section="Implementation Approach" data-commentable="" data-comment-label="Implementation Approach"><h2 class="text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold">Implementation Approach</h2> `);
|
|
663
|
+
MarkdownBlock($$renderer2, {
|
|
664
|
+
content: plan().implementationApproach,
|
|
665
|
+
sectionPrefix: "Implementation Approach"
|
|
666
|
+
});
|
|
582
667
|
$$renderer2.push(`<!----></section>`);
|
|
583
668
|
} else {
|
|
584
669
|
$$renderer2.push("<!--[!-->");
|
|
@@ -594,20 +679,23 @@ function _page($$renderer, $$props) {
|
|
|
594
679
|
let phase = each_array_3[$$index_3];
|
|
595
680
|
PhaseCard($$renderer2, {
|
|
596
681
|
phase,
|
|
597
|
-
phaseStatus: feedbackStore.phaseStatuses[phase.id]
|
|
682
|
+
phaseStatus: feedbackStore.phaseStatuses[phase.id],
|
|
683
|
+
onSetStatus: (status, note) => feedbackStore.setPhaseStatus(phase.id, status, note),
|
|
684
|
+
subItemStatuses: feedbackStore.subItemStatuses,
|
|
685
|
+
onSetSubItemStatus: (subItemId, status) => feedbackStore.setSubItemStatus(subItemId, phase.id, status, phase.subItems.map((si) => si.id))
|
|
598
686
|
});
|
|
599
687
|
}
|
|
600
688
|
$$renderer2.push(`<!--]--> `);
|
|
601
689
|
if (plan().testingStrategy) {
|
|
602
690
|
$$renderer2.push("<!--[-->");
|
|
603
|
-
$$renderer2.push(`<section data-section="Testing Strategy"><h2 class="text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold">Testing Strategy</h2> `);
|
|
691
|
+
$$renderer2.push(`<section data-section="Testing Strategy" data-commentable="" data-comment-label="Testing Strategy"><h2 class="text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold">Testing Strategy</h2> `);
|
|
604
692
|
if (plan().testingStrategy.unit.length > 0) {
|
|
605
693
|
$$renderer2.push("<!--[-->");
|
|
606
694
|
$$renderer2.push(`<h3 class="mt-4 mb-2 text-base font-semibold">Unit Tests</h3> <ul class="text-text-dim space-y-1 pl-5 text-sm"><!--[-->`);
|
|
607
695
|
const each_array_4 = ensure_array_like(plan().testingStrategy.unit);
|
|
608
696
|
for (let $$index_4 = 0, $$length = each_array_4.length; $$index_4 < $$length; $$index_4++) {
|
|
609
697
|
let item = each_array_4[$$index_4];
|
|
610
|
-
$$renderer2.push(`<li>${escape_html(item)}</li>`);
|
|
698
|
+
$$renderer2.push(`<li data-commentable=""${attr("data-comment-label", `Testing > Unit > ${stringify(item.slice(0, 40))}`)}>${escape_html(item)}</li>`);
|
|
611
699
|
}
|
|
612
700
|
$$renderer2.push(`<!--]--></ul>`);
|
|
613
701
|
} else {
|
|
@@ -620,7 +708,7 @@ function _page($$renderer, $$props) {
|
|
|
620
708
|
const each_array_5 = ensure_array_like(plan().testingStrategy.integration);
|
|
621
709
|
for (let $$index_5 = 0, $$length = each_array_5.length; $$index_5 < $$length; $$index_5++) {
|
|
622
710
|
let item = each_array_5[$$index_5];
|
|
623
|
-
$$renderer2.push(`<li>${escape_html(item)}</li>`);
|
|
711
|
+
$$renderer2.push(`<li data-commentable=""${attr("data-comment-label", `Testing > Integration > ${stringify(item.slice(0, 40))}`)}>${escape_html(item)}</li>`);
|
|
624
712
|
}
|
|
625
713
|
$$renderer2.push(`<!--]--></ul>`);
|
|
626
714
|
} else {
|
|
@@ -633,7 +721,7 @@ function _page($$renderer, $$props) {
|
|
|
633
721
|
const each_array_6 = ensure_array_like(plan().testingStrategy.manual);
|
|
634
722
|
for (let $$index_6 = 0, $$length = each_array_6.length; $$index_6 < $$length; $$index_6++) {
|
|
635
723
|
let item = each_array_6[$$index_6];
|
|
636
|
-
$$renderer2.push(`<li>${escape_html(item)}</li>`);
|
|
724
|
+
$$renderer2.push(`<li data-commentable=""${attr("data-comment-label", `Testing > Manual > ${stringify(item.slice(0, 40))}`)}>${escape_html(item)}</li>`);
|
|
637
725
|
}
|
|
638
726
|
$$renderer2.push(`<!--]--></ul>`);
|
|
639
727
|
} else {
|
|
@@ -646,23 +734,27 @@ function _page($$renderer, $$props) {
|
|
|
646
734
|
$$renderer2.push(`<!--]--> `);
|
|
647
735
|
if (plan().references.length > 0) {
|
|
648
736
|
$$renderer2.push("<!--[-->");
|
|
649
|
-
$$renderer2.push(`<section data-section="References"><h2 class="text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold">References</h2> <ul class="text-text-dim space-y-1 pl-5 text-sm"><!--[-->`);
|
|
737
|
+
$$renderer2.push(`<section data-section="References" data-commentable="" data-comment-label="References"><h2 class="text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold">References</h2> <ul class="text-text-dim space-y-1 pl-5 text-sm"><!--[-->`);
|
|
650
738
|
const each_array_7 = ensure_array_like(plan().references);
|
|
651
739
|
for (let $$index_7 = 0, $$length = each_array_7.length; $$index_7 < $$length; $$index_7++) {
|
|
652
740
|
let ref = each_array_7[$$index_7];
|
|
653
|
-
$$renderer2.push(`<li>${escape_html(ref)}</li>`);
|
|
741
|
+
$$renderer2.push(`<li data-commentable=""${attr("data-comment-label", `Reference: ${stringify(ref.slice(0, 50))}`)}>${escape_html(ref)}</li>`);
|
|
654
742
|
}
|
|
655
743
|
$$renderer2.push(`<!--]--></ul></section>`);
|
|
656
744
|
} else {
|
|
657
745
|
$$renderer2.push("<!--[!-->");
|
|
658
746
|
}
|
|
659
747
|
$$renderer2.push(`<!--]--></div> `);
|
|
748
|
+
{
|
|
749
|
+
$$renderer2.push("<!--[!-->");
|
|
750
|
+
}
|
|
751
|
+
$$renderer2.push(`<!--]--> `);
|
|
752
|
+
HoverToolbar($$renderer2);
|
|
753
|
+
$$renderer2.push(`<!----> `);
|
|
660
754
|
FeedbackPanel($$renderer2, {
|
|
661
755
|
comments: feedbackStore.comments
|
|
662
756
|
});
|
|
663
757
|
$$renderer2.push(`<!----> `);
|
|
664
|
-
SelectionToolbar($$renderer2);
|
|
665
|
-
$$renderer2.push(`<!----> `);
|
|
666
758
|
ApprovalBar($$renderer2, {
|
|
667
759
|
status: feedbackStore.status,
|
|
668
760
|
commentCount: feedbackStore.comments.filter((c) => !c.resolved).length
|
|
@@ -677,4 +769,4 @@ function _page($$renderer, $$props) {
|
|
|
677
769
|
}
|
|
678
770
|
|
|
679
771
|
export { _page as default };
|
|
680
|
-
//# sourceMappingURL=_page.svelte-
|
|
772
|
+
//# sourceMappingURL=_page.svelte-B3mDWNcy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_page.svelte-B3mDWNcy.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/plan/_sessionId_/_page.svelte.js"],"sourcesContent":["import { e as escape_html, a2 as attr_class, a1 as stringify, $ as ensure_array_like, a0 as attr, a3 as clsx, _ as derived, a4 as attr_style } from \"../../../../chunks/index.js\";\nimport \"clsx\";\nimport { marked } from \"marked\";\nfunction html(value) {\n var html2 = String(value ?? \"\");\n var open = \"<!---->\";\n return open + html2 + \"<!---->\";\n}\nlet currentPlan = null;\nlet eventSource = null;\nlet reconnectTimer = null;\nfunction getPlanStore() {\n return {\n get plan() {\n return currentPlan;\n },\n set(plan) {\n currentPlan = plan;\n },\n connectSSE(sessionId2) {\n this.disconnectSSE();\n const connect = () => {\n eventSource = new EventSource(`/api/sse/${sessionId2}`);\n eventSource.addEventListener(\"plan-updated\", (event) => {\n try {\n const plan = JSON.parse(event.data);\n currentPlan = plan;\n } catch {\n }\n });\n eventSource.onerror = () => {\n eventSource?.close();\n reconnectTimer = setTimeout(connect, 3e3);\n };\n };\n connect();\n },\n disconnectSSE() {\n if (reconnectTimer) {\n clearTimeout(reconnectTimer);\n reconnectTimer = null;\n }\n if (eventSource) {\n eventSource.close();\n eventSource = null;\n }\n }\n };\n}\nlet currentFeedback = null;\nlet saveTimer = null;\nlet sessionId = \"\";\nfunction genId() {\n return \"fb-\" + Date.now().toString(36) + Math.random().toString(36).slice(2, 6);\n}\nasync function persistFeedback() {\n if (!currentFeedback || !sessionId) return;\n try {\n await fetch(`/api/sessions/${sessionId}/feedback`, {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(currentFeedback)\n });\n } catch {\n }\n}\nfunction debouncedSave() {\n if (saveTimer) clearTimeout(saveTimer);\n saveTimer = setTimeout(persistFeedback, 500);\n}\nfunction getFeedbackStore() {\n return {\n get feedback() {\n return currentFeedback;\n },\n get comments() {\n return currentFeedback?.comments ?? [];\n },\n get phaseStatuses() {\n return currentFeedback?.phaseStatuses ?? {};\n },\n get subItemStatuses() {\n return currentFeedback?.subItemStatuses ?? {};\n },\n get status() {\n return currentFeedback?.status ?? \"reviewing\";\n },\n init(sid, planTitle, planVersion, existing) {\n sessionId = sid;\n if (existing) {\n if (!existing.subItemStatuses) existing.subItemStatuses = {};\n currentFeedback = existing;\n } else {\n currentFeedback = {\n schemaVersion: 1,\n planTitle,\n planVersion,\n sessionId: sid,\n status: \"reviewing\",\n phaseStatuses: {},\n subItemStatuses: {},\n comments: [],\n updatedAt: /* @__PURE__ */ (/* @__PURE__ */ new Date()).toISOString()\n };\n }\n },\n addComment(section, quote, comment, phaseId) {\n if (!currentFeedback) return;\n const newComment = {\n id: genId(),\n section,\n quote,\n comment,\n phaseId,\n resolved: false,\n createdAt: /* @__PURE__ */ (/* @__PURE__ */ new Date()).toISOString()\n };\n currentFeedback.comments = [...currentFeedback.comments, newComment];\n currentFeedback.updatedAt = /* @__PURE__ */ (/* @__PURE__ */ new Date()).toISOString();\n debouncedSave();\n return newComment.id;\n },\n updateComment(id, comment) {\n if (!currentFeedback) return;\n currentFeedback.comments = currentFeedback.comments.map((c) => c.id === id ? { ...c, comment } : c);\n currentFeedback.updatedAt = /* @__PURE__ */ (/* @__PURE__ */ new Date()).toISOString();\n debouncedSave();\n },\n resolveComment(id) {\n if (!currentFeedback) return;\n currentFeedback.comments = currentFeedback.comments.map((c) => c.id === id ? { ...c, resolved: !c.resolved } : c);\n currentFeedback.updatedAt = /* @__PURE__ */ (/* @__PURE__ */ new Date()).toISOString();\n debouncedSave();\n },\n deleteComment(id) {\n if (!currentFeedback) return;\n currentFeedback.comments = currentFeedback.comments.filter((c) => c.id !== id);\n currentFeedback.updatedAt = /* @__PURE__ */ (/* @__PURE__ */ new Date()).toISOString();\n debouncedSave();\n },\n setPhaseStatus(phaseId, status, note) {\n if (!currentFeedback) return;\n currentFeedback.phaseStatuses = {\n ...currentFeedback.phaseStatuses,\n [phaseId]: { phaseId, status, note }\n };\n currentFeedback.updatedAt = /* @__PURE__ */ (/* @__PURE__ */ new Date()).toISOString();\n debouncedSave();\n },\n setSubItemStatus(subItemId, phaseId, status, allSubItemIds) {\n if (!currentFeedback) return;\n currentFeedback.subItemStatuses = {\n ...currentFeedback.subItemStatuses,\n [subItemId]: { subItemId, phaseId, status }\n };\n const statuses = allSubItemIds.map((id) => currentFeedback.subItemStatuses[id]?.status ?? \"pending\");\n const allSame = statuses.every((s) => s === statuses[0]);\n const aggregated = allSame ? statuses[0] : \"pending\";\n currentFeedback.phaseStatuses = {\n ...currentFeedback.phaseStatuses,\n [phaseId]: {\n phaseId,\n status: aggregated,\n note: currentFeedback.phaseStatuses[phaseId]?.note\n }\n };\n currentFeedback.updatedAt = /* @__PURE__ */ (/* @__PURE__ */ new Date()).toISOString();\n debouncedSave();\n },\n async submitFeedback(status) {\n if (!currentFeedback) return;\n currentFeedback.status = status;\n currentFeedback.submittedAt = /* @__PURE__ */ (/* @__PURE__ */ new Date()).toISOString();\n currentFeedback.updatedAt = /* @__PURE__ */ (/* @__PURE__ */ new Date()).toISOString();\n if (saveTimer) clearTimeout(saveTimer);\n await persistFeedback();\n if (status === \"approved\") {\n await fetch(`/api/sessions/${sessionId}/approve`, { method: \"POST\" });\n }\n }\n };\n}\nfunction PlanHeader($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { meta, version, status } = $$props;\n function statusColor(s) {\n switch (s) {\n case \"approved\":\n return \"bg-green/15 text-green\";\n case \"needs-work\":\n return \"bg-orange/15 text-orange\";\n default:\n return \"bg-accent/15 text-accent\";\n }\n }\n $$renderer2.push(`<header class=\"mb-6\"><div class=\"flex items-start justify-between\"><div><h1 class=\"text-2xl font-bold\">${escape_html(meta.title)}</h1> <p class=\"text-text-dim mt-1 text-sm\">${escape_html(meta.date)} `);\n if (meta.ticketRef) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`· <span class=\"text-accent\">${escape_html(meta.ticketRef)}</span>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></p></div> <div class=\"flex items-center gap-2\"><span class=\"bg-surface2 rounded-full px-3 py-1 text-xs font-semibold text-text-dim\">v${escape_html(version)}</span> <span${attr_class(`rounded-full px-3 py-1 text-xs font-semibold ${stringify(statusColor(status))}`)}>${escape_html(status)}</span></div></div> `);\n if (meta.markdownPath) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<p class=\"text-text-dim mt-2 text-xs\">Source: <code class=\"bg-surface2 text-accent rounded px-1 py-0.5 font-mono text-xs\">${escape_html(meta.markdownPath)}</code></p>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></header>`);\n });\n}\nfunction PhaseTable($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { phases, phaseStatuses } = $$props;\n function badgeClass(status) {\n switch (status) {\n case \"approved\":\n return \"bg-green/15 text-green\";\n case \"needs-work\":\n return \"bg-orange/15 text-orange\";\n default:\n return \"bg-accent/15 text-accent\";\n }\n }\n function badgeLabel(status) {\n switch (status) {\n case \"approved\":\n return \"Approved\";\n case \"needs-work\":\n return \"Needs Work\";\n default:\n return \"Pending\";\n }\n }\n $$renderer2.push(`<div class=\"overflow-x-auto\"><table class=\"w-full text-sm\"><thead><tr><th class=\"bg-surface2 border-b border-border px-3 py-2 text-left font-semibold\">Phase</th><th class=\"bg-surface2 border-b border-border px-3 py-2 text-left font-semibold\">Focus</th><th class=\"bg-surface2 border-b border-border px-3 py-2 text-left font-semibold w-32\">Status</th></tr></thead><tbody><!--[-->`);\n const each_array = ensure_array_like(phases);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let phase = each_array[$$index];\n const status = phaseStatuses[phase.id]?.status ?? \"pending\";\n $$renderer2.push(`<tr${attr_class(\"hover:bg-surface transition-colors\", void 0, { \"opacity-50\": status === \"approved\" })}><td class=\"border-b border-border px-3 py-2 font-medium\">Phase ${escape_html(phase.number)}: ${escape_html(phase.name)}</td><td class=\"text-text-dim border-b border-border px-3 py-2\">${escape_html(phase.overview.length > 100 ? phase.overview.slice(0, 100) + \"...\" : phase.overview)}</td><td class=\"border-b border-border px-3 py-2\"><button${attr_class(`inline-block cursor-pointer rounded-full px-2 py-0.5 text-xs font-semibold ${stringify(badgeClass(status))}`)}>${escape_html(badgeLabel(status))}</button></td></tr>`);\n }\n $$renderer2.push(`<!--]--></tbody></table></div>`);\n });\n}\nfunction ChangeBlock($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { change, commentLabel } = $$props;\n $$renderer2.push(`<div class=\"mb-3\" data-commentable=\"\"${attr(\n \"data-comment-label\",\n // Reset any previous highlighting\n commentLabel ?? change.componentName\n )}><h4 class=\"text-text-dim mb-1 text-sm font-medium\">${escape_html(change.componentName)}</h4> <p class=\"mb-1 text-sm\"><strong>File:</strong> <code class=\"bg-surface2 text-accent rounded px-1 py-0.5 font-mono text-xs\">${escape_html(change.filePath)}</code></p> <p class=\"text-text-dim text-sm\">${escape_html(change.description)}</p> `);\n if (change.codeSnippet) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<pre class=\"bg-surface border-border mt-2 overflow-x-auto rounded-md border p-3 text-xs\"><code${attr_class(clsx(change.codeLanguage ? `language-${change.codeLanguage}` : \"\"))}>${escape_html(change.codeSnippet)}</code></pre>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></div>`);\n });\n}\nfunction MarkdownBlock($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { content, sectionPrefix } = $$props;\n let html$1 = derived(() => {\n marked.setOptions({ gfm: true, breaks: false });\n return marked.parse(content);\n });\n $$renderer2.push(`<div class=\"markdown-content text-text-dim text-sm leading-relaxed svelte-19d3ioy\">${html(html$1())}</div>`);\n });\n}\nfunction PhaseStatusControl($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { status, onSetStatus } = $$props;\n const states = [\n {\n value: \"pending\",\n label: \"Pending\",\n color: \"bg-accent/15 text-accent border-accent/30\"\n },\n {\n value: \"approved\",\n label: \"Approved\",\n color: \"bg-green/15 text-green border-green/30\"\n },\n {\n value: \"needs-work\",\n label: \"Needs Work\",\n color: \"bg-orange/15 text-orange border-orange/30\"\n }\n ];\n $$renderer2.push(`<div class=\"flex gap-1\"><!--[-->`);\n const each_array = ensure_array_like(states);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let s = each_array[$$index];\n $$renderer2.push(`<button${attr_class(`cursor-pointer rounded-full border px-2 py-0.5 text-xs font-medium transition-all ${stringify(status === s.value ? s.color : \"border-transparent text-text-dim hover:bg-surface2\")}`)}>${escape_html(s.label)}</button>`);\n }\n $$renderer2.push(`<!--]--></div>`);\n });\n}\nfunction PhaseCard($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let {\n phase,\n phaseStatus,\n onSetStatus,\n subItemStatuses = {},\n onSetSubItemStatus\n } = $$props;\n let expanded = true;\n let phaseLabel = derived(() => `Phase ${phase.number}`);\n $$renderer2.push(`<section${attr(\"data-section\", `Phase ${stringify(phase.number)}: ${stringify(phase.name)}`)} data-commentable=\"\"${attr(\"data-comment-label\", `Phase ${stringify(phase.number)}: ${stringify(phase.name)}`)} class=\"mt-6\"><div class=\"flex items-center gap-3\"><button class=\"text-accent flex-1 cursor-pointer border-b border-border pb-2 text-left text-xl font-semibold\"><span${attr_class(\"mr-2 inline-block transition-transform\", void 0, { \"rotate-90\": expanded })}>▶</span> Phase ${escape_html(phase.number)}: ${escape_html(phase.name)}</button> `);\n PhaseStatusControl($$renderer2, { status: phaseStatus?.status ?? \"pending\", onSetStatus });\n $$renderer2.push(`<!----></div> `);\n {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"mt-4 space-y-4\">`);\n if (phase.content) {\n $$renderer2.push(\"<!--[-->\");\n MarkdownBlock($$renderer2, {\n content: phase.content,\n sectionPrefix: `${stringify(phaseLabel())} > Content`\n });\n } else if (phase.overview) {\n $$renderer2.push(\"<!--[1-->\");\n MarkdownBlock($$renderer2, {\n content: phase.overview,\n sectionPrefix: `${stringify(phaseLabel())} > Overview`\n });\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (phase.subItems.length > 0) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"mt-4 space-y-3\"><!--[-->`);\n const each_array = ensure_array_like(phase.subItems);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let subItem = each_array[$$index];\n $$renderer2.push(`<div class=\"bg-surface border-border rounded-lg border p-4\" data-commentable=\"\"${attr(\"data-comment-label\", `${stringify(phaseLabel())} > ${stringify(phase.number)}${stringify(subItem.letter)}. ${stringify(subItem.name)}`)}><div class=\"flex items-center justify-between gap-3\"><h4 class=\"text-sm font-semibold\">${escape_html(phase.number)}${escape_html(subItem.letter)}. ${escape_html(subItem.name)}</h4> `);\n PhaseStatusControl($$renderer2, {\n status: subItemStatuses[subItem.id]?.status ?? \"pending\",\n onSetStatus: (status) => onSetSubItemStatus?.(subItem.id, status)\n });\n $$renderer2.push(`<!----></div> `);\n if (subItem.content) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"mt-2\">`);\n MarkdownBlock($$renderer2, {\n content: subItem.content,\n sectionPrefix: `${stringify(phaseLabel())} > ${stringify(subItem.name)}`\n });\n $$renderer2.push(`<!----></div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></div>`);\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (phase.changes.length > 0) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<h3 class=\"mt-4 mb-2 text-base font-semibold\">Changes Required</h3> <!--[-->`);\n const each_array_1 = ensure_array_like(phase.changes);\n for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n let change = each_array_1[$$index_1];\n ChangeBlock($$renderer2, {\n change,\n commentLabel: `${stringify(phaseLabel())} > Changes > ${stringify(change.componentName)}`\n });\n }\n $$renderer2.push(`<!--]-->`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> <div class=\"mt-4\"><h3 class=\"mb-2 text-base font-semibold\">Success Criteria</h3> `);\n if (phase.successCriteria.automated.length > 0) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<h4 class=\"text-text-dim mt-3 mb-1 text-sm font-medium\">Automated Verification</h4> <ul class=\"space-y-1.5 pl-1\"><!--[-->`);\n const each_array_2 = ensure_array_like(phase.successCriteria.automated);\n for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {\n let criterion = each_array_2[$$index_2];\n $$renderer2.push(`<li class=\"text-text-dim flex items-start gap-2 text-sm\" data-commentable=\"\"${attr(\"data-comment-label\", `${stringify(phaseLabel())} > Automated > ${stringify(criterion.text.slice(0, 40))}`)}><input type=\"checkbox\" class=\"mt-0.5 accent-green\"/> <span>`);\n if (criterion.command) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<code class=\"bg-surface2 rounded px-1 py-0.5 font-mono text-xs\">${escape_html(criterion.command)}</code> —`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> ${escape_html(criterion.text)}</span></li>`);\n }\n $$renderer2.push(`<!--]--></ul>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (phase.successCriteria.manual.length > 0) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<h4 class=\"text-text-dim mt-3 mb-1 text-sm font-medium\">Manual Verification</h4> <ul class=\"space-y-1.5 pl-1\"><!--[-->`);\n const each_array_3 = ensure_array_like(phase.successCriteria.manual);\n for (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {\n let criterion = each_array_3[$$index_3];\n $$renderer2.push(`<li class=\"text-text-dim flex items-start gap-2 text-sm\" data-commentable=\"\"${attr(\"data-comment-label\", `${stringify(phaseLabel())} > Manual > ${stringify(criterion.text.slice(0, 40))}`)}><input type=\"checkbox\" class=\"mt-0.5 accent-green\"/> <span>${escape_html(criterion.text)}</span></li>`);\n }\n $$renderer2.push(`<!--]--></ul>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></div></div>`);\n }\n $$renderer2.push(`<!--]--> <hr class=\"border-border mt-6\"/></section>`);\n });\n}\nfunction MermaidDiagram($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n $$renderer2.push(`<div class=\"bg-surface border-border overflow-x-auto rounded-lg border p-6\"><div class=\"flex justify-center\">`);\n {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<p class=\"text-text-dim text-sm\">Loading diagram...</p>`);\n }\n $$renderer2.push(`<!--]--></div></div>`);\n });\n}\nfunction ProgressBar($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { phases, phaseStatuses } = $$props;\n let approvedCount = derived(() => phases.filter((p) => phaseStatuses[p.id]?.status === \"approved\").length);\n let progress = derived(() => phases.length > 0 ? approvedCount() / phases.length * 100 : 0);\n $$renderer2.push(`<div class=\"fixed top-0 right-0 left-0 z-50 h-[3px] bg-surface2\"><div class=\"h-full transition-all duration-400 ease-out\"${attr_style(`width: ${stringify(progress())}%; background: linear-gradient(90deg, var(--color-green), #2ea043);`)}></div></div>`);\n });\n}\nfunction VersionSelector($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { versions, currentVersion, onSelectVersion } = $$props;\n if (versions.length > 0) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"flex items-center gap-3\"><div class=\"flex items-center gap-2\"><label class=\"text-text-dim text-xs\">Version:</label> `);\n $$renderer2.select(\n {\n class: \"bg-surface2 border-border rounded px-2 py-1 text-xs text-text\",\n value: currentVersion,\n onchange: (e) => onSelectVersion(parseInt(e.currentTarget.value, 10))\n },\n ($$renderer3) => {\n $$renderer3.option({ value: currentVersion }, ($$renderer4) => {\n $$renderer4.push(`v${escape_html(currentVersion)} (current)`);\n });\n $$renderer3.push(`<!--[-->`);\n const each_array = ensure_array_like([...versions].reverse());\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let v = each_array[$$index];\n if (v !== currentVersion) {\n $$renderer3.push(\"<!--[-->\");\n $$renderer3.option({ value: v }, ($$renderer4) => {\n $$renderer4.push(`v${escape_html(v)}`);\n });\n } else {\n $$renderer3.push(\"<!--[!-->\");\n }\n $$renderer3.push(`<!--]-->`);\n }\n $$renderer3.push(`<!--]-->`);\n }\n );\n $$renderer2.push(`</div> `);\n if (versions.length > 0) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<button class=\"text-text-dim hover:text-accent rounded px-2 py-1 text-xs transition-colors\">${escape_html(\"Compare versions\")}</button>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]-->`);\n });\n}\nfunction FeedbackItem($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { comment } = $$props;\n comment.comment;\n $$renderer2.push(`<article${attr_class(`rounded-lg border p-3 ${stringify(\n // Auto-open edit mode for empty comments (just added)\n comment.resolved ? \"border-slate-700 bg-slate-800/40 opacity-60\" : \"border-slate-600/40 bg-slate-800/90\"\n )}`)}><div class=\"mb-1 text-[0.7rem] text-blue-300\">${escape_html(comment.section)}</div> `);\n if (comment.quote) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<p class=\"mb-2 rounded-md border border-slate-700 bg-[#0f172a] px-2 py-1.5 text-xs italic text-slate-300\">\"${escape_html(comment.quote.length > 120 ? comment.quote.slice(0, 120) + \"...\" : comment.quote)}\"</p>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n $$renderer2.push(`<p class=\"text-xs text-slate-300\">${escape_html(comment.comment)}</p> <div class=\"mt-1.5 flex gap-1.5\"><button class=\"rounded-md bg-blue-700 px-2 py-1 text-xs text-white\">Edit</button> <button${attr_class(`rounded-md px-2 py-1 text-xs ${stringify(comment.resolved ? \"bg-green-800 text-green-200\" : \"bg-slate-700 text-slate-300\")}`)}>${escape_html(comment.resolved ? \"Resolved\" : \"Resolve\")}</button> <button class=\"rounded-md bg-red-900 px-2 py-1 text-xs text-red-200\">Delete</button></div>`);\n }\n $$renderer2.push(`<!--]--></article>`);\n });\n}\nfunction FeedbackPanel($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let {\n comments\n } = $$props;\n let unresolvedCount = derived(() => comments.filter((c) => !c.resolved).length);\n $$renderer2.push(`<aside data-feedback-panel=\"\" class=\"fixed top-2 right-4 z-40 flex w-80 max-h-[calc(100vh-1rem)] flex-col rounded-xl bg-[#0f172a] shadow-xl shadow-black/35\"><header class=\"border-b border-white/10 px-4 py-3\"><h3 class=\"flex items-center gap-2 text-base font-semibold text-slate-200\">Review <span class=\"bg-accent/15 text-accent inline-block rounded-full px-2 py-0.5 text-xs font-semibold\">${escape_html(unresolvedCount())}</span></h3> <p class=\"mt-1 text-xs text-slate-400\">Hover over plan elements to comment. Click Submit when done.</p> <button class=\"mt-2 w-full cursor-pointer rounded-lg bg-blue-600 px-3 py-1.5 text-xs font-medium text-white hover:bg-blue-500\">Add comment</button></header> <div class=\"flex-1 space-y-2 overflow-y-auto p-3\">`);\n if (comments.length === 0) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<div class=\"rounded-lg border border-dashed border-slate-600 p-3 text-sm text-slate-400\">No comments yet. Hover and click on any plan element to add a comment.</div>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n $$renderer2.push(`<!--[-->`);\n const each_array = ensure_array_like(comments);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let comment = each_array[$$index];\n FeedbackItem($$renderer2, {\n comment\n });\n }\n $$renderer2.push(`<!--]-->`);\n }\n $$renderer2.push(`<!--]--></div></aside>`);\n });\n}\nfunction HoverToolbar($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]-->`);\n });\n}\nfunction ApprovalBar($$renderer, $$props) {\n let { status, commentCount } = $$props;\n let submitted = derived(() => status === \"approved\" || status === \"needs-work\");\n $$renderer.push(`<div class=\"fixed right-0 bottom-0 left-0 z-40 border-t border-border bg-surface px-6 py-3\"><div class=\"mx-auto flex max-w-5xl items-center justify-between pr-80\"><div class=\"text-text-dim text-sm\">`);\n if (submitted()) {\n $$renderer.push(\"<!--[-->\");\n $$renderer.push(`<span${attr_class(`font-semibold ${stringify(status === \"approved\" ? \"text-green\" : \"text-orange\")}`)}>Feedback ${escape_html(status === \"approved\" ? \"submitted — plan approved\" : \"submitted — changes requested\")}</span>`);\n } else {\n $$renderer.push(\"<!--[!-->\");\n $$renderer.push(`${escape_html(commentCount)} unresolved comment${escape_html(commentCount !== 1 ? \"s\" : \"\")}`);\n }\n $$renderer.push(`<!--]--></div> `);\n if (!submitted()) {\n $$renderer.push(\"<!--[-->\");\n $$renderer.push(`<div class=\"flex gap-3\"><button class=\"cursor-pointer rounded-lg bg-orange/15 px-4 py-2 text-sm font-semibold text-orange hover:bg-orange/25 transition-colors\">Request Changes</button> <button class=\"cursor-pointer rounded-lg bg-green px-4 py-2 text-sm font-semibold text-white hover:brightness-110 transition-colors\">Approve Plan</button></div>`);\n } else {\n $$renderer.push(\"<!--[!-->\");\n }\n $$renderer.push(`<!--]--></div></div>`);\n}\nfunction _page($$renderer, $$props) {\n $$renderer.component(($$renderer2) => {\n let { data } = $$props;\n const planStore = getPlanStore();\n const feedbackStore = getFeedbackStore();\n async function handleSelectVersion(version) {\n if (!/* ignore */\n /* ignore */\n // Track the version we initialized feedback for\n // Initialize stores from server data\n // Reset feedback when plan version changes via SSE (new version = fresh review)\n plan()) return;\n if (version === plan().meta.version) return;\n try {\n const res = await fetch(`/api/sessions/${data.sessionId}/versions/${version}`);\n if (res.ok) {\n const oldPlan = await res.json();\n planStore.set(oldPlan);\n }\n } catch {\n }\n }\n let plan = derived(() => planStore.plan);\n if (plan()) {\n $$renderer2.push(\"<!--[-->\");\n ProgressBar($$renderer2, {\n phases: plan().phases,\n phaseStatuses: feedbackStore.phaseStatuses\n });\n $$renderer2.push(`<!----> <div class=\"min-h-screen pb-20 pr-[22rem] pl-8 pt-4\">`);\n PlanHeader($$renderer2, {\n meta: plan().meta,\n version: plan().meta.version,\n status: feedbackStore.status\n });\n $$renderer2.push(`<!----> <div class=\"mt-4 mb-2\">`);\n VersionSelector($$renderer2, {\n versions: data.versions,\n currentVersion: plan().meta.version,\n onSelectVersion: handleSelectVersion\n });\n $$renderer2.push(`<!----></div> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> <section data-section=\"Overview\" data-commentable=\"\" data-comment-label=\"Overview\"><h2 class=\"text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold\">Overview</h2> `);\n MarkdownBlock($$renderer2, { content: plan().overview, sectionPrefix: \"Overview\" });\n $$renderer2.push(`<!----></section> <!--[-->`);\n const each_array = ensure_array_like(plan().diagrams);\n for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n let diagram = each_array[$$index];\n $$renderer2.push(`<section data-section=\"Diagrams\" data-commentable=\"\"${attr(\"data-comment-label\", `Diagram: ${stringify(diagram.title)}`)}><h3 class=\"mt-6 mb-3 text-lg font-semibold\">${escape_html(diagram.title)}</h3> `);\n MermaidDiagram($$renderer2, { code: diagram.mermaidCode, id: diagram.id });\n $$renderer2.push(`<!----></section>`);\n }\n $$renderer2.push(`<!--]--> `);\n if (plan().currentState) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<section data-section=\"Current State\" data-commentable=\"\" data-comment-label=\"Current State\"><h2 class=\"text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold\">Current State</h2> `);\n MarkdownBlock($$renderer2, { content: plan().currentState, sectionPrefix: \"Current State\" });\n $$renderer2.push(`<!----> `);\n if (plan().keyDiscoveries.length > 0) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<h3 class=\"mt-6 mb-3 text-lg font-semibold\">Key Discoveries</h3> <ul class=\"text-text-dim space-y-1.5 pl-5 text-sm\"><!--[-->`);\n const each_array_1 = ensure_array_like(plan().keyDiscoveries);\n for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n let discovery = each_array_1[$$index_1];\n $$renderer2.push(`<li data-commentable=\"\"${attr(\"data-comment-label\", `Key Discovery: ${stringify(discovery.text.slice(0, 50))}`)}>${escape_html(discovery.text)} `);\n if (discovery.codeRef) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<code class=\"bg-surface2 text-accent rounded px-1 py-0.5 font-mono text-xs\">${escape_html(discovery.codeRef)}</code>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></li>`);\n }\n $$renderer2.push(`<!--]--></ul>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></section>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (plan().scopeExclusions.length > 0) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<section data-section=\"Scope Exclusions\" data-commentable=\"\" data-comment-label=\"Scope Exclusions\"><h2 class=\"text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold\">What We're NOT Doing</h2> <div class=\"grid grid-cols-2 gap-3\"><!--[-->`);\n const each_array_2 = ensure_array_like(plan().scopeExclusions);\n for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {\n let exclusion = each_array_2[$$index_2];\n $$renderer2.push(`<div class=\"bg-surface border-border rounded-lg border border-l-3 border-l-red p-4\" data-commentable=\"\"${attr(\"data-comment-label\", `Scope > ${stringify(exclusion.title)}`)}><div class=\"text-red text-xs font-semibold uppercase tracking-wide\">Out of scope</div> <h4 class=\"mt-1 mb-1 text-sm font-semibold\">${escape_html(exclusion.title)}</h4> <p class=\"text-text-dim text-xs\">${escape_html(exclusion.reason)}</p></div>`);\n }\n $$renderer2.push(`<!--]--></div></section>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (plan().implementationApproach) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<section data-section=\"Implementation Approach\" data-commentable=\"\" data-comment-label=\"Implementation Approach\"><h2 class=\"text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold\">Implementation Approach</h2> `);\n MarkdownBlock($$renderer2, {\n content: plan().implementationApproach,\n sectionPrefix: \"Implementation Approach\"\n });\n $$renderer2.push(`<!----></section>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> <section data-section=\"Phase Summary\"><h2 class=\"text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold\">Phase Summary</h2> `);\n PhaseTable($$renderer2, {\n phases: plan().phases,\n phaseStatuses: feedbackStore.phaseStatuses\n });\n $$renderer2.push(`<!----></section> <!--[-->`);\n const each_array_3 = ensure_array_like(plan().phases);\n for (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {\n let phase = each_array_3[$$index_3];\n PhaseCard($$renderer2, {\n phase,\n phaseStatus: feedbackStore.phaseStatuses[phase.id],\n onSetStatus: (status, note) => feedbackStore.setPhaseStatus(phase.id, status, note),\n subItemStatuses: feedbackStore.subItemStatuses,\n onSetSubItemStatus: (subItemId, status) => feedbackStore.setSubItemStatus(subItemId, phase.id, status, phase.subItems.map((si) => si.id))\n });\n }\n $$renderer2.push(`<!--]--> `);\n if (plan().testingStrategy) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<section data-section=\"Testing Strategy\" data-commentable=\"\" data-comment-label=\"Testing Strategy\"><h2 class=\"text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold\">Testing Strategy</h2> `);\n if (plan().testingStrategy.unit.length > 0) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<h3 class=\"mt-4 mb-2 text-base font-semibold\">Unit Tests</h3> <ul class=\"text-text-dim space-y-1 pl-5 text-sm\"><!--[-->`);\n const each_array_4 = ensure_array_like(plan().testingStrategy.unit);\n for (let $$index_4 = 0, $$length = each_array_4.length; $$index_4 < $$length; $$index_4++) {\n let item = each_array_4[$$index_4];\n $$renderer2.push(`<li data-commentable=\"\"${attr(\"data-comment-label\", `Testing > Unit > ${stringify(item.slice(0, 40))}`)}>${escape_html(item)}</li>`);\n }\n $$renderer2.push(`<!--]--></ul>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (plan().testingStrategy.integration.length > 0) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<h3 class=\"mt-4 mb-2 text-base font-semibold\">Integration Tests</h3> <ul class=\"text-text-dim space-y-1 pl-5 text-sm\"><!--[-->`);\n const each_array_5 = ensure_array_like(plan().testingStrategy.integration);\n for (let $$index_5 = 0, $$length = each_array_5.length; $$index_5 < $$length; $$index_5++) {\n let item = each_array_5[$$index_5];\n $$renderer2.push(`<li data-commentable=\"\"${attr(\"data-comment-label\", `Testing > Integration > ${stringify(item.slice(0, 40))}`)}>${escape_html(item)}</li>`);\n }\n $$renderer2.push(`<!--]--></ul>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (plan().testingStrategy.manual.length > 0) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<h3 class=\"mt-4 mb-2 text-base font-semibold\">Manual Tests</h3> <ul class=\"text-text-dim space-y-1 pl-5 text-sm\"><!--[-->`);\n const each_array_6 = ensure_array_like(plan().testingStrategy.manual);\n for (let $$index_6 = 0, $$length = each_array_6.length; $$index_6 < $$length; $$index_6++) {\n let item = each_array_6[$$index_6];\n $$renderer2.push(`<li data-commentable=\"\"${attr(\"data-comment-label\", `Testing > Manual > ${stringify(item.slice(0, 40))}`)}>${escape_html(item)}</li>`);\n }\n $$renderer2.push(`<!--]--></ul>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></section>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n if (plan().references.length > 0) {\n $$renderer2.push(\"<!--[-->\");\n $$renderer2.push(`<section data-section=\"References\" data-commentable=\"\" data-comment-label=\"References\"><h2 class=\"text-accent mt-8 mb-4 border-b border-border pb-2 text-xl font-semibold\">References</h2> <ul class=\"text-text-dim space-y-1 pl-5 text-sm\"><!--[-->`);\n const each_array_7 = ensure_array_like(plan().references);\n for (let $$index_7 = 0, $$length = each_array_7.length; $$index_7 < $$length; $$index_7++) {\n let ref = each_array_7[$$index_7];\n $$renderer2.push(`<li data-commentable=\"\"${attr(\"data-comment-label\", `Reference: ${stringify(ref.slice(0, 50))}`)}>${escape_html(ref)}</li>`);\n }\n $$renderer2.push(`<!--]--></ul></section>`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--></div> `);\n {\n $$renderer2.push(\"<!--[!-->\");\n }\n $$renderer2.push(`<!--]--> `);\n HoverToolbar($$renderer2);\n $$renderer2.push(`<!----> `);\n FeedbackPanel($$renderer2, {\n comments: feedbackStore.comments\n });\n $$renderer2.push(`<!----> `);\n ApprovalBar($$renderer2, {\n status: feedbackStore.status,\n commentCount: feedbackStore.comments.filter((c) => !c.resolved).length\n });\n $$renderer2.push(`<!---->`);\n } else {\n $$renderer2.push(\"<!--[!-->\");\n $$renderer2.push(`<div class=\"flex min-h-screen items-center justify-center\"><div class=\"text-center\"><p class=\"text-text-dim mb-2 text-lg\">Waiting for plan data...</p> <p class=\"text-text-dim text-sm\">Claude Code will write <code class=\"bg-surface2 text-accent rounded px-1 py-0.5 font-mono text-xs\">plan.json</code> to this session.</p> <div class=\"text-text-dim mt-4 animate-pulse text-sm\">Listening for updates via SSE</div></div></div>`);\n }\n $$renderer2.push(`<!--]-->`);\n });\n}\nexport {\n _page as default\n};\n"],"names":[],"mappings":"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"}
|