limen-ai 1.0.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 (704) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/LICENSE +190 -0
  3. package/README.md +546 -0
  4. package/dist/api/agents/agent_api.d.ts +126 -0
  5. package/dist/api/agents/agent_api.d.ts.map +1 -0
  6. package/dist/api/agents/agent_api.js +467 -0
  7. package/dist/api/agents/agent_api.js.map +1 -0
  8. package/dist/api/agents/trust_progression.d.ts +78 -0
  9. package/dist/api/agents/trust_progression.d.ts.map +1 -0
  10. package/dist/api/agents/trust_progression.js +124 -0
  11. package/dist/api/agents/trust_progression.js.map +1 -0
  12. package/dist/api/chat/chat_pipeline.d.ts +91 -0
  13. package/dist/api/chat/chat_pipeline.d.ts.map +1 -0
  14. package/dist/api/chat/chat_pipeline.js +630 -0
  15. package/dist/api/chat/chat_pipeline.js.map +1 -0
  16. package/dist/api/chat/technique_injector.d.ts +86 -0
  17. package/dist/api/chat/technique_injector.d.ts.map +1 -0
  18. package/dist/api/chat/technique_injector.js +125 -0
  19. package/dist/api/chat/technique_injector.js.map +1 -0
  20. package/dist/api/data/data_api.d.ts +91 -0
  21. package/dist/api/data/data_api.d.ts.map +1 -0
  22. package/dist/api/data/data_api.js +306 -0
  23. package/dist/api/data/data_api.js.map +1 -0
  24. package/dist/api/enforcement/cost_tracker.d.ts +105 -0
  25. package/dist/api/enforcement/cost_tracker.d.ts.map +1 -0
  26. package/dist/api/enforcement/cost_tracker.js +227 -0
  27. package/dist/api/enforcement/cost_tracker.js.map +1 -0
  28. package/dist/api/enforcement/latency_harness.d.ts +94 -0
  29. package/dist/api/enforcement/latency_harness.d.ts.map +1 -0
  30. package/dist/api/enforcement/latency_harness.js +120 -0
  31. package/dist/api/enforcement/latency_harness.js.map +1 -0
  32. package/dist/api/enforcement/rate_guard.d.ts +52 -0
  33. package/dist/api/enforcement/rate_guard.d.ts.map +1 -0
  34. package/dist/api/enforcement/rate_guard.js +79 -0
  35. package/dist/api/enforcement/rate_guard.js.map +1 -0
  36. package/dist/api/enforcement/rbac_guard.d.ts +55 -0
  37. package/dist/api/enforcement/rbac_guard.d.ts.map +1 -0
  38. package/dist/api/enforcement/rbac_guard.js +77 -0
  39. package/dist/api/enforcement/rbac_guard.js.map +1 -0
  40. package/dist/api/errors/limen_error.d.ts +81 -0
  41. package/dist/api/errors/limen_error.d.ts.map +1 -0
  42. package/dist/api/errors/limen_error.js +324 -0
  43. package/dist/api/errors/limen_error.js.map +1 -0
  44. package/dist/api/facades/claim_facade.d.ts +47 -0
  45. package/dist/api/facades/claim_facade.d.ts.map +1 -0
  46. package/dist/api/facades/claim_facade.js +67 -0
  47. package/dist/api/facades/claim_facade.js.map +1 -0
  48. package/dist/api/facades/working_memory_facade.d.ts +47 -0
  49. package/dist/api/facades/working_memory_facade.d.ts.map +1 -0
  50. package/dist/api/facades/working_memory_facade.js +74 -0
  51. package/dist/api/facades/working_memory_facade.js.map +1 -0
  52. package/dist/api/governance/governed_orchestration.d.ts +76 -0
  53. package/dist/api/governance/governed_orchestration.d.ts.map +1 -0
  54. package/dist/api/governance/governed_orchestration.js +413 -0
  55. package/dist/api/governance/governed_orchestration.js.map +1 -0
  56. package/dist/api/index.d.ts +84 -0
  57. package/dist/api/index.d.ts.map +1 -0
  58. package/dist/api/index.js +847 -0
  59. package/dist/api/index.js.map +1 -0
  60. package/dist/api/infer/infer_pipeline.d.ts +51 -0
  61. package/dist/api/infer/infer_pipeline.d.ts.map +1 -0
  62. package/dist/api/infer/infer_pipeline.js +291 -0
  63. package/dist/api/infer/infer_pipeline.js.map +1 -0
  64. package/dist/api/interfaces/api.d.ts +940 -0
  65. package/dist/api/interfaces/api.d.ts.map +1 -0
  66. package/dist/api/interfaces/api.js +21 -0
  67. package/dist/api/interfaces/api.js.map +1 -0
  68. package/dist/api/knowledge/knowledge_api.d.ts +55 -0
  69. package/dist/api/knowledge/knowledge_api.d.ts.map +1 -0
  70. package/dist/api/knowledge/knowledge_api.js +89 -0
  71. package/dist/api/knowledge/knowledge_api.js.map +1 -0
  72. package/dist/api/migration/023_agent_persistence.d.ts +32 -0
  73. package/dist/api/migration/023_agent_persistence.d.ts.map +1 -0
  74. package/dist/api/migration/023_agent_persistence.js +158 -0
  75. package/dist/api/migration/023_agent_persistence.js.map +1 -0
  76. package/dist/api/migration/024_trust_learning.d.ts +36 -0
  77. package/dist/api/migration/024_trust_learning.d.ts.map +1 -0
  78. package/dist/api/migration/024_trust_learning.js +194 -0
  79. package/dist/api/migration/024_trust_learning.js.map +1 -0
  80. package/dist/api/migration/025_knowledge_graph.d.ts +29 -0
  81. package/dist/api/migration/025_knowledge_graph.d.ts.map +1 -0
  82. package/dist/api/migration/025_knowledge_graph.js +97 -0
  83. package/dist/api/migration/025_knowledge_graph.js.map +1 -0
  84. package/dist/api/migration/026_replay_pipeline.d.ts +30 -0
  85. package/dist/api/migration/026_replay_pipeline.d.ts.map +1 -0
  86. package/dist/api/migration/026_replay_pipeline.js +118 -0
  87. package/dist/api/migration/026_replay_pipeline.js.map +1 -0
  88. package/dist/api/missions/mission_api.d.ts +74 -0
  89. package/dist/api/missions/mission_api.d.ts.map +1 -0
  90. package/dist/api/missions/mission_api.js +408 -0
  91. package/dist/api/missions/mission_api.js.map +1 -0
  92. package/dist/api/observability/health.d.ts +36 -0
  93. package/dist/api/observability/health.d.ts.map +1 -0
  94. package/dist/api/observability/health.js +92 -0
  95. package/dist/api/observability/health.js.map +1 -0
  96. package/dist/api/observability/metrics.d.ts +95 -0
  97. package/dist/api/observability/metrics.d.ts.map +1 -0
  98. package/dist/api/observability/metrics.js +260 -0
  99. package/dist/api/observability/metrics.js.map +1 -0
  100. package/dist/api/roles/roles_api.d.ts +45 -0
  101. package/dist/api/roles/roles_api.d.ts.map +1 -0
  102. package/dist/api/roles/roles_api.js +77 -0
  103. package/dist/api/roles/roles_api.js.map +1 -0
  104. package/dist/api/sessions/session_manager.d.ts +110 -0
  105. package/dist/api/sessions/session_manager.d.ts.map +1 -0
  106. package/dist/api/sessions/session_manager.js +278 -0
  107. package/dist/api/sessions/session_manager.js.map +1 -0
  108. package/dist/budget/harness/dba_harness.d.ts +36 -0
  109. package/dist/budget/harness/dba_harness.d.ts.map +1 -0
  110. package/dist/budget/harness/dba_harness.js +58 -0
  111. package/dist/budget/harness/dba_harness.js.map +1 -0
  112. package/dist/budget/impl/dba_impl.d.ts +47 -0
  113. package/dist/budget/impl/dba_impl.d.ts.map +1 -0
  114. package/dist/budget/impl/dba_impl.js +402 -0
  115. package/dist/budget/impl/dba_impl.js.map +1 -0
  116. package/dist/budget/interfaces/dba_types.d.ts +708 -0
  117. package/dist/budget/interfaces/dba_types.d.ts.map +1 -0
  118. package/dist/budget/interfaces/dba_types.js +124 -0
  119. package/dist/budget/interfaces/dba_types.js.map +1 -0
  120. package/dist/claims/evidence/capability_scope_validator.d.ts +32 -0
  121. package/dist/claims/evidence/capability_scope_validator.d.ts.map +1 -0
  122. package/dist/claims/evidence/capability_scope_validator.js +72 -0
  123. package/dist/claims/evidence/capability_scope_validator.js.map +1 -0
  124. package/dist/claims/evidence/evidence_validator.d.ts +35 -0
  125. package/dist/claims/evidence/evidence_validator.d.ts.map +1 -0
  126. package/dist/claims/evidence/evidence_validator.js +118 -0
  127. package/dist/claims/evidence/evidence_validator.js.map +1 -0
  128. package/dist/claims/harness/claim_harness.d.ts +22 -0
  129. package/dist/claims/harness/claim_harness.d.ts.map +1 -0
  130. package/dist/claims/harness/claim_harness.js +26 -0
  131. package/dist/claims/harness/claim_harness.js.map +1 -0
  132. package/dist/claims/interfaces/claim_types.d.ts +858 -0
  133. package/dist/claims/interfaces/claim_types.d.ts.map +1 -0
  134. package/dist/claims/interfaces/claim_types.js +201 -0
  135. package/dist/claims/interfaces/claim_types.js.map +1 -0
  136. package/dist/claims/migration/019_ccp_claims.d.ts +23 -0
  137. package/dist/claims/migration/019_ccp_claims.d.ts.map +1 -0
  138. package/dist/claims/migration/019_ccp_claims.js +196 -0
  139. package/dist/claims/migration/019_ccp_claims.js.map +1 -0
  140. package/dist/claims/store/claim_stores.d.ts +27 -0
  141. package/dist/claims/store/claim_stores.d.ts.map +1 -0
  142. package/dist/claims/store/claim_stores.js +1352 -0
  143. package/dist/claims/store/claim_stores.js.map +1 -0
  144. package/dist/context/harness/cgp_harness.d.ts +32 -0
  145. package/dist/context/harness/cgp_harness.d.ts.map +1 -0
  146. package/dist/context/harness/cgp_harness.js +295 -0
  147. package/dist/context/harness/cgp_harness.js.map +1 -0
  148. package/dist/context/interfaces/cgp_types.d.ts +905 -0
  149. package/dist/context/interfaces/cgp_types.d.ts.map +1 -0
  150. package/dist/context/interfaces/cgp_types.js +112 -0
  151. package/dist/context/interfaces/cgp_types.js.map +1 -0
  152. package/dist/context/stores/cgp_stores.d.ts +42 -0
  153. package/dist/context/stores/cgp_stores.d.ts.map +1 -0
  154. package/dist/context/stores/cgp_stores.js +856 -0
  155. package/dist/context/stores/cgp_stores.js.map +1 -0
  156. package/dist/execution/harness/egp_harness.d.ts +43 -0
  157. package/dist/execution/harness/egp_harness.d.ts.map +1 -0
  158. package/dist/execution/harness/egp_harness.js +54 -0
  159. package/dist/execution/harness/egp_harness.js.map +1 -0
  160. package/dist/execution/interfaces/egp_types.d.ts +1042 -0
  161. package/dist/execution/interfaces/egp_types.d.ts.map +1 -0
  162. package/dist/execution/interfaces/egp_types.js +195 -0
  163. package/dist/execution/interfaces/egp_types.js.map +1 -0
  164. package/dist/execution/stores/egp_stores.d.ts +29 -0
  165. package/dist/execution/stores/egp_stores.d.ts.map +1 -0
  166. package/dist/execution/stores/egp_stores.js +1250 -0
  167. package/dist/execution/stores/egp_stores.js.map +1 -0
  168. package/dist/execution/wiring/execution_gate.d.ts +56 -0
  169. package/dist/execution/wiring/execution_gate.d.ts.map +1 -0
  170. package/dist/execution/wiring/execution_gate.js +77 -0
  171. package/dist/execution/wiring/execution_gate.js.map +1 -0
  172. package/dist/execution/wiring/floor_enforcer.d.ts +68 -0
  173. package/dist/execution/wiring/floor_enforcer.d.ts.map +1 -0
  174. package/dist/execution/wiring/floor_enforcer.js +96 -0
  175. package/dist/execution/wiring/floor_enforcer.js.map +1 -0
  176. package/dist/execution/wiring/invocation_gate.d.ts +58 -0
  177. package/dist/execution/wiring/invocation_gate.d.ts.map +1 -0
  178. package/dist/execution/wiring/invocation_gate.js +69 -0
  179. package/dist/execution/wiring/invocation_gate.js.map +1 -0
  180. package/dist/execution/wiring/terminal_release.d.ts +56 -0
  181. package/dist/execution/wiring/terminal_release.d.ts.map +1 -0
  182. package/dist/execution/wiring/terminal_release.js +85 -0
  183. package/dist/execution/wiring/terminal_release.js.map +1 -0
  184. package/dist/governance/harness/governance_harness.d.ts +54 -0
  185. package/dist/governance/harness/governance_harness.d.ts.map +1 -0
  186. package/dist/governance/harness/governance_harness.js +60 -0
  187. package/dist/governance/harness/governance_harness.js.map +1 -0
  188. package/dist/governance/migration/012_governance_runs_traces.d.ts +21 -0
  189. package/dist/governance/migration/012_governance_runs_traces.d.ts.map +1 -0
  190. package/dist/governance/migration/012_governance_runs_traces.js +115 -0
  191. package/dist/governance/migration/012_governance_runs_traces.js.map +1 -0
  192. package/dist/governance/migration/013_governance_contracts.d.ts +18 -0
  193. package/dist/governance/migration/013_governance_contracts.d.ts.map +1 -0
  194. package/dist/governance/migration/013_governance_contracts.js +59 -0
  195. package/dist/governance/migration/013_governance_contracts.js.map +1 -0
  196. package/dist/governance/migration/014_governance_supervisor.d.ts +16 -0
  197. package/dist/governance/migration/014_governance_supervisor.d.ts.map +1 -0
  198. package/dist/governance/migration/014_governance_supervisor.js +75 -0
  199. package/dist/governance/migration/014_governance_supervisor.js.map +1 -0
  200. package/dist/governance/migration/015_governance_eval.d.ts +18 -0
  201. package/dist/governance/migration/015_governance_eval.d.ts.map +1 -0
  202. package/dist/governance/migration/015_governance_eval.js +65 -0
  203. package/dist/governance/migration/015_governance_eval.js.map +1 -0
  204. package/dist/governance/migration/016_governance_capabilities.d.ts +16 -0
  205. package/dist/governance/migration/016_governance_capabilities.d.ts.map +1 -0
  206. package/dist/governance/migration/016_governance_capabilities.js +60 -0
  207. package/dist/governance/migration/016_governance_capabilities.js.map +1 -0
  208. package/dist/governance/migration/017_governance_handoffs_idempotency.d.ts +20 -0
  209. package/dist/governance/migration/017_governance_handoffs_idempotency.d.ts.map +1 -0
  210. package/dist/governance/migration/017_governance_handoffs_idempotency.js +103 -0
  211. package/dist/governance/migration/017_governance_handoffs_idempotency.js.map +1 -0
  212. package/dist/governance/migration/018_supervisor_decision_delete_trigger.d.ts +17 -0
  213. package/dist/governance/migration/018_supervisor_decision_delete_trigger.d.ts.map +1 -0
  214. package/dist/governance/migration/018_supervisor_decision_delete_trigger.js +37 -0
  215. package/dist/governance/migration/018_supervisor_decision_delete_trigger.js.map +1 -0
  216. package/dist/governance/stores/governance_stores.d.ts +78 -0
  217. package/dist/governance/stores/governance_stores.d.ts.map +1 -0
  218. package/dist/governance/stores/governance_stores.js +1117 -0
  219. package/dist/governance/stores/governance_stores.js.map +1 -0
  220. package/dist/kernel/audit/audit_trail.d.ts +24 -0
  221. package/dist/kernel/audit/audit_trail.d.ts.map +1 -0
  222. package/dist/kernel/audit/audit_trail.js +569 -0
  223. package/dist/kernel/audit/audit_trail.js.map +1 -0
  224. package/dist/kernel/crypto/crypto_engine.d.ts +49 -0
  225. package/dist/kernel/crypto/crypto_engine.d.ts.map +1 -0
  226. package/dist/kernel/crypto/crypto_engine.js +350 -0
  227. package/dist/kernel/crypto/crypto_engine.js.map +1 -0
  228. package/dist/kernel/database/database_lifecycle.d.ts +24 -0
  229. package/dist/kernel/database/database_lifecycle.d.ts.map +1 -0
  230. package/dist/kernel/database/database_lifecycle.js +404 -0
  231. package/dist/kernel/database/database_lifecycle.js.map +1 -0
  232. package/dist/kernel/database/migrations.d.ts +21 -0
  233. package/dist/kernel/database/migrations.d.ts.map +1 -0
  234. package/dist/kernel/database/migrations.js +407 -0
  235. package/dist/kernel/database/migrations.js.map +1 -0
  236. package/dist/kernel/events/event_bus.d.ts +25 -0
  237. package/dist/kernel/events/event_bus.d.ts.map +1 -0
  238. package/dist/kernel/events/event_bus.js +302 -0
  239. package/dist/kernel/events/event_bus.js.map +1 -0
  240. package/dist/kernel/events/webhook_delivery.d.ts +90 -0
  241. package/dist/kernel/events/webhook_delivery.d.ts.map +1 -0
  242. package/dist/kernel/events/webhook_delivery.js +324 -0
  243. package/dist/kernel/events/webhook_delivery.js.map +1 -0
  244. package/dist/kernel/index.d.ts +39 -0
  245. package/dist/kernel/index.d.ts.map +1 -0
  246. package/dist/kernel/index.js +263 -0
  247. package/dist/kernel/index.js.map +1 -0
  248. package/dist/kernel/interfaces/audit.d.ts +146 -0
  249. package/dist/kernel/interfaces/audit.d.ts.map +1 -0
  250. package/dist/kernel/interfaces/audit.js +15 -0
  251. package/dist/kernel/interfaces/audit.js.map +1 -0
  252. package/dist/kernel/interfaces/capability_manifest.d.ts +104 -0
  253. package/dist/kernel/interfaces/capability_manifest.d.ts.map +1 -0
  254. package/dist/kernel/interfaces/capability_manifest.js +44 -0
  255. package/dist/kernel/interfaces/capability_manifest.js.map +1 -0
  256. package/dist/kernel/interfaces/common.d.ts +91 -0
  257. package/dist/kernel/interfaces/common.d.ts.map +1 -0
  258. package/dist/kernel/interfaces/common.js +10 -0
  259. package/dist/kernel/interfaces/common.js.map +1 -0
  260. package/dist/kernel/interfaces/crypto.d.ts +95 -0
  261. package/dist/kernel/interfaces/crypto.d.ts.map +1 -0
  262. package/dist/kernel/interfaces/crypto.js +14 -0
  263. package/dist/kernel/interfaces/crypto.js.map +1 -0
  264. package/dist/kernel/interfaces/database.d.ts +157 -0
  265. package/dist/kernel/interfaces/database.d.ts.map +1 -0
  266. package/dist/kernel/interfaces/database.js +10 -0
  267. package/dist/kernel/interfaces/database.js.map +1 -0
  268. package/dist/kernel/interfaces/eval.d.ts +93 -0
  269. package/dist/kernel/interfaces/eval.d.ts.map +1 -0
  270. package/dist/kernel/interfaces/eval.js +17 -0
  271. package/dist/kernel/interfaces/eval.js.map +1 -0
  272. package/dist/kernel/interfaces/events.d.ts +73 -0
  273. package/dist/kernel/interfaces/events.d.ts.map +1 -0
  274. package/dist/kernel/interfaces/events.js +13 -0
  275. package/dist/kernel/interfaces/events.js.map +1 -0
  276. package/dist/kernel/interfaces/governance_ids.d.ts +93 -0
  277. package/dist/kernel/interfaces/governance_ids.d.ts.map +1 -0
  278. package/dist/kernel/interfaces/governance_ids.js +18 -0
  279. package/dist/kernel/interfaces/governance_ids.js.map +1 -0
  280. package/dist/kernel/interfaces/idempotency.d.ts +143 -0
  281. package/dist/kernel/interfaces/idempotency.d.ts.map +1 -0
  282. package/dist/kernel/interfaces/idempotency.js +22 -0
  283. package/dist/kernel/interfaces/idempotency.js.map +1 -0
  284. package/dist/kernel/interfaces/index.d.ts +29 -0
  285. package/dist/kernel/interfaces/index.d.ts.map +1 -0
  286. package/dist/kernel/interfaces/index.js +9 -0
  287. package/dist/kernel/interfaces/index.js.map +1 -0
  288. package/dist/kernel/interfaces/kernel.d.ts +79 -0
  289. package/dist/kernel/interfaces/kernel.d.ts.map +1 -0
  290. package/dist/kernel/interfaces/kernel.js +13 -0
  291. package/dist/kernel/interfaces/kernel.js.map +1 -0
  292. package/dist/kernel/interfaces/lifecycle.d.ts +115 -0
  293. package/dist/kernel/interfaces/lifecycle.d.ts.map +1 -0
  294. package/dist/kernel/interfaces/lifecycle.js +53 -0
  295. package/dist/kernel/interfaces/lifecycle.js.map +1 -0
  296. package/dist/kernel/interfaces/mission_contract.d.ts +106 -0
  297. package/dist/kernel/interfaces/mission_contract.d.ts.map +1 -0
  298. package/dist/kernel/interfaces/mission_contract.js +20 -0
  299. package/dist/kernel/interfaces/mission_contract.js.map +1 -0
  300. package/dist/kernel/interfaces/namespace.d.ts +30 -0
  301. package/dist/kernel/interfaces/namespace.d.ts.map +1 -0
  302. package/dist/kernel/interfaces/namespace.js +12 -0
  303. package/dist/kernel/interfaces/namespace.js.map +1 -0
  304. package/dist/kernel/interfaces/rate_limiter.d.ts +42 -0
  305. package/dist/kernel/interfaces/rate_limiter.d.ts.map +1 -0
  306. package/dist/kernel/interfaces/rate_limiter.js +12 -0
  307. package/dist/kernel/interfaces/rate_limiter.js.map +1 -0
  308. package/dist/kernel/interfaces/rbac.d.ts +58 -0
  309. package/dist/kernel/interfaces/rbac.d.ts.map +1 -0
  310. package/dist/kernel/interfaces/rbac.js +13 -0
  311. package/dist/kernel/interfaces/rbac.js.map +1 -0
  312. package/dist/kernel/interfaces/retention.d.ts +58 -0
  313. package/dist/kernel/interfaces/retention.d.ts.map +1 -0
  314. package/dist/kernel/interfaces/retention.js +13 -0
  315. package/dist/kernel/interfaces/retention.js.map +1 -0
  316. package/dist/kernel/interfaces/run_identity.d.ts +132 -0
  317. package/dist/kernel/interfaces/run_identity.d.ts.map +1 -0
  318. package/dist/kernel/interfaces/run_identity.js +16 -0
  319. package/dist/kernel/interfaces/run_identity.js.map +1 -0
  320. package/dist/kernel/interfaces/supervisor.d.ts +175 -0
  321. package/dist/kernel/interfaces/supervisor.d.ts.map +1 -0
  322. package/dist/kernel/interfaces/supervisor.js +25 -0
  323. package/dist/kernel/interfaces/supervisor.js.map +1 -0
  324. package/dist/kernel/interfaces/tenant.d.ts +34 -0
  325. package/dist/kernel/interfaces/tenant.d.ts.map +1 -0
  326. package/dist/kernel/interfaces/tenant.js +12 -0
  327. package/dist/kernel/interfaces/tenant.js.map +1 -0
  328. package/dist/kernel/interfaces/time.d.ts +29 -0
  329. package/dist/kernel/interfaces/time.d.ts.map +1 -0
  330. package/dist/kernel/interfaces/time.js +13 -0
  331. package/dist/kernel/interfaces/time.js.map +1 -0
  332. package/dist/kernel/interfaces/trace.d.ts +264 -0
  333. package/dist/kernel/interfaces/trace.d.ts.map +1 -0
  334. package/dist/kernel/interfaces/trace.js +17 -0
  335. package/dist/kernel/interfaces/trace.js.map +1 -0
  336. package/dist/kernel/namespace/namespace_enforcer.d.ts +20 -0
  337. package/dist/kernel/namespace/namespace_enforcer.d.ts.map +1 -0
  338. package/dist/kernel/namespace/namespace_enforcer.js +91 -0
  339. package/dist/kernel/namespace/namespace_enforcer.js.map +1 -0
  340. package/dist/kernel/rate_limiter/rate_limiter.d.ts +23 -0
  341. package/dist/kernel/rate_limiter/rate_limiter.d.ts.map +1 -0
  342. package/dist/kernel/rate_limiter/rate_limiter.js +146 -0
  343. package/dist/kernel/rate_limiter/rate_limiter.js.map +1 -0
  344. package/dist/kernel/rbac/rbac_engine.d.ts +20 -0
  345. package/dist/kernel/rbac/rbac_engine.d.ts.map +1 -0
  346. package/dist/kernel/rbac/rbac_engine.js +257 -0
  347. package/dist/kernel/rbac/rbac_engine.js.map +1 -0
  348. package/dist/kernel/retention/retention_scheduler.d.ts +41 -0
  349. package/dist/kernel/retention/retention_scheduler.d.ts.map +1 -0
  350. package/dist/kernel/retention/retention_scheduler.js +218 -0
  351. package/dist/kernel/retention/retention_scheduler.js.map +1 -0
  352. package/dist/kernel/tenant/tenant_context.d.ts +22 -0
  353. package/dist/kernel/tenant/tenant_context.d.ts.map +1 -0
  354. package/dist/kernel/tenant/tenant_context.js +107 -0
  355. package/dist/kernel/tenant/tenant_context.js.map +1 -0
  356. package/dist/kernel/tenant/tenant_scope.d.ts +81 -0
  357. package/dist/kernel/tenant/tenant_scope.d.ts.map +1 -0
  358. package/dist/kernel/tenant/tenant_scope.js +168 -0
  359. package/dist/kernel/tenant/tenant_scope.js.map +1 -0
  360. package/dist/kernel/time/time_provider.d.ts +39 -0
  361. package/dist/kernel/time/time_provider.d.ts.map +1 -0
  362. package/dist/kernel/time/time_provider.js +58 -0
  363. package/dist/kernel/time/time_provider.js.map +1 -0
  364. package/dist/learning/applicator/technique_applicator.d.ts +41 -0
  365. package/dist/learning/applicator/technique_applicator.d.ts.map +1 -0
  366. package/dist/learning/applicator/technique_applicator.js +200 -0
  367. package/dist/learning/applicator/technique_applicator.js.map +1 -0
  368. package/dist/learning/cold_start/cold_start_manager.d.ts +35 -0
  369. package/dist/learning/cold_start/cold_start_manager.d.ts.map +1 -0
  370. package/dist/learning/cold_start/cold_start_manager.js +146 -0
  371. package/dist/learning/cold_start/cold_start_manager.js.map +1 -0
  372. package/dist/learning/cycle/learning_cycle_orchestrator.d.ts +45 -0
  373. package/dist/learning/cycle/learning_cycle_orchestrator.d.ts.map +1 -0
  374. package/dist/learning/cycle/learning_cycle_orchestrator.js +165 -0
  375. package/dist/learning/cycle/learning_cycle_orchestrator.js.map +1 -0
  376. package/dist/learning/extractor/technique_extractor.d.ts +48 -0
  377. package/dist/learning/extractor/technique_extractor.d.ts.map +1 -0
  378. package/dist/learning/extractor/technique_extractor.js +357 -0
  379. package/dist/learning/extractor/technique_extractor.js.map +1 -0
  380. package/dist/learning/harness/learning_harness.d.ts +26 -0
  381. package/dist/learning/harness/learning_harness.d.ts.map +1 -0
  382. package/dist/learning/harness/learning_harness.js +58 -0
  383. package/dist/learning/harness/learning_harness.js.map +1 -0
  384. package/dist/learning/interfaces/index.d.ts +7 -0
  385. package/dist/learning/interfaces/index.d.ts.map +1 -0
  386. package/dist/learning/interfaces/index.js +10 -0
  387. package/dist/learning/interfaces/index.js.map +1 -0
  388. package/dist/learning/interfaces/learning_types.d.ts +398 -0
  389. package/dist/learning/interfaces/learning_types.d.ts.map +1 -0
  390. package/dist/learning/interfaces/learning_types.js +69 -0
  391. package/dist/learning/interfaces/learning_types.js.map +1 -0
  392. package/dist/learning/migration/007_learning_techniques.d.ts +23 -0
  393. package/dist/learning/migration/007_learning_techniques.d.ts.map +1 -0
  394. package/dist/learning/migration/007_learning_techniques.js +86 -0
  395. package/dist/learning/migration/007_learning_techniques.js.map +1 -0
  396. package/dist/learning/migration/008_learning_outcomes.d.ts +23 -0
  397. package/dist/learning/migration/008_learning_outcomes.d.ts.map +1 -0
  398. package/dist/learning/migration/008_learning_outcomes.js +79 -0
  399. package/dist/learning/migration/008_learning_outcomes.js.map +1 -0
  400. package/dist/learning/migration/009_learning_applications.d.ts +25 -0
  401. package/dist/learning/migration/009_learning_applications.d.ts.map +1 -0
  402. package/dist/learning/migration/009_learning_applications.js +82 -0
  403. package/dist/learning/migration/009_learning_applications.js.map +1 -0
  404. package/dist/learning/migration/010_learning_quarantine.d.ts +22 -0
  405. package/dist/learning/migration/010_learning_quarantine.d.ts.map +1 -0
  406. package/dist/learning/migration/010_learning_quarantine.js +78 -0
  407. package/dist/learning/migration/010_learning_quarantine.js.map +1 -0
  408. package/dist/learning/migration/011_learning_transfers.d.ts +22 -0
  409. package/dist/learning/migration/011_learning_transfers.d.ts.map +1 -0
  410. package/dist/learning/migration/011_learning_transfers.js +77 -0
  411. package/dist/learning/migration/011_learning_transfers.js.map +1 -0
  412. package/dist/learning/quarantine/quarantine_manager.d.ts +34 -0
  413. package/dist/learning/quarantine/quarantine_manager.d.ts.map +1 -0
  414. package/dist/learning/quarantine/quarantine_manager.js +200 -0
  415. package/dist/learning/quarantine/quarantine_manager.js.map +1 -0
  416. package/dist/learning/retirement/retirement_evaluator.d.ts +35 -0
  417. package/dist/learning/retirement/retirement_evaluator.d.ts.map +1 -0
  418. package/dist/learning/retirement/retirement_evaluator.js +131 -0
  419. package/dist/learning/retirement/retirement_evaluator.js.map +1 -0
  420. package/dist/learning/specialization/over_specialization_detector.d.ts +32 -0
  421. package/dist/learning/specialization/over_specialization_detector.d.ts.map +1 -0
  422. package/dist/learning/specialization/over_specialization_detector.js +105 -0
  423. package/dist/learning/specialization/over_specialization_detector.js.map +1 -0
  424. package/dist/learning/store/technique_store.d.ts +22 -0
  425. package/dist/learning/store/technique_store.d.ts.map +1 -0
  426. package/dist/learning/store/technique_store.js +369 -0
  427. package/dist/learning/store/technique_store.js.map +1 -0
  428. package/dist/learning/tracker/effectiveness_tracker.d.ts +26 -0
  429. package/dist/learning/tracker/effectiveness_tracker.d.ts.map +1 -0
  430. package/dist/learning/tracker/effectiveness_tracker.js +158 -0
  431. package/dist/learning/tracker/effectiveness_tracker.js.map +1 -0
  432. package/dist/learning/transfer/cross_agent_transfer.d.ts +35 -0
  433. package/dist/learning/transfer/cross_agent_transfer.d.ts.map +1 -0
  434. package/dist/learning/transfer/cross_agent_transfer.js +245 -0
  435. package/dist/learning/transfer/cross_agent_transfer.js.map +1 -0
  436. package/dist/orchestration/artifacts/artifact_store.d.ts +19 -0
  437. package/dist/orchestration/artifacts/artifact_store.d.ts.map +1 -0
  438. package/dist/orchestration/artifacts/artifact_store.js +213 -0
  439. package/dist/orchestration/artifacts/artifact_store.js.map +1 -0
  440. package/dist/orchestration/artifacts/cascade_walker.d.ts +39 -0
  441. package/dist/orchestration/artifacts/cascade_walker.d.ts.map +1 -0
  442. package/dist/orchestration/artifacts/cascade_walker.js +107 -0
  443. package/dist/orchestration/artifacts/cascade_walker.js.map +1 -0
  444. package/dist/orchestration/budget/budget_governance.d.ts +20 -0
  445. package/dist/orchestration/budget/budget_governance.d.ts.map +1 -0
  446. package/dist/orchestration/budget/budget_governance.js +182 -0
  447. package/dist/orchestration/budget/budget_governance.js.map +1 -0
  448. package/dist/orchestration/checkpoints/checkpoint_coordinator.d.ts +22 -0
  449. package/dist/orchestration/checkpoints/checkpoint_coordinator.d.ts.map +1 -0
  450. package/dist/orchestration/checkpoints/checkpoint_coordinator.js +252 -0
  451. package/dist/orchestration/checkpoints/checkpoint_coordinator.js.map +1 -0
  452. package/dist/orchestration/checkpoints/drift_engine.d.ts +52 -0
  453. package/dist/orchestration/checkpoints/drift_engine.d.ts.map +1 -0
  454. package/dist/orchestration/checkpoints/drift_engine.js +126 -0
  455. package/dist/orchestration/checkpoints/drift_engine.js.map +1 -0
  456. package/dist/orchestration/compaction/bounded_cognition.d.ts +22 -0
  457. package/dist/orchestration/compaction/bounded_cognition.d.ts.map +1 -0
  458. package/dist/orchestration/compaction/bounded_cognition.js +124 -0
  459. package/dist/orchestration/compaction/bounded_cognition.js.map +1 -0
  460. package/dist/orchestration/conversation/conversation_manager.d.ts +25 -0
  461. package/dist/orchestration/conversation/conversation_manager.d.ts.map +1 -0
  462. package/dist/orchestration/conversation/conversation_manager.js +260 -0
  463. package/dist/orchestration/conversation/conversation_manager.js.map +1 -0
  464. package/dist/orchestration/events/event_propagation.d.ts +20 -0
  465. package/dist/orchestration/events/event_propagation.d.ts.map +1 -0
  466. package/dist/orchestration/events/event_propagation.js +160 -0
  467. package/dist/orchestration/events/event_propagation.js.map +1 -0
  468. package/dist/orchestration/index.d.ts +28 -0
  469. package/dist/orchestration/index.d.ts.map +1 -0
  470. package/dist/orchestration/index.js +147 -0
  471. package/dist/orchestration/index.js.map +1 -0
  472. package/dist/orchestration/interfaces/orchestration.d.ts +494 -0
  473. package/dist/orchestration/interfaces/orchestration.d.ts.map +1 -0
  474. package/dist/orchestration/interfaces/orchestration.js +64 -0
  475. package/dist/orchestration/interfaces/orchestration.js.map +1 -0
  476. package/dist/orchestration/migration/003_orchestration.d.ts +27 -0
  477. package/dist/orchestration/migration/003_orchestration.d.ts.map +1 -0
  478. package/dist/orchestration/migration/003_orchestration.js +336 -0
  479. package/dist/orchestration/migration/003_orchestration.js.map +1 -0
  480. package/dist/orchestration/migration/004_tenant_isolation.d.ts +22 -0
  481. package/dist/orchestration/migration/004_tenant_isolation.d.ts.map +1 -0
  482. package/dist/orchestration/migration/004_tenant_isolation.js +179 -0
  483. package/dist/orchestration/migration/004_tenant_isolation.js.map +1 -0
  484. package/dist/orchestration/migration/005_immutability_triggers.d.ts +30 -0
  485. package/dist/orchestration/migration/005_immutability_triggers.d.ts.map +1 -0
  486. package/dist/orchestration/migration/005_immutability_triggers.js +93 -0
  487. package/dist/orchestration/migration/005_immutability_triggers.js.map +1 -0
  488. package/dist/orchestration/migration/006_audit_tombstone.d.ts +26 -0
  489. package/dist/orchestration/migration/006_audit_tombstone.d.ts.map +1 -0
  490. package/dist/orchestration/migration/006_audit_tombstone.js +71 -0
  491. package/dist/orchestration/migration/006_audit_tombstone.js.map +1 -0
  492. package/dist/orchestration/missions/mission_recovery.d.ts +60 -0
  493. package/dist/orchestration/missions/mission_recovery.d.ts.map +1 -0
  494. package/dist/orchestration/missions/mission_recovery.js +251 -0
  495. package/dist/orchestration/missions/mission_recovery.js.map +1 -0
  496. package/dist/orchestration/missions/mission_store.d.ts +16 -0
  497. package/dist/orchestration/missions/mission_store.d.ts.map +1 -0
  498. package/dist/orchestration/missions/mission_store.js +280 -0
  499. package/dist/orchestration/missions/mission_store.js.map +1 -0
  500. package/dist/orchestration/syscalls/create_artifact.d.ts +13 -0
  501. package/dist/orchestration/syscalls/create_artifact.d.ts.map +1 -0
  502. package/dist/orchestration/syscalls/create_artifact.js +23 -0
  503. package/dist/orchestration/syscalls/create_artifact.js.map +1 -0
  504. package/dist/orchestration/syscalls/emit_event.d.ts +13 -0
  505. package/dist/orchestration/syscalls/emit_event.d.ts.map +1 -0
  506. package/dist/orchestration/syscalls/emit_event.js +13 -0
  507. package/dist/orchestration/syscalls/emit_event.js.map +1 -0
  508. package/dist/orchestration/syscalls/propose_mission.d.ts +14 -0
  509. package/dist/orchestration/syscalls/propose_mission.d.ts.map +1 -0
  510. package/dist/orchestration/syscalls/propose_mission.js +27 -0
  511. package/dist/orchestration/syscalls/propose_mission.js.map +1 -0
  512. package/dist/orchestration/syscalls/propose_task_execution.d.ts +13 -0
  513. package/dist/orchestration/syscalls/propose_task_execution.d.ts.map +1 -0
  514. package/dist/orchestration/syscalls/propose_task_execution.js +84 -0
  515. package/dist/orchestration/syscalls/propose_task_execution.js.map +1 -0
  516. package/dist/orchestration/syscalls/propose_task_graph.d.ts +13 -0
  517. package/dist/orchestration/syscalls/propose_task_graph.d.ts.map +1 -0
  518. package/dist/orchestration/syscalls/propose_task_graph.js +22 -0
  519. package/dist/orchestration/syscalls/propose_task_graph.js.map +1 -0
  520. package/dist/orchestration/syscalls/read_artifact.d.ts +14 -0
  521. package/dist/orchestration/syscalls/read_artifact.d.ts.map +1 -0
  522. package/dist/orchestration/syscalls/read_artifact.js +31 -0
  523. package/dist/orchestration/syscalls/read_artifact.js.map +1 -0
  524. package/dist/orchestration/syscalls/request_budget.d.ts +14 -0
  525. package/dist/orchestration/syscalls/request_budget.d.ts.map +1 -0
  526. package/dist/orchestration/syscalls/request_budget.js +46 -0
  527. package/dist/orchestration/syscalls/request_budget.js.map +1 -0
  528. package/dist/orchestration/syscalls/request_capability.d.ts +13 -0
  529. package/dist/orchestration/syscalls/request_capability.d.ts.map +1 -0
  530. package/dist/orchestration/syscalls/request_capability.js +136 -0
  531. package/dist/orchestration/syscalls/request_capability.js.map +1 -0
  532. package/dist/orchestration/syscalls/respond_checkpoint.d.ts +12 -0
  533. package/dist/orchestration/syscalls/respond_checkpoint.d.ts.map +1 -0
  534. package/dist/orchestration/syscalls/respond_checkpoint.js +12 -0
  535. package/dist/orchestration/syscalls/respond_checkpoint.js.map +1 -0
  536. package/dist/orchestration/syscalls/submit_result.d.ts +15 -0
  537. package/dist/orchestration/syscalls/submit_result.d.ts.map +1 -0
  538. package/dist/orchestration/syscalls/submit_result.js +97 -0
  539. package/dist/orchestration/syscalls/submit_result.js.map +1 -0
  540. package/dist/orchestration/tasks/task_graph.d.ts +26 -0
  541. package/dist/orchestration/tasks/task_graph.d.ts.map +1 -0
  542. package/dist/orchestration/tasks/task_graph.js +204 -0
  543. package/dist/orchestration/tasks/task_graph.js.map +1 -0
  544. package/dist/orchestration/tasks/task_store.d.ts +18 -0
  545. package/dist/orchestration/tasks/task_store.d.ts.map +1 -0
  546. package/dist/orchestration/tasks/task_store.js +99 -0
  547. package/dist/orchestration/tasks/task_store.js.map +1 -0
  548. package/dist/reference-agent/artifact_manager.d.ts +119 -0
  549. package/dist/reference-agent/artifact_manager.d.ts.map +1 -0
  550. package/dist/reference-agent/artifact_manager.js +149 -0
  551. package/dist/reference-agent/artifact_manager.js.map +1 -0
  552. package/dist/reference-agent/checkpoint_handler.d.ts +186 -0
  553. package/dist/reference-agent/checkpoint_handler.d.ts.map +1 -0
  554. package/dist/reference-agent/checkpoint_handler.js +423 -0
  555. package/dist/reference-agent/checkpoint_handler.js.map +1 -0
  556. package/dist/reference-agent/index.d.ts +43 -0
  557. package/dist/reference-agent/index.d.ts.map +1 -0
  558. package/dist/reference-agent/index.js +53 -0
  559. package/dist/reference-agent/index.js.map +1 -0
  560. package/dist/reference-agent/mission_planner.d.ts +163 -0
  561. package/dist/reference-agent/mission_planner.d.ts.map +1 -0
  562. package/dist/reference-agent/mission_planner.js +375 -0
  563. package/dist/reference-agent/mission_planner.js.map +1 -0
  564. package/dist/reference-agent/reference_agent.d.ts +130 -0
  565. package/dist/reference-agent/reference_agent.d.ts.map +1 -0
  566. package/dist/reference-agent/reference_agent.js +360 -0
  567. package/dist/reference-agent/reference_agent.js.map +1 -0
  568. package/dist/reference-agent/reference_agent.types.d.ts +199 -0
  569. package/dist/reference-agent/reference_agent.types.d.ts.map +1 -0
  570. package/dist/reference-agent/reference_agent.types.js +59 -0
  571. package/dist/reference-agent/reference_agent.types.js.map +1 -0
  572. package/dist/reference-agent/result_aggregator.d.ts +107 -0
  573. package/dist/reference-agent/result_aggregator.d.ts.map +1 -0
  574. package/dist/reference-agent/result_aggregator.js +219 -0
  575. package/dist/reference-agent/result_aggregator.js.map +1 -0
  576. package/dist/reference-agent/system_call_client.d.ts +106 -0
  577. package/dist/reference-agent/system_call_client.d.ts.map +1 -0
  578. package/dist/reference-agent/system_call_client.js +231 -0
  579. package/dist/reference-agent/system_call_client.js.map +1 -0
  580. package/dist/reference-agent/task_executor.d.ts +108 -0
  581. package/dist/reference-agent/task_executor.d.ts.map +1 -0
  582. package/dist/reference-agent/task_executor.js +249 -0
  583. package/dist/reference-agent/task_executor.js.map +1 -0
  584. package/dist/substrate/accounting/resource_accounting.d.ts +52 -0
  585. package/dist/substrate/accounting/resource_accounting.d.ts.map +1 -0
  586. package/dist/substrate/accounting/resource_accounting.js +200 -0
  587. package/dist/substrate/accounting/resource_accounting.js.map +1 -0
  588. package/dist/substrate/adapters/capability_registry.d.ts +28 -0
  589. package/dist/substrate/adapters/capability_registry.d.ts.map +1 -0
  590. package/dist/substrate/adapters/capability_registry.js +196 -0
  591. package/dist/substrate/adapters/capability_registry.js.map +1 -0
  592. package/dist/substrate/gateway/llm_gateway.d.ts +68 -0
  593. package/dist/substrate/gateway/llm_gateway.d.ts.map +1 -0
  594. package/dist/substrate/gateway/llm_gateway.js +442 -0
  595. package/dist/substrate/gateway/llm_gateway.js.map +1 -0
  596. package/dist/substrate/heartbeat/heartbeat_monitor.d.ts +40 -0
  597. package/dist/substrate/heartbeat/heartbeat_monitor.d.ts.map +1 -0
  598. package/dist/substrate/heartbeat/heartbeat_monitor.js +170 -0
  599. package/dist/substrate/heartbeat/heartbeat_monitor.js.map +1 -0
  600. package/dist/substrate/index.d.ts +59 -0
  601. package/dist/substrate/index.d.ts.map +1 -0
  602. package/dist/substrate/index.js +143 -0
  603. package/dist/substrate/index.js.map +1 -0
  604. package/dist/substrate/interfaces/substrate.d.ts +486 -0
  605. package/dist/substrate/interfaces/substrate.d.ts.map +1 -0
  606. package/dist/substrate/interfaces/substrate.js +14 -0
  607. package/dist/substrate/interfaces/substrate.js.map +1 -0
  608. package/dist/substrate/migration/002_substrate.d.ts +24 -0
  609. package/dist/substrate/migration/002_substrate.d.ts.map +1 -0
  610. package/dist/substrate/migration/002_substrate.js +188 -0
  611. package/dist/substrate/migration/002_substrate.js.map +1 -0
  612. package/dist/substrate/migration/022_transport_deliberation.d.ts +31 -0
  613. package/dist/substrate/migration/022_transport_deliberation.d.ts.map +1 -0
  614. package/dist/substrate/migration/022_transport_deliberation.js +77 -0
  615. package/dist/substrate/migration/022_transport_deliberation.js.map +1 -0
  616. package/dist/substrate/replay/replay_engine.d.ts +65 -0
  617. package/dist/substrate/replay/replay_engine.d.ts.map +1 -0
  618. package/dist/substrate/replay/replay_engine.js +316 -0
  619. package/dist/substrate/replay/replay_engine.js.map +1 -0
  620. package/dist/substrate/scheduler/task_scheduler.d.ts +38 -0
  621. package/dist/substrate/scheduler/task_scheduler.d.ts.map +1 -0
  622. package/dist/substrate/scheduler/task_scheduler.js +486 -0
  623. package/dist/substrate/scheduler/task_scheduler.js.map +1 -0
  624. package/dist/substrate/transport/adapters/anthropic_adapter.d.ts +57 -0
  625. package/dist/substrate/transport/adapters/anthropic_adapter.d.ts.map +1 -0
  626. package/dist/substrate/transport/adapters/anthropic_adapter.js +455 -0
  627. package/dist/substrate/transport/adapters/anthropic_adapter.js.map +1 -0
  628. package/dist/substrate/transport/adapters/gemini_adapter.d.ts +86 -0
  629. package/dist/substrate/transport/adapters/gemini_adapter.d.ts.map +1 -0
  630. package/dist/substrate/transport/adapters/gemini_adapter.js +456 -0
  631. package/dist/substrate/transport/adapters/gemini_adapter.js.map +1 -0
  632. package/dist/substrate/transport/adapters/groq_adapter.d.ts +50 -0
  633. package/dist/substrate/transport/adapters/groq_adapter.d.ts.map +1 -0
  634. package/dist/substrate/transport/adapters/groq_adapter.js +179 -0
  635. package/dist/substrate/transport/adapters/groq_adapter.js.map +1 -0
  636. package/dist/substrate/transport/adapters/mistral_adapter.d.ts +50 -0
  637. package/dist/substrate/transport/adapters/mistral_adapter.d.ts.map +1 -0
  638. package/dist/substrate/transport/adapters/mistral_adapter.js +179 -0
  639. package/dist/substrate/transport/adapters/mistral_adapter.js.map +1 -0
  640. package/dist/substrate/transport/adapters/ollama_adapter.d.ts +66 -0
  641. package/dist/substrate/transport/adapters/ollama_adapter.d.ts.map +1 -0
  642. package/dist/substrate/transport/adapters/ollama_adapter.js +347 -0
  643. package/dist/substrate/transport/adapters/ollama_adapter.js.map +1 -0
  644. package/dist/substrate/transport/adapters/openai_adapter.d.ts +68 -0
  645. package/dist/substrate/transport/adapters/openai_adapter.d.ts.map +1 -0
  646. package/dist/substrate/transport/adapters/openai_adapter.js +439 -0
  647. package/dist/substrate/transport/adapters/openai_adapter.js.map +1 -0
  648. package/dist/substrate/transport/adapters/openai_compat.d.ts +64 -0
  649. package/dist/substrate/transport/adapters/openai_compat.d.ts.map +1 -0
  650. package/dist/substrate/transport/adapters/openai_compat.js +326 -0
  651. package/dist/substrate/transport/adapters/openai_compat.js.map +1 -0
  652. package/dist/substrate/transport/index.d.ts +17 -0
  653. package/dist/substrate/transport/index.d.ts.map +1 -0
  654. package/dist/substrate/transport/index.js +25 -0
  655. package/dist/substrate/transport/index.js.map +1 -0
  656. package/dist/substrate/transport/stream_parser.d.ts +69 -0
  657. package/dist/substrate/transport/stream_parser.d.ts.map +1 -0
  658. package/dist/substrate/transport/stream_parser.js +280 -0
  659. package/dist/substrate/transport/stream_parser.js.map +1 -0
  660. package/dist/substrate/transport/transport_engine.d.ts +53 -0
  661. package/dist/substrate/transport/transport_engine.d.ts.map +1 -0
  662. package/dist/substrate/transport/transport_engine.js +444 -0
  663. package/dist/substrate/transport/transport_engine.js.map +1 -0
  664. package/dist/substrate/transport/transport_types.d.ts +207 -0
  665. package/dist/substrate/transport/transport_types.d.ts.map +1 -0
  666. package/dist/substrate/transport/transport_types.js +13 -0
  667. package/dist/substrate/transport/transport_types.js.map +1 -0
  668. package/dist/substrate/workers/worker_runtime.d.ts +40 -0
  669. package/dist/substrate/workers/worker_runtime.d.ts.map +1 -0
  670. package/dist/substrate/workers/worker_runtime.js +294 -0
  671. package/dist/substrate/workers/worker_runtime.js.map +1 -0
  672. package/dist/techniques/harness/tgp_harness.d.ts +39 -0
  673. package/dist/techniques/harness/tgp_harness.d.ts.map +1 -0
  674. package/dist/techniques/harness/tgp_harness.js +49 -0
  675. package/dist/techniques/harness/tgp_harness.js.map +1 -0
  676. package/dist/techniques/interfaces/tgp_types.d.ts +646 -0
  677. package/dist/techniques/interfaces/tgp_types.d.ts.map +1 -0
  678. package/dist/techniques/interfaces/tgp_types.js +160 -0
  679. package/dist/techniques/interfaces/tgp_types.js.map +1 -0
  680. package/dist/techniques/migration/020_tgp_governance.d.ts +36 -0
  681. package/dist/techniques/migration/020_tgp_governance.d.ts.map +1 -0
  682. package/dist/techniques/migration/020_tgp_governance.js +249 -0
  683. package/dist/techniques/migration/020_tgp_governance.js.map +1 -0
  684. package/dist/techniques/store/tgp_stores.d.ts +36 -0
  685. package/dist/techniques/store/tgp_stores.d.ts.map +1 -0
  686. package/dist/techniques/store/tgp_stores.js +854 -0
  687. package/dist/techniques/store/tgp_stores.js.map +1 -0
  688. package/dist/working-memory/harness/wmp_harness.d.ts +43 -0
  689. package/dist/working-memory/harness/wmp_harness.d.ts.map +1 -0
  690. package/dist/working-memory/harness/wmp_harness.js +81 -0
  691. package/dist/working-memory/harness/wmp_harness.js.map +1 -0
  692. package/dist/working-memory/interfaces/wmp_types.d.ts +635 -0
  693. package/dist/working-memory/interfaces/wmp_types.d.ts.map +1 -0
  694. package/dist/working-memory/interfaces/wmp_types.js +144 -0
  695. package/dist/working-memory/interfaces/wmp_types.js.map +1 -0
  696. package/dist/working-memory/migration/021_wmp.d.ts +21 -0
  697. package/dist/working-memory/migration/021_wmp.d.ts.map +1 -0
  698. package/dist/working-memory/migration/021_wmp.js +139 -0
  699. package/dist/working-memory/migration/021_wmp.js.map +1 -0
  700. package/dist/working-memory/stores/wmp_stores.d.ts +28 -0
  701. package/dist/working-memory/stores/wmp_stores.d.ts.map +1 -0
  702. package/dist/working-memory/stores/wmp_stores.js +754 -0
  703. package/dist/working-memory/stores/wmp_stores.js.map +1 -0
  704. package/package.json +84 -0
