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.
- package/CHANGELOG.md +47 -0
- package/LICENSE +190 -0
- package/README.md +546 -0
- package/dist/api/agents/agent_api.d.ts +126 -0
- package/dist/api/agents/agent_api.d.ts.map +1 -0
- package/dist/api/agents/agent_api.js +467 -0
- package/dist/api/agents/agent_api.js.map +1 -0
- package/dist/api/agents/trust_progression.d.ts +78 -0
- package/dist/api/agents/trust_progression.d.ts.map +1 -0
- package/dist/api/agents/trust_progression.js +124 -0
- package/dist/api/agents/trust_progression.js.map +1 -0
- package/dist/api/chat/chat_pipeline.d.ts +91 -0
- package/dist/api/chat/chat_pipeline.d.ts.map +1 -0
- package/dist/api/chat/chat_pipeline.js +630 -0
- package/dist/api/chat/chat_pipeline.js.map +1 -0
- package/dist/api/chat/technique_injector.d.ts +86 -0
- package/dist/api/chat/technique_injector.d.ts.map +1 -0
- package/dist/api/chat/technique_injector.js +125 -0
- package/dist/api/chat/technique_injector.js.map +1 -0
- package/dist/api/data/data_api.d.ts +91 -0
- package/dist/api/data/data_api.d.ts.map +1 -0
- package/dist/api/data/data_api.js +306 -0
- package/dist/api/data/data_api.js.map +1 -0
- package/dist/api/enforcement/cost_tracker.d.ts +105 -0
- package/dist/api/enforcement/cost_tracker.d.ts.map +1 -0
- package/dist/api/enforcement/cost_tracker.js +227 -0
- package/dist/api/enforcement/cost_tracker.js.map +1 -0
- package/dist/api/enforcement/latency_harness.d.ts +94 -0
- package/dist/api/enforcement/latency_harness.d.ts.map +1 -0
- package/dist/api/enforcement/latency_harness.js +120 -0
- package/dist/api/enforcement/latency_harness.js.map +1 -0
- package/dist/api/enforcement/rate_guard.d.ts +52 -0
- package/dist/api/enforcement/rate_guard.d.ts.map +1 -0
- package/dist/api/enforcement/rate_guard.js +79 -0
- package/dist/api/enforcement/rate_guard.js.map +1 -0
- package/dist/api/enforcement/rbac_guard.d.ts +55 -0
- package/dist/api/enforcement/rbac_guard.d.ts.map +1 -0
- package/dist/api/enforcement/rbac_guard.js +77 -0
- package/dist/api/enforcement/rbac_guard.js.map +1 -0
- package/dist/api/errors/limen_error.d.ts +81 -0
- package/dist/api/errors/limen_error.d.ts.map +1 -0
- package/dist/api/errors/limen_error.js +324 -0
- package/dist/api/errors/limen_error.js.map +1 -0
- package/dist/api/facades/claim_facade.d.ts +47 -0
- package/dist/api/facades/claim_facade.d.ts.map +1 -0
- package/dist/api/facades/claim_facade.js +67 -0
- package/dist/api/facades/claim_facade.js.map +1 -0
- package/dist/api/facades/working_memory_facade.d.ts +47 -0
- package/dist/api/facades/working_memory_facade.d.ts.map +1 -0
- package/dist/api/facades/working_memory_facade.js +74 -0
- package/dist/api/facades/working_memory_facade.js.map +1 -0
- package/dist/api/governance/governed_orchestration.d.ts +76 -0
- package/dist/api/governance/governed_orchestration.d.ts.map +1 -0
- package/dist/api/governance/governed_orchestration.js +413 -0
- package/dist/api/governance/governed_orchestration.js.map +1 -0
- package/dist/api/index.d.ts +84 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +847 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/infer/infer_pipeline.d.ts +51 -0
- package/dist/api/infer/infer_pipeline.d.ts.map +1 -0
- package/dist/api/infer/infer_pipeline.js +291 -0
- package/dist/api/infer/infer_pipeline.js.map +1 -0
- package/dist/api/interfaces/api.d.ts +940 -0
- package/dist/api/interfaces/api.d.ts.map +1 -0
- package/dist/api/interfaces/api.js +21 -0
- package/dist/api/interfaces/api.js.map +1 -0
- package/dist/api/knowledge/knowledge_api.d.ts +55 -0
- package/dist/api/knowledge/knowledge_api.d.ts.map +1 -0
- package/dist/api/knowledge/knowledge_api.js +89 -0
- package/dist/api/knowledge/knowledge_api.js.map +1 -0
- package/dist/api/migration/023_agent_persistence.d.ts +32 -0
- package/dist/api/migration/023_agent_persistence.d.ts.map +1 -0
- package/dist/api/migration/023_agent_persistence.js +158 -0
- package/dist/api/migration/023_agent_persistence.js.map +1 -0
- package/dist/api/migration/024_trust_learning.d.ts +36 -0
- package/dist/api/migration/024_trust_learning.d.ts.map +1 -0
- package/dist/api/migration/024_trust_learning.js +194 -0
- package/dist/api/migration/024_trust_learning.js.map +1 -0
- package/dist/api/migration/025_knowledge_graph.d.ts +29 -0
- package/dist/api/migration/025_knowledge_graph.d.ts.map +1 -0
- package/dist/api/migration/025_knowledge_graph.js +97 -0
- package/dist/api/migration/025_knowledge_graph.js.map +1 -0
- package/dist/api/migration/026_replay_pipeline.d.ts +30 -0
- package/dist/api/migration/026_replay_pipeline.d.ts.map +1 -0
- package/dist/api/migration/026_replay_pipeline.js +118 -0
- package/dist/api/migration/026_replay_pipeline.js.map +1 -0
- package/dist/api/missions/mission_api.d.ts +74 -0
- package/dist/api/missions/mission_api.d.ts.map +1 -0
- package/dist/api/missions/mission_api.js +408 -0
- package/dist/api/missions/mission_api.js.map +1 -0
- package/dist/api/observability/health.d.ts +36 -0
- package/dist/api/observability/health.d.ts.map +1 -0
- package/dist/api/observability/health.js +92 -0
- package/dist/api/observability/health.js.map +1 -0
- package/dist/api/observability/metrics.d.ts +95 -0
- package/dist/api/observability/metrics.d.ts.map +1 -0
- package/dist/api/observability/metrics.js +260 -0
- package/dist/api/observability/metrics.js.map +1 -0
- package/dist/api/roles/roles_api.d.ts +45 -0
- package/dist/api/roles/roles_api.d.ts.map +1 -0
- package/dist/api/roles/roles_api.js +77 -0
- package/dist/api/roles/roles_api.js.map +1 -0
- package/dist/api/sessions/session_manager.d.ts +110 -0
- package/dist/api/sessions/session_manager.d.ts.map +1 -0
- package/dist/api/sessions/session_manager.js +278 -0
- package/dist/api/sessions/session_manager.js.map +1 -0
- package/dist/budget/harness/dba_harness.d.ts +36 -0
- package/dist/budget/harness/dba_harness.d.ts.map +1 -0
- package/dist/budget/harness/dba_harness.js +58 -0
- package/dist/budget/harness/dba_harness.js.map +1 -0
- package/dist/budget/impl/dba_impl.d.ts +47 -0
- package/dist/budget/impl/dba_impl.d.ts.map +1 -0
- package/dist/budget/impl/dba_impl.js +402 -0
- package/dist/budget/impl/dba_impl.js.map +1 -0
- package/dist/budget/interfaces/dba_types.d.ts +708 -0
- package/dist/budget/interfaces/dba_types.d.ts.map +1 -0
- package/dist/budget/interfaces/dba_types.js +124 -0
- package/dist/budget/interfaces/dba_types.js.map +1 -0
- package/dist/claims/evidence/capability_scope_validator.d.ts +32 -0
- package/dist/claims/evidence/capability_scope_validator.d.ts.map +1 -0
- package/dist/claims/evidence/capability_scope_validator.js +72 -0
- package/dist/claims/evidence/capability_scope_validator.js.map +1 -0
- package/dist/claims/evidence/evidence_validator.d.ts +35 -0
- package/dist/claims/evidence/evidence_validator.d.ts.map +1 -0
- package/dist/claims/evidence/evidence_validator.js +118 -0
- package/dist/claims/evidence/evidence_validator.js.map +1 -0
- package/dist/claims/harness/claim_harness.d.ts +22 -0
- package/dist/claims/harness/claim_harness.d.ts.map +1 -0
- package/dist/claims/harness/claim_harness.js +26 -0
- package/dist/claims/harness/claim_harness.js.map +1 -0
- package/dist/claims/interfaces/claim_types.d.ts +858 -0
- package/dist/claims/interfaces/claim_types.d.ts.map +1 -0
- package/dist/claims/interfaces/claim_types.js +201 -0
- package/dist/claims/interfaces/claim_types.js.map +1 -0
- package/dist/claims/migration/019_ccp_claims.d.ts +23 -0
- package/dist/claims/migration/019_ccp_claims.d.ts.map +1 -0
- package/dist/claims/migration/019_ccp_claims.js +196 -0
- package/dist/claims/migration/019_ccp_claims.js.map +1 -0
- package/dist/claims/store/claim_stores.d.ts +27 -0
- package/dist/claims/store/claim_stores.d.ts.map +1 -0
- package/dist/claims/store/claim_stores.js +1352 -0
- package/dist/claims/store/claim_stores.js.map +1 -0
- package/dist/context/harness/cgp_harness.d.ts +32 -0
- package/dist/context/harness/cgp_harness.d.ts.map +1 -0
- package/dist/context/harness/cgp_harness.js +295 -0
- package/dist/context/harness/cgp_harness.js.map +1 -0
- package/dist/context/interfaces/cgp_types.d.ts +905 -0
- package/dist/context/interfaces/cgp_types.d.ts.map +1 -0
- package/dist/context/interfaces/cgp_types.js +112 -0
- package/dist/context/interfaces/cgp_types.js.map +1 -0
- package/dist/context/stores/cgp_stores.d.ts +42 -0
- package/dist/context/stores/cgp_stores.d.ts.map +1 -0
- package/dist/context/stores/cgp_stores.js +856 -0
- package/dist/context/stores/cgp_stores.js.map +1 -0
- package/dist/execution/harness/egp_harness.d.ts +43 -0
- package/dist/execution/harness/egp_harness.d.ts.map +1 -0
- package/dist/execution/harness/egp_harness.js +54 -0
- package/dist/execution/harness/egp_harness.js.map +1 -0
- package/dist/execution/interfaces/egp_types.d.ts +1042 -0
- package/dist/execution/interfaces/egp_types.d.ts.map +1 -0
- package/dist/execution/interfaces/egp_types.js +195 -0
- package/dist/execution/interfaces/egp_types.js.map +1 -0
- package/dist/execution/stores/egp_stores.d.ts +29 -0
- package/dist/execution/stores/egp_stores.d.ts.map +1 -0
- package/dist/execution/stores/egp_stores.js +1250 -0
- package/dist/execution/stores/egp_stores.js.map +1 -0
- package/dist/execution/wiring/execution_gate.d.ts +56 -0
- package/dist/execution/wiring/execution_gate.d.ts.map +1 -0
- package/dist/execution/wiring/execution_gate.js +77 -0
- package/dist/execution/wiring/execution_gate.js.map +1 -0
- package/dist/execution/wiring/floor_enforcer.d.ts +68 -0
- package/dist/execution/wiring/floor_enforcer.d.ts.map +1 -0
- package/dist/execution/wiring/floor_enforcer.js +96 -0
- package/dist/execution/wiring/floor_enforcer.js.map +1 -0
- package/dist/execution/wiring/invocation_gate.d.ts +58 -0
- package/dist/execution/wiring/invocation_gate.d.ts.map +1 -0
- package/dist/execution/wiring/invocation_gate.js +69 -0
- package/dist/execution/wiring/invocation_gate.js.map +1 -0
- package/dist/execution/wiring/terminal_release.d.ts +56 -0
- package/dist/execution/wiring/terminal_release.d.ts.map +1 -0
- package/dist/execution/wiring/terminal_release.js +85 -0
- package/dist/execution/wiring/terminal_release.js.map +1 -0
- package/dist/governance/harness/governance_harness.d.ts +54 -0
- package/dist/governance/harness/governance_harness.d.ts.map +1 -0
- package/dist/governance/harness/governance_harness.js +60 -0
- package/dist/governance/harness/governance_harness.js.map +1 -0
- package/dist/governance/migration/012_governance_runs_traces.d.ts +21 -0
- package/dist/governance/migration/012_governance_runs_traces.d.ts.map +1 -0
- package/dist/governance/migration/012_governance_runs_traces.js +115 -0
- package/dist/governance/migration/012_governance_runs_traces.js.map +1 -0
- package/dist/governance/migration/013_governance_contracts.d.ts +18 -0
- package/dist/governance/migration/013_governance_contracts.d.ts.map +1 -0
- package/dist/governance/migration/013_governance_contracts.js +59 -0
- package/dist/governance/migration/013_governance_contracts.js.map +1 -0
- package/dist/governance/migration/014_governance_supervisor.d.ts +16 -0
- package/dist/governance/migration/014_governance_supervisor.d.ts.map +1 -0
- package/dist/governance/migration/014_governance_supervisor.js +75 -0
- package/dist/governance/migration/014_governance_supervisor.js.map +1 -0
- package/dist/governance/migration/015_governance_eval.d.ts +18 -0
- package/dist/governance/migration/015_governance_eval.d.ts.map +1 -0
- package/dist/governance/migration/015_governance_eval.js +65 -0
- package/dist/governance/migration/015_governance_eval.js.map +1 -0
- package/dist/governance/migration/016_governance_capabilities.d.ts +16 -0
- package/dist/governance/migration/016_governance_capabilities.d.ts.map +1 -0
- package/dist/governance/migration/016_governance_capabilities.js +60 -0
- package/dist/governance/migration/016_governance_capabilities.js.map +1 -0
- package/dist/governance/migration/017_governance_handoffs_idempotency.d.ts +20 -0
- package/dist/governance/migration/017_governance_handoffs_idempotency.d.ts.map +1 -0
- package/dist/governance/migration/017_governance_handoffs_idempotency.js +103 -0
- package/dist/governance/migration/017_governance_handoffs_idempotency.js.map +1 -0
- package/dist/governance/migration/018_supervisor_decision_delete_trigger.d.ts +17 -0
- package/dist/governance/migration/018_supervisor_decision_delete_trigger.d.ts.map +1 -0
- package/dist/governance/migration/018_supervisor_decision_delete_trigger.js +37 -0
- package/dist/governance/migration/018_supervisor_decision_delete_trigger.js.map +1 -0
- package/dist/governance/stores/governance_stores.d.ts +78 -0
- package/dist/governance/stores/governance_stores.d.ts.map +1 -0
- package/dist/governance/stores/governance_stores.js +1117 -0
- package/dist/governance/stores/governance_stores.js.map +1 -0
- package/dist/kernel/audit/audit_trail.d.ts +24 -0
- package/dist/kernel/audit/audit_trail.d.ts.map +1 -0
- package/dist/kernel/audit/audit_trail.js +569 -0
- package/dist/kernel/audit/audit_trail.js.map +1 -0
- package/dist/kernel/crypto/crypto_engine.d.ts +49 -0
- package/dist/kernel/crypto/crypto_engine.d.ts.map +1 -0
- package/dist/kernel/crypto/crypto_engine.js +350 -0
- package/dist/kernel/crypto/crypto_engine.js.map +1 -0
- package/dist/kernel/database/database_lifecycle.d.ts +24 -0
- package/dist/kernel/database/database_lifecycle.d.ts.map +1 -0
- package/dist/kernel/database/database_lifecycle.js +404 -0
- package/dist/kernel/database/database_lifecycle.js.map +1 -0
- package/dist/kernel/database/migrations.d.ts +21 -0
- package/dist/kernel/database/migrations.d.ts.map +1 -0
- package/dist/kernel/database/migrations.js +407 -0
- package/dist/kernel/database/migrations.js.map +1 -0
- package/dist/kernel/events/event_bus.d.ts +25 -0
- package/dist/kernel/events/event_bus.d.ts.map +1 -0
- package/dist/kernel/events/event_bus.js +302 -0
- package/dist/kernel/events/event_bus.js.map +1 -0
- package/dist/kernel/events/webhook_delivery.d.ts +90 -0
- package/dist/kernel/events/webhook_delivery.d.ts.map +1 -0
- package/dist/kernel/events/webhook_delivery.js +324 -0
- package/dist/kernel/events/webhook_delivery.js.map +1 -0
- package/dist/kernel/index.d.ts +39 -0
- package/dist/kernel/index.d.ts.map +1 -0
- package/dist/kernel/index.js +263 -0
- package/dist/kernel/index.js.map +1 -0
- package/dist/kernel/interfaces/audit.d.ts +146 -0
- package/dist/kernel/interfaces/audit.d.ts.map +1 -0
- package/dist/kernel/interfaces/audit.js +15 -0
- package/dist/kernel/interfaces/audit.js.map +1 -0
- package/dist/kernel/interfaces/capability_manifest.d.ts +104 -0
- package/dist/kernel/interfaces/capability_manifest.d.ts.map +1 -0
- package/dist/kernel/interfaces/capability_manifest.js +44 -0
- package/dist/kernel/interfaces/capability_manifest.js.map +1 -0
- package/dist/kernel/interfaces/common.d.ts +91 -0
- package/dist/kernel/interfaces/common.d.ts.map +1 -0
- package/dist/kernel/interfaces/common.js +10 -0
- package/dist/kernel/interfaces/common.js.map +1 -0
- package/dist/kernel/interfaces/crypto.d.ts +95 -0
- package/dist/kernel/interfaces/crypto.d.ts.map +1 -0
- package/dist/kernel/interfaces/crypto.js +14 -0
- package/dist/kernel/interfaces/crypto.js.map +1 -0
- package/dist/kernel/interfaces/database.d.ts +157 -0
- package/dist/kernel/interfaces/database.d.ts.map +1 -0
- package/dist/kernel/interfaces/database.js +10 -0
- package/dist/kernel/interfaces/database.js.map +1 -0
- package/dist/kernel/interfaces/eval.d.ts +93 -0
- package/dist/kernel/interfaces/eval.d.ts.map +1 -0
- package/dist/kernel/interfaces/eval.js +17 -0
- package/dist/kernel/interfaces/eval.js.map +1 -0
- package/dist/kernel/interfaces/events.d.ts +73 -0
- package/dist/kernel/interfaces/events.d.ts.map +1 -0
- package/dist/kernel/interfaces/events.js +13 -0
- package/dist/kernel/interfaces/events.js.map +1 -0
- package/dist/kernel/interfaces/governance_ids.d.ts +93 -0
- package/dist/kernel/interfaces/governance_ids.d.ts.map +1 -0
- package/dist/kernel/interfaces/governance_ids.js +18 -0
- package/dist/kernel/interfaces/governance_ids.js.map +1 -0
- package/dist/kernel/interfaces/idempotency.d.ts +143 -0
- package/dist/kernel/interfaces/idempotency.d.ts.map +1 -0
- package/dist/kernel/interfaces/idempotency.js +22 -0
- package/dist/kernel/interfaces/idempotency.js.map +1 -0
- package/dist/kernel/interfaces/index.d.ts +29 -0
- package/dist/kernel/interfaces/index.d.ts.map +1 -0
- package/dist/kernel/interfaces/index.js +9 -0
- package/dist/kernel/interfaces/index.js.map +1 -0
- package/dist/kernel/interfaces/kernel.d.ts +79 -0
- package/dist/kernel/interfaces/kernel.d.ts.map +1 -0
- package/dist/kernel/interfaces/kernel.js +13 -0
- package/dist/kernel/interfaces/kernel.js.map +1 -0
- package/dist/kernel/interfaces/lifecycle.d.ts +115 -0
- package/dist/kernel/interfaces/lifecycle.d.ts.map +1 -0
- package/dist/kernel/interfaces/lifecycle.js +53 -0
- package/dist/kernel/interfaces/lifecycle.js.map +1 -0
- package/dist/kernel/interfaces/mission_contract.d.ts +106 -0
- package/dist/kernel/interfaces/mission_contract.d.ts.map +1 -0
- package/dist/kernel/interfaces/mission_contract.js +20 -0
- package/dist/kernel/interfaces/mission_contract.js.map +1 -0
- package/dist/kernel/interfaces/namespace.d.ts +30 -0
- package/dist/kernel/interfaces/namespace.d.ts.map +1 -0
- package/dist/kernel/interfaces/namespace.js +12 -0
- package/dist/kernel/interfaces/namespace.js.map +1 -0
- package/dist/kernel/interfaces/rate_limiter.d.ts +42 -0
- package/dist/kernel/interfaces/rate_limiter.d.ts.map +1 -0
- package/dist/kernel/interfaces/rate_limiter.js +12 -0
- package/dist/kernel/interfaces/rate_limiter.js.map +1 -0
- package/dist/kernel/interfaces/rbac.d.ts +58 -0
- package/dist/kernel/interfaces/rbac.d.ts.map +1 -0
- package/dist/kernel/interfaces/rbac.js +13 -0
- package/dist/kernel/interfaces/rbac.js.map +1 -0
- package/dist/kernel/interfaces/retention.d.ts +58 -0
- package/dist/kernel/interfaces/retention.d.ts.map +1 -0
- package/dist/kernel/interfaces/retention.js +13 -0
- package/dist/kernel/interfaces/retention.js.map +1 -0
- package/dist/kernel/interfaces/run_identity.d.ts +132 -0
- package/dist/kernel/interfaces/run_identity.d.ts.map +1 -0
- package/dist/kernel/interfaces/run_identity.js +16 -0
- package/dist/kernel/interfaces/run_identity.js.map +1 -0
- package/dist/kernel/interfaces/supervisor.d.ts +175 -0
- package/dist/kernel/interfaces/supervisor.d.ts.map +1 -0
- package/dist/kernel/interfaces/supervisor.js +25 -0
- package/dist/kernel/interfaces/supervisor.js.map +1 -0
- package/dist/kernel/interfaces/tenant.d.ts +34 -0
- package/dist/kernel/interfaces/tenant.d.ts.map +1 -0
- package/dist/kernel/interfaces/tenant.js +12 -0
- package/dist/kernel/interfaces/tenant.js.map +1 -0
- package/dist/kernel/interfaces/time.d.ts +29 -0
- package/dist/kernel/interfaces/time.d.ts.map +1 -0
- package/dist/kernel/interfaces/time.js +13 -0
- package/dist/kernel/interfaces/time.js.map +1 -0
- package/dist/kernel/interfaces/trace.d.ts +264 -0
- package/dist/kernel/interfaces/trace.d.ts.map +1 -0
- package/dist/kernel/interfaces/trace.js +17 -0
- package/dist/kernel/interfaces/trace.js.map +1 -0
- package/dist/kernel/namespace/namespace_enforcer.d.ts +20 -0
- package/dist/kernel/namespace/namespace_enforcer.d.ts.map +1 -0
- package/dist/kernel/namespace/namespace_enforcer.js +91 -0
- package/dist/kernel/namespace/namespace_enforcer.js.map +1 -0
- package/dist/kernel/rate_limiter/rate_limiter.d.ts +23 -0
- package/dist/kernel/rate_limiter/rate_limiter.d.ts.map +1 -0
- package/dist/kernel/rate_limiter/rate_limiter.js +146 -0
- package/dist/kernel/rate_limiter/rate_limiter.js.map +1 -0
- package/dist/kernel/rbac/rbac_engine.d.ts +20 -0
- package/dist/kernel/rbac/rbac_engine.d.ts.map +1 -0
- package/dist/kernel/rbac/rbac_engine.js +257 -0
- package/dist/kernel/rbac/rbac_engine.js.map +1 -0
- package/dist/kernel/retention/retention_scheduler.d.ts +41 -0
- package/dist/kernel/retention/retention_scheduler.d.ts.map +1 -0
- package/dist/kernel/retention/retention_scheduler.js +218 -0
- package/dist/kernel/retention/retention_scheduler.js.map +1 -0
- package/dist/kernel/tenant/tenant_context.d.ts +22 -0
- package/dist/kernel/tenant/tenant_context.d.ts.map +1 -0
- package/dist/kernel/tenant/tenant_context.js +107 -0
- package/dist/kernel/tenant/tenant_context.js.map +1 -0
- package/dist/kernel/tenant/tenant_scope.d.ts +81 -0
- package/dist/kernel/tenant/tenant_scope.d.ts.map +1 -0
- package/dist/kernel/tenant/tenant_scope.js +168 -0
- package/dist/kernel/tenant/tenant_scope.js.map +1 -0
- package/dist/kernel/time/time_provider.d.ts +39 -0
- package/dist/kernel/time/time_provider.d.ts.map +1 -0
- package/dist/kernel/time/time_provider.js +58 -0
- package/dist/kernel/time/time_provider.js.map +1 -0
- package/dist/learning/applicator/technique_applicator.d.ts +41 -0
- package/dist/learning/applicator/technique_applicator.d.ts.map +1 -0
- package/dist/learning/applicator/technique_applicator.js +200 -0
- package/dist/learning/applicator/technique_applicator.js.map +1 -0
- package/dist/learning/cold_start/cold_start_manager.d.ts +35 -0
- package/dist/learning/cold_start/cold_start_manager.d.ts.map +1 -0
- package/dist/learning/cold_start/cold_start_manager.js +146 -0
- package/dist/learning/cold_start/cold_start_manager.js.map +1 -0
- package/dist/learning/cycle/learning_cycle_orchestrator.d.ts +45 -0
- package/dist/learning/cycle/learning_cycle_orchestrator.d.ts.map +1 -0
- package/dist/learning/cycle/learning_cycle_orchestrator.js +165 -0
- package/dist/learning/cycle/learning_cycle_orchestrator.js.map +1 -0
- package/dist/learning/extractor/technique_extractor.d.ts +48 -0
- package/dist/learning/extractor/technique_extractor.d.ts.map +1 -0
- package/dist/learning/extractor/technique_extractor.js +357 -0
- package/dist/learning/extractor/technique_extractor.js.map +1 -0
- package/dist/learning/harness/learning_harness.d.ts +26 -0
- package/dist/learning/harness/learning_harness.d.ts.map +1 -0
- package/dist/learning/harness/learning_harness.js +58 -0
- package/dist/learning/harness/learning_harness.js.map +1 -0
- package/dist/learning/interfaces/index.d.ts +7 -0
- package/dist/learning/interfaces/index.d.ts.map +1 -0
- package/dist/learning/interfaces/index.js +10 -0
- package/dist/learning/interfaces/index.js.map +1 -0
- package/dist/learning/interfaces/learning_types.d.ts +398 -0
- package/dist/learning/interfaces/learning_types.d.ts.map +1 -0
- package/dist/learning/interfaces/learning_types.js +69 -0
- package/dist/learning/interfaces/learning_types.js.map +1 -0
- package/dist/learning/migration/007_learning_techniques.d.ts +23 -0
- package/dist/learning/migration/007_learning_techniques.d.ts.map +1 -0
- package/dist/learning/migration/007_learning_techniques.js +86 -0
- package/dist/learning/migration/007_learning_techniques.js.map +1 -0
- package/dist/learning/migration/008_learning_outcomes.d.ts +23 -0
- package/dist/learning/migration/008_learning_outcomes.d.ts.map +1 -0
- package/dist/learning/migration/008_learning_outcomes.js +79 -0
- package/dist/learning/migration/008_learning_outcomes.js.map +1 -0
- package/dist/learning/migration/009_learning_applications.d.ts +25 -0
- package/dist/learning/migration/009_learning_applications.d.ts.map +1 -0
- package/dist/learning/migration/009_learning_applications.js +82 -0
- package/dist/learning/migration/009_learning_applications.js.map +1 -0
- package/dist/learning/migration/010_learning_quarantine.d.ts +22 -0
- package/dist/learning/migration/010_learning_quarantine.d.ts.map +1 -0
- package/dist/learning/migration/010_learning_quarantine.js +78 -0
- package/dist/learning/migration/010_learning_quarantine.js.map +1 -0
- package/dist/learning/migration/011_learning_transfers.d.ts +22 -0
- package/dist/learning/migration/011_learning_transfers.d.ts.map +1 -0
- package/dist/learning/migration/011_learning_transfers.js +77 -0
- package/dist/learning/migration/011_learning_transfers.js.map +1 -0
- package/dist/learning/quarantine/quarantine_manager.d.ts +34 -0
- package/dist/learning/quarantine/quarantine_manager.d.ts.map +1 -0
- package/dist/learning/quarantine/quarantine_manager.js +200 -0
- package/dist/learning/quarantine/quarantine_manager.js.map +1 -0
- package/dist/learning/retirement/retirement_evaluator.d.ts +35 -0
- package/dist/learning/retirement/retirement_evaluator.d.ts.map +1 -0
- package/dist/learning/retirement/retirement_evaluator.js +131 -0
- package/dist/learning/retirement/retirement_evaluator.js.map +1 -0
- package/dist/learning/specialization/over_specialization_detector.d.ts +32 -0
- package/dist/learning/specialization/over_specialization_detector.d.ts.map +1 -0
- package/dist/learning/specialization/over_specialization_detector.js +105 -0
- package/dist/learning/specialization/over_specialization_detector.js.map +1 -0
- package/dist/learning/store/technique_store.d.ts +22 -0
- package/dist/learning/store/technique_store.d.ts.map +1 -0
- package/dist/learning/store/technique_store.js +369 -0
- package/dist/learning/store/technique_store.js.map +1 -0
- package/dist/learning/tracker/effectiveness_tracker.d.ts +26 -0
- package/dist/learning/tracker/effectiveness_tracker.d.ts.map +1 -0
- package/dist/learning/tracker/effectiveness_tracker.js +158 -0
- package/dist/learning/tracker/effectiveness_tracker.js.map +1 -0
- package/dist/learning/transfer/cross_agent_transfer.d.ts +35 -0
- package/dist/learning/transfer/cross_agent_transfer.d.ts.map +1 -0
- package/dist/learning/transfer/cross_agent_transfer.js +245 -0
- package/dist/learning/transfer/cross_agent_transfer.js.map +1 -0
- package/dist/orchestration/artifacts/artifact_store.d.ts +19 -0
- package/dist/orchestration/artifacts/artifact_store.d.ts.map +1 -0
- package/dist/orchestration/artifacts/artifact_store.js +213 -0
- package/dist/orchestration/artifacts/artifact_store.js.map +1 -0
- package/dist/orchestration/artifacts/cascade_walker.d.ts +39 -0
- package/dist/orchestration/artifacts/cascade_walker.d.ts.map +1 -0
- package/dist/orchestration/artifacts/cascade_walker.js +107 -0
- package/dist/orchestration/artifacts/cascade_walker.js.map +1 -0
- package/dist/orchestration/budget/budget_governance.d.ts +20 -0
- package/dist/orchestration/budget/budget_governance.d.ts.map +1 -0
- package/dist/orchestration/budget/budget_governance.js +182 -0
- package/dist/orchestration/budget/budget_governance.js.map +1 -0
- package/dist/orchestration/checkpoints/checkpoint_coordinator.d.ts +22 -0
- package/dist/orchestration/checkpoints/checkpoint_coordinator.d.ts.map +1 -0
- package/dist/orchestration/checkpoints/checkpoint_coordinator.js +252 -0
- package/dist/orchestration/checkpoints/checkpoint_coordinator.js.map +1 -0
- package/dist/orchestration/checkpoints/drift_engine.d.ts +52 -0
- package/dist/orchestration/checkpoints/drift_engine.d.ts.map +1 -0
- package/dist/orchestration/checkpoints/drift_engine.js +126 -0
- package/dist/orchestration/checkpoints/drift_engine.js.map +1 -0
- package/dist/orchestration/compaction/bounded_cognition.d.ts +22 -0
- package/dist/orchestration/compaction/bounded_cognition.d.ts.map +1 -0
- package/dist/orchestration/compaction/bounded_cognition.js +124 -0
- package/dist/orchestration/compaction/bounded_cognition.js.map +1 -0
- package/dist/orchestration/conversation/conversation_manager.d.ts +25 -0
- package/dist/orchestration/conversation/conversation_manager.d.ts.map +1 -0
- package/dist/orchestration/conversation/conversation_manager.js +260 -0
- package/dist/orchestration/conversation/conversation_manager.js.map +1 -0
- package/dist/orchestration/events/event_propagation.d.ts +20 -0
- package/dist/orchestration/events/event_propagation.d.ts.map +1 -0
- package/dist/orchestration/events/event_propagation.js +160 -0
- package/dist/orchestration/events/event_propagation.js.map +1 -0
- package/dist/orchestration/index.d.ts +28 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +147 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/interfaces/orchestration.d.ts +494 -0
- package/dist/orchestration/interfaces/orchestration.d.ts.map +1 -0
- package/dist/orchestration/interfaces/orchestration.js +64 -0
- package/dist/orchestration/interfaces/orchestration.js.map +1 -0
- package/dist/orchestration/migration/003_orchestration.d.ts +27 -0
- package/dist/orchestration/migration/003_orchestration.d.ts.map +1 -0
- package/dist/orchestration/migration/003_orchestration.js +336 -0
- package/dist/orchestration/migration/003_orchestration.js.map +1 -0
- package/dist/orchestration/migration/004_tenant_isolation.d.ts +22 -0
- package/dist/orchestration/migration/004_tenant_isolation.d.ts.map +1 -0
- package/dist/orchestration/migration/004_tenant_isolation.js +179 -0
- package/dist/orchestration/migration/004_tenant_isolation.js.map +1 -0
- package/dist/orchestration/migration/005_immutability_triggers.d.ts +30 -0
- package/dist/orchestration/migration/005_immutability_triggers.d.ts.map +1 -0
- package/dist/orchestration/migration/005_immutability_triggers.js +93 -0
- package/dist/orchestration/migration/005_immutability_triggers.js.map +1 -0
- package/dist/orchestration/migration/006_audit_tombstone.d.ts +26 -0
- package/dist/orchestration/migration/006_audit_tombstone.d.ts.map +1 -0
- package/dist/orchestration/migration/006_audit_tombstone.js +71 -0
- package/dist/orchestration/migration/006_audit_tombstone.js.map +1 -0
- package/dist/orchestration/missions/mission_recovery.d.ts +60 -0
- package/dist/orchestration/missions/mission_recovery.d.ts.map +1 -0
- package/dist/orchestration/missions/mission_recovery.js +251 -0
- package/dist/orchestration/missions/mission_recovery.js.map +1 -0
- package/dist/orchestration/missions/mission_store.d.ts +16 -0
- package/dist/orchestration/missions/mission_store.d.ts.map +1 -0
- package/dist/orchestration/missions/mission_store.js +280 -0
- package/dist/orchestration/missions/mission_store.js.map +1 -0
- package/dist/orchestration/syscalls/create_artifact.d.ts +13 -0
- package/dist/orchestration/syscalls/create_artifact.d.ts.map +1 -0
- package/dist/orchestration/syscalls/create_artifact.js +23 -0
- package/dist/orchestration/syscalls/create_artifact.js.map +1 -0
- package/dist/orchestration/syscalls/emit_event.d.ts +13 -0
- package/dist/orchestration/syscalls/emit_event.d.ts.map +1 -0
- package/dist/orchestration/syscalls/emit_event.js +13 -0
- package/dist/orchestration/syscalls/emit_event.js.map +1 -0
- package/dist/orchestration/syscalls/propose_mission.d.ts +14 -0
- package/dist/orchestration/syscalls/propose_mission.d.ts.map +1 -0
- package/dist/orchestration/syscalls/propose_mission.js +27 -0
- package/dist/orchestration/syscalls/propose_mission.js.map +1 -0
- package/dist/orchestration/syscalls/propose_task_execution.d.ts +13 -0
- package/dist/orchestration/syscalls/propose_task_execution.d.ts.map +1 -0
- package/dist/orchestration/syscalls/propose_task_execution.js +84 -0
- package/dist/orchestration/syscalls/propose_task_execution.js.map +1 -0
- package/dist/orchestration/syscalls/propose_task_graph.d.ts +13 -0
- package/dist/orchestration/syscalls/propose_task_graph.d.ts.map +1 -0
- package/dist/orchestration/syscalls/propose_task_graph.js +22 -0
- package/dist/orchestration/syscalls/propose_task_graph.js.map +1 -0
- package/dist/orchestration/syscalls/read_artifact.d.ts +14 -0
- package/dist/orchestration/syscalls/read_artifact.d.ts.map +1 -0
- package/dist/orchestration/syscalls/read_artifact.js +31 -0
- package/dist/orchestration/syscalls/read_artifact.js.map +1 -0
- package/dist/orchestration/syscalls/request_budget.d.ts +14 -0
- package/dist/orchestration/syscalls/request_budget.d.ts.map +1 -0
- package/dist/orchestration/syscalls/request_budget.js +46 -0
- package/dist/orchestration/syscalls/request_budget.js.map +1 -0
- package/dist/orchestration/syscalls/request_capability.d.ts +13 -0
- package/dist/orchestration/syscalls/request_capability.d.ts.map +1 -0
- package/dist/orchestration/syscalls/request_capability.js +136 -0
- package/dist/orchestration/syscalls/request_capability.js.map +1 -0
- package/dist/orchestration/syscalls/respond_checkpoint.d.ts +12 -0
- package/dist/orchestration/syscalls/respond_checkpoint.d.ts.map +1 -0
- package/dist/orchestration/syscalls/respond_checkpoint.js +12 -0
- package/dist/orchestration/syscalls/respond_checkpoint.js.map +1 -0
- package/dist/orchestration/syscalls/submit_result.d.ts +15 -0
- package/dist/orchestration/syscalls/submit_result.d.ts.map +1 -0
- package/dist/orchestration/syscalls/submit_result.js +97 -0
- package/dist/orchestration/syscalls/submit_result.js.map +1 -0
- package/dist/orchestration/tasks/task_graph.d.ts +26 -0
- package/dist/orchestration/tasks/task_graph.d.ts.map +1 -0
- package/dist/orchestration/tasks/task_graph.js +204 -0
- package/dist/orchestration/tasks/task_graph.js.map +1 -0
- package/dist/orchestration/tasks/task_store.d.ts +18 -0
- package/dist/orchestration/tasks/task_store.d.ts.map +1 -0
- package/dist/orchestration/tasks/task_store.js +99 -0
- package/dist/orchestration/tasks/task_store.js.map +1 -0
- package/dist/reference-agent/artifact_manager.d.ts +119 -0
- package/dist/reference-agent/artifact_manager.d.ts.map +1 -0
- package/dist/reference-agent/artifact_manager.js +149 -0
- package/dist/reference-agent/artifact_manager.js.map +1 -0
- package/dist/reference-agent/checkpoint_handler.d.ts +186 -0
- package/dist/reference-agent/checkpoint_handler.d.ts.map +1 -0
- package/dist/reference-agent/checkpoint_handler.js +423 -0
- package/dist/reference-agent/checkpoint_handler.js.map +1 -0
- package/dist/reference-agent/index.d.ts +43 -0
- package/dist/reference-agent/index.d.ts.map +1 -0
- package/dist/reference-agent/index.js +53 -0
- package/dist/reference-agent/index.js.map +1 -0
- package/dist/reference-agent/mission_planner.d.ts +163 -0
- package/dist/reference-agent/mission_planner.d.ts.map +1 -0
- package/dist/reference-agent/mission_planner.js +375 -0
- package/dist/reference-agent/mission_planner.js.map +1 -0
- package/dist/reference-agent/reference_agent.d.ts +130 -0
- package/dist/reference-agent/reference_agent.d.ts.map +1 -0
- package/dist/reference-agent/reference_agent.js +360 -0
- package/dist/reference-agent/reference_agent.js.map +1 -0
- package/dist/reference-agent/reference_agent.types.d.ts +199 -0
- package/dist/reference-agent/reference_agent.types.d.ts.map +1 -0
- package/dist/reference-agent/reference_agent.types.js +59 -0
- package/dist/reference-agent/reference_agent.types.js.map +1 -0
- package/dist/reference-agent/result_aggregator.d.ts +107 -0
- package/dist/reference-agent/result_aggregator.d.ts.map +1 -0
- package/dist/reference-agent/result_aggregator.js +219 -0
- package/dist/reference-agent/result_aggregator.js.map +1 -0
- package/dist/reference-agent/system_call_client.d.ts +106 -0
- package/dist/reference-agent/system_call_client.d.ts.map +1 -0
- package/dist/reference-agent/system_call_client.js +231 -0
- package/dist/reference-agent/system_call_client.js.map +1 -0
- package/dist/reference-agent/task_executor.d.ts +108 -0
- package/dist/reference-agent/task_executor.d.ts.map +1 -0
- package/dist/reference-agent/task_executor.js +249 -0
- package/dist/reference-agent/task_executor.js.map +1 -0
- package/dist/substrate/accounting/resource_accounting.d.ts +52 -0
- package/dist/substrate/accounting/resource_accounting.d.ts.map +1 -0
- package/dist/substrate/accounting/resource_accounting.js +200 -0
- package/dist/substrate/accounting/resource_accounting.js.map +1 -0
- package/dist/substrate/adapters/capability_registry.d.ts +28 -0
- package/dist/substrate/adapters/capability_registry.d.ts.map +1 -0
- package/dist/substrate/adapters/capability_registry.js +196 -0
- package/dist/substrate/adapters/capability_registry.js.map +1 -0
- package/dist/substrate/gateway/llm_gateway.d.ts +68 -0
- package/dist/substrate/gateway/llm_gateway.d.ts.map +1 -0
- package/dist/substrate/gateway/llm_gateway.js +442 -0
- package/dist/substrate/gateway/llm_gateway.js.map +1 -0
- package/dist/substrate/heartbeat/heartbeat_monitor.d.ts +40 -0
- package/dist/substrate/heartbeat/heartbeat_monitor.d.ts.map +1 -0
- package/dist/substrate/heartbeat/heartbeat_monitor.js +170 -0
- package/dist/substrate/heartbeat/heartbeat_monitor.js.map +1 -0
- package/dist/substrate/index.d.ts +59 -0
- package/dist/substrate/index.d.ts.map +1 -0
- package/dist/substrate/index.js +143 -0
- package/dist/substrate/index.js.map +1 -0
- package/dist/substrate/interfaces/substrate.d.ts +486 -0
- package/dist/substrate/interfaces/substrate.d.ts.map +1 -0
- package/dist/substrate/interfaces/substrate.js +14 -0
- package/dist/substrate/interfaces/substrate.js.map +1 -0
- package/dist/substrate/migration/002_substrate.d.ts +24 -0
- package/dist/substrate/migration/002_substrate.d.ts.map +1 -0
- package/dist/substrate/migration/002_substrate.js +188 -0
- package/dist/substrate/migration/002_substrate.js.map +1 -0
- package/dist/substrate/migration/022_transport_deliberation.d.ts +31 -0
- package/dist/substrate/migration/022_transport_deliberation.d.ts.map +1 -0
- package/dist/substrate/migration/022_transport_deliberation.js +77 -0
- package/dist/substrate/migration/022_transport_deliberation.js.map +1 -0
- package/dist/substrate/replay/replay_engine.d.ts +65 -0
- package/dist/substrate/replay/replay_engine.d.ts.map +1 -0
- package/dist/substrate/replay/replay_engine.js +316 -0
- package/dist/substrate/replay/replay_engine.js.map +1 -0
- package/dist/substrate/scheduler/task_scheduler.d.ts +38 -0
- package/dist/substrate/scheduler/task_scheduler.d.ts.map +1 -0
- package/dist/substrate/scheduler/task_scheduler.js +486 -0
- package/dist/substrate/scheduler/task_scheduler.js.map +1 -0
- package/dist/substrate/transport/adapters/anthropic_adapter.d.ts +57 -0
- package/dist/substrate/transport/adapters/anthropic_adapter.d.ts.map +1 -0
- package/dist/substrate/transport/adapters/anthropic_adapter.js +455 -0
- package/dist/substrate/transport/adapters/anthropic_adapter.js.map +1 -0
- package/dist/substrate/transport/adapters/gemini_adapter.d.ts +86 -0
- package/dist/substrate/transport/adapters/gemini_adapter.d.ts.map +1 -0
- package/dist/substrate/transport/adapters/gemini_adapter.js +456 -0
- package/dist/substrate/transport/adapters/gemini_adapter.js.map +1 -0
- package/dist/substrate/transport/adapters/groq_adapter.d.ts +50 -0
- package/dist/substrate/transport/adapters/groq_adapter.d.ts.map +1 -0
- package/dist/substrate/transport/adapters/groq_adapter.js +179 -0
- package/dist/substrate/transport/adapters/groq_adapter.js.map +1 -0
- package/dist/substrate/transport/adapters/mistral_adapter.d.ts +50 -0
- package/dist/substrate/transport/adapters/mistral_adapter.d.ts.map +1 -0
- package/dist/substrate/transport/adapters/mistral_adapter.js +179 -0
- package/dist/substrate/transport/adapters/mistral_adapter.js.map +1 -0
- package/dist/substrate/transport/adapters/ollama_adapter.d.ts +66 -0
- package/dist/substrate/transport/adapters/ollama_adapter.d.ts.map +1 -0
- package/dist/substrate/transport/adapters/ollama_adapter.js +347 -0
- package/dist/substrate/transport/adapters/ollama_adapter.js.map +1 -0
- package/dist/substrate/transport/adapters/openai_adapter.d.ts +68 -0
- package/dist/substrate/transport/adapters/openai_adapter.d.ts.map +1 -0
- package/dist/substrate/transport/adapters/openai_adapter.js +439 -0
- package/dist/substrate/transport/adapters/openai_adapter.js.map +1 -0
- package/dist/substrate/transport/adapters/openai_compat.d.ts +64 -0
- package/dist/substrate/transport/adapters/openai_compat.d.ts.map +1 -0
- package/dist/substrate/transport/adapters/openai_compat.js +326 -0
- package/dist/substrate/transport/adapters/openai_compat.js.map +1 -0
- package/dist/substrate/transport/index.d.ts +17 -0
- package/dist/substrate/transport/index.d.ts.map +1 -0
- package/dist/substrate/transport/index.js +25 -0
- package/dist/substrate/transport/index.js.map +1 -0
- package/dist/substrate/transport/stream_parser.d.ts +69 -0
- package/dist/substrate/transport/stream_parser.d.ts.map +1 -0
- package/dist/substrate/transport/stream_parser.js +280 -0
- package/dist/substrate/transport/stream_parser.js.map +1 -0
- package/dist/substrate/transport/transport_engine.d.ts +53 -0
- package/dist/substrate/transport/transport_engine.d.ts.map +1 -0
- package/dist/substrate/transport/transport_engine.js +444 -0
- package/dist/substrate/transport/transport_engine.js.map +1 -0
- package/dist/substrate/transport/transport_types.d.ts +207 -0
- package/dist/substrate/transport/transport_types.d.ts.map +1 -0
- package/dist/substrate/transport/transport_types.js +13 -0
- package/dist/substrate/transport/transport_types.js.map +1 -0
- package/dist/substrate/workers/worker_runtime.d.ts +40 -0
- package/dist/substrate/workers/worker_runtime.d.ts.map +1 -0
- package/dist/substrate/workers/worker_runtime.js +294 -0
- package/dist/substrate/workers/worker_runtime.js.map +1 -0
- package/dist/techniques/harness/tgp_harness.d.ts +39 -0
- package/dist/techniques/harness/tgp_harness.d.ts.map +1 -0
- package/dist/techniques/harness/tgp_harness.js +49 -0
- package/dist/techniques/harness/tgp_harness.js.map +1 -0
- package/dist/techniques/interfaces/tgp_types.d.ts +646 -0
- package/dist/techniques/interfaces/tgp_types.d.ts.map +1 -0
- package/dist/techniques/interfaces/tgp_types.js +160 -0
- package/dist/techniques/interfaces/tgp_types.js.map +1 -0
- package/dist/techniques/migration/020_tgp_governance.d.ts +36 -0
- package/dist/techniques/migration/020_tgp_governance.d.ts.map +1 -0
- package/dist/techniques/migration/020_tgp_governance.js +249 -0
- package/dist/techniques/migration/020_tgp_governance.js.map +1 -0
- package/dist/techniques/store/tgp_stores.d.ts +36 -0
- package/dist/techniques/store/tgp_stores.d.ts.map +1 -0
- package/dist/techniques/store/tgp_stores.js +854 -0
- package/dist/techniques/store/tgp_stores.js.map +1 -0
- package/dist/working-memory/harness/wmp_harness.d.ts +43 -0
- package/dist/working-memory/harness/wmp_harness.d.ts.map +1 -0
- package/dist/working-memory/harness/wmp_harness.js +81 -0
- package/dist/working-memory/harness/wmp_harness.js.map +1 -0
- package/dist/working-memory/interfaces/wmp_types.d.ts +635 -0
- package/dist/working-memory/interfaces/wmp_types.d.ts.map +1 -0
- package/dist/working-memory/interfaces/wmp_types.js +144 -0
- package/dist/working-memory/interfaces/wmp_types.js.map +1 -0
- package/dist/working-memory/migration/021_wmp.d.ts +21 -0
- package/dist/working-memory/migration/021_wmp.d.ts.map +1 -0
- package/dist/working-memory/migration/021_wmp.js +139 -0
- package/dist/working-memory/migration/021_wmp.js.map +1 -0
- package/dist/working-memory/stores/wmp_stores.d.ts +28 -0
- package/dist/working-memory/stores/wmp_stores.d.ts.map +1 -0
- package/dist/working-memory/stores/wmp_stores.js +754 -0
- package/dist/working-memory/stores/wmp_stores.js.map +1 -0
- 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
|