agentskeptic 0.2.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/README.md +39 -39
  2. package/config/marketing.json +187 -0
  3. package/dist/actionableFailure.d.ts.map +1 -1
  4. package/dist/actionableFailure.js +95 -0
  5. package/dist/actionableFailure.js.map +1 -1
  6. package/dist/actionableFailure.remediationExhaustive.test.js +4 -4
  7. package/dist/actionableFailure.remediationExhaustive.test.js.map +1 -1
  8. package/dist/agentRunBundle.d.ts +2 -0
  9. package/dist/agentRunBundle.d.ts.map +1 -1
  10. package/dist/agentRunBundle.js +4 -0
  11. package/dist/agentRunBundle.js.map +1 -1
  12. package/dist/assurance/assurancePathArgs.d.ts.map +1 -1
  13. package/dist/assurance/assurancePathArgs.js +1 -0
  14. package/dist/assurance/assurancePathArgs.js.map +1 -1
  15. package/dist/assurance/buildAssuranceOutput.d.ts +29 -0
  16. package/dist/assurance/buildAssuranceOutput.d.ts.map +1 -0
  17. package/dist/assurance/buildAssuranceOutput.js +53 -0
  18. package/dist/assurance/buildAssuranceOutput.js.map +1 -0
  19. package/dist/assurance/checkStale.d.ts +7 -0
  20. package/dist/assurance/checkStale.d.ts.map +1 -1
  21. package/dist/assurance/checkStale.js +14 -3
  22. package/dist/assurance/checkStale.js.map +1 -1
  23. package/dist/assurance/runAssurance.d.ts.map +1 -1
  24. package/dist/assurance/runAssurance.js +26 -3
  25. package/dist/assurance/runAssurance.js.map +1 -1
  26. package/dist/bootstrap/executeBootstrapPack.d.ts.map +1 -1
  27. package/dist/bootstrap/executeBootstrapPack.js +3 -2
  28. package/dist/bootstrap/executeBootstrapPack.js.map +1 -1
  29. package/dist/certificateDigest.d.ts +4 -0
  30. package/dist/certificateDigest.d.ts.map +1 -0
  31. package/dist/certificateDigest.js +7 -0
  32. package/dist/certificateDigest.js.map +1 -0
  33. package/dist/certificateDigest.test.d.ts +2 -0
  34. package/dist/certificateDigest.test.d.ts.map +1 -0
  35. package/dist/certificateDigest.test.js +14 -0
  36. package/dist/certificateDigest.test.js.map +1 -0
  37. package/dist/ciLockWorkflow.js +1 -1
  38. package/dist/cli/lockOrchestration.d.ts.map +1 -1
  39. package/dist/cli/lockOrchestration.js +81 -50
  40. package/dist/cli/lockOrchestration.js.map +1 -1
  41. package/dist/cli/lockOrchestration.test.js +7 -1
  42. package/dist/cli/lockOrchestration.test.js.map +1 -1
  43. package/dist/cli/runFunnelAnonSet.js +1 -1
  44. package/dist/cli.js +147 -136
  45. package/dist/cli.js.map +1 -1
  46. package/dist/cliArgv.d.ts +4 -1
  47. package/dist/cliArgv.d.ts.map +1 -1
  48. package/dist/cliArgv.js +9 -4
  49. package/dist/cliArgv.js.map +1 -1
  50. package/dist/cliArgv.test.d.ts +2 -0
  51. package/dist/cliArgv.test.d.ts.map +1 -0
  52. package/dist/cliArgv.test.js +34 -0
  53. package/dist/cliArgv.test.js.map +1 -0
  54. package/dist/cliOperationalCodes.d.ts +8 -0
  55. package/dist/cliOperationalCodes.d.ts.map +1 -1
  56. package/dist/cliOperationalCodes.js +8 -0
  57. package/dist/cliOperationalCodes.js.map +1 -1
  58. package/dist/commercial/activationCorrelation.d.ts +3 -0
  59. package/dist/commercial/activationCorrelation.d.ts.map +1 -0
  60. package/dist/commercial/activationCorrelation.js +6 -0
  61. package/dist/commercial/activationCorrelation.js.map +1 -0
  62. package/dist/commercial/getCurrentUsage.d.ts +16 -0
  63. package/dist/commercial/getCurrentUsage.d.ts.map +1 -0
  64. package/dist/commercial/getCurrentUsage.js +33 -0
  65. package/dist/commercial/getCurrentUsage.js.map +1 -0
  66. package/dist/commercial/licensePreflight.d.ts +1 -0
  67. package/dist/commercial/licensePreflight.d.ts.map +1 -1
  68. package/dist/commercial/licensePreflight.js +27 -8
  69. package/dist/commercial/licensePreflight.js.map +1 -1
  70. package/dist/commercial/postVerifyOutcomeBeacon.d.ts +5 -3
  71. package/dist/commercial/postVerifyOutcomeBeacon.d.ts.map +1 -1
  72. package/dist/commercial/postVerifyOutcomeBeacon.js +17 -10
  73. package/dist/commercial/postVerifyOutcomeBeacon.js.map +1 -1
  74. package/dist/commercial/verifyOutcomeBeaconBody.d.ts +12 -0
  75. package/dist/commercial/verifyOutcomeBeaconBody.d.ts.map +1 -0
  76. package/dist/commercial/verifyOutcomeBeaconBody.js +26 -0
  77. package/dist/commercial/verifyOutcomeBeaconBody.js.map +1 -0
  78. package/dist/commercial/verifyWorkloadClassify.d.ts +2 -7
  79. package/dist/commercial/verifyWorkloadClassify.d.ts.map +1 -1
  80. package/dist/commercial/verifyWorkloadClassify.js +1 -1
  81. package/dist/commercial/verifyWorkloadClassify.js.map +1 -1
  82. package/dist/commercial/verifyWorkloadClassify.test.js +7 -0
  83. package/dist/commercial/verifyWorkloadClassify.test.js.map +1 -1
  84. package/dist/compare.acceptance.test.js +25 -0
  85. package/dist/compare.acceptance.test.js.map +1 -1
  86. package/dist/compareRunManifest.d.ts +32 -0
  87. package/dist/compareRunManifest.d.ts.map +1 -0
  88. package/dist/compareRunManifest.js +60 -0
  89. package/dist/compareRunManifest.js.map +1 -0
  90. package/dist/crossing/crossingDecisionReadyFooter.d.ts +1 -1
  91. package/dist/crossing/crossingDecisionReadyFooter.js +1 -1
  92. package/dist/crossing/runCrossingSubcommand.js +8 -8
  93. package/dist/debug-ui/app.css +42 -0
  94. package/dist/debug-ui/app.js +206 -15
  95. package/dist/debug-ui/index.html +11 -4
  96. package/dist/debug-ui/urlState.d.ts +15 -0
  97. package/dist/debug-ui/urlState.js +92 -0
  98. package/dist/debugCorpus.test.js +33 -7
  99. package/dist/debugCorpus.test.js.map +1 -1
  100. package/dist/debugPanels.d.ts +0 -3
  101. package/dist/debugPanels.d.ts.map +1 -1
  102. package/dist/debugPanels.js +0 -23
  103. package/dist/debugPanels.js.map +1 -1
  104. package/dist/debugPanels.test.js +16 -15
  105. package/dist/debugPanels.test.js.map +1 -1
  106. package/dist/debugServer.d.ts.map +1 -1
  107. package/dist/debugServer.js +19 -16
  108. package/dist/debugServer.js.map +1 -1
  109. package/dist/debugServer.test.js +18 -9
  110. package/dist/debugServer.test.js.map +1 -1
  111. package/dist/debugUiUrlState.test.d.ts +2 -0
  112. package/dist/debugUiUrlState.test.d.ts.map +1 -0
  113. package/dist/debugUiUrlState.test.js +49 -0
  114. package/dist/debugUiUrlState.test.js.map +1 -0
  115. package/dist/decisionBlocker.contract.test.d.ts +2 -0
  116. package/dist/decisionBlocker.contract.test.d.ts.map +1 -0
  117. package/dist/decisionBlocker.contract.test.js +51 -0
  118. package/dist/decisionBlocker.contract.test.js.map +1 -0
  119. package/dist/decisionBlocker.d.ts +10 -0
  120. package/dist/decisionBlocker.d.ts.map +1 -0
  121. package/dist/decisionBlocker.js +66 -0
  122. package/dist/decisionBlocker.js.map +1 -0
  123. package/dist/decisionGate.assertSafe.test.d.ts +2 -0
  124. package/dist/decisionGate.assertSafe.test.d.ts.map +1 -0
  125. package/dist/decisionGate.assertSafe.test.js +52 -0
  126. package/dist/decisionGate.assertSafe.test.js.map +1 -0
  127. package/dist/decisionGate.d.ts +23 -0
  128. package/dist/decisionGate.d.ts.map +1 -0
  129. package/dist/decisionGate.js +85 -0
  130. package/dist/decisionGate.js.map +1 -0
  131. package/dist/decisionGate.persistBundle.test.d.ts +2 -0
  132. package/dist/decisionGate.persistBundle.test.d.ts.map +1 -0
  133. package/dist/{withWorkflowVerification.persistBundle.test.js → decisionGate.persistBundle.test.js} +31 -19
  134. package/dist/decisionGate.persistBundle.test.js.map +1 -0
  135. package/dist/decisionUnsafeError.d.ts +8 -0
  136. package/dist/decisionUnsafeError.d.ts.map +1 -0
  137. package/dist/decisionUnsafeError.js +12 -0
  138. package/dist/decisionUnsafeError.js.map +1 -0
  139. package/dist/discovery-payload-v1.json +167 -59
  140. package/dist/enforceCli.d.ts.map +1 -1
  141. package/dist/enforceCli.js +15 -40
  142. package/dist/enforceCli.js.map +1 -1
  143. package/dist/enforceStateful.d.ts +2 -0
  144. package/dist/enforceStateful.d.ts.map +1 -0
  145. package/dist/enforceStateful.js +106 -0
  146. package/dist/enforceStateful.js.map +1 -0
  147. package/dist/enforcementProjection.d.ts +17 -0
  148. package/dist/enforcementProjection.d.ts.map +1 -0
  149. package/dist/enforcementProjection.js +20 -0
  150. package/dist/enforcementProjection.js.map +1 -0
  151. package/dist/executionPathFindings.d.ts +1 -1
  152. package/dist/executionPathFindings.d.ts.map +1 -1
  153. package/dist/executionPathFindings.js +2 -2
  154. package/dist/executionPathFindings.js.map +1 -1
  155. package/dist/executionTrace.js +2 -2
  156. package/dist/executionTrace.js.map +1 -1
  157. package/dist/executionTrace.test.js +35 -0
  158. package/dist/executionTrace.test.js.map +1 -1
  159. package/dist/executionTraceDiff.d.ts +36 -0
  160. package/dist/executionTraceDiff.d.ts.map +1 -0
  161. package/dist/executionTraceDiff.js +86 -0
  162. package/dist/executionTraceDiff.js.map +1 -0
  163. package/dist/executionTraceDiff.test.d.ts +2 -0
  164. package/dist/executionTraceDiff.test.d.ts.map +1 -0
  165. package/dist/executionTraceDiff.test.js +44 -0
  166. package/dist/executionTraceDiff.test.js.map +1 -0
  167. package/dist/failureCatalog.d.ts +1 -0
  168. package/dist/failureCatalog.d.ts.map +1 -1
  169. package/dist/failureCatalog.js +1 -0
  170. package/dist/failureCatalog.js.map +1 -1
  171. package/dist/failureOriginCatalog.d.ts.map +1 -1
  172. package/dist/failureOriginCatalog.js +20 -0
  173. package/dist/failureOriginCatalog.js.map +1 -1
  174. package/dist/firstFiveMinutesChecklist.d.ts +11 -0
  175. package/dist/firstFiveMinutesChecklist.d.ts.map +1 -0
  176. package/dist/firstFiveMinutesChecklist.js +18 -0
  177. package/dist/firstFiveMinutesChecklist.js.map +1 -0
  178. package/dist/funnel/workflowLineageClassify.d.ts +1 -1
  179. package/dist/funnel/workflowLineageClassify.js +1 -1
  180. package/dist/index.d.ts +22 -7
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +15 -6
  183. package/dist/index.js.map +1 -1
  184. package/dist/langGraphCheckpointTrustGate.d.ts +38 -0
  185. package/dist/langGraphCheckpointTrustGate.d.ts.map +1 -0
  186. package/dist/langGraphCheckpointTrustGate.js +124 -0
  187. package/dist/langGraphCheckpointTrustGate.js.map +1 -0
  188. package/dist/langGraphCheckpointTrustIneligibleCertificate.d.ts +8 -0
  189. package/dist/langGraphCheckpointTrustIneligibleCertificate.d.ts.map +1 -0
  190. package/dist/langGraphCheckpointTrustIneligibleCertificate.js +17 -0
  191. package/dist/langGraphCheckpointTrustIneligibleCertificate.js.map +1 -0
  192. package/dist/langGraphCheckpointTrustUnsafeError.d.ts +8 -0
  193. package/dist/langGraphCheckpointTrustUnsafeError.d.ts.map +1 -0
  194. package/dist/langGraphCheckpointTrustUnsafeError.js +12 -0
  195. package/dist/langGraphCheckpointTrustUnsafeError.js.map +1 -0
  196. package/dist/loadEvents.d.ts +5 -0
  197. package/dist/loadEvents.d.ts.map +1 -1
  198. package/dist/loadEvents.js +32 -0
  199. package/dist/loadEvents.js.map +1 -1
  200. package/dist/operationalDisposition.d.ts +64 -0
  201. package/dist/operationalDisposition.d.ts.map +1 -1
  202. package/dist/operationalDisposition.js +64 -0
  203. package/dist/operationalDisposition.js.map +1 -1
  204. package/dist/outcomeCertificate.d.ts +60 -0
  205. package/dist/outcomeCertificate.d.ts.map +1 -0
  206. package/dist/outcomeCertificate.js +254 -0
  207. package/dist/outcomeCertificate.js.map +1 -0
  208. package/dist/outcomeCertificate.test.d.ts +2 -0
  209. package/dist/outcomeCertificate.test.d.ts.map +1 -0
  210. package/dist/outcomeCertificate.test.js +74 -0
  211. package/dist/outcomeCertificate.test.js.map +1 -0
  212. package/dist/pipeline.d.ts +19 -17
  213. package/dist/pipeline.d.ts.map +1 -1
  214. package/dist/pipeline.js +61 -167
  215. package/dist/pipeline.js.map +1 -1
  216. package/dist/planTransition.test.js +4 -4
  217. package/dist/publicDistribution.generated.d.ts +2 -2
  218. package/dist/publicDistribution.generated.d.ts.map +1 -1
  219. package/dist/publicDistribution.generated.js +7 -8
  220. package/dist/publicDistribution.generated.js.map +1 -1
  221. package/dist/quickVerify/quickVerifyScope.d.ts +1 -1
  222. package/dist/quickVerify/quickVerifyScope.js +1 -1
  223. package/dist/quickVerify/runQuickVerify.js +1 -1
  224. package/dist/quickVerify/runQuickVerify.js.map +1 -1
  225. package/dist/quickVerify/verifyExecution.d.ts +1 -1
  226. package/dist/quickVerify/verifyExecution.d.ts.map +1 -1
  227. package/dist/quickVerify/verifyExecution.js +3 -2
  228. package/dist/quickVerify/verifyExecution.js.map +1 -1
  229. package/dist/reconciler.d.ts +6 -2
  230. package/dist/reconciler.d.ts.map +1 -1
  231. package/dist/reconciler.js +17 -11
  232. package/dist/reconciler.js.map +1 -1
  233. package/dist/registryDraft/createRegistryDraftAjv.d.ts +1 -1
  234. package/dist/registryDraft/createRegistryDraftAjv.js +1 -1
  235. package/dist/regressionArtifact.d.ts +63 -0
  236. package/dist/regressionArtifact.d.ts.map +1 -0
  237. package/dist/regressionArtifact.js +290 -0
  238. package/dist/regressionArtifact.js.map +1 -0
  239. package/dist/relationalInvariant.d.ts +13 -3
  240. package/dist/relationalInvariant.d.ts.map +1 -1
  241. package/dist/relationalInvariant.existsSql.test.js +1 -1
  242. package/dist/relationalInvariant.existsSql.test.js.map +1 -1
  243. package/dist/relationalInvariant.js +59 -39
  244. package/dist/relationalInvariant.js.map +1 -1
  245. package/dist/relationalInvariant.test.js +2 -2
  246. package/dist/relationalInvariant.test.js.map +1 -1
  247. package/dist/resolveExpectation.d.ts +18 -2
  248. package/dist/resolveExpectation.d.ts.map +1 -1
  249. package/dist/resolveExpectation.js +332 -1
  250. package/dist/resolveExpectation.js.map +1 -1
  251. package/dist/resolveExpectation.test.js +25 -0
  252. package/dist/resolveExpectation.test.js.map +1 -1
  253. package/dist/runComparison.d.ts +0 -1
  254. package/dist/runComparison.d.ts.map +1 -1
  255. package/dist/runComparison.js +18 -86
  256. package/dist/runComparison.js.map +1 -1
  257. package/dist/runComparison.test.js +101 -57
  258. package/dist/runComparison.test.js.map +1 -1
  259. package/dist/schema-validation.test.js +29 -0
  260. package/dist/schema-validation.test.js.map +1 -1
  261. package/dist/schemaLoad.d.ts +1 -1
  262. package/dist/schemaLoad.d.ts.map +1 -1
  263. package/dist/schemaLoad.js +15 -0
  264. package/dist/schemaLoad.js.map +1 -1
  265. package/dist/shareReport/postPublicVerificationReport.d.ts +6 -0
  266. package/dist/shareReport/postPublicVerificationReport.d.ts.map +1 -1
  267. package/dist/shareReport/postPublicVerificationReport.js +3 -1
  268. package/dist/shareReport/postPublicVerificationReport.js.map +1 -1
  269. package/dist/sortedJsonStringify.d.ts +2 -0
  270. package/dist/sortedJsonStringify.d.ts.map +1 -0
  271. package/dist/sortedJsonStringify.js +23 -0
  272. package/dist/sortedJsonStringify.js.map +1 -0
  273. package/dist/sqlDialect.d.ts +8 -0
  274. package/dist/sqlDialect.d.ts.map +1 -0
  275. package/dist/sqlDialect.js +37 -0
  276. package/dist/sqlDialect.js.map +1 -0
  277. package/dist/standardVerifyWorkflowCli.d.ts +20 -5
  278. package/dist/standardVerifyWorkflowCli.d.ts.map +1 -1
  279. package/dist/standardVerifyWorkflowCli.js +56 -24
  280. package/dist/standardVerifyWorkflowCli.js.map +1 -1
  281. package/dist/stateWitness.d.ts +4 -0
  282. package/dist/stateWitness.d.ts.map +1 -0
  283. package/dist/stateWitness.js +383 -0
  284. package/dist/stateWitness.js.map +1 -0
  285. package/dist/stateWitness.test.d.ts +2 -0
  286. package/dist/stateWitness.test.d.ts.map +1 -0
  287. package/dist/stateWitness.test.js +120 -0
  288. package/dist/stateWitness.test.js.map +1 -0
  289. package/dist/telemetry/maybeEmitOssClaimTicketUrl.d.ts +2 -0
  290. package/dist/telemetry/maybeEmitOssClaimTicketUrl.d.ts.map +1 -1
  291. package/dist/telemetry/maybeEmitOssClaimTicketUrl.js +13 -2
  292. package/dist/telemetry/maybeEmitOssClaimTicketUrl.js.map +1 -1
  293. package/dist/telemetry/ossClaimOrigin.d.ts +1 -1
  294. package/dist/telemetry/ossClaimOrigin.js +1 -1
  295. package/dist/telemetry/postOssClaimContinuation.d.ts +1 -1
  296. package/dist/telemetry/postOssClaimContinuation.d.ts.map +1 -1
  297. package/dist/telemetry/postOssClaimContinuation.js +10 -6
  298. package/dist/telemetry/postOssClaimContinuation.js.map +1 -1
  299. package/dist/telemetry/postOssClaimTicket.d.ts +8 -0
  300. package/dist/telemetry/postOssClaimTicket.d.ts.map +1 -1
  301. package/dist/telemetry/postOssClaimTicket.js +31 -5
  302. package/dist/telemetry/postOssClaimTicket.js.map +1 -1
  303. package/dist/telemetry/verificationHypothesisContract.d.ts +1 -1
  304. package/dist/telemetry/verificationHypothesisContract.js +1 -1
  305. package/dist/trustDecision.d.ts +8 -0
  306. package/dist/trustDecision.d.ts.map +1 -0
  307. package/dist/trustDecision.js +13 -0
  308. package/dist/trustDecision.js.map +1 -0
  309. package/dist/types.d.ts +139 -7
  310. package/dist/types.d.ts.map +1 -1
  311. package/dist/types.js.map +1 -1
  312. package/dist/verificationConnections.d.ts +10 -0
  313. package/dist/verificationConnections.d.ts.map +1 -0
  314. package/dist/verificationConnections.js +190 -0
  315. package/dist/verificationConnections.js.map +1 -0
  316. package/dist/verificationDatabaseUrl.d.ts +11 -0
  317. package/dist/verificationDatabaseUrl.d.ts.map +1 -0
  318. package/dist/verificationDatabaseUrl.js +41 -0
  319. package/dist/verificationDatabaseUrl.js.map +1 -0
  320. package/dist/verificationDatabaseUrl.test.d.ts +2 -0
  321. package/dist/verificationDatabaseUrl.test.d.ts.map +1 -0
  322. package/dist/verificationDatabaseUrl.test.js +66 -0
  323. package/dist/verificationDatabaseUrl.test.js.map +1 -0
  324. package/dist/verificationDiagnostics.d.ts.map +1 -1
  325. package/dist/verificationDiagnostics.js +33 -9
  326. package/dist/verificationDiagnostics.js.map +1 -1
  327. package/dist/verificationDiagnostics.test.js +15 -0
  328. package/dist/verificationDiagnostics.test.js.map +1 -1
  329. package/dist/verificationPolicy.d.ts +2 -1
  330. package/dist/verificationPolicy.d.ts.map +1 -1
  331. package/dist/verificationPolicy.js +97 -0
  332. package/dist/verificationPolicy.js.map +1 -1
  333. package/dist/verificationPolicy.test.js +7 -0
  334. package/dist/verificationPolicy.test.js.map +1 -1
  335. package/dist/verificationRunContext.d.ts.map +1 -1
  336. package/dist/verificationRunContext.js +3 -0
  337. package/dist/verificationRunContext.js.map +1 -1
  338. package/dist/verificationUserPhrases.d.ts.map +1 -1
  339. package/dist/verificationUserPhrases.js +21 -0
  340. package/dist/verificationUserPhrases.js.map +1 -1
  341. package/dist/verify/batchVerifyTelemetrySubcommand.d.ts.map +1 -1
  342. package/dist/verify/batchVerifyTelemetrySubcommand.js +131 -33
  343. package/dist/verify/batchVerifyTelemetrySubcommand.js.map +1 -1
  344. package/dist/verifyAgentskeptic.d.ts +4 -8
  345. package/dist/verifyAgentskeptic.d.ts.map +1 -1
  346. package/dist/verifyAgentskeptic.js +16 -21
  347. package/dist/verifyAgentskeptic.js.map +1 -1
  348. package/dist/verifyAgentskeptic.test.js +10 -12
  349. package/dist/verifyAgentskeptic.test.js.map +1 -1
  350. package/dist/verifyRunStateFromBufferedRunEvents.d.ts +18 -0
  351. package/dist/verifyRunStateFromBufferedRunEvents.d.ts.map +1 -0
  352. package/dist/verifyRunStateFromBufferedRunEvents.js +65 -0
  353. package/dist/verifyRunStateFromBufferedRunEvents.js.map +1 -0
  354. package/dist/vitestMonorepoRoot.d.ts +10 -0
  355. package/dist/vitestMonorepoRoot.d.ts.map +1 -0
  356. package/dist/vitestMonorepoRoot.js +97 -0
  357. package/dist/vitestMonorepoRoot.js.map +1 -0
  358. package/dist/wireReasonCodes.d.ts +21 -0
  359. package/dist/wireReasonCodes.d.ts.map +1 -1
  360. package/dist/wireReasonCodes.js +21 -0
  361. package/dist/wireReasonCodes.js.map +1 -1
  362. package/package.json +63 -40
  363. package/schemas/assurance-output-v1.schema.json +81 -0
  364. package/schemas/compare-run-manifest-v1.schema.json +65 -0
  365. package/schemas/conformance-normalized-result.schema.json +73 -0
  366. package/schemas/connector-capabilities.schema.json +38 -0
  367. package/schemas/event.schema.json +35 -0
  368. package/schemas/execution-trace-view.schema.json +1 -1
  369. package/schemas/openapi-commercial-v1.in.yaml +616 -17
  370. package/schemas/openapi-commercial-v1.yaml +616 -17
  371. package/schemas/outcome-certificate-v1.schema.json +89 -0
  372. package/schemas/public-verification-report-v2.schema.json +15 -0
  373. package/schemas/quick-verify-report.schema.json +1 -1
  374. package/schemas/regression-artifact-v1.schema.json +212 -0
  375. package/schemas/tools-registry.schema.json +103 -0
  376. package/schemas/workflow-engine-result.schema.json +71 -2
  377. package/schemas/workflow-truth-report.schema.json +12 -0
  378. package/scripts/discovery-acquisition.lib.cjs +60 -97
  379. package/scripts/discovery-payload.lib.cjs +41 -7
  380. package/scripts/emit-primary-marketing.cjs +326 -0
  381. package/scripts/origin.cjs +52 -0
  382. package/scripts/public-product-anchors.cjs +3 -0
  383. package/scripts/validate-marketing.cjs +156 -0
  384. package/dist/withWorkflowVerification.persistBundle.test.d.ts +0 -2
  385. package/dist/withWorkflowVerification.persistBundle.test.d.ts.map +0 -1
  386. package/dist/withWorkflowVerification.persistBundle.test.js.map +0 -1
