firedrill-run 2.2.5 → 3.0.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 +178 -22
- package/bin/firedrill.mjs +29 -5
- package/dist/assembly.json +13 -0
- package/dist/cli/runtime/candidate_copy.py +395 -0
- package/dist/cli/runtime/source_snapshot.py +391 -0
- package/dist/cli/src/administration.js +295 -0
- package/dist/cli/src/agent-changes.js +496 -0
- package/dist/cli/src/assessment-requests.js +67 -0
- package/dist/cli/src/auth.js +465 -0
- package/dist/cli/src/billing-commerce-contracts.js +1 -0
- package/dist/cli/src/billing-usage.js +227 -0
- package/dist/cli/src/billing-wallet-contracts.js +1 -0
- package/dist/cli/src/billing.js +170 -0
- package/dist/cli/src/bootstrap-process-lock.js +136 -0
- package/dist/cli/src/browser-links.js +14 -0
- package/dist/cli/src/campaign-controls.js +122 -0
- package/dist/cli/src/campaign-diagnoses.js +118 -0
- package/dist/cli/src/campaign-reports.js +1215 -0
- package/dist/cli/src/campaign-world.js +156 -0
- package/dist/cli/src/candidate-copy.js +376 -0
- package/dist/cli/src/catalog-contracts.js +1 -0
- package/dist/cli/src/ci-access-contracts.js +1 -0
- package/dist/cli/src/ci-configuration-contracts.js +1 -0
- package/dist/cli/src/ci-coverage.js +64 -0
- package/dist/cli/src/ci-delivery-contracts.js +1 -0
- package/dist/cli/src/ci-result-contracts.js +1 -0
- package/dist/cli/src/ci-run-contracts.js +1 -0
- package/dist/cli/src/ci-setup-proposals.js +52 -0
- package/dist/cli/src/company-policies.js +229 -0
- package/dist/cli/src/completion.js +79 -0
- package/dist/cli/src/configuration-intents.js +277 -0
- package/dist/cli/src/configuration.js +369 -0
- package/dist/cli/src/continuous-simulation.js +277 -0
- package/dist/cli/src/coordinated-checkpoints.js +133 -0
- package/dist/cli/src/credential-mode.js +139 -0
- package/dist/cli/src/credentials.js +331 -0
- package/dist/cli/src/credit-format.js +8 -0
- package/dist/cli/src/dataset-contracts.js +1 -0
- package/dist/cli/src/dataset-export.js +154 -0
- package/dist/cli/src/dataset-reads.js +37 -0
- package/dist/cli/src/dependency-preparation.js +239 -0
- package/dist/cli/src/director-tool-setup.js +104 -0
- package/dist/cli/src/driver-review.js +225 -0
- package/dist/cli/src/evaluation-authoring.js +315 -0
- package/dist/cli/src/evidence-bundles.js +367 -0
- package/dist/cli/src/execution-proposals.js +36 -0
- package/dist/cli/src/http.js +302 -0
- package/dist/cli/src/local-container-boundary.js +38 -0
- package/dist/cli/src/local-container-policy.js +201 -0
- package/dist/cli/src/local-execution-setup.js +81 -0
- package/dist/cli/src/local-source-basis.js +73 -0
- package/dist/cli/src/local-source.js +66 -0
- package/dist/cli/src/local-value-store.js +91 -0
- package/dist/cli/src/local-values.js +163 -0
- package/dist/cli/src/login-organizations.js +70 -0
- package/dist/cli/src/main.js +1622 -0
- package/dist/cli/src/mcp-connection.js +109 -0
- package/dist/cli/src/native/bindings.js +137 -0
- package/dist/cli/src/native/canonical.js +370 -0
- package/dist/cli/src/native/cloud-resources.js +942 -0
- package/dist/cli/src/native/companion-channel.js +421 -0
- package/dist/cli/src/native/companion-ipc.js +473 -0
- package/dist/cli/src/native/contracts.js +218 -0
- package/dist/cli/src/native/control-plane.js +1354 -0
- package/dist/cli/src/native/credit-approval.js +15 -0
- package/dist/cli/src/native/dependency-proxy.js +1006 -0
- package/dist/cli/src/native/drill-cleanup.js +115 -0
- package/dist/cli/src/native/drill-runner.js +1562 -0
- package/dist/cli/src/native/drivers/action-trace.js +210 -0
- package/dist/cli/src/native/drivers/function-wrapper.js +152 -0
- package/dist/cli/src/native/drivers/http.js +442 -0
- package/dist/cli/src/native/drivers/index.js +47 -0
- package/dist/cli/src/native/drivers/jsonl-process.js +538 -0
- package/dist/cli/src/native/drivers/playwright.js +600 -0
- package/dist/cli/src/native/drivers/signed-event.js +244 -0
- package/dist/cli/src/native/drivers/types.js +578 -0
- package/dist/cli/src/native/evidence-filter.js +255 -0
- package/dist/cli/src/native/isolated-access.js +241 -0
- package/dist/cli/src/native/library-sharing.js +220 -0
- package/dist/cli/src/native/local-run.js +667 -0
- package/dist/cli/src/native/local-secrets.js +19 -0
- package/dist/cli/src/native/mcp-config.js +123 -0
- package/dist/cli/src/native/metadata-requests.js +120 -0
- package/dist/cli/src/native/observations.js +1159 -0
- package/dist/cli/src/native/owned-groups.js +46 -0
- package/dist/cli/src/native/plan.js +594 -0
- package/dist/cli/src/native/png.js +159 -0
- package/dist/cli/src/native/ports.js +43 -0
- package/dist/cli/src/native/readiness.js +139 -0
- package/dist/cli/src/native/reassessments.js +206 -0
- package/dist/cli/src/native/redaction.js +235 -0
- package/dist/cli/src/native/registration.js +155 -0
- package/dist/cli/src/native/roots.js +110 -0
- package/dist/cli/src/native/run-cleanup.js +199 -0
- package/dist/cli/src/native/scratch.js +117 -0
- package/dist/cli/src/native/screenshots.js +60 -0
- package/dist/cli/src/native/session.js +556 -0
- package/dist/cli/src/native/standalone-proxy.js +580 -0
- package/dist/cli/src/native/standalone-renewals.js +183 -0
- package/dist/cli/src/native/standalone-state.js +193 -0
- package/dist/cli/src/native/standalone-tools.js +187 -0
- package/dist/cli/src/native/supervisor.js +831 -0
- package/dist/cli/src/native/target-auth.js +161 -0
- package/dist/cli/src/native/target-state.js +330 -0
- package/dist/cli/src/native/tool-reuse.js +364 -0
- package/dist/cli/src/native/tool-setups.js +336 -0
- package/dist/cli/src/native/world-reuse.js +288 -0
- package/dist/cli/src/onboarding.js +23 -0
- package/dist/cli/src/priority-requests.js +70 -0
- package/dist/cli/src/priority.js +223 -0
- package/dist/cli/src/prompts.js +184 -0
- package/dist/cli/src/real-operations.js +221 -0
- package/dist/cli/src/recipe-intents.js +58 -0
- package/dist/cli/src/recorded-context-intents.js +59 -0
- package/dist/cli/src/recorded-context.js +248 -0
- package/dist/cli/src/recordings.js +69 -0
- package/dist/cli/src/registration-guide.js +39 -0
- package/dist/cli/src/report-exports.js +213 -0
- package/dist/cli/src/request-input.js +47 -0
- package/dist/cli/src/resource-lifecycle.js +141 -0
- package/dist/cli/src/revision-requests.js +55 -0
- package/dist/cli/src/runner-abandon.js +53 -0
- package/dist/cli/src/runner-campaign-controls.js +262 -0
- package/dist/cli/src/runner-claim-reads.js +36 -0
- package/dist/cli/src/runner-completion.js +65 -0
- package/dist/cli/src/runner-configuration.js +546 -0
- package/dist/cli/src/runner-container.js +794 -0
- package/dist/cli/src/runner-evidence-erasure.js +351 -0
- package/dist/cli/src/runner-evidence-privacy.js +37 -0
- package/dist/cli/src/runner-evidence-retention.js +161 -0
- package/dist/cli/src/runner-evidence.js +326 -0
- package/dist/cli/src/runner-execute.js +92 -0
- package/dist/cli/src/runner-execution-deadline.js +25 -0
- package/dist/cli/src/runner-grants.js +307 -0
- package/dist/cli/src/runner-identity.js +615 -0
- package/dist/cli/src/runner-inputs.js +308 -0
- package/dist/cli/src/runner-jobs.js +49 -0
- package/dist/cli/src/runner-model-transport.js +392 -0
- package/dist/cli/src/runner-ownership.js +332 -0
- package/dist/cli/src/runner-process-lock.js +175 -0
- package/dist/cli/src/runner-runtime.js +396 -0
- package/dist/cli/src/runner-session-channel.js +377 -0
- package/dist/cli/src/runner-trial-completion.js +34 -0
- package/dist/cli/src/runner-trial-journal.js +358 -0
- package/dist/cli/src/runner-trial-live.js +393 -0
- package/dist/cli/src/runner-trial-protocol.js +289 -0
- package/dist/cli/src/runner-trial-sync.js +110 -0
- package/dist/cli/src/runner-trial-transfer.js +107 -0
- package/dist/cli/src/runner-voice.js +40 -0
- package/dist/cli/src/runner-world-claim.js +21 -0
- package/dist/cli/src/runner-world-collector.js +159 -0
- package/dist/cli/src/runner-world-command-evidence.js +487 -0
- package/dist/cli/src/runner-world-commands.js +268 -0
- package/dist/cli/src/runner-world-completion.js +76 -0
- package/dist/cli/src/runner-world-erasure.js +95 -0
- package/dist/cli/src/runner-world-evidence-sync.js +91 -0
- package/dist/cli/src/runner-world-journal.js +510 -0
- package/dist/cli/src/runner-world-native-filters.js +134 -0
- package/dist/cli/src/runner-world-observations.js +50 -0
- package/dist/cli/src/runner-world-session-protocol.js +134 -0
- package/dist/cli/src/saved-records.js +40 -0
- package/dist/cli/src/scenario-authoring.js +212 -0
- package/dist/cli/src/scenario-discovery.js +216 -0
- package/dist/cli/src/scenario-paths.js +68 -0
- package/dist/cli/src/scenario-requests.js +4 -0
- package/dist/cli/src/service-receipts.js +105 -0
- package/dist/cli/src/simple/authoring.js +270 -0
- package/dist/cli/src/simple/credit-approval.js +16 -0
- package/dist/cli/src/simple/help.js +98 -0
- package/dist/cli/src/simple/init.js +61 -0
- package/dist/cli/src/simple/library-sharing.js +414 -0
- package/dist/cli/src/simple/metadata-requests.js +46 -0
- package/dist/cli/src/simple/native-report.js +841 -0
- package/dist/cli/src/simple/native-tools.js +780 -0
- package/dist/cli/src/simple/plan-apply.js +506 -0
- package/dist/cli/src/simple/reassessment.js +323 -0
- package/dist/cli/src/simple/register.js +123 -0
- package/dist/cli/src/simple/run.js +122 -0
- package/dist/cli/src/simple/status.js +49 -0
- package/dist/cli/src/simple/tool-renewal.js +308 -0
- package/dist/cli/src/simple/tool-reuse.js +526 -0
- package/dist/cli/src/simple/tool-start-catalog.js +100 -0
- package/dist/cli/src/simple/tool-state.js +426 -0
- package/dist/cli/src/simple/tools-author.js +222 -0
- package/dist/cli/src/simple/watch.js +28 -0
- package/dist/cli/src/simple/world-reuse.js +586 -0
- package/dist/cli/src/simulation-intents.js +406 -0
- package/dist/cli/src/simulation-run.js +1058 -0
- package/dist/cli/src/source-batch.js +322 -0
- package/dist/cli/src/source-connection.js +451 -0
- package/dist/cli/src/source-runtime.js +346 -0
- package/dist/cli/src/source-selection-intents.js +75 -0
- package/dist/cli/src/source-sets.js +214 -0
- package/dist/cli/src/target-models.js +109 -0
- package/dist/cli/src/tool-catalog.js +224 -0
- package/dist/cli/src/tool-command-contracts.js +1 -0
- package/dist/cli/src/tool-command-export.js +245 -0
- package/dist/cli/src/tool-connection-contracts.js +1 -0
- package/dist/cli/src/tool-connection-reads.js +23 -0
- package/dist/cli/src/tool-contributions.js +58 -0
- package/dist/cli/src/tool-data.js +116 -0
- package/dist/cli/src/tool-datasets.js +176 -0
- package/dist/cli/src/tool-group-contracts.js +1 -0
- package/dist/cli/src/tool-group-reads.js +26 -0
- package/dist/cli/src/tool-group-state.js +147 -0
- package/dist/cli/src/tool-groups.js +311 -0
- package/dist/cli/src/tool-instances.js +186 -0
- package/dist/cli/src/tool-lifecycle-contracts.js +1 -0
- package/dist/cli/src/tool-lifecycle-reads.js +30 -0
- package/dist/cli/src/tool-lifecycle.js +323 -0
- package/dist/cli/src/tool-package-contracts.js +1 -0
- package/dist/cli/src/tool-package-reads.js +41 -0
- package/dist/cli/src/tool-records.js +53 -0
- package/dist/cli/src/tool-runtime.js +96 -0
- package/dist/cli/src/tool-state-contracts.js +1 -0
- package/dist/cli/src/tool-state-reads.js +31 -0
- package/dist/cli/src/tools.js +306 -0
- package/dist/cli/src/trial-actions.js +93 -0
- package/dist/cli/src/trial-checkpoints.js +133 -0
- package/dist/cli/src/trial-checks.js +70 -0
- package/dist/cli/src/trial-state.js +197 -0
- package/dist/cli/src/vault.js +266 -0
- package/dist/cli/src/workspace-registration.js +383 -0
- package/dist/cli/src/workspace-team-contracts.js +1 -0
- package/dist/cli/src/world-access.js +231 -0
- package/dist/cli/src/world-agent.js +4 -0
- package/dist/cli/src/world-checkpoint-scopes.js +15 -0
- package/dist/cli/src/world-contracts.js +6 -0
- package/dist/cli/src/world-creation.js +201 -0
- package/dist/cli/src/world-datasets.js +207 -0
- package/dist/cli/src/world-inspection.js +257 -0
- package/dist/cli/src/world-recipes.js +103 -0
- package/dist/cli/src/world-requests.js +241 -0
- package/dist/cli/src/world-session-checkpoints.js +196 -0
- package/dist/cli/src/world-session-lifecycle.js +207 -0
- package/dist/cli/src/world-session-requests.js +215 -0
- package/dist/cli/src/world-session-state.js +145 -0
- package/dist/cli/src/world-session-voice.js +66 -0
- package/dist/cli/src/world-sessions.js +288 -0
- package/dist/cli/src/world-stream.js +99 -0
- package/dist/cli/src/world-time-report.js +58 -0
- package/dist/contracts/agent-change-contracts.js +75 -0
- package/dist/contracts/agent-execution-contracts.js +38 -0
- package/dist/contracts/application-state-contracts.js +26 -0
- package/dist/contracts/assessment-aggregate-contracts.js +15 -0
- package/dist/contracts/assessment-contracts.js +74 -0
- package/dist/contracts/billing-commerce-contracts.js +107 -0
- package/dist/contracts/billing-wallet-contracts.js +43 -0
- package/dist/contracts/campaign-lifecycle.js +1 -0
- package/dist/contracts/campaign-world-contracts.js +80 -0
- package/dist/contracts/catalog-contracts.js +73 -0
- package/dist/contracts/ci-access-contracts.js +68 -0
- package/dist/contracts/ci-configuration-contracts.js +88 -0
- package/dist/contracts/ci-coverage-contracts.js +65 -0
- package/dist/contracts/ci-coverage-labels.js +25 -0
- package/dist/contracts/ci-delivery-contracts.js +61 -0
- package/dist/contracts/ci-result-contracts.js +103 -0
- package/dist/contracts/ci-run-contracts.js +51 -0
- package/dist/contracts/ci-setup-contracts.js +88 -0
- package/dist/contracts/clip-contracts.js +32 -0
- package/dist/contracts/comparison-contracts.js +53 -0
- package/dist/contracts/composite-contracts.js +34 -0
- package/dist/contracts/context-contracts.js +76 -0
- package/dist/contracts/continuation-report-contracts.js +1 -0
- package/dist/contracts/continuity-requirements.js +8 -0
- package/dist/contracts/coordinated-checkpoint-contracts.js +34 -0
- package/dist/contracts/dataset-contracts.js +88 -0
- package/dist/contracts/dependency-decision-contracts.js +36 -0
- package/dist/contracts/dependency-protocol-contracts.js +43 -0
- package/dist/contracts/director-execution.js +51 -0
- package/dist/contracts/driver-review-contracts.js +99 -0
- package/dist/contracts/evidence-contracts.js +65 -0
- package/dist/contracts/evidence-coverage-contracts.js +10 -0
- package/dist/contracts/export-contracts.js +44 -0
- package/dist/contracts/github-directory-contracts.js +96 -0
- package/dist/contracts/insight-contracts.js +11 -0
- package/dist/contracts/inspection-contracts.js +1 -0
- package/dist/contracts/local-claim-contracts.js +39 -0
- package/dist/contracts/local-configuration-contracts.js +7 -0
- package/dist/contracts/local-evidence-contracts.js +32 -0
- package/dist/contracts/local-grant-contracts.js +83 -0
- package/dist/contracts/local-input-contracts.js +19 -0
- package/dist/contracts/local-runner-contracts.js +42 -0
- package/dist/contracts/local-trial-live-contracts.js +16 -0
- package/dist/contracts/local-value-source-contracts.js +92 -0
- package/dist/contracts/local-world-native-contracts.js +8 -0
- package/dist/contracts/mcp-contracts.js +42 -0
- package/dist/contracts/media-contracts.js +28 -0
- package/dist/contracts/native-check-contracts.js +31 -0
- package/dist/contracts/native-identity-contracts.js +52 -0
- package/dist/contracts/onboarding-contracts.js +32 -0
- package/dist/contracts/performance-contracts.js +85 -0
- package/dist/contracts/planning-contracts.js +81 -0
- package/dist/contracts/real-operation-contracts.js +30 -0
- package/dist/contracts/recommendation-contracts.js +54 -0
- package/dist/contracts/report-contracts.js +1 -0
- package/dist/contracts/resource-lifecycle-contracts.js +57 -0
- package/dist/contracts/revision-contracts.js +12 -0
- package/dist/contracts/revision-request-contracts.js +39 -0
- package/dist/contracts/saved-record-contracts.js +76 -0
- package/dist/contracts/scenario-draft-comparison.js +91 -0
- package/dist/contracts/scenario-world-contracts.js +14 -0
- package/dist/contracts/service-contracts.js +1 -0
- package/dist/contracts/session-command-contracts.js +56 -0
- package/dist/contracts/session-contracts.js +65 -0
- package/dist/contracts/session-state-contracts.js +67 -0
- package/dist/contracts/session-voice-contracts.js +45 -0
- package/dist/contracts/source-set-contracts.js +26 -0
- package/dist/contracts/source-upload-contracts.js +22 -0
- package/dist/contracts/tool-command-contracts.js +57 -0
- package/dist/contracts/tool-connection-contracts.js +87 -0
- package/dist/contracts/tool-contribution-contracts.js +35 -0
- package/dist/contracts/tool-group-contracts.js +53 -0
- package/dist/contracts/tool-group-state-contracts.js +63 -0
- package/dist/contracts/tool-lifecycle-contracts.js +94 -0
- package/dist/contracts/tool-package-contracts.js +91 -0
- package/dist/contracts/tool-protocol-contracts.js +71 -0
- package/dist/contracts/tool-runtime-billing-contracts.js +28 -0
- package/dist/contracts/tool-setup-proposal.js +59 -0
- package/dist/contracts/tool-state-contracts.js +79 -0
- package/dist/contracts/trial-state-contracts.js +30 -0
- package/dist/contracts/typescript/agent-change.js +1 -0
- package/dist/contracts/typescript/assessment-aggregate.js +1 -0
- package/dist/contracts/typescript/assessment.js +1 -0
- package/dist/contracts/typescript/billing-commerce.js +1 -0
- package/dist/contracts/typescript/campaigns.js +1 -0
- package/dist/contracts/typescript/catalog.js +1 -0
- package/dist/contracts/typescript/ci-access.js +1 -0
- package/dist/contracts/typescript/ci-configuration.js +1 -0
- package/dist/contracts/typescript/ci-delivery.js +1 -0
- package/dist/contracts/typescript/ci-result.js +1 -0
- package/dist/contracts/typescript/ci-runs.js +1 -0
- package/dist/contracts/typescript/clips.js +1 -0
- package/dist/contracts/typescript/comparison.js +1 -0
- package/dist/contracts/typescript/composite.js +1 -0
- package/dist/contracts/typescript/connections.js +1 -0
- package/dist/contracts/typescript/context.js +1 -0
- package/dist/contracts/typescript/datasets.js +1 -0
- package/dist/contracts/typescript/evidence-coverage.js +1 -0
- package/dist/contracts/typescript/export.js +1 -0
- package/dist/contracts/typescript/github-directory.js +1 -0
- package/dist/contracts/typescript/insight.js +1 -0
- package/dist/contracts/typescript/inspection.js +1 -0
- package/dist/contracts/typescript/intake.js +1 -0
- package/dist/contracts/typescript/local-claim.js +1 -0
- package/dist/contracts/typescript/local-configuration.js +1 -0
- package/dist/contracts/typescript/local-evidence.js +1 -0
- package/dist/contracts/typescript/local-grant.js +1 -0
- package/dist/contracts/typescript/local-input.js +1 -0
- package/dist/contracts/typescript/local-runner.js +1 -0
- package/dist/contracts/typescript/local-trial-live.js +1 -0
- package/dist/contracts/typescript/local-value-source.js +1 -0
- package/dist/contracts/typescript/local-world-native.js +1 -0
- package/dist/contracts/typescript/mcp.js +1 -0
- package/dist/contracts/typescript/media.js +1 -0
- package/dist/contracts/typescript/native-check.js +1 -0
- package/dist/contracts/typescript/native-identity.js +1 -0
- package/dist/contracts/typescript/onboarding.js +1 -0
- package/dist/contracts/typescript/performance.js +1 -0
- package/dist/contracts/typescript/planning.js +1 -0
- package/dist/contracts/typescript/preparation.js +1 -0
- package/dist/contracts/typescript/real-operation.js +1 -0
- package/dist/contracts/typescript/recommendation.js +1 -0
- package/dist/contracts/typescript/reports.js +1 -0
- package/dist/contracts/typescript/resource-lifecycle.js +1 -0
- package/dist/contracts/typescript/saved-record.js +1 -0
- package/dist/contracts/typescript/scenarios.js +1 -0
- package/dist/contracts/typescript/services.js +1 -0
- package/dist/contracts/typescript/session-command.js +1 -0
- package/dist/contracts/typescript/session-state.js +1 -0
- package/dist/contracts/typescript/session-voice.js +1 -0
- package/dist/contracts/typescript/session.js +1 -0
- package/dist/contracts/typescript/tool-command.js +1 -0
- package/dist/contracts/typescript/tool-connection.js +1 -0
- package/dist/contracts/typescript/tool-contribution.js +1 -0
- package/dist/contracts/typescript/tool-groups.js +1 -0
- package/dist/contracts/typescript/tool-lifecycle.js +1 -0
- package/dist/contracts/typescript/tool-package.js +1 -0
- package/dist/contracts/typescript/tool-state.js +1 -0
- package/dist/contracts/typescript/trial-state.js +1 -0
- package/dist/contracts/typescript/vault.js +1 -0
- package/dist/contracts/typescript/workspace-team.js +1 -0
- package/dist/contracts/typescript/world-stream.js +1 -0
- package/dist/contracts/workspace-team-contracts.js +55 -0
- package/dist/contracts/world-command.js +65 -0
- package/dist/contracts/world-lifetime-contracts.js +74 -0
- package/dist/contracts/world-recipe-contracts.js +27 -0
- package/dist/contracts/world-stream-contracts.js +27 -0
- package/dist/package.json +1 -0
- package/package.json +16 -16
- package/LICENSE.md +0 -23
- package/PACKAGING.json +0 -50
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native client contract types (Plan20 W09/W10, Claude lane).
|
|
3
|
+
*
|
|
4
|
+
* Two kinds of type live here and must not be confused:
|
|
5
|
+
* 1. Root-released wire contracts, mirrored exactly:
|
|
6
|
+
* - backend/contracts/native/local-descriptor.v1.schema.json (LocalDescriptor)
|
|
7
|
+
* - backend/contracts/native/observation-batch.v1.schema.json (ObservationBatch)
|
|
8
|
+
* 2. Client-side expectations for producers root has NOT released yet
|
|
9
|
+
* (assignment, step, binding, identity, completion, artifact intent). They are
|
|
10
|
+
* the typed boundary the companion is implemented against. Phase B wiring maps
|
|
11
|
+
* root's frozen wire format onto these; until then the HTTP adapter reports
|
|
12
|
+
* `native_contract_pending` and never fabricates success or guesses routes.
|
|
13
|
+
*
|
|
14
|
+
* Nothing in this file is a claim that an endpoint exists or that a profile is
|
|
15
|
+
* runtime-qualified. No secret value may be serialized through these types except
|
|
16
|
+
* inside SecretValue, which refuses JSON/inspect disclosure.
|
|
17
|
+
*/
|
|
18
|
+
import { inspect } from 'node:util';
|
|
19
|
+
import { CliError } from '../http.js';
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
// Root-released: local descriptor v1 (exact mirror of the JSON schema).
|
|
22
|
+
export const LOCAL_DESCRIPTOR_SCHEMA = 'firedrill.local-descriptor.v1';
|
|
23
|
+
export const DRIVER_PROFILES = ['http.v1', 'jsonl-process.v1', 'function-wrapper.v1', 'playwright.v1', 'signed-http-event.v1'];
|
|
24
|
+
export const TARGET_AUTHENTICATIONS = ['anonymous', 'synthetic-session'];
|
|
25
|
+
export const SERVICE_ROLES = ['agent', 'frontend', 'worker', 'database', 'queue', 'service'];
|
|
26
|
+
export const STATE_KINDS = ['process', 'browser', 'files', 'database', 'vector', 'cache', 'queue', 'scheduler', 'session'];
|
|
27
|
+
export const STATE_LOCATIONS = ['local', 'cloud-disposable', 'observation-only'];
|
|
28
|
+
export const STATE_RESETS = ['fresh-session', 'fresh-process', 'approved-hook', 'unavailable'];
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// Root-released: observation batch v1 (exact mirror of the JSON schema).
|
|
31
|
+
export const OBSERVATION_KINDS = ['driver.started', 'conversation.observed', 'action.observed', 'state.observed',
|
|
32
|
+
'driver.completed', 'driver.failed', 'driver.cancelled'];
|
|
33
|
+
export const OBSERVATION_BATCH_MAX_EVENTS = 128;
|
|
34
|
+
/** Identifier pattern shared by observation-batch ids. */
|
|
35
|
+
export const NATIVE_ID = /^[a-zA-Z0-9][a-zA-Z0-9_-]{0,127}$/;
|
|
36
|
+
/** Root's server-issued ids (Python str(uuid.UUID)): lowercase canonical form. */
|
|
37
|
+
export const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
|
38
|
+
export const SHA256_HEX = /^[a-f0-9]{64}$/;
|
|
39
|
+
export const ALIAS = /^[a-z][a-z0-9_-]*$/;
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
// Secret handling. Values from the cloud (synthetic credentials, signing keys)
|
|
42
|
+
// are wrapped immediately and only unwrapped at the exact injection point.
|
|
43
|
+
const secretValues = new WeakMap();
|
|
44
|
+
export class SecretValue {
|
|
45
|
+
label;
|
|
46
|
+
constructor(value, label = 'secret') {
|
|
47
|
+
if (typeof value !== 'string' || !value)
|
|
48
|
+
throw new CliError('native_secret_invalid', 'A required credential was empty or malformed.');
|
|
49
|
+
secretValues.set(this, value);
|
|
50
|
+
this.label = label;
|
|
51
|
+
}
|
|
52
|
+
/** Reveal only at the injection boundary (env, header, MCP config in private scratch). */
|
|
53
|
+
reveal() { return secretValues.get(this); }
|
|
54
|
+
toJSON() { return `[redacted:${this.label}]`; }
|
|
55
|
+
toString() { return `[redacted:${this.label}]`; }
|
|
56
|
+
[inspect.custom]() { return `[redacted:${this.label}]`; }
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Root's target-action kinds. `participant_message` is the v1 dispatch (a cloud
|
|
60
|
+
* participant's turn); the others are v2 dispatches frozen from the approved
|
|
61
|
+
* scenario's explicit target input: a scripted message, a task or a signed event.
|
|
62
|
+
*/
|
|
63
|
+
export const TARGET_ACTION_KINDS = ['participant_message', 'scenario_message', 'task', 'event'];
|
|
64
|
+
/** The signature header root names on every event dispatch. */
|
|
65
|
+
export const EVENT_SIGNATURE_HEADER = 'x-firedrill-signature';
|
|
66
|
+
export const TARGET_MESSAGE_MAX_CHARS = 16_000;
|
|
67
|
+
/** Root's size bound for a retained task or event result document. */
|
|
68
|
+
export const TARGET_RESULT_MAX_BYTES = 65_536;
|
|
69
|
+
/**
|
|
70
|
+
* Root's credential check reads a task or event result document as one text and
|
|
71
|
+
* only its first 32,000 characters, so a longer document fails at completion
|
|
72
|
+
* (asked of root to scan the whole document). Until then results stay within it.
|
|
73
|
+
*/
|
|
74
|
+
export const TARGET_RESULT_SCAN_CHARS = 32_000;
|
|
75
|
+
/**
|
|
76
|
+
* Screenshot capture coverage (`state.observed` records, agreed with root
|
|
77
|
+
* 2026-11-10): capture configuration and coverage, never target actions or tool
|
|
78
|
+
* state. `capture.requested` is recorded once per drill when the approved plan
|
|
79
|
+
* turns screenshots on; `capture.unavailable` at most once per step whose capture
|
|
80
|
+
* produced no image. Neither holds error text, selectors or page content. No
|
|
81
|
+
* `capture.requested` record means unknown (incomplete evidence or an older
|
|
82
|
+
* client), not that capture was off.
|
|
83
|
+
*/
|
|
84
|
+
export const CAPTURE_SCHEMA = 'firedrill.native-capture.v1';
|
|
85
|
+
/** Why an approved screenshot produced no image for one step. Each reason is one distinct client branch. */
|
|
86
|
+
export const CAPTURE_UNAVAILABLE_REASONS = [
|
|
87
|
+
/** The capture or its masking threw or timed out, or the step was stopped first: it fails closed, with no image. */
|
|
88
|
+
'capture_failed',
|
|
89
|
+
/** The raw capture was over the client's byte bound before re-encoding. */
|
|
90
|
+
'image_too_large',
|
|
91
|
+
/** The capture could not be re-encoded within the masked PNG profile (format, dimensions or encoded size). */
|
|
92
|
+
'image_unsupported',
|
|
93
|
+
/** The browser session had already taken its maximum number of screenshots. */
|
|
94
|
+
'session_limit',
|
|
95
|
+
/** The page or its session had closed. */
|
|
96
|
+
'page_closed',
|
|
97
|
+
/**
|
|
98
|
+
* The image did not fit, though this smaller record did. A capture may only use room left after the step's own
|
|
99
|
+
* record and its reply or result, and screenshots together at most half the drill's evidence budget.
|
|
100
|
+
*/
|
|
101
|
+
'evidence_capacity',
|
|
102
|
+
];
|
|
103
|
+
/** Approved interval frames (plan `screenshots.frames`): bounds root's captured-frame playback accepts from this client. */
|
|
104
|
+
export const FRAME_INTERVAL_MIN_MS = 1_000;
|
|
105
|
+
export const FRAME_INTERVAL_MAX_MS = 10_000;
|
|
106
|
+
export const MAX_FRAMES_PER_STEP = 30;
|
|
107
|
+
/** Why an interval frame produced no record: a capture reason, or the plan's per-step frame count was reached while the step still ran. */
|
|
108
|
+
export const FRAME_OMISSION_REASONS = [...CAPTURE_UNAVAILABLE_REASONS, 'step_limit'];
|
|
109
|
+
/**
|
|
110
|
+
* Root's closed sanitized action trace (`firedrill.native-trace-segment.v1`,
|
|
111
|
+
* profile `sanitized-actions-v1`, 2026-11-10): which kind of browser operation
|
|
112
|
+
* the approved flow ran, how it ended and when. Never selectors, URLs, values,
|
|
113
|
+
* page text, arguments or errors. Not a Playwright trace, HAR or video.
|
|
114
|
+
*/
|
|
115
|
+
export const TRACE_SEGMENT_SCHEMA = 'firedrill.native-trace-segment.v1';
|
|
116
|
+
export const TRACE_PROFILE = 'sanitized-actions-v1';
|
|
117
|
+
export const TRACE_OPERATIONS = ['navigate', 'click', 'fill', 'press', 'select', 'check', 'uncheck', 'wait', 'assert', 'observe'];
|
|
118
|
+
export const TRACE_OUTCOMES = ['completed', 'failed', 'cancelled'];
|
|
119
|
+
/** Why a capture's coverage is partial. */
|
|
120
|
+
export const TRACE_PARTIAL_REASONS = ['capture_failed', 'limit_reached', 'cancelled', 'driver_failed'];
|
|
121
|
+
/** Root's bound on one segment's events. */
|
|
122
|
+
export const TRACE_SEGMENT_MAX_EVENTS = 256;
|
|
123
|
+
/** Root evidence caps per record and per assignment. */
|
|
124
|
+
export const EVIDENCE_RECORD_MAX_BYTES = 262_144;
|
|
125
|
+
export const EVIDENCE_MAX_RECORDS = 4_096;
|
|
126
|
+
export const EVIDENCE_MAX_TOTAL_BYTES = 64 * 1024 * 1024;
|
|
127
|
+
/** Root's limit on registered run services. */
|
|
128
|
+
export const LOCAL_RUN_MAX_SERVICES = 128;
|
|
129
|
+
/**
|
|
130
|
+
* Entry-service probe kind root requires per driver profile (execution-readiness.v1).
|
|
131
|
+
* Root defines no digest for the handshake kinds; the client's convention
|
|
132
|
+
* (readiness.ts) records what each driver actually observed.
|
|
133
|
+
*/
|
|
134
|
+
export const ENTRY_PROBE_KINDS = {
|
|
135
|
+
'http.v1': 'http', 'jsonl-process.v1': 'jsonl_handshake', 'function-wrapper.v1': 'function_import',
|
|
136
|
+
'playwright.v1': 'browser_document', 'signed-http-event.v1': 'signed_event_handshake',
|
|
137
|
+
};
|
|
138
|
+
/** execution-readiness.v1 list limits (root repairs its 100-item inspector cap for these lists; Slack 2026-11-10). */
|
|
139
|
+
export const READINESS_MAX_SERVICES = 128;
|
|
140
|
+
export const READINESS_MAX_RESETS = 256;
|
|
141
|
+
/**
|
|
142
|
+
* Why root says the drill's input ended (target-actions page, 2026-11-10).
|
|
143
|
+
* Root derives it from the retained latest participant stop, the scenario's
|
|
144
|
+
* last turn once its reply completed, or the retained result of the scenario's
|
|
145
|
+
* task or event; never from an empty page or a score. An ending is not a pass.
|
|
146
|
+
* Root's frozen completion evidence decides coverage: a participant who gave
|
|
147
|
+
* up, a reached turn limit, a delivery-only event (the receiver answered; the
|
|
148
|
+
* work it started was not observed) or an unreached scheduled event is partial.
|
|
149
|
+
* `participant_unavailable` (reserved 2026-11-10) is root's own infrastructure
|
|
150
|
+
* ending: the simulated participant's next message was never generated, so the
|
|
151
|
+
* drill is incomplete and says nothing about the agent, pass or fail.
|
|
152
|
+
*/
|
|
153
|
+
export const ENDING_REASONS = ['participant_finished', 'participant_gave_up', 'turn_limit',
|
|
154
|
+
'inputs_exhausted', 'target_failed', 'target_cancelled', 'delivery_acknowledged', 'participant_unavailable'];
|
|
155
|
+
/** Plain words for why root says a drill's input ended (never a result). */
|
|
156
|
+
export const ENDING_TEXT = {
|
|
157
|
+
participant_finished: 'the participant finished',
|
|
158
|
+
participant_gave_up: 'the participant gave up',
|
|
159
|
+
turn_limit: 'the scenario reached its turn limit',
|
|
160
|
+
inputs_exhausted: 'every scenario input was delivered',
|
|
161
|
+
target_failed: 'the target reported a failure',
|
|
162
|
+
target_cancelled: 'the target reported a cancellation',
|
|
163
|
+
delivery_acknowledged: 'the receiver acknowledged the event; the work it started was not observed',
|
|
164
|
+
participant_unavailable: 'Firedrill could not generate the simulated participant\'s next message in time; the agent was not judged',
|
|
165
|
+
};
|
|
166
|
+
/** The only endings root can freeze as complete coverage (and only with no scheduled event left); every other ending is partial. */
|
|
167
|
+
export const COMPLETE_ENDINGS = new Set(['participant_finished', 'inputs_exhausted']);
|
|
168
|
+
/**
|
|
169
|
+
* Root `execution-close.v1` `client_summary.stop_reason` (2026-11-10): every input ending is a stop
|
|
170
|
+
* reason, `participant_unavailable` included (root's infrastructure ending, closed incomplete).
|
|
171
|
+
*/
|
|
172
|
+
export const STOP_REASONS = ['completed', 'user_cancelled', ...ENDING_REASONS, 'step_limit', 'deadline',
|
|
173
|
+
'driver_error', 'connection_lost', 'policy_denied'];
|
|
174
|
+
/** Active schedule time in words, e.g. `1h 2m 3.5s` (root measures it; nothing is accelerated). */
|
|
175
|
+
export function activeTime(ms) {
|
|
176
|
+
const seconds = Math.floor(ms / 1000);
|
|
177
|
+
const hours = Math.floor(seconds / 3600);
|
|
178
|
+
const minutes = Math.floor((seconds % 3600) / 60);
|
|
179
|
+
const fraction = ms % 1000 ? `.${String(ms % 1000).padStart(3, '0').replace(/0+$/, '')}` : '';
|
|
180
|
+
const rest = seconds % 60 || fraction || (!hours && !minutes) ? `${seconds % 60}${fraction}s` : '';
|
|
181
|
+
return [hours ? `${hours}h` : '', minutes ? `${minutes}m` : '', rest].filter(Boolean).join(' ');
|
|
182
|
+
}
|
|
183
|
+
// ---------------------------------------------------------------------------
|
|
184
|
+
// Errors. Stable codes, no provider internals, no rejected values echoed.
|
|
185
|
+
export const NATIVE_ERRORS = {
|
|
186
|
+
contract_pending: 'native_contract_pending',
|
|
187
|
+
plan_unapproved: 'native_plan_unapproved',
|
|
188
|
+
plan_changed: 'native_plan_changed',
|
|
189
|
+
root_outside: 'native_root_outside',
|
|
190
|
+
readiness_timeout: 'native_readiness_timeout',
|
|
191
|
+
process_exited: 'native_process_exited',
|
|
192
|
+
lease_expired: 'native_lease_expired',
|
|
193
|
+
stale_generation: 'native_stale_generation',
|
|
194
|
+
revoked: 'native_authorization_revoked',
|
|
195
|
+
disconnected: 'native_disconnected',
|
|
196
|
+
driver_unavailable: 'native_driver_unavailable',
|
|
197
|
+
binding_invalid: 'native_binding_invalid',
|
|
198
|
+
state_unsupported: 'native_state_unsupported',
|
|
199
|
+
budget_exhausted: 'native_budget_exhausted',
|
|
200
|
+
unknown_outcome: 'native_outcome_unknown',
|
|
201
|
+
credential_store_unavailable: 'credential_store_unavailable',
|
|
202
|
+
auth_unsupported: 'native_auth_unsupported',
|
|
203
|
+
identity_invalid: 'native_identity_invalid',
|
|
204
|
+
plan_invalid: 'native_plan_invalid',
|
|
205
|
+
root_invalid: 'native_root_invalid',
|
|
206
|
+
process_limit: 'native_process_limit',
|
|
207
|
+
process_start_failed: 'native_process_start_failed',
|
|
208
|
+
port_unavailable: 'native_port_unavailable',
|
|
209
|
+
assignment_invalid: 'native_assignment_invalid',
|
|
210
|
+
intent_missing: 'native_intent_missing',
|
|
211
|
+
companion_stopped: 'native_companion_stopped',
|
|
212
|
+
state_reset_failed: 'native_state_reset_failed',
|
|
213
|
+
step_report_failed: 'native_step_report_failed',
|
|
214
|
+
session_companion_required: 'session_companion_required',
|
|
215
|
+
};
|
|
216
|
+
export function nativeError(code, message, exitCode = 1) {
|
|
217
|
+
return new CliError(NATIVE_ERRORS[code], message, exitCode);
|
|
218
|
+
}
|