@scenario-labs/sdk 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/index.d.mts +1 -0
  3. package/index.d.mts.map +1 -1
  4. package/index.d.ts +1 -0
  5. package/index.d.ts.map +1 -1
  6. package/index.js +3 -1
  7. package/index.js.map +1 -1
  8. package/index.mjs +1 -0
  9. package/index.mjs.map +1 -1
  10. package/lib/auth-refresh.d.mts +52 -0
  11. package/lib/auth-refresh.d.mts.map +1 -0
  12. package/lib/auth-refresh.d.ts +52 -0
  13. package/lib/auth-refresh.d.ts.map +1 -0
  14. package/lib/auth-refresh.js +81 -0
  15. package/lib/auth-refresh.js.map +1 -0
  16. package/lib/auth-refresh.mjs +78 -0
  17. package/lib/auth-refresh.mjs.map +1 -0
  18. package/lib/generate.js +7 -7
  19. package/lib/generate.js.map +1 -1
  20. package/lib/generate.mjs +7 -7
  21. package/lib/generate.mjs.map +1 -1
  22. package/lib/job.d.mts +15 -3
  23. package/lib/job.d.mts.map +1 -1
  24. package/lib/job.d.ts +15 -3
  25. package/lib/job.d.ts.map +1 -1
  26. package/lib/job.js +22 -8
  27. package/lib/job.js.map +1 -1
  28. package/lib/job.mjs +22 -8
  29. package/lib/job.mjs.map +1 -1
  30. package/lib/models.d.mts +8 -2
  31. package/lib/models.d.mts.map +1 -1
  32. package/lib/models.d.ts +8 -2
  33. package/lib/models.d.ts.map +1 -1
  34. package/lib/models.js +13 -5
  35. package/lib/models.js.map +1 -1
  36. package/lib/models.mjs +13 -5
  37. package/lib/models.mjs.map +1 -1
  38. package/lib/scenario.d.mts +28 -13
  39. package/lib/scenario.d.mts.map +1 -1
  40. package/lib/scenario.d.ts +28 -13
  41. package/lib/scenario.d.ts.map +1 -1
  42. package/lib/scenario.js +31 -12
  43. package/lib/scenario.js.map +1 -1
  44. package/lib/scenario.mjs +31 -12
  45. package/lib/scenario.mjs.map +1 -1
  46. package/lib/scope.d.mts +41 -0
  47. package/lib/scope.d.mts.map +1 -0
  48. package/lib/scope.d.ts +41 -0
  49. package/lib/scope.d.ts.map +1 -0
  50. package/lib/scope.js +55 -0
  51. package/lib/scope.js.map +1 -0
  52. package/lib/scope.mjs +49 -0
  53. package/lib/scope.mjs.map +1 -0
  54. package/lib/upload.d.mts +15 -3
  55. package/lib/upload.d.mts.map +1 -1
  56. package/lib/upload.d.ts +15 -3
  57. package/lib/upload.d.ts.map +1 -1
  58. package/lib/upload.js +29 -12
  59. package/lib/upload.js.map +1 -1
  60. package/lib/upload.mjs +29 -12
  61. package/lib/upload.mjs.map +1 -1
  62. package/lib/workflow.d.mts +8 -2
  63. package/lib/workflow.d.mts.map +1 -1
  64. package/lib/workflow.d.ts +8 -2
  65. package/lib/workflow.d.ts.map +1 -1
  66. package/lib/workflow.js +14 -6
  67. package/lib/workflow.js.map +1 -1
  68. package/lib/workflow.mjs +14 -6
  69. package/lib/workflow.mjs.map +1 -1
  70. package/lib/workflow_converter.d.mts +1 -4
  71. package/lib/workflow_converter.d.mts.map +1 -1
  72. package/lib/workflow_converter.d.ts +1 -4
  73. package/lib/workflow_converter.d.ts.map +1 -1
  74. package/lib/workflow_converter.js +19 -1
  75. package/lib/workflow_converter.js.map +1 -1
  76. package/lib/workflow_converter.mjs +19 -1
  77. package/lib/workflow_converter.mjs.map +1 -1
  78. package/package.json +1 -1
  79. package/resources/assets/assets.d.mts +1 -1
  80. package/resources/assets/assets.d.mts.map +1 -1
  81. package/resources/assets/assets.d.ts +1 -1
  82. package/resources/assets/assets.d.ts.map +1 -1
  83. package/resources/generate.d.mts +8 -8
  84. package/resources/generate.d.mts.map +1 -1
  85. package/resources/generate.d.ts +8 -8
  86. package/resources/generate.d.ts.map +1 -1
  87. package/resources/jobs.d.mts +3 -3
  88. package/resources/jobs.d.mts.map +1 -1
  89. package/resources/jobs.d.ts +3 -3
  90. package/resources/jobs.d.ts.map +1 -1
  91. package/resources/models/examples.d.mts +2 -2
  92. package/resources/models/examples.d.mts.map +1 -1
  93. package/resources/models/examples.d.ts +2 -2
  94. package/resources/models/examples.d.ts.map +1 -1
  95. package/resources/models/models.d.mts +126 -7
  96. package/resources/models/models.d.mts.map +1 -1
  97. package/resources/models/models.d.ts +126 -7
  98. package/resources/models/models.d.ts.map +1 -1
  99. package/resources/models/models.js.map +1 -1
  100. package/resources/models/models.mjs.map +1 -1
  101. package/resources/models/train.d.mts +37 -3
  102. package/resources/models/train.d.mts.map +1 -1
  103. package/resources/models/train.d.ts +37 -3
  104. package/resources/models/train.d.ts.map +1 -1
  105. package/resources/usages.d.mts +1 -1
  106. package/resources/usages.d.mts.map +1 -1
  107. package/resources/usages.d.ts +1 -1
  108. package/resources/usages.d.ts.map +1 -1
  109. package/resources/workflows.d.mts +22 -5
  110. package/resources/workflows.d.mts.map +1 -1
  111. package/resources/workflows.d.ts +22 -5
  112. package/resources/workflows.d.ts.map +1 -1
  113. package/resources/workflows.js +4 -1
  114. package/resources/workflows.js.map +1 -1
  115. package/resources/workflows.mjs +4 -1
  116. package/resources/workflows.mjs.map +1 -1
  117. package/src/index.ts +1 -0
  118. package/src/lib/auth-refresh.ts +98 -0
  119. package/src/lib/generate.ts +7 -7
  120. package/src/lib/job.ts +29 -7
  121. package/src/lib/models.ts +14 -4
  122. package/src/lib/scenario.ts +51 -13
  123. package/src/lib/scope.ts +68 -0
  124. package/src/lib/upload.ts +36 -11
  125. package/src/lib/workflow.ts +15 -5
  126. package/src/lib/workflow_converter.ts +26 -4
  127. package/src/resources/assets/assets.ts +1 -1
  128. package/src/resources/generate.ts +8 -8
  129. package/src/resources/jobs.ts +3 -3
  130. package/src/resources/models/examples.ts +2 -2
  131. package/src/resources/models/models.ts +189 -7
  132. package/src/resources/models/train.ts +55 -3
  133. package/src/resources/usages.ts +1 -1
  134. package/src/resources/workflows.ts +24 -5
  135. package/src/version.ts +1 -1
  136. package/version.d.mts +1 -1
  137. package/version.d.ts +1 -1
  138. package/version.js +1 -1
  139. package/version.mjs +1 -1
