sdlc-agent-4-enterprise-server 1.27.0 → 1.28.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.
- package/README.md +1 -1
- package/dist/admin/admin-db.d.ts +1 -1
- package/dist/admin/admin-db.js +1 -1
- package/dist/admin/admin-db.js.map +1 -1
- package/dist/admin/db/audit.d.ts +1 -1
- package/dist/admin/db/audit.js +5 -5
- package/dist/admin/db/audit.js.map +1 -1
- package/dist/admin/db/config.d.ts +1 -1
- package/dist/admin/db/config.js +5 -5
- package/dist/admin/db/config.js.map +1 -1
- package/dist/admin/db/core.d.ts +8 -10
- package/dist/admin/db/core.js +21 -47
- package/dist/admin/db/core.js.map +1 -1
- package/dist/admin/db/groups.d.ts +1 -1
- package/dist/admin/db/groups.js +9 -9
- package/dist/admin/db/groups.js.map +1 -1
- package/dist/admin/db/kb-embeddings.d.ts +1 -1
- package/dist/admin/db/kb-embeddings.js +5 -5
- package/dist/admin/db/kb-embeddings.js.map +1 -1
- package/dist/admin/db/kb-entries.d.ts +1 -1
- package/dist/admin/db/kb-entries.js +7 -7
- package/dist/admin/db/kb-entries.js.map +1 -1
- package/dist/admin/db/kb-search.d.ts +1 -1
- package/dist/admin/db/kb-search.js +4 -4
- package/dist/admin/db/kb-search.js.map +1 -1
- package/dist/admin/db/kb-tags.d.ts +1 -1
- package/dist/admin/db/kb-tags.js +9 -9
- package/dist/admin/db/kb-tags.js.map +1 -1
- package/dist/admin/db/promotion.d.ts +1 -1
- package/dist/admin/db/promotion.js +5 -5
- package/dist/admin/db/promotion.js.map +1 -1
- package/dist/admin/db/query-logs.d.ts +1 -1
- package/dist/admin/db/query-logs.js +6 -6
- package/dist/admin/db/query-logs.js.map +1 -1
- package/dist/admin/db/sessions.d.ts +1 -1
- package/dist/admin/db/sessions.js +8 -8
- package/dist/admin/db/sessions.js.map +1 -1
- package/dist/admin/db/users.d.ts +1 -1
- package/dist/admin/db/users.js +15 -15
- package/dist/admin/db/users.js.map +1 -1
- package/dist/admin/routes/user.router.js +2 -1
- package/dist/admin/routes/user.router.js.map +1 -1
- package/dist/admin/services/dashboard.service.js +3 -3
- package/dist/admin/services/dashboard.service.js.map +1 -1
- package/dist/admin/services/rbac.service.js +3 -1
- package/dist/admin/services/rbac.service.js.map +1 -1
- package/dist/admin/services/user.service.js +6 -6
- package/dist/admin/services/user.service.js.map +1 -1
- package/dist/config/index.js +1 -0
- package/dist/config/index.js.map +1 -1
- package/dist/database/DatabaseManager.d.ts +2 -2
- package/dist/database/DatabaseManager.js +2 -2
- package/dist/database/adapters/MysqlAdapter.js +1 -1
- package/dist/database/adapters/MysqlAdapter.js.map +1 -1
- package/dist/database/adapters/PostgresAdapter.d.ts +6 -6
- package/dist/database/adapters/PostgresAdapter.js +10 -17
- package/dist/database/adapters/PostgresAdapter.js.map +1 -1
- package/dist/database/migration/MigrationService.js +2 -3
- package/dist/database/migration/MigrationService.js.map +1 -1
- package/dist/database/migration/TypeMapper.js +3 -0
- package/dist/database/migration/TypeMapper.js.map +1 -1
- package/dist/database/repositories/GraphRepository.js +1 -1
- package/dist/database/repositories/GraphRepository.js.map +1 -1
- package/dist/engine/analyzers/security/idor/IDORDetector.js +1 -1
- package/dist/engine/analyzers/security/idor/IDORDetector.js.map +1 -1
- package/dist/engine/analyzers/security/injection/PatternMatcher.d.ts +1 -1
- package/dist/engine/analyzers/security/injection/PatternMatcher.js +1 -1
- package/dist/engine/analyzers/security/injection/PatternMatcher.js.map +1 -1
- package/dist/engine/context/curated-helpers.js +2 -0
- package/dist/engine/context/curated-helpers.js.map +1 -1
- package/dist/engine/context/edit-context-service.js +1 -1
- package/dist/engine/context/edit-context-service.js.map +1 -1
- package/dist/engine/context/edit-helpers.js +2 -0
- package/dist/engine/context/edit-helpers.js.map +1 -1
- package/dist/engine/db/resolver/download.js.map +1 -1
- package/dist/engine/enrichment/CodeEnrichmentPromptBuilder.js +16 -3
- package/dist/engine/enrichment/CodeEnrichmentPromptBuilder.js.map +1 -1
- package/dist/engine/enrichment/CodeEnrichmentTaskCreator.d.ts +17 -1
- package/dist/engine/enrichment/CodeEnrichmentTaskCreator.js +65 -15
- package/dist/engine/enrichment/CodeEnrichmentTaskCreator.js.map +1 -1
- package/dist/engine/graph/call-graph-service.js +0 -1
- package/dist/engine/graph/call-graph-service.js.map +1 -1
- package/dist/engine/graph/graph-sync-service.d.ts +6 -4
- package/dist/engine/graph/graph-sync-service.js +97 -35
- package/dist/engine/graph/graph-sync-service.js.map +1 -1
- package/dist/engine/graph/impact-helpers.d.ts +1 -1
- package/dist/engine/graph/impact-helpers.js +1 -1
- package/dist/engine/graph/impact-helpers.js.map +1 -1
- package/dist/engine/graph/migrator.js +6 -4
- package/dist/engine/graph/migrator.js.map +1 -1
- package/dist/engine/indexer/file-watcher.js +1 -1
- package/dist/engine/indexer/file-watcher.js.map +1 -1
- package/dist/engine/indexer/index-helper.js +0 -2
- package/dist/engine/indexer/index-helper.js.map +1 -1
- package/dist/engine/indexer/index-operation-manager.d.ts +2 -1
- package/dist/engine/indexer/index-operation-manager.js +11 -1
- package/dist/engine/indexer/index-operation-manager.js.map +1 -1
- package/dist/engine/indexer/indexing-engine.d.ts +2 -0
- package/dist/engine/indexer/indexing-engine.js +10 -5
- package/dist/engine/indexer/indexing-engine.js.map +1 -1
- package/dist/engine/indexer/project-type/detector.js.map +1 -1
- package/dist/engine/indexer/types.d.ts +1 -0
- package/dist/engine/parsers/dependency-resolver.js +2 -2
- package/dist/engine/parsers/dependency-resolver.js.map +1 -1
- package/dist/engine/parsers/grammar-registry.js.map +1 -1
- package/dist/engine/parsers/languages/apex/declarations.js.map +1 -1
- package/dist/engine/parsers/languages/apex/helpers.js.map +1 -1
- package/dist/engine/parsers/languages/apex/parser.js.map +1 -1
- package/dist/engine/parsers/languages/go/helpers.js.map +1 -1
- package/dist/engine/parsers/languages/go/members.js.map +1 -1
- package/dist/engine/parsers/languages/go/parser.js.map +1 -1
- package/dist/engine/parsers/languages/java/java-parser.js.map +1 -1
- package/dist/engine/parsers/languages/kotlin/parser.js.map +1 -1
- package/dist/engine/parsers/languages/python/helpers.js.map +1 -1
- package/dist/engine/parsers/languages/python/members.js.map +1 -1
- package/dist/engine/parsers/languages/python/parser.js.map +1 -1
- package/dist/engine/parsers/languages/rust/members.js.map +1 -1
- package/dist/engine/parsers/languages/rust/parser.js.map +1 -1
- package/dist/engine/parsers/languages/ts-symbol-extractor/members.d.ts +1 -1
- package/dist/engine/parsers/languages/ts-symbol-extractor/members.js +1 -1
- package/dist/engine/parsers/languages/ts-symbol-extractor/members.js.map +1 -1
- package/dist/engine/parsers/signature-extractor.js +1 -1
- package/dist/engine/parsers/signature-extractor.js.map +1 -1
- package/dist/engine/tools/drawio-parser.js +1 -2
- package/dist/engine/tools/drawio-parser.js.map +1 -1
- package/dist/engine/tools/drawio-renderers.js +1 -0
- package/dist/engine/tools/drawio-renderers.js.map +1 -1
- package/dist/engine/tools/layout-models.d.ts +1 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/knowledge/KnowledgeDb.d.ts +13 -0
- package/dist/knowledge/KnowledgeDb.js +43 -1
- package/dist/knowledge/KnowledgeDb.js.map +1 -1
- package/dist/knowledge/KnowledgeModule.d.ts +1 -1
- package/dist/knowledge/KnowledgeModule.js +3 -3
- package/dist/knowledge/KnowledgeModule.js.map +1 -1
- package/dist/knowledge/KnowledgeService.js +32 -3
- package/dist/knowledge/KnowledgeService.js.map +1 -1
- package/dist/modules/ModuleFactory.js.map +1 -1
- package/dist/modules/analytics/AnalyticsModule.js +2 -2
- package/dist/modules/analytics/AnalyticsModule.js.map +1 -1
- package/dist/modules/kb-graph/KBGraphModule.d.ts +1 -1
- package/dist/modules/kb-graph/KBGraphModule.js +3 -3
- package/dist/modules/kb-graph/KBGraphModule.js.map +1 -1
- package/dist/modules/kb-graph/service/index.d.ts +6 -0
- package/dist/modules/kb-graph/service/nodes.d.ts +1 -1
- package/dist/modules/kb-graph/service/nodes.js +1 -1
- package/dist/modules/kb-graph/service/nodes.js.map +1 -1
- package/dist/modules/kb-graph/service/spatial.d.ts +8 -1
- package/dist/modules/kb-graph/service/spatial.js +52 -3
- package/dist/modules/kb-graph/service/spatial.js.map +1 -1
- package/dist/modules/kb-graph/service/sync.d.ts +2 -1
- package/dist/modules/kb-graph/service/sync.js +7 -3
- package/dist/modules/kb-graph/service/sync.js.map +1 -1
- package/dist/modules/memory/MemoryModule.js.map +1 -1
- package/dist/modules/memory/MemoryModuleBuilder.js +7 -6
- package/dist/modules/memory/MemoryModuleBuilder.js.map +1 -1
- package/dist/modules/memory/MigrationRunner.js +1 -1
- package/dist/modules/memory/MigrationRunner.js.map +1 -1
- package/dist/modules/memory/dispatchers/analytics.js +38 -29
- package/dist/modules/memory/dispatchers/analytics.js.map +1 -1
- package/dist/modules/memory/dispatchers/crud.js +6 -6
- package/dist/modules/memory/dispatchers/crud.js.map +1 -1
- package/dist/modules/memory/dispatchers/enrich.js +7 -0
- package/dist/modules/memory/dispatchers/enrich.js.map +1 -1
- package/dist/modules/memory/dispatchers/graph-fallback.d.ts +1 -0
- package/dist/modules/memory/dispatchers/graph-fallback.js +5 -4
- package/dist/modules/memory/dispatchers/graph-fallback.js.map +1 -1
- package/dist/modules/memory/dispatchers/procedure.js +1 -1
- package/dist/modules/memory/dispatchers/procedure.js.map +1 -1
- package/dist/modules/memory/dispatchers/smart-ingest.js +4 -1
- package/dist/modules/memory/dispatchers/smart-ingest.js.map +1 -1
- package/dist/modules/memory/dispatchers/sync-code.js +1 -1
- package/dist/modules/memory/dispatchers/sync-code.js.map +1 -1
- package/dist/modules/memory/engine/core.js +2 -1
- package/dist/modules/memory/engine/core.js.map +1 -1
- package/dist/modules/memory/engine/crud.d.ts +7 -1
- package/dist/modules/memory/engine/crud.js +30 -56
- package/dist/modules/memory/engine/crud.js.map +1 -1
- package/dist/modules/memory/engine/pega-search.js +1 -1
- package/dist/modules/memory/engine/pega-search.js.map +1 -1
- package/dist/modules/memory/evolution/OutcomeService.js +0 -2
- package/dist/modules/memory/evolution/OutcomeService.js.map +1 -1
- package/dist/modules/memory/learning/ClusteringService.js +1 -3
- package/dist/modules/memory/learning/ClusteringService.js.map +1 -1
- package/dist/modules/memory/llm/LLMInitializer.js +3 -3
- package/dist/modules/memory/llm/LLMInitializer.js.map +1 -1
- package/dist/modules/memory/masking/MaskingMiddleware.js +0 -6
- package/dist/modules/memory/masking/MaskingMiddleware.js.map +1 -1
- package/dist/modules/memory/migrations/001-add-scope-columns.js +3 -1
- package/dist/modules/memory/migrations/001-add-scope-columns.js.map +1 -1
- package/dist/modules/memory/migrations/002-add-evolution-columns.js +6 -2
- package/dist/modules/memory/migrations/002-add-evolution-columns.js.map +1 -1
- package/dist/modules/memory/migrations/003-pending-tasks.js +1 -0
- package/dist/modules/memory/migrations/003-pending-tasks.js.map +1 -1
- package/dist/modules/memory/migrations/004-reset-sequences.js +5 -8
- package/dist/modules/memory/migrations/004-reset-sequences.js.map +1 -1
- package/dist/modules/memory/task-queue/PendingTaskRepository.d.ts +4 -1
- package/dist/modules/memory/task-queue/PendingTaskRepository.js +17 -5
- package/dist/modules/memory/task-queue/PendingTaskRepository.js.map +1 -1
- package/dist/modules/memory/task-queue/TaskWorker.d.ts +25 -23
- package/dist/modules/memory/task-queue/TaskWorker.js +135 -104
- package/dist/modules/memory/task-queue/TaskWorker.js.map +1 -1
- package/dist/modules/memory/task-queue/models.d.ts +4 -2
- package/dist/modules/memory/task-queue/models.js +4 -1
- package/dist/modules/memory/task-queue/models.js.map +1 -1
- package/dist/modules/orchestration/McpClientManager.js.map +1 -1
- package/dist/modules/orchestration/McpConfigService.js +2 -1
- package/dist/modules/orchestration/McpConfigService.js.map +1 -1
- package/dist/modules/orchestration/reindex/safeError.js +1 -1
- package/dist/modules/orchestration/reindex/safeError.js.map +1 -1
- package/dist/modules/pega/PegaCrawler.d.ts +1 -1
- package/dist/modules/pega/PegaCrawler.js +1 -1
- package/dist/modules/pega/PegaCrawler.js.map +1 -1
- package/dist/modules/pega/PegaGraphProjector.d.ts +3 -1
- package/dist/modules/pega/PegaGraphProjector.js +28 -9
- package/dist/modules/pega/PegaGraphProjector.js.map +1 -1
- package/dist/modules/pega/PegaIndexer.d.ts +6 -4
- package/dist/modules/pega/PegaIndexer.js +30 -42
- package/dist/modules/pega/PegaIndexer.js.map +1 -1
- package/dist/modules/pega/PegaKbSync.d.ts +14 -18
- package/dist/modules/pega/PegaKbSync.js +15 -171
- package/dist/modules/pega/PegaKbSync.js.map +1 -1
- package/dist/modules/pega/PegaRuleAstParser.js +2 -2
- package/dist/modules/pega/PegaRuleAstParser.js.map +1 -1
- package/dist/modules/pega/PegaRuleFetcherService.js +1 -1
- package/dist/modules/pega/PegaRuleFetcherService.js.map +1 -1
- package/dist/modules/pega/PegaService.d.ts +9 -11
- package/dist/modules/pega/PegaService.js +42 -186
- package/dist/modules/pega/PegaService.js.map +1 -1
- package/dist/modules/pega/PegaSymbolSync.js +3 -3
- package/dist/modules/pega/PegaSymbolSync.js.map +1 -1
- package/dist/modules/pega/declare/PegaDeclareParser.js +1 -13
- package/dist/modules/pega/declare/PegaDeclareParser.js.map +1 -1
- package/dist/modules/pega/deploy/PegaWorkerPool.js +2 -2
- package/dist/modules/pega/deploy/PegaWorkerPool.js.map +1 -1
- package/dist/modules/pega/expression/PegaExpressionParser.js.map +1 -1
- package/dist/modules/pega/expression/PegaWhenEvaluator.js +1 -1
- package/dist/modules/pega/expression/PegaWhenEvaluator.js.map +1 -1
- package/dist/modules/pega/metamodel/PegaMetaModelLoader.js +2 -7
- package/dist/modules/pega/metamodel/PegaMetaModelLoader.js.map +1 -1
- package/dist/modules/pega/pega-mapping.d.ts +6 -0
- package/dist/modules/pega/pega-mapping.js +14 -0
- package/dist/modules/pega/pega-mapping.js.map +1 -1
- package/dist/modules/pega/pega-utils.js.map +1 -1
- package/dist/modules/pega/references/PegaImpactAnalyzer.d.ts +1 -1
- package/dist/modules/pega/references/PegaImpactAnalyzer.js +1 -2
- package/dist/modules/pega/references/PegaImpactAnalyzer.js.map +1 -1
- package/dist/modules/pega/semantic/PegaRuleSimulator.d.ts +2 -2
- package/dist/modules/pega/semantic/PegaRuleSimulator.js +6 -6
- package/dist/modules/pega/semantic/PegaRuleSimulator.js.map +1 -1
- package/dist/modules/pega/semantic/PegaSemanticAnalyzer.js +0 -12
- package/dist/modules/pega/semantic/PegaSemanticAnalyzer.js.map +1 -1
- package/dist/modules/pega/ui/PegaHarnessAssembler.js.map +1 -1
- package/dist/modules/pega/ui/PegaSectionRenderer.js.map +1 -1
- package/dist/modules/pega/understanding/PegaRuleUnderstandingService.js +2 -2
- package/dist/modules/pega/understanding/PegaRuleUnderstandingService.js.map +1 -1
- package/dist/modules/security/SecurityModule.d.ts +1 -1
- package/dist/modules/security/SecurityModule.js +3 -3
- package/dist/modules/security/SecurityModule.js.map +1 -1
- package/dist/modules/security/gateguard/GateGuardService.js +1 -1
- package/dist/modules/security/gateguard/GateGuardService.js.map +1 -1
- package/dist/server/HttpServer.js.map +1 -1
- package/dist/server/routes/admin/analytics.js +11 -22
- package/dist/server/routes/admin/analytics.js.map +1 -1
- package/dist/server/routes/admin/config.js +15 -5
- package/dist/server/routes/admin/config.js.map +1 -1
- package/dist/server/routes/admin/context.js +2 -2
- package/dist/server/routes/admin/context.js.map +1 -1
- package/dist/server/routes/admin/database.js +2 -1
- package/dist/server/routes/admin/database.js.map +1 -1
- package/dist/server/routes/admin/index.js +2 -2
- package/dist/server/routes/admin/index.js.map +1 -1
- package/dist/server/routes/admin/kb-entries.js +43 -107
- package/dist/server/routes/admin/kb-entries.js.map +1 -1
- package/dist/server/routes/admin/kb-graph-spatial.d.ts +1 -1
- package/dist/server/routes/admin/kb-graph-spatial.js +4 -16
- package/dist/server/routes/admin/kb-graph-spatial.js.map +1 -1
- package/dist/server/routes/admin/kb-operations.js +6 -8
- package/dist/server/routes/admin/kb-operations.js.map +1 -1
- package/dist/server/routes/admin/static.d.ts +1 -1
- package/dist/server/routes/admin/static.js +1 -1
- package/dist/server/routes/admin/static.js.map +1 -1
- package/dist/server/routes/admin/users.js +3 -3
- package/dist/server/routes/admin/users.js.map +1 -1
- package/dist/server/routes/api-index-decoupled.d.ts +1 -0
- package/dist/server/routes/api-index.js +140 -116
- package/dist/server/routes/api-index.js.map +1 -1
- package/dist/server/routes/enrichment-status-routes.js +19 -2
- package/dist/server/routes/enrichment-status-routes.js.map +1 -1
- package/dist/server/routes/pega-api.js +11 -23
- package/dist/server/routes/pega-api.js.map +1 -1
- package/dist/server/routes/pega-stream-helpers.js +3 -3
- package/dist/server/routes/pega-stream-helpers.js.map +1 -1
- package/dist/server/routes/pega-stream.js +1 -2
- package/dist/server/routes/pega-stream.js.map +1 -1
- package/dist/server/routes/pega-sync-to-kb.d.ts +2 -2
- package/dist/server/routes/pega-sync-to-kb.js +6 -11
- package/dist/server/routes/pega-sync-to-kb.js.map +1 -1
- package/dist/servers/atlassian/tools/jira-user-tools.js.map +1 -1
- package/dist/shared/schemas/EnrichmentStatusSchema.d.ts +4 -4
- package/dist/tool-router/ToolHandlerDecorators.js +0 -3
- package/dist/tool-router/ToolHandlerDecorators.js.map +1 -1
- package/dist/viewer/admin/index.html +23 -36
- package/eslint.config.js +23 -6
- package/package.json +5 -1
- package/scripts/fix-stale-graph-nodes.ts +71 -0
- package/scripts/migrate-pega-symbols.ts +32 -13
- package/scripts/reset-enrichment.ts +54 -0
- package/src/admin/admin-db.ts +1 -1
- package/src/admin/db/audit.ts +5 -5
- package/src/admin/db/config.ts +5 -5
- package/src/admin/db/core.ts +22 -49
- package/src/admin/db/groups.ts +9 -9
- package/src/admin/db/kb-embeddings.ts +5 -5
- package/src/admin/db/kb-entries.ts +7 -7
- package/src/admin/db/kb-search.ts +4 -4
- package/src/admin/db/kb-tags.ts +9 -9
- package/src/admin/db/promotion.ts +5 -5
- package/src/admin/db/query-logs.ts +6 -6
- package/src/admin/db/sessions.ts +8 -8
- package/src/admin/db/users.ts +15 -15
- package/src/admin/middleware/rbac.middleware.ts +1 -1
- package/src/admin/routes/user.router.ts +1 -1
- package/src/admin/services/dashboard.service.ts +3 -3
- package/src/admin/services/rbac.service.ts +5 -1
- package/src/admin/services/user.service.ts +6 -6
- package/src/config/index.ts +1 -0
- package/src/database/DatabaseManager.ts +2 -2
- package/src/database/adapters/MysqlAdapter.ts +1 -1
- package/src/database/adapters/PostgresAdapter.ts +10 -16
- package/src/database/migration/MigrationService.ts +2 -3
- package/src/database/migration/TypeMapper.ts +3 -0
- package/src/database/repositories/GraphRepository.ts +1 -1
- package/src/engine/analyzers/security/idor/IDORDetector.ts +1 -1
- package/src/engine/analyzers/security/injection/InjectionScanner.ts +1 -1
- package/src/engine/analyzers/security/injection/PatternMatcher.ts +2 -2
- package/src/engine/analyzers/security/taint/TaintAnalyzer.ts +1 -1
- package/src/engine/analyzers/security/types/ssrf-types.ts +1 -1
- package/src/engine/analyzers/similarity/GitMiner.ts +1 -1
- package/src/engine/context/budget-allocator.ts +1 -1
- package/src/engine/context/curated-helpers.ts +3 -2
- package/src/engine/context/edit-context-service.ts +0 -2
- package/src/engine/context/edit-helpers.ts +2 -0
- package/src/engine/db/resolver/download.ts +0 -1
- package/src/engine/enrichment/CodeEnrichmentPromptBuilder.ts +16 -3
- package/src/engine/enrichment/CodeEnrichmentTaskCreator.ts +90 -21
- package/src/engine/enrichment/__tests__/CodeEnrichmentTaskCreator.test.ts +152 -0
- package/src/engine/enrichment/__tests__/enrichment-e2e.test.ts +239 -0
- package/src/engine/graph/call-graph-service.ts +2 -3
- package/src/engine/graph/graph-sync-service.ts +111 -35
- package/src/engine/graph/impact-helpers.ts +1 -1
- package/src/engine/graph/migrator.ts +6 -6
- package/src/engine/indexer/file-watcher.ts +1 -1
- package/src/engine/indexer/index-helper.ts +1 -3
- package/src/engine/indexer/index-operation-manager.ts +11 -1
- package/src/engine/indexer/indexing-engine.ts +12 -6
- package/src/engine/indexer/project-type/detector.ts +1 -1
- package/src/engine/indexer/types.ts +1 -0
- package/src/engine/parsers/dependency-resolver.ts +2 -2
- package/src/engine/parsers/embedding/body-extractor.ts +1 -1
- package/src/engine/parsers/grammar-registry.ts +0 -1
- package/src/engine/parsers/ignore/__tests__/ignore-parser.test.ts +0 -2
- package/src/engine/parsers/languages/apex/declarations.ts +1 -2
- package/src/engine/parsers/languages/apex/helpers.ts +2 -2
- package/src/engine/parsers/languages/apex/parser.ts +1 -2
- package/src/engine/parsers/languages/go/helpers.ts +1 -1
- package/src/engine/parsers/languages/go/members.ts +1 -1
- package/src/engine/parsers/languages/go/parser.ts +1 -2
- package/src/engine/parsers/languages/java/java-parser.ts +0 -1
- package/src/engine/parsers/languages/kotlin/parser.ts +0 -1
- package/src/engine/parsers/languages/python/helpers.ts +1 -1
- package/src/engine/parsers/languages/python/members.ts +1 -1
- package/src/engine/parsers/languages/python/parser.ts +1 -2
- package/src/engine/parsers/languages/rust/members.ts +1 -1
- package/src/engine/parsers/languages/rust/parser.ts +0 -1
- package/src/engine/parsers/languages/ts-symbol-extractor/members.ts +1 -1
- package/src/engine/parsers/languages/typescript-parser.ts +1 -1
- package/src/engine/parsers/signature-extractor.ts +1 -1
- package/src/engine/parsers/tree-sitter-indexer.ts +1 -1
- package/src/engine/tools/__tests__/artifact-analyzer.test.ts +0 -2
- package/src/engine/tools/__tests__/drawio-tool.test.ts +1 -1
- package/src/engine/tools/drawio-parser.ts +1 -3
- package/src/engine/tools/drawio-renderers.ts +4 -2
- package/src/engine/tools/layout-models.ts +1 -1
- package/src/index.ts +2 -2
- package/src/knowledge/KnowledgeDb.ts +50 -1
- package/src/knowledge/KnowledgeModule.ts +4 -4
- package/src/knowledge/KnowledgeService.ts +30 -2
- package/src/knowledge/__tests__/KnowledgeService.test.ts +52 -1
- package/src/knowledge/__tests__/routes.test.ts +23 -0
- package/src/modules/ModuleFactory.ts +0 -1
- package/src/modules/analytics/AnalyticsModule.ts +2 -3
- package/src/modules/kb-graph/KBGraphModule.ts +3 -3
- package/src/modules/kb-graph/service/nodes.ts +1 -1
- package/src/modules/kb-graph/service/spatial.ts +61 -4
- package/src/modules/kb-graph/service/sync.ts +8 -3
- package/src/modules/memory/MemoryModule.ts +0 -1
- package/src/modules/memory/MemoryModuleBuilder.ts +9 -10
- package/src/modules/memory/MigrationRunner.ts +1 -1
- package/src/modules/memory/__tests__/ClassifyService.test.ts +1 -1
- package/src/modules/memory/__tests__/IsolationLayer.test.ts +0 -1
- package/src/modules/memory/__tests__/ProjectIsolation.test.ts +0 -1
- package/src/modules/memory/__tests__/graph-fallback.test.ts +7 -7
- package/src/modules/memory/dispatchers/analytics.ts +50 -33
- package/src/modules/memory/dispatchers/crud.ts +6 -6
- package/src/modules/memory/dispatchers/enrich.ts +10 -0
- package/src/modules/memory/dispatchers/graph-fallback.ts +5 -4
- package/src/modules/memory/dispatchers/procedure.ts +1 -1
- package/src/modules/memory/dispatchers/smart-ingest.ts +1 -1
- package/src/modules/memory/dispatchers/sync-code.ts +2 -1
- package/src/modules/memory/engine/core.ts +2 -1
- package/src/modules/memory/engine/crud.ts +35 -66
- package/src/modules/memory/engine/pega-search.ts +1 -1
- package/src/modules/memory/evolution/OutcomeService.ts +0 -3
- package/src/modules/memory/learning/ClusteringService.ts +1 -4
- package/src/modules/memory/llm/LLMInitializer.ts +3 -3
- package/src/modules/memory/llm/__tests__/TagAnalyzerService.test.ts +2 -6
- package/src/modules/memory/masking/MaskingMiddleware.ts +0 -7
- package/src/modules/memory/migrations/001-add-scope-columns.ts +5 -1
- package/src/modules/memory/migrations/002-add-evolution-columns.ts +10 -2
- package/src/modules/memory/migrations/003-pending-tasks.ts +1 -0
- package/src/modules/memory/migrations/004-reset-sequences.ts +5 -6
- package/src/modules/memory/task-queue/PendingTaskRepository.ts +25 -6
- package/src/modules/memory/task-queue/TaskWorker.ts +155 -118
- package/src/modules/memory/task-queue/__tests__/TaskWorker.it.test.ts +1 -6
- package/src/modules/memory/task-queue/__tests__/TaskWorker.test.ts +119 -0
- package/src/modules/memory/task-queue/models.ts +4 -2
- package/src/modules/orchestration/McpClientManager.ts +1 -1
- package/src/modules/orchestration/McpConfigService.ts +2 -1
- package/src/modules/orchestration/reindex/safeError.ts +1 -1
- package/src/modules/pega/PegaCrawler.ts +1 -1
- package/src/modules/pega/PegaGraphProjector.ts +36 -9
- package/src/modules/pega/PegaIndexer.ts +39 -48
- package/src/modules/pega/PegaKbSync.ts +27 -221
- package/src/modules/pega/PegaRuleAstParser.ts +2 -2
- package/src/modules/pega/PegaRuleFetcherService.ts +1 -1
- package/src/modules/pega/PegaService.ts +47 -202
- package/src/modules/pega/PegaSymbolSync.ts +3 -3
- package/src/modules/pega/__tests__/decision/PegaDecisionEvaluator.test.ts +1 -1
- package/src/modules/pega/__tests__/decisioning/PegaDecisioningParser.test.ts +1 -1
- package/src/modules/pega/__tests__/deploy/PegaDeploy.test.ts +2 -2
- package/src/modules/pega/__tests__/expression/PegaExpressionProperty.test.ts +1 -2
- package/src/modules/pega/__tests__/inference/PegaInference.test.ts +1 -3
- package/src/modules/pega/__tests__/inference/PegaSchemaKBService.test.ts +3 -5
- package/src/modules/pega/__tests__/metamodel/PegaMetaModelCompiler.test.ts +0 -1
- package/src/modules/pega/__tests__/portal/PegaPortalParser.test.ts +1 -1
- package/src/modules/pega/__tests__/semantic/PegaSemantic.test.ts +0 -2
- package/src/modules/pega/__tests__/understanding/PegaRuleUnderstanding.test.ts +0 -1
- package/src/modules/pega/__tests__/workflow/PegaWorkflowEngine.test.ts +0 -1
- package/src/modules/pega/connect/PegaConnectParser.ts +1 -1
- package/src/modules/pega/decision/PegaEvaluationResult.ts +0 -2
- package/src/modules/pega/declare/PegaDeclareParser.ts +1 -14
- package/src/modules/pega/deploy/PegaWorkerPool.ts +2 -2
- package/src/modules/pega/expression/PegaExpressionParser.ts +0 -1
- package/src/modules/pega/expression/PegaWhenEvaluator.ts +1 -1
- package/src/modules/pega/metamodel/PegaMetaModelCompiler.ts +1 -1
- package/src/modules/pega/metamodel/PegaMetaModelLoader.ts +2 -8
- package/src/modules/pega/pega-mapping.ts +17 -0
- package/src/modules/pega/pega-utils.ts +8 -2
- package/src/modules/pega/references/PegaImpactAnalyzer.ts +2 -3
- package/src/modules/pega/semantic/PegaRuleSimulator.ts +6 -7
- package/src/modules/pega/semantic/PegaSemanticAnalyzer.ts +0 -16
- package/src/modules/pega/ui/PegaHarnessAssembler.ts +0 -1
- package/src/modules/pega/ui/PegaSectionRenderer.ts +0 -1
- package/src/modules/pega/understanding/PegaRuleUnderstandingService.ts +2 -2
- package/src/modules/security/SecurityModule.ts +3 -3
- package/src/modules/security/gateguard/GateGuardService.ts +1 -1
- package/src/server/HttpServer.ts +1 -1
- package/src/server/middleware/__tests__/jwt-auth.test.ts +3 -3
- package/src/server/middleware/__tests__/localhost-only.test.ts +1 -1
- package/src/server/middleware/__tests__/request-logger.test.ts +1 -1
- package/src/server/middleware/__tests__/security-headers.test.ts +1 -1
- package/src/server/routes/admin/analytics.ts +12 -16
- package/src/server/routes/admin/config.ts +6 -6
- package/src/server/routes/admin/context.ts +2 -2
- package/src/server/routes/admin/database.ts +2 -1
- package/src/server/routes/admin/index.ts +3 -3
- package/src/server/routes/admin/kb-entries.ts +46 -104
- package/src/server/routes/admin/kb-graph-spatial.ts +5 -14
- package/src/server/routes/admin/kb-operations.ts +7 -9
- package/src/server/routes/admin/static.ts +1 -1
- package/src/server/routes/admin/users.ts +3 -3
- package/src/server/routes/api-index.ts +137 -114
- package/src/server/routes/enrichment-status-routes.ts +20 -3
- package/src/server/routes/pega-api.ts +13 -24
- package/src/server/routes/pega-stream-helpers.ts +3 -3
- package/src/server/routes/pega-stream.ts +1 -2
- package/src/server/routes/pega-sync-to-kb.ts +7 -14
- package/src/servers/atlassian/__tests__/e2e-api.test.ts +0 -1
- package/src/servers/atlassian/__tests__/integration.test.ts +1 -2
- package/src/servers/atlassian/__tests__/pbt.test.ts +0 -1
- package/src/servers/atlassian/__tests__/unit-base-client.test.ts +1 -1
- package/src/servers/atlassian/__tests__/unit-rate-limiter.test.ts +1 -1
- package/src/servers/atlassian/__tests__/unit-schemas.test.ts +2 -2
- package/src/servers/atlassian/tools/jira-user-tools.ts +1 -1
- package/src/tool-router/ToolHandlerDecorators.ts +0 -4
- package/src/tool-router/ToolRouter.ts +1 -1
- package/src/viewer/admin/index.html +23 -36
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.
|
|
9
|
+
<img src="https://img.shields.io/badge/version-1.28.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>
|
package/dist/admin/admin-db.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* admin-db.ts — Barrel export for all admin database functions.
|
|
3
3
|
* SA4E-50: All exported functions are async (return Promise<T>).
|
|
4
4
|
*/
|
|
5
|
-
export { getAdminDb, getIndexDbPath, getActiveEngine, getActiveDbConfig, resetAdminDb,
|
|
5
|
+
export { getAdminDb, getIndexDbPath, getActiveEngine, getActiveDbConfig, resetAdminDb, getDbAdapter, initAdapters, hashPassword, verifyPassword, generateToken, } from './db/core.js';
|
|
6
6
|
export { getUsers, getUserById, getUserByUsername, createUser, updateUserStatus, deleteUser, resetUserPassword, changePassword, updateLastLogin, updateUserEmail, updateUser, getUserCount, getUserCountByGroup, } from './db/users.js';
|
|
7
7
|
export { getGroups, getGroupById, createGroup, updateGroup, deleteGroup, getUserPermissions, getGroupPermissionIds, } from './db/groups.js';
|
|
8
8
|
export { createSession, validateSession, invalidateSession, invalidateUserSessions, refreshSession, getUserSessions, } from './db/sessions.js';
|
package/dist/admin/admin-db.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* admin-db.ts — Barrel export for all admin database functions.
|
|
3
3
|
* SA4E-50: All exported functions are async (return Promise<T>).
|
|
4
4
|
*/
|
|
5
|
-
export { getAdminDb, getIndexDbPath, getActiveEngine, getActiveDbConfig, resetAdminDb,
|
|
5
|
+
export { getAdminDb, getIndexDbPath, getActiveEngine, getActiveDbConfig, resetAdminDb, getDbAdapter, initAdapters, hashPassword, verifyPassword, generateToken, } from './db/core.js';
|
|
6
6
|
export { getUsers, getUserById, getUserByUsername, createUser, updateUserStatus, deleteUser, resetUserPassword, changePassword, updateLastLogin, updateUserEmail, updateUser, getUserCount, getUserCountByGroup, } from './db/users.js';
|
|
7
7
|
export { getGroups, getGroupById, createGroup, updateGroup, deleteGroup, getUserPermissions, getGroupPermissionIds, } from './db/groups.js';
|
|
8
8
|
export { createSession, validateSession, invalidateSession, invalidateUserSessions, refreshSession, getUserSessions, } from './db/sessions.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-db.js","sourceRoot":"","sources":["../../src/admin/admin-db.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAC9D,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"admin-db.js","sourceRoot":"","sources":["../../src/admin/admin-db.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAC9D,YAAY,EAAE,YAAY,EAAE,YAAY,EACxC,YAAY,EAAE,cAAc,EAAE,aAAa,GAC5C,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,gBAAgB,EACtE,UAAU,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAC9D,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,GAC/D,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAC9D,kBAAkB,EAAE,qBAAqB,GAC1C,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,aAAa,EAAE,eAAe,EAAE,iBAAiB,EACjD,sBAAsB,EAAE,cAAc,EAAE,eAAe,GACxD,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG7E,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAEpH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEnF,OAAO,EACL,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAC5C,WAAW,EAAE,WAAW,EAAE,iBAAiB,GAC5C,MAAM,iBAAiB,CAAC"}
|
package/dist/admin/db/audit.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* admin/db/audit.ts — Audit log recording and retrieval.
|
|
3
|
-
* SA4E-50: All functions are async; use
|
|
3
|
+
* SA4E-50: All functions are async; use getDbAdapter() for multi-DB support.
|
|
4
4
|
*/
|
|
5
5
|
import type { AuditEntry } from '../types/rbac.types.js';
|
|
6
6
|
/**
|
package/dist/admin/db/audit.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* admin/db/audit.ts — Audit log recording and retrieval.
|
|
3
|
-
* SA4E-50: All functions are async; use
|
|
3
|
+
* SA4E-50: All functions are async; use getDbAdapter() for multi-DB support.
|
|
4
4
|
*/
|
|
5
5
|
import * as crypto from 'crypto';
|
|
6
|
-
import {
|
|
6
|
+
import { getDbAdapter } from './core.js';
|
|
7
7
|
/** Map a raw DB row to a typed AuditEntry. */
|
|
8
8
|
function rowToAudit(r) {
|
|
9
9
|
return {
|
|
@@ -23,7 +23,7 @@ function rowToAudit(r) {
|
|
|
23
23
|
* Fire-and-forget: errors are silently ignored to avoid blocking request flow.
|
|
24
24
|
*/
|
|
25
25
|
export async function recordAudit(userId, username, action, resource, resourceId, changes, ip) {
|
|
26
|
-
const adapter =
|
|
26
|
+
const adapter = getDbAdapter();
|
|
27
27
|
const auditId = 'aud-' + crypto.randomUUID().slice(0, 8);
|
|
28
28
|
await adapter.runAsync(`INSERT INTO audit_log (audit_id, user_id, username, action, resource, resource_id, changes, timestamp, ip_address)
|
|
29
29
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, [auditId, userId, username, action, resource, resourceId || '', changes || '', new Date().toISOString(), ip || '']);
|
|
@@ -33,7 +33,7 @@ export async function recordAudit(userId, username, action, resource, resourceId
|
|
|
33
33
|
* @returns Paginated result with items and total count
|
|
34
34
|
*/
|
|
35
35
|
export async function getAuditLogs(filters, page = 1, pageSize = 50) {
|
|
36
|
-
const adapter =
|
|
36
|
+
const adapter = getDbAdapter();
|
|
37
37
|
let where = 'WHERE 1=1';
|
|
38
38
|
const params = [];
|
|
39
39
|
if (filters?.userId) {
|
|
@@ -62,7 +62,7 @@ export async function getAuditLogs(filters, page = 1, pageSize = 50) {
|
|
|
62
62
|
* @param limit - Max entries to return (default 10)
|
|
63
63
|
*/
|
|
64
64
|
export async function getRecentActivity(limit = 10) {
|
|
65
|
-
const adapter =
|
|
65
|
+
const adapter = getDbAdapter();
|
|
66
66
|
const rows = await adapter.allAsync('SELECT * FROM audit_log ORDER BY timestamp DESC LIMIT ?', [limit]);
|
|
67
67
|
return rows.map(rowToAudit);
|
|
68
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/admin/db/audit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/admin/db/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* admin/db/config.ts — Configuration change history tracking.
|
|
3
|
-
* SA4E-50: All functions are async; use
|
|
3
|
+
* SA4E-50: All functions are async; use getDbAdapter() for multi-DB support.
|
|
4
4
|
*/
|
|
5
5
|
export interface ConfigChange {
|
|
6
6
|
id: number;
|
package/dist/admin/db/config.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* admin/db/config.ts — Configuration change history tracking.
|
|
3
|
-
* SA4E-50: All functions are async; use
|
|
3
|
+
* SA4E-50: All functions are async; use getDbAdapter() for multi-DB support.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { getDbAdapter } from './core.js';
|
|
6
6
|
/** Map raw DB row to typed ConfigChange. */
|
|
7
7
|
function rowToConfigChange(r) {
|
|
8
8
|
return {
|
|
@@ -20,7 +20,7 @@ function rowToConfigChange(r) {
|
|
|
20
20
|
* Record a configuration change and prune old records keeping the latest 50.
|
|
21
21
|
*/
|
|
22
22
|
export async function recordConfigChange(section, key, oldValue, newValue, changedBy, requiresRestart) {
|
|
23
|
-
const adapter =
|
|
23
|
+
const adapter = getDbAdapter();
|
|
24
24
|
await adapter.runAsync(`INSERT INTO config_changes (section, key, old_value, new_value, changed_by, changed_at, requires_restart)
|
|
25
25
|
VALUES (?, ?, ?, ?, ?, ?, ?)`, [section, key, oldValue, newValue, changedBy, new Date().toISOString(), requiresRestart ? 1 : 0]);
|
|
26
26
|
// Prune: keep only the most recent 50 entries
|
|
@@ -33,7 +33,7 @@ export async function recordConfigChange(section, key, oldValue, newValue, chang
|
|
|
33
33
|
* @param limit - Max entries (default 10)
|
|
34
34
|
*/
|
|
35
35
|
export async function getConfigChanges(limit = 10) {
|
|
36
|
-
const adapter =
|
|
36
|
+
const adapter = getDbAdapter();
|
|
37
37
|
const rows = await adapter.allAsync('SELECT * FROM config_changes ORDER BY changed_at DESC LIMIT ?', [limit]);
|
|
38
38
|
return rows.map(rowToConfigChange);
|
|
39
39
|
}
|
|
@@ -44,7 +44,7 @@ export async function getConfigChanges(limit = 10) {
|
|
|
44
44
|
*/
|
|
45
45
|
export async function getLatestConfigValue(section, key) {
|
|
46
46
|
try {
|
|
47
|
-
const adapter =
|
|
47
|
+
const adapter = getDbAdapter();
|
|
48
48
|
const row = await adapter.getAsync(`SELECT new_value FROM config_changes WHERE section = ? AND key = ? ORDER BY changed_at DESC LIMIT 1`, [section, key]);
|
|
49
49
|
return row?.new_value ?? undefined;
|
|
50
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/admin/db/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/admin/db/config.ts"],"names":[],"mappings":"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"}
|
package/dist/admin/db/core.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* admin/db/core.ts — Central database access layer (unified single DB).
|
|
3
|
-
* SA4E-45:
|
|
3
|
+
* SA4E-45: getDbAdapter() / getDbAdapter() enable PostgreSQL/MySQL support.
|
|
4
4
|
* SA4E-49: Consolidated into single unified DB file (index.db).
|
|
5
5
|
* SA4E-53: Removed raw better-sqlite3 import; uses SqliteAdapter for creation.
|
|
6
6
|
*/
|
|
@@ -16,24 +16,22 @@ export declare function getActiveEngine(): string;
|
|
|
16
16
|
/** Get connection config for the active engine */
|
|
17
17
|
export declare function getActiveDbConfig(): any;
|
|
18
18
|
/**
|
|
19
|
-
* Get
|
|
20
|
-
* SA4E-49:
|
|
21
|
-
*
|
|
22
|
-
* When engine=postgresql/mysql: connects to the configured remote DB.
|
|
19
|
+
* Get the unified DatabaseAdapter (single instance for all data).
|
|
20
|
+
* SA4E-49: All tables (knowledge_entries, files, symbols, graph_nodes, users,
|
|
21
|
+
* sessions, etc.) live in one database. One adapter, one connection pool.
|
|
23
22
|
*/
|
|
24
|
-
export declare function
|
|
25
|
-
export declare function getAdminAdapter(): DatabaseAdapter;
|
|
23
|
+
export declare function getDbAdapter(): DatabaseAdapter;
|
|
26
24
|
/**
|
|
27
|
-
* Initialize DB
|
|
25
|
+
* Initialize DB adapter and await connection.
|
|
28
26
|
* MUST be called at startup BEFORE any module initialization.
|
|
29
27
|
* For SQLite: instant (sync). For PostgreSQL/MySQL: awaits pool connection.
|
|
30
28
|
* @throws Error if connection fails (server should not start)
|
|
31
29
|
*/
|
|
32
30
|
export declare function initAdapters(): Promise<void>;
|
|
33
|
-
/** Reset cached DB instance and
|
|
31
|
+
/** Reset cached DB instance and adapter (used after DB switch/migration) */
|
|
34
32
|
export declare function resetAdminDb(): void;
|
|
35
33
|
/**
|
|
36
34
|
* Get the raw better-sqlite3 Database instance.
|
|
37
|
-
* @deprecated Use
|
|
35
|
+
* @deprecated Use getDbAdapter() for new code. Kept for backward compat with tests.
|
|
38
36
|
*/
|
|
39
37
|
export declare function getAdminDb(): import('better-sqlite3').Database;
|
package/dist/admin/db/core.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* admin/db/core.ts — Central database access layer (unified single DB).
|
|
3
|
-
* SA4E-45:
|
|
3
|
+
* SA4E-45: getDbAdapter() / getDbAdapter() enable PostgreSQL/MySQL support.
|
|
4
4
|
* SA4E-49: Consolidated into single unified DB file (index.db).
|
|
5
5
|
* SA4E-53: Removed raw better-sqlite3 import; uses SqliteAdapter for creation.
|
|
6
6
|
*/
|
|
@@ -69,50 +69,31 @@ function getUnifiedSqliteAdapter() {
|
|
|
69
69
|
return sqliteAdapter;
|
|
70
70
|
}
|
|
71
71
|
// --- DatabaseAdapter layer (multi-DB support) ---
|
|
72
|
-
let
|
|
73
|
-
let adminAdapter = null;
|
|
72
|
+
let dbAdapter = null;
|
|
74
73
|
/**
|
|
75
|
-
* Get
|
|
76
|
-
* SA4E-49:
|
|
77
|
-
*
|
|
78
|
-
* When engine=postgresql/mysql: connects to the configured remote DB.
|
|
74
|
+
* Get the unified DatabaseAdapter (single instance for all data).
|
|
75
|
+
* SA4E-49: All tables (knowledge_entries, files, symbols, graph_nodes, users,
|
|
76
|
+
* sessions, etc.) live in one database. One adapter, one connection pool.
|
|
79
77
|
*/
|
|
80
|
-
export function
|
|
81
|
-
if (!
|
|
78
|
+
export function getDbAdapter() {
|
|
79
|
+
if (!dbAdapter) {
|
|
82
80
|
const engine = getActiveEngine();
|
|
83
81
|
if (engine === 'sqlite') {
|
|
84
|
-
|
|
82
|
+
dbAdapter = getUnifiedSqliteAdapter();
|
|
85
83
|
}
|
|
86
84
|
else {
|
|
87
85
|
const configService = new DatabaseConfigService(DATA_DIR);
|
|
88
86
|
const activeConfig = configService.getActiveConfig();
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
logger.error({ err }, '[admin] Failed to connect
|
|
87
|
+
dbAdapter = DatabaseAdapterFactory.create(activeConfig);
|
|
88
|
+
dbAdapter.connect().catch((err) => {
|
|
89
|
+
logger.error({ err }, '[admin] Failed to connect DB adapter');
|
|
92
90
|
});
|
|
93
91
|
}
|
|
94
92
|
}
|
|
95
|
-
return
|
|
96
|
-
}
|
|
97
|
-
export function getAdminAdapter() {
|
|
98
|
-
if (!adminAdapter) {
|
|
99
|
-
const engine = getActiveEngine();
|
|
100
|
-
if (engine === 'sqlite') {
|
|
101
|
-
adminAdapter = getUnifiedSqliteAdapter();
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
const configService = new DatabaseConfigService(DATA_DIR);
|
|
105
|
-
const activeConfig = configService.getActiveConfig();
|
|
106
|
-
adminAdapter = DatabaseAdapterFactory.create(activeConfig);
|
|
107
|
-
adminAdapter.connect().catch((err) => {
|
|
108
|
-
logger.error({ err }, '[admin] Failed to connect admin adapter');
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return adminAdapter;
|
|
93
|
+
return dbAdapter;
|
|
113
94
|
}
|
|
114
95
|
/**
|
|
115
|
-
* Initialize DB
|
|
96
|
+
* Initialize DB adapter and await connection.
|
|
116
97
|
* MUST be called at startup BEFORE any module initialization.
|
|
117
98
|
* For SQLite: instant (sync). For PostgreSQL/MySQL: awaits pool connection.
|
|
118
99
|
* @throws Error if connection fails (server should not start)
|
|
@@ -120,26 +101,19 @@ export function getAdminAdapter() {
|
|
|
120
101
|
export async function initAdapters() {
|
|
121
102
|
const engine = getActiveEngine();
|
|
122
103
|
if (engine === 'sqlite') {
|
|
123
|
-
|
|
124
|
-
getIndexAdapter();
|
|
125
|
-
getAdminAdapter();
|
|
104
|
+
getDbAdapter();
|
|
126
105
|
return;
|
|
127
106
|
}
|
|
128
107
|
const configService = new DatabaseConfigService(DATA_DIR);
|
|
129
108
|
const activeConfig = configService.getActiveConfig();
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
// Cache after successful connection
|
|
135
|
-
indexAdapter = idx;
|
|
136
|
-
adminAdapter = adm;
|
|
137
|
-
logger.info({ engine }, '[admin] DB adapters connected and ready');
|
|
109
|
+
const adapter = DatabaseAdapterFactory.create(activeConfig);
|
|
110
|
+
await adapter.connect();
|
|
111
|
+
dbAdapter = adapter;
|
|
112
|
+
logger.info({ engine }, '[admin] DB adapter connected and ready');
|
|
138
113
|
}
|
|
139
|
-
/** Reset cached DB instance and
|
|
114
|
+
/** Reset cached DB instance and adapter (used after DB switch/migration) */
|
|
140
115
|
export function resetAdminDb() {
|
|
141
|
-
|
|
142
|
-
adminAdapter = null;
|
|
116
|
+
dbAdapter = null;
|
|
143
117
|
if (sqliteAdapter) {
|
|
144
118
|
void sqliteAdapter.disconnect();
|
|
145
119
|
sqliteAdapter = null;
|
|
@@ -147,7 +121,7 @@ export function resetAdminDb() {
|
|
|
147
121
|
}
|
|
148
122
|
/**
|
|
149
123
|
* Get the raw better-sqlite3 Database instance.
|
|
150
|
-
* @deprecated Use
|
|
124
|
+
* @deprecated Use getDbAdapter() for new code. Kept for backward compat with tests.
|
|
151
125
|
*/
|
|
152
126
|
export function getAdminDb() {
|
|
153
127
|
const adapter = getUnifiedSqliteAdapter();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/admin/db/core.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/admin/db/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* admin/db/groups.ts — Access group and permission management.
|
|
3
|
-
* SA4E-50: All functions are async; use
|
|
3
|
+
* SA4E-50: All functions are async; use getDbAdapter() for multi-DB support.
|
|
4
4
|
*/
|
|
5
5
|
import type { AccessGroup, GroupPermission } from '../types/rbac.types.js';
|
|
6
6
|
/**
|
package/dist/admin/db/groups.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* admin/db/groups.ts — Access group and permission management.
|
|
3
|
-
* SA4E-50: All functions are async; use
|
|
3
|
+
* SA4E-50: All functions are async; use getDbAdapter() for multi-DB support.
|
|
4
4
|
*/
|
|
5
5
|
import * as crypto from 'crypto';
|
|
6
|
-
import {
|
|
6
|
+
import { getDbAdapter } from './core.js';
|
|
7
7
|
/** Parse raw permission rows into typed GroupPermission objects. */
|
|
8
8
|
function parsePermRows(rows) {
|
|
9
9
|
return rows.map(p => ({
|
|
@@ -27,7 +27,7 @@ function buildGroup(g, perms) {
|
|
|
27
27
|
* @returns Array of AccessGroup objects ordered by system-first then name
|
|
28
28
|
*/
|
|
29
29
|
export async function getGroups() {
|
|
30
|
-
const adapter =
|
|
30
|
+
const adapter = getDbAdapter();
|
|
31
31
|
const groups = await adapter.allAsync('SELECT * FROM access_groups ORDER BY is_system_group DESC, access_group_name ASC');
|
|
32
32
|
return Promise.all(groups.map(async (g) => {
|
|
33
33
|
const permRows = await adapter.allAsync('SELECT permission_id, role_data FROM group_permissions WHERE access_group_id = ?', [g.access_group_id]);
|
|
@@ -39,7 +39,7 @@ export async function getGroups() {
|
|
|
39
39
|
* @returns AccessGroup or null if not found
|
|
40
40
|
*/
|
|
41
41
|
export async function getGroupById(groupId) {
|
|
42
|
-
const adapter =
|
|
42
|
+
const adapter = getDbAdapter();
|
|
43
43
|
const g = await adapter.getAsync('SELECT * FROM access_groups WHERE access_group_id = ?', [groupId]);
|
|
44
44
|
if (!g)
|
|
45
45
|
return null;
|
|
@@ -51,7 +51,7 @@ export async function getGroupById(groupId) {
|
|
|
51
51
|
* @returns Newly created AccessGroup
|
|
52
52
|
*/
|
|
53
53
|
export async function createGroup(name, permissions) {
|
|
54
|
-
const adapter =
|
|
54
|
+
const adapter = getDbAdapter();
|
|
55
55
|
const id = 'grp-' + crypto.randomUUID().slice(0, 8);
|
|
56
56
|
const now = new Date().toISOString();
|
|
57
57
|
await adapter.runAsync('INSERT INTO access_groups (access_group_id, access_group_name, is_system_group, created_at, updated_at) VALUES (?, ?, 0, ?, ?)', [id, name, now, now]);
|
|
@@ -65,7 +65,7 @@ export async function createGroup(name, permissions) {
|
|
|
65
65
|
* @returns Updated AccessGroup
|
|
66
66
|
*/
|
|
67
67
|
export async function updateGroup(groupId, name, permissions) {
|
|
68
|
-
const adapter =
|
|
68
|
+
const adapter = getDbAdapter();
|
|
69
69
|
const existing = await adapter.getAsync('SELECT * FROM access_groups WHERE access_group_id = ?', [groupId]);
|
|
70
70
|
if (!existing)
|
|
71
71
|
throw new Error('Group not found');
|
|
@@ -87,7 +87,7 @@ export async function updateGroup(groupId, name, permissions) {
|
|
|
87
87
|
* @throws Error if group is a system group or has assigned users
|
|
88
88
|
*/
|
|
89
89
|
export async function deleteGroup(groupId) {
|
|
90
|
-
const adapter =
|
|
90
|
+
const adapter = getDbAdapter();
|
|
91
91
|
const g = await adapter.getAsync('SELECT is_system_group FROM access_groups WHERE access_group_id = ?', [groupId]);
|
|
92
92
|
if (!g)
|
|
93
93
|
throw new Error('Group not found');
|
|
@@ -103,7 +103,7 @@ export async function deleteGroup(groupId) {
|
|
|
103
103
|
* @returns Array of GroupPermission objects
|
|
104
104
|
*/
|
|
105
105
|
export async function getUserPermissions(userId) {
|
|
106
|
-
const adapter =
|
|
106
|
+
const adapter = getDbAdapter();
|
|
107
107
|
const user = await adapter.getAsync('SELECT access_group_id FROM users WHERE user_id = ?', [userId]);
|
|
108
108
|
if (!user)
|
|
109
109
|
return [];
|
|
@@ -115,7 +115,7 @@ export async function getUserPermissions(userId) {
|
|
|
115
115
|
* @returns Array of permission ID strings
|
|
116
116
|
*/
|
|
117
117
|
export async function getGroupPermissionIds(groupId) {
|
|
118
|
-
const adapter =
|
|
118
|
+
const adapter = getDbAdapter();
|
|
119
119
|
const rows = await adapter.allAsync('SELECT permission_id FROM group_permissions WHERE access_group_id = ?', [groupId]);
|
|
120
120
|
return rows.map(p => p.permission_id);
|
|
121
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../../src/admin/db/groups.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../../src/admin/db/groups.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* admin/db/kb-embeddings.ts — KB embedding data for visualization.
|
|
3
|
-
* SA4E-50: Uses
|
|
3
|
+
* SA4E-50: Uses getDbAdapter() async methods for PostgreSQL/SQLite support.
|
|
4
4
|
* Vector parsing (Float32Array) is engine-agnostic; runs on the returned blobs.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* admin/db/kb-embeddings.ts — KB embedding data for visualization.
|
|
3
|
-
* SA4E-50: Uses
|
|
3
|
+
* SA4E-50: Uses getDbAdapter() async methods for PostgreSQL/SQLite support.
|
|
4
4
|
* Vector parsing (Float32Array) is engine-agnostic; runs on the returned blobs.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { getDbAdapter, getActiveEngine } from './core.js';
|
|
7
7
|
import { DialectHelper } from '../../database/dialect/DialectHelper.js';
|
|
8
8
|
/** Check if a table exists using cross-engine DialectHelper query. */
|
|
9
9
|
async function hasTable(tableName) {
|
|
10
|
-
const adapter =
|
|
10
|
+
const adapter = getDbAdapter();
|
|
11
11
|
const dialect = new DialectHelper(getActiveEngine());
|
|
12
12
|
const row = await adapter.getAsync(dialect.tableExistsQuery(tableName));
|
|
13
13
|
return !!row;
|
|
@@ -60,7 +60,7 @@ function parseVectorRow(row, index) {
|
|
|
60
60
|
async function getVectorEmbeddings(limit) {
|
|
61
61
|
if (!(await hasTable('knowledge_vectors')))
|
|
62
62
|
return null;
|
|
63
|
-
const adapter =
|
|
63
|
+
const adapter = getDbAdapter();
|
|
64
64
|
const rows = await adapter.allAsync(`SELECT e.id, e.source, e.summary, e.type, e.tier, v.vector
|
|
65
65
|
FROM knowledge_entries e
|
|
66
66
|
INNER JOIN knowledge_vectors v ON v.entry_id = e.id
|
|
@@ -83,7 +83,7 @@ export async function getKbEmbeddings(limit = 100) {
|
|
|
83
83
|
if (vectorItems)
|
|
84
84
|
return { items: vectorItems, hasRealData: true };
|
|
85
85
|
// Fallback: hash-based positions from knowledge_entries content
|
|
86
|
-
const adapter =
|
|
86
|
+
const adapter = getDbAdapter();
|
|
87
87
|
const rows = await adapter.allAsync('SELECT id, source, summary, type, content FROM knowledge_entries ORDER BY created_at DESC LIMIT ?', [limit]);
|
|
88
88
|
if (rows.length === 0)
|
|
89
89
|
return { items: [], hasRealData: false };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kb-embeddings.js","sourceRoot":"","sources":["../../../src/admin/db/kb-embeddings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"kb-embeddings.js","sourceRoot":"","sources":["../../../src/admin/db/kb-embeddings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* admin/db/kb-entries.ts — Knowledge base entry queries via DatabaseAdapter.
|
|
3
|
-
* SA4E-50: Uses
|
|
3
|
+
* SA4E-50: Uses getDbAdapter() async methods for PostgreSQL/SQLite support.
|
|
4
4
|
* sqlite_master checks are SQLite-only and guarded by engine detection.
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* admin/db/kb-entries.ts — Knowledge base entry queries via DatabaseAdapter.
|
|
3
|
-
* SA4E-50: Uses
|
|
3
|
+
* SA4E-50: Uses getDbAdapter() async methods for PostgreSQL/SQLite support.
|
|
4
4
|
* sqlite_master checks are SQLite-only and guarded by engine detection.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { getDbAdapter, getActiveEngine, logger } from './core.js';
|
|
7
7
|
import { buildAdminScopeFilter } from './kb-scope-filter.js';
|
|
8
8
|
/** Check if knowledge_entries table exists (SQLite only). */
|
|
9
9
|
async function tableExists() {
|
|
10
|
-
const adapter =
|
|
10
|
+
const adapter = getDbAdapter();
|
|
11
11
|
// Guard: if PG adapter not yet connected (async connect in progress), skip gracefully
|
|
12
12
|
if (!adapter.isConnected())
|
|
13
13
|
return false;
|
|
@@ -24,7 +24,7 @@ export async function getKbEntryById(entryId) {
|
|
|
24
24
|
try {
|
|
25
25
|
if (!(await tableExists()))
|
|
26
26
|
return null;
|
|
27
|
-
const adapter =
|
|
27
|
+
const adapter = getDbAdapter();
|
|
28
28
|
const row = await adapter.getAsync('SELECT * FROM knowledge_entries WHERE id = ?', [entryId]);
|
|
29
29
|
return row || null;
|
|
30
30
|
}
|
|
@@ -43,7 +43,7 @@ export async function getKbEntryCount(projectId, userId) {
|
|
|
43
43
|
try {
|
|
44
44
|
if (!(await tableExists()))
|
|
45
45
|
return 0;
|
|
46
|
-
const adapter =
|
|
46
|
+
const adapter = getDbAdapter();
|
|
47
47
|
const filter = buildAdminScopeFilter(projectId, userId);
|
|
48
48
|
if (filter) {
|
|
49
49
|
const row = await adapter.getAsync(`SELECT COUNT(*) as cnt FROM knowledge_entries WHERE ${filter.clause}`, filter.params);
|
|
@@ -67,7 +67,7 @@ export async function getKbEntryCount(projectId, userId) {
|
|
|
67
67
|
* Admin views need accurate counts even if scope metadata is incomplete.
|
|
68
68
|
*/
|
|
69
69
|
async function getUnfilteredKbEntryCount(projectId) {
|
|
70
|
-
const adapter =
|
|
70
|
+
const adapter = getDbAdapter();
|
|
71
71
|
if (projectId) {
|
|
72
72
|
const row = await adapter.getAsync('SELECT COUNT(*) as cnt FROM knowledge_entries WHERE project_id = ? OR project_id IS NULL', [projectId]);
|
|
73
73
|
if ((row?.cnt ?? 0) > 0)
|
|
@@ -84,7 +84,7 @@ export async function getKbEntries(page = 1, pageSize = 20, sortBy = 'created_at
|
|
|
84
84
|
try {
|
|
85
85
|
if (!(await tableExists()))
|
|
86
86
|
return { items: [], total: 0 };
|
|
87
|
-
const adapter =
|
|
87
|
+
const adapter = getDbAdapter();
|
|
88
88
|
// Validate sort column to prevent SQL injection
|
|
89
89
|
const validColumns = ['id', 'created_at', 'updated_at', 'source', 'type',
|
|
90
90
|
'tier', 'quality_score', 'tags', 'summary', 'content'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kb-entries.js","sourceRoot":"","sources":["../../../src/admin/db/kb-entries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"kb-entries.js","sourceRoot":"","sources":["../../../src/admin/db/kb-entries.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* admin/db/kb-search.ts — KB full-text search via DatabaseAdapter.
|
|
3
|
-
* SA4E-50: Uses
|
|
3
|
+
* SA4E-50: Uses getDbAdapter() async methods for PostgreSQL/SQLite support.
|
|
4
4
|
* TF-IDF scoring runs in-memory after DB fetch; compatible with all engines.
|
|
5
5
|
*/
|
|
6
6
|
/**
|