sdlc-agent-4-enterprise-server 1.17.0 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +3 -2
  2. package/dist/config/__tests__/CoreTools.test.js +1 -1
  3. package/dist/config/__tests__/CoreTools.test.js.map +1 -1
  4. package/dist/database/dialect/DialectHelper.d.ts +4 -0
  5. package/dist/database/dialect/DialectHelper.js +12 -0
  6. package/dist/database/dialect/DialectHelper.js.map +1 -1
  7. package/dist/engine/indexer/file-watcher.d.ts +4 -0
  8. package/dist/engine/indexer/file-watcher.js +4 -0
  9. package/dist/engine/indexer/file-watcher.js.map +1 -1
  10. package/dist/engine/indexer/index-operation-manager.d.ts +58 -0
  11. package/dist/engine/indexer/index-operation-manager.js +112 -0
  12. package/dist/engine/indexer/index-operation-manager.js.map +1 -0
  13. package/dist/engine/indexer/indexing-engine.d.ts +18 -5
  14. package/dist/engine/indexer/indexing-engine.js +60 -18
  15. package/dist/engine/indexer/indexing-engine.js.map +1 -1
  16. package/dist/engine/indexer/types.d.ts +39 -0
  17. package/dist/engine/indexer/types.js +6 -0
  18. package/dist/engine/indexer/types.js.map +1 -0
  19. package/dist/engine/parsers/dependency-resolver.d.ts +13 -1
  20. package/dist/engine/parsers/dependency-resolver.js +18 -45
  21. package/dist/engine/parsers/dependency-resolver.js.map +1 -1
  22. package/dist/modules/memory/MemoryModule.js +1 -0
  23. package/dist/modules/memory/MemoryModule.js.map +1 -1
  24. package/dist/modules/memory/MemoryModuleBuilder.d.ts +2 -0
  25. package/dist/modules/memory/MemoryModuleBuilder.js +33 -0
  26. package/dist/modules/memory/MemoryModuleBuilder.js.map +1 -1
  27. package/dist/modules/memory/definitions/enrich.d.ts +59 -0
  28. package/dist/modules/memory/definitions/enrich.js +40 -0
  29. package/dist/modules/memory/definitions/enrich.js.map +1 -0
  30. package/dist/modules/memory/definitions/index.d.ts +55 -0
  31. package/dist/modules/memory/definitions/index.js +3 -1
  32. package/dist/modules/memory/definitions/index.js.map +1 -1
  33. package/dist/modules/memory/dispatchers/crud.d.ts +1 -1
  34. package/dist/modules/memory/dispatchers/crud.js +70 -11
  35. package/dist/modules/memory/dispatchers/crud.js.map +1 -1
  36. package/dist/modules/memory/dispatchers/dispatcher.js +3 -1
  37. package/dist/modules/memory/dispatchers/dispatcher.js.map +1 -1
  38. package/dist/modules/memory/dispatchers/enrich-validation.d.ts +35 -0
  39. package/dist/modules/memory/dispatchers/enrich-validation.js +90 -0
  40. package/dist/modules/memory/dispatchers/enrich-validation.js.map +1 -0
  41. package/dist/modules/memory/dispatchers/enrich.d.ts +19 -0
  42. package/dist/modules/memory/dispatchers/enrich.js +80 -0
  43. package/dist/modules/memory/dispatchers/enrich.js.map +1 -0
  44. package/dist/modules/memory/dispatchers/search.js +31 -0
  45. package/dist/modules/memory/dispatchers/search.js.map +1 -1
  46. package/dist/modules/memory/engine/core.d.ts +1 -0
  47. package/dist/modules/memory/engine/core.js +11 -6
  48. package/dist/modules/memory/engine/core.js.map +1 -1
  49. package/dist/modules/memory/engine/crud.js +42 -25
  50. package/dist/modules/memory/engine/crud.js.map +1 -1
  51. package/dist/modules/memory/evolution/AutoPinService.d.ts +13 -0
  52. package/dist/modules/memory/evolution/AutoPinService.js +60 -0
  53. package/dist/modules/memory/evolution/AutoPinService.js.map +1 -0
  54. package/dist/modules/memory/evolution/OutcomeService.js +1 -1
  55. package/dist/modules/memory/evolution/OutcomeService.js.map +1 -1
  56. package/dist/modules/memory/evolution/Scheduler.d.ts +1 -0
  57. package/dist/modules/memory/evolution/Scheduler.js +24 -1
  58. package/dist/modules/memory/evolution/Scheduler.js.map +1 -1
  59. package/dist/modules/memory/models.d.ts +6 -0
  60. package/dist/modules/memory/models.js.map +1 -1
  61. package/dist/modules/memory/schema/index.d.ts +1 -0
  62. package/dist/modules/memory/schema/index.js +1 -0
  63. package/dist/modules/memory/schema/index.js.map +1 -1
  64. package/dist/modules/memory/schema/migrations/007_enrichment_status.d.ts +13 -0
  65. package/dist/modules/memory/schema/migrations/007_enrichment_status.js +37 -0
  66. package/dist/modules/memory/schema/migrations/007_enrichment_status.js.map +1 -0
  67. package/dist/modules/memory/task-queue/TaskWorker.d.ts +2 -0
  68. package/dist/modules/memory/task-queue/TaskWorker.js +71 -2
  69. package/dist/modules/memory/task-queue/TaskWorker.js.map +1 -1
  70. package/dist/modules/memory/task-queue/__tests__/TaskWorker.it.test.js +9 -0
  71. package/dist/modules/memory/task-queue/__tests__/TaskWorker.it.test.js.map +1 -1
  72. package/dist/modules/memory/task-queue/__tests__/TaskWorker.test.js +14 -4
  73. package/dist/modules/memory/task-queue/__tests__/TaskWorker.test.js.map +1 -1
  74. package/dist/modules/memory/tool-definitions.js +1 -0
  75. package/dist/modules/memory/tool-definitions.js.map +1 -1
  76. package/dist/server/routes/api-index-decoupled.d.ts +84 -0
  77. package/dist/server/routes/api-index-decoupled.js +183 -0
  78. package/dist/server/routes/api-index-decoupled.js.map +1 -0
  79. package/dist/server/routes/api-index.js +26 -0
  80. package/dist/server/routes/api-index.js.map +1 -1
  81. package/package.json +1 -1
  82. package/src/config/__tests__/CoreTools.test.ts +1 -1
  83. package/src/database/dialect/DialectHelper.ts +12 -0
  84. package/src/engine/indexer/file-watcher.ts +4 -0
  85. package/src/engine/indexer/index-operation-manager.ts +137 -0
  86. package/src/engine/indexer/indexing-engine.ts +56 -18
  87. package/src/engine/indexer/types.ts +51 -0
  88. package/src/engine/parsers/dependency-resolver.ts +19 -43
  89. package/src/modules/memory/MemoryModule.ts +1 -0
  90. package/src/modules/memory/MemoryModuleBuilder.ts +39 -0
  91. package/src/modules/memory/definitions/enrich.ts +40 -0
  92. package/src/modules/memory/definitions/index.ts +3 -1
  93. package/src/modules/memory/dispatchers/crud.ts +91 -11
  94. package/src/modules/memory/dispatchers/dispatcher.ts +3 -1
  95. package/src/modules/memory/dispatchers/enrich-validation.ts +95 -0
  96. package/src/modules/memory/dispatchers/enrich.ts +118 -0
  97. package/src/modules/memory/dispatchers/search.ts +38 -0
  98. package/src/modules/memory/engine/core.ts +11 -7
  99. package/src/modules/memory/engine/crud.ts +53 -39
  100. package/src/modules/memory/evolution/AutoPinService.ts +87 -0
  101. package/src/modules/memory/evolution/OutcomeService.ts +1 -1
  102. package/src/modules/memory/evolution/Scheduler.ts +27 -1
  103. package/src/modules/memory/models.ts +6 -0
  104. package/src/modules/memory/schema/index.ts +1 -0
  105. package/src/modules/memory/schema/migrations/007_enrichment_status.ts +45 -0
  106. package/src/modules/memory/task-queue/TaskWorker.ts +85 -2
  107. package/src/modules/memory/task-queue/__tests__/TaskWorker.it.test.ts +10 -0
  108. package/src/modules/memory/task-queue/__tests__/TaskWorker.test.ts +14 -4
  109. package/src/modules/memory/tool-definitions.ts +1 -0
  110. package/src/server/routes/api-index-decoupled.ts +203 -0
  111. package/src/server/routes/api-index.ts +25 -0
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  </p>
7
7
 
