@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,3 @@
1
+ export { applyPreparedWithHooks, prepareApplyWithHooks, recoverTransactionWithHooks, } from "./filesystem-transaction.js";
2
+ export { commitVerifiedAdoptionWithHooks } from "./adoption-metadata.js";
3
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAOrC,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,45 @@
1
+ import type { LoadedCapabilityRelease, ProjectAdoptionLock } from "./adoption-contracts.js";
2
+ import type { PackageDeliveryReceipt, RegistryConfigRelease, RegistryEndpointBinding } from "./catalog-source.js";
3
+ import { type PackageArtifactInspection, type PackageLockResolution } from "./package-adoption.js";
4
+ import type { PackageAdoptionTopology } from "./workspace-topology.js";
5
+ import type { ResolutionJobEvidence } from "./resolution-evidence.js";
6
+ import type { ProjectManifest } from "./contracts.js";
7
+ export declare function renderUpgradeTargetPackageJson(manifestInput: unknown, targetRelease: LoadedCapabilityRelease): Uint8Array;
8
+ export declare function planCapabilityUpgrade(input: {
9
+ projectRoot: string;
10
+ manifest: unknown;
11
+ currentLock: unknown;
12
+ sourceRelease: LoadedCapabilityRelease;
13
+ targetRelease: LoadedCapabilityRelease;
14
+ generatedAt: string;
15
+ expiresAt: string;
16
+ targetTemplate?: Readonly<{
17
+ id: string;
18
+ version: string;
19
+ }>;
20
+ packageChannel?: "production" | "development";
21
+ packageSource?: {
22
+ registryConfigs: readonly RegistryConfigRelease[];
23
+ endpointBindings: readonly RegistryEndpointBinding[];
24
+ receipts: readonly PackageDeliveryReceipt[];
25
+ inspections: readonly PackageArtifactInspection[];
26
+ lockResolution: PackageLockResolution;
27
+ resolutionEvidence?: ResolutionJobEvidence;
28
+ resolutionWorkerReleaseId?: string;
29
+ topology?: PackageAdoptionTopology;
30
+ currentLockfile?: Uint8Array;
31
+ preservedImporterDigests?: readonly Readonly<{
32
+ importerId: string;
33
+ preimageDigest: string;
34
+ desiredDigest: string;
35
+ }>[];
36
+ };
37
+ }): Promise<{
38
+ sourceLock: ProjectAdoptionLock;
39
+ targetManifest: ProjectManifest;
40
+ release: LoadedCapabilityRelease;
41
+ plan: import("./contracts.js").ChangePlan;
42
+ desiredContents: Map<string, Uint8Array<ArrayBufferLike>>;
43
+ transactionRoot: string;
44
+ }>;
45
+ //# sourceMappingURL=upgrade-planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-planner.d.ts","sourceRoot":"","sources":["../src/upgrade-planner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA6B,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACvH,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAClH,OAAO,EAA8L,KAAK,yBAAyB,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/R,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,EAAoC,eAAe,EAAkB,MAAM,gBAAgB,CAAC;AAsCxG,wBAAgB,8BAA8B,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,uBAAuB,GAAG,UAAU,CASzH;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,uBAAuB,CAAC;IACvC,aAAa,EAAE,uBAAuB,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,QAAQ,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,cAAc,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;IAC9C,aAAa,CAAC,EAAE;QACd,eAAe,EAAE,SAAS,qBAAqB,EAAE,CAAC;QAClD,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,CAAC;QACrD,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;QAC5C,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;QAClD,cAAc,EAAE,qBAAqB,CAAC;QACtC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;QAC3C,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;QACnC,eAAe,CAAC,EAAE,UAAU,CAAC;QAC7B,wBAAwB,CAAC,EAAE,SAAS,QAAQ,CAAC;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,CAAA;SAAE,CAAC,EAAE,CAAC;KACvH,CAAC;CACH;;;;;;;GAiJA"}
@@ -0,0 +1,207 @@
1
+ import { lstat, readFile, realpath } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { buildDevelopmentPackageAdoptionPlan, buildPackageAdoptionPlan, buildWorkspaceDevelopmentPackageAdoptionPlan, buildWorkspacePackageAdoptionPlan, packageAdoptionFacts, PackageAdoptionError } from "./package-adoption.js";
4
+ import { parseProjectAdoptionLock } from "./adoption-schemas.js";
5
+ import { parseProjectManifest } from "./schemas.js";
6
+ import { BlankProfileError } from "./blank-profile.js";
7
+ import { sha256Digest } from "./integrity.js";
8
+ import { buildChangePlan } from "./planner.js";
9
+ import { parseStandaloneNpmParameters, renderReactComponentPackageJson, renderStandalonePackageJson } from "./standalone-npm-profile.js";
10
+ import { renderApplicationConfigContract } from "./application-config-contract.js";
11
+ import { renderApplicationConfigBinding } from "./application-config-binding.js";
12
+ const manifestPath = "project-capabilities.json";
13
+ const stableSemver = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;
14
+ function compareSemver(left, right) {
15
+ if (!stableSemver.test(left) || !stableSemver.test(right)) {
16
+ throw new BlankProfileError("CONSUMER_PROFILE_UNSUPPORTED", "Upgrade requires stable SemVer releases");
17
+ }
18
+ const a = left.split(".").map(Number);
19
+ const b = right.split(".").map(Number);
20
+ for (let index = 0; index < 3; index += 1) {
21
+ if (a[index] !== b[index])
22
+ return a[index] - b[index];
23
+ }
24
+ return 0;
25
+ }
26
+ async function observe(projectRoot, assetPath) {
27
+ const target = path.join(projectRoot, ...assetPath.split("/"));
28
+ try {
29
+ const info = await lstat(target);
30
+ if (!info.isFile() || info.isSymbolicLink()) {
31
+ throw new BlankProfileError("PROJECT_STATE_INVALID", "Managed upgrade target must be a regular file", assetPath);
32
+ }
33
+ return { path: assetPath, exists: true, digest: sha256Digest(await readFile(target)) };
34
+ }
35
+ catch (error) {
36
+ if (error.code === "ENOENT")
37
+ return { path: assetPath, exists: false };
38
+ throw error;
39
+ }
40
+ }
41
+ export function renderUpgradeTargetPackageJson(manifestInput, targetRelease) {
42
+ const manifest = parseProjectManifest(manifestInput);
43
+ const target = targetRelease.release;
44
+ const packageAsset = target.assets.find((asset) => asset.path === "package.json");
45
+ if ((target.consumerProfile === "standalone-npm-package" || target.consumerProfile === "workspace-npm-package") && packageAsset?.renderer?.startsWith("npm-package-json-") === true)
46
+ return renderStandalonePackageJson(parseStandaloneNpmParameters(manifest, target.consumerProfile));
47
+ if (target.consumerProfile === "react-component-library" && packageAsset?.renderer === "react-component-package-json-v1")
48
+ return renderReactComponentPackageJson(parseStandaloneNpmParameters(manifest, target.consumerProfile));
49
+ const bytes = targetRelease.contents.get("package.json");
50
+ if (bytes === undefined)
51
+ throw new BlankProfileError("RELEASE_NOT_FOUND", "Transition target package.json is unavailable");
52
+ return bytes;
53
+ }
54
+ export async function planCapabilityUpgrade(input) {
55
+ const manifest = parseProjectManifest(input.manifest);
56
+ const lock = parseProjectAdoptionLock(input.currentLock);
57
+ const source = input.sourceRelease.release;
58
+ const target = input.targetRelease.release;
59
+ const selected = manifest.capabilities.find((item) => item.capabilityId === source.capabilityId);
60
+ const locked = lock.capabilities.find((item) => item.capabilityId === source.capabilityId);
61
+ const profileTransition = target.capabilityId !== source.capabilityId && target.dependencies?.capabilities?.includes(source.capabilityId) === true;
62
+ if (selected === undefined || locked === undefined ||
63
+ selected.capabilityId !== locked.capabilityId || selected.version !== locked.version ||
64
+ source.capabilityId !== locked.capabilityId || source.version !== locked.version || source.integrity !== locked.integrity ||
65
+ (!profileTransition && target.capabilityId !== locked.capabilityId) || target.consumerProfile !== locked.consumerProfile ||
66
+ source.consumerProfile !== target.consumerProfile) {
67
+ throw new BlankProfileError("CONSUMER_PROFILE_UNSUPPORTED", "Upgrade source, target, Manifest, and Lock must describe one compatible capability");
68
+ }
69
+ if (!profileTransition && compareSemver(target.version, source.version) <= 0) {
70
+ throw new BlankProfileError("CONSUMER_PROFILE_UNSUPPORTED", "Upgrade target must be newer than the locked release");
71
+ }
72
+ const projectRoot = await realpath(path.resolve(input.projectRoot));
73
+ const targetManifest = {
74
+ ...manifest,
75
+ ...(input.targetTemplate === undefined ? {} : { template: input.targetTemplate }),
76
+ capabilities: manifest.capabilities.map((item) => item.capabilityId === source.capabilityId
77
+ ? { capabilityId: target.capabilityId, version: target.version }
78
+ : item),
79
+ };
80
+ const availableContents = new Map(input.targetRelease.contents);
81
+ if (target.assets.some((asset) => asset.path === "package.json"))
82
+ availableContents.set("package.json", renderUpgradeTargetPackageJson(targetManifest, input.targetRelease));
83
+ for (const asset of target.assets) {
84
+ if (asset.renderer === "application-config-contract-v1") {
85
+ availableContents.set(asset.path, renderApplicationConfigContract(targetManifest));
86
+ }
87
+ if (asset.renderer === "application-config-binding-v1")
88
+ availableContents.set(asset.path, renderApplicationConfigBinding(targetManifest));
89
+ }
90
+ let packageAdoption;
91
+ let transactionRoot = projectRoot;
92
+ let packageJsonPath = "package.json";
93
+ let lockfilePath;
94
+ if (target.schemaVersion === 2 && target.availability.maturity !== "withdrawn" && (target.packageSources?.length ?? 0) > 0) {
95
+ if (input.packageSource === undefined)
96
+ throw new BlankProfileError("CONSUMER_PROFILE_UNSUPPORTED", "Profile transition requires verified Package Source facts");
97
+ const desiredBasePackageJson = availableContents.get("package.json");
98
+ if (desiredBasePackageJson === undefined)
99
+ throw new BlankProfileError("RELEASE_NOT_FOUND", "Transition target package.json is unavailable");
100
+ const currentPackageJson = await readFile(path.join(projectRoot, "package.json"));
101
+ const topology = input.packageSource.topology ?? { schemaVersion: 1, mode: "standalone", transactionRoot: projectRoot, unitRoot: projectRoot, unitRelativeRoot: ".", unitImporterId: ".", lockfilePath: "pnpm-lock.yaml" };
102
+ transactionRoot = topology.transactionRoot;
103
+ packageJsonPath = topology.mode === "pnpm-shared-lockfile" ? `${topology.unitRelativeRoot}/package.json` : "package.json";
104
+ lockfilePath = topology.lockfilePath;
105
+ const common = { release: target, registryConfigs: input.packageSource.registryConfigs, endpointBindings: input.packageSource.endpointBindings, receipts: input.packageSource.receipts, inspections: input.packageSource.inspections, consumerProfile: target.consumerProfile, packageJson: currentPackageJson, desiredBasePackageJson, ...(input.packageSource.currentLockfile === undefined ? {} : { currentLockfile: input.packageSource.currentLockfile }), generatedAt: input.generatedAt, expiresAt: input.expiresAt };
106
+ try {
107
+ const plan = topology.mode === "pnpm-shared-lockfile"
108
+ ? (input.packageChannel === "development" ? buildWorkspaceDevelopmentPackageAdoptionPlan : buildWorkspacePackageAdoptionPlan)({ ...common, topology: { mode: topology.mode, unitRelativeRoot: topology.unitRelativeRoot, unitImporterId: topology.unitImporterId, lockfilePath: topology.lockfilePath, workspaceManifestPath: topology.workspaceManifestPath, workspaceManifestDigest: topology.workspaceManifestDigest }, preservedImporterDigests: input.packageSource.preservedImporterDigests ?? [], resolutionEvidence: input.packageSource.resolutionEvidence, resolutionWorkerReleaseId: input.packageSource.resolutionWorkerReleaseId })
109
+ : (input.packageChannel === "development" ? buildDevelopmentPackageAdoptionPlan : buildPackageAdoptionPlan)({ ...common, lockResolution: input.packageSource.lockResolution });
110
+ packageAdoption = packageAdoptionFacts(plan);
111
+ availableContents.set("package.json", plan.desiredPackageJson);
112
+ availableContents.set(lockfilePath, plan.desiredLockfile);
113
+ }
114
+ catch (error) {
115
+ if (error instanceof PackageAdoptionError)
116
+ throw new BlankProfileError("CONSUMER_PROFILE_UNSUPPORTED", error.code);
117
+ throw error;
118
+ }
119
+ }
120
+ // Manifest, Lock, repository state, and Evidence are independent facts. Some
121
+ // historical migration locks recorded the Manifest as a managed asset; never
122
+ // let that compatibility fact enter the ordinary asset diff because the
123
+ // dedicated Manifest operation below is its sole writer.
124
+ const sourceAssets = new Map(locked.assets.filter((asset) => asset.path !== manifestPath).map((asset) => [asset.path, asset.digest]));
125
+ const targetAssets = new Map(target.assets.filter((asset) => asset.path !== manifestPath).map((asset) => { const bytes = availableContents.get(asset.path); if (bytes === undefined)
126
+ throw new BlankProfileError("RELEASE_NOT_FOUND", "Upgrade target asset content is unavailable", asset.path); return [asset.path, sha256Digest(bytes)]; }));
127
+ const paths = [...new Set([...sourceAssets.keys(), ...targetAssets.keys()])].sort();
128
+ const observedAssets = [];
129
+ const changes = [];
130
+ for (const assetPath of paths) {
131
+ const observed = await observe(projectRoot, assetPath);
132
+ observedAssets.push(observed);
133
+ const baseDigest = sourceAssets.get(assetPath);
134
+ const desiredDigest = targetAssets.get(assetPath);
135
+ const targetAsset = target.assets.find((asset) => asset.path === assetPath);
136
+ // Seed files become consumer-owned after first materialization. During an
137
+ // upgrade an existing seed is therefore adopted as the new baseline; it is
138
+ // never compared with or replaced by the historical release bytes.
139
+ if (targetAsset?.ownership === "seed-file" && observed.exists && observed.digest !== undefined) {
140
+ targetAssets.set(assetPath, observed.digest);
141
+ availableContents.set(assetPath, await readFile(path.join(projectRoot, ...assetPath.split("/"))));
142
+ changes.push({ path: assetPath, kind: "replace", ownership: "seed-file", baseDigest: observed.digest, desiredDigest: observed.digest });
143
+ continue;
144
+ }
145
+ if (baseDigest === undefined) {
146
+ if (desiredDigest === undefined)
147
+ throw new BlankProfileError("RELEASE_NOT_FOUND", "Target asset digest is unavailable", assetPath);
148
+ changes.push({ path: assetPath, kind: "create", ownership: targetAsset?.ownership ?? "owned-file", desiredDigest });
149
+ }
150
+ else if (desiredDigest === undefined) {
151
+ changes.push({ path: assetPath, kind: "remove", ownership: "owned-file", baseDigest });
152
+ }
153
+ else {
154
+ changes.push({ path: assetPath, kind: "replace", ownership: targetAsset?.ownership ?? "owned-file", baseDigest, desiredDigest });
155
+ }
156
+ }
157
+ if (packageAdoption !== undefined && lockfilePath !== undefined) {
158
+ const currentLockfile = input.packageSource?.currentLockfile;
159
+ if (currentLockfile === undefined)
160
+ throw new BlankProfileError("CONSUMER_PROFILE_UNSUPPORTED", "Transition lockfile preimage is unavailable");
161
+ const desiredLockfile = availableContents.get(lockfilePath);
162
+ observedAssets.push({ path: lockfilePath, exists: true, digest: sha256Digest(currentLockfile) });
163
+ changes.push({ path: lockfilePath, kind: "replace", ownership: "owned-file", baseDigest: sha256Digest(currentLockfile), desiredDigest: sha256Digest(desiredLockfile) });
164
+ }
165
+ const currentManifestBytes = await readFile(path.join(projectRoot, manifestPath));
166
+ const targetManifestBytes = Buffer.from(`${JSON.stringify(targetManifest, null, 2)}\n`);
167
+ observedAssets.push({ path: manifestPath, exists: true, digest: sha256Digest(currentManifestBytes) });
168
+ changes.push({
169
+ path: manifestPath,
170
+ kind: "replace",
171
+ ownership: "owned-file",
172
+ baseDigest: sha256Digest(currentManifestBytes),
173
+ desiredDigest: sha256Digest(targetManifestBytes),
174
+ });
175
+ const capability = {
176
+ schemaVersion: 1,
177
+ capabilityId: target.capabilityId,
178
+ version: target.version,
179
+ integrity: target.integrity,
180
+ assets: target.assets.filter((asset) => asset.path !== manifestPath).map((asset) => ({ path: asset.path, ownership: asset.ownership, desiredDigest: targetAssets.get(asset.path) })),
181
+ verifiers: target.verifiers.map(({ id }) => ({ id, kind: "command" })),
182
+ };
183
+ const prefixedChanges = transactionRoot === projectRoot ? changes : changes.map((change) => change.path === lockfilePath ? change : { ...change, path: `${input.packageSource.topology.unitRelativeRoot}/${change.path}` });
184
+ const prefixedObserved = transactionRoot === projectRoot ? observedAssets : observedAssets.map((asset) => asset.path === lockfilePath ? asset : { ...asset, path: `${input.packageSource.topology.unitRelativeRoot}/${asset.path}` });
185
+ const plan = buildChangePlan({ action: "upgrade", capability, changes: prefixedChanges, observedAssets: prefixedObserved, generatedAt: input.generatedAt, expiresAt: input.expiresAt, ...(packageAdoption === undefined ? {} : { packageAdoption }) });
186
+ availableContents.set(manifestPath, targetManifestBytes);
187
+ const desiredContents = new Map();
188
+ for (const operation of plan.operations) {
189
+ if (operation.disposition !== "ready" || operation.kind === "remove")
190
+ continue;
191
+ const unitPrefix = transactionRoot === projectRoot ? "" : `${input.packageSource.topology.unitRelativeRoot}/`;
192
+ const contentPath = operation.path === lockfilePath ? operation.path : operation.path.startsWith(unitPrefix) ? operation.path.slice(unitPrefix.length) : operation.path;
193
+ const bytes = availableContents.get(contentPath);
194
+ if (bytes === undefined)
195
+ throw new BlankProfileError("RELEASE_NOT_FOUND", "Upgrade desired content is unavailable", operation.path);
196
+ desiredContents.set(operation.path, bytes);
197
+ }
198
+ return {
199
+ sourceLock: lock,
200
+ targetManifest,
201
+ release: input.targetRelease,
202
+ plan,
203
+ desiredContents,
204
+ transactionRoot,
205
+ };
206
+ }
207
+ //# sourceMappingURL=upgrade-planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-planner.js","sourceRoot":"","sources":["../src/upgrade-planner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export type WorkspacePackageNode = Readonly<{
2
+ packageName: string;
3
+ version: string;
4
+ dependencies: readonly string[];
5
+ }>;
6
+ export type WorkspacePublicationGraph = Readonly<{
7
+ schemaVersion: 1;
8
+ nodes: readonly WorkspacePackageNode[];
9
+ order: readonly string[];
10
+ graphDigest: string;
11
+ }>;
12
+ export declare class WorkspacePublicationError extends Error {
13
+ readonly code: "WORKSPACE_PACKAGE_DUPLICATE" | "WORKSPACE_DEPENDENCY_MISSING" | "WORKSPACE_DEPENDENCY_CYCLE";
14
+ constructor(code: "WORKSPACE_PACKAGE_DUPLICATE" | "WORKSPACE_DEPENDENCY_MISSING" | "WORKSPACE_DEPENDENCY_CYCLE");
15
+ }
16
+ /** 生成稳定、串行的依赖优先发布顺序;同层以 package name 排序。 */
17
+ export declare function compileWorkspacePublicationGraph(input: readonly WorkspacePackageNode[]): WorkspacePublicationGraph;
18
+ //# sourceMappingURL=workspace-publication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-publication.d.ts","sourceRoot":"","sources":["../src/workspace-publication.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC,CAAC;AACvH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAAE,aAAa,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE9J,qBAAa,yBAA0B,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,GAAG,8BAA8B,GAAG,4BAA4B;gBAAnG,IAAI,EAAE,6BAA6B,GAAG,8BAA8B,GAAG,4BAA4B;CACzH;AAED,4CAA4C;AAC5C,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,GAAG,yBAAyB,CASlH"}
@@ -0,0 +1,33 @@
1
+ import { canonicalize, sha256Digest } from "./integrity.js";
2
+ export class WorkspacePublicationError extends Error {
3
+ code;
4
+ constructor(code) {
5
+ super(code);
6
+ this.code = code;
7
+ this.name = "WorkspacePublicationError";
8
+ }
9
+ }
10
+ /** 生成稳定、串行的依赖优先发布顺序;同层以 package name 排序。 */
11
+ export function compileWorkspacePublicationGraph(input) {
12
+ const nodes = [...input].map((node) => ({ ...node, dependencies: [...new Set(node.dependencies)].sort() })).sort((a, b) => a.packageName.localeCompare(b.packageName));
13
+ const byName = new Map();
14
+ for (const node of nodes) {
15
+ if (byName.has(node.packageName))
16
+ throw new WorkspacePublicationError("WORKSPACE_PACKAGE_DUPLICATE");
17
+ byName.set(node.packageName, node);
18
+ }
19
+ for (const node of nodes)
20
+ for (const dependency of node.dependencies)
21
+ if (!byName.has(dependency))
22
+ throw new WorkspacePublicationError("WORKSPACE_DEPENDENCY_MISSING");
23
+ const temporary = new Set(), permanent = new Set(), order = [];
24
+ const visit = (name) => { if (permanent.has(name))
25
+ return; if (temporary.has(name))
26
+ throw new WorkspacePublicationError("WORKSPACE_DEPENDENCY_CYCLE"); temporary.add(name); for (const dependency of byName.get(name).dependencies)
27
+ visit(dependency); temporary.delete(name); permanent.add(name); order.push(name); };
28
+ for (const node of nodes)
29
+ visit(node.packageName);
30
+ const body = { schemaVersion: 1, nodes, order };
31
+ return Object.freeze({ ...body, graphDigest: sha256Digest(canonicalize(body)) });
32
+ }
33
+ //# sourceMappingURL=workspace-publication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-publication.js","sourceRoot":"","sources":["../src/workspace-publication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK5D,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAC7B;IAArB,YAAqB,IAAmG;QAAI,KAAK,CAAC,IAAI,CAAC,CAAC;QAAnH,SAAI,GAAJ,IAAI,CAA+F;QAAiB,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAAC,CAAC;CACpL;AAED,4CAA4C;AAC5C,MAAM,UAAU,gCAAgC,CAAC,KAAsC;IACrF,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACvK,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,MAAM,IAAI,yBAAyB,CAAC,6BAA6B,CAAC,CAAC;QAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAAC,CAAC;IACvK,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;gBAAE,MAAM,IAAI,yBAAyB,CAAC,8BAA8B,CAAC,CAAC;IACvK,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,EAAE,SAAS,GAAG,IAAI,GAAG,EAAU,EAAE,KAAK,GAAa,EAAE,CAAC;IACzF,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,4BAA4B,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,YAAY;QAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjU,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,EAAE,aAAa,EAAE,CAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAAC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7I,CAAC"}
@@ -0,0 +1,22 @@
1
+ export type WorkspaceTopologyErrorCode = "WORKSPACE_PATH_UNSAFE" | "WORKSPACE_OWNER_MISSING" | "WORKSPACE_NESTED_UNSUPPORTED" | "WORKSPACE_UNIT_NOT_DECLARED" | "WORKSPACE_MANIFEST_INVALID";
2
+ export declare class WorkspaceTopologyError extends Error {
3
+ readonly code: WorkspaceTopologyErrorCode;
4
+ constructor(code: WorkspaceTopologyErrorCode);
5
+ }
6
+ export type PackageAdoptionTopology = Readonly<{
7
+ schemaVersion: 1;
8
+ mode: "standalone" | "pnpm-shared-lockfile";
9
+ transactionRoot: string;
10
+ unitRoot: string;
11
+ unitRelativeRoot: string;
12
+ unitImporterId: string;
13
+ lockfilePath: "pnpm-lock.yaml";
14
+ workspaceManifestPath?: "pnpm-workspace.yaml";
15
+ workspaceManifestDigest?: `sha256:${string}`;
16
+ }>;
17
+ export declare function listWorkspacePackageManifests(workspaceRootInput: string): Promise<readonly Readonly<{
18
+ relativeRoot: string;
19
+ bytes: Uint8Array;
20
+ }>[]>;
21
+ export declare function discoverPackageAdoptionTopology(projectRootInput: string): Promise<PackageAdoptionTopology>;
22
+ //# sourceMappingURL=workspace-topology.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-topology.d.ts","sourceRoot":"","sources":["../src/workspace-topology.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,0BAA0B,GAAG,uBAAuB,GAAG,yBAAyB,GAAG,8BAA8B,GAAG,6BAA6B,GAAG,4BAA4B,CAAC;AAC7L,qBAAa,sBAAuB,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,0BAA0B;gBAAhC,IAAI,EAAE,0BAA0B;CACtD;AAED,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,aAAa,EAAE,CAAC,CAAC;IACjB,IAAI,EAAE,YAAY,GAAG,sBAAsB,CAAC;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,uBAAuB,CAAC,EAAE,UAAU,MAAM,EAAE,CAAC;CAC9C,CAAC,CAAC;AA2CH,wBAAsB,6BAA6B,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,QAAQ,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,EAAE,CAAC,CAkBzJ;AAED,wBAAsB,+BAA+B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAchH"}
@@ -0,0 +1,117 @@
1
+ import { lstat, readFile, readdir, realpath } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { homedir } from "node:os";
4
+ import { sha256Digest } from "./integrity.js";
5
+ export class WorkspaceTopologyError extends Error {
6
+ code;
7
+ constructor(code) {
8
+ super(code);
9
+ this.code = code;
10
+ this.name = "WorkspaceTopologyError";
11
+ }
12
+ }
13
+ async function realDirectory(input) {
14
+ const resolved = path.resolve(input);
15
+ const info = await lstat(resolved).catch(() => null);
16
+ if (!info?.isDirectory() || info.isSymbolicLink() || resolved === path.parse(resolved).root || resolved === path.resolve(homedir()))
17
+ throw new WorkspaceTopologyError("WORKSPACE_PATH_UNSAFE");
18
+ const canonical = await realpath(resolved);
19
+ if (canonical !== resolved)
20
+ throw new WorkspaceTopologyError("WORKSPACE_PATH_UNSAFE");
21
+ return canonical;
22
+ }
23
+ async function regularFile(target) {
24
+ const info = await lstat(target).catch(() => null);
25
+ if (info === null)
26
+ return undefined;
27
+ if (!info.isFile() || info.isSymbolicLink())
28
+ throw new WorkspaceTopologyError("WORKSPACE_PATH_UNSAFE");
29
+ return readFile(target);
30
+ }
31
+ function patterns(source) {
32
+ const lines = source.split(/\r?\n/u);
33
+ const result = [];
34
+ let inPackages = false;
35
+ for (const line of lines) {
36
+ if (/^packages:\s*(?:#.*)?$/u.test(line)) {
37
+ inPackages = true;
38
+ continue;
39
+ }
40
+ if (!inPackages)
41
+ continue;
42
+ const item = /^\s+-\s+["']?([^"'#]+?)["']?\s*(?:#.*)?$/u.exec(line);
43
+ if (item) {
44
+ result.push(item[1].trim().replace(/^\.\//u, "").replace(/\/$/u, ""));
45
+ continue;
46
+ }
47
+ if (line.trim() && !/^\s/u.test(line))
48
+ break;
49
+ }
50
+ if (result.length === 0)
51
+ throw new WorkspaceTopologyError("WORKSPACE_MANIFEST_INVALID");
52
+ return result;
53
+ }
54
+ function matches(pattern, relative) {
55
+ if (pattern.includes("**")) {
56
+ const prefix = pattern.split("**", 1)[0].replace(/\/$/u, "");
57
+ return relative === prefix || relative.startsWith(`${prefix}/`);
58
+ }
59
+ if (pattern.endsWith("/*")) {
60
+ const prefix = pattern.slice(0, -2);
61
+ return relative.startsWith(`${prefix}/`) && !relative.slice(prefix.length + 1).includes("/");
62
+ }
63
+ return pattern === relative;
64
+ }
65
+ export async function listWorkspacePackageManifests(workspaceRootInput) {
66
+ const workspaceRoot = await realDirectory(workspaceRootInput);
67
+ const manifest = await regularFile(path.join(workspaceRoot, "pnpm-workspace.yaml"));
68
+ if (!manifest)
69
+ throw new WorkspaceTopologyError("WORKSPACE_OWNER_MISSING");
70
+ const results = new Map();
71
+ for (const pattern of patterns(manifest.toString("utf8"))) {
72
+ const candidates = [];
73
+ if (pattern.endsWith("/*") && !pattern.slice(0, -2).includes("*")) {
74
+ const parent = pattern.slice(0, -2);
75
+ const entries = await readdir(path.join(workspaceRoot, ...parent.split("/")), { withFileTypes: true }).catch(() => []);
76
+ for (const entry of entries)
77
+ if (entry.isDirectory() && !entry.isSymbolicLink())
78
+ candidates.push(`${parent}/${entry.name}`);
79
+ }
80
+ else if (!pattern.includes("*"))
81
+ candidates.push(pattern);
82
+ else
83
+ throw new WorkspaceTopologyError("WORKSPACE_MANIFEST_INVALID");
84
+ for (const relativeRoot of candidates) {
85
+ const bytes = await regularFile(path.join(workspaceRoot, ...relativeRoot.split("/"), "package.json"));
86
+ if (bytes)
87
+ results.set(relativeRoot, bytes);
88
+ }
89
+ }
90
+ return Object.freeze([...results].sort(([left], [right]) => left.localeCompare(right)).map(([relativeRoot, bytes]) => Object.freeze({ relativeRoot, bytes })));
91
+ }
92
+ export async function discoverPackageAdoptionTopology(projectRootInput) {
93
+ const unitRoot = await realDirectory(projectRootInput);
94
+ if (await regularFile(path.join(unitRoot, "pnpm-lock.yaml")))
95
+ return Object.freeze({ schemaVersion: 1, mode: "standalone", transactionRoot: unitRoot, unitRoot, unitRelativeRoot: ".", unitImporterId: ".", lockfilePath: "pnpm-lock.yaml" });
96
+ if (await regularFile(path.join(unitRoot, "pnpm-workspace.yaml")))
97
+ throw new WorkspaceTopologyError("WORKSPACE_NESTED_UNSUPPORTED");
98
+ let cursor = path.dirname(unitRoot);
99
+ let owner;
100
+ while (cursor !== path.parse(cursor).root && cursor !== path.resolve(homedir())) {
101
+ const manifest = await regularFile(path.join(cursor, "pnpm-workspace.yaml"));
102
+ if (manifest) {
103
+ if (owner)
104
+ throw new WorkspaceTopologyError("WORKSPACE_NESTED_UNSUPPORTED");
105
+ owner = { root: cursor, manifest };
106
+ break;
107
+ }
108
+ cursor = path.dirname(cursor);
109
+ }
110
+ if (!owner || !(await regularFile(path.join(owner.root, "pnpm-lock.yaml"))) || !(await regularFile(path.join(owner.root, "project-capabilities.json"))))
111
+ throw new WorkspaceTopologyError("WORKSPACE_OWNER_MISSING");
112
+ const relative = path.relative(owner.root, unitRoot).split(path.sep).join("/");
113
+ if (!relative || relative.startsWith("../") || patterns(owner.manifest.toString("utf8")).filter((pattern) => matches(pattern, relative)).length !== 1)
114
+ throw new WorkspaceTopologyError("WORKSPACE_UNIT_NOT_DECLARED");
115
+ return Object.freeze({ schemaVersion: 1, mode: "pnpm-shared-lockfile", transactionRoot: owner.root, unitRoot, unitRelativeRoot: relative, unitImporterId: relative, workspaceManifestPath: "pnpm-workspace.yaml", workspaceManifestDigest: sha256Digest(owner.manifest), lockfilePath: "pnpm-lock.yaml" });
116
+ }
117
+ //# sourceMappingURL=workspace-topology.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-topology.js","sourceRoot":"","sources":["../src/workspace-topology.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@aipt/platform-kernel",
3
+ "version": "0.1.5",
4
+ "description": "Dyyto 工程能力采用内核与不可变事实契约。",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "type": "module",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "./testing": {
15
+ "types": "./dist/testing.d.ts",
16
+ "default": "./dist/testing.js"
17
+ }
18
+ },
19
+ "files": [
20
+ "dist"
21
+ ],
22
+ "dependencies": {
23
+ "@jridgewell/trace-mapping": "0.3.31",
24
+ "ajv": "8.20.0"
25
+ },
26
+ "devDependencies": {
27
+ "@aipt/testkit": "0.1.0"
28
+ },
29
+ "idpPackageRelease": {
30
+ "title": "Dyyto 工程能力内核",
31
+ "maturity": "candidate",
32
+ "repository": "urn:idp:repository:dyyto",
33
+ "packageManager": "pnpm@11.21.0",
34
+ "readme": "packages/kernel/README.md",
35
+ "knowledgeRef": "tech://engineering-capabilities/dyyto/kernel",
36
+ "consumerEvidence": [
37
+ "apps/cli/src",
38
+ "fixtures"
39
+ ]
40
+ },
41
+ "scripts": {
42
+ "build": "tsc -p tsconfig.build.json",
43
+ "typecheck": "tsc --noEmit -p tsconfig.json",
44
+ "test": "vitest run --testTimeout 60000 --maxWorkers=1"
45
+ }
46
+ }