@dreamboard-games/cli 0.1.30-alpha.12 → 0.1.30-alpha.15

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 (143) hide show
  1. package/README.md +2 -6
  2. package/dist/agent-verifier/agent-workspace-verifier.mjs +18 -17
  3. package/dist/agent-verifier/agent-workspace-verifier.mjs.map +1 -1
  4. package/dist/agent-verifier/{chunk-VLOIZDR6.mjs → chunk-4BECKTAF.mjs} +199 -190
  5. package/dist/agent-verifier/chunk-4BECKTAF.mjs.map +1 -0
  6. package/dist/agent-verifier/{chunk-TLYGTHXU.mjs → chunk-5GCZZ6NW.mjs} +3 -3
  7. package/dist/agent-verifier/{chunk-YR664DJX.mjs → chunk-A67WUYN2.mjs} +42 -68
  8. package/dist/agent-verifier/chunk-A67WUYN2.mjs.map +1 -0
  9. package/dist/agent-verifier/chunk-AXXUGU7Q.mjs +255 -0
  10. package/dist/agent-verifier/chunk-AXXUGU7Q.mjs.map +1 -0
  11. package/dist/agent-verifier/chunk-CO3BRUD6.mjs +342 -0
  12. package/dist/agent-verifier/chunk-CO3BRUD6.mjs.map +1 -0
  13. package/dist/agent-verifier/chunk-DPYC2NDB.mjs +59 -0
  14. package/dist/agent-verifier/chunk-DPYC2NDB.mjs.map +1 -0
  15. package/dist/agent-verifier/{chunk-4GU3PCHV.mjs → chunk-DWLTCUUX.mjs} +576 -393
  16. package/dist/agent-verifier/chunk-DWLTCUUX.mjs.map +1 -0
  17. package/dist/agent-verifier/{chunk-COB56ESI.mjs → chunk-G2ECODRB.mjs} +2 -2
  18. package/dist/agent-verifier/{chunk-6XRC5PWB.mjs → chunk-H3XNWKJU.mjs} +217 -232
  19. package/dist/agent-verifier/chunk-H3XNWKJU.mjs.map +1 -0
  20. package/dist/agent-verifier/{chunk-Z6OZWUIZ.mjs → chunk-HLHT57AW.mjs} +64 -16
  21. package/dist/agent-verifier/chunk-HLHT57AW.mjs.map +1 -0
  22. package/dist/agent-verifier/{chunk-YDIOW2BO.mjs → chunk-INIK6LHK.mjs} +2 -2
  23. package/dist/agent-verifier/{chunk-UWJIZML3.mjs → chunk-LKQ557TJ.mjs} +30 -23
  24. package/dist/agent-verifier/chunk-LKQ557TJ.mjs.map +1 -0
  25. package/dist/agent-verifier/{chunk-NAK77WXW.mjs → chunk-MYMVXTZT.mjs} +4 -5
  26. package/dist/agent-verifier/chunk-MYMVXTZT.mjs.map +1 -0
  27. package/dist/agent-verifier/{chunk-UIJ2NDG6.mjs → chunk-NFL3Z4Z7.mjs} +31 -238
  28. package/dist/agent-verifier/chunk-NFL3Z4Z7.mjs.map +1 -0
  29. package/dist/agent-verifier/{chunk-XKCJBIRY.mjs → chunk-QD4SQNUP.mjs} +2 -2
  30. package/dist/agent-verifier/{chunk-IAYRNVUC.mjs → chunk-RDYXWXXC.mjs} +1 -3
  31. package/dist/agent-verifier/{chunk-QBAF7EYR.mjs → chunk-TTB7AIHZ.mjs} +4 -4
  32. package/dist/agent-verifier/{chunk-QBAF7EYR.mjs.map → chunk-TTB7AIHZ.mjs.map} +1 -1
  33. package/dist/agent-verifier/chunk-V6AQDR7W.mjs +89 -0
  34. package/dist/agent-verifier/chunk-V6AQDR7W.mjs.map +1 -0
  35. package/dist/agent-verifier/{chunk-RHI6S4SU.mjs → chunk-V7ABTZXW.mjs} +1 -3
  36. package/dist/agent-verifier/{chunk-RHI6S4SU.mjs.map → chunk-V7ABTZXW.mjs.map} +1 -1
  37. package/dist/agent-verifier/chunk-WAFBU5U7.mjs +467 -0
  38. package/dist/agent-verifier/chunk-WAFBU5U7.mjs.map +1 -0
  39. package/dist/agent-verifier/{chunk-3IJBOLGT.mjs → chunk-WSIYUUSD.mjs} +2 -2
  40. package/dist/agent-verifier/{compile-WZ7X6I2A.mjs → compile-6G6GENLP.mjs} +22 -18
  41. package/dist/agent-verifier/compile-6G6GENLP.mjs.map +1 -0
  42. package/dist/agent-verifier/{global-config-XHL7BCKN.mjs → global-config-6UGFPLDA.mjs} +4 -3
  43. package/dist/agent-verifier/{keychain-backend-A3MRWLPF.mjs → keychain-backend-BQLW5VEC.mjs} +11 -6
  44. package/dist/agent-verifier/keychain-backend-BQLW5VEC.mjs.map +1 -0
  45. package/dist/agent-verifier/{local-files-ZW52HSVT.mjs → local-files-WPHUV6GU.mjs} +6 -6
  46. package/dist/agent-verifier/{materialize-workspace-BKZLLFI4.mjs → materialize-workspace-S24JA46C.mjs} +17 -17
  47. package/dist/agent-verifier/materialize-workspace-S24JA46C.mjs.map +1 -0
  48. package/dist/agent-verifier/{reducer-bundle-preflight-7NYZF5ZT.mjs → reducer-bundle-preflight-3DSXIELT.mjs} +4 -4
  49. package/dist/agent-verifier/reducer-contract-preflight-FQB7M4PU.mjs +11 -0
  50. package/dist/agent-verifier/{reducer-native-test-harness-D4VWPIAC.mjs → reducer-native-test-harness-GY2CCQWN.mjs} +12 -9
  51. package/dist/agent-verifier/{static-scaffold-JCRBDKEH.mjs → static-scaffold-5YD6QHIS.mjs} +7 -9
  52. package/dist/agent-verifier/{sync-ELLJEWMB.mjs → sync-3OZBFABA.mjs} +24 -22
  53. package/dist/agent-verifier/{sync-ELLJEWMB.mjs.map → sync-3OZBFABA.mjs.map} +1 -1
  54. package/dist/agent-verifier/{test-OSXBPLSP.mjs → test-LQAGEQLY.mjs} +19 -17
  55. package/dist/agent-verifier/test-LQAGEQLY.mjs.map +1 -0
  56. package/dist/agent-verifier/{workspace-codegen-WPZHMATU.mjs → workspace-codegen-4IWICKLB.mjs} +3 -3
  57. package/dist/agent-verifier/{workspace-dependencies-ULZZZPNX.mjs → workspace-dependencies-ZMHPHVQV.mjs} +2 -2
  58. package/dist/authoring-compatibility-internal.js +12 -0
  59. package/dist/{agent-verifier/chunk-W2MDP5ZN.mjs → chunk-AVOAT522.js} +118 -21
  60. package/dist/chunk-AVOAT522.js.map +1 -0
  61. package/dist/chunk-FFO2IJL3.js +204 -0
  62. package/dist/chunk-FFO2IJL3.js.map +1 -0
  63. package/dist/chunk-JMV5ZFMK.js +4298 -0
  64. package/dist/chunk-JMV5ZFMK.js.map +1 -0
  65. package/dist/{chunk-P5TITCD3.js → chunk-JSF7PMIF.js} +2240 -4554
  66. package/dist/chunk-JSF7PMIF.js.map +1 -0
  67. package/dist/{global-config-WPJRXVDO.js → global-config-NLGAFSRU.js} +3 -2
  68. package/dist/global-config-NLGAFSRU.js.map +1 -0
  69. package/dist/index.js +1371 -3545
  70. package/dist/index.js.map +1 -1
  71. package/dist/internal.js +14 -8
  72. package/dist/{keychain-backend-JHTXAKWC.js → keychain-backend-47LZ5IX5.js} +11 -6
  73. package/dist/keychain-backend-47LZ5IX5.js.map +1 -0
  74. package/package.json +9 -19
  75. package/release/authoring-release-set.json +38 -0
  76. package/skills/dreamboard/references/manifest-authoring.md +11 -3
  77. package/dist/agent-verifier/chunk-4GU3PCHV.mjs.map +0 -1
  78. package/dist/agent-verifier/chunk-6XRC5PWB.mjs.map +0 -1
  79. package/dist/agent-verifier/chunk-G42BGGG2.mjs +0 -70
  80. package/dist/agent-verifier/chunk-G42BGGG2.mjs.map +0 -1
  81. package/dist/agent-verifier/chunk-KK47X7RV.mjs +0 -14
  82. package/dist/agent-verifier/chunk-KK47X7RV.mjs.map +0 -1
  83. package/dist/agent-verifier/chunk-NAK77WXW.mjs.map +0 -1
  84. package/dist/agent-verifier/chunk-UIJ2NDG6.mjs.map +0 -1
  85. package/dist/agent-verifier/chunk-UWJIZML3.mjs.map +0 -1
  86. package/dist/agent-verifier/chunk-VLOIZDR6.mjs.map +0 -1
  87. package/dist/agent-verifier/chunk-W2MDP5ZN.mjs.map +0 -1
  88. package/dist/agent-verifier/chunk-YR664DJX.mjs.map +0 -1
  89. package/dist/agent-verifier/chunk-Z6OZWUIZ.mjs.map +0 -1
  90. package/dist/agent-verifier/compile-WZ7X6I2A.mjs.map +0 -1
  91. package/dist/agent-verifier/keychain-backend-A3MRWLPF.mjs.map +0 -1
  92. package/dist/agent-verifier/materialize-workspace-BKZLLFI4.mjs.map +0 -1
  93. package/dist/agent-verifier/reducer-contract-preflight-COD2CO22.mjs +0 -11
  94. package/dist/agent-verifier/test-OSXBPLSP.mjs.map +0 -1
  95. package/dist/chunk-GXM7RRZJ.js +0 -433
  96. package/dist/chunk-GXM7RRZJ.js.map +0 -1
  97. package/dist/chunk-P5TITCD3.js.map +0 -1
  98. package/dist/dev-host/components/drawer.tsx +0 -132
  99. package/dist/dev-host/components/input.tsx +0 -21
  100. package/dist/dev-host/dev-api-proxy-plugin.ts +0 -328
  101. package/dist/dev-host/dev-author-dom-warnings.ts +0 -100
  102. package/dist/dev-host/dev-diagnostics.ts +0 -62
  103. package/dist/dev-host/dev-fallback-stylesheet.ts +0 -53
  104. package/dist/dev-host/dev-hmr-guard-plugin.ts +0 -47
  105. package/dist/dev-host/dev-host-controller.ts +0 -674
  106. package/dist/dev-host/dev-host-player-query.ts +0 -17
  107. package/dist/dev-host/dev-host-session-transport.ts +0 -52
  108. package/dist/dev-host/dev-host-storage.ts +0 -56
  109. package/dist/dev-host/dev-log-relay-plugin.ts +0 -510
  110. package/dist/dev-host/dev-runtime-config.ts +0 -14
  111. package/dist/dev-host/dev-runtime-platform.ts +0 -335
  112. package/dist/dev-host/dev-virtual-modules-plugin.ts +0 -64
  113. package/dist/dev-host/host-main.css +0 -224
  114. package/dist/dev-host/host-main.tsx +0 -954
  115. package/dist/dev-host/index.html +0 -56
  116. package/dist/dev-host/lib/utils.ts +0 -6
  117. package/dist/dev-host/plugin-main.ts +0 -61
  118. package/dist/dev-host/plugin.html +0 -24
  119. package/dist/dev-host/shared-styles.css +0 -144
  120. package/dist/dev-host/start-dev-server.ts +0 -140
  121. package/dist/dev-host/virtual-modules.d.ts +0 -27
  122. package/dist/keychain-backend-JHTXAKWC.js.map +0 -1
  123. /package/dist/agent-verifier/{chunk-TLYGTHXU.mjs.map → chunk-5GCZZ6NW.mjs.map} +0 -0
  124. /package/dist/agent-verifier/{chunk-COB56ESI.mjs.map → chunk-G2ECODRB.mjs.map} +0 -0
  125. /package/dist/agent-verifier/{chunk-YDIOW2BO.mjs.map → chunk-INIK6LHK.mjs.map} +0 -0
  126. /package/dist/agent-verifier/{chunk-XKCJBIRY.mjs.map → chunk-QD4SQNUP.mjs.map} +0 -0
  127. /package/dist/agent-verifier/{chunk-IAYRNVUC.mjs.map → chunk-RDYXWXXC.mjs.map} +0 -0
  128. /package/dist/agent-verifier/{chunk-3IJBOLGT.mjs.map → chunk-WSIYUUSD.mjs.map} +0 -0
  129. /package/dist/agent-verifier/{global-config-XHL7BCKN.mjs.map → global-config-6UGFPLDA.mjs.map} +0 -0
  130. /package/dist/agent-verifier/{local-files-ZW52HSVT.mjs.map → local-files-WPHUV6GU.mjs.map} +0 -0
  131. /package/dist/agent-verifier/{reducer-bundle-preflight-7NYZF5ZT.mjs.map → reducer-bundle-preflight-3DSXIELT.mjs.map} +0 -0
  132. /package/dist/agent-verifier/{reducer-contract-preflight-COD2CO22.mjs.map → reducer-contract-preflight-FQB7M4PU.mjs.map} +0 -0
  133. /package/dist/agent-verifier/{reducer-native-test-harness-D4VWPIAC.mjs.map → reducer-native-test-harness-GY2CCQWN.mjs.map} +0 -0
  134. /package/dist/agent-verifier/{static-scaffold-JCRBDKEH.mjs.map → static-scaffold-5YD6QHIS.mjs.map} +0 -0
  135. /package/dist/agent-verifier/{workspace-codegen-WPZHMATU.mjs.map → workspace-codegen-4IWICKLB.mjs.map} +0 -0
  136. /package/dist/agent-verifier/{workspace-dependencies-ULZZZPNX.mjs.map → workspace-dependencies-ZMHPHVQV.mjs.map} +0 -0
  137. /package/dist/{global-config-WPJRXVDO.js.map → authoring-compatibility-internal.js.map} +0 -0
  138. /package/{dist/scaffold → scaffold}/assets/static/app/tsconfig.framework.json +0 -0
  139. /package/{dist/scaffold → scaffold}/assets/static/app/tsconfig.json +0 -0
  140. /package/{dist/scaffold → scaffold}/assets/static/ui/index.tsx +0 -0
  141. /package/{dist/scaffold → scaffold}/assets/static/ui/style.css +0 -0
  142. /package/{dist/scaffold → scaffold}/assets/static/ui/tsconfig.framework.json +0 -0
  143. /package/{dist/scaffold → scaffold}/assets/static/ui/tsconfig.json +0 -0
