@equinor/fusion-framework-cli-plugin-ai-index 3.0.5 → 3.0.7

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 (195) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/esm/bin/apply-metadata.js +13 -5
  3. package/dist/esm/bin/apply-metadata.js.map +1 -1
  4. package/dist/esm/bin/apply-schema.js +7 -1
  5. package/dist/esm/bin/apply-schema.js.map +1 -1
  6. package/dist/esm/bin/apply-schema.test.js +2 -1
  7. package/dist/esm/bin/apply-schema.test.js.map +1 -1
  8. package/dist/esm/bin/{delete-removed-files.js → create-delete-removed-files-stream.js} +12 -1
  9. package/dist/esm/bin/create-delete-removed-files-stream.js.map +1 -0
  10. package/dist/esm/bin/embed.js +260 -97
  11. package/dist/esm/bin/embed.js.map +1 -1
  12. package/dist/esm/bin/execute-pipeline.js +5 -0
  13. package/dist/esm/bin/execute-pipeline.js.map +1 -1
  14. package/dist/esm/bin/get-diff.js +6 -0
  15. package/dist/esm/bin/get-diff.js.map +1 -1
  16. package/dist/esm/{embeddings-command.options.js → command-options-schema.js} +1 -1
  17. package/dist/esm/command-options-schema.js.map +1 -0
  18. package/dist/esm/{embeddings-command.js → command.js} +4 -2
  19. package/dist/esm/command.js.map +1 -0
  20. package/dist/esm/{create-command.js → create-index-command.js} +13 -5
  21. package/dist/esm/create-index-command.js.map +1 -0
  22. package/dist/esm/{schema.js → define-index-schema.js} +1 -1
  23. package/dist/esm/define-index-schema.js.map +1 -0
  24. package/dist/esm/delete-command.js +11 -2
  25. package/dist/esm/delete-command.js.map +1 -1
  26. package/dist/esm/delete-index-command.js +4 -0
  27. package/dist/esm/delete-index-command.js.map +1 -1
  28. package/dist/esm/{delete-command.options.js → delete-options-schema.js} +1 -1
  29. package/dist/esm/delete-options-schema.js.map +1 -0
  30. package/dist/esm/embed-command.js +3 -4
  31. package/dist/esm/embed-command.js.map +1 -1
  32. package/dist/esm/index.js +3 -3
  33. package/dist/esm/index.js.map +1 -1
  34. package/dist/esm/search-command.js +20 -0
  35. package/dist/esm/search-command.js.map +1 -1
  36. package/dist/esm/utils/git/{metadata.js → extract-git-metadata.js} +4 -2
  37. package/dist/esm/utils/git/extract-git-metadata.js.map +1 -0
  38. package/dist/esm/utils/git/get-changed-files.js +87 -0
  39. package/dist/esm/utils/git/get-changed-files.js.map +1 -0
  40. package/dist/esm/utils/git/{file-changes.js → get-file-status.js} +9 -95
  41. package/dist/esm/utils/git/get-file-status.js.map +1 -0
  42. package/dist/esm/utils/git/{status.js → get-git-status.js} +5 -2
  43. package/dist/esm/utils/git/get-git-status.js.map +1 -0
  44. package/dist/esm/utils/git/get-git.js +30 -0
  45. package/dist/esm/utils/git/get-git.js.map +1 -0
  46. package/dist/esm/utils/git/index.js +7 -4
  47. package/dist/esm/utils/git/index.js.map +1 -1
  48. package/dist/esm/utils/git/is-file-changed.js +19 -0
  49. package/dist/esm/utils/git/is-file-changed.js.map +1 -0
  50. package/dist/esm/utils/git/resolve-project-root.js +22 -0
  51. package/dist/esm/utils/git/resolve-project-root.js.map +1 -0
  52. package/dist/esm/utils/markdown/index.js +3 -1
  53. package/dist/esm/utils/markdown/index.js.map +1 -1
  54. package/dist/esm/utils/markdown/is-markdown-file.js +10 -0
  55. package/dist/esm/utils/markdown/is-markdown-file.js.map +1 -0
  56. package/dist/esm/utils/markdown/parse-markdown-file.js +29 -0
  57. package/dist/esm/utils/markdown/parse-markdown-file.js.map +1 -0
  58. package/dist/esm/utils/markdown/{parser.js → parse-markdown.js} +8 -37
  59. package/dist/esm/utils/markdown/parse-markdown.js.map +1 -0
  60. package/dist/esm/utils/{embedding-dimensions.js → resolve-embedding-dimensions.js} +3 -1
  61. package/dist/esm/utils/resolve-embedding-dimensions.js.map +1 -0
  62. package/dist/esm/utils/{package-resolver.js → resolve-package.js} +4 -1
  63. package/dist/esm/utils/resolve-package.js.map +1 -0
  64. package/dist/esm/utils/ts-doc/create-typescript-document.js +27 -0
  65. package/dist/esm/utils/ts-doc/create-typescript-document.js.map +1 -0
  66. package/dist/esm/utils/ts-doc/extract-document-from-class-node.js +86 -0
  67. package/dist/esm/utils/ts-doc/extract-document-from-class-node.js.map +1 -0
  68. package/dist/esm/utils/ts-doc/extract-document-from-node.js +82 -0
  69. package/dist/esm/utils/ts-doc/extract-document-from-node.js.map +1 -0
  70. package/dist/esm/utils/ts-doc/index.js +3 -1
  71. package/dist/esm/utils/ts-doc/index.js.map +1 -1
  72. package/dist/esm/utils/ts-doc/is-typescript-file.js +10 -0
  73. package/dist/esm/utils/ts-doc/is-typescript-file.js.map +1 -0
  74. package/dist/esm/utils/ts-doc/{constants.js → node-kinds.js} +1 -1
  75. package/dist/esm/utils/ts-doc/node-kinds.js.map +1 -0
  76. package/dist/esm/utils/ts-doc/parse-ts-doc-from-file-sync.js +23 -0
  77. package/dist/esm/utils/ts-doc/parse-ts-doc-from-file-sync.js.map +1 -0
  78. package/dist/esm/utils/ts-doc/parse-ts-doc-sync.js +18 -0
  79. package/dist/esm/utils/ts-doc/parse-ts-doc-sync.js.map +1 -0
  80. package/dist/esm/utils/ts-doc/process-source-file.js +22 -0
  81. package/dist/esm/utils/ts-doc/process-source-file.js.map +1 -0
  82. package/dist/esm/utils/zod-to-azure-fields.js +7 -0
  83. package/dist/esm/utils/zod-to-azure-fields.js.map +1 -1
  84. package/dist/esm/utils/zod-to-azure-fields.test.js +8 -7
  85. package/dist/esm/utils/zod-to-azure-fields.test.js.map +1 -1
  86. package/dist/esm/version.js +1 -1
  87. package/dist/tsconfig.tsbuildinfo +1 -1
  88. package/dist/types/bin/apply-schema.d.ts +1 -1
  89. package/dist/types/config.d.ts +1 -1
  90. package/dist/types/index.d.ts +1 -1
  91. package/dist/types/utils/git/get-changed-files.d.ts +13 -0
  92. package/dist/types/utils/git/get-file-status.d.ts +13 -0
  93. package/dist/types/utils/git/{git-client.d.ts → get-git.d.ts} +0 -10
  94. package/dist/types/utils/git/index.d.ts +7 -4
  95. package/dist/types/utils/git/is-file-changed.d.ts +12 -0
  96. package/dist/types/utils/git/resolve-project-root.d.ts +10 -0
  97. package/dist/types/utils/markdown/index.d.ts +3 -1
  98. package/dist/types/utils/markdown/is-markdown-file.d.ts +7 -0
  99. package/dist/types/utils/markdown/parse-markdown-file.d.ts +14 -0
  100. package/dist/types/utils/markdown/parse-markdown.d.ts +14 -0
  101. package/dist/types/utils/ts-doc/create-typescript-document.d.ts +12 -0
  102. package/dist/types/utils/ts-doc/extract-document-from-class-node.d.ts +15 -0
  103. package/dist/types/utils/ts-doc/extract-document-from-node.d.ts +20 -0
  104. package/dist/types/utils/ts-doc/index.d.ts +3 -1
  105. package/dist/types/utils/ts-doc/is-typescript-file.d.ts +7 -0
  106. package/dist/types/utils/ts-doc/parse-ts-doc-from-file-sync.d.ts +14 -0
  107. package/dist/types/utils/ts-doc/parse-ts-doc-sync.d.ts +12 -0
  108. package/dist/types/utils/ts-doc/process-source-file.d.ts +11 -0
  109. package/dist/types/version.d.ts +1 -1
  110. package/package.json +8 -8
  111. package/src/bin/apply-metadata.ts +69 -57
  112. package/src/bin/apply-schema.test.ts +2 -1
  113. package/src/bin/apply-schema.ts +6 -1
  114. package/src/bin/{delete-removed-files.ts → create-delete-removed-files-stream.ts} +12 -1
  115. package/src/bin/embed.ts +389 -145
  116. package/src/bin/execute-pipeline.ts +5 -0
  117. package/src/bin/get-diff.ts +7 -1
  118. package/src/bin/types.ts +1 -1
  119. package/src/{embeddings-command.ts → command.ts} +3 -1
  120. package/src/config.ts +1 -1
  121. package/src/{create-command.ts → create-index-command.ts} +15 -5
  122. package/src/delete-command.ts +11 -2
  123. package/src/delete-index-command.ts +4 -0
  124. package/src/embed-command.ts +3 -6
  125. package/src/index.ts +3 -3
  126. package/src/search-command.ts +20 -0
  127. package/src/utils/git/{metadata.ts → extract-git-metadata.ts} +3 -1
  128. package/src/utils/git/get-changed-files.ts +93 -0
  129. package/src/utils/git/{file-changes.ts → get-file-status.ts} +9 -103
  130. package/src/utils/git/{status.ts → get-git-status.ts} +4 -1
  131. package/src/utils/git/{git-client.ts → get-git.ts} +4 -22
  132. package/src/utils/git/index.ts +7 -4
  133. package/src/utils/git/is-file-changed.ts +21 -0
  134. package/src/utils/git/resolve-project-root.ts +22 -0
  135. package/src/utils/markdown/index.ts +3 -1
  136. package/src/utils/markdown/is-markdown-file.ts +9 -0
  137. package/src/utils/markdown/parse-markdown-file.ts +36 -0
  138. package/src/utils/markdown/{parser.ts → parse-markdown.ts} +16 -51
  139. package/src/utils/{embedding-dimensions.ts → resolve-embedding-dimensions.ts} +2 -0
  140. package/src/utils/{package-resolver.ts → resolve-package.ts} +3 -0
  141. package/src/utils/ts-doc/create-typescript-document.ts +36 -0
  142. package/src/utils/ts-doc/extract-document-from-class-node.ts +106 -0
  143. package/src/utils/ts-doc/extract-document-from-node.ts +120 -0
  144. package/src/utils/ts-doc/index.ts +3 -1
  145. package/src/utils/ts-doc/is-typescript-file.ts +9 -0
  146. package/src/utils/ts-doc/parse-ts-doc-from-file-sync.ts +32 -0
  147. package/src/utils/ts-doc/parse-ts-doc-sync.ts +23 -0
  148. package/src/utils/ts-doc/process-source-file.ts +30 -0
  149. package/src/utils/zod-to-azure-fields.test.ts +10 -7
  150. package/src/utils/zod-to-azure-fields.ts +7 -0
  151. package/src/version.ts +1 -1
  152. package/dist/esm/bin/delete-removed-files.js.map +0 -1
  153. package/dist/esm/bin/file-stream.js +0 -22
  154. package/dist/esm/bin/file-stream.js.map +0 -1
  155. package/dist/esm/create-command.js.map +0 -1
  156. package/dist/esm/delete-command.options.js.map +0 -1
  157. package/dist/esm/embeddings-command.js.map +0 -1
  158. package/dist/esm/embeddings-command.options.js.map +0 -1
  159. package/dist/esm/schema.js.map +0 -1
  160. package/dist/esm/utils/embedding-dimensions.js.map +0 -1
  161. package/dist/esm/utils/git/file-changes.js.map +0 -1
  162. package/dist/esm/utils/git/git-client.js +0 -48
  163. package/dist/esm/utils/git/git-client.js.map +0 -1
  164. package/dist/esm/utils/git/metadata.js.map +0 -1
  165. package/dist/esm/utils/git/status.js.map +0 -1
  166. package/dist/esm/utils/markdown/parser.js.map +0 -1
  167. package/dist/esm/utils/package-resolver.js.map +0 -1
  168. package/dist/esm/utils/ts-doc/constants.js.map +0 -1
  169. package/dist/esm/utils/ts-doc/extractors.js +0 -189
  170. package/dist/esm/utils/ts-doc/extractors.js.map +0 -1
  171. package/dist/esm/utils/ts-doc/parser.js +0 -46
  172. package/dist/esm/utils/ts-doc/parser.js.map +0 -1
  173. package/dist/types/bin/file-stream.d.ts +0 -1
  174. package/dist/types/utils/git/file-changes.d.ts +0 -36
  175. package/dist/types/utils/markdown/parser.d.ts +0 -34
  176. package/dist/types/utils/ts-doc/extractors.d.ts +0 -42
  177. package/dist/types/utils/ts-doc/parser.d.ts +0 -32
  178. package/src/bin/file-stream.ts +0 -34
  179. package/src/utils/ts-doc/extractors.ts +0 -260
  180. package/src/utils/ts-doc/parser.ts +0 -60
  181. /package/dist/types/bin/{delete-removed-files.d.ts → create-delete-removed-files-stream.d.ts} +0 -0
  182. /package/dist/types/{embeddings-command.options.d.ts → command-options-schema.d.ts} +0 -0
  183. /package/dist/types/{embeddings-command.d.ts → command.d.ts} +0 -0
  184. /package/dist/types/{create-command.d.ts → create-index-command.d.ts} +0 -0
  185. /package/dist/types/{schema.d.ts → define-index-schema.d.ts} +0 -0
  186. /package/dist/types/{delete-command.options.d.ts → delete-options-schema.d.ts} +0 -0
  187. /package/dist/types/utils/git/{metadata.d.ts → extract-git-metadata.d.ts} +0 -0
  188. /package/dist/types/utils/git/{status.d.ts → get-git-status.d.ts} +0 -0
  189. /package/dist/types/utils/{embedding-dimensions.d.ts → resolve-embedding-dimensions.d.ts} +0 -0
  190. /package/dist/types/utils/{package-resolver.d.ts → resolve-package.d.ts} +0 -0
  191. /package/dist/types/utils/ts-doc/{constants.d.ts → node-kinds.d.ts} +0 -0
  192. /package/src/{embeddings-command.options.ts → command-options-schema.ts} +0 -0
  193. /package/src/{schema.ts → define-index-schema.ts} +0 -0
  194. /package/src/{delete-command.options.ts → delete-options-schema.ts} +0 -0
  195. /package/src/utils/ts-doc/{constants.ts → node-kinds.ts} +0 -0
