@sourcey/catalog-verifier 1.1.3 → 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 +580 -580
- 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 +3512 -4412
- package/dist/contracts/agent-readiness/src/index.d.ts.map +1 -1
- package/dist/contracts/agent-readiness/src/index.js +227 -936
- 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 +15206 -15810
- 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 +10 -267
- package/dist/contracts/evidence/src/index.d.ts.map +1 -1
- package/dist/contracts/evidence/src/index.js +29 -93
- 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 -235
- 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 -466
- 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 -788
- package/dist/modules/agent-readiness-policy/src/index.d.ts.map +1 -1
- package/dist/modules/agent-readiness-policy/src/index.js +137 -451
- 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 -2000
- 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 -232
- 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 -190
- package/dist/contracts/agent-readiness/src/evidence.d.ts.map +0 -1
- package/dist/contracts/agent-readiness/src/evidence.js +0 -177
- 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 -386
- 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/current-policy-metrics.d.ts +0 -22
- 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 -565
- 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 -39
- package/dist/modules/agent-readiness-policy/src/grading.d.ts.map +0 -1
- package/dist/modules/agent-readiness-policy/src/grading.js +0 -40
- 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 -53
- 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 -262
- 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 -271
- 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
|
-
|
|
62
|
+
function validateAgentReadinessRevision(value, context) {
|
|
63
|
+
if ((value.binding_id === null) !== (value.binding_digest === null)) {
|
|
64
|
+
context.addIssue({
|
|
65
|
+
code: "custom",
|
|
66
|
+
path: ["binding_digest"],
|
|
67
|
+
message: "A revision names its binding and its digest together, or neither.",
|
|
68
|
+
});
|
|
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 ?? ""))) {
|
|
135
96
|
context.addIssue({
|
|
136
97
|
code: "custom",
|
|
137
|
-
path: ["
|
|
138
|
-
message: "
|
|
98
|
+
path: ["runs"],
|
|
99
|
+
message: "A revision's runs are unique and ordered oldest first.",
|
|
139
100
|
});
|
|
140
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,646 +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
|
-
public_findings: publicFindingByValueSchema,
|
|
435
|
-
external_references: z.array(standardRequirementReferenceSchema),
|
|
436
|
-
standard_evidence: z.array(agentReadinessStandardEvidenceMappingSchema),
|
|
437
|
-
})
|
|
438
|
-
.strict()
|
|
439
|
-
.superRefine((value, context) => {
|
|
440
|
-
if (value.evidence_terms &&
|
|
441
|
-
new Set(value.evidence_terms).size !== value.evidence_terms.length) {
|
|
442
|
-
context.addIssue({
|
|
443
|
-
code: "custom",
|
|
444
|
-
path: ["evidence_terms"],
|
|
445
|
-
message: "Evidence retrieval terms must be unique within a signal rule.",
|
|
446
|
-
});
|
|
447
|
-
}
|
|
448
|
-
const assignments = [...value.pass_values, ...value.constrained_values, ...value.fail_values];
|
|
449
|
-
if (new Set(assignments).size !== assignments.length) {
|
|
450
|
-
context.addIssue({
|
|
451
|
-
code: "custom",
|
|
452
|
-
message: "An agent readiness signal value can map to only one outcome.",
|
|
453
|
-
});
|
|
454
|
-
}
|
|
455
|
-
if (assignments.includes("not_applicable") !== value.allow_not_applicable) {
|
|
456
|
-
context.addIssue({
|
|
457
|
-
code: "custom",
|
|
458
|
-
path: ["allow_not_applicable"],
|
|
459
|
-
message: "not_applicable must be explicitly allowed and mapped.",
|
|
460
|
-
});
|
|
461
|
-
}
|
|
462
|
-
if (assignments.includes("unknown")) {
|
|
463
|
-
context.addIssue({
|
|
464
|
-
code: "custom",
|
|
465
|
-
message: "unknown is an unevaluated result and cannot be mapped to an outcome.",
|
|
466
|
-
});
|
|
467
|
-
}
|
|
468
|
-
const expected = value.allow_not_applicable
|
|
469
|
-
? ["yes", "no", "partial", "not_applicable"]
|
|
470
|
-
: ["yes", "no", "partial"];
|
|
471
|
-
if (expected.some((candidate) => !assignments.includes(candidate)) ||
|
|
472
|
-
assignments.some((candidate) => !expected.includes(candidate))) {
|
|
473
|
-
context.addIssue({
|
|
474
|
-
code: "custom",
|
|
475
|
-
message: "Each assessable signal value must map to exactly one policy outcome.",
|
|
476
|
-
});
|
|
477
|
-
}
|
|
478
|
-
if (new Set(value.allowed_method_digests).size !== value.allowed_method_digests.length) {
|
|
479
|
-
context.addIssue({
|
|
480
|
-
code: "custom",
|
|
481
|
-
path: ["allowed_method_digests"],
|
|
482
|
-
message: "Allowed Agent Readiness method digests must be unique.",
|
|
483
|
-
});
|
|
484
|
-
}
|
|
485
|
-
const selectorGroupIds = value.selector_groups.map((group) => group.selector_group_id);
|
|
486
|
-
if (new Set(selectorGroupIds).size !== selectorGroupIds.length) {
|
|
487
|
-
context.addIssue({
|
|
488
|
-
code: "custom",
|
|
489
|
-
path: ["selector_groups"],
|
|
490
|
-
message: "Signal selector group IDs must be unique.",
|
|
491
|
-
});
|
|
492
|
-
}
|
|
493
|
-
const evidenceValues = value.value_evidence.map((evidence) => evidence.value);
|
|
494
|
-
if (new Set(evidenceValues).size !== evidenceValues.length ||
|
|
495
|
-
evidenceValues.length !== assignments.length ||
|
|
496
|
-
assignments.some((assignment) => assignment === "unknown" || !evidenceValues.includes(assignment))) {
|
|
497
|
-
context.addIssue({
|
|
498
|
-
code: "custom",
|
|
499
|
-
path: ["value_evidence"],
|
|
500
|
-
message: "Every assessable signal value requires exactly one evidence rule.",
|
|
501
|
-
});
|
|
502
|
-
}
|
|
503
|
-
const mappingKeys = value.standard_evidence.map(({ requirement }) => standardRequirementKey(requirement));
|
|
504
|
-
if (new Set(mappingKeys).size !== mappingKeys.length) {
|
|
505
|
-
context.addIssue({
|
|
506
|
-
code: "custom",
|
|
507
|
-
path: ["standard_evidence"],
|
|
508
|
-
message: "A signal rule cannot repeat an external standard requirement mapping.",
|
|
509
|
-
});
|
|
510
|
-
}
|
|
511
|
-
const testedReferenceKeys = value.external_references
|
|
512
|
-
.filter((reference) => reference.relation === "tests")
|
|
513
|
-
.map(standardRequirementKey);
|
|
514
|
-
if (testedReferenceKeys.length !== mappingKeys.length ||
|
|
515
|
-
testedReferenceKeys.some((key) => !mappingKeys.includes(key))) {
|
|
516
|
-
context.addIssue({
|
|
517
|
-
code: "custom",
|
|
518
|
-
path: ["standard_evidence"],
|
|
519
|
-
message: "Every tests reference must have exactly one policy-owned standard evidence mapping.",
|
|
520
|
-
});
|
|
521
|
-
}
|
|
522
|
-
const assessableValues = new Set(assignments);
|
|
523
|
-
if (value.standard_evidence.some((mapping) => mapping.support.some((support) => support.values.some((candidate) => !assessableValues.has(candidate))))) {
|
|
524
|
-
context.addIssue({
|
|
525
|
-
code: "custom",
|
|
526
|
-
path: ["standard_evidence"],
|
|
527
|
-
message: "Standard evidence can support only values assessed by the same signal rule.",
|
|
528
|
-
});
|
|
529
|
-
}
|
|
530
|
-
if (value.evaluation_role === "informational") {
|
|
531
|
-
if (value.required || value.blocker !== undefined || value.remediation !== undefined) {
|
|
532
|
-
context.addIssue({
|
|
533
|
-
code: "custom",
|
|
534
|
-
message: "Informational signals must be optional and cannot own blockers or remediation.",
|
|
535
|
-
});
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
if (value.evaluation_role === "barrier" && value.required) {
|
|
539
|
-
context.addIssue({
|
|
540
|
-
code: "custom",
|
|
541
|
-
path: ["required"],
|
|
542
|
-
message: "Barrier signals are assessed but cannot be required for core coverage.",
|
|
543
|
-
});
|
|
544
|
-
}
|
|
545
|
-
if (value.fail_values.length > 0 &&
|
|
546
|
-
value.evaluation_role !== "informational" &&
|
|
547
|
-
!value.blocker) {
|
|
548
|
-
context.addIssue({
|
|
549
|
-
code: "custom",
|
|
550
|
-
path: ["blocker"],
|
|
551
|
-
message: "A failing readiness signal requires a blocker explanation.",
|
|
552
|
-
});
|
|
553
|
-
}
|
|
554
|
-
if ((value.constrained_values.length > 0 || value.fail_values.length > 0) &&
|
|
555
|
-
value.evaluation_role !== "informational" &&
|
|
556
|
-
!value.remediation) {
|
|
557
|
-
context.addIssue({
|
|
558
|
-
code: "custom",
|
|
559
|
-
path: ["remediation"],
|
|
560
|
-
message: "A constrained or failing readiness signal requires remediation.",
|
|
561
|
-
});
|
|
562
|
-
}
|
|
563
|
-
});
|
|
564
|
-
function standardRequirementKey(value) {
|
|
565
|
-
return `${value.namespace}\u0000${value.version}\u0000${value.requirement_id}`;
|
|
566
|
-
}
|
|
567
|
-
const stageOutcomePrecedenceSchema = z
|
|
568
|
-
.array(agentReadinessStageOutcomeSchema)
|
|
569
|
-
.length(agentReadinessStageOutcomeSchema.options.length)
|
|
570
|
-
.superRefine((value, context) => {
|
|
571
|
-
if (new Set(value).size !== agentReadinessStageOutcomeSchema.options.length ||
|
|
572
|
-
agentReadinessStageOutcomeSchema.options.some((outcome) => !value.includes(outcome))) {
|
|
573
|
-
context.addIssue({
|
|
574
|
-
code: "custom",
|
|
575
|
-
message: "Agent readiness outcome precedence must contain every outcome exactly once.",
|
|
576
|
-
});
|
|
577
|
-
}
|
|
578
|
-
});
|
|
579
|
-
const publicStateDescriptorSchema = z
|
|
580
|
-
.object({
|
|
581
|
-
state: agentReadinessPublicStateSchema,
|
|
582
|
-
label: z.string().min(1).max(40),
|
|
583
|
-
})
|
|
584
|
-
.strict();
|
|
585
|
-
const agentReadinessGradingSchema = z
|
|
586
|
-
.object({
|
|
587
|
-
strategy: z.literal("stage-state-cardinality"),
|
|
588
|
-
grade_by_limited_stage_count: z
|
|
589
|
-
.object({
|
|
590
|
-
"0": z.literal("A+"),
|
|
591
|
-
"1": z.literal("A"),
|
|
592
|
-
"2": z.literal("B+"),
|
|
593
|
-
"3": z.literal("B"),
|
|
594
|
-
"4": z.literal("C+"),
|
|
595
|
-
"5": z.literal("C"),
|
|
596
|
-
})
|
|
597
|
-
.strict(),
|
|
598
|
-
failure_grade_by_stage: z
|
|
599
|
-
.object({
|
|
600
|
-
evaluate: z.literal("D"),
|
|
601
|
-
sign_up: z.literal("D"),
|
|
602
|
-
pay: z.literal("D"),
|
|
603
|
-
provision: z.literal("F"),
|
|
604
|
-
operate: z.literal("F"),
|
|
605
|
-
})
|
|
606
|
-
.strict(),
|
|
607
|
-
unverified_barrier_grade_cap: z.literal("B+").optional(),
|
|
608
|
-
not_applicable_signals: z.literal("excluded"),
|
|
609
|
-
unrated_when: z
|
|
610
|
-
.object({
|
|
611
|
-
coverage: z.literal("not-complete"),
|
|
612
|
-
freshness: z.literal("not-fresh"),
|
|
613
|
-
})
|
|
614
|
-
.strict(),
|
|
615
|
-
})
|
|
616
|
-
.strict();
|
|
617
|
-
export const agentReadinessAssessmentBasisSchema = z
|
|
618
|
-
.object({
|
|
619
|
-
principal: z.literal("authorized_human_or_organization"),
|
|
620
|
-
initial_state: z
|
|
621
|
-
.object({
|
|
622
|
-
product_specific_account: z.literal(false),
|
|
623
|
-
product_credentials: z.literal(false),
|
|
624
|
-
paid_subscription: z.literal(false),
|
|
625
|
-
provisioned_resource: z.literal(false),
|
|
626
|
-
external_identity: z.literal("only_when_declared_by_exact_funnel"),
|
|
627
|
-
})
|
|
628
|
-
.strict(),
|
|
629
|
-
permitted_human_boundaries: z.array(z.enum([
|
|
630
|
-
"account_ownership_confirmation",
|
|
631
|
-
"delegated_identity_consent",
|
|
632
|
-
"regulated_approval",
|
|
633
|
-
"final_payment_or_irreversible_commitment",
|
|
634
|
-
])),
|
|
635
|
-
required_handoff_properties: z.array(z.enum(["exact_disclosure", "resumable_handoff", "deterministic_continuation"])),
|
|
636
|
-
forbidden_substitutions: z.array(z.enum([
|
|
637
|
-
"captcha_solving",
|
|
638
|
-
"human_password_or_session_sharing",
|
|
639
|
-
"concealed_agent_identity",
|
|
640
|
-
"invented_eligibility",
|
|
641
|
-
"unbound_out_of_band_code",
|
|
642
|
-
"vendor_policy_bypass",
|
|
643
|
-
"unapproved_consequential_action",
|
|
644
|
-
])),
|
|
645
|
-
success: z
|
|
646
|
-
.object({
|
|
647
|
-
target_coverage: z.literal("every_declared_target"),
|
|
648
|
-
interface_coverage: z.enum([
|
|
649
|
-
"at_least_one_declared_alternative",
|
|
650
|
-
"one_selected_interface_per_target",
|
|
651
|
-
]),
|
|
652
|
-
authority: z.literal("scoped"),
|
|
653
|
-
failure_semantics: z.literal("documented"),
|
|
654
|
-
recovery: z.literal("supported"),
|
|
655
|
-
})
|
|
656
|
-
.strict(),
|
|
657
|
-
observed_assessment: z
|
|
658
|
-
.object({
|
|
659
|
-
allowed_sources: z.array(z.enum([
|
|
660
|
-
"public_documentation",
|
|
661
|
-
"public_metadata",
|
|
662
|
-
"public_endpoints",
|
|
663
|
-
"non_mutating_interaction",
|
|
664
|
-
"operator_attested_public_observation",
|
|
665
|
-
])),
|
|
666
|
-
consequential_claims: z.literal("certification_required"),
|
|
667
|
-
})
|
|
668
|
-
.strict(),
|
|
669
|
-
})
|
|
670
|
-
.strict()
|
|
671
|
-
.superRefine((value, context) => {
|
|
672
|
-
for (const key of [
|
|
673
|
-
"permitted_human_boundaries",
|
|
674
|
-
"required_handoff_properties",
|
|
675
|
-
"forbidden_substitutions",
|
|
676
|
-
]) {
|
|
677
|
-
if (new Set(value[key]).size !== value[key].length) {
|
|
678
|
-
context.addIssue({
|
|
679
|
-
code: "custom",
|
|
680
|
-
path: [key],
|
|
681
|
-
message: `Assessment basis ${key} must be unique.`,
|
|
682
|
-
});
|
|
683
|
-
}
|
|
684
|
-
}
|
|
685
|
-
if (new Set(value.observed_assessment.allowed_sources).size !==
|
|
686
|
-
value.observed_assessment.allowed_sources.length) {
|
|
687
|
-
context.addIssue({
|
|
688
|
-
code: "custom",
|
|
689
|
-
path: ["observed_assessment", "allowed_sources"],
|
|
690
|
-
message: "Assessment basis allowed sources must be unique.",
|
|
691
|
-
});
|
|
692
|
-
}
|
|
693
|
-
});
|
|
694
|
-
export const agentReadinessPolicyCoreSchema = z
|
|
695
|
-
.object({
|
|
696
|
-
policy_contract: z.literal("sourcey.agent-readiness-policy/v1alpha1"),
|
|
697
|
-
policy_version: z.string().min(1),
|
|
698
|
-
assessment_basis: agentReadinessAssessmentBasisSchema,
|
|
699
|
-
assessment_methods: z.array(agentReadinessAssessmentMethodPackSchema).min(1),
|
|
700
|
-
signal_rules: z.array(agentReadinessPolicySignalRuleSchema).min(1),
|
|
701
|
-
aggregation: z
|
|
702
|
-
.object({
|
|
703
|
-
stage: z.literal("worst-signal"),
|
|
704
|
-
overall: z.literal("worst-stage"),
|
|
705
|
-
outcome_precedence: stageOutcomePrecedenceSchema,
|
|
706
|
-
blocker_precedence: z.literal("outcome-then-rule-priority"),
|
|
707
|
-
tie_breaker: z.literal("signal-code"),
|
|
708
|
-
})
|
|
709
|
-
.strict(),
|
|
710
|
-
coverage: z
|
|
711
|
-
.object({
|
|
712
|
-
unknown_signals: z.literal("uncovered"),
|
|
713
|
-
contradicted_signals: z.literal("uncovered"),
|
|
714
|
-
})
|
|
715
|
-
.strict(),
|
|
716
|
-
freshness: z
|
|
717
|
-
.object({
|
|
718
|
-
source: z.literal("observation-freshness-policy"),
|
|
719
|
-
aggregation: z.enum(["worst-required-signal", "worst-evaluated-signal", "worst-signal"]),
|
|
720
|
-
})
|
|
721
|
-
.strict(),
|
|
722
|
-
public_states: z
|
|
723
|
-
.object({
|
|
724
|
-
pass: publicStateDescriptorSchema,
|
|
725
|
-
constrained: publicStateDescriptorSchema,
|
|
726
|
-
fail: publicStateDescriptorSchema,
|
|
727
|
-
unknown: publicStateDescriptorSchema,
|
|
728
|
-
not_applicable: publicStateDescriptorSchema,
|
|
729
|
-
})
|
|
730
|
-
.strict(),
|
|
731
|
-
grading: agentReadinessGradingSchema,
|
|
732
|
-
grade_derivation: z
|
|
733
|
-
.object({
|
|
734
|
-
label: z.string().min(1).max(80),
|
|
735
|
-
explanation: z.string().min(1).max(500),
|
|
736
|
-
coverage_rule: z.string().min(1).max(280),
|
|
737
|
-
outcome_rule: z.string().min(1).max(280),
|
|
738
|
-
})
|
|
739
|
-
.strict(),
|
|
740
|
-
})
|
|
741
|
-
.strict()
|
|
742
|
-
.superRefine((value, context) => {
|
|
743
|
-
const keys = value.signal_rules.map((rule) => `${rule.stage}:${rule.signal_code}`);
|
|
744
|
-
if (new Set(keys).size !== keys.length) {
|
|
745
|
-
context.addIssue({
|
|
746
|
-
code: "custom",
|
|
747
|
-
path: ["signal_rules"],
|
|
748
|
-
message: "An agent readiness policy cannot repeat a stage signal rule.",
|
|
749
|
-
});
|
|
750
|
-
}
|
|
751
|
-
const priorities = value.signal_rules.map((rule) => `${rule.stage}:${rule.priority}`);
|
|
752
|
-
if (new Set(priorities).size !== priorities.length) {
|
|
753
|
-
context.addIssue({
|
|
754
|
-
code: "custom",
|
|
755
|
-
path: ["signal_rules"],
|
|
756
|
-
message: "Agent readiness rule priorities must be unique within each stage.",
|
|
757
|
-
});
|
|
758
|
-
}
|
|
759
|
-
const methodDigests = new Set(value.assessment_methods.map((method) => method.method_digest));
|
|
760
|
-
if (methodDigests.size !== value.assessment_methods.length) {
|
|
761
|
-
context.addIssue({
|
|
762
|
-
code: "custom",
|
|
763
|
-
path: ["assessment_methods"],
|
|
764
|
-
message: "Agent readiness policy method digests must be unique.",
|
|
765
|
-
});
|
|
766
|
-
}
|
|
767
|
-
for (const [index, rule] of value.signal_rules.entries()) {
|
|
768
|
-
for (const methodDigest of rule.allowed_method_digests) {
|
|
769
|
-
if (!methodDigests.has(methodDigest)) {
|
|
770
|
-
context.addIssue({
|
|
771
|
-
code: "custom",
|
|
772
|
-
path: ["signal_rules", index, "allowed_method_digests"],
|
|
773
|
-
message: `Agent readiness signal rule references unresolved method ${methodDigest}.`,
|
|
774
|
-
});
|
|
775
|
-
}
|
|
776
|
-
}
|
|
777
|
-
if (rule.evaluation_role === "graded" && !rule.required) {
|
|
778
|
-
context.addIssue({
|
|
779
|
-
code: "custom",
|
|
780
|
-
path: ["signal_rules", index, "required"],
|
|
781
|
-
message: "Every graded Agent Readiness signal is required for coverage.",
|
|
782
|
-
});
|
|
783
|
-
}
|
|
784
|
-
if (rule.evaluation_role === "informational" && rule.required) {
|
|
785
|
-
context.addIssue({
|
|
786
|
-
code: "custom",
|
|
787
|
-
path: ["signal_rules", index, "required"],
|
|
788
|
-
message: "Informational Agent Readiness signals cannot be required for coverage.",
|
|
789
|
-
});
|
|
790
|
-
}
|
|
791
|
-
if (rule.evaluation_role === "barrier" && rule.required) {
|
|
792
|
-
context.addIssue({
|
|
793
|
-
code: "custom",
|
|
794
|
-
path: ["signal_rules", index, "required"],
|
|
795
|
-
message: "Barrier Agent Readiness signals cannot be required for core coverage.",
|
|
796
|
-
});
|
|
797
|
-
}
|
|
798
|
-
const standardSelectorKeys = rule.selector_groups.flatMap((group) => group.alternatives.flatMap((alternative) => alternative.selectors
|
|
799
|
-
.filter((selector) => selector.kind === "standard_requirement")
|
|
800
|
-
.map((selector) => standardRequirementKey(selector.requirement))));
|
|
801
|
-
if (standardSelectorKeys.some((key) => !rule.standard_evidence.some(({ requirement }) => standardRequirementKey(requirement) === key))) {
|
|
802
|
-
context.addIssue({
|
|
803
|
-
code: "custom",
|
|
804
|
-
path: ["signal_rules", index, "selector_groups"],
|
|
805
|
-
message: "Standard requirement selectors must bind exact policy evidence mappings.",
|
|
806
|
-
});
|
|
807
|
-
}
|
|
808
|
-
}
|
|
809
|
-
for (const stage of agentReadinessStageSchema.options) {
|
|
810
|
-
if (!value.signal_rules.some((rule) => rule.stage === stage && rule.evaluation_role === "graded" && rule.required)) {
|
|
811
|
-
context.addIssue({
|
|
812
|
-
code: "custom",
|
|
813
|
-
path: ["signal_rules"],
|
|
814
|
-
message: `Agent readiness policy has no required graded rules for ${stage}.`,
|
|
815
|
-
});
|
|
816
|
-
}
|
|
817
|
-
}
|
|
818
|
-
const expectedStates = {
|
|
819
|
-
pass: "ready",
|
|
820
|
-
constrained: "limited",
|
|
821
|
-
fail: "blocked",
|
|
822
|
-
unknown: "unknown",
|
|
823
|
-
not_applicable: "not_applicable",
|
|
824
|
-
};
|
|
825
|
-
for (const [outcome, state] of Object.entries(expectedStates)) {
|
|
826
|
-
if (value.public_states[outcome].state !== state) {
|
|
827
|
-
context.addIssue({
|
|
828
|
-
code: "custom",
|
|
829
|
-
path: ["public_states", outcome, "state"],
|
|
830
|
-
message: `Outcome ${outcome} must project to public state ${state}.`,
|
|
831
|
-
});
|
|
832
|
-
}
|
|
833
|
-
}
|
|
834
|
-
});
|
|
835
|
-
export const agentReadinessPolicySchema = agentReadinessPolicyCoreSchema
|
|
836
|
-
.safeExtend({ policy_digest: agentReadinessDigestSchema })
|
|
837
|
-
.strict();
|
|
838
|
-
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
|
|
839
237
|
.object({
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
238
|
+
step: agentReadinessStepSchema,
|
|
239
|
+
outcome: agentReadinessStepOutcomeSchema,
|
|
240
|
+
timing: agentReadinessHandoffTimingSchema.nullable(),
|
|
843
241
|
})
|
|
844
242
|
.strict();
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
.object({
|
|
854
|
-
signal_code: agentReadinessSignalCodeSchema,
|
|
855
|
-
condition: z.string().min(1).max(160),
|
|
856
|
-
finding: z.string().min(1).max(280),
|
|
857
|
-
context: agentReadinessPublicClaimTextSchema.optional(),
|
|
858
|
-
})
|
|
859
|
-
.strict();
|
|
860
|
-
export const agentReadinessProjectedSignalSchema = z
|
|
861
|
-
.object({
|
|
862
|
-
signal_code: agentReadinessSignalCodeSchema,
|
|
863
|
-
evaluation_role: agentReadinessEvaluationRoleSchema,
|
|
864
|
-
required: z.boolean(),
|
|
865
|
-
value: agentReadinessSignalValueSchema,
|
|
866
|
-
value_label: z.string().min(1).max(40),
|
|
867
|
-
outcome: agentReadinessStageOutcomeSchema,
|
|
868
|
-
public_state: agentReadinessPublicStateSchema,
|
|
869
|
-
condition: z.string().min(1).max(160),
|
|
870
|
-
finding: z.string().min(1).max(280),
|
|
871
|
-
evidence_status: z.enum(["supported", "contradicted", "mixed", "missing"]),
|
|
872
|
-
freshness: agentReadinessFreshnessSchema,
|
|
873
|
-
observed_at: agentReadinessInstantSchema.optional(),
|
|
874
|
-
tested_surfaces: z.array(agentReadinessSurfaceReferenceSchema),
|
|
875
|
-
assessment_method: agentReadinessAssessmentMethodSchema.optional(),
|
|
876
|
-
determination_bases: z.array(agentReadinessDeterminationBasisSchema),
|
|
877
|
-
note: agentReadinessPublicClaimTextSchema.optional(),
|
|
878
|
-
blocker: projectedBlockerSchema.optional(),
|
|
879
|
-
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),
|
|
880
251
|
})
|
|
881
252
|
.strict();
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
primary_finding: projectedFindingSchema,
|
|
890
|
-
secondary_context: z.array(projectedFindingSchema),
|
|
891
|
-
signals: z.array(agentReadinessProjectedSignalSchema),
|
|
892
|
-
blockers: z.array(projectedBlockerSchema),
|
|
893
|
-
remediations: z.array(projectedRemediationSchema),
|
|
894
|
-
})
|
|
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 })
|
|
895
260
|
.strict();
|
|
896
|
-
export const agentReadinessPublicationVisibilitySchema = z.enum([
|
|
897
|
-
"discoverable",
|
|
898
|
-
"resolvable_only",
|
|
899
|
-
"private",
|
|
900
|
-
]);
|
|
901
261
|
export const agentReadinessProjectionCoreSchema = z
|
|
902
262
|
.object({
|
|
903
263
|
projection_contract: z.literal("sourcey.agent-readiness-projection/v1alpha1"),
|
|
@@ -909,7 +269,6 @@ export const agentReadinessProjectionCoreSchema = z
|
|
|
909
269
|
declaration: agentReadinessDeclarationStateSchema,
|
|
910
270
|
surface_catalog: z
|
|
911
271
|
.object({
|
|
912
|
-
assessment_targets: z.array(agentReadinessAssessmentTargetSchema),
|
|
913
272
|
participants: z.array(agentReadinessParticipantSchema),
|
|
914
273
|
resources: z.array(agentReadinessResourceSchema),
|
|
915
274
|
endpoints: z.array(agentReadinessEndpointSchema),
|
|
@@ -925,98 +284,53 @@ export const agentReadinessProjectionCoreSchema = z
|
|
|
925
284
|
policy_digest: agentReadinessDigestSchema,
|
|
926
285
|
policy_version: z.string().min(1),
|
|
927
286
|
policy_as_of: agentReadinessInstantSchema,
|
|
928
|
-
|
|
929
|
-
overall_outcome: agentReadinessStageOutcomeSchema,
|
|
930
|
-
public_state: agentReadinessPublicStateSchema,
|
|
931
|
-
state_label: z.string().min(1).max(40),
|
|
932
|
-
grade: agentReadinessGradeSchema,
|
|
933
|
-
grade_derivation: z
|
|
287
|
+
job: z
|
|
934
288
|
.object({
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
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),
|
|
939
294
|
})
|
|
940
295
|
.strict(),
|
|
941
|
-
|
|
296
|
+
/** The interface the rated binding uses; null until a binding has run. */
|
|
297
|
+
interface_id: agentReadinessScopeKeySchema.nullable(),
|
|
298
|
+
label: agentReadinessEvidenceLabelSchema,
|
|
299
|
+
operate: z
|
|
942
300
|
.object({
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
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()),
|
|
953
314
|
})
|
|
954
315
|
.strict(),
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
blocker: projectedBlockerSchema.optional(),
|
|
962
|
-
})
|
|
963
|
-
.strict()
|
|
964
|
-
.optional(),
|
|
965
|
-
first_blocked_stage: z
|
|
966
|
-
.object({
|
|
967
|
-
stage: agentReadinessStageSchema,
|
|
968
|
-
stage_label: z.string().min(1).max(40),
|
|
969
|
-
finding: projectedFindingSchema,
|
|
970
|
-
blocker: projectedBlockerSchema.optional(),
|
|
971
|
-
})
|
|
972
|
-
.strict()
|
|
973
|
-
.optional(),
|
|
974
|
-
limitations: z.array(z
|
|
975
|
-
.object({
|
|
976
|
-
stage: agentReadinessStageSchema,
|
|
977
|
-
stage_label: z.string().min(1).max(40),
|
|
978
|
-
finding: projectedFindingSchema,
|
|
979
|
-
remediation: projectedRemediationSchema.optional(),
|
|
980
|
-
})
|
|
981
|
-
.strict()),
|
|
982
|
-
stages: z.array(agentReadinessStageProjectionSchema).length(5),
|
|
983
|
-
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
|
|
984
322
|
.object({
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
covered_signals: z.number().int().nonnegative(),
|
|
988
|
-
ratio: z.number().min(0).max(1),
|
|
989
|
-
barrier_signals: z.number().int().nonnegative(),
|
|
990
|
-
verified_barrier_signals: z.number().int().nonnegative(),
|
|
991
|
-
barrier_ratio: z.number().min(0).max(1),
|
|
323
|
+
visibility: agentReadinessPublicationVisibilitySchema,
|
|
324
|
+
reasons: z.array(z.enum(["lifecycle_not_active", "open_dispute"])),
|
|
992
325
|
})
|
|
993
326
|
.strict(),
|
|
994
|
-
|
|
995
|
-
freshness: agentReadinessFreshnessSchema,
|
|
996
|
-
provenance: provenanceSchema,
|
|
327
|
+
provenance: agentReadinessProvenanceSchema,
|
|
997
328
|
canonical_url: z.url(),
|
|
998
329
|
})
|
|
999
330
|
.strict();
|
|
1000
331
|
export const agentReadinessProjectionSchema = agentReadinessProjectionCoreSchema
|
|
1001
332
|
.safeExtend({ projection_digest: agentReadinessDigestSchema })
|
|
1002
333
|
.strict();
|
|
1003
|
-
export const agentReadinessStageSummarySchema = agentReadinessStageProjectionSchema
|
|
1004
|
-
.pick({
|
|
1005
|
-
stage: true,
|
|
1006
|
-
stage_label: true,
|
|
1007
|
-
outcome: true,
|
|
1008
|
-
public_state: true,
|
|
1009
|
-
state_label: true,
|
|
1010
|
-
primary_finding: true,
|
|
1011
|
-
})
|
|
1012
|
-
.strict();
|
|
1013
|
-
export const agentReadinessProvenanceSummarySchema = provenanceSchema
|
|
1014
|
-
.pick({
|
|
1015
|
-
freshness: true,
|
|
1016
|
-
dispute: true,
|
|
1017
|
-
vendor_attestation: true,
|
|
1018
|
-
})
|
|
1019
|
-
.strict();
|
|
1020
334
|
export const agentReadinessProfileSummarySchema = agentReadinessProjectionSchema
|
|
1021
335
|
.pick({
|
|
1022
336
|
agent_readiness_profile_id: true,
|
|
@@ -1029,24 +343,61 @@ export const agentReadinessProfileSummarySchema = agentReadinessProjectionSchema
|
|
|
1029
343
|
policy_digest: true,
|
|
1030
344
|
policy_version: true,
|
|
1031
345
|
policy_as_of: true,
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
state_label: true,
|
|
1035
|
-
grade: true,
|
|
1036
|
-
grade_derivation: true,
|
|
346
|
+
label: true,
|
|
347
|
+
last_run_at: true,
|
|
1037
348
|
publication: true,
|
|
1038
|
-
|
|
1039
|
-
coverage: true,
|
|
1040
|
-
last_tested_at: true,
|
|
1041
|
-
freshness: true,
|
|
349
|
+
provenance: true,
|
|
1042
350
|
canonical_url: true,
|
|
1043
351
|
projection_digest: true,
|
|
1044
352
|
})
|
|
1045
353
|
.safeExtend({
|
|
1046
|
-
|
|
1047
|
-
|
|
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,
|
|
1048
379
|
})
|
|
1049
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
|
+
}
|
|
1050
401
|
/** The one compact public-list projection of a complete released profile. */
|
|
1051
402
|
export function summarizeAgentReadinessProfile(profile) {
|
|
1052
403
|
return agentReadinessProfileSummarySchema.parse({
|
|
@@ -1060,60 +411,25 @@ export function summarizeAgentReadinessProfile(profile) {
|
|
|
1060
411
|
policy_digest: profile.policy_digest,
|
|
1061
412
|
policy_version: profile.policy_version,
|
|
1062
413
|
policy_as_of: profile.policy_as_of,
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
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,
|
|
1068
418
|
publication: profile.publication,
|
|
1069
|
-
|
|
1070
|
-
stages: profile.stages.map((stage) => ({
|
|
1071
|
-
stage: stage.stage,
|
|
1072
|
-
stage_label: stage.stage_label,
|
|
1073
|
-
outcome: stage.outcome,
|
|
1074
|
-
public_state: stage.public_state,
|
|
1075
|
-
state_label: stage.state_label,
|
|
1076
|
-
primary_finding: stage.primary_finding,
|
|
1077
|
-
})),
|
|
1078
|
-
coverage: profile.coverage,
|
|
1079
|
-
last_tested_at: profile.last_tested_at,
|
|
1080
|
-
freshness: profile.freshness,
|
|
1081
|
-
provenance: {
|
|
1082
|
-
freshness: profile.provenance.freshness,
|
|
1083
|
-
dispute: profile.provenance.dispute,
|
|
1084
|
-
vendor_attestation: profile.provenance.vendor_attestation,
|
|
1085
|
-
},
|
|
419
|
+
provenance: profile.provenance,
|
|
1086
420
|
canonical_url: profile.canonical_url,
|
|
1087
421
|
projection_digest: profile.projection_digest,
|
|
1088
422
|
});
|
|
1089
423
|
}
|
|
1090
|
-
/**
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
*/
|
|
1095
|
-
export const agentReadinessProjectionLineageSchema = z
|
|
1096
|
-
.object({
|
|
1097
|
-
projection_contract: z.literal("sourcey.agent-readiness-projection/v1alpha1"),
|
|
1098
|
-
agent_readiness_profile_id: agentReadinessProfileIdSchema,
|
|
1099
|
-
entity_id: agentReadinessEntityIdSchema,
|
|
1100
|
-
scope: agentReadinessScopeSchema,
|
|
1101
|
-
lifecycle: lifecycleStatusSchema,
|
|
1102
|
-
revision_digest: agentReadinessDigestSchema,
|
|
1103
|
-
policy_digest: agentReadinessDigestSchema,
|
|
1104
|
-
policy_as_of: agentReadinessInstantSchema,
|
|
1105
|
-
publication: z.object({ visibility: agentReadinessPublicationVisibilitySchema }).passthrough(),
|
|
1106
|
-
provenance: z.object({ freshness_policy_digest: agentReadinessDigestSchema }).passthrough(),
|
|
1107
|
-
canonical_url: z.url(),
|
|
1108
|
-
projection_digest: agentReadinessDigestSchema,
|
|
1109
|
-
})
|
|
1110
|
-
.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
|
+
}
|
|
1111
428
|
const agentReadinessOfferRelationRevisionFields = {
|
|
1112
429
|
relation_id: agentReadinessIdentifierSchema,
|
|
1113
430
|
agent_readiness_profile_id: agentReadinessProfileIdSchema,
|
|
1114
431
|
offer_id: agentReadinessOfferIdSchema,
|
|
1115
432
|
purpose: agentReadinessOfferRelationPurposeSchema,
|
|
1116
|
-
applicable_stages: z.array(agentReadinessStageSchema).min(1),
|
|
1117
433
|
effective_from: agentReadinessInstantSchema,
|
|
1118
434
|
effective_until: agentReadinessInstantSchema.optional(),
|
|
1119
435
|
declaration_revision_digest: agentReadinessDigestSchema,
|
|
@@ -1126,7 +442,7 @@ const agentReadinessOfferRelationRevisionFieldsSchema = z
|
|
|
1126
442
|
...agentReadinessOfferRelationRevisionFields,
|
|
1127
443
|
})
|
|
1128
444
|
.strict();
|
|
1129
|
-
export const agentReadinessOfferRelationRevisionCoreSchema = agentReadinessOfferRelationRevisionFieldsSchema.superRefine(
|
|
445
|
+
export const agentReadinessOfferRelationRevisionCoreSchema = agentReadinessOfferRelationRevisionFieldsSchema.superRefine(validateOfferRelationInterval);
|
|
1130
446
|
export const agentReadinessOfferRelationRevisionSchema = agentReadinessOfferRelationRevisionCoreSchema
|
|
1131
447
|
.safeExtend({ relation_revision_digest: agentReadinessDigestSchema })
|
|
1132
448
|
.strict();
|
|
@@ -1336,7 +652,7 @@ export const agentReadinessDeltaObjectSchema = z
|
|
|
1336
652
|
agent_readiness_profile_id: agentReadinessProfileIdSchema,
|
|
1337
653
|
profile_input: agentReadinessProfileInputSchema.nullable(),
|
|
1338
654
|
projection: agentReadinessProjectionSchema.nullable(),
|
|
1339
|
-
prior_projection:
|
|
655
|
+
prior_projection: agentReadinessProjectionSchema.nullable(),
|
|
1340
656
|
catalog_context: z
|
|
1341
657
|
.object({
|
|
1342
658
|
entity_slug: z.string().regex(SLUG_PATTERN),
|
|
@@ -1387,11 +703,11 @@ export const agentReadinessDeltaObjectSchema = z
|
|
|
1387
703
|
return;
|
|
1388
704
|
}
|
|
1389
705
|
if (value.prior_projection &&
|
|
1390
|
-
!
|
|
706
|
+
!sameAgentReadinessScope(value.prior_projection.scope, current.scope)) {
|
|
1391
707
|
context.addIssue({
|
|
1392
708
|
code: "custom",
|
|
1393
709
|
path: ["projection", "scope"],
|
|
1394
|
-
message: "An Agent Readiness profile cannot change product or
|
|
710
|
+
message: "An Agent Readiness profile cannot change product or job identity.",
|
|
1395
711
|
});
|
|
1396
712
|
}
|
|
1397
713
|
if (!value.prior_projection && !value.profile_input) {
|
|
@@ -1434,18 +750,6 @@ export const agentReadinessDeltaObjectSchema = z
|
|
|
1434
750
|
});
|
|
1435
751
|
}
|
|
1436
752
|
});
|
|
1437
|
-
function validateOfferRelationRevision(value, context) {
|
|
1438
|
-
const canonicalStages = agentReadinessStageSchema.options.filter((stage) => value.applicable_stages.includes(stage));
|
|
1439
|
-
if (canonicalStages.length !== value.applicable_stages.length ||
|
|
1440
|
-
canonicalStages.some((stage, index) => value.applicable_stages[index] !== stage)) {
|
|
1441
|
-
context.addIssue({
|
|
1442
|
-
code: "custom",
|
|
1443
|
-
path: ["applicable_stages"],
|
|
1444
|
-
message: "Offer relation stages must be unique and ordered by the canonical funnel.",
|
|
1445
|
-
});
|
|
1446
|
-
}
|
|
1447
|
-
validateOfferRelationInterval(value, context);
|
|
1448
|
-
}
|
|
1449
753
|
function validateOfferRelationInterval(value, context) {
|
|
1450
754
|
if (value.effective_until &&
|
|
1451
755
|
Date.parse(value.effective_until) <= Date.parse(value.effective_from)) {
|
|
@@ -1456,7 +760,7 @@ function validateOfferRelationInterval(value, context) {
|
|
|
1456
760
|
});
|
|
1457
761
|
}
|
|
1458
762
|
}
|
|
1459
|
-
|
|
763
|
+
function sameAgentReadinessOfferRelationIdentity(left, right) {
|
|
1460
764
|
return (left.relation_id === right.relation_id &&
|
|
1461
765
|
left.agent_readiness_profile_id === right.agent_readiness_profile_id &&
|
|
1462
766
|
left.offer_id === right.offer_id &&
|
|
@@ -1497,17 +801,4 @@ function validateRelationMembership(actual, expected, context, path) {
|
|
|
1497
801
|
}
|
|
1498
802
|
}
|
|
1499
803
|
}
|
|
1500
|
-
function sameSurface(left, right) {
|
|
1501
|
-
return left.node_kind === right.node_kind && left.node_id === right.node_id;
|
|
1502
|
-
}
|
|
1503
|
-
function assertUniqueSurfaceReferences(surfaces, context, path) {
|
|
1504
|
-
if (new Set(surfaces.map((surface) => `${surface.node_kind}:${surface.node_id}`)).size !==
|
|
1505
|
-
surfaces.length) {
|
|
1506
|
-
context.addIssue({
|
|
1507
|
-
code: "custom",
|
|
1508
|
-
path,
|
|
1509
|
-
message: "Surface references must be unique.",
|
|
1510
|
-
});
|
|
1511
|
-
}
|
|
1512
|
-
}
|
|
1513
804
|
//# sourceMappingURL=index.js.map
|