sdlc-agent-4-enterprise-server 1.42.2 → 1.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/.env.example +23 -0
  2. package/README.md +3 -2
  3. package/dist/admin/db/config.js +14 -3
  4. package/dist/admin/db/config.js.map +1 -1
  5. package/dist/admin/db/core.d.ts +6 -0
  6. package/dist/admin/db/core.js +36 -10
  7. package/dist/admin/db/core.js.map +1 -1
  8. package/dist/admin/db/schema.d.ts +5 -4
  9. package/dist/admin/db/schema.js +302 -62
  10. package/dist/admin/db/schema.js.map +1 -1
  11. package/dist/admin/db/sessions.d.ts +3 -3
  12. package/dist/admin/db/sessions.js +12 -7
  13. package/dist/admin/db/sessions.js.map +1 -1
  14. package/dist/admin/db/users.js +2 -2
  15. package/dist/admin/db/users.js.map +1 -1
  16. package/dist/config/EntraConfig.d.ts +77 -0
  17. package/dist/config/EntraConfig.js +190 -0
  18. package/dist/config/EntraConfig.js.map +1 -0
  19. package/dist/config/index.d.ts +6 -2
  20. package/dist/config/index.js +25 -0
  21. package/dist/config/index.js.map +1 -1
  22. package/dist/config/unified-extensions.d.ts +10 -0
  23. package/dist/config/unified-extensions.js +18 -0
  24. package/dist/config/unified-extensions.js.map +1 -0
  25. package/dist/database/adapters/SqliteAdapter.js +19 -1
  26. package/dist/database/adapters/SqliteAdapter.js.map +1 -1
  27. package/dist/database/migration/ensure-pega-category-counters.d.ts +4 -3
  28. package/dist/database/migration/ensure-pega-category-counters.js +13 -7
  29. package/dist/database/migration/ensure-pega-category-counters.js.map +1 -1
  30. package/dist/database/repositories/UserRepository.d.ts +13 -2
  31. package/dist/database/repositories/UserRepository.js +62 -0
  32. package/dist/database/repositories/UserRepository.js.map +1 -1
  33. package/dist/database/repositories/interfaces.d.ts +17 -0
  34. package/dist/database/schema-registry/ensure-sa4e-276.d.ts +4 -0
  35. package/dist/database/schema-registry/ensure-sa4e-276.js +40 -0
  36. package/dist/database/schema-registry/ensure-sa4e-276.js.map +1 -0
  37. package/dist/engine/enrichment/CodeEnrichmentHandler.js +9 -2
  38. package/dist/engine/enrichment/CodeEnrichmentHandler.js.map +1 -1
  39. package/dist/engine/graph/graph-sync-service.js +1 -1
  40. package/dist/engine/graph/graph-sync-service.js.map +1 -1
  41. package/dist/engine/indexer/async-file-scanner.js +1 -1
  42. package/dist/engine/indexer/async-file-scanner.js.map +1 -1
  43. package/dist/engine/indexer/file-scanner.js +7 -1
  44. package/dist/engine/indexer/file-scanner.js.map +1 -1
  45. package/dist/engine/indexer/project-type/resolver.d.ts +1 -1
  46. package/dist/engine/indexer/project-type/resolver.js +3 -10
  47. package/dist/engine/indexer/project-type/resolver.js.map +1 -1
  48. package/dist/engine/parsers/grammars/tree-sitter-jsp.wasm +0 -0
  49. package/dist/engine/parsers/indexer/storage.d.ts +1 -0
  50. package/dist/engine/parsers/indexer/storage.js +21 -0
  51. package/dist/engine/parsers/indexer/storage.js.map +1 -1
  52. package/dist/engine/parsers/languages/jsp-parser.d.ts +38 -0
  53. package/dist/engine/parsers/languages/jsp-parser.js +171 -0
  54. package/dist/engine/parsers/languages/jsp-parser.js.map +1 -0
  55. package/dist/engine/parsers/tree-sitter-indexer.d.ts +3 -6
  56. package/dist/engine/parsers/tree-sitter-indexer.js +79 -15
  57. package/dist/engine/parsers/tree-sitter-indexer.js.map +1 -1
  58. package/dist/engine/parsers/types.d.ts +1 -1
  59. package/dist/models/pega-schema.models.d.ts +42 -42
  60. package/dist/modules/kb-graph/service/constants.js +36 -0
  61. package/dist/modules/kb-graph/service/constants.js.map +1 -1
  62. package/dist/modules/kb-graph/service/sync.js +1 -1
  63. package/dist/modules/kb-graph/service/sync.js.map +1 -1
  64. package/dist/modules/memory/MemoryModuleBuilder.js +10 -0
  65. package/dist/modules/memory/MemoryModuleBuilder.js.map +1 -1
  66. package/dist/modules/orchestration/McpServerConfigRepository.d.ts +9 -0
  67. package/dist/modules/orchestration/McpServerConfigRepository.js +17 -1
  68. package/dist/modules/orchestration/McpServerConfigRepository.js.map +1 -1
  69. package/dist/modules/pega/schema/SchemaStorageService.js +10 -1
  70. package/dist/modules/pega/schema/SchemaStorageService.js.map +1 -1
  71. package/dist/modules/security/SecurityModule.js +1 -1
  72. package/dist/modules/security/SecurityModule.js.map +1 -1
  73. package/dist/modules/security/gateguard/GateGuardRepository.d.ts +5 -5
  74. package/dist/modules/security/gateguard/GateGuardRepository.js +10 -10
  75. package/dist/modules/security/gateguard/GateGuardRepository.js.map +1 -1
  76. package/dist/modules/security/gateguard/GateGuardService.d.ts +6 -6
  77. package/dist/modules/security/gateguard/GateGuardService.js +14 -14
  78. package/dist/modules/security/gateguard/GateGuardService.js.map +1 -1
  79. package/dist/modules/security/gateguard/GateGuardToolHandler.js +7 -7
  80. package/dist/modules/security/gateguard/GateGuardToolHandler.js.map +1 -1
  81. package/dist/server/HttpServer.js +11 -0
  82. package/dist/server/HttpServer.js.map +1 -1
  83. package/dist/server/auth/index.d.ts +3 -0
  84. package/dist/server/auth/index.js +4 -0
  85. package/dist/server/auth/index.js.map +1 -0
  86. package/dist/server/auth/models/GitHubProfile.d.ts +75 -0
  87. package/dist/server/auth/models/GitHubProfile.js +34 -0
  88. package/dist/server/auth/models/GitHubProfile.js.map +1 -0
  89. package/dist/server/auth/models/GoogleClaims.d.ts +75 -0
  90. package/dist/server/auth/models/GoogleClaims.js +44 -0
  91. package/dist/server/auth/models/GoogleClaims.js.map +1 -0
  92. package/dist/server/auth/models/NormalizedProfile.d.ts +8 -0
  93. package/dist/server/auth/models/NormalizedProfile.js +2 -0
  94. package/dist/server/auth/models/NormalizedProfile.js.map +1 -0
  95. package/dist/server/auth/models/SsoProviderConfig.d.ts +14 -0
  96. package/dist/server/auth/models/SsoProviderConfig.js +2 -0
  97. package/dist/server/auth/models/SsoProviderConfig.js.map +1 -0
  98. package/dist/server/auth/strategies/EntraProviderStrategy.d.ts +7 -0
  99. package/dist/server/auth/strategies/EntraProviderStrategy.js +112 -0
  100. package/dist/server/auth/strategies/EntraProviderStrategy.js.map +1 -0
  101. package/dist/server/auth/strategies/GitHubProviderStrategy.d.ts +24 -0
  102. package/dist/server/auth/strategies/GitHubProviderStrategy.js +133 -0
  103. package/dist/server/auth/strategies/GitHubProviderStrategy.js.map +1 -0
  104. package/dist/server/auth/strategies/GoogleProviderConfig.d.ts +23 -0
  105. package/dist/server/auth/strategies/GoogleProviderConfig.js +50 -0
  106. package/dist/server/auth/strategies/GoogleProviderConfig.js.map +1 -0
  107. package/dist/server/auth/strategies/GoogleProviderStrategy.d.ts +35 -0
  108. package/dist/server/auth/strategies/GoogleProviderStrategy.js +104 -0
  109. package/dist/server/auth/strategies/GoogleProviderStrategy.js.map +1 -0
  110. package/dist/server/auth/strategies/SsoProviderStrategy.d.ts +33 -0
  111. package/dist/server/auth/strategies/SsoProviderStrategy.js +2 -0
  112. package/dist/server/auth/strategies/SsoProviderStrategy.js.map +1 -0
  113. package/dist/server/auth/strategies/SsoStrategyRegistry.d.ts +13 -0
  114. package/dist/server/auth/strategies/SsoStrategyRegistry.js +30 -0
  115. package/dist/server/auth/strategies/SsoStrategyRegistry.js.map +1 -0
  116. package/dist/server/auth/strategies/index.d.ts +5 -0
  117. package/dist/server/auth/strategies/index.js +14 -0
  118. package/dist/server/auth/strategies/index.js.map +1 -0
  119. package/dist/server/auth/utils/callback-url.d.ts +22 -0
  120. package/dist/server/auth/utils/callback-url.js +34 -0
  121. package/dist/server/auth/utils/callback-url.js.map +1 -0
  122. package/dist/server/auth/utils/pkce-helper.d.ts +6 -0
  123. package/dist/server/auth/utils/pkce-helper.js +29 -0
  124. package/dist/server/auth/utils/pkce-helper.js.map +1 -0
  125. package/dist/server/auth/utils/sso-config-loader.d.ts +15 -0
  126. package/dist/server/auth/utils/sso-config-loader.js +35 -0
  127. package/dist/server/auth/utils/sso-config-loader.js.map +1 -0
  128. package/dist/server/middleware/jwt-auth.js +19 -12
  129. package/dist/server/middleware/jwt-auth.js.map +1 -1
  130. package/dist/server/middleware/verifiers/EntraRS256Verifier.d.ts +46 -0
  131. package/dist/server/middleware/verifiers/EntraRS256Verifier.js +124 -0
  132. package/dist/server/middleware/verifiers/EntraRS256Verifier.js.map +1 -0
  133. package/dist/server/middleware/verifiers/GoogleIdTokenVerifier.d.ts +34 -0
  134. package/dist/server/middleware/verifiers/GoogleIdTokenVerifier.js +82 -0
  135. package/dist/server/middleware/verifiers/GoogleIdTokenVerifier.js.map +1 -0
  136. package/dist/server/middleware/verifiers/JwksCache.d.ts +34 -0
  137. package/dist/server/middleware/verifiers/JwksCache.js +82 -0
  138. package/dist/server/middleware/verifiers/JwksCache.js.map +1 -0
  139. package/dist/server/middleware/verifiers/LocalHS256Verifier.d.ts +11 -0
  140. package/dist/server/middleware/verifiers/LocalHS256Verifier.js +55 -0
  141. package/dist/server/middleware/verifiers/LocalHS256Verifier.js.map +1 -0
  142. package/dist/server/middleware/verifiers/TokenVerifier.d.ts +38 -0
  143. package/dist/server/middleware/verifiers/TokenVerifier.js +35 -0
  144. package/dist/server/middleware/verifiers/TokenVerifier.js.map +1 -0
  145. package/dist/server/middleware/verifiers/entra-auth.d.ts +32 -0
  146. package/dist/server/middleware/verifiers/entra-auth.js +104 -0
  147. package/dist/server/middleware/verifiers/entra-auth.js.map +1 -0
  148. package/dist/server/middleware/verifiers/verifier.test.d.ts +5 -0
  149. package/dist/server/middleware/verifiers/verifier.test.js +338 -0
  150. package/dist/server/middleware/verifiers/verifier.test.js.map +1 -0
  151. package/dist/server/routes/admin/auth.js +6 -109
  152. package/dist/server/routes/admin/auth.js.map +1 -1
  153. package/dist/server/routes/admin/config.js +87 -0
  154. package/dist/server/routes/admin/config.js.map +1 -1
  155. package/dist/server/routes/admin/context.js +4 -1
  156. package/dist/server/routes/admin/context.js.map +1 -1
  157. package/dist/server/routes/admin/database.js +11 -1
  158. package/dist/server/routes/admin/database.js.map +1 -1
  159. package/dist/server/routes/admin/index.js +2 -0
  160. package/dist/server/routes/admin/index.js.map +1 -1
  161. package/dist/server/routes/admin/sso-providers.d.ts +3 -0
  162. package/dist/server/routes/admin/sso-providers.js +112 -0
  163. package/dist/server/routes/admin/sso-providers.js.map +1 -0
  164. package/dist/server/routes/api-index.js +13 -1
  165. package/dist/server/routes/api-index.js.map +1 -1
  166. package/dist/server/routes/auth/entra.d.ts +11 -0
  167. package/dist/server/routes/auth/entra.js +121 -0
  168. package/dist/server/routes/auth/entra.js.map +1 -0
  169. package/dist/server/routes/auth/sso-dynamic.d.ts +2 -0
  170. package/dist/server/routes/auth/sso-dynamic.js +40 -0
  171. package/dist/server/routes/auth/sso-dynamic.js.map +1 -0
  172. package/dist/server/routes/auth/sso-http-helpers.d.ts +61 -0
  173. package/dist/server/routes/auth/sso-http-helpers.js +162 -0
  174. package/dist/server/routes/auth/sso-http-helpers.js.map +1 -0
  175. package/dist/server/routes/auth/sso-provider.d.ts +12 -0
  176. package/dist/server/routes/auth/sso-provider.js +137 -0
  177. package/dist/server/routes/auth/sso-provider.js.map +1 -0
  178. package/dist/server/routes/auth/unified.d.ts +2 -0
  179. package/dist/server/routes/auth/unified.js +196 -0
  180. package/dist/server/routes/auth/unified.js.map +1 -0
  181. package/dist/server/routes/sa4e-215/auth.d.ts +1 -0
  182. package/dist/server/routes/sa4e-215/auth.js +2 -102
  183. package/dist/server/routes/sa4e-215/auth.js.map +1 -1
  184. package/dist/server/services/JitProvisioningService.d.ts +33 -0
  185. package/dist/server/services/JitProvisioningService.js +145 -0
  186. package/dist/server/services/JitProvisioningService.js.map +1 -0
  187. package/dist/server/services/SessionService.d.ts +15 -0
  188. package/dist/server/services/SessionService.js +20 -0
  189. package/dist/server/services/SessionService.js.map +1 -0
  190. package/dist/server/utils/ua.d.ts +2 -0
  191. package/dist/server/utils/ua.js +11 -0
  192. package/dist/server/utils/ua.js.map +1 -0
  193. package/dist/servers/atlassian/credentials/credential-schemas.d.ts +4 -4
  194. package/dist/shared/EventBus.d.ts +2 -0
  195. package/dist/shared/EventBus.js +2 -0
  196. package/dist/shared/EventBus.js.map +1 -1
  197. package/dist/viewer/admin/entra-sso.html +27 -0
  198. package/dist/viewer/admin/index.html +44 -5
  199. package/package.json +4 -1
  200. package/src/admin/__tests__/admin-db.test.ts +8 -0
  201. package/src/admin/db/config.ts +15 -5
  202. package/src/admin/db/core.ts +35 -10
  203. package/src/admin/db/schema.ts +314 -90
  204. package/src/admin/db/sessions.ts +14 -6
  205. package/src/admin/db/users.ts +2 -2
  206. package/src/config/EntraConfig.ts +231 -0
  207. package/src/config/index.ts +26 -0
  208. package/src/config/unified-extensions.ts +20 -0
  209. package/src/database/adapters/SqliteAdapter.ts +19 -1
  210. package/src/database/migration/ensure-pega-category-counters.ts +16 -9
  211. package/src/database/repositories/UserRepository.ts +70 -2
  212. package/src/database/repositories/__tests__/UserRepository.test.ts +99 -1
  213. package/src/database/repositories/interfaces.ts +13 -0
  214. package/src/database/schema-registry/ensure-sa4e-276.ts +41 -0
  215. package/src/engine/enrichment/CodeEnrichmentHandler.ts +9 -2
  216. package/src/engine/graph/graph-sync-service.ts +1 -1
  217. package/src/engine/indexer/async-file-scanner.ts +1 -1
  218. package/src/engine/indexer/file-scanner.ts +7 -1
  219. package/src/engine/indexer/project-type/resolver.ts +3 -10
  220. package/src/engine/parsers/__tests__/tree-sitter-indexer-tierB.test.ts +12 -0
  221. package/src/engine/parsers/grammar-config.json +9 -0
  222. package/src/engine/parsers/grammars/tree-sitter-jsp.wasm +0 -0
  223. package/src/engine/parsers/indexer/storage.ts +23 -0
  224. package/src/engine/parsers/languages/jsp-parser.js +167 -0
  225. package/src/engine/parsers/tree-sitter-indexer.ts +86 -21
  226. package/src/engine/parsers/types.ts +6 -0
  227. package/src/modules/kb-graph/service/constants.ts +36 -0
  228. package/src/modules/kb-graph/service/sync.ts +1 -1
  229. package/src/modules/memory/MemoryModuleBuilder.ts +11 -0
  230. package/src/modules/orchestration/McpServerConfigRepository.ts +17 -1
  231. package/src/modules/pega/schema/SchemaStorageService.ts +12 -4
  232. package/src/modules/security/SecurityModule.ts +1 -1
  233. package/src/modules/security/gateguard/GateGuardRepository.ts +10 -10
  234. package/src/modules/security/gateguard/GateGuardService.ts +15 -15
  235. package/src/modules/security/gateguard/GateGuardToolHandler.ts +7 -7
  236. package/src/modules/security/gateguard/__tests__/GateGuardRepository.test.ts +28 -28
  237. package/src/modules/security/gateguard/__tests__/GateGuardService.test.ts +50 -49
  238. package/src/server/HttpServer.ts +11 -0
  239. package/src/server/auth/index.ts +3 -0
  240. package/src/server/auth/models/GitHubProfile.ts +41 -0
  241. package/src/server/auth/models/GoogleClaims.ts +52 -0
  242. package/src/server/auth/models/NormalizedProfile.ts +8 -0
  243. package/src/server/auth/models/SsoProviderConfig.ts +14 -0
  244. package/src/server/auth/strategies/EntraProviderStrategy.ts +140 -0
  245. package/src/server/auth/strategies/GitHubProviderStrategy.ts +151 -0
  246. package/src/server/auth/strategies/GoogleProviderConfig.ts +78 -0
  247. package/src/server/auth/strategies/GoogleProviderStrategy.ts +148 -0
  248. package/src/server/auth/strategies/SsoProviderStrategy.ts +41 -0
  249. package/src/server/auth/strategies/SsoStrategyRegistry.ts +39 -0
  250. package/src/server/auth/strategies/__tests__/EntraProviderStrategy.state.test.ts +81 -0
  251. package/src/server/auth/strategies/__tests__/EntraProviderStrategy.test.ts +265 -0
  252. package/src/server/auth/strategies/__tests__/GitHubProviderStrategy.test.ts +129 -0
  253. package/src/server/auth/strategies/__tests__/GoogleProviderConfig.test.ts +69 -0
  254. package/src/server/auth/strategies/__tests__/GoogleProviderStrategy.test.ts +172 -0
  255. package/src/server/auth/strategies/__tests__/SsoStrategyRegistry.test.ts +75 -0
  256. package/src/server/auth/strategies/index.ts +15 -0
  257. package/src/server/auth/utils/callback-url.ts +35 -0
  258. package/src/server/auth/utils/pkce-helper.ts +32 -0
  259. package/src/server/auth/utils/sso-config-loader.ts +55 -0
  260. package/src/server/middleware/__tests__/jwt-auth.test.ts +1 -1
  261. package/src/server/middleware/jwt-auth.ts +19 -14
  262. package/src/server/middleware/verifiers/EntraRS256Verifier.ts +184 -0
  263. package/src/server/middleware/verifiers/GoogleIdTokenVerifier.ts +98 -0
  264. package/src/server/middleware/verifiers/JwksCache.ts +103 -0
  265. package/src/server/middleware/verifiers/LocalHS256Verifier.ts +66 -0
  266. package/src/server/middleware/verifiers/TokenVerifier.ts +65 -0
  267. package/src/server/middleware/verifiers/__tests__/GoogleIdTokenVerifier.test.ts +106 -0
  268. package/src/server/middleware/verifiers/entra-auth.ts +117 -0
  269. package/src/server/middleware/verifiers/verifier.test.ts +429 -0
  270. package/src/server/routes/__tests__/admin.test.ts +4 -0
  271. package/src/server/routes/admin/auth.ts +6 -112
  272. package/src/server/routes/admin/config.ts +69 -0
  273. package/src/server/routes/admin/context.ts +4 -1
  274. package/src/server/routes/admin/database.ts +11 -1
  275. package/src/server/routes/admin/index.ts +2 -0
  276. package/src/server/routes/admin/sso-providers.ts +102 -0
  277. package/src/server/routes/api-index.ts +13 -1
  278. package/src/server/routes/auth/__tests__/sso-dynamic.test.ts +108 -0
  279. package/src/server/routes/auth/entra.ts +143 -0
  280. package/src/server/routes/auth/sso-dynamic.ts +50 -0
  281. package/src/server/routes/auth/sso-http-helpers.ts +176 -0
  282. package/src/server/routes/auth/sso-provider.ts +160 -0
  283. package/src/server/routes/auth/unified.ts +188 -0
  284. package/src/server/routes/sa4e-215/__tests__/sa4e-215.routes.test.ts +7 -4
  285. package/src/server/routes/sa4e-215/auth.ts +3 -123
  286. package/src/server/services/JitProvisioningService.ts +194 -0
  287. package/src/server/services/SessionService.ts +20 -0
  288. package/src/server/services/__tests__/JitProvisioningService.test.ts +187 -0
  289. package/src/server/utils/ua.ts +11 -0
  290. package/src/shared/EventBus.ts +2 -0
  291. package/src/viewer/admin/entra-sso.html +27 -0
  292. package/src/viewer/admin/index.html +44 -5
  293. package/tests/contract/extensions-contract.test.ts +30 -0
  294. package/tests/integration/auth.test.ts +5 -1
  295. package/tests/integration/entra-oauth.it.test.ts +169 -0
  296. package/tests/integration/google-oauth.it.test.ts +173 -0
  297. package/tests/unit/EntraConfig.test.ts +169 -0
  298. package/tests/unit/entra-loopback-redirect.test.ts +49 -0
