@aipt/platform-kernel 0.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.
Files changed (182) hide show
  1. package/README.md +25 -0
  2. package/dist/adoption-contracts.d.ts +140 -0
  3. package/dist/adoption-contracts.d.ts.map +1 -0
  4. package/dist/adoption-contracts.js +2 -0
  5. package/dist/adoption-contracts.js.map +1 -0
  6. package/dist/adoption-metadata.d.ts +72 -0
  7. package/dist/adoption-metadata.d.ts.map +1 -0
  8. package/dist/adoption-metadata.js +408 -0
  9. package/dist/adoption-metadata.js.map +1 -0
  10. package/dist/adoption-schemas.d.ts +1608 -0
  11. package/dist/adoption-schemas.d.ts.map +1 -0
  12. package/dist/adoption-schemas.js +319 -0
  13. package/dist/adoption-schemas.js.map +1 -0
  14. package/dist/application-config-binding.d.ts +54 -0
  15. package/dist/application-config-binding.d.ts.map +1 -0
  16. package/dist/application-config-binding.js +139 -0
  17. package/dist/application-config-binding.js.map +1 -0
  18. package/dist/application-config-contract.d.ts +159 -0
  19. package/dist/application-config-contract.d.ts.map +1 -0
  20. package/dist/application-config-contract.js +142 -0
  21. package/dist/application-config-contract.js.map +1 -0
  22. package/dist/blank-profile.d.ts +60 -0
  23. package/dist/blank-profile.d.ts.map +1 -0
  24. package/dist/blank-profile.js +182 -0
  25. package/dist/blank-profile.js.map +1 -0
  26. package/dist/catalog-source.d.ts +167 -0
  27. package/dist/catalog-source.d.ts.map +1 -0
  28. package/dist/catalog-source.js +252 -0
  29. package/dist/catalog-source.js.map +1 -0
  30. package/dist/code-module-publication.d.ts +113 -0
  31. package/dist/code-module-publication.d.ts.map +1 -0
  32. package/dist/code-module-publication.js +71 -0
  33. package/dist/code-module-publication.js.map +1 -0
  34. package/dist/contracts.d.ts +150 -0
  35. package/dist/contracts.d.ts.map +1 -0
  36. package/dist/contracts.js +3 -0
  37. package/dist/contracts.js.map +1 -0
  38. package/dist/delivery.d.ts +201 -0
  39. package/dist/delivery.d.ts.map +1 -0
  40. package/dist/delivery.js +364 -0
  41. package/dist/delivery.js.map +1 -0
  42. package/dist/dependency-resolution.d.ts +46 -0
  43. package/dist/dependency-resolution.d.ts.map +1 -0
  44. package/dist/dependency-resolution.js +35 -0
  45. package/dist/dependency-resolution.js.map +1 -0
  46. package/dist/doctor.d.ts +50 -0
  47. package/dist/doctor.d.ts.map +1 -0
  48. package/dist/doctor.js +62 -0
  49. package/dist/doctor.js.map +1 -0
  50. package/dist/durability-trace.d.ts +31 -0
  51. package/dist/durability-trace.d.ts.map +1 -0
  52. package/dist/durability-trace.js +45 -0
  53. package/dist/durability-trace.js.map +1 -0
  54. package/dist/engineering-operations.d.ts +43 -0
  55. package/dist/engineering-operations.d.ts.map +1 -0
  56. package/dist/engineering-operations.js +19 -0
  57. package/dist/engineering-operations.js.map +1 -0
  58. package/dist/engineering-product.d.ts +261 -0
  59. package/dist/engineering-product.d.ts.map +1 -0
  60. package/dist/engineering-product.js +61 -0
  61. package/dist/engineering-product.js.map +1 -0
  62. package/dist/example-recipe.d.ts +147 -0
  63. package/dist/example-recipe.d.ts.map +1 -0
  64. package/dist/example-recipe.js +58 -0
  65. package/dist/example-recipe.js.map +1 -0
  66. package/dist/feature-planner.d.ts +59 -0
  67. package/dist/feature-planner.d.ts.map +1 -0
  68. package/dist/feature-planner.js +160 -0
  69. package/dist/feature-planner.js.map +1 -0
  70. package/dist/filesystem-contracts.d.ts +77 -0
  71. package/dist/filesystem-contracts.d.ts.map +1 -0
  72. package/dist/filesystem-contracts.js +2 -0
  73. package/dist/filesystem-contracts.js.map +1 -0
  74. package/dist/filesystem-transaction.d.ts +52 -0
  75. package/dist/filesystem-transaction.d.ts.map +1 -0
  76. package/dist/filesystem-transaction.js +749 -0
  77. package/dist/filesystem-transaction.js.map +1 -0
  78. package/dist/index.d.ts +44 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +42 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/integrity.d.ts +3 -0
  83. package/dist/integrity.d.ts.map +1 -0
  84. package/dist/integrity.js +17 -0
  85. package/dist/integrity.js.map +1 -0
  86. package/dist/local-artifact-registry.d.ts +55 -0
  87. package/dist/local-artifact-registry.d.ts.map +1 -0
  88. package/dist/local-artifact-registry.js +87 -0
  89. package/dist/local-artifact-registry.js.map +1 -0
  90. package/dist/locked-repository-state.d.ts +21 -0
  91. package/dist/locked-repository-state.d.ts.map +1 -0
  92. package/dist/locked-repository-state.js +62 -0
  93. package/dist/locked-repository-state.js.map +1 -0
  94. package/dist/managed-region.d.ts +11 -0
  95. package/dist/managed-region.d.ts.map +1 -0
  96. package/dist/managed-region.js +45 -0
  97. package/dist/managed-region.js.map +1 -0
  98. package/dist/package-adoption.d.ts +179 -0
  99. package/dist/package-adoption.d.ts.map +1 -0
  100. package/dist/package-adoption.js +332 -0
  101. package/dist/package-adoption.js.map +1 -0
  102. package/dist/package-release.d.ts +42 -0
  103. package/dist/package-release.d.ts.map +1 -0
  104. package/dist/package-release.js +85 -0
  105. package/dist/package-release.js.map +1 -0
  106. package/dist/plan-state.d.ts +10 -0
  107. package/dist/plan-state.d.ts.map +1 -0
  108. package/dist/plan-state.js +33 -0
  109. package/dist/plan-state.js.map +1 -0
  110. package/dist/planner.d.ts +19 -0
  111. package/dist/planner.d.ts.map +1 -0
  112. package/dist/planner.js +111 -0
  113. package/dist/planner.js.map +1 -0
  114. package/dist/platform-package-sources.d.ts +49 -0
  115. package/dist/platform-package-sources.d.ts.map +1 -0
  116. package/dist/platform-package-sources.js +98 -0
  117. package/dist/platform-package-sources.js.map +1 -0
  118. package/dist/project-bootstrap.d.ts +42 -0
  119. package/dist/project-bootstrap.d.ts.map +1 -0
  120. package/dist/project-bootstrap.js +270 -0
  121. package/dist/project-bootstrap.js.map +1 -0
  122. package/dist/project-control.d.ts +149 -0
  123. package/dist/project-control.d.ts.map +1 -0
  124. package/dist/project-control.js +46 -0
  125. package/dist/project-control.js.map +1 -0
  126. package/dist/project-maintenance.d.ts +30 -0
  127. package/dist/project-maintenance.d.ts.map +1 -0
  128. package/dist/project-maintenance.js +29 -0
  129. package/dist/project-maintenance.js.map +1 -0
  130. package/dist/project-recovery.d.ts +31 -0
  131. package/dist/project-recovery.d.ts.map +1 -0
  132. package/dist/project-recovery.js +80 -0
  133. package/dist/project-recovery.js.map +1 -0
  134. package/dist/recovery-override.d.ts +20 -0
  135. package/dist/recovery-override.d.ts.map +1 -0
  136. package/dist/recovery-override.js +27 -0
  137. package/dist/recovery-override.js.map +1 -0
  138. package/dist/release-loader.d.ts +9 -0
  139. package/dist/release-loader.d.ts.map +1 -0
  140. package/dist/release-loader.js +86 -0
  141. package/dist/release-loader.js.map +1 -0
  142. package/dist/resolution-evidence.d.ts +67 -0
  143. package/dist/resolution-evidence.d.ts.map +1 -0
  144. package/dist/resolution-evidence.js +98 -0
  145. package/dist/resolution-evidence.js.map +1 -0
  146. package/dist/resolution-worker-build.d.ts +33 -0
  147. package/dist/resolution-worker-build.d.ts.map +1 -0
  148. package/dist/resolution-worker-build.js +42 -0
  149. package/dist/resolution-worker-build.js.map +1 -0
  150. package/dist/runtime-observability.d.ts +147 -0
  151. package/dist/runtime-observability.d.ts.map +1 -0
  152. package/dist/runtime-observability.js +264 -0
  153. package/dist/runtime-observability.js.map +1 -0
  154. package/dist/schemas.d.ts +740 -0
  155. package/dist/schemas.d.ts.map +1 -0
  156. package/dist/schemas.js +348 -0
  157. package/dist/schemas.js.map +1 -0
  158. package/dist/solution-catalog.d.ts +169 -0
  159. package/dist/solution-catalog.d.ts.map +1 -0
  160. package/dist/solution-catalog.js +60 -0
  161. package/dist/solution-catalog.js.map +1 -0
  162. package/dist/standalone-npm-profile.d.ts +146 -0
  163. package/dist/standalone-npm-profile.d.ts.map +1 -0
  164. package/dist/standalone-npm-profile.js +425 -0
  165. package/dist/standalone-npm-profile.js.map +1 -0
  166. package/dist/testing.d.ts +5 -0
  167. package/dist/testing.d.ts.map +1 -0
  168. package/dist/testing.js +3 -0
  169. package/dist/testing.js.map +1 -0
  170. package/dist/upgrade-planner.d.ts +45 -0
  171. package/dist/upgrade-planner.d.ts.map +1 -0
  172. package/dist/upgrade-planner.js +207 -0
  173. package/dist/upgrade-planner.js.map +1 -0
  174. package/dist/workspace-publication.d.ts +18 -0
  175. package/dist/workspace-publication.d.ts.map +1 -0
  176. package/dist/workspace-publication.js +33 -0
  177. package/dist/workspace-publication.js.map +1 -0
  178. package/dist/workspace-topology.d.ts +22 -0
  179. package/dist/workspace-topology.d.ts.map +1 -0
  180. package/dist/workspace-topology.js +117 -0
  181. package/dist/workspace-topology.js.map +1 -0
  182. package/package.json +46 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,WAAW,EACX,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAYpE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsC1B,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCxB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCpB,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAcjB,CAAC;AAEX,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwFnB,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkF3B,CAAC;AAQX,QAAA,MAAM,UAAU;;;;;;;CAOf,CAAC;AAEF,qBAAa,uBAAwB,SAAQ,KAAK;IAI9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,UAAU;IAC1C,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE;IAJhC,QAAQ,CAAC,IAAI,sBAAsB;gBAGxB,QAAQ,EAAE,MAAM,OAAO,UAAU,EACjC,MAAM,EAAE,WAAW,EAAE;CAIjC;AAaD,eAAO,MAAM,sBAAsB,GAAI,OAAO,OAAO,sBACgB,CAAC;AACtE,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,oBACc,CAAC;AAClE,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,gBACU,CAAC;AAC1D,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,aACO,CAAC;AACpD,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,eACS,CAAC;AACxD,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,uBACiB,CAAC"}
