@typeship-ax/cli 0.8.0 → 0.10.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 (106) hide show
  1. package/AGENTS.md +31 -0
  2. package/README.md +26 -9
  3. package/api.json +3509 -800
  4. package/api.md +444 -494
  5. package/dist/api-identity.d.ts +40 -0
  6. package/dist/api-identity.d.ts.map +1 -0
  7. package/dist/api-identity.js +128 -0
  8. package/dist/auth-profiles.d.ts +30 -0
  9. package/dist/auth-profiles.d.ts.map +1 -0
  10. package/dist/auth-profiles.js +138 -0
  11. package/dist/cli.js +522 -355
  12. package/dist/console-login-check.d.ts +21 -0
  13. package/dist/console-login-check.d.ts.map +1 -0
  14. package/dist/console-login-check.js +107 -0
  15. package/dist/console-login-contract.d.ts +45 -0
  16. package/dist/console-login-contract.d.ts.map +1 -0
  17. package/dist/console-login-contract.js +40 -0
  18. package/dist/core/http.d.ts +17 -2
  19. package/dist/core/http.d.ts.map +1 -1
  20. package/dist/core/http.js +78 -17
  21. package/dist/credential-storage.d.ts +24 -0
  22. package/dist/credential-storage.d.ts.map +1 -0
  23. package/dist/credential-storage.js +207 -0
  24. package/dist/docs.d.ts +25 -0
  25. package/dist/docs.d.ts.map +1 -1
  26. package/dist/docs.js +144 -0
  27. package/dist/errors.d.ts +18 -10
  28. package/dist/errors.d.ts.map +1 -1
  29. package/dist/errors.js +24 -14
  30. package/dist/index.d.ts +10 -3
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +20 -4
  33. package/dist/named-credentials.d.ts +21 -0
  34. package/dist/named-credentials.d.ts.map +1 -0
  35. package/dist/named-credentials.js +86 -0
  36. package/dist/oauth-login.d.ts +39 -0
  37. package/dist/oauth-login.d.ts.map +1 -0
  38. package/dist/oauth-login.js +171 -0
  39. package/dist/oauth-request.d.ts +21 -0
  40. package/dist/oauth-request.d.ts.map +1 -0
  41. package/dist/oauth-request.js +119 -0
  42. package/dist/oauth-session.d.ts +106 -0
  43. package/dist/oauth-session.d.ts.map +1 -0
  44. package/dist/oauth-session.js +244 -0
  45. package/dist/ops.d.ts +14 -1
  46. package/dist/ops.d.ts.map +1 -1
  47. package/dist/ops.js +34 -30
  48. package/dist/polling-login.d.ts +57 -0
  49. package/dist/polling-login.d.ts.map +1 -0
  50. package/dist/polling-login.js +204 -0
  51. package/dist/resources/account.d.ts +2 -2
  52. package/dist/resources/account.d.ts.map +1 -1
  53. package/dist/resources/account.js +1 -0
  54. package/dist/resources/api-keys.d.ts +3 -3
  55. package/dist/resources/api-keys.d.ts.map +1 -1
  56. package/dist/resources/api-keys.js +2 -0
  57. package/dist/resources/definition-revisions.d.ts +5 -5
  58. package/dist/resources/definition-revisions.d.ts.map +1 -1
  59. package/dist/resources/definition-revisions.js +4 -0
  60. package/dist/resources/definitions.d.ts +15 -4
  61. package/dist/resources/definitions.d.ts.map +1 -1
  62. package/dist/resources/definitions.js +11 -2
  63. package/dist/resources/generate.d.ts +14 -3
  64. package/dist/resources/generate.d.ts.map +1 -1
  65. package/dist/resources/generate.js +10 -2
  66. package/dist/resources/generations.d.ts +3 -3
  67. package/dist/resources/generations.d.ts.map +1 -1
  68. package/dist/resources/generations.js +2 -0
  69. package/dist/resources/projects.d.ts +56 -20
  70. package/dist/resources/projects.d.ts.map +1 -1
  71. package/dist/resources/projects.js +40 -4
  72. package/dist/resources/targets.d.ts +84 -10
  73. package/dist/resources/targets.d.ts.map +1 -1
  74. package/dist/resources/targets.js +127 -2
  75. package/dist/schemas.d.ts.map +1 -1
  76. package/dist/schemas.js +55 -26
  77. package/dist/types.d.ts +602 -123
  78. package/dist/types.d.ts.map +1 -1
  79. package/dist/types.js +24 -0
  80. package/package.json +2 -1
  81. package/src/api-identity.ts +98 -0
  82. package/src/auth-profiles.ts +114 -0
  83. package/src/cli.ts +444 -332
  84. package/src/console-login-check.ts +88 -0
  85. package/src/console-login-contract.ts +65 -0
  86. package/src/core/http.ts +88 -19
  87. package/src/credential-storage.ts +183 -0
  88. package/src/docs.ts +138 -0
  89. package/src/errors.ts +26 -15
  90. package/src/index.ts +29 -4
  91. package/src/named-credentials.ts +74 -0
  92. package/src/oauth-login.ts +184 -0
  93. package/src/oauth-request.ts +90 -0
  94. package/src/oauth-session.ts +258 -0
  95. package/src/ops.ts +48 -31
  96. package/src/polling-login.ts +165 -0
  97. package/src/resources/account.ts +3 -0
  98. package/src/resources/api-keys.ts +5 -0
  99. package/src/resources/definition-revisions.ts +9 -0
  100. package/src/resources/definitions.ts +25 -0
  101. package/src/resources/generate.ts +23 -0
  102. package/src/resources/generations.ts +5 -0
  103. package/src/resources/projects.ts +95 -7
  104. package/src/resources/targets.ts +241 -0
  105. package/src/schemas.ts +55 -26
  106. package/src/types.ts +640 -123