package/lib/scenario.mjs CHANGED
@@ -16,23 +16,19 @@ import { EnhancedWorkflows } from "./workflow.mjs";
16
16
  * ```ts
17
17
  * import Scenario from '@scenario-labs/sdk';
18
18
  *
19
- * const client = new Scenario({ apiKey: '...' });
19
+ * // With API key — project is implied by the key.
20
+ * const client = new Scenario({ apiKey: '...', apiSecret: '...' });
20
21
  *
21
- * // All generated methods work as-is
22
- * const list = await client.assets.list({});
22
+ * // With bearer JWT — pin a default project for all requests.
23
+ * const client = new Scenario({ bearerAuth: jwt, projectId: 'proj_abc' });
23
24
  *
24
- * // Enhanced: response.job.wait()
25
+ * // Per-call override (one request only):
26
+ * await client.uploads.uploadFile(params, { query: { projectId: 'proj_other' } });
27
+ *
28
+ * // Enhanced: response.job.wait() — auto-reuses the scope of the call that produced the job
25
29
  * const run = await client.workflows.run(workflowId, { body });
26
30
  * const completed = await run.job.wait();
27
31
  *
28
- * // Enhanced: response.workflow.findNode()
29
- * const wf = await client.workflows.retrieve(workflowId);
30
- * wf.workflow.findNode('final_image');
31
- *
32
- * // Enhanced: generate job.wait()
33
- * const gen = await client.generate.runModel(modelId, { body });
34
- * const done = await gen.job.wait();
35
- *
36
32
  * // Enhanced: upload.wait()
37
33
  * const res = await client.uploads.retrieve(uploadId);
38
34
  * const imported = await res.upload.wait();
@@ -49,5 +45,28 @@ export class Scenario extends BaseScenario {
49
45
  uploads = new EnhancedUploads(this);
50
46
  assets = new EnhancedAssets(this);
51
47
  jobs = new EnhancedJobs(this);
48
+ /** The default project this client scopes every request to, or `null` if unset. */
49
+ projectId;
50
+ constructor(options = {}) {
51
+ const { projectId, defaultQuery, ...rest } = options;
52
+ // Strip any stale projectId from defaultQuery so the typed field is the
53
+ // single source of truth (matters when `withOptions` reconstructs the client).
54
+ const cleanedDefaultQuery = stripKey(defaultQuery, 'projectId');
55
+ super({
56
+ ...rest,
57
+ // Pass projectId through so it lands in `_options` and survives a
58
+ // `withOptions()` round-trip. The base ClientOptions doesn't declare
59
+ // this field, hence the cast.
60
+ projectId,
61
+ defaultQuery: projectId ? { ...cleanedDefaultQuery, projectId } : cleanedDefaultQuery,
62
+ });
63
+ this.projectId = projectId ?? null;
64
+ }
65
+ }
66
+ function stripKey(obj, key) {
67
+ if (!obj || !(key in obj))
68
+ return obj;
69
+ const { [key]: _omit, ...rest } = obj;
70
+ return rest;
52
71
  }
53
72
  //# sourceMappingURL=scenario.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"scenario.mjs","sourceRoot":"","sources":["../src/lib/scenario.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,sBAAkB;AACrD,OAAO,EAAE,cAAc,EAAE,oBAAgB;AACzC,OAAO,EAAE,gBAAgB,EAAE,uBAAmB;AAC9C,OAAO,EAAE,YAAY,EAAE,kBAAc;AACrC,OAAO,EAAE,cAAc,EAAE,qBAAiB;AAC1C,OAAO,EAAE,eAAe,EAAE,qBAAiB;AAC3C,OAAO,EAAE,iBAAiB,EAAE,uBAAmB;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,OAAO,QAAS,SAAQ,YAAY;IAC/B,SAAS,GAAsB,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAQ,GAAqB,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,GAAmB,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,GAAoB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,GAAmB,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,GAAiB,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;CACtD"}
1
+ {"version":3,"file":"scenario.mjs","sourceRoot":"","sources":["../src/lib/scenario.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAA2C,sBAAkB;AAC9F,OAAO,EAAE,cAAc,EAAE,oBAAgB;AACzC,OAAO,EAAE,gBAAgB,EAAE,uBAAmB;AAC9C,OAAO,EAAE,YAAY,EAAE,kBAAc;AACrC,OAAO,EAAE,cAAc,EAAE,qBAAiB;AAC1C,OAAO,EAAE,eAAe,EAAE,qBAAiB;AAC3C,OAAO,EAAE,iBAAiB,EAAE,uBAAmB;AAmB/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,QAAS,SAAQ,YAAY;IAC/B,SAAS,GAAsB,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3D,QAAQ,GAAqB,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,GAAmB,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,GAAoB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,GAAmB,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,GAAiB,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IAErD,mFAAmF;IAC1E,SAAS,CAAgB;IAElC,YAAY,UAAyB,EAAE;QACrC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QACrD,wEAAwE;QACxE,+EAA+E;QAC/E,MAAM,mBAAmB,GAAG,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAChE,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,kEAAkE;YAClE,qEAAqE;YACrE,8BAA8B;YAC9B,SAAS;YACT,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,mBAAmB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,mBAAmB;SACjE,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC;IACrC,CAAC;CACF;AAED,SAAS,QAAQ,CAAmB,GAAkB,EAAE,GAAW;IACjE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACtC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,GAA8B,CAAC;IACjE,OAAO,IAAkB,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { RequestOptions } from "../internal/request-options.mjs";
2
+ /**
3
+ * Per-request project scope.
4
+ *
5
+ * With API-key auth, the server resolves the project from the key. With
6
+ * bearer (JWT) auth a user can belong to multiple projects, so callers must
7
+ * specify which one to act on by passing `projectId` as a query param
8
+ * (the server derives `teamId` from it — no need to send it explicitly).
9
+ *
10
+ * SDK helpers like `Job.wait()` and `Upload.wait()` make follow-up calls
11
+ * internally — they capture the scope effective on the originating call and
12
+ * forward it on each retry, so an action created in project A always polls
13
+ * in project A even if the client default changes between calls.
14
+ */
15
+ export interface Scope {
16
+ projectId?: string;
17
+ }
18
+ /** Extract `projectId` from a `RequestOptions.query`. Returns `undefined` if absent. */
19
+ export declare function extractScope(options?: RequestOptions): Scope | undefined;
20
+ /**
21
+ * Resolve the effective scope for an outgoing call:
22
+ * 1. If the per-call options carry a `projectId` query — use that (the explicit override wins).
23
+ * 2. Otherwise, fall back to the client's default `projectId`.
24
+ * 3. If neither is set (e.g. API-key auth with implicit scope), return `undefined`.
25
+ *
26
+ * Returns the snapshot we want to *capture on an enhanced entity* so that
27
+ * follow-up helper calls (`.wait()`, `entity.run()`, ...) reuse the same
28
+ * scope and stay in sync with the call that produced them.
29
+ */
30
+ export declare function effectiveScope(options: RequestOptions | undefined, fallbackProjectId: string | null | undefined): Scope | undefined;
31
+ /**
32
+ * Read the client's default `projectId` without repeating the structural
33
+ * cast at every call site. The base generated `Scenario` type doesn't
34
+ * declare `projectId` — only the enhanced one in `./scenario` does — so
35
+ * `lib/` modules that import `Scenario` from `'../client'` use this helper
36
+ * instead of duplicating the same cast inline.
37
+ */
38
+ export declare function clientProjectId(client: unknown): string | null | undefined;
39
+ /** Build a `RequestOptions` that adds the scope as a query param, merging into any existing query. */
40
+ export declare function withScope(scope: Scope | undefined, options?: RequestOptions): RequestOptions | undefined;
41
+ //# sourceMappingURL=scope.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.d.mts","sourceRoot":"","sources":["../src/lib/scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,wCAAoC;AAElE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,KAAK;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,KAAK,GAAG,SAAS,CAMxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC3C,KAAK,GAAG,SAAS,CAKnB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAE1E;AAED,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,CAOxG"}
package/lib/scope.d.ts ADDED
@@ -0,0 +1,41 @@
1
+ import type { RequestOptions } from "../internal/request-options.js";
2
+ /**
3
+ * Per-request project scope.
4
+ *
5
+ * With API-key auth, the server resolves the project from the key. With
6
+ * bearer (JWT) auth a user can belong to multiple projects, so callers must
7
+ * specify which one to act on by passing `projectId` as a query param
8
+ * (the server derives `teamId` from it — no need to send it explicitly).
9
+ *
10
+ * SDK helpers like `Job.wait()` and `Upload.wait()` make follow-up calls
11
+ * internally — they capture the scope effective on the originating call and
12
+ * forward it on each retry, so an action created in project A always polls
13
+ * in project A even if the client default changes between calls.
14
+ */
15
+ export interface Scope {
16
+ projectId?: string;
17
+ }
18
+ /** Extract `projectId` from a `RequestOptions.query`. Returns `undefined` if absent. */
19
+ export declare function extractScope(options?: RequestOptions): Scope | undefined;
20
+ /**
21
+ * Resolve the effective scope for an outgoing call:
22
+ * 1. If the per-call options carry a `projectId` query — use that (the explicit override wins).
23
+ * 2. Otherwise, fall back to the client's default `projectId`.
24
+ * 3. If neither is set (e.g. API-key auth with implicit scope), return `undefined`.
25
+ *
26
+ * Returns the snapshot we want to *capture on an enhanced entity* so that
27
+ * follow-up helper calls (`.wait()`, `entity.run()`, ...) reuse the same
28
+ * scope and stay in sync with the call that produced them.
29
+ */
30
+ export declare function effectiveScope(options: RequestOptions | undefined, fallbackProjectId: string | null | undefined): Scope | undefined;
31
+ /**
32
+ * Read the client's default `projectId` without repeating the structural
33
+ * cast at every call site. The base generated `Scenario` type doesn't
34
+ * declare `projectId` — only the enhanced one in `./scenario` does — so
35
+ * `lib/` modules that import `Scenario` from `'../client'` use this helper
36
+ * instead of duplicating the same cast inline.
37
+ */
38
+ export declare function clientProjectId(client: unknown): string | null | undefined;
39
+ /** Build a `RequestOptions` that adds the scope as a query param, merging into any existing query. */
40
+ export declare function withScope(scope: Scope | undefined, options?: RequestOptions): RequestOptions | undefined;
41
+ //# sourceMappingURL=scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../src/lib/scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,uCAAoC;AAElE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,KAAK;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,KAAK,GAAG,SAAS,CAMxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC3C,KAAK,GAAG,SAAS,CAKnB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAE1E;AAED,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc,GAAG,SAAS,CAOxG"}
package/lib/scope.js ADDED
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractScope = extractScope;
4
+ exports.effectiveScope = effectiveScope;
5
+ exports.clientProjectId = clientProjectId;
6
+ exports.withScope = withScope;
7
+ /** Extract `projectId` from a `RequestOptions.query`. Returns `undefined` if absent. */
8
+ function extractScope(options) {
9
+ const query = options?.query;
10
+ if (!query)
11
+ return undefined;
12
+ const projectId = typeof query['projectId'] === 'string' ? query['projectId'] : undefined;
13
+ if (!projectId)
14
+ return undefined;
15
+ return { projectId };
16
+ }
17
+ /**
18
+ * Resolve the effective scope for an outgoing call:
19
+ * 1. If the per-call options carry a `projectId` query — use that (the explicit override wins).
20
+ * 2. Otherwise, fall back to the client's default `projectId`.
21
+ * 3. If neither is set (e.g. API-key auth with implicit scope), return `undefined`.
22
+ *
23
+ * Returns the snapshot we want to *capture on an enhanced entity* so that
24
+ * follow-up helper calls (`.wait()`, `entity.run()`, ...) reuse the same
25
+ * scope and stay in sync with the call that produced them.
26
+ */
27
+ function effectiveScope(options, fallbackProjectId) {
28
+ const override = extractScope(options);
29
+ if (override)
30
+ return override;
31
+ if (fallbackProjectId)
32
+ return { projectId: fallbackProjectId };
33
+ return undefined;
34
+ }
35
+ /**
36
+ * Read the client's default `projectId` without repeating the structural
37
+ * cast at every call site. The base generated `Scenario` type doesn't
38
+ * declare `projectId` — only the enhanced one in `./scenario` does — so
39
+ * `lib/` modules that import `Scenario` from `'../client'` use this helper
40
+ * instead of duplicating the same cast inline.
41
+ */
42
+ function clientProjectId(client) {
43
+ return client.projectId;
44
+ }
45
+ /** Build a `RequestOptions` that adds the scope as a query param, merging into any existing query. */
46
+ function withScope(scope, options) {
47
+ if (!scope?.projectId)
48
+ return options;
49
+ const existingQuery = options?.query ?? {};
50
+ return {
51
+ ...options,
52
+ query: { ...existingQuery, projectId: scope.projectId },
53
+ };
54
+ }
55
+ //# sourceMappingURL=scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../src/lib/scope.ts"],"names":[],"mappings":";;AAoBA,oCAMC;AAYD,wCAQC;AASD,0CAEC;AAGD,8BAOC;AAhDD,wFAAwF;AACxF,SAAgB,YAAY,CAAC,OAAwB;IACnD,MAAM,KAAK,GAAG,OAAO,EAAE,KAA4C,CAAC;IACpE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,cAAc,CAC5B,OAAmC,EACnC,iBAA4C;IAE5C,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,iBAAiB;QAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,MAAe;IAC7C,OAAQ,MAAwC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,sGAAsG;AACtG,SAAgB,SAAS,CAAC,KAAwB,EAAE,OAAwB;IAC1E,IAAI,CAAC,KAAK,EAAE,SAAS;QAAE,OAAO,OAAO,CAAC;IACtC,MAAM,aAAa,GAAI,OAAO,EAAE,KAA6C,IAAI,EAAE,CAAC;IACpF,OAAO;QACL,GAAG,OAAO;QACV,KAAK,EAAE,EAAE,GAAG,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;KACxD,CAAC;AACJ,CAAC"}
package/lib/scope.mjs ADDED
@@ -0,0 +1,49 @@
1
+ /** Extract `projectId` from a `RequestOptions.query`. Returns `undefined` if absent. */
2
+ export function extractScope(options) {
3
+ const query = options?.query;
4
+ if (!query)
5
+ return undefined;
6
+ const projectId = typeof query['projectId'] === 'string' ? query['projectId'] : undefined;
7
+ if (!projectId)
8
+ return undefined;
9
+ return { projectId };
10
+ }
11
+ /**
12
+ * Resolve the effective scope for an outgoing call:
13
+ * 1. If the per-call options carry a `projectId` query — use that (the explicit override wins).
14
+ * 2. Otherwise, fall back to the client's default `projectId`.
15
+ * 3. If neither is set (e.g. API-key auth with implicit scope), return `undefined`.
16
+ *
17
+ * Returns the snapshot we want to *capture on an enhanced entity* so that
18
+ * follow-up helper calls (`.wait()`, `entity.run()`, ...) reuse the same
19
+ * scope and stay in sync with the call that produced them.
20
+ */
21
+ export function effectiveScope(options, fallbackProjectId) {
22
+ const override = extractScope(options);
23
+ if (override)
24
+ return override;
25
+ if (fallbackProjectId)
26
+ return { projectId: fallbackProjectId };
27
+ return undefined;
28
+ }
29
+ /**
30
+ * Read the client's default `projectId` without repeating the structural
31
+ * cast at every call site. The base generated `Scenario` type doesn't
32
+ * declare `projectId` — only the enhanced one in `./scenario` does — so
33
+ * `lib/` modules that import `Scenario` from `'../client'` use this helper
34
+ * instead of duplicating the same cast inline.
35
+ */
36
+ export function clientProjectId(client) {
37
+ return client.projectId;
38
+ }
39
+ /** Build a `RequestOptions` that adds the scope as a query param, merging into any existing query. */
40
+ export function withScope(scope, options) {
41
+ if (!scope?.projectId)
42
+ return options;
43
+ const existingQuery = options?.query ?? {};
44
+ return {
45
+ ...options,
46
+ query: { ...existingQuery, projectId: scope.projectId },
47
+ };
48
+ }
49
+ //# sourceMappingURL=scope.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.mjs","sourceRoot":"","sources":["../src/lib/scope.ts"],"names":[],"mappings":"AAmBA,wFAAwF;AACxF,MAAM,UAAU,YAAY,CAAC,OAAwB;IACnD,MAAM,KAAK,GAAG,OAAO,EAAE,KAA4C,CAAC;IACpE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAmC,EACnC,iBAA4C;IAE5C,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,iBAAiB;QAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,MAAe;IAC7C,OAAQ,MAAwC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,SAAS,CAAC,KAAwB,EAAE,OAAwB;IAC1E,IAAI,CAAC,KAAK,EAAE,SAAS;QAAE,OAAO,OAAO,CAAC;IACtC,MAAM,aAAa,GAAI,OAAO,EAAE,KAA6C,IAAI,EAAE,CAAC;IACpF,OAAO;QACL,GAAG,OAAO;QACV,KAAK,EAAE,EAAE,GAAG,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;KACxD,CAAC;AACJ,CAAC"}
package/lib/upload.d.mts CHANGED
@@ -4,6 +4,7 @@ import type { RequestOptions } from "../internal/request-options.mjs";
4
4
  import { Uploads, type UploadCreateParams, type UploadCreateResponse, type UploadRetrieveResponse, type UploadTriggerActionParams, type UploadTriggerActionResponse } from "../resources/uploads.mjs";
5
5
  import type { AssetRetrieveResponse } from "../resources/assets/assets.mjs";
6
6
  import type { ModelRetrieveResponse } from "../resources/models/models.mjs";
7
+ import { type Scope } from "./scope.mjs";
7
8
  type UploadKind = NonNullable<UploadCreateParams['kind']>;
8
9
  /** The resolved entity returned after a successful upload, narrowed by `kind`. */
9
10
  export type UploadResult<K extends UploadKind> = K extends 'model' ? ModelRetrieveResponse : AssetRetrieveResponse;
@@ -54,10 +55,18 @@ export interface UploadWaitOptions {
54
55
  intervalMs?: number;
55
56
  /** Maximum wait time in milliseconds. Default: 300000 */
56
57
  timeoutMs?: number;
58
+ /**
59
+ * Override the project scope used for the polling requests. Defaults to
60
+ * the scope captured on the upload (per-call override on the originating
61
+ * call, else the client's default project).
62
+ */
63
+ projectId?: string;
57
64
  }
58
65
  /** Upload methods added on top of the original upload fields. */
59
66
  export declare class UploadMethods {
60
67
  /** @internal */ readonly _client: Scenario;
68
+ /** @internal scope captured from the originating call — replayed on every `.wait()` poll. */
69
+ readonly _scope?: Scope;
61
70
  /**
62
71
  * Poll until the upload has been processed into an entity (asset or model),
63
72
  * or reaches a terminal state (`imported`, `complete`, `failed`). Resolves
@@ -73,8 +82,8 @@ export declare class UploadMethods {
73
82
  * ```
