@tangle-network/hub-sdk 0.19.2-develop.20260808050113.9047fef → 0.19.2

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.
package/dist/index.d.ts CHANGED
@@ -1,3 +1,370 @@
1
+ //#region src/allowances.d.ts
2
+ /**
3
+ * Allowances: a developer's per-member daily allowance on a meter, and the
4
+ * paywall decision past it. The platform counts every admitted turn and reads
5
+ * each payer's dollars from the ledger; the app keeps only its checkout and
6
+ * records a paying member with {@link HubAllowancesClient.grant}.
7
+ *
8
+ * Only the meter's owner may call these, signed in or with a root API key of
9
+ * their own. A delegated or resource-bound key, such as the key a hosted end
10
+ * user's sandbox runs on, is refused.
11
+ */
12
+ type HubAllowanceTier = "free" | "paid" | "owner";
13
+ type HubAllowanceRole = "owner" | "member";
14
+ interface HubAllowancePlanInput {
15
+ free: {
16
+ turnsPerDay: number;
17
+ usdPerDay: number | null;
18
+ };
19
+ /** Null turns billing off: past the free allowance nothing lifts the limit. */
20
+ paid: {
21
+ turnsPerDay: number;
22
+ usdPerDay: number | null;
23
+ priceUsdMonthly: number;
24
+ } | null;
25
+ owner?: {
26
+ turnsPerDay: number;
27
+ };
28
+ /** Key resource type whose ledger spend counts against a payer's dollars. */
29
+ spendResourceType: string | null;
30
+ }
31
+ interface HubAllowancePlan extends HubAllowancePlanInput {
32
+ meter: string;
33
+ owner: {
34
+ turnsPerDay: number;
35
+ };
36
+ /** False while the meter runs on the default plan. */
37
+ configured: boolean;
38
+ updatedAt: string | null;
39
+ }
40
+ interface HubAllowanceSubject {
41
+ member: string;
42
+ role?: HubAllowanceRole;
43
+ /** The member whose keys pay for the turn, when that is someone else. */
44
+ payer?: string;
45
+ payerRole?: HubAllowanceRole;
46
+ }
47
+ interface HubAllowanceDecision {
48
+ /** `paywall`: paying lifts the limit. `allowance_reached`: nothing does today. */
49
+ decision: "admit" | "paywall" | "allowance_reached";
50
+ tier: HubAllowanceTier;
51
+ paywall: boolean;
52
+ turns: {
53
+ used: number;
54
+ limit: number;
55
+ };
56
+ usd: {
57
+ spent: number;
58
+ limit: number;
59
+ remaining: number;
60
+ } | null;
61
+ day: string;
62
+ resetsAt: string;
63
+ /**
64
+ * A paying payer's spend in the current paid period against what funds it:
65
+ * the plan price less Tangle's 10% fee, plus the free daily allowance for
66
+ * the period. A paid turn is refused once `remaining` is gone.
67
+ */
68
+ period?: {
69
+ spent: number;
70
+ funded: number;
71
+ remaining: number;
72
+ startsAt: string;
73
+ endsAt: string;
74
+ };
75
+ replay?: boolean;
76
+ }
77
+ interface HubAllowanceUsage {
78
+ day: string;
79
+ turns: number;
80
+ members: Array<{
81
+ member: string;
82
+ turns: number;
83
+ tier: HubAllowanceTier;
84
+ usdSpent: number | null;
85
+ }>;
86
+ lines: Array<{
87
+ line: string;
88
+ turns: number;
89
+ }>;
90
+ }
91
+ interface HubAllowanceGrant {
92
+ member: string;
93
+ tier: "paid";
94
+ expiresAt: string;
95
+ reference: string | null;
96
+ }
97
+ declare class HubAllowancesClient {
98
+ private readonly request;
99
+ constructor(request: <T>(path: string, init: RequestInit) => Promise<T>);
100
+ plan(meter: string): Promise<HubAllowancePlan>;
101
+ setPlan(meter: string, plan: HubAllowancePlanInput): Promise<HubAllowancePlan>;
102
+ /** Admit one turn or refuse it. Retrying the same `turnId` never counts twice. */
103
+ admit(meter: string, input: HubAllowanceSubject & {
104
+ turnId: string;
105
+ line?: string;
106
+ channel?: string;
107
+ }): Promise<HubAllowanceDecision>;
108
+ /** What the member's next turn would get, without counting anything. */
109
+ status(meter: string, subject: HubAllowanceSubject): Promise<HubAllowanceDecision>;
110
+ /** Move a member to the paid allowance until `expiresAt` (the paid period's end). */
111
+ grant(meter: string, member: string, input: {
112
+ expiresAt: string;
113
+ reference?: string | null;
114
+ }): Promise<HubAllowanceGrant>;
115
+ revoke(meter: string, member: string): Promise<void>;
116
+ /** Turns per member and per line on one UTC day (default today). */
117
+ usage(meter: string, day?: string): Promise<HubAllowanceUsage>;
118
+ private path;
119
+ private memberPath;
120
+ private body;
121
+ }
122
+ //#endregion
123
+ //#region src/apps.d.ts
124
+ /** App identity and customer permissions over the existing Platform transport.
125
+ * These operations do not authorize spending or expose upstream credentials. */
126
+ interface HubApp {
127
+ id: string;
128
+ clientId: string;
129
+ oauthClientId: string | null;
130
+ name: string;
131
+ redirectUris: string[];
132
+ allowedScopes: string[];
133
+ homepageUrl: string | null;
134
+ status: "active" | "revoked";
135
+ createdAt: string;
136
+ updatedAt: string;
137
+ }
138
+ interface HubAppCreateInput {
139
+ name: string;
140
+ redirectUris: string[];
141
+ allowedScopes: string[];
142
+ homepageUrl?: string;
143
+ /** Associate an existing owned login client in the same transaction as creation. */
144
+ oauthClientId?: string;
145
+ }
146
+ interface HubAppGrant {
147
+ id: string;
148
+ appId: string;
149
+ userId: string;
150
+ connectionId: string;
151
+ scopes: string[];
152
+ status: "active" | "revoked";
153
+ createdAt: string;
154
+ updatedAt: string;
155
+ revokedAt: string | null;
156
+ /** Display metadata is additive; older deployments may omit it. */
157
+ appName?: string | null;
158
+ oauthClientId?: string | null;
159
+ providerId?: string | null;
160
+ accountDisplay?: string | null;
161
+ connectionDisplayName?: string | null;
162
+ }
163
+ interface HubAppGrantRevoked {
164
+ grantId: string;
165
+ status: "revoked";
166
+ revokedAt: string | null;
167
+ tokensRevoked: number;
168
+ }
169
+ declare class HubAppsClient {
170
+ private readonly request;
171
+ readonly grants: {
172
+ list: () => Promise<HubAppGrant[]>;
173
+ revoke: (grantId: string) => Promise<HubAppGrantRevoked>;
174
+ };
175
+ constructor(request: <T>(path: string, init: RequestInit) => Promise<T>);
176
+ list(): Promise<HubApp[]>;
177
+ /** The secret is returned only by creation; keep it in your server vault. */
178
+ create(input: HubAppCreateInput): Promise<{
179
+ app: HubApp;
180
+ clientSecret: string;
181
+ }>;
182
+ /** Immutable association of two existing records with the same owner. */
183
+ linkOAuthClient(appId: string, clientId: string): Promise<{
184
+ appId: string;
185
+ oauthClientId: string;
186
+ }>;
187
+ revoke(appId: string): Promise<{
188
+ appId: string;
189
+ grantsRevoked: number;
190
+ tokensRevoked: number;
191
+ }>;
192
+ }
193
+ //#endregion
194
+ //#region src/inbound-webhooks.d.ts
195
+ /** Provider setup uses the existing authenticated Hub transport and vault. */
196
+ interface HubInboundWebhookCreateOptions {
197
+ /** Inkbox identity that owns all selected channels. */
198
+ identityId?: string;
199
+ mailboxId?: string;
200
+ phoneNumberId?: string;
201
+ imessage?: boolean;
202
+ /** Linq: explicit owned lines; omitted does not mean every account line. */
203
+ phoneNumbers?: string[];
204
+ /** Linq WhatsApp: explicit opaque IDs from numbers.list, not E.164 phone strings. */
205
+ phoneNumberIds?: string[];
206
+ /** Contiguity Console secret, or an existing Inkbox identity signing key. */
207
+ signingSecret?: string;
208
+ }
209
+ interface HubInboundWebhookCreateResponse {
210
+ url: string;
211
+ /** True only when the provider subscription was created by the server. */
212
+ provisioned?: boolean;
213
+ /** Self-configured legacy providers can return a newly minted secret once. */
214
+ secret?: string;
215
+ inboundAddress?: string;
216
+ requiresProviderSetup?: boolean;
217
+ }
218
+ interface HubInboundWebhookStatus {
219
+ configured: boolean;
220
+ url?: string;
221
+ /** Configuration is not evidence of a real delivered message. */
222
+ deliveryVerified: false;
223
+ requiresProviderSetup?: boolean;
224
+ }
225
+ /** Live provider readback for one explicitly selected Linq WhatsApp number. */
226
+ interface HubInboundPhoneNumberScope {
227
+ configured: true;
228
+ provisioned: true;
229
+ subscribed: true;
230
+ phoneNumberIds: string[];
231
+ }
232
+ declare class HubInboundWebhooksClient {
233
+ private readonly request;
234
+ constructor(request: <T>(path: string, init: RequestInit) => Promise<T>);
235
+ create(connectionId: string, options?: HubInboundWebhookCreateOptions): Promise<HubInboundWebhookCreateResponse>;
236
+ get(connectionId: string): Promise<HubInboundWebhookStatus>;
237
+ /** Add one owned Linq WhatsApp number without rotating the webhook secret. */
238
+ ensurePhoneNumber(connectionId: string, phoneNumberId: string): Promise<HubInboundPhoneNumberScope>;
239
+ /** Remove event subscriptions first. This does not silently rotate a live URL. */
240
+ delete(connectionId: string): Promise<{
241
+ removed: boolean;
242
+ }>;
243
+ private path;
244
+ }
245
+ //#endregion
246
+ //#region src/managed-numbers.d.ts
247
+ interface HubNumberReadiness {
248
+ configured: boolean;
249
+ provider: "inkbox";
250
+ transports: Array<"sms" | "imessage">;
251
+ billing: "prepaid_activation";
252
+ automaticRentalBilling: false;
253
+ deliveryVerified: false;
254
+ }
255
+ interface HubNumberQuote {
256
+ transport: "sms" | "imessage";
257
+ activationCents: number;
258
+ currency: "usd";
259
+ termsVersion: string;
260
+ terms: string;
261
+ expiresAt: number;
262
+ /** The binding the quote was issued for. Absent from older servers. */
263
+ clientReference?: string;
264
+ /** Opaque. Pass it back to `create`; never decode it. */
265
+ token: string;
266
+ }
267
+ /** One page of the owner's orders, newest first. */
268
+ interface HubNumberOrderPage {
269
+ orders: HubNumberOrder[];
270
+ /** Present while more orders exist. Older servers omit it and return one
271
+ * bounded page, so an absent cursor never proves an order does not exist. */
272
+ nextCursor?: string | null;
273
+ }
274
+ interface HubNumberListQuery {
275
+ /** Only orders requested for this binding, including closed ones. */
276
+ clientReference?: string;
277
+ cursor?: string;
278
+ /** 1 to 100; the server default is 100. */
279
+ limit?: number;
280
+ }
281
+ /** An operator's terminal decision on an order stuck in `needs_review`.
282
+ * Read-only for a creator: the resolution is made through the platform's
283
+ * admin surface, never through this client. */
284
+ interface HubNumberResolution {
285
+ action: "release" | "settle" | "abandon";
286
+ operator: string;
287
+ reason: string;
288
+ at: number;
289
+ /** Present while the operator's action is still running. The decision is
290
+ * not final and the order can still return to review. */
291
+ pending?: true;
292
+ /** Present when a `settle` handed a live, unfinished order back to
293
+ * provisioning, so the order is working again rather than closed. */
294
+ requeued?: true;
295
+ }
296
+ interface HubNumberOrder {
297
+ id: string;
298
+ clientReference: string;
299
+ transport: "sms" | "imessage";
300
+ status: "pending" | "provider_pending" | "needs_review" | "ready_for_setup" | "cancelled";
301
+ phase: "identity" | "number" | "credential" | "connection" | "complete";
302
+ address: string | null;
303
+ connectionId: string | null;
304
+ identityId: string | null;
305
+ providerNumberId: string | null;
306
+ billingStatus: "unreserved" | "reserved" | "settled" | "released";
307
+ cancellation: "none" | "requested" | "needs_review" | "released" | "abandoned";
308
+ errorCode: string | null;
309
+ nextAttemptAt: number | null;
310
+ resolution: HubNumberResolution | null;
311
+ deliveryVerified: false;
312
+ activationCents: number;
313
+ currency: "usd";
314
+ terms: string;
315
+ }
316
+ /** Administrative number operations through Hub's authenticated transport.
317
+ * A mutation is one attempt; an uncertain create reuses its quote and reference. */
318
+ declare class HubManagedNumbersClient {
319
+ private readonly request;
320
+ constructor(request: <T>(path: string, init: RequestInit) => Promise<T>);
321
+ readiness(): Promise<HubNumberReadiness>;
322
+ /** One page of orders. Scope by `clientReference` to ask about one binding,
323
+ * and follow `nextCursor` for the rest; a page is never ownership evidence. */
324
+ list(query?: HubNumberListQuery): Promise<HubNumberOrderPage>;
325
+ get(id: string): Promise<{
326
+ order: HubNumberOrder;
327
+ }>;
328
+ quote(input: {
329
+ transport: "sms" | "imessage";
330
+ clientReference: string;
331
+ }): Promise<{
332
+ quote: HubNumberQuote;
333
+ }>;
334
+ /** `clientReference` and `transport`, when given, must match the signed
335
+ * quote or Hub refuses the purchase with a conflict. */
336
+ create(input: {
337
+ quoteToken: string;
338
+ consent: true;
339
+ state?: string;
340
+ clientReference?: string;
341
+ transport?: "sms" | "imessage";
342
+ }): Promise<{
343
+ order: HubNumberOrder;
344
+ }>;
345
+ /** Fences references so no order can take them again. Call it as the last
346
+ * step before retiring the resource they name: a purchase that races the
347
+ * retirement is then refused (`409 number_reference_fenced`) instead of
348
+ * binding a line to a resource that is gone. Refused with
349
+ * `409 number_reference_held` while a live order holds one of them; cancel
350
+ * it first. A cancelled order no longer holds its reference, so the fence
351
+ * succeeds as soon as `cancel` returns, whether or not its release is still
352
+ * pending. Repeating a fence is harmless. */
353
+ fence(input: {
354
+ clientReferences: string[];
355
+ }): Promise<{
356
+ clientReferences: string[];
357
+ }>;
358
+ advance(id: string): Promise<{
359
+ order: HubNumberOrder;
360
+ }>;
361
+ cancel(id: string): Promise<{
362
+ order: HubNumberOrder;
363
+ }>;
364
+ private path;
365
+ private post;
366
+ }
367
+ //#endregion
1
368
  //#region src/types.d.ts
