@sourcey/catalog-verifier 1.1.4 → 1.1.5
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/SBOM.cdx.json +16 -16
- package/SOURCEY-CLOSURE.json +572 -588
- package/SOURCEY-DISTRIBUTION.json +1 -1
- package/THIRD_PARTY_NOTICES.json +6 -6
- package/dist/contracts/agent-readiness/src/authority.d.ts +51 -0
- package/dist/contracts/agent-readiness/src/authority.d.ts.map +1 -0
- package/dist/contracts/agent-readiness/src/authority.js +36 -0
- package/dist/contracts/agent-readiness/src/authority.js.map +1 -0
- package/dist/contracts/agent-readiness/src/binding.d.ts +600 -0
- package/dist/contracts/agent-readiness/src/binding.d.ts.map +1 -0
- package/dist/contracts/agent-readiness/src/binding.js +466 -0
- package/dist/contracts/agent-readiness/src/binding.js.map +1 -0
- package/dist/contracts/agent-readiness/src/declaration-acquisition.d.ts +484 -202
- package/dist/contracts/agent-readiness/src/declaration-acquisition.d.ts.map +1 -1
- package/dist/contracts/agent-readiness/src/declaration-acquisition.js +13 -11
- package/dist/contracts/agent-readiness/src/declaration-acquisition.js.map +1 -1
- package/dist/contracts/agent-readiness/src/declaration-reference.d.ts +4 -7
- package/dist/contracts/agent-readiness/src/declaration-reference.d.ts.map +1 -1
- package/dist/contracts/agent-readiness/src/declaration-reference.js +3 -6
- package/dist/contracts/agent-readiness/src/declaration-reference.js.map +1 -1
- package/dist/contracts/agent-readiness/src/declaration.d.ts +1930 -334
- package/dist/contracts/agent-readiness/src/declaration.d.ts.map +1 -1
- package/dist/contracts/agent-readiness/src/declaration.js +73 -78
- package/dist/contracts/agent-readiness/src/declaration.js.map +1 -1
- package/dist/contracts/agent-readiness/src/index.d.ts +3532 -4849
- package/dist/contracts/agent-readiness/src/index.d.ts.map +1 -1
- package/dist/contracts/agent-readiness/src/index.js +228 -949
- package/dist/contracts/agent-readiness/src/index.js.map +1 -1
- package/dist/contracts/agent-readiness/src/jobs.d.ts +199 -0
- package/dist/contracts/agent-readiness/src/jobs.d.ts.map +1 -0
- package/dist/contracts/agent-readiness/src/jobs.js +125 -0
- package/dist/contracts/agent-readiness/src/jobs.js.map +1 -0
- package/dist/contracts/agent-readiness/src/operate-policy.d.ts +251 -0
- package/dist/contracts/agent-readiness/src/operate-policy.d.ts.map +1 -0
- package/dist/contracts/agent-readiness/src/operate-policy.js +86 -0
- package/dist/contracts/agent-readiness/src/operate-policy.js.map +1 -0
- package/dist/contracts/agent-readiness/src/run.d.ts +485 -0
- package/dist/contracts/agent-readiness/src/run.d.ts.map +1 -0
- package/dist/contracts/agent-readiness/src/run.js +308 -0
- package/dist/contracts/agent-readiness/src/run.js.map +1 -0
- package/dist/contracts/agent-readiness/src/shared.d.ts +53 -62
- package/dist/contracts/agent-readiness/src/shared.d.ts.map +1 -1
- package/dist/contracts/agent-readiness/src/shared.js +51 -85
- package/dist/contracts/agent-readiness/src/shared.js.map +1 -1
- package/dist/contracts/api/src/index.d.ts +13861 -14913
- package/dist/contracts/api/src/index.d.ts.map +1 -1
- package/dist/contracts/api/src/index.js +93 -80
- package/dist/contracts/api/src/index.js.map +1 -1
- package/dist/contracts/artifact/src/index.d.ts +135 -71
- package/dist/contracts/artifact/src/index.d.ts.map +1 -1
- package/dist/contracts/artifact/src/index.js +16 -12
- package/dist/contracts/artifact/src/index.js.map +1 -1
- package/dist/contracts/assets/src/index.d.ts +0 -129
- package/dist/contracts/assets/src/index.d.ts.map +1 -1
- package/dist/contracts/assets/src/index.js +4 -4
- package/dist/contracts/assets/src/index.js.map +1 -1
- package/dist/contracts/assurance/src/index.d.ts +0 -1
- package/dist/contracts/assurance/src/index.d.ts.map +1 -1
- package/dist/contracts/authoring/src/index.d.ts +48 -247
- package/dist/contracts/authoring/src/index.d.ts.map +1 -1
- package/dist/contracts/authoring/src/index.js +4 -7
- package/dist/contracts/authoring/src/index.js.map +1 -1
- package/dist/contracts/authority/src/index.d.ts +0 -3
- package/dist/contracts/authority/src/index.d.ts.map +1 -1
- package/dist/contracts/authority/src/index.js +1 -2
- package/dist/contracts/authority/src/index.js.map +1 -1
- package/dist/contracts/billing/src/index.d.ts +0 -124
- package/dist/contracts/billing/src/index.d.ts.map +1 -1
- package/dist/contracts/billing/src/index.js +2 -58
- package/dist/contracts/billing/src/index.js.map +1 -1
- package/dist/contracts/catalog-verifier/src/index.d.ts +0 -3
- package/dist/contracts/catalog-verifier/src/index.d.ts.map +1 -1
- package/dist/contracts/company-authoring/src/index.d.ts +72 -0
- package/dist/contracts/company-authoring/src/index.d.ts.map +1 -0
- package/dist/contracts/company-authoring/src/index.js +41 -0
- package/dist/contracts/company-authoring/src/index.js.map +1 -0
- package/dist/contracts/company-standing/src/index.d.ts +106 -0
- package/dist/contracts/company-standing/src/index.d.ts.map +1 -0
- package/dist/contracts/company-standing/src/index.js +114 -0
- package/dist/contracts/company-standing/src/index.js.map +1 -0
- package/dist/contracts/company-verification/src/index.d.ts +94 -0
- package/dist/contracts/company-verification/src/index.d.ts.map +1 -0
- package/dist/contracts/company-verification/src/index.js +138 -0
- package/dist/contracts/company-verification/src/index.js.map +1 -0
- package/dist/contracts/datasets/src/index.d.ts +80 -129
- package/dist/contracts/datasets/src/index.d.ts.map +1 -1
- package/dist/contracts/events/src/index.d.ts +41 -5
- package/dist/contracts/events/src/index.d.ts.map +1 -1
- package/dist/contracts/events/src/index.js +51 -12
- package/dist/contracts/events/src/index.js.map +1 -1
- package/dist/contracts/evidence/src/index.d.ts +6 -291
- package/dist/contracts/evidence/src/index.d.ts.map +1 -1
- package/dist/contracts/evidence/src/index.js +12 -99
- package/dist/contracts/evidence/src/index.js.map +1 -1
- package/dist/contracts/feed/src/index.d.ts +0 -3
- package/dist/contracts/feed/src/index.d.ts.map +1 -1
- package/dist/contracts/observations/src/index.d.ts +0 -1
- package/dist/contracts/observations/src/index.d.ts.map +1 -1
- package/dist/contracts/observations/src/index.js +1 -4
- package/dist/contracts/observations/src/index.js.map +1 -1
- package/dist/contracts/policies/src/index.d.ts +0 -13
- package/dist/contracts/policies/src/index.d.ts.map +1 -1
- package/dist/contracts/policies/src/index.js +3 -2
- package/dist/contracts/policies/src/index.js.map +1 -1
- package/dist/contracts/publication/src/index.d.ts +282 -1285
- package/dist/contracts/publication/src/index.d.ts.map +1 -1
- package/dist/contracts/publication/src/index.js +22 -162
- package/dist/contracts/publication/src/index.js.map +1 -1
- package/dist/contracts/release/src/index.d.ts +120 -21
- package/dist/contracts/release/src/index.d.ts.map +1 -1
- package/dist/contracts/release/src/index.js +14 -2
- package/dist/contracts/release/src/index.js.map +1 -1
- package/dist/contracts/revisions/src/index.d.ts +107 -69
- package/dist/contracts/revisions/src/index.d.ts.map +1 -1
- package/dist/contracts/revisions/src/index.js +26 -8
- package/dist/contracts/revisions/src/index.js.map +1 -1
- package/dist/contracts/routes/src/index.d.ts +1 -17
- package/dist/contracts/routes/src/index.d.ts.map +1 -1
- package/dist/contracts/routes/src/index.js +7 -7
- package/dist/contracts/routes/src/index.js.map +1 -1
- package/dist/contracts/sourcey-publication/src/ownership.d.ts.map +1 -1
- package/dist/contracts/sourcey-publication/src/ownership.js +3 -1
- package/dist/contracts/sourcey-publication/src/ownership.js.map +1 -1
- package/dist/contracts/standards/src/index.d.ts +0 -1552
- package/dist/contracts/standards/src/index.d.ts.map +1 -1
- package/dist/contracts/standards/src/index.js +1 -723
- package/dist/contracts/standards/src/index.js.map +1 -1
- package/dist/contracts/startup-credits-commercial/src/index.d.ts +53 -382
- package/dist/contracts/startup-credits-commercial/src/index.d.ts.map +1 -1
- package/dist/contracts/startup-credits-commercial/src/index.js +30 -267
- package/dist/contracts/startup-credits-commercial/src/index.js.map +1 -1
- package/dist/modules/agent-readiness-engine/src/assertions.d.ts +24 -0
- package/dist/modules/agent-readiness-engine/src/assertions.d.ts.map +1 -0
- package/dist/modules/agent-readiness-engine/src/assertions.js +145 -0
- package/dist/modules/agent-readiness-engine/src/assertions.js.map +1 -0
- package/dist/modules/agent-readiness-engine/src/binding.d.ts +12 -0
- package/dist/modules/agent-readiness-engine/src/binding.d.ts.map +1 -0
- package/dist/modules/agent-readiness-engine/src/binding.js +104 -0
- package/dist/modules/agent-readiness-engine/src/binding.js.map +1 -0
- package/dist/modules/agent-readiness-engine/src/checks.d.ts +57 -0
- package/dist/modules/agent-readiness-engine/src/checks.d.ts.map +1 -0
- package/dist/modules/agent-readiness-engine/src/checks.js +126 -0
- package/dist/modules/agent-readiness-engine/src/checks.js.map +1 -0
- package/dist/modules/agent-readiness-engine/src/path.d.ts +24 -0
- package/dist/modules/agent-readiness-engine/src/path.d.ts.map +1 -0
- package/dist/modules/agent-readiness-engine/src/path.js +308 -0
- package/dist/modules/agent-readiness-engine/src/path.js.map +1 -0
- package/dist/modules/agent-readiness-engine/src/rate.d.ts +23 -0
- package/dist/modules/agent-readiness-engine/src/rate.d.ts.map +1 -0
- package/dist/modules/agent-readiness-engine/src/rate.js +57 -0
- package/dist/modules/agent-readiness-engine/src/rate.js.map +1 -0
- package/dist/modules/agent-readiness-engine/src/run.d.ts +9 -0
- package/dist/modules/agent-readiness-engine/src/run.d.ts.map +1 -0
- package/dist/modules/agent-readiness-engine/src/run.js +45 -0
- package/dist/modules/agent-readiness-engine/src/run.js.map +1 -0
- package/dist/modules/agent-readiness-engine/src/templates.d.ts +21 -0
- package/dist/modules/agent-readiness-engine/src/templates.d.ts.map +1 -0
- package/dist/modules/agent-readiness-engine/src/templates.js +89 -0
- package/dist/modules/agent-readiness-engine/src/templates.js.map +1 -0
- package/dist/modules/agent-readiness-jobs/src/index.d.ts +196 -0
- package/dist/modules/agent-readiness-jobs/src/index.d.ts.map +1 -0
- package/dist/modules/agent-readiness-jobs/src/index.js +186 -0
- package/dist/modules/agent-readiness-jobs/src/index.js.map +1 -0
- package/dist/modules/agent-readiness-policy/src/current-policy.d.ts +64 -245
- package/dist/modules/agent-readiness-policy/src/current-policy.d.ts.map +1 -1
- package/dist/modules/agent-readiness-policy/src/current-policy.js +10 -478
- package/dist/modules/agent-readiness-policy/src/current-policy.js.map +1 -1
- package/dist/modules/agent-readiness-policy/src/declaration-jobs.d.ts +20 -0
- package/dist/modules/agent-readiness-policy/src/declaration-jobs.d.ts.map +1 -0
- package/dist/modules/agent-readiness-policy/src/declaration-jobs.js +32 -0
- package/dist/modules/agent-readiness-policy/src/declaration-jobs.js.map +1 -0
- package/dist/modules/agent-readiness-policy/src/impact.d.ts +1 -80
- package/dist/modules/agent-readiness-policy/src/impact.d.ts.map +1 -1
- package/dist/modules/agent-readiness-policy/src/impact.js +2 -189
- package/dist/modules/agent-readiness-policy/src/impact.js.map +1 -1
- package/dist/modules/agent-readiness-policy/src/index.d.ts +21 -968
- package/dist/modules/agent-readiness-policy/src/index.d.ts.map +1 -1
- package/dist/modules/agent-readiness-policy/src/index.js +137 -470
- package/dist/modules/agent-readiness-policy/src/index.js.map +1 -1
- package/dist/modules/agent-readiness-policy/src/offer-relations.d.ts +0 -5
- package/dist/modules/agent-readiness-policy/src/offer-relations.d.ts.map +1 -1
- package/dist/modules/agent-readiness-policy/src/offer-relations.js +2 -4
- package/dist/modules/agent-readiness-policy/src/offer-relations.js.map +1 -1
- package/dist/modules/agent-readiness-policy/src/operate-policy.d.ts +16 -0
- package/dist/modules/agent-readiness-policy/src/operate-policy.d.ts.map +1 -0
- package/dist/modules/agent-readiness-policy/src/operate-policy.js +110 -0
- package/dist/modules/agent-readiness-policy/src/operate-policy.js.map +1 -0
- package/dist/modules/agent-readiness-policy/src/prior-projection.d.ts +3 -0
- package/dist/modules/agent-readiness-policy/src/prior-projection.d.ts.map +1 -0
- package/dist/modules/agent-readiness-policy/src/prior-projection.js +11 -0
- package/dist/modules/agent-readiness-policy/src/prior-projection.js.map +1 -0
- package/dist/modules/agent-readiness-policy/src/revision.d.ts +13 -2
- package/dist/modules/agent-readiness-policy/src/revision.d.ts.map +1 -1
- package/dist/modules/agent-readiness-policy/src/revision.js +79 -38
- package/dist/modules/agent-readiness-policy/src/revision.js.map +1 -1
- package/dist/modules/agent-readiness-repository/src/change.d.ts +3 -4
- package/dist/modules/agent-readiness-repository/src/change.d.ts.map +1 -1
- package/dist/modules/agent-readiness-repository/src/change.js +4 -4
- package/dist/modules/agent-readiness-repository/src/change.js.map +1 -1
- package/dist/modules/agent-readiness-repository/src/declaration-blob.d.ts +0 -5
- package/dist/modules/agent-readiness-repository/src/declaration-blob.d.ts.map +1 -1
- package/dist/modules/agent-readiness-repository/src/declaration-blob.js +2 -9
- package/dist/modules/agent-readiness-repository/src/declaration-blob.js.map +1 -1
- package/dist/modules/agent-readiness-repository/src/index.d.ts +1 -51
- package/dist/modules/agent-readiness-repository/src/index.d.ts.map +1 -1
- package/dist/modules/agent-readiness-repository/src/index.js +4 -113
- package/dist/modules/agent-readiness-repository/src/index.js.map +1 -1
- package/dist/modules/artifact/src/agent-readiness-closure.d.ts +4 -7
- package/dist/modules/artifact/src/agent-readiness-closure.d.ts.map +1 -1
- package/dist/modules/artifact/src/agent-readiness-closure.js +5 -22
- package/dist/modules/artifact/src/agent-readiness-closure.js.map +1 -1
- package/dist/modules/artifact/src/index.d.ts +5 -4
- package/dist/modules/artifact/src/index.d.ts.map +1 -1
- package/dist/modules/artifact/src/index.js +47 -45
- package/dist/modules/artifact/src/index.js.map +1 -1
- package/dist/modules/artifact/src/policy-closure.js +2 -2
- package/dist/modules/artifact/src/policy-closure.js.map +1 -1
- package/dist/modules/assets/src/authority-bundle.d.ts +2 -5
- package/dist/modules/assets/src/authority-bundle.d.ts.map +1 -1
- package/dist/modules/assets/src/authority-bundle.js +1 -9
- package/dist/modules/assets/src/authority-bundle.js.map +1 -1
- package/dist/modules/assets/src/delta.d.ts +0 -5
- package/dist/modules/assets/src/delta.d.ts.map +1 -1
- package/dist/modules/assets/src/delta.js +1 -38
- package/dist/modules/assets/src/delta.js.map +1 -1
- package/dist/modules/assets/src/index.d.ts +1 -1
- package/dist/modules/assets/src/index.d.ts.map +1 -1
- package/dist/modules/assets/src/ingestion.d.ts +2 -1
- package/dist/modules/assets/src/ingestion.d.ts.map +1 -1
- package/dist/modules/authority/src/index.d.ts +3 -10
- package/dist/modules/authority/src/index.d.ts.map +1 -1
- package/dist/modules/authority/src/index.js +113 -201
- package/dist/modules/authority/src/index.js.map +1 -1
- package/dist/modules/authority-state/src/index.d.ts +2 -1
- package/dist/modules/authority-state/src/index.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/admission-conflicts.d.ts +5 -7
- package/dist/modules/catalog-admission/src/admission-conflicts.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/admission-conflicts.js +1 -1
- package/dist/modules/catalog-admission/src/admission-conflicts.js.map +1 -1
- package/dist/modules/catalog-admission/src/change-analysis.d.ts +1 -2
- package/dist/modules/catalog-admission/src/change-analysis.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/change-analysis.js +0 -4
- package/dist/modules/catalog-admission/src/change-analysis.js.map +1 -1
- package/dist/modules/catalog-admission/src/index.d.ts +2 -9
- package/dist/modules/catalog-admission/src/index.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/index.js +28 -13
- package/dist/modules/catalog-admission/src/index.js.map +1 -1
- package/dist/modules/catalog-admission/src/machine-admission.d.ts +65 -19
- package/dist/modules/catalog-admission/src/machine-admission.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/machine-admission.js +5 -331
- package/dist/modules/catalog-admission/src/machine-admission.js.map +1 -1
- package/dist/modules/catalog-admission/src/publication-composition.d.ts +17 -1
- package/dist/modules/catalog-admission/src/publication-composition.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/publication-dependencies.d.ts +1 -6
- package/dist/modules/catalog-admission/src/publication-dependencies.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/publication-dependencies.js +5 -33
- package/dist/modules/catalog-admission/src/publication-dependencies.js.map +1 -1
- package/dist/modules/catalog-admission/src/publication-entities.d.ts +0 -1
- package/dist/modules/catalog-admission/src/publication-entities.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/publication-entities.js +1 -1
- package/dist/modules/catalog-admission/src/publication-entities.js.map +1 -1
- package/dist/modules/catalog-admission/src/publication.d.ts +3 -8
- package/dist/modules/catalog-admission/src/publication.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/publication.js +0 -13
- package/dist/modules/catalog-admission/src/publication.js.map +1 -1
- package/dist/modules/catalog-admission/src/submission.js +1 -1
- package/dist/modules/catalog-admission/src/submission.js.map +1 -1
- package/dist/modules/catalog-admission/src/taxonomy.d.ts +3 -0
- package/dist/modules/catalog-admission/src/taxonomy.d.ts.map +1 -0
- package/dist/modules/catalog-admission/src/taxonomy.js +7 -0
- package/dist/modules/catalog-admission/src/taxonomy.js.map +1 -0
- package/dist/modules/catalog-authoring-validation/src/index.d.ts +0 -1
- package/dist/modules/catalog-authoring-validation/src/index.d.ts.map +1 -1
- package/dist/modules/catalog-authoring-validation/src/index.js +1 -1
- package/dist/modules/catalog-authoring-validation/src/index.js.map +1 -1
- package/dist/modules/catalog-model/src/index.d.ts +2 -2
- package/dist/modules/catalog-model/src/index.d.ts.map +1 -1
- package/dist/modules/catalog-primitives/src/index.d.ts +2 -4
- package/dist/modules/catalog-primitives/src/index.d.ts.map +1 -1
- package/dist/modules/catalog-primitives/src/index.js +24 -0
- package/dist/modules/catalog-primitives/src/index.js.map +1 -1
- package/dist/modules/catalog-read-port/src/index.d.ts +3 -3
- package/dist/modules/catalog-read-port/src/index.d.ts.map +1 -1
- package/dist/modules/evidence-comparison/src/domains.d.ts +8 -0
- package/dist/modules/evidence-comparison/src/domains.d.ts.map +1 -0
- package/dist/modules/evidence-comparison/src/domains.js +16 -0
- package/dist/modules/evidence-comparison/src/domains.js.map +1 -0
- package/dist/modules/evidence-operations/src/attested-capture.d.ts +75 -0
- package/dist/modules/evidence-operations/src/attested-capture.d.ts.map +1 -0
- package/dist/modules/evidence-operations/src/attested-capture.js +227 -0
- package/dist/modules/evidence-operations/src/attested-capture.js.map +1 -0
- package/dist/modules/evidence-operations/src/configuration.d.ts +2 -163
- package/dist/modules/evidence-operations/src/configuration.d.ts.map +1 -1
- package/dist/modules/evidence-operations/src/configuration.js +7 -7
- package/dist/modules/evidence-operations/src/configuration.js.map +1 -1
- package/dist/modules/evidence-operations/src/evidence-authority-materialization.d.ts +53 -0
- package/dist/modules/evidence-operations/src/evidence-authority-materialization.d.ts.map +1 -0
- package/dist/modules/evidence-operations/src/evidence-authority-materialization.js +161 -0
- package/dist/modules/evidence-operations/src/evidence-authority-materialization.js.map +1 -0
- package/dist/modules/evidence-operations/src/evidence-authority.d.ts +27 -2128
- package/dist/modules/evidence-operations/src/evidence-authority.d.ts.map +1 -1
- package/dist/modules/evidence-operations/src/evidence-authority.js +46 -206
- package/dist/modules/evidence-operations/src/evidence-authority.js.map +1 -1
- package/dist/modules/evidence-operations/src/evidence-normalization.d.ts +10 -96
- package/dist/modules/evidence-operations/src/evidence-normalization.d.ts.map +1 -1
- package/dist/modules/evidence-operations/src/evidence-normalization.js +32 -329
- package/dist/modules/evidence-operations/src/evidence-normalization.js.map +1 -1
- package/dist/modules/evidence-operations/src/evidence-revision.d.ts +5 -0
- package/dist/modules/evidence-operations/src/evidence-revision.d.ts.map +1 -0
- package/dist/modules/evidence-operations/src/evidence-revision.js +12 -0
- package/dist/modules/evidence-operations/src/evidence-revision.js.map +1 -0
- package/dist/modules/evidence-operations/src/proof-graph.d.ts +13 -6
- package/dist/modules/evidence-operations/src/proof-graph.d.ts.map +1 -1
- package/dist/modules/evidence-operations/src/proof-graph.js +82 -59
- package/dist/modules/evidence-operations/src/proof-graph.js.map +1 -1
- package/dist/modules/evidence-operations/src/retained-revision.d.ts +7 -5
- package/dist/modules/evidence-operations/src/retained-revision.d.ts.map +1 -1
- package/dist/modules/evidence-operations/src/retained-revision.js +14 -16
- package/dist/modules/evidence-operations/src/retained-revision.js.map +1 -1
- package/dist/modules/evidence-operations/src/source-authority.js +1 -1
- package/dist/modules/evidence-operations/src/source-authority.js.map +1 -1
- package/dist/modules/evidence-operations/src/submission-verifier.d.ts +13 -23
- package/dist/modules/evidence-operations/src/submission-verifier.d.ts.map +1 -1
- package/dist/modules/evidence-operations/src/submission-verifier.js +5 -20
- package/dist/modules/evidence-operations/src/submission-verifier.js.map +1 -1
- package/dist/modules/provenance/src/evidence-bindings.d.ts +2 -1
- package/dist/modules/provenance/src/evidence-bindings.d.ts.map +1 -1
- package/dist/modules/provenance/src/evidence-coverage.d.ts +2 -1
- package/dist/modules/provenance/src/evidence-coverage.d.ts.map +1 -1
- package/dist/modules/provenance/src/index.d.ts +17 -11
- package/dist/modules/provenance/src/index.d.ts.map +1 -1
- package/dist/modules/provenance/src/index.js +62 -62
- package/dist/modules/provenance/src/index.js.map +1 -1
- package/dist/modules/provenance/src/material-claims.d.ts +7 -136
- package/dist/modules/provenance/src/material-claims.d.ts.map +1 -1
- package/dist/modules/provenance/src/material-claims.js +8 -10
- package/dist/modules/provenance/src/material-claims.js.map +1 -1
- package/dist/modules/release/src/agent-readiness-authority.d.ts +71 -0
- package/dist/modules/release/src/agent-readiness-authority.d.ts.map +1 -0
- package/dist/modules/release/src/agent-readiness-authority.js +164 -0
- package/dist/modules/release/src/agent-readiness-authority.js.map +1 -0
- package/dist/modules/release/src/agent-readiness-publication-inputs.d.ts +1 -2
- package/dist/modules/release/src/agent-readiness-publication-inputs.d.ts.map +1 -1
- package/dist/modules/release/src/agent-readiness-publication-inputs.js +3 -6
- package/dist/modules/release/src/agent-readiness-publication-inputs.js.map +1 -1
- package/dist/modules/release/src/agent-readiness-regrade-evidence.d.ts +13 -89
- package/dist/modules/release/src/agent-readiness-regrade-evidence.d.ts.map +1 -1
- package/dist/modules/release/src/agent-readiness-regrade-evidence.js +14 -46
- package/dist/modules/release/src/agent-readiness-regrade-evidence.js.map +1 -1
- package/dist/modules/release/src/changes.d.ts +3 -3
- package/dist/modules/release/src/changes.d.ts.map +1 -1
- package/dist/modules/release/src/changes.js +1 -2
- package/dist/modules/release/src/changes.js.map +1 -1
- package/dist/modules/release/src/evidence-admission.d.ts +10 -10
- package/dist/modules/release/src/evidence-admission.d.ts.map +1 -1
- package/dist/modules/release/src/evidence-admission.js +52 -60
- package/dist/modules/release/src/evidence-admission.js.map +1 -1
- package/dist/modules/release/src/evidence-bundle-tree.d.ts +7 -7
- package/dist/modules/release/src/evidence-bundle-tree.d.ts.map +1 -1
- package/dist/modules/release/src/evidence-bundle-tree.js +15 -15
- package/dist/modules/release/src/evidence-bundle-tree.js.map +1 -1
- package/dist/modules/release/src/identity.d.ts +2 -1
- package/dist/modules/release/src/identity.d.ts.map +1 -1
- package/dist/modules/release/src/identity.js.map +1 -1
- package/dist/modules/release/src/inputs.d.ts +12 -11
- package/dist/modules/release/src/inputs.d.ts.map +1 -1
- package/dist/modules/release/src/inputs.js +30 -202
- package/dist/modules/release/src/inputs.js.map +1 -1
- package/dist/modules/release/src/publication-inputs.d.ts +2 -1
- package/dist/modules/release/src/publication-inputs.d.ts.map +1 -1
- package/dist/modules/release/src/transition.d.ts +2 -2
- package/dist/modules/release/src/transition.d.ts.map +1 -1
- package/dist/modules/release/src/transition.js.map +1 -1
- package/dist/modules/release/src/verification-policies.d.ts +59 -242
- package/dist/modules/release/src/verification-policies.d.ts.map +1 -1
- package/dist/modules/release/src/verification-policies.js +2 -2
- package/dist/modules/release/src/verification-policies.js.map +1 -1
- package/dist/modules/sourcey-publication/src/verifier.d.ts +4 -3
- package/dist/modules/sourcey-publication/src/verifier.d.ts.map +1 -1
- package/dist/modules/sourcey-publication/src/verifier.js +53 -50
- package/dist/modules/sourcey-publication/src/verifier.js.map +1 -1
- package/dist/packages/catalog-verifier/src/application.d.ts +2 -5
- package/dist/packages/catalog-verifier/src/application.d.ts.map +1 -1
- package/dist/packages/catalog-verifier/src/application.js +2 -5
- package/dist/packages/catalog-verifier/src/application.js.map +1 -1
- package/dist/packages/catalog-verifier/src/program.js +1 -1
- package/dist/packages/catalog-verifier/src/program.js.map +1 -1
- package/package.json +2 -3
- package/dist/contracts/agent-readiness/src/evidence.d.ts +0 -245
- package/dist/contracts/agent-readiness/src/evidence.d.ts.map +0 -1
- package/dist/contracts/agent-readiness/src/evidence.js +0 -213
- package/dist/contracts/agent-readiness/src/evidence.js.map +0 -1
- package/dist/contracts/agent-readiness/src/interaction.d.ts +0 -26
- package/dist/contracts/agent-readiness/src/interaction.d.ts.map +0 -1
- package/dist/contracts/agent-readiness/src/interaction.js +0 -24
- package/dist/contracts/agent-readiness/src/interaction.js.map +0 -1
- package/dist/contracts/agent-readiness/src/method-pack.d.ts +0 -389
- package/dist/contracts/agent-readiness/src/method-pack.d.ts.map +0 -1
- package/dist/contracts/agent-readiness/src/method-pack.js +0 -181
- package/dist/contracts/agent-readiness/src/method-pack.js.map +0 -1
- package/dist/modules/agent-readiness-policy/src/corroboration.d.ts +0 -38
- package/dist/modules/agent-readiness-policy/src/corroboration.d.ts.map +0 -1
- package/dist/modules/agent-readiness-policy/src/corroboration.js +0 -66
- package/dist/modules/agent-readiness-policy/src/corroboration.js.map +0 -1
- package/dist/modules/agent-readiness-policy/src/current-policy-metrics.d.ts +0 -35
- package/dist/modules/agent-readiness-policy/src/current-policy-metrics.d.ts.map +0 -1
- package/dist/modules/agent-readiness-policy/src/current-policy-metrics.js +0 -721
- package/dist/modules/agent-readiness-policy/src/current-policy-metrics.js.map +0 -1
- package/dist/modules/agent-readiness-policy/src/current-policy-standards.d.ts +0 -99
- package/dist/modules/agent-readiness-policy/src/current-policy-standards.d.ts.map +0 -1
- package/dist/modules/agent-readiness-policy/src/current-policy-standards.js +0 -99
- package/dist/modules/agent-readiness-policy/src/current-policy-standards.js.map +0 -1
- package/dist/modules/agent-readiness-policy/src/current-policy-validation.d.ts +0 -4
- package/dist/modules/agent-readiness-policy/src/current-policy-validation.d.ts.map +0 -1
- package/dist/modules/agent-readiness-policy/src/current-policy-validation.js +0 -11
- package/dist/modules/agent-readiness-policy/src/current-policy-validation.js.map +0 -1
- package/dist/modules/agent-readiness-policy/src/grading.d.ts +0 -40
- package/dist/modules/agent-readiness-policy/src/grading.d.ts.map +0 -1
- package/dist/modules/agent-readiness-policy/src/grading.js +0 -46
- package/dist/modules/agent-readiness-policy/src/grading.js.map +0 -1
- package/dist/modules/agent-readiness-policy/src/policy-validation.d.ts +0 -3
- package/dist/modules/agent-readiness-policy/src/policy-validation.d.ts.map +0 -1
- package/dist/modules/agent-readiness-policy/src/policy-validation.js +0 -39
- package/dist/modules/agent-readiness-policy/src/policy-validation.js.map +0 -1
- package/dist/modules/agent-readiness-policy/src/projection-lineage.d.ts +0 -3
- package/dist/modules/agent-readiness-policy/src/projection-lineage.d.ts.map +0 -1
- package/dist/modules/agent-readiness-policy/src/projection-lineage.js +0 -12
- package/dist/modules/agent-readiness-policy/src/projection-lineage.js.map +0 -1
- package/dist/modules/agent-readiness-policy/src/standard-mapping.d.ts +0 -7
- package/dist/modules/agent-readiness-policy/src/standard-mapping.d.ts.map +0 -1
- package/dist/modules/agent-readiness-policy/src/standard-mapping.js +0 -14
- package/dist/modules/agent-readiness-policy/src/standard-mapping.js.map +0 -1
- package/dist/modules/agent-readiness-policy/src/surface-selection.d.ts +0 -44
- package/dist/modules/agent-readiness-policy/src/surface-selection.d.ts.map +0 -1
- package/dist/modules/agent-readiness-policy/src/surface-selection.js +0 -238
- package/dist/modules/agent-readiness-policy/src/surface-selection.js.map +0 -1
- package/dist/modules/agent-readiness-repository/src/admission.d.ts +0 -35
- package/dist/modules/agent-readiness-repository/src/admission.d.ts.map +0 -1
- package/dist/modules/agent-readiness-repository/src/admission.js +0 -56
- package/dist/modules/agent-readiness-repository/src/admission.js.map +0 -1
- package/dist/modules/authority/src/retained-capture-receipt.d.ts +0 -95
- package/dist/modules/authority/src/retained-capture-receipt.d.ts.map +0 -1
- package/dist/modules/authority/src/retained-capture-receipt.js +0 -76
- package/dist/modules/authority/src/retained-capture-receipt.js.map +0 -1
- package/dist/modules/catalog-admission/src/publication-recomposition.d.ts +0 -42
- package/dist/modules/catalog-admission/src/publication-recomposition.d.ts.map +0 -1
- package/dist/modules/catalog-admission/src/publication-recomposition.js +0 -163
- package/dist/modules/catalog-admission/src/publication-recomposition.js.map +0 -1
- package/dist/modules/evidence-comparison/src/values.d.ts +0 -75
- package/dist/modules/evidence-comparison/src/values.d.ts.map +0 -1
- package/dist/modules/evidence-comparison/src/values.js +0 -283
- package/dist/modules/evidence-comparison/src/values.js.map +0 -1
- package/dist/modules/evidence-grounding/src/figures.d.ts +0 -56
- package/dist/modules/evidence-grounding/src/figures.d.ts.map +0 -1
- package/dist/modules/evidence-grounding/src/figures.js +0 -727
- package/dist/modules/evidence-grounding/src/figures.js.map +0 -1
- package/dist/modules/evidence-grounding/src/index.d.ts +0 -4
- package/dist/modules/evidence-grounding/src/index.d.ts.map +0 -1
- package/dist/modules/evidence-grounding/src/index.js +0 -4
- package/dist/modules/evidence-grounding/src/index.js.map +0 -1
- package/dist/modules/evidence-grounding/src/locator.d.ts +0 -50
- package/dist/modules/evidence-grounding/src/locator.d.ts.map +0 -1
- package/dist/modules/evidence-grounding/src/locator.js +0 -162
- package/dist/modules/evidence-grounding/src/locator.js.map +0 -1
- package/dist/modules/evidence-grounding/src/written.d.ts +0 -29
- package/dist/modules/evidence-grounding/src/written.d.ts.map +0 -1
- package/dist/modules/evidence-grounding/src/written.js +0 -111
- package/dist/modules/evidence-grounding/src/written.js.map +0 -1
- package/dist/modules/evidence-operations/src/dependency-versions.d.ts +0 -2
- package/dist/modules/evidence-operations/src/dependency-versions.d.ts.map +0 -1
- package/dist/modules/evidence-operations/src/dependency-versions.js +0 -17
- package/dist/modules/evidence-operations/src/dependency-versions.js.map +0 -1
- package/dist/modules/evidence-operations/src/html-document.d.ts +0 -4
- package/dist/modules/evidence-operations/src/html-document.d.ts.map +0 -1
- package/dist/modules/evidence-operations/src/html-document.js +0 -99
- package/dist/modules/evidence-operations/src/html-document.js.map +0 -1
- package/dist/modules/policy-identity/src/index.d.ts +0 -7
- package/dist/modules/policy-identity/src/index.d.ts.map +0 -1
- package/dist/modules/policy-identity/src/index.js +0 -23
- package/dist/modules/policy-identity/src/index.js.map +0 -1
- package/dist/modules/release/src/publication-authorities.d.ts +0 -298
- package/dist/modules/release/src/publication-authorities.d.ts.map +0 -1
- package/dist/modules/release/src/publication-authorities.js +0 -56
- package/dist/modules/release/src/publication-authorities.js.map +0 -1
- package/dist/modules/standard-adapter-runtime/src/index.d.ts +0 -16
- package/dist/modules/standard-adapter-runtime/src/index.d.ts.map +0 -1
- package/dist/modules/standard-adapter-runtime/src/index.js +0 -43
- package/dist/modules/standard-adapter-runtime/src/index.js.map +0 -1
- package/dist/modules/standard-evidence/src/index.d.ts +0 -33
- package/dist/modules/standard-evidence/src/index.d.ts.map +0 -1
- package/dist/modules/standard-evidence/src/index.js +0 -149
- package/dist/modules/standard-evidence/src/index.js.map +0 -1
|
@@ -2,119 +2,35 @@ import { SLUG_PATTERN } from "provenry/primitives";
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { provenanceSchema } from "../../artifact/src/index.js";
|
|
4
4
|
import { entityRevisionSchema, lifecycleStatusSchema, offerRevisionSchema, } from "../../revisions/src/index.js";
|
|
5
|
-
import {
|
|
6
|
-
import { agentReadinessAssessmentTargetSchema, agentReadinessDeclarationRevisionSchema, agentReadinessDeclaredInterfaceSchema, agentReadinessEndpointRoleSchema, agentReadinessEndpointSchema, agentReadinessInterfaceFunctionSchema, agentReadinessInterfaceModalitySchema, agentReadinessOfferRelationPurposeSchema, agentReadinessParticipantSchema, agentReadinessResourceSchema, agentReadinessSurfaceExclusionSchema, agentReadinessSurfaceRelationKindSchema, agentReadinessSurfaceRelationSchema, } from "./declaration.js";
|
|
5
|
+
import { agentReadinessDeclarationRevisionSchema, agentReadinessDeclaredInterfaceSchema, agentReadinessEndpointSchema, agentReadinessOfferRelationPurposeSchema, agentReadinessParticipantSchema, agentReadinessResourceSchema, agentReadinessSurfaceExclusionSchema, agentReadinessSurfaceRelationSchema, } from "./declaration.js";
|
|
7
6
|
import { agentReadinessDeclarationStateSchema } from "./declaration-reference.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
7
|
+
import { agentReadinessAssertionResultSchema, agentReadinessDiscoveryFactSchema, agentReadinessRunKindSchema, agentReadinessRunRecordSchema, agentReadinessRunSummarySchema, agentReadinessStepResultSchema, } from "./run.js";
|
|
8
|
+
import { AGENT_READINESS_MAXIMUM_REVISION_RUNS, AGENT_READINESS_STEPS, agentReadinessCatalogBindingSchema, agentReadinessDigestSchema, agentReadinessEntityIdSchema, agentReadinessEvidenceLabelSchema, agentReadinessFreshnessSchema, agentReadinessHandoffTimingSchema, agentReadinessIdentifierSchema, agentReadinessInstantSchema, agentReadinessOfferIdSchema, agentReadinessOnboardLevelSchema, agentReadinessOperateLetterSchema, agentReadinessProfileIdSchema, agentReadinessScopeKeySchema, agentReadinessScopeSchema, agentReadinessStepOutcomeSchema, agentReadinessStepSchema, sameAgentReadinessScopeIdentity, } from "./shared.js";
|
|
9
|
+
export * from "./authority.js";
|
|
10
|
+
export * from "./binding.js";
|
|
11
11
|
export * from "./declaration.js";
|
|
12
12
|
export * from "./declaration-acquisition.js";
|
|
13
13
|
export * from "./declaration-reference.js";
|
|
14
|
-
export * from "./
|
|
15
|
-
export * from "./
|
|
16
|
-
export * from "./
|
|
14
|
+
export * from "./jobs.js";
|
|
15
|
+
export * from "./operate-policy.js";
|
|
16
|
+
export * from "./run.js";
|
|
17
17
|
export * from "./shared.js";
|
|
18
18
|
/** Canonical discriminant for a published Agent Readiness revision. */
|
|
19
19
|
export const agentReadinessRevisionContract = "sourcey.agent-readiness-revision/v1alpha1";
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
* JavaScript values, replacement characters, and a sentence whose interpolated
|
|
23
|
-
* value is missing. These disqualify a captured segment as evidence for a
|
|
24
|
-
* known finding and can never appear in a public claim.
|
|
25
|
-
*/
|
|
26
|
-
const unresolvedRenderingPatterns = [
|
|
27
|
-
/\bundefined\b/iu,
|
|
28
|
-
/\[object Object\]/u,
|
|
29
|
-
/\bNaN\b/u,
|
|
30
|
-
/\uFFFD/u,
|
|
31
|
-
/\b(?:amount|cost|currency|date|duration|fee|limit|number|percentage|period|price|quantity|rate|time|total|value)\s+(?:at|by|for|from|is|of|to|with)\s*[.,;:!?](?:\s|$)/iu,
|
|
32
|
-
];
|
|
33
|
-
/**
|
|
34
|
-
* Template syntax that must not reach a public claim, but is ordinary literal
|
|
35
|
-
* content in the documentation Sourcey assesses: vendors write
|
|
36
|
-
* `PINECONE_API_KEY="{{YOUR_API_KEY}}"` and `${{ secrets.GITHUB_TOKEN }}` as
|
|
37
|
-
* reader placeholders, and `${API_KEY}` is shell interpolation in every curl
|
|
38
|
-
* sample. A quote may carry them; a note may not. GitHub Actions expressions
|
|
39
|
-
* are excluded from the Mustache form because they are not template output.
|
|
40
|
-
*/
|
|
41
|
-
const unresolvedTemplatePatterns = [/(?<!\$)\{\{[^}]*\}\}/u, /<%[^%]*%>/u];
|
|
42
|
-
/** Rendering residue in a captured segment: the surface did not render. */
|
|
43
|
-
export function agentReadinessRenderingResidue(value) {
|
|
44
|
-
const text = value.trim();
|
|
45
|
-
return unresolvedRenderingPatterns.some((pattern) => pattern.test(text))
|
|
46
|
-
? "Captured evidence carries unresolved rendered content."
|
|
47
|
-
: null;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Finds deterministic evidence of unresolved runtime or interpolation residue
|
|
51
|
-
* in text that would otherwise become a public factual claim.
|
|
52
|
-
*/
|
|
53
|
-
export function agentReadinessPublicClaimResidue(value) {
|
|
54
|
-
const text = value.trim();
|
|
55
|
-
return [...unresolvedRenderingPatterns, ...unresolvedTemplatePatterns].some((pattern) => pattern.test(text))
|
|
56
|
-
? "Public Agent Readiness claims cannot contain unresolved rendered content."
|
|
57
|
-
: null;
|
|
58
|
-
}
|
|
59
|
-
/** The one bound on public claim text: observation notes, the fact response schema and its prompt share it. */
|
|
60
|
-
export const AGENT_READINESS_PUBLIC_CLAIM_TEXT_MAXIMUM_CHARACTERS = 500;
|
|
61
|
-
export const agentReadinessPublicClaimTextSchema = z
|
|
62
|
-
.string()
|
|
63
|
-
.trim()
|
|
64
|
-
.min(1)
|
|
65
|
-
.max(AGENT_READINESS_PUBLIC_CLAIM_TEXT_MAXIMUM_CHARACTERS)
|
|
66
|
-
.superRefine((value, context) => {
|
|
67
|
-
const issue = agentReadinessPublicClaimResidue(value);
|
|
68
|
-
if (issue)
|
|
69
|
-
context.addIssue({ code: "custom", message: issue });
|
|
70
|
-
});
|
|
71
|
-
export const agentReadinessSignalInputSchema = z
|
|
20
|
+
/** A run the revision rests on: the latest, and earlier ones a reproduced refusal needs. */
|
|
21
|
+
const agentReadinessRunReferenceSchema = z
|
|
72
22
|
.object({
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
observed_at: agentReadinessInstantSchema,
|
|
78
|
-
tested_surfaces: z.array(agentReadinessSurfaceReferenceSchema).min(1),
|
|
79
|
-
assessment_method: agentReadinessAssessmentMethodSchema,
|
|
80
|
-
determination_bases: z.array(agentReadinessDeterminationBasisSchema),
|
|
81
|
-
note: agentReadinessPublicClaimTextSchema.optional(),
|
|
23
|
+
run_digest: agentReadinessDigestSchema,
|
|
24
|
+
label: agentReadinessEvidenceLabelSchema,
|
|
25
|
+
run_kind: agentReadinessRunKindSchema,
|
|
26
|
+
finished_at: agentReadinessInstantSchema,
|
|
82
27
|
})
|
|
83
|
-
.strict()
|
|
84
|
-
|
|
85
|
-
assertUniqueSurfaceReferences(value.tested_surfaces, context, ["tested_surfaces"]);
|
|
86
|
-
if ((value.value === "unknown") !== (value.determination_bases.length === 0)) {
|
|
87
|
-
context.addIssue({
|
|
88
|
-
code: "custom",
|
|
89
|
-
path: ["determination_bases"],
|
|
90
|
-
message: "Every factual signal requires a determination basis; unknown signals cannot claim one.",
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
if (new Set(value.determination_bases.map((basis) => JSON.stringify(basis))).size !==
|
|
94
|
-
value.determination_bases.length) {
|
|
95
|
-
context.addIssue({
|
|
96
|
-
code: "custom",
|
|
97
|
-
path: ["determination_bases"],
|
|
98
|
-
message: "A signal cannot repeat a determination basis.",
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
for (const [index, basis] of value.determination_bases.entries()) {
|
|
102
|
-
if (basis.kind === "bounded_absence" &&
|
|
103
|
-
basis.covered_surfaces.some((covered) => !value.tested_surfaces.some((tested) => sameSurface(covered, tested)))) {
|
|
104
|
-
context.addIssue({
|
|
105
|
-
code: "custom",
|
|
106
|
-
path: ["determination_bases", index, "covered_surfaces"],
|
|
107
|
-
message: "Bounded absence must cover tested surfaces from the same signal.",
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
export const agentReadinessEvidenceBindingSchema = z
|
|
28
|
+
.strict();
|
|
29
|
+
export const agentReadinessEngineIdentitySchema = z
|
|
113
30
|
.object({
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
observation_ids: z.array(agentReadinessDigestSchema).min(1),
|
|
31
|
+
name: z.string().min(1).max(80),
|
|
32
|
+
version: z.string().min(1).max(80),
|
|
33
|
+
engine_digest: agentReadinessDigestSchema,
|
|
118
34
|
})
|
|
119
35
|
.strict();
|
|
120
36
|
const agentReadinessRevisionFields = {
|
|
@@ -127,17 +43,72 @@ const agentReadinessRevisionFields = {
|
|
|
127
43
|
lifecycle: lifecycleStatusSchema,
|
|
128
44
|
effective_from: agentReadinessInstantSchema,
|
|
129
45
|
effective_until: agentReadinessInstantSchema.optional(),
|
|
130
|
-
|
|
46
|
+
/** The exact library job the runs performed; a changed job needs new runs. */
|
|
47
|
+
job_digest: agentReadinessDigestSchema,
|
|
48
|
+
engine: agentReadinessEngineIdentitySchema,
|
|
49
|
+
/** The binding the rating rests on; null for a listing no binding has run yet. */
|
|
50
|
+
binding_id: agentReadinessScopeKeySchema.nullable(),
|
|
51
|
+
binding_digest: agentReadinessDigestSchema.nullable(),
|
|
52
|
+
/** Oldest first; the last is the run every step's outcome is read from. */
|
|
53
|
+
runs: z.array(agentReadinessRunReferenceSchema).min(1).max(AGENT_READINESS_MAXIMUM_REVISION_RUNS),
|
|
54
|
+
/** One result per step, in path order. */
|
|
55
|
+
steps: z.array(agentReadinessStepResultSchema).length(AGENT_READINESS_STEPS.length),
|
|
56
|
+
onboard_level: agentReadinessOnboardLevelSchema.nullable(),
|
|
57
|
+
/** What the latest run found on the service's own descriptors. */
|
|
58
|
+
discovery: z.array(agentReadinessDiscoveryFactSchema).max(64),
|
|
59
|
+
/** What the latest run asked and what came back, as the card shows it. */
|
|
60
|
+
latest_run: agentReadinessRunSummarySchema,
|
|
131
61
|
};
|
|
132
|
-
function
|
|
133
|
-
|
|
134
|
-
if (new Set(keys).size !== keys.length) {
|
|
62
|
+
function validateAgentReadinessRevision(value, context) {
|
|
63
|
+
if ((value.binding_id === null) !== (value.binding_digest === null)) {
|
|
135
64
|
context.addIssue({
|
|
136
65
|
code: "custom",
|
|
137
|
-
path: ["
|
|
138
|
-
message: "
|
|
66
|
+
path: ["binding_digest"],
|
|
67
|
+
message: "A revision names its binding and its digest together, or neither.",
|
|
139
68
|
});
|
|
140
69
|
}
|
|
70
|
+
if (value.binding_id === null &&
|
|
71
|
+
(value.onboard_level !== null || value.steps.some(({ outcome }) => outcome !== "not_assessed"))) {
|
|
72
|
+
context.addIssue({
|
|
73
|
+
code: "custom",
|
|
74
|
+
path: ["steps"],
|
|
75
|
+
message: "A listing no binding has run assesses no step and no Onboard level.",
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (value.latest_run.finished_at !== value.runs.at(-1)?.finished_at) {
|
|
79
|
+
context.addIssue({
|
|
80
|
+
code: "custom",
|
|
81
|
+
path: ["latest_run"],
|
|
82
|
+
message: "A revision summarises its latest run.",
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (value.steps.some(({ step }, index) => step !== AGENT_READINESS_STEPS[index])) {
|
|
86
|
+
context.addIssue({
|
|
87
|
+
code: "custom",
|
|
88
|
+
path: ["steps"],
|
|
89
|
+
message: "A revision lists one result per step, in path order.",
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
const digests = value.runs.map(({ run_digest }) => run_digest);
|
|
93
|
+
if (new Set(digests).size !== digests.length ||
|
|
94
|
+
value.runs.some((run, index) => index > 0 &&
|
|
95
|
+
Date.parse(run.finished_at) < Date.parse(value.runs[index - 1]?.finished_at ?? ""))) {
|
|
96
|
+
context.addIssue({
|
|
97
|
+
code: "custom",
|
|
98
|
+
path: ["runs"],
|
|
99
|
+
message: "A revision's runs are unique and ordered oldest first.",
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
const runs = new Set(digests);
|
|
103
|
+
for (const [index, step] of value.steps.entries()) {
|
|
104
|
+
if (step.evidence.some(({ run_digest }) => !runs.has(run_digest))) {
|
|
105
|
+
context.addIssue({
|
|
106
|
+
code: "custom",
|
|
107
|
+
path: ["steps", index, "evidence"],
|
|
108
|
+
message: "Step evidence rests only on the revision's own runs.",
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
141
112
|
if (value.effective_until &&
|
|
142
113
|
Date.parse(value.effective_until) <= Date.parse(value.effective_from)) {
|
|
143
114
|
context.addIssue({
|
|
@@ -147,24 +118,39 @@ function validateAgentReadinessProfile(value, context) {
|
|
|
147
118
|
});
|
|
148
119
|
}
|
|
149
120
|
}
|
|
121
|
+
/** A revision's exact input: its fields and the run records they rest on, oldest first. */
|
|
150
122
|
export const agentReadinessProfileInputSchema = z
|
|
151
123
|
.object({
|
|
152
124
|
input_contract: z.literal("sourcey.agent-readiness-input/v1alpha1"),
|
|
153
125
|
...agentReadinessRevisionFields,
|
|
154
|
-
|
|
126
|
+
run_records: z
|
|
127
|
+
.array(agentReadinessRunRecordSchema)
|
|
128
|
+
.min(1)
|
|
129
|
+
.max(AGENT_READINESS_MAXIMUM_REVISION_RUNS),
|
|
155
130
|
})
|
|
156
131
|
.strict()
|
|
157
132
|
.superRefine((value, context) => {
|
|
158
|
-
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
133
|
+
validateAgentReadinessRevision(value, context);
|
|
134
|
+
const records = value.run_records;
|
|
135
|
+
if (records.length !== value.runs.length ||
|
|
136
|
+
records.some((record, index) => {
|
|
137
|
+
const reference = value.runs[index];
|
|
138
|
+
return (!reference ||
|
|
139
|
+
record.run_digest !== reference.run_digest ||
|
|
140
|
+
record.label !== reference.label ||
|
|
141
|
+
record.run_kind !== reference.run_kind ||
|
|
142
|
+
record.finished_at !== reference.finished_at ||
|
|
143
|
+
record.entity_id !== value.entity_id ||
|
|
144
|
+
record.product_key !== value.scope.product.key ||
|
|
145
|
+
record.job_id !== value.scope.job.key ||
|
|
146
|
+
record.binding_id !== value.binding_id ||
|
|
147
|
+
record.binding_digest !== value.binding_digest ||
|
|
148
|
+
record.job_digest !== value.job_digest);
|
|
149
|
+
})) {
|
|
150
|
+
context.addIssue({
|
|
151
|
+
code: "custom",
|
|
152
|
+
path: ["run_records"],
|
|
153
|
+
message: "Each run record is exactly the run its revision names, for this profile.",
|
|
168
154
|
});
|
|
169
155
|
}
|
|
170
156
|
});
|
|
@@ -174,7 +160,6 @@ export const agentReadinessOfferRelationInputSchema = z
|
|
|
174
160
|
agent_readiness_profile_id: agentReadinessProfileIdSchema,
|
|
175
161
|
offer_id: agentReadinessOfferIdSchema,
|
|
176
162
|
purpose: agentReadinessOfferRelationPurposeSchema,
|
|
177
|
-
applicable_stages: z.array(agentReadinessStageSchema).min(1),
|
|
178
163
|
effective_from: agentReadinessInstantSchema,
|
|
179
164
|
effective_until: agentReadinessInstantSchema.optional(),
|
|
180
165
|
declaration_revision_digest: agentReadinessDigestSchema,
|
|
@@ -182,16 +167,7 @@ export const agentReadinessOfferRelationInputSchema = z
|
|
|
182
167
|
admitted_offer_revision_digest: agentReadinessDigestSchema,
|
|
183
168
|
})
|
|
184
169
|
.strict()
|
|
185
|
-
.superRefine(
|
|
186
|
-
if (new Set(value.applicable_stages).size !== value.applicable_stages.length) {
|
|
187
|
-
context.addIssue({
|
|
188
|
-
code: "custom",
|
|
189
|
-
path: ["applicable_stages"],
|
|
190
|
-
message: "Offer relation input stages must be unique.",
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
validateOfferRelationInterval(value, context);
|
|
194
|
-
});
|
|
170
|
+
.superRefine(validateOfferRelationInterval);
|
|
195
171
|
export const agentReadinessProfileReleaseInputSchema = z
|
|
196
172
|
.object({
|
|
197
173
|
release_input_contract: z.literal("sourcey.agent-readiness-release-input/v1alpha1"),
|
|
@@ -230,27 +206,20 @@ export const agentReadinessProfileReleaseInputSchema = z
|
|
|
230
206
|
});
|
|
231
207
|
}
|
|
232
208
|
});
|
|
233
|
-
export const agentReadinessFactualInputSchema = z
|
|
234
|
-
.object({
|
|
235
|
-
factual_input_contract: z.literal("sourcey.agent-readiness-factual-input/v1alpha1"),
|
|
236
|
-
...agentReadinessRevisionFields,
|
|
237
|
-
})
|
|
238
|
-
.strict()
|
|
239
|
-
.superRefine(validateAgentReadinessProfile);
|
|
240
209
|
export const agentReadinessRevisionCoreSchema = z
|
|
241
210
|
.object({
|
|
242
211
|
revision_contract: z.literal(agentReadinessRevisionContract),
|
|
243
212
|
...agentReadinessRevisionFields,
|
|
244
213
|
})
|
|
245
214
|
.strict()
|
|
246
|
-
.superRefine(
|
|
215
|
+
.superRefine(validateAgentReadinessRevision);
|
|
247
216
|
export const agentReadinessRevisionSchema = agentReadinessRevisionCoreSchema
|
|
248
217
|
.safeExtend({ revision_digest: agentReadinessDigestSchema })
|
|
249
218
|
.strict();
|
|
250
219
|
/**
|
|
251
220
|
* Stable head identity for closure and ownership checks. Historical Agent
|
|
252
221
|
* Readiness revision bodies remain opaque and are never reparsed through the
|
|
253
|
-
* current
|
|
222
|
+
* current contract.
|
|
254
223
|
*/
|
|
255
224
|
export const agentReadinessRevisionHeadSchema = z.object({
|
|
256
225
|
revision_contract: z.literal(agentReadinessRevisionContract),
|
|
@@ -258,658 +227,37 @@ export const agentReadinessRevisionHeadSchema = z.object({
|
|
|
258
227
|
entity_id: agentReadinessEntityIdSchema,
|
|
259
228
|
revision_digest: agentReadinessDigestSchema,
|
|
260
229
|
});
|
|
261
|
-
const
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
})
|
|
266
|
-
.strict();
|
|
267
|
-
const publicFindingByValueSchema = z
|
|
268
|
-
.object({
|
|
269
|
-
yes: publicFindingSchema,
|
|
270
|
-
no: publicFindingSchema,
|
|
271
|
-
partial: publicFindingSchema,
|
|
272
|
-
unknown: publicFindingSchema,
|
|
273
|
-
not_applicable: publicFindingSchema,
|
|
274
|
-
})
|
|
275
|
-
.strict();
|
|
276
|
-
const standardEvidenceSupportSchema = z
|
|
277
|
-
.object({
|
|
278
|
-
result: z.enum(["satisfied", "not_satisfied"]),
|
|
279
|
-
values: z.array(agentReadinessSignalValueSchema.exclude(["unknown"])).min(1),
|
|
280
|
-
})
|
|
281
|
-
.strict()
|
|
282
|
-
.superRefine((value, context) => {
|
|
283
|
-
if (new Set(value.values).size !== value.values.length) {
|
|
284
|
-
context.addIssue({
|
|
285
|
-
code: "custom",
|
|
286
|
-
path: ["values"],
|
|
287
|
-
message: "Standard evidence support values must be unique.",
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
});
|
|
291
|
-
const agentReadinessSurfaceSelectorSchema = z.discriminatedUnion("kind", [
|
|
292
|
-
z
|
|
293
|
-
.object({
|
|
294
|
-
kind: z.literal("resource_role"),
|
|
295
|
-
roles: z.array(agentReadinessResourceRoleSchema).min(1),
|
|
296
|
-
})
|
|
297
|
-
.strict(),
|
|
298
|
-
z
|
|
299
|
-
.object({
|
|
300
|
-
kind: z.literal("endpoint_role"),
|
|
301
|
-
roles: z.array(agentReadinessEndpointRoleSchema).min(1),
|
|
302
|
-
})
|
|
303
|
-
.strict(),
|
|
304
|
-
z
|
|
305
|
-
.object({
|
|
306
|
-
kind: z.literal("interface_signature"),
|
|
307
|
-
modalities: z.array(agentReadinessInterfaceModalitySchema).min(1),
|
|
308
|
-
functions: z.array(agentReadinessInterfaceFunctionSchema).min(1),
|
|
309
|
-
})
|
|
310
|
-
.strict(),
|
|
311
|
-
z
|
|
312
|
-
.object({
|
|
313
|
-
kind: z.literal("assessment_target_membership"),
|
|
314
|
-
membership: z.enum(["direct", "reachable", "selected_path"]),
|
|
315
|
-
})
|
|
316
|
-
.strict(),
|
|
317
|
-
z
|
|
318
|
-
.object({
|
|
319
|
-
kind: z.literal("target_relation"),
|
|
320
|
-
relation_kind: agentReadinessSurfaceRelationKindSchema,
|
|
321
|
-
direction: z.enum(["from_target", "to_target"]),
|
|
322
|
-
})
|
|
323
|
-
.strict(),
|
|
324
|
-
z
|
|
325
|
-
.object({
|
|
326
|
-
kind: z.literal("standard_requirement"),
|
|
327
|
-
requirement: standardRequirementReferenceSchema,
|
|
328
|
-
})
|
|
329
|
-
.strict(),
|
|
230
|
+
export const agentReadinessPublicationVisibilitySchema = z.enum([
|
|
231
|
+
"discoverable",
|
|
232
|
+
"resolvable_only",
|
|
233
|
+
"private",
|
|
330
234
|
]);
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
alternative_id: agentReadinessIdentifierSchema,
|
|
334
|
-
selectors: z.array(agentReadinessSurfaceSelectorSchema).min(1),
|
|
335
|
-
})
|
|
336
|
-
.strict()
|
|
337
|
-
.superRefine((value, context) => {
|
|
338
|
-
if (new Set(value.selectors.map((selector) => JSON.stringify(selector))).size !==
|
|
339
|
-
value.selectors.length) {
|
|
340
|
-
context.addIssue({
|
|
341
|
-
code: "custom",
|
|
342
|
-
path: ["selectors"],
|
|
343
|
-
message: "A surface selector alternative cannot repeat a predicate.",
|
|
344
|
-
});
|
|
345
|
-
}
|
|
346
|
-
});
|
|
347
|
-
export const agentReadinessSurfaceSelectorGroupSchema = z
|
|
348
|
-
.object({
|
|
349
|
-
selector_group_id: agentReadinessIdentifierSchema,
|
|
350
|
-
coverage: z.enum(["at_least_one", "all_matches"]),
|
|
351
|
-
alternatives: z.array(agentReadinessSurfaceSelectorAlternativeSchema).min(1),
|
|
352
|
-
})
|
|
353
|
-
.strict()
|
|
354
|
-
.superRefine((value, context) => {
|
|
355
|
-
const ids = value.alternatives.map((alternative) => alternative.alternative_id);
|
|
356
|
-
if (new Set(ids).size !== ids.length) {
|
|
357
|
-
context.addIssue({
|
|
358
|
-
code: "custom",
|
|
359
|
-
path: ["alternatives"],
|
|
360
|
-
message: "Surface selector alternative IDs must be unique within a group.",
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
});
|
|
364
|
-
const agentReadinessValueEvidenceRuleSchema = z
|
|
365
|
-
.object({
|
|
366
|
-
value: agentReadinessSignalValueSchema.exclude(["unknown"]),
|
|
367
|
-
alternatives: z.array(agentReadinessCorroborationAlternativeSchema).min(1),
|
|
368
|
-
})
|
|
369
|
-
.strict()
|
|
370
|
-
.superRefine((value, context) => {
|
|
371
|
-
const ids = value.alternatives.map((alternative) => alternative.alternative_id);
|
|
372
|
-
if (new Set(ids).size !== ids.length) {
|
|
373
|
-
context.addIssue({
|
|
374
|
-
code: "custom",
|
|
375
|
-
path: ["alternatives"],
|
|
376
|
-
message: "Corroboration alternative IDs must be unique for one signal value.",
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
});
|
|
380
|
-
export const agentReadinessStandardEvidenceMappingSchema = z
|
|
381
|
-
.object({
|
|
382
|
-
requirement: standardRequirementReferenceSchema,
|
|
383
|
-
support: z.array(standardEvidenceSupportSchema).min(1).max(2),
|
|
384
|
-
})
|
|
385
|
-
.strict()
|
|
386
|
-
.superRefine((value, context) => {
|
|
387
|
-
if (value.requirement.relation !== "tests") {
|
|
388
|
-
context.addIssue({
|
|
389
|
-
code: "custom",
|
|
390
|
-
path: ["requirement", "relation"],
|
|
391
|
-
message: "Standard evidence mappings must test an exact requirement.",
|
|
392
|
-
});
|
|
393
|
-
}
|
|
394
|
-
if (new Set(value.support.map((mapping) => mapping.result)).size !== value.support.length) {
|
|
395
|
-
context.addIssue({
|
|
396
|
-
code: "custom",
|
|
397
|
-
path: ["support"],
|
|
398
|
-
message: "A standard result may appear only once per requirement mapping.",
|
|
399
|
-
});
|
|
400
|
-
}
|
|
401
|
-
});
|
|
402
|
-
export const agentReadinessPolicySignalRuleSchema = z
|
|
403
|
-
.object({
|
|
404
|
-
stage: agentReadinessStageSchema,
|
|
405
|
-
signal_code: agentReadinessSignalCodeSchema,
|
|
406
|
-
evaluation_role: agentReadinessEvaluationRoleSchema,
|
|
407
|
-
required: z.boolean(),
|
|
408
|
-
pass_values: z.array(agentReadinessSignalValueSchema).min(1),
|
|
409
|
-
constrained_values: z.array(agentReadinessSignalValueSchema),
|
|
410
|
-
fail_values: z.array(agentReadinessSignalValueSchema),
|
|
411
|
-
allow_not_applicable: z.boolean(),
|
|
412
|
-
allowed_method_digests: z.array(agentReadinessDigestSchema).min(1),
|
|
413
|
-
selector_groups: z.array(agentReadinessSurfaceSelectorGroupSchema).min(1),
|
|
414
|
-
evidence_terms: z
|
|
415
|
-
.array(z.string().regex(/^[a-z0-9][a-z0-9 .+/_:-]*[a-z0-9+]$/u))
|
|
416
|
-
.min(1)
|
|
417
|
-
.optional(),
|
|
418
|
-
value_evidence: z.array(agentReadinessValueEvidenceRuleSchema).min(1),
|
|
419
|
-
priority: z.number().int().nonnegative(),
|
|
420
|
-
blocker: z
|
|
421
|
-
.object({
|
|
422
|
-
code: z.string().min(1).max(160),
|
|
423
|
-
explanation: z.string().min(1).max(500),
|
|
424
|
-
})
|
|
425
|
-
.strict()
|
|
426
|
-
.optional(),
|
|
427
|
-
remediation: z
|
|
428
|
-
.object({
|
|
429
|
-
code: z.string().min(1).max(160),
|
|
430
|
-
instruction: z.string().min(1).max(500),
|
|
431
|
-
})
|
|
432
|
-
.strict()
|
|
433
|
-
.optional(),
|
|
434
|
-
fact_question: z.string().min(1).max(240),
|
|
435
|
-
fact_predicates: z
|
|
436
|
-
.object({
|
|
437
|
-
yes: z.string().min(1).max(800),
|
|
438
|
-
partial: z.string().min(1).max(800),
|
|
439
|
-
no: z.string().min(1).max(800),
|
|
440
|
-
unknown: z.string().min(1).max(800),
|
|
441
|
-
not_applicable: z.string().min(1).max(800),
|
|
442
|
-
})
|
|
443
|
-
.strict(),
|
|
444
|
-
public_findings: publicFindingByValueSchema,
|
|
445
|
-
external_references: z.array(standardRequirementReferenceSchema),
|
|
446
|
-
standard_evidence: z.array(agentReadinessStandardEvidenceMappingSchema),
|
|
447
|
-
})
|
|
448
|
-
.strict()
|
|
449
|
-
.superRefine((value, context) => {
|
|
450
|
-
if (value.evidence_terms &&
|
|
451
|
-
new Set(value.evidence_terms).size !== value.evidence_terms.length) {
|
|
452
|
-
context.addIssue({
|
|
453
|
-
code: "custom",
|
|
454
|
-
path: ["evidence_terms"],
|
|
455
|
-
message: "Evidence retrieval terms must be unique within a signal rule.",
|
|
456
|
-
});
|
|
457
|
-
}
|
|
458
|
-
const assignments = [...value.pass_values, ...value.constrained_values, ...value.fail_values];
|
|
459
|
-
if (new Set(assignments).size !== assignments.length) {
|
|
460
|
-
context.addIssue({
|
|
461
|
-
code: "custom",
|
|
462
|
-
message: "An agent readiness signal value can map to only one outcome.",
|
|
463
|
-
});
|
|
464
|
-
}
|
|
465
|
-
if (assignments.includes("not_applicable") !== value.allow_not_applicable) {
|
|
466
|
-
context.addIssue({
|
|
467
|
-
code: "custom",
|
|
468
|
-
path: ["allow_not_applicable"],
|
|
469
|
-
message: "not_applicable must be explicitly allowed and mapped.",
|
|
470
|
-
});
|
|
471
|
-
}
|
|
472
|
-
if (assignments.includes("unknown")) {
|
|
473
|
-
context.addIssue({
|
|
474
|
-
code: "custom",
|
|
475
|
-
message: "unknown is an unevaluated result and cannot be mapped to an outcome.",
|
|
476
|
-
});
|
|
477
|
-
}
|
|
478
|
-
const expected = value.allow_not_applicable
|
|
479
|
-
? ["yes", "no", "partial", "not_applicable"]
|
|
480
|
-
: ["yes", "no", "partial"];
|
|
481
|
-
if (expected.some((candidate) => !assignments.includes(candidate)) ||
|
|
482
|
-
assignments.some((candidate) => !expected.includes(candidate))) {
|
|
483
|
-
context.addIssue({
|
|
484
|
-
code: "custom",
|
|
485
|
-
message: "Each assessable signal value must map to exactly one policy outcome.",
|
|
486
|
-
});
|
|
487
|
-
}
|
|
488
|
-
if (new Set(value.allowed_method_digests).size !== value.allowed_method_digests.length) {
|
|
489
|
-
context.addIssue({
|
|
490
|
-
code: "custom",
|
|
491
|
-
path: ["allowed_method_digests"],
|
|
492
|
-
message: "Allowed Agent Readiness method digests must be unique.",
|
|
493
|
-
});
|
|
494
|
-
}
|
|
495
|
-
const selectorGroupIds = value.selector_groups.map((group) => group.selector_group_id);
|
|
496
|
-
if (new Set(selectorGroupIds).size !== selectorGroupIds.length) {
|
|
497
|
-
context.addIssue({
|
|
498
|
-
code: "custom",
|
|
499
|
-
path: ["selector_groups"],
|
|
500
|
-
message: "Signal selector group IDs must be unique.",
|
|
501
|
-
});
|
|
502
|
-
}
|
|
503
|
-
const evidenceValues = value.value_evidence.map((evidence) => evidence.value);
|
|
504
|
-
if (new Set(evidenceValues).size !== evidenceValues.length ||
|
|
505
|
-
evidenceValues.length !== assignments.length ||
|
|
506
|
-
assignments.some((assignment) => assignment === "unknown" || !evidenceValues.includes(assignment))) {
|
|
507
|
-
context.addIssue({
|
|
508
|
-
code: "custom",
|
|
509
|
-
path: ["value_evidence"],
|
|
510
|
-
message: "Every assessable signal value requires exactly one evidence rule.",
|
|
511
|
-
});
|
|
512
|
-
}
|
|
513
|
-
const mappingKeys = value.standard_evidence.map(({ requirement }) => standardRequirementKey(requirement));
|
|
514
|
-
if (new Set(mappingKeys).size !== mappingKeys.length) {
|
|
515
|
-
context.addIssue({
|
|
516
|
-
code: "custom",
|
|
517
|
-
path: ["standard_evidence"],
|
|
518
|
-
message: "A signal rule cannot repeat an external standard requirement mapping.",
|
|
519
|
-
});
|
|
520
|
-
}
|
|
521
|
-
const testedReferenceKeys = value.external_references
|
|
522
|
-
.filter((reference) => reference.relation === "tests")
|
|
523
|
-
.map(standardRequirementKey);
|
|
524
|
-
if (testedReferenceKeys.length !== mappingKeys.length ||
|
|
525
|
-
testedReferenceKeys.some((key) => !mappingKeys.includes(key))) {
|
|
526
|
-
context.addIssue({
|
|
527
|
-
code: "custom",
|
|
528
|
-
path: ["standard_evidence"],
|
|
529
|
-
message: "Every tests reference must have exactly one policy-owned standard evidence mapping.",
|
|
530
|
-
});
|
|
531
|
-
}
|
|
532
|
-
const assessableValues = new Set(assignments);
|
|
533
|
-
if (value.standard_evidence.some((mapping) => mapping.support.some((support) => support.values.some((candidate) => !assessableValues.has(candidate))))) {
|
|
534
|
-
context.addIssue({
|
|
535
|
-
code: "custom",
|
|
536
|
-
path: ["standard_evidence"],
|
|
537
|
-
message: "Standard evidence can support only values assessed by the same signal rule.",
|
|
538
|
-
});
|
|
539
|
-
}
|
|
540
|
-
if (value.evaluation_role === "informational") {
|
|
541
|
-
if (value.required || value.blocker !== undefined || value.remediation !== undefined) {
|
|
542
|
-
context.addIssue({
|
|
543
|
-
code: "custom",
|
|
544
|
-
message: "Informational signals must be optional and cannot own blockers or remediation.",
|
|
545
|
-
});
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
if (value.evaluation_role === "barrier" && value.required) {
|
|
549
|
-
context.addIssue({
|
|
550
|
-
code: "custom",
|
|
551
|
-
path: ["required"],
|
|
552
|
-
message: "Barrier signals are assessed but cannot be required for core coverage.",
|
|
553
|
-
});
|
|
554
|
-
}
|
|
555
|
-
if (value.fail_values.length > 0 &&
|
|
556
|
-
value.evaluation_role !== "informational" &&
|
|
557
|
-
!value.blocker) {
|
|
558
|
-
context.addIssue({
|
|
559
|
-
code: "custom",
|
|
560
|
-
path: ["blocker"],
|
|
561
|
-
message: "A failing readiness signal requires a blocker explanation.",
|
|
562
|
-
});
|
|
563
|
-
}
|
|
564
|
-
if ((value.constrained_values.length > 0 || value.fail_values.length > 0) &&
|
|
565
|
-
value.evaluation_role !== "informational" &&
|
|
566
|
-
!value.remediation) {
|
|
567
|
-
context.addIssue({
|
|
568
|
-
code: "custom",
|
|
569
|
-
path: ["remediation"],
|
|
570
|
-
message: "A constrained or failing readiness signal requires remediation.",
|
|
571
|
-
});
|
|
572
|
-
}
|
|
573
|
-
});
|
|
574
|
-
function standardRequirementKey(value) {
|
|
575
|
-
return `${value.namespace}\u0000${value.version}\u0000${value.requirement_id}`;
|
|
576
|
-
}
|
|
577
|
-
const stageOutcomePrecedenceSchema = z
|
|
578
|
-
.array(agentReadinessStageOutcomeSchema)
|
|
579
|
-
.length(agentReadinessStageOutcomeSchema.options.length)
|
|
580
|
-
.superRefine((value, context) => {
|
|
581
|
-
if (new Set(value).size !== agentReadinessStageOutcomeSchema.options.length ||
|
|
582
|
-
agentReadinessStageOutcomeSchema.options.some((outcome) => !value.includes(outcome))) {
|
|
583
|
-
context.addIssue({
|
|
584
|
-
code: "custom",
|
|
585
|
-
message: "Agent readiness outcome precedence must contain every outcome exactly once.",
|
|
586
|
-
});
|
|
587
|
-
}
|
|
588
|
-
});
|
|
589
|
-
const publicStateDescriptorSchema = z
|
|
590
|
-
.object({
|
|
591
|
-
state: agentReadinessPublicStateSchema,
|
|
592
|
-
label: z.string().min(1).max(40),
|
|
593
|
-
})
|
|
594
|
-
.strict();
|
|
595
|
-
const agentReadinessGradingSchema = z
|
|
596
|
-
.object({
|
|
597
|
-
strategy: z.literal("stage-state-cardinality"),
|
|
598
|
-
grade_by_limited_stage_count: z
|
|
599
|
-
.object({
|
|
600
|
-
"0": z.literal("A+"),
|
|
601
|
-
"1": z.literal("A"),
|
|
602
|
-
"2": z.literal("B+"),
|
|
603
|
-
"3": z.literal("B"),
|
|
604
|
-
"4": z.literal("C+"),
|
|
605
|
-
"5": z.literal("C"),
|
|
606
|
-
})
|
|
607
|
-
.strict(),
|
|
608
|
-
failure_grade_by_stage: z
|
|
609
|
-
.object({
|
|
610
|
-
evaluate: z.literal("D"),
|
|
611
|
-
sign_up: z.literal("D"),
|
|
612
|
-
pay: z.literal("D"),
|
|
613
|
-
provision: z.literal("F"),
|
|
614
|
-
operate: z.literal("F"),
|
|
615
|
-
})
|
|
616
|
-
.strict(),
|
|
617
|
-
unverified_barrier_grade_cap: z.literal("B+").optional(),
|
|
618
|
-
unobserved_operation_grade_cap: z.literal("B+"),
|
|
619
|
-
not_applicable_signals: z.literal("excluded"),
|
|
620
|
-
unrated_when: z
|
|
621
|
-
.object({
|
|
622
|
-
coverage: z.literal("not-complete"),
|
|
623
|
-
freshness: z.literal("not-fresh"),
|
|
624
|
-
except: z.literal("fresh-supported-essential-failure"),
|
|
625
|
-
})
|
|
626
|
-
.strict(),
|
|
627
|
-
})
|
|
628
|
-
.strict();
|
|
629
|
-
export const agentReadinessAssessmentBasisSchema = z
|
|
630
|
-
.object({
|
|
631
|
-
principal: z.literal("authorized_human_or_organization"),
|
|
632
|
-
initial_state: z
|
|
633
|
-
.object({
|
|
634
|
-
product_specific_account: z.literal(false),
|
|
635
|
-
product_credentials: z.literal(false),
|
|
636
|
-
paid_subscription: z.literal(false),
|
|
637
|
-
provisioned_resource: z.literal(false),
|
|
638
|
-
external_identity: z.literal("only_when_declared_by_exact_funnel"),
|
|
639
|
-
})
|
|
640
|
-
.strict(),
|
|
641
|
-
permitted_human_boundaries: z.array(z.enum([
|
|
642
|
-
"account_ownership_confirmation",
|
|
643
|
-
"delegated_identity_consent",
|
|
644
|
-
"regulated_approval",
|
|
645
|
-
"final_payment_or_irreversible_commitment",
|
|
646
|
-
])),
|
|
647
|
-
required_handoff_properties: z.array(z.enum(["exact_disclosure", "resumable_handoff", "deterministic_continuation"])),
|
|
648
|
-
forbidden_substitutions: z.array(z.enum([
|
|
649
|
-
"captcha_solving",
|
|
650
|
-
"human_password_or_session_sharing",
|
|
651
|
-
"concealed_agent_identity",
|
|
652
|
-
"invented_eligibility",
|
|
653
|
-
"unbound_out_of_band_code",
|
|
654
|
-
"vendor_policy_bypass",
|
|
655
|
-
"unapproved_consequential_action",
|
|
656
|
-
])),
|
|
657
|
-
success: z
|
|
658
|
-
.object({
|
|
659
|
-
target_coverage: z.literal("every_declared_target"),
|
|
660
|
-
interface_coverage: z.enum([
|
|
661
|
-
"at_least_one_declared_alternative",
|
|
662
|
-
"one_selected_interface_per_target",
|
|
663
|
-
]),
|
|
664
|
-
authority: z.literal("scoped"),
|
|
665
|
-
failure_semantics: z.literal("documented"),
|
|
666
|
-
recovery: z.literal("supported"),
|
|
667
|
-
})
|
|
668
|
-
.strict(),
|
|
669
|
-
observed_assessment: z
|
|
670
|
-
.object({
|
|
671
|
-
allowed_sources: z.array(z.enum([
|
|
672
|
-
"public_documentation",
|
|
673
|
-
"public_metadata",
|
|
674
|
-
"public_endpoints",
|
|
675
|
-
"non_mutating_interaction",
|
|
676
|
-
"operator_attested_public_observation",
|
|
677
|
-
])),
|
|
678
|
-
consequential_claims: z.literal("certification_required"),
|
|
679
|
-
})
|
|
680
|
-
.strict(),
|
|
681
|
-
})
|
|
682
|
-
.strict()
|
|
683
|
-
.superRefine((value, context) => {
|
|
684
|
-
for (const key of [
|
|
685
|
-
"permitted_human_boundaries",
|
|
686
|
-
"required_handoff_properties",
|
|
687
|
-
"forbidden_substitutions",
|
|
688
|
-
]) {
|
|
689
|
-
if (new Set(value[key]).size !== value[key].length) {
|
|
690
|
-
context.addIssue({
|
|
691
|
-
code: "custom",
|
|
692
|
-
path: [key],
|
|
693
|
-
message: `Assessment basis ${key} must be unique.`,
|
|
694
|
-
});
|
|
695
|
-
}
|
|
696
|
-
}
|
|
697
|
-
if (new Set(value.observed_assessment.allowed_sources).size !==
|
|
698
|
-
value.observed_assessment.allowed_sources.length) {
|
|
699
|
-
context.addIssue({
|
|
700
|
-
code: "custom",
|
|
701
|
-
path: ["observed_assessment", "allowed_sources"],
|
|
702
|
-
message: "Assessment basis allowed sources must be unique.",
|
|
703
|
-
});
|
|
704
|
-
}
|
|
705
|
-
});
|
|
706
|
-
export const agentReadinessPolicyCoreSchema = z
|
|
707
|
-
.object({
|
|
708
|
-
policy_contract: z.literal("sourcey.agent-readiness-policy/v1alpha1"),
|
|
709
|
-
policy_version: z.string().min(1),
|
|
710
|
-
assessment_basis: agentReadinessAssessmentBasisSchema,
|
|
711
|
-
assessment_methods: z.array(agentReadinessAssessmentMethodPackSchema).min(1),
|
|
712
|
-
signal_rules: z.array(agentReadinessPolicySignalRuleSchema).min(1),
|
|
713
|
-
aggregation: z
|
|
714
|
-
.object({
|
|
715
|
-
stage: z.literal("worst-signal"),
|
|
716
|
-
overall: z.literal("worst-stage"),
|
|
717
|
-
outcome_precedence: stageOutcomePrecedenceSchema,
|
|
718
|
-
blocker_precedence: z.literal("outcome-then-rule-priority"),
|
|
719
|
-
tie_breaker: z.literal("signal-code"),
|
|
720
|
-
})
|
|
721
|
-
.strict(),
|
|
722
|
-
coverage: z
|
|
723
|
-
.object({
|
|
724
|
-
unknown_signals: z.literal("uncovered"),
|
|
725
|
-
contradicted_signals: z.literal("uncovered"),
|
|
726
|
-
})
|
|
727
|
-
.strict(),
|
|
728
|
-
freshness: z
|
|
729
|
-
.object({
|
|
730
|
-
source: z.literal("observation-freshness-policy"),
|
|
731
|
-
aggregation: z.enum(["worst-required-signal", "worst-evaluated-signal", "worst-signal"]),
|
|
732
|
-
})
|
|
733
|
-
.strict(),
|
|
734
|
-
public_states: z
|
|
735
|
-
.object({
|
|
736
|
-
pass: publicStateDescriptorSchema,
|
|
737
|
-
constrained: publicStateDescriptorSchema,
|
|
738
|
-
fail: publicStateDescriptorSchema,
|
|
739
|
-
unknown: publicStateDescriptorSchema,
|
|
740
|
-
not_applicable: publicStateDescriptorSchema,
|
|
741
|
-
})
|
|
742
|
-
.strict(),
|
|
743
|
-
grading: agentReadinessGradingSchema,
|
|
744
|
-
grade_derivation: z
|
|
745
|
-
.object({
|
|
746
|
-
label: z.string().min(1).max(80),
|
|
747
|
-
explanation: z.string().min(1).max(500),
|
|
748
|
-
coverage_rule: z.string().min(1).max(280),
|
|
749
|
-
outcome_rule: z.string().min(1).max(280),
|
|
750
|
-
})
|
|
751
|
-
.strict(),
|
|
752
|
-
})
|
|
753
|
-
.strict()
|
|
754
|
-
.superRefine((value, context) => {
|
|
755
|
-
const keys = value.signal_rules.map((rule) => `${rule.stage}:${rule.signal_code}`);
|
|
756
|
-
if (new Set(keys).size !== keys.length) {
|
|
757
|
-
context.addIssue({
|
|
758
|
-
code: "custom",
|
|
759
|
-
path: ["signal_rules"],
|
|
760
|
-
message: "An agent readiness policy cannot repeat a stage signal rule.",
|
|
761
|
-
});
|
|
762
|
-
}
|
|
763
|
-
const priorities = value.signal_rules.map((rule) => `${rule.stage}:${rule.priority}`);
|
|
764
|
-
if (new Set(priorities).size !== priorities.length) {
|
|
765
|
-
context.addIssue({
|
|
766
|
-
code: "custom",
|
|
767
|
-
path: ["signal_rules"],
|
|
768
|
-
message: "Agent readiness rule priorities must be unique within each stage.",
|
|
769
|
-
});
|
|
770
|
-
}
|
|
771
|
-
const methodDigests = new Set(value.assessment_methods.map((method) => method.method_digest));
|
|
772
|
-
if (methodDigests.size !== value.assessment_methods.length) {
|
|
773
|
-
context.addIssue({
|
|
774
|
-
code: "custom",
|
|
775
|
-
path: ["assessment_methods"],
|
|
776
|
-
message: "Agent readiness policy method digests must be unique.",
|
|
777
|
-
});
|
|
778
|
-
}
|
|
779
|
-
for (const [index, rule] of value.signal_rules.entries()) {
|
|
780
|
-
for (const methodDigest of rule.allowed_method_digests) {
|
|
781
|
-
if (!methodDigests.has(methodDigest)) {
|
|
782
|
-
context.addIssue({
|
|
783
|
-
code: "custom",
|
|
784
|
-
path: ["signal_rules", index, "allowed_method_digests"],
|
|
785
|
-
message: `Agent readiness signal rule references unresolved method ${methodDigest}.`,
|
|
786
|
-
});
|
|
787
|
-
}
|
|
788
|
-
}
|
|
789
|
-
if (rule.evaluation_role === "graded" && !rule.required) {
|
|
790
|
-
context.addIssue({
|
|
791
|
-
code: "custom",
|
|
792
|
-
path: ["signal_rules", index, "required"],
|
|
793
|
-
message: "Every graded Agent Readiness signal is required for coverage.",
|
|
794
|
-
});
|
|
795
|
-
}
|
|
796
|
-
if (rule.evaluation_role === "informational" && rule.required) {
|
|
797
|
-
context.addIssue({
|
|
798
|
-
code: "custom",
|
|
799
|
-
path: ["signal_rules", index, "required"],
|
|
800
|
-
message: "Informational Agent Readiness signals cannot be required for coverage.",
|
|
801
|
-
});
|
|
802
|
-
}
|
|
803
|
-
if (rule.evaluation_role === "barrier" && rule.required) {
|
|
804
|
-
context.addIssue({
|
|
805
|
-
code: "custom",
|
|
806
|
-
path: ["signal_rules", index, "required"],
|
|
807
|
-
message: "Barrier Agent Readiness signals cannot be required for core coverage.",
|
|
808
|
-
});
|
|
809
|
-
}
|
|
810
|
-
const standardSelectorKeys = rule.selector_groups.flatMap((group) => group.alternatives.flatMap((alternative) => alternative.selectors
|
|
811
|
-
.filter((selector) => selector.kind === "standard_requirement")
|
|
812
|
-
.map((selector) => standardRequirementKey(selector.requirement))));
|
|
813
|
-
if (standardSelectorKeys.some((key) => !rule.standard_evidence.some(({ requirement }) => standardRequirementKey(requirement) === key))) {
|
|
814
|
-
context.addIssue({
|
|
815
|
-
code: "custom",
|
|
816
|
-
path: ["signal_rules", index, "selector_groups"],
|
|
817
|
-
message: "Standard requirement selectors must bind exact policy evidence mappings.",
|
|
818
|
-
});
|
|
819
|
-
}
|
|
820
|
-
}
|
|
821
|
-
for (const stage of agentReadinessStageSchema.options) {
|
|
822
|
-
if (!value.signal_rules.some((rule) => rule.stage === stage && rule.evaluation_role === "graded" && rule.required)) {
|
|
823
|
-
context.addIssue({
|
|
824
|
-
code: "custom",
|
|
825
|
-
path: ["signal_rules"],
|
|
826
|
-
message: `Agent readiness policy has no required graded rules for ${stage}.`,
|
|
827
|
-
});
|
|
828
|
-
}
|
|
829
|
-
}
|
|
830
|
-
const expectedStates = {
|
|
831
|
-
pass: "ready",
|
|
832
|
-
constrained: "limited",
|
|
833
|
-
fail: "blocked",
|
|
834
|
-
unknown: "unknown",
|
|
835
|
-
not_applicable: "not_applicable",
|
|
836
|
-
};
|
|
837
|
-
for (const [outcome, state] of Object.entries(expectedStates)) {
|
|
838
|
-
if (value.public_states[outcome].state !== state) {
|
|
839
|
-
context.addIssue({
|
|
840
|
-
code: "custom",
|
|
841
|
-
path: ["public_states", outcome, "state"],
|
|
842
|
-
message: `Outcome ${outcome} must project to public state ${state}.`,
|
|
843
|
-
});
|
|
844
|
-
}
|
|
845
|
-
}
|
|
846
|
-
});
|
|
847
|
-
export const agentReadinessPolicySchema = agentReadinessPolicyCoreSchema
|
|
848
|
-
.safeExtend({ policy_digest: agentReadinessDigestSchema })
|
|
849
|
-
.strict();
|
|
850
|
-
const projectedBlockerSchema = z
|
|
235
|
+
/** What a reader needs of one step: its outcome and, for a human step, when the human is needed. */
|
|
236
|
+
const agentReadinessProjectedStepSchema = z
|
|
851
237
|
.object({
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
238
|
+
step: agentReadinessStepSchema,
|
|
239
|
+
outcome: agentReadinessStepOutcomeSchema,
|
|
240
|
+
timing: agentReadinessHandoffTimingSchema.nullable(),
|
|
855
241
|
})
|
|
856
242
|
.strict();
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
.object({
|
|
866
|
-
signal_code: agentReadinessSignalCodeSchema,
|
|
867
|
-
condition: z.string().min(1).max(160),
|
|
868
|
-
finding: z.string().min(1).max(280),
|
|
869
|
-
context: agentReadinessPublicClaimTextSchema.optional(),
|
|
870
|
-
})
|
|
871
|
-
.strict();
|
|
872
|
-
export const agentReadinessProjectedSignalSchema = z
|
|
873
|
-
.object({
|
|
874
|
-
signal_code: agentReadinessSignalCodeSchema,
|
|
875
|
-
evaluation_role: agentReadinessEvaluationRoleSchema,
|
|
876
|
-
required: z.boolean(),
|
|
877
|
-
value: agentReadinessSignalValueSchema,
|
|
878
|
-
value_label: z.string().min(1).max(40),
|
|
879
|
-
outcome: agentReadinessStageOutcomeSchema,
|
|
880
|
-
public_state: agentReadinessPublicStateSchema,
|
|
881
|
-
condition: z.string().min(1).max(160),
|
|
882
|
-
finding: z.string().min(1).max(280),
|
|
883
|
-
evidence_status: z.enum(["supported", "contradicted", "mixed", "missing"]),
|
|
884
|
-
freshness: agentReadinessFreshnessSchema,
|
|
885
|
-
observed_at: agentReadinessInstantSchema.optional(),
|
|
886
|
-
tested_surfaces: z.array(agentReadinessSurfaceReferenceSchema),
|
|
887
|
-
assessment_method: agentReadinessAssessmentMethodSchema.optional(),
|
|
888
|
-
determination_bases: z.array(agentReadinessDeterminationBasisSchema),
|
|
889
|
-
note: agentReadinessPublicClaimTextSchema.optional(),
|
|
890
|
-
blocker: projectedBlockerSchema.optional(),
|
|
891
|
-
remediation: projectedRemediationSchema.optional(),
|
|
243
|
+
/** The latest run as the card shows it, each assertion with the job library's statement. */
|
|
244
|
+
const agentReadinessProjectedRunSchema = agentReadinessRunSummarySchema
|
|
245
|
+
.safeExtend({
|
|
246
|
+
assertions: z
|
|
247
|
+
.array(agentReadinessAssertionResultSchema.safeExtend({
|
|
248
|
+
statement: z.string().min(1).max(400),
|
|
249
|
+
}))
|
|
250
|
+
.max(8),
|
|
892
251
|
})
|
|
893
252
|
.strict();
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
primary_finding: projectedFindingSchema,
|
|
902
|
-
secondary_context: z.array(projectedFindingSchema),
|
|
903
|
-
signals: z.array(agentReadinessProjectedSignalSchema),
|
|
904
|
-
blockers: z.array(projectedBlockerSchema),
|
|
905
|
-
remediations: z.array(projectedRemediationSchema),
|
|
906
|
-
})
|
|
253
|
+
/**
|
|
254
|
+
* The readiness projection's provenance: the profile's dispute state, its Entity's
|
|
255
|
+
* attestation, and the events establishing both. Ratings rest on run records, not
|
|
256
|
+
* on evidence coverage.
|
|
257
|
+
*/
|
|
258
|
+
const agentReadinessProvenanceSchema = provenanceSchema
|
|
259
|
+
.pick({ dispute: true, vendor_attestation: true, basis_event_ids: true })
|
|
907
260
|
.strict();
|
|
908
|
-
export const agentReadinessPublicationVisibilitySchema = z.enum([
|
|
909
|
-
"discoverable",
|
|
910
|
-
"resolvable_only",
|
|
911
|
-
"private",
|
|
912
|
-
]);
|
|
913
261
|
export const agentReadinessProjectionCoreSchema = z
|
|
914
262
|
.object({
|
|
915
263
|
projection_contract: z.literal("sourcey.agent-readiness-projection/v1alpha1"),
|
|
@@ -921,7 +269,6 @@ export const agentReadinessProjectionCoreSchema = z
|
|
|
921
269
|
declaration: agentReadinessDeclarationStateSchema,
|
|
922
270
|
surface_catalog: z
|
|
923
271
|
.object({
|
|
924
|
-
assessment_targets: z.array(agentReadinessAssessmentTargetSchema),
|
|
925
272
|
participants: z.array(agentReadinessParticipantSchema),
|
|
926
273
|
resources: z.array(agentReadinessResourceSchema),
|
|
927
274
|
endpoints: z.array(agentReadinessEndpointSchema),
|
|
@@ -937,98 +284,53 @@ export const agentReadinessProjectionCoreSchema = z
|
|
|
937
284
|
policy_digest: agentReadinessDigestSchema,
|
|
938
285
|
policy_version: z.string().min(1),
|
|
939
286
|
policy_as_of: agentReadinessInstantSchema,
|
|
940
|
-
|
|
941
|
-
overall_outcome: agentReadinessStageOutcomeSchema,
|
|
942
|
-
public_state: agentReadinessPublicStateSchema,
|
|
943
|
-
state_label: z.string().min(1).max(40),
|
|
944
|
-
grade: agentReadinessGradeSchema,
|
|
945
|
-
grade_derivation: z
|
|
287
|
+
job: z
|
|
946
288
|
.object({
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
289
|
+
job_id: agentReadinessScopeKeySchema,
|
|
290
|
+
job_digest: agentReadinessDigestSchema,
|
|
291
|
+
category: agentReadinessScopeKeySchema,
|
|
292
|
+
name: z.string().min(1).max(120),
|
|
293
|
+
statement: z.string().min(1).max(400),
|
|
951
294
|
})
|
|
952
295
|
.strict(),
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
296
|
+
/** The interface the rated binding uses; null until a binding has run. */
|
|
297
|
+
interface_id: agentReadinessScopeKeySchema.nullable(),
|
|
298
|
+
label: agentReadinessEvidenceLabelSchema,
|
|
299
|
+
operate: z
|
|
300
|
+
.object({
|
|
301
|
+
/** Null shows the dash: not yet exercised, or no letter's coverage met. */
|
|
302
|
+
letter: agentReadinessOperateLetterSchema.nullable(),
|
|
303
|
+
/** The letter's exact definition from the policy; null with the dash. */
|
|
304
|
+
statement: z.string().min(1).max(280).nullable(),
|
|
305
|
+
steps: z.array(agentReadinessProjectedStepSchema).length(AGENT_READINESS_STEPS.length),
|
|
306
|
+
/** Steps not yet assessed. */
|
|
307
|
+
missing: z.array(agentReadinessStepSchema),
|
|
308
|
+
/** Where the principal stays in the loop; never lowers the letter. */
|
|
309
|
+
approvals: z.array(agentReadinessStepSchema),
|
|
310
|
+
/** Where a person does the agent's work, and how often. */
|
|
311
|
+
workarounds: z.array(z
|
|
312
|
+
.object({ step: agentReadinessStepSchema, timing: agentReadinessHandoffTimingSchema })
|
|
313
|
+
.strict()),
|
|
965
314
|
})
|
|
966
315
|
.strict(),
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
blocker: projectedBlockerSchema.optional(),
|
|
974
|
-
})
|
|
975
|
-
.strict()
|
|
976
|
-
.optional(),
|
|
977
|
-
first_blocked_stage: z
|
|
978
|
-
.object({
|
|
979
|
-
stage: agentReadinessStageSchema,
|
|
980
|
-
stage_label: z.string().min(1).max(40),
|
|
981
|
-
finding: projectedFindingSchema,
|
|
982
|
-
blocker: projectedBlockerSchema.optional(),
|
|
983
|
-
})
|
|
984
|
-
.strict()
|
|
985
|
-
.optional(),
|
|
986
|
-
limitations: z.array(z
|
|
987
|
-
.object({
|
|
988
|
-
stage: agentReadinessStageSchema,
|
|
989
|
-
stage_label: z.string().min(1).max(40),
|
|
990
|
-
finding: projectedFindingSchema,
|
|
991
|
-
remediation: projectedRemediationSchema.optional(),
|
|
992
|
-
})
|
|
993
|
-
.strict()),
|
|
994
|
-
stages: z.array(agentReadinessStageProjectionSchema).length(5),
|
|
995
|
-
coverage: z
|
|
316
|
+
onboard: z.object({ level: agentReadinessOnboardLevelSchema.nullable() }).strict(),
|
|
317
|
+
discovery: z.array(agentReadinessDiscoveryFactSchema).max(64),
|
|
318
|
+
run: agentReadinessProjectedRunSchema,
|
|
319
|
+
/** When the published facts were established: the revision's latest run. */
|
|
320
|
+
last_run_at: agentReadinessInstantSchema,
|
|
321
|
+
publication: z
|
|
996
322
|
.object({
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
covered_signals: z.number().int().nonnegative(),
|
|
1000
|
-
ratio: z.number().min(0).max(1),
|
|
1001
|
-
barrier_signals: z.number().int().nonnegative(),
|
|
1002
|
-
verified_barrier_signals: z.number().int().nonnegative(),
|
|
1003
|
-
barrier_ratio: z.number().min(0).max(1),
|
|
323
|
+
visibility: agentReadinessPublicationVisibilitySchema,
|
|
324
|
+
reasons: z.array(z.enum(["lifecycle_not_active", "open_dispute"])),
|
|
1004
325
|
})
|
|
1005
326
|
.strict(),
|
|
1006
|
-
|
|
1007
|
-
freshness: agentReadinessFreshnessSchema,
|
|
1008
|
-
provenance: provenanceSchema,
|
|
327
|
+
provenance: agentReadinessProvenanceSchema,
|
|
1009
328
|
canonical_url: z.url(),
|
|
1010
329
|
})
|
|
1011
330
|
.strict();
|
|
1012
331
|
export const agentReadinessProjectionSchema = agentReadinessProjectionCoreSchema
|
|
1013
332
|
.safeExtend({ projection_digest: agentReadinessDigestSchema })
|
|
1014
333
|
.strict();
|
|
1015
|
-
export const agentReadinessStageSummarySchema = agentReadinessStageProjectionSchema
|
|
1016
|
-
.pick({
|
|
1017
|
-
stage: true,
|
|
1018
|
-
stage_label: true,
|
|
1019
|
-
outcome: true,
|
|
1020
|
-
public_state: true,
|
|
1021
|
-
state_label: true,
|
|
1022
|
-
primary_finding: true,
|
|
1023
|
-
})
|
|
1024
|
-
.strict();
|
|
1025
|
-
export const agentReadinessProvenanceSummarySchema = provenanceSchema
|
|
1026
|
-
.pick({
|
|
1027
|
-
freshness: true,
|
|
1028
|
-
dispute: true,
|
|
1029
|
-
vendor_attestation: true,
|
|
1030
|
-
})
|
|
1031
|
-
.strict();
|
|
1032
334
|
export const agentReadinessProfileSummarySchema = agentReadinessProjectionSchema
|
|
1033
335
|
.pick({
|
|
1034
336
|
agent_readiness_profile_id: true,
|
|
@@ -1041,24 +343,61 @@ export const agentReadinessProfileSummarySchema = agentReadinessProjectionSchema
|
|
|
1041
343
|
policy_digest: true,
|
|
1042
344
|
policy_version: true,
|
|
1043
345
|
policy_as_of: true,
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
state_label: true,
|
|
1047
|
-
grade: true,
|
|
1048
|
-
grade_derivation: true,
|
|
346
|
+
label: true,
|
|
347
|
+
last_run_at: true,
|
|
1049
348
|
publication: true,
|
|
1050
|
-
|
|
1051
|
-
coverage: true,
|
|
1052
|
-
last_tested_at: true,
|
|
1053
|
-
freshness: true,
|
|
349
|
+
provenance: true,
|
|
1054
350
|
canonical_url: true,
|
|
1055
351
|
projection_digest: true,
|
|
1056
352
|
})
|
|
1057
353
|
.safeExtend({
|
|
1058
|
-
|
|
1059
|
-
|
|
354
|
+
operate: z
|
|
355
|
+
.object({
|
|
356
|
+
letter: agentReadinessOperateLetterSchema.nullable(),
|
|
357
|
+
steps: z.array(agentReadinessProjectedStepSchema).length(AGENT_READINESS_STEPS.length),
|
|
358
|
+
})
|
|
359
|
+
.strict(),
|
|
360
|
+
onboard: z.object({ level: agentReadinessOnboardLevelSchema.nullable() }).strict(),
|
|
361
|
+
})
|
|
362
|
+
.strict();
|
|
363
|
+
/** The freshness index's namespace for report cards; each subject is a profile id. */
|
|
364
|
+
export const AGENT_READINESS_FRESHNESS_NAMESPACE = "agent-readiness";
|
|
365
|
+
/**
|
|
366
|
+
* A card's freshness as serving reads it from the freshness index, beside the
|
|
367
|
+
* released facts: never released itself, so a recheck that changes nothing
|
|
368
|
+
* publishes nothing.
|
|
369
|
+
*/
|
|
370
|
+
export const agentReadinessServedFreshnessSchema = z
|
|
371
|
+
.object({
|
|
372
|
+
/** The last check, successful or not. */
|
|
373
|
+
checked_at: agentReadinessInstantSchema,
|
|
374
|
+
/** The last successful check: the card's "observed" date; null before one. */
|
|
375
|
+
succeeded_at: agentReadinessInstantSchema.nullable(),
|
|
376
|
+
next_due_at: agentReadinessInstantSchema.nullable(),
|
|
377
|
+
/** Stale with no success, or a last success before the policy's window. */
|
|
378
|
+
state: agentReadinessFreshnessSchema,
|
|
1060
379
|
})
|
|
1061
380
|
.strict();
|
|
381
|
+
/** Served freshness by profile id: what a response carries beside its released profiles. */
|
|
382
|
+
export const agentReadinessServedFreshnessMapSchema = z.record(agentReadinessProfileIdSchema, agentReadinessServedFreshnessSchema);
|
|
383
|
+
/** The instant before which a card's last success makes it stale, under the policy's window. */
|
|
384
|
+
export function agentReadinessStaleBefore(now, policy) {
|
|
385
|
+
const at = Date.parse(now);
|
|
386
|
+
if (!Number.isFinite(at))
|
|
387
|
+
throw new Error("Agent Readiness freshness needs a valid instant.");
|
|
388
|
+
return new Date(at - policy.fresh_for_days * 86_400_000).toISOString();
|
|
389
|
+
}
|
|
390
|
+
/** The one definition of staleness: no success yet, or the last one before `staleBefore`. */
|
|
391
|
+
export function agentReadinessServedFreshness(record, staleBefore) {
|
|
392
|
+
return agentReadinessServedFreshnessSchema.parse({
|
|
393
|
+
checked_at: record.checkedAt,
|
|
394
|
+
succeeded_at: record.succeededAt,
|
|
395
|
+
next_due_at: record.nextDueAt,
|
|
396
|
+
state: record.succeededAt !== null && Date.parse(record.succeededAt) >= Date.parse(staleBefore)
|
|
397
|
+
? "fresh"
|
|
398
|
+
: "stale",
|
|
399
|
+
});
|
|
400
|
+
}
|
|
1062
401
|
/** The one compact public-list projection of a complete released profile. */
|
|
1063
402
|
export function summarizeAgentReadinessProfile(profile) {
|
|
1064
403
|
return agentReadinessProfileSummarySchema.parse({
|
|
@@ -1072,60 +411,25 @@ export function summarizeAgentReadinessProfile(profile) {
|
|
|
1072
411
|
policy_digest: profile.policy_digest,
|
|
1073
412
|
policy_version: profile.policy_version,
|
|
1074
413
|
policy_as_of: profile.policy_as_of,
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
grade_derivation: profile.grade_derivation,
|
|
414
|
+
label: profile.label,
|
|
415
|
+
operate: { letter: profile.operate.letter, steps: profile.operate.steps },
|
|
416
|
+
onboard: profile.onboard,
|
|
417
|
+
last_run_at: profile.last_run_at,
|
|
1080
418
|
publication: profile.publication,
|
|
1081
|
-
|
|
1082
|
-
stages: profile.stages.map((stage) => ({
|
|
1083
|
-
stage: stage.stage,
|
|
1084
|
-
stage_label: stage.stage_label,
|
|
1085
|
-
outcome: stage.outcome,
|
|
1086
|
-
public_state: stage.public_state,
|
|
1087
|
-
state_label: stage.state_label,
|
|
1088
|
-
primary_finding: stage.primary_finding,
|
|
1089
|
-
})),
|
|
1090
|
-
coverage: profile.coverage,
|
|
1091
|
-
last_tested_at: profile.last_tested_at,
|
|
1092
|
-
freshness: profile.freshness,
|
|
1093
|
-
provenance: {
|
|
1094
|
-
freshness: profile.provenance.freshness,
|
|
1095
|
-
dispute: profile.provenance.dispute,
|
|
1096
|
-
vendor_attestation: profile.provenance.vendor_attestation,
|
|
1097
|
-
},
|
|
419
|
+
provenance: profile.provenance,
|
|
1098
420
|
canonical_url: profile.canonical_url,
|
|
1099
421
|
projection_digest: profile.projection_digest,
|
|
1100
422
|
});
|
|
1101
423
|
}
|
|
1102
|
-
/**
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
*/
|
|
1107
|
-
export const agentReadinessProjectionLineageSchema = z
|
|
1108
|
-
.object({
|
|
1109
|
-
projection_contract: z.literal("sourcey.agent-readiness-projection/v1alpha1"),
|
|
1110
|
-
agent_readiness_profile_id: agentReadinessProfileIdSchema,
|
|
1111
|
-
entity_id: agentReadinessEntityIdSchema,
|
|
1112
|
-
scope: agentReadinessScopeSchema,
|
|
1113
|
-
lifecycle: lifecycleStatusSchema,
|
|
1114
|
-
revision_digest: agentReadinessDigestSchema,
|
|
1115
|
-
policy_digest: agentReadinessDigestSchema,
|
|
1116
|
-
policy_as_of: agentReadinessInstantSchema,
|
|
1117
|
-
publication: z.object({ visibility: agentReadinessPublicationVisibilitySchema }).passthrough(),
|
|
1118
|
-
provenance: z.object({ freshness_policy_digest: agentReadinessDigestSchema }).passthrough(),
|
|
1119
|
-
canonical_url: z.url(),
|
|
1120
|
-
projection_digest: agentReadinessDigestSchema,
|
|
1121
|
-
})
|
|
1122
|
-
.passthrough();
|
|
424
|
+
/** Whether two profiles rate the same product and job. */
|
|
425
|
+
export function sameAgentReadinessScope(left, right) {
|
|
426
|
+
return left.product.key === right.product.key && left.job.key === right.job.key;
|
|
427
|
+
}
|
|
1123
428
|
const agentReadinessOfferRelationRevisionFields = {
|
|
1124
429
|
relation_id: agentReadinessIdentifierSchema,
|
|
1125
430
|
agent_readiness_profile_id: agentReadinessProfileIdSchema,
|
|
1126
431
|
offer_id: agentReadinessOfferIdSchema,
|
|
1127
432
|
purpose: agentReadinessOfferRelationPurposeSchema,
|
|
1128
|
-
applicable_stages: z.array(agentReadinessStageSchema).min(1),
|
|
1129
433
|
effective_from: agentReadinessInstantSchema,
|
|
1130
434
|
effective_until: agentReadinessInstantSchema.optional(),
|
|
1131
435
|
declaration_revision_digest: agentReadinessDigestSchema,
|
|
@@ -1138,7 +442,7 @@ const agentReadinessOfferRelationRevisionFieldsSchema = z
|
|
|
1138
442
|
...agentReadinessOfferRelationRevisionFields,
|
|
1139
443
|
})
|
|
1140
444
|
.strict();
|
|
1141
|
-
export const agentReadinessOfferRelationRevisionCoreSchema = agentReadinessOfferRelationRevisionFieldsSchema.superRefine(
|
|
445
|
+
export const agentReadinessOfferRelationRevisionCoreSchema = agentReadinessOfferRelationRevisionFieldsSchema.superRefine(validateOfferRelationInterval);
|
|
1142
446
|
export const agentReadinessOfferRelationRevisionSchema = agentReadinessOfferRelationRevisionCoreSchema
|
|
1143
447
|
.safeExtend({ relation_revision_digest: agentReadinessDigestSchema })
|
|
1144
448
|
.strict();
|
|
@@ -1348,7 +652,7 @@ export const agentReadinessDeltaObjectSchema = z
|
|
|
1348
652
|
agent_readiness_profile_id: agentReadinessProfileIdSchema,
|
|
1349
653
|
profile_input: agentReadinessProfileInputSchema.nullable(),
|
|
1350
654
|
projection: agentReadinessProjectionSchema.nullable(),
|
|
1351
|
-
prior_projection:
|
|
655
|
+
prior_projection: agentReadinessProjectionSchema.nullable(),
|
|
1352
656
|
catalog_context: z
|
|
1353
657
|
.object({
|
|
1354
658
|
entity_slug: z.string().regex(SLUG_PATTERN),
|
|
@@ -1399,11 +703,11 @@ export const agentReadinessDeltaObjectSchema = z
|
|
|
1399
703
|
return;
|
|
1400
704
|
}
|
|
1401
705
|
if (value.prior_projection &&
|
|
1402
|
-
!
|
|
706
|
+
!sameAgentReadinessScope(value.prior_projection.scope, current.scope)) {
|
|
1403
707
|
context.addIssue({
|
|
1404
708
|
code: "custom",
|
|
1405
709
|
path: ["projection", "scope"],
|
|
1406
|
-
message: "An Agent Readiness profile cannot change product or
|
|
710
|
+
message: "An Agent Readiness profile cannot change product or job identity.",
|
|
1407
711
|
});
|
|
1408
712
|
}
|
|
1409
713
|
if (!value.prior_projection && !value.profile_input) {
|
|
@@ -1446,18 +750,6 @@ export const agentReadinessDeltaObjectSchema = z
|
|
|
1446
750
|
});
|
|
1447
751
|
}
|
|
1448
752
|
});
|
|
1449
|
-
function validateOfferRelationRevision(value, context) {
|
|
1450
|
-
const canonicalStages = agentReadinessStageSchema.options.filter((stage) => value.applicable_stages.includes(stage));
|
|
1451
|
-
if (canonicalStages.length !== value.applicable_stages.length ||
|
|
1452
|
-
canonicalStages.some((stage, index) => value.applicable_stages[index] !== stage)) {
|
|
1453
|
-
context.addIssue({
|
|
1454
|
-
code: "custom",
|
|
1455
|
-
path: ["applicable_stages"],
|
|
1456
|
-
message: "Offer relation stages must be unique and ordered by the canonical funnel.",
|
|
1457
|
-
});
|
|
1458
|
-
}
|
|
1459
|
-
validateOfferRelationInterval(value, context);
|
|
1460
|
-
}
|
|
1461
753
|
function validateOfferRelationInterval(value, context) {
|
|
1462
754
|
if (value.effective_until &&
|
|
1463
755
|
Date.parse(value.effective_until) <= Date.parse(value.effective_from)) {
|
|
@@ -1468,7 +760,7 @@ function validateOfferRelationInterval(value, context) {
|
|
|
1468
760
|
});
|
|
1469
761
|
}
|
|
1470
762
|
}
|
|
1471
|
-
|
|
763
|
+
function sameAgentReadinessOfferRelationIdentity(left, right) {
|
|
1472
764
|
return (left.relation_id === right.relation_id &&
|
|
1473
765
|
left.agent_readiness_profile_id === right.agent_readiness_profile_id &&
|
|
1474
766
|
left.offer_id === right.offer_id &&
|
|
@@ -1509,17 +801,4 @@ function validateRelationMembership(actual, expected, context, path) {
|
|
|
1509
801
|
}
|
|
1510
802
|
}
|
|
1511
803
|
}
|
|
1512
|
-
function sameSurface(left, right) {
|
|
1513
|
-
return left.node_kind === right.node_kind && left.node_id === right.node_id;
|
|
1514
|
-
}
|
|
1515
|
-
function assertUniqueSurfaceReferences(surfaces, context, path) {
|
|
1516
|
-
if (new Set(surfaces.map((surface) => `${surface.node_kind}:${surface.node_id}`)).size !==
|
|
1517
|
-
surfaces.length) {
|
|
1518
|
-
context.addIssue({
|
|
1519
|
-
code: "custom",
|
|
1520
|
-
path,
|
|
1521
|
-
message: "Surface references must be unique.",
|
|
1522
|
-
});
|
|
1523
|
-
}
|
|
1524
|
-
}
|
|
1525
804
|
//# sourceMappingURL=index.js.map
|