74
83
  */
75
84
  wait(this: Upload, options?: UploadWaitOptions): Promise<Upload>;
76
- /** @internal Create an Upload from raw upload data. */
77
- static from(client: Scenario, data: UploadRetrieveResponse['upload']): Upload;
85
+ /** @internal Create an Upload from raw upload data, optionally remembering the originating scope. */
86
+ static from(client: Scenario, data: UploadRetrieveResponse['upload'], scope?: Scope): Upload;
78
87
  }
79
88
  /** An upload with all original fields plus `.wait()`. */
80
89
  export type Upload = UploadRetrieveResponse.Upload & UploadMethods;
@@ -90,13 +99,16 @@ export type WithUpload<T extends {
90
99
  };
91
100
  /**
92
101
  * @internal Wrap `_thenUnwrap` to replace `response.upload` with an enhanced Upload.
102
+ * Captures the effective scope (per-call override or client default) so
103
+ * `.wait()` can replay it on every poll — keeping follow-up calls in sync
104
+ * with the project the upload was originally created in.
93
105
  */
94
106
  export declare function enhanceUpload<T extends {
95
107
  upload: {
96
108
  id: string;
97
109
  status: string;
98
110
  };
99
- }>(client: Scenario, promise: APIPromise<T>): APIPromise<WithUpload<T>>;
111
+ }>(client: Scenario, promise: APIPromise<T>, options?: RequestOptions): APIPromise<WithUpload<T>>;
100
112
  /**
101
113
  * Enhanced Uploads resource.
102
114
  * All original methods (`create`, `retrieve`, `triggerAction`) are inherited,
@@ -1 +1 @@
1
- {"version":3,"file":"upload.d.mts","sourceRoot":"","sources":["../src/lib/upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.d.mts","sourceRoot":"","sources":["../src/lib/upload.ts"],"names":[],"mappings":"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"}
package/lib/upload.d.ts CHANGED
@@ -4,6 +4,7 @@ import type { RequestOptions } from "../internal/request-options.js";
4
4
  import { Uploads, type UploadCreateParams, type UploadCreateResponse, type UploadRetrieveResponse, type UploadTriggerActionParams, type UploadTriggerActionResponse } from "../resources/uploads.js";
5
5
  import type { AssetRetrieveResponse } from "../resources/assets/assets.js";
6
6
  import type { ModelRetrieveResponse } from "../resources/models/models.js";
7
+ import { type Scope } from "./scope.js";
7
8
  type UploadKind = NonNullable<UploadCreateParams['kind']>;
8
9
  /** The resolved entity returned after a successful upload, narrowed by `kind`. */
