@vauban-org/agent-sdk 0.17.4 → 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 +327 -30
- package/dist/events/catalogue.d.ts.map +1 -1
- package/dist/events/catalogue.js +18 -0
- package/dist/events/catalogue.js.map +1 -1
- package/dist/events/index.d.ts +9 -0
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +9 -0
- package/dist/events/index.js.map +1 -1
- 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 +55 -0
- package/dist/events/schemas/citadel.sprint.analyzed.v1.d.ts.map +1 -0
- package/dist/events/schemas/citadel.sprint.analyzed.v1.js +22 -0
- package/dist/events/schemas/citadel.sprint.analyzed.v1.js.map +1 -0
- package/dist/events/schemas/citadel.sprint.closed.v1.d.ts +2 -2
- package/dist/events/schemas/forge.inbox.reply_classified.v1.d.ts +33 -0
- package/dist/events/schemas/forge.inbox.reply_classified.v1.d.ts.map +1 -0
- package/dist/events/schemas/forge.inbox.reply_classified.v1.js +15 -0
- package/dist/events/schemas/forge.inbox.reply_classified.v1.js.map +1 -0
- 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-finance.forecast.generated.v1.d.ts +21 -0
- package/dist/events/schemas/vauban-finance.forecast.generated.v1.d.ts.map +1 -0
- package/dist/events/schemas/vauban-finance.forecast.generated.v1.js +11 -0
- package/dist/events/schemas/vauban-finance.forecast.generated.v1.js.map +1 -0
- package/dist/events/schemas/vauban-finance.trade.executed.v1.d.ts +24 -0
- package/dist/events/schemas/vauban-finance.trade.executed.v1.d.ts.map +1 -0
- package/dist/events/schemas/vauban-finance.trade.executed.v1.js +12 -0
- package/dist/events/schemas/vauban-finance.trade.executed.v1.js.map +1 -0
- package/dist/events/schemas/vauban.goal.checked.v1.d.ts +21 -0
- package/dist/events/schemas/vauban.goal.checked.v1.d.ts.map +1 -0
- package/dist/events/schemas/vauban.goal.checked.v1.js +11 -0
- package/dist/events/schemas/vauban.goal.checked.v1.js.map +1 -0
- package/dist/events/schemas/vauban.rebalancing.checked.v1.d.ts +21 -0
- package/dist/events/schemas/vauban.rebalancing.checked.v1.d.ts.map +1 -0
- package/dist/events/schemas/vauban.rebalancing.checked.v1.js +11 -0
- package/dist/events/schemas/vauban.rebalancing.checked.v1.js.map +1 -0
- package/dist/events/schemas/vauban.tax.checked.v1.d.ts +21 -0
- package/dist/events/schemas/vauban.tax.checked.v1.d.ts.map +1 -0
- package/dist/events/schemas/vauban.tax.checked.v1.js +11 -0
- package/dist/events/schemas/vauban.tax.checked.v1.js.map +1 -0
- package/dist/events/schemas/vauban.vault.analyzed.v1.d.ts +59 -0
- package/dist/events/schemas/vauban.vault.analyzed.v1.d.ts.map +1 -0
- package/dist/events/schemas/vauban.vault.analyzed.v1.js +19 -0
- package/dist/events/schemas/vauban.vault.analyzed.v1.js.map +1 -0
- package/dist/events/schemas/vauban.vault.compounded.v1.d.ts +24 -0
- package/dist/events/schemas/vauban.vault.compounded.v1.d.ts.map +1 -0
- package/dist/events/schemas/vauban.vault.compounded.v1.js +12 -0
- package/dist/events/schemas/vauban.vault.compounded.v1.js.map +1 -0
- 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/index.d.ts +1 -1
- package/dist/loop/index.d.ts.map +1 -1
- package/dist/loop/index.js.map +1 -1
- package/dist/loop/minimal-loop.js +293 -287
- package/dist/loop/sdk-loop.d.ts +1 -3
- package/dist/loop/sdk-loop.d.ts.map +1 -1
- package/dist/loop/sdk-loop.js +1 -1
- package/dist/loop/sdk-loop.js.map +1 -1
- 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/orchestration/ooda/types.d.ts +3 -8
- 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 -13
- 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/contracts/event-bus.contract.d.ts.map +1 -1
- package/dist/testing/contracts/event-bus.contract.js +14 -12
- package/dist/testing/contracts/event-bus.contract.js.map +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 +22 -1
- 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/events/catalogue.ts +54 -0
- package/src/events/index.ts +9 -0
- package/src/events/schemas/citadel.sprint.analyzed.v1.ts +23 -0
- package/src/events/schemas/forge.inbox.reply_classified.v1.ts +15 -0
- package/src/events/schemas/vauban-finance.forecast.generated.v1.ts +11 -0
- package/src/events/schemas/vauban-finance.trade.executed.v1.ts +12 -0
- package/src/events/schemas/vauban.goal.checked.v1.ts +11 -0
- package/src/events/schemas/vauban.rebalancing.checked.v1.ts +11 -0
- package/src/events/schemas/vauban.tax.checked.v1.ts +11 -0
- package/src/events/schemas/vauban.vault.analyzed.v1.ts +21 -0
- package/src/events/schemas/vauban.vault.compounded.v1.ts +12 -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/loop/index.ts +0 -1
- package/src/loop/sdk-loop.ts +5 -8
- 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/orchestration/ooda/types.ts +3 -9
- 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 -18
- 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/contracts/event-bus.contract.ts +16 -14
- 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":"observability.js","sourceRoot":"","sources":["../../src/ports/observability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAwFH,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IACf,QAAQ,GAAS;QAChC,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;QACtB,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;QACzB,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;QACnB,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC;KACd,CAAC;IAEF,SAAS,CAAC,KAAa,EAAE,MAAuB;QAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,MAA0B;QACpC,QAAQ;IACV,CAAC;IAED,YAAY,CAAC,OAAoB;QAC/B,QAAQ;IACV,CAAC;IAED,KAAK,CAAC,KAAK;QACT,QAAQ;IACV,CAAC;CACF;AAED,gFAAgF;AAEhF,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACE;IAA7C,YAAY,OAAe,EAAkB,KAAe;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,UAAK,GAAL,KAAK,CAAU;QAE1D,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IAErC;IACA;IAFlB,YACkB,SAAiB,EACjB,KAAe;QAE/B,KAAK,CAAC,uCAAuC,SAAS,IAAI,CAAC,CAAC;QAH5C,cAAS,GAAT,SAAS,CAAQ;QACjB,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;QAC7C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF"}
|
package/dist/ports/outcome.d.ts
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
* Host attributes a monetary value to each agent run via its
|
|
5
5
|
* domain-specific rules (config/outcomes.yaml in CC). The agent simply
|
|
6
6
|
* calls recordOutcomeAsync after its tracker.finish() — fire-and-forget.
|
|
7
|
+
*
|
|
8
|
+
* OTel instrumentation: import { createTracedOutcomePort } to wrap any
|
|
9
|
+
* OutcomePort implementation with OpenTelemetry spans. Gracefully degrades
|
|
10
|
+
* to noop spans when no OTel SDK is installed.
|
|
7
11
|
*/
|
|
8
12
|
export interface AgentRunRef {
|
|
9
13
|
/** agent_run.id (UUID) produced by AgentRunTracker. */
|
|
@@ -15,6 +19,17 @@ export interface AgentRunRef {
|
|
|
15
19
|
/** Already-linked outcome id; idempotency guard. */
|
|
16
20
|
outcome_id?: string | null;
|
|
17
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Thrown when the outcome store write fails (DB connection lost, serialization
|
|
24
|
+
* error, or queue full). Since recordOutcomeAsync is fire-and-forget, this
|
|
25
|
+
* error is surfaced only when the implementation chooses to throw synchronously
|
|
26
|
+
* (e.g., during validation or when the write queue is persistently full).
|
|
27
|
+
*/
|
|
28
|
+
export declare class OutcomeWriteError extends Error {
|
|
29
|
+
readonly cause?: unknown | undefined;
|
|
30
|
+
readonly runId: string;
|
|
31
|
+
constructor(message: string, runId: string, cause?: unknown | undefined);
|
|
32
|
+
}
|
|
18
33
|
export interface OutcomePort {
|
|
19
34
|
/**
|
|
20
35
|
* Enqueue outcome attribution. Fire-and-forget: never throws,
|
|
@@ -22,4 +37,15 @@ export interface OutcomePort {
|
|
|
22
37
|
*/
|
|
23
38
|
recordOutcomeAsync(run: AgentRunRef): void;
|
|
24
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Wrap any OutcomePort implementation with OTel spans.
|
|
42
|
+
* The span captures the run id and agent_id as attributes.
|
|
43
|
+
* Gracefully degrades to noop spans when no OTel SDK is installed.
|
|
44
|
+
*
|
|
45
|
+
* Usage:
|
|
46
|
+
* const raw: OutcomePort = buildPostgresOutcome(...);
|
|
47
|
+
* const traced = createTracedOutcomePort(raw);
|
|
48
|
+
* traced.recordOutcomeAsync({...}) // emits "outcome.recordOutcomeAsync" span
|
|
49
|
+
*/
|
|
50
|
+
export declare function createTracedOutcomePort(impl: OutcomePort): OutcomePort;
|
|
25
51
|
//# sourceMappingURL=outcome.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../../src/ports/outcome.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../../src/ports/outcome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAID;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aAGkB,KAAK,CAAC,EAAE,OAAO;IAF3E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,OAAO,YAAA;CAM5E;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5C;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CA6BtE"}
|
package/dist/ports/outcome.js
CHANGED
|
@@ -4,6 +4,67 @@
|
|
|
4
4
|
* Host attributes a monetary value to each agent run via its
|
|
5
5
|
* domain-specific rules (config/outcomes.yaml in CC). The agent simply
|
|
6
6
|
* calls recordOutcomeAsync after its tracker.finish() — fire-and-forget.
|
|
7
|
+
*
|
|
8
|
+
* OTel instrumentation: import { createTracedOutcomePort } to wrap any
|
|
9
|
+
* OutcomePort implementation with OpenTelemetry spans. Gracefully degrades
|
|
10
|
+
* to noop spans when no OTel SDK is installed.
|
|
11
|
+
*/
|
|
12
|
+
import { SpanStatusCode, trace } from "@opentelemetry/api";
|
|
13
|
+
const PORT_TRACER = trace.getTracer("vauban-agent-sdk.ports", "0.1.0");
|
|
14
|
+
// ─── Typed errors ─────────────────────────────────────────────────────────────
|
|
15
|
+
/**
|
|
16
|
+
* Thrown when the outcome store write fails (DB connection lost, serialization
|
|
17
|
+
* error, or queue full). Since recordOutcomeAsync is fire-and-forget, this
|
|
18
|
+
* error is surfaced only when the implementation chooses to throw synchronously
|
|
19
|
+
* (e.g., during validation or when the write queue is persistently full).
|
|
20
|
+
*/
|
|
21
|
+
export class OutcomeWriteError extends Error {
|
|
22
|
+
cause;
|
|
23
|
+
runId;
|
|
24
|
+
constructor(message, runId, cause) {
|
|
25
|
+
super(message);
|
|
26
|
+
this.cause = cause;
|
|
27
|
+
this.name = "OutcomeWriteError";
|
|
28
|
+
this.runId = runId;
|
|
29
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Wrap any OutcomePort implementation with OTel spans.
|
|
34
|
+
* The span captures the run id and agent_id as attributes.
|
|
35
|
+
* Gracefully degrades to noop spans when no OTel SDK is installed.
|
|
36
|
+
*
|
|
37
|
+
* Usage:
|
|
38
|
+
* const raw: OutcomePort = buildPostgresOutcome(...);
|
|
39
|
+
* const traced = createTracedOutcomePort(raw);
|
|
40
|
+
* traced.recordOutcomeAsync({...}) // emits "outcome.recordOutcomeAsync" span
|
|
7
41
|
*/
|
|
8
|
-
export {
|
|
42
|
+
export function createTracedOutcomePort(impl) {
|
|
43
|
+
return {
|
|
44
|
+
recordOutcomeAsync(run) {
|
|
45
|
+
PORT_TRACER.startActiveSpan("outcome.recordOutcomeAsync", {
|
|
46
|
+
attributes: {
|
|
47
|
+
"outcome.run_id": run.id,
|
|
48
|
+
"outcome.agent_id": run.agent_id,
|
|
49
|
+
"vauban.port.name": "outcome",
|
|
50
|
+
},
|
|
51
|
+
}, (span) => {
|
|
52
|
+
try {
|
|
53
|
+
impl.recordOutcomeAsync(run);
|
|
54
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
span.setStatus({
|
|
58
|
+
code: SpanStatusCode.ERROR,
|
|
59
|
+
message: err instanceof Error ? err.message : String(err),
|
|
60
|
+
});
|
|
61
|
+
span.recordException(err);
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
span.end();
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
9
70
|
//# sourceMappingURL=outcome.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outcome.js","sourceRoot":"","sources":["../../src/ports/outcome.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"outcome.js","sourceRoot":"","sources":["../../src/ports/outcome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;AAavE,iFAAiF;AAEjF;;;;;GAKG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAGkB;IAFnD,KAAK,CAAS;IAEvB,YAAY,OAAe,EAAE,KAAa,EAAkB,KAAe;QACzE,KAAK,CAAC,OAAO,CAAC,CAAC;QAD2C,UAAK,GAAL,KAAK,CAAU;QAEzE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAUD;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAiB;IACvD,OAAO;QACL,kBAAkB,CAAC,GAAgB;YACjC,WAAW,CAAC,eAAe,CACzB,4BAA4B,EAC5B;gBACE,UAAU,EAAE;oBACV,gBAAgB,EAAE,GAAG,CAAC,EAAE;oBACxB,kBAAkB,EAAE,GAAG,CAAC,QAAQ;oBAChC,kBAAkB,EAAE,SAAS;iBAC9B;aACF,EACD,CAAC,IAAU,EAAE,EAAE;gBACb,IAAI,CAAC;oBACH,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;oBAC7B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,SAAS,CAAC;wBACb,IAAI,EAAE,cAAc,CAAC,KAAK;wBAC1B,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBAC1D,CAAC,CAAC;oBACH,IAAI,CAAC,eAAe,CAAC,GAAY,CAAC,CAAC;gBACrC,CAAC;wBAAS,CAAC;oBACT,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,CAAC;YACH,CAAC,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PrivacyPort contract tests — validate V0 noop stub interface compliance.
|
|
3
|
+
*
|
|
4
|
+
* Tests verify:
|
|
5
|
+
* - applyMask returns input unchanged (identity function V0)
|
|
6
|
+
* - verifyZkProof always returns {valid: false, reason: 'noop_v0'}
|
|
7
|
+
* - commitToSmt returns deterministic mock root with correct structure
|
|
8
|
+
* - NoopPrivacyAdapter satisfies the PrivacyPort interface
|
|
9
|
+
* - All operations handle various context and commitment types
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=privacy.contract.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy.contract.test.d.ts","sourceRoot":"","sources":["../../src/ports/privacy.contract.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PrivacyPort contract tests — validate V0 noop stub interface compliance.
|
|
3
|
+
*
|
|
4
|
+
* Tests verify:
|
|
5
|
+
* - applyMask returns input unchanged (identity function V0)
|
|
6
|
+
* - verifyZkProof always returns {valid: false, reason: 'noop_v0'}
|
|
7
|
+
* - commitToSmt returns deterministic mock root with correct structure
|
|
8
|
+
* - NoopPrivacyAdapter satisfies the PrivacyPort interface
|
|
9
|
+
* - All operations handle various context and commitment types
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it, expect } from "vitest";
|
|
12
|
+
import { NoopPrivacyAdapter, } from "./privacy";
|
|
13
|
+
describe("PrivacyPort contract", () => {
|
|
14
|
+
describe("applyMask", () => {
|
|
15
|
+
it("returns input payload unchanged (V0 identity function)", async () => {
|
|
16
|
+
const adapter = new NoopPrivacyAdapter();
|
|
17
|
+
const payload = { secret: "hidden", public: "visible", count: 42 };
|
|
18
|
+
const mask = {
|
|
19
|
+
public_fields: ["public"],
|
|
20
|
+
private_fields: ["secret"],
|
|
21
|
+
};
|
|
22
|
+
const ctx = { user_id: "user-1", tenant_id: "tenant-a" };
|
|
23
|
+
const result = await adapter.applyMask(payload, mask, ctx);
|
|
24
|
+
expect(result).toEqual(payload);
|
|
25
|
+
expect(result).toBe(payload); // same reference (identity)
|
|
26
|
+
});
|
|
27
|
+
it("handles complex nested objects unchanged", async () => {
|
|
28
|
+
const adapter = new NoopPrivacyAdapter();
|
|
29
|
+
const payload = {
|
|
30
|
+
user: {
|
|
31
|
+
id: "u1",
|
|
32
|
+
nested: {
|
|
33
|
+
secret: "data",
|
|
34
|
+
array: [1, 2, 3],
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
const mask = {
|
|
39
|
+
public_fields: ["user.id"],
|
|
40
|
+
private_fields: ["user.nested.secret"],
|
|
41
|
+
};
|
|
42
|
+
const ctx = {};
|
|
43
|
+
const result = await adapter.applyMask(payload, mask, ctx);
|
|
44
|
+
expect(result).toEqual(payload);
|
|
45
|
+
});
|
|
46
|
+
it("accepts conditional revelation masks", async () => {
|
|
47
|
+
const adapter = new NoopPrivacyAdapter();
|
|
48
|
+
const payload = { data: "value" };
|
|
49
|
+
const mask = {
|
|
50
|
+
public_fields: ["id"],
|
|
51
|
+
private_fields: ["secret"],
|
|
52
|
+
conditional: [
|
|
53
|
+
{
|
|
54
|
+
field: "email",
|
|
55
|
+
condition: "user_role == 'admin'",
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
};
|
|
59
|
+
const ctx = { role: "admin" };
|
|
60
|
+
const result = await adapter.applyMask(payload, mask, ctx);
|
|
61
|
+
expect(result).toEqual(payload);
|
|
62
|
+
});
|
|
63
|
+
it("handles various payload types (string, number, array, null)", async () => {
|
|
64
|
+
const adapter = new NoopPrivacyAdapter();
|
|
65
|
+
const mask = {
|
|
66
|
+
public_fields: [],
|
|
67
|
+
private_fields: [],
|
|
68
|
+
};
|
|
69
|
+
const ctx = {};
|
|
70
|
+
const testCases = [
|
|
71
|
+
"string payload",
|
|
72
|
+
42,
|
|
73
|
+
3.14,
|
|
74
|
+
true,
|
|
75
|
+
[1, 2, 3],
|
|
76
|
+
null,
|
|
77
|
+
undefined,
|
|
78
|
+
];
|
|
79
|
+
for (const payload of testCases) {
|
|
80
|
+
const result = await adapter.applyMask(payload, mask, ctx);
|
|
81
|
+
expect(result).toEqual(payload);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
it("context parameters are accepted and ignored (V0)", async () => {
|
|
85
|
+
const adapter = new NoopPrivacyAdapter();
|
|
86
|
+
const payload = { data: "test" };
|
|
87
|
+
const mask = {
|
|
88
|
+
public_fields: [],
|
|
89
|
+
private_fields: [],
|
|
90
|
+
};
|
|
91
|
+
const contexts = [
|
|
92
|
+
{ user_id: "u1" },
|
|
93
|
+
{ tenant_id: "t1", jurisdiction: "FR.v1" },
|
|
94
|
+
{ role: "admin", user_id: "u2", metadata: { custom: "value" } },
|
|
95
|
+
{},
|
|
96
|
+
];
|
|
97
|
+
for (const ctx of contexts) {
|
|
98
|
+
const result = await adapter.applyMask(payload, mask, ctx);
|
|
99
|
+
expect(result).toEqual(payload);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
describe("verifyZkProof", () => {
|
|
104
|
+
it("always returns invalid with 'noop_v0' reason", async () => {
|
|
105
|
+
const adapter = new NoopPrivacyAdapter();
|
|
106
|
+
const proof = {
|
|
107
|
+
proof_data: { some: "proof" },
|
|
108
|
+
public_inputs: { value: 42 },
|
|
109
|
+
};
|
|
110
|
+
const ctx = {};
|
|
111
|
+
const result = await adapter.verifyZkProof(proof, ctx);
|
|
112
|
+
expect(result.valid).toBe(false);
|
|
113
|
+
expect(result.reason).toBe("noop_v0");
|
|
114
|
+
expect(result.confidence).toBe(0);
|
|
115
|
+
});
|
|
116
|
+
it("handles various proof schemes (V0 ignores)", async () => {
|
|
117
|
+
const adapter = new NoopPrivacyAdapter();
|
|
118
|
+
const schemes = ["stwo", "starknet_stone", "groth16", "plonk"];
|
|
119
|
+
for (const scheme of schemes) {
|
|
120
|
+
const proof = {
|
|
121
|
+
proof_data: { scheme_data: "test" },
|
|
122
|
+
public_inputs: {},
|
|
123
|
+
scheme,
|
|
124
|
+
};
|
|
125
|
+
const result = await adapter.verifyZkProof(proof, {});
|
|
126
|
+
expect(result.valid).toBe(false);
|
|
127
|
+
expect(result.reason).toBe("noop_v0");
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
it("accepts empty public inputs", async () => {
|
|
131
|
+
const adapter = new NoopPrivacyAdapter();
|
|
132
|
+
const proof = {
|
|
133
|
+
proof_data: "opaque_bytes",
|
|
134
|
+
public_inputs: {},
|
|
135
|
+
};
|
|
136
|
+
const result = await adapter.verifyZkProof(proof, {});
|
|
137
|
+
expect(result.valid).toBe(false);
|
|
138
|
+
expect(result.reason).toBe("noop_v0");
|
|
139
|
+
});
|
|
140
|
+
it("context parameters are accepted and ignored (V0)", async () => {
|
|
141
|
+
const adapter = new NoopPrivacyAdapter();
|
|
142
|
+
const proof = {
|
|
143
|
+
proof_data: "test",
|
|
144
|
+
public_inputs: { x: 1 },
|
|
145
|
+
};
|
|
146
|
+
const contexts = [
|
|
147
|
+
{ user_id: "u1" },
|
|
148
|
+
{ tenant_id: "t1", jurisdiction: "EU.v1" },
|
|
149
|
+
{ role: "operator" },
|
|
150
|
+
];
|
|
151
|
+
for (const ctx of contexts) {
|
|
152
|
+
const result = await adapter.verifyZkProof(proof, ctx);
|
|
153
|
+
expect(result.valid).toBe(false);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
describe("commitToSmt", () => {
|
|
158
|
+
it("returns mock SMT root with correct structure", async () => {
|
|
159
|
+
const adapter = new NoopPrivacyAdapter();
|
|
160
|
+
const commitment = { value: "test_value" };
|
|
161
|
+
const ctx = {};
|
|
162
|
+
const result = await adapter.commitToSmt(commitment, ctx);
|
|
163
|
+
expect(result.smt_root).toBeDefined();
|
|
164
|
+
expect(result.smt_root).toMatch(/^0x[0-9a-f]+$/);
|
|
165
|
+
expect(result.leaf_index).toBe(0);
|
|
166
|
+
expect(result.version).toBe(0);
|
|
167
|
+
});
|
|
168
|
+
it("returns deterministic root for same commitment", async () => {
|
|
169
|
+
const adapter = new NoopPrivacyAdapter();
|
|
170
|
+
const commitment = { value: "deterministic" };
|
|
171
|
+
const ctx = {};
|
|
172
|
+
const result1 = await adapter.commitToSmt(commitment, ctx);
|
|
173
|
+
const result2 = await adapter.commitToSmt(commitment, ctx);
|
|
174
|
+
expect(result1.smt_root).toBe(result2.smt_root);
|
|
175
|
+
});
|
|
176
|
+
it("returns different root for different commitments", async () => {
|
|
177
|
+
const adapter = new NoopPrivacyAdapter();
|
|
178
|
+
const ctx = {};
|
|
179
|
+
const result1 = await adapter.commitToSmt({ value: "value1" }, ctx);
|
|
180
|
+
const result2 = await adapter.commitToSmt({ value: "value2" }, ctx);
|
|
181
|
+
expect(result1.smt_root).not.toBe(result2.smt_root);
|
|
182
|
+
});
|
|
183
|
+
it("respects explicit leaf_index from commitment", async () => {
|
|
184
|
+
const adapter = new NoopPrivacyAdapter();
|
|
185
|
+
const commitment = { value: "test", index: 42 };
|
|
186
|
+
const ctx = {};
|
|
187
|
+
const result = await adapter.commitToSmt(commitment, ctx);
|
|
188
|
+
expect(result.leaf_index).toBe(42);
|
|
189
|
+
});
|
|
190
|
+
it("defaults leaf_index to 0 when not specified", async () => {
|
|
191
|
+
const adapter = new NoopPrivacyAdapter();
|
|
192
|
+
const commitment = { value: "test" };
|
|
193
|
+
const ctx = {};
|
|
194
|
+
const result = await adapter.commitToSmt(commitment, ctx);
|
|
195
|
+
expect(result.leaf_index).toBe(0);
|
|
196
|
+
});
|
|
197
|
+
it("accepts optional salt in commitment", async () => {
|
|
198
|
+
const adapter = new NoopPrivacyAdapter();
|
|
199
|
+
const commitment = {
|
|
200
|
+
value: "secret",
|
|
201
|
+
salt: "random_salt_123",
|
|
202
|
+
index: 5,
|
|
203
|
+
};
|
|
204
|
+
const ctx = {};
|
|
205
|
+
const result = await adapter.commitToSmt(commitment, ctx);
|
|
206
|
+
expect(result.smt_root).toBeDefined();
|
|
207
|
+
expect(result.leaf_index).toBe(5);
|
|
208
|
+
expect(result.version).toBe(0);
|
|
209
|
+
});
|
|
210
|
+
it("handles various commitment value types", async () => {
|
|
211
|
+
const adapter = new NoopPrivacyAdapter();
|
|
212
|
+
const ctx = {};
|
|
213
|
+
const values = [
|
|
214
|
+
"string value",
|
|
215
|
+
42,
|
|
216
|
+
3.14,
|
|
217
|
+
true,
|
|
218
|
+
{ nested: "object" },
|
|
219
|
+
[1, 2, 3],
|
|
220
|
+
];
|
|
221
|
+
for (const value of values) {
|
|
222
|
+
const result = await adapter.commitToSmt({ value }, ctx);
|
|
223
|
+
expect(result.smt_root).toBeDefined();
|
|
224
|
+
expect(result.version).toBe(0);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
it("context parameters are accepted and ignored (V0)", async () => {
|
|
228
|
+
const adapter = new NoopPrivacyAdapter();
|
|
229
|
+
const commitment = { value: "test" };
|
|
230
|
+
const contexts = [
|
|
231
|
+
{ user_id: "u1", tenant_id: "t1" },
|
|
232
|
+
{ jurisdiction: "CH.v1" },
|
|
233
|
+
{ metadata: { custom: true } },
|
|
234
|
+
];
|
|
235
|
+
for (const ctx of contexts) {
|
|
236
|
+
const result = await adapter.commitToSmt(commitment, ctx);
|
|
237
|
+
expect(result.smt_root).toBeDefined();
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
describe("NoopPrivacyAdapter interface compliance", () => {
|
|
242
|
+
it("satisfies PrivacyPort contract", () => {
|
|
243
|
+
const adapter = new NoopPrivacyAdapter();
|
|
244
|
+
expect(typeof adapter.applyMask).toBe("function");
|
|
245
|
+
expect(typeof adapter.verifyZkProof).toBe("function");
|
|
246
|
+
expect(typeof adapter.commitToSmt).toBe("function");
|
|
247
|
+
});
|
|
248
|
+
it("all async methods return Promise", async () => {
|
|
249
|
+
const adapter = new NoopPrivacyAdapter();
|
|
250
|
+
const maskResult = adapter.applyMask({}, { public_fields: [], private_fields: [] }, {});
|
|
251
|
+
const proofResult = adapter.verifyZkProof({ proof_data: "x", public_inputs: {} }, {});
|
|
252
|
+
const smtResult = adapter.commitToSmt({ value: "x" }, {});
|
|
253
|
+
expect(maskResult).toBeInstanceOf(Promise);
|
|
254
|
+
expect(proofResult).toBeInstanceOf(Promise);
|
|
255
|
+
expect(smtResult).toBeInstanceOf(Promise);
|
|
256
|
+
await maskResult;
|
|
257
|
+
await proofResult;
|
|
258
|
+
await smtResult;
|
|
259
|
+
});
|
|
260
|
+
it("methods work together in realistic flow", async () => {
|
|
261
|
+
const adapter = new NoopPrivacyAdapter();
|
|
262
|
+
const ctx = { user_id: "user-1", role: "admin" };
|
|
263
|
+
// Simulate a privacy-respecting workflow (V0: all no-ops)
|
|
264
|
+
const payload = { secret: "data", public: "info" };
|
|
265
|
+
const mask = {
|
|
266
|
+
public_fields: ["public"],
|
|
267
|
+
private_fields: ["secret"],
|
|
268
|
+
};
|
|
269
|
+
const masked = await adapter.applyMask(payload, mask, ctx);
|
|
270
|
+
expect(masked).toEqual(payload);
|
|
271
|
+
const commitment = { value: masked };
|
|
272
|
+
const smtResult = await adapter.commitToSmt(commitment, ctx);
|
|
273
|
+
expect(smtResult.smt_root).toBeDefined();
|
|
274
|
+
expect(smtResult.version).toBe(0);
|
|
275
|
+
const proof = {
|
|
276
|
+
proof_data: { root: smtResult.smt_root },
|
|
277
|
+
public_inputs: { commitment_hash: "hash" },
|
|
278
|
+
};
|
|
279
|
+
const verified = await adapter.verifyZkProof(proof, ctx);
|
|
280
|
+
expect(verified.valid).toBe(false);
|
|
281
|
+
expect(verified.reason).toBe("noop_v0");
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
describe("V0 noop semantics validation", () => {
|
|
285
|
+
it("demonstrates V0 identity semantics: applyMask is identity", async () => {
|
|
286
|
+
const adapter = new NoopPrivacyAdapter();
|
|
287
|
+
// V0 guarantee: f(x) = x for any x
|
|
288
|
+
const testValues = [
|
|
289
|
+
{ a: 1, b: "secret" },
|
|
290
|
+
"plain text",
|
|
291
|
+
[1, 2, 3, "secret"],
|
|
292
|
+
{ deeply: { nested: { secret: "data" } } },
|
|
293
|
+
];
|
|
294
|
+
for (const value of testValues) {
|
|
295
|
+
const result = await adapter.applyMask(value, { public_fields: ["a"], private_fields: ["secret"] }, {});
|
|
296
|
+
expect(result).toBe(value); // exact same object
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
it("demonstrates V0 proof rejection: verifyZkProof always fails", async () => {
|
|
300
|
+
const adapter = new NoopPrivacyAdapter();
|
|
301
|
+
// V0 guarantee: verifyZkProof always returns invalid
|
|
302
|
+
const proofs = [
|
|
303
|
+
{ proof_data: "valid_proof", public_inputs: {} },
|
|
304
|
+
{ proof_data: null, public_inputs: { x: 1 } },
|
|
305
|
+
{ proof_data: { complex: "structure" }, public_inputs: [] },
|
|
306
|
+
];
|
|
307
|
+
for (const proof of proofs) {
|
|
308
|
+
const result = await adapter.verifyZkProof(proof, {});
|
|
309
|
+
expect(result.valid).toBe(false);
|
|
310
|
+
expect(result.reason).toBe("noop_v0");
|
|
311
|
+
expect(result.confidence).toBe(0);
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
it("demonstrates V0 mock SMT: deterministic but no crypto", async () => {
|
|
315
|
+
const adapter = new NoopPrivacyAdapter();
|
|
316
|
+
// V0 guarantee: deterministic + version 0
|
|
317
|
+
const c1 = await adapter.commitToSmt({ value: "test" }, {});
|
|
318
|
+
const c2 = await adapter.commitToSmt({ value: "test" }, {});
|
|
319
|
+
expect(c1.smt_root).toBe(c2.smt_root);
|
|
320
|
+
expect(c1.version).toBe(0);
|
|
321
|
+
expect(c2.version).toBe(0);
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
|
+
});
|
|
325
|
+
//# sourceMappingURL=privacy.contract.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy.contract.test.js","sourceRoot":"","sources":["../../src/ports/privacy.contract.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PrivacyPort — V0 noop stub for Vauban Privacy Protocol (VPP) integration.
|
|
3
|
+
*
|
|
4
|
+
* Implements S0 port #10 (PrivacyPort): placeholder interface for privacy-preserving
|
|
5
|
+
* operations. Phase 2+ will implement full Stwo+ML-KEM+viewing-key+SMT+cross-domain
|
|
6
|
+
* functionality per draft-vauban-privacy-protocol-00 (target IETF submission 2026-06-29,
|
|
7
|
+
* sprint-490 active 78%).
|
|
8
|
+
*
|
|
9
|
+
* V0 design: all operations return identity or noop stubs. Enables code to pass type
|
|
10
|
+
* checks while VPP integration is deferred. No Side effects, no cryptographic guarantees.
|
|
11
|
+
*
|
|
12
|
+
* Reference: S0 § cross-spec invariants X-1 (isolation), X-3 (crypto-shredding);
|
|
13
|
+
* VPP Phase roadmap: draft-vauban-privacy-protocol-00 + integration plan TBD.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* RevelationMask — declarative specification of which fields should be exposed
|
|
17
|
+
* during a privacy-respecting operation.
|
|
18
|
+
*/
|
|
19
|
+
export interface RevelationMask {
|
|
20
|
+
readonly public_fields: string[];
|
|
21
|
+
readonly private_fields: string[];
|
|
22
|
+
readonly conditional?: Array<{
|
|
23
|
+
readonly field: string;
|
|
24
|
+
readonly condition: string;
|
|
25
|
+
}>;
|
|
26
|
+
}
|
|
27
|
+
export interface ZkProofInput {
|
|
28
|
+
readonly proof_data: unknown;
|
|
29
|
+
readonly public_inputs: unknown;
|
|
30
|
+
readonly scheme?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface VerifyResult {
|
|
33
|
+
readonly valid: boolean;
|
|
34
|
+
readonly reason?: string;
|
|
35
|
+
readonly confidence?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface Commitment {
|
|
38
|
+
readonly value: unknown;
|
|
39
|
+
readonly salt?: string;
|
|
40
|
+
readonly index?: number;
|
|
41
|
+
}
|
|
42
|
+
export interface SmtResult {
|
|
43
|
+
readonly smt_root: string;
|
|
44
|
+
readonly leaf_index: number;
|
|
45
|
+
readonly version: number;
|
|
46
|
+
readonly proof?: unknown;
|
|
47
|
+
}
|
|
48
|
+
export interface PrivacyContext {
|
|
49
|
+
readonly user_id?: string;
|
|
50
|
+
readonly tenant_id?: string;
|
|
51
|
+
readonly role?: string;
|
|
52
|
+
readonly jurisdiction?: string;
|
|
53
|
+
readonly metadata?: Record<string, unknown>;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* PrivacyPort — V0 noop stub.
|
|
57
|
+
*
|
|
58
|
+
* All methods return identity values or noop results. Replaced by full VPP
|
|
59
|
+
* implementation in Phase 2 (Stwo+ML-KEM+viewing-key+SMT+cross-domain).
|
|
60
|
+
*
|
|
61
|
+
* Usage:
|
|
62
|
+
* const priv = new NoopPrivacyAdapter();
|
|
63
|
+
* const revealed = await priv.applyMask(data, mask, ctx); // data unchanged V0
|
|
64
|
+
* const vk = await priv.verifyZkProof(proof, ctx); // {valid: false, reason: 'noop_v0'}
|
|
65
|
+
*/
|
|
66
|
+
export interface PrivacyPort {
|
|
67
|
+
/**
|
|
68
|
+
* Apply a revelation mask to payload (V0: returns payload unchanged).
|
|
69
|
+
*
|
|
70
|
+
* Phase 2+: will implement field-level hiding via ZK commitments or viewing keys.
|
|
71
|
+
*
|
|
72
|
+
* @param payload input object or data structure
|
|
73
|
+
* @param mask specification of which fields are public/private/conditional
|
|
74
|
+
* @param ctx privacy context (user, tenant, role, jurisdiction)
|
|
75
|
+
* @returns masked payload (V0: unchanged)
|
|
76
|
+
*/
|
|
77
|
+
applyMask(payload: unknown, mask: RevelationMask, ctx: PrivacyContext): Promise<unknown>;
|
|
78
|
+
/**
|
|
79
|
+
* Verify a zero-knowledge proof (V0: always returns invalid with 'noop_v0' reason).
|
|
80
|
+
*
|
|
81
|
+
* Phase 2+: will implement Stwo proof verification against public inputs.
|
|
82
|
+
*
|
|
83
|
+
* @param proof ZK proof object (scheme TBD, likely Stwo)
|
|
84
|
+
* @param ctx privacy context
|
|
85
|
+
* @returns { valid: false, reason: 'noop_v0' } in V0
|
|
86
|
+
*/
|
|
87
|
+
verifyZkProof(proof: ZkProofInput, ctx: PrivacyContext): Promise<VerifyResult>;
|
|
88
|
+
/**
|
|
89
|
+
* Commit value to sparse merkle tree (V0: returns deterministic mock root).
|
|
90
|
+
*
|
|
91
|
+
* Phase 2+: will implement full SMT with Poseidon hashing and viewing keys.
|
|
92
|
+
*
|
|
93
|
+
* @param commitment value or hash to commit
|
|
94
|
+
* @param ctx privacy context
|
|
95
|
+
* @returns mock SMT root (V0: deterministic, no cryptographic guarantee)
|
|
96
|
+
*/
|
|
97
|
+
commitToSmt(commitment: Commitment, ctx: PrivacyContext): Promise<SmtResult>;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* NoopPrivacyAdapter — V0 stub implementation of PrivacyPort.
|
|
101
|
+
*
|
|
102
|
+
* All methods return identity values or noop results. Enables type-safe code
|
|
103
|
+
* while VPP integration is deferred to Phase 2.
|
|
104
|
+
*
|
|
105
|
+
* Documentation: "V0 stub — replaced by VPP integration in Phase 2
|
|
106
|
+
* (Stwo+ML-KEM+viewing key+SMT+cross-domain)."
|
|
107
|
+
*
|
|
108
|
+
* Usage:
|
|
109
|
+
* const adapter = new NoopPrivacyAdapter();
|
|
110
|
+
* const data = { secret: 'hidden', public: 'visible' };
|
|
111
|
+
* const masked = await adapter.applyMask(data, mask, ctx);
|
|
112
|
+
* // masked === data (unchanged in V0)
|
|
113
|
+
*/
|
|
114
|
+
export declare class NoopPrivacyAdapter implements PrivacyPort {
|
|
115
|
+
applyMask(payload: unknown, _mask: RevelationMask, _ctx: PrivacyContext): Promise<unknown>;
|
|
116
|
+
verifyZkProof(_proof: ZkProofInput, _ctx: PrivacyContext): Promise<VerifyResult>;
|
|
117
|
+
commitToSmt(commitment: Commitment, _ctx: PrivacyContext): Promise<SmtResult>;
|
|
118
|
+
/**
|
|
119
|
+
* Compute a deterministic mock SMT root (V0 only).
|
|
120
|
+
* Purely for testing — no cryptographic guarantee.
|
|
121
|
+
*/
|
|
122
|
+
private computeMockRoot;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* PrivacyNoopWarning — logged when V0 noop operations are used.
|
|
126
|
+
* Not thrown as an exception (non-blocking), but logged for observability.
|
|
127
|
+
*/
|
|
128
|
+
export declare class PrivacyNoopWarning extends Error {
|
|
129
|
+
readonly operation: string;
|
|
130
|
+
constructor(message: string, operation: string);
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=privacy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../src/ports/privacy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;QAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC,CAAC;CACJ;AAID,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAID,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAID,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAID;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;OASG;IACH,SAAS,CACP,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;;;;;;;OAQG;IACH,aAAa,CACX,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;;OAQG;IACH,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC9E;AAID;;;;;;;;;;;;;;GAcG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IAC9C,SAAS,CACb,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,OAAO,CAAC;IAKb,aAAa,CACjB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,YAAY,CAAC;IASlB,WAAW,CACf,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,SAAS,CAAC;IAWrB;;;OAGG;IACH,OAAO,CAAC,eAAe;CAUxB;AAID;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aACE,SAAS,EAAE,MAAM;gBAAlD,OAAO,EAAE,MAAM,EAAkB,SAAS,EAAE,MAAM;CAK/D"}
|