maestro-flow 0.4.16 → 0.4.18

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.
Files changed (105) hide show
  1. package/.agents/skills/maestro/SKILL.md +1 -1
  2. package/.agents/skills/maestro-analyze/SKILL.md +5 -0
  3. package/.agents/skills/maestro-blueprint/SKILL.md +5 -0
  4. package/.agents/skills/maestro-brainstorm/SKILL.md +5 -0
  5. package/.agents/skills/maestro-init/SKILL.md +1 -1
  6. package/.agents/skills/maestro-next/SKILL.md +219 -0
  7. package/.agents/skills/maestro-ralph-beta/SKILL.md +893 -0
  8. package/.agy/skills/maestro/SKILL.md +1 -1
  9. package/.agy/skills/maestro-analyze/SKILL.md +5 -0
  10. package/.agy/skills/maestro-blueprint/SKILL.md +5 -0
  11. package/.agy/skills/maestro-brainstorm/SKILL.md +5 -0
  12. package/.agy/skills/maestro-init/SKILL.md +1 -1
  13. package/.agy/skills/maestro-next/SKILL.md +215 -0
  14. package/.agy/skills/maestro-ralph-beta/SKILL.md +889 -0
  15. package/.claude/commands/maestro-analyze.md +5 -0
  16. package/.claude/commands/maestro-blueprint.md +5 -0
  17. package/.claude/commands/maestro-brainstorm.md +5 -0
  18. package/.claude/commands/maestro-init.md +1 -1
  19. package/.claude/commands/maestro-next.md +217 -0
  20. package/.claude/commands/maestro-ralph-beta.md +891 -0
  21. package/.claude/commands/maestro.md +1 -1
  22. package/.codex/skills/learn-decompose/SKILL.md +34 -3
  23. package/.codex/skills/learn-retro/SKILL.md +31 -1
  24. package/.codex/skills/learn-second-opinion/SKILL.md +34 -4
  25. package/.codex/skills/maestro-analyze/SKILL.md +44 -5
  26. package/.codex/skills/maestro-blueprint/SKILL.md +5 -0
  27. package/.codex/skills/maestro-brainstorm/SKILL.md +46 -0
  28. package/.codex/skills/maestro-execute/SKILL.md +61 -5
  29. package/.codex/skills/maestro-milestone-audit/SKILL.md +64 -13
  30. package/.codex/skills/maestro-milestone-complete/SKILL.md +12 -0
  31. package/.codex/skills/maestro-plan/SKILL.md +36 -1
  32. package/.codex/skills/maestro-player/SKILL.md +25 -6
  33. package/.codex/skills/maestro-ralph/SKILL.md +108 -81
  34. package/.codex/skills/maestro-ralph-beta/SKILL.md +891 -0
  35. package/.codex/skills/maestro-ralph-execute/SKILL.md +244 -0
  36. package/.codex/skills/maestro-roadmap/SKILL.md +35 -4
  37. package/.codex/skills/maestro-ui-codify/SKILL.md +38 -10
  38. package/.codex/skills/maestro-verify/SKILL.md +40 -5
  39. package/.codex/skills/manage-codebase-rebuild/SKILL.md +52 -5
  40. package/.codex/skills/manage-issue-discover/SKILL.md +106 -15
  41. package/.codex/skills/quality-auto-test/SKILL.md +70 -16
  42. package/.codex/skills/quality-debug/SKILL.md +139 -28
  43. package/.codex/skills/quality-refactor/SKILL.md +61 -11
  44. package/.codex/skills/quality-review/SKILL.md +45 -9
  45. package/.codex/skills/quality-test/SKILL.md +58 -3
  46. package/.codex/skills/security-audit/SKILL.md +38 -0
  47. package/.codex/skills/spec-map/SKILL.md +65 -8
  48. package/.codex/skills/team-coordinate/SKILL.md +28 -11
  49. package/.codex/skills/team-coordinate/specs/role-catalog.md +20 -0
  50. package/.codex/skills/team-lifecycle-v4/SKILL.md +23 -7
  51. package/.codex/skills/team-lifecycle-v4/instructions/agent-instruction.md +20 -0
  52. package/.codex/skills/team-quality-assurance/SKILL.md +40 -2
  53. package/.codex/skills/team-review/SKILL.md +42 -2
  54. package/.codex/skills/team-tech-debt/SKILL.md +45 -2
  55. package/.codex/skills/team-testing/SKILL.md +42 -2
  56. package/dashboard/dist-server/dashboard/src/server/wiki/search.d.ts +6 -4
  57. package/dashboard/dist-server/dashboard/src/server/wiki/search.js +50 -8
  58. package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
  59. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.d.ts +32 -0
  60. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js +294 -0
  61. package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js.map +1 -1
  62. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +1 -0
  63. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +35 -1
  64. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  65. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +235 -0
  66. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  67. package/dist/src/commands/install-backend.d.ts.map +1 -1
  68. package/dist/src/commands/install-backend.js +23 -4
  69. package/dist/src/commands/install-backend.js.map +1 -1
  70. package/dist/src/commands/ralph.d.ts.map +1 -1
  71. package/dist/src/commands/ralph.js +3 -1
  72. package/dist/src/commands/ralph.js.map +1 -1
  73. package/dist/src/ralph/cmd-check.js +1 -1
  74. package/dist/src/ralph/cmd-check.js.map +1 -1
  75. package/dist/src/ralph/cmd-complete.js +1 -1
  76. package/dist/src/ralph/cmd-complete.js.map +1 -1
  77. package/dist/src/ralph/cmd-next.d.ts.map +1 -1
  78. package/dist/src/ralph/cmd-next.js +56 -5
  79. package/dist/src/ralph/cmd-next.js.map +1 -1
  80. package/dist/src/ralph/cmd-session.js +2 -2
  81. package/dist/src/ralph/cmd-session.js.map +1 -1
  82. package/dist/src/ralph/cmd-skills.d.ts +2 -0
  83. package/dist/src/ralph/cmd-skills.d.ts.map +1 -1
  84. package/dist/src/ralph/cmd-skills.js +11 -4
  85. package/dist/src/ralph/cmd-skills.js.map +1 -1
  86. package/dist/src/ralph/skill-scanner.d.ts +7 -2
  87. package/dist/src/ralph/skill-scanner.d.ts.map +1 -1
  88. package/dist/src/ralph/skill-scanner.js +39 -24
  89. package/dist/src/ralph/skill-scanner.js.map +1 -1
  90. package/dist/src/ralph/status-schema.d.ts +2 -0
  91. package/dist/src/ralph/status-schema.d.ts.map +1 -1
  92. package/dist/src/ralph/status-store.d.ts +8 -1
  93. package/dist/src/ralph/status-store.d.ts.map +1 -1
  94. package/dist/src/ralph/status-store.js +12 -2
  95. package/dist/src/ralph/status-store.js.map +1 -1
  96. package/dist/src/tools/store-knowhow.d.ts.map +1 -1
  97. package/dist/src/tools/store-knowhow.js +51 -64
  98. package/dist/src/tools/store-knowhow.js.map +1 -1
  99. package/dist/src/utils/update-notices.js +12 -0
  100. package/dist/src/utils/update-notices.js.map +1 -1
  101. package/package.json +1 -1
  102. package/templates/config.json +21 -33
  103. package/workflows/finish-work.md +119 -0
  104. package/workflows/init.md +11 -11
  105. package/workflows/milestone-complete.md +23 -1