9
10
  export type UploadResult<K extends UploadKind> = K extends 'model' ? ModelRetrieveResponse : AssetRetrieveResponse;
@@ -54,10 +55,18 @@ export interface UploadWaitOptions {
54
55
  intervalMs?: number;
55
56
  /** Maximum wait time in milliseconds. Default: 300000 */
56
57
  timeoutMs?: number;
58
+ /**
59
+ * Override the project scope used for the polling requests. Defaults to
60
+ * the scope captured on the upload (per-call override on the originating
61
+ * call, else the client's default project).
62
+ */
63
+ projectId?: string;
57
64
  }
58
65
  /** Upload methods added on top of the original upload fields. */
59
66
  export declare class UploadMethods {
60
67
  /** @internal */ readonly _client: Scenario;
68
+ /** @internal scope captured from the originating call — replayed on every `.wait()` poll. */
69
+ readonly _scope?: Scope;
61
70
  /**
62
71
  * Poll until the upload has been processed into an entity (asset or model),
63
72
  * or reaches a terminal state (`imported`, `complete`, `failed`). Resolves
@@ -73,8 +82,8 @@ export declare class UploadMethods {
73
82
  * ```
74
83
  */
75
84
  wait(this: Upload, options?: UploadWaitOptions): Promise<Upload>;
76
- /** @internal Create an Upload from raw upload data. */
77
- static from(client: Scenario, data: UploadRetrieveResponse['upload']): Upload;
85
+ /** @internal Create an Upload from raw upload data, optionally remembering the originating scope. */
86
+ static from(client: Scenario, data: UploadRetrieveResponse['upload'], scope?: Scope): Upload;
78
87
  }