@@ -0,0 +1,348 @@
1
+ import { Ajv2020 } from "ajv/dist/2020.js";
2
+ import { capabilityIdPattern, sha256Pattern } from "./contracts.js";
3
+ const digest = { type: "string", pattern: sha256Pattern };
4
+ const capabilityId = { type: "string", pattern: capabilityIdPattern };
5
+ const version = { type: "string", minLength: 1, maxLength: 128 };
6
+ const relativePath = {
7
+ type: "string",
8
+ minLength: 1,
9
+ maxLength: 512,
10
+ pattern: "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*\\\\).+$",
11
+ };
12
+ export const capabilityReleaseSchema = {
13
+ $id: "https://schemas.dyyto.dev/platform/capability-release-v1.json",
14
+ type: "object",
15
+ additionalProperties: false,
16
+ required: ["schemaVersion", "capabilityId", "version", "integrity", "assets", "verifiers"],
17
+ properties: {
18
+ schemaVersion: { const: 1 },
19
+ capabilityId,
20
+ version,
21
+ integrity: digest,
22
+ assets: {
23
+ type: "array",
24
+ items: {
25
+ type: "object",
26
+ additionalProperties: false,
27
+ required: ["path", "ownership"],
28
+ properties: {
29
+ path: relativePath,
30
+ ownership: {
31
+ enum: ["owned-file", "managed-region", "seed-file", "shared-file", "user-file"],
32
+ },
33
+ desiredDigest: digest,
34
+ },
35
+ },
36
+ },
37
+ verifiers: {
38
+ type: "array",
39
+ items: {
40
+ type: "object",
41
+ additionalProperties: false,
42
+ required: ["id", "kind"],
43
+ properties: {
44
+ id: { type: "string", minLength: 1, maxLength: 128 },
45
+ kind: { enum: ["command", "file-digest"] },
46
+ },
47
+ },
48
+ },
49
+ },
50
+ };
51
+ export const projectManifestSchema = {
52
+ $id: "https://schemas.dyyto.dev/platform/project-manifest-v1.json",
53
+ type: "object",
54
+ additionalProperties: false,
55
+ required: ["schemaVersion", "capabilities"],
56
+ properties: {
57
+ schemaVersion: { const: 1 },
58
+ template: {
59
+ type: "object",
60
+ additionalProperties: false,
61
+ required: ["id", "version"],
62
+ properties: { id: capabilityId, version },
63
+ },
64
+ profile: {
65
+ type: "object",
66
+ additionalProperties: false,
67
+ required: ["id", "parameters"],
68
+ properties: {
69
+ id: { type: "string", pattern: capabilityIdPattern },
70
+ parameters: {
71
+ type: "object",
72
+ minProperties: 0,
73
+ maxProperties: 32,
74
+ propertyNames: { pattern: "^[a-z][A-Za-z0-9]*$" },
75
+ additionalProperties: { type: "string", maxLength: 256 },
76
+ },
77
+ },
78
+ },
79
+ capabilities: {
80
+ type: "array",
81
+ items: {
82
+ type: "object",
83
+ additionalProperties: false,
84
+ required: ["capabilityId", "version"],
85
+ properties: { capabilityId, version },
86
+ },
87
+ },
88
+ },
89
+ };
90
+ export const projectLockSchema = {
91
+ $id: "https://schemas.dyyto.dev/platform/project-lock-v1.json",
92
+ type: "object",
93
+ additionalProperties: false,
94
+ required: ["schemaVersion", "capabilities"],
95
+ properties: {
96
+ schemaVersion: { const: 1 },
97
+ capabilities: {
98
+ type: "array",
99
+ items: {
100
+ type: "object",
101
+ additionalProperties: false,
102
+ required: ["capabilityId", "version", "integrity", "appliedPlanId", "assets", "evidenceIds"],
103
+ properties: {
104
+ capabilityId,
105
+ version,
106
+ integrity: digest,
107
+ appliedPlanId: digest,
108
+ assets: {
109
+ type: "array",
110
+ items: {
111
+ type: "object",
112
+ additionalProperties: false,
113
+ required: ["path", "digest"],
114
+ properties: { path: relativePath, digest },
115
+ },
116
+ },
117
+ evidenceIds: {
118
+ type: "array",
119
+ items: { type: "string", minLength: 1, maxLength: 256 },
120
+ },
121
+ },
122
+ },
123
+ },
124
+ },
125
+ };
126
+ export const evidenceSchema = {
127
+ $id: "https://schemas.dyyto.dev/platform/evidence-v1.json",
128
+ type: "object",
129
+ additionalProperties: false,
130
+ required: ["schemaVersion", "evidenceId", "capabilityId", "capabilityVersion", "verifierId", "result", "observedAt"],
131
+ properties: {
132
+ schemaVersion: { const: 1 },
133
+ evidenceId: { type: "string", minLength: 1, maxLength: 256 },
134
+ capabilityId,
135
+ capabilityVersion: version,
136
+ verifierId: { type: "string", minLength: 1, maxLength: 128 },
137
+ result: { enum: ["passed", "failed"] },
138
+ observedAt: { type: "string", format: "date-time" },
139
+ },
140
+ };
141
+ export const changePlanSchema = {
142
+ $id: "https://schemas.dyyto.dev/platform/change-plan-v1.json",
143
+ type: "object",
144
+ additionalProperties: false,
145
+ required: ["schemaVersion", "planId", "action", "state", "capability", "generatedAt", "expiresAt", "inputDigest", "operations"],
146
+ properties: {
147
+ schemaVersion: { const: 1 },
148
+ planId: digest,
149
+ action: { enum: ["adopt", "upgrade", "remove"] },
150
+ state: { enum: ["reviewable", "conflicted"] },
151
+ capability: {
152
+ type: "object",
153
+ additionalProperties: false,
154
+ required: ["capabilityId", "version", "integrity"],
155
+ properties: { capabilityId, version, integrity: digest },
156
+ },
157
+ generatedAt: { type: "string", format: "date-time" },
158
+ expiresAt: { type: "string", format: "date-time" },
159
+ inputDigest: digest,
160
+ packageAdoption: {
161
+ type: "object",
162
+ additionalProperties: false,
163
+ required: ["schemaVersion", "packageJsonPreimageDigest", "desiredPackageJsonDigest", "lockfilePreimage", "desiredLockfileDigest", "registryRevisions", "endpointBindings", "sources", "installPolicy"],
164
+ properties: {
165
+ schemaVersion: { enum: [1, 2] },
166
+ sourceChannel: { enum: ["production", "development"] },
167
+ packageJsonPreimageDigest: digest,
168
+ desiredPackageJsonDigest: digest,
169
+ lockfilePreimage: { oneOf: [
170
+ { type: "object", additionalProperties: false, required: ["kind"], properties: { kind: { const: "absent" } } },
171
+ { type: "object", additionalProperties: false, required: ["kind", "digest"], properties: { kind: { const: "present" }, digest } },
172
+ ] },
173
+ desiredLockfileDigest: digest,
174
+ registryRevisions: {
175
+ type: "array", minItems: 1,
176
+ items: { type: "object", additionalProperties: false, required: ["registryId", "revision"], properties: { registryId: { type: "string", minLength: 1, maxLength: 128 }, revision: digest } },
177
+ },
178
+ endpointBindings: {
179
+ type: "array", minItems: 1,
180
+ items: { type: "object", additionalProperties: false, required: ["registryId", "registryConfigRevision", "bindingDigest", "expiresAt"], properties: { registryId: { type: "string", minLength: 1, maxLength: 128 }, registryConfigRevision: digest, bindingDigest: digest, expiresAt: { type: "string", format: "date-time" } } },
181
+ },
182
+ sources: {
183
+ type: "array", minItems: 1,
184
+ items: { type: "object", additionalProperties: false, required: ["registryId", "packageName", "version", "integrity", "tarballDigest", "deliveryReceiptId", "usage"], properties: {
185
+ registryId: { type: "string", minLength: 1, maxLength: 128 }, packageName: { type: "string", pattern: "^@[a-z0-9][a-z0-9._-]*/[a-z0-9][a-z0-9._-]*$" }, version,
186
+ integrity: { type: "string", pattern: "^sha512-[A-Za-z0-9+/]+={0,2}$" }, tarballDigest: digest, deliveryReceiptId: digest, usage: { enum: ["runtime", "development"] },
187
+ } },
188
+ },
189
+ installPolicy: { type: "object", additionalProperties: false, required: ["ignoreScripts", "allowWorkspaceProtocol", "allowPublicRegistryFallback"], properties: { ignoreScripts: { const: true }, allowWorkspaceProtocol: { const: false }, allowPublicRegistryFallback: { const: false } } },
190
+ topology: {
191
+ type: "object", additionalProperties: false, required: ["mode", "unitRelativeRoot", "unitImporterId", "lockfilePath"], properties: {
192
+ mode: { enum: ["standalone", "pnpm-shared-lockfile"] }, unitRelativeRoot: relativePath, unitImporterId: relativePath, lockfilePath: { const: "pnpm-lock.yaml" },
193
+ workspaceManifestPath: { const: "pnpm-workspace.yaml" }, workspaceManifestDigest: digest,
194
+ },
195
+ },
196
+ preservedDependencies: {
197
+ type: "array", items: { type: "object", additionalProperties: false, required: ["section", "packageName", "specifier"], properties: {
198
+ section: { enum: ["dependencies", "devDependencies", "optionalDependencies"] }, packageName: { type: "string", minLength: 1, maxLength: 214 }, specifier: { type: "string", minLength: 1, maxLength: 512 },
199
+ } },
200
+ },
201
+ preservedImporterDigests: {
202
+ type: "array", items: { type: "object", additionalProperties: false, required: ["importerId", "preimageDigest", "desiredDigest"], properties: { importerId: relativePath, preimageDigest: digest, desiredDigest: digest } },
203
+ },
204
+ },
205
+ allOf: [
206
+ { if: { properties: { schemaVersion: { const: 1 } }, required: ["schemaVersion"] }, then: { properties: { topology: false, preservedDependencies: false, preservedImporterDigests: false } } },
207
+ { if: { properties: { schemaVersion: { const: 2 } }, required: ["schemaVersion"] }, then: { required: ["topology", "preservedDependencies", "preservedImporterDigests"] } },
208
+ ],
209
+ },
210
+ operations: {
211
+ type: "array",
212
+ items: {
213
+ type: "object",
214
+ additionalProperties: false,
215
+ required: ["path", "kind", "ownership", "disposition"],
216
+ properties: {
217
+ path: relativePath,
218
+ kind: { enum: ["create", "replace", "merge", "remove"] },
219
+ ownership: { enum: ["owned-file", "managed-region", "seed-file", "shared-file", "user-file"] },
220
+ desiredDigest: digest,
221
+ baseDigest: digest,
222
+ regionId: { type: "string", pattern: capabilityIdPattern },
223
+ disposition: { enum: ["ready", "noop", "conflict"] },
224
+ conflictCode: { enum: ["USER_OWNED", "UNEXPECTED_EXISTING", "BASE_DIGEST_MISMATCH"] },
225
+ },
226
+ },
227
+ },
228
+ },
229
+ };
230
+ export const transactionJournalSchema = {
231
+ $id: "https://schemas.dyyto.dev/platform/transaction-journal-v1.json",
232
+ type: "object",
233
+ additionalProperties: false,
234
+ required: [
235
+ "schemaVersion",
236
+ "transactionId",
237
+ "planId",
238
+ "approvedPlanId",
239
+ "projectRootDigest",
240
+ "state",
241
+ "createdAt",
242
+ "updatedAt",
243
+ "operations",
244
+ "journalDigest",
245
+ ],
246
+ properties: {
247
+ schemaVersion: { const: 1 },
248
+ transactionId: { type: "string", minLength: 1, maxLength: 128 },
249
+ planId: digest,
250
+ approvedPlanId: digest,
251
+ projectRootDigest: digest,
252
+ state: {
253
+ enum: [
254
+ "preparing",
255
+ "prepared",
256
+ "applying",
257
+ "applied",
258
+ "recovery-required",
259
+ "recovering",
260
+ "recovered",
261
+ ],
262
+ },
263
+ createdAt: { type: "string", format: "date-time" },
264
+ updatedAt: { type: "string", format: "date-time" },
265
+ operations: {
266
+ type: "array",
267
+ items: {
268
+ type: "object",
269
+ additionalProperties: false,
270
+ required: ["index", "path", "kind", "before", "status"],
271
+ properties: {
272
+ index: { type: "integer", minimum: 0 },
273
+ path: relativePath,
274
+ kind: { enum: ["create", "replace", "merge", "remove"] },
275
+ before: {
276
+ oneOf: [
277
+ {
278
+ type: "object",
279
+ additionalProperties: false,
280
+ required: ["kind"],
281
+ properties: { kind: { const: "absent" } },
282
+ },
283
+ {
284
+ type: "object",
285
+ additionalProperties: false,
286
+ required: ["kind", "digest", "mode", "preimageDigest"],
287
+ properties: {
288
+ kind: { const: "present" },
289
+ digest,
290
+ mode: { type: "integer", minimum: 0, maximum: 511 },
291
+ preimageDigest: digest,
292
+ },
293
+ },
294
+ ],
295
+ },
296
+ desiredDigest: digest,
297
+ status: { enum: ["pending", "applied", "restored"] },
298
+ },
299
+ },
300
+ },
301
+ failure: {
302
+ type: "object",
303
+ additionalProperties: false,
304
+ required: ["code"],
305
+ properties: {
306
+ code: { type: "string", minLength: 1, maxLength: 128 },
307
+ operationIndex: { type: "integer", minimum: 0 },
308
+ },
309
+ },
310
+ journalDigest: digest,
311
+ },
312
+ };
313
+ const ajv = new Ajv2020({ allErrors: true, strict: true });
314
+ ajv.addFormat("date-time", {
315
+ type: "string",
316
+ validate: (value) => !Number.isNaN(Date.parse(value)),
317
+ });
318
+ const validators = {
319
+ capabilityRelease: ajv.compile(capabilityReleaseSchema),
320
+ projectManifest: ajv.compile(projectManifestSchema),
321
+ projectLock: ajv.compile(projectLockSchema),
322
+ evidence: ajv.compile(evidenceSchema),
323
+ changePlan: ajv.compile(changePlanSchema),
324
+ transactionJournal: ajv.compile(transactionJournalSchema),
325
+ };
326
+ export class ContractValidationError extends Error {
327
+ contract;
328
+ issues;
329
+ code = "CONTRACT_INVALID";
330
+ constructor(contract, issues) {
331
+ super(`Invalid ${contract} contract`);
332
+ this.contract = contract;
333
+ this.issues = issues;
334
+ }
335
+ }
336
+ function parseWith(contract, validator, value) {
337
+ if (!validator(value)) {
338
+ throw new ContractValidationError(contract, validator.errors ?? []);
339
+ }
340
+ return value;
341
+ }
342
+ export const parseCapabilityRelease = (value) => parseWith("capabilityRelease", validators.capabilityRelease, value);
343
+ export const parseProjectManifest = (value) => parseWith("projectManifest", validators.projectManifest, value);
344
+ export const parseProjectLock = (value) => parseWith("projectLock", validators.projectLock, value);
345
+ export const parseEvidence = (value) => parseWith("evidence", validators.evidence, value);
346
+ export const parseChangePlan = (value) => parseWith("changePlan", validators.changePlan, value);
347
+ export const parseTransactionJournal = (value) => parseWith("transactionJournal", validators.transactionJournal, value);
348
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,169 @@
1
+ import { type ErrorObject } from "ajv/dist/2020.js";
2
+ export type SolutionCatalogEntry = {
3
+ schemaVersion: 1;
4
+ solutionId: string;
5
+ version: string;
6
+ integrity: string;
7
+ title: string;
8
+ summary: string;
9
+ maturity: "guided" | "automated";
10
+ members: Array<{
11
+ capabilityId: string;
12
+ version: string;
13
+ role: string;
14
+ required: boolean;
15
+ }>;
16
+ integration: {
17
+ prerequisites: string[];
18
+ steps: Array<{
19
+ label: string;
20
+ command: string;
21
+ }>;
22
+ verification: string[];
23
+ result: string;
24
+ };
25
+ exit: {
26
+ summary: string;
27
+ };
28
+ };
29
+ export declare const solutionCatalogEntrySchema: {
30
+ readonly $id: "https://schemas.dyyto.dev/platform/solution-catalog-entry-v1.json";
31
+ readonly type: "object";
32
+ readonly additionalProperties: false;
33
+ readonly required: readonly ["schemaVersion", "solutionId", "version", "integrity", "title", "summary", "maturity", "members", "integration", "exit"];
34
+ readonly properties: {
35
+ readonly schemaVersion: {
36
+ readonly const: 1;
37
+ };
38
+ readonly solutionId: {
39
+ readonly type: "string";
40
+ readonly pattern: "^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$";
41
+ };
42
+ readonly version: {
43
+ readonly type: "string";
44
+ readonly minLength: 1;
45
+ readonly maxLength: 128;
46
+ };
47
+ readonly integrity: {
48
+ readonly type: "string";
49
+ readonly pattern: "^sha256:[a-f0-9]{64}$";
50
+ };
51
+ readonly title: {
52
+ readonly type: "string";
53
+ readonly minLength: 1;
54
+ readonly maxLength: 80;
55
+ };
56
+ readonly summary: {
57
+ readonly type: "string";
58
+ readonly minLength: 1;
59
+ readonly maxLength: 240;
60
+ };
61
+ readonly maturity: {
62
+ readonly enum: readonly ["guided", "automated"];
63
+ };
64
+ readonly members: {
65
+ readonly type: "array";
66
+ readonly minItems: 1;
67
+ readonly maxItems: 32;
68
+ readonly items: {
69
+ readonly type: "object";
70
+ readonly additionalProperties: false;
71
+ readonly required: readonly ["capabilityId", "version", "role", "required"];
72
+ readonly properties: {
73
+ readonly capabilityId: {
74
+ readonly type: "string";
75
+ readonly pattern: "^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$";
76
+ };
77
+ readonly version: {
78
+ readonly type: "string";
79
+ readonly minLength: 1;
80
+ readonly maxLength: 128;
81
+ };
82
+ readonly role: {
83
+ readonly type: "string";
84
+ readonly minLength: 1;
85
+ readonly maxLength: 80;
86
+ };
87
+ readonly required: {
88
+ readonly type: "boolean";
89
+ };
90
+ };
91
+ };
92
+ };
93
+ readonly integration: {
94
+ readonly type: "object";
95
+ readonly additionalProperties: false;
96
+ readonly required: readonly ["prerequisites", "steps", "verification", "result"];
97
+ readonly properties: {
98
+ readonly prerequisites: {
99
+ readonly type: "array";
100
+ readonly minItems: 1;
101
+ readonly maxItems: 16;
102
+ readonly items: {
103
+ readonly type: "string";
104
+ readonly minLength: 1;
105
+ readonly maxLength: 200;
106
+ };
107
+ };
108
+ readonly steps: {
109
+ readonly type: "array";
110
+ readonly minItems: 1;
111
+ readonly maxItems: 32;
112
+ readonly items: {
113
+ readonly type: "object";
114
+ readonly additionalProperties: false;
115
+ readonly required: readonly ["label", "command"];
116
+ readonly properties: {
117
+ readonly label: {
118
+ readonly type: "string";
119
+ readonly minLength: 1;
120
+ readonly maxLength: 80;
121
+ };
122
+ readonly command: {
123
+ readonly type: "string";
124
+ readonly minLength: 1;
125
+ readonly maxLength: 2000;
126
+ };
127
+ };
128
+ };
129
+ };
130
+ readonly verification: {
131
+ readonly type: "array";
132
+ readonly minItems: 1;
133
+ readonly maxItems: 32;
134
+ readonly items: {
135
+ readonly type: "string";
136
+ readonly minLength: 1;
137
+ readonly maxLength: 1000;
138
+ };
139
+ };
140
+ readonly result: {
141
+ readonly type: "string";
142
+ readonly minLength: 1;
143
+ readonly maxLength: 400;
144
+ };
145
+ };
146
+ };
147
+ readonly exit: {
148
+ readonly type: "object";
149
+ readonly additionalProperties: false;
150
+ readonly required: readonly ["summary"];
151
+ readonly properties: {
152
+ readonly summary: {
153
+ readonly type: "string";
154
+ readonly minLength: 1;
155
+ readonly maxLength: 400;
156
+ };
157
+ };
158
+ };
159
+ };
160
+ };
161
+ export declare class SolutionCatalogError extends Error {
162
+ readonly code: "SOLUTION_INVALID" | "SOLUTION_INTEGRITY_MISMATCH";
163
+ readonly issues: ErrorObject[];
164
+ constructor(code: "SOLUTION_INVALID" | "SOLUTION_INTEGRITY_MISMATCH", issues?: ErrorObject[]);
165
+ }
166
+ export declare function calculateSolutionIntegrity(entry: Omit<SolutionCatalogEntry, "integrity">): string;
167
+ export declare function parseSolutionCatalogEntry(value: unknown): SolutionCatalogEntry;
168
+ export declare function loadSolutionCatalogEntry(directoryInput: string): Promise<SolutionCatalogEntry>;
169
+ //# sourceMappingURL=solution-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solution-catalog.d.ts","sourceRoot":"","sources":["../src/solution-catalog.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI7D,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,CAAC,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC;IACjC,OAAO,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC3F,WAAW,EAAE;QAAE,aAAa,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACnI,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgB7B,CAAC;AAIX,qBAAa,oBAAqB,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,6BAA6B;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE;gBAAxF,IAAI,EAAE,kBAAkB,GAAG,6BAA6B,EAAW,MAAM,GAAE,WAAW,EAAO;CACnH;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,GAAG,MAAM,CAEjG;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAK9E;AAED,wBAAsB,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAQpG"}
@@ -0,0 +1,60 @@
1
+ import { readFile, realpath } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { Ajv2020 } from "ajv/dist/2020.js";
4
+ import { capabilityIdPattern, sha256Pattern } from "./contracts.js";
5
+ import { canonicalize, sha256Digest } from "./integrity.js";
6
+ export const solutionCatalogEntrySchema = {
7
+ $id: "https://schemas.dyyto.dev/platform/solution-catalog-entry-v1.json",
8
+ type: "object", additionalProperties: false,
9
+ required: ["schemaVersion", "solutionId", "version", "integrity", "title", "summary", "maturity", "members", "integration", "exit"],
10
+ properties: {
11
+ schemaVersion: { const: 1 },
12
+ solutionId: { type: "string", pattern: capabilityIdPattern },
13
+ version: { type: "string", minLength: 1, maxLength: 128 },
14
+ integrity: { type: "string", pattern: sha256Pattern },
15
+ title: { type: "string", minLength: 1, maxLength: 80 },
16
+ summary: { type: "string", minLength: 1, maxLength: 240 },
17
+ maturity: { enum: ["guided", "automated"] },
18
+ members: { type: "array", minItems: 1, maxItems: 32, items: { type: "object", additionalProperties: false, required: ["capabilityId", "version", "role", "required"], properties: { capabilityId: { type: "string", pattern: capabilityIdPattern }, version: { type: "string", minLength: 1, maxLength: 128 }, role: { type: "string", minLength: 1, maxLength: 80 }, required: { type: "boolean" } } } },
19
+ integration: { type: "object", additionalProperties: false, required: ["prerequisites", "steps", "verification", "result"], properties: { prerequisites: { type: "array", minItems: 1, maxItems: 16, items: { type: "string", minLength: 1, maxLength: 200 } }, steps: { type: "array", minItems: 1, maxItems: 32, items: { type: "object", additionalProperties: false, required: ["label", "command"], properties: { label: { type: "string", minLength: 1, maxLength: 80 }, command: { type: "string", minLength: 1, maxLength: 2000 } } } }, verification: { type: "array", minItems: 1, maxItems: 32, items: { type: "string", minLength: 1, maxLength: 1000 } }, result: { type: "string", minLength: 1, maxLength: 400 } } },
20
+ exit: { type: "object", additionalProperties: false, required: ["summary"], properties: { summary: { type: "string", minLength: 1, maxLength: 400 } } },
21
+ },
22
+ };
23
+ const validate = new Ajv2020({ allErrors: true, strict: true }).compile(solutionCatalogEntrySchema);
24
+ export class SolutionCatalogError extends Error {
25
+ code;
26
+ issues;
27
+ constructor(code, issues = []) {
28
+ super(code);
29
+ this.code = code;
30
+ this.issues = issues;
31
+ }
32
+ }
33
+ export function calculateSolutionIntegrity(entry) {
34
+ return sha256Digest(canonicalize(entry));
35
+ }
36
+ export function parseSolutionCatalogEntry(value) {
37
+ if (!validate(value))
38
+ throw new SolutionCatalogError("SOLUTION_INVALID", validate.errors ?? []);
39
+ const entry = value;
40
+ if (new Set(entry.members.map((member) => member.capabilityId)).size !== entry.members.length)
41
+ throw new SolutionCatalogError("SOLUTION_INVALID");
42
+ return entry;
43
+ }
44
+ export async function loadSolutionCatalogEntry(directoryInput) {
45
+ const directory = await realpath(path.resolve(directoryInput));
46
+ let entry;
47
+ try {
48
+ entry = parseSolutionCatalogEntry(JSON.parse(await readFile(path.join(directory, "solution.json"), "utf8")));
49
+ }
50
+ catch (error) {
51
+ if (error instanceof SolutionCatalogError)
52
+ throw error;
53
+ throw new SolutionCatalogError("SOLUTION_INVALID");
54
+ }
55
+ const { integrity, ...content } = entry;
56
+ if (calculateSolutionIntegrity(content) !== integrity)
57
+ throw new SolutionCatalogError("SOLUTION_INTEGRITY_MISMATCH");
58
+ return entry;
59
+ }
60
+ //# sourceMappingURL=solution-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solution-catalog.js","sourceRoot":"","sources":["../src/solution-catalog.ts"],"names":[],"mappings":"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"}