@wildo-ai/platform-config-lib 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/dist/esm/bootstrap/application-backend-env.contracts.d.ts +2 -0
  2. package/dist/esm/bootstrap/application-backend-env.contracts.d.ts.map +1 -0
  3. package/dist/esm/bootstrap/application-backend-env.contracts.js +2 -0
  4. package/dist/esm/bootstrap/application-backend-env.contracts.js.map +1 -0
  5. package/dist/esm/bootstrap/bootstrap-planner.d.ts +20 -0
  6. package/dist/esm/bootstrap/bootstrap-planner.d.ts.map +1 -0
  7. package/dist/esm/bootstrap/bootstrap-planner.js +26 -0
  8. package/dist/esm/bootstrap/bootstrap-planner.js.map +1 -0
  9. package/dist/esm/bootstrap/bootstrap.contracts.d.ts +120 -0
  10. package/dist/esm/bootstrap/bootstrap.contracts.d.ts.map +1 -0
  11. package/dist/esm/bootstrap/bootstrap.contracts.js +117 -0
  12. package/dist/esm/bootstrap/bootstrap.contracts.js.map +1 -0
  13. package/dist/esm/bootstrap/bootstrap.schemas.d.ts +485 -0
  14. package/dist/esm/bootstrap/bootstrap.schemas.d.ts.map +1 -0
  15. package/dist/esm/bootstrap/bootstrap.schemas.js +130 -0
  16. package/dist/esm/bootstrap/bootstrap.schemas.js.map +1 -0
  17. package/dist/esm/bootstrap/platform-runtime-env.contracts.d.ts +78 -0
  18. package/dist/esm/bootstrap/platform-runtime-env.contracts.d.ts.map +1 -0
  19. package/dist/esm/bootstrap/platform-runtime-env.contracts.js +98 -0
  20. package/dist/esm/bootstrap/platform-runtime-env.contracts.js.map +1 -0
  21. package/dist/esm/bootstrap/runtime-topology.contracts.d.ts +17 -0
  22. package/dist/esm/bootstrap/runtime-topology.contracts.d.ts.map +1 -0
  23. package/dist/esm/bootstrap/runtime-topology.contracts.js +60 -0
  24. package/dist/esm/bootstrap/runtime-topology.contracts.js.map +1 -0
  25. package/dist/esm/credentials/credential-generator.service.d.ts +11 -0
  26. package/dist/esm/credentials/credential-generator.service.d.ts.map +1 -0
  27. package/dist/esm/credentials/credential-generator.service.js +31 -0
  28. package/dist/esm/credentials/credential-generator.service.js.map +1 -0
  29. package/dist/esm/credentials/credentials-provisioner.service.d.ts +190 -0
  30. package/dist/esm/credentials/credentials-provisioner.service.d.ts.map +1 -0
  31. package/dist/esm/credentials/credentials-provisioner.service.js +278 -0
  32. package/dist/esm/credentials/credentials-provisioner.service.js.map +1 -0
  33. package/dist/esm/index.d.ts +16 -0
  34. package/dist/esm/index.d.ts.map +1 -0
  35. package/dist/esm/index.js +16 -0
  36. package/dist/esm/index.js.map +1 -0
  37. package/dist/esm/infra-managers/infra-manager.models.d.ts +146 -0
  38. package/dist/esm/infra-managers/infra-manager.models.d.ts.map +1 -0
  39. package/dist/esm/infra-managers/infra-manager.models.js +2 -0
  40. package/dist/esm/infra-managers/infra-manager.models.js.map +1 -0
  41. package/dist/esm/infra-managers/mongo-atlas-manager.service.d.ts +64 -0
  42. package/dist/esm/infra-managers/mongo-atlas-manager.service.d.ts.map +1 -0
  43. package/dist/esm/infra-managers/mongo-atlas-manager.service.js +307 -0
  44. package/dist/esm/infra-managers/mongo-atlas-manager.service.js.map +1 -0
  45. package/dist/esm/infra-managers/postgresql-manager.service.d.ts +115 -0
  46. package/dist/esm/infra-managers/postgresql-manager.service.d.ts.map +1 -0
  47. package/dist/esm/infra-managers/postgresql-manager.service.js +403 -0
  48. package/dist/esm/infra-managers/postgresql-manager.service.js.map +1 -0
  49. package/dist/esm/infra-managers/rabbitmq-manager.service.d.ts +64 -0
  50. package/dist/esm/infra-managers/rabbitmq-manager.service.d.ts.map +1 -0
  51. package/dist/esm/infra-managers/rabbitmq-manager.service.js +288 -0
  52. package/dist/esm/infra-managers/rabbitmq-manager.service.js.map +1 -0
  53. package/dist/esm/infra-managers/redis-manager.service.d.ts +78 -0
  54. package/dist/esm/infra-managers/redis-manager.service.d.ts.map +1 -0
  55. package/dist/esm/infra-managers/redis-manager.service.js +326 -0
  56. package/dist/esm/infra-managers/redis-manager.service.js.map +1 -0
  57. package/dist/esm/project-config/define-framework-config.d.ts +36 -0
  58. package/dist/esm/project-config/define-framework-config.d.ts.map +1 -0
  59. package/dist/esm/project-config/define-framework-config.js +30 -0
  60. package/dist/esm/project-config/define-framework-config.js.map +1 -0
  61. package/dist/esm/project-config/define-infra-config.d.ts +128 -0
  62. package/dist/esm/project-config/define-infra-config.d.ts.map +1 -0
  63. package/dist/esm/project-config/define-infra-config.js +87 -0
  64. package/dist/esm/project-config/define-infra-config.js.map +1 -0
  65. package/dist/esm/project-config/define-minion-config.d.ts +41 -0
  66. package/dist/esm/project-config/define-minion-config.d.ts.map +1 -0
  67. package/dist/esm/project-config/define-minion-config.js +24 -0
  68. package/dist/esm/project-config/define-minion-config.js.map +1 -0
  69. package/dist/esm/project-config/define-platform-config.d.ts +65 -0
  70. package/dist/esm/project-config/define-platform-config.d.ts.map +1 -0
  71. package/dist/esm/project-config/define-platform-config.js +22 -0
  72. package/dist/esm/project-config/define-platform-config.js.map +1 -0
  73. package/dist/esm/project-config/define-platform-env-config.d.ts +41 -0
  74. package/dist/esm/project-config/define-platform-env-config.d.ts.map +1 -0
  75. package/dist/esm/project-config/define-platform-env-config.js +45 -0
  76. package/dist/esm/project-config/define-platform-env-config.js.map +1 -0
  77. package/dist/esm/project-config/define-project-config.d.ts +38 -0
  78. package/dist/esm/project-config/define-project-config.d.ts.map +1 -0
  79. package/dist/esm/project-config/define-project-config.js +57 -0
  80. package/dist/esm/project-config/define-project-config.js.map +1 -0
  81. package/dist/esm/project-config/define-saas-config.d.ts +252 -0
  82. package/dist/esm/project-config/define-saas-config.d.ts.map +1 -0
  83. package/dist/esm/project-config/define-saas-config.js +137 -0
  84. package/dist/esm/project-config/define-saas-config.js.map +1 -0
  85. package/dist/esm/project-config/define-sharing-policy.d.ts +35 -0
  86. package/dist/esm/project-config/define-sharing-policy.d.ts.map +1 -0
  87. package/dist/esm/project-config/define-sharing-policy.js +30 -0
  88. package/dist/esm/project-config/define-sharing-policy.js.map +1 -0
  89. package/dist/esm/project-config/define-worker-config.d.ts +42 -0
  90. package/dist/esm/project-config/define-worker-config.d.ts.map +1 -0
  91. package/dist/esm/project-config/define-worker-config.js +24 -0
  92. package/dist/esm/project-config/define-worker-config.js.map +1 -0
  93. package/dist/esm/project-config/index.d.ts +22 -0
  94. package/dist/esm/project-config/index.d.ts.map +1 -0
  95. package/dist/esm/project-config/index.js +22 -0
  96. package/dist/esm/project-config/index.js.map +1 -0
  97. package/dist/esm/project-config/loader.d.ts +42 -0
  98. package/dist/esm/project-config/loader.d.ts.map +1 -0
  99. package/dist/esm/project-config/loader.js +164 -0
  100. package/dist/esm/project-config/loader.js.map +1 -0
  101. package/dist/esm/project-config/shared/application-modules.schemas.d.ts +10 -0
  102. package/dist/esm/project-config/shared/application-modules.schemas.d.ts.map +1 -0
  103. package/dist/esm/project-config/shared/application-modules.schemas.js +6 -0
  104. package/dist/esm/project-config/shared/application-modules.schemas.js.map +1 -0
  105. package/dist/esm/project-config/shared/application-modules.utils.d.ts +6 -0
  106. package/dist/esm/project-config/shared/application-modules.utils.d.ts.map +1 -0
  107. package/dist/esm/project-config/shared/application-modules.utils.js +26 -0
  108. package/dist/esm/project-config/shared/application-modules.utils.js.map +1 -0
  109. package/dist/esm/project-config/shared/backing-services.schemas.d.ts +68 -0
  110. package/dist/esm/project-config/shared/backing-services.schemas.d.ts.map +1 -0
  111. package/dist/esm/project-config/shared/backing-services.schemas.js +49 -0
  112. package/dist/esm/project-config/shared/backing-services.schemas.js.map +1 -0
  113. package/dist/esm/project-config/shared/data-services.schemas.d.ts +33 -0
  114. package/dist/esm/project-config/shared/data-services.schemas.d.ts.map +1 -0
  115. package/dist/esm/project-config/shared/data-services.schemas.js +47 -0
  116. package/dist/esm/project-config/shared/data-services.schemas.js.map +1 -0
  117. package/dist/esm/project-config/shared/env-example-defaults.d.ts +27 -0
  118. package/dist/esm/project-config/shared/env-example-defaults.d.ts.map +1 -0
  119. package/dist/esm/project-config/shared/env-example-defaults.js +30 -0
  120. package/dist/esm/project-config/shared/env-example-defaults.js.map +1 -0
  121. package/dist/esm/project-config/shared/environment.schemas.d.ts +106 -0
  122. package/dist/esm/project-config/shared/environment.schemas.d.ts.map +1 -0
  123. package/dist/esm/project-config/shared/environment.schemas.js +111 -0
  124. package/dist/esm/project-config/shared/environment.schemas.js.map +1 -0
  125. package/dist/esm/project-config/shared/infrastructure-defaults.schemas.d.ts +42 -0
  126. package/dist/esm/project-config/shared/infrastructure-defaults.schemas.d.ts.map +1 -0
  127. package/dist/esm/project-config/shared/infrastructure-defaults.schemas.js +42 -0
  128. package/dist/esm/project-config/shared/infrastructure-defaults.schemas.js.map +1 -0
  129. package/dist/esm/project-config/shared/k8s-utils.d.ts +36 -0
  130. package/dist/esm/project-config/shared/k8s-utils.d.ts.map +1 -0
  131. package/dist/esm/project-config/shared/k8s-utils.js +50 -0
  132. package/dist/esm/project-config/shared/k8s-utils.js.map +1 -0
  133. package/dist/esm/project-config/shared/platform-services.schemas.d.ts +30 -0
  134. package/dist/esm/project-config/shared/platform-services.schemas.d.ts.map +1 -0
  135. package/dist/esm/project-config/shared/platform-services.schemas.js +27 -0
  136. package/dist/esm/project-config/shared/platform-services.schemas.js.map +1 -0
  137. package/dist/esm/project-config/shared/service-definitions.schemas.d.ts +42 -0
  138. package/dist/esm/project-config/shared/service-definitions.schemas.d.ts.map +1 -0
  139. package/dist/esm/project-config/shared/service-definitions.schemas.js +29 -0
  140. package/dist/esm/project-config/shared/service-definitions.schemas.js.map +1 -0
  141. package/dist/esm/project-config/sharing-policy-validation.d.ts +40 -0
  142. package/dist/esm/project-config/sharing-policy-validation.d.ts.map +1 -0
  143. package/dist/esm/project-config/sharing-policy-validation.js +143 -0
  144. package/dist/esm/project-config/sharing-policy-validation.js.map +1 -0
  145. package/dist/esm/release/framework-release.constants.d.ts +3 -0
  146. package/dist/esm/release/framework-release.constants.d.ts.map +1 -0
  147. package/dist/esm/release/framework-release.constants.js +3 -0
  148. package/dist/esm/release/framework-release.constants.js.map +1 -0
  149. package/dist/esm/runtime-bridge/platform-runtime-bridge.contracts.d.ts +23 -0
  150. package/dist/esm/runtime-bridge/platform-runtime-bridge.contracts.d.ts.map +1 -0
  151. package/dist/esm/runtime-bridge/platform-runtime-bridge.contracts.js +13 -0
  152. package/dist/esm/runtime-bridge/platform-runtime-bridge.contracts.js.map +1 -0
  153. package/dist/esm/schemas/framework-info.schemas.d.ts +8 -0
  154. package/dist/esm/schemas/framework-info.schemas.d.ts.map +1 -0
  155. package/dist/esm/schemas/framework-info.schemas.js +8 -0
  156. package/dist/esm/schemas/framework-info.schemas.js.map +1 -0
  157. package/dist/esm/schemas/framework-secrets.schemas.d.ts +22 -0
  158. package/dist/esm/schemas/framework-secrets.schemas.d.ts.map +1 -0
  159. package/dist/esm/schemas/framework-secrets.schemas.js +14 -0
  160. package/dist/esm/schemas/framework-secrets.schemas.js.map +1 -0
  161. package/dist/esm/schemas/platform-application-config.schemas.d.ts +20 -0
  162. package/dist/esm/schemas/platform-application-config.schemas.d.ts.map +1 -0
  163. package/dist/esm/schemas/platform-application-config.schemas.js +19 -0
  164. package/dist/esm/schemas/platform-application-config.schemas.js.map +1 -0
  165. package/dist/esm/schemas/platform-application-secrets.schemas.d.ts +54 -0
  166. package/dist/esm/schemas/platform-application-secrets.schemas.d.ts.map +1 -0
  167. package/dist/esm/schemas/platform-application-secrets.schemas.js +67 -0
  168. package/dist/esm/schemas/platform-application-secrets.schemas.js.map +1 -0
  169. package/dist/esm/schemas/platform-config.schemas.d.ts +66 -0
  170. package/dist/esm/schemas/platform-config.schemas.d.ts.map +1 -0
  171. package/dist/esm/schemas/platform-config.schemas.js +28 -0
  172. package/dist/esm/schemas/platform-config.schemas.js.map +1 -0
  173. package/dist/esm/workspace-scope/index.d.ts +3 -0
  174. package/dist/esm/workspace-scope/index.d.ts.map +1 -0
  175. package/dist/esm/workspace-scope/index.js +3 -0
  176. package/dist/esm/workspace-scope/index.js.map +1 -0
  177. package/dist/esm/workspace-scope/workspace-scope-detector.d.ts +15 -0
  178. package/dist/esm/workspace-scope/workspace-scope-detector.d.ts.map +1 -0
  179. package/dist/esm/workspace-scope/workspace-scope-detector.js +87 -0
  180. package/dist/esm/workspace-scope/workspace-scope-detector.js.map +1 -0
  181. package/dist/esm/workspace-scope/workspace-scope.schemas.d.ts +118 -0
  182. package/dist/esm/workspace-scope/workspace-scope.schemas.d.ts.map +1 -0
  183. package/dist/esm/workspace-scope/workspace-scope.schemas.js +157 -0
  184. package/dist/esm/workspace-scope/workspace-scope.schemas.js.map +1 -0
  185. package/dist/tsconfig.build.tsbuildinfo +1 -0
  186. package/package.json +52 -0
  187. package/src/bootstrap/application-backend-env.contracts.ts +17 -0
  188. package/src/bootstrap/bootstrap-planner.ts +46 -0
  189. package/src/bootstrap/bootstrap.contracts.ts +251 -0
  190. package/src/bootstrap/bootstrap.schemas.ts +164 -0
  191. package/src/bootstrap/platform-runtime-env.contracts.ts +99 -0
  192. package/src/bootstrap/runtime-topology.contracts.ts +102 -0
  193. package/src/credentials/credential-generator.service.ts +39 -0
  194. package/src/index.ts +16 -0
  195. package/src/project-config/__tests__/application-modules.utils.test.ts +53 -0
  196. package/src/project-config/__tests__/define-framework-config.test.ts +43 -0
  197. package/src/project-config/__tests__/define-saas-config.test.ts +210 -0
  198. package/src/project-config/__tests__/loader.test.ts +100 -0
  199. package/src/project-config/define-framework-config.ts +44 -0
  200. package/src/project-config/define-infra-config.ts +168 -0
  201. package/src/project-config/define-minion-config.ts +27 -0
  202. package/src/project-config/define-platform-config.ts +28 -0
  203. package/src/project-config/define-platform-env-config.ts +59 -0
  204. package/src/project-config/define-project-config.ts +63 -0
  205. package/src/project-config/define-saas-config.ts +171 -0
  206. package/src/project-config/define-sharing-policy.ts +36 -0
  207. package/src/project-config/define-worker-config.ts +27 -0
  208. package/src/project-config/index.ts +23 -0
  209. package/src/project-config/loader.ts +220 -0
  210. package/src/project-config/shared/application-modules.schemas.ts +12 -0
  211. package/src/project-config/shared/application-modules.utils.ts +65 -0
  212. package/src/project-config/shared/backing-services.schemas.ts +59 -0
  213. package/src/project-config/shared/data-services.schemas.ts +58 -0
  214. package/src/project-config/shared/env-example-defaults.ts +50 -0
  215. package/src/project-config/shared/environment.schemas.ts +136 -0
  216. package/src/project-config/shared/infrastructure-defaults.schemas.ts +47 -0
  217. package/src/project-config/shared/k8s-utils.ts +56 -0
  218. package/src/project-config/shared/platform-services.schemas.ts +33 -0
  219. package/src/project-config/shared/service-definitions.schemas.ts +38 -0
  220. package/src/project-config/sharing-policy-validation.ts +159 -0
  221. package/src/release/framework-release.constants.ts +2 -0
  222. package/src/schemas/__tests__/platform-config.schemas.test.ts +90 -0
  223. package/src/schemas/framework-info.schemas.ts +13 -0
  224. package/src/schemas/framework-secrets.schemas.ts +19 -0
  225. package/src/schemas/platform-application-config.schemas.ts +25 -0
  226. package/src/schemas/platform-application-secrets.schemas.ts +78 -0
  227. package/src/schemas/platform-config.schemas.ts +45 -0
  228. package/src/workspace-scope/index.ts +2 -0
  229. package/src/workspace-scope/workspace-scope-detector.ts +98 -0
  230. package/src/workspace-scope/workspace-scope.schemas.ts +224 -0