@@ -183,10 +183,50 @@ Session: {sessionFolder}
183
183
  Discovery board: {sessionFolder}/discoveries.ndjson
184
184
  Previous context: 'prev_context' column
185
185
 
186
- ## Output
187
- result_status, findings, files_modified, pass_rate (TESTRUN), coverage_score (TESTRUN), error
186
+ ## Termination Contract (MANDATORY)
187
+ You MUST call report_agent_job_result EXACTLY ONCE before exiting. NO exceptions.
188
+ - Success → result_status=completed after tests run / coverage measured
189
+ - Failure → result_status=failed with error message
190
+ - Blocked → cannot proceed without upstream fix → result_status=blocked
191
+ - Timeout → near max_runtime_seconds → result_status=blocked, error="timeout"
192
+ - NEVER continue indefinitely. NEVER exit silently. NEVER omit the call.
193
+
194
+ ## Output (must match output_schema)
195
+ {
196
+ "id": "<your CSV row id>",
197
+ "result_status": "completed" | "failed" | "blocked",
198
+ "findings": "<key findings, max 500 chars>",
199
+ "files_modified": "<semicolon-separated paths or empty>",
200
+ "pass_rate": "<0-100 or empty>" (TESTRUN only),
201
+ "coverage_score": "<0-100 or empty>" (TESTRUN only),
202
+ "error": "<message if not completed>"
203
+ }
204
+
205
+ ## Hard Constraints
206
+ - Do NOT write to tasks.csv, wave-*.csv, results.csv (orchestrator owns those).
207
+ - Do NOT call spawn_agents_on_csv (no recursion).
188
208
  ```
189
209
 
210
+ ### Spawn output_schema
211
+
212
+ ```json
213
+ {
214
+ "type": "object",
215
+ "properties": {
216
+ "id": { "type": "string" },
217
+ "result_status": { "type": "string", "enum": ["completed", "failed", "blocked"] },
218
+ "findings": { "type": "string", "maxLength": 500 },
219
+ "files_modified": { "type": "string" },
220
+ "pass_rate": { "type": "string" },
221
+ "coverage_score": { "type": "string" },
222
+ "error": { "type": "string" }
223
+ },
224
+ "required": ["id", "result_status", "findings"]
225
+ }
226
+ ```
227
+
228
+ Merge maps `result_status` → master `status`.
229
+
190
230
  </actions>
191
231
  </state_machine>
192
232
 
@@ -14,11 +14,13 @@ export interface SearchResult {
14
14
  score: number;
15
15
  }
16
16
  /**
17
- * Tokenize into lowercase terms. Strips non-word chars, drops tokens shorter
18
- * than 2 characters, and filters a tiny English stop-word set.
17
+ * Tokenize into lowercase terms. Strategy:
18
+ * 1. Lowercase, split on non-word chars (\p{L}\p{N})
19
+ * 2. For each chunk: if contains CJK → emit 2/3-char n-grams; otherwise
20
+ * keep the chunk if it passes length + stop-word filters.
19
21
  *
20
- * CJK characters are not split by this regex; callers searching Chinese
21
- * corpora should feed substrings directly ranking is approximate then.
22
+ * Query and document use the same function so n-grams from both sides
23
+ * intersect in the inverted index BM25 ranking works for CJK corpora.
22
24
  */
23
25
  export declare function tokenize(text: string): string[];
24
26
  export declare function buildInvertedIndex(entries: WikiEntry[]): InvertedIndex;
@@ -9,12 +9,36 @@ const STOP_WORDS = new Set([
9
9
  'is', 'it', 'with', 'as', 'at', 'by', 'be', 'are', 'was', 'were',
10
10
  'this', 'that', 'from', 'but', 'not',
11
11
  ]);
12
+ // CJK character range: CJK Unified Ideographs + CJK Extension A.
13
+ // Used to detect runs that need n-gram splitting (BM25 can't match
14
+ // otherwise — a single 4-char Chinese term would never overlap a 2-char
15
+ // query substring). Hiragana/katakana/hangul are out of scope for now.
16
+ const CJK_RUN = /[一-鿿㐀-䶿]+/g;
17
+ const HAS_CJK = /[一-鿿㐀-䶿]/;
12
18
  /**
13
- * Tokenize into lowercase terms. Strips non-word chars, drops tokens shorter
14
- * than 2 characters, and filters a tiny English stop-word set.
19
+ * Extract 2- and 3-char n-grams from a CJK run. 2/3 covers the majority of
20
+ * Chinese terms while keeping the inverted index size bounded; 4+ grams
21
+ * explode postings without proportional recall gain.
22
+ */
23
+ function cjkNgrams(run) {
24
+ const out = [];
25
+ for (let n = 2; n <= 3; n++) {
26
+ if (run.length < n)
27
+ break;
28
+ for (let i = 0; i <= run.length - n; i++) {
29
+ out.push(run.substring(i, i + n));
30
+ }
31
+ }
32
+ return out;
33
+ }
34
+ /**
35
+ * Tokenize into lowercase terms. Strategy:
36
+ * 1. Lowercase, split on non-word chars (\p{L}\p{N})
37
+ * 2. For each chunk: if contains CJK → emit 2/3-char n-grams; otherwise
38
+ * keep the chunk if it passes length + stop-word filters.
15
39
  *
16
- * CJK characters are not split by this regex; callers searching Chinese
17
- * corpora should feed substrings directly ranking is approximate then.
40
+ * Query and document use the same function so n-grams from both sides
41
+ * intersect in the inverted index BM25 ranking works for CJK corpora.
18
42
  */
19
43
  export function tokenize(text) {
20
44
  if (!text)
@@ -22,11 +46,29 @@ export function tokenize(text) {
22
46
  const out = [];
23
47
  const parts = text.toLowerCase().split(/[^\p{L}\p{N}]+/u);
24
48
  for (const p of parts) {
25
- if (p.length < 2)
26
- continue;
27
- if (STOP_WORDS.has(p))
49
+ if (!p)
28
50
  continue;
29
- out.push(p);
51
+ if (HAS_CJK.test(p)) {
52
+ // A chunk may mix CJK and Latin (e.g. "用户auth"); slice each CJK run
53
+ // for n-gram emission and keep any Latin remainder as its own token.
54
+ const cjkRuns = p.match(CJK_RUN) ?? [];
55
+ for (const run of cjkRuns) {
56
+ for (const g of cjkNgrams(run))
57
+ out.push(g);
58
+ }
59
+ const latinRemainder = p.replace(CJK_RUN, ' ').split(/\s+/).filter(Boolean);
60
+ for (const lr of latinRemainder) {
61
+ if (lr.length >= 2 && !STOP_WORDS.has(lr))
62
+ out.push(lr);
63
+ }
64
+ }
65
+ else {
66
+ if (p.length < 2)
67
+ continue;
68
+ if (STOP_WORDS.has(p))
69
+ continue;
70
+ out.push(p);
71
+ }
30
72
  }
31
73
  return out;
32
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../src/server/wiki/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../src/server/wiki/search.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,35 @@
1
1
  import type { WikiEntry } from './wiki-types.js';
2
2
  export declare function adaptIssueRow(row: unknown, sourcePath: string, line: number): WikiEntry | null;
3
3
  export declare function loadVirtualEntries(absPath: string, adapter: (row: unknown, sourcePath: string, line: number) => WikiEntry | null, relPath: string): Promise<WikiEntry[]>;
4
+ export declare function loadVirtualJsonEntries(absPath: string, adapter: (parsed: unknown, sourcePath: string) => WikiEntry[], relPath: string): Promise<WikiEntry[]>;
5
+ export declare function adaptCodebaseDocIndex(parsed: unknown, sourcePath: string): WikiEntry[];
6
+ interface ContextPackageInsight {
7
+ role?: string;
8
+ area?: string;
9
+ summary?: string;
10
+ }
11
+ interface ContextPackageConstraint {
12
+ area?: string;
13
+ }
14
+ interface ContextPackagePeek {
15
+ insights?: ContextPackageInsight[];
16
+ constraints?: ContextPackageConstraint[];
17
+ open_questions?: unknown[];
18
+ requirements?: unknown[];
19
+ domain?: {
20
+ problem_statement?: string;
21
+ };
22
+ }
23
+ /**
24
+ * Adapter for session archive.json files. Returns the lazy reader pattern:
25
+ * pass `peekContextPackage` to enrich summary/tags from context-package.json
26
+ * sibling. If unavailable, archive metadata alone is used.
27
+ */
28
+ export declare function adaptSessionArchive(parsed: unknown, sourcePath: string, peek?: ContextPackagePeek | null): WikiEntry[];
29
+ /**
30
+ * Reads archive.json + optional sibling context-package.json (for summary
31
+ * enrichment) and returns adapted WikiEntries. Tolerates missing/malformed
32
+ * context-package — only archive.json is required.
33
+ */
34
+ export declare function loadSessionArchiveEntries(archiveAbsPath: string, archiveRelPath: string): Promise<WikiEntry[]>;
35
+ export {};
@@ -1,4 +1,7 @@
1
1
  import { readFile } from 'node:fs/promises';
2
+ function slugify(s) {
3
+ return s.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
4
+ }
2
5
  /**
3
6
  * Virtual wiki adapters: read-only reflections of JSONL rows as WikiEntries.
4
7
  * Never mutate the source files. Return null on schema violation (logged once
@@ -108,4 +111,295 @@ export async function loadVirtualEntries(absPath, adapter, relPath) {
108
111
  }
109
112
  return out;
110
113
  }
114
+ export async function loadVirtualJsonEntries(absPath, adapter, relPath) {
115
+ let raw;
116
+ try {
117
+ raw = await readFile(absPath, 'utf-8');
118
+ }
119
+ catch {
120
+ return [];
121
+ }
122
+ let parsed;
123
+ try {
124
+ parsed = JSON.parse(raw);
125
+ }
126
+ catch {
127
+ warn(`bad-json:${absPath}`, `invalid JSON at ${absPath}`);
128
+ return [];
129
+ }
130
+ try {
131
+ return adapter(parsed, relPath);
132
+ }
133
+ catch (err) {
134
+ warn(`adapter-fail:${absPath}`, `adapter failed at ${absPath}: ${err.message}`);
135
+ return [];
136
+ }
137
+ }
138
+ function mapCodebaseStatus(raw) {
139
+ switch (raw) {
140
+ case 'active': return 'active';
141
+ case 'completed': return 'completed';
142
+ case 'pending':
143
+ case 'in_progress':
144
+ return 'draft';
145
+ case 'archived': return 'archived';
146
+ default: return 'active';
147
+ }
148
+ }
149
+ export function adaptCodebaseDocIndex(parsed, sourcePath) {
150
+ if (!parsed || typeof parsed !== 'object')
151
+ return [];
152
+ const idx = parsed;
153
+ const out = [];
154
+ const ts = toIso(idx.last_updated);
155
+ for (const c of idx.components ?? []) {
156
+ if (!c?.id)
157
+ continue;
158
+ const slug = slugify(c.name || c.id);
159
+ const featureIds = c.feature_ids ?? [];
160
+ out.push({
161
+ id: `codebase-comp-${c.id.toLowerCase()}`,
162
+ type: 'knowhow',
163
+ title: c.name || c.id,
164
+ summary: (c.symbols ?? []).slice(0, 5).join(', ') || `${c.type ?? 'component'} at ${(c.code_locations ?? []).slice(0, 1).join('') || '?'}`,
165
+ tags: [c.type ?? 'component', ...featureIds].filter(Boolean),
166
+ status: 'active',
167
+ created: ts,
168
+ updated: toIso(c.last_updated ?? idx.last_updated),
169
+ related: featureIds.map(f => `codebase-feat-${f.toLowerCase()}`),
170
+ source: { kind: 'virtual', path: `codebase/tech-registry/${slug}.md` },
171
+ body: '',
172
+ raw: c,
173
+ ext: { virtualKind: 'codebase-component', codeLocations: c.code_locations, symbols: c.symbols, docIndexPath: sourcePath },
174
+ scope: null,
175
+ category: 'arch',
176
+ createdBy: 'manage-codebase-rebuild',
177
+ sourceRef: c.id,
178
+ parent: null,
179
+ });
180
+ }
181
+ for (const f of idx.features ?? []) {
182
+ if (!f?.id)
183
+ continue;
184
+ const slug = slugify(f.name || f.id);
185
+ const compIds = f.component_ids ?? [];
186
+ const reqIds = f.requirement_ids ?? [];
187
+ out.push({
188
+ id: `codebase-feat-${f.id.toLowerCase()}`,
189
+ type: 'knowhow',
190
+ title: f.name || f.id,
191
+ summary: `${compIds.length} components, ${reqIds.length} requirements${f.phase ? `, phase ${f.phase}` : ''}`,
192
+ tags: ['feature', ...(f.status ? [f.status] : [])],
193
+ status: mapCodebaseStatus(f.status),
194
+ created: ts,
195
+ updated: ts,
196
+ related: [
197
+ ...compIds.map(id => `codebase-comp-${id.toLowerCase()}`),
198
+ ...reqIds.map(id => `codebase-req-${id.toLowerCase()}`),
199
+ ],
200
+ source: { kind: 'virtual', path: `codebase/feature-maps/${slug}.md` },
201
+ body: '',
202
+ raw: f,
203
+ ext: { virtualKind: 'codebase-feature', phase: f.phase, docIndexPath: sourcePath },
204
+ scope: null,
205
+ category: 'arch',
206
+ createdBy: 'manage-codebase-rebuild',
207
+ sourceRef: f.id,
208
+ parent: null,
209
+ });
210
+ }
211
+ for (const r of idx.requirements ?? []) {
212
+ if (!r?.id)
213
+ continue;
214
+ out.push({
215
+ id: `codebase-req-${r.id.toLowerCase()}`,
216
+ type: 'knowhow',
217
+ title: r.title || r.id,
218
+ summary: (r.acceptance_criteria ?? []).slice(0, 1).join('') || `${r.priority ?? ''} requirement`.trim(),
219
+ tags: ['requirement', ...(r.priority ? [r.priority] : []), ...(r.status ? [r.status] : [])],
220
+ status: mapCodebaseStatus(r.status),
221
+ created: ts,
222
+ updated: ts,
223
+ related: r.feature_id ? [`codebase-feat-${r.feature_id.toLowerCase()}`] : [],
224
+ source: { kind: 'virtual', path: sourcePath },
225
+ body: '',
226
+ raw: r,
227
+ ext: { virtualKind: 'codebase-requirement', priority: r.priority, acceptanceCriteria: r.acceptance_criteria },
228
+ scope: null,
229
+ category: 'review',
230
+ createdBy: 'manage-codebase-rebuild',
231
+ sourceRef: r.id,
232
+ parent: r.feature_id ? `codebase-feat-${r.feature_id.toLowerCase()}` : null,
233
+ });
234
+ }
235
+ for (const a of idx.architecture_decisions ?? []) {
236
+ if (!a?.id)
237
+ continue;
238
+ const compIds = a.component_ids ?? [];
239
+ out.push({
240
+ id: `codebase-adr-${a.id.toLowerCase()}`,
241
+ type: 'knowhow',
242
+ title: a.title || a.id,
243
+ summary: (a.decision ?? '').slice(0, 240),
244
+ tags: ['adr', ...compIds],
245
+ status: 'completed',
246
+ created: ts,
247
+ updated: ts,
248
+ related: compIds.map(id => `codebase-comp-${id.toLowerCase()}`),
249
+ source: { kind: 'virtual', path: sourcePath },
250
+ body: '',
251
+ raw: a,
252
+ ext: { virtualKind: 'codebase-adr', rationale: a.rationale },
253
+ scope: null,
254
+ category: 'arch',
255
+ createdBy: 'manage-codebase-rebuild',
256
+ sourceRef: a.id,
257
+ parent: null,
258
+ });
259
+ }
260
+ return out;
261
+ }
262
+ const SESSION_TYPE_CATEGORY = {
263
+ brainstorm: 'arch',
264
+ blueprint: 'arch',
265
+ analyze: 'arch',
266
+ plan: 'coding',
267
+ execute: 'coding',
268
+ verify: 'review',
269
+ };
270
+ function mapSessionStatus(status) {
271
+ return status === 'archived' ? 'archived' : 'completed';
272
+ }
273
+ function buildArchiveSummary(arch, peek) {
274
+ const parts = [];
275
+ const problem = peek?.domain?.problem_statement;
276
+ if (problem)
277
+ parts.push(problem.slice(0, 200));
278
+ const insightCount = peek?.insights?.length ?? 0;
279
+ const constraintCount = peek?.constraints?.length ?? 0;
280
+ const questionCount = peek?.open_questions?.length ?? 0;
281
+ if (insightCount || constraintCount || questionCount) {
282
+ parts.push(`${insightCount} insights / ${constraintCount} constraints / ${questionCount} open questions`);
283
+ }
284
+ if (arch.pruned?.counts) {
285
+ const c = arch.pruned.counts;
286
+ const total = (c.open_questions ?? 0) + (c.constraints ?? 0) + (c.insights ?? 0) + (c.references ?? 0);
287
+ if (total > 0)
288
+ parts.push(`pruned: ${total} items`);
289
+ }
290
+ const topInsight = peek?.insights?.[0]?.summary;
291
+ if (topInsight && !problem)
292
+ parts.push(topInsight.slice(0, 200));
293
+ return parts.join(' | ');
294
+ }
295
+ function buildArchiveTags(sessionType, status, peek) {
296
+ const tags = ['session', status, sessionType];
297
+ for (const c of peek?.constraints ?? []) {
298
+ if (c.area && tags.length < 12)
299
+ tags.push(c.area);
300
+ }
301
+ return tags;
302
+ }
303
+ /**
304
+ * Adapter for session archive.json files. Returns the lazy reader pattern:
305
+ * pass `peekContextPackage` to enrich summary/tags from context-package.json
306
+ * sibling. If unavailable, archive metadata alone is used.
307
+ */
308
+ export function adaptSessionArchive(parsed, sourcePath, peek = null) {
309
+ if (!parsed || typeof parsed !== 'object')
310
+ return [];
311
+ const arch = parsed;
312
+ const status = arch.lifecycle?.status ?? 'active';
313
+ if (status === 'active')
314
+ return [];
315
+ const sessionType = arch.session_type ?? 'session';
316
+ const sessionId = arch.session_id ?? arch.session_path ?? sourcePath;
317
+ const slug = slugify(sessionId);
318
+ if (!slug)
319
+ return [];
320
+ const sessionDir = sourcePath.replace(/\/archive\.json$/, '');
321
+ const sealedAt = toIso(arch.lifecycle?.sealed_at);
322
+ const archivedAt = toIso(arch.lifecycle?.archived_at ?? arch.lifecycle?.sealed_at);
323
+ const related = [];
324
+ if (arch.lifecycle?.linked_milestone) {
325
+ related.push(`milestone-${arch.lifecycle.linked_milestone}`);
326
+ }
327
+ for (const ref of arch.content_refs ?? []) {
328
+ if (ref?.path)
329
+ related.push(`session-ref-${slugify(ref.path)}`);
330
+ }
331
+ return [{
332
+ id: `session-${sessionType}-${slug}`,
333
+ type: 'knowhow',
334
+ title: `${sessionType} ${arch.session_id ?? slug}`,
335
+ summary: buildArchiveSummary(arch, peek),
336
+ tags: buildArchiveTags(sessionType, status, peek),
337
+ status: mapSessionStatus(status),
338
+ created: sealedAt,
339
+ updated: archivedAt,
340
+ related,
341
+ source: { kind: 'virtual', path: sourcePath },
342
+ body: '',
343
+ raw: arch,
344
+ ext: {
345
+ virtualKind: 'session',
346
+ sessionType,
347
+ lifecycleStatus: status,
348
+ sessionDir,
349
+ linkedMilestone: arch.lifecycle?.linked_milestone ?? null,
350
+ contentRefs: arch.content_refs ?? [],
351
+ pruned: arch.pruned ?? null,
352
+ insightCount: peek?.insights?.length ?? 0,
353
+ constraintCount: peek?.constraints?.length ?? 0,
354
+ openQuestionCount: peek?.open_questions?.length ?? 0,
355
+ requirementCount: peek?.requirements?.length ?? 0,
356
+ },
357
+ scope: null,
358
+ category: SESSION_TYPE_CATEGORY[sessionType] ?? null,
359
+ createdBy: sessionType,
360
+ sourceRef: arch.session_id ?? null,
361
+ parent: null,
362
+ }];
363
+ }
364
+ /**
365
+ * Reads archive.json + optional sibling context-package.json (for summary
366
+ * enrichment) and returns adapted WikiEntries. Tolerates missing/malformed
367
+ * context-package — only archive.json is required.
368
+ */
369
+ export async function loadSessionArchiveEntries(archiveAbsPath, archiveRelPath) {
370
+ let archiveRaw;
371
+ try {
372
+ archiveRaw = await readFile(archiveAbsPath, 'utf-8');
373
+ }
374
+ catch {
375
+ return [];
376
+ }
377
+ let parsedArchive;
378
+ try {
379
+ parsedArchive = JSON.parse(archiveRaw);
380
+ }
381
+ catch {
382
+ warn(`bad-json:${archiveAbsPath}`, `invalid JSON at ${archiveAbsPath}`);
383
+ return [];
384
+ }
385
+ // Sibling context-package.json (lazy peek; absent or malformed is fine)
386
+ let peek = null;
387
+ const peekPath = archiveAbsPath.replace(/archive\.json$/, 'context-package.json');
388
+ try {
389
+ const peekRaw = await readFile(peekPath, 'utf-8');
390
+ const parsed = JSON.parse(peekRaw);
391
+ if (parsed && typeof parsed === 'object')
392
+ peek = parsed;
393
+ }
394
+ catch {
395
+ /* peek is optional */
396
+ }
397
+ try {
398
+ return adaptSessionArchive(parsedArchive, archiveRelPath, peek);
399
+ }
400
+ catch (err) {
401
+ warn(`adapter-fail:${archiveAbsPath}`, `adapter failed at ${archiveAbsPath}: ${err.message}`);
402
+ return [];
403
+ }
404
+ }
111
405
  //# sourceMappingURL=virtual-wiki-adapters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"virtual-wiki-adapters.js","sourceRoot":"","sources":["../../../../../src/server/wiki/virtual-wiki-adapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"virtual-wiki-adapters.js","sourceRoot":"","sources":["../../../../../src/server/wiki/virtual-wiki-adapters.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,7 @@ export declare class WikiIndexer {
38
38
  */
39
39
  private resolveSpecScopes;
40
40
  private scanVirtual;
41
+ private scanSessionArchives;
41
42
  private parseFileEntry;
42
43
  private buildBacklinks;
43
44
  /**
@@ -3,7 +3,7 @@ import { basename, dirname, extname, join, relative, resolve, sep } from 'node:p
3
3
  import { toForwardSlash } from '../../shared/utils.js';
4
4
  import { parseFrontmatter } from './frontmatter-util.js';
5
5
  import { parseSpecEntries, parseKnowhowEntries } from './spec-entry-parser.js';
6
- import { adaptIssueRow, loadVirtualEntries } from './virtual-wiki-adapters.js';
6
+ import { adaptCodebaseDocIndex, adaptIssueRow, loadSessionArchiveEntries, loadVirtualEntries, loadVirtualJsonEntries, } from './virtual-wiki-adapters.js';
7
7
  import { homedir } from 'node:os';
8
8
  import { existsSync, readdirSync } from 'node:fs';
9
9
  import { buildGraph } from './graph-analysis.js';
@@ -346,6 +346,40 @@ export class WikiIndexer {
346
346
  const rel = toForwardSlash(relative(this.workflowRoot, abs));
347
347
  out.push(...(await loadVirtualEntries(abs, adaptIssueRow, rel)));
348
348
  }
349
+ // Codebase: .workflow/codebase/doc-index.json → component/feature/req/ADR
350
+ const codebaseIndex = join(this.workflowRoot, 'codebase', 'doc-index.json');
351
+ if (existsSync(codebaseIndex) && this.isInsideRoot(codebaseIndex)) {
352
+ const rel = toForwardSlash(relative(this.workflowRoot, codebaseIndex));
353
+ out.push(...(await loadVirtualJsonEntries(codebaseIndex, adaptCodebaseDocIndex, rel)));
354
+ }
355
+ // Sessions: scan archive.json under scratch/ (sealed) and
356
+ // milestones/{M}/artifacts/ (archived). Adapter filters out active.
357
+ // archive.json carries lifecycle + content_refs; context-package.json
358
+ // is a lazy peek for summary enrichment.
359
+ out.push(...(await this.scanSessionArchives(join(this.workflowRoot, 'scratch'))));
360
+ const milestonesRoot = join(this.workflowRoot, 'milestones');
361
+ if (existsSync(milestonesRoot)) {
362
+ for (const m of await safeReaddir(milestonesRoot)) {
363
+ const artifactsDir = join(milestonesRoot, m, 'artifacts');
364
+ if (!existsSync(artifactsDir))
365
+ continue;
366
+ out.push(...(await this.scanSessionArchives(artifactsDir)));
367
+ }
368
+ }
369
+ return out;
370
+ }
371
+ async scanSessionArchives(root) {
372
+ if (!existsSync(root))
373
+ return [];
374
+ const out = [];
375
+ for (const name of await safeReaddir(root)) {
376
+ const sessionDir = join(root, name);
377
+ const arch = join(sessionDir, 'archive.json');
378
+ if (!existsSync(arch) || !this.isInsideRoot(arch))
379
+ continue;
380
+ const rel = toForwardSlash(relative(this.workflowRoot, arch));
381
+ out.push(...(await loadSessionArchiveEntries(arch, rel)));
382
+ }
349
383
  return out;
350
384
  }
351
385
  async parseFileEntry(absPath, type) {