@tangle-network/hub-sdk 0.15.3-develop.20260731071553.b437581 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,3 +1,324 @@
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
+ replay?: boolean;
64
+ }
65
+ interface HubAllowanceUsage {
66
+ day: string;
67
+ turns: number;
68
+ members: Array<{
69
+ member: string;
70
+ turns: number;
71
+ tier: HubAllowanceTier;
72
+ usdSpent: number | null;
73
+ }>;
74
+ lines: Array<{
75
+ line: string;
76
+ turns: number;
77
+ }>;
78
+ }
79
+ interface HubAllowanceGrant {
80
+ member: string;
81
+ tier: "paid";
82
+ expiresAt: string;
83
+ reference: string | null;
84
+ }
85
+ declare class HubAllowancesClient {
86
+ private readonly request;
87
+ constructor(request: <T>(path: string, init: RequestInit) => Promise<T>);
88
+ plan(meter: string): Promise<HubAllowancePlan>;
89
+ setPlan(meter: string, plan: HubAllowancePlanInput): Promise<HubAllowancePlan>;
90
+ /** Admit one turn or refuse it. Retrying the same `turnId` never counts twice. */
91
+ admit(meter: string, input: HubAllowanceSubject & {
92
+ turnId: string;
93
+ line?: string;
94
+ channel?: string;
95
+ }): Promise<HubAllowanceDecision>;
96
+ /** What the member's next turn would get, without counting anything. */
97
+ status(meter: string, subject: HubAllowanceSubject): Promise<HubAllowanceDecision>;
98
+ /** Move a member to the paid allowance until `expiresAt` (the paid period's end). */
99
+ grant(meter: string, member: string, input: {
100
+ expiresAt: string;
101
+ reference?: string | null;
102
+ }): Promise<HubAllowanceGrant>;
103
+ revoke(meter: string, member: string): Promise<void>;
104
+ /** Turns per member and per line on one UTC day (default today). */
105
+ usage(meter: string, day?: string): Promise<HubAllowanceUsage>;
106
+ private path;
107
+ private memberPath;
108
+ private body;
109
+ }
110
+ //#endregion
111
+ //#region src/apps.d.ts
112
+ /** App identity and customer permissions over the existing Platform transport.
113
+ * These operations do not authorize spending or expose upstream credentials. */
114
+ interface HubApp {
115
+ id: string;
116
+ clientId: string;
117
+ oauthClientId: string | null;
118
+ name: string;
119
+ redirectUris: string[];
120
+ allowedScopes: string[];
121
+ homepageUrl: string | null;
122
+ status: "active" | "revoked";
123
+ createdAt: string;
124
+ updatedAt: string;
125
+ }
126
+ interface HubAppCreateInput {
127
+ name: string;
128
+ redirectUris: string[];
129
+ allowedScopes: string[];
130
+ homepageUrl?: string;
131
+ /** Associate an existing owned login client in the same transaction as creation. */
132
+ oauthClientId?: string;
133
+ }
134
+ interface HubAppGrant {
135
+ id: string;
136
+ appId: string;
137
+ userId: string;
138
+ connectionId: string;
139
+ scopes: string[];
140
+ status: "active" | "revoked";
141
+ createdAt: string;
142
+ updatedAt: string;
143
+ revokedAt: string | null;
144
+ /** Display metadata is additive; older deployments may omit it. */
145
+ appName?: string | null;
146
+ oauthClientId?: string | null;
147
+ providerId?: string | null;
148
+ accountDisplay?: string | null;
149
+ connectionDisplayName?: string | null;
150
+ }
151
+ interface HubAppGrantRevoked {
152
+ grantId: string;
153
+ status: "revoked";
154
+ revokedAt: string | null;
155
+ tokensRevoked: number;
156
+ }
157
+ declare class HubAppsClient {
158
+ private readonly request;
159
+ readonly grants: {
160
+ list: () => Promise<HubAppGrant[]>;
161
+ revoke: (grantId: string) => Promise<HubAppGrantRevoked>;
162
+ };
163
+ constructor(request: <T>(path: string, init: RequestInit) => Promise<T>);
164
+ list(): Promise<HubApp[]>;
165
+ /** The secret is returned only by creation; keep it in your server vault. */
166
+ create(input: HubAppCreateInput): Promise<{
167
+ app: HubApp;
168
+ clientSecret: string;
169
+ }>;
170
+ /** Immutable association of two existing records with the same owner. */
171
+ linkOAuthClient(appId: string, clientId: string): Promise<{
172
+ appId: string;
173
+ oauthClientId: string;
174
+ }>;
175
+ revoke(appId: string): Promise<{
176
+ appId: string;
177
+ grantsRevoked: number;
178
+ tokensRevoked: number;
179
+ }>;
180
+ }
181
+ //#endregion
182
+ //#region src/inbound-webhooks.d.ts
183
+ /** Provider setup uses the existing authenticated Hub transport and vault. */
184
+ interface HubInboundWebhookCreateOptions {
185
+ /** Inkbox identity that owns all selected channels. */
186
+ identityId?: string;
187
+ mailboxId?: string;
188
+ phoneNumberId?: string;
189
+ imessage?: boolean;
190
+ /** Linq: explicit owned lines; omitted does not mean every account line. */
191
+ phoneNumbers?: string[];
192
+ /** Linq WhatsApp: explicit opaque IDs from numbers.list, not E.164 phone strings. */
193
+ phoneNumberIds?: string[];
194
+ /** Contiguity Console secret, or an existing Inkbox identity signing key. */
195
+ signingSecret?: string;
196
+ }
197
+ interface HubInboundWebhookCreateResponse {
198
+ url: string;
199
+ /** True only when the provider subscription was created by the server. */
200
+ provisioned?: boolean;
201
+ /** Self-configured legacy providers can return a newly minted secret once. */
202
+ secret?: string;
203
+ inboundAddress?: string;
204
+ requiresProviderSetup?: boolean;
205
+ }
206
+ interface HubInboundWebhookStatus {
207
+ configured: boolean;
208
+ url?: string;
209
+ /** Configuration is not evidence of a real delivered message. */
210
+ deliveryVerified: false;
211
+ requiresProviderSetup?: boolean;
212
+ }
213
+ /** Live provider readback for one explicitly selected Linq WhatsApp number. */
214
+ interface HubInboundPhoneNumberScope {
215
+ configured: true;
216
+ provisioned: true;
217
+ subscribed: true;
218
+ phoneNumberIds: string[];
219
+ }
220
+ declare class HubInboundWebhooksClient {
221
+ private readonly request;
222
+ constructor(request: <T>(path: string, init: RequestInit) => Promise<T>);
223
+ create(connectionId: string, options?: HubInboundWebhookCreateOptions): Promise<HubInboundWebhookCreateResponse>;
224
+ get(connectionId: string): Promise<HubInboundWebhookStatus>;
225
+ /** Add one owned Linq WhatsApp number without rotating the webhook secret. */
226
+ ensurePhoneNumber(connectionId: string, phoneNumberId: string): Promise<HubInboundPhoneNumberScope>;
227
+ /** Remove event subscriptions first. This does not silently rotate a live URL. */
228
+ delete(connectionId: string): Promise<{
229
+ removed: boolean;
230
+ }>;
231
+ private path;
232
+ }
233
+ //#endregion
234
+ //#region src/managed-numbers.d.ts
235
+ interface HubNumberReadiness {
236
+ configured: boolean;
237
+ provider: "inkbox";
238
+ transports: Array<"sms" | "imessage">;
239
+ billing: "prepaid_activation";
240
+ automaticRentalBilling: false;
241
+ deliveryVerified: false;
242
+ }
243
+ interface HubNumberQuote {
244
+ transport: "sms" | "imessage";
245
+ activationCents: number;
246
+ currency: "usd";
247
+ termsVersion: string;
248
+ terms: string;
249
+ expiresAt: number;
250
+ token: string;
251
+ }
252
+ /** An operator's terminal decision on an order stuck in `needs_review`.
253
+ * Read-only for a creator: the resolution is made through the platform's
254
+ * admin surface, never through this client. */
255
+ interface HubNumberResolution {
256
+ action: "release" | "settle" | "abandon";
257
+ operator: string;
258
+ reason: string;
259
+ at: number;
260
+ /** Present while the operator's action is still running. The decision is
261
+ * not final and the order can still return to review. */
262
+ pending?: true;
263
+ /** Present when a `settle` handed a live, unfinished order back to
264
+ * provisioning, so the order is working again rather than closed. */
265
+ requeued?: true;
266
+ }
267
+ interface HubNumberOrder {
268
+ id: string;
269
+ clientReference: string;
270
+ transport: "sms" | "imessage";
271
+ status: "pending" | "provider_pending" | "needs_review" | "ready_for_setup" | "cancelled";
272
+ phase: "identity" | "number" | "credential" | "connection" | "complete";
273
+ address: string | null;
274
+ connectionId: string | null;
275
+ identityId: string | null;
276
+ providerNumberId: string | null;
277
+ billingStatus: "unreserved" | "reserved" | "settled" | "released";
278
+ cancellation: "none" | "requested" | "needs_review" | "released" | "abandoned";
279
+ errorCode: string | null;
280
+ nextAttemptAt: number | null;
281
+ resolution: HubNumberResolution | null;
282
+ deliveryVerified: false;
283
+ activationCents: number;
284
+ currency: "usd";
285
+ terms: string;
286
+ }
287
+ /** Administrative number operations through Hub's authenticated transport.
288
+ * A mutation is one attempt; an uncertain create reuses its quote and reference. */
289
+ declare class HubManagedNumbersClient {
290
+ private readonly request;
291
+ constructor(request: <T>(path: string, init: RequestInit) => Promise<T>);
292
+ readiness(): Promise<HubNumberReadiness>;
293
+ list(): Promise<{
294
+ orders: HubNumberOrder[];
295
+ }>;
296
+ get(id: string): Promise<{
297
+ order: HubNumberOrder;
298
+ }>;
299
+ quote(input: {
300
+ transport: "sms" | "imessage";
301
+ clientReference: string;
302
+ }): Promise<{
303
+ quote: HubNumberQuote;
304
+ }>;
305
+ create(input: {
306
+ quoteToken: string;
307
+ consent: true;
308
+ state?: string;
309
+ }): Promise<{
310
+ order: HubNumberOrder;
311
+ }>;
312
+ advance(id: string): Promise<{
313
+ order: HubNumberOrder;
314
+ }>;
315
+ cancel(id: string): Promise<{
316
+ order: HubNumberOrder;
317
+ }>;
318
+ private path;
319
+ private post;
320
+ }
321
+ //#endregion
1
322
  //#region src/types.d.ts
