@mondaydotcomorg/z2h-cli 0.23.1-feat-z2h-beta-poc-17b052e → 0.24.0

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 (93) hide show
  1. package/dist/commands/deploy.d.ts.map +1 -1
  2. package/dist/commands/deploy.js +2 -6
  3. package/dist/commands/doctor.d.ts.map +1 -1
  4. package/dist/commands/doctor.js +6 -32
  5. package/dist/esm/commands/deploy.d.ts.map +1 -1
  6. package/dist/esm/commands/deploy.mjs +2 -6
  7. package/dist/esm/commands/doctor.d.ts.map +1 -1
  8. package/dist/esm/commands/doctor.mjs +6 -32
  9. package/dist/esm/index.mjs +0 -39
  10. package/dist/esm/util/tracker.d.ts.map +1 -1
  11. package/dist/esm/util/tracker.mjs +1 -9
  12. package/dist/index.js +0 -39
  13. package/dist/util/tracker.d.ts.map +1 -1
  14. package/dist/util/tracker.js +1 -10
  15. package/package.json +1 -2
  16. package/src/commands/__tests__/deploy.test.ts +0 -18
  17. package/src/commands/__tests__/doctor.test.ts +0 -25
  18. package/src/commands/deploy.ts +2 -9
  19. package/src/commands/doctor.ts +7 -34
  20. package/src/index.ts +0 -41
  21. package/src/util/tracker.ts +1 -10
  22. package/dist/commands/__tests__/beta.test.d.ts +0 -2
  23. package/dist/commands/__tests__/beta.test.d.ts.map +0 -1
  24. package/dist/commands/beta.d.ts +0 -4
  25. package/dist/commands/beta.d.ts.map +0 -1
  26. package/dist/commands/beta.js +0 -82
  27. package/dist/esm/commands/__tests__/beta.test.d.ts +0 -2
  28. package/dist/esm/commands/__tests__/beta.test.d.ts.map +0 -1
  29. package/dist/esm/commands/beta.d.ts +0 -4
  30. package/dist/esm/commands/beta.d.ts.map +0 -1
  31. package/dist/esm/commands/beta.mjs +0 -78
  32. package/dist/esm/util/__tests__/dev-env.test.d.ts +0 -2
  33. package/dist/esm/util/__tests__/dev-env.test.d.ts.map +0 -1
  34. package/dist/esm/util/__tests__/tracker.test.d.ts +0 -2
  35. package/dist/esm/util/__tests__/tracker.test.d.ts.map +0 -1
  36. package/dist/esm/util/beta/__tests__/beta-client.test.d.ts +0 -2
  37. package/dist/esm/util/beta/__tests__/beta-client.test.d.ts.map +0 -1
  38. package/dist/esm/util/beta/__tests__/beta-store.test.d.ts +0 -2
  39. package/dist/esm/util/beta/__tests__/beta-store.test.d.ts.map +0 -1
  40. package/dist/esm/util/beta/__tests__/pin-host-mf-version.test.d.ts +0 -2
  41. package/dist/esm/util/beta/__tests__/pin-host-mf-version.test.d.ts.map +0 -1
  42. package/dist/esm/util/beta/beta-client.d.ts +0 -13
  43. package/dist/esm/util/beta/beta-client.d.ts.map +0 -1
  44. package/dist/esm/util/beta/beta-client.mjs +0 -18
  45. package/dist/esm/util/beta/beta-store.d.ts +0 -7
  46. package/dist/esm/util/beta/beta-store.d.ts.map +0 -1
  47. package/dist/esm/util/beta/beta-store.mjs +0 -35
  48. package/dist/esm/util/beta/pin-host-mf-version.d.ts +0 -2
  49. package/dist/esm/util/beta/pin-host-mf-version.d.ts.map +0 -1
  50. package/dist/esm/util/beta/pin-host-mf-version.mjs +0 -11
  51. package/dist/esm/util/dev-env.d.ts +0 -3
  52. package/dist/esm/util/dev-env.d.ts.map +0 -1
  53. package/dist/esm/util/dev-env.mjs +0 -10
  54. package/dist/esm/util/update-script.d.ts +0 -2
  55. package/dist/esm/util/update-script.d.ts.map +0 -1
  56. package/dist/esm/util/update-script.mjs +0 -6
  57. package/dist/util/__tests__/dev-env.test.d.ts +0 -2
  58. package/dist/util/__tests__/dev-env.test.d.ts.map +0 -1
  59. package/dist/util/__tests__/tracker.test.d.ts +0 -2
  60. package/dist/util/__tests__/tracker.test.d.ts.map +0 -1
  61. package/dist/util/beta/__tests__/beta-client.test.d.ts +0 -2
  62. package/dist/util/beta/__tests__/beta-client.test.d.ts.map +0 -1
  63. package/dist/util/beta/__tests__/beta-store.test.d.ts +0 -2
  64. package/dist/util/beta/__tests__/beta-store.test.d.ts.map +0 -1
  65. package/dist/util/beta/__tests__/pin-host-mf-version.test.d.ts +0 -2
  66. package/dist/util/beta/__tests__/pin-host-mf-version.test.d.ts.map +0 -1
  67. package/dist/util/beta/beta-client.d.ts +0 -13
  68. package/dist/util/beta/beta-client.d.ts.map +0 -1
  69. package/dist/util/beta/beta-client.js +0 -21
  70. package/dist/util/beta/beta-store.d.ts +0 -7
  71. package/dist/util/beta/beta-store.d.ts.map +0 -1
  72. package/dist/util/beta/beta-store.js +0 -45
  73. package/dist/util/beta/pin-host-mf-version.d.ts +0 -2
  74. package/dist/util/beta/pin-host-mf-version.d.ts.map +0 -1
  75. package/dist/util/beta/pin-host-mf-version.js +0 -13
  76. package/dist/util/dev-env.d.ts +0 -3
  77. package/dist/util/dev-env.d.ts.map +0 -1
  78. package/dist/util/dev-env.js +0 -18
  79. package/dist/util/update-script.d.ts +0 -2
  80. package/dist/util/update-script.d.ts.map +0 -1
  81. package/dist/util/update-script.js +0 -13
  82. package/src/commands/__tests__/beta.test.ts +0 -165
  83. package/src/commands/beta.ts +0 -96
  84. package/src/util/__tests__/dev-env.test.ts +0 -86
  85. package/src/util/__tests__/tracker.test.ts +0 -61
  86. package/src/util/beta/__tests__/beta-client.test.ts +0 -69
  87. package/src/util/beta/__tests__/beta-store.test.ts +0 -66
  88. package/src/util/beta/__tests__/pin-host-mf-version.test.ts +0 -23
  89. package/src/util/beta/beta-client.ts +0 -30
  90. package/src/util/beta/beta-store.ts +0 -39
  91. package/src/util/beta/pin-host-mf-version.ts +0 -10
  92. package/src/util/dev-env.ts +0 -9
  93. package/src/util/update-script.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,UAAU,EAA2C,MAAM,4BAA4B,CAAC;AAiBtG,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAWD,wBAAsB,aAAa,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB3E"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,UAAU,EAA2C,MAAM,4BAA4B,CAAC;AAiBtG,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAWD,wBAAsB,aAAa,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB3E"}