@@ -7,7 +7,7 @@ import { isMarkdownFile, parseMarkdownFile } from '../utils/markdown/index.js';
7
7
  import { getFileStatus, resolveProjectRoot } from '../utils/git/index.js';
8
8
  import { isTypescriptFile, parseTsDocFromFileSync } from '../utils/ts-doc/index.js';
9
9
  import { getDiff } from './get-diff.js';
10
- import { createDeleteRemovedFilesStream } from './delete-removed-files.js';
10
+ import { createDeleteRemovedFilesStream } from './create-delete-removed-files-stream.js';
11
11
  import { applyMetadata } from './apply-metadata.js';
12
12
  import { applySchema } from './apply-schema.js';
13
13
  import { readFileSync } from 'node:fs';
@@ -35,11 +35,15 @@ class ProgressDisplay {
35
35
  lastCiLog = [];
36
36
  /** Minimum interval (ms) between CI progress lines for the same line slot. */
37
37
  static CI_LOG_INTERVAL_MS = 15_000;
38
- /** Register the line labels up front and print empty placeholders. */
38
+ /**
39
+ * Register the line labels up front and print empty placeholders.
40
+ * @param count - Number of progress lines to reserve.
41
+ */
39
42
  start(count) {
40
43
  this.lines = new Array(count).fill('');
41
44
  this.spinning = new Array(count).fill(false);
42
45
  this.lastCiLog = new Array(count).fill(0);
46
+ // Skip the ANSI cursor block in CI — plain console.log lines are used instead
43
47
  if (!IS_CI) {
44
48
  // Print placeholder lines so the cursor block exists
45
49
  for (let i = 0; i < count; i++) {
@@ -50,14 +54,21 @@ class ProgressDisplay {
50
54
  }
51
55
  this.started = true;
52
56
  }
53
- /** Update a specific line (0-indexed) without touching the others. */
57
+ /**
58
+ * Update a specific line (0-indexed) without touching the others.
59
+ * @param line - Index of the progress line to update.
60
+ * @param message - Message to display on that line.
61
+ */
54
62
  update(line, message) {
63
+ // Nothing to update before the display has been started
55
64
  if (!this.started)
56
65
  return;
57
66
  this.lines[line] = message;
58
67
  this.spinning[line] = true;
68
+ // In CI, throttle to plain log lines instead of redrawing the cursor block
59
69
  if (IS_CI) {
60
70
  const now = Date.now();
71
+ // Only log again once the throttle interval has elapsed for this line
61
72
  if (now - this.lastCiLog[line] >= ProgressDisplay.CI_LOG_INTERVAL_MS) {
62
73
  this.lastCiLog[line] = now;
63
74
  console.log(`⏳ ${message}`);
@@ -66,13 +77,19 @@ class ProgressDisplay {
66
77
  }
67
78
  this.render(line);
68
79
  }
69
- /** Mark a line as completed — stops its spinner and shows a checkmark. */
80
+ /**
81
+ * Mark a line as completed — stops its spinner and shows a checkmark.
82
+ * @param line - Index of the progress line to complete.
83
+ * @param message - Final message to display on that line.
84
+ */
70
85
  succeed(line, message) {
86
+ // Nothing to update before the display has been started
71
87
  if (!this.started)
72
88
  return;
73
89
  const text = `✅ ${message}`;
74
90
  this.lines[line] = text;
75
91
  this.spinning[line] = false;
92
+ // In CI, print the final line directly instead of redrawing the cursor block
76
93
  if (IS_CI) {
77
94
  console.log(text);
78
95
  return;
@@ -81,10 +98,13 @@ class ProgressDisplay {
81
98
  }
82
99
  /** Clear all progress lines and leave the cursor on a clean line. */
83
100
  clear() {
101
+ // Nothing to clear before the display has been started
84
102
  if (!this.started)
85
103
  return;
104
+ // Stop the spinner tick before tearing down the display
86
105
  if (this.timer)
87
106
  clearInterval(this.timer);
107
+ // Skip cursor cleanup entirely in CI, where no cursor block was drawn
88
108
  if (!IS_CI) {
89
109
  // Move up to the first progress line and clear each one
90
110
  for (let i = 0; i < this.lines.length; i++) {
@@ -99,13 +119,18 @@ class ProgressDisplay {
99
119
  /** Advance the spinner frame and re-render all spinning lines. */
100
120
  tick() {
101
121
  this.frame = (this.frame + 1) % SPINNER_FRAMES.length;
122
+ // Re-render every line, skipping ones that aren't currently spinning
102
123
  for (let i = 0; i < this.lines.length; i++) {
124
+ // Only re-render lines that are still actively spinning
103
125
  if (this.spinning[i] && this.lines[i]) {
104
126
  this.render(i);
105
127
  }
106
128
  }
107
129
  }
108
- /** Render a single line at its position. */
130
+ /**
131
+ * Render a single line at its position.
132
+ * @param line - Index of the progress line to render.
133
+ */
109
134
  render(line) {
110
135
  const linesUp = this.lines.length - line;
111
136
  const prefix = this.spinning[line] ? SPINNER_FRAMES[this.frame] : '';
@@ -161,70 +186,97 @@ const EMBED_BUFFER_FLUSH_MS = 10_000;
161
186
  /** Maximum retry attempts for transient / rate-limit errors per chunk. */
162
187
  const MAX_RETRIES = 4;
163
188
  /**
164
- * Main entry point for the embeddings bin.
165
- * Orchestrates the entire embeddings generation pipeline.
166
- * @internal
189
+ * Prints resolved run configuration for `--debug` troubleshooting.
190
+ *
191
+ * @param options - Resolved command options for this run.
192
+ * @param filePatterns - Glob patterns used to discover files to index.
193
+ * @param config - Fusion AI index configuration for this run.
167
194
  */
168
- export async function embed(binOptions) {
169
- const { framework, options, config, filePatterns } = binOptions;
170
- const debug = options.debug ?? false;
171
- console.log(`📇 Index: ${options.indexName}`);
172
- if (debug) {
173
- console.debug('[debug] Embed model:', options.embedModel);
174
- console.debug('[debug] File patterns:', filePatterns);
175
- console.debug('[debug] Allowed patterns:', config.index?.patterns ?? ['**/*.ts', '**/*.tsx', '**/*.md', '**/*.mdx']);
176
- console.debug('[debug] Raw patterns:', config.index?.rawPatterns ?? []);
177
- console.debug('[debug] Ignore patterns:', config.index?.ignore ?? defaultIgnore);
178
- console.debug('[debug] Diff mode:', options.diff);
179
- console.debug('[debug] Dry run:', options.dryRun);
180
- console.debug('[debug] Clean:', options.clean);
195
+ function logDebugConfig(options, filePatterns, config) {
196
+ console.debug('[debug] Embed model:', options.embedModel);
197
+ console.debug('[debug] File patterns:', filePatterns);
198
+ console.debug('[debug] Allowed patterns:', config.index?.patterns ?? ['**/*.ts', '**/*.tsx', '**/*.md', '**/*.mdx']);
199
+ console.debug('[debug] Raw patterns:', config.index?.rawPatterns ?? []);
200
+ console.debug('[debug] Ignore patterns:', config.index?.ignore ?? defaultIgnore);
201
+ console.debug('[debug] Diff mode:', options.diff);
202
+ console.debug('[debug] Dry run:', options.dryRun);
203
+ console.debug('[debug] Clean:', options.clean);
204
+ }
205
+ /**
206
+ * Deletes all existing documents from the vector store when `--clean` is set.
207
+ * No-op in dry-run mode or when `--clean` was not requested.
208
+ *
209
+ * @param framework - Framework instance used to access the configured vector store.
210
+ * @param options - Resolved command options for this run.
211
+ */
212
+ async function cleanVectorStoreIfRequested(framework, options) {
213
+ // Only wipe the index when explicitly requested and not in dry-run mode
214
+ if (!options.clean || options.dryRun) {
215
+ return;
181
216
  }
182
- const progress = new ProgressDisplay();
183
- // Handle clean operation (destructive - deletes all existing documents)
217
+ console.log('🧹 Cleaning vector store: deleting all existing documents...');
184
218
  const vectorStoreService = framework.ai.useIndex(options.indexName);
185
- if (options.clean && !options.dryRun) {
186
- console.log('🧹 Cleaning vector store: deleting all existing documents...');
187
- // OData filter: delete all documents with non-empty source (all indexed docs)
188
- await vectorStoreService.deleteDocuments({
189
- filter: { filterExpression: "metadata/source ne ''" },
190
- });
191
- console.log('✅ Vector store cleaned successfully');
219
+ // OData filter: delete all documents with non-empty source (all indexed docs)
220
+ await vectorStoreService.deleteDocuments({
221
+ filter: { filterExpression: "metadata/source ne ''" },
222
+ });
223
+ console.log('✅ Vector store cleaned successfully');
224
+ }
225
+ /**
226
+ * Creates the raw file stream: diff mode reuses already-resolved changed
227
+ * files, normal mode globs the filesystem and resolves git status per match.
228
+ *
229
+ * @param options - Resolved command options for this run.
230
+ * @param config - Fusion AI index configuration for this run.
231
+ * @param filePatterns - Glob patterns used to discover files to index.
232
+ * @param changedFiles - Pre-resolved changed files, used when `options.diff` is set.
233
+ * @returns A stream emitting each matched {@link ChangedFile}.
234
+ */
235
+ function createFileStream$(options, config, filePatterns, changedFiles) {
236
+ // Diff mode reuses the already-resolved changed files instead of globbing.
237
+ if (options.diff) {
238
+ return from(changedFiles);
192
239
  }
193
- // Handle diff-based processing (workflow mode)
194
- const changedFiles = options.diff ? await getDiff(options) : [];
195
- // Create file stream: diff mode uses git changes, normal mode uses globby
196
- const files$ = (() => {
197
- if (options.diff) {
198
- return from(changedFiles);
199
- }
200
- // Directories to skip before expensive git operations.
201
- // Note: Even with gitignore: true, globby still traverses ignored directories when .gitignore
202
- // contains negation patterns (like !.yarn/releases), so we add explicit ignore patterns
203
- // to prevent traversing these directories entirely.
204
- const ignore = config.index?.ignore ?? defaultIgnore;
205
- // Respect .gitignore by default; configs targeting build artifacts can opt out.
206
- const gitignore = config.index?.gitignore ?? true;
207
- return from(globbyStream(filePatterns, {
208
- ignore,
209
- onlyFiles: true,
210
- gitignore,
211
- absolute: true,
212
- })).pipe(
213
- // Get git status concurrently (capped to avoid spawning too many git processes)
214
- mergeMap((path) => getFileStatus(path), GIT_CONCURRENCY), concatMap((files) => from(files)),
215
- // Share stream for multiple subscribers (removedFiles$ and indexFiles$)
216
- shareReplay({ refCount: true }));
217
- })();
218
- // Process files: enrich with metadata and filter by allowed patterns
240
+ // Directories to skip before expensive git operations.
241
+ // Note: Even with gitignore: true, globby still traverses ignored directories when .gitignore
242
+ // contains negation patterns (like !.yarn/releases), so we add explicit ignore patterns
243
+ // to prevent traversing these directories entirely.
244
+ const ignore = config.index?.ignore ?? defaultIgnore;
245
+ // Respect .gitignore by default; configs targeting build artifacts can opt out.
246
+ const gitignore = config.index?.gitignore ?? true;
247
+ return (from(globbyStream(filePatterns, {
248
+ ignore,
249
+ onlyFiles: true,
250
+ gitignore,
251
+ absolute: true,
252
+ }))
253
+ // Resolve git status for each matched file, then flatten to individual files
254
+ .pipe(
255
+ // Get git status concurrently (capped to avoid spawning too many git processes)
256
+ mergeMap((path) => getFileStatus(path), GIT_CONCURRENCY), concatMap((files) => from(files)),
257
+ // Share stream for multiple subscribers (removedFiles$ and indexFiles$)
258
+ shareReplay({ refCount: true })));
259
+ }
260
+ /**
261
+ * Enriches each file with its project-relative path and filters out files
262
+ * that don't match the configured index patterns.
263
+ *
264
+ * @param files$ - Raw file stream from {@link createFileStream$}.
265
+ * @param config - Fusion AI index configuration for this run.
266
+ * @param debug - Whether to log skipped files for troubleshooting.
267
+ * @param progress - Progress display used to report parsing progress.
268
+ * @returns A stream of {@link ProcessedFile} entries matching the allowed patterns.
269
+ */
270
+ function createProcessedFilesStream$(files$, config, debug, progress) {
219
271
  const allowedFilePatterns = config.index?.patterns ?? [
220
272
  '**/*.ts',
221
273
  '**/*.tsx',
222
274
  '**/*.md',
223
275
  '**/*.mdx',
224
276
  ];
225
- // Process files: enrich with metadata and filter by allowed patterns
226
277
  let fileCount = 0;
227
- const processedFiles$ = files$.pipe(map((file) => {
278
+ // Resolve each file's project-relative path and filter by allowed patterns
279
+ return files$.pipe(map((file) => {
228
280
  const { filepath, status } = file;
229
281
  const projectRoot = resolveProjectRoot(filepath);
230
282
  const relativePath = projectRoot ? relative(projectRoot, filepath) : filepath;
@@ -236,6 +288,7 @@ export async function embed(binOptions) {
236
288
  };
237
289
  }), filter((file) => {
238
290
  const matches = multimatch(file.relativePath, allowedFilePatterns);
291
+ // Surface skipped files in debug output for troubleshooting pattern config
239
292
  if (debug && matches.length === 0) {
240
293
  console.debug('[debug] Skipped (no pattern match):', file.relativePath);
241
294
  }
@@ -247,22 +300,28 @@ export async function embed(binOptions) {
247
300
  }),
248
301
  // Share for multiple subscribers (removedFiles$, markdown$, typescript$)
249
302
  shareReplay({ refCount: true }));
250
- // Split stream: removed files for deletion, new/modified for indexing
251
- const removedFiles$ = processedFiles$.pipe(filter((file) => file.status === 'removed'));
252
- // Create processing streams
253
- const delete$ = createDeleteRemovedFilesStream(removedFiles$, framework, options);
254
- // New/modified files for indexing
255
- const indexFiles$ = processedFiles$.pipe(filter((file) => file.status === 'new' || file.status === 'modified'),
256
- // Share for markdown$ and typescript$ pipelines
257
- shareReplay({ refCount: true }));
303
+ }
304
+ /**
305
+ * Parses new/modified files (raw, markdown, or TypeScript) into document
306
+ * entries ready for metadata enrichment.
307
+ *
308
+ * @param indexFiles$ - Stream of new/modified files to parse.
309
+ * @param config - Fusion AI index configuration for this run.
310
+ * @param debug - Whether to log per-file chunk counts for troubleshooting.
311
+ * @param progress - Progress display used to report parsing progress.
312
+ * @returns A stream of {@link DocumentEntry} objects, one per parsed file.
313
+ */
314
+ function createParsedDocumentsStream$(indexFiles$, config, debug, progress) {
258
315
  const isRawFile = (file) => {
259
316
  const matches = multimatch(file.relativePath, config.index?.rawPatterns ?? []);
317
+ // A file is "raw" when it matches any configured raw pattern
260
318
  if (matches.length > 0) {
261
319
  return true;
262
320
  }
263
321
  return false;
264
322
  };
265
323
  let docCount = 0;
324
+ // Read raw-pattern files verbatim as a single document, skipping markdown/TS parsing
266
325
  const rawFiles$ = indexFiles$.pipe(filter(isRawFile), map((file) => {
267
326
  const document = {
268
327
  id: generateChunkId(file.relativePath),
@@ -276,18 +335,22 @@ export async function embed(binOptions) {
276
335
  progress.update(LINE_PARSE, `📄 Parsing [${docCount}] ${file.relativePath}`);
277
336
  return { status: file.status, documents: [document] };
278
337
  }));
338
+ // Parse markdown files not already handled as raw content
279
339
  const markdown$ = indexFiles$.pipe(filter((x) => !isRawFile(x)), filter((file) => isMarkdownFile(file.path)), mergeMap(async (file) => {
280
340
  const documents = await parseMarkdownFile(file);
281
341
  docCount++;
342
+ // Surface per-file chunk counts in debug output
282
343
  if (debug) {
283
344
  console.debug(`[debug] Markdown ${file.relativePath} → ${documents.length} chunk(s)`);
284
345
  }
285
346
  progress.update(LINE_PARSE, `📄 Parsing [${docCount}] ${file.relativePath}`);
286
347
  return { status: file.status, documents };
287
348
  }));
349
+ // Parse TypeScript files not already handled as raw content
288
350
  const typescript$ = indexFiles$.pipe(filter((x) => !isRawFile(x)), filter((file) => isTypescriptFile(file.path)), map((file) => {
289
351
  const documents = parseTsDocFromFileSync(file);
290
352
  docCount++;
353
+ // Surface per-file chunk counts in debug output
291
354
  if (debug) {
292
355
  console.debug(`[debug] TypeScript ${file.relativePath} → ${documents.length} chunk(s)`);
293
356
  }
@@ -295,37 +358,58 @@ export async function embed(binOptions) {
295
358
  return { status: file.status, documents };
296
359
  }));
297
360
  // Merge parsed streams and signal when all parsing is done
298
- const parsed$ = merge(rawFiles$, markdown$, typescript$).pipe(finalize(() => {
361
+ return merge(rawFiles$, markdown$, typescript$).pipe(finalize(() => {
299
362
  progress.succeed(LINE_PARSE, `📄 Parsed ${docCount} files`);
300
363
  }));
301
- // Apply metadata to documents
302
- let metadataCount = 0;
303
- let metadataDone = false;
304
- const applyMetadata$ = applyMetadata(parsed$, config.index, (source) => {
305
- metadataCount++;
306
- progress.update(LINE_META, `🏷️ Metadata [${metadataCount}] ${source}`);
364
+ }
365
+ /**
366
+ * Applies metadata enrichment to parsed documents and tracks progress.
367
+ *
368
+ * @param parsed$ - Stream of parsed document entries.
369
+ * @param config - Fusion AI index configuration for this run.
370
+ * @param progress - Progress display used to report metadata progress.
371
+ * @returns The enriched document stream along with its progress state.
372
+ */
373
+ function createMetadataStream$(parsed$, config, progress) {
374
+ const state = { count: 0, done: false };
375
+ // Track metadata progress via the callback, then mark the stage done on completion
376
+ const stream$ = applyMetadata(parsed$, config.index, (source) => {
377
+ state.count++;
378
+ progress.update(LINE_META, `🏷️ Metadata [${state.count}] ${source}`);
307
379
  }).pipe(finalize(() => {
308
- metadataDone = true;
309
- progress.succeed(LINE_META, `🏷️ Metadata ${metadataCount} documents`);
380
+ state.done = true;
381
+ progress.succeed(LINE_META, `🏷️ Metadata ${state.count} documents`);
310
382
  }));
311
- // Resolve promoted schema fields (if schema is configured) — runs after
312
- // metadata enrichment so the resolver has access to git, package, and
313
- // custom attributes from attributeProcessor
314
- const applySchema$ = applySchema(applyMetadata$, config.index?.schema);
315
- // Generate embeddings in batches with retry on rate-limit (429) errors
316
- const embeddingService = framework.ai.useEmbed(options.embedModel);
317
- let embeddedCount = 0;
318
- let embeddingDone = false;
319
- const applyEmbedding$ = applySchema$.pipe(
383
+ return { stream$, state };
384
+ }
385
+ /**
386
+ * Generates embeddings in batches with retry on rate-limit (429) errors.
387
+ *
388
+ * @param documents$ - Stream of schema-resolved document batches to embed.
389
+ * @param embeddingService - Embedding client used to compute document vectors.
390
+ * @param debug - Whether to log batch sizes for troubleshooting.
391
+ * @param progress - Progress display used to report embedding progress.
392
+ * @param metadataState - Progress state from {@link createMetadataStream$}, used as the denominator.
393
+ * @returns The embedded document stream along with its progress state.
394
+ */
395
+ function createEmbeddingStream$(documents$, embeddingService, debug, progress, metadataState) {
396
+ const state = { count: 0, done: false };
397
+ // Buffer, embed with retry, then re-attach embeddings onto each document
398
+ const stream$ = documents$.pipe(
320
399
  // Flatten all documents from file-level batches, then re-batch for the API
321
400
  concatMap((documents) => from(documents)),
322
401
  // Flush when EMBED_BATCH_SIZE docs accumulate OR after EMBED_BUFFER_FLUSH_MS,
323
402
  // whichever comes first — prevents upstream starvation from blocking concurrency
324
403
  bufferTime(EMBED_BUFFER_FLUSH_MS, null, EMBED_BATCH_SIZE), filter((batch) => batch.length > 0), mergeMap((batch) => {
404
+ // Surface batch sizes in debug output for troubleshooting throughput
325
405
  if (debug) {
326
406
  console.debug(`[debug] Embedding batch of ${batch.length} documents`);
327
407
  }
328
- return from(embeddingService.embedDocuments(batch.map((d) => d.pageContent))).pipe(retry({
408
+ return (from(embeddingService.embedDocuments(batch
409
+ // Extract each document's page content for the embedding API call
410
+ .map((d) => d.pageContent)))
411
+ // Retry transient/rate-limit errors, then attach embeddings back onto each document
412
+ .pipe(retry({
329
413
  count: MAX_RETRIES,
330
414
  delay: (error, retryIndex) => {
331
415
  // Auth errors are terminal — abort immediately with actionable message
@@ -342,31 +426,49 @@ export async function embed(binOptions) {
342
426
  return timer(delayMs);
343
427
  },
344
428
  }), map((allEmbeddings) => {
429
+ // Re-attach the corresponding embedding onto each document in the batch
345
430
  return batch.map((document, i) => {
346
- embeddedCount++;
347
- const total = metadataDone ? metadataCount : 0;
348
- const pct = total > 0 ? ` ${Math.round((embeddedCount / total) * 100)}%` : '';
431
+ state.count++;
432
+ const total = metadataState.done ? metadataState.count : 0;
433
+ const pct = total > 0 ? ` ${Math.round((state.count / total) * 100)}%` : '';
349
434
  const denominator = total > 0 ? `/${total}` : '';
350
- progress.update(LINE_EMBED, `🧠 Embedding [${embeddedCount}${denominator}]${pct} — ${document.metadata.source}`);
435
+ progress.update(LINE_EMBED, `🧠 Embedding [${state.count}${denominator}]${pct} — ${document.metadata.source}`);
351
436
  const metadata = { ...document.metadata, embedding: allEmbeddings[i] };
352
437
  return { ...document, metadata };
353
438
  });
354
- }));
439
+ })));
355
440
  }, EMBED_BATCH_CONCURRENCY), finalize(() => {
356
- embeddingDone = true;
357
- progress.succeed(LINE_EMBED, `🧠 Embedded ${embeddedCount} documents`);
441
+ state.done = true;
442
+ progress.succeed(LINE_EMBED, `🧠 Embedded ${state.count} documents`);
358
443
  }));
359
- // Update vector store — batch documents and upsert concurrently
360
- const upsert$ = applyEmbedding$.pipe(
444
+ return { stream$, state };
445
+ }
446
+ /**
447
+ * Batches embedded documents and upserts them into the vector store.
448
+ *
449
+ * @param embedding$ - Stream of embedded document batches.
450
+ * @param framework - Framework instance used to access the configured vector store.
451
+ * @param options - Resolved command options for this run.
452
+ * @param debug - Whether to log upserted document IDs for troubleshooting.
453
+ * @returns A stream emitting the result of each batch upsert.
454
+ */
455
+ function createUpsertStream$(embedding$, framework, options, debug) {
456
+ // Re-batch embedded documents into fixed-size groups for bulk upsert
457
+ return embedding$.pipe(
361
458
  // Flatten file-level batches, then re-batch into groups of 20 for bulk upsert
362
459
  concatMap((documents) => from(documents)), bufferCount(20), mergeMap(async (documents) => {
363
460
  const vectorStoreService = framework.ai.useIndex(options.indexName);
461
+ // Nothing to upsert when the batch is empty
364
462
  if (documents.length === 0) {
365
463
  return undefined;
366
464
  }
465
+ // Skip the actual vector store mutation when running in dry-run mode
367
466
  if (!options.dryRun) {
467
+ // Surface upserted document IDs in debug output for troubleshooting
368
468
  if (debug) {
369
- console.debug(`[debug] Upserting batch of ${documents.length} documents:`, documents.map((d) => d.id));
469
+ console.debug(`[debug] Upserting batch of ${documents.length} documents:`, documents
470
+ // Log just the IDs to keep debug output concise
471
+ .map((d) => d.id));
370
472
  }
371
473
  await vectorStoreService.addDocuments(documents);
372
474
  }
@@ -375,7 +477,17 @@ export async function embed(binOptions) {
375
477
  documents,
376
478
  };
377
479
  }, UPSERT_CONCURRENCY), filter((result) => Boolean(result)));
378
- // Execute pipeline
480
+ }
481
+ /**
482
+ * Runs the deletion/upsert pipeline to completion, reporting progress and
483
+ * a final summary, then exits the process.
484
+ *
485
+ * @param delete$ - Stream of removed-file deletion results.
486
+ * @param upsert$ - Stream of document upsert results.
487
+ * @param progress - Progress display used to report indexing progress.
488
+ * @param embeddingState - Progress state from {@link createEmbeddingStream$}, used as the denominator.
489
+ */
490
+ function runIndexingPipeline(delete$, upsert$, progress, embeddingState) {
379
491
  // Track indexing results for reporting: deleted file paths and added document IDs
380
492
  let indexedCount = 0;
381
493
  const indexingResults = {
@@ -390,17 +502,19 @@ export async function embed(binOptions) {
390
502
  next: (result) => {
391
503
  // Track deleted files by relative path
392
504
  if (result.status === 'deleted') {
505
+ // Reduce each deleted file entry down to its relative path for reporting.
393
506
  indexingResults.deleted.push(...result.files.map((file) => file.relativePath));
394
507
  }
395
508
  // Track added documents with source and ID (one file can produce multiple IDs)
396
509
  else if (result.status === 'added') {
510
+ // Reduce each added document down to its source path and id for reporting.
397
511
  indexingResults.added.push(...result.documents.map((document) => ({
398
512
  source: document.metadata.source,
399
513
  id: document.id,
400
514
  })));
401
515
  indexedCount += result.documents.length;
402
516
  // Use embeddedCount as denominator — only show % once embedding is done
403
- const total = embeddingDone ? embeddedCount : 0;
517
+ const total = embeddingState.done ? embeddingState.count : 0;
404
518
  const pct = total > 0 ? ` ${Math.round((indexedCount / total) * 100)}%` : '';
405
519
  const denominator = total > 0 ? `/${total}` : '';
406
520
  progress.update(LINE_INDEX, `📤 Indexed [${indexedCount}${denominator}]${pct}`);
@@ -417,6 +531,7 @@ export async function embed(binOptions) {
417
531
  if (indexingResults.deleted.length > 0) {
418
532
  console.log(`🗑️ Deleted: ${indexingResults.deleted.length} files`);
419
533
  }
534
+ // Only print an "indexed" summary line when documents were actually added
420
535
  if (indexingResults.added.length > 0) {
421
536
  console.log(`📥 Indexed: ${indexingResults.added.length} documents`);
422
537
  }
@@ -425,4 +540,52 @@ export async function embed(binOptions) {
425
540
  },
426
541
  });
427
542
  }
543
+ /**
544
+ * Main entry point for the embeddings bin.
545
+ * Orchestrates the entire embeddings generation pipeline.
546
+ *
547
+ * @param binOptions - Framework, resolved options, config, and file patterns for this run.
548
+ * @throws {Error} Propagates unrecoverable embedding/vector-store errors from the pipeline.
549
+ * @internal
550
+ */
551
+ export async function embed(binOptions) {
552
+ const { framework, options, config, filePatterns } = binOptions;
553
+ const debug = options.debug ?? false;
554
+ console.log(`📇 Index: ${options.indexName}`);
555
+ // Print resolved run configuration when --debug is set
556
+ if (debug) {
557
+ logDebugConfig(options, filePatterns, config);
558
+ }
559
+ const progress = new ProgressDisplay();
560
+ await cleanVectorStoreIfRequested(framework, options);
561
+ // Handle diff-based processing (workflow mode)
562
+ const changedFiles = options.diff ? await getDiff(options) : [];
563
+ // Create file stream: diff mode uses git changes, normal mode uses globby
564
+ const files$ = createFileStream$(options, config, filePatterns, changedFiles);
565
+ // Enrich files with metadata and filter by allowed patterns
566
+ const processedFiles$ = createProcessedFilesStream$(files$, config, debug, progress);
567
+ // Split stream: removed files for deletion, new/modified for indexing
568
+ const removedFiles$ = processedFiles$.pipe(filter((file) => file.status === 'removed'));
569
+ // Create processing streams
570
+ const delete$ = createDeleteRemovedFilesStream(removedFiles$, framework, options);
571
+ // New/modified files for indexing
572
+ const indexFiles$ = processedFiles$.pipe(filter((file) => file.status === 'new' || file.status === 'modified'),
573
+ // Share for markdown$ and typescript$ pipelines
574
+ shareReplay({ refCount: true }));
575
+ // Parse raw/markdown/TypeScript files into document entries
576
+ const parsed$ = createParsedDocumentsStream$(indexFiles$, config, debug, progress);
577
+ // Apply metadata to documents
578
+ const { stream$: applyMetadata$, state: metadataState } = createMetadataStream$(parsed$, config, progress);
579
+ // Resolve promoted schema fields (if schema is configured) — runs after
580
+ // metadata enrichment so the resolver has access to git, package, and
581
+ // custom attributes from attributeProcessor
582
+ const applySchema$ = applySchema(applyMetadata$, config.index?.schema);
583
+ // Generate embeddings in batches with retry on rate-limit (429) errors
584
+ const embeddingService = framework.ai.useEmbed(options.embedModel);
585
+ const { stream$: applyEmbedding$, state: embeddingState } = createEmbeddingStream$(applySchema$, embeddingService, debug, progress, metadataState);
586
+ // Update vector store — batch documents and upsert concurrently
587
+ const upsert$ = createUpsertStream$(applyEmbedding$, framework, options, debug);
588
+ // Execute pipeline and report final results
589
+ runIndexingPipeline(delete$, upsert$, progress, embeddingState);
590
+ }
428
591
  //# sourceMappingURL=embed.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"embed.js","sourceRoot":"","sources":["../../../src/bin/embed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embed.js","sourceRoot":"","sources":["../../../src/bin/embed.ts"],"names":[],"mappings":"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"}