@substrat-run/cli 0.38.1 → 0.39.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 (54) hide show
  1. package/dist/cli.js +24 -7
  2. package/dist/cli.js.map +1 -1
  3. package/dist/hostnames.d.ts +2 -21
  4. package/dist/hostnames.d.ts.map +1 -1
  5. package/dist/hostnames.js +30 -38
  6. package/dist/hostnames.js.map +1 -1
  7. package/dist/http.d.ts +8 -19
  8. package/dist/http.d.ts.map +1 -1
  9. package/dist/http.js +8 -29
  10. package/dist/http.js.map +1 -1
  11. package/dist/installs.d.ts.map +1 -1
  12. package/dist/installs.js +3 -12
  13. package/dist/installs.js.map +1 -1
  14. package/dist/listing.d.ts.map +1 -1
  15. package/dist/listing.js +3 -20
  16. package/dist/listing.js.map +1 -1
  17. package/dist/login.d.ts +5 -0
  18. package/dist/login.d.ts.map +1 -1
  19. package/dist/login.js +9 -12
  20. package/dist/login.js.map +1 -1
  21. package/dist/plane.d.ts +50 -0
  22. package/dist/plane.d.ts.map +1 -0
  23. package/dist/plane.js +68 -0
  24. package/dist/plane.js.map +1 -0
  25. package/dist/preview.d.ts.map +1 -1
  26. package/dist/preview.js +20 -10
  27. package/dist/preview.js.map +1 -1
  28. package/dist/problem.d.ts +7 -2
  29. package/dist/problem.d.ts.map +1 -1
  30. package/dist/problem.js +8 -10
  31. package/dist/problem.js.map +1 -1
  32. package/dist/promote.d.ts +3 -31
  33. package/dist/promote.d.ts.map +1 -1
  34. package/dist/promote.js +25 -27
  35. package/dist/promote.js.map +1 -1
  36. package/dist/push.d.ts +73 -0
  37. package/dist/push.d.ts.map +1 -1
  38. package/dist/push.js +127 -25
  39. package/dist/push.js.map +1 -1
  40. package/dist/schedule-sweeper.d.ts +34 -0
  41. package/dist/schedule-sweeper.d.ts.map +1 -0
  42. package/dist/schedule-sweeper.js +223 -0
  43. package/dist/schedule-sweeper.js.map +1 -0
  44. package/dist/scope.d.ts.map +1 -1
  45. package/dist/scope.js +37 -99
  46. package/dist/scope.js.map +1 -1
  47. package/dist/versions.d.ts.map +1 -1
  48. package/dist/versions.js +8 -18
  49. package/dist/versions.js.map +1 -1
  50. package/dist/whoami.d.ts +7 -11
  51. package/dist/whoami.d.ts.map +1 -1
  52. package/dist/whoami.js +2 -13
  53. package/dist/whoami.js.map +1 -1
  54. package/package.json +6 -4
package/dist/listing.js CHANGED
@@ -4,32 +4,15 @@
4
4
  * endpoint is STAFF-only, so a builder is refused (the review gate); a staff/platform caller
5
5
  * flips it. Once `listed`, `availableCatalog` offers the vertical to every tenant.
6
6
  */
7
- import { parseJsonBody } from './http.js';
7
+ import { planeFor, viaPlane } from './plane.js';
8
8
  export async function setListing(opts) {
9
- const base = opts.controlPlaneUrl.replace(/\/$/, '');
10
- const url = `${base}/verticals/${encodeURIComponent(opts.slug)}/listing`;
11
- const res = await fetch(url, {
12
- method: 'POST',
13
- headers: { ...opts.header, 'content-type': 'application/json' },
14
- body: JSON.stringify({ listed: opts.listed }),
15
- });
16
- const body = await res.text();
17
- if (!res.ok)
18
- throw new Error(`${opts.listed ? 'publish' : 'unpublish'} failed (${res.status}): ${body.slice(0, 300)}`);
19
- return parseJsonBody(body, url);
9
+ return viaPlane(() => planeFor(opts.controlPlaneUrl, opts.header).setListing(opts.slug, opts.listed), (e) => new Error(`${opts.listed ? 'publish' : 'unpublish'} failed (${e.status}): ${(e.body ?? '').slice(0, 300)}`));
20
10
  }
