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,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Limen — CrossAgentTransfer Implementation
|
|
3
|
+
* Phase 4E-2e: Learning System Convergence Subsystems
|
|
4
|
+
*
|
|
5
|
+
* Implements the CrossAgentTransfer interface from learning_types.ts.
|
|
6
|
+
* Human gate required. Confidence resets to 0.4 on transfer.
|
|
7
|
+
* Source provenance chain preserved.
|
|
8
|
+
*
|
|
9
|
+
* S ref: S29.8 (cross-agent transfer protocol), I-07 (agent isolation),
|
|
10
|
+
* I-03 (audit atomicity), DEC-4E-002 (cross-tenant blocked)
|
|
11
|
+
*
|
|
12
|
+
* Engineering decisions:
|
|
13
|
+
* D1: Qualification gate enforced at requestTransfer (§29.8 Step 1, BRK-S29-002).
|
|
14
|
+
* Source technique must have confidence > 0.8, success_rate > 0.7,
|
|
15
|
+
* applicationCount > 50. This prevents low-quality techniques from being
|
|
16
|
+
* proposed for transfer.
|
|
17
|
+
* D2: Clone mechanics: approveTransfer creates a NEW technique via store.create()
|
|
18
|
+
* with the target agent's ID. Source technique is unaffected (clone, not move).
|
|
19
|
+
* D3: Provenance preservation: the cloned technique's sourceMemoryIds = the source
|
|
20
|
+
* technique's sourceMemoryIds. Full provenance chain maintained.
|
|
21
|
+
* D4: DEC-4E-002 enforcement: TransferRequest has single tenantId field. The
|
|
22
|
+
* implementation uses this tenantId for all queries — no cross-tenant path exists.
|
|
23
|
+
* D5: Self-transfer (sourceAgentId === targetAgentId) is rejected immediately.
|
|
24
|
+
* No request record created (§29.8, I-07).
|
|
25
|
+
*/
|
|
26
|
+
import { randomUUID } from 'node:crypto';
|
|
27
|
+
import { TRANSFER_MIN_CONFIDENCE, TRANSFER_MIN_SUCCESS_RATE, TRANSFER_MIN_APPLICATIONS, CONFIDENCE_RESET_TRANSFER, } from '../interfaces/index.js';
|
|
28
|
+
// ─── Audit Helpers ───
|
|
29
|
+
function actorType(ctx) {
|
|
30
|
+
if (ctx.userId)
|
|
31
|
+
return 'user';
|
|
32
|
+
if (ctx.agentId)
|
|
33
|
+
return 'agent';
|
|
34
|
+
return 'system';
|
|
35
|
+
}
|
|
36
|
+
function actorId(ctx) {
|
|
37
|
+
return (ctx.userId ?? ctx.agentId ?? 'system');
|
|
38
|
+
}
|
|
39
|
+
// ─── Factory ───
|
|
40
|
+
/**
|
|
41
|
+
* Create a CrossAgentTransfer implementation.
|
|
42
|
+
* Follows the Limen store pattern: factory → Object.freeze.
|
|
43
|
+
*
|
|
44
|
+
* S29.8: Transfer lifecycle: request → pending → approved/rejected.
|
|
45
|
+
* Human gate required. Confidence resets to 0.4.
|
|
46
|
+
*/
|
|
47
|
+
export function createCrossAgentTransfer(deps, store) {
|
|
48
|
+
// ─── requestTransfer ───
|
|
49
|
+
function requestTransfer(conn, ctx, request) {
|
|
50
|
+
// D5: Self-transfer rejection
|
|
51
|
+
if (request.sourceAgentId === request.targetAgentId) {
|
|
52
|
+
return {
|
|
53
|
+
ok: false,
|
|
54
|
+
error: {
|
|
55
|
+
code: 'SELF_TRANSFER',
|
|
56
|
+
message: 'Cannot transfer technique to the same agent',
|
|
57
|
+
spec: 'S29.8',
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// Get source technique (by id + tenant_id, no agent filter — we're verifying the source)
|
|
62
|
+
const technique = conn.get(`SELECT * FROM learning_techniques WHERE id = ? AND tenant_id = ?`, [request.sourceTechniqueId, request.tenantId]);
|
|
63
|
+
if (!technique) {
|
|
64
|
+
return {
|
|
65
|
+
ok: false,
|
|
66
|
+
error: {
|
|
67
|
+
code: 'TECHNIQUE_NOT_FOUND',
|
|
68
|
+
message: `Source technique ${request.sourceTechniqueId} not found`,
|
|
69
|
+
spec: 'S29.8',
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// Verify source agent owns this technique
|
|
74
|
+
if (technique.agent_id !== request.sourceAgentId) {
|
|
75
|
+
return {
|
|
76
|
+
ok: false,
|
|
77
|
+
error: {
|
|
78
|
+
code: 'AGENT_MISMATCH',
|
|
79
|
+
message: `Source agent ${request.sourceAgentId} does not own technique ${request.sourceTechniqueId}`,
|
|
80
|
+
spec: 'I-07',
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Cannot transfer retired or suspended technique (FS-14)
|
|
85
|
+
if (technique.status !== 'active') {
|
|
86
|
+
return {
|
|
87
|
+
ok: false,
|
|
88
|
+
error: {
|
|
89
|
+
code: 'TECHNIQUE_NOT_ACTIVE',
|
|
90
|
+
message: `Cannot transfer technique in state ${technique.status} — must be active`,
|
|
91
|
+
spec: 'S29.8',
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// D1: Qualification gate (§29.8 Step 1, BRK-S29-002)
|
|
96
|
+
if (technique.confidence <= TRANSFER_MIN_CONFIDENCE ||
|
|
97
|
+
technique.success_rate <= TRANSFER_MIN_SUCCESS_RATE ||
|
|
98
|
+
technique.application_count <= TRANSFER_MIN_APPLICATIONS) {
|
|
99
|
+
return {
|
|
100
|
+
ok: false,
|
|
101
|
+
error: {
|
|
102
|
+
code: 'TRANSFER_QUALIFICATION_FAILED',
|
|
103
|
+
message: `Technique does not meet transfer qualification: confidence > ${TRANSFER_MIN_CONFIDENCE}, success_rate > ${TRANSFER_MIN_SUCCESS_RATE}, applicationCount > ${TRANSFER_MIN_APPLICATIONS}`,
|
|
104
|
+
spec: 'S29.8',
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const requestId = randomUUID();
|
|
109
|
+
const now = deps.time.nowISO();
|
|
110
|
+
conn.transaction(() => {
|
|
111
|
+
conn.run(`INSERT INTO learning_transfer_requests
|
|
112
|
+
(id, tenant_id, source_agent_id, target_agent_id, technique_id, status, created_at, resolved_at)
|
|
113
|
+
VALUES (?, ?, ?, ?, ?, 'pending', ?, NULL)`, [requestId, request.tenantId, request.sourceAgentId, request.targetAgentId,
|
|
114
|
+
request.sourceTechniqueId, now]);
|
|
115
|
+
deps.audit.append(conn, {
|
|
116
|
+
tenantId: request.tenantId,
|
|
117
|
+
actorType: actorType(ctx),
|
|
118
|
+
actorId: actorId(ctx),
|
|
119
|
+
operation: 'transfer.request',
|
|
120
|
+
resourceType: 'transfer',
|
|
121
|
+
resourceId: requestId,
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
return { ok: true, value: requestId };
|
|
125
|
+
}
|
|
126
|
+
// ─── approveTransfer ───
|
|
127
|
+
function approveTransfer(conn, ctx, requestId) {
|
|
128
|
+
const callerTenantId = ctx.tenantId;
|
|
129
|
+
const request = conn.get(`SELECT * FROM learning_transfer_requests WHERE id = ? AND tenant_id = ?`, [requestId, callerTenantId]);
|
|
130
|
+
if (!request) {
|
|
131
|
+
return {
|
|
132
|
+
ok: false,
|
|
133
|
+
error: {
|
|
134
|
+
code: 'TRANSFER_REQUEST_NOT_FOUND',
|
|
135
|
+
message: `Transfer request ${requestId} not found`,
|
|
136
|
+
spec: 'S29.8',
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
if (request.status !== 'pending') {
|
|
141
|
+
return {
|
|
142
|
+
ok: false,
|
|
143
|
+
error: {
|
|
144
|
+
code: 'TRANSFER_NOT_PENDING',
|
|
145
|
+
message: `Transfer request ${requestId} is ${request.status}, not pending`,
|
|
146
|
+
spec: 'S29.8',
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
// Get source technique for cloning
|
|
151
|
+
const technique = conn.get(`SELECT * FROM learning_techniques WHERE id = ? AND tenant_id = ?`, [request.technique_id, request.tenant_id]);
|
|
152
|
+
if (!technique) {
|
|
153
|
+
return {
|
|
154
|
+
ok: false,
|
|
155
|
+
error: {
|
|
156
|
+
code: 'SOURCE_TECHNIQUE_NOT_FOUND',
|
|
157
|
+
message: `Source technique ${request.technique_id} no longer exists`,
|
|
158
|
+
spec: 'S29.8',
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
const sourceMemoryIds = JSON.parse(technique.source_memory_ids);
|
|
163
|
+
const targetAgentId = request.target_agent_id;
|
|
164
|
+
const tenantId = request.tenant_id;
|
|
165
|
+
const now = deps.time.nowISO();
|
|
166
|
+
// D2: Clone technique for target agent via store.create()
|
|
167
|
+
// D3: Provenance preserved — same sourceMemoryIds
|
|
168
|
+
const createResult = store.create(conn, ctx, {
|
|
169
|
+
tenantId,
|
|
170
|
+
agentId: targetAgentId,
|
|
171
|
+
type: technique.type,
|
|
172
|
+
content: technique.content,
|
|
173
|
+
sourceMemoryIds,
|
|
174
|
+
initialConfidence: CONFIDENCE_RESET_TRANSFER, // 0.4 per S29.8
|
|
175
|
+
});
|
|
176
|
+
if (!createResult.ok) {
|
|
177
|
+
return createResult;
|
|
178
|
+
}
|
|
179
|
+
conn.transaction(() => {
|
|
180
|
+
conn.run(`UPDATE learning_transfer_requests SET status = 'approved', resolved_at = ? WHERE id = ?`, [now, requestId]);
|
|
181
|
+
deps.audit.append(conn, {
|
|
182
|
+
tenantId,
|
|
183
|
+
actorType: actorType(ctx),
|
|
184
|
+
actorId: actorId(ctx),
|
|
185
|
+
operation: 'transfer.approve',
|
|
186
|
+
resourceType: 'transfer',
|
|
187
|
+
resourceId: requestId,
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
return {
|
|
191
|
+
ok: true,
|
|
192
|
+
value: {
|
|
193
|
+
newTechniqueId: createResult.value.id,
|
|
194
|
+
sourceProvenanceChain: sourceMemoryIds,
|
|
195
|
+
confidence: CONFIDENCE_RESET_TRANSFER,
|
|
196
|
+
},
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
// ─── rejectTransfer ───
|
|
200
|
+
function rejectTransfer(conn, ctx, requestId) {
|
|
201
|
+
const rejectCallerTenantId = ctx.tenantId;
|
|
202
|
+
const request = conn.get(`SELECT * FROM learning_transfer_requests WHERE id = ? AND tenant_id = ?`, [requestId, rejectCallerTenantId]);
|
|
203
|
+
if (!request) {
|
|
204
|
+
return {
|
|
205
|
+
ok: false,
|
|
206
|
+
error: {
|
|
207
|
+
code: 'TRANSFER_REQUEST_NOT_FOUND',
|
|
208
|
+
message: `Transfer request ${requestId} not found`,
|
|
209
|
+
spec: 'S29.8',
|
|
210
|
+
},
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
if (request.status !== 'pending') {
|
|
214
|
+
return {
|
|
215
|
+
ok: false,
|
|
216
|
+
error: {
|
|
217
|
+
code: 'TRANSFER_NOT_PENDING',
|
|
218
|
+
message: `Transfer request ${requestId} is ${request.status}, not pending`,
|
|
219
|
+
spec: 'S29.8',
|
|
220
|
+
},
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
const now = deps.time.nowISO();
|
|
224
|
+
const tenantId = request.tenant_id;
|
|
225
|
+
conn.transaction(() => {
|
|
226
|
+
conn.run(`UPDATE learning_transfer_requests SET status = 'rejected', resolved_at = ? WHERE id = ?`, [now, requestId]);
|
|
227
|
+
deps.audit.append(conn, {
|
|
228
|
+
tenantId,
|
|
229
|
+
actorType: actorType(ctx),
|
|
230
|
+
actorId: actorId(ctx),
|
|
231
|
+
operation: 'transfer.reject',
|
|
232
|
+
resourceType: 'transfer',
|
|
233
|
+
resourceId: requestId,
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
return { ok: true, value: undefined };
|
|
237
|
+
}
|
|
238
|
+
// ─── Return frozen transfer ───
|
|
239
|
+
return Object.freeze({
|
|
240
|
+
requestTransfer,
|
|
241
|
+
approveTransfer,
|
|
242
|
+
rejectTransfer,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=cross_agent_transfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cross_agent_transfer.js","sourceRoot":"","sources":["../../../src/learning/transfer/cross_agent_transfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact Store -- Immutable artifact workspace with dependency tracking.
|
|
3
|
+
* S ref: S8 (Artifact), I-19 (immutability), I-23 (dependency tracking),
|
|
4
|
+
* FM-15 (artifact entropy)
|
|
5
|
+
*
|
|
6
|
+
* Phase: 3 (Orchestration)
|
|
7
|
+
* Implements: Artifact creation (INSERT-only, never UPDATE per I-19),
|
|
8
|
+
* version management via composite PK (id, version),
|
|
9
|
+
* dependency tracking on read, lifecycle state management.
|
|
10
|
+
*
|
|
11
|
+
* SD-03: Composite PK (id, version) from Alpha. Each row is an immutable version.
|
|
12
|
+
*/
|
|
13
|
+
import type { ArtifactStore } from '../interfaces/orchestration.js';
|
|
14
|
+
/**
|
|
15
|
+
* S8: Create the artifact store module.
|
|
16
|
+
* Factory function returns frozen object per C-07.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createArtifactStore(): ArtifactStore;
|
|
19
|
+
//# sourceMappingURL=artifact_store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact_store.d.ts","sourceRoot":"","sources":["../../../src/orchestration/artifacts/artifact_store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EACS,aAAa,EAGjC,MAAM,gCAAgC,CAAC;AAOxC;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAwQnD"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact Store -- Immutable artifact workspace with dependency tracking.
|
|
3
|
+
* S ref: S8 (Artifact), I-19 (immutability), I-23 (dependency tracking),
|
|
4
|
+
* FM-15 (artifact entropy)
|
|
5
|
+
*
|
|
6
|
+
* Phase: 3 (Orchestration)
|
|
7
|
+
* Implements: Artifact creation (INSERT-only, never UPDATE per I-19),
|
|
8
|
+
* version management via composite PK (id, version),
|
|
9
|
+
* dependency tracking on read, lifecycle state management.
|
|
10
|
+
*
|
|
11
|
+
* SD-03: Composite PK (id, version) from Alpha. Each row is an immutable version.
|
|
12
|
+
*/
|
|
13
|
+
import { MISSION_TREE_DEFAULTS, generateId } from '../interfaces/orchestration.js';
|
|
14
|
+
import { walkCascade } from './cascade_walker.js';
|
|
15
|
+
// CF-013: Maximum artifact content size (10MB)
|
|
16
|
+
const MAX_ARTIFACT_CONTENT_BYTES = 10_485_760;
|
|
17
|
+
/**
|
|
18
|
+
* S8: Create the artifact store module.
|
|
19
|
+
* Factory function returns frozen object per C-07.
|
|
20
|
+
*/
|
|
21
|
+
export function createArtifactStore() {
|
|
22
|
+
/** S18: Create artifact (INSERT-only, I-19) */
|
|
23
|
+
function create(deps, ctx, input) {
|
|
24
|
+
// Verify mission is in active state
|
|
25
|
+
const mission = deps.conn.get('SELECT state FROM core_missions WHERE id = ?', [input.missionId]);
|
|
26
|
+
if (!mission) {
|
|
27
|
+
return { ok: false, error: { code: 'MISSION_NOT_ACTIVE', message: 'Mission not found', spec: 'S18' } };
|
|
28
|
+
}
|
|
29
|
+
const activeStates = ['CREATED', 'PLANNING', 'EXECUTING', 'REVIEWING'];
|
|
30
|
+
if (!activeStates.includes(mission.state)) {
|
|
31
|
+
return { ok: false, error: { code: 'MISSION_NOT_ACTIVE', message: `Mission in state ${mission.state}`, spec: 'S18' } };
|
|
32
|
+
}
|
|
33
|
+
// I-20: Artifact limit check
|
|
34
|
+
const countResult = getArtifactCount(deps, input.missionId);
|
|
35
|
+
if (countResult.ok && countResult.value >= MISSION_TREE_DEFAULTS.maxArtifacts) {
|
|
36
|
+
return { ok: false, error: { code: 'ARTIFACT_LIMIT_EXCEEDED', message: `Artifact count ${countResult.value} >= max ${MISSION_TREE_DEFAULTS.maxArtifacts}`, spec: 'I-20' } };
|
|
37
|
+
}
|
|
38
|
+
// CF-013: Hard cap on artifact content size (10MB)
|
|
39
|
+
const contentSize = typeof input.content === 'string'
|
|
40
|
+
? Buffer.byteLength(input.content, 'utf-8')
|
|
41
|
+
: input.content.length;
|
|
42
|
+
if (contentSize > MAX_ARTIFACT_CONTENT_BYTES) {
|
|
43
|
+
return { ok: false, error: { code: 'INVALID_INPUT', message: `Artifact content exceeds maximum size (${contentSize} bytes > ${MAX_ARTIFACT_CONTENT_BYTES} bytes limit)`, spec: 'S18/CF-013' } };
|
|
44
|
+
}
|
|
45
|
+
// CQ-10 fix: S18 STORAGE_EXCEEDED -- check storage budget before artifact creation
|
|
46
|
+
const resource = deps.conn.get('SELECT storage_max_bytes, storage_consumed_bytes FROM core_resources WHERE mission_id = ?', [input.missionId]);
|
|
47
|
+
if (!resource) {
|
|
48
|
+
// Debt 2: Missing resource row means storage budget enforcement is impossible — do not silently skip
|
|
49
|
+
return { ok: false, error: { code: 'STORAGE_EXCEEDED', message: `Resource record missing for mission ${input.missionId} — cannot verify storage budget`, spec: 'S18' } };
|
|
50
|
+
}
|
|
51
|
+
if (resource.storage_max_bytes > 0 && (resource.storage_consumed_bytes + contentSize) > resource.storage_max_bytes) {
|
|
52
|
+
return { ok: false, error: { code: 'STORAGE_EXCEEDED', message: `Content size ${contentSize} would exceed storage budget (consumed ${resource.storage_consumed_bytes} of max ${resource.storage_max_bytes})`, spec: 'S18' } };
|
|
53
|
+
}
|
|
54
|
+
// Determine version
|
|
55
|
+
let artifactId;
|
|
56
|
+
let version;
|
|
57
|
+
if (input.parentArtifactId !== null) {
|
|
58
|
+
// Revision: same artifact id, next version
|
|
59
|
+
artifactId = input.parentArtifactId;
|
|
60
|
+
const maxVersion = deps.conn.get('SELECT MAX(version) as mv FROM core_artifacts WHERE id = ?', [input.parentArtifactId]);
|
|
61
|
+
version = (maxVersion?.mv ?? 0) + 1;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// New artifact
|
|
65
|
+
artifactId = generateId();
|
|
66
|
+
version = 1;
|
|
67
|
+
}
|
|
68
|
+
const now = deps.time.nowISO();
|
|
69
|
+
const contentBlob = typeof input.content === 'string'
|
|
70
|
+
? Buffer.from(input.content, 'utf-8')
|
|
71
|
+
: input.content;
|
|
72
|
+
deps.conn.transaction(() => {
|
|
73
|
+
// I-19: INSERT only -- never UPDATE
|
|
74
|
+
deps.conn.run(`INSERT INTO core_artifacts (id, version, mission_id, tenant_id, name, type,
|
|
75
|
+
format, content, lifecycle_state, source_task_id, parent_artifact_id,
|
|
76
|
+
relevance_decay, metadata_json, created_at)
|
|
77
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'ACTIVE', ?, ?, 0, ?, ?)`, [
|
|
78
|
+
artifactId,
|
|
79
|
+
version,
|
|
80
|
+
input.missionId,
|
|
81
|
+
ctx.tenantId,
|
|
82
|
+
input.name,
|
|
83
|
+
input.type,
|
|
84
|
+
input.format,
|
|
85
|
+
contentBlob,
|
|
86
|
+
input.sourceTaskId,
|
|
87
|
+
input.parentArtifactId,
|
|
88
|
+
JSON.stringify(input.metadata),
|
|
89
|
+
now,
|
|
90
|
+
]);
|
|
91
|
+
// I-03: Audit entry
|
|
92
|
+
deps.audit.append(deps.conn, {
|
|
93
|
+
tenantId: ctx.tenantId,
|
|
94
|
+
actorType: ctx.userId ? 'user' : 'agent',
|
|
95
|
+
actorId: (ctx.userId ?? ctx.agentId ?? 'system'),
|
|
96
|
+
operation: 'create_artifact',
|
|
97
|
+
resourceType: 'artifact',
|
|
98
|
+
resourceId: `${artifactId}@v${version}`,
|
|
99
|
+
detail: { missionId: input.missionId, name: input.name, type: input.type, version },
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
return {
|
|
103
|
+
ok: true,
|
|
104
|
+
value: { artifactId, version },
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/** S19: Read artifact with dependency tracking (I-23) */
|
|
108
|
+
function read(deps, _ctx, input) {
|
|
109
|
+
let row;
|
|
110
|
+
if (input.version === 'latest') {
|
|
111
|
+
row = deps.conn.get('SELECT * FROM core_artifacts WHERE id = ? ORDER BY version DESC LIMIT 1', [input.artifactId]);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
row = deps.conn.get('SELECT * FROM core_artifacts WHERE id = ? AND version = ?', [input.artifactId, input.version]);
|
|
115
|
+
}
|
|
116
|
+
if (!row) {
|
|
117
|
+
return { ok: false, error: { code: 'NOT_FOUND', message: `Artifact ${input.artifactId} not found`, spec: 'S19' } };
|
|
118
|
+
}
|
|
119
|
+
const lifecycleState = row['lifecycle_state'];
|
|
120
|
+
if (lifecycleState === 'ARCHIVED' || lifecycleState === 'DELETED') {
|
|
121
|
+
return { ok: false, error: { code: 'ARCHIVED', message: `Artifact is ${lifecycleState}`, spec: 'S19' } };
|
|
122
|
+
}
|
|
123
|
+
const content = row['content'];
|
|
124
|
+
const metadata = row['metadata_json'] ? JSON.parse(row['metadata_json']) : {};
|
|
125
|
+
return {
|
|
126
|
+
ok: true,
|
|
127
|
+
value: {
|
|
128
|
+
artifact: {
|
|
129
|
+
id: row['id'],
|
|
130
|
+
version: row['version'],
|
|
131
|
+
missionId: row['mission_id'],
|
|
132
|
+
name: row['name'],
|
|
133
|
+
type: row['type'],
|
|
134
|
+
format: row['format'],
|
|
135
|
+
content,
|
|
136
|
+
lifecycleState: lifecycleState,
|
|
137
|
+
metadata,
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/** I-23: Track dependency edge */
|
|
143
|
+
function trackDependency(deps, readingMissionId, artifactId, version, isCrossMission) {
|
|
144
|
+
const now = deps.time.nowISO();
|
|
145
|
+
// FM-10: Derive tenant_id from reading mission
|
|
146
|
+
const missionRow = deps.conn.get('SELECT tenant_id FROM core_missions WHERE id = ?', [readingMissionId]);
|
|
147
|
+
if (!missionRow) {
|
|
148
|
+
// Debt 2: Missing mission means tenant identity cannot be established — do not fabricate null tenant
|
|
149
|
+
return { ok: false, error: { code: 'MISSION_NOT_FOUND', message: `Mission ${readingMissionId} not found — cannot derive tenant for dependency tracking`, spec: 'FM-10' } };
|
|
150
|
+
}
|
|
151
|
+
const depTenantId = (missionRow.tenant_id ?? null);
|
|
152
|
+
// CQ-06 fix: I-03 -- dependency tracking INSERT + audit in same transaction
|
|
153
|
+
deps.conn.transaction(() => {
|
|
154
|
+
// FM-10: tenant_id inherited from reading mission
|
|
155
|
+
deps.conn.run(`INSERT OR IGNORE INTO core_artifact_dependencies
|
|
156
|
+
(reading_mission_id, artifact_id, artifact_version, is_cross_mission, tenant_id, created_at)
|
|
157
|
+
VALUES (?, ?, ?, ?, ?, ?)`, [readingMissionId, artifactId, version, isCrossMission ? 1 : 0, depTenantId, now]);
|
|
158
|
+
deps.audit.append(deps.conn, {
|
|
159
|
+
tenantId: depTenantId,
|
|
160
|
+
actorType: 'system',
|
|
161
|
+
actorId: 'artifact_store',
|
|
162
|
+
operation: 'track_dependency',
|
|
163
|
+
resourceType: 'artifact_dependency',
|
|
164
|
+
resourceId: `${artifactId}@v${version}`,
|
|
165
|
+
detail: { readingMissionId, artifactId, version, isCrossMission },
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
return { ok: true, value: undefined };
|
|
169
|
+
}
|
|
170
|
+
/** FM-15: Get artifact count for mission */
|
|
171
|
+
function getArtifactCount(deps, missionId) {
|
|
172
|
+
const row = deps.conn.get('SELECT COUNT(*) as cnt FROM core_artifacts WHERE mission_id = ?', [missionId]);
|
|
173
|
+
return { ok: true, value: row?.cnt ?? 0 };
|
|
174
|
+
}
|
|
175
|
+
/** I-21: Archive artifacts for compaction */
|
|
176
|
+
function archiveForMission(deps, missionId) {
|
|
177
|
+
// Debt 3: Derive tenant_id from mission for audit trail
|
|
178
|
+
const archiveMissionRow = deps.conn.get('SELECT tenant_id FROM core_missions WHERE id = ?', [missionId]);
|
|
179
|
+
const archiveTenantId = (archiveMissionRow?.tenant_id ?? null);
|
|
180
|
+
// CQ-07 fix: I-03 -- archive UPDATE + audit + cascade in same transaction
|
|
181
|
+
let archived = 0;
|
|
182
|
+
deps.conn.transaction(() => {
|
|
183
|
+
const result = deps.conn.run(`UPDATE core_artifacts SET lifecycle_state = 'ARCHIVED' WHERE mission_id = ? AND lifecycle_state = 'ACTIVE'`, [missionId]);
|
|
184
|
+
archived = result.changes;
|
|
185
|
+
if (archived > 0) {
|
|
186
|
+
// I-23: Collect the archived artifact IDs for cascade
|
|
187
|
+
const archivedRows = deps.conn.query(`SELECT DISTINCT id FROM core_artifacts WHERE mission_id = ? AND lifecycle_state = 'ARCHIVED'`, [missionId]);
|
|
188
|
+
const archivedArtifactIds = archivedRows.map(r => r.id);
|
|
189
|
+
deps.audit.append(deps.conn, {
|
|
190
|
+
tenantId: archiveTenantId,
|
|
191
|
+
actorType: 'system',
|
|
192
|
+
actorId: 'artifact_store',
|
|
193
|
+
operation: 'archive_artifacts',
|
|
194
|
+
resourceType: 'artifact',
|
|
195
|
+
resourceId: missionId,
|
|
196
|
+
detail: { missionId, archivedCount: archived },
|
|
197
|
+
});
|
|
198
|
+
// I-23: Cascade STALE flag to transitive dependents (BFS)
|
|
199
|
+
// Both archive and cascade in the same transaction
|
|
200
|
+
walkCascade(archivedArtifactIds, deps.conn, archiveTenantId, deps.audit);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
return { ok: true, value: archived };
|
|
204
|
+
}
|
|
205
|
+
return Object.freeze({
|
|
206
|
+
create,
|
|
207
|
+
read,
|
|
208
|
+
trackDependency,
|
|
209
|
+
getArtifactCount,
|
|
210
|
+
archiveForMission,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=artifact_store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact_store.js","sourceRoot":"","sources":["../../../src/orchestration/artifacts/artifact_store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cascade Walker — BFS STALE flag propagation through artifact dependency graph.
|
|
3
|
+
* S ref: I-23 (Artifact Dependency Tracking), I-19 (Artifact Immutability)
|
|
4
|
+
*
|
|
5
|
+
* Phase: Sprint 3 (Knowledge Graph)
|
|
6
|
+
*
|
|
7
|
+
* Algorithm: Breadth-first search starting from archived artifact IDs.
|
|
8
|
+
* For each artifact: find missions that depend on it, find their ACTIVE+FRESH
|
|
9
|
+
* artifacts, mark them STALE, add to BFS queue.
|
|
10
|
+
*
|
|
11
|
+
* Safety constraints:
|
|
12
|
+
* - COALESCE tenant pattern on EVERY query (FM-10)
|
|
13
|
+
* - Column-specific UPDATE (staleness_flag only) — I-19 content/type triggers NOT fired
|
|
14
|
+
* - Visited set prevents infinite loops on circular dependencies
|
|
15
|
+
* - MAX_CASCADE_DEPTH = 10 hard safety bound
|
|
16
|
+
* - Only cascades to ACTIVE + FRESH artifacts (skip ARCHIVED/DELETED/SUMMARIZED/STALE)
|
|
17
|
+
* - Single audit entry per cascade invocation
|
|
18
|
+
*
|
|
19
|
+
* Spec trace: §4 I-23, §8 S18/S19, §19 Side Effects
|
|
20
|
+
*/
|
|
21
|
+
import type { DatabaseConnection, AuditTrail, TenantId } from '../../kernel/interfaces/index.js';
|
|
22
|
+
/** Result of a cascade operation. */
|
|
23
|
+
export interface CascadeResult {
|
|
24
|
+
/** Number of artifacts marked STALE. */
|
|
25
|
+
readonly affectedCount: number;
|
|
26
|
+
/** IDs of artifacts marked STALE (artifact_id:version format). */
|
|
27
|
+
readonly affectedIds: readonly string[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Walk the artifact dependency graph via BFS, marking transitive dependents as STALE.
|
|
31
|
+
*
|
|
32
|
+
* @param sourceArtifactIds - Artifact IDs that were just archived (cascade source)
|
|
33
|
+
* @param conn - Database connection (must be inside a transaction already)
|
|
34
|
+
* @param tenantId - Tenant ID for isolation (null for single-tenant)
|
|
35
|
+
* @param audit - Audit trail for recording the cascade
|
|
36
|
+
* @returns CascadeResult with affected count and IDs
|
|
37
|
+
*/
|
|
38
|
+
export declare function walkCascade(sourceArtifactIds: readonly string[], conn: DatabaseConnection, tenantId: TenantId | null, audit: AuditTrail): CascadeResult;
|
|
39
|
+
//# sourceMappingURL=cascade_walker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cascade_walker.d.ts","sourceRoot":"","sources":["../../../src/orchestration/artifacts/cascade_walker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAKjG,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,iBAAiB,EAAE,SAAS,MAAM,EAAE,EACpC,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,KAAK,EAAE,UAAU,GAChB,aAAa,CAiGf"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cascade Walker — BFS STALE flag propagation through artifact dependency graph.
|
|
3
|
+
* S ref: I-23 (Artifact Dependency Tracking), I-19 (Artifact Immutability)
|
|
4
|
+
*
|
|
5
|
+
* Phase: Sprint 3 (Knowledge Graph)
|
|
6
|
+
*
|
|
7
|
+
* Algorithm: Breadth-first search starting from archived artifact IDs.
|
|
8
|
+
* For each artifact: find missions that depend on it, find their ACTIVE+FRESH
|
|
9
|
+
* artifacts, mark them STALE, add to BFS queue.
|
|
10
|
+
*
|
|
11
|
+
* Safety constraints:
|
|
12
|
+
* - COALESCE tenant pattern on EVERY query (FM-10)
|
|
13
|
+
* - Column-specific UPDATE (staleness_flag only) — I-19 content/type triggers NOT fired
|
|
14
|
+
* - Visited set prevents infinite loops on circular dependencies
|
|
15
|
+
* - MAX_CASCADE_DEPTH = 10 hard safety bound
|
|
16
|
+
* - Only cascades to ACTIVE + FRESH artifacts (skip ARCHIVED/DELETED/SUMMARIZED/STALE)
|
|
17
|
+
* - Single audit entry per cascade invocation
|
|
18
|
+
*
|
|
19
|
+
* Spec trace: §4 I-23, §8 S18/S19, §19 Side Effects
|
|
20
|
+
*/
|
|
21
|
+
/** Maximum BFS depth to prevent unbounded traversal. */
|
|
22
|
+
const MAX_CASCADE_DEPTH = 10;
|
|
23
|
+
/**
|
|
24
|
+
* Walk the artifact dependency graph via BFS, marking transitive dependents as STALE.
|
|
25
|
+
*
|
|
26
|
+
* @param sourceArtifactIds - Artifact IDs that were just archived (cascade source)
|
|
27
|
+
* @param conn - Database connection (must be inside a transaction already)
|
|
28
|
+
* @param tenantId - Tenant ID for isolation (null for single-tenant)
|
|
29
|
+
* @param audit - Audit trail for recording the cascade
|
|
30
|
+
* @returns CascadeResult with affected count and IDs
|
|
31
|
+
*/
|
|
32
|
+
export function walkCascade(sourceArtifactIds, conn, tenantId, audit) {
|
|
33
|
+
if (sourceArtifactIds.length === 0) {
|
|
34
|
+
return { affectedCount: 0, affectedIds: [] };
|
|
35
|
+
}
|
|
36
|
+
// Visited set: `${artifactId}:${version}` — prevents cycles
|
|
37
|
+
const visited = new Set();
|
|
38
|
+
const affectedIds = [];
|
|
39
|
+
// BFS queue: each entry is { artifactId, depth }
|
|
40
|
+
const queue = [];
|
|
41
|
+
// Seed the queue with source artifact IDs
|
|
42
|
+
for (const id of sourceArtifactIds) {
|
|
43
|
+
queue.push({ artifactId: id, depth: 0 });
|
|
44
|
+
}
|
|
45
|
+
while (queue.length > 0) {
|
|
46
|
+
const current = queue.shift();
|
|
47
|
+
// Safety bound: stop if max depth exceeded
|
|
48
|
+
if (current.depth >= MAX_CASCADE_DEPTH) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
// Find all missions that depend on this artifact
|
|
52
|
+
// COALESCE tenant pattern (FM-10)
|
|
53
|
+
const dependentMissions = conn.query(`SELECT DISTINCT reading_mission_id
|
|
54
|
+
FROM core_artifact_dependencies
|
|
55
|
+
WHERE artifact_id = ?
|
|
56
|
+
AND COALESCE(tenant_id, '__NULL__') = COALESCE(?, '__NULL__')`, [current.artifactId, tenantId]);
|
|
57
|
+
for (const dep of dependentMissions) {
|
|
58
|
+
// Find ACTIVE + FRESH artifacts in this dependent mission
|
|
59
|
+
// COALESCE tenant pattern (FM-10)
|
|
60
|
+
const freshArtifacts = conn.query(`SELECT id, version
|
|
61
|
+
FROM core_artifacts
|
|
62
|
+
WHERE mission_id = ?
|
|
63
|
+
AND lifecycle_state = 'ACTIVE'
|
|
64
|
+
AND staleness_flag = 'FRESH'
|
|
65
|
+
AND COALESCE(tenant_id, '__NULL__') = COALESCE(?, '__NULL__')`, [dep.reading_mission_id, tenantId]);
|
|
66
|
+
for (const artifact of freshArtifacts) {
|
|
67
|
+
const visitKey = `${artifact.id}:${artifact.version}`;
|
|
68
|
+
// Skip already-visited artifacts (cycle prevention)
|
|
69
|
+
if (visited.has(visitKey)) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
visited.add(visitKey);
|
|
73
|
+
// Column-specific UPDATE: only staleness_flag — I-19 safe
|
|
74
|
+
// Uses version in WHERE clause for optimistic concurrency
|
|
75
|
+
const result = conn.run(`UPDATE core_artifacts
|
|
76
|
+
SET staleness_flag = 'STALE'
|
|
77
|
+
WHERE id = ? AND version = ?`, [artifact.id, artifact.version]);
|
|
78
|
+
if (result.changes > 0) {
|
|
79
|
+
affectedIds.push(visitKey);
|
|
80
|
+
// Add to BFS queue for further propagation
|
|
81
|
+
queue.push({ artifactId: artifact.id, depth: current.depth + 1 });
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Single audit entry per cascade invocation (not per artifact)
|
|
87
|
+
if (affectedIds.length > 0) {
|
|
88
|
+
audit.append(conn, {
|
|
89
|
+
tenantId,
|
|
90
|
+
actorType: 'system',
|
|
91
|
+
actorId: 'cascade_walker',
|
|
92
|
+
operation: 'cascade_stale',
|
|
93
|
+
resourceType: 'artifact',
|
|
94
|
+
resourceId: `cascade:${sourceArtifactIds.join(',')}`,
|
|
95
|
+
detail: {
|
|
96
|
+
sourceArtifactIds,
|
|
97
|
+
affectedCount: affectedIds.length,
|
|
98
|
+
affectedIds,
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
affectedCount: affectedIds.length,
|
|
104
|
+
affectedIds,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=cascade_walker.js.map
|