@vauban-org/agent-sdk 1.0.0 → 1.3.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 +6918 -742
- 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 +41 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -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/agent.d.ts.map +1 -1
- package/dist/orchestration/ooda/agent.js +36 -0
- package/dist/orchestration/ooda/agent.js.map +1 -1
- 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/orchestration/ooda/types.d.ts +11 -0
- package/dist/orchestration/ooda/types.d.ts.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/_secrets.d.ts +16 -0
- package/dist/skills/_secrets.d.ts.map +1 -0
- package/dist/skills/_secrets.js +20 -0
- package/dist/skills/_secrets.js.map +1 -0
- package/dist/skills/alpaca-quote.d.ts +2 -2
- package/dist/skills/alpaca-quote.d.ts.map +1 -1
- package/dist/skills/alpaca-quote.js +51 -20
- package/dist/skills/alpaca-quote.js.map +1 -1
- 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 +2 -2
- package/dist/skills/send-email.d.ts.map +1 -1
- package/dist/skills/send-email.js +4 -3
- package/dist/skills/send-email.js.map +1 -1
- package/dist/skills/slack-notify.d.ts +4 -4
- package/dist/skills/slack-notify.d.ts.map +1 -1
- package/dist/skills/slack-notify.js +52 -21
- package/dist/skills/slack-notify.js.map +1 -1
- package/dist/skills/starknet-balance.d.ts +1 -1
- package/dist/skills/telegram-notify.d.ts +4 -4
- package/dist/skills/telegram-notify.d.ts.map +1 -1
- package/dist/skills/telegram-notify.js +48 -19
- package/dist/skills/telegram-notify.js.map +1 -1
- package/dist/skills/web-search.d.ts +1 -1
- package/dist/skills/web-search.d.ts.map +1 -1
- package/dist/skills/web-search.js +85 -40
- package/dist/skills/web-search.js.map +1 -1
- package/dist/telemetry/bus.d.ts +54 -0
- package/dist/telemetry/bus.d.ts.map +1 -0
- package/dist/telemetry/bus.js +159 -0
- package/dist/telemetry/bus.js.map +1 -0
- package/dist/telemetry/index.d.ts +35 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +30 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/port.d.ts +121 -0
- package/dist/telemetry/port.d.ts.map +1 -0
- package/dist/telemetry/port.js +48 -0
- package/dist/telemetry/port.js.map +1 -0
- package/dist/telemetry/sinks/otlp.d.ts +45 -0
- package/dist/telemetry/sinks/otlp.d.ts.map +1 -0
- package/dist/telemetry/sinks/otlp.js +195 -0
- package/dist/telemetry/sinks/otlp.js.map +1 -0
- package/dist/telemetry/sinks/sqlite.d.ts +32 -0
- package/dist/telemetry/sinks/sqlite.d.ts.map +1 -0
- package/dist/telemetry/sinks/sqlite.js +170 -0
- package/dist/telemetry/sinks/sqlite.js.map +1 -0
- package/dist/telemetry/sinks/stdout.d.ts +22 -0
- package/dist/telemetry/sinks/stdout.d.ts.map +1 -0
- package/dist/telemetry/sinks/stdout.js +38 -0
- package/dist/telemetry/sinks/stdout.js.map +1 -0
- 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/docs/telemetry/migration.md +155 -0
- package/docs/telemetry/overview.md +154 -0
- package/docs/telemetry/privacy.md +127 -0
- package/docs/telemetry/sinks/cc.md +155 -0
- package/docs/telemetry/sinks/otlp.md +146 -0
- package/docs/telemetry/sinks/sqlite.md +126 -0
- package/docs/telemetry/sinks/stdout.md +82 -0
- package/package.json +18 -2
- 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 +368 -2
- 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/agent.ts +50 -0
- package/src/orchestration/ooda/skills.ts +177 -0
- package/src/orchestration/ooda/types.ts +12 -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/_secrets.ts +25 -0
- package/src/skills/alpaca-quote.ts +68 -23
- 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 +4 -3
- package/src/skills/slack-notify.ts +73 -30
- package/src/skills/telegram-notify.ts +70 -24
- package/src/skills/web-search.ts +132 -50
- package/src/telemetry/bus.test.ts +231 -0
- package/src/telemetry/bus.ts +241 -0
- package/src/telemetry/index.ts +49 -0
- package/src/telemetry/port.ts +160 -0
- package/src/telemetry/sinks/otlp.test.ts +146 -0
- package/src/telemetry/sinks/otlp.ts +250 -0
- package/src/telemetry/sinks/sqlite.test.ts +121 -0
- package/src/telemetry/sinks/sqlite.ts +260 -0
- package/src/telemetry/sinks/stdout.test.ts +109 -0
- package/src/telemetry/sinks/stdout.ts +59 -0
- 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":"solver.d.ts","sourceRoot":"","sources":["../../../src/verify/formal/solver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID;;;;;;;;;;;;GAYG;AACH,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,cAAc,CAAC,CAmHzB;AAWD,wBAAsB,aAAa,CAAC,MAAM,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA8BnE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/verify/formal/solver.ts
|
|
3
|
+
*
|
|
4
|
+
* Sprint-587 — Z3 SMT solver wrapper.
|
|
5
|
+
*
|
|
6
|
+
* Strategy : avoid adding `z3-solver` as a hard npm dependency (heavy WASM
|
|
7
|
+
* package, ~5MB) by spawning the `z3` binary as a subprocess and piping
|
|
8
|
+
* SMT-LIB v2 source on stdin. If `z3` is not in PATH, the wrapper degrades
|
|
9
|
+
* gracefully by returning `{ sat: null }` so callers can map that to the
|
|
10
|
+
* UNKNOWN state.
|
|
11
|
+
*
|
|
12
|
+
* This keeps the SDK lean : consumers that want formal verification install
|
|
13
|
+
* `z3` system-wide (apt / brew / scoop). Consumers that do not, get UNKNOWN
|
|
14
|
+
* results and can route them according to their policy.
|
|
15
|
+
*
|
|
16
|
+
* @module verify/formal/solver
|
|
17
|
+
*/
|
|
18
|
+
import { spawn } from "node:child_process";
|
|
19
|
+
import { performance } from "node:perf_hooks";
|
|
20
|
+
const DEFAULT_TIMEOUT_MS = 5000;
|
|
21
|
+
/**
|
|
22
|
+
* Run a single SMT-LIB v2 formula through Z3 and return the satisfiability
|
|
23
|
+
* outcome.
|
|
24
|
+
*
|
|
25
|
+
* Convention : the caller frames the property as a NEGATION (i.e. asserts the
|
|
26
|
+
* conjunction of preconditions AND the negation of the postcondition). Then :
|
|
27
|
+
* - `sat` → counterexample found → property VIOLATED → UNSAFE
|
|
28
|
+
* - `unsat` → no counterexample exists → property HOLDS → SAFE
|
|
29
|
+
* - `unknown` / timeout / missing binary → UNKNOWN
|
|
30
|
+
*
|
|
31
|
+
* The function never throws : transport errors and missing binaries are
|
|
32
|
+
* surfaced via `sat: null` with a `reason` string.
|
|
33
|
+
*/
|
|
34
|
+
export async function checkSmt(smtFormula, options = {}) {
|
|
35
|
+
const timeoutMs = options.timeout_ms ?? DEFAULT_TIMEOUT_MS;
|
|
36
|
+
const z3Path = options.z3_path ?? "z3";
|
|
37
|
+
const start = performance.now();
|
|
38
|
+
return new Promise((resolve) => {
|
|
39
|
+
let child;
|
|
40
|
+
try {
|
|
41
|
+
child = spawn(z3Path, ["-in", `-T:${Math.ceil(timeoutMs / 1000)}`], {
|
|
42
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
resolve({
|
|
47
|
+
sat: null,
|
|
48
|
+
time_ms: performance.now() - start,
|
|
49
|
+
reason: `z3 spawn failed : ${err instanceof Error ? err.message : String(err)}`,
|
|
50
|
+
});
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
let stdout = "";
|
|
54
|
+
let stderr = "";
|
|
55
|
+
let settled = false;
|
|
56
|
+
const settle = (r) => {
|
|
57
|
+
if (settled)
|
|
58
|
+
return;
|
|
59
|
+
settled = true;
|
|
60
|
+
resolve(r);
|
|
61
|
+
};
|
|
62
|
+
const timer = setTimeout(() => {
|
|
63
|
+
try {
|
|
64
|
+
child.kill("SIGKILL");
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
/* ignored */
|
|
68
|
+
}
|
|
69
|
+
settle({
|
|
70
|
+
sat: null,
|
|
71
|
+
time_ms: performance.now() - start,
|
|
72
|
+
reason: `z3 timeout after ${timeoutMs}ms`,
|
|
73
|
+
});
|
|
74
|
+
}, timeoutMs);
|
|
75
|
+
child.stdout.on("data", (chunk) => {
|
|
76
|
+
stdout += chunk.toString();
|
|
77
|
+
});
|
|
78
|
+
child.stderr.on("data", (chunk) => {
|
|
79
|
+
stderr += chunk.toString();
|
|
80
|
+
});
|
|
81
|
+
child.on("error", (err) => {
|
|
82
|
+
clearTimeout(timer);
|
|
83
|
+
settle({
|
|
84
|
+
sat: null,
|
|
85
|
+
time_ms: performance.now() - start,
|
|
86
|
+
reason: `z3 not available : ${err.message}`,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
child.on("close", (code) => {
|
|
90
|
+
clearTimeout(timer);
|
|
91
|
+
const time_ms = performance.now() - start;
|
|
92
|
+
// z3 exits 0 even on `unsat`; non-zero usually means parse error.
|
|
93
|
+
const out = stdout.trim();
|
|
94
|
+
const firstLine = out.split(/\r?\n/)[0]?.trim() ?? "";
|
|
95
|
+
if (firstLine === "sat") {
|
|
96
|
+
// Extract model block if present (everything after the first line).
|
|
97
|
+
const modelStart = out.indexOf("\n");
|
|
98
|
+
const model = modelStart >= 0 ? out.slice(modelStart + 1).trim() : undefined;
|
|
99
|
+
settle({ sat: true, model: model || undefined, time_ms });
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (firstLine === "unsat") {
|
|
103
|
+
settle({ sat: false, time_ms });
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (firstLine === "unknown") {
|
|
107
|
+
settle({
|
|
108
|
+
sat: null,
|
|
109
|
+
time_ms,
|
|
110
|
+
reason: "z3 returned unknown (likely timeout or undecidable fragment)",
|
|
111
|
+
});
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
// Parse error or other failure : surface stderr.
|
|
115
|
+
settle({
|
|
116
|
+
sat: null,
|
|
117
|
+
time_ms,
|
|
118
|
+
reason: `z3 unexpected output (exit ${code}) : ${(stderr || out).slice(0, 200)}`,
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
try {
|
|
122
|
+
child.stdin.write(smtFormula);
|
|
123
|
+
child.stdin.end();
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
clearTimeout(timer);
|
|
127
|
+
settle({
|
|
128
|
+
sat: null,
|
|
129
|
+
time_ms: performance.now() - start,
|
|
130
|
+
reason: `z3 stdin write failed : ${err instanceof Error ? err.message : String(err)}`,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Probe : check whether a usable `z3` binary is reachable.
|
|
137
|
+
* Returns `true` if `z3 --version` exits 0 within 1s.
|
|
138
|
+
*
|
|
139
|
+
* Cached for the lifetime of the process — the binary's presence does not
|
|
140
|
+
* change at runtime.
|
|
141
|
+
*/
|
|
142
|
+
let z3Available;
|
|
143
|
+
export async function isZ3Available(z3Path = "z3") {
|
|
144
|
+
if (z3Available !== undefined)
|
|
145
|
+
return z3Available;
|
|
146
|
+
z3Available = await new Promise((resolve) => {
|
|
147
|
+
let child;
|
|
148
|
+
try {
|
|
149
|
+
child = spawn(z3Path, ["--version"], {
|
|
150
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
resolve(false);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const t = setTimeout(() => {
|
|
158
|
+
try {
|
|
159
|
+
child.kill("SIGKILL");
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
/* ignored */
|
|
163
|
+
}
|
|
164
|
+
resolve(false);
|
|
165
|
+
}, 1000);
|
|
166
|
+
child.on("error", () => {
|
|
167
|
+
clearTimeout(t);
|
|
168
|
+
resolve(false);
|
|
169
|
+
});
|
|
170
|
+
child.on("close", (code) => {
|
|
171
|
+
clearTimeout(t);
|
|
172
|
+
resolve(code === 0);
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
return z3Available;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Test-only helper to reset the cached availability probe.
|
|
179
|
+
* @internal
|
|
180
|
+
*/
|
|
181
|
+
export function __resetZ3AvailabilityCache() {
|
|
182
|
+
z3Available = undefined;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=solver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solver.js","sourceRoot":"","sources":["../../../src/verify/formal/solver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/verify/formal/spec-language.ts
|
|
3
|
+
*
|
|
4
|
+
* Sprint-587 — DSL for axiom specifications, compiled to SMT-LIB v2.
|
|
5
|
+
*
|
|
6
|
+
* Design philosophy (inspired by FormalJudge, arXiv:2602.11136) : agent-cycle
|
|
7
|
+
* properties are expressed as small, typed pre/post-condition tuples. Each
|
|
8
|
+
* condition is mapped to an SMT-LIB fragment by {@link compileToSmt}, which
|
|
9
|
+
* frames the property as a NEGATION of the post-conditions under the
|
|
10
|
+
* pre-conditions. This way, Z3 returning `sat` means a counterexample exists
|
|
11
|
+
* (= UNSAFE) and `unsat` means the post-conditions hold (= SAFE).
|
|
12
|
+
*
|
|
13
|
+
* Bound types : Reals for budgets and ratios, Bools for binary properties,
|
|
14
|
+
* Sets-as-symbols for scope subset checks.
|
|
15
|
+
*
|
|
16
|
+
* @module verify/formal/spec-language
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* One verifiable axiom-level property.
|
|
20
|
+
*/
|
|
21
|
+
export interface AxiomSpec {
|
|
22
|
+
/** Human-readable axiom label (e.g. "Robuste", "Profitable"). */
|
|
23
|
+
axiom: string;
|
|
24
|
+
/** Conditions that must hold for the spec to be meaningful. */
|
|
25
|
+
preconditions: Condition[];
|
|
26
|
+
/** Conditions whose conjunction defines the post-state to verify. */
|
|
27
|
+
postconditions: Condition[];
|
|
28
|
+
/** Solver timeout in ms — see {@link DEFAULT_POLICIES}. */
|
|
29
|
+
timeout_ms?: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Tagged union of all supported condition kinds.
|
|
33
|
+
*
|
|
34
|
+
* `custom_smt` is the escape hatch : the consumer supplies a raw SMT-LIB
|
|
35
|
+
* fragment that will be inlined under an `(assert ...)`. Use sparingly —
|
|
36
|
+
* mistakes here are silent semantic bugs.
|
|
37
|
+
*/
|
|
38
|
+
export type Condition = {
|
|
39
|
+
type: "budget_constraint";
|
|
40
|
+
child_max_fraction: number;
|
|
41
|
+
} | {
|
|
42
|
+
type: "scope_subset";
|
|
43
|
+
parent_scope: string[];
|
|
44
|
+
child_scope: string[];
|
|
45
|
+
} | {
|
|
46
|
+
type: "no_pii_in_output";
|
|
47
|
+
pii_count_var?: string;
|
|
48
|
+
} | {
|
|
49
|
+
type: "cost_positive_roi";
|
|
50
|
+
min_roi_ratio: number;
|
|
51
|
+
} | {
|
|
52
|
+
type: "response_time";
|
|
53
|
+
max_ms: number;
|
|
54
|
+
} | {
|
|
55
|
+
type: "custom_smt";
|
|
56
|
+
smt_fragment: string;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Compile an {@link AxiomSpec} into an SMT-LIB v2 program string.
|
|
60
|
+
*
|
|
61
|
+
* Pattern : preconditions are asserted as-is ; postconditions are joined by
|
|
62
|
+
* conjunction and asserted NEGATED. A counterexample (z3 returns `sat`)
|
|
63
|
+
* therefore means : "pre-conditions hold AND at least one post-condition
|
|
64
|
+
* fails" — i.e. an UNSAFE outcome.
|
|
65
|
+
*
|
|
66
|
+
* Includes `(check-sat)` and `(get-model)` as terminating commands.
|
|
67
|
+
*/
|
|
68
|
+
export declare function compileToSmt(spec: AxiomSpec): string;
|
|
69
|
+
/**
|
|
70
|
+
* Default per-axiom AxiomSpec presets. Consumers can override the timeout
|
|
71
|
+
* or augment with additional conditions before passing to `formalVerify`.
|
|
72
|
+
*
|
|
73
|
+
* Robuste : 5s — engineering robustness, may need richer checks
|
|
74
|
+
* Institutionnel : 10s — strongest spec, PII + scope-subset + budget
|
|
75
|
+
* SOTA : 2s — lightweight (single ROI check on cost)
|
|
76
|
+
* AntiFragile : 1s — response-time bound only
|
|
77
|
+
* Profitable : 1s — cost-vs-value ROI check
|
|
78
|
+
*/
|
|
79
|
+
export declare const AXIOM_SPECS: Record<string, AxiomSpec>;
|
|
80
|
+
//# sourceMappingURL=spec-language.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-language.d.ts","sourceRoot":"","sources":["../../../src/verify/formal/spec-language.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,qEAAqE;IACrE,cAAc,EAAE,SAAS,EAAE,CAAC;IAC5B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAiGjD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAoEpD;AAMD;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAqCjD,CAAC"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/verify/formal/spec-language.ts
|
|
3
|
+
*
|
|
4
|
+
* Sprint-587 — DSL for axiom specifications, compiled to SMT-LIB v2.
|
|
5
|
+
*
|
|
6
|
+
* Design philosophy (inspired by FormalJudge, arXiv:2602.11136) : agent-cycle
|
|
7
|
+
* properties are expressed as small, typed pre/post-condition tuples. Each
|
|
8
|
+
* condition is mapped to an SMT-LIB fragment by {@link compileToSmt}, which
|
|
9
|
+
* frames the property as a NEGATION of the post-conditions under the
|
|
10
|
+
* pre-conditions. This way, Z3 returning `sat` means a counterexample exists
|
|
11
|
+
* (= UNSAFE) and `unsat` means the post-conditions hold (= SAFE).
|
|
12
|
+
*
|
|
13
|
+
* Bound types : Reals for budgets and ratios, Bools for binary properties,
|
|
14
|
+
* Sets-as-symbols for scope subset checks.
|
|
15
|
+
*
|
|
16
|
+
* @module verify/formal/spec-language
|
|
17
|
+
*/
|
|
18
|
+
function ensureDecl(ctx, decl, name) {
|
|
19
|
+
if (ctx.declared.has(name))
|
|
20
|
+
return;
|
|
21
|
+
ctx.declared.add(name);
|
|
22
|
+
ctx.declarations.push(decl);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Lower a single Condition into SMT-LIB assertions appended to `ctx`.
|
|
26
|
+
* `negated` flag : when true, the condition is being added as a negated
|
|
27
|
+
* post-condition (i.e. we want to find a counterexample).
|
|
28
|
+
*/
|
|
29
|
+
function lowerCondition(c, ctx, negated) {
|
|
30
|
+
switch (c.type) {
|
|
31
|
+
case "budget_constraint": {
|
|
32
|
+
// parent_budget >= 0, child_budget >= 0, child_budget <= parent_budget * fraction
|
|
33
|
+
ensureDecl(ctx, "(declare-const parent_budget Real)", "parent_budget");
|
|
34
|
+
ensureDecl(ctx, "(declare-const child_budget Real)", "child_budget");
|
|
35
|
+
// Positivity is part of the pre-state, always assert.
|
|
36
|
+
ctx.assertions.push("(assert (>= parent_budget 0))");
|
|
37
|
+
ctx.assertions.push("(assert (>= child_budget 0))");
|
|
38
|
+
const expr = `(<= child_budget (* parent_budget ${c.child_max_fraction}))`;
|
|
39
|
+
ctx.assertions.push(`(assert ${negated ? `(not ${expr})` : expr})`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
case "scope_subset": {
|
|
43
|
+
// Encode each child element as a Bool : it must be present in parent.
|
|
44
|
+
// We do this by reducing to a boolean conjunction over the listed
|
|
45
|
+
// child elements. Mismatches surface as a counterexample.
|
|
46
|
+
const parentSet = new Set(c.parent_scope);
|
|
47
|
+
const childOk = c.child_scope.every((s) => parentSet.has(s));
|
|
48
|
+
// No declarations needed — fold the result statically into a bool.
|
|
49
|
+
const expr = childOk ? "true" : "false";
|
|
50
|
+
ctx.assertions.push(`(assert ${negated ? `(not ${expr})` : expr})`);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
case "no_pii_in_output": {
|
|
54
|
+
const name = c.pii_count_var ?? "pii_count";
|
|
55
|
+
ensureDecl(ctx, `(declare-const ${name} Int)`, name);
|
|
56
|
+
// pii_count >= 0 (always)
|
|
57
|
+
ctx.assertions.push(`(assert (>= ${name} 0))`);
|
|
58
|
+
const expr = `(= ${name} 0)`;
|
|
59
|
+
ctx.assertions.push(`(assert ${negated ? `(not ${expr})` : expr})`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
case "cost_positive_roi": {
|
|
63
|
+
ensureDecl(ctx, "(declare-const cost Real)", "cost");
|
|
64
|
+
ensureDecl(ctx, "(declare-const value Real)", "value");
|
|
65
|
+
ctx.assertions.push("(assert (> cost 0))");
|
|
66
|
+
ctx.assertions.push("(assert (>= value 0))");
|
|
67
|
+
const expr = `(>= (/ value cost) ${c.min_roi_ratio})`;
|
|
68
|
+
ctx.assertions.push(`(assert ${negated ? `(not ${expr})` : expr})`);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
case "response_time": {
|
|
72
|
+
ensureDecl(ctx, "(declare-const response_ms Real)", "response_ms");
|
|
73
|
+
ctx.assertions.push("(assert (>= response_ms 0))");
|
|
74
|
+
const expr = `(<= response_ms ${c.max_ms})`;
|
|
75
|
+
ctx.assertions.push(`(assert ${negated ? `(not ${expr})` : expr})`);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
case "custom_smt": {
|
|
79
|
+
const frag = c.smt_fragment.trim();
|
|
80
|
+
// The custom fragment is expected to be a parenthesised assertion body.
|
|
81
|
+
if (negated) {
|
|
82
|
+
ctx.assertions.push(`(assert (not ${frag}))`);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
ctx.assertions.push(`(assert ${frag})`);
|
|
86
|
+
}
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Compile an {@link AxiomSpec} into an SMT-LIB v2 program string.
|
|
93
|
+
*
|
|
94
|
+
* Pattern : preconditions are asserted as-is ; postconditions are joined by
|
|
95
|
+
* conjunction and asserted NEGATED. A counterexample (z3 returns `sat`)
|
|
96
|
+
* therefore means : "pre-conditions hold AND at least one post-condition
|
|
97
|
+
* fails" — i.e. an UNSAFE outcome.
|
|
98
|
+
*
|
|
99
|
+
* Includes `(check-sat)` and `(get-model)` as terminating commands.
|
|
100
|
+
*/
|
|
101
|
+
export function compileToSmt(spec) {
|
|
102
|
+
const ctx = {
|
|
103
|
+
declared: new Set(),
|
|
104
|
+
declarations: [],
|
|
105
|
+
assertions: [],
|
|
106
|
+
};
|
|
107
|
+
// Header — set logic to QF_LRA (quantifier-free linear real arithmetic
|
|
108
|
+
// plus integers) which covers all our supported condition kinds.
|
|
109
|
+
const header = ["(set-logic ALL)", `; AxiomSpec : ${spec.axiom}`];
|
|
110
|
+
// Preconditions : assert as-is (positive form).
|
|
111
|
+
for (const pre of spec.preconditions) {
|
|
112
|
+
lowerCondition(pre, ctx, false);
|
|
113
|
+
}
|
|
114
|
+
// Postconditions : conjoin and negate.
|
|
115
|
+
// Strategy : assert each one negated separately using De Morgan. We want
|
|
116
|
+
// NOT (post1 AND post2 AND …) ≡ (NOT post1) OR (NOT post2) OR …
|
|
117
|
+
// For check-sat-as-counterexample, we want the solver to find *any*
|
|
118
|
+
// violation, so we encode the disjunction with an auxiliary Bool flag
|
|
119
|
+
// per postcondition. Simpler equivalent : assert (or (not post1) (not post2) …).
|
|
120
|
+
if (spec.postconditions.length === 0) {
|
|
121
|
+
// Empty postcondition set : trivially SAFE (no obligation to verify).
|
|
122
|
+
ctx.assertions.push("(assert false)");
|
|
123
|
+
}
|
|
124
|
+
else if (spec.postconditions.length === 1) {
|
|
125
|
+
lowerCondition(spec.postconditions[0], ctx, true);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// Build per-postcondition expression strings via a side-context, then
|
|
129
|
+
// emit a single `(assert (or ...))`.
|
|
130
|
+
const subCtx = {
|
|
131
|
+
declared: ctx.declared,
|
|
132
|
+
declarations: ctx.declarations,
|
|
133
|
+
assertions: [],
|
|
134
|
+
};
|
|
135
|
+
const negatedExprs = [];
|
|
136
|
+
for (const post of spec.postconditions) {
|
|
137
|
+
const before = subCtx.assertions.length;
|
|
138
|
+
lowerCondition(post, subCtx, true);
|
|
139
|
+
// The last appended assertion is "(assert <neg expr>)" or pre-assertions.
|
|
140
|
+
// To recover only the negated post-condition body, we accept that some
|
|
141
|
+
// conditions append additional non-negotiable preconditions (positivity).
|
|
142
|
+
// Those are valid in any case and stay in the main assertion list.
|
|
143
|
+
for (let i = before; i < subCtx.assertions.length; i++) {
|
|
144
|
+
const a = subCtx.assertions[i];
|
|
145
|
+
// Heuristic : split positivity asserts (>= x 0) and the negated body.
|
|
146
|
+
// The negated body always contains "(not ".
|
|
147
|
+
if (a.includes("(not ")) {
|
|
148
|
+
// Extract the inner expr "(not …)" inside the outer assert.
|
|
149
|
+
const inner = a.slice("(assert ".length, -1);
|
|
150
|
+
negatedExprs.push(inner);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Drop the negated body assertions from subCtx so we only keep
|
|
154
|
+
// the positivity ones in the main assertion list.
|
|
155
|
+
subCtx.assertions = subCtx.assertions.filter((a) => !a.includes("(not "));
|
|
156
|
+
}
|
|
157
|
+
ctx.assertions = subCtx.assertions;
|
|
158
|
+
ctx.assertions.push(`(assert (or ${negatedExprs.join(" ")}))`);
|
|
159
|
+
}
|
|
160
|
+
return [
|
|
161
|
+
...header,
|
|
162
|
+
...ctx.declarations,
|
|
163
|
+
...ctx.assertions,
|
|
164
|
+
"(check-sat)",
|
|
165
|
+
"(get-model)",
|
|
166
|
+
].join("\n");
|
|
167
|
+
}
|
|
168
|
+
// ---------------------------------------------------------------------------
|
|
169
|
+
// Pre-built specs for the 5 Vauban axioms
|
|
170
|
+
// ---------------------------------------------------------------------------
|
|
171
|
+
/**
|
|
172
|
+
* Default per-axiom AxiomSpec presets. Consumers can override the timeout
|
|
173
|
+
* or augment with additional conditions before passing to `formalVerify`.
|
|
174
|
+
*
|
|
175
|
+
* Robuste : 5s — engineering robustness, may need richer checks
|
|
176
|
+
* Institutionnel : 10s — strongest spec, PII + scope-subset + budget
|
|
177
|
+
* SOTA : 2s — lightweight (single ROI check on cost)
|
|
178
|
+
* AntiFragile : 1s — response-time bound only
|
|
179
|
+
* Profitable : 1s — cost-vs-value ROI check
|
|
180
|
+
*/
|
|
181
|
+
export const AXIOM_SPECS = {
|
|
182
|
+
Robuste: {
|
|
183
|
+
axiom: "Robuste",
|
|
184
|
+
preconditions: [],
|
|
185
|
+
postconditions: [
|
|
186
|
+
{ type: "budget_constraint", child_max_fraction: 1.0 },
|
|
187
|
+
{ type: "response_time", max_ms: 30_000 },
|
|
188
|
+
],
|
|
189
|
+
timeout_ms: 5000,
|
|
190
|
+
},
|
|
191
|
+
Institutionnel: {
|
|
192
|
+
axiom: "Institutionnel",
|
|
193
|
+
preconditions: [],
|
|
194
|
+
postconditions: [
|
|
195
|
+
{ type: "no_pii_in_output" },
|
|
196
|
+
{ type: "budget_constraint", child_max_fraction: 1.0 },
|
|
197
|
+
],
|
|
198
|
+
timeout_ms: 10_000,
|
|
199
|
+
},
|
|
200
|
+
SOTA: {
|
|
201
|
+
axiom: "SOTA",
|
|
202
|
+
preconditions: [],
|
|
203
|
+
postconditions: [{ type: "cost_positive_roi", min_roi_ratio: 1.0 }],
|
|
204
|
+
timeout_ms: 2000,
|
|
205
|
+
},
|
|
206
|
+
AntiFragile: {
|
|
207
|
+
axiom: "AntiFragile",
|
|
208
|
+
preconditions: [],
|
|
209
|
+
postconditions: [{ type: "response_time", max_ms: 60_000 }],
|
|
210
|
+
timeout_ms: 1000,
|
|
211
|
+
},
|
|
212
|
+
Profitable: {
|
|
213
|
+
axiom: "Profitable",
|
|
214
|
+
preconditions: [],
|
|
215
|
+
postconditions: [{ type: "cost_positive_roi", min_roi_ratio: 1.5 }],
|
|
216
|
+
timeout_ms: 1000,
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
//# sourceMappingURL=spec-language.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-language.js","sourceRoot":"","sources":["../../../src/verify/formal/spec-language.ts"],"names":[],"mappings":"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"}
|