21
11
  /**
22
12
  * `substrat publish <slug>` — a builder REQUESTS listing (marketplace-publish.md §5). Any owner
23
13
  * may ask; a staff operator then reviews and lists it. Owner-checked control-plane-side.
24
14
  */
25
15
  export async function requestPublish(opts) {
26
- const base = opts.controlPlaneUrl.replace(/\/$/, '');
27
- const res = await fetch(`${base}/verticals/${encodeURIComponent(opts.slug)}/publish-request`, {
28
- method: 'POST',
29
- headers: { ...opts.header, 'content-type': 'application/json' },
30
- body: '{}',
31
- });
32
- if (!res.ok)
33
- throw new Error(`publish request failed (${res.status}): ${(await res.text()).slice(0, 300)}`);
16
+ await viaPlane(() => planeFor(opts.controlPlaneUrl, opts.header).requestPublish(opts.slug), (e) => new Error(`publish request failed (${e.status}): ${(e.body ?? '').slice(0, 300)}`));
34
17
  }
35
18
  //# sourceMappingURL=listing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"listing.js","sourceRoot":"","sources":["../src/listing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAS1C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAoB;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,GAAG,IAAI,cAAc,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IACzE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/D,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;KAC9C,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,YAAY,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACvH,OAAO,aAAa,CAAoC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAA+E;IAClH,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,cAAc,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;QAC5F,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/D,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9G,CAAC"}