79
88
  /** An upload with all original fields plus `.wait()`. */
80
89
  export type Upload = UploadRetrieveResponse.Upload & UploadMethods;
@@ -90,13 +99,16 @@ export type WithUpload<T extends {
90
99
  };
91
100
  /**
92
101
  * @internal Wrap `_thenUnwrap` to replace `response.upload` with an enhanced Upload.
102
+ * Captures the effective scope (per-call override or client default) so
103
+ * `.wait()` can replay it on every poll — keeping follow-up calls in sync
104
+ * with the project the upload was originally created in.
93
105
  */
94
106
  export declare function enhanceUpload<T extends {
95
107
  upload: {
96
108
  id: string;
97
109
  status: string;
98
110
  };
99
- }>(client: Scenario, promise: APIPromise<T>): APIPromise<WithUpload<T>>;
111
+ }>(client: Scenario, promise: APIPromise<T>, options?: RequestOptions): APIPromise<WithUpload<T>>;
100
112
  /**
101
113
  * Enhanced Uploads resource.
102
114
  * All original methods (`create`, `retrieve`, `triggerAction`) are inherited,
@@ -1 +1 @@
1
- {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../src/lib/upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../src/lib/upload.ts"],"names":[],"mappings":"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"}
package/lib/upload.js CHANGED
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.EnhancedUploads = exports.Upload = exports.UploadMethods = void 0;
37
37
  exports.enhanceUpload = enhanceUpload;
38
38
  const uploads_1 = require("../resources/uploads.js");
39
+ const scope_1 = require("./scope.js");
39
40
  // AWS S3 multipart upload limits.
40
41
  const MIN_PART_SIZE = 6_000_000; // 6 MB (spec minimum is 5 MiB; a bit over to be safe)
41
42
  const MAX_PART_SIZE = 5_368_709_120; // 5 GiB
@@ -63,13 +64,16 @@ class UploadMethods {
63
64
  * ```
64
65
  */