@@ -6,7 +6,7 @@ import {
6
6
  ensureDir,
7
7
  exists,
8
8
  readJsonFile
9
- } from "./chunk-IAYRNVUC.mjs";
9
+ } from "./chunk-RDYXWXXC.mjs";
10
10
  import {
11
11
  PROJECT_CONFIG_FILE,
12
12
  PROJECT_DIR_NAME,
@@ -155,4 +155,4 @@ export {
155
155
  updateProjectState,
156
156
  findProjectRoot
157
157
  };
158
- //# sourceMappingURL=chunk-3IJBOLGT.mjs.map
158
+ //# sourceMappingURL=chunk-WSIYUUSD.mjs.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  resolveRemoteProject
4
- } from "./chunk-TLYGTHXU.mjs";
4
+ } from "./chunk-5GCZZ6NW.mjs";
5
5
  import {
6
6
  CONFIG_FLAG_ARGS,
7
7
  defineCommand,
@@ -9,7 +9,7 @@ import {
9
9
  parseCompileCommandArgs,
10
10
  queueProjectRevisionCompileSdk,
11
11
  waitForCompiledResultJobSdk
12
- } from "./chunk-YR664DJX.mjs";
12
+ } from "./chunk-A67WUYN2.mjs";
13
13
  import {
14
14
  getProjectAuthoringState,
15
15
  getProjectPendingAuthoringSync,
@@ -20,31 +20,33 @@ import {
20
20
  } from "./chunk-POBFNXD4.mjs";
21
21
  import {
22
22
  formatCliError
23
- } from "./chunk-COB56ESI.mjs";
23
+ } from "./chunk-G2ECODRB.mjs";
24
24
  import {
25
25
  assertCompilerPortableDependencies,
26
26
  assertReleaseEnvironmentPortableDependencies,
27
27
  consola,
28
28
  resolveProjectContext
29
- } from "./chunk-UIJ2NDG6.mjs";
29
+ } from "./chunk-NFL3Z4Z7.mjs";
30
30
  import {
31
31
  updateProjectState
32
- } from "./chunk-3IJBOLGT.mjs";
33
- import "./chunk-W2MDP5ZN.mjs";
32
+ } from "./chunk-WSIYUUSD.mjs";
33
+ import "./chunk-CO3BRUD6.mjs";
34
+ import "./chunk-DPYC2NDB.mjs";
35
+ import "./chunk-AXXUGU7Q.mjs";
34
36
  import {
35
37
  getLocalDiff
36
- } from "./chunk-UWJIZML3.mjs";
38
+ } from "./chunk-LKQ557TJ.mjs";
37
39
  import "./chunk-TAEQKBJB.mjs";
