@apexops/contracts 0.10.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/artifacts.d.ts +60 -0
  3. package/dist/artifacts.d.ts.map +1 -0
  4. package/dist/artifacts.js +46 -0
  5. package/dist/artifacts.js.map +1 -0
  6. package/dist/common.d.ts +22 -0
  7. package/dist/common.d.ts.map +1 -0
  8. package/dist/common.js +23 -0
  9. package/dist/common.js.map +1 -0
  10. package/dist/deployment.d.ts +100 -0
  11. package/dist/deployment.d.ts.map +1 -0
  12. package/dist/deployment.js +108 -0
  13. package/dist/deployment.js.map +1 -0
  14. package/dist/evidence.d.ts +256 -0
  15. package/dist/evidence.d.ts.map +1 -0
  16. package/dist/evidence.js +382 -0
  17. package/dist/evidence.js.map +1 -0
  18. package/dist/export-schemas.d.ts +2 -0
  19. package/dist/export-schemas.d.ts.map +1 -0
  20. package/dist/export-schemas.js +53 -0
  21. package/dist/export-schemas.js.map +1 -0
  22. package/dist/improvement.d.ts +92 -0
  23. package/dist/improvement.d.ts.map +1 -0
  24. package/dist/improvement.js +119 -0
  25. package/dist/improvement.js.map +1 -0
  26. package/dist/index.d.ts +983 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +128 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/onboarding.d.ts +15 -0
  31. package/dist/onboarding.d.ts.map +1 -0
  32. package/dist/onboarding.js +17 -0
  33. package/dist/onboarding.js.map +1 -0
  34. package/dist/pricing.d.ts +130 -0
  35. package/dist/pricing.d.ts.map +1 -0
  36. package/dist/pricing.js +355 -0
  37. package/dist/pricing.js.map +1 -0
  38. package/dist/runtime.d.ts +284 -0
  39. package/dist/runtime.d.ts.map +1 -0
  40. package/dist/runtime.js +196 -0
  41. package/dist/runtime.js.map +1 -0
  42. package/dist/schema-export.d.ts +15 -0
  43. package/dist/schema-export.d.ts.map +1 -0
  44. package/dist/schema-export.js +49 -0
  45. package/dist/schema-export.js.map +1 -0
  46. package/dist/targets.d.ts +359 -0
  47. package/dist/targets.d.ts.map +1 -0
  48. package/dist/targets.js +394 -0
  49. package/dist/targets.js.map +1 -0
  50. package/dist/test/contracts.test.d.ts +2 -0
  51. package/dist/test/contracts.test.d.ts.map +1 -0
  52. package/dist/test/contracts.test.js +867 -0
  53. package/dist/test/contracts.test.js.map +1 -0
  54. package/package.json +45 -0
  55. package/schemas/approval-evidence-v1.schema.json +172 -0
  56. package/schemas/architecture-availability-v1.schema.json +155 -0
  57. package/schemas/architecture-v1.schema.json +107 -0
  58. package/schemas/capability-pack-manifest-v1.schema.json +59 -0
  59. package/schemas/client-outcome-comparison-v1.schema.json +195 -0
  60. package/schemas/client-outcome-qualification-v1.schema.json +190 -0
  61. package/schemas/client-outcome-v1.schema.json +513 -0
  62. package/schemas/contract-metadata.json +232 -0
  63. package/schemas/cost-estimate-v1.schema.json +165 -0
  64. package/schemas/customization-lock-v1.schema.json +63 -0
  65. package/schemas/deployment-preview-v1.schema.json +180 -0
  66. package/schemas/diagnosis-v1.schema.json +111 -0
  67. package/schemas/environment-inputs-v1.schema.json +106 -0
  68. package/schemas/event-v1.schema.json +74 -0
  69. package/schemas/evidence-manifest-v1.schema.json +111 -0
  70. package/schemas/execution-plan-attestation-v1.schema.json +145 -0
  71. package/schemas/governance-constraints-v1.schema.json +103 -0
  72. package/schemas/iac-binding-v1.schema.json +74 -0
  73. package/schemas/iac-handoff-v1.schema.json +83 -0
  74. package/schemas/implementation-intent-v1.schema.json +89 -0
  75. package/schemas/improvement-decision-v1.schema.json +62 -0
  76. package/schemas/improvement-observation-v1.schema.json +166 -0
  77. package/schemas/improvement-policy-v1.schema.json +204 -0
  78. package/schemas/improvement-proposal-v1.schema.json +144 -0
  79. package/schemas/improvement-recurrence-v1.schema.json +130 -0
  80. package/schemas/input-request-v1.schema.json +242 -0
  81. package/schemas/input-submission-v1.schema.json +205 -0
  82. package/schemas/live-qualification-v1.schema.json +295 -0
  83. package/schemas/logical-resource-manifest-v1.schema.json +123 -0
  84. package/schemas/onboarding-config-v1.schema.json +59 -0
  85. package/schemas/operation-record-v1.schema.json +112 -0
  86. package/schemas/policy-property-map-v1.schema.json +108 -0
  87. package/schemas/pricing-evidence-v1.schema.json +628 -0
  88. package/schemas/pricing-request-v1.schema.json +424 -0
  89. package/schemas/project-config-v1.schema.json +43 -0
  90. package/schemas/quality-measurements-v1.schema.json +54 -0
  91. package/schemas/quality-report-v1.schema.json +114 -0
  92. package/schemas/quality-scorecard-v1.schema.json +109 -0
  93. package/schemas/requirements-v1.schema.json +108 -0
  94. package/schemas/resource-inventory-v1.schema.json +74 -0
  95. package/schemas/review-findings-v1.schema.json +126 -0
  96. package/schemas/run-config-v1.schema.json +133 -0
  97. package/schemas/runtime-bundle-lock-v1.schema.json +59 -0
  98. package/schemas/scenario-v1.schema.json +55 -0
  99. package/schemas/task-envelope-v1.schema.json +122 -0
  100. package/schemas/telemetry-v1.schema.json +117 -0
  101. package/schemas/workload-decision-manifest-v1.schema.json +320 -0