package/.env.example CHANGED
@@ -72,3 +72,26 @@ CHECKSUM_MAX_ZIP_ENTRIES=50000 # trần số entry trong ZIP
72
72
  # --- Bulk-check limits (SEC-04) ---
73
73
  # Server-side cap on checksums per bulk-check request (client batches <= 1000).
74
74
  BULK_CHECK_MAX_CHECKSUMS=5000
75
+
76
+ # =============================================================================
77
+ # SA4E-264 — Entra ID SSO config (env template — placeholders only)
78
+ # NEVER commit real values. Use local .env (untracked) or a secret manager.
79
+ # See FSD SA4E-264 §4.1 for validation rules.
80
+ # =============================================================================
81
+
82
+ # Gate flag: true/1 = enable SSO (Entra vars become REQUIRED at startup, fail-fast)
83
+ SSO_ENABLED=false
84
+
85
+ # --- Required when SSO_ENABLED=true (4 values from App Registration runbook SA4E-271) ---
86
+ ENTRA_TENANT_ID=<azure-ad-tenant-guid-or-common>
87
+ ENTRA_CLIENT_ID=<app-registration-client-guid>
88
+ ENTRA_CLIENT_SECRET=<set-via-secret-manager> # min 8 chars; NEVER a real secret in repo
89
+ ENTRA_REDIRECT_URI=http://localhost:48721/auth/entra/callback
90
+
91
+ # --- Optional (derived defaults when absent — see FSD §7.2) ---
92
+ # ENTRA_AUTHORITY=https://login.microsoftonline.com/<tenant-guid>
93
+ # ENTRA_ISSUER=https://login.microsoftonline.com/<tenant-guid>/v2.0
94
+ # ENTRA_JWKS_URI=https://login.microsoftonline.com/<tenant-guid>/discovery/v2.0/keys
95
+ # ENTRA_SCOPES=openid profile email offline_access
96
+ # SSO_ALLOWED_REDIRECTS=/admin?page=dashboard,/app/dashboard
97
+ # SSO_LEGACY_REDIRECT_WITH_TOKEN=false
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.42.2-blue?style=for-the-badge" alt="Version">
9
+ <img src="https://img.shields.io/badge/version-1.43.0-blue?style=for-the-badge" alt="Version">
10
10
  <img src="https://img.shields.io/badge/tools-66+-teal?style=for-the-badge" alt="Tools">
