@brass-build/cli 0.1.0 → 0.3.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.
package/dist/cli.js CHANGED
@@ -1,12 +1,12 @@
1
1
  // Argv dispatch: resolve the target environment + credential, build the API
2
2
  // client, and route to a command. Kept thin over `commands.ts` (which holds
3
3
  // the workflow logic) so the wiring here is easy to read end to end.
4
- import { parseArgs, stringFlag, boolFlag, unknownFlags, valuelessFlags, } from './args.js';
4
+ import { parseArgs, stringFlag, boolFlag, extraPositionals, flagsNotReadBy, unknownFlags, valueFlagsOf, valuelessFlags, } from './args.js';
5
5
  import { resolveOrigins, resolveCredential, profileForOrigins, } from './config.js';
6
- import { readCredentialsFile, readPendingLogin, writeStoredCredential } from './store.js';
6
+ import { readCredentialsFile, readPendingLogin, writePendingLogin, writeStoredCredential, } from './store.js';
7
7
  import { BrassApi, BrassApiError } from './api.js';
8
8
  import { serviceTokenAuth } from './auth.js';
9
- import { loginDevice, sessionAuth } from './session.js';
9
+ import { loginDevice, postDeviceCancel, postSignOut, sessionAuth } from './session.js';
10
10
  import { loginStart, loginCheck } from './login.js';
11
11
  import { createLogger } from './log.js';
12
12
  import { publish, schemaPull, agentsPull, whoami, status, } from './commands.js';
@@ -22,7 +22,7 @@ Usage:
22
22
  brass login --check Check a started sign-in once; stores the session when approved.
23
23
  --wait [seconds] polls until approved (default 120s), renewing
24
24
  an expired code in place and printing the new one.
25
- brass logout Forget the stored sign-in for this environment.
25
+ brass logout End the stored sign-in for this environment, here and on the server.
26
26
  brass status [dir] Report the credential + app state and the one command to run next.
27
27
  brass publish [dir] Build output in [dir] (default: dist) is deployed to the app's hosting.
28
28
  brass schema pull --doc <docId> [--out brass-app.json]
