@spec0/cli 0.5.0 → 0.6.1

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 (89) hide show
  1. package/README.md +0 -1
  2. package/dist/commands/api/changelog.d.ts.map +1 -1
  3. package/dist/commands/api/changelog.js +10 -7
  4. package/dist/commands/api/changelog.js.map +1 -1
  5. package/dist/commands/api/delete.d.ts.map +1 -1
  6. package/dist/commands/api/delete.js +11 -9
  7. package/dist/commands/api/delete.js.map +1 -1
  8. package/dist/commands/api/list.d.ts.map +1 -1
  9. package/dist/commands/api/list.js +10 -7
  10. package/dist/commands/api/list.js.map +1 -1
  11. package/dist/commands/api/show.d.ts.map +1 -1
  12. package/dist/commands/api/show.js +11 -4
  13. package/dist/commands/api/show.js.map +1 -1
  14. package/dist/commands/auth.d.ts +5 -1
  15. package/dist/commands/auth.d.ts.map +1 -1
  16. package/dist/commands/auth.js +36 -20
  17. package/dist/commands/auth.js.map +1 -1
  18. package/dist/commands/ci/generate.d.ts.map +1 -1
  19. package/dist/commands/ci/generate.js +10 -7
  20. package/dist/commands/ci/generate.js.map +1 -1
  21. package/dist/commands/log.d.ts.map +1 -1
  22. package/dist/commands/log.js +10 -5
  23. package/dist/commands/log.js.map +1 -1
  24. package/dist/commands/mcp.d.ts +7 -4
  25. package/dist/commands/mcp.d.ts.map +1 -1
  26. package/dist/commands/mcp.js +21 -42
  27. package/dist/commands/mcp.js.map +1 -1
  28. package/dist/commands/mock/create.d.ts.map +1 -1
  29. package/dist/commands/mock/create.js +10 -7
  30. package/dist/commands/mock/create.js.map +1 -1
  31. package/dist/commands/mock/delete.d.ts.map +1 -1
  32. package/dist/commands/mock/delete.js +11 -10
  33. package/dist/commands/mock/delete.js.map +1 -1
  34. package/dist/commands/mock/list.d.ts.map +1 -1
  35. package/dist/commands/mock/list.js +10 -7
  36. package/dist/commands/mock/list.js.map +1 -1
  37. package/dist/commands/mock/show.d.ts.map +1 -1
  38. package/dist/commands/mock/show.js +10 -7
  39. package/dist/commands/mock/show.js.map +1 -1
  40. package/dist/commands/mock/url.d.ts.map +1 -1
  41. package/dist/commands/mock/url.js +12 -5
  42. package/dist/commands/mock/url.js.map +1 -1
  43. package/dist/commands/pull.d.ts.map +1 -1
  44. package/dist/commands/pull.js +12 -5
  45. package/dist/commands/pull.js.map +1 -1
  46. package/dist/commands/push.d.ts.map +1 -1
  47. package/dist/commands/push.js +5 -0
  48. package/dist/commands/push.js.map +1 -1
  49. package/dist/commands/search.d.ts.map +1 -1
  50. package/dist/commands/search.js +13 -9
  51. package/dist/commands/search.js.map +1 -1
  52. package/dist/commands/status.d.ts.map +1 -1
  53. package/dist/commands/status.js +10 -5
  54. package/dist/commands/status.js.map +1 -1
  55. package/dist/commands/sync-status.d.ts.map +1 -1
  56. package/dist/commands/sync-status.js +10 -7
  57. package/dist/commands/sync-status.js.map +1 -1
  58. package/dist/commands/team/create.d.ts.map +1 -1
  59. package/dist/commands/team/create.js +11 -10
  60. package/dist/commands/team/create.js.map +1 -1
  61. package/dist/commands/team/delete.d.ts.map +1 -1
  62. package/dist/commands/team/delete.js +11 -8
  63. package/dist/commands/team/delete.js.map +1 -1
  64. package/dist/commands/team/list.d.ts.map +1 -1
  65. package/dist/commands/team/list.js +11 -9
  66. package/dist/commands/team/list.js.map +1 -1
  67. package/dist/index.js +4 -0
  68. package/dist/index.js.map +1 -1
  69. package/dist/lib/api-client.d.ts +10 -0
  70. package/dist/lib/api-client.d.ts.map +1 -1
  71. package/dist/lib/api-client.js +58 -10
  72. package/dist/lib/api-client.js.map +1 -1
  73. package/dist/lib/config.d.ts +11 -0
  74. package/dist/lib/config.d.ts.map +1 -1
  75. package/dist/lib/config.js +14 -0
  76. package/dist/lib/config.js.map +1 -1
  77. package/dist/lib/errors.d.ts +46 -0
  78. package/dist/lib/errors.d.ts.map +1 -0
  79. package/dist/lib/errors.js +99 -0
  80. package/dist/lib/errors.js.map +1 -0
  81. package/dist/lib/http-trace.d.ts +37 -0
  82. package/dist/lib/http-trace.d.ts.map +1 -0
  83. package/dist/lib/http-trace.js +101 -0
  84. package/dist/lib/http-trace.js.map +1 -0
  85. package/dist/lib/output.d.ts +4 -0
  86. package/dist/lib/output.d.ts.map +1 -1
  87. package/dist/lib/output.js +8 -0
  88. package/dist/lib/output.js.map +1 -1
  89. package/package.json +1 -1