package/dist/common.js ADDED
@@ -0,0 +1,23 @@
1
+ import { FormatRegistry, Type } from "@sinclair/typebox";
2
+ export const CONTRACT_VERSION = "1.0.0";
3
+ export const ContractVersionSchema = Type.Literal(CONTRACT_VERSION);
4
+ export const NonEmptyStringSchema = Type.String({ minLength: 1 });
5
+ export const Sha256Schema = Type.String({ pattern: "^[0-9a-f]{64}$" });
6
+ export const IsoDateTimeSchema = Type.String({ format: "date-time" });
7
+ export const ProjectIdSchema = Type.String({ pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$" });
8
+ export const RunIdSchema = Type.String({ pattern: "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,127}$" });
9
+ export const TaskIdSchema = Type.String({ pattern: "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,127}$" });
10
+ export const EnvironmentSchema = Type.String({ pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$" });
11
+ export const IacToolSchema = Type.Union([Type.Literal("bicep"), Type.Literal("terraform")]);
12
+ export const OperationSchema = Type.Union([Type.Literal("apply"), Type.Literal("destroy")]);
13
+ export const SECRET_FIELD_PATTERN = /(?:secret|password|passphrase|token|authorization|auth[-_]?header|api[-_]?key|private[-_]?key|connection[-_]?string|credential(?:s)?(?:$|[-_]|value|data)|session[-_]?cookie|sas[-_]?token)/i;
14
+ export const SECRET_VALUE_PATTERN = /-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----|\bBearer\s+[A-Za-z0-9._~+\/-]{16,}|\b(?:gh[pousr]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,})\b|\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\b|(?:AccountKey|SharedAccessSignature|ClientSecret)=|[?&](?:sig|signature|access_token)=[^&\s]{8,}|https?:\/\/[^/\s:@]+:[^@\s/]+@/i;
15
+ export function registerContractFormats() {
16
+ if (!FormatRegistry.Has("date-time")) {
17
+ FormatRegistry.Set("date-time", (value) => Number.isFinite(Date.parse(value)));
18
+ }
19
+ if (!FormatRegistry.Has("date")) {
20
+ FormatRegistry.Set("date", (value) => /^\d{4}-\d{2}-\d{2}$/.test(value) && Number.isFinite(Date.parse(`${value}T00:00:00Z`)));
21
+ }
22
+ }
23
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAe,MAAM,mBAAmB,CAAC;AAEtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAgB,CAAC;AAEjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC,CAAC;AACzF,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;AACxF,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5F,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5F,MAAM,CAAC,MAAM,oBAAoB,GAC/B,8LAA8L,CAAC;AACjM,MAAM,CAAC,MAAM,oBAAoB,GAC/B,sVAAsV,CAAC;AAEzV,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,cAAc,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,cAAc,CAAC,GAAG,CAChB,MAAM,EACN,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAClG,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,100 @@
1
+ import { type Static } from "@sinclair/typebox";
2
+ export declare const PreviewChangeV1Schema: import("@sinclair/typebox").TObject<{
3
+ resourceId: import("@sinclair/typebox").TString;
4
+ action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"create">, import("@sinclair/typebox").TLiteral<"update">, import("@sinclair/typebox").TLiteral<"delete">, import("@sinclair/typebox").TLiteral<"replace">, import("@sinclair/typebox").TLiteral<"no-op">, import("@sinclair/typebox").TLiteral<"unknown">]>;
5
+ material: import("@sinclair/typebox").TBoolean;
6
+ details: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
7
+ }>;
8
+ export declare const DeploymentPreviewV1Schema: import("@sinclair/typebox").TObject<{
9
+ schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
10
+ projectId: import("@sinclair/typebox").TString;
11
+ runId: import("@sinclair/typebox").TString;
12
+ environment: import("@sinclair/typebox").TString;
13
+ track: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"bicep">, import("@sinclair/typebox").TLiteral<"terraform">]>;
14
+ operation: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"apply">, import("@sinclair/typebox").TLiteral<"destroy">]>;
15
+ target: import("@sinclair/typebox").TString;
16
+ commit: import("@sinclair/typebox").TString;
17
+ dependencyRevision: import("@sinclair/typebox").TString;
18
+ ownerEpoch: import("@sinclair/typebox").TInteger;
19
+ inputHash: import("@sinclair/typebox").TString;
20
+ iacHash: import("@sinclair/typebox").TString;
21
+ policyHash: import("@sinclair/typebox").TString;
22
+ artifactHash: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
23
+ stateLineage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
24
+ stateSerial: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
25
+ changes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
26
+ resourceId: import("@sinclair/typebox").TString;
27
+ action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"create">, import("@sinclair/typebox").TLiteral<"update">, import("@sinclair/typebox").TLiteral<"delete">, import("@sinclair/typebox").TLiteral<"replace">, import("@sinclair/typebox").TLiteral<"no-op">, import("@sinclair/typebox").TLiteral<"unknown">]>;
28
+ material: import("@sinclair/typebox").TBoolean;
29
+ details: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
30
+ }>>;
31
+ blockers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
32
+ createdAt: import("@sinclair/typebox").TString;
33
+ expiresAt: import("@sinclair/typebox").TString;
34
+ previewHash: import("@sinclair/typebox").TString;
35
+ }>;
36
+ export declare const ApprovalEvidenceV1Schema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
37
+ schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
38
+ projectId: import("@sinclair/typebox").TString;
39
+ runId: import("@sinclair/typebox").TString;
40
+ gate: import("@sinclair/typebox").TInteger;
41
+ decision: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"approved">, import("@sinclair/typebox").TLiteral<"rejected">]>;
42
+ actor: import("@sinclair/typebox").TString;
43
+ dependencyHash: import("@sinclair/typebox").TString;
44
+ previewHash: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
45
+ writerTransferClaimHash: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
46
+ writerEpoch: import("@sinclair/typebox").TInteger;
47
+ decidedAt: import("@sinclair/typebox").TString;
48
+ expiresAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
49
+ mechanism: import("@sinclair/typebox").TLiteral<"tty">;
50
+ recipientIdentity: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
51
+ }>, import("@sinclair/typebox").TObject<{
52
+ schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
53
+ projectId: import("@sinclair/typebox").TString;
54
+ runId: import("@sinclair/typebox").TString;
55
+ gate: import("@sinclair/typebox").TInteger;
56
+ decision: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"approved">, import("@sinclair/typebox").TLiteral<"rejected">]>;
57
+ actor: import("@sinclair/typebox").TString;
58
+ dependencyHash: import("@sinclair/typebox").TString;
59
+ previewHash: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
60
+ writerTransferClaimHash: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
61
+ writerEpoch: import("@sinclair/typebox").TInteger;
62
+ decidedAt: import("@sinclair/typebox").TString;
63
+ expiresAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
64
+ mechanism: import("@sinclair/typebox").TLiteral<"inherited">;
65
+ recipientIdentity: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
66
+ }>]>;
67
+ export declare const OperationStateSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"requested">, import("@sinclair/typebox").TLiteral<"authorized">, import("@sinclair/typebox").TLiteral<"started">, import("@sinclair/typebox").TLiteral<"observed">, import("@sinclair/typebox").TLiteral<"succeeded">, import("@sinclair/typebox").TLiteral<"failed">, import("@sinclair/typebox").TLiteral<"indeterminate">, import("@sinclair/typebox").TLiteral<"reconciled">, import("@sinclair/typebox").TLiteral<"compensated">]>;
68
+ export declare const OperationRecordV1Schema: import("@sinclair/typebox").TObject<{
69
+ schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
70
+ operationId: import("@sinclair/typebox").TString;
71
+ projectId: import("@sinclair/typebox").TString;
72
+ runId: import("@sinclair/typebox").TString;
73
+ providerOperationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
74
+ operation: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"apply">, import("@sinclair/typebox").TLiteral<"destroy">]>;
75
+ state: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"requested">, import("@sinclair/typebox").TLiteral<"authorized">, import("@sinclair/typebox").TLiteral<"started">, import("@sinclair/typebox").TLiteral<"observed">, import("@sinclair/typebox").TLiteral<"succeeded">, import("@sinclair/typebox").TLiteral<"failed">, import("@sinclair/typebox").TLiteral<"indeterminate">, import("@sinclair/typebox").TLiteral<"reconciled">, import("@sinclair/typebox").TLiteral<"compensated">]>;
76
+ previewHash: import("@sinclair/typebox").TString;
77
+ approvalHash: import("@sinclair/typebox").TString;
78
+ ownerEpoch: import("@sinclair/typebox").TInteger;
79
+ updatedAt: import("@sinclair/typebox").TString;
80
+ errorCode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
81
+ }>;
82
+ export declare const ResourceInventoryV1Schema: import("@sinclair/typebox").TObject<{
83
+ schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
84
+ projectId: import("@sinclair/typebox").TString;
85
+ runId: import("@sinclair/typebox").TString;
86
+ deploymentHash: import("@sinclair/typebox").TString;
87
+ collectedAt: import("@sinclair/typebox").TString;
88
+ resources: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
89
+ logicalId: import("@sinclair/typebox").TString;
90
+ resourceId: import("@sinclair/typebox").TString;
91
+ type: import("@sinclair/typebox").TString;
92
+ location: import("@sinclair/typebox").TString;
93
+ properties: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
94
+ }>>;
95
+ }>;
96
+ export type DeploymentPreviewV1 = Static<typeof DeploymentPreviewV1Schema>;
97
+ export type ApprovalEvidenceV1 = Static<typeof ApprovalEvidenceV1Schema>;
98
+ export type OperationRecordV1 = Static<typeof OperationRecordV1Schema>;
99
+ export type ResourceInventoryV1 = Static<typeof ResourceInventoryV1Schema>;
100
+ //# sourceMappingURL=deployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAatD,eAAO,MAAM,qBAAqB;;;;;EAejC,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBrC,CAAC;AAuBF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoBpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,mfAU/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;EAgBnC,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;EAqBrC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC3E,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACvE,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
@@ -0,0 +1,108 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ import { ContractVersionSchema, EnvironmentSchema, IacToolSchema, IsoDateTimeSchema, NonEmptyStringSchema, OperationSchema, ProjectIdSchema, RunIdSchema, Sha256Schema, } from "./common.js";
3
+ export const PreviewChangeV1Schema = Type.Object({
4
+ resourceId: NonEmptyStringSchema,
5
+ action: Type.Union([
6
+ Type.Literal("create"),
7
+ Type.Literal("update"),
8
+ Type.Literal("delete"),
9
+ Type.Literal("replace"),
10
+ Type.Literal("no-op"),
11
+ Type.Literal("unknown"),
12
+ ]),
13
+ material: Type.Boolean(),
14
+ details: Type.Optional(NonEmptyStringSchema),
15
+ }, { additionalProperties: false });
16
+ export const DeploymentPreviewV1Schema = Type.Object({
17
+ schemaVersion: ContractVersionSchema,
18
+ projectId: ProjectIdSchema,
19
+ runId: RunIdSchema,
20
+ environment: EnvironmentSchema,
21
+ track: IacToolSchema,
22
+ operation: OperationSchema,
23
+ target: NonEmptyStringSchema,
24
+ commit: Sha256Schema,
25
+ dependencyRevision: Sha256Schema,
26
+ ownerEpoch: Type.Integer({ minimum: 1 }),
27
+ inputHash: Sha256Schema,
28
+ iacHash: Sha256Schema,
29
+ policyHash: Sha256Schema,
30
+ artifactHash: Type.Optional(Sha256Schema),
31
+ stateLineage: Type.Optional(NonEmptyStringSchema),
32
+ stateSerial: Type.Optional(Type.Integer({ minimum: 0 })),
33
+ changes: Type.Array(PreviewChangeV1Schema),
34
+ blockers: Type.Array(NonEmptyStringSchema),
35
+ createdAt: IsoDateTimeSchema,
36
+ expiresAt: IsoDateTimeSchema,
37
+ previewHash: Sha256Schema,
38
+ }, { $id: "https://schemas.apexops.dev/deployment-preview-v1.json", additionalProperties: false });
39
+ const approvalEvidenceProperties = {
40
+ schemaVersion: ContractVersionSchema,
41
+ projectId: ProjectIdSchema,
42
+ runId: RunIdSchema,
43
+ gate: Type.Integer({ minimum: 1, maximum: 4 }),
44
+ decision: Type.Union([Type.Literal("approved"), Type.Literal("rejected")]),
45
+ actor: NonEmptyStringSchema,
46
+ dependencyHash: Sha256Schema,
47
+ previewHash: Type.Optional(Sha256Schema),
48
+ writerTransferClaimHash: Type.Optional(Sha256Schema),
49
+ writerEpoch: Type.Integer({ minimum: 1 }),
50
+ decidedAt: Type.String({
51
+ pattern: "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$",
52
+ }),
53
+ expiresAt: Type.Optional(Type.String({
54
+ pattern: "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$",
55
+ })),
56
+ };
57
+ export const ApprovalEvidenceV1Schema = Type.Union([
58
+ Type.Object({
59
+ ...approvalEvidenceProperties,
60
+ mechanism: Type.Literal("tty"),
61
+ recipientIdentity: Type.Optional(NonEmptyStringSchema),
62
+ }, { additionalProperties: false }),
63
+ Type.Object({
64
+ ...approvalEvidenceProperties,
65
+ mechanism: Type.Literal("inherited"),
66
+ recipientIdentity: Type.Optional(NonEmptyStringSchema),
67
+ }, { additionalProperties: false }),
68
+ ], { $id: "https://schemas.apexops.dev/approval-evidence-v1.json" });
69
+ export const OperationStateSchema = Type.Union([
70
+ Type.Literal("requested"),
71
+ Type.Literal("authorized"),
72
+ Type.Literal("started"),
73
+ Type.Literal("observed"),
74
+ Type.Literal("succeeded"),
75
+ Type.Literal("failed"),
76
+ Type.Literal("indeterminate"),
77
+ Type.Literal("reconciled"),
78
+ Type.Literal("compensated"),
79
+ ]);
80
+ export const OperationRecordV1Schema = Type.Object({
81
+ schemaVersion: ContractVersionSchema,
82
+ operationId: NonEmptyStringSchema,
83
+ projectId: ProjectIdSchema,
84
+ runId: RunIdSchema,
85
+ providerOperationId: Type.Optional(NonEmptyStringSchema),
86
+ operation: OperationSchema,
87
+ state: OperationStateSchema,
88
+ previewHash: Sha256Schema,
89
+ approvalHash: Sha256Schema,
90
+ ownerEpoch: Type.Integer({ minimum: 1 }),
91
+ updatedAt: IsoDateTimeSchema,
92
+ errorCode: Type.Optional(NonEmptyStringSchema),
93
+ }, { $id: "https://schemas.apexops.dev/operation-record-v1.json", additionalProperties: false });
94
+ export const ResourceInventoryV1Schema = Type.Object({
95
+ schemaVersion: ContractVersionSchema,
96
+ projectId: ProjectIdSchema,
97
+ runId: RunIdSchema,
98
+ deploymentHash: Sha256Schema,
99
+ collectedAt: IsoDateTimeSchema,
100
+ resources: Type.Array(Type.Object({
101
+ logicalId: NonEmptyStringSchema,
102
+ resourceId: NonEmptyStringSchema,
103
+ type: NonEmptyStringSchema,
104
+ location: NonEmptyStringSchema,
105
+ properties: Type.Record(NonEmptyStringSchema, Type.Unknown()),
106
+ }, { additionalProperties: false })),
107
+ }, { $id: "https://schemas.apexops.dev/resource-inventory-v1.json", additionalProperties: false });
108
+ //# sourceMappingURL=deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,256 @@
1
+ import { type Static } from "@sinclair/typebox";
2
+ export declare const CLIENT_OUTCOME_SCENARIO_IDS: readonly ["CLIENT-001", "CLIENT-002", "CLIENT-003", "CLIENT-004", "CLIENT-005", "CLIENT-006", "CLIENT-007", "CLIENT-008", "CLIENT-009", "CLIENT-010"];
3
+ export declare const CLIENT_OUTCOME_CLIENT_IDS: readonly ["github-copilot-vscode", "github-copilot-cli"];
4
+ export declare const CLIENT_OUTCOME_EQUALITY_PATHS: readonly ["/candidate", "/execution/projectId", "/execution/workflowNode", "/execution/taskState", "/execution/semanticJournalHash", "/execution/ownerEpoch", "/observations/gates", "/observations/artifacts", "/observations/evidence", "/observations/denialCodes", "/observations/transfer", "/observations/assertions", "/disposition"];
5
+ export declare const ClientOutcomeV1Schema: import("@sinclair/typebox").TObject<{
6
+ schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
7
+ scenarioId: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"CLIENT-001" | "CLIENT-002" | "CLIENT-003" | "CLIENT-004" | "CLIENT-005" | "CLIENT-006" | "CLIENT-007" | "CLIENT-008" | "CLIENT-009" | "CLIENT-010">[]>;
8
+ evidenceKind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"fixture">, import("@sinclair/typebox").TLiteral<"live">]>;
9
+ candidate: import("@sinclair/typebox").TObject<{
10
+ repository: import("@sinclair/typebox").TString;
11
+ branch: import("@sinclair/typebox").TString;
12
+ commit: import("@sinclair/typebox").TString;
13
+ packageLockHash: import("@sinclair/typebox").TString;
14
+ releaseManifestHash: import("@sinclair/typebox").TString;
15
+ runtimeBundleHash: import("@sinclair/typebox").TString;
16
+ customizationBundleHash: import("@sinclair/typebox").TString;
17
+ scenarioCorpusHash: import("@sinclair/typebox").TString;
18
+ toolchainHash: import("@sinclair/typebox").TString;
19
+ }>;
20
+ client: import("@sinclair/typebox").TObject<{
21
+ id: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"github-copilot-cli" | "github-copilot-vscode">[]>;
22
+ version: import("@sinclair/typebox").TString;
23
+ extensionVersion: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
24
+ binarySha256: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
25
+ os: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"linux">, import("@sinclair/typebox").TLiteral<"macos">, import("@sinclair/typebox").TLiteral<"windows">]>;
26
+ architecture: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"x64">, import("@sinclair/typebox").TLiteral<"arm64">]>;
27
+ }>;
28
+ execution: import("@sinclair/typebox").TObject<{
29
+ projectId: import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TString]>;
30
+ runId: import("@sinclair/typebox").TString;
31
+ workflowNode: import("@sinclair/typebox").TString;
32
+ taskId: import("@sinclair/typebox").TString;
33
+ taskState: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">, import("@sinclair/typebox").TLiteral<"blocked">, import("@sinclair/typebox").TLiteral<"unavailable">]>;
34
+ rawJournalHead: import("@sinclair/typebox").TString;
35
+ rawJournalSourceDigest: import("@sinclair/typebox").TString;
36
+ semanticJournalHash: import("@sinclair/typebox").TString;
37
+ ownerEpoch: import("@sinclair/typebox").TInteger;
38
+ }>;
39
+ observations: import("@sinclair/typebox").TObject<{
40
+ gates: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
41
+ gate: import("@sinclair/typebox").TInteger;
42
+ state: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"approved">, import("@sinclair/typebox").TLiteral<"denied">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"not-applicable">]>;
43
+ }>>;
44
+ artifacts: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>;
45
+ evidence: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>;
46
+ denialCodes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
47
+ transfer: import("@sinclair/typebox").TObject<{
48
+ result: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"succeeded">, import("@sinclair/typebox").TLiteral<"denied">, import("@sinclair/typebox").TLiteral<"not-applicable">]>;
49
+ ownerEpochDelta: import("@sinclair/typebox").TInteger;
50
+ }>;
51
+ assertions: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pass">, import("@sinclair/typebox").TLiteral<"fail">, import("@sinclair/typebox").TLiteral<"unavailable">]>>;
52
+ }>;
53
+ disposition: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
54
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pass">, import("@sinclair/typebox").TLiteral<"fail">]>;
55
+ reasonCode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
56
+ }>, import("@sinclair/typebox").TObject<{
57
+ status: import("@sinclair/typebox").TLiteral<"unavailable">;
58
+ reasonCode: import("@sinclair/typebox").TString;
59
+ ownerCode: import("@sinclair/typebox").TString;
60
+ nextActionCode: import("@sinclair/typebox").TString;
61
+ }>]>;
62
+ evidence: import("@sinclair/typebox").TObject<{
63
+ sourceDigest: import("@sinclair/typebox").TString;
64
+ attestationHash: import("@sinclair/typebox").TString;
65
+ refs: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
66
+ contentCapture: import("@sinclair/typebox").TLiteral<false>;
67
+ }>;
68
+ outcomeId: import("@sinclair/typebox").TString;
69
+ }>;
70
+ export declare const ClientOutcomeComparisonV1Schema: import("@sinclair/typebox").TObject<{
71
+ schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
72
+ scenarioId: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"CLIENT-001" | "CLIENT-002" | "CLIENT-003" | "CLIENT-004" | "CLIENT-005" | "CLIENT-006" | "CLIENT-007" | "CLIENT-008" | "CLIENT-009" | "CLIENT-010">[]>;
73
+ evidenceKind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"fixture">, import("@sinclair/typebox").TLiteral<"live">]>;
74
+ outcomeIds: import("@sinclair/typebox").TObject<{
75
+ vscode: import("@sinclair/typebox").TString;
76
+ cli: import("@sinclair/typebox").TString;
77
+ }>;
78
+ binding: import("@sinclair/typebox").TObject<{
79
+ candidateId: import("@sinclair/typebox").TString;
80
+ toolchainHash: import("@sinclair/typebox").TString;
81
+ clients: import("@sinclair/typebox").TObject<{
82
+ vscodeVersion: import("@sinclair/typebox").TString;
83
+ vscodeExtensionVersion: import("@sinclair/typebox").TString;
84
+ cliVersion: import("@sinclair/typebox").TString;
85
+ vscodeHostSha256: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
86
+ cliBinarySha256: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
87
+ }>;
88
+ }>;
89
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pass">, import("@sinclair/typebox").TLiteral<"fail">, import("@sinclair/typebox").TLiteral<"unavailable">]>;
90
+ qualifiesRelease: import("@sinclair/typebox").TLiteral<false>;
91
+ mismatches: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
92
+ blockers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
93
+ comparisonId: import("@sinclair/typebox").TString;
94
+ }>;
95
+ export declare const ClientOutcomeQualificationV1Schema: import("@sinclair/typebox").TObject<{
96
+ schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
97
+ evidenceKind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"fixture">, import("@sinclair/typebox").TLiteral<"live">]>;
98
+ binding: import("@sinclair/typebox").TObject<{
99
+ candidateId: import("@sinclair/typebox").TString;
100
+ toolchainHash: import("@sinclair/typebox").TString;
101
+ clients: import("@sinclair/typebox").TObject<{
102
+ vscodeVersion: import("@sinclair/typebox").TString;
103
+ vscodeExtensionVersion: import("@sinclair/typebox").TString;
104
+ cliVersion: import("@sinclair/typebox").TString;
105
+ vscodeHostSha256: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
106
+ cliBinarySha256: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
107
+ }>;
108
+ }>;
109
+ comparisons: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
110
+ scenarioId: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"CLIENT-001" | "CLIENT-002" | "CLIENT-003" | "CLIENT-004" | "CLIENT-005" | "CLIENT-006" | "CLIENT-007" | "CLIENT-008" | "CLIENT-009" | "CLIENT-010">[]>;
111
+ comparisonId: import("@sinclair/typebox").TString;
112
+ outcomeIds: import("@sinclair/typebox").TObject<{
113
+ vscode: import("@sinclair/typebox").TString;
114
+ cli: import("@sinclair/typebox").TString;
115
+ }>;
116
+ }>>;
117
+ status: import("@sinclair/typebox").TLiteral<"pass">;
118
+ matrixComplete: import("@sinclair/typebox").TLiteral<true>;
119
+ qualifiesClientParity: import("@sinclair/typebox").TLiteral<true>;
120
+ qualifiesRelease: import("@sinclair/typebox").TLiteral<false>;
121
+ qualificationId: import("@sinclair/typebox").TString;
122
+ }>;
123
+ export declare const EvidenceManifestV1Schema: import("@sinclair/typebox").TObject<{
124
+ schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
125
+ projectId: import("@sinclair/typebox").TString;
126
+ runId: import("@sinclair/typebox").TString;
127
+ createdAt: import("@sinclair/typebox").TString;
128
+ entries: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
129
+ kind: import("@sinclair/typebox").TString;
130
+ hash: import("@sinclair/typebox").TString;
131
+ bytes: import("@sinclair/typebox").TInteger;
132
+ required: import("@sinclair/typebox").TBoolean;
133
+ retention: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"immutable">, import("@sinclair/typebox").TLiteral<"project">, import("@sinclair/typebox").TLiteral<"optional">]>;
134
+ }>>;
135
+ clientQualification: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
136
+ kind: import("@sinclair/typebox").TLiteral<"client-qualification">;
137
+ hash: import("@sinclair/typebox").TString;
138
+ bytes: import("@sinclair/typebox").TInteger;
139
+ required: import("@sinclair/typebox").TLiteral<true>;
140
+ retention: import("@sinclair/typebox").TLiteral<"immutable">;
141
+ }>>;
142
+ }>;
143
+ export declare const LIVE_QUALIFICATION_SCENARIO_IDS: readonly ["vscode-experience", "restart-cross-device", "github-oidc-writer-transfer", "bicep-lifecycle", "terraform-lifecycle", "promotion"];
144
+ export declare const LiveQualificationV1Schema: import("@sinclair/typebox").TObject<{
145
+ schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
146
+ projectId: import("@sinclair/typebox").TString;
147
+ runId: import("@sinclair/typebox").TString;
148
+ candidate: import("@sinclair/typebox").TObject<{
149
+ repository: import("@sinclair/typebox").TString;
150
+ branch: import("@sinclair/typebox").TString;
151
+ commit: import("@sinclair/typebox").TString;
152
+ packageLockHash: import("@sinclair/typebox").TString;
153
+ releaseManifestHash: import("@sinclair/typebox").TString;
154
+ runtimeBundleHash: import("@sinclair/typebox").TString;
155
+ customizationBundleHash: import("@sinclair/typebox").TString;
156
+ }>;
157
+ createdAt: import("@sinclair/typebox").TString;
158
+ evidenceManifestHash: import("@sinclair/typebox").TString;
159
+ scenarios: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
160
+ id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"vscode-experience">, import("@sinclair/typebox").TLiteral<"restart-cross-device">, import("@sinclair/typebox").TLiteral<"github-oidc-writer-transfer">, import("@sinclair/typebox").TLiteral<"bicep-lifecycle">, import("@sinclair/typebox").TLiteral<"terraform-lifecycle">, import("@sinclair/typebox").TLiteral<"promotion">]>;
161
+ environment: import("@sinclair/typebox").TString;
162
+ targetScope: import("@sinclair/typebox").TString;
163
+ actor: import("@sinclair/typebox").TString;
164
+ startedAt: import("@sinclair/typebox").TString;
165
+ completedAt: import("@sinclair/typebox").TString;
166
+ toolVersions: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>;
167
+ outcome: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pass">, import("@sinclair/typebox").TLiteral<"fail">]>;
168
+ evidenceRefs: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
169
+ }>, import("@sinclair/typebox").TObject<{
170
+ id: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"vscode-experience">, import("@sinclair/typebox").TLiteral<"restart-cross-device">, import("@sinclair/typebox").TLiteral<"github-oidc-writer-transfer">, import("@sinclair/typebox").TLiteral<"bicep-lifecycle">, import("@sinclair/typebox").TLiteral<"terraform-lifecycle">, import("@sinclair/typebox").TLiteral<"promotion">]>;
171
+ environment: import("@sinclair/typebox").TString;
172
+ targetScope: import("@sinclair/typebox").TString;
173
+ actor: import("@sinclair/typebox").TString;
174
+ startedAt: import("@sinclair/typebox").TString;
175
+ completedAt: import("@sinclair/typebox").TString;
176
+ toolVersions: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>;
177
+ outcome: import("@sinclair/typebox").TLiteral<"unavailable">;
178
+ evidenceRefs: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
179
+ disposition: import("@sinclair/typebox").TObject<{
180
+ reason: import("@sinclair/typebox").TString;
181
+ owner: import("@sinclair/typebox").TString;
182
+ nextAction: import("@sinclair/typebox").TString;
183
+ }>;
184
+ }>]>>;
185
+ }>;
186
+ export declare const ScorecardRuleV1Schema: import("@sinclair/typebox").TObject<{
187
+ metric: import("@sinclair/typebox").TString;
188
+ direction: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"min">, import("@sinclair/typebox").TLiteral<"max">, import("@sinclair/typebox").TLiteral<"exact">]>;
189
+ target: import("@sinclair/typebox").TNumber;
190
+ tolerance: import("@sinclair/typebox").TNumber;
191
+ scenario: import("@sinclair/typebox").TString;
192
+ minimumSamples: import("@sinclair/typebox").TInteger;
193
+ source: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"kernel">, import("@sinclair/typebox").TLiteral<"vscode">, import("@sinclair/typebox").TLiteral<"estimated">]>;
194
+ owner: import("@sinclair/typebox").TString;
195
+ unavailable: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"block">, import("@sinclair/typebox").TLiteral<"omit-claim">]>;
196
+ }>;
197
+ export declare const QualityScorecardV1Schema: import("@sinclair/typebox").TObject<{
198
+ schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
199
+ frozenAt: import("@sinclair/typebox").TString;
200
+ rules: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
201
+ metric: import("@sinclair/typebox").TString;
202
+ direction: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"min">, import("@sinclair/typebox").TLiteral<"max">, import("@sinclair/typebox").TLiteral<"exact">]>;
203
+ target: import("@sinclair/typebox").TNumber;
204
+ tolerance: import("@sinclair/typebox").TNumber;
205
+ scenario: import("@sinclair/typebox").TString;
206
+ minimumSamples: import("@sinclair/typebox").TInteger;
207
+ source: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"kernel">, import("@sinclair/typebox").TLiteral<"vscode">, import("@sinclair/typebox").TLiteral<"estimated">]>;
208
+ owner: import("@sinclair/typebox").TString;
209
+ unavailable: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"block">, import("@sinclair/typebox").TLiteral<"omit-claim">]>;
210
+ }>>;
211
+ }>;
212
+ export declare const QualityMeasurementsV1Schema: import("@sinclair/typebox").TObject<{
213
+ schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
214
+ measurements: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
215
+ metric: import("@sinclair/typebox").TString;
216
+ scenario: import("@sinclair/typebox").TString;
217
+ value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
218
+ samples: import("@sinclair/typebox").TInteger;
219
+ evidenceRefs: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
220
+ }>>;
221
+ }>;
222
+ export declare const ArchitectureAvailabilityV1Schema: import("@sinclair/typebox").TObject<{
223
+ schemaVersion: import("@sinclair/typebox").TLiteral<"1.0.0">;
224
+ projectId: import("@sinclair/typebox").TString;
225
+ runId: import("@sinclair/typebox").TString;
226
+ targetScope: import("@sinclair/typebox").TString;
227
+ mode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"native">, import("@sinclair/typebox").TLiteral<"simulated">]>;
228
+ collectedAt: import("@sinclair/typebox").TString;
229
+ expiresAt: import("@sinclair/typebox").TString;
230
+ checks: import("@sinclair/typebox").TObject<{
231
+ pricing: import("@sinclair/typebox").TObject<{
232
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"current">, import("@sinclair/typebox").TLiteral<"unavailable">, import("@sinclair/typebox").TLiteral<"blocked">]>;
233
+ evidenceRef: import("@sinclair/typebox").TString;
234
+ }>;
235
+ quota: import("@sinclair/typebox").TObject<{
236
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"current">, import("@sinclair/typebox").TLiteral<"unavailable">, import("@sinclair/typebox").TLiteral<"blocked">]>;
237
+ evidenceRef: import("@sinclair/typebox").TString;
238
+ }>;
239
+ regionalAvailability: import("@sinclair/typebox").TObject<{
240
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"current">, import("@sinclair/typebox").TLiteral<"unavailable">, import("@sinclair/typebox").TLiteral<"blocked">]>;
241
+ evidenceRef: import("@sinclair/typebox").TString;
242
+ }>;
243
+ }>;
244
+ }>;
245
+ export type EvidenceManifestV1 = Static<typeof EvidenceManifestV1Schema>;
246
+ export type ClientOutcomeV1 = Static<typeof ClientOutcomeV1Schema>;
247
+ export type ClientOutcomeComparisonV1 = Static<typeof ClientOutcomeComparisonV1Schema>;
248
+ export type ClientOutcomeQualificationV1 = Static<typeof ClientOutcomeQualificationV1Schema>;
249
+ export type LiveQualificationV1 = Static<typeof LiveQualificationV1Schema>;
250
+ export type QualityScorecardV1 = Static<typeof QualityScorecardV1Schema>;
251
+ export type QualityMeasurementsV1 = Static<typeof QualityMeasurementsV1Schema>;
252
+ export type ArchitectureAvailabilityV1 = Static<typeof ArchitectureAvailabilityV1Schema>;
253
+ export declare function createClientQualificationEvidenceEntry(qualificationPayload: ClientOutcomeQualificationV1 | Uint8Array): NonNullable<EvidenceManifestV1["clientQualification"]>;
254
+ export declare function hasBoundClientQualification(manifest: EvidenceManifestV1, qualificationPayload: ClientOutcomeQualificationV1 | Uint8Array): boolean;
255
+ export declare function hasValidLiveQualification(qualification: LiveQualificationV1): boolean;
256
+ //# sourceMappingURL=evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAYtD,eAAO,MAAM,2BAA2B,YACtC,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,CACJ,CAAC;AAEX,eAAO,MAAM,yBAAyB,YAAI,uBAAuB,EAAE,oBAAoB,CAAU,CAAC;AAClG,eAAO,MAAM,6BAA6B,YACxC,YAAY,EACZ,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,gCAAgC,EAChC,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,cAAc,CACN,CAAC;AAiCX,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiGjC,CAAC;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;EAoC3C,CAAC;AAEF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6C9C,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;EAgCpC,CAAC;AAEF,eAAO,MAAM,+BAA+B,YAC1C,mBAAmB,EACnB,sBAAsB,EACtB,6BAA6B,EAC7B,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,CACH,CAAC;AAkDX,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBrC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;EAajC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;EAOpC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;EAiBvC,CAAC;AAUF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;EAmB5C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACzE,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACnE,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACvF,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAC7F,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC3E,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACzE,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAC/E,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAsDzF,wBAAgB,sCAAsC,CACpD,oBAAoB,EAAE,4BAA4B,GAAG,UAAU,GAC9D,WAAW,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAC,CASxD;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,kBAAkB,EAC5B,oBAAoB,EAAE,4BAA4B,GAAG,UAAU,GAC9D,OAAO,CAQT;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,mBAAmB,GAAG,OAAO,CAerF"}