@@ -0,0 +1,224 @@
1
+ import { homedir, tmpdir } from 'os';
2
+ import { dirname, join, relative, resolve } from 'path';
3
+ import { resolveWorkspaceScope } from './workspace-scope-detector';
4
+
5
+ /**
6
+ * Workspace scope detection types.
7
+ *
8
+ * Provides a hierarchical scope model for determining where a tool
9
+ * (CLI, companion, IDE extension) is being invoked from within the
10
+ * Wildo project structure.
11
+ *
12
+ * Scope hierarchy (most specific wins, each implies parent scopes):
13
+ * UNINITIALIZED → GLOBAL → FRAMEWORK → PROJECT → SAAS_APP
14
+ *
15
+ * Detection is based on committed config files as scope anchors,
16
+ * NOT on generated dot-directories (.wildo-project, .wildo-saas).
17
+ */
18
+
19
+ /**
20
+ * Hierarchical workspace scope.
21
+ *
22
+ * Numeric values are ordered so that higher = more specific.
23
+ * This enables `>=` comparisons for "at least this scope" checks
24
+ * (e.g., `scope >= WorkspaceScope.PROJECT` means PROJECT or SAAS_APP).
25
+ */
26
+ export enum WorkspaceScope {
27
+ /** No global preferences file found and CWD is outside any project or framework */
28
+ UNINITIALIZED = 0,
29
+ /** Global preferences file exists but CWD is outside any project or framework */
30
+ GLOBAL = 1,
31
+ /** CWD is inside the Wildo framework repository (.wildo-framework/ found) */
32
+ FRAMEWORK = 2,
33
+ /** CWD is inside a project (wildo.project.config.ts found) but not in a specific app */
34
+ PROJECT = 3,
35
+ /** CWD is inside a SaaS application directory (wildo.saas.config.ts found) */
36
+ SAAS_APP = 4,
37
+ }
38
+
39
+ /**
40
+ * Result of workspace scope detection.
41
+ *
42
+ * All resolved paths are populated regardless of the final scope — a command
43
+ * in SAAS_APP scope can still access `projectRoot` and `frameworkRoot`.
44
+ */
45
+ export interface WorkspaceScopeResult {
46
+ /** Most specific scope detected from CWD */
47
+ scope: WorkspaceScope;
48
+
49
+ /** Absolute path to `wildo.saas.config.ts`, if found */
50
+ saasConfigPath: string | null;
51
+ /** Directory containing `wildo.saas.config.ts` */
52
+ saasRoot: string | null;
53
+
54
+ /** Absolute path to `wildo.project.config.ts`, if found */
55
+ projectConfigPath: string | null;
56
+ /** Directory containing `wildo.project.config.ts` */
57
+ projectRoot: string | null;
58
+
59
+ /** Directory containing `.wildo-framework/`, if found */
60
+ frameworkRoot: string | null;
61
+
62
+ /** Absolute path to the global preferences file, if it exists */
63
+ globalPreferencesPath: string | null;
64
+ }
65
+
66
+ /**
67
+ * Canonical config file and directory names used for scope detection.
68
+ * Single source of truth — CLI and other tools should reference these
69
+ * instead of hardcoding file names.
70
+ */
71
+ export const WORKSPACE_CONFIG_NAMES = {
72
+ PROJECT: 'wildo.project.config.ts',
73
+ SAAS: 'wildo.saas.config.ts',
74
+ PLATFORM: 'wildo.platform.config.ts',
75
+ FRAMEWORK_DIR: '.wildo-framework',
76
+ PROJECT_DIR: '.wildo-project',
77
+ SAAS_DIR: '.wildo-saas',
78
+ GLOBAL_DIR: '.wildo',
79
+ PREFERENCES_FILE: 'preferences.json',
80
+ /** Directory under the project root containing platform configs and per-env overrides */
81
+ PLATFORM_DIR: 'wildo-platform',
82
+ /** File name prefix for per-env sharing policy files (e.g., `wildo.sharing-policy.local.ts`) */
83
+ SHARING_POLICY_PREFIX: 'wildo.sharing-policy.',
84
+ } as const;
85
+
86
+ /**
87
+ * Runtime-owned zones for generated config-evaluation artifacts.
88
+ *
89
+ * These are semantic owners, not source locations. For example, a platform
90
+ * config stored in a sibling `platformPath` still belongs to the project zone
91
+ * and must emit artifacts under `.wildo-project/dist/...`, not beside the
92
+ * authored config file itself.
93
+ */
94
+ export enum ConfigArtifactsZone {
95
+ FRAMEWORK = 'framework',
96
+ PLATFORM = 'platform',
97
+ PROJECT = 'project',
98
+ SAAS = 'saas',
99
+ TEMP = 'temp',
100
+ }
101
+
102
+ export interface ConfigArtifactsLocationOptions {
103
+ zone: ConfigArtifactsZone;
104
+ ownerRoot: string;
105
+ }
106
+
107
+ export function resolveGlobalWildoHomePath(userHome: string = homedir()): string {
108
+ return join(userHome, WORKSPACE_CONFIG_NAMES.GLOBAL_DIR);
109
+ }
110
+
111
+ export function resolveGlobalPreferencesPath(userHome: string = homedir()): string {
112
+ return join(resolveGlobalWildoHomePath(userHome), WORKSPACE_CONFIG_NAMES.PREFERENCES_FILE);
113
+ }
114
+
115
+ function isPathInside(root: string, target: string): boolean {
116
+ const rel = relative(resolve(root), resolve(target));
117
+ return rel === '' || (!rel.startsWith('..') && rel !== '..');
118
+ }
119
+
120
+ export function resolveConfigArtifactsBaseDir(options: ConfigArtifactsLocationOptions): string;
121
+ export function resolveConfigArtifactsBaseDir(filePath: string): string;
122
+ export function resolveConfigArtifactsBaseDir(
123
+ input: string | ConfigArtifactsLocationOptions,
124
+ ): string {
125
+ if (typeof input !== 'string') {
126
+ return resolveConfigArtifactsBaseDirForZone(input);
127
+ }
128
+
129
+ const absolutePath = resolve(input);
130
+ const scope = resolveWorkspaceScope(dirname(absolutePath));
131
+
132
+ if (scope.saasRoot && isPathInside(scope.saasRoot, absolutePath)) {
133
+ return resolveConfigArtifactsBaseDirForZone({
134
+ zone: ConfigArtifactsZone.SAAS,
135
+ ownerRoot: scope.saasRoot,
136
+ });
137
+ }
138
+
139
+ if (scope.projectRoot && isPathInside(scope.projectRoot, absolutePath)) {
140
+ return resolveConfigArtifactsBaseDirForZone({
141
+ zone: ConfigArtifactsZone.PROJECT,
142
+ ownerRoot: scope.projectRoot,
143
+ });
144
+ }
145
+
146
+ if (scope.frameworkRoot && isPathInside(scope.frameworkRoot, absolutePath)) {
147
+ return resolveConfigArtifactsBaseDirForZone({
148
+ zone: ConfigArtifactsZone.FRAMEWORK,
149
+ ownerRoot: scope.frameworkRoot,
150
+ });
151
+ }
152
+
153
+ return resolveConfigArtifactsBaseDirForZone({
154
+ zone: ConfigArtifactsZone.TEMP,
155
+ ownerRoot: absolutePath,
156
+ });
157
+ }
158
+
159
+ /**
160
+ * Resolve the canonical runtime-owned base directory for config-loader
161
+ * artifacts. This keeps Jiti/SWC output out of authored declaration trees and
162
+ * anchors it under the matching runtime zone.
163
+ */
164
+ export function resolveConfigArtifactsBaseDirForZone(options: ConfigArtifactsLocationOptions): string {
165
+ switch (options.zone) {
166
+ case ConfigArtifactsZone.FRAMEWORK:
167
+ return join(options.ownerRoot, WORKSPACE_CONFIG_NAMES.FRAMEWORK_DIR, 'dist', 'config-loader', 'framework');
168
+ case ConfigArtifactsZone.PLATFORM:
169
+ return join(options.ownerRoot, WORKSPACE_CONFIG_NAMES.PROJECT_DIR, 'dist', 'config-loader', 'platform');
170
+ case ConfigArtifactsZone.PROJECT:
171
+ return join(options.ownerRoot, WORKSPACE_CONFIG_NAMES.PROJECT_DIR, 'dist', 'config-loader', 'project');
172
+ case ConfigArtifactsZone.SAAS:
173
+ return join(options.ownerRoot, WORKSPACE_CONFIG_NAMES.SAAS_DIR, 'dist', 'config-loader', 'saas');
174
+ case ConfigArtifactsZone.TEMP:
175
+ return join(tmpdir(), 'wildo-jiti-cache');
176
+ }
177
+ }
178
+
179
+ export function resolveProjectPlatformRoot(
180
+ projectRoot: string,
181
+ platformPath: string = WORKSPACE_CONFIG_NAMES.PLATFORM_DIR,
182
+ ): string {
183
+ return join(projectRoot, platformPath);
184
+ }
185
+
186
+ export function resolveProjectPlatformFilePath(
187
+ projectRoot: string,
188
+ platformPath: string = WORKSPACE_CONFIG_NAMES.PLATFORM_DIR,
189
+ ...segments: string[]
190
+ ): string {
191
+ return join(resolveProjectPlatformRoot(projectRoot, platformPath), ...segments);
192
+ }
193
+
194
+ /**
195
+ * Resolve the directory holding project-scoped platform files for one environment.
196
+ * The environment named `local` lives in `<platformPath>/local/`, while all other
197
+ * environment ids live in `<platformPath>/remotes/{envName}/`.
198
+ */
199
+ export function resolveProjectPlatformEnvironmentDir(
200
+ projectRoot: string,
201
+ envName: string,
202
+ platformPath: string = WORKSPACE_CONFIG_NAMES.PLATFORM_DIR,
203
+ ): string {
204
+ if (envName === 'local') {
205
+ return resolveProjectPlatformFilePath(projectRoot, platformPath, 'local');
206
+ }
207
+
208
+ return resolveProjectPlatformFilePath(projectRoot, platformPath, 'remotes', envName);
209
+ }
210
+
211
+ /**
212
+ * Resolve the sharing policy file path for a given environment.
213
+ * Handles the directory convention used by `resolveProjectPlatformEnvironmentDir()`:
214
+ * the environment named `local` lives in `<platformPath>/local/`, while all other
215
+ * environment ids live in `<platformPath>/remotes/{envName}/`.
216
+ */
217
+ export function resolveSharingPolicyPath(
218
+ projectRoot: string,
219
+ envName: string,
220
+ platformPath: string = WORKSPACE_CONFIG_NAMES.PLATFORM_DIR,
221
+ ): string {
222
+ const fileName = `${WORKSPACE_CONFIG_NAMES.SHARING_POLICY_PREFIX}${envName}.ts`;
223
+ return join(resolveProjectPlatformEnvironmentDir(projectRoot, envName, platformPath), fileName);
224
+ }