1
+ {"version":3,"file":"listing.js","sourceRoot":"","sources":["../src/listing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAShD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAoB;IACnD,OAAO,QAAQ,CACb,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EACpF,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,YAAY,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CACnH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAA+E;IAClH,MAAM,QAAQ,CACZ,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAC3E,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAC1F,CAAC;AACJ,CAAC"}
package/dist/login.d.ts CHANGED
@@ -7,4 +7,9 @@
7
7
  export declare function browserLogin(controlPlaneUrl: string, opts?: {
8
8
  fresh?: boolean;
9
9
  }): Promise<string>;
10
+ /**
11
+ * Trade the one-time code (and its PKCE verifier) for a session token. No credential rides
12
+ * along: the code is what authenticates this call.
13
+ */
14
+ export declare function exchangeLoginCode(controlPlaneUrl: string, code: string, verifier: string): Promise<string>;
10
15
  //# sourceMappingURL=login.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAuFA;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB3G"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAuFA;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAa3G;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOhH"}
package/dist/login.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { createServer } from 'node:http';
2
2
  import { webcrypto } from 'node:crypto';
3
3
  import { spawn } from 'node:child_process';
4
- import { readJson } from './http.js';
4
+ import { planeFor, viaPlane } from './plane.js';
5
5
  /**
6
6
  * The loopback browser-login flow (`substrat login`). PKCE against the control plane's
7
7
  * CLI broker (apps/control-plane/src/cli-auth.ts) — which brokers AuthHero, so the CLI
@@ -96,17 +96,14 @@ export async function browserLogin(controlPlaneUrl, opts = {}) {
96
96
  console.log('opening your browser to sign in…');
97
97
  console.log(` if it doesn't open, visit:\n ${authUrl}\n`);
98
98
  openBrowser(authUrl);
99
- const codeValue = await code;
100
- const tokenUrl = `${cp}/auth/cli/token`;
101
- const res = await fetch(tokenUrl, {
102
- method: 'POST',
103
- headers: { 'content-type': 'application/json' },
104
- body: JSON.stringify({ code: codeValue, verifier }),
105
- });
106
- if (!res.ok) {
107
- throw new Error(`token exchange failed (${res.status}): ${(await res.text()).slice(0, 300)}`);
108
- }
109
- const { token } = await readJson(res, tokenUrl);
99
+ return exchangeLoginCode(cp, await code, verifier);
100
+ }
101
+ /**
102
+ * Trade the one-time code (and its PKCE verifier) for a session token. No credential rides
103
+ * along: the code is what authenticates this call.
104
+ */
105
+ export async function exchangeLoginCode(controlPlaneUrl, code, verifier) {
106
+ const { token } = await viaPlane(() => planeFor(controlPlaneUrl, {}).exchangeLoginCode(code, verifier), (e) => new Error(`token exchange failed (${e.status}): ${(e.body ?? '').slice(0, 300)}`));
110
107
  if (!token)
111
108
  throw new Error('token exchange returned no token');
112
109
  return token;
package/dist/login.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;;;;;;;;;;GAYG;AAEH,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAE9B,SAAS,MAAM,CAAC,KAAiB;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC5E,CAAC;AACD,MAAM,YAAY,GAAG,CAAC,CAAC,GAAG,EAAE,EAAU,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,KAAK,UAAU,IAAI,CAAC,QAAgB;IAClC,OAAO,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;IACvG,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;AACH,CAAC;AAED,iGAAiG;AACjG,SAAS,aAAa,CAAC,aAAqB;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QACjC,IAAI,WAAiC,CAAC;QACtC,IAAI,UAA+B,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC5C,WAAW,GAAG,GAAG,CAAC;YAClB,UAAU,GAAG,GAAG,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC;YACxD,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACjC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,GAAW,EAAQ,EAAE;gBAChD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;gBACzF,GAAG,CAAC,GAAG,CAAC,6CAA6C,KAAK,oGAAoG,KAAK,WAAW,GAAG,aAAa,CAAC,CAAC;YAClM,CAAC,CAAC;YACF,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;gBACpC,IAAI,CAAC,cAAc,EAAE,wDAAwD,CAAC,CAAC;gBAC/E,UAAU,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,+BAA+B,EAAE,qDAAqD,CAAC,CAAC;gBAC7F,WAAW,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;YACjC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,UAAU,CAAC,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC,CAAC;YAChF,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAClB,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,eAAuB,EAAE,IAAI,GAAwB,EAAE;IACxF,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAE/B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,GAAG,EAAE,kBAAkB,IAAI,UAAU,kBAAkB,CAAC,KAAK,CAAC,cAAc,kBAAkB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC3J,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,mCAAmC,OAAO,IAAI,CAAC,CAAC;IAC5D,WAAW,CAAC,OAAO,CAAC,CAAC;IAErB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC;IAC7B,MAAM,QAAQ,GAAG,GAAG,EAAE,iBAAiB,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;KACpD,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAqB,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * The CLI's one way to reach the control plane (#971): `ControlPlaneBuilderClient`, built from
3
+ * the `{ controlPlaneUrl, header }` pair every command already resolves (`config.ts`), plus the
4
+ * translation back into what a command prints.
5
+ *
6
+ * The client owns the request — the URL, the verb, the body, the credential map — and the
7
+ * CLI keeps owning the words. A refusal arrives as a `ControlPlaneError` carrying the raw body
8
+ * and status, which each command renders with the reader it always used (`problem.ts`), so the
9
+ * message a builder sees does not depend on which layer made the call.
10
+ */
11
+ import { ControlPlaneBuilderClient, ControlPlaneError } from '@substrat-run/control-plane-client';
12
+ import type { Page } from '@substrat-run/contracts';
13
+ export interface PlaneOptions {
14
+ /**
15
+ * Nudge the builder when the plane says this CLI is stale (`warnIfStale`), off every
16
+ * response. Only `push`, `promote` and `preview` ever did; the rest stay silent.
17
+ */
18
+ advisory?: boolean;
19
+ /**
20
+ * The `content-type` sent on EVERY request. Absent: none on a read (a bare `GET` has never
21
+ * carried one) and JSON on a write, which the client sets itself. `hostnames` and `preview`
22
+ * always sent JSON, reads included, and say so.
23
+ */
24
+ contentType?: string;
25
+ }
26
+ /** A client over the credential map the command resolved. */
27
+ export declare function planeFor(controlPlaneUrl: string, header: Record<string, string>, opts?: PlaneOptions): ControlPlaneBuilderClient;
28
+ /**
29
+ * Run one client call and put its failure the way the CLI always has:
30
+ *
31
+ * - a transport failure (`status` 0) rethrows the very error `fetch` threw, not the client's
32
+ * wrapper — `fetch failed` is the sentence a builder has always been shown;
33
+ * - a 2xx that was not JSON is read through `parseJsonBody`, which names the likely fix
34
+ * (the control-plane URL points at a web page, #387);
35
+ * - a refusal goes to `refused`, which is the command's own message.
36
+ */
37
+ export declare function viaPlane<T>(call: () => Promise<T>, refused: (e: ControlPlaneError) => Error): Promise<T>;
38
+ /** What `await res.text().catch(() => res.statusText)` was: the body, else the status phrase. */
39
+ export declare const bodyOrStatus: (e: ControlPlaneError) => string;
40
+ /** A refusal's body parsed, or `null` — what `await res.json().catch(() => null)` was. */
41
+ export declare function refusalBody(e: ControlPlaneError): unknown;
42
+ /**
43
+ * Read a paged list to the END (the CLI's reads are complete-list: the max semver, installs
44
+ * joined to hostnames), refusing the way every control-plane read does.
45
+ */
46
+ export declare function walkAll<T>(fetchPage: (page: {
47
+ limit: number;
48
+ cursor: string | null;
49
+ }) => Promise<Page<T>>): Promise<T[]>;
50
+ //# sourceMappingURL=plane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plane.d.ts","sourceRoot":"","sources":["../src/plane.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAa,MAAM,oCAAoC,CAAC;AAC7G,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAKpD,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,6DAA6D;AAC7D,wBAAgB,QAAQ,CACtB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,IAAI,GAAE,YAAiB,GACtB,yBAAyB,CAQ3B;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAY9G;AAED,iGAAiG;AACjG,eAAO,MAAM,YAAY,MAAO,iBAAiB,KAAG,MAAsC,CAAC;AAE3F,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAMzD;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAExH"}
package/dist/plane.js ADDED
@@ -0,0 +1,68 @@
1
+ /**
2
+ * The CLI's one way to reach the control plane (#971): `ControlPlaneBuilderClient`, built from
3
+ * the `{ controlPlaneUrl, header }` pair every command already resolves (`config.ts`), plus the
4
+ * translation back into what a command prints.
5
+ *
6
+ * The client owns the request — the URL, the verb, the body, the credential map — and the
7
+ * CLI keeps owning the words. A refusal arrives as a `ControlPlaneError` carrying the raw body
8
+ * and status, which each command renders with the reader it always used (`problem.ts`), so the
9
+ * message a builder sees does not depend on which layer made the call.
10
+ */
11
+ import { ControlPlaneBuilderClient, ControlPlaneError, walkPages } from '@substrat-run/control-plane-client';
12
+ import { parseJsonBody } from './http.js';
13
+ import { readRefused } from './problem.js';
14
+ import { warnIfStale } from './version.js';
15
+ /** A client over the credential map the command resolved. */
16
+ export function planeFor(controlPlaneUrl, header, opts = {}) {
17
+ return new ControlPlaneBuilderClient({
18
+ baseUrl: controlPlaneUrl,
19
+ actor: null,
20
+ headers: header,
21
+ contentType: opts.contentType ?? null,
22
+ ...(opts.advisory ? { onResponse: (res) => warnIfStale(res.headers) } : {}),
23
+ });
24
+ }
25
+ /**
26
+ * Run one client call and put its failure the way the CLI always has:
27
+ *
28
+ * - a transport failure (`status` 0) rethrows the very error `fetch` threw, not the client's
29
+ * wrapper — `fetch failed` is the sentence a builder has always been shown;
30
+ * - a 2xx that was not JSON is read through `parseJsonBody`, which names the likely fix
31
+ * (the control-plane URL points at a web page, #387);
32
+ * - a refusal goes to `refused`, which is the command's own message.
33
+ */
34
+ export async function viaPlane(call, refused) {
35
+ try {
36
+ return await call();
37
+ }
38
+ catch (e) {
39
+ if (!(e instanceof ControlPlaneError))
40
+ throw e;
41
+ if (e.status === 0)
42
+ throw e.cause ?? e;
43
+ if (e.malformed) {
44
+ parseJsonBody(e.body ?? '', e.url ?? '');
45
+ throw e; // a body that parses cannot be malformed; unreachable, and loud if it is not
46
+ }
47
+ throw refused(e);
48
+ }
49
+ }
50
+ /** What `await res.text().catch(() => res.statusText)` was: the body, else the status phrase. */
51
+ export const bodyOrStatus = (e) => e.body ?? e.statusText ?? '';
52
+ /** A refusal's body parsed, or `null` — what `await res.json().catch(() => null)` was. */
53
+ export function refusalBody(e) {
54
+ try {
55
+ return JSON.parse(e.body ?? '');
56
+ }
57
+ catch {
58
+ return null;
59
+ }
60
+ }
61
+ /**
62
+ * Read a paged list to the END (the CLI's reads are complete-list: the max semver, installs
63
+ * joined to hostnames), refusing the way every control-plane read does.
64
+ */
65
+ export function walkAll(fetchPage) {
66
+ return viaPlane(() => walkPages(fetchPage), readRefused);
67
+ }
68
+ //# sourceMappingURL=plane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plane.js","sourceRoot":"","sources":["../src/plane.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE7G,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAgB3C,6DAA6D;AAC7D,MAAM,UAAU,QAAQ,CACtB,eAAuB,EACvB,MAA8B,EAC9B,IAAI,GAAiB,EAAE;IAEvB,OAAO,IAAI,yBAAyB,CAAC;QACnC,OAAO,EAAE,eAAe;QACxB,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;QACrC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5E,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,IAAsB,EAAE,OAAwC;IAChG,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,CAAC,CAAC,YAAY,iBAAiB,CAAC;YAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YAChB,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,CAAC,CAAC,6EAA6E;QACxF,CAAC;QACD,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAoB,EAAU,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;AAE3F,0FAA0F;AAC1F,MAAM,UAAU,WAAW,CAAC,CAAoB;IAC9C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAI,SAA+E;IACxG,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;AAC3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAK5E,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,CAcpE;AA8GD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,cAAc,CAAC,CAwB1B;AAED;wEACwE;AACxE,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAWtC;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CASxB;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAazD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAQhF"}
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAM5E,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,CAcpE;AA2HD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,cAAc,CAAC,CAuB1B;AAED;wEACwE;AACxE,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAUtC;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAQxB;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAazD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAQhF"}
package/dist/preview.js CHANGED
@@ -11,8 +11,9 @@
11
11
  * tenant-scoped push token CI already carries.
12
12
  */
13
13
  import { oidcCallbackUrl } from '@substrat-run/contracts';
14
- import { warnIfStale } from './version.js';
14
+ import { ControlPlaneUsageError } from '@substrat-run/control-plane-client';
15
15
  import { parseJsonBody } from './http.js';
16
+ import { planeFor } from './plane.js';
16
17
  import { failureMessage } from './problem.js';
17
18
  /**
18
19
  * The lines `preview create` prints about the preview's login and what it did not carry over
@@ -42,7 +43,8 @@ export function formatPreviewLogin(created) {
42
43
  * the same message here as they do from `push` or `promote` — so a preview 400 names the
43
44
  * field it refused, and which command a builder ran stops changing the shape of the answer.
44
45
  */
45
- async function request(action, url, header, init, opts = {}) {
46
+ async function request(action, plane, path, init, opts = {}) {
47
+ const url = plane.urlFor(path);
46
48
  // A transient platform fault (#1918) is one retry away from working, and a CI job nobody
47
49
  // watches turns it into a red build. Only the callers that are idempotent by contract opt
48
50
  // in; a 4xx or any other status is a definite answer and is never retried. `Retry` says
@@ -51,9 +53,16 @@ async function request(action, url, header, init, opts = {}) {
51
53
  for (let attempt = 1;; attempt++) {
52
54
  let res;
53
55
  try {
54
- res = await fetch(url, { ...init, headers: { 'content-type': 'application/json', ...header } });
56
+ // The raw exchange: this loop reads each attempt's status and body itself, and a network
57
+ // failure must reach it as the error `fetch` threw, so it can tell the two apart.
58
+ res = await plane.request(path, init);
55
59
  }
56
60
  catch (e) {
61
+ // The client refused to send this request at all (it would have carried two credentials):
62
+ // a mistake in the request, not a flaky network, so it is neither retried nor announced
63
+ // as a retry. Keyed on its own class — `fetch` throws `TypeError` for a dropped connection.
64
+ if (e instanceof ControlPlaneUsageError)
65
+ throw e;
57
66
  // A network-level failure (no response at all) is the same transient class as a 502 —
58
67
  // for a call that is safe to repeat while the first is still running. A dropped
59
68
  // connection can come after the handler started, so a create does not retry on it.
@@ -62,7 +71,6 @@ async function request(action, url, header, init, opts = {}) {
62
71
  await backoff(action, attempt, attempts, `network error: ${e instanceof Error ? e.message : String(e)}`);
63
72
  continue;
64
73
  }
65
- warnIfStale(res.headers);
66
74
  let body;
67
75
  try {
68
76
  body = await res.text();
@@ -124,6 +132,11 @@ async function backoff(action, attempt, attempts, why) {
124
132
  console.warn(`${action} (${why}); retrying in ${wait / 1000}s (attempt ${attempt + 1} of ${attempts})`);
125
133
  await new Promise((resolve) => setTimeout(resolve, wait));
126
134
  }
135
+ /**
136
+ * A preview call's client: the JSON content type on every request (reads and deletes too, as
137
+ * the hand-rolled one sent it), and the stale-CLI nudge off every answer.
138
+ */
139
+ const previewPlane = (opts) => planeFor(opts.controlPlaneUrl, opts.header, { advisory: true, contentType: 'application/json' });
127
140
  /**
128
141
  * Create (or update) a preview. Idempotent on the tag: a second call with the same tag —
129
142
  * what a PR *synchronize* triggers — rebinds the new version onto the SAME fork, and the
@@ -132,8 +145,7 @@ async function backoff(action, attempt, attempts, why) {
132
145
  * a `notes` line. `refresh` forces a clean fork from prod instead.
133
146
  */
134
147
  export async function createPreview(opts) {
135
- const base = opts.controlPlaneUrl.replace(/\/$/, '');
136
- return request('preview create failed', `${base}/verticals/${encodeURIComponent(opts.slug)}/previews`, opts.header, {
148
+ return request('preview create failed', previewPlane(opts), `/verticals/${encodeURIComponent(opts.slug)}/previews`, {
137
149
  method: 'POST',
138
150
  body: JSON.stringify({
139
151
  tag: opts.tag,
@@ -154,15 +166,13 @@ export async function createPreview(opts) {
154
166
  /** Reap a preview by tag. Idempotent: an already-gone preview is a no-op success, so a
155
167
  * PR-close job never fails because the preview was already removed. */
156
168
  export async function deletePreview(opts) {
157
- const base = opts.controlPlaneUrl.replace(/\/$/, '');
158
- return request('preview delete failed', `${base}/verticals/${encodeURIComponent(opts.slug)}/previews/${encodeURIComponent(opts.tag)}`, opts.header, { method: 'DELETE' },
169
+ return request('preview delete failed', previewPlane(opts), `/verticals/${encodeURIComponent(opts.slug)}/previews/${encodeURIComponent(opts.tag)}`, { method: 'DELETE' },
159
170
  // The route answers 200 `{ deleted: null }` for a preview already gone, so a retry after a
160
171
  // delete that landed but whose response was lost succeeds rather than failing on a 404.
161
172
  { retry: 'idempotent' });
162
173
  }
163
174
  export async function listPreviews(opts) {
164
- const base = opts.controlPlaneUrl.replace(/\/$/, '');
165
- return request('preview list failed', `${base}/verticals/${encodeURIComponent(opts.slug)}/previews`, opts.header, undefined, { retry: 'idempotent' });
175
+ return request('preview list failed', previewPlane(opts), `/verticals/${encodeURIComponent(opts.slug)}/previews`, undefined, { retry: 'idempotent' });
166
176
  }
167
177
  /** Render previews as an aligned table (the `substrat preview ls` output). */
168
178
  export function formatPreviews(rows) {
@@ -1 +1 @@
1
- {"version":3,"file":"preview.js","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"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"}
package/dist/problem.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { ControlPlaneError } from '@substrat-run/control-plane-client';
1
2
  /** What a failed response said, once. */
2
3
  export interface ProblemSummary {
3
4
  /** The human sentence to print. `''` when the body carried nothing readable. */
@@ -31,6 +32,10 @@ export declare function readProblem(body: string): ProblemSummary;
31
32
  * platform fault is not particular to `push`.
32
33
  */
33
34
  export declare function failureMessage(action: string, status: number, body: string): string;
34
- /** GET one control-plane page, reading a refusal as the problem document it is. */
35
- export declare function getJson<T>(url: string, header: Record<string, string>): Promise<T>;
35
+ /**
36
+ * What every control-plane read refuses with: the problem document the plane answered, read
37
+ * as `failureMessage` reads it — the code and the detail, never a slice of the raw body (#971).
38
+ * The body is the response's text, or its status phrase when the stream could not be read.
39
+ */
40
+ export declare function readRefused(e: ControlPlaneError): Error;
36
41
  //# sourceMappingURL=problem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"problem.d.ts","sourceRoot":"","sources":["../src/problem.ts"],"names":[],"mappings":"AA2BA,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAyBD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAiDxD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnF;AAED,mFAAmF;AACnF,wBAAsB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAQxF"}
1
+ {"version":3,"file":"problem.d.ts","sourceRoot":"","sources":["../src/problem.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAM5E,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAyBD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAiDxD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAEvD"}
package/dist/problem.js CHANGED
@@ -20,7 +20,7 @@
20
20
  * 3. anything else — a slice of the raw body, which is at least the truth.
21
21
  */
22
22
  import { problem as problemSchema, problemDetail } from '@substrat-run/contracts';
23
- import { explainPlatformFault, readJson } from './http.js';
23
+ import { explainPlatformFault } from './http.js';
24
24
  /** How much of an unrecognised body is worth printing before it stops being a message. */
25
25
  const RAW_BODY_LIMIT = 300;
26
26
  /**
@@ -120,14 +120,12 @@ export function failureMessage(action, status, body) {
120
120
  lines.push(` ${e.path || '(root)'}: ${e.message}`);
121
121
  return lines.join('\n') + explainPlatformFault(status, p.detail);
122
122
  }
123
- /** GET one control-plane page, reading a refusal as the problem document it is. */
124
- export async function getJson(url, header) {
125
- const res = await fetch(url, { headers: header });
126
- if (!res.ok) {
127
- // The control plane answers a refused read with a problem document; print what it
128
- // says — the code and the detail — instead of a slice of the raw body (#971).
129
- throw new Error(failureMessage('control-plane read failed', res.status, await res.text().catch(() => res.statusText)));
130
- }
131
- return readJson(res, url);
123
+ /**
124
+ * What every control-plane read refuses with: the problem document the plane answered, read
125
+ * as `failureMessage` reads it — the code and the detail, never a slice of the raw body (#971).
126
+ * The body is the response's text, or its status phrase when the stream could not be read.
127
+ */
128
+ export function readRefused(e) {
129
+ return new Error(failureMessage('control-plane read failed', e.status, e.body ?? e.statusText ?? ''));
132
130
  }
133
131
  //# sourceMappingURL=problem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"problem.js","sourceRoot":"","sources":["../src/problem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"problem.js","sourceRoot":"","sources":["../src/problem.ts"],"names":[],"mappings":"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"}
package/dist/promote.d.ts CHANGED
@@ -13,7 +13,8 @@
13
13
  * is refused too (409), and the refusal lists the apps it would break: the caller's own tenant's
14
14
  * by name, any other tenant only as a count. `--ack-export-break` passes it once that is read.
15
15
  */
16
- import { type ExportBreak, type MigrationDiff, type PermissionRegistry } from '@substrat-run/contracts';
16
+ import { type MigrationDiff, type PermissionRegistry } from '@substrat-run/contracts';
17
+ import { type ExportBreaks, type MintedStore, type PromoteResult } from '@substrat-run/control-plane-client';
17
18
  export interface PromoteOptions {
18
19
  controlPlaneUrl: string;
19
20
  header: Record<string, string>;
@@ -26,40 +27,11 @@ export interface PromoteOptions {
26
27
  exportBreak?: boolean;
27
28
  };
28
29
  }
29
- /** The installed apps a promote breaks (#1705 PR 3), as the control plane lists them to this caller. */
30
- export interface ExportBreaks {
31
- affected: ExportBreak[];
32
- otherTenants?: number;
33
- }
34
30
  /** The listing a refused (or acknowledged) export break carries, one line per affected app. */
35
31
  export declare function exportBreakLines(b: ExportBreaks): string[];
36
32
  /** The listing a refusal prints, and how to answer it once it has been read. */
37
33
  export declare function exportBreakListing(b: ExportBreaks): string;
38
- /**
39
- * One store the promote minted for an already-installed tenant (#825) — a store declared
40
- * by THIS version that the tenant, having been created before the declaration existed,
41
- * did not have. Reported so adopting a new store is something the builder watches happen
42
- * rather than an ops step someone has to remember.
43
- */
44
- export interface MintedStore {
45
- tenantId: string;
46
- binding: string;
47
- kind: 'relational' | 'blob';
48
- }
49
- export interface PromoteResult {
50
- channel: string;
51
- versionId: string;
52
- /** Present only when this promote minted stores, or tried and could not. `minted` names
53
- * only tenants the caller may see (a builder reads its own tenant's directory rows and no
54
- * one else's); `otherTenants` counts the rest of the fleet the sweep also covered. */
55
- storeBackfill?: {
56
- minted: MintedStore[];
57
- otherTenants?: number;
58
- error?: string;
59
- };
60
- /** Present when an acknowledged export break reached installed apps (#1705 PR 3). */
61
- exportBreaks?: ExportBreaks;
62
- }
34
+ export type { ExportBreaks, MintedStore, PromoteResult };
63
35
  export declare function promote(opts: PromoteOptions): Promise<PromoteResult>;
64
36
  /**
65
37
  * The permission and migration diffs a refused promote stands for (#1677), as printable
@@ -1 +1 @@
1
- {"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../src/promote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,aAAa,EAElB,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAKjC,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAChG;AAED,wGAAwG;AACxG,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,CAQ1D;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAE1D;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB;;2FAEuF;IACvF,aAAa,CAAC,EAAE;QAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjF,qFAAqF;IACrF,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAsC1E;AAOD;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACnD,OAAO,CAAC,MAAM,EAAE,CAAC,CAkCnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,EAAE,EAAE,EAAE,kBAAkB,GAAG,IAAI,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE,CAuBjI;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE,CAyB9F"}
1
+ {"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../src/promote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAIL,KAAK,aAAa,EAElB,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,oCAAoC,CAAC;AAI5C,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAChG;AAED,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,CAQ1D;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAE1D;AAED,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAEzD,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAkC1E;AAOD;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACnD,OAAO,CAAC,MAAM,EAAE,CAAC,CA8BnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,EAAE,EAAE,EAAE,kBAAkB,GAAG,IAAI,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE,CAuBjI;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE,CAyB9F"}