@@ -56,7 +56,14 @@ Publish flags:
56
56
  export async function run(argv) {
57
57
  const parsed = parseArgs(argv);
58
58
  const command = parsed.positionals[0];
59
- if (boolFlag(parsed, 'version') && command === undefined) {
59
+ // Which credential the invocation resolved, once it has. A 401 is reported
60
+ // in that credential's own vocabulary, so it stays undefined until
61
+ // `buildContext` settles it and a failure before then carries no guess.
62
+ let credentialKind;
63
+ // Answered whichever command follows, like `--help` beside it: both are
64
+ // declared flags of every command (`COMMON_FLAGS`), so a caller who asks
65
+ // which version is installed gets the answer rather than a publish.
66
+ if (boolFlag(parsed, 'version')) {
60
67
  process.stdout.write(`${VERSION}\n`);
61
68
  return 0;
62
69
  }
@@ -74,6 +81,32 @@ export async function run(argv) {
74
81
  process.stderr.write(`error: unknown ${unknown.length === 1 ? 'flag' : 'flags'} ${names}\n\n${USAGE}`);
75
82
  return 1;
76
83
  }
84
+ // Then what THIS command reads, which is the same check one scope in: a
85
+ // flag or a positional the command ignores leaves the run differing from
86
+ // what the command line asked for, with nothing said. Judged from argv
87
+ // alone, so it answers a caller who has not signed in.
88
+ const misplaced = flagsNotReadBy(parsed, command);
89
+ if (misplaced.length > 0) {
90
+ const names = misplaced.map((n) => `--${n}`).join(', ');
91
+ process.stderr.write(`error: ${names} ${misplaced.length === 1 ? 'is not a flag' : 'are not flags'} of \`brass ${command}\`\n\n${USAGE}`);
92
+ return 1;
93
+ }
94
+ const extra = extraPositionals(parsed, command);
95
+ if (extra.length > 0) {
96
+ const args = extra.map((p) => JSON.stringify(p)).join(', ');
97
+ process.stderr.write(`error: unexpected ${extra.length === 1 ? 'argument' : 'arguments'} ${args} for \`brass ${command}\`\n\n${USAGE}`);
98
+ return 1;
99
+ }
100
+ if (parsed.valuedBooleans.length > 0) {
101
+ const names = parsed.valuedBooleans.map((n) => `--${n}`).join(', ');
102
+ process.stderr.write(`error: ${names} ${parsed.valuedBooleans.length === 1 ? 'takes' : 'take'} no value\n`);
103
+ return 1;
104
+ }
105
+ const bare = valuelessFlags(parsed, valueFlagsOf(command));
106
+ if (bare.length > 0) {
107
+ process.stderr.write(`error: Missing value for ${bare.map((n) => `--${n}`).join(', ')}\n`);
108
+ return 1;
109
+ }
77
110
  const json = boolFlag(parsed, 'json');
78
111
  const log = createLogger(json);
79
112
  try {
@@ -87,30 +120,53 @@ export async function run(argv) {
87
120
  // (and the next step to obtain one) is a first-class outcome, not an error.
88
121
  if (command === 'status')
89
122
  return await runStatus(parsed, log);
90
- const ctx = await buildContext(parsed);
91
- switch (command) {
92
- case 'publish':
93
- log.result(await runPublish(ctx, parsed));
94
- return 0;
95
- case 'schema':
96
- log.result(await runSchema(ctx, parsed));
97
- return 0;
98
- case 'agents':
99
- log.result(await runAgents(ctx, parsed));
100
- return 0;
101
- case 'whoami':
102
- log.result(await whoami(ctx));
103
- return 0;
104
- default:
105
- process.stderr.write(`Unknown command "${command}".\n\n${USAGE}`);
106
- return 1;
123
+ // What the caller asked for is decided from argv alone, so it is decided
124
+ // BEFORE a credential is resolved. A misspelt command, a missing
125
+ // subcommand and an invalid flag value are all answerable without one, and
126
+ // resolving the credential first answers every one of them with "No
127
+ // credential. Run `brass login`": the caller re-authenticates over a typo,
128
+ // and only a caller who already has a credential is ever shown the message
129
+ // naming the real mistake.
130
+ if (!isCredentialedCommand(command)) {
131
+ process.stderr.write(`Unknown command "${command}".\n\n${USAGE}`);
132
+ return 1;
107
133
  }
134
+ const plan = planCommand(command, parsed);
135
+ const ctx = await buildContext(parsed);
136
+ credentialKind = ctx.credentialKind;
137
+ log.result(await plan(ctx));
138
+ return 0;
108
139
  }
109
140
  catch (err) {
110
- process.stderr.write(`${formatError(err)}\n`);
141
+ process.stderr.write(`${formatError(err, credentialKind)}\n`);
111
142
  return 1;
112
143
  }
113
144
  }
145
+ // The commands that need a resolved credential; `login` / `logout` / `status`
146
+ // are answered above without one.
147
+ const CREDENTIALED_COMMANDS = ['publish', 'schema', 'agents', 'whoami'];
148
+ function isCredentialedCommand(value) {
149
+ return CREDENTIALED_COMMANDS.includes(value);
150
+ }
151
+ // Resolve argv to that work, validating everything argv alone decides and
152
+ // throwing on a shape the caller got wrong. Splitting the plan from the run is
153
+ // what lets the shape be judged before a credential is resolved.
154
+ function planCommand(command, parsed) {
155
+ switch (command) {
156
+ case 'publish':
157
+ return planPublish(parsed);
158
+ case 'schema':
159
+ return planSchema(parsed);
160
+ case 'agents':
161
+ return planAgents(parsed);
162
+ case 'whoami':
163
+ return (ctx) => whoami(ctx);
164
+ default: {
165
+ const exhaustive = command;
166
+ throw new Error(`Unhandled command "${String(exhaustive)}"`);
167
+ }
168
+ }
169
+ }
114
170
  // The flags that name the target stack. Production is the default, so every
115
171
  // other stack is reached through these.
116
172
  const ORIGIN_FLAGS = ['api-url', 'auth-url', 'dashboard-url'];
@@ -183,6 +239,7 @@ async function runLogin(parsed, log) {
183
239
  profile,
184
240
  log,
185
241
  ...(boolFlag(parsed, 'new') ? { force: true } : {}),
242
+ ...(waitSeconds !== undefined ? { resultFollows: true } : {}),
186
243
  });
187
244
  // `--start --wait` is the whole sign-in in one command: relay the code it
188
245
  // prints, then it holds for the approval up to the deadline.
@@ -196,17 +253,49 @@ async function runLogin(parsed, log) {
196
253
  // The RFC 8628 device grant: open the approval page (code prefilled), print
197
254
  // the URL + code as a fallback for a headless box, and poll until approval.
198
255
  const result = await loginDevice({ authBaseUrl: origins.authBaseUrl });
199
- await writeStoredCredential(profile, { session: { sid: result.sessionToken } });
256
+ await writeStoredCredential(profile, {
257
+ session: { sid: result.sessionToken, authBaseUrl: origins.authBaseUrl },
258
+ });
200
259
  log.success(result.email ? `Signed in as ${result.email}.` : 'Signed in.');
201
260
  log.result({ signed_in: true, ...(result.email !== undefined ? { email: result.email } : {}) });
202
261
  return 0;
203
262
  }
204
263
  async function runLogout(parsed, log) {
205
- const { profile } = resolveBase(parsed);
206
- await writeStoredCredential(profile, null);
207
- log.success('Signed out.');
208
- log.result({ signed_out: true });
209
- return 0;
264
+ const { origins, profile } = resolveBase(parsed);
265
+ // Revoke on the server first, while the pointer is still readable. A
266
+ // service token belongs to an organization and is revoked in the dashboard,
267
+ // so only a stored session has anything to end here. The session is revoked
268
+ // on the auth origin it was minted on: profiles key on the api host, so the
269
+ // invocation's own auth flag can name a different stack, where an unknown
270
+ // pointer reads as already-signed-out and the real session stays live.
271
+ const file = await readCredentialsFile();
272
+ const session = file?.credentials[profile]?.session;
273
+ const signedOut = session === undefined
274
+ ? true
275
+ : await postSignOut(session.authBaseUrl ?? origins.authBaseUrl, session.sid);
276
+ // A started sign-in is redeemable by whoever holds the device code, and a
277
+ // human may still approve it after this command returns, so cancelling it on
278
+ // the server is what a sign-out owes. The grant, too, is cancelled on the
279
+ // auth origin that minted it.
280
+ const pending = await readPendingLogin(profile);
281
+ const cancelled = pending === null ? true : await postDeviceCancel(pending.authBaseUrl, pending.deviceCode);
282
+ // Each record is dropped only once its server side is revoked. The record
283
+ // is the one handle that can name the session or grant to the server, so a
284
+ // failed delivery keeps it, which is what makes the retry this command
285
+ // recommends able to revoke anything.
286
+ if (signedOut)
287
+ await writeStoredCredential(profile, null);
288
+ if (cancelled)
289
+ await writePendingLogin(profile, null);
290
+ const revoked = signedOut && cancelled;
291
+ if (revoked) {
292
+ log.success('Signed out.');
293
+ }
294
+ else {
295
+ log.warn('Brass could not be reached to revoke the sign-in, so it is kept on this machine. Run `brass logout` again when Brass is reachable.');
296
+ }
297
+ log.result({ signed_out: revoked, revoked });
298
+ return revoked ? 0 : 1;
210
299
  }
211
300
  async function runStatus(parsed, log) {
212
301
  const { origins, profile } = resolveBase(parsed);
@@ -263,7 +352,7 @@ async function runStatus(parsed, log) {
263
352
  log.result(result);
264
353
  return 0;
265
354
  }
266
- async function runPublish(ctx, parsed) {
355
+ function planPublish(parsed) {
267
356
  const dir = parsed.positionals[1] ?? 'dist';
268
357
  const flagApp = stringFlag(parsed, 'app');
269
358
  const envApp = process.env['BRASS_APP_ID'];
@@ -271,26 +360,29 @@ async function runPublish(ctx, parsed) {
271
360
  const org = stringFlag(parsed, 'org');
272
361
  const slug = stringFlag(parsed, 'slug');
273
362
  const clientToken = stringFlag(parsed, 'client-token');
363
+ const manifestPath = stringFlag(parsed, 'manifest') ?? 'brass-app.json';
274
364
  const visibility = parseVisibilityFlag(stringFlag(parsed, 'visibility'));
275
365
  const requireAccess = parseGateFlag(stringFlag(parsed, 'gate'));
276
- const state = await readProjectState(ctx.cwd);
277
- const appId = resolveAppId({
278
- ...(flagApp !== undefined ? { flagApp } : {}),
279
- ...(envApp !== undefined ? { envApp } : {}),
280
- state,
281
- profile: ctx.profile,
282
- });
283
- return publish(ctx, {
284
- dir,
285
- manifestPath: stringFlag(parsed, 'manifest') ?? 'brass-app.json',
286
- ...(appId !== null ? { appId } : {}),
287
- ...(name !== undefined ? { name } : {}),
288
- ...(org !== undefined ? { organizationId: org } : {}),
289
- ...(clientToken !== undefined ? { clientToken } : {}),
290
- ...(slug !== undefined ? { slug } : {}),
291
- ...(visibility !== undefined ? { visibility } : {}),
292
- ...(requireAccess !== undefined ? { requireAccess } : {}),
293
- });
366
+ return async (ctx) => {
367
+ const state = await readProjectState(ctx.cwd);
368
+ const appId = resolveAppId({
369
+ ...(flagApp !== undefined ? { flagApp } : {}),
370
+ ...(envApp !== undefined ? { envApp } : {}),
371
+ state,
372
+ profile: ctx.profile,
373
+ });
374
+ return publish(ctx, {
375
+ dir,
376
+ manifestPath,
377
+ ...(appId !== null ? { appId } : {}),
378
+ ...(name !== undefined ? { name } : {}),
379
+ ...(org !== undefined ? { organizationId: org } : {}),
380
+ ...(clientToken !== undefined ? { clientToken } : {}),
381
+ ...(slug !== undefined ? { slug } : {}),
382
+ ...(visibility !== undefined ? { visibility } : {}),
383
+ ...(requireAccess !== undefined ? { requireAccess } : {}),
384
+ });
385
+ };
294
386
  }
295
387
  // How long `--wait` holds for the approval: bare `--wait` takes the default,
296
388
  // `--wait <seconds>` an explicit bound. Capped so a mistyped value cannot
@@ -329,30 +421,43 @@ function parseGateFlag(value) {
329
421
  }
330
422
  return value === 'on';
331
423
  }
332
- async function runSchema(ctx, parsed) {
333
- const sub = parsed.positionals[1];
334
- if (sub === 'pull') {
335
- const docId = stringFlag(parsed, 'doc');
336
- if (docId === undefined)
337
- throw new Error('brass schema pull requires --doc <docId>');
338
- return schemaPull(ctx, { docId, outPath: stringFlag(parsed, 'out') ?? 'brass-app.json' });
424
+ function planSchema(parsed) {
425
+ if (parsed.positionals[1] !== 'pull') {
426
+ throw new Error('Usage: brass schema pull --doc <docId> [--out brass-app.json]');
339
427
  }
340
- throw new Error('Usage: brass schema pull --doc <docId> [--out brass-app.json]');
428
+ const docId = stringFlag(parsed, 'doc');
429
+ if (docId === undefined)
430
+ throw new Error('brass schema pull requires --doc <docId>');
431
+ const outPath = stringFlag(parsed, 'out') ?? 'brass-app.json';
432
+ return (ctx) => schemaPull(ctx, { docId, outPath });
341
433
  }
342
- async function runAgents(ctx, parsed) {
434
+ function planAgents(parsed) {
343
435
  if (parsed.positionals[1] !== 'pull') {
344
436
  throw new Error('Usage: brass agents pull [--out AGENTS.md | --stdout] [--org <organizationId>]');
345
437
  }
438
+ // Both flags claim stdout: `--stdout` puts the instructions there verbatim,
439
+ // `--json` the result object. Together they interleave two payloads on one
440
+ // stream, so a caller parsing either reads the other's bytes as part of it.
441
+ if (boolFlag(parsed, 'stdout') && boolFlag(parsed, 'json')) {
442
+ throw new Error('Pass one of --stdout or --json: both write to stdout, so together neither is parseable.');
443
+ }
346
444
  const org = stringFlag(parsed, 'org');
347
- return agentsPull(ctx, {
445
+ const options = {
348
446
  outPath: stringFlag(parsed, 'out') ?? 'AGENTS.md',
349
447
  ...(boolFlag(parsed, 'stdout') ? { stdout: true } : {}),
350
448
  ...(org !== undefined ? { organizationId: org } : {}),
351
- });
449
+ };
450
+ return (ctx) => agentsPull(ctx, options);
352
451
  }
353
- function formatError(err) {
452
+ // Render a failure for the terminal, naming the fix for a 401 in the
453
+ // vocabulary of the credential that was actually rejected. A session's
454
+ // refusal already arrives carrying `brass login` (the refresh authors it), so
455
+ // appending a service-token hint there tells the caller to check an
456
+ // environment variable they never set, next to the sentence naming the real
457
+ // fix. `status` classifies the same 401 the same way.
458
+ function formatError(err, credentialKind) {
354
459
  if (err instanceof BrassApiError) {
355
- if (err.status === 401) {
460
+ if (err.status === 401 && credentialKind !== 'session') {
356
461
  return `error: ${err.message} (the credential was rejected; check BRASS_SERVICE_TOKEN or --token)`;
357
462
  }
358
463
  return `error: ${err.message}`;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
package/dist/commands.js CHANGED
@@ -17,7 +17,7 @@ export async function publish(ctx, opts) {
17
17
  if (opts.visibility !== undefined) {
18
18
  await ensureVisibility(ctx, appId, opts.visibility, resolved.detail?.visibility);
19
19
  }
20
- const hosting = await ensureHosting(ctx, appId, opts.slug);
20
+ const hosting = await ensureHosting(ctx, appId, opts.slug, opts.requireAccess);
21
21
  if (opts.requireAccess !== undefined) {
22
22
  await ensureGate(ctx, appId, opts.requireAccess, hosting);
23
23
  }
@@ -32,7 +32,7 @@ export async function publish(ctx, opts) {
32
32
  // of a couple of reads instead of an upload and a poll loop.
33
33
  const unchanged = await activeVersionMatches(ctx, appId, hash);
34
34
  if (unchanged !== null) {
35
- const status = await ctx.api.get(`/apps/${encodeURIComponent(appId)}/hosting`);
35
+ const status = await awaitGateSettled(ctx, appId, await ctx.api.get(`/apps/${encodeURIComponent(appId)}/hosting`), opts.sleep ?? realSleep);
36
36
  ctx.log.success(`Already up to date${status.url ? `: ${status.url}` : ''}`);
37
37
  // Refreshed here too, so publishing twice says the same thing both times.
38
38
  // A publisher acting on a warning re-runs publish to check, and a signal
@@ -58,7 +58,7 @@ export async function publish(ctx, opts) {
58
58
  // its own, but an explicit refresh surfaces capability warnings (e.g. a
59
59
  // schema missing `family`) right here instead of silently later.
60
60
  const warnings = await refreshCapabilities(ctx, appId);
61
- const status = await ctx.api.get(`/apps/${encodeURIComponent(appId)}/hosting`);
61
+ const status = await awaitGateSettled(ctx, appId, await ctx.api.get(`/apps/${encodeURIComponent(appId)}/hosting`), opts.sleep ?? realSleep);
62
62
  if (status.url)
63
63
  ctx.log.success(`Deployed: ${status.url}`);
64
64
  return { app_id: appId, version_id: version.version_id, url: status.url, warnings };
@@ -106,14 +106,13 @@ async function ensureVisibility(ctx, appId, want, current) {
106
106
  ctx.log.info(`Set visibility to ${want}.`);
107
107
  }
108
108
  // Converge the hosted load gate to `want` (`true` = gated to the audience,
109
- // `false` = world-loadable). Always PATCH, even when the DDB flag already
110
- // reads `want`: the PATCH is what reaches the server-side reconcile that
111
- // repairs a wedged edge marker (a prior toggle whose flag write landed but
112
- // whose marker write lost every ETag race leaves the flag reading correct
113
- // while the marker disagrees). Skipping the PATCH on a matching flag would
114
- // leave such a gate wedged forever, since every later publish would skip it
115
- // too. `status` is the state `ensureHosting` just observed, used only to word
116
- // the log line. (`require_access` absent === off.)
109
+ // `false` = world-loadable). Always PATCH, even when the reported state
110
+ // already reads `want`: the PATCH is what asks the platform to re-settle a
111
+ // gate whose reported and served states have drifted apart, which reading the
112
+ // reported one alone cannot detect. Skipping it on a match would leave such an
113
+ // app stuck, since every later publish would skip it too. `status` is the
114
+ // state `ensureHosting` just observed, used only to word the log line.
115
+ // (`require_access` absent === off.)
117
116
  async function ensureGate(ctx, appId, want, status) {
118
117
  const changed = (status.require_access === true) !== want;
119
118
  await ctx.api.patch(`/apps/${encodeURIComponent(appId)}/hosting`, {
@@ -126,23 +125,54 @@ async function ensureGate(ctx, appId, want, status) {
126
125
  ctx.log.info(want ? 'Load gate is on.' : 'Load gate is off (bundle is world-loadable).');
127
126
  }
128
127
  }
129
- async function ensureHosting(ctx, appId, slug) {
128
+ // Enable hosting when the app is not hosted yet, at the load-gate state the
129
+ // publish wants. Stating the gate here rather than leaving it to the PATCH
130
+ // below settles it in one step: a new slot is gated by default, so a publish
131
+ // that wants a world-loadable one would otherwise turn the gate on and
132
+ // straight back off, doing twice the work to reach one state.
133
+ async function ensureHosting(ctx, appId, slug, requireAccess) {
130
134
  const status = await ctx.api.get(`/apps/${encodeURIComponent(appId)}/hosting`);
131
135
  if (status.enabled)
132
136
  return status;
133
137
  const body = {};
134
138
  if (slug !== undefined)
135
139
  body.slug = slug;
140
+ if (requireAccess !== undefined)
141
+ body.require_access = requireAccess;
136
142
  const enabled = await ctx.api.post(`/apps/${encodeURIComponent(appId)}/hosting`, body);
137
143
  if (enabled.slug)
138
144
  ctx.log.info(`Enabled hosting at ${enabled.slug}`);
139
145
  return enabled;
140
146
  }
141
- // The currently-served version when it is `ready` and already carries
142
- // `hash`, else null. A null (no active version, a non-ready active version, or
143
- // a hash mismatch) means `publish` must upload. A first deploy has no active
144
- // version, so it always uploads; a version predating content hashing has no
145
- // recorded hash and so never matches, forcing one re-upload that self-heals.
147
+ // A published bundle is not reachable until the platform has registered the
148
+ // slot to serve it, and that registration can lag or fail on its own. Reading
149
+ // the status is what asks the platform to settle it, so a slot that is not
150
+ // ready yet is re-read a few times before publish gives up. Publishing
151
+ // reports success only once the slot will actually serve, so an unreachable
152
+ // one is a failed publish rather than a URL that answers 404.
153
+ const GATE_SETTLE_ATTEMPTS = 3;
154
+ const GATE_SETTLE_GAP_MS = 2000;
155
+ async function awaitGateSettled(ctx, appId, status, sleep) {
156
+ // An api that does not report the field tells us nothing to act on.
157
+ if (status.gate_settled !== false)
158
+ return status;
159
+ for (let attempt = 1; attempt < GATE_SETTLE_ATTEMPTS; attempt++) {
160
+ await sleep(GATE_SETTLE_GAP_MS);
161
+ const latest = await ctx.api.get(`/apps/${encodeURIComponent(appId)}/hosting`);
162
+ if (latest.gate_settled !== false)
163
+ return latest;
164
+ }
165
+ // Says what is true of the SLOT, because both publish paths end here: the
166
+ // one that uploaded a new bundle and the one that found the app already
167
+ // serving this exact bundle and skipped the upload. A message naming an
168
+ // upload sends the second caller looking for one that never happened.
169
+ throw new Error('The hosted slot never registered, so it will not serve. ' +
170
+ 'Run publish again to retry.');
171
+ }
172
+ // The currently-served version when it is `ready` and already carries `hash`,
173
+ // else null. A null (no active version, a non-ready active version, or a hash
174
+ // mismatch) means `publish` must upload. A first deploy has no active version,
175
+ // so it always uploads.
146
176
  async function activeVersionMatches(ctx, appId, hash) {
147
177
  const { versions } = await ctx.api.get(`/apps/${encodeURIComponent(appId)}/hosting/versions`);
148
178
  const active = versions.find((v) => v.active);
@@ -152,8 +182,8 @@ async function activeVersionMatches(ctx, appId, hash) {
152
182
  }
153
183
  // Poll until the version reaches a KNOWN terminal state (`ready` / `failed`),
154
184
  // then return it; time out otherwise. Deliberately loops while the status is
155
- // anything other than a known terminal `pending` OR any status this pinned
156
- // CLI does not recognize rather than returning on `!== 'pending'`. That way
185
+ // anything other than a known terminal (`pending`, or any status this pinned
186
+ // CLI does not recognize) rather than returning on `!== 'pending'`. That way
157
187
  // a future server status (a finer-grained non-terminal like `unpacking`, or a
158
188
  // new terminal-failure like `rejected`) is not mistaken for "done": an
159
189
  // unrecognized non-terminal keeps polling, and an unrecognized terminal