@@ -0,0 +1,847 @@
1
+ /**
2
+ * createLimen() factory -- the sole entry point to the Limen engine.
3
+ * S ref: S3.3 (engine not framework), C-06 (independent instances),
4
+ * C-07 (Object.freeze), FPD-2 (async factory), FPD-4 (deep freeze),
5
+ * S39 IP-4 (TypeScript API), SD-06 (shutdown on instance)
6
+ *
7
+ * Phase: 4 (API Surface)
8
+ * Implements: SDD §7 build order item 14 (final composition)
9
+ *
10
+ * This factory:
11
+ * 1. Creates L1 Kernel (opens SQLite, runs migrations, initializes RBAC/audit/crypto/events)
12
+ * 2. Creates L1.5 Substrate (worker pool, LLM gateway, capability adapters, scheduler)
13
+ * 3. Creates L2 Orchestration (mission store, task graph, budget, checkpoints, conversations)
14
+ * 4. Composes the Limen public API object from all sub-modules
15
+ * 5. Deep-freezes the result (Object.freeze recursive per C-07, FPD-4)
16
+ * 6. Returns the frozen object
17
+ *
18
+ * C-06: Two createLimen() calls produce independent instances.
19
+ * C-07: The returned Limen object is recursively frozen.
20
+ * FPD-4: Deep freeze applied once at factory time. Zero ongoing cost.
21
+ *
22
+ * Invariants enforced: C-06, C-07, I-13, I-17
23
+ * Failure modes defended: FM-10 (instance independence prevents cross-tenant leakage)
24
+ */
25
+ // CF-004: Real factory functions for default wiring
26
+ import { createKernel as realCreateKernel, destroyKernel as realDestroyKernel } from '../kernel/index.js';
27
+ import { createStringEncryption } from '../kernel/crypto/crypto_engine.js';
28
+ import { createSubstrate as realCreateSubstrate, getPhase2Migrations } from '../substrate/index.js';
29
+ import { createOrchestration as realCreateOrchestration, getPhase3Migrations } from '../orchestration/index.js';
30
+ import { getPhase4BMigrations } from '../orchestration/migration/004_tenant_isolation.js';
31
+ import { getPhase4D2ImmutabilityMigrations } from '../orchestration/migration/005_immutability_triggers.js';
32
+ import { getPhase4D4TombstoneMigrations } from '../orchestration/migration/006_audit_tombstone.js';
33
+ import { LimenError, ensureLimenError } from './errors/limen_error.js';
34
+ import { buildOperationContext } from './enforcement/rbac_guard.js';
35
+ import { SessionManager } from './sessions/session_manager.js';
36
+ import { ChatPipeline } from './chat/chat_pipeline.js';
37
+ import { InferPipeline } from './infer/infer_pipeline.js';
38
+ import { MissionApiImpl } from './missions/mission_api.js';
39
+ import { AgentApiImpl } from './agents/agent_api.js';
40
+ import { KnowledgeApiImpl } from './knowledge/knowledge_api.js';
41
+ import { RolesApiImpl } from './roles/roles_api.js';
42
+ import { DataApiImpl } from './data/data_api.js';
43
+ import { MetricsCollector } from './observability/metrics.js';
44
+ import { getHealth } from './observability/health.js';
45
+ // Phase 2B: TGP ↔ Pipeline — learning system for technique injection
46
+ import { createLearningSystem } from '../learning/harness/learning_harness.js';
47
+ // ── Phase 4: Governance Wiring Imports ──
48
+ // Phase 4: v16-v30 migration functions (15 files)
49
+ import { getPhase4E2aTechniquesMigration } from '../learning/migration/007_learning_techniques.js';
50
+ import { getPhase4E2dOutcomesMigration } from '../learning/migration/008_learning_outcomes.js';
51
+ import { getPhase4E2cApplicationsMigration } from '../learning/migration/009_learning_applications.js';
52
+ import { getPhase4E2eQuarantineMigration } from '../learning/migration/010_learning_quarantine.js';
53
+ import { getPhase4E2eTransferMigration } from '../learning/migration/011_learning_transfers.js';
54
+ import { getGovernanceRunsTracesMigrations } from '../governance/migration/012_governance_runs_traces.js';
55
+ import { getGovernanceContractsMigrations } from '../governance/migration/013_governance_contracts.js';
56
+ import { getGovernanceSupervisorMigrations } from '../governance/migration/014_governance_supervisor.js';
57
+ import { getGovernanceEvalMigrations } from '../governance/migration/015_governance_eval.js';
58
+ import { getGovernanceCapabilitiesMigrations } from '../governance/migration/016_governance_capabilities.js';
59
+ import { getGovernanceHandoffsIdempotencyMigrations } from '../governance/migration/017_governance_handoffs_idempotency.js';
60
+ import { getSupervisorDecisionDeleteTriggerMigrations } from '../governance/migration/018_supervisor_decision_delete_trigger.js';
61
+ import { getCcpClaimsMigrations } from '../claims/migration/019_ccp_claims.js';
62
+ import { getTgpGovernanceMigration } from '../techniques/migration/020_tgp_governance.js';
63
+ import { getWmpMigrations } from '../working-memory/migration/021_wmp.js';
64
+ import { getTransportDeliberationMigration } from '../substrate/migration/022_transport_deliberation.js';
65
+ // Sprint 1: Agent persistence + capability results migration (v32)
66
+ import { getAgentPersistenceMigrations } from './migration/023_agent_persistence.js';
67
+ // Sprint 2: Trust progression + safety violations + interactions migration (v33)
68
+ import { getTrustLearningMigrations } from './migration/024_trust_learning.js';
69
+ // Sprint 3: Knowledge graph — artifact cascading + goal drift detection migration (v34)
70
+ import { getKnowledgeGraphMigrations } from './migration/025_knowledge_graph.js';
71
+ // Sprint 4: Replay & pipeline — replay snapshots + LLM log immutability + recovery index (v35)
72
+ import { getReplayPipelineMigrations } from './migration/026_replay_pipeline.js';
73
+ // Sprint 4: Mission recovery (I-18)
74
+ import { recoverMissions } from '../orchestration/missions/mission_recovery.js';
75
+ // Sprint 5: Webhook delivery (EVENT-01, IP-6)
76
+ import { deliverWebhooks } from '../kernel/events/webhook_delivery.js';
77
+ // Sprint 1: Real evidence validators (CCP-01, CCP-02)
78
+ import { createEvidenceValidator } from '../claims/evidence/evidence_validator.js';
79
+ import { createCapabilityResultScopeValidator } from '../claims/evidence/capability_scope_validator.js';
80
+ // Phase 4: Governance protocol factories
81
+ import { createGovernanceSystem } from '../governance/harness/governance_harness.js';
82
+ import { createExecutionGovernor } from '../execution/harness/egp_harness.js';
83
+ import { createInvocationGate } from '../execution/wiring/invocation_gate.js';
84
+ // Phase 4: GovernedOrchestration wrapper
85
+ import { createGovernedOrchestration } from './governance/governed_orchestration.js';
86
+ // Phase 4: Claim and Working Memory subsystem factories
87
+ import { createClaimSystem } from '../claims/store/claim_stores.js';
88
+ import { createWorkingMemorySystem } from '../working-memory/harness/wmp_harness.js';
89
+ // Phase 4: Facade factories
90
+ import { createClaimFacade } from './facades/claim_facade.js';
91
+ import { createWorkingMemoryFacade } from './facades/working_memory_facade.js';
92
+ export { LimenError } from './errors/limen_error.js';
93
+ // ============================================================================
94
+ // Deep Freeze (C-07, FPD-4)
95
+ // ============================================================================
96
+ /**
97
+ * C-07, FPD-4: Recursively freeze an object.
98
+ * Applied once at factory time. Zero ongoing cost.
99
+ *
100
+ * Prevents monkey-patching: consumer cannot replace limen.agents.register
101
+ * with a malicious function. All nested objects are frozen.
102
+ *
103
+ * Functions are not recursively frozen (they have non-configurable prototype).
104
+ */
105
+ function deepFreeze(obj) {
106
+ Object.freeze(obj);
107
+ for (const key of Object.getOwnPropertyNames(obj)) {
108
+ const value = obj[key];
109
+ if (value !== null &&
110
+ value !== undefined &&
111
+ typeof value === 'object' &&
112
+ !Object.isFrozen(value)) {
113
+ deepFreeze(value);
114
+ }
115
+ }
116
+ return obj;
117
+ }
118
+ // ============================================================================
119
+ // CF-004: Default Wiring (Phase 4C — Public Integration Boundary)
120
+ // ============================================================================
121
+ /**
122
+ * CF-004, §3.3: Substrate adapter — bridges LimenConfig to SubstrateConfig.
123
+ * LimenConfig.substrate has { maxWorkers?, schedulerPolicy? }.
124
+ * SubstrateConfig needs { workerPool: WorkerPoolConfig, providers }.
125
+ * S ref: S25.2 (worker pool), S25.4 (providers)
126
+ */
127
+ function buildSubstrateAdapter() {
128
+ return (kernel, config) => {
129
+ // S25.2: Transform LimenConfig → SubstrateConfig
130
+ const substrateConfig = {
131
+ workerPool: {
132
+ poolSize: config.substrate?.maxWorkers ?? 4,
133
+ resourceLimits: {
134
+ maxOldGenerationSizeMb: 128,
135
+ maxYoungGenerationSizeMb: 32,
136
+ codeRangeSizeMb: 16,
137
+ },
138
+ workerScript: './worker.js',
139
+ },
140
+ // S25.4: Map public ProviderConfig (type field) → internal LlmProviderConfig (providerId field)
141
+ providers: (config.providers ?? []).map(p => ({
142
+ providerId: p.type,
143
+ baseUrl: p.baseUrl,
144
+ models: p.models,
145
+ apiKeyEnvVar: p.apiKeyEnvVar ?? `${p.type.toUpperCase()}_API_KEY`,
146
+ ...(p.maxConcurrent !== undefined && { maxConcurrent: p.maxConcurrent }),
147
+ ...(p.costPerInputToken !== undefined && { costPerInputToken: p.costPerInputToken }),
148
+ ...(p.costPerOutputToken !== undefined && { costPerOutputToken: p.costPerOutputToken }),
149
+ })),
150
+ };
151
+ // CF-010: Create encryption adapter from kernel crypto engine + masterKey
152
+ // for LLM gateway request/response body encryption at rest (I-11)
153
+ const encryption = createStringEncryption(kernel.crypto, config.masterKey);
154
+ // I-17: Pass kernel's audit trail for substrate audit compliance
155
+ // CF-010: Pass encryption adapter for LLM gateway body encryption
156
+ const result = realCreateSubstrate(substrateConfig, kernel.audit, encryption);
157
+ if (!result.ok) {
158
+ throw new LimenError('ENGINE_UNHEALTHY', `Failed to create substrate: ${result.error.message}`);
159
+ }
160
+ return result.value;
161
+ };
162
+ }
163
+ /**
164
+ * CF-004, §3.3: Orchestration adapter — bridges Kernel to DatabaseConnection + AuditTrail.
165
+ * LimenDeps.createOrchestration takes (kernel, substrate, config).
166
+ * Real createOrchestration takes (conn, substrate, audit).
167
+ * S ref: SD-10 (explicit DI), RDD-3 (tenancy modes)
168
+ */
169
+ function buildOrchestrationAdapter(trackConn) {
170
+ return (kernel, substrate, config) => {
171
+ // RDD-3: Translate public tenancy config to kernel tenancy mode
172
+ const tenancyMode = config.tenancy?.mode ?? 'single';
173
+ const openResult = kernel.database.open({
174
+ dataDir: config.dataDir,
175
+ tenancy: {
176
+ mode: tenancyMode === 'multi'
177
+ ? (config.tenancy?.isolation ?? 'row-level')
178
+ : 'single',
179
+ },
180
+ });
181
+ if (!openResult.ok) {
182
+ throw new LimenError('ENGINE_UNHEALTHY', `Failed to open database for orchestration: ${openResult.error.message}`);
183
+ }
184
+ const conn = openResult.value;
185
+ trackConn?.(conn);
186
+ // C-05: Run Phase 2 (substrate), Phase 3 (orchestration), Phase 4B (tenant isolation) migrations.
187
+ // createKernel() only runs Phase 1 migrations. Remaining migrations must be applied
188
+ // before substrate/orchestration can query their tables.
189
+ const phase2 = kernel.database.migrate(conn, getPhase2Migrations());
190
+ if (!phase2.ok) {
191
+ conn.close();
192
+ throw new LimenError('ENGINE_UNHEALTHY', `Failed to run substrate migrations: ${phase2.error.message}`);
193
+ }
194
+ const phase3 = kernel.database.migrate(conn, getPhase3Migrations());
195
+ if (!phase3.ok) {
196
+ conn.close();
197
+ throw new LimenError('ENGINE_UNHEALTHY', `Failed to run orchestration migrations: ${phase3.error.message}`);
198
+ }
199
+ const phase4b = kernel.database.migrate(conn, getPhase4BMigrations());
200
+ if (!phase4b.ok) {
201
+ conn.close();
202
+ throw new LimenError('ENGINE_UNHEALTHY', `Failed to run tenant isolation migrations: ${phase4b.error.message}`);
203
+ }
204
+ const phase4d2 = kernel.database.migrate(conn, getPhase4D2ImmutabilityMigrations());
205
+ if (!phase4d2.ok) {
206
+ conn.close();
207
+ throw new LimenError('ENGINE_UNHEALTHY', `Failed to run immutability trigger migrations: ${phase4d2.error.message}`);
208
+ }
209
+ const phase4d4 = kernel.database.migrate(conn, getPhase4D4TombstoneMigrations());
210
+ if (!phase4d4.ok) {
211
+ conn.close();
212
+ throw new LimenError('ENGINE_UNHEALTHY', `Failed to run audit tombstone migrations: ${phase4d4.error.message}`);
213
+ }
214
+ // Phase 4: Register v16-v30 governance subsystem migrations (DC-P4-601)
215
+ // 15 migrations run after v1-v15 (Phase 1-3). Version ordering enforced by
216
+ // the migration system (DC-P4-602). Failure → close conn → ENGINE_UNHEALTHY (DC-P4-603).
217
+ const phase4Governance = kernel.database.migrate(conn, [
218
+ ...getPhase4E2aTechniquesMigration(), // v16: learning_techniques
219
+ ...getPhase4E2dOutcomesMigration(), // v17: learning_outcomes
220
+ ...getPhase4E2cApplicationsMigration(), // v18: learning_applications
221
+ ...getPhase4E2eQuarantineMigration(), // v19: quarantine_entries
222
+ ...getPhase4E2eTransferMigration(), // v20: transfer_requests
223
+ ...getGovernanceRunsTracesMigrations(), // v21: gov_runs, gov_attempts, obs_trace_events
224
+ ...getGovernanceContractsMigrations(), // v22: gov_mission_contracts
225
+ ...getGovernanceSupervisorMigrations(), // v23: gov_supervisor_decisions, gov_suspension_records
226
+ ...getGovernanceEvalMigrations(), // v24: gov_eval_cases
227
+ ...getGovernanceCapabilitiesMigrations(), // v25: gov_capability_manifests
228
+ ...getGovernanceHandoffsIdempotencyMigrations(), // v26: gov_handoffs, gov_idempotency_keys, gov_resume_tokens
229
+ ...getSupervisorDecisionDeleteTriggerMigrations(), // v27: DELETE trigger
230
+ ...getCcpClaimsMigrations(), // v28: claim_assertions, claim_evidence, etc.
231
+ ...getTgpGovernanceMigration(), // v29: learning_techniques rebuild + evaluations
232
+ ...getWmpMigrations(), // v30: working_memory_entries, etc.
233
+ ...getTransportDeliberationMigration(), // v31: transport deliberation columns
234
+ ...getAgentPersistenceMigrations(), // v32: core_agents, core_capability_results
235
+ ...getTrustLearningMigrations(), // v33: core_trust_transitions, core_safety_violations, core_interactions
236
+ ...getKnowledgeGraphMigrations(), // v34: staleness_flag, core_drift_assessments
237
+ ...getReplayPipelineMigrations(), // v35: core_replay_snapshots, LLM log immutability, recovery index
238
+ ]);
239
+ if (!phase4Governance.ok) {
240
+ conn.close();
241
+ throw new LimenError('ENGINE_UNHEALTHY', `Failed to run Phase 4 governance migrations (v16-v35): ${phase4Governance.error.message}`);
242
+ }
243
+ // CF-004 / self-review: cleanup connection if orchestration construction fails
244
+ // CF-007: Pass kernel.rateLimiter for persistent, SQLite-backed rate limiting
245
+ try {
246
+ return realCreateOrchestration(conn, substrate, kernel.audit, kernel.rateLimiter);
247
+ }
248
+ catch (err) {
249
+ conn.close();
250
+ throw err;
251
+ }
252
+ };
253
+ }
254
+ /**
255
+ * CF-004: Create default LimenDeps using the real layer factory functions.
256
+ * This is the production wiring that connects createLimen() to the actual
257
+ * kernel, substrate, and orchestration implementations.
258
+ *
259
+ * Consumers should NOT need this — createLimen(config) calls it internally.
260
+ * Exported for:
261
+ * (a) Test code that wants to extend/override one factory while using defaults for others
262
+ * (b) Inspection/debugging of the wiring
263
+ *
264
+ * S ref: S3.3, C-06, C-07
265
+ */
266
+ export function createDefaultDeps() {
267
+ return Object.freeze({
268
+ createKernel: realCreateKernel,
269
+ destroyKernel: realDestroyKernel,
270
+ createSubstrate: buildSubstrateAdapter(),
271
+ createOrchestration: buildOrchestrationAdapter(),
272
+ });
273
+ }
274
+ // ============================================================================
275
+ // createLimen() Factory
276
+ // ============================================================================
277
+ /**
278
+ * S3.3, C-07, C-06: Create an independent Limen engine instance.
279
+ *
280
+ * This is the SOLE entry point to the Limen engine. It:
281
+ * 1. Validates configuration
282
+ * 2. Creates L1 Kernel (SQLite, RBAC, audit, crypto, events)
283
+ * 3. Creates L1.5 Substrate (workers, LLM gateway, adapters, scheduler)
284
+ * 4. Creates L2 Orchestration (missions, tasks, budget, checkpoints, conversations)
285
+ * 5. Composes the Limen public API
286
+ * 6. Deep-freezes the result (C-07)
287
+ * 7. Returns the frozen instance
288
+ *
289
+ * C-06: Two calls produce independent instances (separate kernel, substrate, orchestration).
290
+ * C-07: The returned object is recursively frozen via Object.freeze.
291
+ *
292
+ * FPD-2: Returns Promise<Limen> because worker thread initialization (S25.2)
293
+ * and provider health probes (S25.4) are inherently async.
294
+ *
295
+ * @param config - Engine configuration
296
+ * @param deps - Layer factory functions (optional; defaults to real implementations via createDefaultDeps())
297
+ * @returns Frozen Limen engine instance
298
+ * @throws LimenError with code INVALID_CONFIG on configuration errors
299
+ * @throws LimenError with code ENGINE_UNHEALTHY if layer construction fails
300
+ */
301
+ export async function createLimen(config, deps) {
302
+ // CF-004: Default to production wiring when deps not provided.
303
+ // S3.3: Consumers call createLimen(config) — no internal imports needed.
304
+ // R4C-004: Track orchestration connection for shutdown cleanup.
305
+ let orchestrationConn = null;
306
+ const resolvedDeps = deps ?? Object.freeze({
307
+ createKernel: realCreateKernel,
308
+ destroyKernel: realDestroyKernel,
309
+ createSubstrate: buildSubstrateAdapter(),
310
+ createOrchestration: buildOrchestrationAdapter((conn) => {
311
+ orchestrationConn = conn;
312
+ }),
313
+ });
314
+ // ── Step 1: Validate configuration ──
315
+ if (!config.dataDir || typeof config.dataDir !== 'string') {
316
+ throw new LimenError('INVALID_CONFIG', 'dataDir is required and must be a non-empty string.');
317
+ }
318
+ if (!config.masterKey || !Buffer.isBuffer(config.masterKey) || config.masterKey.length < 32) {
319
+ throw new LimenError('INVALID_CONFIG', 'masterKey is required and must be a Buffer of at least 32 bytes.');
320
+ }
321
+ // R4C-006: Validate tenancy mode (defense-in-depth for JavaScript consumers)
322
+ const tenancyModeRaw = config.tenancy?.mode;
323
+ if (tenancyModeRaw !== undefined && tenancyModeRaw !== 'single' && tenancyModeRaw !== 'multi') {
324
+ throw new LimenError('INVALID_CONFIG', `tenancy.mode must be 'single' or 'multi', got '${tenancyModeRaw}'.`);
325
+ }
326
+ const tenancyMode = config.tenancy?.mode ?? 'single';
327
+ const defaultTimeoutMs = config.defaultTimeoutMs ?? 60000;
328
+ const maxConcurrentStreams = config.rateLimiting?.maxConcurrentStreams ?? 50;
329
+ // CF-021: Logger callback (no-op if not configured — zero behavioral change)
330
+ const log = config.logger ?? (() => { });
331
+ log({ level: 'info', category: 'init', message: 'Limen initialization starting', context: { dataDir: config.dataDir, tenancyMode } });
332
+ const backpressureConfig = {
333
+ bufferSizeBytes: 4096, // S36: 4KB default
334
+ stallTimeoutMs: 30000, // S27: 30s stall timeout
335
+ maxConcurrentStreams, // S36: 50 per tenant default
336
+ };
337
+ // ── Step 2: Create L1 Kernel ──
338
+ const kernelResult = resolvedDeps.createKernel({
339
+ dataDir: config.dataDir,
340
+ tenancy: {
341
+ mode: tenancyMode === 'multi' ? (config.tenancy?.isolation ?? 'row-level') : 'single',
342
+ },
343
+ masterKey: config.masterKey,
344
+ });
345
+ if (!kernelResult.ok) {
346
+ log({ level: 'error', category: 'init', message: 'Kernel initialization failed', context: { error: kernelResult.error } });
347
+ throw new LimenError('INVALID_CONFIG', 'Failed to initialize kernel.');
348
+ }
349
+ const kernel = kernelResult.value;
350
+ const destroyKernel = resolvedDeps.destroyKernel;
351
+ log({ level: 'info', category: 'init', message: 'Kernel initialized' });
352
+ // CF-033 OP-02: Startup health gate.
353
+ // Verify kernel health immediately after initialization.
354
+ // An unhealthy kernel at startup indicates database corruption or schema issues.
355
+ const startupHealth = kernel.health();
356
+ if (!startupHealth.ok || startupHealth.value.status === 'unhealthy') {
357
+ const reason = !startupHealth.ok
358
+ ? startupHealth.error.message
359
+ : 'Database integrity check failed';
360
+ log({ level: 'error', category: 'init', message: 'Startup health gate failed', context: { reason } });
361
+ try {
362
+ destroyKernel(kernel);
363
+ }
364
+ catch { /* ignore cleanup errors */ }
365
+ throw new LimenError('ENGINE_UNHEALTHY', `Startup health gate failed: ${reason}`);
366
+ }
367
+ log({ level: 'info', category: 'health', message: 'Startup health gate passed', context: { status: startupHealth.value.status } });
368
+ // ── Step 3: Create L1.5 Substrate ──
369
+ let substrate;
370
+ try {
371
+ substrate = resolvedDeps.createSubstrate(kernel, config);
372
+ }
373
+ catch (err) {
374
+ // R4C-005: Cleanup kernel on substrate construction failure
375
+ try {
376
+ destroyKernel(kernel);
377
+ }
378
+ catch { /* ignore cleanup errors */ }
379
+ throw ensureLimenError(err);
380
+ }
381
+ // ── Step 4: Create L2 Orchestration ──
382
+ let orchestration;
383
+ try {
384
+ orchestration = resolvedDeps.createOrchestration(kernel, substrate, config);
385
+ }
386
+ catch (err) {
387
+ // R4C-005: Cleanup kernel on orchestration construction failure
388
+ try {
389
+ destroyKernel(kernel);
390
+ }
391
+ catch { /* ignore cleanup errors */ }
392
+ throw ensureLimenError(err);
393
+ }
394
+ // ── Step 4.5a: Mission Recovery (Sprint 4, I-18) ──
395
+ // After orchestration creation, before API surface composition.
396
+ // Recovers non-terminal missions that were in-flight when the engine last shut down.
397
+ // EXECUTING/REVIEWING -> PAUSED (conservative). Other non-terminal states unchanged.
398
+ // Non-fatal: recovery failure does not prevent engine startup.
399
+ try {
400
+ // Open a recovery connection for the recovery pass
401
+ const recoveryConnResult = kernel.database.open({
402
+ dataDir: config.dataDir,
403
+ tenancy: { mode: tenancyMode === 'multi' ? (config.tenancy?.isolation ?? 'row-level') : 'single' },
404
+ });
405
+ if (recoveryConnResult.ok) {
406
+ const recoveryConn = recoveryConnResult.value;
407
+ // Run all migrations on recovery connection first
408
+ const recoveryMigResult = kernel.database.migrate(recoveryConn, [
409
+ ...getPhase2Migrations(),
410
+ ...getPhase3Migrations(),
411
+ ...getPhase4BMigrations(),
412
+ ...getPhase4D2ImmutabilityMigrations(),
413
+ ...getPhase4D4TombstoneMigrations(),
414
+ ...getPhase4E2aTechniquesMigration(),
415
+ ...getPhase4E2dOutcomesMigration(),
416
+ ...getPhase4E2cApplicationsMigration(),
417
+ ...getPhase4E2eQuarantineMigration(),
418
+ ...getPhase4E2eTransferMigration(),
419
+ ...getGovernanceRunsTracesMigrations(),
420
+ ...getGovernanceContractsMigrations(),
421
+ ...getGovernanceSupervisorMigrations(),
422
+ ...getGovernanceEvalMigrations(),
423
+ ...getGovernanceCapabilitiesMigrations(),
424
+ ...getGovernanceHandoffsIdempotencyMigrations(),
425
+ ...getSupervisorDecisionDeleteTriggerMigrations(),
426
+ ...getCcpClaimsMigrations(),
427
+ ...getTgpGovernanceMigration(),
428
+ ...getWmpMigrations(),
429
+ ...getTransportDeliberationMigration(),
430
+ ...getAgentPersistenceMigrations(),
431
+ ...getTrustLearningMigrations(),
432
+ ...getKnowledgeGraphMigrations(),
433
+ ...getReplayPipelineMigrations(),
434
+ ]);
435
+ if (recoveryMigResult.ok) {
436
+ const recoveryResult = recoverMissions(recoveryConn, kernel.audit, kernel.time);
437
+ if (recoveryResult.ok && recoveryResult.value.recoveredCount > 0) {
438
+ log({ level: 'info', category: 'recovery', message: `Mission recovery: ${recoveryResult.value.recoveredCount} missions transitioned to PAUSED` });
439
+ }
440
+ }
441
+ recoveryConn.close();
442
+ }
443
+ }
444
+ catch (recoveryErr) {
445
+ // Non-fatal: recovery failure does not prevent engine startup
446
+ log({ level: 'warn', category: 'recovery', message: 'Mission recovery failed (non-fatal)', context: { error: recoveryErr instanceof Error ? recoveryErr.message : String(recoveryErr) } });
447
+ }
448
+ // ── Step 4.5: Governance Composition (Phase 4) ──
449
+ // Instantiation order: Phase 0A → EGP → InvocationGate → GovernedOrchestration
450
+ // Design Source §Output 4, Architecture §4 (composition order)
451
+ // Phase 0A governance system (runs, traces, contracts, supervisor, suspension, eval, etc.)
452
+ const governanceSystem = createGovernanceSystem(kernel.time);
453
+ // EGP execution governor
454
+ // ExecutionGovernorDeps uses structural projections of audit/events that are
455
+ // narrower than the kernel's full AuditTrail/EventBus interfaces.
456
+ // Adapt kernel types to match EGP's minimal structural requirement.
457
+ const egpDeps = {
458
+ audit: {
459
+ append(conn, input) {
460
+ return kernel.audit.append(conn, {
461
+ ...input,
462
+ operation: input.action,
463
+ });
464
+ },
465
+ },
466
+ events: {
467
+ emit() {
468
+ // EGP events are diagnostic — non-blocking, no-op adapter
469
+ },
470
+ },
471
+ traceEmitter: {
472
+ emit(conn, ctx, event) {
473
+ return governanceSystem.traceEmitter.emit(conn, ctx, {
474
+ runId: `egp-${event.correlationId}`,
475
+ correlationId: event.correlationId,
476
+ type: event.type,
477
+ payload: event.payload,
478
+ });
479
+ },
480
+ },
481
+ suspensionQuery: governanceSystem.suspensionStore,
482
+ time: kernel.time,
483
+ };
484
+ const egp = createExecutionGovernor(egpDeps);
485
+ // EGP invocation gate (headroom check before capability execution)
486
+ const invocationGate = createInvocationGate(egp);
487
+ // GovernedOrchestration wrapper — replaces raw orchestration for all consumers (C-SEC-04)
488
+ // C-06: createGovernedOrchestration returns { engine, getConsumptionRecordingFailureCount }
489
+ // The counter is per-instance (closure-local), not module-level.
490
+ const getGovernanceConnection = () => {
491
+ // Reuse the same connection accessor as the rest of the API surface
492
+ return getConnection();
493
+ };
494
+ const governedOrchResult = createGovernedOrchestration(orchestration, {
495
+ governance: governanceSystem,
496
+ egp,
497
+ invocationGate,
498
+ getConnection: getGovernanceConnection,
499
+ time: kernel.time,
500
+ });
501
+ const governedOrchestration = governedOrchResult.engine;
502
+ // CCP claim system (closure-local — DC-P4-406, C-SEC-05)
503
+ // Sprint 1: Real evidence validator replaces accept-all stub (CCP-01, CCP-02)
504
+ const evidenceValidator = createEvidenceValidator();
505
+ const capabilityResultScopeValidator = createCapabilityResultScopeValidator();
506
+ const claimSystem = createClaimSystem({
507
+ evidenceValidator,
508
+ audit: kernel.audit,
509
+ eventBus: kernel.events,
510
+ traceEmitter: governanceSystem.traceEmitter,
511
+ rateLimiter: kernel.rateLimiter,
512
+ capabilityResultScopeValidator,
513
+ time: kernel.time,
514
+ });
515
+ // WMP working memory system (closure-local — DC-P4-406, C-SEC-05)
516
+ const wmpSystem = createWorkingMemorySystem({
517
+ time: kernel.time,
518
+ });
519
+ // ── Step 5: Compose the Limen public API ──
520
+ log({ level: 'info', category: 'init', message: 'Limen initialization complete' });
521
+ const startTime = kernel.time.nowMs();
522
+ const rbac = kernel.rbac;
523
+ const rateLimiter = kernel.rateLimiter;
524
+ // Connection accessor - each call gets the current connection
525
+ // DatabaseLifecycle.open() returns a connection. We store it from kernel creation.
526
+ // The kernel manages its own connection internally.
527
+ let activeConn = null;
528
+ const getConnection = () => {
529
+ if (!activeConn) {
530
+ // Open a connection via the database lifecycle
531
+ const openResult = kernel.database.open({
532
+ dataDir: config.dataDir,
533
+ tenancy: { mode: tenancyMode === 'multi' ? (config.tenancy?.isolation ?? 'row-level') : 'single' },
534
+ });
535
+ if (!openResult.ok) {
536
+ throw new LimenError('ENGINE_UNHEALTHY', 'Failed to open database connection.');
537
+ }
538
+ activeConn = openResult.value;
539
+ }
540
+ return activeConn;
541
+ };
542
+ // Build default operation context for single-user mode
543
+ const allPermissions = new Set([
544
+ 'create_agent', 'modify_agent', 'delete_agent',
545
+ 'chat', 'infer', 'create_mission',
546
+ 'view_telemetry', 'view_audit',
547
+ 'manage_providers', 'manage_budgets', 'manage_roles',
548
+ 'purge_data',
549
+ 'approve_response', 'edit_response', 'takeover_session', 'review_batch',
550
+ ]);
551
+ const getContext = () => {
552
+ if (tenancyMode === 'single') {
553
+ return buildOperationContext(null, null, null, allPermissions);
554
+ }
555
+ // Multi-tenant: context must be provided per-call via session
556
+ return buildOperationContext(null, null, null, new Set());
557
+ };
558
+ const getAudit = () => kernel.audit;
559
+ const getSubstrate = () => substrate;
560
+ // Initialize metrics collector
561
+ const metricsCollector = new MetricsCollector(kernel);
562
+ // CF-017: Wire checkpoint auto-expiry timer.
563
+ // S24: Expired checkpoints auto-rejected every 30 seconds.
564
+ // Uses OrchestrationDeps with current conn + audit.
565
+ const checkpointExpiryTimer = setInterval(() => {
566
+ try {
567
+ const conn = getConnection();
568
+ const expiryDeps = Object.freeze({
569
+ conn,
570
+ substrate,
571
+ audit: kernel.audit,
572
+ time: kernel.time,
573
+ });
574
+ orchestration.checkpoints.expireOverdue(expiryDeps);
575
+ }
576
+ catch {
577
+ // Timer errors do not propagate. Expiry will retry next tick.
578
+ }
579
+ }, 30_000);
580
+ // CF-033 OP-01: Periodic WAL checkpoint timer.
581
+ // PASSIVE checkpoint every 5 minutes to bound WAL file growth.
582
+ // PASSIVE mode does not block concurrent readers or writers.
583
+ const walCheckpointTimer = setInterval(() => {
584
+ try {
585
+ const conn = getConnection();
586
+ conn.run('PRAGMA wal_checkpoint(PASSIVE)');
587
+ }
588
+ catch {
589
+ // Checkpoint failure is non-fatal. WAL will be replayed on next open.
590
+ }
591
+ }, 300_000); // 5 minutes
592
+ // Determine default model from providers config
593
+ const defaultModel = config.providers?.[0]?.models[0] ?? 'default';
594
+ // Phase 2B: TGP ↔ Pipeline — create learning system for technique injection.
595
+ // The applicator is wired as the technique reader into the chat pipeline.
596
+ // Only the read-only getActivePromptFragments path is used at inference time.
597
+ const learningSystem = createLearningSystem({
598
+ getConnection,
599
+ audit: kernel.audit,
600
+ events: kernel.events,
601
+ rbac,
602
+ rateLimiter,
603
+ gateway: substrate.gateway,
604
+ time: kernel.time,
605
+ });
606
+ // Initialize chat pipeline
607
+ // C-SEC-04: ChatPipeline receives governedOrchestration (not raw orchestration)
608
+ const chatPipeline = new ChatPipeline(rbac, rateLimiter, governedOrchestration, substrate.gateway, getConnection, getAudit, getSubstrate, defaultTimeoutMs, backpressureConfig, defaultModel, learningSystem.applicator);
609
+ // Initialize infer pipeline
610
+ const inferPipeline = new InferPipeline(rbac, rateLimiter, substrate.gateway, getConnection, defaultTimeoutMs, defaultModel);
611
+ // Initialize session manager (needs chat and infer functions)
612
+ // C-SEC-04: SessionManager receives governedOrchestration (not raw orchestration)
613
+ const sessionManager = new SessionManager(rbac, governedOrchestration, getConnection, getAudit, getSubstrate, tenancyMode,
614
+ // chatFn: delegates to chat pipeline
615
+ (sessionState, message, options) => chatPipeline.execute(sessionState, message, options),
616
+ // inferFn: delegates to infer pipeline
617
+ async (sessionState, options) => inferPipeline.execute(sessionState, options), kernel.time);
618
+ // Initialize sub-API implementations
619
+ // C-SEC-04: MissionApiImpl receives governedOrchestration (not raw orchestration)
620
+ const missionsApi = new MissionApiImpl(rbac, rateLimiter, governedOrchestration, kernel.events, getConnection, getContext, getAudit, getSubstrate);
621
+ const agentsApi = new AgentApiImpl(rbac, rateLimiter, getConnection, getContext, kernel.time);
622
+ const knowledgeApi = new KnowledgeApiImpl(rbac, rateLimiter, getConnection, getContext);
623
+ const rolesApi = new RolesApiImpl(rbac, rateLimiter, getConnection, getContext);
624
+ const dataApi = new DataApiImpl(rbac, rateLimiter, kernel, getConnection, getContext);
625
+ // Phase 4: Create facade instances (DC-P4-404, DC-P4-405, DC-P4-406)
626
+ const claimsFacade = createClaimFacade(claimSystem, rbac, rateLimiter);
627
+ const workingMemoryFacade = createWorkingMemoryFacade(wmpSystem, rbac, rateLimiter);
628
+ // Build the Limen object
629
+ const engine = {
630
+ // S27, S48: Chat API
631
+ chat(message, options) {
632
+ try {
633
+ // For top-level limen.chat(), use the default session (SD-15, S48)
634
+ const sessionId = options?.sessionId;
635
+ if (sessionId) {
636
+ const state = sessionManager.getSessionState(sessionId);
637
+ if (!state) {
638
+ // Return a ChatResult whose promises reject
639
+ const error = new LimenError('SESSION_NOT_FOUND', 'The specified session was not found.');
640
+ return {
641
+ text: Promise.reject(error),
642
+ stream: (async function* () {
643
+ yield { type: 'error', code: error.code, message: error.message };
644
+ })(),
645
+ metadata: Promise.reject(error),
646
+ };
647
+ }
648
+ return chatPipeline.execute(state, message, options);
649
+ }
650
+ // S48, SD-15: Use default session (lazy initialization)
651
+ // Since chat() must return synchronously (SD-01), we start the pipeline
652
+ // with a deferred session resolution.
653
+ //
654
+ // MEDIUM-001: Execute the pipeline ONCE and reuse the result.
655
+ // Store the promise of the ChatResult and distribute its fields.
656
+ const defaultSessionPromise = sessionManager.getDefaultSession();
657
+ const resultPromise = defaultSessionPromise.then((state) => chatPipeline.execute(state, message, options));
658
+ // SD-01: Distribute the single pipeline execution across the ChatResult fields
659
+ const textPromise = resultPromise.then((r) => r.text);
660
+ const metadataPromise = resultPromise.then((r) => r.metadata);
661
+ const streamIterable = {
662
+ [Symbol.asyncIterator]() {
663
+ let innerIterator = null;
664
+ return {
665
+ async next() {
666
+ if (!innerIterator) {
667
+ const result = await resultPromise;
668
+ innerIterator = result.stream[Symbol.asyncIterator]();
669
+ }
670
+ return innerIterator.next();
671
+ },
672
+ async return() {
673
+ if (innerIterator?.return) {
674
+ return innerIterator.return();
675
+ }
676
+ return { value: undefined, done: true };
677
+ },
678
+ async throw(err) {
679
+ if (innerIterator?.throw) {
680
+ return innerIterator.throw(err);
681
+ }
682
+ return { value: undefined, done: true };
683
+ },
684
+ };
685
+ },
686
+ };
687
+ return {
688
+ text: textPromise,
689
+ stream: streamIterable,
690
+ metadata: metadataPromise,
691
+ };
692
+ }
693
+ catch (error) {
694
+ const limeError = ensureLimenError(error);
695
+ return {
696
+ text: Promise.reject(limeError),
697
+ stream: (async function* () {
698
+ yield { type: 'error', code: limeError.code, message: limeError.message };
699
+ })(),
700
+ metadata: Promise.reject(limeError),
701
+ };
702
+ }
703
+ },
704
+ // S28: Structured output
705
+ async infer(options) {
706
+ const sessionId = options.sessionId;
707
+ if (sessionId) {
708
+ const state = sessionManager.getSessionState(sessionId);
709
+ if (!state) {
710
+ throw new LimenError('SESSION_NOT_FOUND', 'The specified session was not found.');
711
+ }
712
+ return inferPipeline.execute(state, options);
713
+ }
714
+ // Use default session
715
+ const state = await sessionManager.getDefaultSession();
716
+ return inferPipeline.execute(state, options);
717
+ },
718
+ // S26: Session management
719
+ async session(options) {
720
+ return sessionManager.createSession(options);
721
+ },
722
+ // S12, DL-2: Agent management
723
+ agents: agentsApi,
724
+ // S14-S24: Mission management
725
+ missions: missionsApi,
726
+ // S9, UC-6: Knowledge management
727
+ knowledge: knowledgeApi,
728
+ // §34: RBAC management
729
+ roles: rolesApi,
730
+ // S32.4: Health check
731
+ // MEDIUM-003: RBAC limitation documented. The public Limen.health() interface
732
+ // takes no parameters (no OperationContext), so RBAC cannot be enforced here.
733
+ // In single-tenant mode, RBAC is dormant (all permissions granted), so this is safe.
734
+ // In multi-tenant mode, health() should be gated by a middleware/transport layer
735
+ // that injects context before reaching the engine. This is a known limitation
736
+ // for the Phase 4 API surface; the transport layer (Phase 5+) will enforce
737
+ // 'view_telemetry' permission before proxying health calls.
738
+ async health() {
739
+ return getHealth(kernel, substrate, getConnection(), startTime);
740
+ },
741
+ // S32.2: Metrics
742
+ // MEDIUM-002: Expose a frozen facade instead of the mutable MetricsCollector directly.
743
+ // deepFreeze (C-07) would freeze the collector's internal counters, breaking mutation.
744
+ // The facade delegates snapshot() to the unfrozen collector, which remains outside
745
+ // the frozen engine object graph.
746
+ // SEC-018: Pass optional tenantId through to MetricsCollector for tenant-scoped metrics
747
+ metrics: { snapshot: (tenantId) => metricsCollector.snapshot(tenantId) },
748
+ // I-02: Data management
749
+ data: dataApi,
750
+ // Phase 4: Claim management (SC-11, SC-12, SC-13 via CCP facade)
751
+ // DC-P4-406: Only facade exposed — raw ClaimSystem is closure-local
752
+ claims: claimsFacade,
753
+ // Phase 4: Working memory management (SC-14, SC-15, SC-16 via WMP facade)
754
+ // DC-P4-406: Only facade exposed — raw WorkingMemorySystem is closure-local
755
+ workingMemory: workingMemoryFacade,
756
+ // S3.4, I-05, SD-06: Graceful shutdown
757
+ // CF-011: Each step wrapped in try/catch so that one failure
758
+ // does not prevent subsequent cleanup. Errors are collected.
759
+ async shutdown() {
760
+ log({ level: 'info', category: 'shutdown', message: 'Limen shutdown starting' });
761
+ const shutdownErrors = [];
762
+ // CF-017: Stop checkpoint expiry timer before closing connections
763
+ try {
764
+ clearInterval(checkpointExpiryTimer);
765
+ }
766
+ catch (err) {
767
+ shutdownErrors.push(err instanceof Error ? err : new Error(String(err)));
768
+ }
769
+ // CF-033 OP-01: Stop WAL checkpoint timer
770
+ try {
771
+ clearInterval(walCheckpointTimer);
772
+ }
773
+ catch (err) {
774
+ shutdownErrors.push(err instanceof Error ? err : new Error(String(err)));
775
+ }
776
+ // 1. Close all active sessions (terminates streams with error chunks)
777
+ try {
778
+ await sessionManager.closeAll();
779
+ }
780
+ catch (err) {
781
+ shutdownErrors.push(err instanceof Error ? err : new Error(String(err)));
782
+ }
783
+ // 1.5. Sprint 5 (EVENT-01): Flush pending webhook deliveries before closing.
784
+ // IP-6: Best-effort delivery of any queued webhooks during shutdown.
785
+ // Non-fatal: delivery failure does not block shutdown.
786
+ try {
787
+ if (activeConn) {
788
+ const deliveryResult = await deliverWebhooks(activeConn, undefined, kernel.time);
789
+ if (deliveryResult.delivered > 0 || deliveryResult.failed > 0) {
790
+ log({ level: 'info', category: 'shutdown', message: `Webhook flush: ${deliveryResult.delivered} delivered, ${deliveryResult.failed} failed, ${deliveryResult.exhausted} exhausted` });
791
+ }
792
+ }
793
+ }
794
+ catch (err) {
795
+ log({ level: 'warn', category: 'shutdown', message: 'Webhook flush failed (non-fatal)', context: { error: err instanceof Error ? err.message : String(err) } });
796
+ }
797
+ // 2. Shutdown substrate (stop workers, drain queues)
798
+ try {
799
+ if (activeConn) {
800
+ const ctx = getContext();
801
+ substrate.shutdown(activeConn, ctx);
802
+ }
803
+ }
804
+ catch (err) {
805
+ shutdownErrors.push(err instanceof Error ? err : new Error(String(err)));
806
+ }
807
+ // 3. Close database connections
808
+ try {
809
+ if (activeConn) {
810
+ activeConn.close();
811
+ activeConn = null;
812
+ }
813
+ }
814
+ catch (err) {
815
+ shutdownErrors.push(err instanceof Error ? err : new Error(String(err)));
816
+ }
817
+ // R4C-004: Close orchestration connection (opened by default adapter)
818
+ try {
819
+ if (orchestrationConn) {
820
+ orchestrationConn.close();
821
+ orchestrationConn = null;
822
+ }
823
+ }
824
+ catch (err) {
825
+ shutdownErrors.push(err instanceof Error ? err : new Error(String(err)));
826
+ }
827
+ // 4. Destroy kernel (checkpoint WAL, close kernel's internal connection)
828
+ try {
829
+ destroyKernel(kernel);
830
+ }
831
+ catch (err) {
832
+ shutdownErrors.push(err instanceof Error ? err : new Error(String(err)));
833
+ }
834
+ // If any errors occurred during shutdown, report the first one
835
+ // but all steps have completed their cleanup attempt.
836
+ if (shutdownErrors.length > 0) {
837
+ log({ level: 'error', category: 'shutdown', message: 'Shutdown completed with errors', context: { errorCount: shutdownErrors.length, firstError: shutdownErrors[0].message } });
838
+ throw ensureLimenError(shutdownErrors[0]);
839
+ }
840
+ log({ level: 'info', category: 'shutdown', message: 'Limen shutdown complete' });
841
+ },
842
+ };
843
+ // ── Step 6: Deep freeze (C-07, FPD-4) ──
844
+ deepFreeze(engine);
845
+ return engine;
846
+ }
847
+ //# sourceMappingURL=index.js.map