@@ -4,9 +4,11 @@
4
4
  import { HttpCore, type ApiResult, type RequestOptions } from "../core/http.js";
5
5
  import { paginate, PagePromise } from "../core/pagination.js";
6
6
  import {
7
+ ResponseParseError,
7
8
  TransportError,
8
9
  UnexpectedApiError,
9
10
  ValidationError,
11
+ BadGatewayError,
10
12
  BadRequestError,
11
13
  ConflictError,
12
14
  ForbiddenError,
@@ -20,6 +22,10 @@ import type {
20
22
  DeletedTargetRead,
21
23
  ProjectId,
22
24
  Target,
25
+ TargetAdoption,
26
+ TargetDraftResponse,
27
+ TargetDraftResponseRead,
28
+ TargetDraftUpdate,
23
29
  TargetFields,
24
30
  TargetId,
25
31
  TargetList,
@@ -53,6 +59,7 @@ export class TargetsResource {
53
59
  return paginate<TargetRead, TargetsListError>(this._core, {
54
60
  method: "GET",
55
61
  path: `/projects/${encodeURIComponent(String(projectId))}/targets`,
62
+ security: [{"apiKey":[]}],
56
63
  query: {
57
64
  limit: params?.limit,
58
65
  cursor: params?.cursor,
@@ -82,16 +89,23 @@ export class TargetsResource {
82
89
  *
83
90
  * Several Targets may use the same generator with distinct configuration, Deliveries, and release
84
91
  * streams.
92
+ *
93
+ * A `Idempotency-Key` UUID is generated per call (stable across retries) unless you pass one.
85
94
  * `POST /projects/{project_id}/targets`
86
95
  */
87
96
  async create(
88
97
  projectId: ProjectId,
89
98
  body: TargetFields,
99
+ params?: TargetsCreateParams,
90
100
  options?: RequestOptions,
91
101
  ): Promise<ApiResult<TargetResponseRead, TargetsCreateError>> {
92
102
  return this._core.request<TargetResponseRead, TargetsCreateError>({
93
103
  method: "POST",
94
104
  path: `/projects/${encodeURIComponent(String(projectId))}/targets`,
105
+ security: [{"apiKey":[]}],
106
+ headers: {
107
+ "Idempotency-Key": params?.idempotencyKey === undefined ? undefined : String(params?.idempotencyKey),
108
+ },
95
109
  body,
96
110
  errors: {
97
111
  "400": BadRequestError,
@@ -102,6 +116,7 @@ export class TargetsResource {
102
116
  "422": UnprocessableEntityError,
103
117
  "429": RateLimitedError,
104
118
  },
119
+ idempotencyKey: "Idempotency-Key",
105
120
  schemaKey: "targets.create",
106
121
  options,
107
122
  });
@@ -118,6 +133,7 @@ export class TargetsResource {
118
133
  return this._core.request<TargetResponseRead, TargetsRetrieveError>({
119
134
  method: "GET",
120
135
  path: `/targets/${encodeURIComponent(String(targetId))}`,
136
+ security: [{"apiKey":[]}],
121
137
  errors: {
122
138
  "401": UnauthorizedError,
123
139
  "403": ForbiddenError,
@@ -144,6 +160,7 @@ export class TargetsResource {
144
160
  return this._core.request<DeletedTargetRead, TargetsDeleteError>({
145
161
  method: "DELETE",
146
162
  path: `/targets/${encodeURIComponent(String(targetId))}`,
163
+ security: [{"apiKey":[]}],
147
164
  errors: {
148
165
  "401": UnauthorizedError,
149
166
  "403": ForbiddenError,
@@ -169,6 +186,7 @@ export class TargetsResource {
169
186
  return this._core.request<TargetResponseRead, TargetsUpdateError>({
170
187
  method: "PATCH",
171
188
  path: `/targets/${encodeURIComponent(String(targetId))}`,
189
+ security: [{"apiKey":[]}],
172
190
  body,
173
191
  errors: {
174
192
  "400": BadRequestError,
@@ -198,6 +216,7 @@ export class TargetsResource {
198
216
  return paginate<TargetReleaseRead, TargetsListReleasesError>(this._core, {
199
217
  method: "GET",
200
218
  path: `/targets/${encodeURIComponent(String(targetId))}/releases`,
219
+ security: [{"apiKey":[]}],
201
220
  query: {
202
221
  limit: params?.limit,
203
222
  cursor: params?.cursor,
@@ -222,6 +241,103 @@ export class TargetsResource {
222
241
  });
223
242
  }
224
243
 
244
+ /**
245
+ * Retrieve a Target's rolling Draft release
246
+ *
247
+ * Returns Current, the cumulative Draft version and readiness, its exact head, and the optimistic
248
+ * release revision.
249
+ * `GET /targets/{target_id}/draft`
250
+ */
251
+ async retrieveDraft(
252
+ targetId: TargetId,
253
+ options?: RequestOptions,
254
+ ): Promise<ApiResult<TargetDraftResponseRead, TargetsRetrieveDraftError>> {
255
+ return this._core.request<TargetDraftResponseRead, TargetsRetrieveDraftError>({
256
+ method: "GET",
257
+ path: `/targets/${encodeURIComponent(String(targetId))}/draft`,
258
+ security: [{"apiKey":[]}],
259
+ errors: {
260
+ "401": UnauthorizedError,
261
+ "403": ForbiddenError,
262
+ "404": NotFoundError,
263
+ "429": RateLimitedError,
264
+ },
265
+ idempotent: true,
266
+ schemaKey: "targets.retrieveDraft",
267
+ options,
268
+ });
269
+ }
270
+
271
+ /**
272
+ * Select an exact Draft version or return to automatic versioning
273
+ *
274
+ * Validates the selection against the cumulative required bump and regenerates the same rolling
275
+ * Draft pull request.
276
+ * `PATCH /targets/{target_id}/draft`
277
+ */
278
+ async updateDraft(
279
+ targetId: TargetId,
280
+ body: TargetDraftUpdate,
281
+ options?: RequestOptions,
282
+ ): Promise<ApiResult<TargetDraftResponseRead, TargetsUpdateDraftError>> {
283
+ return this._core.request<TargetDraftResponseRead, TargetsUpdateDraftError>({
284
+ method: "PATCH",
285
+ path: `/targets/${encodeURIComponent(String(targetId))}/draft`,
286
+ security: [{"apiKey":[]}],
287
+ body,
288
+ errors: {
289
+ "400": BadRequestError,
290
+ "401": UnauthorizedError,
291
+ "403": ForbiddenError,
292
+ "404": NotFoundError,
293
+ "409": ConflictError,
294
+ "422": UnprocessableEntityError,
295
+ "429": RateLimitedError,
296
+ },
297
+ schemaKey: "targets.updateDraft",
298
+ options,
299
+ });
300
+ }
301
+
302
+ /**
303
+ * Adopt a verified existing package as Current
304
+ *
305
+ * Verifies the repository tag, package metadata, and registry artifact; records an Imported
306
+ * Current release; then opens the first Typeship Draft at the next major version because no
307
+ * trusted generated baseline exists yet.
308
+ *
309
+ * A `Idempotency-Key` UUID is generated per call (stable across retries) unless you pass one.
310
+ * `POST /targets/{target_id}/adopt`
311
+ */
312
+ async adoptRelease(
313
+ targetId: TargetId,
314
+ body: TargetAdoption,
315
+ params?: TargetsAdoptReleaseParams,
316
+ options?: RequestOptions,
317
+ ): Promise<ApiResult<TargetReleaseResponseRead, TargetsAdoptReleaseError>> {
318
+ return this._core.request<TargetReleaseResponseRead, TargetsAdoptReleaseError>({
319
+ method: "POST",
320
+ path: `/targets/${encodeURIComponent(String(targetId))}/adopt`,
321
+ security: [{"apiKey":[]}],
322
+ headers: {
323
+ "Idempotency-Key": params?.idempotencyKey === undefined ? undefined : String(params?.idempotencyKey),
324
+ },
325
+ body,
326
+ errors: {
327
+ "400": BadRequestError,
328
+ "401": UnauthorizedError,
329
+ "403": ForbiddenError,
330
+ "404": NotFoundError,
331
+ "409": ConflictError,
332
+ "422": UnprocessableEntityError,
333
+ "429": RateLimitedError,
334
+ },
335
+ idempotencyKey: "Idempotency-Key",
336
+ schemaKey: "targets.adoptRelease",
337
+ options,
338
+ });
339
+ }
340
+
225
341
  /**
226
342
  * Retrieve an immutable Target release
227
343
  * `GET /target_releases/{target_release_id}`
@@ -233,6 +349,7 @@ export class TargetsResource {
233
349
  return this._core.request<TargetReleaseResponseRead, TargetsRetrieveReleaseError>({
234
350
  method: "GET",
235
351
  path: `/target_releases/${encodeURIComponent(String(targetReleaseId))}`,
352
+ security: [{"apiKey":[]}],
236
353
  errors: {
237
354
  "401": UnauthorizedError,
238
355
  "403": ForbiddenError,
@@ -244,6 +361,41 @@ export class TargetsResource {
244
361
  options,
245
362
  });
246
363
  }
364
+
365
+ /**
366
+ * Retry publication of an exact Target release
367
+ *
368
+ * Dispatches the repository-owned republish workflow for this immutable version and accepted
369
+ * commit. It never selects the latest Draft or release.
370
+ *
371
+ * A `Idempotency-Key` UUID is generated per call (stable across retries) unless you pass one.
372
+ * `POST /target_releases/{target_release_id}/republish`
373
+ */
374
+ async republishRelease(
375
+ targetReleaseId: TargetReleaseId,
376
+ params?: TargetsRepublishReleaseParams,
377
+ options?: RequestOptions,
378
+ ): Promise<ApiResult<TargetReleaseResponseRead, TargetsRepublishReleaseError>> {
379
+ return this._core.request<TargetReleaseResponseRead, TargetsRepublishReleaseError>({
380
+ method: "POST",
381
+ path: `/target_releases/${encodeURIComponent(String(targetReleaseId))}/republish`,
382
+ security: [{"apiKey":[]}],
383
+ headers: {
384
+ "Idempotency-Key": params?.idempotencyKey === undefined ? undefined : String(params?.idempotencyKey),
385
+ },
386
+ errors: {
387
+ "401": UnauthorizedError,
388
+ "403": ForbiddenError,
389
+ "404": NotFoundError,
390
+ "409": ConflictError,
391
+ "429": RateLimitedError,
392
+ "502": BadGatewayError,
393
+ },
394
+ idempotencyKey: "Idempotency-Key",
395
+ schemaKey: "targets.republishRelease",
396
+ options,
397
+ });
398
+ }
247
399
  }
248
400
 
249
401
  export interface TargetsListParams {
@@ -264,9 +416,20 @@ export type TargetsListError =
264
416
  | NotFoundError
265
417
  | RateLimitedError
266
418
  | UnexpectedApiError
419
+ | ResponseParseError
267
420
  | TransportError
268
421
  | ValidationError;
269
422
 
423
+ export interface TargetsCreateParams {
424
+ /**
425
+ * Identifies one logical write for 24 hours. The key is scoped to the authenticated account and
426
+ * operation; account-less generation uses a hashed network identity. Retrying the same method,
427
+ * path, query, and JSON body replays the original response. Reusing the key with changed intent
428
+ * returns 409. After expiry the key starts a new write.
429
+ */
430
+ idempotencyKey?: string;
431
+ }
432
+
270
433
  /** Every error `create` can produce, as a discriminated union. */
271
434
  export type TargetsCreateError =
272
435
  | BadRequestError
@@ -277,6 +440,7 @@ export type TargetsCreateError =
277
440
  | UnprocessableEntityError
278
441
  | RateLimitedError
279
442
  | UnexpectedApiError
443
+ | ResponseParseError
280
444
  | TransportError
281
445
  | ValidationError;
282
446
 
@@ -287,6 +451,7 @@ export type TargetsRetrieveError =
287
451
  | NotFoundError
288
452
  | RateLimitedError
289
453
  | UnexpectedApiError
454
+ | ResponseParseError
290
455
  | TransportError
291
456
  | ValidationError;
292
457
 
@@ -298,6 +463,7 @@ export type TargetsDeleteError =
298
463
  | ConflictError
299
464
  | RateLimitedError
300
465
  | UnexpectedApiError
466
+ | ResponseParseError
301
467
  | TransportError
302
468
  | ValidationError;
303
469
 
@@ -311,6 +477,7 @@ export type TargetsUpdateError =
311
477
  | UnprocessableEntityError
312
478
  | RateLimitedError
313
479
  | UnexpectedApiError
480
+ | ResponseParseError
314
481
  | TransportError
315
482
  | ValidationError;
316
483
 
@@ -332,6 +499,56 @@ export type TargetsListReleasesError =
332
499
  | NotFoundError
333
500
  | RateLimitedError
334
501
  | UnexpectedApiError
502
+ | ResponseParseError
503
+ | TransportError
504
+ | ValidationError;
505
+
506
+ /** Every error `retrieveDraft` can produce, as a discriminated union. */
507
+ export type TargetsRetrieveDraftError =
508
+ | UnauthorizedError
509
+ | ForbiddenError
510
+ | NotFoundError
511
+ | RateLimitedError
512
+ | UnexpectedApiError
513
+ | ResponseParseError
514
+ | TransportError
515
+ | ValidationError;
516
+
517
+ /** Every error `updateDraft` can produce, as a discriminated union. */
518
+ export type TargetsUpdateDraftError =
519
+ | BadRequestError
520
+ | UnauthorizedError
521
+ | ForbiddenError
522
+ | NotFoundError
523
+ | ConflictError
524
+ | UnprocessableEntityError
525
+ | RateLimitedError
526
+ | UnexpectedApiError
527
+ | ResponseParseError
528
+ | TransportError
529
+ | ValidationError;
530
+
531
+ export interface TargetsAdoptReleaseParams {
532
+ /**
533
+ * Identifies one logical write for 24 hours. The key is scoped to the authenticated account and
534
+ * operation; account-less generation uses a hashed network identity. Retrying the same method,
535
+ * path, query, and JSON body replays the original response. Reusing the key with changed intent
536
+ * returns 409. After expiry the key starts a new write.
537
+ */
538
+ idempotencyKey?: string;
539
+ }
540
+
541
+ /** Every error `adoptRelease` can produce, as a discriminated union. */
542
+ export type TargetsAdoptReleaseError =
543
+ | BadRequestError
544
+ | UnauthorizedError
545
+ | ForbiddenError
546
+ | NotFoundError
547
+ | ConflictError
548
+ | UnprocessableEntityError
549
+ | RateLimitedError
550
+ | UnexpectedApiError
551
+ | ResponseParseError
335
552
  | TransportError
336
553
  | ValidationError;
337
554
 
@@ -342,5 +559,29 @@ export type TargetsRetrieveReleaseError =
342
559
  | NotFoundError
343
560
  | RateLimitedError
344
561
  | UnexpectedApiError
562
+ | ResponseParseError
563
+ | TransportError
564
+ | ValidationError;
565
+
566
+ export interface TargetsRepublishReleaseParams {
567
+ /**
568
+ * Identifies one logical write for 24 hours. The key is scoped to the authenticated account and
569
+ * operation; account-less generation uses a hashed network identity. Retrying the same method,
570
+ * path, query, and JSON body replays the original response. Reusing the key with changed intent
571
+ * returns 409. After expiry the key starts a new write.
572
+ */
573
+ idempotencyKey?: string;
574
+ }
575
+
576
+ /** Every error `republishRelease` can produce, as a discriminated union. */
577
+ export type TargetsRepublishReleaseError =
578
+ | UnauthorizedError
579
+ | ForbiddenError
580
+ | NotFoundError
581
+ | ConflictError
582
+ | RateLimitedError
583
+ | BadGatewayError
584
+ | UnexpectedApiError
585
+ | ResponseParseError
345
586
  | TransportError
346
587
  | ValidationError;