@@ -0,0 +1,89 @@
1
+ {
2
+ "$id": "https://agentskeptic.com/schemas/outcome-certificate-v1.schema.json",
3
+ "title": "OutcomeCertificateV1",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "schemaVersion",
8
+ "workflowId",
9
+ "runKind",
10
+ "stateRelation",
11
+ "highStakesReliance",
12
+ "relianceRationale",
13
+ "intentSummary",
14
+ "explanation",
15
+ "steps",
16
+ "humanReport"
17
+ ],
18
+ "properties": {
19
+ "schemaVersion": { "type": "integer", "const": 1 },
20
+ "workflowId": { "type": "string", "minLength": 1, "maxLength": 512 },
21
+ "runKind": {
22
+ "type": "string",
23
+ "enum": ["contract_sql", "contract_sql_langgraph_checkpoint_trust", "quick_preview"]
24
+ },
25
+ "stateRelation": {
26
+ "type": "string",
27
+ "enum": ["matches_expectations", "does_not_match", "not_established"]
28
+ },
29
+ "highStakesReliance": { "type": "string", "enum": ["permitted", "prohibited"] },
30
+ "relianceRationale": { "type": "string", "minLength": 1, "maxLength": 8192 },
31
+ "intentSummary": { "type": "string", "minLength": 1, "maxLength": 8192 },
32
+ "explanation": {
33
+ "type": "object",
34
+ "additionalProperties": false,
35
+ "required": ["headline", "details"],
36
+ "properties": {
37
+ "headline": { "type": "string", "minLength": 1, "maxLength": 2048 },
38
+ "details": {
39
+ "type": "array",
40
+ "items": {
41
+ "type": "object",
42
+ "additionalProperties": false,
43
+ "required": ["code", "message"],
44
+ "properties": {
45
+ "code": { "type": "string", "minLength": 1, "maxLength": 256 },
46
+ "message": { "type": "string", "minLength": 1, "maxLength": 4096 }
47
+ }
48
+ }
49
+ }
50
+ }
51
+ },
52
+ "steps": {
53
+ "type": "array",
54
+ "items": {
55
+ "type": "object",
56
+ "additionalProperties": false,
57
+ "required": ["seq", "declaredAction", "expectedOutcome", "observedOutcome"],
58
+ "properties": {
59
+ "seq": { "type": "integer", "minimum": 0 },
60
+ "toolId": { "type": "string", "maxLength": 512 },
61
+ "declaredAction": { "type": "string", "minLength": 1, "maxLength": 4096 },
62
+ "expectedOutcome": { "type": "string", "minLength": 1, "maxLength": 4096 },
63
+ "observedOutcome": { "type": "string", "minLength": 1, "maxLength": 8192 }
64
+ }
65
+ }
66
+ },
67
+ "humanReport": { "type": "string", "minLength": 1, "maxLength": 1048576 },
68
+ "checkpointVerdicts": {
69
+ "type": "array",
70
+ "items": {
71
+ "type": "object",
72
+ "additionalProperties": false,
73
+ "required": ["checkpointKey", "verdict", "seqs", "productionMeaning"],
74
+ "properties": {
75
+ "checkpointKey": { "type": "string", "minLength": 1, "maxLength": 2048 },
76
+ "verdict": {
77
+ "type": "string",
78
+ "enum": ["verified", "inconsistent", "incomplete"]
79
+ },
80
+ "seqs": {
81
+ "type": "array",
82
+ "items": { "type": "integer", "minimum": 0 }
83
+ },
84
+ "productionMeaning": { "type": "string", "minLength": 1, "maxLength": 8192 }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$id": "https://agentskeptic.com/schemas/public-verification-report-v2.schema.json",
3
+ "title": "PublicVerificationReportEnvelopeV2",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": ["schemaVersion", "certificate"],
7
+ "properties": {
8
+ "schemaVersion": { "type": "integer", "const": 2 },
9
+ "certificate": {
10
+ "$ref": "https://agentskeptic.com/schemas/outcome-certificate-v1.schema.json"
11
+ },
12
+ "cliVersion": { "type": "string", "maxLength": 128 },
13
+ "createdFrom": { "type": "string", "maxLength": 256 }
14
+ }
15
+ }
@@ -30,7 +30,7 @@
30
30
  "groundTruth"
31
31
  ],
32
32
  "properties": {
33
- "quickVerifyVersion": { "type": "string", "const": "1.2.0" },
33
+ "quickVerifyVersion": { "type": "string", "const": "1.2.1" },
34
34
  "capabilities": {
35
35
  "type": "array",
36
36
  "const": ["inferred_row", "inferred_related_exists"]
@@ -0,0 +1,212 @@
1
+ {
2
+ "$id": "https://agentskeptic.com/schemas/regression-artifact-v1.schema.json",
3
+ "title": "RegressionArtifactV1",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "schemaVersion",
8
+ "artifactSource",
9
+ "manifestSha256",
10
+ "workflowId",
11
+ "certificateProfile",
12
+ "verification",
13
+ "outcomeCertificates",
14
+ "tracePairwise",
15
+ "narrative",
16
+ "humanText",
17
+ "narrativeHtml"
18
+ ],
19
+ "properties": {
20
+ "schemaVersion": { "const": 1 },
21
+ "artifactSource": { "type": "string", "enum": ["cli_manifest", "debug_corpus"] },
22
+ "manifestSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
23
+ "workflowId": { "type": "string", "minLength": 1 },
24
+ "certificateProfile": {
25
+ "oneOf": [
26
+ {
27
+ "type": "object",
28
+ "additionalProperties": false,
29
+ "required": ["mode", "outcomeCertificateRunKind"],
30
+ "properties": {
31
+ "mode": { "const": "uniform" },
32
+ "outcomeCertificateRunKind": {
33
+ "type": "string",
34
+ "enum": ["contract_sql", "contract_sql_langgraph_checkpoint_trust"]
35
+ }
36
+ }
37
+ },
38
+ {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": ["mode", "entries"],
42
+ "properties": {
43
+ "mode": { "const": "perRun" },
44
+ "entries": {
45
+ "type": "array",
46
+ "minItems": 1,
47
+ "items": {
48
+ "type": "object",
49
+ "additionalProperties": false,
50
+ "required": ["runIndex", "outcomeCertificateRunKind"],
51
+ "properties": {
52
+ "runIndex": { "type": "integer", "minimum": 0 },
53
+ "outcomeCertificateRunKind": {
54
+ "type": "string",
55
+ "enum": ["contract_sql", "contract_sql_langgraph_checkpoint_trust"]
56
+ }
57
+ }
58
+ }
59
+ }
60
+ }
61
+ }
62
+ ]
63
+ },
64
+ "verification": { "$ref": "https://agentskeptic.com/schemas/run-comparison-report.schema.json" },
65
+ "outcomeCertificates": {
66
+ "type": "array",
67
+ "items": {
68
+ "type": "object",
69
+ "additionalProperties": false,
70
+ "required": [
71
+ "runIndex",
72
+ "displayLabel",
73
+ "outcomeCertificateRunKind",
74
+ "certificateCanonicalDigest",
75
+ "certificate"
76
+ ],
77
+ "properties": {
78
+ "runIndex": { "type": "integer", "minimum": 0 },
79
+ "displayLabel": { "type": "string", "minLength": 1 },
80
+ "outcomeCertificateRunKind": {
81
+ "type": "string",
82
+ "enum": ["contract_sql", "contract_sql_langgraph_checkpoint_trust"]
83
+ },
84
+ "certificateCanonicalDigest": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
85
+ "certificate": { "$ref": "https://agentskeptic.com/schemas/outcome-certificate-v1.schema.json" }
86
+ }
87
+ }
88
+ },
89
+ "tracePairwise": {
90
+ "type": "object",
91
+ "additionalProperties": false,
92
+ "required": [
93
+ "priorRunIndex",
94
+ "currentRunIndex",
95
+ "viewBuild",
96
+ "bySeq",
97
+ "seqTimelineOrderDiverged",
98
+ "nonToolEventCounts"
99
+ ],
100
+ "properties": {
101
+ "priorRunIndex": { "type": "integer", "minimum": 0 },
102
+ "currentRunIndex": { "type": "integer", "minimum": 0 },
103
+ "viewBuild": {
104
+ "type": "object",
105
+ "additionalProperties": false,
106
+ "required": ["prior", "current"],
107
+ "properties": {
108
+ "prior": { "$ref": "https://agentskeptic.com/schemas/execution-trace-view.schema.json" },
109
+ "current": { "$ref": "https://agentskeptic.com/schemas/execution-trace-view.schema.json" }
110
+ }
111
+ },
112
+ "bySeq": {
113
+ "type": "array",
114
+ "items": {
115
+ "type": "object",
116
+ "additionalProperties": false,
117
+ "required": ["seq", "class", "prior", "current"],
118
+ "properties": {
119
+ "seq": { "type": "integer", "minimum": 0 },
120
+ "class": { "type": "string", "enum": ["only_in_prior", "only_in_current", "in_both"] },
121
+ "prior": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/evaluatedNodeSummary" }] },
122
+ "current": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/evaluatedNodeSummary" }] }
123
+ }
124
+ }
125
+ },
126
+ "seqTimelineOrderDiverged": { "type": "boolean" },
127
+ "nonToolEventCounts": {
128
+ "type": "object",
129
+ "additionalProperties": false,
130
+ "required": ["prior", "current"],
131
+ "properties": {
132
+ "prior": { "type": "object", "additionalProperties": { "type": "integer", "minimum": 0 } },
133
+ "current": { "type": "object", "additionalProperties": { "type": "integer", "minimum": 0 } }
134
+ }
135
+ }
136
+ }
137
+ },
138
+ "narrative": {
139
+ "type": "object",
140
+ "additionalProperties": false,
141
+ "required": [
142
+ "classification",
143
+ "whyItMatters",
144
+ "headline",
145
+ "structural",
146
+ "traceSummary"
147
+ ],
148
+ "properties": {
149
+ "classification": {
150
+ "type": "string",
151
+ "enum": ["improving", "worsening", "unchanged", "mixed"]
152
+ },
153
+ "whyItMatters": { "type": "string" },
154
+ "headline": { "type": "string" },
155
+ "structural": {
156
+ "type": "object",
157
+ "additionalProperties": false,
158
+ "required": [
159
+ "introducedLogicalStepKeysCount",
160
+ "resolvedLogicalStepKeysCount",
161
+ "recurringSignatureCount"
162
+ ],
163
+ "properties": {
164
+ "introducedLogicalStepKeysCount": { "type": "integer", "minimum": 0 },
165
+ "resolvedLogicalStepKeysCount": { "type": "integer", "minimum": 0 },
166
+ "recurringSignatureCount": { "type": "integer", "minimum": 0 }
167
+ }
168
+ },
169
+ "traceSummary": {
170
+ "type": "object",
171
+ "additionalProperties": false,
172
+ "required": [
173
+ "seqTimelineOrderDiverged",
174
+ "onlyInPriorSeqCount",
175
+ "onlyInCurrentSeqCount",
176
+ "inBothCount",
177
+ "nonToolCountsDiverged"
178
+ ],
179
+ "properties": {
180
+ "seqTimelineOrderDiverged": { "type": "boolean" },
181
+ "onlyInPriorSeqCount": { "type": "integer", "minimum": 0 },
182
+ "onlyInCurrentSeqCount": { "type": "integer", "minimum": 0 },
183
+ "inBothCount": { "type": "integer", "minimum": 0 },
184
+ "nonToolCountsDiverged": { "type": "boolean" }
185
+ }
186
+ }
187
+ }
188
+ },
189
+ "humanText": { "type": "string" },
190
+ "narrativeHtml": { "type": "string", "minLength": 1 }
191
+ },
192
+ "$defs": {
193
+ "evaluatedNodeSummary": {
194
+ "type": "object",
195
+ "additionalProperties": false,
196
+ "required": [
197
+ "ingestIndex",
198
+ "traceStepKind",
199
+ "engineStepStatus",
200
+ "truthOutcomeLabel",
201
+ "toolId"
202
+ ],
203
+ "properties": {
204
+ "ingestIndex": { "type": "integer", "minimum": 0 },
205
+ "traceStepKind": { "type": "string" },
206
+ "engineStepStatus": { "oneOf": [{ "type": "string" }, { "type": "null" }] },
207
+ "truthOutcomeLabel": { "oneOf": [{ "type": "string" }, { "type": "null" }] },
208
+ "toolId": { "oneOf": [{ "type": "string" }, { "type": "null" }] }
209
+ }
210
+ }
211
+ }
212
+ }
@@ -72,12 +72,115 @@
72
72
  "items": { "$ref": "#/$defs/sqlRelationalCheck" }
73
73
  }
74
74
  }
75
+ },
76
+ {
77
+ "type": "object",
78
+ "additionalProperties": false,
79
+ "required": ["kind", "provider", "documentId", "indexName"],
80
+ "properties": {
81
+ "kind": { "const": "vector_document" },
82
+ "provider": { "type": "string", "enum": ["pinecone", "weaviate", "chroma"] },
83
+ "documentId": { "$ref": "#/$defs/stringSpec" },
84
+ "indexName": { "$ref": "#/$defs/stringSpec" },
85
+ "namespace": { "$ref": "#/$defs/stringSpec" },
86
+ "host": { "$ref": "#/$defs/stringSpec" },
87
+ "metadataEq": { "$ref": "#/$defs/requiredFieldsPointer" },
88
+ "expectPayloadSha256": { "$ref": "#/$defs/stringSpec" }
89
+ }
90
+ },
91
+ {
92
+ "type": "object",
93
+ "additionalProperties": false,
94
+ "required": ["kind", "bucket", "key"],
95
+ "properties": {
96
+ "kind": { "const": "object_storage_object" },
97
+ "bucket": { "$ref": "#/$defs/stringSpec" },
98
+ "key": { "$ref": "#/$defs/stringSpec" },
99
+ "endpoint": { "$ref": "#/$defs/stringSpec" },
100
+ "expectSizeBytes": { "$ref": "#/$defs/numberOrPointerSpec" },
101
+ "expectSha256": { "$ref": "#/$defs/stringSpec" },
102
+ "expectEtag": { "$ref": "#/$defs/stringSpec" }
103
+ }
104
+ },
105
+ {
106
+ "type": "object",
107
+ "additionalProperties": false,
108
+ "required": ["kind", "url"],
109
+ "properties": {
110
+ "kind": { "const": "http_witness" },
111
+ "method": { "type": "string", "enum": ["GET", "POST"] },
112
+ "url": { "$ref": "#/$defs/stringSpec" },
113
+ "expectedStatus": { "$ref": "#/$defs/numberOrPointerSpec" },
114
+ "assertions": {
115
+ "type": "array",
116
+ "items": { "$ref": "#/$defs/httpWitnessAssertion" }
117
+ }
118
+ }
119
+ },
120
+ {
121
+ "type": "object",
122
+ "additionalProperties": false,
123
+ "required": ["kind", "collection", "filterPointer", "requiredFields"],
124
+ "properties": {
125
+ "kind": { "const": "mongo_document" },
126
+ "collection": { "$ref": "#/$defs/stringSpec" },
127
+ "filterPointer": {
128
+ "type": "object",
129
+ "additionalProperties": false,
130
+ "required": ["pointer"],
131
+ "properties": {
132
+ "pointer": { "type": "string", "pattern": "^/" }
133
+ }
134
+ },
135
+ "requiredFields": { "$ref": "#/$defs/requiredFieldsPointer" }
136
+ }
75
137
  }
