sdlc-agent-4-enterprise-server 1.26.0 → 1.27.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/dist/config/feature-flags.d.ts +48 -0
- package/dist/config/feature-flags.js +85 -0
- package/dist/config/feature-flags.js.map +1 -0
- package/dist/database/adapters/SqliteAdapter.js +5 -4
- package/dist/database/adapters/SqliteAdapter.js.map +1 -1
- package/dist/database/adapters/SqliteAsyncAdapter.js +4 -3
- package/dist/database/adapters/SqliteAsyncAdapter.js.map +1 -1
- package/dist/database/adapters/sqlite-placeholders.d.ts +8 -0
- package/dist/database/adapters/sqlite-placeholders.js +11 -0
- package/dist/database/adapters/sqlite-placeholders.js.map +1 -0
- package/dist/database/migration/pg-schema-ensure.js +3 -0
- package/dist/database/migration/pg-schema-ensure.js.map +1 -1
- package/dist/engine/enrichment/CodeEnrichmentHandler.js +9 -4
- package/dist/engine/enrichment/CodeEnrichmentHandler.js.map +1 -1
- package/dist/engine/enrichment/CodeEnrichmentPromptBuilder.js +13 -4
- package/dist/engine/enrichment/CodeEnrichmentPromptBuilder.js.map +1 -1
- package/dist/engine/enrichment/CodeEnrichmentTaskCreator.d.ts +1 -1
- package/dist/engine/enrichment/CodeEnrichmentTaskCreator.js +13 -9
- package/dist/engine/enrichment/CodeEnrichmentTaskCreator.js.map +1 -1
- package/dist/engine/enrichment/types.d.ts +6 -0
- package/dist/engine/enrichment/types.js +2 -0
- package/dist/engine/enrichment/types.js.map +1 -1
- package/dist/engine/graph/graph-sync-service.d.ts +4 -0
- package/dist/engine/graph/graph-sync-service.js +19 -5
- package/dist/engine/graph/graph-sync-service.js.map +1 -1
- package/dist/modules/ModuleFactory.js +3 -0
- package/dist/modules/ModuleFactory.js.map +1 -1
- package/dist/modules/code-intel/CodeIntelModule.d.ts +1 -0
- package/dist/modules/code-intel/CodeIntelModule.js +13 -1
- package/dist/modules/code-intel/CodeIntelModule.js.map +1 -1
- package/dist/modules/code-intel/onboarding/MarkdownGenerator.d.ts +23 -0
- package/dist/modules/code-intel/onboarding/MarkdownGenerator.js +110 -0
- package/dist/modules/code-intel/onboarding/MarkdownGenerator.js.map +1 -0
- package/dist/modules/code-intel/onboarding/OnboardingService.d.ts +26 -0
- package/dist/modules/code-intel/onboarding/OnboardingService.js +109 -0
- package/dist/modules/code-intel/onboarding/OnboardingService.js.map +1 -0
- package/dist/modules/code-intel/onboarding/OnboardingToolHandler.d.ts +17 -0
- package/dist/modules/code-intel/onboarding/OnboardingToolHandler.js +40 -0
- package/dist/modules/code-intel/onboarding/OnboardingToolHandler.js.map +1 -0
- package/dist/modules/code-intel/onboarding/WorkspaceAnalyzer.d.ts +28 -0
- package/dist/modules/code-intel/onboarding/WorkspaceAnalyzer.js +169 -0
- package/dist/modules/code-intel/onboarding/WorkspaceAnalyzer.js.map +1 -0
- package/dist/modules/code-intel/onboarding/definitions.d.ts +6 -0
- package/dist/modules/code-intel/onboarding/definitions.js +24 -0
- package/dist/modules/code-intel/onboarding/definitions.js.map +1 -0
- package/dist/modules/code-intel/onboarding/models.d.ts +57 -0
- package/dist/modules/code-intel/onboarding/models.js +12 -0
- package/dist/modules/code-intel/onboarding/models.js.map +1 -0
- package/dist/modules/memory/MemoryModuleBuilder.js +4 -0
- package/dist/modules/memory/MemoryModuleBuilder.js.map +1 -1
- package/dist/modules/memory/definitions/index.d.ts +14 -205
- package/dist/modules/memory/definitions/index.js +3 -1
- package/dist/modules/memory/definitions/index.js.map +1 -1
- package/dist/modules/memory/definitions/skills.d.ts +18 -0
- package/dist/modules/memory/definitions/skills.js +21 -0
- package/dist/modules/memory/definitions/skills.js.map +1 -0
- package/dist/modules/memory/dispatchers/dispatcher.js +4 -0
- package/dist/modules/memory/dispatchers/dispatcher.js.map +1 -1
- package/dist/modules/memory/dispatchers/evolution.js +131 -2
- package/dist/modules/memory/dispatchers/evolution.js.map +1 -1
- package/dist/modules/memory/dispatchers/learning.d.ts +19 -0
- package/dist/modules/memory/dispatchers/learning.js +62 -0
- package/dist/modules/memory/dispatchers/learning.js.map +1 -0
- package/dist/modules/memory/dispatchers/procedure.js +5 -2
- package/dist/modules/memory/dispatchers/procedure.js.map +1 -1
- package/dist/modules/memory/dispatchers/skills.d.ts +35 -0
- package/dist/modules/memory/dispatchers/skills.js +98 -0
- package/dist/modules/memory/dispatchers/skills.js.map +1 -0
- package/dist/modules/memory/engine/core.js +28 -22
- package/dist/modules/memory/engine/core.js.map +1 -1
- package/dist/modules/memory/engine/crud.js +63 -13
- package/dist/modules/memory/engine/crud.js.map +1 -1
- package/dist/modules/memory/engine/pega-search.d.ts +26 -0
- package/dist/modules/memory/engine/pega-search.js +135 -0
- package/dist/modules/memory/engine/pega-search.js.map +1 -0
- package/dist/modules/memory/evolution/ContradictionService.d.ts +59 -0
- package/dist/modules/memory/evolution/ContradictionService.js +159 -0
- package/dist/modules/memory/evolution/ContradictionService.js.map +1 -0
- package/dist/modules/memory/evolution/InstinctConfigService.d.ts +30 -0
- package/dist/modules/memory/evolution/InstinctConfigService.js +61 -0
- package/dist/modules/memory/evolution/InstinctConfigService.js.map +1 -0
- package/dist/modules/memory/evolution/InstinctPromotionService.d.ts +37 -0
- package/dist/modules/memory/evolution/InstinctPromotionService.js +79 -0
- package/dist/modules/memory/evolution/InstinctPromotionService.js.map +1 -0
- package/dist/modules/memory/evolution/index.d.ts +6 -0
- package/dist/modules/memory/evolution/index.js +4 -0
- package/dist/modules/memory/evolution/index.js.map +1 -1
- package/dist/modules/memory/handlers/InstinctIngestionHandler.d.ts +40 -0
- package/dist/modules/memory/handlers/InstinctIngestionHandler.js +58 -0
- package/dist/modules/memory/handlers/InstinctIngestionHandler.js.map +1 -0
- package/dist/modules/memory/learning/ClusteringService.d.ts +51 -0
- package/dist/modules/memory/learning/ClusteringService.js +110 -0
- package/dist/modules/memory/learning/ClusteringService.js.map +1 -0
- package/dist/modules/memory/learning/PatternClassifier.d.ts +20 -0
- package/dist/modules/memory/learning/PatternClassifier.js +95 -0
- package/dist/modules/memory/learning/PatternClassifier.js.map +1 -0
- package/dist/modules/memory/learning/PatternExtractor.d.ts +32 -0
- package/dist/modules/memory/learning/PatternExtractor.js +144 -0
- package/dist/modules/memory/learning/PatternExtractor.js.map +1 -0
- package/dist/modules/memory/learning/SessionAnalyzer.d.ts +31 -0
- package/dist/modules/memory/learning/SessionAnalyzer.js +105 -0
- package/dist/modules/memory/learning/SessionAnalyzer.js.map +1 -0
- package/dist/modules/memory/learning/index.d.ts +9 -0
- package/dist/modules/memory/learning/index.js +9 -0
- package/dist/modules/memory/learning/index.js.map +1 -0
- package/dist/modules/memory/learning/types.d.ts +46 -0
- package/dist/modules/memory/learning/types.js +11 -0
- package/dist/modules/memory/learning/types.js.map +1 -0
- package/dist/modules/memory/llm/LLMInitializer.d.ts +1 -0
- package/dist/modules/memory/llm/LLMInitializer.js +27 -5
- package/dist/modules/memory/llm/LLMInitializer.js.map +1 -1
- package/dist/modules/memory/migrations/005-unique-source-project.d.ts +9 -0
- package/dist/modules/memory/migrations/005-unique-source-project.js +44 -0
- package/dist/modules/memory/migrations/005-unique-source-project.js.map +1 -0
- package/dist/modules/memory/migrations/006-pending-tasks-project-id.d.ts +9 -0
- package/dist/modules/memory/migrations/006-pending-tasks-project-id.js +44 -0
- package/dist/modules/memory/migrations/006-pending-tasks-project-id.js.map +1 -0
- package/dist/modules/memory/migrations/007-add-instinct-tables.d.ts +8 -0
- package/dist/modules/memory/migrations/007-add-instinct-tables.js +69 -0
- package/dist/modules/memory/migrations/007-add-instinct-tables.js.map +1 -0
- package/dist/modules/memory/task-queue/PendingTaskRepository.d.ts +21 -2
- package/dist/modules/memory/task-queue/PendingTaskRepository.js +55 -7
- package/dist/modules/memory/task-queue/PendingTaskRepository.js.map +1 -1
- package/dist/modules/memory/task-queue/TaskWorker.d.ts +4 -0
- package/dist/modules/memory/task-queue/TaskWorker.js +10 -1
- package/dist/modules/memory/task-queue/TaskWorker.js.map +1 -1
- package/dist/modules/memory/task-queue/models.d.ts +2 -0
- package/dist/modules/memory/tool-definitions.js +1 -0
- package/dist/modules/memory/tool-definitions.js.map +1 -1
- package/dist/modules/pega/PegaContentExtractor.d.ts +13 -0
- package/dist/modules/pega/PegaContentExtractor.js +230 -0
- package/dist/modules/pega/PegaContentExtractor.js.map +1 -0
- package/dist/modules/pega/PegaKbSync.d.ts +1 -0
- package/dist/modules/pega/PegaKbSync.js +22 -9
- package/dist/modules/pega/PegaKbSync.js.map +1 -1
- package/dist/modules/pega/PegaService.js +58 -17
- package/dist/modules/pega/PegaService.js.map +1 -1
- package/dist/modules/pega/PegaSymbolSync.d.ts +25 -0
- package/dist/modules/pega/PegaSymbolSync.js +154 -0
- package/dist/modules/pega/PegaSymbolSync.js.map +1 -0
- package/dist/modules/pega/pega-mapping.d.ts +39 -0
- package/dist/modules/pega/pega-mapping.js +73 -0
- package/dist/modules/pega/pega-mapping.js.map +1 -0
- package/dist/modules/security/SecurityModule.d.ts +33 -0
- package/dist/modules/security/SecurityModule.js +98 -0
- package/dist/modules/security/SecurityModule.js.map +1 -0
- package/dist/modules/security/agentshield/AgentShieldScanner.d.ts +21 -0
- package/dist/modules/security/agentshield/AgentShieldScanner.js +66 -0
- package/dist/modules/security/agentshield/AgentShieldScanner.js.map +1 -0
- package/dist/modules/security/agentshield/AgentShieldToolHandler.d.ts +17 -0
- package/dist/modules/security/agentshield/AgentShieldToolHandler.js +40 -0
- package/dist/modules/security/agentshield/AgentShieldToolHandler.js.map +1 -0
- package/dist/modules/security/agentshield/definitions.d.ts +6 -0
- package/dist/modules/security/agentshield/definitions.js +28 -0
- package/dist/modules/security/agentshield/definitions.js.map +1 -0
- package/dist/modules/security/agentshield/models.d.ts +53 -0
- package/dist/modules/security/agentshield/models.js +13 -0
- package/dist/modules/security/agentshield/models.js.map +1 -0
- package/dist/modules/security/agentshield/rules/HttpEndpointRule.d.ts +15 -0
- package/dist/modules/security/agentshield/rules/HttpEndpointRule.js +44 -0
- package/dist/modules/security/agentshield/rules/HttpEndpointRule.js.map +1 -0
- package/dist/modules/security/agentshield/rules/InjectionDetector.d.ts +16 -0
- package/dist/modules/security/agentshield/rules/InjectionDetector.js +61 -0
- package/dist/modules/security/agentshield/rules/InjectionDetector.js.map +1 -0
- package/dist/modules/security/agentshield/rules/PermissionRule.d.ts +15 -0
- package/dist/modules/security/agentshield/rules/PermissionRule.js +40 -0
- package/dist/modules/security/agentshield/rules/PermissionRule.js.map +1 -0
- package/dist/modules/security/agentshield/rules/SecretDetector.d.ts +14 -0
- package/dist/modules/security/agentshield/rules/SecretDetector.js +55 -0
- package/dist/modules/security/agentshield/rules/SecretDetector.js.map +1 -0
- package/dist/modules/security/agentshield/rules/TlsValidator.d.ts +14 -0
- package/dist/modules/security/agentshield/rules/TlsValidator.js +52 -0
- package/dist/modules/security/agentshield/rules/TlsValidator.js.map +1 -0
- package/dist/modules/security/gateguard/GateGuardRepository.d.ts +32 -0
- package/dist/modules/security/gateguard/GateGuardRepository.js +135 -0
- package/dist/modules/security/gateguard/GateGuardRepository.js.map +1 -0
- package/dist/modules/security/gateguard/GateGuardService.d.ts +40 -0
- package/dist/modules/security/gateguard/GateGuardService.js +143 -0
- package/dist/modules/security/gateguard/GateGuardService.js.map +1 -0
- package/dist/modules/security/gateguard/GateGuardToolHandler.d.ts +23 -0
- package/dist/modules/security/gateguard/GateGuardToolHandler.js +89 -0
- package/dist/modules/security/gateguard/GateGuardToolHandler.js.map +1 -0
- package/dist/modules/security/gateguard/definitions.d.ts +6 -0
- package/dist/modules/security/gateguard/definitions.js +51 -0
- package/dist/modules/security/gateguard/definitions.js.map +1 -0
- package/dist/modules/security/gateguard/models.d.ts +101 -0
- package/dist/modules/security/gateguard/models.js +33 -0
- package/dist/modules/security/gateguard/models.js.map +1 -0
- package/dist/server/routes/admin/kb-entries.js +5 -2
- package/dist/server/routes/admin/kb-entries.js.map +1 -1
- package/dist/server/routes/enrichment-status-routes.js +59 -7
- package/dist/server/routes/enrichment-status-routes.js.map +1 -1
- package/dist/server/routes/pega-api.js +3 -2
- package/dist/server/routes/pega-api.js.map +1 -1
- package/dist/servers/atlassian/models/jira-schemas.d.ts +3 -2
- package/dist/servers/atlassian/models/jira-schemas.js +2 -1
- package/dist/servers/atlassian/models/jira-schemas.js.map +1 -1
- package/dist/shared/schemas/EnrichmentStatusSchema.d.ts +3 -0
- package/dist/shared/schemas/EnrichmentStatusSchema.js +1 -0
- package/dist/shared/schemas/EnrichmentStatusSchema.js.map +1 -1
- package/package.json +1 -1
- package/scripts/backfill-project-id.ts +13 -0
- package/scripts/check-pega-tasks.ts +30 -0
- package/scripts/create-enrichment-tasks.ts +70 -0
- package/scripts/debug-enrichment.ts +24 -0
- package/scripts/migrate-pega-symbols.ts +238 -0
- package/scripts/migrate-sa4e-119.ts +245 -0
- package/scripts/prioritize-pega-tasks.ts +9 -0
- package/src/__tests__/sa4e-testkit.ts +2 -2
- package/src/config/feature-flags.ts +116 -0
- package/src/database/adapters/SqliteAdapter.ts +5 -4
- package/src/database/adapters/SqliteAsyncAdapter.ts +4 -3
- package/src/database/adapters/sqlite-placeholders.ts +10 -0
- package/src/database/migration/pg-schema-ensure.ts +3 -0
- package/src/engine/enrichment/CodeEnrichmentHandler.ts +9 -4
- package/src/engine/enrichment/CodeEnrichmentPromptBuilder.ts +12 -4
- package/src/engine/enrichment/CodeEnrichmentTaskCreator.ts +14 -10
- package/src/engine/enrichment/__tests__/enrichment-strategy.test.ts +70 -0
- package/src/engine/enrichment/__tests__/pega-enrichment-prompt.test.ts +67 -0
- package/src/engine/enrichment/types.ts +2 -0
- package/src/engine/graph/graph-sync-service.ts +19 -5
- package/src/modules/ModuleFactory.ts +3 -0
- package/src/modules/code-intel/CodeIntelModule.ts +14 -1
- package/src/modules/code-intel/onboarding/MarkdownGenerator.ts +126 -0
- package/src/modules/code-intel/onboarding/OnboardingService.ts +119 -0
- package/src/modules/code-intel/onboarding/OnboardingToolHandler.ts +48 -0
- package/src/modules/code-intel/onboarding/WorkspaceAnalyzer.ts +176 -0
- package/src/modules/code-intel/onboarding/__tests__/OnboardingService.test.ts +157 -0
- package/src/modules/code-intel/onboarding/definitions.ts +27 -0
- package/src/modules/code-intel/onboarding/models.ts +65 -0
- package/src/modules/memory/MemoryModuleBuilder.ts +4 -0
- package/src/modules/memory/__tests__/InstinctSystem.test.ts +344 -0
- package/src/modules/memory/__tests__/IsolationLayer.test.ts +10 -10
- package/src/modules/memory/__tests__/Learning.test.ts +400 -0
- package/src/modules/memory/__tests__/Skills.test.ts +199 -0
- package/src/modules/memory/__tests__/pega-search.test.ts +129 -0
- package/src/modules/memory/definitions/index.ts +3 -1
- package/src/modules/memory/definitions/skills.ts +21 -0
- package/src/modules/memory/dispatchers/dispatcher.ts +4 -0
- package/src/modules/memory/dispatchers/evolution.ts +170 -3
- package/src/modules/memory/dispatchers/learning.ts +84 -0
- package/src/modules/memory/dispatchers/procedure.ts +5 -2
- package/src/modules/memory/dispatchers/skills.ts +112 -0
- package/src/modules/memory/engine/core.ts +26 -23
- package/src/modules/memory/engine/crud.ts +63 -13
- package/src/modules/memory/engine/pega-search.ts +159 -0
- package/src/modules/memory/evolution/ContradictionService.ts +244 -0
- package/src/modules/memory/evolution/InstinctConfigService.ts +90 -0
- package/src/modules/memory/evolution/InstinctPromotionService.ts +120 -0
- package/src/modules/memory/evolution/index.ts +8 -0
- package/src/modules/memory/handlers/InstinctIngestionHandler.ts +83 -0
- package/src/modules/memory/learning/ClusteringService.ts +162 -0
- package/src/modules/memory/learning/PatternClassifier.ts +113 -0
- package/src/modules/memory/learning/PatternExtractor.ts +156 -0
- package/src/modules/memory/learning/SessionAnalyzer.ts +136 -0
- package/src/modules/memory/learning/index.ts +15 -0
- package/src/modules/memory/learning/types.ts +61 -0
- package/src/modules/memory/llm/LLMInitializer.ts +29 -5
- package/src/modules/memory/migrations/005-unique-source-project.ts +53 -0
- package/src/modules/memory/migrations/006-pending-tasks-project-id.ts +50 -0
- package/src/modules/memory/migrations/007-add-instinct-tables.ts +72 -0
- package/src/modules/memory/task-queue/PendingTaskRepository.ts +69 -9
- package/src/modules/memory/task-queue/TaskWorker.ts +15 -1
- package/src/modules/memory/task-queue/__tests__/TaskWorker.it.test.ts +1 -0
- package/src/modules/memory/task-queue/models.ts +2 -0
- package/src/modules/memory/tool-definitions.ts +1 -0
- package/src/modules/pega/PegaContentExtractor.ts +243 -0
- package/src/modules/pega/PegaKbSync.ts +23 -13
- package/src/modules/pega/PegaService.ts +71 -17
- package/src/modules/pega/PegaSymbolSync.ts +242 -0
- package/src/modules/pega/__tests__/PegaContentExtractor.test.ts +97 -0
- package/src/modules/pega/__tests__/PegaSymbolSync.test.ts +157 -0
- package/src/modules/pega/__tests__/pega-indexing.e2e.test.ts +61 -54
- package/src/modules/pega/__tests__/pega-mapping.test.ts +113 -0
- package/src/modules/pega/pega-mapping.ts +80 -0
- package/src/modules/security/SecurityModule.ts +112 -0
- package/src/modules/security/agentshield/AgentShieldScanner.ts +78 -0
- package/src/modules/security/agentshield/AgentShieldToolHandler.ts +48 -0
- package/src/modules/security/agentshield/__tests__/AgentShieldScanner.test.ts +149 -0
- package/src/modules/security/agentshield/definitions.ts +30 -0
- package/src/modules/security/agentshield/models.ts +62 -0
- package/src/modules/security/agentshield/rules/HttpEndpointRule.ts +53 -0
- package/src/modules/security/agentshield/rules/InjectionDetector.ts +72 -0
- package/src/modules/security/agentshield/rules/PermissionRule.ts +47 -0
- package/src/modules/security/agentshield/rules/SecretDetector.ts +64 -0
- package/src/modules/security/agentshield/rules/TlsValidator.ts +59 -0
- package/src/modules/security/gateguard/GateGuardRepository.ts +180 -0
- package/src/modules/security/gateguard/GateGuardService.ts +159 -0
- package/src/modules/security/gateguard/GateGuardToolHandler.ts +96 -0
- package/src/modules/security/gateguard/__tests__/GateGuardRepository.test.ts +80 -0
- package/src/modules/security/gateguard/__tests__/GateGuardService.test.ts +211 -0
- package/src/modules/security/gateguard/definitions.ts +53 -0
- package/src/modules/security/gateguard/models.ts +84 -0
- package/src/server/routes/admin/kb-entries.ts +5 -2
- package/src/server/routes/enrichment-status-routes.ts +66 -7
- package/src/server/routes/pega-api.ts +3 -2
- package/src/servers/atlassian/models/jira-schemas.ts +2 -1
- package/src/shared/schemas/EnrichmentStatusSchema.ts +1 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SA4E-119 Feature Flags — ECC Feature Parity
|
|
3
|
+
*
|
|
4
|
+
* Controls incremental rollout of 12 ECC features.
|
|
5
|
+
* Flags can be overridden via environment variables (SA4E_FF_*) or config file.
|
|
6
|
+
*
|
|
7
|
+
* Reference: TDD Section 10.1 — Deployment Considerations / Feature Flags
|
|
8
|
+
*/
|
|
9
|
+
/** Feature flag configuration for SA4E-119 ECC features */
|
|
10
|
+
export interface SA4E119FeatureFlags {
|
|
11
|
+
/** Enable confidence scoring + instinct re-ranking (Knowledge Enhancement) */
|
|
12
|
+
confidenceScoring: boolean;
|
|
13
|
+
/** Enable GateGuard command blocking (Security and Safety) */
|
|
14
|
+
gateguard: boolean;
|
|
15
|
+
/** Enable AgentShield config scanning (Security and Safety) */
|
|
16
|
+
agentshield: boolean;
|
|
17
|
+
/** Enable skill pack system (Developer Productivity) */
|
|
18
|
+
skillPacks: boolean;
|
|
19
|
+
/** Enable model tier routing — requires multi-model config (Context Management) */
|
|
20
|
+
modelTiering: boolean;
|
|
21
|
+
/** Enable post-phase context compaction (Context Management) */
|
|
22
|
+
contextCompaction: boolean;
|
|
23
|
+
/** Enable auto-extraction of patterns on ticket completion (Knowledge Enhancement) */
|
|
24
|
+
patternExtraction: boolean;
|
|
25
|
+
/** Enable multi-voice council decisions — experimental (Quality Assurance) */
|
|
26
|
+
council: boolean;
|
|
27
|
+
/** Enable GAN-style adversarial review — experimental (Quality Assurance) */
|
|
28
|
+
adversarialReview: boolean;
|
|
29
|
+
}
|
|
30
|
+
/** Default flag values per TDD Section 10.1 */
|
|
31
|
+
export declare const SA4E_119_FLAG_DEFAULTS: Readonly<SA4E119FeatureFlags>;
|
|
32
|
+
/**
|
|
33
|
+
* Load SA4E-119 feature flags.
|
|
34
|
+
* Priority: env vars > overrides param > defaults.
|
|
35
|
+
*
|
|
36
|
+
* @param overrides Optional partial overrides (e.g., from config file)
|
|
37
|
+
* @returns Resolved feature flag values
|
|
38
|
+
*/
|
|
39
|
+
export declare function loadSA4E119Flags(overrides?: Partial<SA4E119FeatureFlags>): SA4E119FeatureFlags;
|
|
40
|
+
/**
|
|
41
|
+
* Check if a specific SA4E-119 feature is enabled.
|
|
42
|
+
* Convenience wrapper for single-flag checks in module initialization.
|
|
43
|
+
*
|
|
44
|
+
* @param flag The feature flag key to check
|
|
45
|
+
* @param overrides Optional partial overrides
|
|
46
|
+
* @returns Whether the feature is enabled
|
|
47
|
+
*/
|
|
48
|
+
export declare function isFeatureEnabled(flag: keyof SA4E119FeatureFlags, overrides?: Partial<SA4E119FeatureFlags>): boolean;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SA4E-119 Feature Flags — ECC Feature Parity
|
|
3
|
+
*
|
|
4
|
+
* Controls incremental rollout of 12 ECC features.
|
|
5
|
+
* Flags can be overridden via environment variables (SA4E_FF_*) or config file.
|
|
6
|
+
*
|
|
7
|
+
* Reference: TDD Section 10.1 — Deployment Considerations / Feature Flags
|
|
8
|
+
*/
|
|
9
|
+
/** Default flag values per TDD Section 10.1 */
|
|
10
|
+
export const SA4E_119_FLAG_DEFAULTS = {
|
|
11
|
+
confidenceScoring: true,
|
|
12
|
+
gateguard: true,
|
|
13
|
+
agentshield: true,
|
|
14
|
+
skillPacks: true,
|
|
15
|
+
modelTiering: false, // Requires multi-model config
|
|
16
|
+
contextCompaction: true,
|
|
17
|
+
patternExtraction: true,
|
|
18
|
+
council: false, // Experimental
|
|
19
|
+
adversarialReview: false, // Experimental
|
|
20
|
+
};
|
|
21
|
+
/** Environment variable mapping for runtime override */
|
|
22
|
+
const ENV_MAPPING = {
|
|
23
|
+
confidenceScoring: 'SA4E_FF_CONFIDENCE_SCORING',
|
|
24
|
+
gateguard: 'SA4E_FF_GATEGUARD',
|
|
25
|
+
agentshield: 'SA4E_FF_AGENTSHIELD',
|
|
26
|
+
skillPacks: 'SA4E_FF_SKILL_PACKS',
|
|
27
|
+
modelTiering: 'SA4E_FF_MODEL_TIERING',
|
|
28
|
+
contextCompaction: 'SA4E_FF_CONTEXT_COMPACTION',
|
|
29
|
+
patternExtraction: 'SA4E_FF_PATTERN_EXTRACTION',
|
|
30
|
+
council: 'SA4E_FF_COUNCIL',
|
|
31
|
+
adversarialReview: 'SA4E_FF_ADVERSARIAL_REVIEW',
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Parse a boolean env var. Accepts "true"/"1"/"yes" as truthy, "false"/"0"/"no" as falsy.
|
|
35
|
+
* Returns undefined if env var is not set.
|
|
36
|
+
*/
|
|
37
|
+
function parseBoolEnv(value) {
|
|
38
|
+
if (value === undefined || value === '')
|
|
39
|
+
return undefined;
|
|
40
|
+
const lower = value.toLowerCase().trim();
|
|
41
|
+
if (['true', '1', 'yes'].includes(lower))
|
|
42
|
+
return true;
|
|
43
|
+
if (['false', '0', 'no'].includes(lower))
|
|
44
|
+
return false;
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Load SA4E-119 feature flags.
|
|
49
|
+
* Priority: env vars > overrides param > defaults.
|
|
50
|
+
*
|
|
51
|
+
* @param overrides Optional partial overrides (e.g., from config file)
|
|
52
|
+
* @returns Resolved feature flag values
|
|
53
|
+
*/
|
|
54
|
+
export function loadSA4E119Flags(overrides) {
|
|
55
|
+
const flags = { ...SA4E_119_FLAG_DEFAULTS };
|
|
56
|
+
// Apply config-level overrides
|
|
57
|
+
if (overrides) {
|
|
58
|
+
for (const key of Object.keys(overrides)) {
|
|
59
|
+
if (overrides[key] !== undefined) {
|
|
60
|
+
flags[key] = overrides[key];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Apply environment variable overrides (highest priority)
|
|
65
|
+
for (const [key, envVar] of Object.entries(ENV_MAPPING)) {
|
|
66
|
+
const envValue = parseBoolEnv(process.env[envVar]);
|
|
67
|
+
if (envValue !== undefined) {
|
|
68
|
+
flags[key] = envValue;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return flags;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Check if a specific SA4E-119 feature is enabled.
|
|
75
|
+
* Convenience wrapper for single-flag checks in module initialization.
|
|
76
|
+
*
|
|
77
|
+
* @param flag The feature flag key to check
|
|
78
|
+
* @param overrides Optional partial overrides
|
|
79
|
+
* @returns Whether the feature is enabled
|
|
80
|
+
*/
|
|
81
|
+
export function isFeatureEnabled(flag, overrides) {
|
|
82
|
+
const flags = loadSA4E119Flags(overrides);
|
|
83
|
+
return flags[flag];
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=feature-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../src/config/feature-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwBH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAkC;IACnE,iBAAiB,EAAE,IAAI;IACvB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,KAAK,EAAQ,8BAA8B;IACzD,iBAAiB,EAAE,IAAI;IACvB,iBAAiB,EAAE,IAAI;IACvB,OAAO,EAAE,KAAK,EAAa,eAAe;IAC1C,iBAAiB,EAAE,KAAK,EAAG,eAAe;CAC3C,CAAC;AAEF,wDAAwD;AACxD,MAAM,WAAW,GAA8C;IAC7D,iBAAiB,EAAE,4BAA4B;IAC/C,SAAS,EAAE,mBAAmB;IAC9B,WAAW,EAAE,qBAAqB;IAClC,UAAU,EAAE,qBAAqB;IACjC,YAAY,EAAE,uBAAuB;IACrC,iBAAiB,EAAE,4BAA4B;IAC/C,iBAAiB,EAAE,4BAA4B;IAC/C,OAAO,EAAE,iBAAiB;IAC1B,iBAAiB,EAAE,4BAA4B;CAChD,CAAC;AAEF;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAyB;IAC7C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAwC;IAExC,MAAM,KAAK,GAAG,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAE5C,+BAA+B;IAC/B,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAqC,EAAE,CAAC;YAC7E,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBACjC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAE,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,KAAK,CAAC,GAAgC,CAAC,GAAG,QAAQ,CAAC;QACrD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAA+B,EAC/B,SAAwC;IAExC,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import Database from 'better-sqlite3';
|
|
7
7
|
import * as fs from 'fs';
|
|
8
8
|
import * as path from 'path';
|
|
9
|
+
import { normalizeSqlitePlaceholders } from './sqlite-placeholders.js';
|
|
9
10
|
export class SqliteAdapter {
|
|
10
11
|
dbPath;
|
|
11
12
|
nativeBinding;
|
|
@@ -50,16 +51,16 @@ export class SqliteAdapter {
|
|
|
50
51
|
};
|
|
51
52
|
}
|
|
52
53
|
run(sql, params) {
|
|
53
|
-
const stmt = this.getDb().prepare(sql);
|
|
54
|
+
const stmt = this.getDb().prepare(normalizeSqlitePlaceholders(sql));
|
|
54
55
|
const result = params ? stmt.run(...params) : stmt.run();
|
|
55
56
|
return { changes: result.changes, lastInsertRowid: result.lastInsertRowid };
|
|
56
57
|
}
|
|
57
58
|
get(sql, params) {
|
|
58
|
-
const stmt = this.getDb().prepare(sql);
|
|
59
|
+
const stmt = this.getDb().prepare(normalizeSqlitePlaceholders(sql));
|
|
59
60
|
return (params ? stmt.get(...params) : stmt.get());
|
|
60
61
|
}
|
|
61
62
|
all(sql, params) {
|
|
62
|
-
const stmt = this.getDb().prepare(sql);
|
|
63
|
+
const stmt = this.getDb().prepare(normalizeSqlitePlaceholders(sql));
|
|
63
64
|
return (params ? stmt.all(...params) : stmt.all());
|
|
64
65
|
}
|
|
65
66
|
exec(sql) {
|
|
@@ -69,7 +70,7 @@ export class SqliteAdapter {
|
|
|
69
70
|
return this.getDb().transaction(fn)();
|
|
70
71
|
}
|
|
71
72
|
prepare(sql) {
|
|
72
|
-
const stmt = this.getDb().prepare(sql);
|
|
73
|
+
const stmt = this.getDb().prepare(normalizeSqlitePlaceholders(sql));
|
|
73
74
|
return {
|
|
74
75
|
run: (...params) => {
|
|
75
76
|
const r = stmt.run(...params);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteAdapter.js","sourceRoot":"","sources":["../../../src/database/adapters/SqliteAdapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"SqliteAdapter.js","sourceRoot":"","sources":["../../../src/database/adapters/SqliteAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Zero-overhead: all async methods delegate to sync SQLite calls wrapped in Promise.resolve().
|
|
4
4
|
* SA4E-44: Allows MemoryEngine and other modules to use uniform AsyncDatabaseAdapter interface.
|
|
5
5
|
*/
|
|
6
|
+
import { normalizeSqlitePlaceholders } from './sqlite-placeholders.js';
|
|
6
7
|
export class SqliteAsyncAdapter {
|
|
7
8
|
db;
|
|
8
9
|
constructor(db) {
|
|
@@ -13,16 +14,16 @@ export class SqliteAsyncAdapter {
|
|
|
13
14
|
isConnected() { return true; }
|
|
14
15
|
getEngine() { return 'sqlite'; }
|
|
15
16
|
async run(sql, params) {
|
|
16
|
-
const stmt = this.db.prepare(sql);
|
|
17
|
+
const stmt = this.db.prepare(normalizeSqlitePlaceholders(sql));
|
|
17
18
|
const r = params ? stmt.run(...params) : stmt.run();
|
|
18
19
|
return { changes: r.changes, lastInsertRowid: r.lastInsertRowid };
|
|
19
20
|
}
|
|
20
21
|
async get(sql, params) {
|
|
21
|
-
const stmt = this.db.prepare(sql);
|
|
22
|
+
const stmt = this.db.prepare(normalizeSqlitePlaceholders(sql));
|
|
22
23
|
return (params ? stmt.get(...params) : stmt.get());
|
|
23
24
|
}
|
|
24
25
|
async all(sql, params) {
|
|
25
|
-
const stmt = this.db.prepare(sql);
|
|
26
|
+
const stmt = this.db.prepare(normalizeSqlitePlaceholders(sql));
|
|
26
27
|
return (params ? stmt.all(...params) : stmt.all());
|
|
27
28
|
}
|
|
28
29
|
async exec(sql) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteAsyncAdapter.js","sourceRoot":"","sources":["../../../src/database/adapters/SqliteAsyncAdapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"SqliteAsyncAdapter.js","sourceRoot":"","sources":["../../../src/database/adapters/SqliteAsyncAdapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAEvE,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,KAAuC,CAAC;IACrD,KAAK,CAAC,UAAU,KAA6C,CAAC;IAC9D,WAAW,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IACvC,SAAS,KAAqB,OAAO,QAAQ,CAAC,CAAC,CAAC;IAEhD,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,MAAkB;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACpD,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,GAAG,CAAc,GAAW,EAAE,MAAkB;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAkB,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,GAAG,CAAc,GAAW,EAAE,MAAkB;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAQ,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW;QACpB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,WAAW,CAAI,EAAoB;QACvC,uFAAuF;QACvF,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;IAED,yEAAyE;IACzE,QAAQ,KAAwB,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;CAClD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite placeholder normalization.
|
|
3
|
+
* better-sqlite3 treats `$1`/`$2` as *named* parameters, so array binding
|
|
4
|
+
* (stmt.run(...params)) throws "Too many parameter values were provided".
|
|
5
|
+
* Cross-engine SQL often uses `$n` (PostgreSQL style). Normalize them to `?`
|
|
6
|
+
* so array binding works on SQLite too.
|
|
7
|
+
*/
|
|
8
|
+
export declare function normalizeSqlitePlaceholders(sql: string): string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite placeholder normalization.
|
|
3
|
+
* better-sqlite3 treats `$1`/`$2` as *named* parameters, so array binding
|
|
4
|
+
* (stmt.run(...params)) throws "Too many parameter values were provided".
|
|
5
|
+
* Cross-engine SQL often uses `$n` (PostgreSQL style). Normalize them to `?`
|
|
6
|
+
* so array binding works on SQLite too.
|
|
7
|
+
*/
|
|
8
|
+
export function normalizeSqlitePlaceholders(sql) {
|
|
9
|
+
return sql.replace(/\$(\d+)/g, '?');
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=sqlite-placeholders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-placeholders.js","sourceRoot":"","sources":["../../../src/database/adapters/sqlite-placeholders.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -75,6 +75,9 @@ export async function ensurePostgresIndexSchema(adapter) {
|
|
|
75
75
|
// 4. Ensure pending_tasks has serial ID
|
|
76
76
|
await safeExec(adapter, `CREATE SEQUENCE IF NOT EXISTS pending_tasks_id_seq`);
|
|
77
77
|
await safeExec(adapter, `ALTER TABLE pending_tasks ALTER COLUMN id SET DEFAULT nextval('pending_tasks_id_seq')`);
|
|
78
|
+
// SA4E-171: Drop FK on pending_tasks.entry_id → knowledge_entries(id)
|
|
79
|
+
// This allows entry_id to store symbolId for CODE_ENRICHMENT tasks (OI-01)
|
|
80
|
+
await safeExec(adapter, `ALTER TABLE pending_tasks DROP CONSTRAINT IF EXISTS pending_tasks_entry_id_fkey`);
|
|
78
81
|
// 5. Ensure indexes exist
|
|
79
82
|
const indexes = [
|
|
80
83
|
'CREATE INDEX IF NOT EXISTS idx_files_project ON files(project_id)',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-schema-ensure.js","sourceRoot":"","sources":["../../../src/database/migration/pg-schema-ensure.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pg-schema-ensure.js","sourceRoot":"","sources":["../../../src/database/migration/pg-schema-ensure.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { CodeEnrichmentPromptBuilder } from './CodeEnrichmentPromptBuilder.js';
|
|
7
7
|
import { CodeEnrichmentPayloadSchema } from './types.js';
|
|
8
8
|
import { validateTags } from './tag-validator.js';
|
|
9
|
+
import { isPegaKind } from '../../modules/pega/pega-mapping.js';
|
|
9
10
|
/** LLM call timeout in milliseconds (BR-02). */
|
|
10
11
|
const LLM_TIMEOUT_MS = 30_000;
|
|
11
12
|
/** Max pseudo code length (BR-05). */
|
|
@@ -13,7 +14,6 @@ const MAX_PSEUDO_CODE_LENGTH = 2000;
|
|
|
13
14
|
// Strategy selection: which symbol kinds map to which enrichment strategy
|
|
14
15
|
const CLASS_KINDS = new Set(['class', 'interface', 'enum']);
|
|
15
16
|
const FUNCTION_KINDS = new Set(['function', 'method', 'arrow_function', 'generator']);
|
|
16
|
-
const PEGA_KINDS = new Set(['pega_activity', 'pega_data_transform', 'pega_flow']);
|
|
17
17
|
/**
|
|
18
18
|
* Orchestrates LLM enrichment for a single code symbol.
|
|
19
19
|
* Injected into TaskWorker via setCodeEnrichmentHandler().
|
|
@@ -47,7 +47,8 @@ export class CodeEnrichmentHandler {
|
|
|
47
47
|
await this.storeResults(payload.symbolId, response, strategy);
|
|
48
48
|
}
|
|
49
49
|
selectStrategy(kind, workspaceType) {
|
|
50
|
-
|
|
50
|
+
// SA4E-171: use isPegaKind() for all 16+ pega kinds (replaces static set)
|
|
51
|
+
if (workspaceType === 'pega' && isPegaKind(kind))
|
|
51
52
|
return 'PEGA_SUMMARY';
|
|
52
53
|
if (FUNCTION_KINDS.has(kind))
|
|
53
54
|
return 'FUNCTION_SUMMARY';
|
|
@@ -70,6 +71,9 @@ export class CodeEnrichmentHandler {
|
|
|
70
71
|
bodyText,
|
|
71
72
|
childMembers,
|
|
72
73
|
existingPseudoCode,
|
|
74
|
+
// SA4E-106: Pega class from payload or parent_symbol; ruleset from payload
|
|
75
|
+
pegaClass: payload.pegaClass || sym.parent_symbol || undefined,
|
|
76
|
+
pegaRuleset: payload.pegaRuleset || undefined,
|
|
73
77
|
};
|
|
74
78
|
}
|
|
75
79
|
async loadBodyText(symbolId) {
|
|
@@ -125,7 +129,7 @@ export class CodeEnrichmentHandler {
|
|
|
125
129
|
const tagsMatch = raw.match(/"tags"\s*:\s*\[([^\]]*)\]/);
|
|
126
130
|
const summary = summaryMatch?.[1] ?? raw.slice(0, 200).replace(/["\n]/g, ' ').trim();
|
|
127
131
|
const result = { summary };
|
|
128
|
-
if (strategy === 'FUNCTION_SUMMARY' && pseudoMatch) {
|
|
132
|
+
if ((strategy === 'FUNCTION_SUMMARY' || strategy === 'PEGA_SUMMARY') && pseudoMatch) {
|
|
129
133
|
result.pseudo_code = pseudoMatch[1];
|
|
130
134
|
}
|
|
131
135
|
if (tagsMatch) {
|
|
@@ -138,8 +142,9 @@ export class CodeEnrichmentHandler {
|
|
|
138
142
|
async storeResults(symbolId, response, strategy) {
|
|
139
143
|
const tags = validateTags(response.tags);
|
|
140
144
|
const tagsJson = tags.length > 0 ? JSON.stringify(tags) : null;
|
|
145
|
+
// SA4E-171: store pseudo_code for both FUNCTION and PEGA strategies
|
|
141
146
|
let pseudoCode = null;
|
|
142
|
-
if (strategy === 'FUNCTION_SUMMARY' && response.pseudo_code) {
|
|
147
|
+
if ((strategy === 'FUNCTION_SUMMARY' || strategy === 'PEGA_SUMMARY') && response.pseudo_code) {
|
|
143
148
|
pseudoCode = response.pseudo_code.length > MAX_PSEUDO_CODE_LENGTH
|
|
144
149
|
? response.pseudo_code.slice(0, MAX_PSEUDO_CODE_LENGTH) + '...'
|
|
145
150
|
: response.pseudo_code;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEnrichmentHandler.js","sourceRoot":"","sources":["../../../src/engine/enrichment/CodeEnrichmentHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"CodeEnrichmentHandler.js","sourceRoot":"","sources":["../../../src/engine/enrichment/CodeEnrichmentHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,9 +64,11 @@ Valid tag categories: ${VALID_TAG_CATEGORIES.join(', ')}
|
|
|
64
64
|
Tag values: lowercase, alphanumeric + hyphens only. Max 8 tags.`;
|
|
65
65
|
}
|
|
66
66
|
pegaSystemPrompt() {
|
|
67
|
-
return `You are a Pega platform analyst.
|
|
68
|
-
Return JSON only: {"summary":"<1-3 sentences describing business purpose>"}
|
|
69
|
-
|
|
67
|
+
return `You are a Pega platform analyst. Analyze the business purpose and logic of this Pega rule.
|
|
68
|
+
Return JSON only: {"summary":"<1-3 sentences describing business purpose>","pseudo_code":"<structured pseudo code describing the rule logic, max 2000 chars>","tags":["category:value",...]}
|
|
69
|
+
Valid tag categories: ${VALID_TAG_CATEGORIES.join(', ')}
|
|
70
|
+
Tag values: lowercase, alphanumeric + hyphens only. Max 8 tags.
|
|
71
|
+
Focus on business intent and the main logic flow (steps, decisions, expressions).`;
|
|
70
72
|
}
|
|
71
73
|
buildClassUserPrompt(ctx) {
|
|
72
74
|
const parts = [`[${ctx.kind}] ${ctx.name}`];
|
|
@@ -106,8 +108,15 @@ Focus on business intent, not technical implementation.`;
|
|
|
106
108
|
parts.push(`Class: ${ctx.pegaClass}`);
|
|
107
109
|
if (ctx.pegaRuleset)
|
|
108
110
|
parts.push(`RuleSet: ${ctx.pegaRuleset}`);
|
|
111
|
+
if (ctx.signature)
|
|
112
|
+
parts.push(`Signature: ${ctx.signature}`);
|
|
113
|
+
// SA4E-106: rule body (steps/params/Java) extracted from rule.json
|
|
114
|
+
if (ctx.bodyText) {
|
|
115
|
+
const truncated = this.truncateToTokens(ctx.bodyText, MAX_BODY_TOKENS);
|
|
116
|
+
parts.push(`Rule Content:\n${truncated}`);
|
|
117
|
+
}
|
|
109
118
|
if (ctx.existingPseudoCode) {
|
|
110
|
-
parts.push(`Pseudo Code:\n${ctx.existingPseudoCode}`);
|
|
119
|
+
parts.push(`Existing Pseudo Code:\n${ctx.existingPseudoCode}`);
|
|
111
120
|
}
|
|
112
121
|
return parts.join('\n');
|
|
113
122
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEnrichmentPromptBuilder.js","sourceRoot":"","sources":["../../../src/engine/enrichment/CodeEnrichmentPromptBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,wDAAwD;AACxD,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B;;;GAGG;AACH,MAAM,OAAO,2BAA2B;IACtC;;;;;OAKG;IACH,KAAK,CAAC,QAA4B,EAAE,OAAsB;QACxD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,eAAe,CAAC,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC7D,KAAK,kBAAkB,CAAC,CAAC,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACnE,KAAK,gBAAgB,CAAC,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC/D,KAAK,cAAc,CAAC,CAAC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,GAAkB;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;IAEO,oBAAoB,CAAC,GAAkB;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;IAEO,kBAAkB,CAAC,GAAkB;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;IAEO,gBAAgB,CAAC,GAAkB;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;IAEO,iBAAiB;QACvB,OAAO;;wBAEa,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;oDACH,CAAC;IACnD,CAAC;IAEO,oBAAoB;QAC1B,OAAO;;wBAEa,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;;+DAEQ,CAAC;IAC9D,CAAC;IAEO,eAAe;QACrB,OAAO;;wBAEa,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;gEACS,CAAC;IAC/D,CAAC;IAEO,gBAAgB;QACtB,OAAO;;
|
|
1
|
+
{"version":3,"file":"CodeEnrichmentPromptBuilder.js","sourceRoot":"","sources":["../../../src/engine/enrichment/CodeEnrichmentPromptBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ export declare class CodeEnrichmentTaskCreator {
|
|
|
31
31
|
* @returns Number of tasks created
|
|
32
32
|
*/
|
|
33
33
|
createTasksForProject(projectId: string): Promise<number>;
|
|
34
|
-
/** Skip if symbol already enriched (
|
|
34
|
+
/** Skip if symbol already fully enriched (has summary). */
|
|
35
35
|
private shouldCreateTask;
|
|
36
36
|
/**
|
|
37
37
|
* Cross-scope dedup: check if the same file (by content_hash) has already been
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
* Non-blocking: failures don't affect the indexing pipeline (BR-01).
|
|
6
6
|
*/
|
|
7
7
|
import { TaskType, TaskStatus } from '../../modules/memory/task-queue/models.js';
|
|
8
|
+
import { isPegaKind } from '../../modules/pega/pega-mapping.js';
|
|
8
9
|
/** Kinds eligible for enrichment — excludes trivial symbols like variables. */
|
|
9
10
|
const ENRICHABLE_KINDS = new Set([
|
|
10
11
|
'class', 'interface', 'enum',
|
|
11
12
|
'function', 'method', 'arrow_function', 'generator',
|
|
12
|
-
'pega_activity', 'pega_data_transform', 'pega_flow',
|
|
13
13
|
]);
|
|
14
14
|
/**
|
|
15
15
|
* Creates CODE_ENRICHMENT tasks for newly indexed symbols.
|
|
@@ -47,7 +47,7 @@ export class CodeEnrichmentTaskCreator {
|
|
|
47
47
|
if (!shouldCreate)
|
|
48
48
|
continue;
|
|
49
49
|
const kind = await this.getSymbolKind(symbolId);
|
|
50
|
-
if (!kind || !ENRICHABLE_KINDS.has(kind))
|
|
50
|
+
if (!kind || (!ENRICHABLE_KINDS.has(kind) && !isPegaKind(kind)))
|
|
51
51
|
continue;
|
|
52
52
|
await this.insertTask(symbolId, symbolName, kind, filePath, projectId);
|
|
53
53
|
created++;
|
|
@@ -67,7 +67,9 @@ export class CodeEnrichmentTaskCreator {
|
|
|
67
67
|
async createTasksForProject(projectId) {
|
|
68
68
|
const symbols = await this.adapter.allAsync(`SELECT s.id, s.name, s.kind, f.relative_path as file_path
|
|
69
69
|
FROM symbols s JOIN files f ON s.file_id = f.id
|
|
70
|
-
WHERE s.project_id = ?
|
|
70
|
+
WHERE s.project_id = ?
|
|
71
|
+
AND (s.enrichment_status IS NULL OR s.enrichment_status = 'FAILED'
|
|
72
|
+
OR (s.enrichment_status = 'COMPLETED' AND s.summary IS NULL))
|
|
71
73
|
LIMIT 500`, [projectId]);
|
|
72
74
|
// Batch cross-scope check: collect unique file paths, check which are already enriched
|
|
73
75
|
const filePathsToCheck = [...new Set(symbols.map(s => s.file_path))];
|
|
@@ -82,7 +84,7 @@ export class CodeEnrichmentTaskCreator {
|
|
|
82
84
|
}
|
|
83
85
|
let created = 0;
|
|
84
86
|
for (const sym of symbols) {
|
|
85
|
-
if (!ENRICHABLE_KINDS.has(sym.kind))
|
|
87
|
+
if (!ENRICHABLE_KINDS.has(sym.kind) && !isPegaKind(sym.kind))
|
|
86
88
|
continue;
|
|
87
89
|
if (skippedFiles.has(sym.file_path))
|
|
88
90
|
continue; // Cross-scope dedup
|
|
@@ -94,11 +96,11 @@ export class CodeEnrichmentTaskCreator {
|
|
|
94
96
|
}
|
|
95
97
|
return created;
|
|
96
98
|
}
|
|
97
|
-
/** Skip if symbol already enriched (
|
|
99
|
+
/** Skip if symbol already fully enriched (has summary). */
|
|
98
100
|
async shouldCreateTask(symbolId) {
|
|
99
|
-
const row = await this.adapter.getAsync('SELECT enrichment_status FROM symbols WHERE id = ?', [symbolId]);
|
|
100
|
-
// Skip if COMPLETED
|
|
101
|
-
return row?.enrichment_status
|
|
101
|
+
const row = await this.adapter.getAsync('SELECT enrichment_status, summary FROM symbols WHERE id = ?', [symbolId]);
|
|
102
|
+
// Skip only if COMPLETED AND has summary (CODE_ENRICHMENT done, not just TAG_ENRICHMENT)
|
|
103
|
+
return !(row?.enrichment_status === 'COMPLETED' && row?.summary);
|
|
102
104
|
}
|
|
103
105
|
/**
|
|
104
106
|
* Cross-scope dedup: check if the same file (by content_hash) has already been
|
|
@@ -129,9 +131,11 @@ export class CodeEnrichmentTaskCreator {
|
|
|
129
131
|
return row?.kind ?? null;
|
|
130
132
|
}
|
|
131
133
|
async insertTask(symbolId, symbolName, kind, filePath, projectId) {
|
|
134
|
+
// SA4E-171: dynamically set workspaceType based on symbol kind
|
|
132
135
|
const payload = JSON.stringify({
|
|
133
136
|
symbolId, symbolName, symbolKind: kind,
|
|
134
|
-
projectId, filePath,
|
|
137
|
+
projectId, filePath,
|
|
138
|
+
workspaceType: isPegaKind(kind) ? 'pega' : 'standard',
|
|
135
139
|
});
|
|
136
140
|
await this.adapter.runAsync(`INSERT INTO pending_tasks (task_type, entry_id, status, payload, max_retries, created_at)
|
|
137
141
|
VALUES (?, ?, ?, ?, ?, datetime('now'))`, [TaskType.CODE_ENRICHMENT, symbolId, TaskStatus.PENDING, payload, 3]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEnrichmentTaskCreator.js","sourceRoot":"","sources":["../../../src/engine/enrichment/CodeEnrichmentTaskCreator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"CodeEnrichmentTaskCreator.js","sourceRoot":"","sources":["../../../src/engine/enrichment/CodeEnrichmentTaskCreator.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,8 @@ export declare const CodeEnrichmentPayloadSchema: z.ZodObject<{
|
|
|
31
31
|
projectId: z.ZodString;
|
|
32
32
|
filePath: z.ZodString;
|
|
33
33
|
workspaceType: z.ZodDefault<z.ZodEnum<["pega", "standard"]>>;
|
|
34
|
+
pegaClass: z.ZodOptional<z.ZodString>;
|
|
35
|
+
pegaRuleset: z.ZodOptional<z.ZodString>;
|
|
34
36
|
}, "strip", z.ZodTypeAny, {
|
|
35
37
|
projectId: string;
|
|
36
38
|
filePath: string;
|
|
@@ -38,6 +40,8 @@ export declare const CodeEnrichmentPayloadSchema: z.ZodObject<{
|
|
|
38
40
|
symbolName: string;
|
|
39
41
|
symbolKind: string;
|
|
40
42
|
workspaceType: "pega" | "standard";
|
|
43
|
+
pegaClass?: string | undefined;
|
|
44
|
+
pegaRuleset?: string | undefined;
|
|
41
45
|
}, {
|
|
42
46
|
projectId: string;
|
|
43
47
|
filePath: string;
|
|
@@ -45,6 +49,8 @@ export declare const CodeEnrichmentPayloadSchema: z.ZodObject<{
|
|
|
45
49
|
symbolName: string;
|
|
46
50
|
symbolKind: string;
|
|
47
51
|
workspaceType?: "pega" | "standard" | undefined;
|
|
52
|
+
pegaClass?: string | undefined;
|
|
53
|
+
pegaRuleset?: string | undefined;
|
|
48
54
|
}>;
|
|
49
55
|
export type CodeEnrichmentPayload = z.infer<typeof CodeEnrichmentPayloadSchema>;
|
|
50
56
|
/** Expected JSON response structure from LLM. */
|
|
@@ -19,5 +19,7 @@ export const CodeEnrichmentPayloadSchema = z.object({
|
|
|
19
19
|
projectId: z.string(),
|
|
20
20
|
filePath: z.string(),
|
|
21
21
|
workspaceType: z.enum(['pega', 'standard']).default('standard'),
|
|
22
|
+
pegaClass: z.string().optional(),
|
|
23
|
+
pegaRuleset: z.string().optional(),
|
|
22
24
|
});
|
|
23
25
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engine/enrichment/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,mDAAmD;AACnD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,gBAAgB;IAChB,gBAAgB;IAChB,QAAQ;IACR,YAAY;IACZ,YAAY;CACJ,CAAC;AA2BX,iEAAiE;AACjE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engine/enrichment/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,mDAAmD;AACnD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,gBAAgB;IAChB,gBAAgB;IAChB,QAAQ;IACR,YAAY;IACZ,YAAY;CACJ,CAAC;AA2BX,iEAAiE;AACjE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC/D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC"}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* Projects a tenant's code symbols into graph_nodes table in the unified DB so the
|
|
6
6
|
* KB Graph visualization shows per-project code nodes. Scoped + idempotent:
|
|
7
7
|
* only touches rows for the given project_id with `entry_id LIKE 'code:%'`.
|
|
8
|
+
* SA4E-106: Pega rules are stored as code symbols too — projected the same way,
|
|
9
|
+
* and the legacy `pega:` nodes are replaced (single code representation).
|
|
8
10
|
*/
|
|
9
11
|
import type { DatabaseAdapter } from '../../database/adapters/DatabaseAdapter.js';
|
|
10
12
|
import type { Logger } from 'pino';
|
|
@@ -21,5 +23,7 @@ export declare class GraphSyncService {
|
|
|
21
23
|
private syncCodeEdges;
|
|
22
24
|
private readTopSymbols;
|
|
23
25
|
private replaceCodeNodes;
|
|
26
|
+
/** SA4E-106: Map symbol kind → graph node type, incl. Pega kinds (pega_activity → ACTIVITY). */
|
|
27
|
+
private nodeTypeFor;
|
|
24
28
|
private toLabel;
|
|
25
29
|
}
|