agentskeptic 1.0.0 → 1.0.1
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 +39 -44
- package/config/marketing.json +187 -0
- package/dist/actionableFailure.d.ts.map +1 -1
- package/dist/actionableFailure.js +95 -0
- package/dist/actionableFailure.js.map +1 -1
- package/dist/agentRunBundle.d.ts +2 -0
- package/dist/agentRunBundle.d.ts.map +1 -1
- package/dist/agentRunBundle.js +4 -0
- package/dist/agentRunBundle.js.map +1 -1
- package/dist/assurance/assurancePathArgs.d.ts.map +1 -1
- package/dist/assurance/assurancePathArgs.js +1 -0
- package/dist/assurance/assurancePathArgs.js.map +1 -1
- package/dist/assurance/buildAssuranceOutput.d.ts +29 -0
- package/dist/assurance/buildAssuranceOutput.d.ts.map +1 -0
- package/dist/assurance/buildAssuranceOutput.js +53 -0
- package/dist/assurance/buildAssuranceOutput.js.map +1 -0
- package/dist/assurance/checkStale.d.ts +7 -0
- package/dist/assurance/checkStale.d.ts.map +1 -1
- package/dist/assurance/checkStale.js +14 -3
- package/dist/assurance/checkStale.js.map +1 -1
- package/dist/assurance/runAssurance.d.ts.map +1 -1
- package/dist/assurance/runAssurance.js +26 -3
- package/dist/assurance/runAssurance.js.map +1 -1
- package/dist/bootstrap/executeBootstrapPack.d.ts.map +1 -1
- package/dist/bootstrap/executeBootstrapPack.js +3 -2
- package/dist/bootstrap/executeBootstrapPack.js.map +1 -1
- package/dist/certificateDigest.d.ts +4 -0
- package/dist/certificateDigest.d.ts.map +1 -0
- package/dist/certificateDigest.js +7 -0
- package/dist/certificateDigest.js.map +1 -0
- package/dist/certificateDigest.test.d.ts +2 -0
- package/dist/certificateDigest.test.d.ts.map +1 -0
- package/dist/certificateDigest.test.js +14 -0
- package/dist/certificateDigest.test.js.map +1 -0
- package/dist/cli/lockOrchestration.d.ts.map +1 -1
- package/dist/cli/lockOrchestration.js +42 -6
- package/dist/cli/lockOrchestration.js.map +1 -1
- package/dist/cli/lockOrchestration.test.js +1 -0
- package/dist/cli/lockOrchestration.test.js.map +1 -1
- package/dist/cli/runFunnelAnonSet.js +1 -1
- package/dist/cli.js +122 -114
- package/dist/cli.js.map +1 -1
- package/dist/cliArgv.d.ts +2 -0
- package/dist/cliArgv.d.ts.map +1 -1
- package/dist/cliArgv.js +6 -2
- package/dist/cliArgv.js.map +1 -1
- package/dist/cliArgv.test.d.ts +2 -0
- package/dist/cliArgv.test.d.ts.map +1 -0
- package/dist/cliArgv.test.js +34 -0
- package/dist/cliArgv.test.js.map +1 -0
- package/dist/cliOperationalCodes.d.ts +8 -0
- package/dist/cliOperationalCodes.d.ts.map +1 -1
- package/dist/cliOperationalCodes.js +8 -0
- package/dist/cliOperationalCodes.js.map +1 -1
- package/dist/commercial/activationCorrelation.d.ts +3 -0
- package/dist/commercial/activationCorrelation.d.ts.map +1 -0
- package/dist/commercial/activationCorrelation.js +6 -0
- package/dist/commercial/activationCorrelation.js.map +1 -0
- package/dist/commercial/getCurrentUsage.d.ts +16 -0
- package/dist/commercial/getCurrentUsage.d.ts.map +1 -0
- package/dist/commercial/getCurrentUsage.js +33 -0
- package/dist/commercial/getCurrentUsage.js.map +1 -0
- package/dist/commercial/licensePreflight.d.ts +1 -0
- package/dist/commercial/licensePreflight.d.ts.map +1 -1
- package/dist/commercial/licensePreflight.js +27 -8
- package/dist/commercial/licensePreflight.js.map +1 -1
- package/dist/commercial/postVerifyOutcomeBeacon.d.ts +5 -3
- package/dist/commercial/postVerifyOutcomeBeacon.d.ts.map +1 -1
- package/dist/commercial/postVerifyOutcomeBeacon.js +17 -10
- package/dist/commercial/postVerifyOutcomeBeacon.js.map +1 -1
- package/dist/commercial/verifyOutcomeBeaconBody.d.ts +12 -0
- package/dist/commercial/verifyOutcomeBeaconBody.d.ts.map +1 -0
- package/dist/commercial/verifyOutcomeBeaconBody.js +26 -0
- package/dist/commercial/verifyOutcomeBeaconBody.js.map +1 -0
- package/dist/commercial/verifyWorkloadClassify.d.ts +2 -7
- package/dist/commercial/verifyWorkloadClassify.d.ts.map +1 -1
- package/dist/commercial/verifyWorkloadClassify.js +1 -1
- package/dist/commercial/verifyWorkloadClassify.js.map +1 -1
- package/dist/commercial/verifyWorkloadClassify.test.js +7 -0
- package/dist/commercial/verifyWorkloadClassify.test.js.map +1 -1
- package/dist/compare.acceptance.test.js +25 -0
- package/dist/compare.acceptance.test.js.map +1 -1
- package/dist/compareRunManifest.d.ts +32 -0
- package/dist/compareRunManifest.d.ts.map +1 -0
- package/dist/compareRunManifest.js +60 -0
- package/dist/compareRunManifest.js.map +1 -0
- package/dist/crossing/crossingDecisionReadyFooter.d.ts +1 -1
- package/dist/crossing/crossingDecisionReadyFooter.d.ts.map +1 -1
- package/dist/crossing/crossingDecisionReadyFooter.js +1 -1
- package/dist/crossing/crossingDecisionReadyFooter.js.map +1 -1
- package/dist/debug-ui/app.css +42 -0
- package/dist/debug-ui/app.js +206 -15
- package/dist/debug-ui/index.html +11 -4
- package/dist/debug-ui/urlState.d.ts +15 -0
- package/dist/debug-ui/urlState.js +92 -0
- package/dist/debugCorpus.test.js +33 -7
- package/dist/debugCorpus.test.js.map +1 -1
- package/dist/debugPanels.d.ts +0 -3
- package/dist/debugPanels.d.ts.map +1 -1
- package/dist/debugPanels.js +0 -23
- package/dist/debugPanels.js.map +1 -1
- package/dist/debugPanels.test.js +16 -15
- package/dist/debugPanels.test.js.map +1 -1
- package/dist/debugServer.d.ts.map +1 -1
- package/dist/debugServer.js +19 -16
- package/dist/debugServer.js.map +1 -1
- package/dist/debugServer.test.js +18 -9
- package/dist/debugServer.test.js.map +1 -1
- package/dist/debugUiUrlState.test.d.ts +2 -0
- package/dist/debugUiUrlState.test.d.ts.map +1 -0
- package/dist/debugUiUrlState.test.js +49 -0
- package/dist/debugUiUrlState.test.js.map +1 -0
- package/dist/decisionBlocker.contract.test.d.ts +2 -0
- package/dist/decisionBlocker.contract.test.d.ts.map +1 -0
- package/dist/decisionBlocker.contract.test.js +51 -0
- package/dist/decisionBlocker.contract.test.js.map +1 -0
- package/dist/decisionBlocker.d.ts +10 -0
- package/dist/decisionBlocker.d.ts.map +1 -0
- package/dist/decisionBlocker.js +66 -0
- package/dist/decisionBlocker.js.map +1 -0
- package/dist/decisionGate.assertSafe.test.d.ts +2 -0
- package/dist/decisionGate.assertSafe.test.d.ts.map +1 -0
- package/dist/decisionGate.assertSafe.test.js +52 -0
- package/dist/decisionGate.assertSafe.test.js.map +1 -0
- package/dist/decisionGate.d.ts +23 -0
- package/dist/decisionGate.d.ts.map +1 -0
- package/dist/decisionGate.js +85 -0
- package/dist/decisionGate.js.map +1 -0
- package/dist/decisionGate.persistBundle.test.d.ts +2 -0
- package/dist/decisionGate.persistBundle.test.d.ts.map +1 -0
- package/dist/{withWorkflowVerification.persistBundle.test.js → decisionGate.persistBundle.test.js} +31 -19
- package/dist/decisionGate.persistBundle.test.js.map +1 -0
- package/dist/decisionUnsafeError.d.ts +8 -0
- package/dist/decisionUnsafeError.d.ts.map +1 -0
- package/dist/decisionUnsafeError.js +12 -0
- package/dist/decisionUnsafeError.js.map +1 -0
- package/dist/discovery-payload-v1.json +167 -59
- package/dist/enforceCli.d.ts.map +1 -1
- package/dist/enforceCli.js +15 -40
- package/dist/enforceCli.js.map +1 -1
- package/dist/enforceStateful.d.ts +2 -0
- package/dist/enforceStateful.d.ts.map +1 -0
- package/dist/enforceStateful.js +106 -0
- package/dist/enforceStateful.js.map +1 -0
- package/dist/enforcementProjection.d.ts +17 -0
- package/dist/enforcementProjection.d.ts.map +1 -0
- package/dist/enforcementProjection.js +20 -0
- package/dist/enforcementProjection.js.map +1 -0
- package/dist/executionPathFindings.d.ts +1 -1
- package/dist/executionPathFindings.d.ts.map +1 -1
- package/dist/executionPathFindings.js +2 -2
- package/dist/executionPathFindings.js.map +1 -1
- package/dist/executionTrace.js +2 -2
- package/dist/executionTrace.js.map +1 -1
- package/dist/executionTrace.test.js +35 -0
- package/dist/executionTrace.test.js.map +1 -1
- package/dist/executionTraceDiff.d.ts +36 -0
- package/dist/executionTraceDiff.d.ts.map +1 -0
- package/dist/executionTraceDiff.js +86 -0
- package/dist/executionTraceDiff.js.map +1 -0
- package/dist/executionTraceDiff.test.d.ts +2 -0
- package/dist/executionTraceDiff.test.d.ts.map +1 -0
- package/dist/executionTraceDiff.test.js +44 -0
- package/dist/executionTraceDiff.test.js.map +1 -0
- package/dist/failureCatalog.d.ts +1 -0
- package/dist/failureCatalog.d.ts.map +1 -1
- package/dist/failureCatalog.js +1 -0
- package/dist/failureCatalog.js.map +1 -1
- package/dist/failureOriginCatalog.d.ts.map +1 -1
- package/dist/failureOriginCatalog.js +20 -0
- package/dist/failureOriginCatalog.js.map +1 -1
- package/dist/firstFiveMinutesChecklist.d.ts +11 -0
- package/dist/firstFiveMinutesChecklist.d.ts.map +1 -0
- package/dist/firstFiveMinutesChecklist.js +18 -0
- package/dist/firstFiveMinutesChecklist.js.map +1 -0
- package/dist/funnel/workflowLineageClassify.d.ts +1 -1
- package/dist/funnel/workflowLineageClassify.js +1 -1
- package/dist/index.d.ts +20 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -6
- package/dist/index.js.map +1 -1
- package/dist/langGraphCheckpointTrustGate.d.ts +38 -0
- package/dist/langGraphCheckpointTrustGate.d.ts.map +1 -0
- package/dist/langGraphCheckpointTrustGate.js +124 -0
- package/dist/langGraphCheckpointTrustGate.js.map +1 -0
- package/dist/langGraphCheckpointTrustIneligibleCertificate.d.ts +8 -0
- package/dist/langGraphCheckpointTrustIneligibleCertificate.d.ts.map +1 -0
- package/dist/langGraphCheckpointTrustIneligibleCertificate.js +17 -0
- package/dist/langGraphCheckpointTrustIneligibleCertificate.js.map +1 -0
- package/dist/langGraphCheckpointTrustUnsafeError.d.ts +8 -0
- package/dist/langGraphCheckpointTrustUnsafeError.d.ts.map +1 -0
- package/dist/langGraphCheckpointTrustUnsafeError.js +12 -0
- package/dist/langGraphCheckpointTrustUnsafeError.js.map +1 -0
- package/dist/loadEvents.d.ts +5 -0
- package/dist/loadEvents.d.ts.map +1 -1
- package/dist/loadEvents.js +32 -0
- package/dist/loadEvents.js.map +1 -1
- package/dist/operationalDisposition.d.ts +64 -0
- package/dist/operationalDisposition.d.ts.map +1 -1
- package/dist/operationalDisposition.js +64 -0
- package/dist/operationalDisposition.js.map +1 -1
- package/dist/outcomeCertificate.d.ts +14 -2
- package/dist/outcomeCertificate.d.ts.map +1 -1
- package/dist/outcomeCertificate.js +119 -0
- package/dist/outcomeCertificate.js.map +1 -1
- package/dist/outcomeCertificate.test.js +2 -0
- package/dist/outcomeCertificate.test.js.map +1 -1
- package/dist/pipeline.d.ts +19 -17
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +61 -167
- package/dist/pipeline.js.map +1 -1
- package/dist/publicDistribution.generated.d.ts +2 -2
- package/dist/publicDistribution.generated.d.ts.map +1 -1
- package/dist/publicDistribution.generated.js +7 -8
- package/dist/publicDistribution.generated.js.map +1 -1
- package/dist/quickVerify/quickVerifyScope.d.ts +1 -1
- package/dist/quickVerify/quickVerifyScope.js +1 -1
- package/dist/quickVerify/runQuickVerify.js +1 -1
- package/dist/quickVerify/runQuickVerify.js.map +1 -1
- package/dist/quickVerify/verifyExecution.d.ts +1 -1
- package/dist/quickVerify/verifyExecution.d.ts.map +1 -1
- package/dist/quickVerify/verifyExecution.js +3 -2
- package/dist/quickVerify/verifyExecution.js.map +1 -1
- package/dist/reconciler.d.ts +6 -2
- package/dist/reconciler.d.ts.map +1 -1
- package/dist/reconciler.js +17 -11
- package/dist/reconciler.js.map +1 -1
- package/dist/registryDraft/createRegistryDraftAjv.d.ts +1 -1
- package/dist/registryDraft/createRegistryDraftAjv.js +1 -1
- package/dist/regressionArtifact.d.ts +63 -0
- package/dist/regressionArtifact.d.ts.map +1 -0
- package/dist/regressionArtifact.js +290 -0
- package/dist/regressionArtifact.js.map +1 -0
- package/dist/relationalInvariant.d.ts +13 -3
- package/dist/relationalInvariant.d.ts.map +1 -1
- package/dist/relationalInvariant.existsSql.test.js +1 -1
- package/dist/relationalInvariant.existsSql.test.js.map +1 -1
- package/dist/relationalInvariant.js +59 -39
- package/dist/relationalInvariant.js.map +1 -1
- package/dist/relationalInvariant.test.js +2 -2
- package/dist/relationalInvariant.test.js.map +1 -1
- package/dist/resolveExpectation.d.ts +18 -2
- package/dist/resolveExpectation.d.ts.map +1 -1
- package/dist/resolveExpectation.js +332 -1
- package/dist/resolveExpectation.js.map +1 -1
- package/dist/resolveExpectation.test.js +25 -0
- package/dist/resolveExpectation.test.js.map +1 -1
- package/dist/runComparison.d.ts +0 -1
- package/dist/runComparison.d.ts.map +1 -1
- package/dist/runComparison.js +18 -86
- package/dist/runComparison.js.map +1 -1
- package/dist/runComparison.test.js +101 -57
- package/dist/runComparison.test.js.map +1 -1
- package/dist/schema-validation.test.js +29 -0
- package/dist/schema-validation.test.js.map +1 -1
- package/dist/schemaLoad.d.ts +1 -1
- package/dist/schemaLoad.d.ts.map +1 -1
- package/dist/schemaLoad.js +10 -0
- package/dist/schemaLoad.js.map +1 -1
- package/dist/sortedJsonStringify.d.ts +2 -0
- package/dist/sortedJsonStringify.d.ts.map +1 -0
- package/dist/sortedJsonStringify.js +23 -0
- package/dist/sortedJsonStringify.js.map +1 -0
- package/dist/sqlDialect.d.ts +8 -0
- package/dist/sqlDialect.d.ts.map +1 -0
- package/dist/sqlDialect.js +37 -0
- package/dist/sqlDialect.js.map +1 -0
- package/dist/standardVerifyWorkflowCli.d.ts +6 -1
- package/dist/standardVerifyWorkflowCli.d.ts.map +1 -1
- package/dist/standardVerifyWorkflowCli.js +24 -5
- package/dist/standardVerifyWorkflowCli.js.map +1 -1
- package/dist/stateWitness.d.ts +4 -0
- package/dist/stateWitness.d.ts.map +1 -0
- package/dist/stateWitness.js +383 -0
- package/dist/stateWitness.js.map +1 -0
- package/dist/stateWitness.test.d.ts +2 -0
- package/dist/stateWitness.test.d.ts.map +1 -0
- package/dist/stateWitness.test.js +120 -0
- package/dist/stateWitness.test.js.map +1 -0
- package/dist/telemetry/maybeEmitOssClaimTicketUrl.d.ts +2 -0
- package/dist/telemetry/maybeEmitOssClaimTicketUrl.d.ts.map +1 -1
- package/dist/telemetry/maybeEmitOssClaimTicketUrl.js +13 -2
- package/dist/telemetry/maybeEmitOssClaimTicketUrl.js.map +1 -1
- package/dist/telemetry/ossClaimOrigin.d.ts +1 -1
- package/dist/telemetry/ossClaimOrigin.js +1 -1
- package/dist/telemetry/postOssClaimContinuation.d.ts +1 -1
- package/dist/telemetry/postOssClaimContinuation.d.ts.map +1 -1
- package/dist/telemetry/postOssClaimContinuation.js +10 -6
- package/dist/telemetry/postOssClaimContinuation.js.map +1 -1
- package/dist/telemetry/postOssClaimTicket.d.ts +8 -0
- package/dist/telemetry/postOssClaimTicket.d.ts.map +1 -1
- package/dist/telemetry/postOssClaimTicket.js +31 -5
- package/dist/telemetry/postOssClaimTicket.js.map +1 -1
- package/dist/telemetry/verificationHypothesisContract.d.ts +1 -1
- package/dist/telemetry/verificationHypothesisContract.js +1 -1
- package/dist/trustDecision.d.ts +8 -0
- package/dist/trustDecision.d.ts.map +1 -0
- package/dist/trustDecision.js +13 -0
- package/dist/trustDecision.js.map +1 -0
- package/dist/types.d.ts +139 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/verificationConnections.d.ts +10 -0
- package/dist/verificationConnections.d.ts.map +1 -0
- package/dist/verificationConnections.js +190 -0
- package/dist/verificationConnections.js.map +1 -0
- package/dist/verificationDatabaseUrl.d.ts +11 -0
- package/dist/verificationDatabaseUrl.d.ts.map +1 -0
- package/dist/verificationDatabaseUrl.js +41 -0
- package/dist/verificationDatabaseUrl.js.map +1 -0
- package/dist/verificationDatabaseUrl.test.d.ts +2 -0
- package/dist/verificationDatabaseUrl.test.d.ts.map +1 -0
- package/dist/verificationDatabaseUrl.test.js +66 -0
- package/dist/verificationDatabaseUrl.test.js.map +1 -0
- package/dist/verificationDiagnostics.d.ts.map +1 -1
- package/dist/verificationDiagnostics.js +33 -9
- package/dist/verificationDiagnostics.js.map +1 -1
- package/dist/verificationDiagnostics.test.js +15 -0
- package/dist/verificationDiagnostics.test.js.map +1 -1
- package/dist/verificationPolicy.d.ts +2 -1
- package/dist/verificationPolicy.d.ts.map +1 -1
- package/dist/verificationPolicy.js +97 -0
- package/dist/verificationPolicy.js.map +1 -1
- package/dist/verificationPolicy.test.js +7 -0
- package/dist/verificationPolicy.test.js.map +1 -1
- package/dist/verificationRunContext.d.ts.map +1 -1
- package/dist/verificationRunContext.js +3 -0
- package/dist/verificationRunContext.js.map +1 -1
- package/dist/verificationUserPhrases.d.ts.map +1 -1
- package/dist/verificationUserPhrases.js +21 -0
- package/dist/verificationUserPhrases.js.map +1 -1
- package/dist/verify/batchVerifyTelemetrySubcommand.d.ts.map +1 -1
- package/dist/verify/batchVerifyTelemetrySubcommand.js +115 -20
- package/dist/verify/batchVerifyTelemetrySubcommand.js.map +1 -1
- package/dist/verifyAgentskeptic.d.ts +3 -4
- package/dist/verifyAgentskeptic.d.ts.map +1 -1
- package/dist/verifyAgentskeptic.js +15 -27
- package/dist/verifyAgentskeptic.js.map +1 -1
- package/dist/verifyRunStateFromBufferedRunEvents.d.ts +18 -0
- package/dist/verifyRunStateFromBufferedRunEvents.d.ts.map +1 -0
- package/dist/verifyRunStateFromBufferedRunEvents.js +65 -0
- package/dist/verifyRunStateFromBufferedRunEvents.js.map +1 -0
- package/dist/vitestMonorepoRoot.d.ts +10 -0
- package/dist/vitestMonorepoRoot.d.ts.map +1 -0
- package/dist/vitestMonorepoRoot.js +97 -0
- package/dist/vitestMonorepoRoot.js.map +1 -0
- package/dist/wireReasonCodes.d.ts +21 -0
- package/dist/wireReasonCodes.d.ts.map +1 -1
- package/dist/wireReasonCodes.js +21 -0
- package/dist/wireReasonCodes.js.map +1 -1
- package/package.json +62 -40
- package/schemas/assurance-output-v1.schema.json +81 -0
- package/schemas/compare-run-manifest-v1.schema.json +65 -0
- package/schemas/conformance-normalized-result.schema.json +73 -0
- package/schemas/connector-capabilities.schema.json +38 -0
- package/schemas/event.schema.json +35 -0
- package/schemas/execution-trace-view.schema.json +1 -1
- package/schemas/openapi-commercial-v1.in.yaml +613 -14
- package/schemas/openapi-commercial-v1.yaml +613 -14
- package/schemas/outcome-certificate-v1.schema.json +25 -2
- package/schemas/quick-verify-report.schema.json +1 -1
- package/schemas/regression-artifact-v1.schema.json +212 -0
- package/schemas/tools-registry.schema.json +103 -0
- package/schemas/workflow-engine-result.schema.json +71 -2
- package/schemas/workflow-truth-report.schema.json +12 -0
- package/scripts/discovery-acquisition.lib.cjs +60 -97
- package/scripts/discovery-payload.lib.cjs +41 -7
- package/scripts/emit-primary-marketing.cjs +326 -0
- package/scripts/origin.cjs +52 -0
- package/scripts/public-product-anchors.cjs +3 -0
- package/scripts/validate-marketing.cjs +156 -0
- package/dist/withWorkflowVerification.persistBundle.test.d.ts +0 -2
- package/dist/withWorkflowVerification.persistBundle.test.d.ts.map +0 -1
- package/dist/withWorkflowVerification.persistBundle.test.js.map +0 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { describe, it, expect, vi, afterEach } from "vitest";
|
|
2
|
+
const s3Send = vi.hoisted(() => vi.fn());
|
|
3
|
+
vi.mock("@aws-sdk/client-s3", () => ({
|
|
4
|
+
S3Client: class MockS3Client {
|
|
5
|
+
send = s3Send;
|
|
6
|
+
},
|
|
7
|
+
HeadObjectCommand: class HeadObjectCommand {
|
|
8
|
+
input;
|
|
9
|
+
constructor(input) {
|
|
10
|
+
this.input = input;
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
GetObjectCommand: class GetObjectCommand {
|
|
14
|
+
input;
|
|
15
|
+
constructor(input) {
|
|
16
|
+
this.input = input;
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
}));
|
|
20
|
+
import { reconcileStateWitness } from "./stateWitness.js";
|
|
21
|
+
describe("reconcileStateWitness", () => {
|
|
22
|
+
afterEach(() => {
|
|
23
|
+
vi.unstubAllGlobals();
|
|
24
|
+
vi.restoreAllMocks();
|
|
25
|
+
s3Send.mockReset();
|
|
26
|
+
});
|
|
27
|
+
describe("http_witness", () => {
|
|
28
|
+
it("returns verified when status and JSON assertions match", async () => {
|
|
29
|
+
vi.stubGlobal("fetch", vi.fn(async () => new Response(JSON.stringify({ ok: true, n: 1 }), { status: 200 })));
|
|
30
|
+
const out = await reconcileStateWitness({
|
|
31
|
+
kind: "http_witness",
|
|
32
|
+
method: "GET",
|
|
33
|
+
url: "http://witness.test/health",
|
|
34
|
+
expectedStatus: 200,
|
|
35
|
+
assertions: [{ jsonPointer: "/ok", value: true }],
|
|
36
|
+
});
|
|
37
|
+
expect(out.status).toBe("verified");
|
|
38
|
+
});
|
|
39
|
+
it("returns inconsistent on HTTP status mismatch", async () => {
|
|
40
|
+
vi.stubGlobal("fetch", vi.fn(async () => new Response(JSON.stringify({}), { status: 500 })));
|
|
41
|
+
const out = await reconcileStateWitness({
|
|
42
|
+
kind: "http_witness",
|
|
43
|
+
method: "GET",
|
|
44
|
+
url: "http://witness.test/x",
|
|
45
|
+
expectedStatus: 200,
|
|
46
|
+
});
|
|
47
|
+
expect(out.status).toBe("inconsistent");
|
|
48
|
+
expect(out.reasons[0]?.code).toBe("HTTP_WITNESS_STATUS_MISMATCH");
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe("vector_document (pinecone)", () => {
|
|
52
|
+
it("returns verified when fetch returns matching vector metadata", async () => {
|
|
53
|
+
const prevHost = process.env.PINECONE_INDEX_HOST;
|
|
54
|
+
const prevKey = process.env.PINECONE_API_KEY;
|
|
55
|
+
process.env.PINECONE_INDEX_HOST = "https://pinecone.test";
|
|
56
|
+
process.env.PINECONE_API_KEY = "secret";
|
|
57
|
+
try {
|
|
58
|
+
vi.stubGlobal("fetch", vi.fn(async () => new Response(JSON.stringify({
|
|
59
|
+
vectors: { "doc-1": { metadata: { tier: "gold" } } },
|
|
60
|
+
}), { status: 200 })));
|
|
61
|
+
const out = await reconcileStateWitness({
|
|
62
|
+
kind: "vector_document",
|
|
63
|
+
provider: "pinecone",
|
|
64
|
+
documentId: "doc-1",
|
|
65
|
+
indexName: "idx",
|
|
66
|
+
metadataSubset: { tier: "gold" },
|
|
67
|
+
});
|
|
68
|
+
expect(out.status).toBe("verified");
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
if (prevHost === undefined)
|
|
72
|
+
delete process.env.PINECONE_INDEX_HOST;
|
|
73
|
+
else
|
|
74
|
+
process.env.PINECONE_INDEX_HOST = prevHost;
|
|
75
|
+
if (prevKey === undefined)
|
|
76
|
+
delete process.env.PINECONE_API_KEY;
|
|
77
|
+
else
|
|
78
|
+
process.env.PINECONE_API_KEY = prevKey;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
describe("object_storage_object", () => {
|
|
83
|
+
it("returns verified when HeadObject matches size and ETag", async () => {
|
|
84
|
+
s3Send.mockResolvedValueOnce({ ContentLength: 3, ETag: '"abc"' });
|
|
85
|
+
const out = await reconcileStateWitness({
|
|
86
|
+
kind: "object_storage_object",
|
|
87
|
+
bucket: "b",
|
|
88
|
+
key: "k",
|
|
89
|
+
expectSizeBytes: 3,
|
|
90
|
+
expectEtag: "abc",
|
|
91
|
+
});
|
|
92
|
+
expect(out.status).toBe("verified");
|
|
93
|
+
expect(s3Send).toHaveBeenCalledTimes(1);
|
|
94
|
+
});
|
|
95
|
+
it("returns inconsistent on ETag mismatch", async () => {
|
|
96
|
+
s3Send.mockResolvedValueOnce({ ContentLength: 3, ETag: '"wrong"' });
|
|
97
|
+
const out = await reconcileStateWitness({
|
|
98
|
+
kind: "object_storage_object",
|
|
99
|
+
bucket: "b",
|
|
100
|
+
key: "k",
|
|
101
|
+
expectEtag: "expected",
|
|
102
|
+
});
|
|
103
|
+
expect(out.status).toBe("inconsistent");
|
|
104
|
+
expect(out.reasons[0]?.code).toBe("OBJECT_DIGEST_MISMATCH");
|
|
105
|
+
});
|
|
106
|
+
it("returns inconsistent when full-object hash requested over byte cap", async () => {
|
|
107
|
+
const big = 11 * 1024 * 1024;
|
|
108
|
+
s3Send.mockResolvedValueOnce({ ContentLength: big, ETag: '"x"' });
|
|
109
|
+
const out = await reconcileStateWitness({
|
|
110
|
+
kind: "object_storage_object",
|
|
111
|
+
bucket: "b",
|
|
112
|
+
key: "k",
|
|
113
|
+
expectSha256: "a".repeat(64),
|
|
114
|
+
});
|
|
115
|
+
expect(out.status).toBe("inconsistent");
|
|
116
|
+
expect(out.reasons[0]?.code).toBe("OBJECT_TOO_LARGE_FOR_HASH");
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=stateWitness.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stateWitness.test.js","sourceRoot":"","sources":["../src/stateWitness.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,7 @@ export declare function maybeEmitOssClaimTicketUrlToStderr(input: {
|
|
|
4
4
|
workload_class: "bundled_examples" | "non_bundled";
|
|
5
5
|
subcommand: "batch_verify" | "quick_verify" | "verify_integrator_owned";
|
|
6
6
|
build_profile: "oss" | "commercial";
|
|
7
|
+
/** When set, reused for claim-ticket + claim-continuation HTTP `x-request-id`. */
|
|
8
|
+
xRequestId?: string;
|
|
7
9
|
}): Promise<void>;
|
|
8
10
|
//# sourceMappingURL=maybeEmitOssClaimTicketUrl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maybeEmitOssClaimTicketUrl.d.ts","sourceRoot":"","sources":["../../src/telemetry/maybeEmitOssClaimTicketUrl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"maybeEmitOssClaimTicketUrl.d.ts","sourceRoot":"","sources":["../../src/telemetry/maybeEmitOssClaimTicketUrl.ts"],"names":[],"mappings":"AAOA,wBAAsB,kCAAkC,CAAC,KAAK,EAAE;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;IAC5D,cAAc,EAAE,kBAAkB,GAAG,aAAa,CAAC;IACnD,UAAU,EAAE,cAAc,GAAG,cAAc,GAAG,yBAAyB,CAAC;IACxE,aAAa,EAAE,KAAK,GAAG,YAAY,CAAC;IACpC,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { randomBytes } from "node:crypto";
|
|
2
2
|
import { LICENSE_PREFLIGHT_ENABLED } from "../generated/commercialBuildFlags.js";
|
|
3
|
+
import { newActivationHttpCorrelationId } from "../commercial/activationCorrelation.js";
|
|
3
4
|
import { openHandoffUrlInOsBrowser } from "./openHandoffUrlInOsBrowser.js";
|
|
4
5
|
import { postOssClaimContinuation } from "./postOssClaimContinuation.js";
|
|
5
6
|
import { postOssClaimTicket } from "./postOssClaimTicket.js";
|
|
@@ -15,17 +16,19 @@ export async function maybeEmitOssClaimTicketUrlToStderr(input) {
|
|
|
15
16
|
const interactiveHuman = Boolean(process.stdout.isTTY) &&
|
|
16
17
|
Boolean(process.stderr.isTTY) &&
|
|
17
18
|
String(process.env.CI).toLowerCase() !== "true";
|
|
19
|
+
const xRequestId = input.xRequestId?.trim() || newActivationHttpCorrelationId();
|
|
18
20
|
const r = await postOssClaimTicket({
|
|
19
21
|
claim_secret,
|
|
20
22
|
issued_at,
|
|
21
23
|
...input,
|
|
22
24
|
interactive_human: interactiveHuman ? true : undefined,
|
|
25
|
+
xRequestId,
|
|
23
26
|
});
|
|
24
27
|
if (r.outcome === "ok") {
|
|
25
28
|
if (interactiveHuman) {
|
|
26
29
|
const { ok } = await openHandoffUrlInOsBrowser(r.handoff_url);
|
|
27
30
|
if (ok) {
|
|
28
|
-
await postOssClaimContinuation(claim_secret);
|
|
31
|
+
await postOssClaimContinuation(claim_secret, xRequestId);
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
34
|
console.error(`[agentskeptic] Link this verification run to your account: ${r.handoff_url} — open the link, then sign in with email when prompted.`);
|
|
@@ -35,6 +38,14 @@ export async function maybeEmitOssClaimTicketUrlToStderr(input) {
|
|
|
35
38
|
console.error("[agentskeptic] This verification run was already linked to an account. Open the product site and sign in to manage your account, or run verify again for a new run.");
|
|
36
39
|
return;
|
|
37
40
|
}
|
|
38
|
-
|
|
41
|
+
if (r.outcome === "rate_limited") {
|
|
42
|
+
console.error(`[agentskeptic] Could not register a claim link (rate limited). x-request-id=${xRequestId}`);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (r.outcome === "forbidden" || r.outcome === "bad_request") {
|
|
46
|
+
console.error(`[agentskeptic] Could not register a claim link (${r.outcome}). x-request-id=${xRequestId}`);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
console.error(`[agentskeptic] Could not register a claim link (network). x-request-id=${xRequestId} When you are online, run verify again to get a new link, or sign in at the product site without this shortcut.`);
|
|
39
50
|
}
|
|
40
51
|
//# sourceMappingURL=maybeEmitOssClaimTicketUrl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maybeEmitOssClaimTicketUrl.js","sourceRoot":"","sources":["../../src/telemetry/maybeEmitOssClaimTicketUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,
|
|
1
|
+
{"version":3,"file":"maybeEmitOssClaimTicketUrl.js","sourceRoot":"","sources":["../../src/telemetry/maybeEmitOssClaimTicketUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,KAQxD;IACC,IAAI,yBAAyB;QAAE,OAAO;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,IAAI,EAAE,KAAK,GAAG;QAAE,OAAO;IACtE,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,KAAK,GAAG;QAAE,OAAO;IAE/D,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,gBAAgB,GACpB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IAElD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,8BAA8B,EAAE,CAAC;IAEhF,MAAM,CAAC,GAAG,MAAM,kBAAkB,CAAC;QACjC,YAAY;QACZ,SAAS;QACT,GAAG,KAAK;QACR,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACtD,UAAU;KACX,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACvB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,yBAAyB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAC9D,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,wBAAwB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,OAAO,CAAC,KAAK,CACX,8DAA8D,CAAC,CAAC,WAAW,0DAA0D,CACtI,CAAC;QACF,OAAO;IACT,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,KAAK,iBAAiB,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CACX,qKAAqK,CACtK,CAAC;QACF,OAAO;IACT,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CACX,+EAA+E,UAAU,EAAE,CAC5F,CAAC;QACF,OAAO;IACT,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;QAC7D,OAAO,CAAC,KAAK,CACX,mDAAmD,CAAC,CAAC,OAAO,mBAAmB,UAAU,EAAE,CAC5F,CAAC;QACF,OAAO;IACT,CAAC;IACD,OAAO,CAAC,KAAK,CACX,0EAA0E,UAAU,iHAAiH,CACtM,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OSS claim-ticket POST base (v1): canonical public site origin only — no env overrides.
|
|
3
|
-
* Normative: docs/oss-account-claim
|
|
3
|
+
* Normative: docs/oss-account-claim.md
|
|
4
4
|
*/
|
|
5
5
|
export declare function resolveOssClaimApiOrigin(): string;
|
|
6
6
|
//# sourceMappingURL=ossClaimOrigin.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PUBLIC_CANONICAL_SITE_ORIGIN } from "../publicDistribution.generated.js";
|
|
2
2
|
/**
|
|
3
3
|
* OSS claim-ticket POST base (v1): canonical public site origin only — no env overrides.
|
|
4
|
-
* Normative: docs/oss-account-claim
|
|
4
|
+
* Normative: docs/oss-account-claim.md
|
|
5
5
|
*/
|
|
6
6
|
export function resolveOssClaimApiOrigin() {
|
|
7
7
|
return PUBLIC_CANONICAL_SITE_ORIGIN.replace(/\/$/, "");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* POST /api/oss/claim-continuation — records `browser_open_invoked_at` once (interactive-human tickets only).
|
|
3
3
|
*/
|
|
4
|
-
export declare function postOssClaimContinuation(claimSecret: string): Promise<boolean>;
|
|
4
|
+
export declare function postOssClaimContinuation(claimSecret: string, xRequestId?: string): Promise<boolean>;
|
|
5
5
|
//# sourceMappingURL=postOssClaimContinuation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postOssClaimContinuation.d.ts","sourceRoot":"","sources":["../../src/telemetry/postOssClaimContinuation.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,wBAAsB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"postOssClaimContinuation.d.ts","sourceRoot":"","sources":["../../src/telemetry/postOssClaimContinuation.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CA2BlB"}
|
|
@@ -6,19 +6,23 @@ const OSS_CLAIM_CONTINUATION_FETCH_TIMEOUT_MS = 400;
|
|
|
6
6
|
/**
|
|
7
7
|
* POST /api/oss/claim-continuation — records `browser_open_invoked_at` once (interactive-human tickets only).
|
|
8
8
|
*/
|
|
9
|
-
export async function postOssClaimContinuation(claimSecret) {
|
|
9
|
+
export async function postOssClaimContinuation(claimSecret, xRequestId) {
|
|
10
10
|
if (process.env.AGENTSKEPTIC_TELEMETRY?.trim() === "0")
|
|
11
11
|
return false;
|
|
12
12
|
const base = resolveOssClaimApiOrigin();
|
|
13
13
|
const url = `${base}/api/oss/claim-continuation`;
|
|
14
|
+
const headers = {
|
|
15
|
+
"Content-Type": "application/json",
|
|
16
|
+
[PRODUCT_ACTIVATION_CLI_PRODUCT_HEADER]: PRODUCT_ACTIVATION_CLI_PRODUCT_VALUE,
|
|
17
|
+
[PRODUCT_ACTIVATION_CLI_VERSION_HEADER]: AGENTSKEPTIC_CLI_SEMVER,
|
|
18
|
+
};
|
|
19
|
+
if (xRequestId?.trim()) {
|
|
20
|
+
headers["x-request-id"] = xRequestId.trim();
|
|
21
|
+
}
|
|
14
22
|
try {
|
|
15
23
|
const res = await fetchWithTimeout(url, {
|
|
16
24
|
method: "POST",
|
|
17
|
-
headers
|
|
18
|
-
"Content-Type": "application/json",
|
|
19
|
-
[PRODUCT_ACTIVATION_CLI_PRODUCT_HEADER]: PRODUCT_ACTIVATION_CLI_PRODUCT_VALUE,
|
|
20
|
-
[PRODUCT_ACTIVATION_CLI_VERSION_HEADER]: AGENTSKEPTIC_CLI_SEMVER,
|
|
21
|
-
},
|
|
25
|
+
headers,
|
|
22
26
|
body: JSON.stringify({ claim_secret: claimSecret }),
|
|
23
27
|
}, OSS_CLAIM_CONTINUATION_FETCH_TIMEOUT_MS);
|
|
24
28
|
return res.status === 204;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postOssClaimContinuation.js","sourceRoot":"","sources":["../../src/telemetry/postOssClaimContinuation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,qCAAqC,EACrC,oCAAoC,EACpC,qCAAqC,GACtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,uCAAuC,GAAG,GAAG,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,
|
|
1
|
+
{"version":3,"file":"postOssClaimContinuation.js","sourceRoot":"","sources":["../../src/telemetry/postOssClaimContinuation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,qCAAqC,EACrC,oCAAoC,EACpC,qCAAqC,GACtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,uCAAuC,GAAG,GAAG,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,WAAmB,EACnB,UAAmB;IAEnB,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAErE,MAAM,IAAI,GAAG,wBAAwB,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,GAAG,IAAI,6BAA6B,CAAC;IACjD,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,CAAC,qCAAqC,CAAC,EAAE,oCAAoC;QAC7E,CAAC,qCAAqC,CAAC,EAAE,uBAAuB;KACjE,CAAC;IACF,IAAI,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAChC,GAAG,EACH;YACE,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;SACpD,EACD,uCAAuC,CACxC,CAAC;QACF,OAAO,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -8,12 +8,20 @@ export type PostOssClaimTicketInput = {
|
|
|
8
8
|
build_profile: "oss" | "commercial";
|
|
9
9
|
/** Mint-time interactive human cohort (`D_ihm`); must match CLI TTY rule in journey SSOT. */
|
|
10
10
|
interactive_human?: boolean;
|
|
11
|
+
/** Echoed as `x-request-id` (match claim-continuation for the same ticket). */
|
|
12
|
+
xRequestId?: string;
|
|
11
13
|
};
|
|
12
14
|
export type PostOssClaimTicketResult = {
|
|
13
15
|
outcome: "ok";
|
|
14
16
|
handoff_url: string;
|
|
15
17
|
} | {
|
|
16
18
|
outcome: "already_claimed";
|
|
19
|
+
} | {
|
|
20
|
+
outcome: "rate_limited";
|
|
21
|
+
} | {
|
|
22
|
+
outcome: "forbidden";
|
|
23
|
+
} | {
|
|
24
|
+
outcome: "bad_request";
|
|
17
25
|
} | {
|
|
18
26
|
outcome: "failed";
|
|
19
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postOssClaimTicket.d.ts","sourceRoot":"","sources":["../../src/telemetry/postOssClaimTicket.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;IAC5D,cAAc,EAAE,kBAAkB,GAAG,aAAa,CAAC;IACnD,UAAU,EAAE,cAAc,GAAG,cAAc,GAAG,yBAAyB,CAAC;IACxE,aAAa,EAAE,KAAK,GAAG,YAAY,CAAC;IACpC,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"postOssClaimTicket.d.ts","sourceRoot":"","sources":["../../src/telemetry/postOssClaimTicket.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;IAC5D,cAAc,EAAE,kBAAkB,GAAG,aAAa,CAAC;IACnD,UAAU,EAAE,cAAc,GAAG,cAAc,GAAG,yBAAyB,CAAC;IACxE,aAAa,EAAE,KAAK,GAAG,YAAY,CAAC;IACpC,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAChC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC9B;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,GAC3B;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,GACxB;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,GAC1B;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AA6E1B;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAU1G"}
|
|
@@ -8,20 +8,29 @@ const RETRY_MS = [250, 750, 2250];
|
|
|
8
8
|
function sleep(ms) {
|
|
9
9
|
return new Promise((r) => setTimeout(r, ms));
|
|
10
10
|
}
|
|
11
|
+
function readProblemCode(j) {
|
|
12
|
+
if (!j || typeof j.code !== "string")
|
|
13
|
+
return undefined;
|
|
14
|
+
return j.code;
|
|
15
|
+
}
|
|
11
16
|
async function postOssClaimTicketOnce(input) {
|
|
12
17
|
if (process.env.AGENTSKEPTIC_TELEMETRY?.trim() === "0")
|
|
13
18
|
return { outcome: "failed" };
|
|
14
19
|
const base = resolveOssClaimApiOrigin();
|
|
15
20
|
const url = `${base}/api/oss/claim-ticket`;
|
|
16
21
|
const telemetry_source = resolveTelemetrySource();
|
|
22
|
+
const headers = {
|
|
23
|
+
"Content-Type": "application/json",
|
|
24
|
+
[PRODUCT_ACTIVATION_CLI_PRODUCT_HEADER]: PRODUCT_ACTIVATION_CLI_PRODUCT_VALUE,
|
|
25
|
+
[PRODUCT_ACTIVATION_CLI_VERSION_HEADER]: AGENTSKEPTIC_CLI_SEMVER,
|
|
26
|
+
};
|
|
27
|
+
if (input.xRequestId?.trim()) {
|
|
28
|
+
headers["x-request-id"] = input.xRequestId.trim();
|
|
29
|
+
}
|
|
17
30
|
try {
|
|
18
31
|
const res = await fetchWithTimeout(url, {
|
|
19
32
|
method: "POST",
|
|
20
|
-
headers
|
|
21
|
-
"Content-Type": "application/json",
|
|
22
|
-
[PRODUCT_ACTIVATION_CLI_PRODUCT_HEADER]: PRODUCT_ACTIVATION_CLI_PRODUCT_VALUE,
|
|
23
|
-
[PRODUCT_ACTIVATION_CLI_VERSION_HEADER]: AGENTSKEPTIC_CLI_SEMVER,
|
|
24
|
-
},
|
|
33
|
+
headers,
|
|
25
34
|
body: JSON.stringify({
|
|
26
35
|
schema_version: 2,
|
|
27
36
|
telemetry_source,
|
|
@@ -48,6 +57,21 @@ async function postOssClaimTicketOnce(input) {
|
|
|
48
57
|
if (res.status === 204) {
|
|
49
58
|
return { outcome: "already_claimed" };
|
|
50
59
|
}
|
|
60
|
+
if (res.status === 429) {
|
|
61
|
+
return { outcome: "rate_limited" };
|
|
62
|
+
}
|
|
63
|
+
if (res.status === 403) {
|
|
64
|
+
return { outcome: "forbidden" };
|
|
65
|
+
}
|
|
66
|
+
if (res.status === 400 || res.status === 413) {
|
|
67
|
+
const j = (await res.json().catch(() => null));
|
|
68
|
+
const c = readProblemCode(j);
|
|
69
|
+
if (c === "RATE_LIMITED")
|
|
70
|
+
return { outcome: "rate_limited" };
|
|
71
|
+
if (c === "FORBIDDEN")
|
|
72
|
+
return { outcome: "forbidden" };
|
|
73
|
+
return { outcome: "bad_request" };
|
|
74
|
+
}
|
|
51
75
|
return { outcome: "failed" };
|
|
52
76
|
}
|
|
53
77
|
catch {
|
|
@@ -62,6 +86,8 @@ export async function postOssClaimTicket(input) {
|
|
|
62
86
|
const r = await postOssClaimTicketOnce(input);
|
|
63
87
|
if (r.outcome === "ok" || r.outcome === "already_claimed")
|
|
64
88
|
return r;
|
|
89
|
+
if (r.outcome === "rate_limited" || r.outcome === "forbidden" || r.outcome === "bad_request")
|
|
90
|
+
return r;
|
|
65
91
|
if (attempt < RETRY_MS.length) {
|
|
66
92
|
await sleep(RETRY_MS[attempt]);
|
|
67
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postOssClaimTicket.js","sourceRoot":"","sources":["../../src/telemetry/postOssClaimTicket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,qCAAqC,EACrC,oCAAoC,EACpC,qCAAqC,GACtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,iCAAiC,GAAG,GAAG,CAAC;AAE9C,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAU,CAAC;AAE3C,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;
|
|
1
|
+
{"version":3,"file":"postOssClaimTicket.js","sourceRoot":"","sources":["../../src/telemetry/postOssClaimTicket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Canonical rules for optional `verification_hypothesis` on product-activation wire (schema_version 2).
|
|
3
|
-
* @see docs/funnel-observability
|
|
3
|
+
* @see docs/funnel-observability.md (field semantics; charset lives only here).
|
|
4
4
|
*/
|
|
5
5
|
export declare const VERIFICATION_HYPOTHESIS_MIN_LEN = 1;
|
|
6
6
|
export declare const VERIFICATION_HYPOTHESIS_MAX_LEN = 240;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Canonical rules for optional `verification_hypothesis` on product-activation wire (schema_version 2).
|
|
3
|
-
* @see docs/funnel-observability
|
|
3
|
+
* @see docs/funnel-observability.md (field semantics; charset lives only here).
|
|
4
4
|
*/
|
|
5
5
|
export const VERIFICATION_HYPOTHESIS_MIN_LEN = 1;
|
|
6
6
|
export const VERIFICATION_HYPOTHESIS_MAX_LEN = 240;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { OutcomeCertificateV1 } from "./outcomeCertificate.js";
|
|
2
|
+
/** Sole operator-facing trust enum for high-stakes gating. */
|
|
3
|
+
export type TrustDecision = "safe" | "unsafe" | "unknown";
|
|
4
|
+
/**
|
|
5
|
+
* Derive trust from Outcome Certificate v1 (normative: quick_preview is never high-stakes safe).
|
|
6
|
+
*/
|
|
7
|
+
export declare function trustDecisionFromCertificate(certificate: OutcomeCertificateV1): TrustDecision;
|
|
8
|
+
//# sourceMappingURL=trustDecision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trustDecision.d.ts","sourceRoot":"","sources":["../src/trustDecision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,8DAA8D;AAC9D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,oBAAoB,GAAG,aAAa,CAK7F"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derive trust from Outcome Certificate v1 (normative: quick_preview is never high-stakes safe).
|
|
3
|
+
*/
|
|
4
|
+
export function trustDecisionFromCertificate(certificate) {
|
|
5
|
+
if (certificate.runKind === "quick_preview")
|
|
6
|
+
return "unknown";
|
|
7
|
+
if (certificate.highStakesReliance === "permitted")
|
|
8
|
+
return "safe";
|
|
9
|
+
if (certificate.stateRelation === "does_not_match")
|
|
10
|
+
return "unsafe";
|
|
11
|
+
return "unknown";
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=trustDecision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trustDecision.js","sourceRoot":"","sources":["../src/trustDecision.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,WAAiC;IAC5E,IAAI,WAAW,CAAC,OAAO,KAAK,eAAe;QAAE,OAAO,SAAS,CAAC;IAC9D,IAAI,WAAW,CAAC,kBAAkB,KAAK,WAAW;QAAE,OAAO,MAAM,CAAC;IAClE,IAAI,WAAW,CAAC,aAAa,KAAK,gBAAgB;QAAE,OAAO,QAAQ,CAAC;IACpE,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -21,7 +21,25 @@ export type ToolObservedEventV2 = {
|
|
|
21
21
|
params: Record<string, unknown>;
|
|
22
22
|
timestamp?: string;
|
|
23
23
|
};
|
|
24
|
-
|
|
24
|
+
/** LangGraph checkpoint trust wire: v2 graph ids plus required checkpoint identity. */
|
|
25
|
+
export type LanggraphCheckpointRef = {
|
|
26
|
+
threadId: string;
|
|
27
|
+
checkpointNs: string;
|
|
28
|
+
checkpointId: string;
|
|
29
|
+
};
|
|
30
|
+
export type ToolObservedEventV3 = {
|
|
31
|
+
schemaVersion: 3;
|
|
32
|
+
workflowId: string;
|
|
33
|
+
runEventId: string;
|
|
34
|
+
parentRunEventId?: string;
|
|
35
|
+
type: "tool_observed";
|
|
36
|
+
seq: number;
|
|
37
|
+
toolId: string;
|
|
38
|
+
params: Record<string, unknown>;
|
|
39
|
+
timestamp?: string;
|
|
40
|
+
langgraphCheckpoint: LanggraphCheckpointRef;
|
|
41
|
+
};
|
|
42
|
+
export type ToolObservedEvent = ToolObservedEventV1 | ToolObservedEventV2 | ToolObservedEventV3;
|
|
25
43
|
export type ModelTurnRunEvent = {
|
|
26
44
|
schemaVersion: 2;
|
|
27
45
|
workflowId: string;
|
|
@@ -216,6 +234,63 @@ export type SqlRelationalCheckSpec = {
|
|
|
216
234
|
filterEqAnchor?: RegistryEqualityPair[];
|
|
217
235
|
filterEqLookup?: RegistryEqualityPair[];
|
|
218
236
|
};
|
|
237
|
+
/** String or JSON pointer in tools.json (const vs /path). */
|
|
238
|
+
export type RegistryStringSpec = {
|
|
239
|
+
const: string;
|
|
240
|
+
} | {
|
|
241
|
+
pointer: string;
|
|
242
|
+
};
|
|
243
|
+
export type RegistryNumberOrPointerSpec = {
|
|
244
|
+
const: number;
|
|
245
|
+
} | {
|
|
246
|
+
pointer: string;
|
|
247
|
+
};
|
|
248
|
+
export type VectorDocumentVerificationSpec = {
|
|
249
|
+
kind: "vector_document";
|
|
250
|
+
provider: "pinecone" | "weaviate" | "chroma";
|
|
251
|
+
documentId: RegistryStringSpec;
|
|
252
|
+
indexName: RegistryStringSpec;
|
|
253
|
+
namespace?: RegistryStringSpec;
|
|
254
|
+
host?: RegistryStringSpec;
|
|
255
|
+
metadataEq?: {
|
|
256
|
+
pointer: string;
|
|
257
|
+
};
|
|
258
|
+
expectPayloadSha256?: RegistryStringSpec;
|
|
259
|
+
};
|
|
260
|
+
export type ObjectStorageVerificationSpec = {
|
|
261
|
+
kind: "object_storage_object";
|
|
262
|
+
bucket: RegistryStringSpec;
|
|
263
|
+
key: RegistryStringSpec;
|
|
264
|
+
endpoint?: RegistryStringSpec;
|
|
265
|
+
expectSizeBytes?: RegistryNumberOrPointerSpec;
|
|
266
|
+
expectSha256?: RegistryStringSpec;
|
|
267
|
+
expectEtag?: RegistryStringSpec;
|
|
268
|
+
};
|
|
269
|
+
export type HttpWitnessAssertionSpec = {
|
|
270
|
+
jsonPointer: string;
|
|
271
|
+
value: {
|
|
272
|
+
const: string | number | boolean | null;
|
|
273
|
+
} | {
|
|
274
|
+
pointer: string;
|
|
275
|
+
};
|
|
276
|
+
};
|
|
277
|
+
export type HttpWitnessVerificationSpec = {
|
|
278
|
+
kind: "http_witness";
|
|
279
|
+
method?: "GET" | "POST";
|
|
280
|
+
url: RegistryStringSpec;
|
|
281
|
+
expectedStatus?: RegistryNumberOrPointerSpec;
|
|
282
|
+
assertions?: HttpWitnessAssertionSpec[];
|
|
283
|
+
};
|
|
284
|
+
export type MongoDocumentVerificationSpec = {
|
|
285
|
+
kind: "mongo_document";
|
|
286
|
+
collection: RegistryStringSpec;
|
|
287
|
+
filterPointer: {
|
|
288
|
+
pointer: string;
|
|
289
|
+
};
|
|
290
|
+
requiredFields: {
|
|
291
|
+
pointer: string;
|
|
292
|
+
};
|
|
293
|
+
};
|
|
219
294
|
export type ToolRegistryVerification = ({
|
|
220
295
|
kind: "sql_row";
|
|
221
296
|
} & SqlRowVerificationSpec) | ({
|
|
@@ -228,7 +303,7 @@ export type ToolRegistryVerification = ({
|
|
|
228
303
|
} | {
|
|
229
304
|
kind: "sql_relational";
|
|
230
305
|
checks: SqlRelationalCheckSpec[];
|
|
231
|
-
};
|
|
306
|
+
} | VectorDocumentVerificationSpec | ObjectStorageVerificationSpec | HttpWitnessVerificationSpec | MongoDocumentVerificationSpec;
|
|
232
307
|
export type ToolRegistryEntry = {
|
|
233
308
|
toolId: string;
|
|
234
309
|
effectDescriptionTemplate: string;
|
|
@@ -330,13 +405,59 @@ export type SqlRelationalVerificationPayload = {
|
|
|
330
405
|
kind: "sql_relational";
|
|
331
406
|
checks: ResolvedRelationalCheck[];
|
|
332
407
|
};
|
|
333
|
-
export type
|
|
408
|
+
export type VectorDocumentVerificationRequest = {
|
|
409
|
+
kind: "vector_document";
|
|
410
|
+
provider: "pinecone" | "weaviate" | "chroma";
|
|
411
|
+
documentId: string;
|
|
412
|
+
indexName: string;
|
|
413
|
+
namespace?: string;
|
|
414
|
+
host?: string;
|
|
415
|
+
metadataSubset?: Record<string, VerificationScalar>;
|
|
416
|
+
expectPayloadSha256?: string;
|
|
417
|
+
};
|
|
418
|
+
export type ObjectStorageVerificationRequest = {
|
|
419
|
+
kind: "object_storage_object";
|
|
420
|
+
bucket: string;
|
|
421
|
+
key: string;
|
|
422
|
+
endpoint?: string;
|
|
423
|
+
expectSizeBytes?: number;
|
|
424
|
+
expectSha256?: string;
|
|
425
|
+
expectEtag?: string;
|
|
426
|
+
};
|
|
427
|
+
export type HttpWitnessResolvedAssertion = {
|
|
428
|
+
jsonPointer: string;
|
|
429
|
+
value: VerificationScalar;
|
|
430
|
+
};
|
|
431
|
+
export type HttpWitnessVerificationRequest = {
|
|
432
|
+
kind: "http_witness";
|
|
433
|
+
method: "GET" | "POST";
|
|
434
|
+
url: string;
|
|
435
|
+
expectedStatus: number;
|
|
436
|
+
assertions?: HttpWitnessResolvedAssertion[];
|
|
437
|
+
};
|
|
438
|
+
export type MongoDocumentVerificationRequest = {
|
|
439
|
+
kind: "mongo_document";
|
|
440
|
+
collection: string;
|
|
441
|
+
filter: Record<string, unknown>;
|
|
442
|
+
requiredFields: Record<string, VerificationScalar>;
|
|
443
|
+
};
|
|
444
|
+
export type StateWitnessRequest = VectorDocumentVerificationRequest | ObjectStorageVerificationRequest | HttpWitnessVerificationRequest | MongoDocumentVerificationRequest;
|
|
445
|
+
export type StepVerificationRequest = VerificationRequest | RowAbsentVerificationRequest | SqlEffectsVerificationPayload | SqlRelationalVerificationPayload | VectorDocumentVerificationRequest | ObjectStorageVerificationRequest | HttpWitnessVerificationRequest | MongoDocumentVerificationRequest | null;
|
|
334
446
|
export type StepStatus = "verified" | "missing" | "inconsistent" | "incomplete_verification" | "partially_verified" | "uncertain";
|
|
335
447
|
/** Active verification timing/consistency contract (emitted on WorkflowResult). */
|
|
336
448
|
export type VerificationPolicy = {
|
|
337
|
-
consistencyMode: "strong"
|
|
449
|
+
consistencyMode: "strong";
|
|
450
|
+
verificationWindowMs: number;
|
|
451
|
+
pollIntervalMs: number;
|
|
452
|
+
} | {
|
|
453
|
+
consistencyMode: "eventual";
|
|
338
454
|
verificationWindowMs: number;
|
|
339
455
|
pollIntervalMs: number;
|
|
456
|
+
} | {
|
|
457
|
+
consistencyMode: "bounded";
|
|
458
|
+
verificationWindowMs: number;
|
|
459
|
+
pollIntervalMs: number;
|
|
460
|
+
maxStalenessMs: number;
|
|
340
461
|
};
|
|
341
462
|
export type Reason = {
|
|
342
463
|
code: string;
|
|
@@ -368,6 +489,8 @@ export type StepOutcome = {
|
|
|
368
489
|
evaluatedObservationOrdinal: number;
|
|
369
490
|
/** Required when status is not verified; must be absent when status is verified. */
|
|
370
491
|
failureDiagnostic?: FailureDiagnostic;
|
|
492
|
+
/** Present when source `tool_observed` was schemaVersion 3 (LangGraph checkpoint trust wire). */
|
|
493
|
+
langgraphCheckpointKey?: string;
|
|
371
494
|
};
|
|
372
495
|
export type WorkflowStatus = "complete" | "incomplete" | "inconsistent";
|
|
373
496
|
export type EventSequenceIntegrity = {
|
|
@@ -384,7 +507,7 @@ export type VerificationRunContextLastEvent = {
|
|
|
384
507
|
};
|
|
385
508
|
/** Digest of v2 run graph + tool_observed positions; built at verify time from `runEvents`. */
|
|
386
509
|
export type VerificationRunContext = {
|
|
387
|
-
maxWireSchemaVersion: 1 | 2;
|
|
510
|
+
maxWireSchemaVersion: 1 | 2 | 3;
|
|
388
511
|
retrievalEvents: Array<{
|
|
389
512
|
ingestIndex: number;
|
|
390
513
|
runEventId: string | null;
|
|
@@ -650,7 +773,7 @@ export type ExecutionTraceVerificationLink = {
|
|
|
650
773
|
export type ExecutionTraceNode = {
|
|
651
774
|
ingestIndex: number;
|
|
652
775
|
runEventId: string;
|
|
653
|
-
wireSchemaVersion: 1 | 2;
|
|
776
|
+
wireSchemaVersion: 1 | 2 | 3;
|
|
654
777
|
wireType: RunEvent["type"];
|
|
655
778
|
parentRunEventId: string | null;
|
|
656
779
|
traceStepKind: TraceStepKind;
|
|
@@ -695,12 +818,21 @@ export type LoadEventsResult = {
|
|
|
695
818
|
malformedEventLineCount: number;
|
|
696
819
|
eventFileAggregateCounts: EventFileAggregateCounts;
|
|
697
820
|
};
|
|
698
|
-
/** Batch / CLI verification target (`verifyWorkflow`)
|
|
821
|
+
/** Batch / CLI verification target (`verifyWorkflow`) and `createDecisionGate` (`databaseUrl`). */
|
|
699
822
|
export type VerificationDatabase = {
|
|
700
823
|
kind: "sqlite";
|
|
701
824
|
path: string;
|
|
702
825
|
} | {
|
|
703
826
|
kind: "postgres";
|
|
704
827
|
connectionString: string;
|
|
828
|
+
} | {
|
|
829
|
+
kind: "mysql";
|
|
830
|
+
connectionString: string;
|
|
831
|
+
} | {
|
|
832
|
+
kind: "bigquery";
|
|
833
|
+
connectionString: string;
|
|
834
|
+
} | {
|
|
835
|
+
kind: "sqlserver";
|
|
836
|
+
connectionString: string;
|
|
705
837
|
};
|
|
706
838
|
//# sourceMappingURL=types.d.ts.map
|