11
11
  <img src="https://img.shields.io/badge/node-%3E%3D18-green?style=for-the-badge" alt="Node">
12
12
  </p>
@@ -38,7 +38,7 @@ Server starts at **http://localhost:48721**. Verify it's running:
38
38
 
39
39
  ```bash
40
40
  curl http://localhost:48721/health
41
- # → {"status":"healthy","version":"1.42.2","uptime":5,"tools_loaded":52}
41
+ # → {"status":"healthy","version":"1.43.0","uptime":5,"tools_loaded":52}
42
42
  ```
43
43
 
44
44
  ### Development Mode (auto-reload)
@@ -233,6 +233,7 @@ The embedding model is expected at `.code-intel/models/model.onnx`. Download it:
233
233
 
234
234
  | Version | Date | Ticket | Changes |
235
235
  |---------|------|--------|---------|
236
+ | 1.43.0 | 2026-09-22 | SA4E-262 | Multi-provider SSO unified on `sso_providers` (Entra/Google/GitHub, Strategy pattern). Entra email verification via Microsoft `xms_edov` claim (Entra omits standard `email_verified`); loopback SSO sessions no longer User-Agent-bound so extension `/api/admin/auth/me` works; JIT provisioning rejections return `403 provisioning_rejected` with a clear reason. |
236
237
  | 1.42.2 | 2026-09-11 | SA4E-257 | Wire DB-backed MCP server config to McpClientManager: McpServerConfigRepository loads `mcp_servers` table, initializeAll reads enabled servers from DB, real-time hooks auto connect/reconnect/disconnect on CRUD, transport normalization `streamable-http → httpStream`, mock logs removed. Regression tests pass. |
