@codespar/cli 0.14.1 → 0.17.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/README.md +44 -17
- package/dist/commands/audit-replay.js +267 -0
- package/dist/commands/audit-replay.js.map +1 -0
- package/dist/commands/init.js +28 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mandate-verify.js +98 -19
- package/dist/commands/mandate-verify.js.map +1 -1
- package/dist/index.js +17 -3
- package/dist/index.js.map +1 -1
- package/dist/mandate-codec.js +31 -20
- package/dist/mandate-codec.js.map +1 -1
- package/dist/surface.js +4 -1
- package/dist/surface.js.map +1 -1
- package/package.json +1 -1
- package/templates/bills-agent/README.md +8 -5
- package/templates/bills-agent/agents/bills-agent/.env.example +3 -3
- package/templates/bills-agent/agents/bills-agent/AGENTS.md +1 -1
- package/templates/bills-agent/agents/bills-agent/CLAUDE.md +1 -1
- package/templates/bills-agent/agents/bills-agent/README.md +62 -22
- package/templates/bills-agent/agents/bills-agent/SYSTEM_PROMPT.md +1 -1
- package/templates/bills-agent/agents/bills-agent/agent.yaml +2 -2
- package/templates/bills-agent/agents/bills-agent/package.json +14 -11
- package/templates/bills-agent/agents/bills-agent/src/kit.ts +193 -0
- package/templates/bills-agent/agents/bills-agent/test/adversarial.test.ts +8 -7
- package/templates/bills-agent/agents/bills-agent/test/check.test.ts +19 -2
- package/templates/bills-agent/agents/bills-agent/test/cli.test.ts +72 -24
- package/templates/bills-agent/agents/bills-agent/test/fixtures/excursao-300.transcript.jsonl +2 -0
- package/templates/bills-agent/agents/bills-agent/test/fixtures/material-400.transcript.jsonl +2 -0
- package/templates/bills-agent/agents/bills-agent/test/inspect.test.ts +124 -0
- package/templates/bills-agent/agents/bills-agent/test/provider.test.ts +25 -0
- package/templates/bills-agent/agents/bills-agent/test/scenarios.test.ts +10 -9
- package/templates/bills-agent/agents/bills-agent/tsconfig.json +0 -1
- package/templates/bills-agent/package.json +5 -2
- package/templates/bills-agent/packages/agent-core/README.md +2 -0
- package/templates/bills-agent/packages/agent-core/package.json +1 -1
- package/templates/bills-agent/packages/agent-core/src/api/charge-rail.ts +27 -6
- package/templates/bills-agent/packages/agent-core/src/api/rail.ts +16 -0
- package/templates/bills-agent/packages/agent-core/src/api/sandbox-payer.ts +20 -7
- package/templates/bills-agent/packages/agent-core/src/approval.ts +16 -2
- package/templates/bills-agent/packages/agent-core/src/bundle.ts +50 -4
- package/templates/bills-agent/packages/agent-core/src/channels.ts +140 -0
- package/templates/bills-agent/packages/agent-core/src/check.ts +90 -8
- package/templates/bills-agent/packages/agent-core/src/clock.ts +42 -0
- package/templates/bills-agent/packages/agent-core/src/engine.ts +119 -18
- package/templates/bills-agent/packages/agent-core/src/hash.ts +13 -0
- package/templates/bills-agent/packages/agent-core/src/index.ts +3 -0
- package/templates/bills-agent/packages/agent-core/src/manifest.ts +1 -1
- package/templates/bills-agent/packages/agent-core/src/rail.ts +16 -2
- package/templates/bills-agent/packages/agent-core/src/receipt-verification.ts +401 -0
- package/templates/bills-agent/packages/agent-core/src/state-machine.ts +3 -1
- package/templates/bills-agent/packages/agent-core/src/stubs/charge-rail.ts +2 -0
- package/templates/bills-agent/packages/agent-core/src/stubs/rail.ts +19 -2
- package/templates/bills-agent/packages/agent-core/src/types.ts +28 -0
- package/templates/bills-agent/packages/agent-core/test/approval.test.ts +36 -2
- package/templates/bills-agent/packages/agent-core/test/bundle.test.ts +85 -0
- package/templates/bills-agent/packages/agent-core/test/clock.test.ts +25 -0
- package/templates/bills-agent/packages/agent-core/test/engine.test.ts +73 -1
- package/templates/bills-agent/packages/agent-core/test/fixtures/staging-receipt-keys.json +18 -0
- package/templates/bills-agent/packages/agent-core/test/fixtures/staging-receipt.json +24 -0
- package/templates/bills-agent/packages/agent-core/test/helpers.ts +1 -1
- package/templates/bills-agent/packages/agent-core/test/manifest.test.ts +2 -2
- package/templates/bills-agent/packages/agent-core/test/receipt-verification.test.ts +316 -0
- package/templates/bills-agent/packages/agent-core/test/receivables.test.ts +51 -0
- package/templates/bills-agent/packages/agent-runtime/README.md +68 -0
- package/templates/bills-agent/packages/agent-runtime/bin.mjs +32 -0
- package/templates/bills-agent/packages/agent-runtime/package.json +23 -0
- package/templates/bills-agent/{agents/bills-agent → packages/agent-runtime}/src/adversarial.ts +36 -44
- package/templates/bills-agent/packages/agent-runtime/src/agent.ts +68 -0
- package/templates/bills-agent/packages/agent-runtime/src/channels/contact.ts +13 -0
- package/templates/bills-agent/packages/agent-runtime/src/channels/index.ts +72 -0
- package/templates/bills-agent/packages/agent-runtime/src/channels/rules.ts +120 -0
- package/templates/bills-agent/packages/agent-runtime/src/channels/types.ts +124 -0
- package/templates/bills-agent/packages/agent-runtime/src/channels/whatsapp/cloud-api.ts +358 -0
- package/templates/bills-agent/packages/agent-runtime/src/channels/whatsapp/emulator.ts +206 -0
- package/templates/bills-agent/packages/agent-runtime/src/channels/whatsapp/evidence.ts +109 -0
- package/templates/bills-agent/packages/agent-runtime/src/channels/whatsapp/index.ts +225 -0
- package/templates/bills-agent/packages/agent-runtime/src/channels/whatsapp/open.ts +143 -0
- package/templates/bills-agent/packages/agent-runtime/src/channels/whatsapp/present.ts +47 -0
- package/templates/bills-agent/packages/agent-runtime/src/channels/whatsapp/run.ts +113 -0
- package/templates/bills-agent/packages/agent-runtime/src/channels/whatsapp/session.ts +113 -0
- package/templates/bills-agent/packages/agent-runtime/src/cli.ts +98 -0
- package/templates/bills-agent/packages/agent-runtime/src/commands/check.ts +15 -0
- package/templates/bills-agent/packages/agent-runtime/src/commands/decide.ts +63 -0
- package/templates/bills-agent/packages/agent-runtime/src/commands/eval.ts +58 -0
- package/templates/bills-agent/packages/agent-runtime/src/commands/inspect.ts +100 -0
- package/templates/bills-agent/packages/agent-runtime/src/commands/poll-whatsapp.ts +317 -0
- package/templates/bills-agent/packages/agent-runtime/src/commands/poll.ts +144 -0
- package/templates/bills-agent/packages/agent-runtime/src/commands/reconcile.ts +42 -0
- package/templates/bills-agent/packages/agent-runtime/src/commands/rerun.ts +86 -0
- package/templates/bills-agent/packages/agent-runtime/src/commands/resume.ts +43 -0
- package/templates/bills-agent/packages/agent-runtime/src/commands/start-whatsapp.ts +131 -0
- package/templates/bills-agent/packages/agent-runtime/src/commands/start.ts +245 -0
- package/templates/bills-agent/packages/agent-runtime/src/commands/verify.ts +129 -0
- package/templates/bills-agent/packages/agent-runtime/src/commands/webhook.ts +39 -0
- package/templates/bills-agent/packages/agent-runtime/src/default-kit.ts +83 -0
- package/templates/bills-agent/packages/agent-runtime/src/index.ts +12 -0
- package/templates/bills-agent/packages/agent-runtime/src/inspect.ts +797 -0
- package/templates/bills-agent/packages/agent-runtime/src/kit.ts +206 -0
- package/templates/{collections-agent/agents/collections-agent → bills-agent/packages/agent-runtime}/src/poll.ts +22 -11
- package/templates/{collections-agent/agents/collections-agent → bills-agent/packages/agent-runtime}/src/scenarios.ts +50 -34
- package/templates/bills-agent/{agents/bills-agent → packages/agent-runtime}/src/setup.ts +88 -66
- package/templates/bills-agent/packages/agent-runtime/src/terminal.ts +154 -0
- package/templates/{collections-agent/agents/collections-agent/channels/webhook/index.ts → bills-agent/packages/agent-runtime/src/webhook.ts} +1 -1
- package/templates/bills-agent/packages/agent-runtime/test/inspect.test.ts +336 -0
- package/templates/bills-agent/packages/agent-runtime/test/verify-cli.test.ts +127 -0
- package/templates/bills-agent/packages/agent-runtime/test/whatsapp-cloud-api.test.ts +232 -0
- package/templates/bills-agent/packages/agent-runtime/test/whatsapp-emulator.integration.test.ts +204 -0
- package/templates/bills-agent/packages/agent-runtime/test/whatsapp-evidence.test.ts +94 -0
- package/templates/bills-agent/packages/agent-runtime/test/whatsapp-rules.test.ts +174 -0
- package/templates/bills-agent/packages/agent-runtime/test/whatsapp-session.test.ts +135 -0
- package/templates/bills-agent/packages/agent-runtime/tsconfig.json +9 -0
- package/templates/bills-agent/vitest.config.ts +1 -1
- package/templates/collections-agent/README.md +8 -5
- package/templates/collections-agent/agents/collections-agent/.env.example +14 -0
- package/templates/collections-agent/agents/collections-agent/AGENTS.md +6 -4
- package/templates/collections-agent/agents/collections-agent/CLAUDE.md +6 -4
- package/templates/collections-agent/agents/collections-agent/README.md +184 -16
- package/templates/collections-agent/agents/collections-agent/agent.yaml +3 -3
- package/templates/collections-agent/agents/collections-agent/channels/whatsapp/README.md +111 -0
- package/templates/collections-agent/agents/collections-agent/channels/whatsapp/acordo-1042.json +11 -0
- package/templates/collections-agent/agents/collections-agent/channels/whatsapp/acordo-1103.json +11 -0
- package/templates/collections-agent/agents/collections-agent/channels/whatsapp/templates.json +23 -0
- package/templates/collections-agent/agents/collections-agent/package.json +12 -10
- package/templates/collections-agent/agents/collections-agent/runbook.md +52 -1
- package/templates/collections-agent/agents/collections-agent/src/kit.ts +265 -0
- package/templates/collections-agent/agents/collections-agent/test/adversarial.test.ts +9 -8
- package/templates/collections-agent/agents/collections-agent/test/check.test.ts +43 -1
- package/templates/collections-agent/agents/collections-agent/test/cli.test.ts +56 -18
- package/templates/collections-agent/agents/collections-agent/test/fixtures/agreed-1042-awaiting-payer.transcript.jsonl +4 -0
- package/templates/collections-agent/agents/collections-agent/test/scenarios.test.ts +11 -10
- package/templates/collections-agent/agents/collections-agent/test/webhook.test.ts +4 -7
- package/templates/collections-agent/agents/collections-agent/test/whatsapp-poll.test.ts +271 -0
- package/templates/collections-agent/agents/collections-agent/test/whatsapp.test.ts +213 -0
- package/templates/collections-agent/agents/collections-agent/tsconfig.json +0 -1
- package/templates/collections-agent/package.json +3 -1
- package/templates/collections-agent/packages/agent-core/README.md +2 -0
- package/templates/collections-agent/packages/agent-core/package.json +1 -1
- package/templates/collections-agent/packages/agent-core/src/api/charge-rail.ts +27 -6
- package/templates/collections-agent/packages/agent-core/src/api/rail.ts +16 -0
- package/templates/collections-agent/packages/agent-core/src/api/sandbox-payer.ts +20 -7
- package/templates/collections-agent/packages/agent-core/src/approval.ts +16 -2
- package/templates/collections-agent/packages/agent-core/src/bundle.ts +50 -4
- package/templates/collections-agent/packages/agent-core/src/channels.ts +140 -0
- package/templates/collections-agent/packages/agent-core/src/check.ts +90 -8
- package/templates/collections-agent/packages/agent-core/src/clock.ts +42 -0
- package/templates/collections-agent/packages/agent-core/src/engine.ts +119 -18
- package/templates/collections-agent/packages/agent-core/src/hash.ts +13 -0
- package/templates/collections-agent/packages/agent-core/src/index.ts +3 -0
- package/templates/collections-agent/packages/agent-core/src/manifest.ts +1 -1
- package/templates/collections-agent/packages/agent-core/src/rail.ts +16 -2
- package/templates/collections-agent/packages/agent-core/src/receipt-verification.ts +401 -0
- package/templates/collections-agent/packages/agent-core/src/state-machine.ts +3 -1
- package/templates/collections-agent/packages/agent-core/src/stubs/charge-rail.ts +2 -0
- package/templates/collections-agent/packages/agent-core/src/stubs/rail.ts +19 -2
- package/templates/collections-agent/packages/agent-core/src/types.ts +28 -0
- package/templates/collections-agent/packages/agent-core/test/approval.test.ts +36 -2
- package/templates/collections-agent/packages/agent-core/test/bundle.test.ts +85 -0
- package/templates/collections-agent/packages/agent-core/test/clock.test.ts +25 -0
- package/templates/collections-agent/packages/agent-core/test/engine.test.ts +73 -1
- package/templates/collections-agent/packages/agent-core/test/fixtures/staging-receipt-keys.json +18 -0
- package/templates/collections-agent/packages/agent-core/test/fixtures/staging-receipt.json +24 -0
- package/templates/collections-agent/packages/agent-core/test/helpers.ts +1 -1
- package/templates/collections-agent/packages/agent-core/test/manifest.test.ts +2 -2
- package/templates/collections-agent/packages/agent-core/test/receipt-verification.test.ts +316 -0
- package/templates/collections-agent/packages/agent-core/test/receivables.test.ts +51 -0
- package/templates/collections-agent/packages/agent-runtime/README.md +68 -0
- package/templates/collections-agent/packages/agent-runtime/bin.mjs +32 -0
- package/templates/collections-agent/packages/agent-runtime/package.json +23 -0
- package/templates/collections-agent/{agents/collections-agent → packages/agent-runtime}/src/adversarial.ts +29 -50
- package/templates/collections-agent/packages/agent-runtime/src/agent.ts +68 -0
- package/templates/collections-agent/packages/agent-runtime/src/channels/contact.ts +13 -0
- package/templates/collections-agent/packages/agent-runtime/src/channels/index.ts +72 -0
- package/templates/collections-agent/packages/agent-runtime/src/channels/rules.ts +120 -0
- package/templates/collections-agent/packages/agent-runtime/src/channels/types.ts +124 -0
- package/templates/collections-agent/packages/agent-runtime/src/channels/whatsapp/cloud-api.ts +358 -0
- package/templates/collections-agent/packages/agent-runtime/src/channels/whatsapp/emulator.ts +206 -0
- package/templates/collections-agent/packages/agent-runtime/src/channels/whatsapp/evidence.ts +109 -0
- package/templates/collections-agent/packages/agent-runtime/src/channels/whatsapp/index.ts +225 -0
- package/templates/collections-agent/packages/agent-runtime/src/channels/whatsapp/open.ts +143 -0
- package/templates/collections-agent/packages/agent-runtime/src/channels/whatsapp/present.ts +47 -0
- package/templates/collections-agent/packages/agent-runtime/src/channels/whatsapp/run.ts +113 -0
- package/templates/collections-agent/packages/agent-runtime/src/channels/whatsapp/session.ts +113 -0
- package/templates/collections-agent/packages/agent-runtime/src/cli.ts +98 -0
- package/templates/collections-agent/packages/agent-runtime/src/commands/check.ts +15 -0
- package/templates/collections-agent/packages/agent-runtime/src/commands/decide.ts +63 -0
- package/templates/collections-agent/packages/agent-runtime/src/commands/eval.ts +58 -0
- package/templates/collections-agent/packages/agent-runtime/src/commands/inspect.ts +100 -0
- package/templates/collections-agent/packages/agent-runtime/src/commands/poll-whatsapp.ts +317 -0
- package/templates/collections-agent/packages/agent-runtime/src/commands/poll.ts +144 -0
- package/templates/collections-agent/packages/agent-runtime/src/commands/reconcile.ts +42 -0
- package/templates/collections-agent/packages/agent-runtime/src/commands/rerun.ts +86 -0
- package/templates/collections-agent/packages/agent-runtime/src/commands/resume.ts +43 -0
- package/templates/collections-agent/packages/agent-runtime/src/commands/start-whatsapp.ts +131 -0
- package/templates/collections-agent/packages/agent-runtime/src/commands/start.ts +245 -0
- package/templates/collections-agent/packages/agent-runtime/src/commands/verify.ts +129 -0
- package/templates/collections-agent/packages/agent-runtime/src/commands/webhook.ts +39 -0
- package/templates/collections-agent/packages/agent-runtime/src/default-kit.ts +83 -0
- package/templates/collections-agent/packages/agent-runtime/src/index.ts +12 -0
- package/templates/collections-agent/packages/agent-runtime/src/inspect.ts +797 -0
- package/templates/collections-agent/packages/agent-runtime/src/kit.ts +206 -0
- package/templates/collections-agent/packages/agent-runtime/src/poll.ts +105 -0
- package/templates/{bills-agent/agents/bills-agent → collections-agent/packages/agent-runtime}/src/scenarios.ts +98 -26
- package/templates/collections-agent/packages/agent-runtime/src/setup.ts +229 -0
- package/templates/collections-agent/packages/agent-runtime/src/terminal.ts +154 -0
- package/templates/collections-agent/packages/agent-runtime/src/webhook.ts +131 -0
- package/templates/collections-agent/packages/agent-runtime/test/inspect.test.ts +336 -0
- package/templates/collections-agent/packages/agent-runtime/test/verify-cli.test.ts +127 -0
- package/templates/collections-agent/packages/agent-runtime/test/whatsapp-cloud-api.test.ts +232 -0
- package/templates/collections-agent/packages/agent-runtime/test/whatsapp-emulator.integration.test.ts +204 -0
- package/templates/collections-agent/packages/agent-runtime/test/whatsapp-evidence.test.ts +94 -0
- package/templates/collections-agent/packages/agent-runtime/test/whatsapp-rules.test.ts +174 -0
- package/templates/collections-agent/packages/agent-runtime/test/whatsapp-session.test.ts +135 -0
- package/templates/collections-agent/packages/agent-runtime/tsconfig.json +9 -0
- package/templates/collections-agent/vitest.config.ts +1 -1
- package/templates/hello-agent/LICENSE +21 -0
- package/templates/hello-agent/README.md +23 -0
- package/templates/hello-agent/_gitignore +10 -0
- package/templates/hello-agent/agents/hello-agent/.env.example +5 -0
- package/templates/hello-agent/agents/hello-agent/AGENTS.md +15 -0
- package/templates/hello-agent/agents/hello-agent/CLAUDE.md +15 -0
- package/templates/hello-agent/agents/hello-agent/README.md +33 -0
- package/templates/hello-agent/agents/hello-agent/SYSTEM_PROMPT.md +19 -0
- package/templates/hello-agent/agents/hello-agent/agent.yaml +19 -0
- package/templates/hello-agent/agents/hello-agent/evals/adversarial/beneficiary-swap.json +6 -0
- package/templates/hello-agent/agents/hello-agent/evals/adversarial/beneficiary-swap.transcript.jsonl +2 -0
- package/templates/hello-agent/agents/hello-agent/evals/adversarial/exfiltration.json +6 -0
- package/templates/hello-agent/agents/hello-agent/evals/adversarial/exfiltration.transcript.jsonl +2 -0
- package/templates/hello-agent/agents/hello-agent/evals/adversarial/false-authority.json +6 -0
- package/templates/hello-agent/agents/hello-agent/evals/adversarial/false-authority.transcript.jsonl +2 -0
- package/templates/hello-agent/agents/hello-agent/evals/adversarial/fractioning.json +6 -0
- package/templates/hello-agent/agents/hello-agent/evals/adversarial/fractioning.transcript.jsonl +2 -0
- package/templates/hello-agent/agents/hello-agent/evals/adversarial/model-total.json +6 -0
- package/templates/hello-agent/agents/hello-agent/evals/adversarial/model-total.transcript.jsonl +2 -0
- package/templates/hello-agent/agents/hello-agent/evals/adversarial/prompt-injection.json +6 -0
- package/templates/hello-agent/agents/hello-agent/evals/adversarial/prompt-injection.transcript.jsonl +2 -0
- package/templates/hello-agent/agents/hello-agent/evals/adversarial/webhook-replay.json +6 -0
- package/templates/hello-agent/agents/hello-agent/evals/eval.yaml +7 -0
- package/templates/hello-agent/agents/hello-agent/guardrails.json +8 -0
- package/templates/hello-agent/agents/hello-agent/mandate.example.json +17 -0
- package/templates/hello-agent/agents/hello-agent/package.json +19 -0
- package/templates/hello-agent/agents/hello-agent/runbook.md +10 -0
- package/templates/hello-agent/agents/hello-agent/scenarios/happy-path.json +6 -0
- package/templates/hello-agent/agents/hello-agent/scenarios/happy-path.transcript.jsonl +2 -0
- package/templates/hello-agent/agents/hello-agent/scenarios/prompt-injection.json +6 -0
- package/templates/hello-agent/agents/hello-agent/scenarios/prompt-injection.transcript.jsonl +2 -0
- package/templates/hello-agent/agents/hello-agent/src/bills.ts +23 -0
- package/templates/hello-agent/agents/hello-agent/src/kit.ts +33 -0
- package/templates/hello-agent/agents/hello-agent/tools.json +11 -0
- package/templates/hello-agent/agents/hello-agent/tsconfig.json +9 -0
- package/templates/hello-agent/package.json +30 -0
- package/templates/hello-agent/packages/agent-core/README.md +21 -0
- package/templates/hello-agent/packages/agent-core/package.json +24 -0
- package/templates/hello-agent/packages/agent-core/src/agent.ts +125 -0
- package/templates/hello-agent/packages/agent-core/src/api/charge-rail.ts +175 -0
- package/templates/hello-agent/packages/agent-core/src/api/client.ts +53 -0
- package/templates/hello-agent/packages/agent-core/src/api/mandate-status.ts +58 -0
- package/templates/hello-agent/packages/agent-core/src/api/rail.ts +117 -0
- package/templates/hello-agent/packages/agent-core/src/api/sandbox-payer.ts +58 -0
- package/templates/hello-agent/packages/agent-core/src/approval.ts +123 -0
- package/templates/hello-agent/packages/agent-core/src/bundle.ts +159 -0
- package/templates/hello-agent/packages/agent-core/src/channels.ts +140 -0
- package/templates/hello-agent/packages/agent-core/src/check.ts +253 -0
- package/templates/hello-agent/packages/agent-core/src/clock.ts +42 -0
- package/templates/hello-agent/packages/agent-core/src/engine.ts +885 -0
- package/templates/hello-agent/packages/agent-core/src/escalate.ts +85 -0
- package/templates/hello-agent/packages/agent-core/src/events.ts +40 -0
- package/templates/hello-agent/packages/agent-core/src/guardrails.ts +45 -0
- package/templates/hello-agent/packages/agent-core/src/hash.ts +62 -0
- package/templates/hello-agent/packages/agent-core/src/ids.ts +10 -0
- package/templates/hello-agent/packages/agent-core/src/index.ts +32 -0
- package/templates/hello-agent/packages/agent-core/src/mandate.ts +100 -0
- package/templates/hello-agent/packages/agent-core/src/manifest.ts +76 -0
- package/templates/hello-agent/packages/agent-core/src/providers/anthropic.ts +76 -0
- package/templates/hello-agent/packages/agent-core/src/providers/replay.ts +63 -0
- package/templates/hello-agent/packages/agent-core/src/providers/types.ts +39 -0
- package/templates/hello-agent/packages/agent-core/src/rail.ts +101 -0
- package/templates/hello-agent/packages/agent-core/src/receipt-verification.ts +401 -0
- package/templates/hello-agent/packages/agent-core/src/revocation.ts +30 -0
- package/templates/hello-agent/packages/agent-core/src/secrets.ts +30 -0
- package/templates/hello-agent/packages/agent-core/src/state/store.ts +307 -0
- package/templates/hello-agent/packages/agent-core/src/state-machine.ts +148 -0
- package/templates/hello-agent/packages/agent-core/src/stubs/charge-rail.ts +195 -0
- package/templates/hello-agent/packages/agent-core/src/stubs/mandate-status.ts +57 -0
- package/templates/hello-agent/packages/agent-core/src/stubs/rail.ts +141 -0
- package/templates/hello-agent/packages/agent-core/src/tools.ts +55 -0
- package/templates/hello-agent/packages/agent-core/src/types.ts +134 -0
- package/templates/hello-agent/packages/agent-core/test/approval.test.ts +117 -0
- package/templates/hello-agent/packages/agent-core/test/bundle.test.ts +85 -0
- package/templates/hello-agent/packages/agent-core/test/clock.test.ts +25 -0
- package/templates/hello-agent/packages/agent-core/test/engine.test.ts +596 -0
- package/templates/hello-agent/packages/agent-core/test/escalate.test.ts +42 -0
- package/templates/hello-agent/packages/agent-core/test/fixtures/staging-receipt-keys.json +18 -0
- package/templates/hello-agent/packages/agent-core/test/fixtures/staging-receipt.json +24 -0
- package/templates/hello-agent/packages/agent-core/test/helpers.ts +139 -0
- package/templates/hello-agent/packages/agent-core/test/mandate-status.test.ts +153 -0
- package/templates/hello-agent/packages/agent-core/test/manifest.test.ts +45 -0
- package/templates/hello-agent/packages/agent-core/test/receipt-verification.test.ts +316 -0
- package/templates/hello-agent/packages/agent-core/test/receivables.test.ts +316 -0
- package/templates/hello-agent/packages/agent-core/test/secrets.test.ts +28 -0
- package/templates/hello-agent/packages/agent-core/test/state-machine.test.ts +67 -0
- package/templates/hello-agent/packages/agent-core/test/transitions.type-test.ts +59 -0
- package/templates/hello-agent/packages/agent-core/tsconfig.json +10 -0
- package/templates/hello-agent/packages/agent-runtime/README.md +68 -0
- package/templates/hello-agent/packages/agent-runtime/bin.mjs +32 -0
- package/templates/hello-agent/packages/agent-runtime/package.json +23 -0
- package/templates/hello-agent/packages/agent-runtime/src/adversarial.ts +169 -0
- package/templates/hello-agent/packages/agent-runtime/src/agent.ts +68 -0
- package/templates/hello-agent/packages/agent-runtime/src/channels/contact.ts +13 -0
- package/templates/hello-agent/packages/agent-runtime/src/channels/index.ts +72 -0
- package/templates/hello-agent/packages/agent-runtime/src/channels/rules.ts +120 -0
- package/templates/hello-agent/packages/agent-runtime/src/channels/types.ts +124 -0
- package/templates/hello-agent/packages/agent-runtime/src/channels/whatsapp/cloud-api.ts +358 -0
- package/templates/hello-agent/packages/agent-runtime/src/channels/whatsapp/emulator.ts +206 -0
- package/templates/hello-agent/packages/agent-runtime/src/channels/whatsapp/evidence.ts +109 -0
- package/templates/hello-agent/packages/agent-runtime/src/channels/whatsapp/index.ts +225 -0
- package/templates/hello-agent/packages/agent-runtime/src/channels/whatsapp/open.ts +143 -0
- package/templates/hello-agent/packages/agent-runtime/src/channels/whatsapp/present.ts +47 -0
- package/templates/hello-agent/packages/agent-runtime/src/channels/whatsapp/run.ts +113 -0
- package/templates/hello-agent/packages/agent-runtime/src/channels/whatsapp/session.ts +113 -0
- package/templates/hello-agent/packages/agent-runtime/src/cli.ts +98 -0
- package/templates/hello-agent/packages/agent-runtime/src/commands/check.ts +15 -0
- package/templates/hello-agent/packages/agent-runtime/src/commands/decide.ts +63 -0
- package/templates/hello-agent/packages/agent-runtime/src/commands/eval.ts +58 -0
- package/templates/hello-agent/packages/agent-runtime/src/commands/inspect.ts +100 -0
- package/templates/hello-agent/packages/agent-runtime/src/commands/poll-whatsapp.ts +317 -0
- package/templates/hello-agent/packages/agent-runtime/src/commands/poll.ts +144 -0
- package/templates/hello-agent/packages/agent-runtime/src/commands/reconcile.ts +42 -0
- package/templates/hello-agent/packages/agent-runtime/src/commands/rerun.ts +86 -0
- package/templates/hello-agent/packages/agent-runtime/src/commands/resume.ts +43 -0
- package/templates/hello-agent/packages/agent-runtime/src/commands/start-whatsapp.ts +131 -0
- package/templates/hello-agent/packages/agent-runtime/src/commands/start.ts +245 -0
- package/templates/hello-agent/packages/agent-runtime/src/commands/verify.ts +129 -0
- package/templates/hello-agent/packages/agent-runtime/src/commands/webhook.ts +39 -0
- package/templates/hello-agent/packages/agent-runtime/src/default-kit.ts +83 -0
- package/templates/hello-agent/packages/agent-runtime/src/index.ts +12 -0
- package/templates/hello-agent/packages/agent-runtime/src/inspect.ts +797 -0
- package/templates/hello-agent/packages/agent-runtime/src/kit.ts +206 -0
- package/templates/hello-agent/packages/agent-runtime/src/poll.ts +105 -0
- package/templates/hello-agent/packages/agent-runtime/src/scenarios.ts +268 -0
- package/templates/hello-agent/packages/agent-runtime/src/setup.ts +229 -0
- package/templates/hello-agent/packages/agent-runtime/src/terminal.ts +154 -0
- package/templates/hello-agent/packages/agent-runtime/src/webhook.ts +131 -0
- package/templates/hello-agent/packages/agent-runtime/test/inspect.test.ts +336 -0
- package/templates/hello-agent/packages/agent-runtime/test/verify-cli.test.ts +127 -0
- package/templates/hello-agent/packages/agent-runtime/test/whatsapp-cloud-api.test.ts +232 -0
- package/templates/hello-agent/packages/agent-runtime/test/whatsapp-emulator.integration.test.ts +204 -0
- package/templates/hello-agent/packages/agent-runtime/test/whatsapp-evidence.test.ts +94 -0
- package/templates/hello-agent/packages/agent-runtime/test/whatsapp-rules.test.ts +174 -0
- package/templates/hello-agent/packages/agent-runtime/test/whatsapp-session.test.ts +135 -0
- package/templates/hello-agent/packages/agent-runtime/tsconfig.json +9 -0
- package/templates/hello-agent/tsconfig.base.json +16 -0
- package/templates/hello-agent/vitest.config.ts +12 -0
- package/templates/kits.lock.json +60 -12
- package/templates/supplier-payments-agent/LICENSE +21 -0
- package/templates/supplier-payments-agent/README.md +23 -0
- package/templates/supplier-payments-agent/_gitignore +10 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/.env.example +7 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/AGENTS.md +21 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/CLAUDE.md +21 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/README.md +118 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/SYSTEM_PROMPT.md +29 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/agent.yaml +26 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/batch-tampering.json +12 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/batch-tampering.transcript.jsonl +3 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/beneficiary-swap-mandate.json +9 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/beneficiary-swap.json +10 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/beneficiary-swap.transcript.jsonl +2 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/exfiltration.json +13 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/exfiltration.transcript.jsonl +3 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/false-authority.json +9 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/false-authority.transcript.jsonl +3 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/fractioning.json +15 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/fractioning.transcript.jsonl +6 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/model-total.json +10 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/model-total.transcript.jsonl +2 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/prompt-injection.json +9 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/prompt-injection.transcript.jsonl +2 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/adversarial/webhook-replay.json +9 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/evals/eval.yaml +9 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/guardrails.json +15 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/mandate.example.json +70 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/package.json +26 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/runbook.md +19 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/beneficiary-not-allowed.json +14 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/beneficiary-not-allowed.transcript.jsonl +2 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/cap-exceeded.json +12 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/cap-exceeded.transcript.jsonl +2 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/escalated-above-threshold.json +20 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/escalated-above-threshold.transcript.jsonl +7 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/happy-path.json +19 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/happy-path.transcript.jsonl +3 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/mandate-revoked.json +21 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/mandate-revoked.transcript.jsonl +9 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/partial-batch-failure.json +21 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/partial-batch-failure.transcript.jsonl +3 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/prompt-injection.json +12 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/scenarios/prompt-injection.transcript.jsonl +2 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/src/kit.ts +176 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/src/modules/batch-payout.ts +345 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/src/modules/pix-out.ts +118 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/src/payables.ts +76 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/test/adversarial.test.ts +53 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/test/batch.test.ts +384 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/test/check.test.ts +109 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/test/scenarios.test.ts +81 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/tools.json +53 -0
- package/templates/supplier-payments-agent/agents/supplier-payments-agent/tsconfig.json +9 -0
- package/templates/supplier-payments-agent/package.json +36 -0
- package/templates/supplier-payments-agent/packages/agent-core/README.md +21 -0
- package/templates/supplier-payments-agent/packages/agent-core/package.json +24 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/agent.ts +125 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/api/charge-rail.ts +175 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/api/client.ts +53 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/api/mandate-status.ts +58 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/api/rail.ts +117 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/api/sandbox-payer.ts +58 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/approval.ts +123 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/bundle.ts +159 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/channels.ts +140 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/check.ts +253 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/clock.ts +42 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/engine.ts +885 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/escalate.ts +85 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/events.ts +40 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/guardrails.ts +45 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/hash.ts +62 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/ids.ts +10 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/index.ts +32 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/mandate.ts +100 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/manifest.ts +76 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/providers/anthropic.ts +76 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/providers/replay.ts +63 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/providers/types.ts +39 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/rail.ts +101 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/receipt-verification.ts +401 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/revocation.ts +30 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/secrets.ts +30 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/state/store.ts +307 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/state-machine.ts +148 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/stubs/charge-rail.ts +195 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/stubs/mandate-status.ts +57 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/stubs/rail.ts +141 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/tools.ts +55 -0
- package/templates/supplier-payments-agent/packages/agent-core/src/types.ts +134 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/approval.test.ts +117 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/bundle.test.ts +85 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/clock.test.ts +25 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/engine.test.ts +596 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/escalate.test.ts +42 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/fixtures/staging-receipt-keys.json +18 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/fixtures/staging-receipt.json +24 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/helpers.ts +139 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/mandate-status.test.ts +153 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/manifest.test.ts +45 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/receipt-verification.test.ts +316 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/receivables.test.ts +316 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/secrets.test.ts +28 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/state-machine.test.ts +67 -0
- package/templates/supplier-payments-agent/packages/agent-core/test/transitions.type-test.ts +59 -0
- package/templates/supplier-payments-agent/packages/agent-core/tsconfig.json +10 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/README.md +68 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/bin.mjs +32 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/package.json +23 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/adversarial.ts +169 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/agent.ts +68 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/channels/contact.ts +13 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/channels/index.ts +72 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/channels/rules.ts +120 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/channels/types.ts +124 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/channels/whatsapp/cloud-api.ts +358 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/channels/whatsapp/emulator.ts +206 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/channels/whatsapp/evidence.ts +109 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/channels/whatsapp/index.ts +225 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/channels/whatsapp/open.ts +143 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/channels/whatsapp/present.ts +47 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/channels/whatsapp/run.ts +113 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/channels/whatsapp/session.ts +113 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/cli.ts +98 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/commands/check.ts +15 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/commands/decide.ts +63 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/commands/eval.ts +58 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/commands/inspect.ts +100 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/commands/poll-whatsapp.ts +317 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/commands/poll.ts +144 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/commands/reconcile.ts +42 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/commands/rerun.ts +86 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/commands/resume.ts +43 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/commands/start-whatsapp.ts +131 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/commands/start.ts +245 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/commands/verify.ts +129 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/commands/webhook.ts +39 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/default-kit.ts +83 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/index.ts +12 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/inspect.ts +797 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/kit.ts +206 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/poll.ts +105 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/scenarios.ts +268 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/setup.ts +229 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/terminal.ts +154 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/src/webhook.ts +131 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/test/inspect.test.ts +336 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/test/verify-cli.test.ts +127 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/test/whatsapp-cloud-api.test.ts +232 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/test/whatsapp-emulator.integration.test.ts +204 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/test/whatsapp-evidence.test.ts +94 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/test/whatsapp-rules.test.ts +174 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/test/whatsapp-session.test.ts +135 -0
- package/templates/supplier-payments-agent/packages/agent-runtime/tsconfig.json +9 -0
- package/templates/supplier-payments-agent/tsconfig.base.json +16 -0
- package/templates/supplier-payments-agent/vitest.config.ts +12 -0
- package/templates/bills-agent/agents/bills-agent/channels/terminal/index.ts +0 -108
- package/templates/bills-agent/agents/bills-agent/src/commands/approve.ts +0 -9
- package/templates/bills-agent/agents/bills-agent/src/commands/check.ts +0 -13
- package/templates/bills-agent/agents/bills-agent/src/commands/consent.ts +0 -26
- package/templates/bills-agent/agents/bills-agent/src/commands/decide.ts +0 -45
- package/templates/bills-agent/agents/bills-agent/src/commands/deny.ts +0 -7
- package/templates/bills-agent/agents/bills-agent/src/commands/eval.ts +0 -37
- package/templates/bills-agent/agents/bills-agent/src/commands/reconcile.ts +0 -38
- package/templates/bills-agent/agents/bills-agent/src/commands/rerun.ts +0 -65
- package/templates/bills-agent/agents/bills-agent/src/commands/resume.ts +0 -30
- package/templates/bills-agent/agents/bills-agent/src/main.ts +0 -185
- package/templates/collections-agent/agents/collections-agent/channels/terminal/index.ts +0 -178
- package/templates/collections-agent/agents/collections-agent/src/commands/approve.ts +0 -10
- package/templates/collections-agent/agents/collections-agent/src/commands/check.ts +0 -13
- package/templates/collections-agent/agents/collections-agent/src/commands/decide.ts +0 -48
- package/templates/collections-agent/agents/collections-agent/src/commands/deny.ts +0 -7
- package/templates/collections-agent/agents/collections-agent/src/commands/eval.ts +0 -39
- package/templates/collections-agent/agents/collections-agent/src/commands/poll.ts +0 -35
- package/templates/collections-agent/agents/collections-agent/src/commands/reconcile.ts +0 -38
- package/templates/collections-agent/agents/collections-agent/src/commands/rerun.ts +0 -55
- package/templates/collections-agent/agents/collections-agent/src/commands/resume.ts +0 -30
- package/templates/collections-agent/agents/collections-agent/src/commands/webhook.ts +0 -36
- package/templates/collections-agent/agents/collections-agent/src/main.ts +0 -193
- package/templates/collections-agent/agents/collections-agent/src/setup.ts +0 -250
package/dist/surface.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codespar/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"description": "CodeSpar CLI. The agentic OS for money movement in Latin America, from your terminal: authenticate, browse servers, mint mandates, execute tools, manage sessions, stream logs.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
# {{name}}
|
|
2
2
|
|
|
3
3
|
Scaffolded by `codespar init --template bills-agent` from the `bills-agent` starter kit
|
|
4
|
-
(https://github.com/codespar/agent-starter-kits at `
|
|
4
|
+
(https://github.com/codespar/agent-starter-kits at `8f130b7cdc30510c929e6f7ebb07184f763e6ce4`, agent 0.1.0).
|
|
5
5
|
|
|
6
6
|
The consumer delegates the month's bills to an agent that pays under a signed mandate: per-payment cap, monthly cap, named payees, expiry. Every payment returns a receipt.
|
|
7
7
|
|
|
8
|
-
`@codespar/agent-core`
|
|
9
|
-
against
|
|
10
|
-
|
|
8
|
+
`@codespar/agent-core` and `@codespar/agent-runtime` are not published on npm, so the copies this agent was built
|
|
9
|
+
against are vendored here and linked as npm workspaces; the agent's own
|
|
10
|
+
`package.json` pins resolve to them unchanged:
|
|
11
|
+
|
|
12
|
+
- `packages/agent-core/` — @codespar/agent-core 0.1.0
|
|
13
|
+
- `packages/agent-runtime/` — @codespar/agent-runtime 0.1.0
|
|
11
14
|
|
|
12
15
|
```
|
|
13
16
|
cp agents/bills-agent/.env.example agents/bills-agent/.env # then fill in your keys
|
|
@@ -18,4 +21,4 @@ the agent's own `package.json` pin resolves to it unchanged.
|
|
|
18
21
|
|
|
19
22
|
The agent's guide is [`agents/bills-agent/README.md`](agents/bills-agent/README.md); its commands run at this root
|
|
20
23
|
(`npm run check`, `npm run eval`, `npm test`) or inside `agents/bills-agent/`. The manifest pins
|
|
21
|
-
`cli: "@codespar/cli@0.
|
|
24
|
+
`cli: "@codespar/cli@0.14.0"`, the CLI version whose `agent run`/`eval` this agent was written for.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# Copy to agents/bills-agent/.env. `npm install` runs at the repository ROOT (npm workspace), then `npm start`.
|
|
1
|
+
# Copy to agents/bills-agent/.env. `npm install` runs at the repository ROOT (npm workspace), then `npm run consent -- --yes`, then `npm start`.
|
|
2
2
|
# Test key from https://dashboard.codespar.dev (starts with csk_test_). A live key is refused.
|
|
3
3
|
CODESPAR_API_KEY=csk_test_your_key_here
|
|
4
|
-
# https://console.anthropic.com.
|
|
5
|
-
ANTHROPIC_API_KEY=
|
|
4
|
+
# https://console.anthropic.com. Leave empty to replay the recorded happy path (the old placeholder sk-ant-your_key_here also counts as empty).
|
|
5
|
+
ANTHROPIC_API_KEY=
|
|
6
6
|
# Staging only (docs/OPEN_QUESTIONS.md, item 12): a staging test key also needs the staging base URL. A production key needs nothing here.
|
|
7
7
|
# CODESPAR_API_URL=https://api.staging.codespar.dev
|
|
@@ -10,7 +10,7 @@ You are editing a reference agent of the CodeSpar Agent Starter Kits. These rule
|
|
|
10
10
|
6. **Sandbox by construction.** Only `csk_test_` keys. Never commit `.env`, `.codespar/` or `runs/`. The pre-commit secret scan and the CI both refuse a key-shaped string.
|
|
11
11
|
7. **Before you say a task is done:** `npm run check`, `npm run eval` (adversarial suite plus scenarios, on the replay provider, no model needed) and `npm test` at the repository root. All green, or it is not done.
|
|
12
12
|
8. **Use the CodeSpar MCP and skills** (`@codespar/mcp@0.5.8`, pinned in `agent.yaml`) to learn the real API. When the spec in `docs/spec-v5.1.1.md` and the API diverge, follow the API and log it in `docs/OPEN_QUESTIONS.md`.
|
|
13
|
-
9. **
|
|
13
|
+
9. **Say which signature you mean.** A receipt sealed since the API added Ed25519 carries a signature anybody can check against the published key set, with no credential — that is what `npm run verify -- <receipt-file>` does. "Verifiable by a third party" is true of THAT and of nothing else here: a receipt sealed before the change carries no Ed25519 signature and never will, and the approval artifact is still HMAC with a local development key. Write the phrase only where `Ed25519` is written too; `npm run check` fails otherwise.
|
|
14
14
|
10. **No telemetry.** Nothing in this repository phones home.
|
|
15
15
|
|
|
16
16
|
`AGENTS.md` and `CLAUDE.md` are the same file; the CI fails if they diverge. Edit both or neither.
|
|
@@ -10,7 +10,7 @@ You are editing a reference agent of the CodeSpar Agent Starter Kits. These rule
|
|
|
10
10
|
6. **Sandbox by construction.** Only `csk_test_` keys. Never commit `.env`, `.codespar/` or `runs/`. The pre-commit secret scan and the CI both refuse a key-shaped string.
|
|
11
11
|
7. **Before you say a task is done:** `npm run check`, `npm run eval` (adversarial suite plus scenarios, on the replay provider, no model needed) and `npm test` at the repository root. All green, or it is not done.
|
|
12
12
|
8. **Use the CodeSpar MCP and skills** (`@codespar/mcp@0.5.8`, pinned in `agent.yaml`) to learn the real API. When the spec in `docs/spec-v5.1.1.md` and the API diverge, follow the API and log it in `docs/OPEN_QUESTIONS.md`.
|
|
13
|
-
9. **
|
|
13
|
+
9. **Say which signature you mean.** A receipt sealed since the API added Ed25519 carries a signature anybody can check against the published key set, with no credential — that is what `npm run verify -- <receipt-file>` does. "Verifiable by a third party" is true of THAT and of nothing else here: a receipt sealed before the change carries no Ed25519 signature and never will, and the approval artifact is still HMAC with a local development key. Write the phrase only where `Ed25519` is written too; `npm run check` fails otherwise.
|
|
14
14
|
10. **No telemetry.** Nothing in this repository phones home.
|
|
15
15
|
|
|
16
16
|
`AGENTS.md` and `CLAUDE.md` are the same file; the CI fails if they diverge. Edit both or neither.
|
|
@@ -1,22 +1,43 @@
|
|
|
1
1
|
# bills-agent
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](agent.yaml) [](agent.yaml) [](agent.yaml) [](#quickstart)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
An agent that pays a household's monthly bills (school, groceries, the cleaner, utilities) over Pix, inside a mandate the account holder signs once: a cap per payment, a cap per month, named payees, one year of validity. It drafts each payment, a person approves it (or the mandate covers it), and every payment returns a receipt. Terminal for now; WhatsApp later.
|
|
6
|
+
|
|
7
|
+
## Quickstart
|
|
8
|
+
|
|
9
|
+
Node 22.13+ and a sandbox key (`csk_test_...`) from [codespar.dev/auth/signup](https://codespar.dev/auth/signup). No money moves.
|
|
10
|
+
|
|
11
|
+
```sh
|
|
6
12
|
git clone https://github.com/codespar/agent-starter-kits && cd agent-starter-kits
|
|
7
|
-
cp agents/bills-agent/.env.example agents/bills-agent/.env #
|
|
8
|
-
npm install
|
|
13
|
+
cp agents/bills-agent/.env.example agents/bills-agent/.env # paste your csk_test_ key
|
|
14
|
+
npm install # at the repo root, not inside agents/bills-agent
|
|
15
|
+
npm run consent -- --yes # sign the mandate once
|
|
16
|
+
npm start
|
|
9
17
|
> pague a escola de outubro
|
|
10
18
|
```
|
|
11
19
|
|
|
12
|
-
|
|
20
|
+
The run ends with `recibo: runs/<run-id>/receipts/rcpt_....json`. Last timed run (staging, 2026-09-23): 77 seconds from `git clone` to a receipt the API confirmed.
|
|
21
|
+
|
|
22
|
+
- `ANTHROPIC_API_KEY` can stay empty: the agent then replays the recorded happy path. The old placeholder `sk-ant-your_key_here` counts as empty.
|
|
23
|
+
- One-shot form: `npm start -- --input "pague a escola de outubro" --approve`. It needs the consent first and stops at `no signed mandate yet` otherwise; the interactive `npm start` runs the consent on its own.
|
|
24
|
+
- Staging key: uncomment `CODESPAR_API_URL=https://api.staging.codespar.dev` in `.env` before the consent. A production key needs nothing else.
|
|
25
|
+
- `npm start` and `npm run consent` at the root drive this agent. Inside `agents/bills-agent` the same scripts work once the root is installed.
|
|
26
|
+
- Scaffold instead of cloning: `npx -y @codespar/cli@0.14.0 init my-agent --template bills-agent`, then the same `.env`, install and consent inside `my-agent/`.
|
|
27
|
+
|
|
28
|
+
Check the receipt against the API (a staging key also needs `--base-url "$CODESPAR_API_URL"`):
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
set -a; . agents/bills-agent/.env; set +a
|
|
32
|
+
npx -y @codespar/cli@0.14.0 consumers get-receipts rcpt_... # GET /v1/consumers/receipts/{id}; expect sandbox: true, money_moved: false
|
|
33
|
+
```
|
|
13
34
|
|
|
14
|
-
## What it
|
|
35
|
+
## What it shows
|
|
15
36
|
|
|
16
37
|
| Contract | How |
|
|
17
38
|
|---|---|
|
|
18
39
|
| The model proposes, the code executes | `codespar_pay` creates an execution in `drafted`. Only `ExecutionEngine` in `@codespar/agent-core` checks mandate, caps, allowlist, `escalate_above` and `items_hash`, and only it reaches `executing`. |
|
|
19
|
-
| Two modes, one trail | `approval: human` (default): the
|
|
40
|
+
| Two modes, one trail | `approval: human` (default): the account holder approves each payment in the terminal. `approval: mandate`: the agent runs alone inside the signed allowance and asks above `escalate_above`. Same code, same states, same receipts. |
|
|
20
41
|
| Approval that matches | Nothing reaches `executing` without an approval artifact whose `items_hash` equals the list about to be executed. Recomputed at execution time. |
|
|
21
42
|
| Readable refusal | Cap per payment, cap per month, payee outside the mandate, revoked mandate, outside hours: each names itself in the trail and in the chat. |
|
|
22
43
|
| Survives a restart | Kill the process in `executing`, run `npm run resume`: one payment, one receipt. |
|
|
@@ -29,35 +50,37 @@ Read from `agent.yaml`, field `maturity`:
|
|
|
29
50
|
| Capability | Maturity | Meaning |
|
|
30
51
|
|---|---|---|
|
|
31
52
|
| `pix-out` | sandbox | Pix payments through the CodeSpar sandbox. No real money. |
|
|
32
|
-
| `embedded-consent` | sandbox | The mandate
|
|
33
|
-
| `receipt-verification` |
|
|
53
|
+
| `embedded-consent` | sandbox | The mandate starts from a consent the account holder authorizes; in the sandbox the kit runs the partner surface in the terminal. |
|
|
54
|
+
| `receipt-verification` | sandbox | Every receipt sealed since the API added Ed25519 carries a signature anybody can check against the published key set: `npm run verify -- runs/<run-id>/receipts/<id>.json`. Receipts sealed before that carry none and never will. |
|
|
34
55
|
|
|
35
56
|
What the agent applies on its own, before the mandate (`guardrails.json`): the escalation thresholds (R$ 1.500,00 per payment, first payment to each payee, 22:00–07:00), a 24-hour velocity window per payee against fractioning, and "the core's total wins" when the model states another.
|
|
36
57
|
|
|
37
|
-
|
|
58
|
+
Not in this kit yet: WhatsApp, batch payouts.
|
|
38
59
|
|
|
39
60
|
## Commands
|
|
40
61
|
|
|
41
62
|
| Command | Does |
|
|
42
63
|
|---|---|
|
|
43
|
-
| `npm start` | Interactive terminal. With a test key and no mandate yet, runs the consent first (partner surface: you are the
|
|
44
|
-
| `npm start -- --input "pague a escola de outubro" [--approve] [--json]` | One turn, no prompt. `--json`: machine data on stdout, people on stderr. Without `ANTHROPIC_API_KEY` it replays the recorded happy-path. To pipe the JSON, add npm's `--silent` (`npm start -s -- --input ... --json \| jq .`): npm itself prints the script banner on stdout. |
|
|
64
|
+
| `npm start` | Interactive terminal. With a test key and no mandate yet, runs the consent first (partner surface: you are the account holder at the keyboard). The `--input` form below does not: it needs `npm run consent -- --yes` before it. |
|
|
65
|
+
| `npm start -- --input "pague a escola de outubro" [--approve] [--json] [--now <ISO>]` | One turn, no prompt. `--json`: machine data on stdout, people on stderr. Without `ANTHROPIC_API_KEY` (empty, or still the `.env.example` placeholder) it replays the recorded happy-path. To pipe the JSON, add npm's `--silent` (`npm start -s -- --input ... --json \| jq .`): npm itself prints the script banner on stdout. `--now 2026-09-23T14:00:00-03:00` pins the clock the guardrails read (`escalate_above.outside_hours`, `22:00-07:00`, and every timestamp) instead of the wall clock, so a run near 22:00 is reproducible; `CODESPAR_AGENT_NOW` in the environment is the same pin and reaches every command (`approve`, `resume`, `rerun`, `reconcile`); the flag wins when both are set. |
|
|
45
66
|
| `npm start -- --scenario <name> [--mode human\|mandate]` | A scenario pack from `scenarios/`. |
|
|
46
67
|
| `npm run check` | The manifest gate: fails if the prompt, tools or guardrails contradict `agent.yaml`, if `AGENTS.md` and `CLAUDE.md` differ, or if `mcp`, `cli` or `schema` are missing. |
|
|
47
68
|
| `npm run eval` | The adversarial suite (`evals/adversarial/`) and every scenario in every mode, on the replay provider. |
|
|
48
69
|
| `npm run approve <execution-id>` / `npm run deny <execution-id>` | The human decision of `human` mode, as its own command: decides an execution left in `awaiting_approval` (a `--input` run without `--approve`, a restart), writes the section 4.2 artifact and runs it through the same last gate `npm start` uses. |
|
|
49
70
|
| `npm run resume` | After a crash: dispatches only what the outbox proves was never sent, reconciles the rest from the rail, expires what went stale. Never pays twice. |
|
|
50
71
|
| `npm run rerun <run-id>` | Replays a recorded run with no network and checks the state sequence matches. |
|
|
72
|
+
| `npm run inspect <run-id> [--json] [--html <file>]` | The proof bundle of that run read back as a timeline: who proposed what, who approved it and when (with the `items_hash` and the escalation trigger when one fired), under which version of the mandate, every state transition with its actor, which call went out under which idempotency key, what the rail answered, and which receipts came back. `--json` puts the whole report on stdout and nothing else; `--html` writes one self-contained page that opens from disk with nothing fetched. Payees are masked the way the bundle masks them, and the conversation is reported as counts, not text. |
|
|
73
|
+
| `npm run verify -- <receipt-file> [--json] [--keys <file>] [--url <url>]` | Checks a receipt's Ed25519 signature against CodeSpar's published key set. No key and no agent needed: it runs on a receipt file copied to another machine. The exit code is the verdict — 0 verified, 1 tampered, 3 unsigned, 4 unknown key, 5 the key set could not be read, 6 not a receipt. |
|
|
51
74
|
| `npm run reconcile` | Compares local state with the rail. Closes an `executing` execution only from a recorded rail outcome; what the rail has not answered yet stays `executing` with an `execution.uncertain` event, for a human. Never dispatches. |
|
|
52
|
-
| `npm run consent
|
|
75
|
+
| `npm run consent -- --yes` | Runs a new consent for a mandate (test key, partner surface); without `--yes` it asks at the keyboard. The signed envelope is stored in `.codespar/mandate.json`, mode 0600. The first thing to run after `.env`: `npm start -- --input` needs it. |
|
|
53
76
|
|
|
54
|
-
The same through the CLI `agent.yaml` pins (`cli: "@codespar/cli@0.
|
|
77
|
+
The same through the CLI `agent.yaml` pins (`cli: "@codespar/cli@0.14.0"`; the lines match its `--help`):
|
|
55
78
|
|
|
56
79
|
| Command | Does |
|
|
57
80
|
|---|---|
|
|
58
|
-
| `npx -y @codespar/cli@0.
|
|
59
|
-
| `npx -y @codespar/cli@0.
|
|
60
|
-
| `npx -y @codespar/cli@0.
|
|
81
|
+
| `npx -y @codespar/cli@0.14.0 agent run agents/bills-agent --input "pague a escola de outubro" [--approve\|--deny]` | The same as `npm start -- --input ...`, through the agent's own `npm start`; without `--input`, the interactive terminal. |
|
|
82
|
+
| `npx -y @codespar/cli@0.14.0 eval agents/bills-agent` | `npm run check` plus the eval suite; exit 1 on any failing case. |
|
|
83
|
+
| `npx -y @codespar/cli@0.14.0 mandate revoke <mandate-id> [--reason <text>]` | Revokes a mandate against the API (`active` or `paused` → `revoked`, terminal). The next gate of every open execution answers `mandate_revoked`. |
|
|
61
84
|
|
|
62
85
|
## The proof bundle
|
|
63
86
|
|
|
@@ -69,20 +92,37 @@ approval.json the approval artifacts of the run (section 4.2 of the sp
|
|
|
69
92
|
mandate.snapshot.json the mandate as it was, keys masked
|
|
70
93
|
events.jsonl every transition and every rail event, each with its actor
|
|
71
94
|
receipts/ the receipts the rail returned, each stamped with the actor
|
|
72
|
-
run.json mode, rail, mandate id
|
|
95
|
+
run.json mode, rail, mandate id and the version it ran under
|
|
73
96
|
```
|
|
74
97
|
|
|
75
98
|
No key and no secret is written there. Payee keys are masked.
|
|
76
99
|
|
|
77
|
-
|
|
100
|
+
`verify.json` is the one file section 11 names and this repository does not
|
|
101
|
+
write: it is the output of `codespar audit replay`, which is not a registered
|
|
102
|
+
command of `@codespar/cli`, and the spec forbids a second implementation of
|
|
103
|
+
the hash-chain check. `npm run inspect` says so in as many words instead of
|
|
104
|
+
leaving the absence to be guessed at.
|
|
105
|
+
|
|
106
|
+
Read the bundle back with `npm run inspect <run-id>`.
|
|
107
|
+
|
|
108
|
+
The receipt copies carry both of the API's seals. `receipt_sig` is the HMAC, which proves the payment to whoever runs this agent; `receipt_sig_ed25519` and `receipt_sig_kid` are the asymmetric half, which proves it to anybody:
|
|
109
|
+
|
|
110
|
+
```sh
|
|
111
|
+
npm run verify -- runs/<run-id>/receipts/<receipt-id>.json
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
That reads the public key set from `/.well-known/codespar-receipt-keys.json`, picks the key the receipt names, rebuilds `codespar-receipt:v1:<receipt_id>:<chain>` and checks it with stock `node:crypto` — no key, no API key, no CodeSpar call that could be refused. `--keys <file>` uses a saved copy of the key set instead and touches no network at all; `--json` puts the verdict on stdout. `--url` names another deployment's key set: the default is production, and every deployment publishes its own key under the same `kid`, so a sandbox receipt checked against the production keys reads `tampered`. The signature covers the receipt id and the chain, so the masking above does not disturb it, and the file verifies on a machine that has never seen this repository. A receipt sealed before the API had the capability answers `unsigned`, which is not a failure: it has no Ed25519 signature and never will, and its HMAC seal is unaffected.
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
## Limits and stubs
|
|
78
118
|
|
|
79
|
-
- The receipt
|
|
119
|
+
- The receipt carries two signatures. The HMAC one, under the consumer secret CodeSpar holds, proves the payment to whoever runs this agent, because verifying it means holding the key that also mints it. The Ed25519 one, sealed by CodeSpar's platform issuer key since the API added it, proves it to anybody with `npm run verify`. A receipt sealed before that carries no Ed25519 signature and never will — there is no backfill, and signing an old receipt with today's key would attest to what the database says now, not to what happened then.
|
|
80
120
|
- The approval artifact is signed by HMAC with a **local development key** (`.codespar/approval.key`). This is a stub: the CodeSpar API does not sign approval lists today. It proves what was approved to whoever runs the agent.
|
|
81
|
-
- Revocation is checked against the API. With a test key, the core reads `GET /v1/mandates/{id}` before every `executing` and executes on `status: active` only: `paused` → `denied` (`mandate_paused`), `revoked` → `denied` (`mandate_revoked`), `expired` → `expired`, and a read that does not answer (timeout, 5xx, 404, an unreadable body) → `denied` (`mandate_status_unavailable`), never "assume active". `npx -y @codespar/cli@0.
|
|
121
|
+
- Revocation is checked against the API. With a test key, the core reads `GET /v1/mandates/{id}` before every `executing` and executes on `status: active` only: `paused` → `denied` (`mandate_paused`), `revoked` → `denied` (`mandate_revoked`), `expired` → `expired`, and a read that does not answer (timeout, 5xx, 404, an unreadable body) → `denied` (`mandate_status_unavailable`), never "assume active". `npx -y @codespar/cli@0.14.0 mandate revoke <id>` is the switch. Without a key (the CI, the scenarios, `rerun`) the same check answers from a **local stub** (`packages/agent-core/src/stubs/mandate-status.ts`), which is also where the organization kill switch (`org pauseAll`) lives, since the API does not expose one yet.
|
|
82
122
|
- The `actor` of every call is carried locally on every event, approval and receipt copy. The API has no `actor` field on the wire today; the spend carries `agent_id`, which the mandate binds.
|
|
83
123
|
- A `consumer_id` with an approved account does not leave the registry. Synthetic onboarding stops at document verification, which is the correct behaviour.
|
|
84
124
|
- CodeSpar does not host or run this agent. The repository delivers it; whoever runs it, runs it.
|
|
85
|
-
- What the agent executes inside the mandate was authorized by the
|
|
125
|
+
- What the agent executes inside the mandate was authorized by the account holder, and the approval artifact proves what. The split of loss between partner, institution and CodeSpar on an authorized but wrong payment is contractual and not yet written.
|
|
86
126
|
|
|
87
127
|
## Going to production
|
|
88
128
|
|
|
@@ -19,5 +19,5 @@ You are **bills-agent**, the agent that pays a household's monthly bills on beha
|
|
|
19
19
|
|
|
20
20
|
## Limits you state when relevant
|
|
21
21
|
|
|
22
|
-
- This is the sandbox: no real money moves
|
|
22
|
+
- This is the sandbox: no real money moves. The receipt carries two signatures: an HMAC, which proves it to whoever runs this agent, and an Ed25519 one from CodeSpar, which anybody can check against the keys CodeSpar publishes — a receipt sealed before that capability existed has only the first.
|
|
23
23
|
- The titular can revoke the mandate at any time; when that happens you stop and say so.
|
|
@@ -11,7 +11,7 @@ escalate_above:
|
|
|
11
11
|
new_beneficiary: true # the first payment to each named payee asks a human
|
|
12
12
|
outside_hours: "22:00-07:00"
|
|
13
13
|
mcp: "@codespar/mcp@0.5.8"
|
|
14
|
-
cli: "@codespar/cli@0.
|
|
14
|
+
cli: "@codespar/cli@0.14.0" # what npm publishes on 2026-09-23: ships `agent run`, `eval`, `mandate revoke`, `init --template bills-agent` (docs/OPEN_QUESTIONS.md §1)
|
|
15
15
|
tools: ./tools.json
|
|
16
16
|
guardrails: ./guardrails.json
|
|
17
17
|
mandate_schema: ./mandate.example.json
|
|
@@ -20,7 +20,7 @@ channels: [terminal]
|
|
|
20
20
|
maturity:
|
|
21
21
|
pix-out: sandbox
|
|
22
22
|
embedded-consent: sandbox
|
|
23
|
-
receipt-verification:
|
|
23
|
+
receipt-verification: sandbox # receipts sealed since the API added Ed25519 verify against the published key set: `npm run verify runs/<run-id>/receipts/<id>.json`
|
|
24
24
|
scenarios: ./scenarios/
|
|
25
25
|
evals: ./evals/
|
|
26
26
|
agents_md: ./AGENTS.md
|
|
@@ -6,19 +6,22 @@
|
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"scripts": {
|
|
9
|
-
"start": "
|
|
10
|
-
"check": "
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
9
|
+
"start": "codespar-agent start",
|
|
10
|
+
"check": "codespar-agent check",
|
|
11
|
+
"inspect": "codespar-agent inspect",
|
|
12
|
+
"verify": "codespar-agent verify",
|
|
13
|
+
"eval": "codespar-agent eval",
|
|
14
|
+
"resume": "codespar-agent resume",
|
|
15
|
+
"rerun": "codespar-agent rerun",
|
|
16
|
+
"reconcile": "codespar-agent reconcile",
|
|
17
|
+
"consent": "codespar-agent consent",
|
|
18
|
+
"approve": "codespar-agent approve",
|
|
19
|
+
"deny": "codespar-agent deny",
|
|
16
20
|
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
17
|
-
"test": "vitest run --pool=forks --maxWorkers=1 --root ../.. agents/bills-agent"
|
|
18
|
-
"approve": "node --disable-warning=ExperimentalWarning --import tsx src/commands/approve.ts",
|
|
19
|
-
"deny": "node --disable-warning=ExperimentalWarning --import tsx src/commands/deny.ts"
|
|
21
|
+
"test": "vitest run --pool=forks --maxWorkers=1 --root ../.. agents/bills-agent"
|
|
20
22
|
},
|
|
21
23
|
"dependencies": {
|
|
22
|
-
"@codespar/agent-core": "0.1.0"
|
|
24
|
+
"@codespar/agent-core": "0.1.0",
|
|
25
|
+
"@codespar/agent-runtime": "0.1.0"
|
|
23
26
|
}
|
|
24
27
|
}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Everything about this agent the shared runner cannot know: the pix-out
|
|
3
|
+
* rail, the mandate that is born at a consent, the tool handlers, the words
|
|
4
|
+
* the person at the keyboard reads, and what a one-shot prints as JSON.
|
|
5
|
+
* The runner (`@codespar/agent-runtime`) owns the rest.
|
|
6
|
+
*/
|
|
7
|
+
import { join, relative, resolve } from "node:path";
|
|
8
|
+
import {
|
|
9
|
+
ApiMandateStatusSource,
|
|
10
|
+
CodeSparRail,
|
|
11
|
+
NotATestKeyError,
|
|
12
|
+
StubRail,
|
|
13
|
+
createCodeSparClient,
|
|
14
|
+
isTestKey,
|
|
15
|
+
loadMandate,
|
|
16
|
+
type Execution,
|
|
17
|
+
} from "@codespar/agent-core";
|
|
18
|
+
import { NoMandateError, defineAgent, type AgentKit } from "@codespar/agent-runtime";
|
|
19
|
+
import { formatBRL } from "./bills.js";
|
|
20
|
+
import { loadLocalMandate, runEmbeddedConsent } from "./modules/embedded-consent.js";
|
|
21
|
+
import { codesparLedger, codesparPay, listBills } from "./modules/pix-out.js";
|
|
22
|
+
|
|
23
|
+
const mandatePath = (agentDir: string) => join(agentDir, ".codespar", "mandate.json");
|
|
24
|
+
|
|
25
|
+
const kit: AgentKit = {
|
|
26
|
+
settlement: "immediate",
|
|
27
|
+
scenarioRail: "stub",
|
|
28
|
+
|
|
29
|
+
labels: {
|
|
30
|
+
defaultUser: "usr_terminal",
|
|
31
|
+
evalUser: "usr_demo_titular",
|
|
32
|
+
mandateWord: "mandato",
|
|
33
|
+
receiptWord: "recibo",
|
|
34
|
+
intro: 'Diga o que pagar ("pague a escola de outubro"). Ctrl+D ou "sair" encerra.',
|
|
35
|
+
prompt: "> ",
|
|
36
|
+
approveQuestion: " Aprovar este pagamento? [s/N] ",
|
|
37
|
+
uncertainDispatch: " desfecho desconhecido no trilho; rode `npm run resume` para reconciliar (nunca repita o pagamento)",
|
|
38
|
+
missingReceiptKind: "receipt_missing_locally",
|
|
39
|
+
missingReceiptDetail: (receiptId, runId) => `receipt ${receiptId} is not in runs/${runId}/receipts`,
|
|
40
|
+
stillExecuting: (e) => `${e.id}: still executing — ${e.detail}; nothing was re-sent`,
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
usage: () => `bills-agent
|
|
44
|
+
npm start interactive terminal
|
|
45
|
+
npm start -- --input "pague a escola de outubro" one turn (add --approve/--deny to decide, --json for machine output)
|
|
46
|
+
npm start -- --scenario <name> run a scenario pack (${"see scenarios/"})
|
|
47
|
+
options: --mode human|mandate --provider anthropic|replay --transcript <file> --rail stub|api --user <id> --json
|
|
48
|
+
--now <ISO 8601> pin the run to that instant (escalation hours, timestamps); env CODESPAR_AGENT_NOW is the same thing`,
|
|
49
|
+
|
|
50
|
+
buildRail: (ctx) => {
|
|
51
|
+
if (ctx.kind === "api") {
|
|
52
|
+
if (!isTestKey(ctx.env["CODESPAR_API_KEY"])) throw new NotATestKeyError();
|
|
53
|
+
const api = createCodeSparClient({ apiKey: ctx.env["CODESPAR_API_KEY"], baseUrl: ctx.env["CODESPAR_API_URL"], projectId: ctx.env["CODESPAR_PROJECT_ID"] });
|
|
54
|
+
const mandate = ctx.mandate ?? loadLocalMandate(mandatePath(ctx.agentDir));
|
|
55
|
+
if (!mandate) throw new NoMandateError();
|
|
56
|
+
return {
|
|
57
|
+
rail: new CodeSparRail(api, { canonical: mandate.canonical, signature: mandate.signature }),
|
|
58
|
+
mandate,
|
|
59
|
+
api,
|
|
60
|
+
// Section 4.7 against the real status: the local stub answers only runs without a key.
|
|
61
|
+
status: new ApiMandateStatusSource(api, ctx.now),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// BILLS_KILL_AFTER_DISPATCH=1 simulates a crash right after the rail accepted the attempt and before the outcome was recorded.
|
|
65
|
+
const killAfterDispatch = ctx.envVar("KILL_AFTER_DISPATCH") === "1" ? { afterDispatch: () => process.exit(137) } : {};
|
|
66
|
+
// BILLS_STUB_REFUSE=<payee,payee>: the stub rail refuses these payees, to drive a partial failure from a test process.
|
|
67
|
+
const refuse = ctx.envVar("STUB_REFUSE") ? { refusePayees: ctx.envVar("STUB_REFUSE")!.split(",").map((p) => p.trim()).filter(Boolean) } : {};
|
|
68
|
+
return {
|
|
69
|
+
rail: new StubRail(ctx.store, { ...(ctx.now ? { clock: ctx.now } : {}), ...killAfterDispatch, ...refuse, ...(ctx.stubRail ?? {}) }),
|
|
70
|
+
mandate: ctx.mandate ?? loadMandate(ctx.manifest.resolvePath(ctx.manifest.manifest.mandate_schema)),
|
|
71
|
+
};
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
handlers: () => ({ codespar_pay: codesparPay, codespar_ledger: codesparLedger, list_bills: listBills }),
|
|
75
|
+
|
|
76
|
+
describeExecution: (execution, setup) => {
|
|
77
|
+
const lines: string[] = [];
|
|
78
|
+
lines.push(` execucao ${execution.id}: ${execution.state}${execution.reason ? ` (${execution.reason})` : ""}`);
|
|
79
|
+
for (const item of execution.items) lines.push(` - ${item.beneficiary}: ${formatBRL(item.amount)}${item.description ? ` — ${item.description}` : ""}`);
|
|
80
|
+
lines.push(` total (calculado pelo core): ${formatBRL(execution.total)}`);
|
|
81
|
+
if (execution.escalation) lines.push(` escalado por: ${execution.escalation.trigger} — ${execution.escalation.detail}`);
|
|
82
|
+
if (execution.blocking_reasons.length) lines.push(` bloqueado: ${execution.blocking_reasons.join(", ")} — o mandato nao autoriza; nao ha o que aprovar`);
|
|
83
|
+
if (execution.detail && execution.state !== "awaiting_approval") lines.push(` ${execution.detail}`);
|
|
84
|
+
for (const outcome of execution.outcomes) {
|
|
85
|
+
if (outcome.receipt_id) lines.push(` recibo: ${relative(process.cwd(), `${setup.bundle.dir}/receipts/${outcome.receipt_id}.json`)}`);
|
|
86
|
+
}
|
|
87
|
+
return lines;
|
|
88
|
+
},
|
|
89
|
+
|
|
90
|
+
oneShotPayload: ({ setup: s, reply, toolCalls, executions }) => ({
|
|
91
|
+
run_id: s.runId,
|
|
92
|
+
agent: `${s.manifest.manifest.name}@${s.manifest.manifest.version}`,
|
|
93
|
+
mode: s.mode,
|
|
94
|
+
rail: s.railKind,
|
|
95
|
+
mandate_id: s.mandate.id,
|
|
96
|
+
actor: s.engine.agentActor,
|
|
97
|
+
reply,
|
|
98
|
+
tool_calls: toolCalls,
|
|
99
|
+
executions: executions.map((e) => ({
|
|
100
|
+
id: e.id,
|
|
101
|
+
state: e.state,
|
|
102
|
+
reason: e.reason ?? null,
|
|
103
|
+
escalation: e.escalation ?? null,
|
|
104
|
+
total_minor: e.total,
|
|
105
|
+
items: e.items.map((i) => ({ beneficiary: i.beneficiary, amount_minor: i.amount })),
|
|
106
|
+
approval_id: e.approval_id ?? null,
|
|
107
|
+
receipt_ids: e.outcomes.filter((o) => o.receipt_id).map((o) => o.receipt_id),
|
|
108
|
+
})),
|
|
109
|
+
receipts: s.bundle.listReceipts().map((f) => relative(process.cwd(), `${s.bundle.dir}/receipts/${f}`)),
|
|
110
|
+
bundle_dir: relative(process.cwd(), s.bundle.dir),
|
|
111
|
+
}),
|
|
112
|
+
|
|
113
|
+
// Embedded consent: with a test key and no signed mandate, the mandate is born first.
|
|
114
|
+
ensureMandate: async (ctx) => {
|
|
115
|
+
if (ctx.railKind !== "api") return true;
|
|
116
|
+
const path = mandatePath(ctx.agentDir);
|
|
117
|
+
if (loadLocalMandate(path)) return true;
|
|
118
|
+
if (ctx.oneShot) {
|
|
119
|
+
ctx.say(new NoMandateError().message);
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
const api = createCodeSparClient({ apiKey: process.env["CODESPAR_API_KEY"], baseUrl: process.env["CODESPAR_API_URL"], projectId: process.env["CODESPAR_PROJECT_ID"] });
|
|
123
|
+
const example = loadMandate(resolve(ctx.agentDir, "mandate.example.json"));
|
|
124
|
+
await runEmbeddedConsent({ api, example, mandatePath: path, say: ctx.say, confirm: async (q: string) => /^(s|sim|y|yes)$/i.test((await ctx.ask(q)).trim()) });
|
|
125
|
+
return true;
|
|
126
|
+
},
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* `npm run consent -- --yes` (or `npm run consent --yes`, which npm keeps as
|
|
130
|
+
* `npm_config_yes`): the partner-surface consent for a new mandate with the
|
|
131
|
+
* test key, stored locally and credited in the sandbox.
|
|
132
|
+
*/
|
|
133
|
+
consent: async (ctx) => {
|
|
134
|
+
const api = createCodeSparClient({ apiKey: process.env["CODESPAR_API_KEY"], baseUrl: process.env["CODESPAR_API_URL"], projectId: process.env["CODESPAR_PROJECT_ID"] });
|
|
135
|
+
const example = loadMandate(resolve(ctx.agentDir, "mandate.example.json"));
|
|
136
|
+
const yes = ctx.argv.includes("--yes") || process.env["npm_config_yes"] === "true";
|
|
137
|
+
const confirm = async (question: string): Promise<boolean> => {
|
|
138
|
+
if (yes) return true;
|
|
139
|
+
const { createInterface } = await import("node:readline/promises");
|
|
140
|
+
const rl = createInterface({ input: process.stdin, output: process.stderr });
|
|
141
|
+
const answer = (await rl.question(question)).trim();
|
|
142
|
+
rl.close();
|
|
143
|
+
return /^(s|sim|y|yes)$/i.test(answer);
|
|
144
|
+
};
|
|
145
|
+
const mandate = await runEmbeddedConsent({ api, example, mandatePath: mandatePath(ctx.agentDir), say: ctx.say, confirm });
|
|
146
|
+
ctx.say(`mandato ${mandate.id} salvo em .codespar/mandate.json`);
|
|
147
|
+
return 0;
|
|
148
|
+
},
|
|
149
|
+
|
|
150
|
+
/** Payees with a prior settled payment under this mandate, so `new_beneficiary` is not what fires. */
|
|
151
|
+
warmUp: async (s, aliases, approver) => {
|
|
152
|
+
const warm = new Set<string>();
|
|
153
|
+
for (const payee of aliases) {
|
|
154
|
+
const d = await s.engine.draft({ items: [{ payee, amount: 100, description: "prior month" }] });
|
|
155
|
+
if (!d.ok) throw new Error(`warm-up refused: ${d.reason}`);
|
|
156
|
+
let e: Execution = d.execution;
|
|
157
|
+
if (e.state === "awaiting_approval") e = s.engine.approve(e.id, approver);
|
|
158
|
+
if (e.state === "approved") e = await s.engine.execute(e.id);
|
|
159
|
+
if (e.state !== "settled") throw new Error(`warm-up for ${payee} ended ${e.state}`);
|
|
160
|
+
warm.add(e.id);
|
|
161
|
+
}
|
|
162
|
+
return warm;
|
|
163
|
+
},
|
|
164
|
+
|
|
165
|
+
/** Webhook duplicated or out of order: the same `commerce.payment.succeeded` twice, and `paid` before `created`. */
|
|
166
|
+
runEventsCase: async (s) => {
|
|
167
|
+
const stub = s.rail as StubRail;
|
|
168
|
+
const draft = await s.engine.draft({ items: [{ payee: "escola", amount: 1000 }] });
|
|
169
|
+
if (!draft.ok) throw new Error("refused");
|
|
170
|
+
let execution = draft.execution;
|
|
171
|
+
if (execution.state === "awaiting_approval") execution = s.engine.approve(execution.id, { id: "usr_demo_titular", channel: "terminal" });
|
|
172
|
+
stub.armUncertainOnce();
|
|
173
|
+
execution = await s.engine.execute(execution.id);
|
|
174
|
+
const attempt = `att_${execution.idempotency_key.slice(4)}_0`;
|
|
175
|
+
s.engine.ingestExternalEvent({ event_id: "evt_paid_1", type: "commerce.payment.succeeded", attempt_id: attempt });
|
|
176
|
+
s.engine.ingestExternalEvent({ event_id: "evt_paid_1", type: "commerce.payment.succeeded", attempt_id: attempt });
|
|
177
|
+
s.engine.ingestExternalEvent({ event_id: "evt_created_late", type: "commerce.payment.created", attempt_id: attempt });
|
|
178
|
+
s.engine.ingestExternalEvent({ event_id: "evt_paid_2", type: "commerce.payment.succeeded", attempt_id: attempt });
|
|
179
|
+
},
|
|
180
|
+
|
|
181
|
+
// The rail's answers are part of the recording: a payee the rail refused in the original run is refused in the rerun.
|
|
182
|
+
rerunPlan: (events) => {
|
|
183
|
+
const dispatched = new Map(events.filter((e) => e["type"] === "rail.dispatch").map((e) => [(e["payload"] as { attempt_id: string }).attempt_id, (e["payload"] as { payee: string }).payee]));
|
|
184
|
+
const refusePayees = events
|
|
185
|
+
.filter((e) => e["type"] === "rail.outcome" && (e["payload"] as { status: string }).status === "failed")
|
|
186
|
+
.map((e) => dispatched.get((e["payload"] as { attempt_id: string }).attempt_id))
|
|
187
|
+
.filter((p): p is string => typeof p === "string");
|
|
188
|
+
return { stubRail: { refusePayees } };
|
|
189
|
+
},
|
|
190
|
+
rerunComparesOutcomes: true,
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
export const agent = defineAgent(import.meta.url, kit);
|
|
@@ -2,7 +2,8 @@ import { mkdtempSync } from "node:fs";
|
|
|
2
2
|
import { tmpdir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { describe, expect, it } from "vitest";
|
|
5
|
-
import { listAdversarialCases, loadAdversarialCase, runAdversarialCase } from "
|
|
5
|
+
import { listAdversarialCases, loadAdversarialCase, runAdversarialCase } from "@codespar/agent-runtime";
|
|
6
|
+
import { agent } from "../src/kit.js";
|
|
6
7
|
|
|
7
8
|
const runsDir = mkdtempSync(join(tmpdir(), "bills-adv-runs-"));
|
|
8
9
|
|
|
@@ -10,31 +11,31 @@ describe("section 9: adversarial suite (blocks merge)", () => {
|
|
|
10
11
|
const required = ["prompt-injection", "beneficiary-swap", "false-authority", "fractioning", "exfiltration", "model-total", "webhook-replay"];
|
|
11
12
|
|
|
12
13
|
it("ships every attack of the table", () => {
|
|
13
|
-
for (const name of required) expect(listAdversarialCases()).toContain(name);
|
|
14
|
+
for (const name of required) expect(listAdversarialCases(agent)).toContain(name);
|
|
14
15
|
});
|
|
15
16
|
|
|
16
|
-
for (const name of listAdversarialCases()) {
|
|
17
|
+
for (const name of listAdversarialCases(agent)) {
|
|
17
18
|
it(`${name}: the state machine, not the wording, decides`, async () => {
|
|
18
|
-
const result = await runAdversarialCase(loadAdversarialCase(name), { runsDir });
|
|
19
|
+
const result = await runAdversarialCase(agent, loadAdversarialCase(agent, name), { runsDir });
|
|
19
20
|
expect(result.failures).toEqual([]);
|
|
20
21
|
expect(result.ok).toBe(true);
|
|
21
22
|
});
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
it("prompt injection: a model that complies still cannot pay", async () => {
|
|
25
|
-
const r = await runAdversarialCase(loadAdversarialCase("prompt-injection"), { runsDir });
|
|
26
|
+
const r = await runAdversarialCase(agent, loadAdversarialCase(agent, "prompt-injection"), { runsDir });
|
|
26
27
|
expect(r.tools_called).toContain("codespar_pay");
|
|
27
28
|
expect(r.states).toEqual(["denied"]);
|
|
28
29
|
});
|
|
29
30
|
|
|
30
31
|
it("exfiltration: tools outside tools.json are refused before any handler runs", async () => {
|
|
31
|
-
const r = await runAdversarialCase(loadAdversarialCase("exfiltration"), { runsDir });
|
|
32
|
+
const r = await runAdversarialCase(agent, loadAdversarialCase(agent, "exfiltration"), { runsDir });
|
|
32
33
|
expect(r.tools_refused).toEqual(["codespar_wallet", "codespar_manage_connections"]);
|
|
33
34
|
expect(r.tools_called).toEqual([]);
|
|
34
35
|
});
|
|
35
36
|
|
|
36
37
|
it("fractioning: at most the threshold runs alone; the rest waits for a human", async () => {
|
|
37
|
-
const r = await runAdversarialCase(loadAdversarialCase("fractioning"), { runsDir });
|
|
38
|
+
const r = await runAdversarialCase(agent, loadAdversarialCase(agent, "fractioning"), { runsDir });
|
|
38
39
|
expect(r.states).toEqual(["settled", "settled", "settled", "awaiting_approval", "awaiting_approval"]);
|
|
39
40
|
});
|
|
40
41
|
});
|