8
8
  <p align="center">
9
- <img src="https://img.shields.io/badge/version-1.16.0-blue?style=for-the-badge" alt="Version">
9
+ <img src="https://img.shields.io/badge/version-1.18.0-blue?style=for-the-badge" alt="Version">
10
10
  <img src="https://img.shields.io/badge/tools-66+-teal?style=for-the-badge" alt="Tools">
11
11
  <img src="https://img.shields.io/badge/node-%3E%3D18-green?style=for-the-badge" alt="Node">
12
12
  </p>
@@ -38,7 +38,7 @@ Server starts at **http://localhost:48721**. Verify it's running:
38
38
 
39
39
  ```bash
40
40
  curl http://localhost:48721/health
41
- # → {"status":"healthy","version":"1.5.0","uptime":5,"tools_loaded":52}
41
+ # → {"status":"healthy","version":"1.18.0","uptime":5,"tools_loaded":52}
42
42
  ```
43
43
 
44
44
  ### Development Mode (auto-reload)
@@ -233,6 +233,7 @@ The embedding model is expected at `.code-intel/models/model.onnx`. Download it:
233
233
 
234
234
  | Version | Date | Ticket | Changes |
235
235
  |---------|------|--------|---------|
236
+ | 1.18.0 | 2026-07-31 | SA4E-79 | Client-Side LLM Knowledge Enrichment hardening: `handleIngestFile`/`handleIngest` always mark `pending` + enqueue TAG_ENRICHMENT (NEW-01/NEW-06/NEW-10), TaskWorker tags/structured_map conditional updates as race guards (NEW-03), USER-scoped entries enrichable without projectId (NEW-07), pending section LIMIT 3→10 (NEW-09). FTS fix: `knowledge_fts` auto-rebuild at startup when empty — restores `mem_search` for pre-existing entries. |
236
237
  | 1.17.0 | 2026-07-30 | SA4E-77 | Pega Knowledge Graph: categorized node types (PROCESS, DECISION, DATA_MODEL, UI, etc.), config-driven mapping (`pega-categories.json`), Pega-mode color switching in graph legend. Code/KB split uses entry_id prefix. Dashboard includes Pega rules in codeSymbols. isPega flag in /positions API. |