@@ -9,8 +9,6 @@ const util_s3_upload = require('../util/s3/upload.js');
9
9
  const constants = require('../constants.js');
10
10
  const util_auth_brokerCredentialProvider = require('../util/auth/broker-credential-provider.js');
11
11
  const util_auth_authStore = require('../util/auth/auth-store.js');
12
- const util_beta_betaStore = require('../util/beta/beta-store.js');
13
- const util_beta_pinHostMfVersion = require('../util/beta/pin-host-mf-version.js');
14
12
  const util_appName = require('../util/app-name.js');
15
13
  const util_git_repo = require('../util/git/repo.js');
16
14
  const util_git_gitEnv = require('../util/git/git-env.js');
@@ -92,7 +90,6 @@ async function uploadAndRegister(opts) {
92
90
  await util_broker_app.registerOrUpdateApp({ appName, token, nextVersion, entry, gitRemote, integrations, description });
93
91
  }
94
92
  async function deployPreview({ paths, consumerName, appName, token, opts }) {
95
- const activeBeta = await util_beta_betaStore.readBetaState();
96
93
  await fs.ensureDir(paths.shadowDir);
97
94
  const { previewId } = await shadow_prepare.resolvePortAndMetadata(paths, util_appName.cleanAppName(consumerName));
98
95
  const previewSlug = util_appName.buildPreviewSlug(consumerName, previewId);
@@ -117,7 +114,7 @@ async function deployPreview({ paths, consumerName, appName, token, opts }) {
117
114
  gitRemote: '',
118
115
  isPreview: true,
119
116
  });