76
138
  ]
77
139
  }
78
140
  }
79
141
  },
80
142
  "$defs": {
143
+ "stringSpec": {
144
+ "oneOf": [
145
+ {
146
+ "type": "object",
147
+ "additionalProperties": false,
148
+ "required": ["const"],
149
+ "properties": { "const": { "type": "string", "minLength": 1 } }
150
+ },
151
+ {
152
+ "type": "object",
153
+ "additionalProperties": false,
154
+ "required": ["pointer"],
155
+ "properties": { "pointer": { "type": "string", "pattern": "^/" } }
156
+ }
157
+ ]
158
+ },
159
+ "numberOrPointerSpec": {
160
+ "oneOf": [
161
+ {
162
+ "type": "object",
163
+ "additionalProperties": false,
164
+ "required": ["const"],
165
+ "properties": { "const": { "type": "number" } }
166
+ },
167
+ {
168
+ "type": "object",
169
+ "additionalProperties": false,
170
+ "required": ["pointer"],
171
+ "properties": { "pointer": { "type": "string", "pattern": "^/" } }
172
+ }
173
+ ]
174
+ },
175
+ "httpWitnessAssertion": {
176
+ "type": "object",
177
+ "additionalProperties": false,
178
+ "required": ["jsonPointer", "value"],
179
+ "properties": {
180
+ "jsonPointer": { "type": "string", "minLength": 1 },
181
+ "value": { "$ref": "#/$defs/scalarOrPointer" }
182
+ }
183
+ },
81
184
  "tableSpec": {
82
185
  "oneOf": [
83
186
  {
@@ -81,7 +81,7 @@
81
81
  "lastRunEvent"
82
82
  ],
83
83
  "properties": {
84
- "maxWireSchemaVersion": { "type": "integer", "enum": [1, 2] },
84
+ "maxWireSchemaVersion": { "type": "integer", "enum": [1, 2, 3] },
85
85
  "retrievalEvents": {
86
86
  "type": "array",
87
87
  "items": {
@@ -414,6 +414,70 @@
414
414
  }
415
415
  }
416
416
  },
417
+ "verificationRequestVectorDocument": {
418
+ "type": "object",
419
+ "additionalProperties": false,
420
+ "required": ["kind", "provider", "documentId", "indexName"],
421
+ "properties": {
422
+ "kind": { "const": "vector_document" },
423
+ "provider": { "type": "string", "enum": ["pinecone", "weaviate", "chroma"] },
424
+ "documentId": { "type": "string", "minLength": 1 },
425
+ "indexName": { "type": "string", "minLength": 1 },
426
+ "namespace": { "type": "string" },
427
+ "host": { "type": "string", "minLength": 1 },
428
+ "metadataSubset": { "type": "object", "additionalProperties": true },
429
+ "expectPayloadSha256": { "type": "string", "minLength": 1 }
430
+ }
431
+ },
432
+ "verificationRequestObjectStorageObject": {
433
+ "type": "object",
434
+ "additionalProperties": false,
435
+ "required": ["kind", "bucket", "key"],
436
+ "properties": {
437
+ "kind": { "const": "object_storage_object" },
438
+ "bucket": { "type": "string", "minLength": 1 },
439
+ "key": { "type": "string", "minLength": 1 },
440
+ "endpoint": { "type": "string", "minLength": 1 },
441
+ "expectSizeBytes": { "type": "number", "minimum": 0 },
442
+ "expectSha256": { "type": "string", "minLength": 1 },
443
+ "expectEtag": { "type": "string", "minLength": 1 }
444
+ }
445
+ },
446
+ "httpWitnessResolvedAssertion": {
447
+ "type": "object",
448
+ "additionalProperties": false,
449
+ "required": ["jsonPointer", "value"],
450
+ "properties": {
451
+ "jsonPointer": { "type": "string", "minLength": 1 },
452
+ "value": { "type": ["string", "number", "boolean", "null"] }
453
+ }
454
+ },
455
+ "verificationRequestHttpWitness": {
456
+ "type": "object",
457
+ "additionalProperties": false,
458
+ "required": ["kind", "method", "url"],
459
+ "properties": {
460
+ "kind": { "const": "http_witness" },
461
+ "method": { "type": "string", "enum": ["GET", "POST"] },
462
+ "url": { "type": "string", "minLength": 1 },
463
+ "expectedStatus": { "type": "integer", "minimum": 100, "maximum": 599 },
464
+ "assertions": {
465
+ "type": "array",
466
+ "items": { "$ref": "#/$defs/httpWitnessResolvedAssertion" }
467
+ }
468
+ }
469
+ },
470
+ "verificationRequestMongoDocument": {
471
+ "type": "object",
472
+ "additionalProperties": false,
473
+ "required": ["kind", "collection", "filter", "requiredFields"],
474
+ "properties": {
475
+ "kind": { "const": "mongo_document" },
476
+ "collection": { "type": "string", "minLength": 1 },
477
+ "filter": { "type": "object", "additionalProperties": true },
478
+ "requiredFields": { "$ref": "#/$defs/requiredFieldsMap" }
479
+ }
480
+ },
417
481
  "effectOutcome": {
418
482
  "type": "object",
419
483
  "additionalProperties": false,
@@ -478,7 +542,11 @@
478
542
  { "$ref": "#/$defs/verificationRequestSqlRow" },
479
543
  { "$ref": "#/$defs/verificationRequestSqlRowAbsent" },
480
544
  { "$ref": "#/$defs/verificationRequestSqlEffects" },
481
- { "$ref": "#/$defs/verificationRequestSqlRelational" }
545
+ { "$ref": "#/$defs/verificationRequestSqlRelational" },
546
+ { "$ref": "#/$defs/verificationRequestVectorDocument" },
547
+ { "$ref": "#/$defs/verificationRequestObjectStorageObject" },
548
+ { "$ref": "#/$defs/verificationRequestHttpWitness" },
549
+ { "$ref": "#/$defs/verificationRequestMongoDocument" }
482
550
  ]
483
551
  },
484
552
  "status": {
@@ -502,6 +570,7 @@
502
570
  },
503
571
  "repeatObservationCount": { "type": "integer", "minimum": 1 },
504
572
  "evaluatedObservationOrdinal": { "type": "integer", "minimum": 1 },
573
+ "langgraphCheckpointKey": { "type": "string", "minLength": 1 },
505
574
  "failureDiagnostic": {
506
575
  "type": "string",
507
576
  "enum": [
@@ -624,6 +624,18 @@
624
624
  },
625
625
  {
626
626
  "$ref": "https://agentskeptic.com/schemas/workflow-engine-result.schema.json#/$defs/verificationRequestSqlRelational"
627
+ },
628
+ {
629
+ "$ref": "https://agentskeptic.com/schemas/workflow-engine-result.schema.json#/$defs/verificationRequestVectorDocument"
630
+ },
631
+ {
632
+ "$ref": "https://agentskeptic.com/schemas/workflow-engine-result.schema.json#/$defs/verificationRequestObjectStorageObject"
633
+ },
634
+ {
635
+ "$ref": "https://agentskeptic.com/schemas/workflow-engine-result.schema.json#/$defs/verificationRequestHttpWitness"
636
+ },
637
+ {
638
+ "$ref": "https://agentskeptic.com/schemas/workflow-engine-result.schema.json#/$defs/verificationRequestMongoDocument"
627
639
  }
628
640
  ]
629
641
  }