@reqlan/analytical 0.7.0 → 0.8.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.
Files changed (73) hide show
  1. package/README.md +27 -0
  2. package/out/analysis/fuzzy-search-analyser.d.ts +17 -0
  3. package/out/analysis/fuzzy-search-analyser.js +25 -0
  4. package/out/analysis/fuzzy-search-analyser.js.map +1 -0
  5. package/out/analysis/fuzzy-search-worker-client.d.ts +39 -0
  6. package/out/analysis/fuzzy-search-worker-client.js +178 -0
  7. package/out/analysis/fuzzy-search-worker-client.js.map +1 -0
  8. package/out/analysis/fuzzy-search-worker.d.ts +32 -0
  9. package/out/analysis/fuzzy-search-worker.js +81 -0
  10. package/out/analysis/fuzzy-search-worker.js.map +1 -0
  11. package/out/analysis/fuzzy-search.d.ts +38 -0
  12. package/out/analysis/fuzzy-search.js +217 -0
  13. package/out/analysis/fuzzy-search.js.map +1 -0
  14. package/out/analysis/git-dates-analyser.js +12 -3
  15. package/out/analysis/git-dates-analyser.js.map +1 -1
  16. package/out/analysis-api.d.ts +14 -0
  17. package/out/analysis-api.js +32 -0
  18. package/out/analysis-api.js.map +1 -1
  19. package/out/core/barrel-page.d.ts +46 -0
  20. package/out/core/barrel-page.js +162 -0
  21. package/out/core/barrel-page.js.map +1 -0
  22. package/out/core/filter-specials.d.ts +2 -0
  23. package/out/core/filter-specials.js +15 -0
  24. package/out/core/filter-specials.js.map +1 -1
  25. package/out/core/types.d.ts +17 -1
  26. package/out/core/types.js +1 -0
  27. package/out/core/types.js.map +1 -1
  28. package/out/create-runtime.js +2 -0
  29. package/out/create-runtime.js.map +1 -1
  30. package/out/export/export-csv.d.ts +4 -0
  31. package/out/export/export-csv.js +13 -0
  32. package/out/export/export-csv.js.map +1 -0
  33. package/out/export/export-json.d.ts +6 -0
  34. package/out/export/export-json.js +28 -0
  35. package/out/export/export-json.js.map +1 -0
  36. package/out/export/export-markdown.d.ts +4 -0
  37. package/out/export/export-markdown.js +23 -0
  38. package/out/export/export-markdown.js.map +1 -0
  39. package/out/export/html-export-assets.d.ts +1 -1
  40. package/out/export/html-export-assets.js +126 -5
  41. package/out/export/html-export-assets.js.map +1 -1
  42. package/out/export/html-export-template.js +89 -47
  43. package/out/export/html-export-template.js.map +1 -1
  44. package/out/export/html-export-utils.d.ts +33 -3
  45. package/out/export/html-export-utils.js +108 -10
  46. package/out/export/html-export-utils.js.map +1 -1
  47. package/out/export/types.d.ts +1 -1
  48. package/out/export/write-csv-export.d.ts +5 -0
  49. package/out/export/write-csv-export.js +132 -0
  50. package/out/export/write-csv-export.js.map +1 -0
  51. package/out/export/write-json-export.d.ts +3 -0
  52. package/out/export/write-json-export.js +92 -0
  53. package/out/export/write-json-export.js.map +1 -0
  54. package/out/export/write-markdown-export.d.ts +5 -0
  55. package/out/export/write-markdown-export.js +177 -0
  56. package/out/export/write-markdown-export.js.map +1 -0
  57. package/out/index-store/idea-extractor.d.ts +6 -1
  58. package/out/index-store/idea-extractor.js +56 -11
  59. package/out/index-store/idea-extractor.js.map +1 -1
  60. package/out/index-store/sqlite-store.d.ts +16 -3
  61. package/out/index-store/sqlite-store.js +104 -8
  62. package/out/index-store/sqlite-store.js.map +1 -1
  63. package/out/index-store/webview-graph-queries.d.ts +5 -0
  64. package/out/index-store/webview-graph-queries.js +21 -4
  65. package/out/index-store/webview-graph-queries.js.map +1 -1
  66. package/out/index-store/webview-table-queries.js +1 -0
  67. package/out/index-store/webview-table-queries.js.map +1 -1
  68. package/out/index-store/workspace-index-file.js +22 -1
  69. package/out/index-store/workspace-index-file.js.map +1 -1
  70. package/out/index.d.ts +14 -1
  71. package/out/index.js +9 -1
  72. package/out/index.js.map +1 -1
  73. package/package.json +2 -2