2
369
  type HubPrincipalKind = "user_session" | "api_key" | "sandbox_runtime";
3
370
  interface HubSuccessEnvelope<TData> {
@@ -14,7 +381,7 @@ interface HubErrorBody {
14
381
  message: string;
15
382
  details?: unknown;
16
383
  }
17
- type HubErrorCode = "HUB_UNAUTHENTICATED" | "HUB_FORBIDDEN" | "HUB_INVALID_INPUT" | "HUB_INVALID_STATE" | "HUB_PROVIDER_MISSING" | "HUB_CONNECTION_MISSING" | "HUB_CONNECTION_REVOKED" | "HUB_TOKEN_EXPIRED" | "HUB_TOKEN_REPLAYED" | "HUB_TOKEN_REVOKED" | "HUB_TOKEN_ACTION_MISMATCH" | "HUB_POLICY_DENIED" | "HUB_APPROVAL_REQUIRED" | "HUB_EXECUTOR_FAILURE" | "HUB_PROVIDER_FAILURE" | "HUB_CONFIG_MISSING" | "HUB_CONFIG_INVALID" | "HUB_NOT_FOUND" | "HUB_NOT_IMPLEMENTED" | "HUB_CONFLICT" | "VALIDATION_ERROR" | "WORKFLOW_INVALID" | "NOT_FOUND" | "UNAUTHORIZED" | "CONFLICT" | "MISSING_RUN_INPUTS" | "WORKFLOW_DISABLED" | "PAYLOAD_TOO_LARGE" | "WORKFLOW_RUN_TIMEOUT" | `HUB_HTTP_${number}`;
384
+ type HubErrorCode = "HUB_UNAUTHENTICATED" | "HUB_FORBIDDEN" | "HUB_INVALID_INPUT" | "HUB_INVALID_STATE" | "HUB_PROVIDER_MISSING" | "HUB_CONNECTION_MISSING" | "HUB_CONNECTION_REVOKED" | "HUB_TOKEN_EXPIRED" | "HUB_TOKEN_REPLAYED" | "HUB_TOKEN_REVOKED" | "HUB_TOKEN_ACTION_MISMATCH" | "HUB_POLICY_DENIED" | "HUB_APPROVAL_REQUIRED" | "HUB_EXECUTOR_FAILURE" | "HUB_PROVIDER_FAILURE" | "HUB_PROVIDER_REJECTED" | "HUB_CONFIG_MISSING" | "HUB_CONFIG_INVALID" | "HUB_NOT_FOUND" | "HUB_NOT_IMPLEMENTED" | "HUB_CONFLICT" | "HUB_IDEMPOTENCY_CONFLICT" | "HUB_IDEMPOTENCY_IN_FLIGHT" | "VALIDATION_ERROR" | "WORKFLOW_INVALID" | "NOT_FOUND" | "UNAUTHORIZED" | "CONFLICT" | "MISSING_RUN_INPUTS" | "WORKFLOW_DISABLED" | "PAYLOAD_TOO_LARGE" | "WORKFLOW_RUN_TIMEOUT" | `HUB_HTTP_${number}`;
18
385
  interface HubStatusResponse {
19
386
  contract: unknown;
20
387
  principal: HubPrincipal;
@@ -36,6 +403,7 @@ interface HubConnection {
36
403
  providerId: string;
37
404
  displayName: string;
38
405
  accountDisplay: string | null;
406
+ providerAccountId: string | null;
39
407
  scopes: string[];
40
408
  status: "active" | "revoked" | "unhealthy" | "reconnect_required";
41
409
  health: "unknown" | "healthy" | "unhealthy" | "rate_limited";
@@ -168,6 +536,15 @@ interface HubEventDelivery {
168
536
  }
169
537
  /** A connector's auth model. */
170
538
  type HubProviderAuthKind = "oauth2" | "api_key" | "none" | "custom";
539
+ /** One non-secret value needed before an OAuth redirect can be built. Tenant-
540
+ * scoped providers use this for the account label in their OAuth hostname. */
541
+ interface HubOAuthConnectionParameter {
542
+ key: string;
543
+ label: string;
544
+ description: string;
545
+ placeholder: string;
546
+ required: true;
547
+ }
171
548
  interface HubProvider {
172
549
  providerId: string;
173
550
  title: string;
@@ -193,6 +570,9 @@ interface HubProvider {
193
570
  /** True when the provider's OAuth app credentials are wired, i.e. a connect
194
571
  * flow can actually start. UIs offer Connect only for configured providers. */
195
572
  configured: boolean;
573
+ /** Values the user must supply before OAuth starts. Empty or absent means the
574
+ * provider can redirect immediately. */
575
+ connectionParameters?: HubOAuthConnectionParameter[];
196
576
  /**
197
577
  * True when this deployment can receive this provider's inbound events.
198
578
  * This is separate from `configured`: OAuth can be ready while the shared
@@ -209,6 +589,7 @@ interface HubOAuthStartRequest {
209
589
  provider: string;
210
590
  returnUrl?: string;
211
591
  cli?: boolean;
592
+ connectionParameters?: Record<string, string>;
212
593
  }
213
594
  interface HubOAuthCallbackSuccessQuery {
214
595
  provider: string;
@@ -269,7 +650,18 @@ interface HubOAuthCallbackResponse {
269
650
  interface HubApiKeyConnectRequest {
270
651
  provider: string;
271
652
  apiKey: string;
653
+ /** Connector-owned setup values. Hub validates them before testing the key. */
654
+ metadata?: HubApiKeyConnectionMetadata;
272
655
  }
656
+ type HubApiKeyConnectionMetadata = {
657
+ propertyId: string;
658
+ currency?: string;
659
+ } | {
660
+ listings: Array<{
661
+ id: string;
662
+ pms: string;
663
+ }>;
664
+ };
273
665
  /** Result of an api-key connect: the created (or reconnected) connection.
274
666
  * Synchronous — there is no redirect leg, unlike the OAuth flow. */
275
667
  interface HubApiKeyConnectResponse {
@@ -285,7 +677,7 @@ interface HubConnectionDeleteResponse {
285
677
  interface HubConnectionHealthRequest {
286
678
  connectionId: string;
287
679
  }
288
- type HubConnectionHealthStatus = "healthy" | "reconnect_required" | "unhealthy" | "rate_limited";
680
+ type HubConnectionHealthStatus = "healthy" | "reconnect_required" | "unhealthy" | "rate_limited" | "unsupported";
289
681
  interface HubConnectionHealthError {
290
682
  code: string;
291
683
  message: string;
@@ -345,9 +737,18 @@ interface HubExecRequest {
345
737
  path: string;
346
738
  input?: unknown;
347
739
  connectionId?: string;
740
+ /** Caller-minted key for this exec. The platform ledger replays the first
741
+ * call's result for a retry that carries the same key, and rejects a key
742
+ * reused for a different request. On the capability-token arm the key only
743
+ * reaches the connector for provider-native dedupe: that arm is at-most-once
744
+ * per token and replays no stored result. */
745
+ idempotencyKey?: string;
348
746
  }
349
747
  interface HubExecResponse<TResult = unknown> {
350
748
  result: TResult;
749
+ /** True when the result was replayed from a previous call with the same
750
+ * idempotency key, so the action did not run again. */
751
+ replayed?: boolean;
351
752
  }
352
753
  interface HubTokenMintRequest {
353
754
  connectionId?: string;
@@ -505,7 +906,7 @@ interface HubGithubAppInstallation {
505
906
  accountType: string | null;
506
907
  /** "all" ⇒ every repo under the account; "selected" ⇒ only repoFullNames. */
507
908
  repositorySelection: "all" | "selected";
508
- /** Lowercased "owner/repo" — empty when repositorySelection = "all". */
909
+ /** Metadata omits names; use githubApp.listRepos(id) for a live caller-safe list. */
509
910
  repoFullNames: string[];
510
911
  suspended: boolean;
511
912
  }
@@ -558,8 +959,10 @@ interface HubGithubAppSyncResponse {
558
959
  }
559
960
  interface HubGithubAppListReposResponse {
560
961
  installationId: number;
561
- /** Lowercased "owner/repo" — covers the full registry view of the install. */
962
+ /** Complete live intersection of App coverage and the caller's GitHub access. */
562
963
  repoFullNames: string[];
964
+ /** True only when both upstream listings completed; failures return an error. */
965
+ complete: true;
563
966
  }
564
967
  interface HubGithubAppIsRepoInstalledRequest {
565
968
  owner: string;
@@ -1102,6 +1505,14 @@ interface HubWorkflowConnectionRequirement {
1102
1505
  /** Where to satisfy the requirement (App install flow for `github_app`,
1103
1506
  * integrations page otherwise); null when no target exists. */
1104
1507
  connectUrl: string | null;
1508
+ /** Another requirement in the same list that must be satisfied first — a
1509
+ * `github_app` install is claimed through the `github` connection, so it is
1510
+ * refused while that connection is missing. Null when nothing blocks this
1511
+ * requirement. The list is ordered prerequisite-first. */
1512
+ prerequisite: {
1513
+ provider: string;
1514
+ kind: "integration" | "github_app";
1515
+ } | null;
1105
1516
  }
1106
1517
  /**
1107
1518
  * Result of instantiating a template. `created: false` is NOT an error — an
@@ -1225,8 +1636,11 @@ declare class HubClient {
1225
1636
  readonly fetch: typeof fetch;
1226
1637
  readonly apiKey?: string;
1227
1638
  readonly authHeaders?: HubAuthHeaders;
1639
+ readonly allowances: HubAllowancesClient;
1640
+ readonly apps: HubAppsClient;
1228
1641
  readonly connections: HubConnectionsClient;
1229
1642
  readonly channels: HubChannelsClient;
1643
+ readonly numbers: HubManagedNumbersClient;
1230
1644
  readonly eventSubscriptions: HubEventSubscriptionsClient;
1231
1645
  readonly permissions: HubPermissionsClient;
1232
1646
  readonly tokens: HubTokensClient;
@@ -1304,6 +1718,13 @@ interface HubToolSearchOptions {
1304
1718
  interface HubToolInvokeOptions {
1305
1719
  connectionId?: string;
1306
1720
  approve?: boolean;
1721
+ /** Caller-minted key for this invoke. On the direct exec arm the platform
1722
+ * ledger replays the first call's result for a retry that carries the same
1723
+ * key, and refuses a key bound to a different request. The approval and
1724
+ * capability-token retries re-send the key, and the connector receives it
1725
+ * for provider-native dedupe. Capability-token execution stays at-most-once
1726
+ * per token: it refuses a replay instead of replaying a stored result. */
1727
+ idempotencyKey?: string;
1307
1728
  }
1308
1729
  declare class HubToolsClient {
1309
1730
  private readonly request;
@@ -1311,12 +1732,18 @@ declare class HubToolsClient {
1311
1732
  search(query: string, options?: HubToolSearchOptions): Promise<HubToolsSearchResponse>;
1312
1733
  sources(): Promise<HubToolSourcesResponse>;
1313
1734
  describe(path: string): Promise<HubToolsDescribeResponse>;
1314
- invoke<TResult = unknown>(path: string, input: unknown, options?: HubToolInvokeOptions): Promise<HubExecResponse<TResult>>;
1735
+ /**
1736
+ * Run one hub tool. `raw` is the tool input: the SDK forwards it verbatim as
1737
+ * the request body's `input`, and the server validates it against the tool's
1738
+ * own schema, so the client never gives it a shape.
1739
+ */
1740
+ invoke<TResult = unknown>(path: string, raw: unknown, options?: HubToolInvokeOptions): Promise<HubExecResponse<TResult>>;
1315
1741
  private buildExecInit;
1316
1742
  }
1317
1743
  interface HubConnectionStartOptions {
1318
1744
  returnUrl?: string;
1319
1745
  cli?: boolean;
1746
+ connectionParameters?: Record<string, string>;
1320
1747
  }
1321
1748
  declare class HubChannelsClient {
1322
1749
  private readonly request;
@@ -1334,6 +1761,7 @@ declare class HubEventSubscriptionsClient {
1334
1761
  }
1335
1762
  declare class HubConnectionsClient {
1336
1763
  private readonly request;
1764
+ readonly inboundWebhook: HubInboundWebhooksClient;
1337
1765
  constructor(request: <TData>(path: string, init: RequestInit) => Promise<TData>);
1338
1766
  list(): Promise<HubConnectionsResponse>;
1339
1767
  /** Connector catalog: every provider the hub can expose, each flagged with
@@ -1346,8 +1774,9 @@ declare class HubConnectionsClient {
1346
1774
  /** Connect a non-OAuth (api-key) connector by submitting the user's key.
1347
1775
  * The server validates the key with a live probe before persisting and
1348
1776
  * returns the created (or reconnected) connection — there is no redirect,
1349
- * unlike `start`. */
1350
- connectApiKey(provider: string, apiKey: string): Promise<HubApiKeyConnectResponse>;
1777
+ * unlike `start`. Cloudbeds requires propertyId metadata and PriceLabs
1778
+ * requires listing ID/PMS pairs; other providers have no metadata. */
1779
+ connectApiKey(provider: string, apiKey: string, metadata?: HubApiKeyConnectRequest["metadata"]): Promise<HubApiKeyConnectResponse>;
1351
1780
  revoke(connectionId: string): Promise<HubConnectionDeleteResponse>;
1352
1781
  health(connectionId: string): Promise<HubConnectionHealthResponse>;
1353
1782
  }
@@ -1629,15 +2058,18 @@ declare class HubWorkflowsClient {
1629
2058
  /**
1630
2059
  * Upsert a key; returns the entry with its NEW version (increments on every
1631
2060
  * write). Throws `HubSdkError(KV_VALUE_TOO_LARGE)` past the 64KiB value cap
1632
- * or `KV_KEY_LIMIT` past the per-workflow key cap.
2061
+ * or `KV_KEY_LIMIT` past the per-workflow key cap. `raw` is the caller's
2062
+ * value, stored and read back verbatim, so the client never gives it a shape.
1633
2063
  */
1634
- putKv(id: string, key: string, value: unknown): Promise<HubWorkflowKvEntry>;
2064
+ putKv(id: string, key: string, raw: unknown): Promise<HubWorkflowKvEntry>;
1635
2065
  /**
1636
2066
  * Compare-and-swap: the write lands only when the stored version still
1637
2067
  * equals `expectedVersion`; otherwise `HubSdkError(KV_VERSION_CONFLICT)`
1638
- * (409) — re-read and retry. Creation is {@link putKv}'s job.
2068
+ * (409) — re-read and retry. Creation is {@link putKv}'s job. `raw` is the
2069
+ * caller's value, stored and read back verbatim, so the client never gives it
2070
+ * a shape.
1639
2071
  */
1640
- casKv(id: string, key: string, expectedVersion: number, value: unknown): Promise<HubWorkflowKvEntry>;
2072
+ casKv(id: string, key: string, expectedVersion: number, raw: unknown): Promise<HubWorkflowKvEntry>;
1641
2073
  /** Delete a key; idempotent — `deleted` reports whether a row was removed. */
1642
2074
  deleteKv(id: string, key: string): Promise<HubWorkflowKvDeleteResponse>;
1643
2075
  /** The curated starter gallery runnable on THIS deployment: metadata,
@@ -1766,5 +2198,5 @@ declare function parseHubEventDelivery(input: string | unknown): HubEventDeliver
1766
2198
  //#region src/redaction.d.ts
1767
2199
  declare function redactHubValue(value: unknown): unknown;
1768
2200
  //#endregion
1769
- export { type AuthenticateHubEventRequestInput, type DeriveHubEventCallbackSecretInput, HUB_API_KEY_ENV_VAR, HUB_CAPABILITY_TOKEN_ENV_VAR, HUB_URL_ENV_VAR, type HubAgentIterationSpan, type HubAgentRunDetail, type HubApiKeyConnectRequest, type HubApiKeyConnectResponse, type HubApproval, type HubApprovalCapabilityToken, type HubApprovalDecisionResponse, type HubApprovalStatus, HubApprovalsClient, HubAuditClient, type HubAuditEvent, type HubAuditListRequest, type HubAuditResponse, type HubAuthHeaders, type HubCapabilityToken, type HubChannel, type HubChannelCreateResponse, type HubChannelDeleteResponse, HubChannelsClient, type HubChannelsResponse, HubClient, type HubClientFromEnvOptions, type HubClientOptions, type HubConnection, type HubConnectionDeleteRequest, type HubConnectionDeleteResponse, type HubConnectionHealthError, type HubConnectionHealthInfo, type HubConnectionHealthRequest, type HubConnectionHealthResponse, type HubConnectionHealthStatus, type HubConnectionStartOptions, HubConnectionsClient, type HubConnectionsResponse, type HubEmailChannel, type HubEmailChannelCreateRequest, type HubEnv, type HubEnvelope, type HubErrorBody, type HubErrorCode, type HubErrorEnvelope, type HubEventCondition, type HubEventConditionScalar, type HubEventDelivery, HubEventDeliveryError, type HubEventRequestFailureCode, type HubEventRequestResult, type HubEventSignatureFailure, type HubEventSignatureResult, type HubEventSubscription, type HubEventSubscriptionCallback, type HubEventSubscriptionCreateRequest, type HubEventSubscriptionCreateResponse, type HubEventSubscriptionDeleteResponse, type HubEventSubscriptionFilter, type HubEventSubscriptionSource, HubEventSubscriptionsClient, type HubEventSubscriptionsResponse, type HubExecRequest, type HubExecResponse, HubGithubAppClient, type HubGithubAppDisconnectResponse, type HubGithubAppInstallation, type HubGithubAppInstallationResponse, type HubGithubAppIsRepoInstalledRequest, type HubGithubAppIsRepoInstalledResponse, type HubGithubAppListInstallationsResponse, type HubGithubAppListReposResponse, type HubGithubAppManagedInstallation, type HubGithubAppMintInstallationTokenRequest, type HubGithubAppMintInstallationTokenResponse, type HubGithubAppSyncResponse, type HubGithubAppSyncedInstallation, type HubManualRunInput, type HubOAuthCallbackErrorQuery, type HubOAuthCallbackQuery, type HubOAuthCallbackResponse, type HubOAuthCallbackSuccessQuery, type HubOAuthStartRequest, type HubOAuthStartResponse, HubPermissionsClient, type HubPolicy, type HubPolicyDecision, type HubPolicyDeleteRequest, type HubPolicyDeleteResponse, type HubPolicyListRequest, type HubPolicyListResponse, type HubPolicyResponse, type HubPolicyUpdateRequest, type HubPrincipal, type HubPrincipalKind, type HubProvider, type HubProviderAuthKind, type HubProviderEvent, type HubProvidersResponse, HubSdkError, type HubStatusConnections, type HubStatusResponse, type HubSuccessEnvelope, type HubTokenListOptions, type HubTokenMintRequest, type HubTokenMintResponse, type HubTokenRevokeResponse, HubTokensClient, type HubTokensListResponse, type HubTool, type HubToolInvokeOptions, type HubToolRisk, type HubToolSearchOptions, type HubToolSource, type HubToolSourcesResponse, HubToolsClient, type HubToolsDescribeRequest, type HubToolsDescribeResponse, type HubToolsSearchRequest, type HubToolsSearchResponse, type HubUnimplementedErrorEnvelope, type HubWhatsappEmbeddedSignupCompleteRequest, type HubWhatsappEmbeddedSignupCompleteResponse, type HubWhatsappEmbeddedSignupStartRequest, type HubWhatsappEmbeddedSignupStartResponse, type HubWorkflow, type HubWorkflowAction, type HubWorkflowActionResult, type HubWorkflowAgentStep, type HubWorkflowArtifact, type HubWorkflowArtifactDownload, type HubWorkflowArtifactRef, type HubWorkflowArtifactsResponse, type HubWorkflowCondition, type HubWorkflowConditionOp, type HubWorkflowConditionScalar, type HubWorkflowConnectionRequirement, type HubWorkflowDecision, type HubWorkflowDecisionOnTimeout, type HubWorkflowDecisionResolveResult, type HubWorkflowDecisionResolvedVia, type HubWorkflowDecisionStatus, type HubWorkflowDistillationCandidate, type HubWorkflowEdgeVerdicts, type HubWorkflowEventFilter, type HubWorkflowFailureCluster, type HubWorkflowFleetEntry, type HubWorkflowFleetInsights, type HubWorkflowFleetWindow, type HubWorkflowGraphEdge, type HubWorkflowGraphJoinRule, type HubWorkflowGraphNode, type HubWorkflowGraphSpec, type HubWorkflowHealth, type HubWorkflowHookEndpoint, type HubWorkflowHookToken, type HubWorkflowKvDeleteResponse, type HubWorkflowKvEntry, type HubWorkflowKvEntryMeta, type HubWorkflowKvListResponse, type HubWorkflowNodeHealth, type HubWorkflowOnErrorOutcome, type HubWorkflowPendingDecision, type HubWorkflowPendingDecisionsResponse, type HubWorkflowProposal, type HubWorkflowProposalInput, type HubWorkflowRevision, type HubWorkflowRevisionMeta, type HubWorkflowRevisionSource, type HubWorkflowRevisionStatus, type HubWorkflowRun, type HubWorkflowRunCancelResult, type HubWorkflowRunDetail, type HubWorkflowRunEnqueued, type HubWorkflowRunInputs, type HubWorkflowRunRetried, type HubWorkflowRunStatus, type HubWorkflowRunStepsPage, type HubWorkflowRunStreamEvent, type HubWorkflowRunSummary, type HubWorkflowRunsPage, type HubWorkflowSchemaResponse, type HubWorkflowTemplate, type HubWorkflowTemplateCategory, type HubWorkflowTemplateInstantiateResult, type HubWorkflowTemplateParameter, type HubWorkflowTrigger, type HubWorkflowValidateResponse, type HubWorkflowValidationError, HubWorkflowsClient, type VerifyHubEventSignatureInput, authenticateHubEventRequest, deriveHubEventCallbackSecret, parseHubEventDelivery, redactHubValue, resolveHubAuth, resolveHubBaseUrl, verifyHubEventSignature };
2201
+ export { type AuthenticateHubEventRequestInput, type DeriveHubEventCallbackSecretInput, HUB_API_KEY_ENV_VAR, HUB_CAPABILITY_TOKEN_ENV_VAR, HUB_URL_ENV_VAR, type HubAgentIterationSpan, type HubAgentRunDetail, type HubAllowanceDecision, type HubAllowanceGrant, type HubAllowancePlan, type HubAllowancePlanInput, type HubAllowanceRole, type HubAllowanceSubject, type HubAllowanceTier, type HubAllowanceUsage, HubAllowancesClient, type HubApiKeyConnectRequest, type HubApiKeyConnectResponse, type HubApiKeyConnectionMetadata, type HubApp, type HubAppCreateInput, type HubAppGrant, type HubAppGrantRevoked, type HubApproval, type HubApprovalCapabilityToken, type HubApprovalDecisionResponse, type HubApprovalStatus, HubApprovalsClient, HubAppsClient, HubAuditClient, type HubAuditEvent, type HubAuditListRequest, type HubAuditResponse, type HubAuthHeaders, type HubCapabilityToken, type HubChannel, type HubChannelCreateResponse, type HubChannelDeleteResponse, HubChannelsClient, type HubChannelsResponse, HubClient, type HubClientFromEnvOptions, type HubClientOptions, type HubConnection, type HubConnectionDeleteRequest, type HubConnectionDeleteResponse, type HubConnectionHealthError, type HubConnectionHealthInfo, type HubConnectionHealthRequest, type HubConnectionHealthResponse, type HubConnectionHealthStatus, type HubConnectionStartOptions, HubConnectionsClient, type HubConnectionsResponse, type HubEmailChannel, type HubEmailChannelCreateRequest, type HubEnv, type HubEnvelope, type HubErrorBody, type HubErrorCode, type HubErrorEnvelope, type HubEventCondition, type HubEventConditionScalar, type HubEventDelivery, HubEventDeliveryError, type HubEventRequestFailureCode, type HubEventRequestResult, type HubEventSignatureFailure, type HubEventSignatureResult, type HubEventSubscription, type HubEventSubscriptionCallback, type HubEventSubscriptionCreateRequest, type HubEventSubscriptionCreateResponse, type HubEventSubscriptionDeleteResponse, type HubEventSubscriptionFilter, type HubEventSubscriptionSource, HubEventSubscriptionsClient, type HubEventSubscriptionsResponse, type HubExecRequest, type HubExecResponse, HubGithubAppClient, type HubGithubAppDisconnectResponse, type HubGithubAppInstallation, type HubGithubAppInstallationResponse, type HubGithubAppIsRepoInstalledRequest, type HubGithubAppIsRepoInstalledResponse, type HubGithubAppListInstallationsResponse, type HubGithubAppListReposResponse, type HubGithubAppManagedInstallation, type HubGithubAppMintInstallationTokenRequest, type HubGithubAppMintInstallationTokenResponse, type HubGithubAppSyncResponse, type HubGithubAppSyncedInstallation, type HubInboundPhoneNumberScope, type HubInboundWebhookCreateOptions, type HubInboundWebhookCreateResponse, type HubInboundWebhookStatus, HubInboundWebhooksClient, HubManagedNumbersClient, type HubManualRunInput, type HubNumberListQuery, type HubNumberOrder, type HubNumberOrderPage, type HubNumberQuote, type HubNumberReadiness, type HubNumberResolution, type HubOAuthCallbackErrorQuery, type HubOAuthCallbackQuery, type HubOAuthCallbackResponse, type HubOAuthCallbackSuccessQuery, type HubOAuthConnectionParameter, type HubOAuthStartRequest, type HubOAuthStartResponse, HubPermissionsClient, type HubPolicy, type HubPolicyDecision, type HubPolicyDeleteRequest, type HubPolicyDeleteResponse, type HubPolicyListRequest, type HubPolicyListResponse, type HubPolicyResponse, type HubPolicyUpdateRequest, type HubPrincipal, type HubPrincipalKind, type HubProvider, type HubProviderAuthKind, type HubProviderEvent, type HubProvidersResponse, HubSdkError, type HubStatusConnections, type HubStatusResponse, type HubSuccessEnvelope, type HubTokenListOptions, type HubTokenMintRequest, type HubTokenMintResponse, type HubTokenRevokeResponse, HubTokensClient, type HubTokensListResponse, type HubTool, type HubToolInvokeOptions, type HubToolRisk, type HubToolSearchOptions, type HubToolSource, type HubToolSourcesResponse, HubToolsClient, type HubToolsDescribeRequest, type HubToolsDescribeResponse, type HubToolsSearchRequest, type HubToolsSearchResponse, type HubUnimplementedErrorEnvelope, type HubWhatsappEmbeddedSignupCompleteRequest, type HubWhatsappEmbeddedSignupCompleteResponse, type HubWhatsappEmbeddedSignupStartRequest, type HubWhatsappEmbeddedSignupStartResponse, type HubWorkflow, type HubWorkflowAction, type HubWorkflowActionResult, type HubWorkflowAgentStep, type HubWorkflowArtifact, type HubWorkflowArtifactDownload, type HubWorkflowArtifactRef, type HubWorkflowArtifactsResponse, type HubWorkflowCondition, type HubWorkflowConditionOp, type HubWorkflowConditionScalar, type HubWorkflowConnectionRequirement, type HubWorkflowDecision, type HubWorkflowDecisionOnTimeout, type HubWorkflowDecisionResolveResult, type HubWorkflowDecisionResolvedVia, type HubWorkflowDecisionStatus, type HubWorkflowDistillationCandidate, type HubWorkflowEdgeVerdicts, type HubWorkflowEventFilter, type HubWorkflowFailureCluster, type HubWorkflowFleetEntry, type HubWorkflowFleetInsights, type HubWorkflowFleetWindow, type HubWorkflowGraphEdge, type HubWorkflowGraphJoinRule, type HubWorkflowGraphNode, type HubWorkflowGraphSpec, type HubWorkflowHealth, type HubWorkflowHookEndpoint, type HubWorkflowHookToken, type HubWorkflowKvDeleteResponse, type HubWorkflowKvEntry, type HubWorkflowKvEntryMeta, type HubWorkflowKvListResponse, type HubWorkflowNodeHealth, type HubWorkflowOnErrorOutcome, type HubWorkflowPendingDecision, type HubWorkflowPendingDecisionsResponse, type HubWorkflowProposal, type HubWorkflowProposalInput, type HubWorkflowRevision, type HubWorkflowRevisionMeta, type HubWorkflowRevisionSource, type HubWorkflowRevisionStatus, type HubWorkflowRun, type HubWorkflowRunCancelResult, type HubWorkflowRunDetail, type HubWorkflowRunEnqueued, type HubWorkflowRunInputs, type HubWorkflowRunRetried, type HubWorkflowRunStatus, type HubWorkflowRunStepsPage, type HubWorkflowRunStreamEvent, type HubWorkflowRunSummary, type HubWorkflowRunsPage, type HubWorkflowSchemaResponse, type HubWorkflowTemplate, type HubWorkflowTemplateCategory, type HubWorkflowTemplateInstantiateResult, type HubWorkflowTemplateParameter, type HubWorkflowTrigger, type HubWorkflowValidateResponse, type HubWorkflowValidationError, HubWorkflowsClient, type VerifyHubEventSignatureInput, authenticateHubEventRequest, deriveHubEventCallbackSecret, parseHubEventDelivery, redactHubValue, resolveHubAuth, resolveHubBaseUrl, verifyHubEventSignature };
1770
2202
  //# sourceMappingURL=index.d.ts.map