@composio/client 2.0.0-rc.14 → 2.0.0-rc.16

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 (171) hide show
  1. package/README.md +28 -6
  2. package/dist/{api-key-revocation-BtpYMp2A.mjs → api-key-revocation-CvGpd3Rw.mjs} +1 -1
  3. package/dist/{auth-DOLhepVW.mjs → auth-C0IYTv5D.mjs} +1 -1
  4. package/dist/{auth-configs-DwRyrT5R.mjs → auth-configs-COmbnKYx.mjs} +1 -1
  5. package/dist/{clanker-CKQuvB-f.mjs → clanker-hE4FKPjg.mjs} +1 -1
  6. package/dist/{cli-r2AP1DQC.mjs → cli-CuFaxvp4.mjs} +2 -2
  7. package/dist/{connected-accounts-DoC-z2wg.mjs → connected-accounts-BmbcAhdS.mjs} +1 -1
  8. package/dist/{consumer-qY1RmyT2.mjs → consumer-BaJgJBXQ.mjs} +2 -2
  9. package/dist/{custom-0lCWqNaG.mjs → custom-DIJbIQGR.mjs} +1 -1
  10. package/dist/custom-DbEv7dUC.mjs +34 -0
  11. package/dist/effect.d.mts +13 -6
  12. package/dist/effect.mjs +23 -8
  13. package/dist/{files-DNgrvsvD.mjs → files-Cw6ulQZy.mjs} +1 -1
  14. package/dist/{files-Bn4CgdQ5.mjs → files-RPz_Fvnz.mjs} +1 -1
  15. package/dist/{generate-gTgUCYef.mjs → generate-DZXuXtYM.mjs} +1 -1
  16. package/dist/{generated-deprecated-inputs-ZjzVSweS.mjs → generated-deprecated-inputs-B6o8D8ub.mjs} +1 -1
  17. package/dist/{generated-operations-D8jOXj9j.mjs → generated-operations-DrhN6W_k.mjs} +43 -8
  18. package/dist/index.d.mts +2 -2
  19. package/dist/index.mjs +27 -63
  20. package/dist/{keyring-Bdurkv-I.mjs → keyring-CmnkWH5K.mjs} +1 -1
  21. package/dist/{link-DhTr_Zq5.mjs → link-C0KzTJBI.mjs} +1 -1
  22. package/dist/{logs-BCI69MYO.mjs → logs-Bj5MAt8z.mjs} +3 -3
  23. package/dist/{manage-nrsf5m2K.mjs → manage-DDFmGWNH.mjs} +1 -1
  24. package/dist/{mcp-Cf7Tp8i8.mjs → mcp-DXmBAF09.mjs} +3 -3
  25. package/dist/{org-_aj_XBWC.mjs → org-D4J-n07N.mjs} +6 -6
  26. package/dist/{owner-C3FsQfkM.mjs → owner-CfjgcAcM.mjs} +1 -1
  27. package/dist/{project-VByEH_fg.mjs → project-7LL6W_tc.mjs} +1 -1
  28. package/dist/{project-D08liXQJ.mjs → project-CLrBv6tJ.mjs} +1 -1
  29. package/dist/{project-C0XrovoG.mjs → project-CnOrdnOM.mjs} +1 -1
  30. package/dist/{project-hVzPq3ta.mjs → project-Dw9JLelr.mjs} +1 -1
  31. package/dist/{realtime-w-jWkaTI.mjs → realtime-DQ_gT0q7.mjs} +1 -1
  32. package/dist/resources/api-key-revocation.d.mts +1 -1
  33. package/dist/resources/api-key-revocation.mjs +1 -1
  34. package/dist/resources/auth/auth.d.mts +1 -1
  35. package/dist/resources/auth/auth.mjs +1 -1
  36. package/dist/resources/auth/index.d.mts +1 -1
  37. package/dist/resources/auth/index.mjs +2 -2
  38. package/dist/resources/auth/session.d.mts +1 -1
  39. package/dist/resources/auth/session.mjs +1 -1
  40. package/dist/resources/auth-configs.d.mts +1 -1
  41. package/dist/resources/auth-configs.mjs +1 -1
  42. package/dist/resources/auth.d.mts +1 -1
  43. package/dist/resources/auth.mjs +2 -2
  44. package/dist/resources/cli/cli.d.mts +1 -1
  45. package/dist/resources/cli/cli.mjs +1 -1
  46. package/dist/resources/cli/index.d.mts +1 -1
  47. package/dist/resources/cli/index.mjs +2 -2
  48. package/dist/resources/cli/realtime.d.mts +1 -1
  49. package/dist/resources/cli/realtime.mjs +1 -1
  50. package/dist/resources/cli.d.mts +1 -1
  51. package/dist/resources/cli.mjs +2 -2
  52. package/dist/resources/connected-accounts.d.mts +1 -1
  53. package/dist/resources/connected-accounts.mjs +1 -1
  54. package/dist/resources/custom.d.mts +1 -1
  55. package/dist/resources/custom.mjs +1 -1
  56. package/dist/resources/files.d.mts +1 -1
  57. package/dist/resources/files.mjs +1 -1
  58. package/dist/resources/index.d.mts +1 -1
  59. package/dist/resources/index.mjs +13 -13
  60. package/dist/resources/keyring.d.mts +1 -1
  61. package/dist/resources/keyring.mjs +1 -1
  62. package/dist/resources/link.d.mts +1 -1
  63. package/dist/resources/link.mjs +1 -1
  64. package/dist/resources/logs/index.d.mts +1 -1
  65. package/dist/resources/logs/index.mjs +3 -3
  66. package/dist/resources/logs/logs.d.mts +1 -1
  67. package/dist/resources/logs/logs.mjs +1 -1
  68. package/dist/resources/logs/tools.d.mts +1 -1
  69. package/dist/resources/logs/tools.mjs +1 -1
  70. package/dist/resources/logs/triggers.d.mts +1 -1
  71. package/dist/resources/logs/triggers.mjs +1 -1
  72. package/dist/resources/logs.d.mts +1 -1
  73. package/dist/resources/logs.mjs +3 -3
  74. package/dist/resources/mcp/custom.d.mts +1 -1
  75. package/dist/resources/mcp/custom.mjs +1 -1
  76. package/dist/resources/mcp/generate.d.mts +1 -1
  77. package/dist/resources/mcp/generate.mjs +1 -1
  78. package/dist/resources/mcp/index.d.mts +1 -1
  79. package/dist/resources/mcp/index.mjs +3 -3
  80. package/dist/resources/mcp/mcp.d.mts +1 -1
  81. package/dist/resources/mcp/mcp.mjs +1 -1
  82. package/dist/resources/mcp.d.mts +1 -1
  83. package/dist/resources/mcp.mjs +3 -3
  84. package/dist/resources/org/clanker.d.mts +1 -1
  85. package/dist/resources/org/clanker.mjs +1 -1
  86. package/dist/resources/org/consumer/consumer.d.mts +1 -1
  87. package/dist/resources/org/consumer/consumer.mjs +1 -1
  88. package/dist/resources/org/consumer/index.d.mts +1 -1
  89. package/dist/resources/org/consumer/index.mjs +2 -2
  90. package/dist/resources/org/consumer/project.d.mts +1 -1
  91. package/dist/resources/org/consumer/project.mjs +1 -1
  92. package/dist/resources/org/consumer.d.mts +1 -1
  93. package/dist/resources/org/consumer.mjs +2 -2
  94. package/dist/resources/org/index.d.mts +1 -1
  95. package/dist/resources/org/index.mjs +6 -6
  96. package/dist/resources/org/org.d.mts +1 -1
  97. package/dist/resources/org/org.mjs +1 -1
  98. package/dist/resources/org/owner/index.d.mts +1 -1
  99. package/dist/resources/org/owner/index.mjs +2 -2
  100. package/dist/resources/org/owner/owner.d.mts +1 -1
  101. package/dist/resources/org/owner/owner.mjs +1 -1
  102. package/dist/resources/org/owner/project.d.mts +1 -1
  103. package/dist/resources/org/owner/project.mjs +1 -1
  104. package/dist/resources/org/owner.d.mts +1 -1
  105. package/dist/resources/org/owner.mjs +2 -2
  106. package/dist/resources/org/project.d.mts +1 -1
  107. package/dist/resources/org/project.mjs +1 -1
  108. package/dist/resources/org/usage.d.mts +1 -1
  109. package/dist/resources/org/usage.mjs +1 -1
  110. package/dist/resources/org.d.mts +1 -1
  111. package/dist/resources/org.mjs +6 -6
  112. package/dist/resources/project/index.d.mts +1 -1
  113. package/dist/resources/project/index.mjs +1 -1
  114. package/dist/resources/project/project.d.mts +1 -1
  115. package/dist/resources/project/project.mjs +1 -1
  116. package/dist/resources/project/usage.d.mts +1 -1
  117. package/dist/resources/project/usage.mjs +1 -1
  118. package/dist/resources/project.d.mts +1 -1
  119. package/dist/resources/project.mjs +1 -1
  120. package/dist/resources/session-configs.d.mts +1 -1
  121. package/dist/resources/session-configs.mjs +1 -1
  122. package/dist/resources/tool-router/index.d.mts +1 -1
  123. package/dist/resources/tool-router/index.mjs +2 -2
  124. package/dist/resources/tool-router/session/files.d.mts +1 -1
  125. package/dist/resources/tool-router/session/files.mjs +1 -1
  126. package/dist/resources/tool-router/session/index.d.mts +1 -1
  127. package/dist/resources/tool-router/session/index.mjs +2 -2
  128. package/dist/resources/tool-router/session/session.d.mts +1 -1
  129. package/dist/resources/tool-router/session/session.mjs +1 -1
  130. package/dist/resources/tool-router/session.d.mts +1 -1
  131. package/dist/resources/tool-router/session.mjs +2 -2
  132. package/dist/resources/tool-router/tool-router.d.mts +1 -1
  133. package/dist/resources/tool-router/tool-router.mjs +1 -1
  134. package/dist/resources/tool-router.d.mts +1 -1
  135. package/dist/resources/tool-router.mjs +2 -2
  136. package/dist/resources/toolkits.d.mts +1 -1
  137. package/dist/resources/toolkits.mjs +1 -1
  138. package/dist/resources/tools.d.mts +1 -1
  139. package/dist/resources/tools.mjs +1 -1
  140. package/dist/resources/trigger-instances/index.d.mts +1 -1
  141. package/dist/resources/trigger-instances/index.mjs +2 -2
  142. package/dist/resources/trigger-instances/manage.d.mts +1 -1
  143. package/dist/resources/trigger-instances/manage.mjs +1 -1
  144. package/dist/resources/trigger-instances/trigger-instances.d.mts +1 -1
  145. package/dist/resources/trigger-instances/trigger-instances.mjs +1 -1
  146. package/dist/resources/trigger-instances.d.mts +1 -1
  147. package/dist/resources/trigger-instances.mjs +2 -2
  148. package/dist/resources/triggers-types.d.mts +1 -1
  149. package/dist/resources/triggers-types.mjs +1 -1
  150. package/dist/resources/webhook-endpoints.d.mts +1 -1
  151. package/dist/resources/webhook-endpoints.mjs +1 -1
  152. package/dist/resources/webhook-subscriptions.d.mts +1 -1
  153. package/dist/resources/webhook-subscriptions.mjs +1 -1
  154. package/dist/{session-DpNSa-W_.mjs → session-Bmbv2Y2h.mjs} +2 -2
  155. package/dist/{session-DkmLw9W7.mjs → session-CtO_BX-m.mjs} +1 -1
  156. package/dist/{session-configs-CtHZk-vG.d.mts → session-configs-C_A0gUf5.d.mts} +7 -15
  157. package/dist/{tool-router-BS_br3iE.mjs → tool-router-BICZScC1.mjs} +1 -1
  158. package/dist/{toolkits-BPFKa015.mjs → toolkits-Cj8oNvQi.mjs} +1 -1
  159. package/dist/{tools-CrBz2Tm7.mjs → tools-BiyVpJSA.mjs} +1 -1
  160. package/dist/{tools-BwrEpHGs.mjs → tools-C-2Nsm32.mjs} +1 -1
  161. package/dist/{trigger-instances-DyFxjnmc.mjs → trigger-instances-0GIUz_qu.mjs} +2 -2
  162. package/dist/{triggers-BKDJTu8N.mjs → triggers-DWnL3gjv.mjs} +1 -1
  163. package/dist/{triggers-types-CAnS6vg7.mjs → triggers-types-BkigxzlE.mjs} +1 -1
  164. package/dist/{usage-Dj3PPjwF.mjs → usage-D9XlIZBX.mjs} +1 -1
  165. package/dist/{usage-BS1Ecjh5.mjs → usage-RRYqkjLH.mjs} +1 -1
  166. package/dist/version-BkHUhokz.d.mts +4 -0
  167. package/dist/{webhook-endpoints-DE_mR76r.mjs → webhook-endpoints-x3UiV7uH.mjs} +1 -1
  168. package/dist/{webhook-subscriptions-DWY9Bf_H.mjs → webhook-subscriptions-_7MTwe1s.mjs} +1 -1
  169. package/package.json +4 -3
  170. package/dist/custom-Bnoa7Qsa.mjs +0 -88
  171. package/dist/version-DrOZXX3G.d.mts +0 -4
