@xoxoai/checkmate 0.4.27 → 0.5.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 +259 -224
- package/bin/checkmate.js +1 -1
- package/dist/ai/client.d.ts +45 -30
- package/dist/ai/client.d.ts.map +1 -1
- package/dist/ai/client.js +198 -129
- package/dist/ai/client.js.map +1 -1
- package/dist/ai/message-handler.d.ts +5 -7
- package/dist/ai/message-handler.d.ts.map +1 -1
- package/dist/ai/message-handler.js +38 -21
- package/dist/ai/message-handler.js.map +1 -1
- package/dist/ai/message-history.d.ts +4 -6
- package/dist/ai/message-history.d.ts.map +1 -1
- package/dist/ai/message-history.js +18 -21
- package/dist/ai/message-history.js.map +1 -1
- package/dist/ai/rate-limit-policy.d.ts +5 -3
- package/dist/ai/rate-limit-policy.d.ts.map +1 -1
- package/dist/ai/rate-limit-policy.js +24 -7
- package/dist/ai/rate-limit-policy.js.map +1 -1
- package/dist/ai/tool-response-handler.d.ts +11 -16
- package/dist/ai/tool-response-handler.d.ts.map +1 -1
- package/dist/ai/tool-response-handler.js +59 -28
- package/dist/ai/tool-response-handler.js.map +1 -1
- package/dist/ai/turn-processor.d.ts +34 -0
- package/dist/ai/turn-processor.d.ts.map +1 -0
- package/dist/ai/turn-processor.js +107 -0
- package/dist/ai/turn-processor.js.map +1 -0
- package/dist/api/allocate-run-identity.d.ts +8 -0
- package/dist/api/allocate-run-identity.d.ts.map +1 -0
- package/dist/api/allocate-run-identity.js +10 -0
- package/dist/api/allocate-run-identity.js.map +1 -0
- package/dist/api/execute-prepared-run.d.ts +22 -0
- package/dist/api/execute-prepared-run.d.ts.map +1 -0
- package/dist/api/execute-prepared-run.js +160 -0
- package/dist/api/execute-prepared-run.js.map +1 -0
- package/dist/api/index.d.ts +25 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +69 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/prepare-run.d.ts +44 -0
- package/dist/api/prepare-run.d.ts.map +1 -0
- package/dist/api/prepare-run.js +261 -0
- package/dist/api/prepare-run.js.map +1 -0
- package/dist/cli/diagnostic-relay.d.ts +6 -0
- package/dist/cli/diagnostic-relay.d.ts.map +1 -0
- package/dist/cli/diagnostic-relay.js +6 -0
- package/dist/cli/diagnostic-relay.js.map +1 -0
- package/dist/cli/main.d.ts +21 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +166 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/protocol.d.ts +57 -0
- package/dist/cli/protocol.d.ts.map +1 -0
- package/dist/cli/protocol.js +116 -0
- package/dist/cli/protocol.js.map +1 -0
- package/dist/cli/reconcile-result.d.ts +13 -0
- package/dist/cli/reconcile-result.d.ts.map +1 -0
- package/dist/cli/reconcile-result.js +300 -0
- package/dist/cli/reconcile-result.js.map +1 -0
- package/dist/cli/run-parent.d.ts +37 -0
- package/dist/cli/run-parent.d.ts.map +1 -0
- package/dist/cli/run-parent.js +491 -0
- package/dist/cli/run-parent.js.map +1 -0
- package/dist/cli/signals.d.ts +36 -0
- package/dist/cli/signals.d.ts.map +1 -0
- package/dist/cli/signals.js +85 -0
- package/dist/cli/signals.js.map +1 -0
- package/dist/cli/static-commands.d.ts +11 -0
- package/dist/cli/static-commands.d.ts.map +1 -0
- package/dist/cli/static-commands.js +83 -0
- package/dist/cli/static-commands.js.map +1 -0
- package/dist/cli/worker-stream-guard.d.ts +20 -0
- package/dist/cli/worker-stream-guard.d.ts.map +1 -0
- package/dist/cli/worker-stream-guard.js +41 -0
- package/dist/cli/worker-stream-guard.js.map +1 -0
- package/dist/cli/worker.d.ts +3 -0
- package/dist/cli/worker.d.ts.map +1 -0
- package/dist/cli/worker.js +111 -0
- package/dist/cli/worker.js.map +1 -0
- package/dist/config/ingestion.d.ts +58 -0
- package/dist/config/ingestion.d.ts.map +1 -0
- package/dist/config/ingestion.js +283 -0
- package/dist/config/ingestion.js.map +1 -0
- package/dist/config/manifest.d.ts +20 -0
- package/dist/config/manifest.d.ts.map +1 -0
- package/dist/config/manifest.js +91 -0
- package/dist/config/manifest.js.map +1 -0
- package/dist/config/model-egress.d.ts +10 -0
- package/dist/config/model-egress.d.ts.map +1 -0
- package/dist/config/model-egress.js +62 -0
- package/dist/config/model-egress.js.map +1 -0
- package/dist/config/package-resolution.d.ts +4 -0
- package/dist/config/package-resolution.d.ts.map +1 -0
- package/dist/config/package-resolution.js +24 -0
- package/dist/config/package-resolution.js.map +1 -0
- package/dist/config/policy.d.ts +44 -0
- package/dist/config/policy.d.ts.map +1 -0
- package/dist/config/policy.js +141 -0
- package/dist/config/policy.js.map +1 -0
- package/dist/config/record.d.ts +4 -0
- package/dist/config/record.d.ts.map +1 -0
- package/dist/config/record.js +10 -0
- package/dist/config/record.js.map +1 -0
- package/dist/config/secrets.d.ts +11 -0
- package/dist/config/secrets.d.ts.map +1 -0
- package/dist/config/secrets.js +42 -0
- package/dist/config/secrets.js.map +1 -0
- package/dist/contracts/diagnostics.d.ts +4 -0
- package/dist/contracts/diagnostics.d.ts.map +1 -0
- package/dist/contracts/diagnostics.js +31 -0
- package/dist/contracts/diagnostics.js.map +1 -0
- package/dist/contracts/serialize.d.ts +2 -0
- package/dist/contracts/serialize.d.ts.map +1 -0
- package/dist/contracts/serialize.js +90 -0
- package/dist/contracts/serialize.js.map +1 -0
- package/dist/contracts/types.d.ts +316 -0
- package/dist/contracts/types.d.ts.map +1 -0
- package/dist/contracts/types.js +74 -0
- package/dist/contracts/types.js.map +1 -0
- package/dist/contracts/validator.d.ts +8 -0
- package/dist/contracts/validator.d.ts.map +1 -0
- package/dist/contracts/validator.js +71 -0
- package/dist/contracts/validator.js.map +1 -0
- package/dist/driver.d.ts +97 -0
- package/dist/driver.d.ts.map +1 -0
- package/dist/driver.js +24 -0
- package/dist/driver.js.map +1 -0
- package/dist/drivers/descriptor.d.ts +15 -0
- package/dist/drivers/descriptor.d.ts.map +1 -0
- package/dist/drivers/descriptor.js +122 -0
- package/dist/drivers/descriptor.js.map +1 -0
- package/dist/drivers/loader.d.ts +18 -0
- package/dist/drivers/loader.d.ts.map +1 -0
- package/dist/drivers/loader.js +97 -0
- package/dist/drivers/loader.js.map +1 -0
- package/dist/drivers/web/checkmate-driver.json +44 -0
- package/dist/drivers/web/index.d.ts +6 -0
- package/dist/drivers/web/index.d.ts.map +1 -0
- package/dist/drivers/web/index.js +27 -0
- package/dist/drivers/web/index.js.map +1 -0
- package/dist/drivers/web/session.d.ts +22 -0
- package/dist/drivers/web/session.d.ts.map +1 -0
- package/dist/drivers/web/session.js +130 -0
- package/dist/drivers/web/session.js.map +1 -0
- package/dist/drivers/web/tools/network-request-recorder.d.ts +46 -0
- package/dist/drivers/web/tools/network-request-recorder.d.ts.map +1 -0
- package/dist/drivers/web/tools/network-request-recorder.js +164 -0
- package/dist/drivers/web/tools/network-request-recorder.js.map +1 -0
- package/dist/{tools/browser → drivers/web/tools}/screenshot-service.d.ts +1 -1
- package/dist/drivers/web/tools/screenshot-service.d.ts.map +1 -0
- package/dist/drivers/web/tools/screenshot-service.js.map +1 -0
- package/dist/drivers/web/tools/snapshot-filter/index.d.ts.map +1 -0
- package/dist/drivers/web/tools/snapshot-filter/index.js.map +1 -0
- package/dist/drivers/web/tools/snapshot-filter/semantic-scorer.d.ts.map +1 -0
- package/dist/drivers/web/tools/snapshot-filter/semantic-scorer.js.map +1 -0
- package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.d.ts +5 -0
- package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.d.ts.map +1 -0
- package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.js +56 -0
- package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.js.map +1 -0
- package/dist/drivers/web/tools/snapshot-filter/tree-reconstructor.d.ts.map +1 -0
- package/dist/drivers/web/tools/snapshot-filter/tree-reconstructor.js.map +1 -0
- package/dist/drivers/web/tools/snapshot-service.d.ts +31 -0
- package/dist/drivers/web/tools/snapshot-service.d.ts.map +1 -0
- package/dist/{tools/browser → drivers/web/tools}/snapshot-service.js +36 -7
- package/dist/drivers/web/tools/snapshot-service.js.map +1 -0
- package/dist/drivers/web/tools/tool.d.ts +76 -0
- package/dist/drivers/web/tools/tool.d.ts.map +1 -0
- package/dist/drivers/web/tools/tool.js +562 -0
- package/dist/drivers/web/tools/tool.js.map +1 -0
- package/dist/drivers/web/tools/transient-state-tracker.d.ts +26 -0
- package/dist/drivers/web/tools/transient-state-tracker.d.ts.map +1 -0
- package/dist/{tools/browser → drivers/web/tools}/transient-state-tracker.js +54 -19
- package/dist/drivers/web/tools/transient-state-tracker.js.map +1 -0
- package/dist/drivers/web/tools/types.d.ts +11 -0
- package/dist/drivers/web/tools/types.d.ts.map +1 -0
- package/dist/drivers/web/tools/types.js +2 -0
- package/dist/drivers/web/tools/types.js.map +1 -0
- package/dist/evidence/atomic-file.d.ts +23 -0
- package/dist/evidence/atomic-file.d.ts.map +1 -0
- package/dist/evidence/atomic-file.js +104 -0
- package/dist/evidence/atomic-file.js.map +1 -0
- package/dist/evidence/layout.d.ts +30 -0
- package/dist/evidence/layout.d.ts.map +1 -0
- package/dist/evidence/layout.js +152 -0
- package/dist/evidence/layout.js.map +1 -0
- package/dist/evidence/retention.d.ts +5 -0
- package/dist/evidence/retention.d.ts.map +1 -0
- package/dist/evidence/retention.js +10 -0
- package/dist/evidence/retention.js.map +1 -0
- package/dist/evidence/store.d.ts +101 -0
- package/dist/evidence/store.d.ts.map +1 -0
- package/dist/evidence/store.js +375 -0
- package/dist/evidence/store.js.map +1 -0
- package/dist/evidence/terminal-finalizer.d.ts +19 -0
- package/dist/evidence/terminal-finalizer.d.ts.map +1 -0
- package/dist/evidence/terminal-finalizer.js +56 -0
- package/dist/evidence/terminal-finalizer.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/logging/invocation-logger.d.ts +4 -0
- package/dist/logging/invocation-logger.d.ts.map +1 -0
- package/dist/logging/invocation-logger.js +25 -0
- package/dist/logging/invocation-logger.js.map +1 -0
- package/dist/logging/types.d.ts +8 -0
- package/dist/logging/types.d.ts.map +1 -0
- package/dist/logging/types.js +7 -0
- package/dist/logging/types.js.map +1 -0
- package/dist/redaction/diagnostic-sanitizer.d.ts +7 -0
- package/dist/redaction/diagnostic-sanitizer.d.ts.map +1 -0
- package/dist/redaction/diagnostic-sanitizer.js +42 -0
- package/dist/redaction/diagnostic-sanitizer.js.map +1 -0
- package/dist/redaction/redactor.d.ts +40 -0
- package/dist/redaction/redactor.d.ts.map +1 -0
- package/dist/redaction/redactor.js +176 -0
- package/dist/redaction/redactor.js.map +1 -0
- package/dist/redaction/scrub.d.ts +29 -0
- package/dist/redaction/scrub.d.ts.map +1 -0
- package/dist/redaction/scrub.js +54 -0
- package/dist/redaction/scrub.js.map +1 -0
- package/dist/runtime/config.d.ts +15 -0
- package/dist/runtime/config.d.ts.map +1 -0
- package/dist/runtime/config.js +2 -0
- package/dist/runtime/config.js.map +1 -0
- package/dist/runtime/driver-boundary.d.ts +16 -0
- package/dist/runtime/driver-boundary.d.ts.map +1 -0
- package/dist/runtime/driver-boundary.js +71 -0
- package/dist/runtime/driver-boundary.js.map +1 -0
- package/dist/runtime/driver-session.d.ts +9 -0
- package/dist/runtime/driver-session.d.ts.map +1 -0
- package/dist/runtime/driver-session.js +64 -0
- package/dist/runtime/driver-session.js.map +1 -0
- package/dist/runtime/internal-step-evidence.d.ts +30 -0
- package/dist/runtime/internal-step-evidence.d.ts.map +1 -0
- package/dist/runtime/internal-step-evidence.js +82 -0
- package/dist/runtime/internal-step-evidence.js.map +1 -0
- package/dist/runtime/result-adapter.d.ts +9 -0
- package/dist/runtime/result-adapter.d.ts.map +1 -0
- package/dist/runtime/result-adapter.js +77 -0
- package/dist/runtime/result-adapter.js.map +1 -0
- package/dist/runtime/runner.d.ts +35 -88
- package/dist/runtime/runner.d.ts.map +1 -1
- package/dist/runtime/runner.js +60 -74
- package/dist/runtime/runner.js.map +1 -1
- package/dist/runtime/scenario-control.d.ts +40 -0
- package/dist/runtime/scenario-control.d.ts.map +1 -0
- package/dist/runtime/scenario-control.js +94 -0
- package/dist/runtime/scenario-control.js.map +1 -0
- package/dist/runtime/scenario-runner.d.ts +39 -0
- package/dist/runtime/scenario-runner.d.ts.map +1 -0
- package/dist/runtime/scenario-runner.js +273 -0
- package/dist/runtime/scenario-runner.js.map +1 -0
- package/dist/runtime/scenario-state.d.ts +55 -0
- package/dist/runtime/scenario-state.d.ts.map +1 -0
- package/dist/runtime/scenario-state.js +128 -0
- package/dist/runtime/scenario-state.js.map +1 -0
- package/dist/runtime/step-execution.d.ts +24 -14
- package/dist/runtime/step-execution.d.ts.map +1 -1
- package/dist/runtime/step-execution.js +130 -36
- package/dist/runtime/step-execution.js.map +1 -1
- package/dist/runtime/text.d.ts +10 -0
- package/dist/runtime/text.d.ts.map +1 -0
- package/dist/runtime/text.js +25 -0
- package/dist/runtime/text.js.map +1 -0
- package/dist/runtime/types.d.ts +50 -76
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/usage-tracker.d.ts +37 -0
- package/dist/runtime/usage-tracker.d.ts.map +1 -0
- package/dist/runtime/usage-tracker.js +110 -0
- package/dist/runtime/usage-tracker.js.map +1 -0
- package/dist/tools/define-agent-tool.d.ts +3 -28
- package/dist/tools/define-agent-tool.d.ts.map +1 -1
- package/dist/tools/define-agent-tool.js +3 -28
- package/dist/tools/define-agent-tool.js.map +1 -1
- package/dist/tools/dispatcher.d.ts +11 -3
- package/dist/tools/dispatcher.d.ts.map +1 -1
- package/dist/tools/dispatcher.js +50 -8
- package/dist/tools/dispatcher.js.map +1 -1
- package/dist/tools/registry.d.ts +8 -10
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +19 -11
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/step/result-tool.d.ts.map +1 -1
- package/dist/tools/step/result-tool.js +8 -6
- package/dist/tools/step/result-tool.js.map +1 -1
- package/dist/tools/tool-contract.d.ts +1 -1
- package/dist/tools/tool-contract.d.ts.map +1 -1
- package/dist/tools/tool-contract.js.map +1 -1
- package/dist/tools/types.d.ts +77 -6
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/docs/CLI.md +59 -0
- package/docs/CONFIGURATION.md +91 -0
- package/docs/DRIVERS.md +75 -0
- package/docs/EVIDENCE.md +62 -0
- package/package.json +51 -59
- package/schemas/checkmate-config.v1.json +176 -0
- package/schemas/describe-result.v1.json +414 -0
- package/schemas/driver-descriptor.v1.json +66 -0
- package/schemas/run-request.v1.json +67 -0
- package/schemas/run-result.v1.json +333 -0
- package/schemas/validation-result.v1.json +86 -0
- package/dist/ai/response-processor.d.ts +0 -20
- package/dist/ai/response-processor.d.ts.map +0 -1
- package/dist/ai/response-processor.js +0 -62
- package/dist/ai/response-processor.js.map +0 -1
- package/dist/ai/token-pricing.d.ts +0 -13
- package/dist/ai/token-pricing.d.ts.map +0 -1
- package/dist/ai/token-pricing.js +0 -348
- package/dist/ai/token-pricing.js.map +0 -1
- package/dist/ai/token-tracker.d.ts +0 -33
- package/dist/ai/token-tracker.d.ts.map +0 -1
- package/dist/ai/token-tracker.js +0 -138
- package/dist/ai/token-tracker.js.map +0 -1
- package/dist/cli/create-examples.d.ts +0 -21
- package/dist/cli/create-examples.d.ts.map +0 -1
- package/dist/cli/create-examples.js +0 -116
- package/dist/cli/create-examples.js.map +0 -1
- package/dist/cli.d.ts +0 -15
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -69
- package/dist/cli.js.map +0 -1
- package/dist/config/runtime-config.d.ts +0 -21
- package/dist/config/runtime-config.d.ts.map +0 -1
- package/dist/config/runtime-config.js +0 -98
- package/dist/config/runtime-config.js.map +0 -1
- package/dist/core.d.ts +0 -8
- package/dist/core.d.ts.map +0 -1
- package/dist/core.js +0 -4
- package/dist/core.js.map +0 -1
- package/dist/integrations/salesforce/authenticator.d.ts +0 -27
- package/dist/integrations/salesforce/authenticator.d.ts.map +0 -1
- package/dist/integrations/salesforce/authenticator.js +0 -27
- package/dist/integrations/salesforce/authenticator.js.map +0 -1
- package/dist/integrations/salesforce/cli-handler.d.ts +0 -14
- package/dist/integrations/salesforce/cli-handler.d.ts.map +0 -1
- package/dist/integrations/salesforce/cli-handler.js +0 -50
- package/dist/integrations/salesforce/cli-handler.js.map +0 -1
- package/dist/logging/index.d.ts +0 -2
- package/dist/logging/index.d.ts.map +0 -1
- package/dist/logging/index.js +0 -4
- package/dist/logging/index.js.map +0 -1
- package/dist/logging/logger.d.ts +0 -5
- package/dist/logging/logger.d.ts.map +0 -1
- package/dist/logging/logger.js +0 -15
- package/dist/logging/logger.js.map +0 -1
- package/dist/playwright.d.ts +0 -102
- package/dist/playwright.d.ts.map +0 -1
- package/dist/playwright.js +0 -116
- package/dist/playwright.js.map +0 -1
- package/dist/runtime/extension.d.ts +0 -274
- package/dist/runtime/extension.d.ts.map +0 -1
- package/dist/runtime/extension.js +0 -171
- package/dist/runtime/extension.js.map +0 -1
- package/dist/salesforce.d.ts +0 -71
- package/dist/salesforce.d.ts.map +0 -1
- package/dist/salesforce.js +0 -73
- package/dist/salesforce.js.map +0 -1
- package/dist/tools/browser/screenshot-service.d.ts.map +0 -1
- package/dist/tools/browser/screenshot-service.js.map +0 -1
- package/dist/tools/browser/snapshot-filter/index.d.ts.map +0 -1
- package/dist/tools/browser/snapshot-filter/index.js.map +0 -1
- package/dist/tools/browser/snapshot-filter/semantic-scorer.d.ts.map +0 -1
- package/dist/tools/browser/snapshot-filter/semantic-scorer.js.map +0 -1
- package/dist/tools/browser/snapshot-filter/snapshot-filter.d.ts +0 -4
- package/dist/tools/browser/snapshot-filter/snapshot-filter.d.ts.map +0 -1
- package/dist/tools/browser/snapshot-filter/snapshot-filter.js +0 -57
- package/dist/tools/browser/snapshot-filter/snapshot-filter.js.map +0 -1
- package/dist/tools/browser/snapshot-filter/tree-reconstructor.d.ts.map +0 -1
- package/dist/tools/browser/snapshot-filter/tree-reconstructor.js.map +0 -1
- package/dist/tools/browser/snapshot-service.d.ts +0 -19
- package/dist/tools/browser/snapshot-service.d.ts.map +0 -1
- package/dist/tools/browser/snapshot-service.js.map +0 -1
- package/dist/tools/browser/tool.d.ts +0 -34
- package/dist/tools/browser/tool.d.ts.map +0 -1
- package/dist/tools/browser/tool.js +0 -226
- package/dist/tools/browser/tool.js.map +0 -1
- package/dist/tools/browser/transient-state-tracker.d.ts +0 -16
- package/dist/tools/browser/transient-state-tracker.d.ts.map +0 -1
- package/dist/tools/browser/transient-state-tracker.js.map +0 -1
- package/dist/tools/salesforce/login-tool.d.ts +0 -7
- package/dist/tools/salesforce/login-tool.d.ts.map +0 -1
- package/dist/tools/salesforce/login-tool.js +0 -25
- package/dist/tools/salesforce/login-tool.js.map +0 -1
- package/docs/EXTENSIONS.md +0 -232
- package/docs/GUIDE.md +0 -465
- package/docs/ROADMAP.md +0 -47
- package/playwright.config.ts +0 -39
- package/test/examples/salesforce/trial-dev-org.spec.ts +0 -82
- package/test/examples/web/website-testing.spec.ts +0 -281
- /package/dist/{tools/browser → drivers/web/tools}/screenshot-service.js +0 -0
- /package/dist/{tools/browser → drivers/web/tools}/snapshot-filter/index.d.ts +0 -0
- /package/dist/{tools/browser → drivers/web/tools}/snapshot-filter/index.js +0 -0
- /package/dist/{tools/browser → drivers/web/tools}/snapshot-filter/semantic-scorer.d.ts +0 -0
- /package/dist/{tools/browser → drivers/web/tools}/snapshot-filter/semantic-scorer.js +0 -0
- /package/dist/{tools/browser → drivers/web/tools}/snapshot-filter/tree-reconstructor.d.ts +0 -0
- /package/dist/{tools/browser → drivers/web/tools}/snapshot-filter/tree-reconstructor.js +0 -0
|
@@ -8,37 +8,12 @@ type ToolConfig<TSchema extends z.ZodType> = {
|
|
|
8
8
|
handler: (args: z.infer<TSchema>, context: AgentToolContext) => Promise<AgentToolResult> | AgentToolResult;
|
|
9
9
|
};
|
|
10
10
|
/**
|
|
11
|
-
* Creates
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```ts
|
|
15
|
-
* import { defineAgentTool } from '@xoxoai/checkmate/core'
|
|
16
|
-
* import { z } from 'zod/v4'
|
|
17
|
-
*
|
|
18
|
-
* const apiHealthTool = defineAgentTool({
|
|
19
|
-
* name: 'check_api_health',
|
|
20
|
-
* description: 'Check whether the API is healthy',
|
|
21
|
-
* schema: z.object({ url: z.string() }).strict(),
|
|
22
|
-
* handler: async ({ url }) => `API health is good for ${url}`,
|
|
23
|
-
* })
|
|
24
|
-
* ```
|
|
11
|
+
* Creates an internal runner tool, which may return a step assertion.
|
|
12
|
+
* Driver authors use defineDriverTool from '@xoxoai/checkmate/driver' instead.
|
|
25
13
|
*/
|
|
26
14
|
export declare function defineAgentTool<TSchema extends z.ZodType>(toolConfig: ToolConfig<TSchema>): AgentTool;
|
|
27
15
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* ```ts
|
|
32
|
-
* import { defineTool } from '@xoxoai/checkmate/core'
|
|
33
|
-
* import { z } from 'zod/v4'
|
|
34
|
-
*
|
|
35
|
-
* const tool = defineTool({
|
|
36
|
-
* name: 'check_api_health',
|
|
37
|
-
* description: 'Check whether the API is healthy',
|
|
38
|
-
* schema: z.object({ url: z.string() }).strict(),
|
|
39
|
-
* handler: async ({ url }) => `API health is good for ${url}`,
|
|
40
|
-
* })
|
|
41
|
-
* ```
|
|
16
|
+
* Internal shorthand for defineAgentTool; not part of the public driver API.
|
|
42
17
|
*/
|
|
43
18
|
export declare const defineTool: typeof defineAgentTool;
|
|
44
19
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-agent-tool.d.ts","sourceRoot":"","sources":["../../src/tools/define-agent-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAuB,eAAe,EAAE,MAAM,YAAY,CAAA;AAE9F,KAAK,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,IAAI;IAC5C,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;CAC1G,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"define-agent-tool.d.ts","sourceRoot":"","sources":["../../src/tools/define-agent-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAuB,eAAe,EAAE,MAAM,YAAY,CAAA;AAE9F,KAAK,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,IAAI;IAC5C,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;CAC1G,CAAA;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,SAAS,CAsBrG;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,wBAAkB,CAAA"}
|
|
@@ -1,19 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod/v4';
|
|
2
2
|
/**
|
|
3
|
-
* Creates
|
|
4
|
-
*
|
|
5
|
-
* @example
|
|
6
|
-
* ```ts
|
|
7
|
-
* import { defineAgentTool } from '@xoxoai/checkmate/core'
|
|
8
|
-
* import { z } from 'zod/v4'
|
|
9
|
-
*
|
|
10
|
-
* const apiHealthTool = defineAgentTool({
|
|
11
|
-
* name: 'check_api_health',
|
|
12
|
-
* description: 'Check whether the API is healthy',
|
|
13
|
-
* schema: z.object({ url: z.string() }).strict(),
|
|
14
|
-
* handler: async ({ url }) => `API health is good for ${url}`,
|
|
15
|
-
* })
|
|
16
|
-
* ```
|
|
3
|
+
* Creates an internal runner tool, which may return a step assertion.
|
|
4
|
+
* Driver authors use defineDriverTool from '@xoxoai/checkmate/driver' instead.
|
|
17
5
|
*/
|
|
18
6
|
export function defineAgentTool(toolConfig) {
|
|
19
7
|
const jsonSchema = z.toJSONSchema(toolConfig.schema);
|
|
@@ -36,20 +24,7 @@ export function defineAgentTool(toolConfig) {
|
|
|
36
24
|
};
|
|
37
25
|
}
|
|
38
26
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* @example
|
|
42
|
-
* ```ts
|
|
43
|
-
* import { defineTool } from '@xoxoai/checkmate/core'
|
|
44
|
-
* import { z } from 'zod/v4'
|
|
45
|
-
*
|
|
46
|
-
* const tool = defineTool({
|
|
47
|
-
* name: 'check_api_health',
|
|
48
|
-
* description: 'Check whether the API is healthy',
|
|
49
|
-
* schema: z.object({ url: z.string() }).strict(),
|
|
50
|
-
* handler: async ({ url }) => `API health is good for ${url}`,
|
|
51
|
-
* })
|
|
52
|
-
* ```
|
|
27
|
+
* Internal shorthand for defineAgentTool; not part of the public driver API.
|
|
53
28
|
*/
|
|
54
29
|
export const defineTool = defineAgentTool;
|
|
55
30
|
//# sourceMappingURL=define-agent-tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-agent-tool.js","sourceRoot":"","sources":["../../src/tools/define-agent-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAW1B
|
|
1
|
+
{"version":3,"file":"define-agent-tool.js","sourceRoot":"","sources":["../../src/tools/define-agent-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAW1B;;;GAGG;AACH,MAAM,UAAU,eAAe,CAA4B,UAA+B;IACzF,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAA4B,CAAA;IAC/E,OAAO,UAAU,CAAC,OAAO,CAAA;IAEzB,MAAM,UAAU,GAAwB;QACvC,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,UAAU,EAAE,UAAU;QACtB,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,IAAI;KACjC,CAAA;IAED,OAAO;QACN,UAAU;QACV,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,OAAyB,EAAE,EAAE;YAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,qBAAqB,UAAU,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YACnG,CAAC;YAED,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAChD,CAAC;KACD,CAAA;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAA"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { RuntimeLogger } from '../logging/types.js';
|
|
2
|
+
import { LoopDetector } from './loop-detector.js';
|
|
3
|
+
import { ToolRegistry } from './registry.js';
|
|
4
|
+
import { AgentToolContext, ToolCall, ToolResponse } from './types.js';
|
|
3
5
|
export declare class ToolDispatcher {
|
|
4
6
|
private readonly toolRegistry;
|
|
5
7
|
private readonly loopDetector;
|
|
6
|
-
|
|
8
|
+
private readonly runtimeLogger;
|
|
9
|
+
private readonly debug;
|
|
10
|
+
constructor(toolRegistry: ToolRegistry, loopDetector: LoopDetector, runtimeLogger: RuntimeLogger, debug?: boolean);
|
|
7
11
|
getToolRegistry(): ToolRegistry;
|
|
8
12
|
dispatch(toolCall: ToolCall, context: AgentToolContext): Promise<ToolResponse | null>;
|
|
13
|
+
private formatAllowedToolNames;
|
|
9
14
|
private normalizeToolResponse;
|
|
10
15
|
}
|
|
16
|
+
export declare class ToolDispatchError extends Error {
|
|
17
|
+
constructor(message: string, options?: ErrorOptions);
|
|
18
|
+
}
|
|
11
19
|
//# sourceMappingURL=dispatcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/tools/dispatcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/tools/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAsC,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzG,qBAAa,cAAc;IAEzB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAHL,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,KAAK,UAAQ;IAG/B,eAAe,IAAI,YAAY;IAIzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA6C3F,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,qBAAqB;CAkB7B;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAInD"}
|
package/dist/tools/dispatcher.js
CHANGED
|
@@ -1,24 +1,54 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { LoopDetector } from './loop-detector.js';
|
|
1
|
+
import { scrub } from '../redaction/scrub.js';
|
|
3
2
|
export class ToolDispatcher {
|
|
4
3
|
toolRegistry;
|
|
5
4
|
loopDetector;
|
|
6
|
-
|
|
5
|
+
runtimeLogger;
|
|
6
|
+
debug;
|
|
7
|
+
constructor(toolRegistry, loopDetector, runtimeLogger, debug = false) {
|
|
7
8
|
this.toolRegistry = toolRegistry;
|
|
8
|
-
this.loopDetector =
|
|
9
|
+
this.loopDetector = loopDetector;
|
|
10
|
+
this.runtimeLogger = runtimeLogger;
|
|
11
|
+
this.debug = debug;
|
|
9
12
|
}
|
|
10
13
|
getToolRegistry() {
|
|
11
14
|
return this.toolRegistry;
|
|
12
15
|
}
|
|
13
16
|
async dispatch(toolCall, context) {
|
|
14
17
|
this.loopDetector.recordToolCall(toolCall);
|
|
15
|
-
|
|
18
|
+
this.runtimeLogger.info(`executing tool: ${toolCall.name}:\n${JSON.stringify(toolCall.arguments ?? {}, null, 2)}`);
|
|
16
19
|
const tool = this.toolRegistry.resolve(toolCall.name);
|
|
17
20
|
if (!tool) {
|
|
18
|
-
throw new
|
|
21
|
+
throw new ToolDispatchError([
|
|
22
|
+
`Invalid tool name: ${toolCall.name}`,
|
|
23
|
+
`arguments: ${preview(toolCall.arguments, 1_000)}`,
|
|
24
|
+
`registered_tools: ${this.toolRegistry.getRegisteredToolNames().join(', ') || '(none)'}`,
|
|
25
|
+
`allowed_tools: ${this.formatAllowedToolNames()}`,
|
|
26
|
+
].join('\n'));
|
|
19
27
|
}
|
|
20
|
-
|
|
21
|
-
|
|
28
|
+
let result;
|
|
29
|
+
try {
|
|
30
|
+
result = await tool.execute(toolCall.arguments, context);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
throw new ToolDispatchError([
|
|
34
|
+
`Tool execution failed: ${toolCall.name}`,
|
|
35
|
+
`arguments: ${preview(toolCall.arguments, 1_000)}`,
|
|
36
|
+
`original_error: ${error instanceof Error ? error.message : String(error)}`,
|
|
37
|
+
].join('\n'), { cause: error });
|
|
38
|
+
}
|
|
39
|
+
const response = this.normalizeToolResponse(toolCall.name, result);
|
|
40
|
+
if (response === null && this.debug) {
|
|
41
|
+
this.runtimeLogger.debug([
|
|
42
|
+
'tool completed without model response:',
|
|
43
|
+
`tool: ${toolCall.name}`,
|
|
44
|
+
`arguments: ${preview(toolCall.arguments ?? {}, 1_000)}`,
|
|
45
|
+
].join('\n'));
|
|
46
|
+
}
|
|
47
|
+
return response;
|
|
48
|
+
}
|
|
49
|
+
formatAllowedToolNames() {
|
|
50
|
+
const allowedNames = this.toolRegistry.getAllowedToolNames();
|
|
51
|
+
return allowedNames === '*' ? '(all registered tools allowed)' : allowedNames.join(', ') || '(none)';
|
|
22
52
|
}
|
|
23
53
|
normalizeToolResponse(toolName, result) {
|
|
24
54
|
if (result === undefined) {
|
|
@@ -33,9 +63,21 @@ export class ToolDispatcher {
|
|
|
33
63
|
response: normalizedResult.response,
|
|
34
64
|
snapshot: normalizedResult.snapshot ?? null,
|
|
35
65
|
status: normalizedResult.status ?? 'success',
|
|
66
|
+
...(normalizedResult.assertion ? { assertion: normalizedResult.assertion } : {}),
|
|
36
67
|
};
|
|
37
68
|
}
|
|
38
69
|
}
|
|
70
|
+
export class ToolDispatchError extends Error {
|
|
71
|
+
constructor(message, options) {
|
|
72
|
+
super(message, options);
|
|
73
|
+
this.name = 'ToolDispatchError';
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function preview(value, maxLength) {
|
|
77
|
+
const text = typeof value === 'string' ? value : JSON.stringify(value, null, 2);
|
|
78
|
+
const safeText = scrub(text ?? String(value));
|
|
79
|
+
return safeText.length <= maxLength ? safeText : `${safeText.slice(0, maxLength - 3)}...`;
|
|
80
|
+
}
|
|
39
81
|
function inferToolResponseStatus(response) {
|
|
40
82
|
const normalizedResponse = response.trim().toLowerCase();
|
|
41
83
|
if (normalizedResponse.startsWith('failed') ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/tools/dispatcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/tools/dispatcher.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/registry.d.ts
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import { ChatCompletionFunctionTool } from 'openai/resources/chat/completions';
|
|
2
|
-
import { RuntimeConfig } from '../config/runtime-config.js';
|
|
3
2
|
import { AgentTool } from './types.js';
|
|
4
|
-
export type ToolResponse
|
|
5
|
-
name?: string;
|
|
6
|
-
response: string;
|
|
7
|
-
snapshot?: string | null;
|
|
8
|
-
status: 'success' | 'error';
|
|
9
|
-
};
|
|
3
|
+
export type { ToolResponse } from './types.js';
|
|
10
4
|
export declare class ToolRegistry {
|
|
11
|
-
private readonly runtimeConfig;
|
|
12
5
|
private readonly tools;
|
|
13
6
|
private readonly toolsByName;
|
|
14
|
-
|
|
7
|
+
private readonly allowedNames;
|
|
8
|
+
constructor(input: {
|
|
9
|
+
allowedTools: '*' | readonly string[];
|
|
10
|
+
});
|
|
15
11
|
register(tool: AgentTool | AgentTool[]): void;
|
|
16
|
-
getRuntimeConfig(): RuntimeConfig;
|
|
17
12
|
resolve(toolName: string): AgentTool | undefined;
|
|
13
|
+
getRegisteredToolNames(): string[];
|
|
18
14
|
getTools(): Promise<ChatCompletionFunctionTool[]>;
|
|
15
|
+
getAllowedToolNames(): '*' | readonly string[];
|
|
16
|
+
private isAllowed;
|
|
19
17
|
private toOpenAiTool;
|
|
20
18
|
}
|
|
21
19
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAE9E,OAAO,EAAE,SAAS,EAAe,MAAM,YAAY,CAAA;AAEnD,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;gBAE1C,KAAK,EAAE;QAAE,YAAY,EAAE,GAAG,GAAG,SAAS,MAAM,EAAE,CAAA;KAAE;IAI5D,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,IAAI;IAc7C,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAKhD,sBAAsB,IAAI,MAAM,EAAE;IAI5B,QAAQ,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAMvD,mBAAmB,IAAI,GAAG,GAAG,SAAS,MAAM,EAAE;IAI9C,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,YAAY;CAWpB"}
|
package/dist/tools/registry.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { StepResultTool } from './step/result-tool.js';
|
|
1
2
|
import { getToolName } from './types.js';
|
|
2
3
|
export class ToolRegistry {
|
|
3
|
-
runtimeConfig;
|
|
4
4
|
tools = [];
|
|
5
5
|
toolsByName = new Map();
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
allowedNames;
|
|
7
|
+
constructor(input) {
|
|
8
|
+
this.allowedNames = input.allowedTools === '*' ? '*' : [...input.allowedTools];
|
|
8
9
|
}
|
|
9
10
|
register(tool) {
|
|
10
11
|
const tools = Array.isArray(tool) ? tool : [tool];
|
|
@@ -17,19 +18,26 @@ export class ToolRegistry {
|
|
|
17
18
|
this.toolsByName.set(toolName, registeredTool);
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
|
-
getRuntimeConfig() {
|
|
21
|
-
return this.runtimeConfig;
|
|
22
|
-
}
|
|
23
21
|
resolve(toolName) {
|
|
22
|
+
if (!this.isAllowed(toolName))
|
|
23
|
+
return undefined;
|
|
24
24
|
return this.toolsByName.get(toolName);
|
|
25
25
|
}
|
|
26
|
+
getRegisteredToolNames() {
|
|
27
|
+
return this.tools.map((tool) => getToolName(tool));
|
|
28
|
+
}
|
|
26
29
|
async getTools() {
|
|
27
|
-
const allowedNames = this.runtimeConfig.getAllowedFunctionNames();
|
|
28
30
|
const definitions = this.tools.map((tool) => this.toOpenAiTool(tool));
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return
|
|
31
|
+
return definitions.filter((tool) => this.isAllowed(tool.function.name));
|
|
32
|
+
}
|
|
33
|
+
getAllowedToolNames() {
|
|
34
|
+
return this.allowedNames === '*' ? '*' : [...this.allowedNames];
|
|
35
|
+
}
|
|
36
|
+
isAllowed(toolName) {
|
|
37
|
+
return (toolName === StepResultTool.TOOL_FAIL_TEST_STEP ||
|
|
38
|
+
toolName === StepResultTool.TOOL_PASS_TEST_STEP ||
|
|
39
|
+
this.allowedNames === '*' ||
|
|
40
|
+
this.allowedNames.includes(toolName));
|
|
33
41
|
}
|
|
34
42
|
toOpenAiTool(tool) {
|
|
35
43
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAa,WAAW,EAAE,MAAM,YAAY,CAAA;AAInD,MAAM,OAAO,YAAY;IACP,KAAK,GAAgB,EAAE,CAAA;IACvB,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAA;IAC1C,YAAY,CAAyB;IAEtD,YAAY,KAAgD;QAC3D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAA;IAC/E,CAAC;IAED,QAAQ,CAAC,IAA6B;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAEjD,KAAK,MAAM,cAAc,IAAI,KAAK,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,CAAA;YAC5C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,GAAG,CAAC,CAAA;YACjE,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;QAC/C,CAAC;IACF,CAAC;IAED,OAAO,CAAC,QAAgB;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YAAE,OAAO,SAAS,CAAA;QAC/C,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,sBAAsB;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,QAAQ;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;QAErE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IACxE,CAAC;IAED,mBAAmB;QAClB,OAAO,IAAI,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;IAChE,CAAC;IAEO,SAAS,CAAC,QAAgB;QACjC,OAAO,CACN,QAAQ,KAAK,cAAc,CAAC,mBAAmB;YAC/C,QAAQ,KAAK,cAAc,CAAC,mBAAmB;YAC/C,IAAI,CAAC,YAAY,KAAK,GAAG;YACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACpC,CAAA;IACF,CAAC;IAEO,YAAY,CAAC,IAAe;QACnC,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACT,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;gBAC1B,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;gBACxC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU;gBACtC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;aAC9B;SACD,CAAA;IACF,CAAC;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-tool.d.ts","sourceRoot":"","sources":["../../../src/tools/step/result-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,eAAO,MAAM,cAAc;;;CAGjB,CAAA;AAQV,wBAAgB,qBAAqB,IAAI,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"result-tool.d.ts","sourceRoot":"","sources":["../../../src/tools/step/result-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,eAAO,MAAM,cAAc;;;CAGjB,CAAA;AAQV,wBAAgB,qBAAqB,IAAI,SAAS,EAAE,CAqBnD"}
|
|
@@ -15,17 +15,19 @@ export function createStepResultTools() {
|
|
|
15
15
|
name: StepResultTool.TOOL_FAIL_TEST_STEP,
|
|
16
16
|
description: 'Fail the test step with the actual result',
|
|
17
17
|
schema: stepResultSchema,
|
|
18
|
-
handler: ({ actualResult }
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
handler: ({ actualResult }) => ({
|
|
19
|
+
response: actualResult,
|
|
20
|
+
assertion: { passed: false, actual: actualResult },
|
|
21
|
+
}),
|
|
21
22
|
}),
|
|
22
23
|
defineAgentTool({
|
|
23
24
|
name: StepResultTool.TOOL_PASS_TEST_STEP,
|
|
24
25
|
description: 'Pass the test step with the actual result',
|
|
25
26
|
schema: stepResultSchema,
|
|
26
|
-
handler: ({ actualResult }
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
handler: ({ actualResult }) => ({
|
|
28
|
+
response: actualResult,
|
|
29
|
+
assertion: { passed: true, actual: actualResult },
|
|
30
|
+
}),
|
|
29
31
|
}),
|
|
30
32
|
];
|
|
31
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-tool.js","sourceRoot":"","sources":["../../../src/tools/step/result-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAGzD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,mBAAmB,EAAE,gBAAgB;IACrC,mBAAmB,EAAE,gBAAgB;CAC5B,CAAA;AAEV,MAAM,gBAAgB,GAAG,CAAC;KACxB,MAAM,CAAC;IACP,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CACvE,CAAC;KACD,MAAM,EAAE,CAAA;AAEV,MAAM,UAAU,qBAAqB;IACpC,OAAO;QACN,eAAe,CAAC;YACf,IAAI,EAAE,cAAc,CAAC,mBAAmB;YACxC,WAAW,EAAE,2CAA2C;YACxD,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"result-tool.js","sourceRoot":"","sources":["../../../src/tools/step/result-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAGzD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,mBAAmB,EAAE,gBAAgB;IACrC,mBAAmB,EAAE,gBAAgB;CAC5B,CAAA;AAEV,MAAM,gBAAgB,GAAG,CAAC;KACxB,MAAM,CAAC;IACP,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CACvE,CAAC;KACD,MAAM,EAAE,CAAA;AAEV,MAAM,UAAU,qBAAqB;IACpC,OAAO;QACN,eAAe,CAAC;YACf,IAAI,EAAE,cAAc,CAAC,mBAAmB;YACxC,WAAW,EAAE,2CAA2C;YACxD,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/B,QAAQ,EAAE,YAAY;gBACtB,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;aAClD,CAAC;SACF,CAAC;QACF,eAAe,CAAC;YACf,IAAI,EAAE,cAAc,CAAC,mBAAmB;YACxC,WAAW,EAAE,2CAA2C;YACxD,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/B,QAAQ,EAAE,YAAY;gBACtB,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE;aACjD,CAAC;SACF,CAAC;KACF,CAAA;AACF,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { AgentTool, AgentToolContext, AgentToolDefinition, AgentToolResponse, AgentToolResult, ToolCall, } from './types.js';
|
|
1
|
+
export type { AgentTool, AgentToolContext, AgentToolDefinition, AgentToolResponse, AgentToolResult, ToolCall, ToolExecution, ToolResponse, } from './types.js';
|
|
2
2
|
export { getToolName } from './types.js';
|
|
3
3
|
//# sourceMappingURL=tool-contract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-contract.d.ts","sourceRoot":"","sources":["../../src/tools/tool-contract.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,QAAQ,
|
|
1
|
+
{"version":3,"file":"tool-contract.d.ts","sourceRoot":"","sources":["../../src/tools/tool-contract.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,aAAa,EACb,YAAY,GACZ,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-contract.js","sourceRoot":"","sources":["../../src/tools/tool-contract.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-contract.js","sourceRoot":"","sources":["../../src/tools/tool-contract.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/tools/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Step, StepAssertion } from '../runtime/types.js';
|
|
2
|
+
import type { StepControl } from '../runtime/scenario-control.js';
|
|
2
3
|
/**
|
|
3
4
|
* Normalized tool call emitted by the model.
|
|
4
5
|
*
|
|
@@ -75,6 +76,10 @@ export type AgentToolResponse = {
|
|
|
75
76
|
* Outcome status used in tool execution summaries.
|
|
76
77
|
*/
|
|
77
78
|
status?: 'success' | 'error';
|
|
79
|
+
/**
|
|
80
|
+
* Ends the step with this assertion instead of running another model turn.
|
|
81
|
+
*/
|
|
82
|
+
assertion?: StepAssertion;
|
|
78
83
|
};
|
|
79
84
|
/**
|
|
80
85
|
* Any valid value a tool can return.
|
|
@@ -96,7 +101,7 @@ export type AgentToolResult = AgentToolResponse | string | void;
|
|
|
96
101
|
* @example
|
|
97
102
|
* ```ts
|
|
98
103
|
* const handler = async (_args: unknown, context: AgentToolContext) => {
|
|
99
|
-
*
|
|
104
|
+
* return `Working on: ${context.step.action}`
|
|
100
105
|
* }
|
|
101
106
|
* ```
|
|
102
107
|
*/
|
|
@@ -106,14 +111,16 @@ export type AgentToolContext = {
|
|
|
106
111
|
*/
|
|
107
112
|
step: Step;
|
|
108
113
|
/**
|
|
109
|
-
*
|
|
114
|
+
* Model turn the tool is being dispatched on, starting at `1`, when known.
|
|
110
115
|
*/
|
|
111
|
-
|
|
116
|
+
turn?: number;
|
|
117
|
+
signal?: AbortSignal;
|
|
118
|
+
control?: StepControl;
|
|
112
119
|
};
|
|
113
120
|
/**
|
|
114
|
-
*
|
|
121
|
+
* Internal tool contract used by the runner loop, including assertion-bearing tools.
|
|
115
122
|
*
|
|
116
|
-
*
|
|
123
|
+
* Driver authors use DriverTool and defineDriverTool from '@xoxoai/checkmate/driver'.
|
|
117
124
|
*
|
|
118
125
|
* @example
|
|
119
126
|
* ```ts
|
|
@@ -126,6 +133,7 @@ export type AgentToolContext = {
|
|
|
126
133
|
* ```
|
|
127
134
|
*/
|
|
128
135
|
export type AgentTool = {
|
|
136
|
+
driverId?: string;
|
|
129
137
|
/**
|
|
130
138
|
* Tool definition exposed to the model.
|
|
131
139
|
*/
|
|
@@ -135,5 +143,68 @@ export type AgentTool = {
|
|
|
135
143
|
*/
|
|
136
144
|
execute: (args: unknown, context: AgentToolContext) => Promise<AgentToolResult> | AgentToolResult;
|
|
137
145
|
};
|
|
146
|
+
/**
|
|
147
|
+
* Normalized tool response recorded by the runner loop.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```ts
|
|
151
|
+
* const response: ToolResponse = {
|
|
152
|
+
* name: 'browser_navigate',
|
|
153
|
+
* response: 'Navigated to https://example.com',
|
|
154
|
+
* snapshot: null,
|
|
155
|
+
* status: 'success',
|
|
156
|
+
* }
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export type ToolResponse = {
|
|
160
|
+
/**
|
|
161
|
+
* Tool that produced the response.
|
|
162
|
+
*/
|
|
163
|
+
name?: string;
|
|
164
|
+
/**
|
|
165
|
+
* Human-readable result returned to the model.
|
|
166
|
+
*/
|
|
167
|
+
response: string;
|
|
168
|
+
/**
|
|
169
|
+
* Fresh page snapshot captured after the tool ran.
|
|
170
|
+
*/
|
|
171
|
+
snapshot?: string | null;
|
|
172
|
+
/**
|
|
173
|
+
* Outcome status used in tool execution summaries.
|
|
174
|
+
*/
|
|
175
|
+
status: 'success' | 'error';
|
|
176
|
+
/**
|
|
177
|
+
* Assertion that ends the step, when the tool produced one.
|
|
178
|
+
*/
|
|
179
|
+
assertion?: StepAssertion;
|
|
180
|
+
};
|
|
181
|
+
/**
|
|
182
|
+
* One tool execution observed during the runner loop.
|
|
183
|
+
*
|
|
184
|
+
* Driver hooks receive the public DriverToolExecution shape instead.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```ts
|
|
188
|
+
* const execution: ToolExecution = {
|
|
189
|
+
* toolCallId: 'call_1',
|
|
190
|
+
* toolCall: { name: 'browser_navigate', arguments: { url: 'https://example.com' } },
|
|
191
|
+
* toolResponse: { response: 'Navigated to example.com', status: 'success' },
|
|
192
|
+
* }
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
export type ToolExecution = {
|
|
196
|
+
/**
|
|
197
|
+
* Provider-issued id for the tool call.
|
|
198
|
+
*/
|
|
199
|
+
toolCallId: string;
|
|
200
|
+
/**
|
|
201
|
+
* Normalized tool call request.
|
|
202
|
+
*/
|
|
203
|
+
toolCall: ToolCall;
|
|
204
|
+
/**
|
|
205
|
+
* Normalized tool response returned by Checkmate.
|
|
206
|
+
*/
|
|
207
|
+
toolResponse: ToolResponse;
|
|
208
|
+
};
|
|
138
209
|
export declare function getToolName(tool: AgentTool): string;
|
|
139
210
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAEjE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,mBAAmB,GAAG;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAEnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAA;CACf,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC/B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAE5B;;OAEG;IACH,SAAS,CAAC,EAAE,aAAa,CAAA;CACzB,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAAA;AAE/D;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC9B;;OAEG;IACH,IAAI,EAAE,IAAI,CAAA;IAEV;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,MAAM,CAAC,EAAE,WAAW,CAAA;IAEpB,OAAO,CAAC,EAAE,WAAW,CAAA;CACrB,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,SAAS,GAAG;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,UAAU,EAAE,mBAAmB,CAAA;IAE/B;;OAEG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;CACjG,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,GAAG;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAExB;;OAEG;IACH,MAAM,EAAE,SAAS,GAAG,OAAO,CAAA;IAE3B;;OAEG;IACH,SAAS,CAAC,EAAE,aAAa,CAAA;CACzB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,aAAa,GAAG;IAC3B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAA;IAElB;;OAEG;IACH,YAAY,EAAE,YAAY,CAAA;CAC1B,CAAA;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEnD"}
|
package/dist/tools/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AA0OA,MAAM,UAAU,WAAW,CAAC,IAAe;IAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAA;AAC5B,CAAC"}
|
package/docs/CLI.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# CLI Reference
|
|
2
|
+
|
|
3
|
+
The Checkmate CLI is non-interactive. Machine-readable commands write exactly one complete JSON document to stdout. Diagnostics and discarded-worker-stream notices use stderr.
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
checkmate run <request.json|-> [--config <path>]
|
|
9
|
+
checkmate validate <request.json|-> [--config <path>]
|
|
10
|
+
checkmate describe [--config <path>]
|
|
11
|
+
checkmate --help
|
|
12
|
+
checkmate --version
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
`-` reads the request from stdin. Request file paths and explicit config paths are resolved from the current working directory. Without `--config`, Checkmate reads exactly `$PWD/checkmate.config.json`; it does not walk parent directories.
|
|
16
|
+
|
|
17
|
+
## Run
|
|
18
|
+
|
|
19
|
+
`run` performs bounded preparation in the CLI parent. Invalid input returns an `InvalidInvocationResultV1`. An operational preparation failure or identity-allocation failure returns a parent-authored `PreExecutionOperationalResultV1` with `infra / pre-execution-error`, exit `3`, `targetMutation: "not-attempted"`, and no scenario, step, usage, or evidence claims. A valid request reserves one run directory and starts a child worker. The worker executes only the prepared plan; it does not reread configuration, reprobe preflight secrets, or allocate another identity.
|
|
20
|
+
|
|
21
|
+
The parent is the sole stdout writer. It accepts worker output only after validating the complete IPC frame, digest, deterministic bytes, `RunResultV1` schema, immutable prepared identity, policy, limits, step grammar, usage, and committed evidence references. Successful committed output is byte-identical to the run's `result.json`.
|
|
22
|
+
|
|
23
|
+
If no authoritative worker result is accepted before the applicable cutoff, the parent emits `ContainmentResultV1`. Containment has no semantic `steps`, usage, evidence-completeness claim, or committed result reference.
|
|
24
|
+
|
|
25
|
+
## Validate
|
|
26
|
+
|
|
27
|
+
`validate` performs the same static preparation as `run`, including secret availability, but stops before identity allocation, executable import, driver startup, target mutation, or output creation.
|
|
28
|
+
|
|
29
|
+
## Describe
|
|
30
|
+
|
|
31
|
+
`describe` returns schema references, policy metadata, registered static driver descriptors, logical secret requirements, and reason-specific routing guidance. It neither imports drivers nor probes secret values.
|
|
32
|
+
|
|
33
|
+
## Exit Codes
|
|
34
|
+
|
|
35
|
+
| Code | Route |
|
|
36
|
+
| ---: | ------------------------------------------------------------------------------------- |
|
|
37
|
+
| `0` | Passed run, valid request, or available description |
|
|
38
|
+
| `1` | Application expectation failure |
|
|
39
|
+
| `2` | Model failure |
|
|
40
|
+
| `3` | Infrastructure failure, interruption, containment, or unexpected static-command error |
|
|
41
|
+
| `4` | Invalid invocation or unavailable requested configuration |
|
|
42
|
+
|
|
43
|
+
Exit codes provide coarse shell routing. The stdout document remains the detailed contract.
|
|
44
|
+
|
|
45
|
+
## Signals And Cutoffs
|
|
46
|
+
|
|
47
|
+
Scenario timing starts when the parent forks the worker, so driver import and startup consume the scenario limit. Normal `cleanup-started` disarms the scenario timer and starts one fresh cleanup cutoff. A scenario timeout or first `SIGINT`/`SIGTERM` sends one cooperative abort and immediately starts one cleanup/termination bound; a later cleanup notification cannot extend it.
|
|
48
|
+
|
|
49
|
+
The parent compares its monotonic clock with the absolute active deadline before every state transition and after asynchronous terminal reconciliation. After an external signal it accepts only `interrupted`, `driver-teardown-failed`, or `result-write-failed`. After a run deadline it accepts only `scenario-timeout`, `driver-teardown-failed`, or `result-write-failed`. Unrelated pass, application, and model results cannot override a latched stop cause.
|
|
50
|
+
|
|
51
|
+
A worker-finalized interrupted result accepted in time exits `3`. A second signal after an external stop forces the first signal's native route: `130` for `SIGINT` or `143` for `SIGTERM`, with no fabricated stdout envelope.
|
|
52
|
+
|
|
53
|
+
## Output Discipline
|
|
54
|
+
|
|
55
|
+
- Worker stdout and stderr bytes are counted, drained, and discarded.
|
|
56
|
+
- Worker logger diagnostics are exact-secret and pattern sanitized before IPC.
|
|
57
|
+
- The parent pattern-sanitizes diagnostic messages again before stderr.
|
|
58
|
+
- Diagnostic `code` and RFC 6901 `path` fields remain structural and are not rewritten.
|
|
59
|
+
- Terminal result bytes are never reserialized or modified by the parent.
|