@dreamboard-games/cli 0.1.30-alpha.31 → 0.1.30-alpha.33

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 (24) hide show
  1. package/README.md +8 -8
  2. package/dist/agent-verifier/agent-workspace-verifier.mjs +109 -13
  3. package/dist/agent-verifier/agent-workspace-verifier.mjs.map +1 -1
  4. package/dist/agent-verifier/{chunk-NBRUEJUK.mjs → chunk-OQ6OGY5D.mjs} +3 -3
  5. package/dist/agent-verifier/{chunk-NBRUEJUK.mjs.map → chunk-OQ6OGY5D.mjs.map} +1 -1
  6. package/dist/agent-verifier/{materialize-workspace-MAGKDMK5.mjs → materialize-workspace-3ECF4EYD.mjs} +2 -2
  7. package/dist/agent-verifier/{static-scaffold-CLRRWXON.mjs → static-scaffold-XZ4FS4RR.mjs} +2 -2
  8. package/dist/authoring-compatibility-internal.js +1 -1
  9. package/dist/{chunk-YNJVKC2T.js → chunk-BN5UBK47.js} +3 -3
  10. package/dist/{chunk-YNJVKC2T.js.map → chunk-BN5UBK47.js.map} +1 -1
  11. package/dist/{chunk-X244CUU4.js → chunk-E67GR2SL.js} +111 -14
  12. package/dist/chunk-E67GR2SL.js.map +1 -0
  13. package/dist/index.js +23 -20
  14. package/dist/index.js.map +1 -1
  15. package/dist/internal.js +2 -2
  16. package/package.json +1 -1
  17. package/release/authoring-release-set.json +2 -2
  18. package/skills/dreamboard/SKILL.md +3 -3
  19. package/skills/dreamboard/references/building-your-first-game.md +1 -1
  20. package/skills/dreamboard/references/cli.md +20 -19
  21. package/skills/dreamboard/references/quickstart.md +3 -3
  22. package/dist/chunk-X244CUU4.js.map +0 -1
  23. /package/dist/agent-verifier/{materialize-workspace-MAGKDMK5.mjs.map → materialize-workspace-3ECF4EYD.mjs.map} +0 -0
  24. /package/dist/agent-verifier/{static-scaffold-CLRRWXON.mjs.map → static-scaffold-XZ4FS4RR.mjs.map} +0 -0