38
40
  import {
39
41
  assertCliStaticScaffoldComplete
40
- } from "./chunk-VLOIZDR6.mjs";
42
+ } from "./chunk-4BECKTAF.mjs";
41
43
  import "./chunk-F2DIOJJZ.mjs";
42
- import "./chunk-KK47X7RV.mjs";
43
- import "./chunk-6XRC5PWB.mjs";
44
+ import "./chunk-RDYXWXXC.mjs";
45
+ import "./chunk-H3XNWKJU.mjs";
44
46
  import "./chunk-JZTH3EMV.mjs";
45
- import "./chunk-QBAF7EYR.mjs";
46
- import "./chunk-NAK77WXW.mjs";
47
- import "./chunk-IAYRNVUC.mjs";
47
+ import "./chunk-TTB7AIHZ.mjs";
48
+ import "./chunk-MYMVXTZT.mjs";
49
+ import "./chunk-WAFBU5U7.mjs";
48
50
  import "./chunk-ZEELHSY3.mjs";
49
51
  import "./chunk-M7UVBANQ.mjs";
50
52
  import "./chunk-H6XDQJ3N.mjs";
@@ -167,7 +169,9 @@ var compile_default = defineCommand({
167
169
  }
168
170
  const remoteRevisionDigest = remoteProject.project.head?.revisionDigest;
169
171
  if (!remoteRevisionDigest) {
170
- throw new Error("Remote has no authored project revision to compile yet.");
172
+ throw new Error(
173
+ "Remote has no authored project revision to compile yet."
174
+ );
171
175
  }
172
176
  if (remoteRevisionDigest !== localRevisionDigest) {
173
177
  throw new Error(
@@ -201,13 +205,13 @@ var compile_default = defineCommand({
201
205
  resultId: existingCompiledResult.id,
202
206
  jobId: void 0,
203
207
  revisionDigest: localRevisionDigest,
204
- authoringStateId: existingCompiledResult.authoringStateId ?? localRevisionDigest,
208
+ authoringStateId: localAuthoring.authoringStateId ?? localRevisionDigest,
205
209
  status: "successful",
206
210
  diagnosticsSummary: void 0
207
211
  });
208
212
  await updateProjectState(projectRoot, nextProjectConfig);
209
213
  consola.success(
210
- `Reusing compiled ${existingCompiledResult.id} for authored state ${existingCompiledResult.authoringStateId}.`
214
+ `Reusing compiled ${existingCompiledResult.id} for revision ${localRevisionDigest}.`
211
215
  );
212
216
  return;
213
217
  }
@@ -275,7 +279,7 @@ var compile_default = defineCommand({
275
279
  resultId: compiledResult.id,
276
280
  jobId: compileJobId,
277
281
  revisionDigest: localRevisionDigest,
278
- authoringStateId: compiledResult.authoringStateId ?? localRevisionDigest,
282
+ authoringStateId: localAuthoring.authoringStateId ?? localRevisionDigest,
279
283
  status: compiledResult.success && !failedJobProducedCompiledResult ? "successful" : "failed",
280
284
  diagnosticsSummary: failedJobWithCompiledResultSummary ?? formatDiagnosticsSummary(compiledResult.diagnostics)
281
285
  });
@@ -310,4 +314,4 @@ var compile_default = defineCommand({
310
314
  export {
311
315
  compile_default as default
312
316
  };
313
- //# sourceMappingURL=compile-WZ7X6I2A.mjs.map
317
+ //# sourceMappingURL=compile-6G6GENLP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/commands/compile.ts"],"sourcesContent":["import type { CompiledResult } from \"@dreamboard-games/api-client\";\nimport type { ProjectConfig } from \"../types.js\";\nimport { defineCommand } from \"citty\";\nimport consola from \"consola\";\nimport { CONFIG_FLAG_ARGS } from \"../command-args.js\";\nimport { resolveProjectContext } from \"../config/resolve.js\";\nimport { updateProjectState } from \"../config/project-config.js\";\nimport { parseCompileCommandArgs } from \"../flags.js\";\nimport { getLocalDiff } from \"../services/project/local-files.js\";\nimport { assertCliStaticScaffoldComplete } from \"../services/project/static-scaffold.js\";\nimport {\n assertCompilerPortableDependencies,\n assertReleaseEnvironmentPortableDependencies,\n} from \"../services/project/dependency-portability.js\";\nimport { runLocalTypecheck } from \"../services/project/local-typecheck.js\";\nimport {\n findProjectCompiledResultsForRevision,\n queueProjectRevisionCompileSdk,\n waitForCompiledResultJobSdk,\n} from \"../services/api/index.js\";\nimport {\n getProjectAuthoringState,\n getProjectPendingAuthoringSync,\n setLatestCompileAttempt,\n} from \"../services/project/project-state.js\";\nimport { formatCliError } from \"../utils/errors.js\";\nimport { resolveRemoteProject } from \"../services/project/remote-project.js\";\n\nfunction formatDiagnosticsSummary(\n diagnostics: Array<{ message?: string }> | null | undefined,\n): string | undefined {\n const firstMessage = diagnostics?.find(\n (diagnostic) => diagnostic.message,\n )?.message;\n return firstMessage?.trim() || undefined;\n}\n\nfunction formatCompileJobProgressMessage(job: {\n status: string;\n phase?: string;\n queuePosition?: number;\n message?: string;\n}): string {\n const phase = job.phase ? ` [${job.phase}]` : \"\";\n const detail = job.message ? ` ${job.message}` : \"\";\n if (job.status === \"PENDING\") {\n const queue =\n typeof job.queuePosition === \"number\"\n ? ` (queue ${job.queuePosition + 1})`\n : \"\";\n return `Compile queued${queue}${phase}${detail}`.trim();\n }\n if (job.status === \"RUNNING\") {\n return `Compile running${phase}${detail}`.trim();\n }\n if (job.status === \"FAILED\") {\n return `Compile failed${phase}${detail}`.trim();\n }\n return `Compile ${job.status.toLowerCase()}${phase}${detail}`.trim();\n}\n\nfunction formatFailedCompileJobSummary(job: {\n phase?: string;\n message?: string | null;\n errorMessage?: string | null;\n}): string {\n return formatCompileJobProgressMessage({\n status: \"FAILED\",\n phase: job.phase,\n message: job.errorMessage ?? job.message ?? undefined,\n });\n}\n\nfunction formatFailedCompileJobWithCompiledResultMessage(options: {\n compiledResultId: string;\n job: {\n phase?: string;\n message?: string | null;\n errorMessage?: string | null;\n };\n}): string {\n return `${formatFailedCompileJobSummary(options.job)}. The backend created compiled result ${options.compiledResultId}, but the compile job did not complete cleanly. Run 'dreamboard compile' again after fixing the backend/compiler issue.`;\n}\n\nfunction formatRemoteCompileCommandError(options: {\n message: string;\n jobId?: string;\n}): string {\n const detail = options.message.trim();\n const hasActionableTerminalContext =\n /^Compile\\s+(failed|completed|cancelled|interrupted)\\b/i.test(detail);\n if (options.jobId) {\n if (hasActionableTerminalContext) {\n return `Remote compile job ${options.jobId} could not be completed. ${detail}`;\n }\n return `Remote compile job ${options.jobId} could not be completed. ${detail} Check backend health and try 'dreamboard compile' again.`;\n }\n return `Remote compile could not be started. ${detail} Check backend health and try 'dreamboard compile' again.`;\n}\n\nasync function persistFailedCompileAttempt(options: {\n projectRoot: string;\n projectConfig: ProjectConfig;\n revisionDigest: string;\n authoringStateId?: string;\n diagnosticsSummary: string;\n jobId?: string;\n}): Promise<void> {\n const nextProjectConfig = setLatestCompileAttempt(options.projectConfig, {\n resultId: undefined,\n jobId: options.jobId,\n revisionDigest: options.revisionDigest,\n authoringStateId: options.authoringStateId ?? options.revisionDigest,\n status: \"failed\",\n diagnosticsSummary: options.diagnosticsSummary,\n });\n await updateProjectState(options.projectRoot, nextProjectConfig);\n}\n\nexport default defineCommand({\n meta: {\n name: \"compile\",\n description: \"Compile the current remote authoring head\",\n },\n args: {\n debug: {\n type: \"boolean\",\n description: \"Print additional compile progress context\",\n default: false,\n },\n \"skip-local-check\": {\n type: \"boolean\",\n description: \"Skip the best-effort local typecheck before compiling\",\n default: false,\n },\n ...CONFIG_FLAG_ARGS,\n },\n async run({ args }) {\n const parsedArgs = parseCompileCommandArgs(args);\n const { projectRoot, projectConfig, config } =\n await resolveProjectContext(parsedArgs);\n let nextProjectConfig = projectConfig;\n await assertReleaseEnvironmentPortableDependencies({\n projectRoot,\n projectConfig: nextProjectConfig,\n environment: config.environment,\n });\n await assertCompilerPortableDependencies({\n projectRoot,\n projectConfig: nextProjectConfig,\n });\n\n const diff = await getLocalDiff(projectRoot);\n await assertCliStaticScaffoldComplete(projectRoot, diff.deleted);\n if (\n diff.modified.length > 0 ||\n diff.added.length > 0 ||\n diff.deleted.length > 0\n ) {\n throw new Error(\n \"Local authored changes are not synced yet. Run 'dreamboard sync' before compiling.\",\n );\n }\n\n const remoteProject = await resolveRemoteProject({\n projectRoot,\n projectConfig: nextProjectConfig,\n config,\n });\n nextProjectConfig = remoteProject.projectConfig;\n\n const localAuthoring = getProjectAuthoringState(nextProjectConfig);\n const pendingSync = getProjectPendingAuthoringSync(nextProjectConfig);\n if (pendingSync) {\n if (pendingSync.phase === \"authoring_state_created\") {\n throw new Error(\n \"Previous sync reached the remote authored head, but local scaffold finalization did not complete. Run 'dreamboard sync' again before compiling.\",\n );\n }\n throw new Error(\n \"Previous sync uploaded source changes but did not finish creating the authored head. Run 'dreamboard sync' again before compiling.\",\n );\n }\n const localRevisionDigest =\n localAuthoring.revisionDigest ?? nextProjectConfig.remoteHeadDigest;\n if (!localRevisionDigest) {\n throw new Error(\n \"This workspace does not know its authored revision yet. Run 'dreamboard sync' first.\",\n );\n }\n\n const remoteRevisionDigest = remoteProject.project.head?.revisionDigest;\n if (!remoteRevisionDigest) {\n throw new Error(\n \"Remote has no authored project revision to compile yet.\",\n );\n }\n if (remoteRevisionDigest !== localRevisionDigest) {\n throw new Error(\n `Remote project head is ${remoteRevisionDigest} but this workspace is based on ${localRevisionDigest}. Run 'dreamboard pull' before compiling.`,\n );\n }\n\n if (!parsedArgs[\"skip-local-check\"]) {\n consola.start(\"Running local typecheck...\");\n const typecheckResult = await runLocalTypecheck(projectRoot);\n if (typecheckResult.skipped) {\n if (typecheckResult.output) {\n consola.warn(typecheckResult.output);\n }\n } else if (!typecheckResult.success) {\n if (typecheckResult.output) {\n consola.error(typecheckResult.output);\n }\n throw new Error(\n \"Local typecheck failed. Fix the diagnostics or re-run with --skip-local-check.\",\n );\n } else {\n consola.success(\"Local typecheck passed.\");\n }\n }\n\n const existingCompiledResult = (\n await findProjectCompiledResultsForRevision({\n projectId: nextProjectConfig.projectId,\n revisionDigest: localRevisionDigest,\n })\n ).find((result) => result.success);\n if (existingCompiledResult) {\n nextProjectConfig = setLatestCompileAttempt(nextProjectConfig, {\n resultId: existingCompiledResult.id,\n jobId: undefined,\n revisionDigest: localRevisionDigest,\n authoringStateId:\n localAuthoring.authoringStateId ?? localRevisionDigest,\n status: \"successful\",\n diagnosticsSummary: undefined,\n });\n await updateProjectState(projectRoot, nextProjectConfig);\n consola.success(\n `Reusing compiled ${existingCompiledResult.id} for revision ${localRevisionDigest}.`,\n );\n return;\n }\n\n let compileJobId: string | undefined;\n let compileJobStatus: string | undefined;\n let compileJobPhase: string | undefined;\n let compileJobMessage: string | null | undefined;\n let compileJobErrorMessage: string | null | undefined;\n let compiledResult: CompiledResult;\n try {\n const compileJob = await queueProjectRevisionCompileSdk({\n projectId: nextProjectConfig.projectId,\n revisionDigest: localRevisionDigest,\n });\n compileJobId = compileJob.jobId;\n if (!compileJobId) {\n throw new Error(\"Failed to create compile job: missing jobId.\");\n }\n\n ({\n job: {\n status: compileJobStatus,\n phase: compileJobPhase,\n message: compileJobMessage,\n errorMessage: compileJobErrorMessage,\n },\n compiledResult,\n } = await waitForCompiledResultJobSdk({\n projectId: nextProjectConfig.projectId,\n jobId: compileJobId,\n onProgress: (job) => {\n const message = formatCompileJobProgressMessage(job);\n if (parsedArgs.debug) {\n consola.info(message);\n } else {\n consola.start(message);\n }\n },\n }));\n } catch (error) {\n const message = formatCliError(error);\n if (compileJobId) {\n await persistFailedCompileAttempt({\n projectRoot,\n projectConfig: nextProjectConfig,\n revisionDigest: localRevisionDigest,\n authoringStateId: localAuthoring.authoringStateId,\n diagnosticsSummary: message,\n jobId: compileJobId,\n });\n }\n throw new Error(\n formatRemoteCompileCommandError({\n message,\n jobId: compileJobId,\n }),\n );\n }\n\n const failedJobProducedCompiledResult =\n compileJobStatus === \"FAILED\" && compiledResult.success;\n const failedJobWithCompiledResultSummary = failedJobProducedCompiledResult\n ? formatFailedCompileJobSummary({\n phase: compileJobPhase,\n message: compileJobMessage,\n errorMessage: compileJobErrorMessage,\n })\n : undefined;\n\n nextProjectConfig = setLatestCompileAttempt(nextProjectConfig, {\n resultId: compiledResult.id,\n jobId: compileJobId,\n revisionDigest: localRevisionDigest,\n authoringStateId: localAuthoring.authoringStateId ?? localRevisionDigest,\n status:\n compiledResult.success && !failedJobProducedCompiledResult\n ? \"successful\"\n : \"failed\",\n diagnosticsSummary:\n failedJobWithCompiledResultSummary ??\n formatDiagnosticsSummary(compiledResult.diagnostics),\n });\n await updateProjectState(projectRoot, nextProjectConfig);\n\n if (failedJobProducedCompiledResult) {\n throw new Error(\n formatFailedCompileJobWithCompiledResultMessage({\n compiledResultId: compiledResult.id,\n job: {\n phase: compileJobPhase,\n message: compileJobMessage,\n errorMessage: compileJobErrorMessage,\n },\n }),\n );\n }\n\n if (!compiledResult.success) {\n for (const diagnostic of compiledResult.diagnostics ?? []) {\n if (diagnostic.message) {\n consola.error(diagnostic.message);\n }\n }\n throw new Error(\n \"Remote compile failed, but your authored state is synced. Fix the diagnostics and run 'dreamboard compile' again.\",\n );\n }\n\n consola.success(\n `Compiled ${compiledResult.id} for revision ${localRevisionDigest}.`,\n );\n },\n});\n"],"mappings":"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","names":[]}
@@ -4,9 +4,10 @@ import {
4
4
  getGlobalConfigPath,
5
5
  loadGlobalConfig,
6
6
  saveGlobalConfig
7
- } from "./chunk-W2MDP5ZN.mjs";
7
+ } from "./chunk-DPYC2NDB.mjs";
8
+ import "./chunk-AXXUGU7Q.mjs";
8
9
  import "./chunk-TAEQKBJB.mjs";
9
- import "./chunk-IAYRNVUC.mjs";
10
+ import "./chunk-RDYXWXXC.mjs";
10
11
  import "./chunk-M7UVBANQ.mjs";
11
12
  import "./chunk-H6XDQJ3N.mjs";
12
13
  export {
@@ -15,4 +16,4 @@ export {
15
16
  loadGlobalConfig,
16
17
  saveGlobalConfig
17
18
  };
18
- //# sourceMappingURL=global-config-XHL7BCKN.mjs.map
19
+ //# sourceMappingURL=global-config-6UGFPLDA.mjs.map
@@ -29,11 +29,14 @@ function parsePayload(raw) {
29
29
  if (trimmed.length === 0) return null;
30
30
  try {
31
31
  const parsed = JSON.parse(trimmed);
32
- if (!parsed.accessToken && !parsed.refreshToken) return null;
32
+ const accessToken = parsed.clerkAccessToken ?? parsed.accessToken;
33
+ if (!accessToken && !parsed.refreshToken) return null;
33
34
  return {
34
- accessToken: parsed.accessToken || void 0,
35
+ accessToken: accessToken || void 0,
35
36
  refreshToken: parsed.refreshToken || void 0,
36
- tokenExpiresAt: parsed.tokenExpiresAt || void 0,
37
+ tokenExpiresAt: parsed.clerkAccessExpiresAt || parsed.tokenExpiresAt || void 0,
38
+ dreamboardApiToken: parsed.dreamboardApiToken || void 0,
39
+ dreamboardApiExpiresAt: parsed.dreamboardApiExpiresAt || void 0,
37
40
  clerkOAuthIssuer: parsed.clerkOAuthIssuer || void 0,
38
41
  clerkOAuthClientId: parsed.clerkOAuthClientId || void 0,
39
42
  clerkOAuthTokenUrl: parsed.clerkOAuthTokenUrl || void 0,
@@ -50,9 +53,11 @@ function writeFull(entry, creds) {
50
53
  );
51
54
  }
52
55
  const payload = {
53
- accessToken: creds.accessToken,
56
+ clerkAccessToken: creds.accessToken,
54
57
  refreshToken: creds.refreshToken,
55
- tokenExpiresAt: creds.tokenExpiresAt,
58
+ clerkAccessExpiresAt: creds.tokenExpiresAt,
59
+ dreamboardApiToken: creds.dreamboardApiToken,
60
+ dreamboardApiExpiresAt: creds.dreamboardApiExpiresAt,
56
61
  clerkOAuthIssuer: creds.clerkOAuthIssuer,
57
62
  clerkOAuthClientId: creds.clerkOAuthClientId,
58
63
  clerkOAuthTokenUrl: creds.clerkOAuthTokenUrl,
@@ -132,4 +137,4 @@ export {
132
137
  _setKeyringModuleForTests,
133
138
  tryKeychainBackend
134
139
  };
135
- //# sourceMappingURL=keychain-backend-A3MRWLPF.mjs.map
140
+ //# sourceMappingURL=keychain-backend-BQLW5VEC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/config/keychain-backend.ts"],"sourcesContent":["/**\n * OS keychain-backed `CredentialBackend` built on top of `@napi-rs/keyring`.\n *\n * Keychain is the required storage backend for published builds. Development\n * builds can still opt in with `credentialBackend: \"keychain\"` in\n * `~/.dreamboard/config.json` (see `credential-store.ts` for the resolver).\n * When enabled, it gives us:\n * - A refresh token encrypted at rest by the OS (Keychain on macOS,\n * Credential Vault on Windows, Secret Service on Linux).\n * - Protection against other processes running as the same user tailing\n * `~/.dreamboard/auth.json` to scrape the token.\n *\n * This module is loaded optionally: `@napi-rs/keyring` is declared as an\n * `optionalDependencies` entry. Published builds fail closed when the native\n * binary or OS keyring is unavailable; development builds may still use the\n * file backend.\n *\n * One-time migration: when the active backend is keychain and `auth.json` still\n * has tokens, `credential-store.ts` copies them into the keychain, verifies the\n * keychain read, and deletes the file. This is the only path that intentionally\n * mutates both backends.\n */\n\nimport type {\n CredentialBackend,\n Credentials,\n StoredSessionSnapshot,\n} from \"./credential-store.js\";\n\n/** Keychain service id. Shared across all Dreamboard CLI builds. */\nconst KEYCHAIN_SERVICE = \"dreamboard-cli\";\n/**\n * Keychain account id. The `user@host` shape is conventional but we keep\n * it fixed for now because the CLI only cares about \"the session for this\n * OS user\", not per-process sessions.\n */\nconst KEYCHAIN_ACCOUNT = \"session\";\n\ntype EntryInstance = {\n setPassword(value: string): void;\n getPassword(): string | null | undefined;\n deletePassword(): boolean;\n};\n\ntype KeyringModule = {\n Entry: new (service: string, account: string) => EntryInstance;\n};\n\nlet cachedModule: KeyringModule | null | undefined;\n\nasync function loadKeyringModule(): Promise<KeyringModule | null> {\n if (cachedModule !== undefined) return cachedModule;\n try {\n // `@napi-rs/keyring` is an optional dependency. If the native binary is\n // missing on this platform the dynamic import throws; resolver policy in\n // credential-store decides whether that is fatal.\n const mod = (await import(\"@napi-rs/keyring\")) as unknown as KeyringModule;\n cachedModule = mod;\n } catch {\n cachedModule = null;\n }\n return cachedModule;\n}\n\nfunction keychainProbe(entry: EntryInstance): boolean {\n // Some platforms have the module installed but no accessible keyring\n // (e.g. headless Linux without DBus). Touch getPassword to verify we\n // can talk to the service without side effects.\n try {\n entry.getPassword();\n return true;\n } catch {\n return false;\n }\n}\n\ntype KeychainPayload = {\n clerkAccessToken?: string;\n accessToken?: string;\n refreshToken?: string;\n clerkAccessExpiresAt?: string;\n tokenExpiresAt?: string;\n dreamboardApiToken?: string;\n dreamboardApiExpiresAt?: string;\n clerkOAuthIssuer?: string;\n clerkOAuthClientId?: string;\n clerkOAuthTokenUrl?: string;\n environment?: string;\n};\n\nfunction parsePayload(\n raw: string | null | undefined,\n): StoredSessionSnapshot | null {\n if (raw === null || raw === undefined) return null;\n const trimmed = raw.trim();\n if (trimmed.length === 0) return null;\n try {\n const parsed = JSON.parse(trimmed) as KeychainPayload;\n const accessToken = parsed.clerkAccessToken ?? parsed.accessToken;\n if (!accessToken && !parsed.refreshToken) return null;\n return {\n accessToken: accessToken || undefined,\n refreshToken: parsed.refreshToken || undefined,\n tokenExpiresAt:\n parsed.clerkAccessExpiresAt || parsed.tokenExpiresAt || undefined,\n dreamboardApiToken: parsed.dreamboardApiToken || undefined,\n dreamboardApiExpiresAt: parsed.dreamboardApiExpiresAt || undefined,\n clerkOAuthIssuer: parsed.clerkOAuthIssuer || undefined,\n clerkOAuthClientId: parsed.clerkOAuthClientId || undefined,\n clerkOAuthTokenUrl: parsed.clerkOAuthTokenUrl || undefined,\n environment: parsed.environment || undefined,\n };\n } catch {\n return null;\n }\n}\n\nfunction writeFull(entry: EntryInstance, creds: Credentials): void {\n if (!creds.accessToken || !creds.refreshToken) {\n throw new Error(\n \"Refusing to persist credentials with an empty accessToken or refreshToken.\",\n );\n }\n const payload: KeychainPayload = {\n clerkAccessToken: creds.accessToken,\n refreshToken: creds.refreshToken,\n clerkAccessExpiresAt: creds.tokenExpiresAt,\n dreamboardApiToken: creds.dreamboardApiToken,\n dreamboardApiExpiresAt: creds.dreamboardApiExpiresAt,\n clerkOAuthIssuer: creds.clerkOAuthIssuer,\n clerkOAuthClientId: creds.clerkOAuthClientId,\n clerkOAuthTokenUrl: creds.clerkOAuthTokenUrl,\n environment: creds.environment,\n };\n entry.setPassword(JSON.stringify(payload));\n}\n\nfunction writeAccessOnly(entry: EntryInstance, accessToken: string): void {\n if (!accessToken) {\n throw new Error(\"Refusing to persist an empty access token.\");\n }\n const payload: KeychainPayload = { accessToken };\n entry.setPassword(JSON.stringify(payload));\n}\n\nfunction clear(entry: EntryInstance): void {\n try {\n entry.deletePassword();\n } catch {\n // keyring-rs throws when the entry does not exist. That is fine -\n // `clearCredentials` contracts as idempotent.\n }\n}\n\nexport type KeychainAvailability =\n | { available: true; backend: CredentialBackend }\n | { available: false; reason: string };\n\n/**\n * Attempt to construct a keychain-backed `CredentialBackend`. Returns an\n * `available: false` result (with a reason) if the native module, the\n * OS keyring, or the probe fails.\n */\nexport async function tryKeychainBackend(): Promise<KeychainAvailability> {\n const mod = await loadKeyringModule();\n if (!mod) {\n return {\n available: false,\n reason: \"@napi-rs/keyring is not installed for this platform\",\n };\n }\n\n let entry: EntryInstance;\n try {\n entry = new mod.Entry(KEYCHAIN_SERVICE, KEYCHAIN_ACCOUNT);\n } catch (err) {\n return {\n available: false,\n reason: `Failed to construct keyring entry: ${String((err as Error).message ?? err)}`,\n };\n }\n\n if (!keychainProbe(entry)) {\n return {\n available: false,\n reason: \"OS keyring is not accessible from this process\",\n };\n }\n\n const backend: CredentialBackend = {\n name: \"keychain\",\n async read() {\n try {\n return parsePayload(entry.getPassword());\n } catch (err) {\n const message = String((err as Error).message ?? err);\n // Transient keychain access errors (e.g. Touch ID prompt\n // cancelled) should not surface as \"session wiped\". Treat the\n // unreadable state as \"no session\" so the caller can fall back\n // to prompting for login.\n if (/no matching entry|not found/i.test(message)) {\n return null;\n }\n throw err;\n }\n },\n async writeFull(creds) {\n writeFull(entry, creds);\n },\n async writeAccessOnly(accessToken) {\n writeAccessOnly(entry, accessToken);\n },\n async clear() {\n clear(entry);\n },\n };\n return { available: true, backend };\n}\n\n/**\n * Test-only escape hatch so unit tests can install a fake keyring module\n * without going through the dynamic import cache.\n */\nexport function _setKeyringModuleForTests(mod: KeyringModule | null): void {\n cachedModule = mod;\n}\n\nexport function _resetKeyringModuleForTests(): void {\n cachedModule = undefined;\n}\n"],"mappings":"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","names":[]}
@@ -14,15 +14,15 @@ import {
14
14
  writeSnapshot,
15
15
  writeSnapshotFromFiles,
16
16
  writeSourceFiles
17
- } from "./chunk-UWJIZML3.mjs";
17
+ } from "./chunk-LKQ557TJ.mjs";
18
18
  import "./chunk-TAEQKBJB.mjs";
19
19
  import {
20
20
  computeManifestHash
21
- } from "./chunk-6XRC5PWB.mjs";
21
+ } from "./chunk-H3XNWKJU.mjs";
22
22
  import "./chunk-JZTH3EMV.mjs";
23
- import "./chunk-QBAF7EYR.mjs";
24
- import "./chunk-NAK77WXW.mjs";
25
- import "./chunk-IAYRNVUC.mjs";
23
+ import "./chunk-TTB7AIHZ.mjs";
24
+ import "./chunk-MYMVXTZT.mjs";
25
+ import "./chunk-WAFBU5U7.mjs";
26
26
  import "./chunk-M7UVBANQ.mjs";
27
27
  import "./chunk-H6XDQJ3N.mjs";
28
28
  export {
@@ -42,4 +42,4 @@ export {
42
42
  writeSnapshotFromFiles,
43
43
  writeSourceFiles
44
44
  };
45
- //# sourceMappingURL=local-files-ZW52HSVT.mjs.map
45
+ //# sourceMappingURL=local-files-WPHUV6GU.mjs.map
@@ -5,31 +5,31 @@ import {
5
5
  } from "./chunk-YE7UAO3T.mjs";
6
6
  import {
7
7
  updateProjectState
8
- } from "./chunk-3IJBOLGT.mjs";
8
+ } from "./chunk-WSIYUUSD.mjs";
9
9
  import {
10
10
  writeManifest,
11
11
  writeRule,
12
12
  writeSnapshot
13
- } from "./chunk-UWJIZML3.mjs";
13
+ } from "./chunk-LKQ557TJ.mjs";
14
14
  import "./chunk-TAEQKBJB.mjs";
15
15
  import {
16
16
  scaffoldStaticWorkspace
17
- } from "./chunk-VLOIZDR6.mjs";
17
+ } from "./chunk-4BECKTAF.mjs";
18
18
  import "./chunk-F2DIOJJZ.mjs";
19
- import "./chunk-KK47X7RV.mjs";
20
- import "./chunk-6XRC5PWB.mjs";
19
+ import {
20
+ ensureDir
21
+ } from "./chunk-RDYXWXXC.mjs";
22
+ import "./chunk-H3XNWKJU.mjs";
21
23
  import "./chunk-JZTH3EMV.mjs";
22
- import "./chunk-QBAF7EYR.mjs";
23
- import "./chunk-NAK77WXW.mjs";
24
+ import "./chunk-TTB7AIHZ.mjs";
25
+ import "./chunk-MYMVXTZT.mjs";
24
26
  import {
25
27
  applyWorkspaceCodegen
26
- } from "./chunk-G42BGGG2.mjs";
27
- import {
28
- ensureDir
29
- } from "./chunk-IAYRNVUC.mjs";
28
+ } from "./chunk-V6AQDR7W.mjs";
29
+ import "./chunk-WAFBU5U7.mjs";
30
30
  import {
31
31
  installWorkspaceDependencies
32
- } from "./chunk-RHI6S4SU.mjs";
32
+ } from "./chunk-V7ABTZXW.mjs";
33
33
  import "./chunk-ZEELHSY3.mjs";
34
34
  import "./chunk-M7UVBANQ.mjs";
35
35
  import "./chunk-H6XDQJ3N.mjs";
@@ -44,12 +44,12 @@ async function materializeWorkspaceProject(input) {
44
44
  await scaffoldStaticWorkspace(targetDir, "new", {
45
45
  localMaintainerRegistry: input.localMaintainerRegistry
46
46
  });
47
- await applyWorkspaceCodegen({
48
- projectRoot: targetDir,
49
- manifest: input.manifest
50
- });
51
47
  if (input.installDependencies ?? true) {
52
48
  await installWorkspaceDependencies(targetDir);
49
+ await applyWorkspaceCodegen({
50
+ projectRoot: targetDir,
51
+ manifest: input.manifest
52
+ });
53
53
  }
54
54
  const authoringConfig = input.ruleId && input.manifestId && input.manifestContentHash ? updateProjectAuthoringState(baseProjectConfig(input), {
55
55
  ruleId: input.ruleId,
@@ -87,4 +87,4 @@ function baseProjectConfig(input) {
87
87
  export {
88
88
  materializeWorkspaceProject
89
89
  };
90
- //# sourceMappingURL=materialize-workspace-BKZLLFI4.mjs.map
90
+ //# sourceMappingURL=materialize-workspace-S24JA46C.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/project/materialize-workspace.ts"],"sourcesContent":["import path from \"node:path\";\nimport type { GameTopologyManifest } from \"@dreamboard-games/sdk/types\";\nimport type {\n LocalMaintainerRegistryConfig,\n ProjectConfig,\n} from \"../../types.js\";\nimport { ensureDir } from \"../../utils/fs.js\";\nimport { writeManifest, writeRule, writeSnapshot } from \"./local-files.js\";\nimport { scaffoldStaticWorkspace } from \"./static-scaffold.js\";\nimport { applyWorkspaceCodegen } from \"./workspace-codegen.js\";\nimport { installWorkspaceDependencies } from \"./workspace-dependencies.js\";\nimport {\n updateProjectAuthoringState,\n updateProjectLocalMaintainerRegistry,\n} from \"./project-state.js\";\nimport { updateProjectState } from \"../../config/project-config.js\";\n\nexport type MaterializeWorkspaceProjectInput = {\n targetDir: string;\n projectId?: string;\n slug: string;\n gameId: string;\n deploymentId?: string;\n ownerScopeId?: string;\n bindingKey?: string;\n remoteHeadDigest?: string;\n apiBaseUrl: string;\n webBaseUrl: string;\n manifest: GameTopologyManifest;\n ruleText: string;\n ruleId?: string;\n manifestId?: string;\n manifestContentHash?: string;\n localMaintainerRegistry?: LocalMaintainerRegistryConfig | null;\n installDependencies?: boolean;\n agentManaged?: boolean;\n workspacePrepared?: boolean;\n allowCreateGame?: boolean;\n jobId?: string;\n packageManifest?: Record<string, unknown>;\n environmentManifest?: Record<string, unknown>;\n};\n\nexport async function materializeWorkspaceProject(\n input: MaterializeWorkspaceProjectInput,\n): Promise<ProjectConfig> {\n const targetDir = path.resolve(input.targetDir);\n await ensureDir(targetDir);\n await writeManifest(targetDir, input.manifest);\n await writeRule(targetDir, input.ruleText);\n\n await scaffoldStaticWorkspace(targetDir, \"new\", {\n localMaintainerRegistry: input.localMaintainerRegistry,\n });\n if (input.installDependencies ?? true) {\n await installWorkspaceDependencies(targetDir);\n await applyWorkspaceCodegen({\n projectRoot: targetDir,\n manifest: input.manifest,\n });\n }\n\n const authoringConfig =\n input.ruleId && input.manifestId && input.manifestContentHash\n ? updateProjectAuthoringState(baseProjectConfig(input), {\n ruleId: input.ruleId,\n manifestId: input.manifestId,\n manifestContentHash: input.manifestContentHash,\n })\n : baseProjectConfig(input);\n const projectConfig = updateProjectLocalMaintainerRegistry(\n authoringConfig,\n input.localMaintainerRegistry ?? undefined,\n );\n await updateProjectState(targetDir, projectConfig);\n await writeSnapshot(targetDir);\n return projectConfig;\n}\n\nfunction baseProjectConfig(\n input: MaterializeWorkspaceProjectInput,\n): ProjectConfig {\n return {\n schemaVersion: 2,\n projectId: input.projectId ?? input.gameId,\n gameId: input.gameId,\n deploymentId: input.deploymentId ?? \"legacy\",\n ownerScopeId: input.ownerScopeId ?? \"default\",\n bindingKey: input.bindingKey,\n remoteHeadDigest: input.remoteHeadDigest,\n slug: input.slug,\n jobId: input.jobId,\n agentManaged: input.agentManaged,\n workspacePrepared: input.workspacePrepared,\n allowCreateGame: input.allowCreateGame,\n apiBaseUrl: input.apiBaseUrl,\n webBaseUrl: input.webBaseUrl,\n packageManifest: input.packageManifest,\n environmentManifest: input.environmentManifest,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,UAAU;AA2CjB,eAAsB,4BACpB,OACwB;AACxB,QAAM,YAAY,KAAK,QAAQ,MAAM,SAAS;AAC9C,QAAM,UAAU,SAAS;AACzB,QAAM,cAAc,WAAW,MAAM,QAAQ;AAC7C,QAAM,UAAU,WAAW,MAAM,QAAQ;AAEzC,QAAM,wBAAwB,WAAW,OAAO;AAAA,IAC9C,yBAAyB,MAAM;AAAA,EACjC,CAAC;AACD,MAAI,MAAM,uBAAuB,MAAM;AACrC,UAAM,6BAA6B,SAAS;AAC5C,UAAM,sBAAsB;AAAA,MAC1B,aAAa;AAAA,MACb,UAAU,MAAM;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,QAAM,kBACJ,MAAM,UAAU,MAAM,cAAc,MAAM,sBACtC,4BAA4B,kBAAkB,KAAK,GAAG;AAAA,IACpD,QAAQ,MAAM;AAAA,IACd,YAAY,MAAM;AAAA,IAClB,qBAAqB,MAAM;AAAA,EAC7B,CAAC,IACD,kBAAkB,KAAK;AAC7B,QAAM,gBAAgB;AAAA,IACpB;AAAA,IACA,MAAM,2BAA2B;AAAA,EACnC;AACA,QAAM,mBAAmB,WAAW,aAAa;AACjD,QAAM,cAAc,SAAS;AAC7B,SAAO;AACT;AAEA,SAAS,kBACP,OACe;AACf,SAAO;AAAA,IACL,eAAe;AAAA,IACf,WAAW,MAAM,aAAa,MAAM;AAAA,IACpC,QAAQ,MAAM;AAAA,IACd,cAAc,MAAM,gBAAgB;AAAA,IACpC,cAAc,MAAM,gBAAgB;AAAA,IACpC,YAAY,MAAM;AAAA,IAClB,kBAAkB,MAAM;AAAA,IACxB,MAAM,MAAM;AAAA,IACZ,OAAO,MAAM;AAAA,IACb,cAAc,MAAM;AAAA,IACpB,mBAAmB,MAAM;AAAA,IACzB,iBAAiB,MAAM;AAAA,IACvB,YAAY,MAAM;AAAA,IAClB,YAAY,MAAM;AAAA,IAClB,iBAAiB,MAAM;AAAA,IACvB,qBAAqB,MAAM;AAAA,EAC7B;AACF;","names":[]}
@@ -5,10 +5,10 @@ import {
5
5
  buildScenarios,
6
6
  driveReducerBundleThroughScenarios,
7
7
  runReducerBundleSmoke
8
- } from "./chunk-Z6OZWUIZ.mjs";
9
- import "./chunk-XKCJBIRY.mjs";
8
+ } from "./chunk-HLHT57AW.mjs";
9
+ import "./chunk-QD4SQNUP.mjs";
10
10
  import "./chunk-JZTH3EMV.mjs";
11
- import "./chunk-QBAF7EYR.mjs";
11
+ import "./chunk-TTB7AIHZ.mjs";
12
12
  import "./chunk-H6XDQJ3N.mjs";
13
13
  export {
14
14
  assertReducerBundleSmoke,
@@ -17,4 +17,4 @@ export {
17
17
  driveReducerBundleThroughScenarios,
18
18
  runReducerBundleSmoke
19
19
  };
20
- //# sourceMappingURL=reducer-bundle-preflight-7NYZF5ZT.mjs.map
20
+ //# sourceMappingURL=reducer-bundle-preflight-3DSXIELT.mjs.map
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ assertReducerContractPreflight
4
+ } from "./chunk-INIK6LHK.mjs";
5
+ import "./chunk-QD4SQNUP.mjs";
6
+ import "./chunk-TTB7AIHZ.mjs";
7
+ import "./chunk-H6XDQJ3N.mjs";
8
+ export {
9
+ assertReducerContractPreflight
10
+ };
11
+ //# sourceMappingURL=reducer-contract-preflight-FQB7M4PU.mjs.map
@@ -16,17 +16,20 @@ import {
16
16
  replayScenarioThroughBackend,
17
17
  runReducerNativeScenarios,
18
18
  writeReducerNativeGeneratedFiles
19
- } from "./chunk-4GU3PCHV.mjs";
20
- import "./chunk-XKCJBIRY.mjs";
21
- import "./chunk-COB56ESI.mjs";
22
- import "./chunk-UWJIZML3.mjs";
19
+ } from "./chunk-DWLTCUUX.mjs";
20
+ import "./chunk-QD4SQNUP.mjs";
21
+ import "./chunk-G2ECODRB.mjs";
22
+ import "./chunk-CO3BRUD6.mjs";
23
+ import "./chunk-AXXUGU7Q.mjs";
24
+ import "./chunk-LKQ557TJ.mjs";
23
25
  import "./chunk-TAEQKBJB.mjs";
24
26
  import "./chunk-F2DIOJJZ.mjs";
25
- import "./chunk-6XRC5PWB.mjs";
27
+ import "./chunk-RDYXWXXC.mjs";
28
+ import "./chunk-H3XNWKJU.mjs";
26
29
  import "./chunk-JZTH3EMV.mjs";
27
- import "./chunk-QBAF7EYR.mjs";
28
- import "./chunk-NAK77WXW.mjs";
29
- import "./chunk-IAYRNVUC.mjs";
30
+ import "./chunk-TTB7AIHZ.mjs";
31
+ import "./chunk-MYMVXTZT.mjs";
32
+ import "./chunk-WAFBU5U7.mjs";
30
33
  import "./chunk-M7UVBANQ.mjs";
31
34
  import "./chunk-H6XDQJ3N.mjs";
32
35
  export {
@@ -47,4 +50,4 @@ export {
47
50
  runReducerNativeScenarios,
48
51
  writeReducerNativeGeneratedFiles
49
52
  };
50
- //# sourceMappingURL=reducer-native-test-harness-D4VWPIAC.mjs.map
53
+ //# sourceMappingURL=reducer-native-test-harness-GY2CCQWN.mjs.map
@@ -2,25 +2,23 @@
2
2
  import {
3
3
  assertCliStaticScaffoldComplete,
4
4
  migrateLegacyScenarioImports,
5
- resolveSdkDependencyRange,
6
5
  resolveStaticAssetRoot,
7
6
  scaffoldStaticWorkspace
8
- } from "./chunk-VLOIZDR6.mjs";
7
+ } from "./chunk-4BECKTAF.mjs";
9
8
  import "./chunk-F2DIOJJZ.mjs";
10
- import "./chunk-KK47X7RV.mjs";
11
- import "./chunk-6XRC5PWB.mjs";
9
+ import "./chunk-RDYXWXXC.mjs";
10
+ import "./chunk-H3XNWKJU.mjs";
12
11
  import "./chunk-JZTH3EMV.mjs";
13
- import "./chunk-QBAF7EYR.mjs";
14
- import "./chunk-NAK77WXW.mjs";
15
- import "./chunk-IAYRNVUC.mjs";
12
+ import "./chunk-TTB7AIHZ.mjs";
13
+ import "./chunk-MYMVXTZT.mjs";
14
+ import "./chunk-WAFBU5U7.mjs";
16
15
  import "./chunk-ZEELHSY3.mjs";
17
16
  import "./chunk-M7UVBANQ.mjs";
18
17
  import "./chunk-H6XDQJ3N.mjs";
19
18
  export {
20
19
  assertCliStaticScaffoldComplete,
21
20
  migrateLegacyScenarioImports,
22
- resolveSdkDependencyRange,
23
21
  resolveStaticAssetRoot,
24
22
  scaffoldStaticWorkspace
25
23
  };
26
- //# sourceMappingURL=static-scaffold-JCRBDKEH.mjs.map
24
+ //# sourceMappingURL=static-scaffold-5YD6QHIS.mjs.map
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  assertReducerContractPreflight
4
- } from "./chunk-YDIOW2BO.mjs";
4
+ } from "./chunk-INIK6LHK.mjs";
5
5
  import {
6
6
  assertReducerBundleSmoke
7
- } from "./chunk-Z6OZWUIZ.mjs";
7
+ } from "./chunk-HLHT57AW.mjs";
8
8
  import {
9
9
  resolveRemoteProject
10
- } from "./chunk-TLYGTHXU.mjs";
10
+ } from "./chunk-5GCZZ6NW.mjs";
11
11
  import {
12
12
  CONFIG_FLAG_ARGS,
13
13
  createGameRevisionSdk,
@@ -16,7 +16,7 @@ import {
16
16
  materializeSourceChangeOperations,
17
17
  parseSyncCommandArgs,
18
18
  uploadProjectSourceBlobsSdk
19
- } from "./chunk-YR664DJX.mjs";
19
+ } from "./chunk-A67WUYN2.mjs";
20
20
  import {
21
21
  getProjectAuthoringState,
22
22
  getProjectLocalMaintainerRegistry,
@@ -27,51 +27,53 @@ import {
27
27
  import {
28
28
  runLocalTypecheck
29
29
  } from "./chunk-POBFNXD4.mjs";
30
- import "./chunk-XKCJBIRY.mjs";
31
- import "./chunk-COB56ESI.mjs";
30
+ import "./chunk-QD4SQNUP.mjs";
31
+ import "./chunk-G2ECODRB.mjs";
32
32
  import {
33
33
  assertReleaseEnvironmentPortableDependencies,
34
34
  consola,
35
35
  resolveProjectContext
36
- } from "./chunk-UIJ2NDG6.mjs";
36
+ } from "./chunk-NFL3Z4Z7.mjs";
37
37
  import {
38
38
  updateProjectState
39
- } from "./chunk-3IJBOLGT.mjs";
40
- import "./chunk-W2MDP5ZN.mjs";
39
+ } from "./chunk-WSIYUUSD.mjs";
40
+ import "./chunk-CO3BRUD6.mjs";
41
+ import "./chunk-DPYC2NDB.mjs";
42
+ import {
43
+ BUILD_CHANNEL,
44
+ IS_PUBLISHED_BUILD
45
+ } from "./chunk-AXXUGU7Q.mjs";
41
46
  import {
42
47
  collectLocalFiles,
43
48
  getLocalDiff,
44
49
  loadManifest,
45
50
  loadRule,
46
51
  writeSnapshot
47
- } from "./chunk-UWJIZML3.mjs";
52
+ } from "./chunk-LKQ557TJ.mjs";
48
53
  import "./chunk-TAEQKBJB.mjs";