package/README.md CHANGED
@@ -89,8 +89,10 @@ const transport = createFetchTransport({ fetch: instrumentedFetch })
89
89
  const composio = new Composio({ apiKey, transport })
90
90
  ```
91
91
 
92
- Existing `fetch` and `fetchOptions` constructor options remain supported. They cannot be combined
93
- with `transport` because a request can have only one HTTP dispatcher.
92
+ Without a `transport`, the client resolves `globalThis.fetch` when a request is sent, so late
93
+ polyfills and test interceptors keep working. A custom `fetch` or extra `RequestInit` defaults go
94
+ through `createFetchTransport({ fetch, defaults })`; the former `fetch`, `fetchOptions` and
95
+ `defaultQuery` constructor options are gone (see the upgrade section).
94
96
 
95
97
  ## Effect
96
98
 
@@ -165,9 +167,8 @@ A credential option takes a `string` or a `Redacted<string>`. Construction fails
165
167
  excepted, as on the root client), or when `decode: true` is given without `schemas`.
166
168
 
167
169
  The resources are plain objects of functions, not classes, so a method can be passed around without
168
- binding. Two things on the root client have no counterpart here: the resources that hold no operation
169
- (`migration`, `project.config`), and the deprecated `custom.deleteToolkit(slug, options)` overload —
170
- only the current `(slug, query, options)` signature exists.
170
+ binding. One thing on the root client has no counterpart here: the resources that hold no operation
171
+ (`migration`, `project.config`).
171
172
 
172
173
  ### Errors
173
174
 
@@ -208,7 +209,15 @@ is one), `body`, `message`, `method` and `url`. `isAPIError` matches any status
208
209
  `isComposioError` any error of the union; both test the tag, not the class. There is no access to the
209
210
  raw response of a successful call.
210
211
 
211
- Retries and timeouts follow the root client's policy: 2 retries and one minute per attempt by default.
212
+ Timeouts follow the root client's policy: one minute per attempt by default. Retries do not. A
213
+ call whose method is idempotent (`GET`, `HEAD`, `OPTIONS`, `PUT`, `DELETE`) is retried up to 2 times
214
+ on a connection failure, a timeout, or a 408, 409, 429 or 5xx response, as the root client retries
215
+ every call. Any other call, `POST` and `PATCH` included, is sent once, because a write that failed in
216
+ flight may already have acted. A call that is safe to repeat opts back in with its own `maxRetries`:
217
+
218
+ ```ts
219
+ composio.toolRouter.session.search(sessionId, { queries }, { maxRetries: 2 })
220
+ ```
212
221
 
213
222
  ### Streams
214
223
 
@@ -448,6 +457,19 @@ The opt-in records the resolved scheme, hostname, and port. Mutating `baseURL` c
448
457
  and `withOptions({ baseURL: ... })` requires `allowInsecureHTTP: true` again when the origin
449
458
  changes. Redirects to another origin remain credential-free.
450
459
 
460
+ ### Removed in 2.0.0-rc.16
461
+
462
+ Each row is a declared entry in `packages/codegen/assignability-ledger.json`, the list of what a
463
+ release changes against the previous published version.
464
+
465
+ | Removed | Migration |
466
+ | --- | --- |
467
+ | `fetch: f` (constructor) | `transport: createFetchTransport({ fetch: f })` |
468
+ | `fetchOptions: { cache: 'no-store' }` (constructor) | `transport: createFetchTransport({ defaults: { cache: 'no-store' } })`. The defaults cannot set `method`, `headers`, `body`, `signal` or `redirect`, which the client owns |
469
+ | `fetchOptions` (per call, in `RequestOptions`) | None: `headers`, `timeout`, `signal` and `idempotencyKey` stay, and transport-level defaults go through `createFetchTransport({ defaults })` |
470
+ | `defaultQuery` (root `ClientOptions` and `./effect` `ComposioClientOptions`) | None: generated methods own their query, and the raw methods (`get`, `post`, ...) take an explicit `query` |
471
+ | `custom.deleteToolkit(slug, options)` | `custom.deleteToolkit(slug, query, options)` — pass request options third, as on every other `(id, params?, options?)` method. The runtime guard that recognized an options bag in the params position is gone with the overload |
472
+
451
473
  ## Development
452
474
 
453
475
  Toolchain is pinned via [mise](https://mise.jdx.dev) (`mise install`): Node 24, pnpm 11, Python 3.13, uv. ESM-only, TypeScript 7 (native compiler for typechecking, `typescript@6` retained for tooling until 7.1 restores the compiler API).
@@ -1,4 +1,4 @@
1
- import { b as withOperation, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
1
+ import { b as withOperation, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
2
 
3
3
  //#region src/compat/resources/api-key-revocation.ts
4
4
  const OP_CREATE = generatedOperation("apiKeyRevocation.create");
@@ -1,4 +1,4 @@
1
- import { t as Session } from "./session-DkmLw9W7.mjs";
1
+ import { t as Session } from "./session-CtO_BX-m.mjs";
2
2
 
3
3
  //#region src/compat/resources/auth/auth.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { b as withOperation, d as path, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
1
+ import { b as withOperation, d as path, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
2
 
3
3
  //#region src/compat/resources/auth-configs.ts
4
4
  const OP_CREATE = generatedOperation("authConfigs.create");
@@ -1,4 +1,4 @@
1
- import { b as withOperation, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
1
+ import { b as withOperation, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
2
 
3
3
  //#region src/compat/resources/org/clanker.ts
4
4
  const OP_CREATE_CLAIM = generatedOperation("org.clanker.createClaim");
@@ -1,5 +1,5 @@
1
- import { M as mergeHeaders, b as withOperation, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
2
- import { t as Realtime } from "./realtime-w-jWkaTI.mjs";
1
+ import { N as mergeHeaders, b as withOperation, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
+ import { t as Realtime } from "./realtime-DQ_gT0q7.mjs";
3
3
 
4
4
  //#region src/compat/resources/cli/cli.ts
5
5
  const OP_CREATE_CODACT_FAILURE = generatedOperation("cli.createCodactFailure");
@@ -1,4 +1,4 @@
1
- import { b as withOperation, d as path, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
1
+ import { b as withOperation, d as path, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
2
 
3
3
  //#region src/compat/resources/connected-accounts.ts
4
4
  const OP_CREATE = generatedOperation("connectedAccounts.create");
@@ -1,5 +1,5 @@
1
- import { M as mergeHeaders, b as withOperation, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
2
- import { t as Project } from "./project-VByEH_fg.mjs";
1
+ import { N as mergeHeaders, b as withOperation, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
+ import { t as Project } from "./project-7LL6W_tc.mjs";
3
3
 
4
4
  //#region src/compat/resources/org/consumer/consumer.ts
5
5
  const OP_LIST_CONNECTED_TOOLKITS = generatedOperation("org.consumer.listConnectedToolkits");
@@ -1,4 +1,4 @@
1
- import { b as withOperation, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
1
+ import { b as withOperation, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
2
 
3
3
  //#region src/compat/resources/mcp/custom.ts
4
4
  const OP_CREATE = generatedOperation("mcp.custom.create");
@@ -0,0 +1,34 @@
1
+ import { b as withOperation, d as path, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
+
3
+ //#region src/compat/resources/custom.ts
4
+ const OP_DELETE_TOOLKIT = generatedOperation("custom.deleteToolkit");
5
+ const OP_SYNC = generatedOperation("custom.sync");
6
+ const OP_UPSERT = generatedOperation("custom.upsert");
7
+ /** OpenAPI resource for `custom`. */
8
+ var Custom = class {
9
+ #client;
10
+ constructor(client) {
11
+ this.#client = client;
12
+ }
13
+ deleteToolkit(slug, query = {}, options) {
14
+ return this.#client.delete(path`/api/v3.1/custom/toolkits/${slug}`, withOperation(OP_DELETE_TOOLKIT, {
15
+ query,
16
+ ...options
17
+ }));
18
+ }
19
+ sync(body, options) {
20
+ return this.#client.post("/api/v3.1/custom/toolkits/sync", withOperation(OP_SYNC, {
21
+ body,
22
+ ...options
23
+ }));
24
+ }
25
+ upsert(body, options) {
26
+ return this.#client.post("/api/v3.1/custom/toolkits/upsert", withOperation(OP_UPSERT, {
27
+ body,
28
+ ...options
29
+ }));
30
+ }
31
+ };
32
+
33
+ //#endregion
34
+ export { Custom as t };
package/dist/effect.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { $ as ProjectRegenerateAPIKeyResponse, $n as ToolkitRetrieveChangelogResponse, $r as SessionCreateResponse, $t as McpCreateInstanceParams, A as ClankerCreateClaimResponse, An as TriggersTypeListParams, Ar as FileListResponse$1, At as LogRetrieveToolExecutionResponse, B as ConsumerListConnectedToolkitsParams, Bn as AuthConfigListParams, Br as ToolRetrieveEnumResponse, Ci as FileDeleteResponse, Cn as TriggerInstanceUpsertParams, Cr as ConnectedAccountRevokeResponse, D as OrgListResponse, Dn as ManageDeleteResponse, Dr as FileCreatePresignedURLParams, Dt as UsageRetrieveSummaryResponse, E as OrgListParams, Et as UsageRetrieveSummaryParams, F as UsageRetrieveSummaryResponse$1, Fi as APIErrorBody, Fr as ToolGetInputResponse, Ft as ToolRetrieveResponse$1, Gn as AuthConfigUpdateStatusParams, Gt as CliCreateSessionResponse, Hn as AuthConfigRetrieveResponse, Hr as ToolRetrieveRequiredScopesParams, Ht as CliCreateCodactFailureParams, In as AuthConfigCreateParams, Ir as ToolListParams, J as ProjectCreateResponse, Jn as ToolkitListParams, Jr as SessionAttachParams, Kn as AuthConfigUpdateStatusResponse, Kt as CliGetSessionParams, L as ProjectListParams$1, Ln as AuthConfigCreateResponse, Lr as ToolListResponse, Lt as TriggerListParams, M as UsageRetrieveParams$1, Mn as TriggersTypeRetrieveEnumResponse, Mr as ToolExecuteParams, Mt as ToolListFieldsResponse, N as UsageRetrieveResponse$1, Nn as TriggersTypeRetrieveParams, Nr as ToolExecuteResponse, Nt as ToolListParams$1, On as ManageUpdateParams, Or as FileCreatePresignedURLResponse, Ot as LogCreateToolExecutionParams, P as UsageRetrieveSummaryParams$1, Pn as TriggersTypeRetrieveResponse, Pr as ToolGetInputParams, Pt as ToolListResponse$1, Q as ProjectListResponse, Qn as ToolkitRetrieveCategoriesResponse, Qr as SessionCreateParams, R as ProjectListResponse$1, Rn as AuthConfigDeleteParams, Rr as ToolProxyParams, Rt as TriggerListResponse, Si as FileDeleteParams, Sn as TriggerInstanceListActiveResponse, Sr as ConnectedAccountRetrieveResponse, Ti as FileListResponse, Tr as ConnectedAccountUpdateStatusResponse, Tt as UsageRetrieveResponse, U as ProjectResolveParams, Un as AuthConfigUpdateParams, Ur as ToolRetrieveRequiredScopesResponse, Ut as CliCreateCodactFailureResponse, V as ConsumerListConnectedToolkitsResponse, Vn as AuthConfigListResponse, Vr as ToolRetrieveParams, W as ProjectResolveResponse, Wn as AuthConfigUpdateResponse, Wr as ToolRetrieveResponse, Wt as CliCreateSessionParams, X as ProjectDeleteResponse, Xn as ToolkitRecommendScopesParams, Xr as SessionConfigHistoryParams, Xt as RealtimeAuthResponse, Y as ProjectDeleteParams, Yn as ToolkitListResponse, Yr as SessionAttachResponse, Yt as RealtimeAuthParams, Z as ProjectListParams, Zn as ToolkitRecommendScopesResponse, Zr as SessionConfigHistoryResponse, Zt as RealtimeCredentialsResponse, _ as CustomUpsertParams, _i as SessionToolsResponse, _n as GenerateURLResponse, _r as ConnectedAccountListResponse, _t as WebhookSubscriptionRetrieveResponse, ai as SessionLinkParams, an as McpDeleteResponse, ar as ToolkitRetrieveScopesGrantContextResponse, at as WebhookEndpointReplaceParams, b as ApiKeyRevocationCreateParams, bi as FileCreateUploadURLParams, bn as CustomCreateResponse, br as ConnectedAccountRefreshParams, bt as WebhookSubscriptionUpdateResponse, ci as SessionPatchResponse, cn as McpListParams, cr as LinkCreateParams, ct as WebhookEndpointUpdateParams, d as KeyringListTransferKeysResponse, di as SessionRetrieveResponse, dn as McpRetrieveAppResponse, dr as ConnectedAccountCompleteAuthResponse, dt as WebhookSubscriptionCreateParams, ei as SessionDeleteResponse, en as McpCreateInstanceResponse, er as ToolkitRetrieveMultiParams, et as ProjectRetrieveResponse, fi as SessionSearchParams, fn as McpRetrieveResponse, fr as ConnectedAccountCreateParams, ft as WebhookSubscriptionCreateResponse, g as CustomSyncResponse, gi as SessionToolsParams, gn as GenerateURLParams, gr as ConnectedAccountListParams, gt as WebhookSubscriptionListResponse, h as CustomSyncParams, hi as SessionToolkitsResponse, hr as ConnectedAccountDeleteResponse, ht as WebhookSubscriptionListParams, i as SessionConfigsRetrieveResponse, ii as SessionExecuteResponse, in as McpDeleteInstanceResponse, ir as ToolkitRetrieveScopesGrantContextParams, it as WebhookEndpointListResponse, ji as HeadersLike, jn as TriggersTypeListResponse, k as ClankerCreateClaimParams, kn as ManageUpdateResponse, kr as FileListParams$1, kt as LogCreateToolExecutionResponse, li as SessionProxyExecuteParams, ln as McpListResponse, lr as LinkCreateResponse, lt as WebhookEndpointUpdateResponse, m as CustomDeleteToolkitResponse, mi as SessionToolkitsParams, mn as McpUpdateResponse, mr as ConnectedAccountDeleteParams, mt as WebhookSubscriptionListEventTypesResponse, n as SessionConfigsListParams, ni as SessionExecuteMetaResponse, nn as McpCreateResponse, nr as ToolkitRetrieveParams, nt as WebhookEndpointCreateResponse, oi as SessionLinkResponse, on as McpListInstancesParams, ot as WebhookEndpointReplaceResponse, p as CustomDeleteToolkitParams, pi as SessionSearchResponse, pn as McpUpdateParams, pr as ConnectedAccountCreateResponse, pt as WebhookSubscriptionDeleteResponse, q as ProjectCreateParams, qt as CliGetSessionResponse, r as SessionConfigsListResponse, ri as SessionExecuteParams, rn as McpDeleteInstanceParams, rr as ToolkitRetrieveResponse, rt as WebhookEndpointListParams, si as SessionPatchParams, sn as McpListInstancesResponse, st as WebhookEndpointRetrieveResponse, ti as SessionExecuteMetaParams, tn as McpCreateParams, tr as ToolkitRetrieveMultiResponse, tt as WebhookEndpointCreateParams, ui as SessionProxyExecuteResponse, un as McpRetrieveAppParams, ur as ConnectedAccountCompleteAuthParams, v as CustomUpsertResponse, vi as FileCreateDownloadURLParams, vr as ConnectedAccountPatchParams, vt as WebhookSubscriptionRotateSecretResponse, w as SessionRetrieveInfoResponse, wi as FileListParams, wn as TriggerInstanceUpsertResponse, wr as ConnectedAccountUpdateStatusParams, wt as UsageRetrieveParams, x as ApiKeyRevocationCreateResponse, xi as FileCreateUploadURLResponse, xn as TriggerInstanceListActiveParams, xr as ConnectedAccountRefreshResponse, yi as FileCreateDownloadURLResponse, yn as CustomCreateParams, yr as ConnectedAccountPatchResponse, yt as WebhookSubscriptionUpdateParams, zn as AuthConfigDeleteResponse, zr as ToolProxyResponse, zt as TriggerRetrieveResponse } from "./session-configs-CtHZk-vG.mjs";
2
- import { t as VERSION } from "./version-DrOZXX3G.mjs";
1
+ import { $ as ProjectRegenerateAPIKeyResponse, $n as ToolkitRetrieveChangelogResponse, $r as SessionCreateResponse, $t as McpCreateInstanceParams, A as ClankerCreateClaimResponse, An as TriggersTypeListParams, Ar as FileListResponse$1, At as LogRetrieveToolExecutionResponse, B as ConsumerListConnectedToolkitsParams, Bn as AuthConfigListParams, Br as ToolRetrieveEnumResponse, Ci as FileDeleteResponse, Cn as TriggerInstanceUpsertParams, Cr as ConnectedAccountRevokeResponse, D as OrgListResponse, Dn as ManageDeleteResponse, Dr as FileCreatePresignedURLParams, Dt as UsageRetrieveSummaryResponse, E as OrgListParams, Et as UsageRetrieveSummaryParams, F as UsageRetrieveSummaryResponse$1, Fi as APIErrorBody, Fr as ToolGetInputResponse, Ft as ToolRetrieveResponse$1, Gn as AuthConfigUpdateStatusParams, Gt as CliCreateSessionResponse, Hn as AuthConfigRetrieveResponse, Hr as ToolRetrieveRequiredScopesParams, Ht as CliCreateCodactFailureParams, In as AuthConfigCreateParams, Ir as ToolListParams, J as ProjectCreateResponse, Jn as ToolkitListParams, Jr as SessionAttachParams, Kn as AuthConfigUpdateStatusResponse, Kt as CliGetSessionParams, L as ProjectListParams$1, Ln as AuthConfigCreateResponse, Lr as ToolListResponse, Lt as TriggerListParams, M as UsageRetrieveParams$1, Mn as TriggersTypeRetrieveEnumResponse, Mr as ToolExecuteParams, Mt as ToolListFieldsResponse, N as UsageRetrieveResponse$1, Nn as TriggersTypeRetrieveParams, Nr as ToolExecuteResponse, Nt as ToolListParams$1, On as ManageUpdateParams, Or as FileCreatePresignedURLResponse, Ot as LogCreateToolExecutionParams, P as UsageRetrieveSummaryParams$1, Pn as TriggersTypeRetrieveResponse, Pr as ToolGetInputParams, Pt as ToolListResponse$1, Q as ProjectListResponse, Qn as ToolkitRetrieveCategoriesResponse, Qr as SessionCreateParams, R as ProjectListResponse$1, Rn as AuthConfigDeleteParams, Rr as ToolProxyParams, Rt as TriggerListResponse, Si as FileDeleteParams, Sn as TriggerInstanceListActiveResponse, Sr as ConnectedAccountRetrieveResponse, Ti as FileListResponse, Tr as ConnectedAccountUpdateStatusResponse, Tt as UsageRetrieveResponse, U as ProjectResolveParams, Un as AuthConfigUpdateParams, Ur as ToolRetrieveRequiredScopesResponse, Ut as CliCreateCodactFailureResponse, V as ConsumerListConnectedToolkitsResponse, Vn as AuthConfigListResponse, Vr as ToolRetrieveParams, W as ProjectResolveResponse, Wn as AuthConfigUpdateResponse, Wr as ToolRetrieveResponse, Wt as CliCreateSessionParams, X as ProjectDeleteResponse, Xn as ToolkitRecommendScopesParams, Xr as SessionConfigHistoryParams, Xt as RealtimeAuthResponse, Y as ProjectDeleteParams, Yn as ToolkitListResponse, Yr as SessionAttachResponse, Yt as RealtimeAuthParams, Z as ProjectListParams, Zn as ToolkitRecommendScopesResponse, Zr as SessionConfigHistoryResponse, Zt as RealtimeCredentialsResponse, _ as CustomUpsertParams, _i as SessionToolsResponse, _n as GenerateURLResponse, _r as ConnectedAccountListResponse, _t as WebhookSubscriptionRetrieveResponse, ai as SessionLinkParams, an as McpDeleteResponse, ar as ToolkitRetrieveScopesGrantContextResponse, at as WebhookEndpointReplaceParams, b as ApiKeyRevocationCreateParams, bi as FileCreateUploadURLParams, bn as CustomCreateResponse, br as ConnectedAccountRefreshParams, bt as WebhookSubscriptionUpdateResponse, ci as SessionPatchResponse, cn as McpListParams, cr as LinkCreateParams, ct as WebhookEndpointUpdateParams, d as KeyringListTransferKeysResponse, di as SessionRetrieveResponse, dn as McpRetrieveAppResponse, dr as ConnectedAccountCompleteAuthResponse, dt as WebhookSubscriptionCreateParams, ei as SessionDeleteResponse, en as McpCreateInstanceResponse, er as ToolkitRetrieveMultiParams, et as ProjectRetrieveResponse, fi as SessionSearchParams, fn as McpRetrieveResponse, fr as ConnectedAccountCreateParams, ft as WebhookSubscriptionCreateResponse, g as CustomSyncResponse, gi as SessionToolsParams, gn as GenerateURLParams, gr as ConnectedAccountListParams, gt as WebhookSubscriptionListResponse, h as CustomSyncParams, hi as SessionToolkitsResponse, hr as ConnectedAccountDeleteResponse, ht as WebhookSubscriptionListParams, i as SessionConfigsRetrieveResponse, ii as SessionExecuteResponse, in as McpDeleteInstanceResponse, ir as ToolkitRetrieveScopesGrantContextParams, it as WebhookEndpointListResponse, ji as HeadersLike, jn as TriggersTypeListResponse, k as ClankerCreateClaimParams, kn as ManageUpdateResponse, kr as FileListParams$1, kt as LogCreateToolExecutionResponse, li as SessionProxyExecuteParams, ln as McpListResponse, lr as LinkCreateResponse, lt as WebhookEndpointUpdateResponse, m as CustomDeleteToolkitResponse, mi as SessionToolkitsParams, mn as McpUpdateResponse, mr as ConnectedAccountDeleteParams, mt as WebhookSubscriptionListEventTypesResponse, n as SessionConfigsListParams, ni as SessionExecuteMetaResponse, nn as McpCreateResponse, nr as ToolkitRetrieveParams, nt as WebhookEndpointCreateResponse, oi as SessionLinkResponse, on as McpListInstancesParams, ot as WebhookEndpointReplaceResponse, p as CustomDeleteToolkitParams, pi as SessionSearchResponse, pn as McpUpdateParams, pr as ConnectedAccountCreateResponse, pt as WebhookSubscriptionDeleteResponse, q as ProjectCreateParams, qt as CliGetSessionResponse, r as SessionConfigsListResponse, ri as SessionExecuteParams, rn as McpDeleteInstanceParams, rr as ToolkitRetrieveResponse, rt as WebhookEndpointListParams, si as SessionPatchParams, sn as McpListInstancesResponse, st as WebhookEndpointRetrieveResponse, ti as SessionExecuteMetaParams, tn as McpCreateParams, tr as ToolkitRetrieveMultiResponse, tt as WebhookEndpointCreateParams, ui as SessionProxyExecuteResponse, un as McpRetrieveAppParams, ur as ConnectedAccountCompleteAuthParams, v as CustomUpsertResponse, vi as FileCreateDownloadURLParams, vr as ConnectedAccountPatchParams, vt as WebhookSubscriptionRotateSecretResponse, w as SessionRetrieveInfoResponse, wi as FileListParams, wn as TriggerInstanceUpsertResponse, wr as ConnectedAccountUpdateStatusParams, wt as UsageRetrieveParams, x as ApiKeyRevocationCreateResponse, xi as FileCreateUploadURLResponse, xn as TriggerInstanceListActiveParams, xr as ConnectedAccountRefreshResponse, yi as FileCreateDownloadURLResponse, yn as CustomCreateParams, yr as ConnectedAccountPatchResponse, yt as WebhookSubscriptionUpdateParams, zn as AuthConfigDeleteResponse, zr as ToolProxyResponse, zt as TriggerRetrieveResponse } from "./session-configs-C_A0gUf5.mjs";
2
+ import { t as VERSION } from "./version-BkHUhokz.mjs";
3
3
  import { Context, Effect, Layer, Redacted, Stream } from "effect";
4
4
  import * as HttpClient from "effect/http/HttpClient";
5
5
  import * as Schema from "effect/Schema";
@@ -165,7 +165,11 @@ type Tracing = 'off' | 'span' | 'propagate';
165
165
  interface RequestOptions {
166
166
  /** Headers for this call; they win over the client's defaults, and `null` removes one. */
167
167
  readonly headers?: HeadersLike;
168
- /** Maximum retries for temporary failures on this call. Defaults to the client's, which defaults to 2. */
168
+ /**
169
+ * Maximum retries for temporary failures on this call. Without it, a call
170
+ * whose method is idempotent (`GET`, `HEAD`, `OPTIONS`, `PUT`, `DELETE`)
171
+ * takes the client's, which defaults to 2, and any other call is sent once.
172
+ */
169
173
  readonly maxRetries?: number | undefined;
170
174
  /**
171
175
  * Time budget for each attempt of this call, in milliseconds; a redirect
@@ -649,9 +653,12 @@ interface ClientSettings {
649
653
  readonly allowInsecureHTTP?: boolean | undefined;
650
654
  /** Headers sent on every request; per-call headers win, `null` deletes. */
651
655
  readonly defaultHeaders?: HeadersLike;
652
- /** Query params sent on every request; `undefined` removes a param. */
653
- readonly defaultQuery?: Record<string, string | undefined> | undefined;
654
- /** Maximum retries for temporary failures; a call can override it. Defaults to 2. */
656
+ /**
657
+ * Maximum retries for temporary failures of a call whose method is
658
+ * idempotent (`GET`, `HEAD`, `OPTIONS`, `PUT`, `DELETE`). Defaults to 2. Any
659
+ * other call is sent once unless it sets `maxRetries` itself; a call's own
660
+ * `maxRetries` always wins.
661
+ */
655
662
  readonly maxRetries?: number | undefined;
656
663
  /**
657
664
  * Time budget for each attempt, in milliseconds; a call can override it.
package/dist/effect.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { h as makeAPIErrorMessage, m as errorDetails, s as ComposioError } from "./error-D9cG225M.mjs";
2
- import { A as resolveHTTPURL, C as inspectDeprecation, D as callerPlacedCredential, E as assertCredentialTransport, M as mergeHeaders, O as carriesCredentials, S as inspectDeprecatedInputs, T as SCHEME_HEADERS, _ as schemeForRequest, a as TOO_MANY_REDIRECTS, c as buildURL, d as path, f as printableURL, g as safeJSON, h as rewriteForRedirect, i as REDIRECT_STATUSES, j as buildHeaders, k as parseHTTPURL, m as retryDelayMillis, n as generatedOperation, o as buildBody, r as OPAQUE_REDIRECT, s as buildRequestHeaders, t as GENERATED_OPERATIONS, v as shouldRetryResponse, w as matchOperation, x as VERSION, y as validatePositiveInteger } from "./generated-operations-D8jOXj9j.mjs";
3
- import { r as classifySuccessBody, t as GENERATED_DEPRECATED_INPUTS } from "./generated-deprecated-inputs-ZjzVSweS.mjs";
2
+ import { A as parseHTTPURL, C as inspectDeprecatedInputs, D as assertCredentialTransport, E as SCHEME_HEADERS, M as buildHeaders, N as mergeHeaders, O as callerPlacedCredential, S as VERSION, T as matchOperation, _ as schemeForRequest, a as TOO_MANY_REDIRECTS, c as buildURL, d as path, f as printableURL, g as safeJSON, h as rewriteForRedirect, i as REDIRECT_STATUSES, j as resolveHTTPURL, k as carriesCredentials, m as retryDelayMillis, n as generatedOperation, o as buildBody, r as OPAQUE_REDIRECT, s as buildRequestHeaders, t as GENERATED_OPERATIONS, v as shouldRetryResponse, w as inspectDeprecation, y as validatePositiveInteger } from "./generated-operations-DrhN6W_k.mjs";
3
+ import { r as classifySuccessBody, t as GENERATED_DEPRECATED_INPUTS } from "./generated-deprecated-inputs-B6o8D8ub.mjs";
4
4
  import { i as standardNextCursor, n as assertPageItems, r as isFinalCursor, t as assertCursorAdvanced } from "./pagination-rules-uMUdPq_7.mjs";
5
5
  import { Config, Context, Data, Effect, Exit, Layer, Match, Option, Predicate, Redacted, Result, Stream, Tracer } from "effect";
6
6
  import * as FetchHttpClient from "effect/http/FetchHttpClient";
@@ -356,6 +356,20 @@ const cursorStream = (fetchPage) => Stream.suspend(() => {
356
356
  * the transport is Effect's `HttpClient`, and failures are values.
357
357
  */
358
358
  const PLACEHOLDER = /\{[^}]+\}/;
359
+ /**
360
+ * The methods RFC 9110 (section 9.2.2) defines as idempotent: repeating one has
361
+ * the effect of sending it once. Only a call with one of these takes the
362
+ * client's retries by default. Any other call, `POST` and `PATCH` included, is
363
+ * sent once unless it sets `maxRetries` itself, because a write that failed in
364
+ * flight may already have acted, and repeating it would repeat the effect.
365
+ */
366
+ const IDEMPOTENT_METHODS = /* @__PURE__ */ new Set([
367
+ "GET",
368
+ "HEAD",
369
+ "OPTIONS",
370
+ "PUT",
371
+ "DELETE"
372
+ ]);
359
373
  /** An operation's public chain, dotted: the key its schema is loaded by and the name a `DecodeError` gives it. */
360
374
  const operationKey = (operation) => operation?.chain.join(".");
361
375
  /**
@@ -371,8 +385,9 @@ const prepare = (kernel, call) => {
371
385
  const callHeaders = call.headers();
372
386
  const path = call.path();
373
387
  if (call.options?.timeout !== void 0) validatePositiveInteger("timeout", call.options.timeout);
374
- const maxRetries = call.options?.maxRetries ?? kernel.maxRetries;
375
- validatePositiveInteger("maxRetries", maxRetries);
388
+ const resolvedRetries = call.options?.maxRetries ?? kernel.maxRetries;
389
+ validatePositiveInteger("maxRetries", resolvedRetries);
390
+ const maxRetries = call.options?.maxRetries !== void 0 || IDEMPOTENT_METHODS.has(call.method.toUpperCase()) ? resolvedRetries : 0;
376
391
  const decode = call.options?.decode ?? kernel.decode;
377
392
  if (decode) {
378
393
  if (kernel.schemas === void 0) throw new ComposioError(SCHEMAS_MISSING);
@@ -615,9 +630,10 @@ const attempt = (kernel, prepared) => Effect.timeoutOrElse(followChain(kernel, p
615
630
  /**
616
631
  * The attempt loop, with the compat kernel's schedule: a connection failure
617
632
  * or a timeout is retried, as is a response the server marks retryable
618
- * (`x-should-retry`) or whose status is 408, 409, 429 or 5xx, whatever the
619
- * method. The wait is `retry-after-ms`, then `retry-after`, then exponential
620
- * backoff — that module's `retryDelayMillis`, slept on Effect's clock.
633
+ * (`x-should-retry`) or whose status is 408, 409, 429 or 5xx. How many times
634
+ * is `prepare`'s decision, which is where the method counts. The wait is
635
+ * `retry-after-ms`, then `retry-after`, then exponential backoff — that
636
+ * module's `retryDelayMillis`, slept on Effect's clock.
621
637
  *
622
638
  * A retry re-issues the original request, redirect chain and all.
623
639
  */
@@ -1482,7 +1498,6 @@ const resolveKernel = (options, httpClient) => {
1482
1498
  allowedHTTPOrigin: options.allowInsecureHTTP ? parseHTTPURL(baseURL)?.origin ?? null : null,
1483
1499
  userAgent: `Composio/JS ${VERSION}`,
1484
1500
  defaultHeaders: options.defaultHeaders,
1485
- defaultQuery: options.defaultQuery,
1486
1501
  maxRetries: options.maxRetries ?? DEFAULT_MAX_RETRIES,
1487
1502
  timeout: options.timeout ?? DEFAULT_TIMEOUT,
1488
1503
  tracing: options.tracing ?? "off",
@@ -1,4 +1,4 @@
1
- import { b as withOperation, d as path, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
1
+ import { b as withOperation, d as path, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
2
 
3
3
  //#region src/compat/resources/tool-router/session/files.ts
4
4
  const OP_LIST = generatedOperation("toolRouter.session.files.list");
@@ -1,4 +1,4 @@
1
- import { b as withOperation, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
1
+ import { b as withOperation, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
2
 
3
3
  //#region src/compat/resources/files.ts
4
4
  const OP_LIST = generatedOperation("files.list");
@@ -1,4 +1,4 @@
1
- import { b as withOperation, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
1
+ import { b as withOperation, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
2
 
3
3
  //#region src/compat/resources/mcp/generate.ts
4
4
  const OP_URL = generatedOperation("mcp.generate.url");
@@ -1,5 +1,5 @@
1
1
  import { r as APIError } from "./error-D9cG225M.mjs";
2
- import { g as safeJSON, l as castToError } from "./generated-operations-D8jOXj9j.mjs";
2
+ import { g as safeJSON, l as castToError } from "./generated-operations-DrhN6W_k.mjs";
3
3
 
4
4
  //#region src/compat/api-promise.ts
5
5
  /**
@@ -905,7 +905,7 @@ const inspectDeprecatedInputs = ({ operation, query, body, headers, table, seen,
905
905
 
906
906
  //#endregion
907
907
  //#region src/version.ts
908
- const VERSION = "2.0.0-rc.14";
908
+ const VERSION = "2.0.0-rc.16";
909
909
 
910
910
  //#endregion
911
911
  //#region src/compat/telemetry.ts
@@ -944,6 +944,44 @@ const clientTelemetryHeaders = () => {
944
944
  return headers;
945
945
  };
946
946
 
947
+ //#endregion
948
+ //#region src/compat/transport.ts
949
+ const KERNEL_OWNED_KEYS = [
950
+ "method",
951
+ "headers",
952
+ "body",
953
+ "signal",
954
+ "redirect"
955
+ ];
956
+ const assertSafeDefaults = (defaults) => {
957
+ if (defaults === void 0) return;
958
+ const owned = KERNEL_OWNED_KEYS.find((key) => key in defaults);
959
+ if (owned !== void 0) throw new TypeError(`Fetch transport defaults cannot set kernel-owned '${owned}'`);
960
+ };
961
+ /**
962
+ * Where the kernel leaves the `RequestInit` it built a `Request` from, so a
963
+ * fetch-backed transport can call `fetch(url, init)` with the original body
964
+ * and headers rather than `fetch(request)`. The two are the same HTTP
965
+ * exchange; the difference is what a caller watching `fetch` sees, and every
966
+ * consumer that stubs `globalThis.fetch` reads `calls[i][1].headers`, the
967
+ * shape the client has sent since 0.1.x. A `Request` built elsewhere carries
968
+ * no init and is sent as it is.
969
+ */
970
+ const kernelInit = Symbol("composio.kernelInit");
971
+ /** Creates a transport backed by the supplied or global fetch function. */
972
+ const createFetchTransport = (options = {}) => {
973
+ assertSafeDefaults(options.defaults);
974
+ const fetchImplementation = options.fetch ?? ((input, init) => globalThis.fetch(input, init));
975
+ return { send: (request) => {
976
+ const init = request[kernelInit];
977
+ if (init === void 0) return fetchImplementation(request, options.defaults);
978
+ return fetchImplementation(request.url, {
979
+ ...options.defaults,
980
+ ...init
981
+ });
982
+ } };
983
+ };
984
+
947
985
  //#endregion
948
986
  //#region src/compat/request.ts
949
987
  /**
@@ -1073,7 +1111,6 @@ const buildURL = (config, options) => {
1073
1111
  const url = new URL(base + joined);
1074
1112
  const query = {
1075
1113
  ...Object.fromEntries(url.searchParams),
1076
- ...config.defaultQuery,
1077
1114
  ...options.query
1078
1115
  };
1079
1116
  const search = stringifyQuery(query);
@@ -1323,8 +1360,7 @@ const schemeForRequest = (config, operation) => {
1323
1360
  * Everything the server chose is re-derived rather than carried: the headers
1324
1361
  * (see `buildRequestHeaders`), the method and body (fetch's own 301/302/303
1325
1362
  * rewrite), and the query, which is left to the `Location` URL because the
1326
- * server picked it. `config.defaultQuery` is applied to the URL the caller
1327
- * asked for, not to the one it was sent to.
1363
+ * server picked it.
1328
1364
  */
1329
1365
  const dispatchWithRedirects = async (config, options, initialURL, initialBody, initialBodyHeaders, signal, scheme) => {
1330
1366
  let url = initialURL;
@@ -1340,12 +1376,11 @@ const dispatchWithRedirects = async (config, options, initialURL, initialBody, i
1340
1376
  method,
1341
1377
  headers,
1342
1378
  ...body !== void 0 ? { body } : {},
1343
- ...config.fetchOptions,
1344
- ...options.fetchOptions,
1345
1379
  redirect: delegated ? "follow" : "manual",
1346
1380
  signal
1347
1381
  };
1348
- const response = config.transport === void 0 ? await config.fetch.call(void 0, url, init) : await settleOnAbort(config.transport.send(new Request(url, init)), signal);
1382
+ const request = Object.assign(new Request(url, init), { [kernelInit]: init });
1383
+ const response = await settleOnAbort(config.transport.send(request), signal);
1349
1384
  if (delegated) return response;
1350
1385
  if (isOpaqueRedirect(response)) throw new APIConnectionError({ message: OPAQUE_REDIRECT });
1351
1386
  if (!REDIRECT_STATUSES.has(response.status)) return response;
@@ -2310,4 +2345,4 @@ const generatedOperation = (chainKey) => {
2310
2345
  };
2311
2346
 
2312
2347
  //#endregion
2313
- export { resolveHTTPURL as A, inspectDeprecation as C, callerPlacedCredential as D, assertCredentialTransport as E, mergeHeaders as M, carriesCredentials as O, inspectDeprecatedInputs as S, SCHEME_HEADERS as T, schemeForRequest as _, TOO_MANY_REDIRECTS as a, withOperation as b, buildURL as c, path as d, printableURL as f, safeJSON as g, rewriteForRedirect as h, REDIRECT_STATUSES as i, buildHeaders as j, parseHTTPURL as k, castToError as l, retryDelayMillis as m, generatedOperation as n, buildBody as o, readOperation as p, OPAQUE_REDIRECT as r, buildRequestHeaders as s, GENERATED_OPERATIONS as t, makeRequest as u, shouldRetryResponse as v, matchOperation as w, VERSION as x, validatePositiveInteger as y };
2348
+ export { parseHTTPURL as A, inspectDeprecatedInputs as C, assertCredentialTransport as D, SCHEME_HEADERS as E, buildHeaders as M, mergeHeaders as N, callerPlacedCredential as O, VERSION as S, matchOperation as T, schemeForRequest as _, TOO_MANY_REDIRECTS as a, withOperation as b, buildURL as c, path as d, printableURL as f, safeJSON as g, rewriteForRedirect as h, REDIRECT_STATUSES as i, resolveHTTPURL as j, carriesCredentials as k, castToError as l, retryDelayMillis as m, generatedOperation as n, buildBody as o, readOperation as p, OPAQUE_REDIRECT as r, buildRequestHeaders as s, GENERATED_OPERATIONS as t, makeRequest as u, shouldRetryResponse as v, inspectDeprecation as w, createFetchTransport as x, validatePositiveInteger as y };
package/dist/index.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- import { $r as SessionCreateResponse, Ai as createFetchTransport, Bi as ConflictError, Ci as FileDeleteResponse, Di as RequestOptions, Ei as Files, Fi as APIErrorBody, Gi as UnprocessableEntityError, Hi as NotFoundError, Ii as APIUserAbortError, Jr as SessionAttachParams, Ki as APIPromise, Kr as ToolRouter, Li as AuthenticationError, Mi as APIConnectionError, Ni as APIConnectionTimeoutError, Oi as FetchTransportDefaults, Pi as APIError, Qr as SessionCreateParams, Ri as BadRequestError, Si as FileDeleteParams, Ti as FileListResponse, Ui as PermissionDeniedError, Vi as InternalServerError, Wi as RateLimitError, Xr as SessionConfigHistoryParams, Yr as SessionAttachResponse, Zr as SessionConfigHistoryResponse, _i as SessionToolsResponse, a as ClientOptions, ai as SessionLinkParams, bi as FileCreateUploadURLParams, c as LogLevel, ci as SessionPatchResponse, di as SessionRetrieveResponse, ei as SessionDeleteResponse, fi as SessionSearchParams, gi as SessionToolsParams, hi as SessionToolkitsResponse, ii as SessionExecuteResponse, ki as Transport, l as Logger, li as SessionProxyExecuteParams, mi as SessionToolkitsParams, ni as SessionExecuteMetaResponse, o as Composio, oi as SessionLinkResponse, pi as SessionSearchResponse, qr as Session, ri as SessionExecuteParams, s as EnvironmentMap, si as SessionPatchParams, ti as SessionExecuteMetaParams, ui as SessionProxyExecuteResponse, vi as FileCreateDownloadURLParams, wi as FileListParams, xi as FileCreateUploadURLResponse, yi as FileCreateDownloadURLResponse, zi as ComposioError } from "./session-configs-CtHZk-vG.mjs";
2
- import { t as VERSION } from "./version-DrOZXX3G.mjs";
1
+ import { $r as SessionCreateResponse, Ai as createFetchTransport, Bi as ConflictError, Ci as FileDeleteResponse, Di as RequestOptions, Ei as Files, Fi as APIErrorBody, Gi as UnprocessableEntityError, Hi as NotFoundError, Ii as APIUserAbortError, Jr as SessionAttachParams, Ki as APIPromise, Kr as ToolRouter, Li as AuthenticationError, Mi as APIConnectionError, Ni as APIConnectionTimeoutError, Oi as FetchTransportDefaults, Pi as APIError, Qr as SessionCreateParams, Ri as BadRequestError, Si as FileDeleteParams, Ti as FileListResponse, Ui as PermissionDeniedError, Vi as InternalServerError, Wi as RateLimitError, Xr as SessionConfigHistoryParams, Yr as SessionAttachResponse, Zr as SessionConfigHistoryResponse, _i as SessionToolsResponse, a as ClientOptions, ai as SessionLinkParams, bi as FileCreateUploadURLParams, c as LogLevel, ci as SessionPatchResponse, di as SessionRetrieveResponse, ei as SessionDeleteResponse, fi as SessionSearchParams, gi as SessionToolsParams, hi as SessionToolkitsResponse, ii as SessionExecuteResponse, ki as Transport, l as Logger, li as SessionProxyExecuteParams, mi as SessionToolkitsParams, ni as SessionExecuteMetaResponse, o as Composio, oi as SessionLinkResponse, pi as SessionSearchResponse, qr as Session, ri as SessionExecuteParams, s as EnvironmentMap, si as SessionPatchParams, ti as SessionExecuteMetaParams, ui as SessionProxyExecuteResponse, vi as FileCreateDownloadURLParams, wi as FileListParams, xi as FileCreateUploadURLResponse, yi as FileCreateDownloadURLResponse, zi as ComposioError } from "./session-configs-C_A0gUf5.mjs";
2
+ import { t as VERSION } from "./version-BkHUhokz.mjs";
3
3
  export { APIConnectionError, APIConnectionTimeoutError, APIError, type APIErrorBody, APIPromise, APIUserAbortError, AuthenticationError, BadRequestError, type ClientOptions, Composio, Composio as default, ComposioError, ConflictError, type EnvironmentMap, type FetchTransportDefaults, type FileCreateDownloadURLParams, type FileCreateDownloadURLResponse, type FileCreateUploadURLParams, type FileCreateUploadURLResponse, type FileDeleteParams, type FileDeleteResponse, type FileListParams, type FileListResponse, Files, InternalServerError, type LogLevel, type Logger, NotFoundError, PermissionDeniedError, RateLimitError, type RequestOptions, Session, type SessionAttachParams, type SessionAttachResponse, type SessionConfigHistoryParams, type SessionConfigHistoryResponse, type SessionCreateParams, type SessionCreateResponse, type SessionDeleteResponse, type SessionExecuteMetaParams, type SessionExecuteMetaResponse, type SessionExecuteParams, type SessionExecuteResponse, type SessionLinkParams, type SessionLinkResponse, type SessionPatchParams, type SessionPatchResponse, type SessionProxyExecuteParams, type SessionProxyExecuteResponse, type SessionRetrieveResponse, type SessionSearchParams, type SessionSearchResponse, type SessionToolkitsParams, type SessionToolkitsResponse, type SessionToolsParams, type SessionToolsResponse, ToolRouter, type Transport, UnprocessableEntityError, VERSION, createFetchTransport };
package/dist/index.mjs CHANGED
@@ -1,30 +1,30 @@
1
1
  import { a as AuthenticationError, c as ConflictError, d as PermissionDeniedError, f as RateLimitError, i as APIUserAbortError, l as InternalServerError, n as APIConnectionTimeoutError, o as BadRequestError, p as UnprocessableEntityError, r as APIError, s as ComposioError, t as APIConnectionError, u as NotFoundError } from "./error-D9cG225M.mjs";
2
- import { C as inspectDeprecation, E as assertCredentialTransport, M as mergeHeaders, S as inspectDeprecatedInputs, k as parseHTTPURL, p as readOperation, t as GENERATED_OPERATIONS, u as makeRequest, x as VERSION } from "./generated-operations-D8jOXj9j.mjs";
3
- import { t as Custom } from "./custom-Bnoa7Qsa.mjs";
4
- import { t as ApiKeyRevocation } from "./api-key-revocation-BtpYMp2A.mjs";
5
- import { t as AuthConfigs } from "./auth-configs-DwRyrT5R.mjs";
6
- import { t as Auth } from "./auth-DOLhepVW.mjs";
7
- import { t as Cli } from "./cli-r2AP1DQC.mjs";
8
- import { t as ConnectedAccounts } from "./connected-accounts-DoC-z2wg.mjs";
9
- import { t as Files$1 } from "./files-Bn4CgdQ5.mjs";
10
- import { t as Keyring } from "./keyring-Bdurkv-I.mjs";
11
- import { t as Link } from "./link-DhTr_Zq5.mjs";
12
- import { t as Logs } from "./logs-BCI69MYO.mjs";
13
- import { t as Mcp } from "./mcp-Cf7Tp8i8.mjs";
2
+ import { A as parseHTTPURL, C as inspectDeprecatedInputs, D as assertCredentialTransport, N as mergeHeaders, S as VERSION, p as readOperation, t as GENERATED_OPERATIONS, u as makeRequest, w as inspectDeprecation, x as createFetchTransport } from "./generated-operations-DrhN6W_k.mjs";
3
+ import { t as ApiKeyRevocation } from "./api-key-revocation-CvGpd3Rw.mjs";
4
+ import { t as AuthConfigs } from "./auth-configs-COmbnKYx.mjs";
5
+ import { t as Auth } from "./auth-C0IYTv5D.mjs";
6
+ import { t as Cli } from "./cli-CuFaxvp4.mjs";
7
+ import { t as ConnectedAccounts } from "./connected-accounts-BmbcAhdS.mjs";
8
+ import { t as Custom } from "./custom-DbEv7dUC.mjs";
9
+ import { t as Files$1 } from "./files-RPz_Fvnz.mjs";
10
+ import { t as Keyring } from "./keyring-CmnkWH5K.mjs";
11
+ import { t as Link } from "./link-C0KzTJBI.mjs";
12
+ import { t as Logs } from "./logs-Bj5MAt8z.mjs";
13
+ import { t as Mcp } from "./mcp-DXmBAF09.mjs";
14
14
  import { t as Migration } from "./migration-CBhnoN-Y.mjs";
15
- import { t as Org } from "./org-_aj_XBWC.mjs";
16
- import { t as Project } from "./project-D08liXQJ.mjs";
15
+ import { t as Org } from "./org-D4J-n07N.mjs";
16
+ import { t as Project } from "./project-CLrBv6tJ.mjs";
17
17
  import { SessionConfigs } from "./resources/session-configs.mjs";
18
- import { t as Files } from "./files-DNgrvsvD.mjs";
19
- import { t as Session } from "./session-DpNSa-W_.mjs";
20
- import { t as ToolRouter } from "./tool-router-BS_br3iE.mjs";
21
- import { t as Toolkits } from "./toolkits-BPFKa015.mjs";
22
- import { t as Tools } from "./tools-BwrEpHGs.mjs";
23
- import { t as TriggerInstances } from "./trigger-instances-DyFxjnmc.mjs";
24
- import { t as TriggersTypes } from "./triggers-types-CAnS6vg7.mjs";
25
- import { t as WebhookEndpoints } from "./webhook-endpoints-DE_mR76r.mjs";
26
- import { t as WebhookSubscriptions } from "./webhook-subscriptions-DWY9Bf_H.mjs";
27
- import { n as APIPromise, t as GENERATED_DEPRECATED_INPUTS } from "./generated-deprecated-inputs-ZjzVSweS.mjs";
18
+ import { t as Files } from "./files-Cw6ulQZy.mjs";
19
+ import { t as Session } from "./session-Bmbv2Y2h.mjs";
20
+ import { t as ToolRouter } from "./tool-router-BICZScC1.mjs";
21
+ import { t as Toolkits } from "./toolkits-Cj8oNvQi.mjs";
22
+ import { t as Tools } from "./tools-C-2Nsm32.mjs";
23
+ import { t as TriggerInstances } from "./trigger-instances-0GIUz_qu.mjs";
24
+ import { t as TriggersTypes } from "./triggers-types-BkigxzlE.mjs";
25
+ import { t as WebhookEndpoints } from "./webhook-endpoints-x3UiV7uH.mjs";
26
+ import { t as WebhookSubscriptions } from "./webhook-subscriptions-_7MTwe1s.mjs";
27
+ import { n as APIPromise, t as GENERATED_DEPRECATED_INPUTS } from "./generated-deprecated-inputs-B6o8D8ub.mjs";
28
28
 
29
29
  //#region src/compat/generated-resource-wiring.ts
30
30
  const createClientResources = (client) => ({
@@ -110,7 +110,6 @@ const resolveBaseURL = (options, readEnvironment, hasExplicitEnvironment) => {
110
110
  return readEnvironment("COMPOSIO_BASE_URL") ?? null;
111
111
  };
112
112
  const resolveClientOptions = (input) => {
113
- if (input.transport !== void 0 && (input.fetch !== void 0 || input.fetchOptions !== void 0)) throw new ComposioError("The `transport` option cannot be combined with `fetch` or `fetchOptions`");
114
113
  const hasExplicitEnvironment = input[environmentReader] !== void 0;
115
114
  const readEnvironment = input[environmentReader] ?? readEnv;
116
115
  const baseURL = resolveBaseURL(input, readEnvironment, hasExplicitEnvironment);
@@ -142,8 +141,6 @@ var Composio = class Composio {
142
141
  timeout;
143
142
  logger;
144
143
  logLevel;
145
- fetchOptions;
146
- #fetch;
147
144
  #transport;
148
145
  #options;
149
146
  /**
@@ -167,10 +164,8 @@ var Composio = class Composio {
167
164
  this.timeout = options.timeout ?? Composio.DEFAULT_TIMEOUT;
168
165
  this.logger = options.logger ?? console;
169
166
  this.logLevel = options.logLevel;
170
- this.fetchOptions = options.fetchOptions;
171
167
  this.maxRetries = options.maxRetries ?? 2;
172
- this.#fetch = options.fetch ?? ((input, init) => globalThis.fetch(input, init));
173
- this.#transport = options.transport;
168
+ this.#transport = options.transport ?? createFetchTransport();
174
169
  options.allowedHTTPOrigin = options.allowInsecureHTTP ? options.allowedHTTPOrigin ?? parseHTTPURL(this.baseURL)?.origin ?? null : null;
175
170
  this.#options = options;
176
171
  this.apiKey = options.apiKey;
@@ -196,12 +191,7 @@ var Composio = class Composio {
196
191
  }
197
192
  /** Returns a new client reusing the current options with `options` merged over them. */
198
193
  withOptions(options) {
199
- const hasFetch = Object.hasOwn(options, "fetch");
200
- const hasFetchOptions = Object.hasOwn(options, "fetchOptions");
201
- const replacesTransport = hasFetch || hasFetchOptions;
202
- const transport = Object.hasOwn(options, "transport") ? options.transport : replacesTransport ? void 0 : this.#transport;
203
- const fetch = transport === void 0 ? hasFetch ? options.fetch : this.#fetch : void 0;
204
- const fetchOptions = transport === void 0 ? hasFetchOptions ? options.fetchOptions : this.fetchOptions : void 0;
194
+ const transport = Object.hasOwn(options, "transport") ? options.transport : this.#transport;
205
195
  const allowedHTTPOrigin = options.allowInsecureHTTP === true ? void 0 : this.#options.allowedHTTPOrigin;
206
196
  const derivedOptions = {
207
197
  ...this.#options,
@@ -216,9 +206,7 @@ var Composio = class Composio {
216
206
  orgApiKey: this.orgApiKey,
217
207
  ...options,
218
208
  allowedHTTPOrigin,
219
- transport,
220
- fetch,
221
- fetchOptions
209
+ transport
222
210
  };
223
211
  const client = new this.constructor(derivedOptions);
224
212
  client.#deprecationSeen = this.#deprecationSeen;
@@ -298,11 +286,8 @@ var Composio = class Composio {
298
286
  maxRetries: this.maxRetries,
299
287
  timeout: this.timeout,
300
288
  userAgent: `${this.constructor.name}/JS ${VERSION}`,
301
- fetch: this.#fetch,
302
289
  transport: this.#transport,
303
290
  defaultHeaders: this.#options.defaultHeaders,
304
- defaultQuery: this.#options.defaultQuery,
305
- fetchOptions: this.fetchOptions,
306
291
  ...lifecycleLoggingEnabled ? { onLog: this.#onKernelLog } : {},
307
292
  onResponse: this.#onKernelResponse,
308
293
  onRequest: this.#onKernelRequest
@@ -364,26 +349,5 @@ Composio.ApiKeyRevocation = ApiKeyRevocation;
364
349
  Composio.Custom = Custom;
365
350
  Composio.Keyring = Keyring;
366
351
 
367
- //#endregion
368
- //#region src/compat/transport.ts
369
- const KERNEL_OWNED_KEYS = [
370
- "method",
371
- "headers",
372
- "body",
373
- "signal",
374
- "redirect"
375
- ];
376
- const assertSafeDefaults = (defaults) => {
377
- if (defaults === void 0) return;
378
- const owned = KERNEL_OWNED_KEYS.find((key) => key in defaults);
379
- if (owned !== void 0) throw new TypeError(`Fetch transport defaults cannot set kernel-owned '${owned}'`);
380
- };
381
- /** Creates a transport backed by the supplied or global fetch function. */
382
- const createFetchTransport = (options = {}) => {
383
- assertSafeDefaults(options.defaults);
384
- const fetchImplementation = options.fetch ?? ((input, init) => globalThis.fetch(input, init));
385
- return { send: (request) => fetchImplementation(request, options.defaults) };
386
- };
387
-
388
352
  //#endregion
389
353
  export { APIConnectionError, APIConnectionTimeoutError, APIError, APIPromise, APIUserAbortError, AuthenticationError, BadRequestError, Composio, Composio as default, ComposioError, ConflictError, Files, InternalServerError, NotFoundError, PermissionDeniedError, RateLimitError, Session, ToolRouter, UnprocessableEntityError, VERSION, createFetchTransport };
@@ -1,4 +1,4 @@
1
- import { b as withOperation, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
1
+ import { b as withOperation, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
2
 
3
3
  //#region src/compat/resources/keyring.ts
4
4
  const OP_LIST_TRANSFER_KEYS = generatedOperation("keyring.listTransferKeys");
@@ -1,4 +1,4 @@
1
- import { b as withOperation, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
1
+ import { b as withOperation, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
2
 
3
3
  //#region src/compat/resources/link.ts
4
4
  const OP_CREATE = generatedOperation("link.create");
@@ -1,6 +1,6 @@
1
- import { b as withOperation, d as path, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
2
- import { t as Triggers } from "./triggers-BKDJTu8N.mjs";
3
- import { t as Tools } from "./tools-CrBz2Tm7.mjs";
1
+ import { b as withOperation, d as path, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
+ import { t as Triggers } from "./triggers-DWnL3gjv.mjs";
3
+ import { t as Tools } from "./tools-BiyVpJSA.mjs";
4
4
 
5
5
  //#region src/compat/resources/logs/logs.ts
6
6
  const OP_CREATE_TOOL_EXECUTION = generatedOperation("logs.createToolExecution");
@@ -1,4 +1,4 @@
1
- import { b as withOperation, d as path, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
1
+ import { b as withOperation, d as path, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
2
 
3
3
  //#region src/compat/resources/trigger-instances/manage.ts
4
4
  const OP_UPDATE = generatedOperation("triggerInstances.manage.update");
@@ -1,6 +1,6 @@
1
- import { b as withOperation, d as path, n as generatedOperation } from "./generated-operations-D8jOXj9j.mjs";
2
- import { t as Custom } from "./custom-0lCWqNaG.mjs";
3
- import { t as Generate } from "./generate-gTgUCYef.mjs";
1
+ import { b as withOperation, d as path, n as generatedOperation } from "./generated-operations-DrhN6W_k.mjs";
2
+ import { t as Custom } from "./custom-DIJbIQGR.mjs";
3
+ import { t as Generate } from "./generate-DZXuXtYM.mjs";
4
4
 
5
5
  //#region src/compat/resources/mcp/mcp.ts
6
6
  const OP_CREATE = generatedOperation("mcp.create");