@@ -24,7 +24,7 @@ import {
24
24
  writeWorkspaceJsonFile,
25
25
  writeWorkspaceTextFile,
26
26
  zProblemDetails
27
- } from "./chunk-YNJVKC2T.js";
27
+ } from "./chunk-BN5UBK47.js";
28
28
  import {
29
29
  getStoredSession,
30
30
  loadGlobalConfig,
@@ -40,9 +40,16 @@ import {
40
40
  } from "./chunk-EQNBQVIW.js";
41
41
 
42
42
  // src/build-target.ts
43
- var injectedBuildChannel = true ? "published" : void 0;
43
+ var injectedBuildChannel = true ? "development" : void 0;
44
+ var injectedPackageVersion = true ? "0.1.30-alpha.33" : void 0;
44
45
  var BUILD_CHANNEL = injectedBuildChannel === "published" ? "published" : "development";
46
+ var PACKAGE_VERSION = injectedPackageVersion ?? "0.0.0-development";
47
+ function isAlphaReleaseVersion(version) {
48
+ return /(?:^|-|\.)alpha(?:$|-|\.)/.test(version);
49
+ }
45
50
  var IS_PUBLISHED_BUILD = BUILD_CHANNEL === "published";
51
+ var IS_ALPHA_RELEASE = isAlphaReleaseVersion(PACKAGE_VERSION);
52
+ var CAN_SELECT_ENVIRONMENT = !IS_PUBLISHED_BUILD || IS_ALPHA_RELEASE;
46
53
  var PUBLISHED_ENVIRONMENT = "prod";
47
54
 
48
55
  // src/auth/refresh-error.ts
@@ -563,15 +570,15 @@ function resolveConfig(globalConfig, flags, project, credentials) {
563
570
  if (IS_PUBLISHED_BUILD) {
564
571
  assertPublicRuntimeFlags(flags);
565
572
  }
566
- const envEnvironment = IS_PUBLISHED_BUILD ? void 0 : environmentFromProcess();
567
- const projectEnvironment = IS_PUBLISHED_BUILD ? void 0 : project?.environment;
568
- const environment = IS_PUBLISHED_BUILD ? PUBLISHED_ENVIRONMENT : flags.env || envEnvironment || projectEnvironment || globalConfig.environment || "staging";
573
+ const envEnvironment = CAN_SELECT_ENVIRONMENT ? environmentFromProcess() : void 0;
574
+ const projectEnvironment = CAN_SELECT_ENVIRONMENT ? project?.environment : void 0;
575
+ const environment = CAN_SELECT_ENVIRONMENT ? flags.env || envEnvironment || projectEnvironment || globalConfig.environment || (IS_PUBLISHED_BUILD ? PUBLISHED_ENVIRONMENT : "staging") : PUBLISHED_ENVIRONMENT;
569
576
  const envConfig = ENVIRONMENT_CONFIGS[environment];
570
577
  const publishedEnvConfig = ENVIRONMENT_CONFIGS[PUBLISHED_ENVIRONMENT];
571
- const hasExplicitEnvironmentOverride = !IS_PUBLISHED_BUILD && Boolean(flags.env || envEnvironment || projectEnvironment);
572
- const resolvedApiBaseUrl = IS_PUBLISHED_BUILD ? publishedEnvConfig?.apiBaseUrl ?? DEFAULT_API_BASE_URL : hasExplicitEnvironmentOverride ? projectLocalBaseUrl(project?.apiBaseUrl, environment) || envConfig?.apiBaseUrl || DEFAULT_API_BASE_URL : project?.apiBaseUrl || envConfig?.apiBaseUrl || DEFAULT_API_BASE_URL;
578
+ const hasExplicitEnvironmentOverride = CAN_SELECT_ENVIRONMENT && Boolean(flags.env || envEnvironment || projectEnvironment);
579
+ const resolvedApiBaseUrl = IS_PUBLISHED_BUILD && !CAN_SELECT_ENVIRONMENT ? publishedEnvConfig?.apiBaseUrl ?? DEFAULT_API_BASE_URL : hasExplicitEnvironmentOverride ? projectLocalBaseUrl(project?.apiBaseUrl, environment) || envConfig?.apiBaseUrl || DEFAULT_API_BASE_URL : project?.apiBaseUrl || envConfig?.apiBaseUrl || DEFAULT_API_BASE_URL;
573
580
  const apiBaseUrl = valueOrUndefined(process.env.DREAMBOARD_API_BASE_URL) ?? resolvedApiBaseUrl;
574
- const resolvedWebBaseUrl = IS_PUBLISHED_BUILD ? publishedEnvConfig?.webBaseUrl ?? DEFAULT_WEB_BASE_URL : hasExplicitEnvironmentOverride ? projectLocalBaseUrl(project?.webBaseUrl, environment) || envConfig?.webBaseUrl || DEFAULT_WEB_BASE_URL : project?.webBaseUrl || envConfig?.webBaseUrl || DEFAULT_WEB_BASE_URL;
581
+ const resolvedWebBaseUrl = IS_PUBLISHED_BUILD && !CAN_SELECT_ENVIRONMENT ? publishedEnvConfig?.webBaseUrl ?? DEFAULT_WEB_BASE_URL : hasExplicitEnvironmentOverride ? projectLocalBaseUrl(project?.webBaseUrl, environment) || envConfig?.webBaseUrl || DEFAULT_WEB_BASE_URL : project?.webBaseUrl || envConfig?.webBaseUrl || DEFAULT_WEB_BASE_URL;
575
582
  const webBaseUrl = valueOrUndefined(process.env.DREAMBOARD_WEB_BASE_URL) ?? resolvedWebBaseUrl;
576
583
  const snapshot = buildCredentialSnapshot(flags, credentials, environment);
577
584
  const oauthConfig = resolveEnvironmentOAuthConfig(environment, envConfig);
@@ -676,9 +683,10 @@ function projectLocalBaseUrl(rawUrl, environment) {
676
683
  return void 0;
677
684
  }
678
685
  }
679
- function assertPublicRuntimeFlags(flags) {
680
- const argv = process.argv.slice(2);
681
- if (flags.env || argv.includes("--env")) {
686
+ function assertPublicRuntimeFlags(flags, options = {}) {
687
+ const canSelectEnvironment = options.canSelectEnvironment ?? CAN_SELECT_ENVIRONMENT;
688
+ const argv = options.argv ?? process.argv.slice(2);
689
+ if (!canSelectEnvironment && (flags.env || argv.includes("--env"))) {
682
690
  throw new Error(
683
691
  "The published Dreamboard CLI is production-only and does not accept `--env`."
684
692
  );
@@ -708,12 +716,18 @@ function createRetryingReadFetch(fetchImpl) {
708
716
  return (async (input, init) => {
709
717
  const method = resolveFetchMethod(input, init);
710
718
  if (method !== "GET" && method !== "HEAD") {
711
- return fetchImpl(input, init);
719
+ return fetchWithOptionalTrace(fetchImpl, input, init, {
720
+ attempt: 0,
721
+ willRetry: false
722
+ });
712
723
  }
713
724
  let lastError;
714
725
  for (let attempt = 0; attempt <= TRANSIENT_READ_RETRY_DELAYS_MS.length; attempt += 1) {
715
726
  try {
716
- return await fetchImpl(input, init);
727
+ return await fetchWithOptionalTrace(fetchImpl, input, init, {
728
+ attempt,
729
+ willRetry: attempt < TRANSIENT_READ_RETRY_DELAYS_MS.length
730
+ });
717
731
  } catch (error) {
718
732
  lastError = error;
719
733
  if (attempt >= TRANSIENT_READ_RETRY_DELAYS_MS.length || !isTransientFetchError(error)) {
@@ -725,6 +739,88 @@ function createRetryingReadFetch(fetchImpl) {
725
739
  throw lastError;
726
740
  });
727
741
  }
742
+ async function fetchWithOptionalTrace(fetchImpl, input, init, options) {
743
+ if (!isHttpTraceEnabled()) {
744
+ return fetchImpl(input, init);
745
+ }
746
+ const request = describeRequest(input, init);
747
+ const startedAt = Date.now();
748
+ try {
749
+ const response = await fetchImpl(input, init);
750
+ writeHttpTrace({
751
+ ...request,
752
+ attempt: options.attempt,
753
+ status: response.status,
754
+ durationMs: Date.now() - startedAt
755
+ });
756
+ return response;
757
+ } catch (error) {
758
+ writeHttpTrace({
759
+ ...request,
760
+ attempt: options.attempt,
761
+ durationMs: Date.now() - startedAt,
762
+ error: error instanceof Error ? error.name : "UnknownError",
763
+ willRetry: options.willRetry
764
+ });
765
+ throw error;
766
+ }
767
+ }
768
+ function isHttpTraceEnabled() {
769
+ return process.env.DREAMBOARD_CLI_HTTP_TRACE === "1";
770
+ }
771
+ function describeRequest(input, init) {
772
+ return {
773
+ method: resolveFetchMethod(input, init),
774
+ url: redactUrl(input),
775
+ hasAuthorization: hasAuthorizationHeader(input, init)
776
+ };
777
+ }
778
+ function redactUrl(input) {
779
+ const rawUrl = typeof input === "string" ? input : input instanceof URL ? input.toString() : input.url;
780
+ try {
781
+ const url = new URL(rawUrl);
782
+ return `${url.origin}${url.pathname}`;
783
+ } catch {
784
+ return "<unparseable-url>";
785
+ }
786
+ }
787
+ function hasAuthorizationHeader(input, init) {
788
+ return headersContainAuthorization(init?.headers) || typeof Request !== "undefined" && input instanceof Request && input.headers.has("Authorization");
789
+ }
790
+ function headersContainAuthorization(headers) {
791
+ if (!headers) {
792
+ return false;
793
+ }
794
+ if (headers instanceof Headers) {
795
+ return headers.has("Authorization");
796
+ }
797
+ if (Array.isArray(headers)) {
798
+ return headers.some(([name]) => name.toLowerCase() === "authorization");
799
+ }
800
+ return Object.keys(headers).some(
801
+ (name) => name.toLowerCase() === "authorization"
802
+ );
803
+ }
804
+ function writeHttpTrace(event) {
805
+ const parts = [
806
+ "[dreamboard-cli:http]",
807
+ `method=${event.method}`,
808
+ `url=${event.url}`,
809
+ `auth=${event.hasAuthorization ? "present" : "missing"}`,
810
+ `attempt=${event.attempt + 1}`,
811
+ `durationMs=${event.durationMs}`
812
+ ];
813
+ if (typeof event.status === "number") {
814
+ parts.push(`status=${event.status}`);
815
+ }
816
+ if (event.error) {
817
+ parts.push(`error=${event.error}`);
818
+ }
819
+ if (event.willRetry) {
820
+ parts.push("willRetry=true");
821
+ }
822
+ console.error(parts.join(" "));
823
+ }
728
824
  function resolveFetchMethod(input, init) {
729
825
  const method = init?.method ?? (typeof Request !== "undefined" && input instanceof Request ? input.method : void 0);
730
826
  return (method ?? "GET").toUpperCase();
@@ -3768,6 +3864,7 @@ export {
3768
3864
  exchangeClerkOAuthCode,
3769
3865
  createUserSessionManager,
3770
3866
  IS_PUBLISHED_BUILD,
3867
+ CAN_SELECT_ENVIRONMENT,
3771
3868
  PUBLISHED_ENVIRONMENT,
3772
3869
  resolveLocalHarnessAccessToken,
3773
3870
  resolveConfig,
@@ -3812,4 +3909,4 @@ export {
3812
3909
  isLocalMaintainerRegistryEnabled,
3813
3910
  didLocalMaintainerSnapshotChange
3814
3911
  };
3815
- //# sourceMappingURL=chunk-X244CUU4.js.map
3912
+ //# sourceMappingURL=chunk-E67GR2SL.js.map