65
66
  async wait(options) {
66
- const final = await pollUntilImported(() => this._client.uploads.retrieve(this.id), options?.intervalMs ?? 2_000, options?.timeoutMs ?? 300_000);
67
- return UploadMethods.from(this._client, final.upload);
67
+ const scope = waitOverrideScope(options) ?? this._scope;
68
+ const final = await pollUntilImported(() => this._client.uploads.retrieve(this.id, (0, scope_1.withScope)(scope)), options?.intervalMs ?? 2_000, options?.timeoutMs ?? 300_000);
69
+ return UploadMethods.from(this._client, final.upload, scope);
68
70
  }
69
- /** @internal Create an Upload from raw upload data. */
70
- static from(client, data) {
71
+ /** @internal Create an Upload from raw upload data, optionally remembering the originating scope. */
72
+ static from(client, data, scope) {
71
73
  const upload = Object.assign(Object.create(UploadMethods.prototype), data);
72
74
  Object.defineProperty(upload, '_client', { value: client, enumerable: false });
75
+ if (scope)
76
+ Object.defineProperty(upload, '_scope', { value: scope, enumerable: false });
73
77
  return upload;
74
78
  }
75
79
  }
@@ -77,11 +81,15 @@ exports.UploadMethods = UploadMethods;
77
81
  exports.Upload = UploadMethods;