49
54
  import {
50
55
  assertCliStaticScaffoldComplete,
51
56
  scaffoldStaticWorkspace
52
- } from "./chunk-VLOIZDR6.mjs";
57
+ } from "./chunk-4BECKTAF.mjs";
53
58
  import "./chunk-F2DIOJJZ.mjs";
54
- import {
55
- BUILD_CHANNEL,
56
- IS_PUBLISHED_BUILD
57
- } from "./chunk-KK47X7RV.mjs";
59
+ import "./chunk-RDYXWXXC.mjs";
58
60
  import {
59
61
  computeManifestHash,
60
62
  isAllowedGamePath,
61
63
  isDynamicGeneratedPath
62
- } from "./chunk-6XRC5PWB.mjs";
64
+ } from "./chunk-H3XNWKJU.mjs";
63
65
  import "./chunk-JZTH3EMV.mjs";
64
66
  import {
65
67
  resolveCliRepoRoot
66
- } from "./chunk-QBAF7EYR.mjs";
67
- import "./chunk-NAK77WXW.mjs";
68
+ } from "./chunk-TTB7AIHZ.mjs";
69
+ import "./chunk-MYMVXTZT.mjs";
68
70
  import {
69
71
  applyWorkspaceCodegen
70
- } from "./chunk-G42BGGG2.mjs";
71
- import "./chunk-IAYRNVUC.mjs";
72
+ } from "./chunk-V6AQDR7W.mjs";
73
+ import "./chunk-WAFBU5U7.mjs";
72
74
  import {
73
75
  reconcileWorkspaceDependencies
74
- } from "./chunk-RHI6S4SU.mjs";
76
+ } from "./chunk-V7ABTZXW.mjs";
75
77
  import "./chunk-ZEELHSY3.mjs";
76
78
  import {
77
79
  ENVIRONMENT_CONFIGS,
@@ -593,4 +595,4 @@ var sync_default = defineCommand({
593
595
  export {
594
596
  sync_default as default
595
597
  };
596
- //# sourceMappingURL=sync-ELLJEWMB.mjs.map
598
+ //# sourceMappingURL=sync-3OZBFABA.mjs.map