237
238
  | 1.16.0 | 2026-07-25 | — | Memory Evolution Levels L4-L6 (Collective Graph, Skill/Procedural Memory, Reflective Consolidation) implemented with real backend services and graph algorithms. Admin configuration checks resilience for Zen Upstream, TaskWorker endpoints, user management, and dynamic Admin Web UI. |
238
239
  | 1.15.0 | 2026-07-24 | SA4E-49/50/51 | PostgreSQL adapter with async DatabaseAdapter. KB tag scope fix (USER→PROJECT, now 4k+ tags visible). JWT auth, RBAC tools, config tracking. DI Container, ModuleFactory, EventBus. Agent sync to kiro/claude-code/codex-openai/github-copilot. |
@@ -18,7 +18,7 @@ describe('CoreTools.resolveCoreToolNames', () => {
18
18
  it('UT-01: valid CORE set resolves to exactly 10 names', () => {
19
19
  const set = resolveCoreToolNames();
20
20
  expect(set).toBeInstanceOf(Set);
21
- expect(set.size).toBe(10);
21
+ expect(set.size).toBe(CORE_TOOLS.length);
22
22
  for (const name of [
23
23
  'mem_search', 'mem_ingest', 'mem_ingest_file', 'code_search',
24
24
  'get_curated_context', 'find_tools', 'execute_dynamic_tool', 'orchestration_status',
@@ -1 +1 @@
1
- {"version":3,"file":"CoreTools.test.js","sourceRoot":"","sources":["../../../src/config/__tests__/CoreTools.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CoreTools.test.js","sourceRoot":"","sources":["../../../src/config/__tests__/CoreTools.test.ts"],"names":[],"mappings":"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"}
@@ -35,4 +35,8 @@ export declare class DialectHelper {
35
35
  * // PG: created_at::timestamp <= NOW() - INTERVAL '24 hours'
36
36
  */
37
37
  dateColumnCompare(column: string, operator: '<= now -' | '<= now', interval?: string): string;
38
+ /** Cross-engine LEAST/MIN — returns smallest of two numeric expressions. */
39
+ least(a: string, b: string): string;
40
+ /** Cross-engine expiry check — compares TEXT date column against now. */
41
+ expiryCheck(column: string): string;
38
42
  }
@@ -79,5 +79,17 @@ export class DialectHelper {
79
79
  }
80
80
  return `datetime(${column}) <= datetime('now')`;
81
81
  }
82
+ /** Cross-engine LEAST/MIN — returns smallest of two numeric expressions. */
83
+ least(a, b) {
84
+ if (this.engine === 'postgresql')
85
+ return `LEAST(${a}, ${b}::double precision)`;
86
+ return `MIN(${a}, ${b})`;
87
+ }
88
+ /** Cross-engine expiry check — compares TEXT date column against now. */
89
+ expiryCheck(column) {
90
+ if (this.engine === 'postgresql')
91
+ return `(${column} IS NULL OR ${column}::timestamp >= NOW())`;
92
+ return `(${column} IS NULL OR ${column} >= datetime('now'))`;
93
+ }
82
94
  }
83
95
  //# sourceMappingURL=DialectHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DialectHelper.js","sourceRoot":"","sources":["../../../src/database/dialect/DialectHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DialectHelper.js","sourceRoot":"","sources":["../../../src/database/dialect/DialectHelper.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
1
  /**
2
+ * @deprecated SA4E-78: File watching moved to Extension side (VS Code FileSystemWatcher).
3
+ * This class is retained for backward compatibility with co-located deployments.
4
+ * For decoupled deployments, use POST /api/index/file-events instead.
5
+ *
2
6
  * File Watcher — chokidar-based file system watcher with debounce.
3
7
  * Gracefully degrades if chokidar is not installed.
4
8
  */
@@ -1,4 +1,8 @@
1
1
  /**
2
+ * @deprecated SA4E-78: File watching moved to Extension side (VS Code FileSystemWatcher).
3
+ * This class is retained for backward compatibility with co-located deployments.
4
+ * For decoupled deployments, use POST /api/index/file-events instead.
5
+ *
2
6
  * File Watcher — chokidar-based file system watcher with debounce.
3
7
  * Gracefully degrades if chokidar is not installed.
4
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../../../src/engine/indexer/file-watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../../../src/engine/indexer/file-watcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * SA4E-78 — IndexOperationManager (SRP: operation lifecycle tracking).
3
+ * Manages active index operations with AbortControllers and progress state.
4
+ * Separated from IndexingEngine so engine focuses on indexing logic only.
5
+ */
6
+ import type { IndexingEngine } from './indexing-engine.js';
7
+ import type { IndexScope } from './index-scope.js';
8
+ import type { ProgressPhase, OperationStatus, ProgressEvent } from './types.js';
9
+ /** Tracks a single active index operation. */
10
+ export interface IndexOperation {
11
+ operationId: string;
12
+ projectId: string;
13
+ status: OperationStatus;
14
+ phase: ProgressPhase;
15
+ current: number;
16
+ total: number;
17
+ startedAt: Date;
18
+ abortController: AbortController;
19
+ error?: string;
20
+ }
21
+ /**
22
+ * Manages index operation lifecycle: start, cancel, progress tracking.
23
+ * One operation per projectId at a time — enforced by internal Map.
24
+ */
25
+ export declare class IndexOperationManager {
26
+ private readonly engine;
27
+ private operations;
28
+ constructor(engine: IndexingEngine);
29
+ /**
30
+ * Start a new full index operation for the given project.
31
+ * @param projectId - Tenant identifier
32
+ * @param scope - Workspace scope for the index run
33
+ * @returns The created operation, or null if already running (409)
34
+ */
35
+ startOperation(projectId: string, scope: IndexScope): IndexOperation | null;
36
+ /**
37
+ * Cancel a running index operation via AbortSignal.
38
+ * @param projectId - Tenant identifier
39
+ * @returns The cancelled operation, or null if not found/not running (404)
40
+ */
41
+ cancelOperation(projectId: string): IndexOperation | null;
42
+ /**
43
+ * Get current progress snapshot for a project.
44
+ * @param projectId - Tenant identifier
45
+ * @returns Progress event (idle if no active operation)
46
+ */
47
+ getProgress(projectId: string): ProgressEvent;
48
+ /** Check if a project has an active running operation. */
49
+ isRunning(projectId: string): boolean;
50
+ /**
51
+ * Called by IndexingEngine to update progress state at batch boundaries.
52
+ * @param projectId - Tenant identifier
53
+ * @param phase - Current phase
54
+ * @param current - Files processed so far
55
+ * @param total - Total files to process
56
+ */
57
+ updateProgress(projectId: string, phase: ProgressPhase, current: number, total: number): void;
58
+ }
@@ -0,0 +1,112 @@
1
+ /**
2
+ * SA4E-78 — IndexOperationManager (SRP: operation lifecycle tracking).
3
+ * Manages active index operations with AbortControllers and progress state.
4
+ * Separated from IndexingEngine so engine focuses on indexing logic only.
5
+ */
6
+ import { randomUUID } from 'crypto';
7
+ /** Auto-cleanup delay after operation completes (ms). */
8
+ const CLEANUP_DELAY_MS = 60_000;
9
+ /**
10
+ * Manages index operation lifecycle: start, cancel, progress tracking.
11
+ * One operation per projectId at a time — enforced by internal Map.
12
+ */
13
+ export class IndexOperationManager {
14
+ engine;
15
+ operations = new Map();
16
+ constructor(engine) {
17
+ this.engine = engine;
18
+ }
19
+ /**
20
+ * Start a new full index operation for the given project.
21
+ * @param projectId - Tenant identifier
22
+ * @param scope - Workspace scope for the index run
23
+ * @returns The created operation, or null if already running (409)
24
+ */
25
+ startOperation(projectId, scope) {
26
+ if (this.operations.has(projectId))
27
+ return null;
28
+ const op = {
29
+ operationId: `idx-${randomUUID().slice(0, 8)}`,
30
+ projectId,
31
+ status: 'running',
32
+ phase: 'scanning',
33
+ current: 0,
34
+ total: 0,
35
+ startedAt: new Date(),
36
+ abortController: new AbortController(),
37
+ };
38
+ this.operations.set(projectId, op);
39
+ // Fire-and-forget: engine runs in background
40
+ this.engine.runFullIndex(scope, op.abortController.signal)
41
+ .then(() => { op.status = 'completed'; op.phase = 'complete'; })
42
+ .catch((err) => {
43
+ op.status = 'failed';
44
+ op.phase = 'error';
45
+ op.error = String(err);
46
+ })
47
+ .finally(() => {
48
+ setTimeout(() => this.operations.delete(projectId), CLEANUP_DELAY_MS);
49
+ });
50
+ return op;
51
+ }
52
+ /**
53
+ * Cancel a running index operation via AbortSignal.
54
+ * @param projectId - Tenant identifier
55
+ * @returns The cancelled operation, or null if not found/not running (404)
56
+ */
57
+ cancelOperation(projectId) {
58
+ const op = this.operations.get(projectId);
59
+ if (!op || op.status !== 'running')
60
+ return null;
61
+ op.abortController.abort();
62
+ op.status = 'cancelled';
63
+ op.phase = 'cancelled';
64
+ return op;
65
+ }
66
+ /**
67
+ * Get current progress snapshot for a project.
68
+ * @param projectId - Tenant identifier
69
+ * @returns Progress event (idle if no active operation)
70
+ */
71
+ getProgress(projectId) {
72
+ const op = this.operations.get(projectId);
73
+ if (!op) {
74
+ return {
75
+ operationId: '', phase: 'idle',
76
+ current: 0, total: 0, percentage: 0,
77
+ startedAt: '', elapsedMs: 0,
78
+ };
79
+ }
80
+ const elapsed = Date.now() - op.startedAt.getTime();
81
+ const pct = op.total > 0 ? Math.round((op.current / op.total) * 100) : 0;
82
+ return {
83
+ operationId: op.operationId,
84
+ phase: op.phase,
85
+ current: op.current,
86
+ total: op.total,
87
+ percentage: pct,
88
+ startedAt: op.startedAt.toISOString(),
89
+ elapsedMs: elapsed,
90
+ };
91
+ }
92
+ /** Check if a project has an active running operation. */
93
+ isRunning(projectId) {
94
+ return this.operations.get(projectId)?.status === 'running';
95
+ }
96
+ /**
97
+ * Called by IndexingEngine to update progress state at batch boundaries.
98
+ * @param projectId - Tenant identifier
99
+ * @param phase - Current phase
100
+ * @param current - Files processed so far
101
+ * @param total - Total files to process
102
+ */
103
+ updateProgress(projectId, phase, current, total) {
104
+ const op = this.operations.get(projectId);
105
+ if (op) {
106
+ op.phase = phase;
107
+ op.current = current;
108
+ op.total = total;
109
+ }
110
+ }
111
+ }
112
+ //# sourceMappingURL=index-operation-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-operation-manager.js","sourceRoot":"","sources":["../../../src/engine/indexer/index-operation-manager.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** Indexing Engine — Full scan and incremental indexing. KSA-145. SA4E-53: async refactor. */
1
+ /** Indexing Engine — Full scan and incremental indexing. KSA-145. SA4E-53: async. SA4E-78: decoupled. */
2
2
  import type { DatabaseAdapter } from '../../database/adapters/DatabaseAdapter.js';
3
3
  import { AppConfig } from '../config.js';
4
4
  import { IndexScope } from './index-scope.js';
@@ -14,13 +14,25 @@ export declare class IndexingEngine {
14
14
  private grammarRegistry;
15
15
  private graphRepo;
16
16
  private treeSitterReady;
17
+ /** SA4E-78: Progress event emitter for Observer pattern. */
18
+ private readonly progressEmitter;
19
+ /** SA4E-78: Cached instance avoids repeated instantiation (AD-6). */
20
+ private readonly graphSyncService;
17
21
  constructor(adapter: DatabaseAdapter, config: AppConfig);
22
+ /**
23
+ * Subscribe to progress events emitted during index operations.
24
+ * @param event - Event name ('progress')
25
+ * @param handler - Callback receiving phase, current, total
26
+ */
27
+ on(event: string, handler: (...args: unknown[]) => void): void;
18
28
  private initTreeSitter;
19
29
  /** SA4E-53: Ensure graph schema is ready (async migration). */
20
30
  private ensureGraphSchema;
21
31
  startBackgroundIndexing(): Promise<void>;
22
- runFullIndex(scope?: Partial<IndexScope>): Promise<void>;
23
- /** Project this tenant's code symbols into graph_nodes in index DB (non-fatal). SA4E-53: async. */
32
+ runFullIndex(scope?: Partial<IndexScope>, signal?: AbortSignal): Promise<void>;
33
+ /** SA4E-78: Emit progress event via EventEmitter (Observer pattern). */
34
+ private emitProgress;
35
+ /** Project this tenant's code symbols into graph_nodes in index DB (non-fatal). SA4E-53: async. SA4E-78: cached. */
24
36
  private syncGraphNodes;
25
37
  /** Register workspace in project_registry so admin dropdown shows it (non-fatal). */
26
38
  private registerWorkspace;
@@ -59,18 +71,19 @@ export declare class IndexingEngine {
59
71
  } | null;
60
72
  /**
61
73
  * SA4E-53: replaced prepare() calls with inline runAsync/allAsync.
62
- * Uses transactionAsync batches for PostgreSQL compatibility.
74
+ * SA4E-78: added signal for cooperative cancellation at batch boundaries.
63
75
  */
64
76
  private indexFiles;
65
77
  /**
66
78
  * Register files into DB and collect those needing symbol indexing.
67
79
  * SA4E-53: replaces prepare()+transaction() with runAsync()+transactionAsync().
80
+ * SA4E-78: abort check at batch boundaries.
68
81
  */
69
82
  private registerFilesForIndex;
70
83
  private indexFileSymbolsTreeSitter;
71
84
  /**
72
85
  * SA4E-53: replaced prepare()+transaction() with transactionAsync()+runAsync().
73
- * indexFileSymbolsRegex uses PreparedStatement internally (SQLite-only path).
86
+ * SA4E-78: abort check at batch boundaries.
74
87
  */
75
88
  private indexFileSymbolsRegexFallback;
76
89
  private upsertFile;
@@ -1,10 +1,12 @@
1
- /** Indexing Engine — Full scan and incremental indexing. KSA-145. SA4E-53: async refactor. */
1
+ /** Indexing Engine — Full scan and incremental indexing. KSA-145. SA4E-53: async. SA4E-78: decoupled. */
2
2
  import { DialectHelper } from '../../database/dialect/DialectHelper.js';
3
+ import { EventEmitter } from 'events';
3
4
  import * as fs from 'fs';
4
5
  import * as path from 'path';
5
6
  import { fileURLToPath } from 'url';
6
7
  import pino from 'pino';
7
- import { scanWorkspace, scanSingleFile } from '../scanner/file-scanner.js';
8
+ import { scanWorkspaceAsync } from './async-file-scanner.js';
9
+ import { scanSingleFile } from '../scanner/file-scanner.js';
8
10
  import { TreeSitterIndexer } from '../parsers/tree-sitter-indexer.js';
9
11
  import { GrammarRegistry, loadGrammarConfig } from '../parsers/grammar-registry.js';
10
12
  import { GraphRepository } from '../database/graph-repository.js';
@@ -31,12 +33,25 @@ export class IndexingEngine {
31
33
  grammarRegistry = null;
32
34
  graphRepo = null;
33
35
  treeSitterReady = false;
36
+ /** SA4E-78: Progress event emitter for Observer pattern. */
37
+ progressEmitter = new EventEmitter();
38
+ /** SA4E-78: Cached instance avoids repeated instantiation (AD-6). */
39
+ graphSyncService;
34
40
  constructor(adapter, config) {
35
41
  this.adapter = adapter;
36
42
  this.dialect = new DialectHelper(adapter.getEngine());
37
43
  this.config = config;
44
+ this.graphSyncService = new GraphSyncService(this.adapter, this.adapter, logger);
38
45
  this.initTreeSitter();
39
46
  }
47
+ /**
48
+ * Subscribe to progress events emitted during index operations.
49
+ * @param event - Event name ('progress')
50
+ * @param handler - Callback receiving phase, current, total
51
+ */
52
+ on(event, handler) {
53
+ this.progressEmitter.on(event, handler);
54
+ }
40
55
  initTreeSitter() {
41
56
  // SA4E-53: schema check is async — run migrations lazily, non-blocking
42
57
  this.ensureGraphSchema().catch(err => {
@@ -71,7 +86,7 @@ export class IndexingEngine {
71
86
  // DISABLED: scanWorkspace blocks event loop on Windows with 1000+ files
72
87
  return;
73
88
  }
74
- async runFullIndex(scope) {
89
+ async runFullIndex(scope, signal) {
75
90
  const { projectId, workspace } = resolveScope(scope, {
76
91
  projectId: this.config.projectId,
77
92
  workspace: this.config.workspace,
@@ -82,9 +97,23 @@ export class IndexingEngine {
82
97
  logger.error(`[indexer] Starting full index (project=${projectId})...`);
83
98
  await new Promise(resolve => setImmediate(resolve));
84
99
  try {
85
- const files = scanWorkspace({ ...this.config, workspace });
100
+ // Phase: scanning (SA4E-78: async scan, non-blocking)
101
+ this.emitProgress(projectId, 'scanning', 0, 0);
102
+ const files = await scanWorkspaceAsync({ ...this.config, workspace });
103
+ if (signal?.aborted) {
104
+ this.emitProgress(projectId, 'cancelled', 0, 0);
105
+ return;
106
+ }
86
107
  logger.error(`[indexer] Found ${files.length} files to index`);
87
- await this.indexFiles(files, projectId);
108
+ // Phase: indexing
109
+ this.emitProgress(projectId, 'indexing', 0, files.length);
110
+ await this.indexFiles(files, projectId, signal);
111
+ if (signal?.aborted) {
112
+ this.emitProgress(projectId, 'cancelled', 0, 0);
113
+ return;
114
+ }
115
+ // Phase: resolving
116
+ this.emitProgress(projectId, 'resolving', 0, 0);
88
117
  await new Promise(resolve => setImmediate(resolve));
89
118
  await updateModules(this.adapter, projectId);
90
119
  await new Promise(resolve => setImmediate(resolve));
@@ -99,18 +128,22 @@ export class IndexingEngine {
99
128
  await this.syncGraphNodes(projectId);
100
129
  await new Promise(resolve => setImmediate(resolve));
101
130
  logSfdxStats(this.adapter, this.config, logger);
102
- // Register workspace in project_registry so admin UI can show it in dropdown
103
131
  this.registerWorkspace(projectId, workspace);
132
+ this.emitProgress(projectId, 'complete', files.length, files.length);
104
133
  logger.error('[indexer] Full index complete');
105
134
  }
106
135
  finally {
107
136
  this.indexing.delete(projectId);
108
137
  }
109
138
  }
110
- /** Project this tenant's code symbols into graph_nodes in index DB (non-fatal). SA4E-53: async. */
139
+ /** SA4E-78: Emit progress event via EventEmitter (Observer pattern). */
140
+ emitProgress(projectId, phase, current, total) {
141
+ this.progressEmitter.emit('progress', { projectId, phase, current, total });
142
+ }
143
+ /** Project this tenant's code symbols into graph_nodes in index DB (non-fatal). SA4E-53: async. SA4E-78: cached. */
111
144
  async syncGraphNodes(projectId) {
112
145
  try {
113
- await new GraphSyncService(this.adapter, this.adapter, logger).syncProjectSymbols(projectId);
146
+ await this.graphSyncService.syncProjectSymbols(projectId);
114
147
  }
115
148
  catch (err) {
116
149
  logger.error({ err }, '[indexer] Graph node sync skipped');
@@ -171,20 +204,23 @@ export class IndexingEngine {
171
204
  getSfdxStats() { return getSfdxStatsImpl(this.adapter, this.config); }
172
205
  /**
173
206
  * SA4E-53: replaced prepare() calls with inline runAsync/allAsync.
174
- * Uses transactionAsync batches for PostgreSQL compatibility.
207
+ * SA4E-78: added signal for cooperative cancellation at batch boundaries.
175
208
  */
176
- async indexFiles(files, projectId) {
177
- const { filesToIndex, skippedCount } = await this.registerFilesForIndex(files, projectId);
209
+ async indexFiles(files, projectId, signal) {
210
+ const { filesToIndex, skippedCount } = await this.registerFilesForIndex(files, projectId, signal);
211
+ if (signal?.aborted)
212
+ return;
178
213
  const counts = this.treeSitterReady && this.treeSitterIndexer
179
- ? await this.indexFileSymbolsTreeSitter(filesToIndex, projectId)
180
- : await this.indexFileSymbolsRegexFallback(filesToIndex, projectId);
214
+ ? await this.indexFileSymbolsTreeSitter(filesToIndex, projectId, signal)
215
+ : await this.indexFileSymbolsRegexFallback(filesToIndex, projectId, signal);
181
216
  logger.error(`[indexer] Indexed ${counts.treeSitterCount} files via tree-sitter, ${counts.regexCount} via regex fallback, ${skippedCount} unchanged`);
182
217
  }
183
218
  /**
184
219
  * Register files into DB and collect those needing symbol indexing.
185
220
  * SA4E-53: replaces prepare()+transaction() with runAsync()+transactionAsync().
221
+ * SA4E-78: abort check at batch boundaries.
186
222
  */
187
- async registerFilesForIndex(files, projectId) {
223
+ async registerFilesForIndex(files, projectId, signal) {
188
224
  const filesToIndex = [];
189
225
  let skippedCount = 0;
190
226
  const BATCH = 200;
@@ -192,6 +228,8 @@ export class IndexingEngine {
192
228
  ? `INSERT OR REPLACE INTO files (project_id,path,relative_path,language,module,content_hash,size_bytes,line_count,last_indexed,file_created_at,file_author,file_version) VALUES (?,?,?,?,?,?,?,?,${this.dialect.now()},?,?,?)`
193
229
  : `INSERT INTO files (project_id,path,relative_path,language,module,content_hash,size_bytes,line_count,last_indexed,file_created_at,file_author,file_version) VALUES (?,?,?,?,?,?,?,?,${this.dialect.now()},?,?,?) ON CONFLICT (project_id, path) DO UPDATE SET content_hash=EXCLUDED.content_hash, size_bytes=EXCLUDED.size_bytes, line_count=EXCLUDED.line_count, last_indexed=EXCLUDED.last_indexed, file_created_at=EXCLUDED.file_created_at, file_author=EXCLUDED.file_author, file_version=EXCLUDED.file_version`;
194
230
  for (let i = 0; i < files.length; i += BATCH) {
231
+ if (signal?.aborted)
232
+ break; // SA4E-78: cooperative cancellation
195
233
  const batch = files.slice(i, i + BATCH);
196
234
  await this.adapter.transactionAsync(async () => {
197
235
  for (const file of batch) {
@@ -207,14 +245,17 @@ export class IndexingEngine {
207
245
  ]);
208
246
  }
209
247
  });
248
+ this.emitProgress(projectId, 'indexing', Math.min(i + BATCH, files.length), files.length);
210
249
  await new Promise(resolve => setImmediate(resolve));
211
250
  }
212
251
  return { filesToIndex, skippedCount };
213
252
  }
214
- async indexFileSymbolsTreeSitter(filesToIndex, projectId) {
253
+ async indexFileSymbolsTreeSitter(filesToIndex, projectId, signal) {
215
254
  let treeSitterCount = 0;
216
255
  let regexCount = 0;
217
256
  for (let i = 0; i < filesToIndex.length; i += 50) {
257
+ if (signal?.aborted)
258
+ break; // SA4E-78: cooperative cancellation
218
259
  const batch = filesToIndex.slice(i, i + 50).map(f => ({ absolutePath: f.absolutePath, relativePath: f.relativePath }));
219
260
  for (const result of await this.treeSitterIndexer.indexFiles(batch, projectId)) {
220
261
  if (result.method === 'tree-sitter')
@@ -227,14 +268,15 @@ export class IndexingEngine {
227
268
  }
228
269
  /**
229
270
  * SA4E-53: replaced prepare()+transaction() with transactionAsync()+runAsync().
230
- * indexFileSymbolsRegex uses PreparedStatement internally (SQLite-only path).
271
+ * SA4E-78: abort check at batch boundaries.
231
272
  */
232
- async indexFileSymbolsRegexFallback(filesToIndex, projectId) {
273
+ async indexFileSymbolsRegexFallback(filesToIndex, projectId, signal) {
233
274
  logger.error('[indexer] Tree-sitter not available, using regex extraction');
234
275
  let regexCount = 0;
235
276
  const BATCH = 25;
236
- const insertSymbolSql = `INSERT INTO symbols (project_id,file_id,name,kind,signature,start_line,end_line,parent_symbol,visibility,doc_comment) VALUES (?,?,?,?,?,?,?,?,?,?)`;
237
277
  for (let i = 0; i < filesToIndex.length; i += BATCH) {
278
+ if (signal?.aborted)
279
+ break; // SA4E-78: cooperative cancellation
238
280
  const batch = filesToIndex.slice(i, i + BATCH);
239
281
  await this.adapter.transactionAsync(async () => {
240
282
  for (const file of batch) {
@@ -1 +1 @@
1
- {"version":3,"file":"indexing-engine.js","sourceRoot":"","sources":["../../../src/engine/indexer/indexing-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexing-engine.js","sourceRoot":"","sources":["../../../src/engine/indexer/indexing-engine.ts"],"names":[],"mappings":"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"}