78
82
  /**
79
83
  * @internal Wrap `_thenUnwrap` to replace `response.upload` with an enhanced Upload.
84
+ * Captures the effective scope (per-call override or client default) so
85
+ * `.wait()` can replay it on every poll — keeping follow-up calls in sync
86
+ * with the project the upload was originally created in.
80
87
  */
81
- function enhanceUpload(client, promise) {
88
+ function enhanceUpload(client, promise, options) {
89
+ const scope = (0, scope_1.effectiveScope)(options, (0, scope_1.clientProjectId)(client));
82
90
  return promise._thenUnwrap((data) => ({
83
91
  ...data,
84
- upload: exports.Upload.from(client, data.upload),
92
+ upload: exports.Upload.from(client, data.upload, scope),
85
93
  }));
86
94
  }
87
95
  /**
@@ -93,13 +101,13 @@ function enhanceUpload(client, promise) {
93
101
  */
94
102
  class EnhancedUploads extends uploads_1.Uploads {
95
103
  create(body, options) {
96
- return enhanceUpload(this._client, super.create(body, options));
104
+ return enhanceUpload(this._client, super.create(body, options), options);
97
105
  }
98
106
  retrieve(uploadID, options) {
99
- return enhanceUpload(this._client, super.retrieve(uploadID, options));
107
+ return enhanceUpload(this._client, super.retrieve(uploadID, options), options);
100
108
  }
101
109
  triggerAction(uploadID, body, options) {
102
- return enhanceUpload(this._client, super.triggerAction(uploadID, body, options));
110
+ return enhanceUpload(this._client, super.triggerAction(uploadID, body, options), options);
103
111
  }
104
112
  /**
105
113
  * Upload a file end-to-end. Computes an optimal part size (within AWS's
@@ -177,16 +185,25 @@ class EnhancedUploads extends uploads_1.Uploads {
177
185
  if (!entityId) {
178
186
  throw new Error(`Upload ${uploadId} reached status "${final.upload.status}" but has no entityId`);
179
187
  }
180
- // Fetch and return the resolved entity (narrowed by kind).
188
+ // Fetch and return the resolved entity (narrowed by kind). Forward the
189
+ // original options so any per-call `projectId` query is passed through
190
+ // to the final retrieve (necessary under bearer auth with per-call
191
+ // scope overrides).
181
192
  if (params.kind === 'model') {
182
- const model = await this._client.models.retrieve(entityId);
193
+ const model = await this._client.models.retrieve(entityId, undefined, options);
183
194
  return model;
184
195
  }
185
- const asset = await this._client.assets.retrieve(entityId);
196
+ const asset = await this._client.assets.retrieve(entityId, undefined, options);
186
197
  return asset;
187
198
  }
188
199
  }
189
200
  exports.EnhancedUploads = EnhancedUploads;
201
+ /** Resolve the scope override carried by an `UploadWaitOptions`, if any. */
202
+ function waitOverrideScope(options) {
203
+ if (!options?.projectId)
204
+ return undefined;
205
+ return { projectId: options.projectId };
206
+ }
190
207
  // ─────────────────────── helpers ───────────────────────
191
208
  async function normalizeToBytes(input) {
192
209
  if (typeof input === 'string') {
package/lib/upload.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","sourceRoot":"","sources":["../src/lib/upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../src/lib/upload.ts"],"names":[],"mappings":"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"}
package/lib/upload.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Uploads, } from "../resources/uploads.mjs";
2
+ import { clientProjectId, effectiveScope, withScope } from "./scope.mjs";
2
3
  // AWS S3 multipart upload limits.
3
4
  const MIN_PART_SIZE = 6_000_000; // 6 MB (spec minimum is 5 MiB; a bit over to be safe)
4
5
  const MAX_PART_SIZE = 5_368_709_120; // 5 GiB
@@ -26,24 +27,31 @@ export class UploadMethods {
26
27
  * ```
27
28
  */
28
29
  async wait(options) {
29
- const final = await pollUntilImported(() => this._client.uploads.retrieve(this.id), options?.intervalMs ?? 2_000, options?.timeoutMs ?? 300_000);
30
- return UploadMethods.from(this._client, final.upload);
30
+ const scope = waitOverrideScope(options) ?? this._scope;
31
+ const final = await pollUntilImported(() => this._client.uploads.retrieve(this.id, withScope(scope)), options?.intervalMs ?? 2_000, options?.timeoutMs ?? 300_000);
32
+ return UploadMethods.from(this._client, final.upload, scope);
31
33
  }
32
- /** @internal Create an Upload from raw upload data. */
33
- static from(client, data) {
34
+ /** @internal Create an Upload from raw upload data, optionally remembering the originating scope. */
35
+ static from(client, data, scope) {
34
36
  const upload = Object.assign(Object.create(UploadMethods.prototype), data);
35
37
  Object.defineProperty(upload, '_client', { value: client, enumerable: false });
38
+ if (scope)
39
+ Object.defineProperty(upload, '_scope', { value: scope, enumerable: false });
36
40
  return upload;
37
41
  }
38
42
  }
39
43
  export const Upload = UploadMethods;
40
44
  /**
41
45
  * @internal Wrap `_thenUnwrap` to replace `response.upload` with an enhanced Upload.
46
+ * Captures the effective scope (per-call override or client default) so
47
+ * `.wait()` can replay it on every poll — keeping follow-up calls in sync
48
+ * with the project the upload was originally created in.
42
49
  */
43
- export function enhanceUpload(client, promise) {
50
+ export function enhanceUpload(client, promise, options) {
51
+ const scope = effectiveScope(options, clientProjectId(client));
44
52
  return promise._thenUnwrap((data) => ({
45
53
  ...data,
46
- upload: Upload.from(client, data.upload),
54
+ upload: Upload.from(client, data.upload, scope),
47
55
  }));
48
56
  }
49
57
  /**
@@ -55,13 +63,13 @@ export function enhanceUpload(client, promise) {
55
63
  */
56
64
  export class EnhancedUploads extends Uploads {
57
65
  create(body, options) {
58
- return enhanceUpload(this._client, super.create(body, options));
66
+ return enhanceUpload(this._client, super.create(body, options), options);
59
67
  }
60
68
  retrieve(uploadID, options) {
61
- return enhanceUpload(this._client, super.retrieve(uploadID, options));
69
+ return enhanceUpload(this._client, super.retrieve(uploadID, options), options);
62
70
  }
63
71
  triggerAction(uploadID, body, options) {
64
- return enhanceUpload(this._client, super.triggerAction(uploadID, body, options));
72
+ return enhanceUpload(this._client, super.triggerAction(uploadID, body, options), options);
65
73
  }
66
74
  /**
67
75
  * Upload a file end-to-end. Computes an optimal part size (within AWS's
@@ -139,15 +147,24 @@ export class EnhancedUploads extends Uploads {
139
147
  if (!entityId) {
140
148
  throw new Error(`Upload ${uploadId} reached status "${final.upload.status}" but has no entityId`);
141
149
  }
142
- // Fetch and return the resolved entity (narrowed by kind).
150
+ // Fetch and return the resolved entity (narrowed by kind). Forward the
151
+ // original options so any per-call `projectId` query is passed through
152
+ // to the final retrieve (necessary under bearer auth with per-call
153
+ // scope overrides).
143
154
  if (params.kind === 'model') {
144
- const model = await this._client.models.retrieve(entityId);
155
+ const model = await this._client.models.retrieve(entityId, undefined, options);
145
156
  return model;
146
157
  }
147
- const asset = await this._client.assets.retrieve(entityId);
158
+ const asset = await this._client.assets.retrieve(entityId, undefined, options);
148
159
  return asset;
149
160
  }
150
161
  }
162
+ /** Resolve the scope override carried by an `UploadWaitOptions`, if any. */
163
+ function waitOverrideScope(options) {
164
+ if (!options?.projectId)
165
+ return undefined;
166
+ return { projectId: options.projectId };
167
+ }
151
168
  // ─────────────────────── helpers ───────────────────────
152
169
  async function normalizeToBytes(input) {
153
170
  if (typeof input === 'string') {