@vauban-org/agent-sdk 1.0.0 → 1.2.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/CONTRACT.md +6401 -813
- package/dist/adapters/llm/anthropic-direct.d.ts +1 -0
- package/dist/adapters/llm/anthropic-direct.d.ts.map +1 -1
- package/dist/adapters/llm/anthropic-direct.js +43 -0
- package/dist/adapters/llm/anthropic-direct.js.map +1 -1
- package/dist/adapters/llm/cascade.d.ts.map +1 -1
- package/dist/adapters/llm/cascade.js +57 -14
- package/dist/adapters/llm/cascade.js.map +1 -1
- package/dist/adapters/llm/litellm.d.ts +2 -0
- package/dist/adapters/llm/litellm.d.ts.map +1 -1
- package/dist/adapters/llm/litellm.js +44 -0
- package/dist/adapters/llm/litellm.js.map +1 -1
- package/dist/compute/difficulty-estimator.d.ts +53 -0
- package/dist/compute/difficulty-estimator.d.ts.map +1 -0
- package/dist/compute/difficulty-estimator.js +82 -0
- package/dist/compute/difficulty-estimator.js.map +1 -0
- package/dist/compute/strategies/mixture-of-agents.d.ts +40 -0
- package/dist/compute/strategies/mixture-of-agents.d.ts.map +1 -0
- package/dist/compute/strategies/mixture-of-agents.js +110 -0
- package/dist/compute/strategies/mixture-of-agents.js.map +1 -0
- package/dist/compute/strategies/tree-of-thoughts.d.ts +48 -0
- package/dist/compute/strategies/tree-of-thoughts.d.ts.map +1 -0
- package/dist/compute/strategies/tree-of-thoughts.js +242 -0
- package/dist/compute/strategies/tree-of-thoughts.js.map +1 -0
- package/dist/compute/strategies/two-phase-orient.d.ts +72 -0
- package/dist/compute/strategies/two-phase-orient.d.ts.map +1 -0
- package/dist/compute/strategies/two-phase-orient.js +85 -0
- package/dist/compute/strategies/two-phase-orient.js.map +1 -0
- package/dist/constitution/types.d.ts +10 -10
- package/dist/container/protocol.d.ts +134 -0
- package/dist/container/protocol.d.ts.map +1 -0
- package/dist/container/protocol.js +157 -0
- package/dist/container/protocol.js.map +1 -0
- package/dist/container/runtime.d.ts +140 -0
- package/dist/container/runtime.d.ts.map +1 -0
- package/dist/container/runtime.js +256 -0
- package/dist/container/runtime.js.map +1 -0
- package/dist/events/catalogue.d.ts +46 -46
- package/dist/events/schemas/agent.completed.v1.d.ts +4 -4
- package/dist/events/schemas/agent.failed.v1.d.ts +2 -2
- package/dist/events/schemas/agent.hitl_resolved.v1.d.ts +2 -2
- package/dist/events/schemas/agent.started.v1.d.ts +2 -2
- package/dist/events/schemas/brain.skill.extracted.v1.d.ts +4 -4
- package/dist/events/schemas/cc.cost.anomaly_detected.v1.d.ts +2 -2
- package/dist/events/schemas/cc.cost.recorded.v1.d.ts +4 -4
- package/dist/events/schemas/citadel.sprint.analyzed.v1.d.ts +6 -6
- package/dist/events/schemas/citadel.sprint.closed.v1.d.ts +2 -2
- package/dist/events/schemas/forge.inbox.reply_classified.v1.d.ts +6 -6
- package/dist/events/schemas/forge.lead.qualified.v1.d.ts +2 -2
- package/dist/events/schemas/forge.outreach.sent.v1.d.ts +4 -4
- package/dist/events/schemas/incident.detected.v1.d.ts +2 -2
- package/dist/events/schemas/vauban.goal.checked.v1.d.ts +2 -2
- package/dist/events/schemas/vauban.rebalancing.checked.v1.d.ts +2 -2
- package/dist/events/schemas/vauban.tax.checked.v1.d.ts +2 -2
- package/dist/events/schemas/vauban.vault.analyzed.v1.d.ts +6 -6
- package/dist/identity/agent-persona.d.ts +73 -0
- package/dist/identity/agent-persona.d.ts.map +1 -0
- package/dist/identity/agent-persona.js +165 -0
- package/dist/identity/agent-persona.js.map +1 -0
- package/dist/identity/persona-prompt.d.ts +25 -0
- package/dist/identity/persona-prompt.d.ts.map +1 -0
- package/dist/identity/persona-prompt.js +71 -0
- package/dist/identity/persona-prompt.js.map +1 -0
- package/dist/identity/persona-schema.d.ts +120 -0
- package/dist/identity/persona-schema.d.ts.map +1 -0
- package/dist/identity/persona-schema.js +103 -0
- package/dist/identity/persona-schema.js.map +1 -0
- package/dist/index.d.ts +37 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -1
- package/dist/index.js.map +1 -1
- package/dist/loop/minimal-loop.js +293 -287
- package/dist/memory/episodic-rrf.d.ts +114 -0
- package/dist/memory/episodic-rrf.d.ts.map +1 -0
- package/dist/memory/episodic-rrf.js +148 -0
- package/dist/memory/episodic-rrf.js.map +1 -0
- package/dist/mesh/attenuation.d.ts +78 -0
- package/dist/mesh/attenuation.d.ts.map +1 -0
- package/dist/mesh/attenuation.js +141 -0
- package/dist/mesh/attenuation.js.map +1 -0
- package/dist/mesh/delegate.d.ts +96 -0
- package/dist/mesh/delegate.d.ts.map +1 -0
- package/dist/mesh/delegate.js +172 -0
- package/dist/mesh/delegate.js.map +1 -0
- package/dist/mesh/dispatcher.d.ts +119 -0
- package/dist/mesh/dispatcher.d.ts.map +1 -0
- package/dist/mesh/dispatcher.js +207 -0
- package/dist/mesh/dispatcher.js.map +1 -0
- package/dist/mesh/index.d.ts +12 -0
- package/dist/mesh/index.d.ts.map +1 -0
- package/dist/mesh/index.js +11 -0
- package/dist/mesh/index.js.map +1 -0
- package/dist/mesh/types.d.ts +30 -0
- package/dist/mesh/types.d.ts.map +1 -0
- package/dist/mesh/types.js +11 -0
- package/dist/mesh/types.js.map +1 -0
- package/dist/orchestration/ooda/skills.d.ts +104 -0
- package/dist/orchestration/ooda/skills.d.ts.map +1 -1
- package/dist/orchestration/ooda/skills.js +106 -0
- package/dist/orchestration/ooda/skills.js.map +1 -1
- package/dist/ports/bastion-action.contract.test.d.ts +11 -0
- package/dist/ports/bastion-action.contract.test.d.ts.map +1 -0
- package/dist/ports/bastion-action.contract.test.js +238 -0
- package/dist/ports/bastion-action.contract.test.js.map +1 -0
- package/dist/ports/bastion-action.d.ts +133 -0
- package/dist/ports/bastion-action.d.ts.map +1 -0
- package/dist/ports/bastion-action.js +73 -0
- package/dist/ports/bastion-action.js.map +1 -0
- package/dist/ports/brain.d.ts +31 -0
- package/dist/ports/brain.d.ts.map +1 -1
- package/dist/ports/brain.js +115 -1
- package/dist/ports/brain.js.map +1 -1
- package/dist/ports/citadel-action.contract.test.d.ts +11 -0
- package/dist/ports/citadel-action.contract.test.d.ts.map +1 -0
- package/dist/ports/citadel-action.contract.test.js +317 -0
- package/dist/ports/citadel-action.contract.test.js.map +1 -0
- package/dist/ports/citadel-action.d.ts +111 -0
- package/dist/ports/citadel-action.d.ts.map +1 -0
- package/dist/ports/citadel-action.js +62 -0
- package/dist/ports/citadel-action.js.map +1 -0
- package/dist/ports/compliance-contract.d.ts +123 -0
- package/dist/ports/compliance-contract.d.ts.map +1 -0
- package/dist/ports/compliance-contract.js +35 -0
- package/dist/ports/compliance-contract.js.map +1 -0
- package/dist/ports/db.d.ts +38 -0
- package/dist/ports/db.d.ts.map +1 -1
- package/dist/ports/db.js +88 -1
- package/dist/ports/db.js.map +1 -1
- package/dist/ports/delegation.contract.test.d.ts +9 -0
- package/dist/ports/delegation.contract.test.d.ts.map +1 -0
- package/dist/ports/delegation.contract.test.js +337 -0
- package/dist/ports/delegation.contract.test.js.map +1 -0
- package/dist/ports/delegation.d.ts +134 -0
- package/dist/ports/delegation.d.ts.map +1 -0
- package/dist/ports/delegation.js +105 -0
- package/dist/ports/delegation.js.map +1 -0
- package/dist/ports/event-bus.d.ts +29 -0
- package/dist/ports/event-bus.d.ts.map +1 -1
- package/dist/ports/event-bus.js +106 -1
- package/dist/ports/event-bus.js.map +1 -1
- package/dist/ports/federation.contract.test.d.ts +9 -0
- package/dist/ports/federation.contract.test.d.ts.map +1 -0
- package/dist/ports/federation.contract.test.js +279 -0
- package/dist/ports/federation.contract.test.js.map +1 -0
- package/dist/ports/federation.d.ts +140 -0
- package/dist/ports/federation.d.ts.map +1 -0
- package/dist/ports/federation.js +57 -0
- package/dist/ports/federation.js.map +1 -0
- package/dist/ports/index.d.ts +28 -2
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js +17 -2
- package/dist/ports/index.js.map +1 -1
- package/dist/ports/llm-provider.d.ts +37 -0
- package/dist/ports/llm-provider.d.ts.map +1 -1
- package/dist/ports/llm-provider.js +99 -1
- package/dist/ports/llm-provider.js.map +1 -1
- package/dist/ports/logger.d.ts +27 -0
- package/dist/ports/logger.d.ts.map +1 -1
- package/dist/ports/logger.js +87 -0
- package/dist/ports/logger.js.map +1 -1
- package/dist/ports/manifest-registry.contract.test.d.ts +9 -0
- package/dist/ports/manifest-registry.contract.test.d.ts.map +1 -0
- package/dist/ports/manifest-registry.contract.test.js +246 -0
- package/dist/ports/manifest-registry.contract.test.js.map +1 -0
- package/dist/ports/manifest-registry.d.ts +116 -0
- package/dist/ports/manifest-registry.d.ts.map +1 -0
- package/dist/ports/manifest-registry.js +79 -0
- package/dist/ports/manifest-registry.js.map +1 -0
- package/dist/ports/observability.contract.test.d.ts +12 -0
- package/dist/ports/observability.contract.test.d.ts.map +1 -0
- package/dist/ports/observability.contract.test.js +260 -0
- package/dist/ports/observability.contract.test.js.map +1 -0
- package/dist/ports/observability.d.ts +98 -0
- package/dist/ports/observability.d.ts.map +1 -0
- package/dist/ports/observability.js +59 -0
- package/dist/ports/observability.js.map +1 -0
- package/dist/ports/outcome.d.ts +26 -0
- package/dist/ports/outcome.d.ts.map +1 -1
- package/dist/ports/outcome.js +62 -1
- package/dist/ports/outcome.js.map +1 -1
- package/dist/ports/privacy.contract.test.d.ts +12 -0
- package/dist/ports/privacy.contract.test.d.ts.map +1 -0
- package/dist/ports/privacy.contract.test.js +325 -0
- package/dist/ports/privacy.contract.test.js.map +1 -0
- package/dist/ports/privacy.d.ts +132 -0
- package/dist/ports/privacy.d.ts.map +1 -0
- package/dist/ports/privacy.js +83 -0
- package/dist/ports/privacy.js.map +1 -0
- package/dist/ports/tenant-context.contract.test.d.ts +14 -0
- package/dist/ports/tenant-context.contract.test.d.ts.map +1 -0
- package/dist/ports/tenant-context.contract.test.js +352 -0
- package/dist/ports/tenant-context.contract.test.js.map +1 -0
- package/dist/ports/tenant-context.d.ts +103 -0
- package/dist/ports/tenant-context.d.ts.map +1 -0
- package/dist/ports/tenant-context.js +48 -0
- package/dist/ports/tenant-context.js.map +1 -0
- package/dist/ports/vauban-finance-action.contract.test.d.ts +11 -0
- package/dist/ports/vauban-finance-action.contract.test.d.ts.map +1 -0
- package/dist/ports/vauban-finance-action.contract.test.js +260 -0
- package/dist/ports/vauban-finance-action.contract.test.js.map +1 -0
- package/dist/ports/vauban-finance-action.d.ts +106 -0
- package/dist/ports/vauban-finance-action.d.ts.map +1 -0
- package/dist/ports/vauban-finance-action.js +60 -0
- package/dist/ports/vauban-finance-action.js.map +1 -0
- package/dist/ports/workflow-runtime.d.ts +204 -0
- package/dist/ports/workflow-runtime.d.ts.map +1 -0
- package/dist/ports/workflow-runtime.js +72 -0
- package/dist/ports/workflow-runtime.js.map +1 -0
- package/dist/proof/cert-verify.d.ts +80 -0
- package/dist/proof/cert-verify.d.ts.map +1 -0
- package/dist/proof/cert-verify.js +178 -0
- package/dist/proof/cert-verify.js.map +1 -0
- package/dist/replay/replay.d.ts.map +1 -1
- package/dist/replay/replay.js +5 -1
- package/dist/replay/replay.js.map +1 -1
- package/dist/retry/index.d.ts +129 -0
- package/dist/retry/index.d.ts.map +1 -0
- package/dist/retry/index.js +156 -0
- package/dist/retry/index.js.map +1 -0
- package/dist/retry/presets.d.ts +39 -0
- package/dist/retry/presets.d.ts.map +1 -0
- package/dist/retry/presets.js +69 -0
- package/dist/retry/presets.js.map +1 -0
- package/dist/skill-loop/ab-runner.d.ts +67 -0
- package/dist/skill-loop/ab-runner.d.ts.map +1 -0
- package/dist/skill-loop/ab-runner.js +160 -0
- package/dist/skill-loop/ab-runner.js.map +1 -0
- package/dist/skill-loop/adoption.d.ts +67 -0
- package/dist/skill-loop/adoption.d.ts.map +1 -0
- package/dist/skill-loop/adoption.js +126 -0
- package/dist/skill-loop/adoption.js.map +1 -0
- package/dist/skill-loop/candidate.d.ts +45 -0
- package/dist/skill-loop/candidate.d.ts.map +1 -0
- package/dist/skill-loop/candidate.js +43 -0
- package/dist/skill-loop/candidate.js.map +1 -0
- package/dist/skill-loop/evaluator.d.ts +42 -0
- package/dist/skill-loop/evaluator.d.ts.map +1 -0
- package/dist/skill-loop/evaluator.js +184 -0
- package/dist/skill-loop/evaluator.js.map +1 -0
- package/dist/skill-loop/index.d.ts +27 -0
- package/dist/skill-loop/index.d.ts.map +1 -0
- package/dist/skill-loop/index.js +27 -0
- package/dist/skill-loop/index.js.map +1 -0
- package/dist/skill-loop/reflexion-replay.d.ts +87 -0
- package/dist/skill-loop/reflexion-replay.d.ts.map +1 -0
- package/dist/skill-loop/reflexion-replay.js +110 -0
- package/dist/skill-loop/reflexion-replay.js.map +1 -0
- package/dist/skill-loop/sign-off.d.ts +88 -0
- package/dist/skill-loop/sign-off.d.ts.map +1 -0
- package/dist/skill-loop/sign-off.js +146 -0
- package/dist/skill-loop/sign-off.js.map +1 -0
- package/dist/skill-loop/value-metric.d.ts +55 -0
- package/dist/skill-loop/value-metric.d.ts.map +1 -0
- package/dist/skill-loop/value-metric.js +69 -0
- package/dist/skill-loop/value-metric.js.map +1 -0
- package/dist/skill-loop/versioning.d.ts +36 -0
- package/dist/skill-loop/versioning.d.ts.map +1 -0
- package/dist/skill-loop/versioning.js +47 -0
- package/dist/skill-loop/versioning.js.map +1 -0
- package/dist/skill-manifest/anchor.d.ts +91 -0
- package/dist/skill-manifest/anchor.d.ts.map +1 -0
- package/dist/skill-manifest/anchor.js +331 -0
- package/dist/skill-manifest/anchor.js.map +1 -0
- package/dist/skill-manifest/builder.d.ts +47 -0
- package/dist/skill-manifest/builder.d.ts.map +1 -0
- package/dist/skill-manifest/builder.js +93 -0
- package/dist/skill-manifest/builder.js.map +1 -0
- package/dist/skill-manifest/index.d.ts +13 -0
- package/dist/skill-manifest/index.d.ts.map +1 -0
- package/dist/skill-manifest/index.js +9 -0
- package/dist/skill-manifest/index.js.map +1 -0
- package/dist/skill-manifest/types.d.ts +67 -0
- package/dist/skill-manifest/types.d.ts.map +1 -0
- package/dist/skill-manifest/types.js +16 -0
- package/dist/skill-manifest/types.js.map +1 -0
- package/dist/skill-manifest/verifier.d.ts +42 -0
- package/dist/skill-manifest/verifier.d.ts.map +1 -0
- package/dist/skill-manifest/verifier.js +136 -0
- package/dist/skill-manifest/verifier.js.map +1 -0
- package/dist/skills/brain-query.d.ts +4 -4
- package/dist/skills/brain-store.d.ts +6 -6
- package/dist/skills/errors.d.ts +15 -0
- package/dist/skills/errors.d.ts.map +1 -1
- package/dist/skills/errors.js +21 -0
- package/dist/skills/errors.js.map +1 -1
- package/dist/skills/hitl-request.d.ts +2 -2
- package/dist/skills/index.d.ts +3 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +4 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/markdown/loader.d.ts +52 -0
- package/dist/skills/markdown/loader.d.ts.map +1 -0
- package/dist/skills/markdown/loader.js +93 -0
- package/dist/skills/markdown/loader.js.map +1 -0
- package/dist/skills/markdown/schema.d.ts +432 -0
- package/dist/skills/markdown/schema.d.ts.map +1 -0
- package/dist/skills/markdown/schema.js +121 -0
- package/dist/skills/markdown/schema.js.map +1 -0
- package/dist/skills/poc-md-loader/markdown-loader.d.ts +77 -0
- package/dist/skills/poc-md-loader/markdown-loader.d.ts.map +1 -0
- package/dist/skills/poc-md-loader/markdown-loader.js +125 -0
- package/dist/skills/poc-md-loader/markdown-loader.js.map +1 -0
- package/dist/skills/poc-md-loader/runner.d.ts +24 -0
- package/dist/skills/poc-md-loader/runner.d.ts.map +1 -0
- package/dist/skills/poc-md-loader/runner.js +57 -0
- package/dist/skills/poc-md-loader/runner.js.map +1 -0
- package/dist/skills/poc-md-loader/vitest.poc.config.d.ts +3 -0
- package/dist/skills/poc-md-loader/vitest.poc.config.d.ts.map +1 -0
- package/dist/skills/poc-md-loader/vitest.poc.config.js +13 -0
- package/dist/skills/poc-md-loader/vitest.poc.config.js.map +1 -0
- package/dist/skills/poc-md-loader/web-search/script.d.ts +33 -0
- package/dist/skills/poc-md-loader/web-search/script.d.ts.map +1 -0
- package/dist/skills/poc-md-loader/web-search/script.js +75 -0
- package/dist/skills/poc-md-loader/web-search/script.js.map +1 -0
- package/dist/skills/record-outcome.d.ts +4 -4
- package/dist/skills/send-email.d.ts.map +1 -1
- package/dist/skills/send-email.js +15 -3
- package/dist/skills/send-email.js.map +1 -1
- package/dist/skills/slack-notify.d.ts +4 -4
- package/dist/skills/starknet-balance.d.ts +1 -1
- package/dist/skills/telegram-notify.d.ts +4 -4
- package/dist/skills/web-search.d.ts +1 -1
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/test-brain-port.d.ts +4 -0
- package/dist/testing/test-brain-port.d.ts.map +1 -1
- package/dist/testing/test-brain-port.js +75 -20
- package/dist/testing/test-brain-port.js.map +1 -1
- package/dist/testing/test-event-bus.d.ts.map +1 -1
- package/dist/testing/test-event-bus.js +89 -36
- package/dist/testing/test-event-bus.js.map +1 -1
- package/dist/trace/schema.d.ts +1 -1
- package/dist/trace/schema.d.ts.map +1 -1
- package/dist/trace/schema.js +1 -1
- package/dist/trace/schema.js.map +1 -1
- package/dist/verify/formal/index.d.ts +44 -0
- package/dist/verify/formal/index.d.ts.map +1 -0
- package/dist/verify/formal/index.js +98 -0
- package/dist/verify/formal/index.js.map +1 -0
- package/dist/verify/formal/policy.d.ts +105 -0
- package/dist/verify/formal/policy.d.ts.map +1 -0
- package/dist/verify/formal/policy.js +159 -0
- package/dist/verify/formal/policy.js.map +1 -0
- package/dist/verify/formal/result.d.ts +50 -0
- package/dist/verify/formal/result.d.ts.map +1 -0
- package/dist/verify/formal/result.js +21 -0
- package/dist/verify/formal/result.js.map +1 -0
- package/dist/verify/formal/solver.d.ts +67 -0
- package/dist/verify/formal/solver.d.ts.map +1 -0
- package/dist/verify/formal/solver.js +184 -0
- package/dist/verify/formal/solver.js.map +1 -0
- package/dist/verify/formal/spec-language.d.ts +80 -0
- package/dist/verify/formal/spec-language.d.ts.map +1 -0
- package/dist/verify/formal/spec-language.js +219 -0
- package/dist/verify/formal/spec-language.js.map +1 -0
- package/docs/attestation.md +199 -0
- package/docs/identity.md +193 -0
- package/package.json +34 -17
- package/src/adapters/llm/anthropic-direct.ts +51 -0
- package/src/adapters/llm/cascade.ts +64 -19
- package/src/adapters/llm/litellm.ts +49 -0
- package/src/compute/difficulty-estimator.ts +111 -0
- package/src/compute/strategies/mixture-of-agents.ts +150 -0
- package/src/compute/strategies/tree-of-thoughts.ts +293 -0
- package/src/compute/strategies/two-phase-orient.ts +147 -0
- package/src/container/protocol.ts +243 -0
- package/src/container/runtime.ts +424 -0
- package/src/db/migrations/026_formal_verify_results.sql +30 -0
- package/src/identity/agent-persona.ts +203 -0
- package/src/identity/persona-prompt.ts +84 -0
- package/src/identity/persona-schema.ts +127 -0
- package/src/index.ts +338 -1
- package/src/memory/episodic-rrf.ts +224 -0
- package/src/mesh/attenuation.ts +190 -0
- package/src/mesh/delegate.ts +254 -0
- package/src/mesh/dispatcher.ts +301 -0
- package/src/mesh/index.ts +39 -0
- package/src/mesh/types.ts +31 -0
- package/src/orchestration/ooda/skills.ts +177 -0
- package/src/ports/bastion-action.contract.test.ts +355 -0
- package/src/ports/bastion-action.ts +198 -0
- package/src/ports/brain.ts +177 -15
- package/src/ports/citadel-action.contract.test.ts +430 -0
- package/src/ports/citadel-action.ts +174 -0
- package/src/ports/compliance-contract.ts +191 -0
- package/src/ports/db.ts +98 -0
- package/src/ports/delegation.contract.test.ts +428 -0
- package/src/ports/delegation.ts +211 -0
- package/src/ports/event-bus.ts +133 -0
- package/src/ports/federation.contract.test.ts +355 -0
- package/src/ports/federation.ts +190 -0
- package/src/ports/index.ts +186 -1
- package/src/ports/llm-provider.ts +123 -0
- package/src/ports/logger.ts +104 -0
- package/src/ports/manifest-registry.contract.test.ts +324 -0
- package/src/ports/manifest-registry.ts +188 -0
- package/src/ports/observability.contract.test.ts +315 -0
- package/src/ports/observability.ts +150 -0
- package/src/ports/outcome.ts +69 -0
- package/src/ports/privacy.contract.test.ts +413 -0
- package/src/ports/privacy.ts +207 -0
- package/src/ports/tenant-context.contract.test.ts +454 -0
- package/src/ports/tenant-context.ts +150 -0
- package/src/ports/vauban-finance-action.contract.test.ts +335 -0
- package/src/ports/vauban-finance-action.ts +166 -0
- package/src/ports/workflow-runtime.ts +327 -0
- package/src/proof/cert-verify.ts +249 -0
- package/src/replay/replay.ts +11 -8
- package/src/retry/index.ts +227 -0
- package/src/retry/presets.ts +75 -0
- package/src/skill-loop/ab-runner.ts +196 -0
- package/src/skill-loop/adoption.ts +188 -0
- package/src/skill-loop/candidate.ts +75 -0
- package/src/skill-loop/evaluator.ts +238 -0
- package/src/skill-loop/index.ts +51 -0
- package/src/skill-loop/reflexion-replay.ts +173 -0
- package/src/skill-loop/sign-off.ts +247 -0
- package/src/skill-loop/value-metric.ts +120 -0
- package/src/skill-loop/versioning.ts +75 -0
- package/src/skill-manifest/anchor.ts +401 -0
- package/src/skill-manifest/builder.ts +129 -0
- package/src/skill-manifest/index.ts +18 -0
- package/src/skill-manifest/types.ts +72 -0
- package/src/skill-manifest/verifier.ts +198 -0
- package/src/skills/errors.ts +30 -2
- package/src/skills/index.ts +19 -0
- package/src/skills/markdown/loader.ts +129 -0
- package/src/skills/markdown/schema.ts +144 -0
- package/src/skills/poc-md-loader/e2e-parity.test.ts +237 -0
- package/src/skills/poc-md-loader/markdown-loader.ts +161 -0
- package/src/skills/poc-md-loader/runner.ts +82 -0
- package/src/skills/poc-md-loader/vitest.poc.config.ts +13 -0
- package/src/skills/poc-md-loader/web-search/SKILL.md +42 -0
- package/src/skills/poc-md-loader/web-search/script.ts +109 -0
- package/src/skills/send-email.ts +15 -3
- package/src/testing/test-brain-port.ts +98 -24
- package/src/testing/test-event-bus.ts +104 -43
- package/src/trace/schema.ts +1 -1
- package/src/verify/formal/index.ts +154 -0
- package/src/verify/formal/policy.ts +253 -0
- package/src/verify/formal/result.ts +52 -0
- package/src/verify/formal/solver.ts +235 -0
- package/src/verify/formal/spec-language.ts +274 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citadel-action.contract.test.js","sourceRoot":"","sources":["../../src/ports/citadel-action.contract.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CitadelActionPort — host adapter for Citadel governance operations.
|
|
3
|
+
*
|
|
4
|
+
* Implements tiered access control (T1-T4) per BYOA (Bring Your Own Agent) framework.
|
|
5
|
+
* Only T3+ agents can seal sprints, T1 is read-only, T4 requires on-chain signing.
|
|
6
|
+
*
|
|
7
|
+
* Source: MASTER-PLAN-v5.md §1.3 (CC service layer) + vauban-gouvernance/rules/ai/tiered-gates.md
|
|
8
|
+
*/
|
|
9
|
+
export type AgentTier = "T1" | "T2" | "T3" | "T4";
|
|
10
|
+
export type TaskStatus = "todo" | "in_progress" | "done" | "blocked" | "rejected";
|
|
11
|
+
export interface SprintInput {
|
|
12
|
+
readonly name: string;
|
|
13
|
+
readonly goal?: string;
|
|
14
|
+
readonly start_date?: string;
|
|
15
|
+
readonly end_date?: string;
|
|
16
|
+
readonly project_slug: string;
|
|
17
|
+
}
|
|
18
|
+
export interface TaskRef {
|
|
19
|
+
readonly ref: string;
|
|
20
|
+
readonly project: string;
|
|
21
|
+
readonly sprint: string;
|
|
22
|
+
readonly task_id: string;
|
|
23
|
+
}
|
|
24
|
+
export interface VerificationEvidence {
|
|
25
|
+
readonly passed: boolean;
|
|
26
|
+
readonly evidence_text: string;
|
|
27
|
+
readonly evidence_hash: string;
|
|
28
|
+
}
|
|
29
|
+
export interface DecisionInput {
|
|
30
|
+
readonly decision: string;
|
|
31
|
+
readonly context: string;
|
|
32
|
+
readonly options: readonly string[];
|
|
33
|
+
readonly chosen: string;
|
|
34
|
+
readonly rationale: string;
|
|
35
|
+
readonly tags?: readonly string[];
|
|
36
|
+
}
|
|
37
|
+
export interface ActionContext {
|
|
38
|
+
readonly agentId: string;
|
|
39
|
+
readonly agentTier: AgentTier;
|
|
40
|
+
readonly runId: string;
|
|
41
|
+
readonly tenantId?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface SprintRef {
|
|
44
|
+
readonly sprint_id: string;
|
|
45
|
+
readonly project_slug: string;
|
|
46
|
+
readonly name: string;
|
|
47
|
+
readonly created_at: Date;
|
|
48
|
+
}
|
|
49
|
+
export interface SealedSprintClaim {
|
|
50
|
+
readonly sprint_id: string;
|
|
51
|
+
readonly sealed_at: Date;
|
|
52
|
+
readonly verification_evidence_hash: string;
|
|
53
|
+
readonly sealed_by_agent: string;
|
|
54
|
+
readonly anchor_id?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface DecisionClaim {
|
|
57
|
+
readonly decision_id: string;
|
|
58
|
+
readonly created_at: Date;
|
|
59
|
+
readonly archived_to_brain: boolean;
|
|
60
|
+
readonly cascade_triggered?: boolean;
|
|
61
|
+
}
|
|
62
|
+
export interface CitadelActionPort {
|
|
63
|
+
/**
|
|
64
|
+
* Create a new sprint in a project.
|
|
65
|
+
* T2+ only. T1 throws CitadelTierViolationError.
|
|
66
|
+
*/
|
|
67
|
+
createSprint(input: SprintInput, ctx: ActionContext): Promise<SprintRef>;
|
|
68
|
+
/**
|
|
69
|
+
* Update task status within a sprint.
|
|
70
|
+
* T2+ can transition: todo→in_progress, in_progress→done, *→blocked.
|
|
71
|
+
* T3+ can seal (→done with verification).
|
|
72
|
+
*/
|
|
73
|
+
updateTaskStatus(ref: TaskRef, status: TaskStatus, ctx: ActionContext): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Seal a completed sprint with verification evidence.
|
|
76
|
+
* T3+ only. Emits SealedSprintClaim (anchor to L3 deferred Phase 1+).
|
|
77
|
+
* Verification evidence hash proves execution of verification_scenario.
|
|
78
|
+
*/
|
|
79
|
+
sealSprint(sprintId: string, evidence: VerificationEvidence, ctx: ActionContext): Promise<SealedSprintClaim>;
|
|
80
|
+
/**
|
|
81
|
+
* Record a decision to governance layer.
|
|
82
|
+
* T2+ can record. T3+ triggers optional ADR cascade hook.
|
|
83
|
+
* Returns DecisionClaim with Brain archive status.
|
|
84
|
+
*/
|
|
85
|
+
recordDecision(decision: DecisionInput, ctx: ActionContext): Promise<DecisionClaim>;
|
|
86
|
+
}
|
|
87
|
+
export declare class CitadelTierViolationError extends Error {
|
|
88
|
+
readonly required_tier: AgentTier;
|
|
89
|
+
readonly actual_tier: AgentTier;
|
|
90
|
+
readonly operation: string;
|
|
91
|
+
readonly cause?: unknown | undefined;
|
|
92
|
+
constructor(message: string, required_tier: AgentTier, actual_tier: AgentTier, operation: string, cause?: unknown | undefined);
|
|
93
|
+
}
|
|
94
|
+
export declare class CitadelTaskRefNotFoundError extends Error {
|
|
95
|
+
readonly task_ref: string;
|
|
96
|
+
readonly cause?: unknown | undefined;
|
|
97
|
+
constructor(task_ref: string, cause?: unknown | undefined);
|
|
98
|
+
}
|
|
99
|
+
export declare class CitadelSprintNotActiveError extends Error {
|
|
100
|
+
readonly sprint_id: string;
|
|
101
|
+
readonly current_status: string;
|
|
102
|
+
readonly cause?: unknown | undefined;
|
|
103
|
+
constructor(sprint_id: string, current_status: string, cause?: unknown | undefined);
|
|
104
|
+
}
|
|
105
|
+
export declare class CitadelInvalidStateTransitionError extends Error {
|
|
106
|
+
readonly current_status: TaskStatus;
|
|
107
|
+
readonly requested_status: TaskStatus;
|
|
108
|
+
readonly cause?: unknown | undefined;
|
|
109
|
+
constructor(current_status: TaskStatus, requested_status: TaskStatus, cause?: unknown | undefined);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=citadel-action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citadel-action.d.ts","sourceRoot":"","sources":["../../src/ports/citadel-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CitadelActionPort — host adapter for Citadel governance operations.
|
|
3
|
+
*
|
|
4
|
+
* Implements tiered access control (T1-T4) per BYOA (Bring Your Own Agent) framework.
|
|
5
|
+
* Only T3+ agents can seal sprints, T1 is read-only, T4 requires on-chain signing.
|
|
6
|
+
*
|
|
7
|
+
* Source: MASTER-PLAN-v5.md §1.3 (CC service layer) + vauban-gouvernance/rules/ai/tiered-gates.md
|
|
8
|
+
*/
|
|
9
|
+
// ─── Typed errors ─────────────────────────────────────────────────────────
|
|
10
|
+
export class CitadelTierViolationError extends Error {
|
|
11
|
+
required_tier;
|
|
12
|
+
actual_tier;
|
|
13
|
+
operation;
|
|
14
|
+
cause;
|
|
15
|
+
constructor(message, required_tier, actual_tier, operation, cause) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.required_tier = required_tier;
|
|
18
|
+
this.actual_tier = actual_tier;
|
|
19
|
+
this.operation = operation;
|
|
20
|
+
this.cause = cause;
|
|
21
|
+
this.name = "CitadelTierViolationError";
|
|
22
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export class CitadelTaskRefNotFoundError extends Error {
|
|
26
|
+
task_ref;
|
|
27
|
+
cause;
|
|
28
|
+
constructor(task_ref, cause) {
|
|
29
|
+
super(`Task not found: ${task_ref}`);
|
|
30
|
+
this.task_ref = task_ref;
|
|
31
|
+
this.cause = cause;
|
|
32
|
+
this.name = "CitadelTaskRefNotFoundError";
|
|
33
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class CitadelSprintNotActiveError extends Error {
|
|
37
|
+
sprint_id;
|
|
38
|
+
current_status;
|
|
39
|
+
cause;
|
|
40
|
+
constructor(sprint_id, current_status, cause) {
|
|
41
|
+
super(`Sprint ${sprint_id} is not active (status: ${current_status}). Cannot seal.`);
|
|
42
|
+
this.sprint_id = sprint_id;
|
|
43
|
+
this.current_status = current_status;
|
|
44
|
+
this.cause = cause;
|
|
45
|
+
this.name = "CitadelSprintNotActiveError";
|
|
46
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export class CitadelInvalidStateTransitionError extends Error {
|
|
50
|
+
current_status;
|
|
51
|
+
requested_status;
|
|
52
|
+
cause;
|
|
53
|
+
constructor(current_status, requested_status, cause) {
|
|
54
|
+
super(`Invalid state transition: ${current_status} → ${requested_status}`);
|
|
55
|
+
this.current_status = current_status;
|
|
56
|
+
this.requested_status = requested_status;
|
|
57
|
+
this.cause = cause;
|
|
58
|
+
this.name = "CitadelInvalidStateTransitionError";
|
|
59
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=citadel-action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citadel-action.js","sourceRoot":"","sources":["../../src/ports/citadel-action.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmHH,6EAA6E;AAE7E,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAGhC;IACA;IACA;IACA;IALlB,YACE,OAAe,EACC,aAAwB,EACxB,WAAsB,EACtB,SAAiB,EACjB,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,kBAAa,GAAb,aAAa,CAAW;QACxB,gBAAW,GAAX,WAAW,CAAW;QACtB,cAAS,GAAT,SAAS,CAAQ;QACjB,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAElC;IACA;IAFlB,YACkB,QAAgB,EAChB,KAAe;QAE/B,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAHrB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC1C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAElC;IACA;IACA;IAHlB,YACkB,SAAiB,EACjB,cAAsB,EACtB,KAAe;QAE/B,KAAK,CACH,UAAU,SAAS,2BAA2B,cAAc,iBAAiB,CAC9E,CAAC;QANc,cAAS,GAAT,SAAS,CAAQ;QACjB,mBAAc,GAAd,cAAc,CAAQ;QACtB,UAAK,GAAL,KAAK,CAAU;QAK/B,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC1C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,kCAAmC,SAAQ,KAAK;IAEzC;IACA;IACA;IAHlB,YACkB,cAA0B,EAC1B,gBAA4B,EAC5B,KAAe;QAE/B,KAAK,CAAC,6BAA6B,cAAc,MAAM,gBAAgB,EAAE,CAAC,CAAC;QAJ3D,mBAAc,GAAd,cAAc,CAAY;QAC1B,qBAAgB,GAAhB,gBAAgB,CAAY;QAC5B,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,oCAAoC,CAAC;QACjD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ComplianceContractPort — runtime compliance gate for the Vauban Integration Spine.
|
|
3
|
+
*
|
|
4
|
+
* Implements the G-2 Cedar pivot from S5 spec:
|
|
5
|
+
* - pre-step: block or warn before capability invocation
|
|
6
|
+
* - post-step: audit trail after invocation
|
|
7
|
+
* - validateManifest: conflict detection at registration
|
|
8
|
+
*
|
|
9
|
+
* Cedar policy bundles: eu.gdpr / eu.mica / eu.tfr (V0 scope per S5 Q5.1).
|
|
10
|
+
*/
|
|
11
|
+
export type Jurisdiction = "FR.v1" | "EU.v1" | "CH.v1" | "UK.v1" | "SG.v1";
|
|
12
|
+
export declare const SUPPORTED_JURISDICTIONS_V0: Jurisdiction[];
|
|
13
|
+
export type LegalBasisRef = "gdpr.art6_1_a" | "gdpr.art6_1_b" | "gdpr.art6_1_c" | "gdpr.art6_1_f" | "mica.art14" | "tfr.art4" | "cjeu.c520_21";
|
|
14
|
+
export type LegalBasisDomain = "processing" | "retention" | "transfer" | "consent";
|
|
15
|
+
export interface LegalBasisDecl {
|
|
16
|
+
domain: LegalBasisDomain;
|
|
17
|
+
basis: LegalBasisRef;
|
|
18
|
+
scope?: Jurisdiction[];
|
|
19
|
+
}
|
|
20
|
+
export type DataClass = "public" | "internal" | "confidential" | "secret";
|
|
21
|
+
export type EnforcementLevel = "block" | "warn" | "log";
|
|
22
|
+
export type RuleSource = "declared" | "normative";
|
|
23
|
+
export interface ComplianceRule {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
readonly source: RuleSource;
|
|
26
|
+
readonly jurisdiction: Jurisdiction;
|
|
27
|
+
readonly legal_ref: LegalBasisRef;
|
|
28
|
+
readonly enforcement: EnforcementLevel;
|
|
29
|
+
readonly rationale: string;
|
|
30
|
+
readonly authority?: string;
|
|
31
|
+
}
|
|
32
|
+
export type ComplianceMode = "strict" | "audit_only";
|
|
33
|
+
export interface ComplianceContract {
|
|
34
|
+
readonly jurisdictions: Jurisdiction[];
|
|
35
|
+
readonly legal_bases: LegalBasisDecl[];
|
|
36
|
+
readonly data_class: DataClass;
|
|
37
|
+
readonly mode: ComplianceMode;
|
|
38
|
+
readonly tier: string;
|
|
39
|
+
readonly rules: ComplianceRule[];
|
|
40
|
+
readonly retention: string;
|
|
41
|
+
readonly audit_format?: "json" | "pdf";
|
|
42
|
+
}
|
|
43
|
+
export interface CapabilityInvocation {
|
|
44
|
+
readonly action: string;
|
|
45
|
+
readonly tenantId: string;
|
|
46
|
+
readonly dataClass: DataClass;
|
|
47
|
+
readonly legalBasis?: LegalBasisRef;
|
|
48
|
+
readonly jurisdiction?: Jurisdiction;
|
|
49
|
+
readonly requiresConsent?: boolean;
|
|
50
|
+
readonly requiresVerifiedHuman?: boolean;
|
|
51
|
+
readonly stepIndex?: number;
|
|
52
|
+
readonly workflowRunId?: string;
|
|
53
|
+
}
|
|
54
|
+
export interface TenantContext {
|
|
55
|
+
readonly tenantId: string;
|
|
56
|
+
readonly glacisMode: "verified" | "degraded_verified" | "unverified";
|
|
57
|
+
readonly verifiedHuman: boolean;
|
|
58
|
+
readonly jurisdictions: Jurisdiction[];
|
|
59
|
+
}
|
|
60
|
+
export interface ComplianceViolation {
|
|
61
|
+
readonly ruleId: string;
|
|
62
|
+
readonly articleRef: string;
|
|
63
|
+
readonly description: string;
|
|
64
|
+
readonly severity: "block" | "warn";
|
|
65
|
+
readonly remediationHint?: string;
|
|
66
|
+
}
|
|
67
|
+
export type ComplianceGate = {
|
|
68
|
+
readonly decision: "proceed";
|
|
69
|
+
readonly warnings: ComplianceViolation[];
|
|
70
|
+
} | {
|
|
71
|
+
readonly decision: "block";
|
|
72
|
+
readonly violation: ComplianceViolation;
|
|
73
|
+
};
|
|
74
|
+
export interface ComplianceAuditResult {
|
|
75
|
+
readonly decision: "proceed" | "block" | "warn";
|
|
76
|
+
readonly violations: ComplianceViolation[];
|
|
77
|
+
readonly auditClaimEmitted: boolean;
|
|
78
|
+
readonly evaluatedRules: number;
|
|
79
|
+
}
|
|
80
|
+
export interface PolicyConflict {
|
|
81
|
+
readonly rule1Id: string;
|
|
82
|
+
readonly rule2Id: string;
|
|
83
|
+
readonly description: string;
|
|
84
|
+
readonly status: "CONFLICT" | "CONFLICT_UNDETERMINED";
|
|
85
|
+
}
|
|
86
|
+
export interface ManifestValidationResult {
|
|
87
|
+
readonly valid: boolean;
|
|
88
|
+
readonly conflicts: PolicyConflict[];
|
|
89
|
+
readonly missingLegalBases: string[];
|
|
90
|
+
readonly jurisdictionWarnings: string[];
|
|
91
|
+
readonly evaluationTimeMs: number;
|
|
92
|
+
}
|
|
93
|
+
export interface ComplianceContractPort {
|
|
94
|
+
/**
|
|
95
|
+
* Pre-step gate — called before any capability invocation.
|
|
96
|
+
* In 'strict' mode: block on first violation.
|
|
97
|
+
* In 'audit_only' mode: never block, accumulate warnings.
|
|
98
|
+
*/
|
|
99
|
+
preStep(invocation: CapabilityInvocation, contract: ComplianceContract, ctx: TenantContext): Promise<ComplianceGate>;
|
|
100
|
+
/**
|
|
101
|
+
* Post-step audit — called after capability invocation to emit audit claims.
|
|
102
|
+
* Always runs regardless of pre-step outcome.
|
|
103
|
+
*/
|
|
104
|
+
postStep(invocation: CapabilityInvocation, contract: ComplianceContract, ctx: TenantContext): Promise<ComplianceAuditResult>;
|
|
105
|
+
/**
|
|
106
|
+
* Manifest validation — called at registration, before any workflow runs.
|
|
107
|
+
* Cedar conflict detection per G-3. Timeout → CONFLICT_UNDETERMINED (not fail).
|
|
108
|
+
*/
|
|
109
|
+
validateManifest(contract: ComplianceContract, opts?: {
|
|
110
|
+
timeoutMs?: number;
|
|
111
|
+
}): Promise<ManifestValidationResult>;
|
|
112
|
+
}
|
|
113
|
+
export declare class CompliancePolicyError extends Error {
|
|
114
|
+
readonly ruleId: string;
|
|
115
|
+
readonly cause?: unknown | undefined;
|
|
116
|
+
constructor(message: string, ruleId: string, cause?: unknown | undefined);
|
|
117
|
+
}
|
|
118
|
+
export declare class ComplianceEvaluationTimeoutError extends Error {
|
|
119
|
+
readonly timeoutMs: number;
|
|
120
|
+
readonly cause?: unknown | undefined;
|
|
121
|
+
constructor(timeoutMs: number, cause?: unknown | undefined);
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=compliance-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compliance-contract.d.ts","sourceRoot":"","sources":["../../src/ports/compliance-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ComplianceContractPort — runtime compliance gate for the Vauban Integration Spine.
|
|
3
|
+
*
|
|
4
|
+
* Implements the G-2 Cedar pivot from S5 spec:
|
|
5
|
+
* - pre-step: block or warn before capability invocation
|
|
6
|
+
* - post-step: audit trail after invocation
|
|
7
|
+
* - validateManifest: conflict detection at registration
|
|
8
|
+
*
|
|
9
|
+
* Cedar policy bundles: eu.gdpr / eu.mica / eu.tfr (V0 scope per S5 Q5.1).
|
|
10
|
+
*/
|
|
11
|
+
export const SUPPORTED_JURISDICTIONS_V0 = ["FR.v1", "EU.v1"];
|
|
12
|
+
// ─── Typed errors ─────────────────────────────────────────────────────────────
|
|
13
|
+
export class CompliancePolicyError extends Error {
|
|
14
|
+
ruleId;
|
|
15
|
+
cause;
|
|
16
|
+
constructor(message, ruleId, cause) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.ruleId = ruleId;
|
|
19
|
+
this.cause = cause;
|
|
20
|
+
this.name = "CompliancePolicyError";
|
|
21
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export class ComplianceEvaluationTimeoutError extends Error {
|
|
25
|
+
timeoutMs;
|
|
26
|
+
cause;
|
|
27
|
+
constructor(timeoutMs, cause) {
|
|
28
|
+
super(`Compliance evaluation timed out after ${timeoutMs}ms`);
|
|
29
|
+
this.timeoutMs = timeoutMs;
|
|
30
|
+
this.cause = cause;
|
|
31
|
+
this.name = "ComplianceEvaluationTimeoutError";
|
|
32
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=compliance-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compliance-contract.js","sourceRoot":"","sources":["../../src/ports/compliance-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,CAAC,MAAM,0BAA0B,GAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAwJ7E,iFAAiF;AAEjF,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAG5B;IACA;IAHlB,YACE,OAAe,EACC,MAAc,EACd,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IAEvC;IACA;IAFlB,YACkB,SAAiB,EACjB,KAAe;QAE/B,KAAK,CAAC,yCAAyC,SAAS,IAAI,CAAC,CAAC;QAH9C,cAAS,GAAT,SAAS,CAAQ;QACjB,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;QAC/C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF"}
|
package/dist/ports/db.d.ts
CHANGED
|
@@ -2,7 +2,45 @@
|
|
|
2
2
|
* DbPort — re-export of the existing minimal DbClient shape from
|
|
3
3
|
* tracking/agent-run-tracker. Alias DbPort is the port-suffixed name
|
|
4
4
|
* used across other ports; DbClient remains exported for back-compat.
|
|
5
|
+
*
|
|
6
|
+
* OTel instrumentation: import { createTracedDbPort } to wrap any
|
|
7
|
+
* DbPort implementation with OpenTelemetry spans per query.
|
|
8
|
+
* Gracefully degrades to noop spans when no OTel SDK is installed.
|
|
5
9
|
*/
|
|
10
|
+
import type { DbClient } from "../tracking/agent-run-tracker.js";
|
|
6
11
|
export type { DbClient as DbPort } from "../tracking/agent-run-tracker.js";
|
|
7
12
|
export type { DbClient } from "../tracking/agent-run-tracker.js";
|
|
13
|
+
/**
|
|
14
|
+
* Thrown when the database connection is lost (ECONNREFUSED, pool exhausted,
|
|
15
|
+
* or TLS handshake failed). Callers should retry with exponential backoff
|
|
16
|
+
* once the connection pool is re-established.
|
|
17
|
+
*/
|
|
18
|
+
export declare class DbConnectionLostError extends Error {
|
|
19
|
+
readonly cause?: unknown | undefined;
|
|
20
|
+
constructor(message: string, cause?: unknown | undefined);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Thrown when a database query exceeds the configured statement_timeout or
|
|
24
|
+
* the caller-supplied timeoutMs. The query may have been cancelled by the
|
|
25
|
+
* server — retrying the same query without changes is unlikely to succeed.
|
|
26
|
+
*/
|
|
27
|
+
export declare class DbQueryTimeoutError extends Error {
|
|
28
|
+
readonly cause?: unknown | undefined;
|
|
29
|
+
/** The SQL statement that timed out (truncated for logging). */
|
|
30
|
+
readonly queryPreview: string;
|
|
31
|
+
/** Timeout that was exceeded, in milliseconds. */
|
|
32
|
+
readonly timeoutMs: number;
|
|
33
|
+
constructor(message: string, queryPreview: string, timeoutMs: number, cause?: unknown | undefined);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Wrap any DbPort implementation with OTel spans per query() call.
|
|
37
|
+
* The span captures the SQL preview (first 200 chars) and params count.
|
|
38
|
+
* Gracefully degrades to noop spans when no OTel SDK is installed.
|
|
39
|
+
*
|
|
40
|
+
* Usage:
|
|
41
|
+
* const raw: DbPort = pgPool;
|
|
42
|
+
* const traced = createTracedDbPort(raw);
|
|
43
|
+
* const { rows } = await traced.query("SELECT ...") // emits "db.query" span
|
|
44
|
+
*/
|
|
45
|
+
export declare function createTracedDbPort(impl: DbClient): DbClient;
|
|
8
46
|
//# sourceMappingURL=db.d.ts.map
|
package/dist/ports/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/ports/db.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/ports/db.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAIjE,YAAY,EAAE,QAAQ,IAAI,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC3E,YAAY,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAIjE;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;aACD,KAAK,CAAC,EAAE,OAAO;gBAAhD,OAAO,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,OAAO,YAAA;CAK7D;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAU1B,KAAK,CAAC,EAAE,OAAO;IATjC,gEAAgE;IAChE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAGzB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACD,KAAK,CAAC,EAAE,OAAO,YAAA;CAQlC;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAmC3D"}
|
package/dist/ports/db.js
CHANGED
|
@@ -1,2 +1,89 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* DbPort — re-export of the existing minimal DbClient shape from
|
|
3
|
+
* tracking/agent-run-tracker. Alias DbPort is the port-suffixed name
|
|
4
|
+
* used across other ports; DbClient remains exported for back-compat.
|
|
5
|
+
*
|
|
6
|
+
* OTel instrumentation: import { createTracedDbPort } to wrap any
|
|
7
|
+
* DbPort implementation with OpenTelemetry spans per query.
|
|
8
|
+
* Gracefully degrades to noop spans when no OTel SDK is installed.
|
|
9
|
+
*/
|
|
10
|
+
import { SpanStatusCode, trace } from "@opentelemetry/api";
|
|
11
|
+
const PORT_TRACER = trace.getTracer("vauban-agent-sdk.ports", "0.1.0");
|
|
12
|
+
// ─── Typed errors ─────────────────────────────────────────────────────────────
|
|
13
|
+
/**
|
|
14
|
+
* Thrown when the database connection is lost (ECONNREFUSED, pool exhausted,
|
|
15
|
+
* or TLS handshake failed). Callers should retry with exponential backoff
|
|
16
|
+
* once the connection pool is re-established.
|
|
17
|
+
*/
|
|
18
|
+
export class DbConnectionLostError extends Error {
|
|
19
|
+
cause;
|
|
20
|
+
constructor(message, cause) {
|
|
21
|
+
super(message);
|
|
22
|
+
this.cause = cause;
|
|
23
|
+
this.name = "DbConnectionLostError";
|
|
24
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Thrown when a database query exceeds the configured statement_timeout or
|
|
29
|
+
* the caller-supplied timeoutMs. The query may have been cancelled by the
|
|
30
|
+
* server — retrying the same query without changes is unlikely to succeed.
|
|
31
|
+
*/
|
|
32
|
+
export class DbQueryTimeoutError extends Error {
|
|
33
|
+
cause;
|
|
34
|
+
/** The SQL statement that timed out (truncated for logging). */
|
|
35
|
+
queryPreview;
|
|
36
|
+
/** Timeout that was exceeded, in milliseconds. */
|
|
37
|
+
timeoutMs;
|
|
38
|
+
constructor(message, queryPreview, timeoutMs, cause) {
|
|
39
|
+
super(message);
|
|
40
|
+
this.cause = cause;
|
|
41
|
+
this.name = "DbQueryTimeoutError";
|
|
42
|
+
this.queryPreview = queryPreview;
|
|
43
|
+
this.timeoutMs = timeoutMs;
|
|
44
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Wrap any DbPort implementation with OTel spans per query() call.
|
|
49
|
+
* The span captures the SQL preview (first 200 chars) and params count.
|
|
50
|
+
* Gracefully degrades to noop spans when no OTel SDK is installed.
|
|
51
|
+
*
|
|
52
|
+
* Usage:
|
|
53
|
+
* const raw: DbPort = pgPool;
|
|
54
|
+
* const traced = createTracedDbPort(raw);
|
|
55
|
+
* const { rows } = await traced.query("SELECT ...") // emits "db.query" span
|
|
56
|
+
*/
|
|
57
|
+
export function createTracedDbPort(impl) {
|
|
58
|
+
return {
|
|
59
|
+
async query(sql, params) {
|
|
60
|
+
return PORT_TRACER.startActiveSpan("db.query", {
|
|
61
|
+
attributes: {
|
|
62
|
+
"db.sql_preview": sql.slice(0, 200),
|
|
63
|
+
"db.params_count": params?.length ?? 0,
|
|
64
|
+
"vauban.port.name": "db",
|
|
65
|
+
},
|
|
66
|
+
}, async (span) => {
|
|
67
|
+
try {
|
|
68
|
+
const result = await impl.query(sql, params);
|
|
69
|
+
span.setAttributes({
|
|
70
|
+
"db.row_count": result.rowCount ?? result.rows.length,
|
|
71
|
+
});
|
|
72
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
77
|
+
span.setStatus({ code: SpanStatusCode.ERROR, message });
|
|
78
|
+
if (err instanceof Error)
|
|
79
|
+
span.recordException(err);
|
|
80
|
+
throw err;
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
span.end();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
2
89
|
//# sourceMappingURL=db.js.map
|
package/dist/ports/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/ports/db.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/ports/db.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3D,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;AAKvE,iFAAiF;AAEjF;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACD;IAA7C,YAAY,OAAe,EAAkB,KAAe;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,UAAK,GAAL,KAAK,CAAU;QAE1D,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAU1B;IATlB,gEAAgE;IACvD,YAAY,CAAS;IAC9B,kDAAkD;IACzC,SAAS,CAAS;IAE3B,YACE,OAAe,EACf,YAAoB,EACpB,SAAiB,EACD,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAc;IAC/C,OAAO;QACL,KAAK,CAAC,KAAK,CACT,GAAW,EACX,MAAkB;YAElB,OAAO,WAAW,CAAC,eAAe,CAChC,UAAU,EACV;gBACE,UAAU,EAAE;oBACV,gBAAgB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;oBACnC,iBAAiB,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;oBACtC,kBAAkB,EAAE,IAAI;iBACzB;aACF,EACD,KAAK,EAAE,IAAU,EAAE,EAAE;gBACnB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAI,GAAG,EAAE,MAAM,CAAC,CAAC;oBAChD,IAAI,CAAC,aAAa,CAAC;wBACjB,cAAc,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM;qBACtD,CAAC,CAAC;oBACH,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5C,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;oBACxD,IAAI,GAAG,YAAY,KAAK;wBAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;oBACpD,MAAM,GAAG,CAAC;gBACZ,CAAC;wBAAS,CAAC;oBACT,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,CAAC;YACH,CAAC,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DelegationPort contract tests (S7 spec).
|
|
3
|
+
*
|
|
4
|
+
* Applied to any DelegationPort implementation.
|
|
5
|
+
* Verifies: narrowing R-1 invariant, chain verification, revocation cascade,
|
|
6
|
+
* depth limits, signature validation, cycle detection, temporal frame nesting.
|
|
7
|
+
*/
|
|
8
|
+
export declare const delegationPortContract: (factory: () => any) => void;
|
|
9
|
+
//# sourceMappingURL=delegation.contract.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation.contract.test.d.ts","sourceRoot":"","sources":["../../src/ports/delegation.contract.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2DH,eAAO,MAAM,sBAAsB,GAAI,SAAS,MAAM,GAAG,SA4SxD,CAAC"}
|