@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,71 @@
1
+ import { canonicalize, sha256Digest } from "./integrity.js";
2
+ export class CodeModulePublicationError extends Error {
3
+ code;
4
+ constructor(code) {
5
+ super(code);
6
+ this.code = code;
7
+ this.name = "CodeModulePublicationError";
8
+ }
9
+ }
10
+ const digestPattern = /^sha256:[a-f0-9]{64}$/u, identity = /^[a-z][a-z0-9._-]{2,127}$/u, packageName = /^(?:@[a-z0-9._-]+\/)?[a-z0-9._-]+$/u;
11
+ function exact(value, keys) { return Object.keys(value).every(k => keys.includes(k)) && keys.every(k => k in value); }
12
+ export function assertPublishableModule(value) { if (!exact(value, ["schemaVersion", "moduleId", "packageName", "version", "visibility", "manifestDigest", "artifactDigest", "artifactIntegrity", "fileCount", "unpackedBytes", "license", "sbomDigest", "auditHighCount", "provenance", "revision"]) || value.schemaVersion !== 1 || !identity.test(value.moduleId) || !packageName.test(value.packageName) || !/^[0-9]+\.[0-9]+\.[0-9]+(?:-[a-z0-9.-]+)?$/u.test(value.version) || !digestPattern.test(value.manifestDigest) || !digestPattern.test(value.artifactDigest) || !/^sha512-[A-Za-z0-9+/]+=*$/u.test(value.artifactIntegrity) || !digestPattern.test(value.sbomDigest) || value.fileCount < 1 || value.unpackedBytes < 1 || value.auditHighCount !== 0 || value.revision < 1)
13
+ throw new CodeModulePublicationError("MODULE_NOT_ELIGIBLE"); }
14
+ /** 回环报文不出本机,明文 http 没有可截获的链路;其余一律 HTTPS——发布凭据不走明文网络。 */
15
+ const loopbackOrigin = /^(?:localhost|127(?:\.\d{1,3}){3}|\[::1\])$/u;
16
+ export function publishableRegistryOrigin(origin) { let url; try {
17
+ url = new URL(origin);
18
+ }
19
+ catch {
20
+ return false;
21
+ } return (url.protocol === "https:" || (url.protocol === "http:" && loopbackOrigin.test(url.hostname))) && url.username === "" && url.password === "" && url.search === "" && url.hash === ""; }
22
+ export function assertRegistryBinding(value) { if (!exact(value, ["schemaVersion", "target", "registryId", "origin", "authentication", "credentialReference", "revision"]) || value.schemaVersion !== 1 || !identity.test(value.registryId) || !identity.test(value.credentialReference) || !publishableRegistryOrigin(value.origin) || value.revision < 1 || (value.target === "public" && value.authentication !== "trusted-publishing") || (value.target === "private" && value.authentication !== "restricted-token"))
23
+ throw new CodeModulePublicationError("PUBLICATION_TARGET_INVALID"); }
24
+ export function publicationEligibility(module, target) { const findings = []; try {
25
+ assertPublishableModule(module);
26
+ }
27
+ catch {
28
+ findings.push("模块制品、SBOM、许可证或安全审计未通过");
29
+ } ; if (target === "public" && module.visibility !== "public")
30
+ findings.push("私有模块不允许发布到公开 Registry"); if (target === "public" && !module.provenance)
31
+ findings.push("公开发布缺少 provenance"); return Object.freeze({ eligible: findings.length === 0, findings }); }
32
+ export function compilePublicationPlan(input) { assertPublishableModule(input.module); assertRegistryBinding(input.target); if (!publicationEligibility(input.module, input.target.target).eligible)
33
+ throw new CodeModulePublicationError("MODULE_NOT_ELIGIBLE"); if (input.remote && input.remote.artifactDigest !== input.module.artifactDigest)
34
+ throw new CodeModulePublicationError("PUBLICATION_VERSION_CONFLICT"); const body = { schemaVersion: 1, module: input.module, target: input.target, remotePrecondition: input.remote ? "same-digest" : "absent", authorizationDigest: input.authorizationDigest, createdAt: input.createdAt, expiresAt: input.expiresAt, approved: false }; const planDigest = sha256Digest(canonicalize(body)); return Object.freeze({ ...body, planId: `publication.${planDigest.slice(7, 31)}`, planDigest }); }
35
+ export function approvePublicationPlan(plan) { return Object.freeze({ ...plan, approved: true }); }
36
+ export async function applyPublicationPlan(input) { const { plan } = input; if (!plan.approved || plan.planDigest !== input.expectedPlanDigest || canonicalize(plan.module) !== canonicalize(input.currentModule) || canonicalize(plan.target) !== canonicalize(input.currentBinding))
37
+ throw new CodeModulePublicationError("PUBLICATION_PLAN_INVALID"); if (Date.parse(input.appliedAt) >= Date.parse(plan.expiresAt))
38
+ throw new CodeModulePublicationError("PUBLICATION_PLAN_EXPIRED"); if (plan.authorizationDigest !== input.authorizationDigest)
39
+ throw new CodeModulePublicationError("PUBLICATION_AUTHORIZATION_CHANGED"); if (!input.credentialSecret)
40
+ throw new CodeModulePublicationError("PUBLICATION_CREDENTIAL_UNAVAILABLE"); let remote = await input.registry.observe(plan.module.packageName, plan.module.version); if (remote && remote.artifactDigest !== plan.module.artifactDigest)
41
+ throw new CodeModulePublicationError("PUBLICATION_VERSION_CONFLICT"); let outcome = remote ? "already-present" : "published"; if (!remote) {
42
+ try {
43
+ await input.registry.publish({ module: plan.module, binding: plan.target, credentialSecret: input.credentialSecret });
44
+ }
45
+ catch (error) {
46
+ const code = error instanceof Error ? error.message : "";
47
+ if (code === "PUBLICATION_CREDENTIAL_UNAVAILABLE" || code === "PUBLICATION_VERSION_CONFLICT" || code === "PUBLICATION_REGISTRY_WRITE_FAILED")
48
+ throw new CodeModulePublicationError(code);
49
+ remote = await input.registry.observe(plan.module.packageName, plan.module.version);
50
+ if (!remote || remote.artifactDigest !== plan.module.artifactDigest)
51
+ throw new CodeModulePublicationError("PUBLICATION_OUTCOME_UNKNOWN");
52
+ }
53
+ remote = await input.registry.observe(plan.module.packageName, plan.module.version);
54
+ if (!remote || remote.artifactDigest !== plan.module.artifactDigest)
55
+ throw new CodeModulePublicationError("PUBLICATION_OUTCOME_UNKNOWN");
56
+ } ; const body = { schemaVersion: 1, planId: plan.planId, planDigest: plan.planDigest, registryId: plan.target.registryId, packageName: plan.module.packageName, version: plan.module.version, artifactDigest: plan.module.artifactDigest, outcome, publishedAt: input.appliedAt }; return Object.freeze({ ...body, receiptId: sha256Digest(canonicalize(body)) }); }
57
+ export class FakePublicationRegistry {
58
+ expectedCredential;
59
+ failAfterWrite;
60
+ #packages = new Map();
61
+ constructor(expectedCredential, failAfterWrite = false) {
62
+ this.expectedCredential = expectedCredential;
63
+ this.failAfterWrite = failAfterWrite;
64
+ }
65
+ async observe(name, version) { return this.#packages.get(`${name}@${version}`); }
66
+ async publish({ module, credentialSecret }) { if (credentialSecret !== this.expectedCredential)
67
+ throw new CodeModulePublicationError("PUBLICATION_CREDENTIAL_UNAVAILABLE"); const key = `${module.packageName}@${module.version}`, old = this.#packages.get(key); if (old && old.artifactDigest !== module.artifactDigest)
68
+ throw new CodeModulePublicationError("PUBLICATION_VERSION_CONFLICT"); this.#packages.set(key, { packageName: module.packageName, version: module.version, artifactDigest: module.artifactDigest, artifactIntegrity: module.artifactIntegrity }); if (this.failAfterWrite)
69
+ throw new Error("FAKE_TIMEOUT_AFTER_WRITE"); }
70
+ }
71
+ //# sourceMappingURL=code-module-publication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-module-publication.js","sourceRoot":"","sources":["../src/code-module-publication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAU5D,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAAsB;IAArB,YAAqB,IAAuR;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAArS,SAAI,GAAJ,IAAI,CAAmR;QAAc,IAAI,CAAC,IAAI,GAAC,4BAA4B,CAAA;IAAA,CAAC;CAAC;AACxZ,MAAM,aAAa,GAAC,wBAAwB,EAAC,QAAQ,GAAC,4BAA4B,EAAC,WAAW,GAAC,qCAAqC,CAAC;AACrI,SAAS,KAAK,CAAC,KAAY,EAAC,IAAsB,IAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA,EAAE,CAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,IAAI,KAAK,CAAC,CAAA,CAAA,CAAC;AACpI,MAAM,UAAU,uBAAuB,CAAC,KAA8B,IAAE,IAAG,CAAC,KAAK,CAAC,KAAK,EAAC,CAAC,eAAe,EAAC,UAAU,EAAC,aAAa,EAAC,SAAS,EAAC,YAAY,EAAC,gBAAgB,EAAC,gBAAgB,EAAC,mBAAmB,EAAC,WAAW,EAAC,eAAe,EAAC,SAAS,EAAC,YAAY,EAAC,gBAAgB,EAAC,YAAY,EAAC,UAAU,CAAC,CAAC,IAAE,KAAK,CAAC,aAAa,KAAG,CAAC,IAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAE,CAAC,4CAA4C,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAE,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAE,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAE,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAE,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAE,KAAK,CAAC,SAAS,GAAC,CAAC,IAAE,KAAK,CAAC,aAAa,GAAC,CAAC,IAAE,KAAK,CAAC,cAAc,KAAG,CAAC,IAAE,KAAK,CAAC,QAAQ,GAAC,CAAC;IAAC,MAAM,IAAI,0BAA0B,CAAC,qBAAqB,CAAC,CAAA,CAAA,CAAC;AAC3xB,wDAAwD;AACxD,MAAM,cAAc,GAAC,8CAA8C,CAAC;AACpE,MAAM,UAAU,yBAAyB,CAAC,MAAa,IAAE,IAAI,GAAO,CAAC,CAAA,IAAG,CAAC;IAAA,GAAG,GAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;AAAA,CAAC;AAAA,MAAK,CAAC;IAAA,OAAO,KAAK,CAAA;AAAA,CAAC,CAAA,OAAM,CAAC,GAAG,CAAC,QAAQ,KAAG,QAAQ,IAAE,CAAC,GAAG,CAAC,QAAQ,KAAG,OAAO,IAAE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAE,GAAG,CAAC,QAAQ,KAAG,EAAE,IAAE,GAAG,CAAC,QAAQ,KAAG,EAAE,IAAE,GAAG,CAAC,MAAM,KAAG,EAAE,IAAE,GAAG,CAAC,IAAI,KAAG,EAAE,CAAA,CAAA,CAAC;AACnR,MAAM,UAAU,qBAAqB,CAAC,KAAgC,IAAE,IAAG,CAAC,KAAK,CAAC,KAAK,EAAC,CAAC,eAAe,EAAC,QAAQ,EAAC,YAAY,EAAC,QAAQ,EAAC,gBAAgB,EAAC,qBAAqB,EAAC,UAAU,CAAC,CAAC,IAAE,KAAK,CAAC,aAAa,KAAG,CAAC,IAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAE,KAAK,CAAC,QAAQ,GAAC,CAAC,IAAE,CAAC,KAAK,CAAC,MAAM,KAAG,QAAQ,IAAE,KAAK,CAAC,cAAc,KAAG,oBAAoB,CAAC,IAAE,CAAC,KAAK,CAAC,MAAM,KAAG,SAAS,IAAE,KAAK,CAAC,cAAc,KAAG,kBAAkB,CAAC;IAAC,MAAM,IAAI,0BAA0B,CAAC,4BAA4B,CAAC,CAAA,CAAA,CAAC;AAChjB,MAAM,UAAU,sBAAsB,CAAC,MAA+B,EAAC,MAA4B,IAAE,MAAM,QAAQ,GAAU,EAAE,CAAC,CAAA,IAAG,CAAC;IAAA,uBAAuB,CAAC,MAAM,CAAC,CAAA;AAAA,CAAC;AAAA,MAAK,CAAC;IAAA,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;AAAA,CAAC,CAAA,CAAC,CAAA,IAAG,MAAM,KAAG,QAAQ,IAAE,MAAM,CAAC,UAAU,KAAG,QAAQ;IAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAA,IAAG,MAAM,KAAG,QAAQ,IAAE,CAAC,MAAM,CAAC,UAAU;IAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,QAAQ,CAAC,MAAM,KAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAA,CAAA,CAAC;AAEtb,MAAM,UAAU,sBAAsB,CAAC,KAAqL,IAAkB,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA,IAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ;IAAC,MAAM,IAAI,0BAA0B,CAAC,qBAAqB,CAAC,CAAC,CAAA,IAAG,KAAK,CAAC,MAAM,IAAE,KAAK,CAAC,MAAM,CAAC,cAAc,KAAG,KAAK,CAAC,MAAM,CAAC,cAAc;IAAC,MAAM,IAAI,0BAA0B,CAAC,8BAA8B,CAAC,CAAC,CAAA,MAAM,IAAI,GAAC,EAAC,aAAa,EAAC,CAAU,EAAC,MAAM,EAAC,KAAK,CAAC,MAAM,EAAC,MAAM,EAAC,KAAK,CAAC,MAAM,EAAC,kBAAkB,EAAC,KAAK,CAAC,MAAM,CAAA,CAAC,CAAA,aAAsB,CAAA,CAAC,CAAA,QAAiB,EAAC,mBAAmB,EAAC,KAAK,CAAC,mBAAmB,EAAC,SAAS,EAAC,KAAK,CAAC,SAAS,EAAC,SAAS,EAAC,KAAK,CAAC,SAAS,EAAC,QAAQ,EAAC,KAAK,EAAC,CAAC,CAAA,MAAM,UAAU,GAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAC,GAAG,IAAI,EAAC,MAAM,EAAC,eAAe,UAAU,CAAC,KAAK,CAAC,CAAC,EAAC,EAAE,CAAC,EAAE,EAAC,UAAU,EAAC,CAAC,CAAA,CAAA,CAAC;AAC99B,MAAM,UAAU,sBAAsB,CAAC,IAAoB,IAAkB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAC,GAAG,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC,CAAA,CAAA,CAAC;AAC3H,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAsP,IAA8B,MAAK,EAAC,IAAI,EAAC,GAAC,KAAK,CAAC,CAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,IAAE,IAAI,CAAC,UAAU,KAAG,KAAK,CAAC,kBAAkB,IAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,IAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAG,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC;IAAC,MAAM,IAAI,0BAA0B,CAAC,0BAA0B,CAAC,CAAC,CAAA,IAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;IAAC,MAAM,IAAI,0BAA0B,CAAC,0BAA0B,CAAC,CAAC,CAAA,IAAG,IAAI,CAAC,mBAAmB,KAAG,KAAK,CAAC,mBAAmB;IAAC,MAAM,IAAI,0BAA0B,CAAC,mCAAmC,CAAC,CAAC,CAAA,IAAG,CAAC,KAAK,CAAC,gBAAgB;IAAC,MAAM,IAAI,0BAA0B,CAAC,oCAAoC,CAAC,CAAC,CAAA,IAAI,MAAM,GAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA,IAAG,MAAM,IAAE,MAAM,CAAC,cAAc,KAAG,IAAI,CAAC,MAAM,CAAC,cAAc;IAAC,MAAM,IAAI,0BAA0B,CAAC,8BAA8B,CAAC,CAAC,CAAA,IAAI,OAAO,GAA+B,MAAM,CAAA,CAAC,CAAA,iBAAiB,CAAA,CAAC,CAAA,WAAW,CAAC,CAAA,IAAG,CAAC,MAAM,EAAC,CAAC;IAAA,IAAG,CAAC;QAAA,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,MAAM,EAAC,IAAI,CAAC,MAAM,EAAC,OAAO,EAAC,IAAI,CAAC,MAAM,EAAC,gBAAgB,EAAC,KAAK,CAAC,gBAAgB,EAAC,CAAC,CAAA;IAAA,CAAC;IAAA,OAAM,KAAK,EAAC,CAAC;QAAA,MAAM,IAAI,GAAC,KAAK,YAAY,KAAK,CAAA,CAAC,CAAA,KAAK,CAAC,OAAO,CAAA,CAAC,CAAA,EAAE,CAAC;QAAA,IAAG,IAAI,KAAG,oCAAoC,IAAE,IAAI,KAAG,8BAA8B,IAAE,IAAI,KAAG,mCAAmC;YAAC,MAAM,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC;QAAA,MAAM,GAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAAA,IAAG,CAAC,MAAM,IAAE,MAAM,CAAC,cAAc,KAAG,IAAI,CAAC,MAAM,CAAC,cAAc;YAAC,MAAM,IAAI,0BAA0B,CAAC,6BAA6B,CAAC,CAAA;IAAA,CAAC;IAAA,MAAM,GAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAAA,IAAG,CAAC,MAAM,IAAE,MAAM,CAAC,cAAc,KAAG,IAAI,CAAC,MAAM,CAAC,cAAc;QAAC,MAAM,IAAI,0BAA0B,CAAC,6BAA6B,CAAC,CAAA;AAAA,CAAC,CAAA,CAAC,CAAA,MAAM,IAAI,GAAC,EAAC,aAAa,EAAC,CAAU,EAAC,MAAM,EAAC,IAAI,CAAC,MAAM,EAAC,UAAU,EAAC,IAAI,CAAC,UAAU,EAAC,UAAU,EAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAC,WAAW,EAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAC,OAAO,EAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAC,cAAc,EAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,KAAK,CAAC,SAAS,EAAC,CAAC,CAAA,OAAO,MAAM,CAAC,MAAM,CAAC,EAAC,GAAG,IAAI,EAAC,SAAS,EAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAA,CAAA,CAAC;AAC9zE,MAAM,OAAO,uBAAuB;IAA8G;IAAmC;IAA7G,SAAS,GAAC,IAAI,GAAG,EAAmC,CAAC;IAAA,YAAqB,kBAAyB,EAAU,iBAAe,KAAK;QAAvD,uBAAkB,GAAlB,kBAAkB,CAAO;QAAU,mBAAc,GAAd,cAAc,CAAM;IAAE,CAAC;IAAA,KAAK,CAAC,OAAO,CAAC,IAAW,EAAC,OAAc,IAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC,CAAA,CAAA,CAAC;IAAA,KAAK,CAAC,OAAO,CAAC,EAAC,MAAM,EAAC,gBAAgB,EAAwG,IAAE,IAAG,gBAAgB,KAAG,IAAI,CAAC,kBAAkB;QAAC,MAAM,IAAI,0BAA0B,CAAC,oCAAoC,CAAC,CAAC,CAAA,MAAM,GAAG,GAAC,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE,EAAC,GAAG,GAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA,IAAG,GAAG,IAAE,GAAG,CAAC,cAAc,KAAG,MAAM,CAAC,cAAc;QAAC,MAAM,IAAI,0BAA0B,CAAC,8BAA8B,CAAC,CAAC,CAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAC,EAAC,WAAW,EAAC,MAAM,CAAC,WAAW,EAAC,OAAO,EAAC,MAAM,CAAC,OAAO,EAAC,cAAc,EAAC,MAAM,CAAC,cAAc,EAAC,iBAAiB,EAAC,MAAM,CAAC,iBAAiB,EAAC,CAAC,CAAC,CAAA,IAAG,IAAI,CAAC,cAAc;QAAC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA,CAAA,CAAC;CAAC"}
@@ -0,0 +1,150 @@
1
+ export declare const capabilityIdPattern = "^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$";
2
+ export declare const sha256Pattern = "^sha256:[a-f0-9]{64}$";
3
+ export type CapabilityRelease = {
4
+ schemaVersion: 1;
5
+ capabilityId: string;
6
+ version: string;
7
+ integrity: string;
8
+ assets: Array<{
9
+ path: string;
10
+ ownership: AssetOwnership;
11
+ desiredDigest?: string;
12
+ }>;
13
+ verifiers: Array<{
14
+ id: string;
15
+ kind: "command" | "file-digest";
16
+ }>;
17
+ };
18
+ export type ProjectManifest = {
19
+ schemaVersion: 1;
20
+ template?: {
21
+ id: string;
22
+ version: string;
23
+ };
24
+ profile?: {
25
+ id: string;
26
+ parameters: Record<string, string>;
27
+ };
28
+ capabilities: Array<{
29
+ capabilityId: string;
30
+ version: string;
31
+ }>;
32
+ };
33
+ export type ProjectLock = {
34
+ schemaVersion: 1;
35
+ capabilities: Array<{
36
+ capabilityId: string;
37
+ version: string;
38
+ integrity: string;
39
+ appliedPlanId: string;
40
+ assets: Array<{
41
+ path: string;
42
+ digest: string;
43
+ }>;
44
+ evidenceIds: string[];
45
+ }>;
46
+ };
47
+ export type Evidence = {
48
+ schemaVersion: 1;
49
+ evidenceId: string;
50
+ capabilityId: string;
51
+ capabilityVersion: string;
52
+ verifierId: string;
53
+ result: "passed" | "failed";
54
+ observedAt: string;
55
+ };
56
+ export type AssetOwnership = "owned-file" | "managed-region" | "seed-file" | "shared-file" | "user-file";
57
+ export type PlanAction = "adopt" | "upgrade" | "remove";
58
+ export type PlanState = "created" | "reviewable" | "conflicted" | "approved" | "applying" | "applied" | "verified" | "failed" | "recovery-required" | "recovered" | "expired";
59
+ export type ProposedChange = {
60
+ path: string;
61
+ kind: "create" | "replace" | "merge" | "remove";
62
+ ownership: AssetOwnership;
63
+ desiredDigest?: string;
64
+ baseDigest?: string;
65
+ regionId?: string;
66
+ };
67
+ export type ObservedAsset = {
68
+ path: string;
69
+ exists: boolean;
70
+ digest?: string;
71
+ };
72
+ export type PlannedOperation = ProposedChange & {
73
+ disposition: "ready" | "noop" | "conflict";
74
+ conflictCode?: "USER_OWNED" | "UNEXPECTED_EXISTING" | "BASE_DIGEST_MISMATCH";
75
+ };
76
+ export type ChangePlan = {
77
+ schemaVersion: 1;
78
+ planId: string;
79
+ action: PlanAction;
80
+ state: "reviewable" | "conflicted";
81
+ capability: Pick<CapabilityRelease, "capabilityId" | "version" | "integrity">;
82
+ generatedAt: string;
83
+ expiresAt: string;
84
+ inputDigest: string;
85
+ operations: PlannedOperation[];
86
+ packageAdoption?: PackageAdoptionPlanFacts;
87
+ };
88
+ type PackageAdoptionPlanCommonFacts = {
89
+ sourceChannel?: "production" | "development";
90
+ packageJsonPreimageDigest: string;
91
+ desiredPackageJsonDigest: string;
92
+ lockfilePreimage: {
93
+ kind: "absent";
94
+ } | {
95
+ kind: "present";
96
+ digest: string;
97
+ };
98
+ desiredLockfileDigest: string;
99
+ registryRevisions: Array<{
100
+ registryId: string;
101
+ revision: string;
102
+ }>;
103
+ endpointBindings: Array<{
104
+ registryId: string;
105
+ registryConfigRevision: string;
106
+ bindingDigest: string;
107
+ expiresAt: string;
108
+ }>;
109
+ sources: Array<{
110
+ registryId: string;
111
+ packageName: string;
112
+ version: string;
113
+ integrity: string;
114
+ tarballDigest: string;
115
+ deliveryReceiptId: string;
116
+ usage: "runtime" | "development";
117
+ }>;
118
+ installPolicy: {
119
+ ignoreScripts: true;
120
+ allowWorkspaceProtocol: false;
121
+ allowPublicRegistryFallback: false;
122
+ };
123
+ };
124
+ export type PreservedPackageDependency = {
125
+ section: "dependencies" | "devDependencies" | "optionalDependencies";
126
+ packageName: string;
127
+ specifier: string;
128
+ };
129
+ export type PackageAdoptionTopologyFacts = {
130
+ mode: "standalone" | "pnpm-shared-lockfile";
131
+ unitRelativeRoot: string;
132
+ unitImporterId: string;
133
+ lockfilePath: "pnpm-lock.yaml";
134
+ workspaceManifestPath?: "pnpm-workspace.yaml";
135
+ workspaceManifestDigest?: string;
136
+ };
137
+ export type PackageAdoptionPlanFacts = (PackageAdoptionPlanCommonFacts & {
138
+ schemaVersion: 1;
139
+ }) | (PackageAdoptionPlanCommonFacts & {
140
+ schemaVersion: 2;
141
+ topology: PackageAdoptionTopologyFacts;
142
+ preservedDependencies: PreservedPackageDependency[];
143
+ preservedImporterDigests: Array<{
144
+ importerId: string;
145
+ preimageDigest: string;
146
+ desiredDigest: string;
147
+ }>;
148
+ });
149
+ export {};
150
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export const capabilityIdPattern = "^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$";
2
+ export const sha256Pattern = "^sha256:[a-f0-9]{64}$";
3
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,oCAAoC,CAAC;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,uBAAuB,CAAC"}
@@ -0,0 +1,201 @@
1
+ export type DeliveryKind = "npm-publish" | "application-deploy" | "artifact-publication" | "hosted-static";
2
+ export type DeliveryArtifact = {
3
+ type: "npm-package" | "node-application" | "web-application" | "published-package" | "web-bundle";
4
+ identity: string;
5
+ digest: string;
6
+ };
7
+ export type DeliveryTarget = {
8
+ adapterId: "registry.npmjs" | "deployment.local-docker" | "publication.offline-web" | "publication.hosted-static";
9
+ location: string;
10
+ };
11
+ export type NpmPublicationPolicy = {
12
+ mode: "staged";
13
+ access: "public";
14
+ tag: string;
15
+ authentication: "trusted-publishing";
16
+ trustedAction: "stage-only";
17
+ provenance: "required";
18
+ execution: TrustedExecutionIdentity;
19
+ };
20
+ export type TrustedExecutionIdentity = {
21
+ provider: "github-actions" | "gitlab-ci";
22
+ repository: string;
23
+ workflow: string;
24
+ ref: string;
25
+ environment?: string;
26
+ };
27
+ export type DeliveryPlan = {
28
+ schemaVersion: 1 | 2;
29
+ planId: string;
30
+ kind: DeliveryKind;
31
+ state: "reviewable";
32
+ project: {
33
+ profile: string;
34
+ lockDigest: string;
35
+ appliedPlanId: string;
36
+ };
37
+ artifact: DeliveryArtifact;
38
+ target: DeliveryTarget;
39
+ risk: "irreversible-publish" | "local-reversible-deployment" | "local-reversible-publication" | "external-reversible-publication";
40
+ createdAt: string;
41
+ expiresAt: string;
42
+ publication?: NpmPublicationPolicy;
43
+ };
44
+ export type DeliveryStageRecord = {
45
+ schemaVersion: 1;
46
+ recordId: string;
47
+ planId: string;
48
+ stageId: string;
49
+ artifactDigest: string;
50
+ status: "registry-accepted";
51
+ createdAt: string;
52
+ };
53
+ export type DeliveryAttemptRecord = {
54
+ schemaVersion: 1;
55
+ recordId: string;
56
+ planId: string;
57
+ artifactDigest: string;
58
+ status: "remote-write-started";
59
+ startedAt: string;
60
+ };
61
+ export type DeliveryStageReviewRecord = {
62
+ schemaVersion: 1;
63
+ recordId: string;
64
+ planId: string;
65
+ stageId: string;
66
+ artifactDigest: string;
67
+ status: "artifact-digest-verified";
68
+ reviewedAt: string;
69
+ };
70
+ export type DeliveryReceiptV1 = {
71
+ schemaVersion: 1;
72
+ receiptId: string;
73
+ planId: string;
74
+ kind: DeliveryKind;
75
+ adapterId: DeliveryTarget["adapterId"];
76
+ artifactDigest: string;
77
+ target: string;
78
+ status: "verified";
79
+ externalIdentity: string;
80
+ completedAt: string;
81
+ details: Record<string, string>;
82
+ };
83
+ export type DeliveryReceiptV2 = {
84
+ schemaVersion: 2;
85
+ receiptId: string;
86
+ planId: string;
87
+ kind: "npm-publish";
88
+ adapterId: "registry.npmjs";
89
+ artifactDigest: string;
90
+ target: string;
91
+ status: "verified";
92
+ externalIdentity: string;
93
+ completedAt: string;
94
+ npm: {
95
+ stageId: string;
96
+ registry: "https://registry.npmjs.org";
97
+ tarballDigest: string;
98
+ access: "public";
99
+ tag: string;
100
+ provenance: "registry-attested";
101
+ attestationUrlDigest: string;
102
+ };
103
+ };
104
+ export type DeliveryReceipt = DeliveryReceiptV1 | DeliveryReceiptV2;
105
+ export type DeliveryPrepareInput = {
106
+ projectRoot: string;
107
+ profile: string;
108
+ parameters: Record<string, string>;
109
+ };
110
+ export type PreparedDeliveryArtifact = {
111
+ artifact: DeliveryArtifact;
112
+ target: DeliveryTarget;
113
+ details: Record<string, string>;
114
+ };
115
+ export type DeliveryExecuteInput = {
116
+ projectRoot: string;
117
+ plan: DeliveryPlan;
118
+ onRemoteWriteStarting?: () => Promise<void>;
119
+ };
120
+ export type AdapterExecutionResult = {
121
+ externalIdentity: string;
122
+ details: Record<string, string>;
123
+ };
124
+ export type DeliveryInspectInput = {
125
+ projectRoot: string;
126
+ plan: DeliveryPlan;
127
+ };
128
+ export type AdapterInspection = {
129
+ state: "absent" | "staged" | "verification-pending" | "verified" | "closed" | "unknown";
130
+ externalIdentity?: string;
131
+ details: Record<string, string>;
132
+ };
133
+ export interface ArtifactDeliveryPort {
134
+ readonly adapterId: DeliveryTarget["adapterId"];
135
+ prepare(input: DeliveryPrepareInput): Promise<PreparedDeliveryArtifact>;
136
+ execute(input: DeliveryExecuteInput): Promise<AdapterExecutionResult>;
137
+ inspect(input: DeliveryInspectInput): Promise<AdapterInspection>;
138
+ recover(input: DeliveryInspectInput): Promise<AdapterInspection>;
139
+ }
140
+ export declare class DeliveryError extends Error {
141
+ readonly code: "DELIVERY_PROJECT_UNSUPPORTED" | "DELIVERY_NOT_ADOPTED" | "DELIVERY_PLAN_NOT_FOUND" | "DELIVERY_PLAN_EXPIRED" | "DELIVERY_PRECONDITION_FAILED" | "DELIVERY_TARGET_EXISTS" | "DELIVERY_ADAPTER_UNAVAILABLE" | "DELIVERY_EXECUTION_UNKNOWN" | "DELIVERY_EXECUTION_FAILED" | "DELIVERY_RECEIPT_INVALID" | "NPM_AUTHENTICATION_REQUIRED" | "NPM_AUTHORIZATION_DENIED" | "NPM_2FA_REQUIRED" | "NPM_TRUSTED_PUBLISHER_MISMATCH" | "NPM_TOKEN_POLICY_UNVERIFIED" | "NPM_STAGE_UNSUPPORTED" | "NPM_STAGE_CONFLICT" | "NPM_PROVENANCE_REQUIRED" | "NPM_REGISTRY_PROPAGATION_PENDING" | "NPM_REGISTRY_OUTCOME_UNKNOWN";
142
+ constructor(code: "DELIVERY_PROJECT_UNSUPPORTED" | "DELIVERY_NOT_ADOPTED" | "DELIVERY_PLAN_NOT_FOUND" | "DELIVERY_PLAN_EXPIRED" | "DELIVERY_PRECONDITION_FAILED" | "DELIVERY_TARGET_EXISTS" | "DELIVERY_ADAPTER_UNAVAILABLE" | "DELIVERY_EXECUTION_UNKNOWN" | "DELIVERY_EXECUTION_FAILED" | "DELIVERY_RECEIPT_INVALID" | "NPM_AUTHENTICATION_REQUIRED" | "NPM_AUTHORIZATION_DENIED" | "NPM_2FA_REQUIRED" | "NPM_TRUSTED_PUBLISHER_MISMATCH" | "NPM_TOKEN_POLICY_UNVERIFIED" | "NPM_STAGE_UNSUPPORTED" | "NPM_STAGE_CONFLICT" | "NPM_PROVENANCE_REQUIRED" | "NPM_REGISTRY_PROPAGATION_PENDING" | "NPM_REGISTRY_OUTCOME_UNKNOWN", message: string);
143
+ }
144
+ export declare function calculateDeliveryPlanId(plan: Omit<DeliveryPlan, "planId">): string;
145
+ export declare function createDeliveryPlan(input: Omit<DeliveryPlan, "schemaVersion" | "planId" | "state">): DeliveryPlan;
146
+ export declare function parseDeliveryPlan(value: unknown): DeliveryPlan;
147
+ export declare function createDeliveryStageRecord(input: Omit<DeliveryStageRecord, "schemaVersion" | "recordId" | "status">): DeliveryStageRecord;
148
+ export declare function createDeliveryAttemptRecord(input: Omit<DeliveryAttemptRecord, "schemaVersion" | "recordId" | "status">): DeliveryAttemptRecord;
149
+ export declare function parseDeliveryAttemptRecord(value: unknown): DeliveryAttemptRecord;
150
+ export declare function parseDeliveryStageRecord(value: unknown): DeliveryStageRecord;
151
+ export declare function createDeliveryStageReviewRecord(input: Omit<DeliveryStageReviewRecord, "schemaVersion" | "recordId" | "status">): DeliveryStageReviewRecord;
152
+ export declare function parseDeliveryStageReviewRecord(value: unknown): DeliveryStageReviewRecord;
153
+ type DeliveryReceiptInput = Omit<DeliveryReceiptV1, "schemaVersion" | "receiptId" | "status"> | Omit<DeliveryReceiptV2, "schemaVersion" | "receiptId" | "status">;
154
+ export declare function createDeliveryReceipt(input: DeliveryReceiptInput): DeliveryReceipt;
155
+ export declare function parseDeliveryReceipt(value: unknown): DeliveryReceipt;
156
+ export declare function saveDeliveryPlan(input: {
157
+ projectRoot: string;
158
+ plan: DeliveryPlan;
159
+ }): Promise<DeliveryPlan>;
160
+ export declare function readDeliveryPlan(input: {
161
+ projectRoot: string;
162
+ planId: string;
163
+ }): Promise<DeliveryPlan>;
164
+ export declare function saveDeliveryReceipt(input: {
165
+ projectRoot: string;
166
+ receipt: DeliveryReceipt;
167
+ }): Promise<DeliveryReceipt>;
168
+ export declare function readDeliveryReceipt(input: {
169
+ projectRoot: string;
170
+ planId: string;
171
+ }): Promise<DeliveryReceipt | null>;
172
+ export declare function saveDeliveryAttemptRecord(input: {
173
+ projectRoot: string;
174
+ record: DeliveryAttemptRecord;
175
+ }): Promise<DeliveryAttemptRecord>;
176
+ export declare function readDeliveryAttemptRecord(input: {
177
+ projectRoot: string;
178
+ planId: string;
179
+ }): Promise<DeliveryAttemptRecord | null>;
180
+ export declare function findUnresolvedDeliveryAttempt(input: {
181
+ projectRoot: string;
182
+ artifactIdentity: string;
183
+ }): Promise<DeliveryAttemptRecord | null>;
184
+ export declare function saveDeliveryStageRecord(input: {
185
+ projectRoot: string;
186
+ record: DeliveryStageRecord;
187
+ }): Promise<DeliveryStageRecord>;
188
+ export declare function readDeliveryStageRecord(input: {
189
+ projectRoot: string;
190
+ planId: string;
191
+ }): Promise<DeliveryStageRecord | null>;
192
+ export declare function saveDeliveryStageReviewRecord(input: {
193
+ projectRoot: string;
194
+ record: DeliveryStageReviewRecord;
195
+ }): Promise<DeliveryStageReviewRecord>;
196
+ export declare function readDeliveryStageReviewRecord(input: {
197
+ projectRoot: string;
198
+ planId: string;
199
+ }): Promise<DeliveryStageReviewRecord | null>;
200
+ export {};
201
+ //# sourceMappingURL=delivery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../src/delivery.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,oBAAoB,GAAG,sBAAsB,GAAG,eAAe,CAAC;AAC3G,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,aAAa,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,YAAY,CAAC;IAClG,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IAAE,SAAS,EAAE,gBAAgB,GAAG,yBAAyB,GAAG,yBAAyB,GAAG,2BAA2B,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AACrK,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,oBAAoB,CAAC;IACrC,aAAa,EAAE,YAAY,CAAC;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,wBAAwB,CAAC;CACrC,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,gBAAgB,GAAG,WAAW,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,sBAAsB,GAAG,6BAA6B,GAAG,8BAA8B,GAAG,iCAAiC,CAAC;IAClI,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG;IACtC,aAAa,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,0BAA0B,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,4BAA4B,CAAC;QACvC,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,QAAQ,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,mBAAmB,CAAC;QAChC,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAEpE,MAAM,MAAM,oBAAoB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAChH,MAAM,MAAM,wBAAwB,GAAG;IAAE,QAAQ,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAC/H,MAAM,MAAM,oBAAoB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAC5H,MAAM,MAAM,sBAAsB,GAAG;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AACnG,MAAM,MAAM,oBAAoB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAC/E,MAAM,MAAM,iBAAiB,GAAG;IAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,sBAAsB,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAExL,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACxE,OAAO,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACtE,OAAO,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,OAAO,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAClE;AAED,qBAAa,aAAc,SAAQ,KAAK;IAEpC,QAAQ,CAAC,IAAI,EACT,8BAA8B,GAC9B,sBAAsB,GACtB,yBAAyB,GACzB,uBAAuB,GACvB,8BAA8B,GAC9B,wBAAwB,GACxB,8BAA8B,GAC9B,4BAA4B,GAC5B,2BAA2B,GAC3B,0BAA0B,GAC1B,6BAA6B,GAC7B,0BAA0B,GAC1B,kBAAkB,GAClB,gCAAgC,GAChC,6BAA6B,GAC7B,uBAAuB,GACvB,oBAAoB,GACpB,yBAAyB,GACzB,kCAAkC,GAClC,8BAA8B;gBApBzB,IAAI,EACT,8BAA8B,GAC9B,sBAAsB,GACtB,yBAAyB,GACzB,uBAAuB,GACvB,8BAA8B,GAC9B,wBAAwB,GACxB,8BAA8B,GAC9B,4BAA4B,GAC5B,2BAA2B,GAC3B,0BAA0B,GAC1B,6BAA6B,GAC7B,0BAA0B,GAC1B,kBAAkB,GAClB,gCAAgC,GAChC,6BAA6B,GAC7B,uBAAuB,GACvB,oBAAoB,GACpB,yBAAyB,GACzB,kCAAkC,GAClC,8BAA8B,EAClC,OAAO,EAAE,MAAM;CAKlB;AAMD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,MAAM,CAElF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC,GAAG,YAAY,CA0BhH;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAa9D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,GAAG,UAAU,GAAG,QAAQ,CAAC,GAAG,mBAAmB,CAMxI;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,IAAI,CAAC,qBAAqB,EAAE,eAAe,GAAG,UAAU,GAAG,QAAQ,CAAC,GAAG,qBAAqB,CAI9I;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAKhF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAK5E;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,IAAI,CAAC,yBAAyB,EAAE,eAAe,GAAG,UAAU,GAAG,QAAQ,CAAC,GAAG,yBAAyB,CAM1J;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,yBAAyB,CAKxF;AAED,KAAK,oBAAoB,GACrB,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,WAAW,GAAG,QAAQ,CAAC,GACjE,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,WAAW,GAAG,QAAQ,CAAC,CAAC;AAEtE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,CAelF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAQpE;AAiBD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAYhH;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAQ5G;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAkB5H;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAKzH;AAED,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAc7I;AAED,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAKrI;AAED,wBAAsB,6BAA6B,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAcnJ;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAcvI;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAKjI;AAED,wBAAsB,6BAA6B,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,yBAAyB,CAAA;CAAE,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAczJ;AAED,wBAAsB,6BAA6B,CAAC,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAK7I"}