@@ -3,6 +3,40 @@
3
3
  */
4
4
  import got from "got";
5
5
  import { ApiError, OpenAPI } from "@spec0/sdk-public-platform";
6
+ import { httpTimeoutMs, httpTraceEnabled, traceRequest, traceResponse } from "./http-trace.js";
7
+ /**
8
+ * Shared `got` instance with `--verbose` tracing hooks. All raw HTTP goes
9
+ * through this so a single `setHttpTrace(true)` makes every request visible on
10
+ * stderr (the SDK is traced separately via the global `fetch` wrapper).
11
+ */
12
+ const http = got.extend({
13
+ // Fail fast on a hung connection rather than blocking the CLI forever.
14
+ // got's TimeoutError carries code ETIMEDOUT, which classifies to NETWORK_ERROR.
15
+ timeout: { request: httpTimeoutMs() },
16
+ hooks: {
17
+ beforeRequest: [
18
+ (options) => {
19
+ if (options.url)
20
+ traceRequest(options.method, options.url.toString());
21
+ },
22
+ ],
23
+ afterResponse: [
24
+ (response) => {
25
+ traceResponse(response.statusCode, response.requestUrl.toString());
26
+ return response;
27
+ },
28
+ ],
29
+ beforeError: [
30
+ (error) => {
31
+ if (httpTraceEnabled()) {
32
+ const url = (error.response?.requestUrl ?? error.options?.url)?.toString() ?? "";
33
+ traceResponse(error.response?.statusCode ?? 0, url);
34
+ }
35
+ return error;
36
+ },
37
+ ],
38
+ },
39
+ });
6
40
  function orgHeaders(orgId, extra) {
7
41
  return { "X-Org-Id": orgId, ...extra };
8
42
  }
@@ -15,7 +49,7 @@ export function createApiClient(org) {
15
49
  };