237
238
  | 1.42.1 | 2026-09-10 | SA4E-258 | Tenant scope stamping for tool execution: `/api/tools/execute` + `/api/code/search` stamp trusted scope onto tool args via canonical `__projectId`/`__userId` (not only `_projectContext`), fixing code-intel tools (fail-closed on missing `__projectId`) that returned "No results found". Covers MCP call path (mcpServer) + KB API route. Graph migrator idempotency, query-layer scope resolution, indexing-engine fixes. KB Graph: FileContainsSymbolStrategy dir-based match for LWC/Aura components (LWC_COMPONENT no longer isolated). Regression tests added (tools-execute-scope, orchestration dynamic IT, mcpServer calltool IT). |
238
239
  | 1.42.0 | 2026-09-08 | SA4E-301 | Multi-language tree-sitter parsers (C/C++/C#/PHP/Ruby/Scala/Swift/Kotlin) via shared GenericTreeSitterParser + regex fallback; symbol-kind fixes (struct/enum naming, method promotion, variable/property/constant separation, dedupe). Salesforce indexing (Apex/LWC/Aura/Visualforce/meta) with grammars copied to dist. KB Graph edges rebuilt from `relationships` (MembershipEdgeStrategy CONTAINS + FileContainsSymbolStrategy + inherits/implements resolve-by-name); auto-heal backfill (ensure-sa4e-301), unused edge tables dropped (303), unique index (302). Enrichment dedup (single CodeEnrichmentTaskCreator + PENDING guard, orphan task cleanup 300). Continuous budget-driven KB Graph LOD renderer. Node.js 22 LTS. |
@@ -33,9 +33,20 @@ 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 = getDbAdapter();
37
- const rows = await adapter.allAsync('SELECT * FROM config_changes ORDER BY changed_at DESC LIMIT ?', [limit]);
38
- return rows.map(rowToConfigChange);
36
+ // Fail-safe: if the config_changes table is not ready yet (e.g. right after
37
+ // switching to a freshly-provisioned Postgres engine before migrations run),
38
+ // return an empty history instead of throwing. Throwing here would bubble up
39
+ // through GET /api/admin/config and blank out the ENTIRE config page
40
+ // (LLM / taskWorker / auth sections all disappear, leaving only Database).
41
+ // Mirrors the resilient pattern used by getLatestConfigValue/loadPersistedLLMConfig.
42
+ try {
43
+ const adapter = getDbAdapter();
44
+ const rows = await adapter.allAsync('SELECT * FROM config_changes ORDER BY changed_at DESC LIMIT ?', [limit]);
45
+ return rows.map(rowToConfigChange);
46
+ }
47
+ catch {
48
+ return [];
49
+ }
39
50
  }
