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,324 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook delivery module — async HTTP delivery with HMAC-SHA256 signing.
|
|
3
|
+
* S ref: IP-6 (Webhook delivery with at-least-once semantics, max 3 retries)
|
|
4
|
+
*
|
|
5
|
+
* Phase: Sprint 5 (Performance & Events)
|
|
6
|
+
* Implements: Real HTTP delivery for webhook subscriptions, replacing the
|
|
7
|
+
* placeholder in event_bus.ts processWebhooks().
|
|
8
|
+
*
|
|
9
|
+
* This module is STANDALONE — it does not modify the EventBus interface (frozen zone).
|
|
10
|
+
* It queries pending deliveries from obs_webhook_deliveries, makes HTTP calls with
|
|
11
|
+
* HMAC-SHA256 signatures, and updates delivery status in the database.
|
|
12
|
+
*
|
|
13
|
+
* Security requirements:
|
|
14
|
+
* - HMAC-SHA256 via createHmac('sha256', secret).update(body).digest('hex')
|
|
15
|
+
* - X-Limen-Signature header on every delivery
|
|
16
|
+
* - AbortSignal.timeout(5000) for 5-second deadline per delivery
|
|
17
|
+
* - Exponential backoff: Math.pow(2, attempt) * 10 seconds
|
|
18
|
+
* - Max 3 retries (schema default: max_attempts = 3)
|
|
19
|
+
* - Response status captured in obs_webhook_deliveries.response_status
|
|
20
|
+
* - Error message captured (webhook secrets NEVER in error messages)
|
|
21
|
+
* - URL validation: must start with 'https://' (no http, no localhost)
|
|
22
|
+
*
|
|
23
|
+
* Invariants enforced: IP-6 (at-least-once delivery)
|
|
24
|
+
* Failure modes defended: FM-06 (external endpoint unavailability)
|
|
25
|
+
*/
|
|
26
|
+
import { createHmac } from 'node:crypto';
|
|
27
|
+
// ============================================================================
|
|
28
|
+
// URL Validation
|
|
29
|
+
// ============================================================================
|
|
30
|
+
/**
|
|
31
|
+
* IP-6: Validate webhook URL. Must use HTTPS in production.
|
|
32
|
+
* Rejects http://, localhost, and non-URL strings.
|
|
33
|
+
*
|
|
34
|
+
* @param url - URL to validate
|
|
35
|
+
* @returns true if URL is safe for webhook delivery
|
|
36
|
+
*/
|
|
37
|
+
export function isValidWebhookUrl(url) {
|
|
38
|
+
if (!url.startsWith('https://'))
|
|
39
|
+
return false;
|
|
40
|
+
try {
|
|
41
|
+
const parsed = new URL(url);
|
|
42
|
+
// Strip brackets from IPv6 hostnames (Node URL parser includes them)
|
|
43
|
+
const hostname = parsed.hostname.toLowerCase().replace(/^\[|\]$/g, '');
|
|
44
|
+
// F-S5-001 FIX: Reject localhost, loopback (IPv4 + IPv6), and 0.0.0.0
|
|
45
|
+
if (hostname === 'localhost' ||
|
|
46
|
+
hostname === '127.0.0.1' ||
|
|
47
|
+
hostname === '::1' ||
|
|
48
|
+
hostname === '0.0.0.0') {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
// F-S5-002 FIX: Reject RFC 1918 private ranges + link-local + AWS metadata
|
|
52
|
+
// 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16
|
|
53
|
+
if (hostname.startsWith('10.') ||
|
|
54
|
+
hostname.startsWith('192.168.') ||
|
|
55
|
+
hostname.startsWith('169.254.') ||
|
|
56
|
+
isInRange172(hostname)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if an IPv4 hostname falls in 172.16.0.0/12 (172.16.x.x - 172.31.x.x).
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
69
|
+
function isInRange172(hostname) {
|
|
70
|
+
if (!hostname.startsWith('172.'))
|
|
71
|
+
return false;
|
|
72
|
+
const parts = hostname.split('.');
|
|
73
|
+
if (parts.length !== 4)
|
|
74
|
+
return false;
|
|
75
|
+
const second = parseInt(parts[1], 10);
|
|
76
|
+
return second >= 16 && second <= 31;
|
|
77
|
+
}
|
|
78
|
+
// ============================================================================
|
|
79
|
+
// HMAC Signature
|
|
80
|
+
// ============================================================================
|
|
81
|
+
/**
|
|
82
|
+
* IP-6: Compute HMAC-SHA256 signature for a webhook payload.
|
|
83
|
+
*
|
|
84
|
+
* @param secret - Webhook secret (plaintext)
|
|
85
|
+
* @param body - JSON payload body
|
|
86
|
+
* @returns Hex-encoded HMAC-SHA256 signature
|
|
87
|
+
*/
|
|
88
|
+
export function computeWebhookSignature(secret, body) {
|
|
89
|
+
return createHmac('sha256', secret).update(body).digest('hex');
|
|
90
|
+
}
|
|
91
|
+
// ============================================================================
|
|
92
|
+
// Delivery Engine
|
|
93
|
+
// ============================================================================
|
|
94
|
+
/**
|
|
95
|
+
* IP-6: Deliver pending webhooks via HTTP POST.
|
|
96
|
+
*
|
|
97
|
+
* Queries obs_webhook_deliveries for pending/failed deliveries, makes HTTP calls
|
|
98
|
+
* with HMAC-SHA256 signed payloads, and updates delivery status.
|
|
99
|
+
*
|
|
100
|
+
* This function is ASYNC and is called separately from the synchronous
|
|
101
|
+
* EventBus.processWebhooks(). It handles the actual HTTP transport.
|
|
102
|
+
*
|
|
103
|
+
* @param conn - Database connection
|
|
104
|
+
* @param encryption - Optional encryption for decrypting webhook secrets
|
|
105
|
+
* @param time - TimeProvider for timestamps (Hard Stop #7)
|
|
106
|
+
* @param batchSize - Maximum deliveries to process per call (default: 100)
|
|
107
|
+
* @returns WebhookDeliveryResult with delivery statistics
|
|
108
|
+
*/
|
|
109
|
+
export async function deliverWebhooks(conn, encryption, time, batchSize = 100) {
|
|
110
|
+
const clock = time ?? { nowISO: () => new Date().toISOString(), nowMs: () => Date.now() }; // clock-exempt: fallback only
|
|
111
|
+
let delivered = 0;
|
|
112
|
+
let failed = 0;
|
|
113
|
+
let exhausted = 0;
|
|
114
|
+
let skipped = 0;
|
|
115
|
+
const attempts = [];
|
|
116
|
+
// Query pending deliveries
|
|
117
|
+
const pendingDeliveries = conn.query(`SELECT id, subscription_id, event_id, attempts, max_attempts
|
|
118
|
+
FROM obs_webhook_deliveries
|
|
119
|
+
WHERE status IN ('pending', 'failed')
|
|
120
|
+
AND (next_retry_at IS NULL OR next_retry_at <= ?)
|
|
121
|
+
ORDER BY created_at ASC LIMIT ?`, [clock.nowISO(), batchSize]);
|
|
122
|
+
// Process each delivery
|
|
123
|
+
const deliveryPromises = pendingDeliveries.map(async (delivery) => {
|
|
124
|
+
return deliverSingle(conn, delivery, encryption, clock);
|
|
125
|
+
});
|
|
126
|
+
// Execute deliveries with Promise.allSettled for fault isolation
|
|
127
|
+
const results = await Promise.allSettled(deliveryPromises);
|
|
128
|
+
for (const result of results) {
|
|
129
|
+
if (result.status === 'fulfilled') {
|
|
130
|
+
const attempt = result.value;
|
|
131
|
+
attempts.push(attempt);
|
|
132
|
+
switch (attempt.status) {
|
|
133
|
+
case 'delivered':
|
|
134
|
+
delivered++;
|
|
135
|
+
break;
|
|
136
|
+
case 'failed':
|
|
137
|
+
failed++;
|
|
138
|
+
break;
|
|
139
|
+
case 'exhausted':
|
|
140
|
+
exhausted++;
|
|
141
|
+
break;
|
|
142
|
+
case 'skipped':
|
|
143
|
+
skipped++;
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
// Promise rejection — should not happen with our error handling,
|
|
149
|
+
// but count as skipped to avoid losing visibility
|
|
150
|
+
skipped++;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return { delivered, failed, exhausted, skipped, attempts };
|
|
154
|
+
}
|
|
155
|
+
// ============================================================================
|
|
156
|
+
// Single Delivery
|
|
157
|
+
// ============================================================================
|
|
158
|
+
/**
|
|
159
|
+
* Attempt delivery of a single webhook.
|
|
160
|
+
*
|
|
161
|
+
* @internal
|
|
162
|
+
*/
|
|
163
|
+
async function deliverSingle(conn, delivery, encryption, clock) {
|
|
164
|
+
// 1. Get subscription config
|
|
165
|
+
const sub = conn.get(`SELECT handler_config FROM obs_event_subscriptions WHERE id = ?`, [delivery.subscription_id]);
|
|
166
|
+
if (!sub) {
|
|
167
|
+
// Subscription deleted — mark exhausted
|
|
168
|
+
conn.run(`UPDATE obs_webhook_deliveries SET status = 'exhausted', last_attempt_at = ?
|
|
169
|
+
WHERE id = ?`, [clock.nowISO(), delivery.id]);
|
|
170
|
+
return {
|
|
171
|
+
deliveryId: delivery.id,
|
|
172
|
+
subscriptionId: delivery.subscription_id,
|
|
173
|
+
eventId: delivery.event_id,
|
|
174
|
+
status: 'skipped',
|
|
175
|
+
errorMessage: 'Subscription not found',
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
const config = JSON.parse(sub.handler_config);
|
|
179
|
+
// 2. Validate URL
|
|
180
|
+
if (!isValidWebhookUrl(config.url)) {
|
|
181
|
+
conn.run(`UPDATE obs_webhook_deliveries SET status = 'exhausted', last_attempt_at = ?,
|
|
182
|
+
error_message = 'Invalid webhook URL: must use HTTPS'
|
|
183
|
+
WHERE id = ?`, [clock.nowISO(), delivery.id]);
|
|
184
|
+
return {
|
|
185
|
+
deliveryId: delivery.id,
|
|
186
|
+
subscriptionId: delivery.subscription_id,
|
|
187
|
+
eventId: delivery.event_id,
|
|
188
|
+
status: 'exhausted',
|
|
189
|
+
errorMessage: 'Invalid webhook URL: must use HTTPS',
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
// 3. Decrypt secret if encrypted
|
|
193
|
+
let webhookSecret;
|
|
194
|
+
try {
|
|
195
|
+
webhookSecret = config.encrypted && encryption
|
|
196
|
+
? encryption.decrypt(config.secret)
|
|
197
|
+
: config.secret;
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
// Decryption failure — do NOT include secret in error
|
|
201
|
+
conn.run(`UPDATE obs_webhook_deliveries SET status = 'exhausted', last_attempt_at = ?,
|
|
202
|
+
error_message = 'Webhook secret decryption failed'
|
|
203
|
+
WHERE id = ?`, [clock.nowISO(), delivery.id]);
|
|
204
|
+
return {
|
|
205
|
+
deliveryId: delivery.id,
|
|
206
|
+
subscriptionId: delivery.subscription_id,
|
|
207
|
+
eventId: delivery.event_id,
|
|
208
|
+
status: 'exhausted',
|
|
209
|
+
errorMessage: 'Webhook secret decryption failed',
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
// 4. Get event payload
|
|
213
|
+
const event = conn.get(`SELECT id, type, scope, payload, timestamp FROM obs_events WHERE id = ?`, [delivery.event_id]);
|
|
214
|
+
if (!event) {
|
|
215
|
+
conn.run(`UPDATE obs_webhook_deliveries SET status = 'exhausted', last_attempt_at = ?
|
|
216
|
+
WHERE id = ?`, [clock.nowISO(), delivery.id]);
|
|
217
|
+
return {
|
|
218
|
+
deliveryId: delivery.id,
|
|
219
|
+
subscriptionId: delivery.subscription_id,
|
|
220
|
+
eventId: delivery.event_id,
|
|
221
|
+
status: 'skipped',
|
|
222
|
+
errorMessage: 'Event not found',
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
// 5. Build payload
|
|
226
|
+
const eventPayload = JSON.stringify({
|
|
227
|
+
id: event.id,
|
|
228
|
+
type: event.type,
|
|
229
|
+
scope: event.scope,
|
|
230
|
+
payload: JSON.parse(event.payload),
|
|
231
|
+
timestamp: event.timestamp,
|
|
232
|
+
});
|
|
233
|
+
// 6. Compute HMAC-SHA256 signature
|
|
234
|
+
const signature = computeWebhookSignature(webhookSecret, eventPayload);
|
|
235
|
+
// 7. Attempt HTTP delivery
|
|
236
|
+
const newAttempts = delivery.attempts + 1;
|
|
237
|
+
const nowISO = clock.nowISO();
|
|
238
|
+
try {
|
|
239
|
+
const response = await fetch(config.url, {
|
|
240
|
+
method: 'POST',
|
|
241
|
+
headers: {
|
|
242
|
+
'Content-Type': 'application/json',
|
|
243
|
+
'X-Limen-Signature': signature,
|
|
244
|
+
'X-Limen-Event-Id': event.id,
|
|
245
|
+
'X-Limen-Event-Type': event.type,
|
|
246
|
+
},
|
|
247
|
+
body: eventPayload,
|
|
248
|
+
signal: AbortSignal.timeout(5000),
|
|
249
|
+
});
|
|
250
|
+
if (response.ok) {
|
|
251
|
+
// Successful delivery
|
|
252
|
+
conn.run(`UPDATE obs_webhook_deliveries SET
|
|
253
|
+
status = 'delivered', attempts = ?, last_attempt_at = ?,
|
|
254
|
+
response_status = ?
|
|
255
|
+
WHERE id = ?`, [newAttempts, nowISO, response.status, delivery.id]);
|
|
256
|
+
return {
|
|
257
|
+
deliveryId: delivery.id,
|
|
258
|
+
subscriptionId: delivery.subscription_id,
|
|
259
|
+
eventId: delivery.event_id,
|
|
260
|
+
status: 'delivered',
|
|
261
|
+
responseStatus: response.status,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
// Non-2xx response — treat as failure
|
|
265
|
+
return handleDeliveryFailure(conn, delivery, newAttempts, nowISO, `HTTP ${response.status}`, response.status);
|
|
266
|
+
}
|
|
267
|
+
catch (err) {
|
|
268
|
+
// Network error, timeout, etc.
|
|
269
|
+
// SECURITY: Do not include webhook secret in error message
|
|
270
|
+
const errorMessage = err instanceof Error
|
|
271
|
+
? err.name === 'TimeoutError'
|
|
272
|
+
? 'Delivery timeout (5s exceeded)'
|
|
273
|
+
: `Network error: ${err.message}`
|
|
274
|
+
: 'Unknown delivery error';
|
|
275
|
+
return handleDeliveryFailure(conn, delivery, newAttempts, nowISO, errorMessage, undefined);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
// ============================================================================
|
|
279
|
+
// Failure Handling
|
|
280
|
+
// ============================================================================
|
|
281
|
+
/**
|
|
282
|
+
* Handle a failed delivery attempt. Either retry with exponential backoff
|
|
283
|
+
* or mark as exhausted if max attempts reached.
|
|
284
|
+
*
|
|
285
|
+
* @internal
|
|
286
|
+
*/
|
|
287
|
+
function handleDeliveryFailure(conn, delivery, newAttempts, nowISO, errorMessage, responseStatus) {
|
|
288
|
+
if (newAttempts >= delivery.max_attempts) {
|
|
289
|
+
// Max retries exhausted
|
|
290
|
+
conn.run(`UPDATE obs_webhook_deliveries SET
|
|
291
|
+
status = 'exhausted', attempts = ?, last_attempt_at = ?,
|
|
292
|
+
error_message = ?${responseStatus !== undefined ? ', response_status = ?' : ''}
|
|
293
|
+
WHERE id = ?`, responseStatus !== undefined
|
|
294
|
+
? [newAttempts, nowISO, errorMessage, responseStatus, delivery.id]
|
|
295
|
+
: [newAttempts, nowISO, errorMessage, delivery.id]);
|
|
296
|
+
return {
|
|
297
|
+
deliveryId: delivery.id,
|
|
298
|
+
subscriptionId: delivery.subscription_id,
|
|
299
|
+
eventId: delivery.event_id,
|
|
300
|
+
status: 'exhausted',
|
|
301
|
+
...(responseStatus !== undefined ? { responseStatus } : {}),
|
|
302
|
+
errorMessage,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
// Schedule retry with exponential backoff: 2^attempt * 10 seconds
|
|
306
|
+
const backoffSeconds = Math.pow(2, newAttempts) * 10;
|
|
307
|
+
conn.run(`UPDATE obs_webhook_deliveries SET
|
|
308
|
+
status = 'failed', attempts = ?, last_attempt_at = ?,
|
|
309
|
+
error_message = ?,
|
|
310
|
+
next_retry_at = strftime('%Y-%m-%dT%H:%M:%fZ', ?, '+' || ? || ' seconds')
|
|
311
|
+
${responseStatus !== undefined ? ', response_status = ?' : ''}
|
|
312
|
+
WHERE id = ?`, responseStatus !== undefined
|
|
313
|
+
? [newAttempts, nowISO, errorMessage, nowISO, backoffSeconds, responseStatus, delivery.id]
|
|
314
|
+
: [newAttempts, nowISO, errorMessage, nowISO, backoffSeconds, delivery.id]);
|
|
315
|
+
return {
|
|
316
|
+
deliveryId: delivery.id,
|
|
317
|
+
subscriptionId: delivery.subscription_id,
|
|
318
|
+
eventId: delivery.event_id,
|
|
319
|
+
status: 'failed',
|
|
320
|
+
...(responseStatus !== undefined ? { responseStatus } : {}),
|
|
321
|
+
errorMessage,
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=webhook_delivery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook_delivery.js","sourceRoot":"","sources":["../../../src/kernel/events/webhook_delivery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kernel factory: createKernel and destroyKernel.
|
|
3
|
+
* S ref: C-07 (Object.freeze), C-06 (no shared mutable state), §3.3 (engine not framework)
|
|
4
|
+
*
|
|
5
|
+
* Phase: 1 (Kernel)
|
|
6
|
+
* The top-level entry point for the kernel module.
|
|
7
|
+
*
|
|
8
|
+
* C-07: Object.freeze on public API.
|
|
9
|
+
* C-06: Two createKernel() calls produce independent instances.
|
|
10
|
+
* §3.3: Engine, not framework -- consumer receives complete opaque object.
|
|
11
|
+
*
|
|
12
|
+
* Build order justification (SDD Section 7):
|
|
13
|
+
* 1. Database lifecycle (foundation)
|
|
14
|
+
* 2. Namespace enforcement (before tables)
|
|
15
|
+
* 3. Audit trail (before mutations)
|
|
16
|
+
* 4. Crypto (needed by audit + vault)
|
|
17
|
+
* 5. Event bus (needed by all modules)
|
|
18
|
+
* 6. RBAC + Rate limiter (needed by API)
|
|
19
|
+
* 7. Retention + Tenant + Config
|
|
20
|
+
*/
|
|
21
|
+
import type { Result, Kernel, KernelConfig } from './interfaces/index.js';
|
|
22
|
+
/**
|
|
23
|
+
* Create an independent kernel instance.
|
|
24
|
+
* Returns a frozen object per C-07. Each call produces an independent instance per C-06.
|
|
25
|
+
*
|
|
26
|
+
* S ref: C-07 (Object.freeze), C-06 (no shared mutable state),
|
|
27
|
+
* §3.3 (engine not framework), SDD FPD-7
|
|
28
|
+
*/
|
|
29
|
+
export declare function createKernel(config: KernelConfig): Result<Readonly<Kernel>>;
|
|
30
|
+
/**
|
|
31
|
+
* Graceful shutdown: close kernel's internal database connection.
|
|
32
|
+
* CF-011: Properly closes the connection tracked during createKernel.
|
|
33
|
+
* Idempotent: calling destroyKernel twice is safe (second call is a no-op).
|
|
34
|
+
*
|
|
35
|
+
* S ref: I-05 (clean shutdown), §3.4 (WAL checkpoint)
|
|
36
|
+
*/
|
|
37
|
+
export declare function destroyKernel(kernel: Kernel): Result<void>;
|
|
38
|
+
export type * from './interfaces/index.js';
|
|
39
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kernel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EACV,MAAM,EAAE,MAAM,EAAE,YAAY,EAC7B,MAAM,uBAAuB,CAAC;AAqB/B;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CA2M3E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CA2B1D;AAGD,mBAAmB,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kernel factory: createKernel and destroyKernel.
|
|
3
|
+
* S ref: C-07 (Object.freeze), C-06 (no shared mutable state), §3.3 (engine not framework)
|
|
4
|
+
*
|
|
5
|
+
* Phase: 1 (Kernel)
|
|
6
|
+
* The top-level entry point for the kernel module.
|
|
7
|
+
*
|
|
8
|
+
* C-07: Object.freeze on public API.
|
|
9
|
+
* C-06: Two createKernel() calls produce independent instances.
|
|
10
|
+
* §3.3: Engine, not framework -- consumer receives complete opaque object.
|
|
11
|
+
*
|
|
12
|
+
* Build order justification (SDD Section 7):
|
|
13
|
+
* 1. Database lifecycle (foundation)
|
|
14
|
+
* 2. Namespace enforcement (before tables)
|
|
15
|
+
* 3. Audit trail (before mutations)
|
|
16
|
+
* 4. Crypto (needed by audit + vault)
|
|
17
|
+
* 5. Event bus (needed by all modules)
|
|
18
|
+
* 6. RBAC + Rate limiter (needed by API)
|
|
19
|
+
* 7. Retention + Tenant + Config
|
|
20
|
+
*/
|
|
21
|
+
import { createDatabaseLifecycle } from './database/database_lifecycle.js';
|
|
22
|
+
// CF-011: Module-level connection tracker for destroyKernel.
|
|
23
|
+
// WeakMap so that unreferenced kernels can be garbage-collected.
|
|
24
|
+
// This avoids modifying the frozen Kernel interface while giving
|
|
25
|
+
// destroyKernel access to the connection it needs to close.
|
|
26
|
+
const kernelConnections = new WeakMap();
|
|
27
|
+
import { getPhase1Migrations } from './database/migrations.js';
|
|
28
|
+
import { createNamespaceEnforcer } from './namespace/namespace_enforcer.js';
|
|
29
|
+
import { createAuditTrail } from './audit/audit_trail.js';
|
|
30
|
+
import { createCryptoEngine, createVaultOperations, createStringEncryption } from './crypto/crypto_engine.js';
|
|
31
|
+
import { createEventBus } from './events/event_bus.js';
|
|
32
|
+
import { createRbacEngine } from './rbac/rbac_engine.js';
|
|
33
|
+
import { createRateLimiter } from './rate_limiter/rate_limiter.js';
|
|
34
|
+
import { createRetentionScheduler, DEFAULT_POLICIES } from './retention/retention_scheduler.js';
|
|
35
|
+
import { createTenantContext } from './tenant/tenant_context.js';
|
|
36
|
+
import { createSystemTimeProvider } from './time/time_provider.js';
|
|
37
|
+
import { randomUUID } from 'node:crypto';
|
|
38
|
+
/**
|
|
39
|
+
* Create an independent kernel instance.
|
|
40
|
+
* Returns a frozen object per C-07. Each call produces an independent instance per C-06.
|
|
41
|
+
*
|
|
42
|
+
* S ref: C-07 (Object.freeze), C-06 (no shared mutable state),
|
|
43
|
+
* §3.3 (engine not framework), SDD FPD-7
|
|
44
|
+
*/
|
|
45
|
+
export function createKernel(config) {
|
|
46
|
+
try {
|
|
47
|
+
const time = createSystemTimeProvider();
|
|
48
|
+
const startTime = time.nowMs();
|
|
49
|
+
// ─── Build Order 1: Database lifecycle ───
|
|
50
|
+
const database = createDatabaseLifecycle();
|
|
51
|
+
const openResult = database.open({
|
|
52
|
+
dataDir: config.dataDir,
|
|
53
|
+
tenancy: config.tenancy,
|
|
54
|
+
...(config.busyTimeoutMs !== undefined ? { busyTimeoutMs: config.busyTimeoutMs } : {}),
|
|
55
|
+
});
|
|
56
|
+
if (!openResult.ok)
|
|
57
|
+
return openResult;
|
|
58
|
+
const conn = openResult.value;
|
|
59
|
+
// ─── Build Order 2: Namespace enforcement ───
|
|
60
|
+
const namespace = createNamespaceEnforcer();
|
|
61
|
+
// Validate all migration SQL before applying
|
|
62
|
+
const migrations = getPhase1Migrations();
|
|
63
|
+
for (const migration of migrations) {
|
|
64
|
+
const validationResult = namespace.validateMigration(migration.sql);
|
|
65
|
+
if (!validationResult.ok) {
|
|
66
|
+
conn.close();
|
|
67
|
+
return validationResult;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Run migrations
|
|
71
|
+
const migrateResult = database.migrate(conn, migrations);
|
|
72
|
+
if (!migrateResult.ok) {
|
|
73
|
+
conn.close();
|
|
74
|
+
return migrateResult;
|
|
75
|
+
}
|
|
76
|
+
// ─── Build Order 4: Crypto engine ───
|
|
77
|
+
// (Built before audit because audit needs sha256)
|
|
78
|
+
const crypto = createCryptoEngine();
|
|
79
|
+
const vault = createVaultOperations(crypto, config.masterKey);
|
|
80
|
+
// ─── Build Order 3: Audit trail ───
|
|
81
|
+
const audit = createAuditTrail(crypto.sha256);
|
|
82
|
+
// ─── Build Order 5: Event bus ───
|
|
83
|
+
// CF-010: Wire encryption adapter for webhook secret encryption at rest
|
|
84
|
+
const stringEncryption = createStringEncryption(crypto, config.masterKey);
|
|
85
|
+
const events = createEventBus(stringEncryption);
|
|
86
|
+
// ─── Build Order 6: RBAC + Rate limiter ───
|
|
87
|
+
// CF-006: Pass conn to restore RBAC active state from existing custom roles
|
|
88
|
+
const rbac = createRbacEngine(conn);
|
|
89
|
+
const rateLimiter = createRateLimiter();
|
|
90
|
+
// CF-005 / DEC-4D-001: Clean stale archive flag on startup.
|
|
91
|
+
// If kernel crashed mid-archive, the flag remains and the DELETE trigger is
|
|
92
|
+
// permanently disabled. Clean it unconditionally — archive() is transactional,
|
|
93
|
+
// so a stale flag means the archive didn't complete.
|
|
94
|
+
conn.run('DELETE FROM core_audit_archive_active');
|
|
95
|
+
// CF-035: Clean stale tombstone flag on startup (same rationale as archive flag).
|
|
96
|
+
// CF-011: Guard with try/catch — table is created by Phase 4D4 migration
|
|
97
|
+
// which may not have run yet on first startup.
|
|
98
|
+
try {
|
|
99
|
+
conn.run('DELETE FROM core_audit_tombstone_active');
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Table does not exist yet (first run before Phase 4D4 migrations).
|
|
103
|
+
// This is safe — no stale flag can exist if the table doesn't exist.
|
|
104
|
+
}
|
|
105
|
+
// Seed default roles in a transaction (I-03: mutation + audit in same txn)
|
|
106
|
+
conn.transaction(() => {
|
|
107
|
+
rbac.seedDefaultRoles(conn);
|
|
108
|
+
// Seed default retention policies
|
|
109
|
+
for (const policy of DEFAULT_POLICIES) {
|
|
110
|
+
const id = randomUUID();
|
|
111
|
+
conn.run(`INSERT INTO core_retention_policies (id, tenant_id, data_type, retention_days, action, enabled)
|
|
112
|
+
VALUES (?, NULL, ?, ?, ?, 1)
|
|
113
|
+
ON CONFLICT(tenant_id, data_type) DO NOTHING`, [id, policy.dataType, policy.retentionDays, policy.action]);
|
|
114
|
+
}
|
|
115
|
+
// Audit the kernel initialization
|
|
116
|
+
audit.append(conn, {
|
|
117
|
+
tenantId: null,
|
|
118
|
+
actorType: 'system',
|
|
119
|
+
actorId: 'kernel',
|
|
120
|
+
operation: 'kernel.initialized',
|
|
121
|
+
resourceType: 'kernel',
|
|
122
|
+
resourceId: 'kernel',
|
|
123
|
+
detail: {
|
|
124
|
+
dataDir: config.dataDir,
|
|
125
|
+
tenancyMode: config.tenancy.mode,
|
|
126
|
+
schemaVersion: migrateResult.value.currentVersion,
|
|
127
|
+
migrationsApplied: migrateResult.value.applied,
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
// ─── Build Order 7: Retention + Tenant ───
|
|
132
|
+
const retention = createRetentionScheduler(audit);
|
|
133
|
+
const tenant = createTenantContext(conn);
|
|
134
|
+
// ─── Assemble Kernel ───
|
|
135
|
+
const kernel = {
|
|
136
|
+
database,
|
|
137
|
+
audit,
|
|
138
|
+
crypto,
|
|
139
|
+
vault,
|
|
140
|
+
events,
|
|
141
|
+
rbac,
|
|
142
|
+
retention,
|
|
143
|
+
namespace,
|
|
144
|
+
tenant,
|
|
145
|
+
rateLimiter,
|
|
146
|
+
time,
|
|
147
|
+
/**
|
|
148
|
+
* Aggregated kernel health check.
|
|
149
|
+
* S ref: I-05 (database consistency), I-06 (audit chain valid)
|
|
150
|
+
*/
|
|
151
|
+
health() {
|
|
152
|
+
try {
|
|
153
|
+
// Database health
|
|
154
|
+
const dbHealthResult = database.health(conn);
|
|
155
|
+
if (!dbHealthResult.ok) {
|
|
156
|
+
return {
|
|
157
|
+
ok: true,
|
|
158
|
+
value: {
|
|
159
|
+
status: 'unhealthy',
|
|
160
|
+
database: {
|
|
161
|
+
status: 'unhealthy',
|
|
162
|
+
walSize: 0,
|
|
163
|
+
pageCount: 0,
|
|
164
|
+
freePages: 0,
|
|
165
|
+
schemaVersion: 0,
|
|
166
|
+
integrityOk: false,
|
|
167
|
+
},
|
|
168
|
+
auditChainValid: false,
|
|
169
|
+
migrationsCurrent: false,
|
|
170
|
+
rbacActive: rbac.isActive(),
|
|
171
|
+
uptimeMs: time.nowMs() - startTime,
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
// Audit chain verification
|
|
176
|
+
const chainResult = audit.verifyChain(conn);
|
|
177
|
+
const auditChainValid = chainResult.ok && chainResult.value.valid;
|
|
178
|
+
// Schema verification
|
|
179
|
+
const schemaResult = database.verifySchema(conn);
|
|
180
|
+
const migrationsCurrent = schemaResult.ok && schemaResult.value.valid;
|
|
181
|
+
const dbHealth = dbHealthResult.value;
|
|
182
|
+
const status = dbHealth.integrityOk && auditChainValid && migrationsCurrent
|
|
183
|
+
? 'healthy'
|
|
184
|
+
: dbHealth.integrityOk
|
|
185
|
+
? 'degraded'
|
|
186
|
+
: 'unhealthy';
|
|
187
|
+
return {
|
|
188
|
+
ok: true,
|
|
189
|
+
value: {
|
|
190
|
+
status,
|
|
191
|
+
database: dbHealth,
|
|
192
|
+
auditChainValid,
|
|
193
|
+
migrationsCurrent,
|
|
194
|
+
rbacActive: rbac.isActive(),
|
|
195
|
+
uptimeMs: time.nowMs() - startTime,
|
|
196
|
+
},
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
return {
|
|
201
|
+
ok: false,
|
|
202
|
+
error: {
|
|
203
|
+
code: 'HEALTH_CHECK_FAILED',
|
|
204
|
+
message: err instanceof Error ? err.message : String(err),
|
|
205
|
+
spec: 'I-05',
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
// CF-011: Track connection for destroyKernel cleanup
|
|
212
|
+
kernelConnections.set(kernel, conn);
|
|
213
|
+
// C-07: Freeze the kernel object to prevent mutation
|
|
214
|
+
return { ok: true, value: Object.freeze(kernel) };
|
|
215
|
+
}
|
|
216
|
+
catch (err) {
|
|
217
|
+
return {
|
|
218
|
+
ok: false,
|
|
219
|
+
error: {
|
|
220
|
+
code: 'KERNEL_CREATE_FAILED',
|
|
221
|
+
message: err instanceof Error ? err.message : String(err),
|
|
222
|
+
spec: 'C-07, C-06, §3.3',
|
|
223
|
+
},
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Graceful shutdown: close kernel's internal database connection.
|
|
229
|
+
* CF-011: Properly closes the connection tracked during createKernel.
|
|
230
|
+
* Idempotent: calling destroyKernel twice is safe (second call is a no-op).
|
|
231
|
+
*
|
|
232
|
+
* S ref: I-05 (clean shutdown), §3.4 (WAL checkpoint)
|
|
233
|
+
*/
|
|
234
|
+
export function destroyKernel(kernel) {
|
|
235
|
+
try {
|
|
236
|
+
const conn = kernelConnections.get(kernel);
|
|
237
|
+
if (conn) {
|
|
238
|
+
// WAL checkpoint before close: ensures all pending writes are flushed
|
|
239
|
+
// to the main database file. PASSIVE mode doesn't block readers.
|
|
240
|
+
try {
|
|
241
|
+
conn.run('PRAGMA wal_checkpoint(PASSIVE)');
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
// Checkpoint failure is non-fatal — SQLite will replay WAL on next open
|
|
245
|
+
}
|
|
246
|
+
conn.close();
|
|
247
|
+
kernelConnections.delete(kernel);
|
|
248
|
+
}
|
|
249
|
+
// If no connection found, kernel was already destroyed (idempotent).
|
|
250
|
+
return { ok: true, value: undefined };
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
return {
|
|
254
|
+
ok: false,
|
|
255
|
+
error: {
|
|
256
|
+
code: 'KERNEL_DESTROY_FAILED',
|
|
257
|
+
message: err instanceof Error ? err.message : String(err),
|
|
258
|
+
spec: 'I-05',
|
|
259
|
+
},
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kernel/index.ts"],"names":[],"mappings":"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"}
|