@@ -0,0 +1,177 @@
1
+ import { mkdir, writeFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { formatAttributeValue } from './html-export-utils.js';
4
+ /** Build markdown paths from HTML-oriented snapshot page paths. */
5
+ export function toMarkdownPath(htmlPath) {
6
+ return htmlPath.replace(/\.html$/i, '.md');
7
+ }
8
+ /** Write a multi-file markdown export from an export snapshot. */
9
+ export async function writeMarkdownExport(snapshot, request, onProgress) {
10
+ const outputDir = join(request.outputDir, request.exportName);
11
+ await mkdir(outputDir, { recursive: true });
12
+ const indexFilePath = join(outputDir, 'README.md');
13
+ const ideasDir = join(outputDir, 'ideas');
14
+ if (snapshot.pageOptions.includeIdeaPages) {
15
+ await mkdir(ideasDir, { recursive: true });
16
+ }
17
+ const writes = [
18
+ () => writeFile(indexFilePath, renderReadme(snapshot), 'utf8'),
19
+ ];
20
+ if (snapshot.pageOptions.includeIdeaPages) {
21
+ for (const idea of snapshot.ideas) {
22
+ const path = join(outputDir, ideaMarkdownRelPath(idea));
23
+ writes.push(() => writeFile(path, renderIdeaMarkdown(snapshot, idea), 'utf8'));
24
+ }
25
+ }
26
+ const total = writes.length;
27
+ let completed = 0;
28
+ onProgress?.({
29
+ phase: 'write',
30
+ message: `Writing markdown (${total} files)…`,
31
+ completed: 0,
32
+ total,
33
+ });
34
+ for (const write of writes) {
35
+ await write();
36
+ completed += 1;
37
+ onProgress?.({
38
+ phase: 'write',
39
+ message: `Writing markdown (${completed}/${total})…`,
40
+ completed,
41
+ total,
42
+ });
43
+ }
44
+ return {
45
+ outputDir,
46
+ indexFilePath,
47
+ printFilePath: indexFilePath,
48
+ dataFilePath: indexFilePath,
49
+ ideasIndexFilePath: indexFilePath,
50
+ };
51
+ }
52
+ function ideaMarkdownRelPath(idea) {
53
+ return toMarkdownPath(idea.page.path);
54
+ }
55
+ function renderReadme(snapshot) {
56
+ const lines = [
57
+ `# ${snapshot.title}`,
58
+ '',
59
+ `Generated ${snapshot.generatedAt}`,
60
+ '',
61
+ `Ideas: **${snapshot.counts.ideas}** · Files: **${snapshot.counts.files}** · Clusters: **${snapshot.counts.clusters}**`,
62
+ '',
63
+ ];
64
+ if (Object.keys(snapshot.byStatus).length > 0) {
65
+ lines.push('## Status', '');
66
+ for (const [status, count] of Object.entries(snapshot.byStatus).sort((a, b) => a[0].localeCompare(b[0]))) {
67
+ lines.push(`- ${escapeMd(status)}: ${count}`);
68
+ }
69
+ lines.push('');
70
+ }
71
+ if (Object.keys(snapshot.byTag).length > 0) {
72
+ lines.push('## Tags', '');
73
+ for (const [tag, count] of Object.entries(snapshot.byTag).sort((a, b) => a[0].localeCompare(b[0]))) {
74
+ lines.push(`- ${escapeMd(tag)}: ${count}`);
75
+ }
76
+ lines.push('');
77
+ }
78
+ lines.push('## Ideas', '');
79
+ if (snapshot.ideas.length === 0) {
80
+ lines.push('_No ideas in this export scope._', '');
81
+ }
82
+ else if (snapshot.pageOptions.includeIdeaPages) {
83
+ for (const idea of snapshot.ideas) {
84
+ const href = ideaMarkdownRelPath(idea);
85
+ const status = idea.status ? ` · ${escapeMd(idea.status)}` : '';
86
+ lines.push(`- [${escapeMdLinkText(idea.name)}](${href})${status}`);
87
+ if (idea.summary?.trim()) {
88
+ lines.push(` - ${escapeMd(oneLine(idea.summary))}`);
89
+ }
90
+ }
91
+ lines.push('');
92
+ }
93
+ else {
94
+ for (const idea of snapshot.ideas) {
95
+ lines.push(renderIdeaMarkdown(snapshot, idea, { headingLevel: 3, omitBackLink: true }));
96
+ lines.push('');
97
+ }
98
+ }
99
+ if (snapshot.files.length > 0) {
100
+ lines.push('## Files', '');
101
+ for (const file of snapshot.files) {
102
+ lines.push(`- \`${escapeMd(file.fileUri)}\` (${file.ideas.length} ideas)`);
103
+ }
104
+ lines.push('');
105
+ }
106
+ return `${lines.join('\n').trimEnd()}\n`;
107
+ }
108
+ function renderIdeaMarkdown(snapshot, idea, options) {
109
+ const level = options?.headingLevel ?? 1;
110
+ const heading = `${'#'.repeat(level)} ${escapeMd(idea.name)}`;
111
+ const lines = [heading, ''];
112
+ if (!options?.omitBackLink) {
113
+ lines.push('[← Back to index](../README.md)', '');
114
+ }
115
+ if (idea.summary?.trim()) {
116
+ lines.push(idea.summary.trim(), '');
117
+ }
118
+ lines.push(`- **File:** \`${escapeMd(idea.fileUri)}\``);
119
+ if (idea.status) {
120
+ lines.push(`- **Status:** ${escapeMd(idea.status)}`);
121
+ }
122
+ if (idea.tags.length > 0) {
123
+ lines.push(`- **Tags:** ${idea.tags.map(tag => `\`${escapeMd(tag)}\``).join(', ')}`);
124
+ }
125
+ lines.push('');
126
+ const attrEntries = Object.entries(idea.attributes).filter(([key]) => key !== 'status' && key !== 'tags');
127
+ if (attrEntries.length > 0) {
128
+ lines.push('## Attributes', '');
129
+ for (const [key, value] of attrEntries.sort((a, b) => a[0].localeCompare(b[0]))) {
130
+ lines.push(`- **${escapeMd(key)}:** ${escapeMd(formatAttributeValue(value))}`);
131
+ }
132
+ lines.push('');
133
+ }
134
+ appendRefSection(lines, snapshot, 'Outbound', idea.references.outbound);
135
+ appendRefSection(lines, snapshot, 'Inbound', idea.references.inbound);
136
+ if (idea.references.unresolved.length > 0) {
137
+ lines.push('## Unresolved references', '');
138
+ for (const row of idea.references.unresolved) {
139
+ lines.push(`- ${escapeMd(row.label || row.targetName || row.targetPath || 'unresolved')}`);
140
+ }
141
+ lines.push('');
142
+ }
143
+ return `${lines.join('\n').trimEnd()}\n`;
144
+ }
145
+ function appendRefSection(lines, snapshot, title, rows) {
146
+ if (rows.length === 0) {
147
+ return;
148
+ }
149
+ lines.push(`## ${title}`, '');
150
+ for (const row of rows) {
151
+ const target = row.targetIdeaId ? snapshot.ideasById[row.targetIdeaId] : undefined;
152
+ if (target && snapshot.pageOptions.includeIdeaPages) {
153
+ const fileName = ideaMarkdownRelPath(target).replace(/^ideas\//, '');
154
+ lines.push(`- [${escapeMdLinkText(target.name)}](./${fileName})`);
155
+ }
156
+ else if (target) {
157
+ lines.push(`- ${escapeMd(target.name)}`);
158
+ }
159
+ else if (row.targetPath) {
160
+ lines.push(`- \`${escapeMd(row.targetPath)}\``);
161
+ }
162
+ else {
163
+ lines.push(`- ${escapeMd(row.targetName || row.label || 'reference')}`);
164
+ }
165
+ }
166
+ lines.push('');
167
+ }
168
+ function oneLine(value) {
169
+ return value.replace(/\s+/g, ' ').trim();
170
+ }
171
+ function escapeMd(value) {
172
+ return value.replace(/([\\`*_{}[\]()#+\-.!|>])/g, '\\$1');
173
+ }
174
+ function escapeMdLinkText(value) {
175
+ return value.replace(/([\\\[\]])/g, '\\$1');
176
+ }
177
+ //# sourceMappingURL=write-markdown-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-markdown-export.js","sourceRoot":"","sources":["../../src/export/write-markdown-export.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,10 @@
2
2
  * Extracts ideas, attributes, and graph edges from parsed reqlan documents.
3
3
  */
4
4
  import { type LangiumDocument } from 'langium';
5
+ import { type WildcardIdeaCandidate } from '@reqlan/language';
5
6
  import { type IndexedDocument } from '../core/types.js';
6
- export declare function extractIndexedDocument(document: LangiumDocument): IndexedDocument | undefined;
7
+ export interface ExtractIndexedDocumentOptions {
8
+ /** Workspace idea catalog for expanding wildcard references. */
9
+ ideaCandidates?: readonly WildcardIdeaCandidate[];
10
+ }
11
+ export declare function extractIndexedDocument(document: LangiumDocument, options?: ExtractIndexedDocumentOptions): IndexedDocument | undefined;
@@ -2,10 +2,10 @@
2
2
  * Extracts ideas, attributes, and graph edges from parsed reqlan documents.
3
3
  */
4
4
  import { AstUtils } from 'langium';
5
- import { findEmbeddedFileReferencesInText, findNamespaceImportByAlias, importPathOf, isAttribute, isBracketReference, isIdea, isIdeaSet, isLocalReference, isMarkdownLink, isModel, isNamespaceImportOnlyReference, isOneLinerIdea, isQualifiedReference, isBlockValue, isListValue, isScalarValue, isWikiLink, namespaceImportBindingName, parseMarkdownLink, summarizeIdeaDeclaration, unquoteReqlanString } from '@reqlan/language';
5
+ import { findEmbeddedFileReferencesInText, findNamespaceImportByAlias, importPathOf, isAttribute, isBracketReference, isIdea, isIdeaSet, isLocalReference, isMarkdownLink, isModel, isNamespaceImportOnlyReference, isOneLinerIdea, isQualifiedReference, isBlockValue, isListValue, isScalarValue, isWikiLink, isWildcardReference, matchWildcardAgainstCatalog, namespaceImportBindingName, parseMarkdownLink, parseWildcardPathPattern, summarizeIdeaDeclaration, unquoteReqlanString, wildcardReferenceLabel } from '@reqlan/language';
6
6
  import { edgeId, ideaId } from '../core/types.js';
7
7
  import { createHash } from 'node:crypto';
8
- export function extractIndexedDocument(document) {
8
+ export function extractIndexedDocument(document, options) {
9
9
  const model = document.parseResult.value;
10
10
  if (!isModel(model)) {
11
11
  return undefined;
@@ -15,14 +15,15 @@ export function extractIndexedDocument(document) {
15
15
  const contentHash = hashText(text);
16
16
  const ideas = [];
17
17
  const edges = [];
18
+ const candidates = options?.ideaCandidates;
18
19
  for (const element of model.elements) {
19
20
  if (isIdea(element)) {
20
21
  ideas.push(toIdeaRecord(element, 'block', fileUri, document));
21
- collectIdeaEdges(element, fileUri, edges);
22
+ collectIdeaEdges(element, fileUri, edges, candidates);
22
23
  }
23
24
  else if (isOneLinerIdea(element)) {
24
25
  ideas.push(toIdeaRecord(element, 'oneliner', fileUri, document));
25
- collectIdeaEdges(element, fileUri, edges);
26
+ collectIdeaEdges(element, fileUri, edges, candidates);
26
27
  }
27
28
  else if (isIdeaSet(element)) {
28
29
  ideas.push(toIdeasetRecord(element, fileUri, document));
@@ -42,7 +43,7 @@ export function extractIndexedDocument(document) {
42
43
  }
43
44
  }
44
45
  }
45
- for (const edge of collectReferenceEdges(model, fileUri)) {
46
+ for (const edge of collectReferenceEdges(model, fileUri, candidates)) {
46
47
  edges.push(edge);
47
48
  }
48
49
  for (const edge of collectFileReferenceEdges(text, fileUri, ideas)) {
@@ -141,12 +142,11 @@ function inlinePartsText(parts) {
141
142
  function normalizeAttributeText(text) {
142
143
  return text?.replace(/\s+/g, ' ').trim() ?? '';
143
144
  }
144
- function collectIdeaEdges(idea, fileUri, edges) {
145
+ function collectIdeaEdges(idea, fileUri, edges, candidates) {
145
146
  const sourceId = ideaId(fileUri, idea.name);
146
147
  for (const node of AstUtils.streamAst(idea)) {
147
148
  if (isWikiLink(node) || isBracketReference(node)) {
148
- const edge = referenceToEdge(sourceId, node.target, fileUri, node);
149
- if (edge) {
149
+ for (const edge of referenceToEdges(sourceId, node.target, fileUri, node, candidates)) {
150
150
  edges.push(edge);
151
151
  }
152
152
  }
@@ -166,7 +166,7 @@ function collectIdeaEdges(idea, fileUri, edges) {
166
166
  }
167
167
  }
168
168
  }
169
- function collectReferenceEdges(model, fileUri) {
169
+ function collectReferenceEdges(model, fileUri, candidates) {
170
170
  const edges = [];
171
171
  for (const node of AstUtils.streamAst(model)) {
172
172
  if (!isWikiLink(node) && !isBracketReference(node)) {
@@ -176,8 +176,7 @@ function collectReferenceEdges(model, fileUri) {
176
176
  if (!owningIdea) {
177
177
  continue;
178
178
  }
179
- const edge = referenceToEdge(ideaId(fileUri, owningIdea.name), node.target, fileUri, node);
180
- if (edge) {
179
+ for (const edge of referenceToEdges(ideaId(fileUri, owningIdea.name), node.target, fileUri, node, candidates)) {
181
180
  edges.push(edge);
182
181
  }
183
182
  }
@@ -242,6 +241,52 @@ function namespaceAliasFileEdge(sourceId, target, meta) {
242
241
  isResolved: true
243
242
  };
244
243
  }
244
+ function referenceToEdges(sourceId, target, fileUri, sourceNode, candidates) {
245
+ if (isWildcardReference(target)) {
246
+ return wildcardReferenceEdges(sourceId, target, sourceNode, candidates);
247
+ }
248
+ const edge = referenceToEdge(sourceId, target, fileUri, sourceNode);
249
+ return edge ? [edge] : [];
250
+ }
251
+ function wildcardReferenceEdges(sourceId, target, sourceNode, candidates) {
252
+ const meta = sourceNode ? edgeMetaFromNode(sourceNode) : {};
253
+ const path = parseWildcardPathPattern(target.pathPattern);
254
+ const label = wildcardReferenceLabel(path, target.ideaPattern);
255
+ if (!candidates?.length) {
256
+ return [{
257
+ id: edgeId(sourceId, 'wildcard_reference', `unresolved:${label}`),
258
+ sourceId,
259
+ kind: 'wildcard_reference',
260
+ label,
261
+ ...meta,
262
+ isResolved: false
263
+ }];
264
+ }
265
+ const document = AstUtils.getDocument(target);
266
+ const matches = matchWildcardAgainstCatalog(target.pathPattern, target.ideaPattern, document, candidates);
267
+ if (matches.length === 0) {
268
+ return [{
269
+ id: edgeId(sourceId, 'wildcard_reference', `unresolved:${label}`),
270
+ sourceId,
271
+ kind: 'wildcard_reference',
272
+ label,
273
+ ...meta,
274
+ isResolved: false
275
+ }];
276
+ }
277
+ return matches.map(match => {
278
+ const targetId = ideaId(match.fileUri, match.ideaName);
279
+ return {
280
+ id: edgeId(sourceId, 'wildcard_reference', targetId),
281
+ sourceId,
282
+ targetId,
283
+ kind: 'wildcard_reference',
284
+ label: match.ideaName,
285
+ ...meta,
286
+ isResolved: true
287
+ };
288
+ });
289
+ }
245
290
  function referenceToEdge(sourceId, target, fileUri, sourceNode) {
246
291
  const meta = sourceNode ? edgeMetaFromNode(sourceNode) : {};
247
292
  const ideaRef = 'idea' in target ? target.idea : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"idea-extractor.js","sourceRoot":"","sources":["../../src/index-store/idea-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"idea-extractor.js","sourceRoot":"","sources":["../../src/index-store/idea-extractor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { EdgeRecord, IdeaRecord, IdeaReferenceChip, IdeaSummary, IdeaWithRange, IdeasetKind, IdeasetMemberRow, IdeasetTableRow, IdeaTableRow, ReferenceListRow, ReferenceTableRow, AncestorChainResult } from '../core/types.js';
1
+ import type { EdgeRecord, IdeaRecord, IdeaReferenceChip, IdeaSummary, IdeaWithRange, IdeasetKind, IdeasetMemberRow, IdeasetTableRow, IdeaTableRow, ReferenceListRow, ReferenceTableRow, AncestorChainResult, TodoIdeaListResult } from '../core/types.js';
2
2
  import type { AttributesTableQuery, AttributeTableRow, IdeasTableQuery, IdeasetsTableQuery, ReferencesTableQuery } from './webview-table-queries.js';
3
3
  import type { GitIdeaTimelineEvent } from './webview-table-queries.js';
4
4
  import { type GraphViewQuery } from './webview-graph-queries.js';
@@ -57,6 +57,11 @@ export declare class SqliteIndexStore {
57
57
  valuesByKey: Record<string, string[]>;
58
58
  }>;
59
59
  searchByNameOrSummary(query: string): Promise<IdeaSummary[]>;
60
+ /**
61
+ * Ideas that carry a `@todo` attribute (bare or valued), not `@status todo`.
62
+ * Caps returned rows; `total` is the uncapped match count for overflow UI.
63
+ */
64
+ listTodoIdeas(limit?: number): Promise<TodoIdeaListResult>;
60
65
  listIdeasForGraphQuery(query: GraphViewQuery, limit: number): Promise<{
61
66
  candidates: IdeaSummary[];
62
67
  totalMatching: number;
@@ -81,9 +86,17 @@ export declare class SqliteIndexStore {
81
86
  private queryAttributesPage;
82
87
  /**
83
88
  * Idea ids that still need git date backfill for the Timeline tab.
84
- * per ["../../../../reqlan rq/extension/module/ideas_summary/webview.rq".timeline_page]
89
+ * - `fileUri`: only ideas in that file (active-editor priority queue)
90
+ * - `preferFileUri`: list that file's ideas first, then the rest of the backlog
91
+ * rq:["../../../../reqlan rq/extension/git-codelens.rq".git_dates_background_indexing]
92
+ * rq:["../../../../reqlan rq/extension/git-codelens.rq".git_idea_timeline_analysis]
93
+ * rq:["../../../../reqlan rq/extension/features-graph-analysers.rq".git_dates]
94
+ * rq:["../../../../reqlan rq/extension/module/ideas_summary/webview.rq".timeline_page]
85
95
  */
86
- listIdeaIdsMissingGitDates(limit?: number): Promise<string[]>;
96
+ listIdeaIdsMissingGitDates(limit?: number, options?: {
97
+ fileUri?: string;
98
+ preferFileUri?: string;
99
+ }): Promise<string[]>;
87
100
  /**
88
101
  * Recent idea evolution events from indexed git dates for the Timeline tab.
89
102
  * Emits separate created / modified entries when both timestamps exist and differ.
@@ -5,8 +5,8 @@
5
5
  import { mkdir, readFile, unlink, writeFile } from 'node:fs/promises';
6
6
  import { basename, dirname } from 'node:path';
7
7
  import { BASE_MIGRATIONS, SCHEMA_VERSION, VERSION_MIGRATIONS } from './schema.js';
8
- import { BLOCKING_STATUSES, ideaStatus, ideaTags, parseAttributes } from '../core/types.js';
9
- import { statusFilterKeyFromAttributes, tagsFilterKeysFromAttributes } from '../core/filter-specials.js';
8
+ import { ACTIVITY_BAR_TODO_LIMIT, BLOCKING_STATUSES, ideaStatus, ideaTags, parseAttributes } from '../core/types.js';
9
+ import { statusFilterKeyFromAttributes, tagsFilterKeysFromAttributes, todoNoteFromAttributes } from '../core/filter-specials.js';
10
10
  import { resolveReferencedFilePath } from '../core/file-reference-resolve.js';
11
11
  import { buildGraphTruncationOrderClause } from './webview-graph-queries.js';
12
12
  import { aggregateAttributesFromRows, attributeValuesForKeys, buildIdeasetsOrderClause, buildIdeasetsWhereClause, buildIdeasOrderClause, buildIdeasWhereClause, buildReferencesOrderClause, buildReferencesWhereClause, filterAndPageAttributes } from './webview-table-queries.js';
@@ -144,12 +144,19 @@ export class SqliteIndexStore {
144
144
  }
145
145
  }
146
146
  async listAllIdeas() {
147
- const rows = await all(this.db, `
147
+ const rows = await allYielding(this.db, `
148
148
  SELECT id, name, kind, file_uri, line_start, summary, attributes_json
149
149
  FROM ideas
150
150
  ORDER BY file_uri, line_start
151
151
  `);
152
- return rows.map(row => this.toSummary(row));
152
+ const ideas = [];
153
+ for (let index = 0; index < rows.length; index += 1) {
154
+ if (index > 0 && index % 250 === 0) {
155
+ await new Promise(resolve => setTimeout(resolve, 0));
156
+ }
157
+ ideas.push(this.toSummary(rows[index]));
158
+ }
159
+ return ideas;
153
160
  }
154
161
  async getIdea(id) {
155
162
  const row = await get(this.db, `
@@ -313,7 +320,7 @@ export class SqliteIndexStore {
313
320
  const nextFrontier = [];
314
321
  for (const currentId of frontier) {
315
322
  for (const edge of await this.getEdgesFrom(currentId)) {
316
- if (edge.kind !== 'references' || !edge.targetId || visited.has(edge.targetId)) {
323
+ if ((edge.kind !== 'references' && edge.kind !== 'wildcard_reference') || !edge.targetId || visited.has(edge.targetId)) {
317
324
  continue;
318
325
  }
319
326
  visited.add(edge.targetId);
@@ -447,6 +454,42 @@ export class SqliteIndexStore {
447
454
  `, pattern, pattern);
448
455
  return rows.map(row => this.toSummary(row));
449
456
  }
457
+ /**
458
+ * Ideas that carry a `@todo` attribute (bare or valued), not `@status todo`.
459
+ * Caps returned rows; `total` is the uncapped match count for overflow UI.
460
+ */
461
+ async listTodoIdeas(limit = ACTIVITY_BAR_TODO_LIMIT) {
462
+ const cappedLimit = Math.max(0, Math.min(Math.floor(limit), 500));
463
+ // Coarse prefilter: `"todo":` matches the attribute key, not `@status todo`.
464
+ const rows = await all(this.db, `
465
+ SELECT id, name, kind, file_uri, line_start, summary, attributes_json
466
+ FROM ideas
467
+ WHERE kind != 'ideaset'
468
+ AND attributes_json LIKE '%"todo":%'
469
+ ORDER BY name ASC, file_uri ASC, line_start ASC
470
+ `);
471
+ const ideas = [];
472
+ for (const row of rows) {
473
+ const attributes = parseAttributes(row.attributes_json);
474
+ if (!Object.prototype.hasOwnProperty.call(attributes, 'todo')) {
475
+ continue;
476
+ }
477
+ const todoNote = todoNoteFromAttributes(attributes);
478
+ ideas.push({
479
+ id: row.id,
480
+ name: row.name,
481
+ kind: row.kind,
482
+ fileUri: row.file_uri,
483
+ lineStart: row.line_start,
484
+ summary: row.summary,
485
+ ...(todoNote !== undefined ? { todoNote } : {})
486
+ });
487
+ }
488
+ return {
489
+ total: ideas.length,
490
+ ideas: ideas.slice(0, cappedLimit)
491
+ };
492
+ }
450
493
  async listIdeasForGraphQuery(query, limit) {
451
494
  const { sql, params } = buildGraphFilterWhereClause(query);
452
495
  const orderSql = buildGraphTruncationOrderClause(query.truncationBasis);
@@ -701,9 +744,43 @@ export class SqliteIndexStore {
701
744
  }
702
745
  /**
703
746
  * Idea ids that still need git date backfill for the Timeline tab.
704
- * per ["../../../../reqlan rq/extension/module/ideas_summary/webview.rq".timeline_page]
747
+ * - `fileUri`: only ideas in that file (active-editor priority queue)
748
+ * - `preferFileUri`: list that file's ideas first, then the rest of the backlog
749
+ * rq:["../../../../reqlan rq/extension/git-codelens.rq".git_dates_background_indexing]
750
+ * rq:["../../../../reqlan rq/extension/git-codelens.rq".git_idea_timeline_analysis]
751
+ * rq:["../../../../reqlan rq/extension/features-graph-analysers.rq".git_dates]
752
+ * rq:["../../../../reqlan rq/extension/module/ideas_summary/webview.rq".timeline_page]
705
753
  */
706
- async listIdeaIdsMissingGitDates(limit = 40) {
754
+ async listIdeaIdsMissingGitDates(limit = 40, options) {
755
+ const capped = Math.max(1, Math.min(limit, 200));
756
+ const fileUri = options?.fileUri?.trim();
757
+ if (fileUri) {
758
+ const rows = await all(this.db, `
759
+ SELECT id
760
+ FROM ideas
761
+ WHERE kind != 'ideaset'
762
+ AND git_created_at IS NULL
763
+ AND git_modified_at IS NULL
764
+ AND file_uri = ?
765
+ ORDER BY line_start ASC
766
+ LIMIT ?
767
+ `, fileUri, capped);
768
+ return rows.map(row => row.id);
769
+ }
770
+ const preferFileUri = options?.preferFileUri?.trim();
771
+ if (preferFileUri) {
772
+ const rows = await all(this.db, `
773
+ SELECT id
774
+ FROM ideas
775
+ WHERE kind != 'ideaset'
776
+ AND git_created_at IS NULL
777
+ AND git_modified_at IS NULL
778
+ ORDER BY CASE WHEN file_uri = ? THEN 0 ELSE 1 END,
779
+ file_uri ASC, line_start ASC
780
+ LIMIT ?
781
+ `, preferFileUri, capped);
782
+ return rows.map(row => row.id);
783
+ }
707
784
  const rows = await all(this.db, `
708
785
  SELECT id
709
786
  FROM ideas
@@ -712,7 +789,7 @@ export class SqliteIndexStore {
712
789
  AND git_modified_at IS NULL
713
790
  ORDER BY file_uri ASC, line_start ASC
714
791
  LIMIT ?
715
- `, Math.max(1, Math.min(limit, 200)));
792
+ `, capped);
716
793
  return rows.map(row => row.id);
717
794
  }
718
795
  /**
@@ -862,6 +939,25 @@ async function all(db, sql, ...params) {
862
939
  statement.free();
863
940
  }
864
941
  }
942
+ /** Like `all`, but yields to the event loop every chunk so interactive work can run. */
943
+ async function allYielding(db, sql, ...params) {
944
+ const statement = db.db.prepare(sql, params);
945
+ const rows = [];
946
+ try {
947
+ let stepped = 0;
948
+ while (statement.step()) {
949
+ rows.push(statement.getAsObject());
950
+ stepped += 1;
951
+ if (stepped % 250 === 0) {
952
+ await new Promise(resolve => setTimeout(resolve, 0));
953
+ }
954
+ }
955
+ return rows;
956
+ }
957
+ finally {
958
+ statement.free();
959
+ }
960
+ }
865
961
  async function exec(db, sql) {
866
962
  db.db.exec(sql);
867
963
  db.dirty = true;