16
50
  return {
17
51
  async get(path, options) {
18
- const res = await got.get(`${baseUrl}${path}`, {
52
+ const res = await http.get(`${baseUrl}${path}`, {
19
53
  ...options,
20
54
  headers: { ...headers, ...options?.headers },
21
55
  responseType: "json",
@@ -23,7 +57,7 @@ export function createApiClient(org) {
23
57
  return res.body;
24
58
  },
25
59
  async post(path, body, options) {
26
- const res = await got.post(`${baseUrl}${path}`, {
60
+ const res = await http.post(`${baseUrl}${path}`, {
27
61
  ...options,
28
62
  json: body,
29
63
  headers: { ...headers, ...options?.headers },
@@ -32,7 +66,7 @@ export function createApiClient(org) {
32
66
  return res.body;
33
67
  },
34
68
  async put(path, body, options) {
35
- const res = await got.put(`${baseUrl}${path}`, {
69
+ const res = await http.put(`${baseUrl}${path}`, {
36
70
  ...options,
37
71
  json: body,
38
72
  headers: { ...headers, ...options?.headers },
@@ -41,7 +75,7 @@ export function createApiClient(org) {
41
75
  return res.body;
42
76
  },
43
77
  async delete(path, options) {
44
- const res = await got.delete(`${baseUrl}${path}`, {
78
+ const res = await http.delete(`${baseUrl}${path}`, {
45
79
  ...options,
46
80
  headers: { ...headers, ...options?.headers },
47
81
  responseType: "json",
@@ -63,14 +97,14 @@ export function createOrgApiClient(ctx) {
63
97
  return {
64
98
  baseUrl,
65
99
  async getJson(path, headers) {
66
- const res = await got.get(`${baseUrl}${path}`, {
100
+ const res = await http.get(`${baseUrl}${path}`, {
67
101
  headers: { ...baseHeaders, Accept: "application/json", ...headers },
68
102
  responseType: "json",
69
103
  });
70
104
  return res.body;
71
105
  },
72
106
  async getText(path, headers) {
73
- const res = await got.get(`${baseUrl}${path}`, {
107
+ const res = await http.get(`${baseUrl}${path}`, {
74
108
  headers: {
75
109
  ...baseHeaders,
76
110
  Accept: "application/yaml, application/json, text/plain, */*",
@@ -80,7 +114,7 @@ export function createOrgApiClient(ctx) {
80
114
  return res.body;
81
115
  },
82
116
  async postJson(path, body, headers) {
83
- const res = await got.post(`${baseUrl}${path}`, {
117
+ const res = await http.post(`${baseUrl}${path}`, {
84
118
  json: body,
85
119
  headers: {
86
120
  ...baseHeaders,
@@ -93,7 +127,7 @@ export function createOrgApiClient(ctx) {
93
127
  return res.body;
94
128
  },
95
129
  async putJson(path, body, headers) {
96
- const res = await got.put(`${baseUrl}${path}`, {
130
+ const res = await http.put(`${baseUrl}${path}`, {
97
131
  json: body,
98
132
  headers: {
99
133
  ...baseHeaders,
@@ -111,7 +145,7 @@ export function createOrgApiClient(ctx) {
111
145
  const blob = new Blob([content], { type: "application/octet-stream" });
112
146
  form.append(name, blob, filename);
113
147
  }
114
- const res = await got.post(`${baseUrl}${path}`, {
148
+ const res = await http.post(`${baseUrl}${path}`, {
115
149
  body: form,
116
150
  headers: { ...baseHeaders, Accept: "application/json", ...headers },
117
151
  responseType: "json",
@@ -119,7 +153,7 @@ export function createOrgApiClient(ctx) {
119
153
  return res.body;
120
154
  },
121
155
  async deleteJson(path, headers) {
122
- const res = await got.delete(`${baseUrl}${path}`, {
156
+ const res = await http.delete(`${baseUrl}${path}`, {
123
157
  headers: { ...baseHeaders, Accept: "application/json", ...headers },
124
158
  responseType: "json",
125
159
  });
@@ -158,6 +192,20 @@ export function errorStatusCode(err) {
158
192
  return err.status;
159
193
  return err?.response?.statusCode;
160
194
  }
195
+ /**
196
+ * Extract the request method + final URL from an error, for diagnostics.
197
+ * Handles both SDK `ApiError` (`err.url` / `err.request.method`) and `got`
198
+ * errors (`err.response.requestUrl` / `err.options.method`). Returns
199
+ * `undefined` fields when nothing is available.
200
+ */
201
+ export function errorRequestInfo(err) {
202
+ if (err instanceof ApiError) {
203
+ return { method: err.request?.method, url: err.url };
204
+ }
205
+ const e = err;
206
+ const rawUrl = e?.response?.requestUrl ?? e?.request?.requestUrl;
207
+ return { method: e?.options?.method, url: rawUrl ? String(rawUrl) : undefined };
208
+ }
161
209
  export function is401(err) {
162
210
  return errorStatusCode(err) === 401;
163
211
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,17 @@ export declare function getConfig(): Spec0Config;
18
18
  export declare function getDefaultOrgId(): string | null;
19
19
  export declare function getOrgConfig(orgId: string): OrgConfig | undefined;
20
20
  export declare function setOrgConfig(orgId: string, config: OrgConfig): void;
21
+ /**
22
+ * Replace the entire org set with a single org and make it active, atomically.
23
+ *
24
+ * The CLI is single-org: `auth login` should always point every subsequent
25
+ * command at the org you just authenticated, with no stale entries left behind
26
+ * to silently win as the default. (A previous default org pointing at a dead
27
+ * `localhost` API base is exactly how a fresh login could appear to succeed yet
28
+ * every command still failed.) This clears any previously stored orgs, writes
29
+ * the one passed in, and sets it as the default in one step.
30
+ */
31
+ export declare function replaceSoleOrg(orgId: string, config: OrgConfig): void;
21
32
  export declare function setDefaultOrg(orgId: string): void;
22
33
  export declare function clearConfig(): void;
23
34
  export declare function getConfigPath(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACjC;AAqBD,wBAAgB,SAAS,IAAI,WAAW,CAOvC;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEjE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAEnE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACjC;AAqBD,wBAAgB,SAAS,IAAI,WAAW,CAOvC;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEjE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAEnE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAGrE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
@@ -37,6 +37,20 @@ export function getOrgConfig(orgId) {
37
37
  export function setOrgConfig(orgId, config) {
38
38
  store.set(`orgs.${orgId}`, config);
39
39
  }
40
+ /**
41
+ * Replace the entire org set with a single org and make it active, atomically.
42
+ *
43
+ * The CLI is single-org: `auth login` should always point every subsequent
44
+ * command at the org you just authenticated, with no stale entries left behind
45
+ * to silently win as the default. (A previous default org pointing at a dead
46
+ * `localhost` API base is exactly how a fresh login could appear to succeed yet
47
+ * every command still failed.) This clears any previously stored orgs, writes
48
+ * the one passed in, and sets it as the default in one step.
49
+ */
50
+ export function replaceSoleOrg(orgId, config) {
51
+ store.set("orgs", { [orgId]: config });
52
+ store.set("defaultOrg", orgId);
53
+ }
40
54
  export function setDefaultOrg(orgId) {
41
55
  store.set("defaultOrg", orgId);
42
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAgBxB,8EAA8E;AAC9E,6EAA6E;AAC7E,MAAM,OAAO,GAAG;IACd,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;IACvC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;IACvD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;IAC7C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;CAC7B,CAAC;AAEX,MAAM,KAAK,GAAG,IAAI,IAAI,CAAc;IAClC,WAAW,EAAE,OAAO;IACpB,QAAQ,EAAE;QACR,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,EAAE;KACT;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS;IACvB,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QACnC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC;QACvC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,MAAiB;IAC3D,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAgBxB,8EAA8E;AAC9E,6EAA6E;AAC7E,MAAM,OAAO,GAAG;IACd,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;IACvC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;IACvD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;IAC7C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;CAC7B,CAAC;AAEX,MAAM,KAAK,GAAG,IAAI,IAAI,CAAc;IAClC,WAAW,EAAE,OAAO;IACpB,QAAQ,EAAE;QACR,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,EAAE;KACT;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS;IACvB,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QACnC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC;QACvC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,MAAiB;IAC3D,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,MAAiB;IAC7D,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * One place to turn a failed platform call into a diagnosable error.
3
+ *
4
+ * Before this, command catch-blocks printed a bare `(err as Error).message` —
5
+ * e.g. `api list failed: Not Found` — with no HTTP status, no URL, and no hint
6
+ * about which org/base was targeted. A developer literally could not tell what
7
+ * went wrong. `failApi` classifies the error into a stable exit code and surfaces:
8
+ *
9
+ * - the server's own message (from the response body when present),
10
+ * - the HTTP status (or a network label when the request never completed),
11
+ * - the method + URL that failed,
12
+ * - the active org + API base, and
13
+ * - a code-specific hint.
14
+ *
15
+ * In `--output json|yaml` mode the request/org context rides in `details` so the
16
+ * document stays a single clean object; in text mode it is appended to the
17
+ * message so a human sees it inline.
18
+ */
19
+ import { type ExitCodeValue } from "./exit-codes.js";
20
+ import { type OutputContext } from "./output/index.js";
21
+ export interface ApiErrorContext {
22
+ /** Short action label, e.g. "api list", "mock create". */
23
+ action: string;
24
+ /** Active org name or id, for diagnostics. */
25
+ org?: string;
26
+ /** API base the call targeted, for diagnostics. */
27
+ apiUrl?: string;
28
+ }
29
+ export interface ApiErrorReport {
30
+ code: ExitCodeValue;
31
+ /** Message for `fail()` — multi-line (with request/org) only in text mode. */
32
+ message: string;
33
+ hint?: string;
34
+ details: Record<string, unknown>;
35
+ }
36
+ /**
37
+ * Pure classification of a failed platform call into an exit code, message,
38
+ * hint and structured details. Separated from `failApi` so it can be unit
39
+ * tested without `process.exit`.
40
+ */
41
+ export declare function buildApiError(err: unknown, info: ApiErrorContext, format?: OutputContext["format"]): ApiErrorReport;
42
+ /**
43
+ * Report a failed platform call and exit. Never returns.
44
+ */
45
+ export declare function failApi(ctx: OutputContext, err: unknown, info: ApiErrorContext): never;
46
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAmC,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAqCD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,eAAe,EACrB,MAAM,GAAE,aAAa,CAAC,QAAQ,CAAU,GACvC,cAAc,CA+BhB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,GAAG,KAAK,CAGtF"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * One place to turn a failed platform call into a diagnosable error.
3
+ *
4
+ * Before this, command catch-blocks printed a bare `(err as Error).message` —
5
+ * e.g. `api list failed: Not Found` — with no HTTP status, no URL, and no hint
6
+ * about which org/base was targeted. A developer literally could not tell what
7
+ * went wrong. `failApi` classifies the error into a stable exit code and surfaces:
8
+ *
9
+ * - the server's own message (from the response body when present),
10
+ * - the HTTP status (or a network label when the request never completed),
11
+ * - the method + URL that failed,
12
+ * - the active org + API base, and
13
+ * - a code-specific hint.
14
+ *
15
+ * In `--output json|yaml` mode the request/org context rides in `details` so the
16
+ * document stays a single clean object; in text mode it is appended to the
17
+ * message so a human sees it inline.
18
+ */
19
+ import { errorStatusCode, errorRequestInfo, extractErrorMessage } from "./api-client.js";
20
+ import { ExitCode, exitCodeForHttpStatus } from "./exit-codes.js";
21
+ import { fail } from "./output/index.js";
22
+ const HINTS = {
23
+ [ExitCode.AUTH_MISSING]: "Run 'spec0 auth login', or refresh SPEC0_TOKEN.",
24
+ [ExitCode.PERMISSION_DENIED]: "Your account lacks permission for this resource.",
25
+ [ExitCode.NOT_FOUND]: "Check the name/id, or confirm SPEC0_API_URL points at the right backend.",
26
+ [ExitCode.CONFLICT]: "A resource with that name/version already exists.",
27
+ [ExitCode.VALIDATION]: "The request was rejected as invalid — see the message above.",
28
+ [ExitCode.RATE_LIMITED]: "Rate limit hit — wait a moment and retry.",
29
+ [ExitCode.SERVER_ERROR]: "Server error — retry shortly; if it persists, contact support.",
30
+ [ExitCode.NETWORK_ERROR]: "Could not reach the platform. Check connectivity, then SPEC0_API_URL (run 'spec0 doctor').",
31
+ };
32
+ /**
33
+ * Best-effort label for a request that never produced an HTTP response.
34
+ * `got` puts the code on the error itself; the SDK uses `fetch`, which wraps the
35
+ * real cause (so the visible message is an unhelpful "fetch failed" and the code
36
+ * lives on `err.cause`). Check both.
37
+ */
38
+ function networkLabel(err) {
39
+ // A `fetch` timeout/cancellation is a DOMException with no `code` — it
40
+ // identifies itself by `name` ("TimeoutError" / "AbortError") instead.
41
+ const name = err?.name ?? err?.cause?.name;
42
+ if (name === "TimeoutError")
43
+ return "timed out";
44
+ if (name === "AbortError")
45
+ return "request aborted";
46
+ const code = err?.code ?? err?.cause?.code;
47
+ if (!code)
48
+ return undefined;
49
+ if (code === "ECONNREFUSED")
50
+ return "connection refused";
51
+ if (code === "ENOTFOUND" || code === "EAI_AGAIN")
52
+ return "host not found";
53
+ if (code === "ETIMEDOUT" || code === "ETIME")
54
+ return "timed out";
55
+ return code;
56
+ }
57
+ /**
58
+ * Pure classification of a failed platform call into an exit code, message,
59
+ * hint and structured details. Separated from `failApi` so it can be unit
60
+ * tested without `process.exit`.
61
+ */
62
+ export function buildApiError(err, info, format = "text") {
63
+ const status = errorStatusCode(err);
64
+ const code = exitCodeForHttpStatus(status);
65
+ const netLabel = status === undefined ? networkLabel(err) : undefined;
66
+ const serverMsg = extractErrorMessage(err);
67
+ const base = serverMsg ?? netLabel ?? err?.message ?? String(err);
68
+ const { method, url } = errorRequestInfo(err);
69
+ const statusPart = status !== undefined ? `HTTP ${status}` : undefined;
70
+ let message = `${info.action} failed: ${base}` + (statusPart ? ` (${statusPart})` : "");
71
+ const requestLine = url ? `${method ?? "GET"} ${url}` : undefined;
72
+ if (format === "text") {
73
+ const extra = [
74
+ requestLine ? ` ${requestLine}` : undefined,
75
+ info.org ? ` org: ${info.org}` : undefined,
76
+ ].filter(Boolean);
77
+ if (extra.length)
78
+ message += "\n" + extra.join("\n");
79
+ }
80
+ return {
81
+ code,
82
+ message,
83
+ hint: HINTS[code],
84
+ details: {
85
+ ...(status !== undefined ? { status } : {}),
86
+ ...(requestLine ? { request: requestLine } : {}),
87
+ ...(info.org ? { org: info.org } : {}),
88
+ ...(info.apiUrl ? { apiUrl: info.apiUrl } : {}),
89
+ },
90
+ };
91
+ }
92
+ /**
93
+ * Report a failed platform call and exit. Never returns.
94
+ */
95
+ export function failApi(ctx, err, info) {
96
+ const report = buildApiError(err, info, ctx.format);
97
+ fail(ctx, report.code, report.message, { hint: report.hint, details: report.details });
98
+ }
99
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * HTTP instrumentation: a default request timeout (always on) plus opt-in
3
+ * `--verbose` request tracing.
4
+ *
5
+ * The CLI talks to the platform over two transports: raw `got` (see
6
+ * `api-client.ts`) and the generated `@spec0/sdk-public-platform`, which issues
7
+ * calls through the global `fetch`. Neither had a timeout, so a silently
8
+ * dropped connection could hang the CLI forever, and neither printed anything,
9
+ * so a failing command could not show *which URL* it hit.
10
+ *
11
+ * `installHttpInstrumentation()` wraps the global `fetch` once at startup to
12
+ * - apply a default timeout (combined with any signal the SDK already passes,
13
+ * so cancellation still works), and
14
+ * - trace each request/response when `--verbose` is on.
15
+ * `got` gets the same timeout via its own options and calls `traceRequest` /
16
+ * `traceResponse` from its hooks.
17
+ *
18
+ * All trace output goes to **stderr** so stdout stays a clean single document
19
+ * for `--output json|yaml` consumers.
20
+ */
21
+ /**
22
+ * Default per-request timeout in milliseconds. Override with
23
+ * `SPEC0_HTTP_TIMEOUT_MS`; falls back to 30s for any unset/invalid value.
24
+ */
25
+ export declare function httpTimeoutMs(): number;
26
+ /** Enable/disable `--verbose` request tracing. */
27
+ export declare function setHttpTrace(on: boolean): void;
28
+ export declare function httpTraceEnabled(): boolean;
29
+ export declare function traceRequest(method: string, url: string): void;
30
+ export declare function traceResponse(status: number, url: string): void;
31
+ export declare function traceError(method: string, url: string, message: string): void;
32
+ /**
33
+ * Wrap the global `fetch` once (covers all SDK calls) to apply the default
34
+ * timeout and trace when verbose. Idempotent; safe to call at startup.
35
+ */
36
+ export declare function installHttpInstrumentation(): void;
37
+ //# sourceMappingURL=http-trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-trace.d.ts","sourceRoot":"","sources":["../../src/lib/http-trace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAMD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAE9D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAE/D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7E;AAgBD;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CA2BjD"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * HTTP instrumentation: a default request timeout (always on) plus opt-in
3
+ * `--verbose` request tracing.
4
+ *
5
+ * The CLI talks to the platform over two transports: raw `got` (see
6
+ * `api-client.ts`) and the generated `@spec0/sdk-public-platform`, which issues
7
+ * calls through the global `fetch`. Neither had a timeout, so a silently
8
+ * dropped connection could hang the CLI forever, and neither printed anything,
9
+ * so a failing command could not show *which URL* it hit.
10
+ *
11
+ * `installHttpInstrumentation()` wraps the global `fetch` once at startup to
12
+ * - apply a default timeout (combined with any signal the SDK already passes,
13
+ * so cancellation still works), and
14
+ * - trace each request/response when `--verbose` is on.
15
+ * `got` gets the same timeout via its own options and calls `traceRequest` /
16
+ * `traceResponse` from its hooks.
17
+ *
18
+ * All trace output goes to **stderr** so stdout stays a clean single document
19
+ * for `--output json|yaml` consumers.
20
+ */
21
+ import chalk from "chalk";
22
+ const DEFAULT_TIMEOUT_MS = 30_000;
23
+ let enabled = false;
24
+ let installed = false;
25
+ /**
26
+ * Default per-request timeout in milliseconds. Override with
27
+ * `SPEC0_HTTP_TIMEOUT_MS`; falls back to 30s for any unset/invalid value.
28
+ */
29
+ export function httpTimeoutMs() {
30
+ const raw = process.env.SPEC0_HTTP_TIMEOUT_MS;
31
+ const n = raw ? Number(raw) : NaN;
32
+ return Number.isFinite(n) && n > 0 ? n : DEFAULT_TIMEOUT_MS;
33
+ }
34
+ /** Enable/disable `--verbose` request tracing. */
35
+ export function setHttpTrace(on) {
36
+ enabled = on;
37
+ }
38
+ export function httpTraceEnabled() {
39
+ return enabled;
40
+ }
41
+ function line(text) {
42
+ process.stderr.write(chalk.gray(text.endsWith("\n") ? text : `${text}\n`));
43
+ }
44
+ export function traceRequest(method, url) {
45
+ if (enabled)
46
+ line(`→ ${method} ${url}`);
47
+ }
48
+ export function traceResponse(status, url) {
49
+ if (enabled)
50
+ line(`← ${status} ${url}`);
51
+ }
52
+ export function traceError(method, url, message) {
53
+ if (enabled)
54
+ line(`✗ ${method} ${url} — ${message}`);
55
+ }
56
+ /**
57
+ * Combine the SDK's own abort signal (if any) with a timeout signal so a hung
58
+ * request fails fast while explicit cancellation still works.
59
+ */
60
+ function withTimeout(init) {
61
+ const timeout = AbortSignal.timeout(httpTimeoutMs());
62
+ const existing = init?.signal ?? undefined;
63
+ const signal = existing && typeof AbortSignal.any === "function"
64
+ ? AbortSignal.any([existing, timeout])
65
+ : (existing ?? timeout);
66
+ return { ...init, signal };
67
+ }
68
+ /**
69
+ * Wrap the global `fetch` once (covers all SDK calls) to apply the default
70
+ * timeout and trace when verbose. Idempotent; safe to call at startup.
71
+ */
72
+ export function installHttpInstrumentation() {
73
+ if (installed)
74
+ return;
75
+ const original = globalThis.fetch;
76
+ if (typeof original !== "function")
77
+ return;
78
+ globalThis.fetch = (async (input, init) => {
79
+ const method = init?.method ??
80
+ (typeof input === "object" && input !== null && "method" in input
81
+ ? input.method
82
+ : "GET");
83
+ const url = typeof input === "string"
84
+ ? input
85
+ : input instanceof URL
86
+ ? input.toString()
87
+ : input.url;
88
+ traceRequest(method, url);
89
+ try {
90
+ const res = await original(input, withTimeout(init));
91
+ traceResponse(res.status, url);
92
+ return res;
93
+ }
94
+ catch (err) {
95
+ traceError(method, url, err.message);
96
+ throw err;
97
+ }
98
+ });
99
+ installed = true;
100
+ }
101
+ //# sourceMappingURL=http-trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-trace.js","sourceRoot":"","sources":["../../src/lib/http-trace.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,10 @@ export declare function formatPublishText(output: {
27
27
  versionUnchanged?: boolean;
28
28
  versionUnchangedHint?: string;
29
29
  created?: boolean;
30
+ governanceWarnings?: Array<{
31
+ section?: string;
32
+ message?: string;
33
+ }>;
30
34
  }): string;
31
35
  export declare function formatGitHubAnnotation(file: string, line: number, level: "error" | "warning", message: string): string;
32
36
  //# sourceMappingURL=output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtD,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE,GAAG,MAAM,CAsBT;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,MAAM,CAgCT;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,GACd,MAAM,CAER"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtD,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE,GAAG,MAAM,CAsBT;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpE,GAAG,MAAM,CA2CT;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,GACd,MAAM,CAER"}
@@ -56,6 +56,14 @@ export function formatPublishText(output) {
56
56
  chalk.yellow(output.versionUnchangedHint ??
57
57
  `Spec changed but version is still ${output.version}. Pass --semver to auto-bump.`));
58
58
  }
59
+ const warnings = output.governanceWarnings ?? [];
60
+ if (warnings.length > 0) {
61
+ lines.push("");
62
+ lines.push(chalk.yellow(`⚠ ${warnings.length} governance warning${warnings.length === 1 ? "" : "s"}:`));
63
+ for (const w of warnings) {
64
+ lines.push(chalk.yellow(` [${w.section ?? "policy"}] ${w.message ?? ""}`));
65
+ }
66
+ }
59
67
  return lines.join("\n");
60
68
  }
61
69
  export function formatGitHubAnnotation(file, line, level, message) {
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spec0/cli",
3
- "version": "0.5.0",
3
+ "version": "0.6.1",
4
4
  "description": "Spec0 CLI — publish API specs, create mock servers, lint, and interact with the Spec0 platform",
5
5
  "main": "dist/index.js",
6
6
  "bin": {