120
- const previewUrl = util_beta_pinHostMfVersion.pinHostMfVersion(`https://bigbrain.me/bigbrain-vibe/${previewSlug}`, activeBeta?.hostMfVersion);
117
+ const previewUrl = `https://bigbrain.me/bigbrain-vibe/${previewSlug}`;
121
118
  util_logger.output(`[z2h-cli] preview ready ✅\n app: ${appName}\n previewAppName: ${previewAppName}\n open: ${previewUrl}`, {
122
119
  ok: true,
123
120
  appName,
@@ -133,7 +130,6 @@ async function deployPreview({ paths, consumerName, appName, token, opts }) {
133
130
  }
134
131
  }
135
132
  async function deployLive({ paths, consumerName, appName, token, opts }) {
136
- const activeBeta = await util_beta_betaStore.readBetaState();
137
133
  let gitRemote = await util_git_repo.getRemoteUrl(process.cwd());
138
134
  if (gitRemote) {
139
135
  if (opts.remote || opts.repoUrl) {
@@ -224,7 +220,7 @@ async function deployLive({ paths, consumerName, appName, token, opts }) {
224
220
  // The host MF parses the app name from the URL and prepends `mf-` itself
225
221
  // before looking it up in the manifest. So the user-facing URL must use
226
222
  // the consumer's de-scoped package name (no `mf-` prefix, no `@scope/`).
227
- const liveUrl = util_beta_pinHostMfVersion.pinHostMfVersion(`https://bigbrain.me/bigbrain-vibe/${util_appName.cleanAppName(consumerName)}`, activeBeta?.hostMfVersion);
223
+ const liveUrl = `https://bigbrain.me/bigbrain-vibe/${util_appName.cleanAppName(consumerName)}`;
228
224
  util_logger.output(`[z2h-cli] deployed ✅\n app: ${appName}\n version: ${nextVersion}\n open: ${liveUrl}`, {
229
225
  ok: true,
230
226
  appName,
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAmUA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAqEnD"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAwSA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAqEnD"}
@@ -11,7 +11,6 @@ const pc = require('picocolors');
11
11
  const util_logger = require('../util/logger.js');
12
12
  const util_workspace = require('../util/workspace.js');
13
13
  const util_auth_authStore = require('../util/auth/auth-store.js');
14
- const util_beta_betaStore = require('../util/beta/beta-store.js');
15
14
  const constants = require('../constants.js');
16
15
 
17
16
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
@@ -103,9 +102,7 @@ function checkGitRemoteS3() {
103
102
  }
104
103
  async function checkZ2hCli() {
105
104
  const { version } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('commands/doctor.js', document.baseURI).href)))('../../package.json');
106
- const activeBeta = await util_beta_betaStore.readBetaState();
107
- const targetTag = activeBeta?.cliVersion ?? 'latest';
108
- let targetVersion;
105
+ let latestVersion;
109
106
  try {
110
107
  const token = util_auth_authStore.tryReadAuthTokenSync();
111
108
  if (token) {
@@ -115,40 +112,17 @@ async function checkZ2hCli() {
115
112
  });
116
113
  if (res.ok) {
117
114
  const data = (await res.json());
118
- targetVersion = data['dist-tags']?.[targetTag];
115
+ latestVersion = data['dist-tags']?.latest;
119
116
  }
120
117
  }
121
118
  }
122
119
  catch {
123
120
  // version check is best-effort — no network / token not ready
124
121
  }
125
- if (targetVersion && targetVersion !== version) {
126
- return {
127
- label: 'z2h-cli',
128
- status: 'warn',
129
- detail: `${version} (${targetTag}: ${targetVersion})`,
130
- fix: UPDATE_CMD,
131
- };
132
- }
133
- return {
134
- label: 'z2h-cli',
135
- status: 'ok',
136
- detail: targetVersion ? `${version} (up to date on ${targetTag})` : version,
137
- };
138
- }
139
- async function checkActiveBeta() {
140
- const active = await util_beta_betaStore.readBetaState();
141
- if (!active) {
142
- return { label: 'beta', status: 'ok', detail: 'none — stable' };
122
+ if (latestVersion && latestVersion !== version) {
123
+ return { label: 'z2h-cli', status: 'warn', detail: `${version} (latest: ${latestVersion})`, fix: UPDATE_CMD };
143
124
  }
144
- const pins = [
145
- active.cliVersion && `cli@${active.cliVersion}`,
146
- active.skillsBranch && `skills@${active.skillsBranch}`,
147
- active.hostMfVersion && `hostMf@${active.hostMfVersion}`,
148
- ]
149
- .filter(Boolean)
150
- .join(', ');
151
- return { label: 'beta', status: 'ok', detail: pins ? `${active.id} (${pins})` : active.id };
125
+ return { label: 'z2h-cli', status: 'ok', detail: latestVersion ? `${version} (up to date)` : version };
152
126
  }
153
127
  async function checkAuthToken() {
154
128
  try {
@@ -290,7 +264,7 @@ async function doctorCommand() {
290
264
  // treat as missing
291
265
  }
292
266
  const systemChecks = await Promise.all([checkNvm(), checkNode(), checkYarn(), checkAws(), checkGitRemoteS3()]);
293
- const cliChecks = await Promise.all([checkZ2hCli(), checkAuthToken(), checkNpmTokenInProfile(), checkActiveBeta()]);
267
+ const cliChecks = await Promise.all([checkZ2hCli(), checkAuthToken(), checkNpmTokenInProfile()]);
294
268
  const workspaceChecks = await Promise.all([checkWorkspace(), checkReactVersion()]);
295
269
  const pluginChecks = await Promise.all([
296
270
  checkPlugin('z2h@bigbrain-z2h', 'z2h plugin', true, pluginsJson),
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,UAAU,EAA2C,MAAM,4BAA4B,CAAC;AAiBtG,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAWD,wBAAsB,aAAa,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB3E"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,UAAU,EAA2C,MAAM,4BAA4B,CAAC;AAiBtG,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAWD,wBAAsB,aAAa,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB3E"}
@@ -7,8 +7,6 @@ import { uploadDir } from '../util/s3/upload.mjs';
7
7
  import { BUCKET_WRITE_NAME, brokerBaseUrl, routingHeaders, S3_PREVIEWS_FOLDER, BUCKET_READ_DNS_URL } from '../constants.mjs';
8
8
  import { fetchDeployVersion, brokerCredentialProvider } from '../util/auth/broker-credential-provider.mjs';
9
9
  import { readZthAuth } from '../util/auth/auth-store.mjs';
10
- import { readBetaState } from '../util/beta/beta-store.mjs';
11
- import { pinHostMfVersion } from '../util/beta/pin-host-mf-version.mjs';
12
10
  import { validateAppName, cleanAppName, mfAppName, buildPreviewSlug } from '../util/app-name.mjs';
13
11
  import { getRemoteUrl, initRepo, guardCleanTree, pullAndResolve, pushToRemote } from '../util/git/repo.mjs';
14
12
  import { resolveGitEnv } from '../util/git/git-env.mjs';
@@ -86,7 +84,6 @@ async function uploadAndRegister(opts) {
86
84
  await registerOrUpdateApp({ appName, token, nextVersion, entry, gitRemote, integrations, description });
87
85
  }
88
86
  async function deployPreview({ paths, consumerName, appName, token, opts }) {
89
- const activeBeta = await readBetaState();
90
87
  await ensureDir(paths.shadowDir);
91
88
  const { previewId } = await resolvePortAndMetadata(paths, cleanAppName(consumerName));
92
89
  const previewSlug = buildPreviewSlug(consumerName, previewId);
@@ -111,7 +108,7 @@ async function deployPreview({ paths, consumerName, appName, token, opts }) {
111
108
  gitRemote: '',
112
109
  isPreview: true,
113
110
  });
114
- const previewUrl = pinHostMfVersion(`https://bigbrain.me/bigbrain-vibe/${previewSlug}`, activeBeta?.hostMfVersion);
111
+ const previewUrl = `https://bigbrain.me/bigbrain-vibe/${previewSlug}`;
115
112
  output(`[z2h-cli] preview ready ✅\n app: ${appName}\n previewAppName: ${previewAppName}\n open: ${previewUrl}`, {
116
113
  ok: true,
117
114
  appName,
@@ -127,7 +124,6 @@ async function deployPreview({ paths, consumerName, appName, token, opts }) {
127
124
  }
128
125
  }
129
126
  async function deployLive({ paths, consumerName, appName, token, opts }) {
130
- const activeBeta = await readBetaState();
131
127
  let gitRemote = await getRemoteUrl(process.cwd());
132
128
  if (gitRemote) {
133
129
  if (opts.remote || opts.repoUrl) {
@@ -218,7 +214,7 @@ async function deployLive({ paths, consumerName, appName, token, opts }) {
218
214
  // The host MF parses the app name from the URL and prepends `mf-` itself
219
215
  // before looking it up in the manifest. So the user-facing URL must use
220
216
  // the consumer's de-scoped package name (no `mf-` prefix, no `@scope/`).
221
- const liveUrl = pinHostMfVersion(`https://bigbrain.me/bigbrain-vibe/${cleanAppName(consumerName)}`, activeBeta?.hostMfVersion);
217
+ const liveUrl = `https://bigbrain.me/bigbrain-vibe/${cleanAppName(consumerName)}`;
222
218
  output(`[z2h-cli] deployed ✅\n app: ${appName}\n version: ${nextVersion}\n open: ${liveUrl}`, {
223
219
  ok: true,
224
220
  appName,
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"AAmUA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAqEnD"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"AAwSA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAqEnD"}
@@ -9,7 +9,6 @@ import pc from 'picocolors';
9
9
  import { getOutputMode, output } from '../util/logger.mjs';
10
10
  import { getWorkspaceHome, isZ2hWorkspace } from '../util/workspace.mjs';
11
11
  import { tryReadAuthTokenSync, Z2H_AUTH_FILE } from '../util/auth/auth-store.mjs';
12
- import { readBetaState } from '../util/beta/beta-store.mjs';
13
12
  import { brokerNpmRegistryUrl, routingHeaders } from '../constants.mjs';
14
13
 
15
14
  const HOME = os.homedir();
@@ -93,9 +92,7 @@ function checkGitRemoteS3() {
93
92
  }
94
93
  async function checkZ2hCli() {
95
94
  const { version } = createRequire(import.meta.url)('../../package.json');
96
- const activeBeta = await readBetaState();
97
- const targetTag = activeBeta?.cliVersion ?? 'latest';
98
- let targetVersion;
95
+ let latestVersion;
99
96
  try {
100
97
  const token = tryReadAuthTokenSync();
101
98
  if (token) {
@@ -105,40 +102,17 @@ async function checkZ2hCli() {
105
102
  });
106
103
  if (res.ok) {
107
104
  const data = (await res.json());
108
- targetVersion = data['dist-tags']?.[targetTag];
105
+ latestVersion = data['dist-tags']?.latest;
109
106
  }
110
107
  }
111
108
  }
112
109
  catch {
113
110
  // version check is best-effort — no network / token not ready
114
111
  }
115
- if (targetVersion && targetVersion !== version) {
116
- return {
117
- label: 'z2h-cli',
118
- status: 'warn',
119
- detail: `${version} (${targetTag}: ${targetVersion})`,
120
- fix: UPDATE_CMD,
121
- };
122
- }
123
- return {
124
- label: 'z2h-cli',
125
- status: 'ok',
126
- detail: targetVersion ? `${version} (up to date on ${targetTag})` : version,
127
- };
128
- }
129
- async function checkActiveBeta() {
130
- const active = await readBetaState();
131
- if (!active) {
132
- return { label: 'beta', status: 'ok', detail: 'none — stable' };
112
+ if (latestVersion && latestVersion !== version) {
113
+ return { label: 'z2h-cli', status: 'warn', detail: `${version} (latest: ${latestVersion})`, fix: UPDATE_CMD };
133
114
  }
134
- const pins = [
135
- active.cliVersion && `cli@${active.cliVersion}`,
136
- active.skillsBranch && `skills@${active.skillsBranch}`,
137
- active.hostMfVersion && `hostMf@${active.hostMfVersion}`,
138
- ]
139
- .filter(Boolean)
140
- .join(', ');
141
- return { label: 'beta', status: 'ok', detail: pins ? `${active.id} (${pins})` : active.id };
115
+ return { label: 'z2h-cli', status: 'ok', detail: latestVersion ? `${version} (up to date)` : version };
142
116
  }
143
117
  async function checkAuthToken() {
144
118
  try {
@@ -280,7 +254,7 @@ async function doctorCommand() {
280
254
  // treat as missing
281
255
  }
282
256
  const systemChecks = await Promise.all([checkNvm(), checkNode(), checkYarn(), checkAws(), checkGitRemoteS3()]);
283
- const cliChecks = await Promise.all([checkZ2hCli(), checkAuthToken(), checkNpmTokenInProfile(), checkActiveBeta()]);
257
+ const cliChecks = await Promise.all([checkZ2hCli(), checkAuthToken(), checkNpmTokenInProfile()]);
284
258
  const workspaceChecks = await Promise.all([checkWorkspace(), checkReactVersion()]);
285
259
  const pluginChecks = await Promise.all([
286
260
  checkPlugin('z2h@bigbrain-z2h', 'z2h plugin', true, pluginsJson),
@@ -4,7 +4,6 @@ import path from 'node:path';
4
4
  import { Command } from 'commander';
5
5
  import { execa } from 'execa';
6
6
  import { getWorkspaceHome } from './util/workspace.mjs';
7
- import { loadDevEnv } from './util/dev-env.mjs';
8
7
  import { buildCommand } from './commands/build.mjs';
9
8
  import { cleanCommand } from './commands/clean.mjs';
10
9
  import { deployCommand } from './commands/deploy.mjs';
@@ -18,7 +17,6 @@ import { tagCommand } from './commands/tag.mjs';
18
17
  import { editCommand } from './commands/edit.mjs';
19
18
  import { backendInvokeCommand } from './commands/backend.mjs';
20
19
  import { doctorCommand } from './commands/doctor.mjs';
21
- import { betaStatusCommand, enterBetaCommand, exitBetaCommand } from './commands/beta.mjs';
22
20
  import { fail, errorLog, setOutputMode, getOutputMode } from './util/logger.mjs';
23
21
  import { trackDuration } from './util/tracker.mjs';
24
22
  import { getCwdAppName } from './util/app-name.mjs';
@@ -26,9 +24,6 @@ import { getCwdAppName } from './util/app-name.mjs';
26
24
  const { version } = createRequire(import.meta.url)('../package.json');
27
25
  const UPDATE_SCRIPT = path.join(os.homedir(), 'Development', 'bigbrain-z2h', 'z2h', 'setup', 'update.sh');
28
26
  function selfUpdate() {
29
- if (process.env.Z2H_SKIP_UPDATE) {
30
- return;
31
- }
32
27
  try {
33
28
  execa('bash', [UPDATE_SCRIPT], {
34
29
  detached: true,
@@ -50,7 +45,6 @@ function collectTag(value, previous) {
50
45
  return previous.concat(value);
51
46
  }
52
47
  async function main() {
53
- loadDevEnv();
54
48
  stripConflictingEnvVars();
55
49
  const program = new Command();
56
50
  program
@@ -277,39 +271,6 @@ async function main() {
277
271
  await fail(`doctor failed: ${err.message}`, { command: 'doctor' }, 1);
278
272
  }
279
273
  });
280
- const beta = program
281
- .command('beta')
282
- .description("Show the published beta, if any, and whether you're in it (self-serve — no admin required either way)")
283
- .action(async () => {
284
- try {
285
- await betaStatusCommand();
286
- }
287
- catch (err) {
288
- await fail(`beta failed: ${err.message}`, { command: 'beta' }, 1);
289
- }
290
- });
291
- beta
292
- .command('enter')
293
- .description('Join the published beta — pins the CLI/skills version it declares, and converges immediately')
294
- .action(async () => {
295
- try {
296
- await trackDuration('z2h_beta_enter_success', () => enterBetaCommand(), {});
297
- }
298
- catch (err) {
299
- await fail(`beta enter failed: ${err.message}`, { command: 'beta enter' }, 1);
300
- }
301
- });
302
- beta
303
- .command('exit')
304
- .description('Leave the active beta and converge back to stable')
305
- .action(async () => {
306
- try {
307
- await trackDuration('z2h_beta_exit_success', () => exitBetaCommand(), {});
308
- }
309
- catch (err) {
310
- await fail(`beta exit failed: ${err.message}`, { command: 'beta exit' }, 1);
311
- }
312
- });
313
274
  await program.parseAsync(process.argv);
314
275
  }
315
276
  void main()
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/util/tracker.ts"],"names":[],"mappings":"AAaA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAc3F;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAKZ"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/util/tracker.ts"],"names":[],"mappings":"AASA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3F;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAKZ"}
@@ -1,23 +1,15 @@
1
1
  import os from 'node:os';
2
- import { createRequire } from 'node:module';
3
- import { readBetaState } from './beta/beta-store.mjs';
4
2
 
5
3
  const DOORMAN_URL = 'https://track-int.bigbrain.me/prod/event';
6
4
  const DOORMAN_URL_STAGING = 'https://track-int.bigbrainstaging.me/stage/event';
7
5
  const username = os.userInfo().username;
8
6
  const isStaging = process.env.NODE_ENV === 'staging';
9
- const { version: cliVersion } = createRequire(import.meta.url)('../../package.json');
10
7
  async function trackEvent(name, data) {
11
8
  const doormanUrl = isStaging ? DOORMAN_URL_STAGING : DOORMAN_URL;
12
- const betaId = (await readBetaState())?.id ?? null;
13
9
  await fetch(doormanUrl, {
14
10
  method: 'POST',
15
11
  headers: { 'Content-Type': 'application/json' },
16
- body: JSON.stringify({
17
- name,
18
- source: 'z2h-cli',
19
- data: { user_name: username, cli_version: cliVersion, beta_id: betaId, ...data },
20
- }),
12
+ body: JSON.stringify({ name, source: 'z2h-cli', data: { user_name: username, ...data } }),
21
13
  signal: AbortSignal.timeout(5000),
22
14
  }).catch(() => { });
23
15
  }
package/dist/index.js CHANGED
@@ -4,7 +4,6 @@ const path = require('node:path');
4
4
  const commander = require('commander');
5
5
  const execa = require('execa');
6
6
  const util_workspace = require('./util/workspace.js');
7
- const util_devEnv = require('./util/dev-env.js');
8
7
  const commands_build = require('./commands/build.js');
9
8
  const commands_clean = require('./commands/clean.js');
10
9
  const commands_deploy = require('./commands/deploy.js');
@@ -18,7 +17,6 @@ const commands_tag = require('./commands/tag.js');
18
17
  const commands_edit = require('./commands/edit.js');
19
18
  const commands_backend = require('./commands/backend.js');
20
19
  const commands_doctor = require('./commands/doctor.js');
21
- const commands_beta = require('./commands/beta.js');
22
20
  const util_logger = require('./util/logger.js');
23
21
  const util_tracker = require('./util/tracker.js');
24
22
  const util_appName = require('./util/app-name.js');
@@ -32,9 +30,6 @@ const path__default = /*#__PURE__*/_interopDefault(path);
32
30
  const { version } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)))('../package.json');
33
31
  const UPDATE_SCRIPT = path__default.default.join(os__default.default.homedir(), 'Development', 'bigbrain-z2h', 'z2h', 'setup', 'update.sh');
34
32
  function selfUpdate() {
35
- if (process.env.Z2H_SKIP_UPDATE) {
36
- return;
37
- }
38
33
  try {
39
34
  execa.execa('bash', [UPDATE_SCRIPT], {
40
35
  detached: true,
@@ -56,7 +51,6 @@ function collectTag(value, previous) {
56
51
  return previous.concat(value);
57
52
  }
58
53
  async function main() {
59
- util_devEnv.loadDevEnv();
60
54
  stripConflictingEnvVars();
61
55
  const program = new commander.Command();
62
56
  program
@@ -283,39 +277,6 @@ async function main() {
283
277
  await util_logger.fail(`doctor failed: ${err.message}`, { command: 'doctor' }, 1);
284
278
  }
285
279
  });
286
- const beta = program
287
- .command('beta')
288
- .description("Show the published beta, if any, and whether you're in it (self-serve — no admin required either way)")
289
- .action(async () => {
290
- try {
291
- await commands_beta.betaStatusCommand();
292
- }
293
- catch (err) {
294
- await util_logger.fail(`beta failed: ${err.message}`, { command: 'beta' }, 1);
295
- }
296
- });
297
- beta
298
- .command('enter')
299
- .description('Join the published beta — pins the CLI/skills version it declares, and converges immediately')
300
- .action(async () => {
301
- try {
302
- await util_tracker.trackDuration('z2h_beta_enter_success', () => commands_beta.enterBetaCommand(), {});
303
- }
304
- catch (err) {
305
- await util_logger.fail(`beta enter failed: ${err.message}`, { command: 'beta enter' }, 1);
306
- }
307
- });
308
- beta
309
- .command('exit')
310
- .description('Leave the active beta and converge back to stable')
311
- .action(async () => {
312
- try {
313
- await util_tracker.trackDuration('z2h_beta_exit_success', () => commands_beta.exitBetaCommand(), {});
314
- }
315
- catch (err) {
316
- await util_logger.fail(`beta exit failed: ${err.message}`, { command: 'beta exit' }, 1);
317
- }
318
- });
319
280
  await program.parseAsync(process.argv);
320
281
  }
321
282
  void main()
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/util/tracker.ts"],"names":[],"mappings":"AAaA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAc3F;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAKZ"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/util/tracker.ts"],"names":[],"mappings":"AASA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3F;AAED,wBAAsB,aAAa,CAAC,CAAC,EACnC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAKZ"}
@@ -1,10 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const os = require('node:os');
4
- const node_module = require('node:module');
5
- const util_beta_betaStore = require('./beta/beta-store.js');
6
4
 
7
- var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
8
5
  const _interopDefault = e => e && e.__esModule ? e : { default: e };
9
6
 
10
7
  const os__default = /*#__PURE__*/_interopDefault(os);
@@ -13,18 +10,12 @@ const DOORMAN_URL = 'https://track-int.bigbrain.me/prod/event';
13
10
  const DOORMAN_URL_STAGING = 'https://track-int.bigbrainstaging.me/stage/event';
14
11
  const username = os__default.default.userInfo().username;
15
12
  const isStaging = process.env.NODE_ENV === 'staging';
16
- const { version: cliVersion } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('util/tracker.js', document.baseURI).href)))('../../package.json');
17
13
  async function trackEvent(name, data) {
18
14
  const doormanUrl = isStaging ? DOORMAN_URL_STAGING : DOORMAN_URL;
19
- const betaId = (await util_beta_betaStore.readBetaState())?.id ?? null;
20
15
  await fetch(doormanUrl, {
21
16
  method: 'POST',
22
17
  headers: { 'Content-Type': 'application/json' },
23
- body: JSON.stringify({
24
- name,
25
- source: 'z2h-cli',
26
- data: { user_name: username, cli_version: cliVersion, beta_id: betaId, ...data },
27
- }),
18
+ body: JSON.stringify({ name, source: 'z2h-cli', data: { user_name: username, ...data } }),
28
19
  signal: AbortSignal.timeout(5000),
29
20
  }).catch(() => { });
30
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mondaydotcomorg/z2h-cli",
3
- "version": "0.23.1-feat-z2h-beta-poc-17b052e",
3
+ "version": "0.24.0",
4
4
  "bin": "./bin/z2h-cli.js",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -54,7 +54,6 @@
54
54
  "chokidar": "^3.6.0",
55
55
  "commander": "^12.1.0",
56
56
  "cors": "^2.8.6",
57
- "dotenv": "^16.6.1",
58
57
  "execa": "^9.5.1",
59
58
  "express": "^5.2.1",
60
59
  "fs-extra": "^11.2.0",
@@ -14,8 +14,6 @@ import * as brokerProvider from '../../util/auth/broker-credential-provider';
14
14
  import * as brokerApp from '../../util/broker/app';
15
15
  import * as authStore from '../../util/auth/auth-store';
16
16
  import * as gitRepo from '../../util/git/repo';
17
- import * as betaStore from '../../util/beta/beta-store';
18
- import { pinHostMfVersion } from '../../util/beta/pin-host-mf-version';
19
17
 
20
18
  vi.mock('../build', () => ({
21
19
  buildCommand: vi.fn(),
@@ -52,10 +50,6 @@ vi.mock('../../util/git/repo', () => ({
52
50
  initRepo: vi.fn(),
53
51
  }));
54
52
 
55
- vi.mock('../../util/beta/beta-store', () => ({
56
- readBetaState: vi.fn(),
57
- }));
58
-
59
53
  const ASSET_MANIFEST = {
60
54
  sameAsHost: false,
61
55
  skipTranslationFetch: false,
@@ -99,7 +93,6 @@ describe('deploy --preview', () => {
99
93
  vi.mocked(gitRepo.pullAndResolve).mockClear();
100
94
  vi.mocked(gitRepo.pushToRemote).mockClear();
101
95
  vi.mocked(gitRepo.initRepo).mockClear();
102
- vi.mocked(betaStore.readBetaState).mockReset().mockResolvedValue(null);
103
96
  });
104
97
 
105
98
  afterEach(async () => {
@@ -208,17 +201,6 @@ describe('deploy --preview', () => {
208
201
  expect(openInBrowser).not.toHaveBeenCalled();
209
202
  });
210
203
 
211
- it('merges mf_test_version into the previewUrl when a beta pins hostMfVersion', async () => {
212
- vi.mocked(betaStore.readBetaState).mockResolvedValue({ id: 'x', description: 'y', hostMfVersion: 'abc123' });
213
- await writeMetadata(STUB_PREVIEW_ID);
214
- await deployCommand({ preview: true, open: true });
215
-
216
- const previewSlug = buildPreviewSlug('my-app', STUB_PREVIEW_ID);
217
- const bareUrl = `https://bigbrain.me/bigbrain-vibe/${previewSlug}`;
218
- expect(openInBrowser).toHaveBeenCalledWith(pinHostMfVersion(bareUrl, 'abc123'));
219
- expect(openInBrowser).not.toHaveBeenCalledWith(bareUrl);
220
- });
221
-
222
204
  it('rejects deploying a preview for an app already named with the preview prefix', async () => {
223
205
  await writeJson(path.join(tmp, 'package.json'), { name: 'zth-preview-abc123-my-app' });
224
206
  await expect(deployCommand({ preview: true })).rejects.toThrow(/reserved for the ephemeral preview mechanism/);
@@ -4,7 +4,6 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
4
  import { execa } from 'execa';
5
5
  import { pathExists, readJson } from 'fs-extra';
6
6
  import { tryReadAuthTokenSync } from '../../util/auth/auth-store';
7
- import * as betaStore from '../../util/beta/beta-store';
8
7
  import { getOutputMode, setOutputMode } from '../../util/logger';
9
8
  import { doctorCommand } from '../doctor';
10
9
 
@@ -107,7 +106,6 @@ describe('doctorCommand', () => {
107
106
  }) as never);
108
107
 
109
108
  vi.stubEnv('Z2H_WORKSPACE_HOME', '/fake/zth-projects');
110
- vi.spyOn(betaStore, 'readBetaState').mockResolvedValue(null);
111
109
  });
112
110
 
113
111
  afterEach(() => {
@@ -390,29 +388,6 @@ describe('doctorCommand', () => {
390
388
  expect(out).not.toContain('❌');
391
389
  });
392
390
 
393
- // ── Beta ──────────────────────────────────────────────────────────────────
394
-
395
- it('shows "none — stable" when no beta is active', async () => {
396
- const out = await captureStdout(() => doctorCommand());
397
- expect(out).toContain('beta');
398
- expect(out).toContain('none — stable');
399
- });
400
-
401
- it('shows the active beta id and all of its pins', async () => {
402
- vi.spyOn(betaStore, 'readBetaState').mockResolvedValue({
403
- id: 'faster-deploy',
404
- description: 'try it',
405
- cliVersion: 'feat-faster-deploy',
406
- skillsBranch: 'feat/faster-deploy',
407
- hostMfVersion: '0a513e2e40ae',
408
- });
409
- const out = await captureStdout(() => doctorCommand());
410
- expect(out).toContain('faster-deploy');
411
- expect(out).toContain('cli@feat-faster-deploy');
412
- expect(out).toContain('skills@feat/faster-deploy');
413
- expect(out).toContain('hostMf@0a513e2e40ae');
414
- });
415
-
416
391
  // ── JSON output ───────────────────────────────────────────────────────────
417
392
 
418
393
  it('emits structured JSON when --json flag is set', async () => {
@@ -13,8 +13,6 @@ import {
13
13
  } from '../constants';
14
14
  import { brokerCredentialProvider, fetchDeployVersion } from '../util/auth/broker-credential-provider';
15
15
  import { readZthAuth } from '../util/auth/auth-store';
16
- import { readBetaState } from '../util/beta/beta-store';
17
- import { pinHostMfVersion } from '../util/beta/pin-host-mf-version';
18
16
  import { cleanAppName, mfAppName, validateAppName, buildPreviewSlug } from '../util/app-name';
19
17
  import { getRemoteUrl, guardCleanTree, pullAndResolve, pushToRemote, initRepo } from '../util/git/repo';
20
18
  import { resolveGitEnv } from '../util/git/git-env';
@@ -137,7 +135,6 @@ async function uploadAndRegister(opts: {
137
135
  }
138
136
 
139
137
  async function deployPreview({ paths, consumerName, appName, token, opts }: DeployContext): Promise<void> {
140
- const activeBeta = await readBetaState();
141
138
  await ensureDir(paths.shadowDir);
142
139
  const { previewId } = await resolvePortAndMetadata(paths, cleanAppName(consumerName));
143
140
 
@@ -168,7 +165,7 @@ async function deployPreview({ paths, consumerName, appName, token, opts }: Depl
168
165
  isPreview: true,
169
166
  });
170
167
 
171
- const previewUrl = pinHostMfVersion(`https://bigbrain.me/bigbrain-vibe/${previewSlug}`, activeBeta?.hostMfVersion);
168
+ const previewUrl = `https://bigbrain.me/bigbrain-vibe/${previewSlug}`;
172
169
  output(
173
170
  `[z2h-cli] preview ready ✅\n app: ${appName}\n previewAppName: ${previewAppName}\n open: ${previewUrl}`,
174
171
  {
@@ -189,7 +186,6 @@ async function deployPreview({ paths, consumerName, appName, token, opts }: Depl
189
186
  }
190
187
 
191
188
  async function deployLive({ paths, consumerName, appName, token, opts }: DeployContext): Promise<void> {
192
- const activeBeta = await readBetaState();
193
189
  let gitRemote = await getRemoteUrl(process.cwd());
194
190
 
195
191
  if (gitRemote) {
@@ -294,10 +290,7 @@ async function deployLive({ paths, consumerName, appName, token, opts }: DeployC
294
290
  // The host MF parses the app name from the URL and prepends `mf-` itself
295
291
  // before looking it up in the manifest. So the user-facing URL must use
296
292
  // the consumer's de-scoped package name (no `mf-` prefix, no `@scope/`).
297
- const liveUrl = pinHostMfVersion(
298
- `https://bigbrain.me/bigbrain-vibe/${cleanAppName(consumerName)}`,
299
- activeBeta?.hostMfVersion
300
- );
293
+ const liveUrl = `https://bigbrain.me/bigbrain-vibe/${cleanAppName(consumerName)}`;
301
294
  output(`[z2h-cli] deployed ✅\n app: ${appName}\n version: ${nextVersion}\n open: ${liveUrl}`, {
302
295
  ok: true,
303
296
  appName,