40
51
  /**
41
52
  * Load the latest persisted value for a specific section.key from config_changes.
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/admin/db/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/admin/db/config.ts"],"names":[],"mappings":"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"}
@@ -33,5 +33,11 @@ export declare function resetAdminDb(): void;
33
33
  /**
34
34
  * Get the raw DB instance.
35
35
  * @deprecated Use getDbAdapter() for new code. Kept for backward compat with tests.
36
+ * SA4E-262 fix: delegates to getDbAdapter() to honor the unified-DB contract.
37
+ * The previous implementation force-initialized the SQLite adapter even when the
38
+ * active engine was PostgreSQL — splitting admin-UI writes (SQLite) from
39
+ * auth/login-page reads (PostgreSQL) and crashing the server on first
40
+ * sso-providers/config request (lazy SqliteAdapter.connect threw CANTOPEN and
41
+ * the rejection was unhandled).
36
42
  */
37
43
  export declare function getAdminDb(): any;
@@ -67,18 +67,29 @@ export function getActiveDbConfig() {
67
67
  }
68
68
  }
69
69
  let sqliteAdapter = null;
70
+ // Single shared init promise — initAdapters() awaits this same promise so no
71
+ // caller (server boot, tests) can race schema creation / admin seeding.
72
+ let sqliteReady = null;
70
73
  /**
71
74
  * Get or create the unified SQLite adapter (singleton).
72
- * Handles directory creation, WAL mode, and schema initialization.
75
+ * Handles directory creation and WAL mode. Schema init is done separately via
76
+ * initAdapters() (async, cross-engine) so the seeding path is identical for
77
+ * SQLite and PostgreSQL. SqliteAdapter async methods wrap sync calls, so awaiting
78
+ * initSchema/seedDefaults on SQLite resolves synchronously in practice.
73
79
  * Note: SqliteAdapter.connect() is synchronous internally (just wraps sync calls).
74
80
  */