2
323
  type HubPrincipalKind = "user_session" | "api_key" | "sandbox_runtime";
3
324
  interface HubSuccessEnvelope<TData> {
@@ -14,7 +335,7 @@ interface HubErrorBody {
14
335
  message: string;
15
336
  details?: unknown;
16
337
  }
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}`;
338
+ 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
339
  interface HubStatusResponse {
19
340
  contract: unknown;
20
341
  principal: HubPrincipal;
@@ -36,6 +357,7 @@ interface HubConnection {
36
357
  providerId: string;
37
358
  displayName: string;
38
359
  accountDisplay: string | null;
360
+ providerAccountId: string | null;
39
361
  scopes: string[];
40
362
  status: "active" | "revoked" | "unhealthy" | "reconnect_required";
41
363
  health: "unknown" | "healthy" | "unhealthy" | "rate_limited";
@@ -168,6 +490,15 @@ interface HubEventDelivery {
168
490
  }
169
491
  /** A connector's auth model. */
170
492
  type HubProviderAuthKind = "oauth2" | "api_key" | "none" | "custom";
493
+ /** One non-secret value needed before an OAuth redirect can be built. Tenant-
494
+ * scoped providers use this for the account label in their OAuth hostname. */
495
+ interface HubOAuthConnectionParameter {
496
+ key: string;
497
+ label: string;
498
+ description: string;
499
+ placeholder: string;
500
+ required: true;
501
+ }
171
502
  interface HubProvider {
172
503
  providerId: string;
173
504
  title: string;
@@ -193,6 +524,9 @@ interface HubProvider {
193
524
  /** True when the provider's OAuth app credentials are wired, i.e. a connect
194
525
  * flow can actually start. UIs offer Connect only for configured providers. */
195
526
  configured: boolean;
527
+ /** Values the user must supply before OAuth starts. Empty or absent means the
528
+ * provider can redirect immediately. */
529
+ connectionParameters?: HubOAuthConnectionParameter[];
196
530
  /**
197
531
  * True when this deployment can receive this provider's inbound events.
198
532
  * This is separate from `configured`: OAuth can be ready while the shared
@@ -209,6 +543,7 @@ interface HubOAuthStartRequest {
209
543
  provider: string;
210
544
  returnUrl?: string;
211
545
  cli?: boolean;
546
+ connectionParameters?: Record<string, string>;
212
547
  }
213
548
  interface HubOAuthCallbackSuccessQuery {
214
549
  provider: string;
@@ -269,7 +604,18 @@ interface HubOAuthCallbackResponse {
269
604
  interface HubApiKeyConnectRequest {
270
605
  provider: string;
271
606
  apiKey: string;
607
+ /** Connector-owned setup values. Hub validates them before testing the key. */
608
+ metadata?: HubApiKeyConnectionMetadata;
272
609
  }
610
+ type HubApiKeyConnectionMetadata = {
611
+ propertyId: string;
612
+ currency?: string;
613
+ } | {
614
+ listings: Array<{
615
+ id: string;
616
+ pms: string;
617
+ }>;
618
+ };
273
619
  /** Result of an api-key connect: the created (or reconnected) connection.
274
620
  * Synchronous — there is no redirect leg, unlike the OAuth flow. */
275
621
  interface HubApiKeyConnectResponse {
@@ -285,7 +631,7 @@ interface HubConnectionDeleteResponse {
285
631
  interface HubConnectionHealthRequest {
286
632
  connectionId: string;
287
633
  }
288
- type HubConnectionHealthStatus = "healthy" | "reconnect_required" | "unhealthy" | "rate_limited";
634
+ type HubConnectionHealthStatus = "healthy" | "reconnect_required" | "unhealthy" | "rate_limited" | "unsupported";
289
635
  interface HubConnectionHealthError {
290
636
  code: string;
291
637
  message: string;
@@ -345,9 +691,18 @@ interface HubExecRequest {
345
691
  path: string;
346
692
  input?: unknown;
347
693
  connectionId?: string;
694
+ /** Caller-minted key for this exec. The platform ledger replays the first
695
+ * call's result for a retry that carries the same key, and rejects a key
696
+ * reused for a different request. On the capability-token arm the key only
697
+ * reaches the connector for provider-native dedupe: that arm is at-most-once
698
+ * per token and replays no stored result. */
699
+ idempotencyKey?: string;
348
700
  }
349
701
  interface HubExecResponse<TResult = unknown> {
350
702
  result: TResult;
703
+ /** True when the result was replayed from a previous call with the same
704
+ * idempotency key, so the action did not run again. */
705
+ replayed?: boolean;
351
706
  }
352
707
  interface HubTokenMintRequest {
353
708
  connectionId?: string;
@@ -512,6 +867,50 @@ interface HubGithubAppInstallation {
512
867
  interface HubGithubAppInstallationResponse {
513
868
  installation: HubGithubAppInstallation;
514
869
  }
870
+ /** An installation as the management surface renders it: the registry record
871
+ * plus where to manage it on GitHub (org and personal accounts have different
872
+ * settings paths, and the id is not discoverable in GitHub's own UI). */
873
+ interface HubGithubAppManagedInstallation extends HubGithubAppInstallation {
874
+ manageUrl: string;
875
+ }
876
+ interface HubGithubAppListInstallationsResponse {
877
+ installations: HubGithubAppManagedInstallation[];
878
+ /** GitHub's install URL for this deployment, or null when the App slug is
879
+ * unconfigured — in which case there is no way to add another account and
880
+ * the UI must say so rather than link nowhere. */
881
+ installUrl: string | null;
882
+ /** Whether this deployment can ask GitHub for installations it never
883
+ * witnessed. Rests on the App CREDENTIAL, not the slug behind `installUrl` —
884
+ * a deployment can have one without the other. */
885
+ syncAvailable?: boolean;
886
+ }
887
+ interface HubGithubAppDisconnectResponse {
888
+ installationId: number;
889
+ disconnected: boolean;
890
+ }
891
+ interface HubGithubAppSyncedInstallation {
892
+ installationId: number;
893
+ accountLogin: string;
894
+ accountType: string | null;
895
+ repositorySelection: "all" | "selected";
896
+ /** False when this run is what linked it — the newly reachable access. */
897
+ alreadyLinked: boolean;
898
+ }
899
+ /** Result of reconciling the caller's installations from GitHub. */
900
+ interface HubGithubAppSyncResponse {
901
+ /** How many of the caller's GitHub accounts were examined. */
902
+ accountsChecked: number;
903
+ /** Installations the caller may act through once this returns. */
904
+ linked: HubGithubAppSyncedInstallation[];
905
+ /** An installation was found but not linked, and why. An account with no
906
+ * installation is absent — that is the ordinary case, not a problem. */
907
+ skipped: Array<{
908
+ accountLogin: string;
909
+ reason: string;
910
+ }>;
911
+ /** Why the examined set is not everything, when it isn't. */
912
+ incomplete?: string;
913
+ }
515
914
  interface HubGithubAppListReposResponse {
516
915
  installationId: number;
517
916
  /** Lowercased "owner/repo" — covers the full registry view of the install. */
@@ -599,10 +998,13 @@ interface HubWorkflowActionResult {
599
998
  error?: string;
600
999
  costUsd?: number;
601
1000
  /** Graph-run identity: the topology node this action row belongs to. Present
602
- * only on cycle re-entry rows (a node visited more than once produces one
603
- * row per visit); absent on a linear run's rows. */
1001
+ * when the id says something the row's position does not — an author's DAG
1002
+ * node id, and every cycle re-entry row (a node visited more than once
1003
+ * produces one row per visit). Absent on a linear run's rows, whose node id
1004
+ * IS their position: read it as `step-${index + 1}`. */
604
1005
  nodeId?: string;
605
- /** Which visit of `nodeId` this row is (1-based), paired with `nodeId`. */
1006
+ /** Which visit of `nodeId` this row is (1-based). Present on cycle re-entry
1007
+ * rows only; a single-visit row omits it. */
606
1008
  visit?: number;
607
1009
  /** `script.run` only (single-run detail): the script's captured stdout
608
1010
  * (size-capped), or an artifact ref carrying the full log by reference. */
@@ -937,6 +1339,8 @@ interface HubWorkflowProposalInput {
937
1339
  }
938
1340
  /** One node's aggregate across the analyzed runs. */
939
1341
  interface HubWorkflowNodeHealth {
1342
+ /** The author's graph node id, or `step-N` for a linear run's nodes (and for
1343
+ * a node whose run cannot be mapped back to a definition). */
940
1344
  nodeId: string;
941
1345
  visits: number;
942
1346
  failures: number;
@@ -1053,6 +1457,14 @@ interface HubWorkflowConnectionRequirement {
1053
1457
  /** Where to satisfy the requirement (App install flow for `github_app`,
1054
1458
  * integrations page otherwise); null when no target exists. */
1055
1459
  connectUrl: string | null;
1460
+ /** Another requirement in the same list that must be satisfied first — a
1461
+ * `github_app` install is claimed through the `github` connection, so it is
1462
+ * refused while that connection is missing. Null when nothing blocks this
1463
+ * requirement. The list is ordered prerequisite-first. */
1464
+ prerequisite: {
1465
+ provider: string;
1466
+ kind: "integration" | "github_app";
1467
+ } | null;
1056
1468
  }
1057
1469
  /**
1058
1470
  * Result of instantiating a template. `created: false` is NOT an error — an
@@ -1176,8 +1588,11 @@ declare class HubClient {
1176
1588
  readonly fetch: typeof fetch;
1177
1589
  readonly apiKey?: string;
1178
1590
  readonly authHeaders?: HubAuthHeaders;
1591
+ readonly allowances: HubAllowancesClient;
1592
+ readonly apps: HubAppsClient;
1179
1593
  readonly connections: HubConnectionsClient;
1180
1594
  readonly channels: HubChannelsClient;
1595
+ readonly numbers: HubManagedNumbersClient;
1181
1596
  readonly eventSubscriptions: HubEventSubscriptionsClient;
1182
1597
  readonly permissions: HubPermissionsClient;
1183
1598
  readonly tokens: HubTokensClient;
@@ -1255,6 +1670,13 @@ interface HubToolSearchOptions {
1255
1670
  interface HubToolInvokeOptions {
1256
1671
  connectionId?: string;
1257
1672
  approve?: boolean;
1673
+ /** Caller-minted key for this invoke. On the direct exec arm the platform
1674
+ * ledger replays the first call's result for a retry that carries the same
1675
+ * key, and refuses a key bound to a different request. The approval and
1676
+ * capability-token retries re-send the key, and the connector receives it
1677
+ * for provider-native dedupe. Capability-token execution stays at-most-once
1678
+ * per token: it refuses a replay instead of replaying a stored result. */
1679
+ idempotencyKey?: string;
1258
1680
  }
1259
1681
  declare class HubToolsClient {
1260
1682
  private readonly request;
@@ -1262,12 +1684,18 @@ declare class HubToolsClient {
1262
1684
  search(query: string, options?: HubToolSearchOptions): Promise<HubToolsSearchResponse>;
1263
1685
  sources(): Promise<HubToolSourcesResponse>;
1264
1686
  describe(path: string): Promise<HubToolsDescribeResponse>;
1265
- invoke<TResult = unknown>(path: string, input: unknown, options?: HubToolInvokeOptions): Promise<HubExecResponse<TResult>>;
1687
+ /**
1688
+ * Run one hub tool. `raw` is the tool input: the SDK forwards it verbatim as
1689
+ * the request body's `input`, and the server validates it against the tool's
1690
+ * own schema, so the client never gives it a shape.
1691
+ */
1692
+ invoke<TResult = unknown>(path: string, raw: unknown, options?: HubToolInvokeOptions): Promise<HubExecResponse<TResult>>;
1266
1693
  private buildExecInit;
1267
1694
  }
1268
1695
  interface HubConnectionStartOptions {
1269
1696
  returnUrl?: string;
1270
1697
  cli?: boolean;
1698
+ connectionParameters?: Record<string, string>;
1271
1699
  }
1272
1700
  declare class HubChannelsClient {
1273
1701
  private readonly request;
@@ -1285,6 +1713,7 @@ declare class HubEventSubscriptionsClient {
1285
1713
  }
1286
1714
  declare class HubConnectionsClient {
1287
1715
  private readonly request;
1716
+ readonly inboundWebhook: HubInboundWebhooksClient;
1288
1717
  constructor(request: <TData>(path: string, init: RequestInit) => Promise<TData>);
1289
1718
  list(): Promise<HubConnectionsResponse>;
1290
1719
  /** Connector catalog: every provider the hub can expose, each flagged with
@@ -1297,8 +1726,9 @@ declare class HubConnectionsClient {
1297
1726
  /** Connect a non-OAuth (api-key) connector by submitting the user's key.
1298
1727
  * The server validates the key with a live probe before persisting and
1299
1728
  * returns the created (or reconnected) connection — there is no redirect,
1300
- * unlike `start`. */
1301
- connectApiKey(provider: string, apiKey: string): Promise<HubApiKeyConnectResponse>;
1729
+ * unlike `start`. Cloudbeds requires propertyId metadata and PriceLabs
1730
+ * requires listing ID/PMS pairs; other providers have no metadata. */
1731
+ connectApiKey(provider: string, apiKey: string, metadata?: HubApiKeyConnectRequest["metadata"]): Promise<HubApiKeyConnectResponse>;
1302
1732
  revoke(connectionId: string): Promise<HubConnectionDeleteResponse>;
1303
1733
  health(connectionId: string): Promise<HubConnectionHealthResponse>;
1304
1734
  }
@@ -1313,6 +1743,19 @@ declare class HubGithubAppClient {
1313
1743
  private readonly request;
1314
1744
  constructor(request: <TData>(path: string, init: RequestInit) => Promise<TData>);
1315
1745
  mintInstallationToken(input: HubGithubAppMintInstallationTokenRequest): Promise<HubGithubAppMintInstallationTokenResponse>;
1746
+ /** Every installation the caller may act through — their own and any org's
1747
+ * they were verified against. The management surface's read. */
1748
+ listInstallations(): Promise<HubGithubAppListInstallationsResponse>;
1749
+ /**
1750
+ * Find installations `listInstallations` cannot show: the hub only registers
1751
+ * what the setup redirect witnessed, so an org install approved out of band —
1752
+ * or created by another member — is invisible until this asks GitHub for it.
1753
+ * Links whatever the caller can prove access to; never uninstalls anything.
1754
+ */
1755
+ syncInstallations(): Promise<HubGithubAppSyncResponse>;
1756
+ /** Give up THIS caller's access. Not an uninstall — the installation is
1757
+ * account-level and other members may still be using it. */
1758
+ disconnectInstallation(installationId: number): Promise<HubGithubAppDisconnectResponse>;
1316
1759
  getInstallation(installationId: number): Promise<HubGithubAppInstallationResponse>;
1317
1760
  listRepos(installationId: number): Promise<HubGithubAppListReposResponse>;
1318
1761
  isRepoInstalled(input: {
@@ -1567,15 +2010,18 @@ declare class HubWorkflowsClient {
1567
2010
  /**
1568
2011
  * Upsert a key; returns the entry with its NEW version (increments on every
1569
2012
  * write). Throws `HubSdkError(KV_VALUE_TOO_LARGE)` past the 64KiB value cap
1570
- * or `KV_KEY_LIMIT` past the per-workflow key cap.
2013
+ * or `KV_KEY_LIMIT` past the per-workflow key cap. `raw` is the caller's
2014
+ * value, stored and read back verbatim, so the client never gives it a shape.
1571
2015
  */
1572
- putKv(id: string, key: string, value: unknown): Promise<HubWorkflowKvEntry>;
2016
+ putKv(id: string, key: string, raw: unknown): Promise<HubWorkflowKvEntry>;
1573
2017
  /**
1574
2018
  * Compare-and-swap: the write lands only when the stored version still
1575
2019
  * equals `expectedVersion`; otherwise `HubSdkError(KV_VERSION_CONFLICT)`
1576
- * (409) — re-read and retry. Creation is {@link putKv}'s job.
2020
+ * (409) — re-read and retry. Creation is {@link putKv}'s job. `raw` is the
2021
+ * caller's value, stored and read back verbatim, so the client never gives it
2022
+ * a shape.
1577
2023
  */
1578
- casKv(id: string, key: string, expectedVersion: number, value: unknown): Promise<HubWorkflowKvEntry>;
2024
+ casKv(id: string, key: string, expectedVersion: number, raw: unknown): Promise<HubWorkflowKvEntry>;
1579
2025
  /** Delete a key; idempotent — `deleted` reports whether a row was removed. */
1580
2026
  deleteKv(id: string, key: string): Promise<HubWorkflowKvDeleteResponse>;
1581
2027
  /** The curated starter gallery runnable on THIS deployment: metadata,
@@ -1704,5 +2150,5 @@ declare function parseHubEventDelivery(input: string | unknown): HubEventDeliver
1704
2150
  //#region src/redaction.d.ts
1705
2151
  declare function redactHubValue(value: unknown): unknown;
1706
2152
  //#endregion
1707
- 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 HubGithubAppInstallation, type HubGithubAppInstallationResponse, type HubGithubAppIsRepoInstalledRequest, type HubGithubAppIsRepoInstalledResponse, type HubGithubAppListReposResponse, type HubGithubAppMintInstallationTokenRequest, type HubGithubAppMintInstallationTokenResponse, 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 };
2153
+ 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 HubNumberOrder, 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 };
1708
2154
  //# sourceMappingURL=index.d.ts.map