75
81
  function getUnifiedSqliteAdapter() {
76
82
  if (!sqliteAdapter) {
77
83
  sqliteAdapter = new SqliteAdapter(DB_PATH);
78
- // SqliteAdapter.connect() is sync internally — safe to call eagerly
79
- void sqliteAdapter.connect();
80
- initSchema(sqliteAdapter);
81
- seedDefaults(sqliteAdapter);
84
+ // SA4E-262 fix: connect() MUST be chained into sqliteReady — the previous
85
+ // `void connect()` orphaned the rejection, so a CANTOPEN during lazy init
86
+ // crashed the whole server (unhandled rejection) instead of failing the
87
+ // caller's request with a 500.
88
+ const adapter = sqliteAdapter;
89
+ sqliteReady = adapter.connect()
90
+ .then(() => initSchema(adapter))
91
+ .then(() => seedDefaults(adapter))
92
+ .catch((err) => logger.error({ err }, '[admin] SQLite schema init failed'));
82
93
  }
83
94
  return sqliteAdapter;
84
95
  }
@@ -116,6 +127,17 @@ export async function initAdapters() {
116
127
  const engine = getActiveEngine();
117
128
  if (engine === 'sqlite') {
118
129
  getDbAdapter();
130
+ // Await the shared init (schema + admin seed) instead of returning
131
+ // immediately — otherwise the first login/seed-dependent query races init
132
+ // and fails (e.g. 401 in tests, missing tables).
133
+ if (sqliteReady) {
134
+ await sqliteReady;
135
+ }
136
+ else {
137
+ const adapter = getDbAdapter();
138
+ await initSchema(adapter);
139
+ await seedDefaults(adapter);
140
+ }
119
141
  return;
120
142
  }
121
143
  const configService = new DatabaseConfigService(DATA_DIR);
@@ -125,8 +147,8 @@ export async function initAdapters() {
125
147
  dbAdapter = adapter;
126
148
  // Initialize schema and seed defaults for PostgreSQL/MySQL
127
149
  try {
128
- initSchema(adapter);
129
- seedDefaults(adapter);
150
+ await initSchema(adapter);
151
+ await seedDefaults(adapter);
130
152
  }
131
153
  catch (err) {
132
154
  logger.error({ err }, '[admin] Failed to init schema/seed defaults');
@@ -144,10 +166,14 @@ export function resetAdminDb() {
144
166
  /**
145
167
  * Get the raw DB instance.
146
168
  * @deprecated Use getDbAdapter() for new code. Kept for backward compat with tests.
169
+ * SA4E-262 fix: delegates to getDbAdapter() to honor the unified-DB contract.
170
+ * The previous implementation force-initialized the SQLite adapter even when the
171
+ * active engine was PostgreSQL — splitting admin-UI writes (SQLite) from
172
+ * auth/login-page reads (PostgreSQL) and crashing the server on first
173
+ * sso-providers/config request (lazy SqliteAdapter.connect threw CANTOPEN and
174
+ * the rejection was unhandled).
147
175
  */
148
176
  export function getAdminDb() {
149
- const adapter = getUnifiedSqliteAdapter();
150
- // getRawDb removed; return adapter directly for compat
151
- return adapter;
177
+ return getDbAdapter();
152
178
  }
153
179
  //# sourceMappingURL=core.js.map
@@ -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,9 +1,10 @@
1
1
  /**
2
2
  * admin/db/schema.ts — Admin schema initialization and seed data.
3
3
  * SA4E-53: Accepts DatabaseAdapter (sync interface) instead of raw better-sqlite3.
4
+ * Multi-engine: uses async adapter API + per-engine DDL/DML so it runs on both
5
+ * SQLite and PostgreSQL (PostgresAdapter throws on the sync exec/get/run methods).
4
6
  */
5
- import type { SyncDatabaseAdapter } from '../../database/adapters/DatabaseAdapter.js';
6
- /** Initialize admin schema tables (idempotent CREATE IF NOT EXISTS). */
7
- export declare function initSchema(db: SyncDatabaseAdapter): void;
7
+ import type { DatabaseAdapter } from '../../database/adapters/DatabaseAdapter.js';
8
+ export declare function initSchema(db: DatabaseAdapter): Promise<void>;
8
9
  /** Seed default access groups and admin user. */
9
- export declare function seedDefaults(db: SyncDatabaseAdapter): void;
10
+ export declare function seedDefaults(db: DatabaseAdapter): Promise<void>;