@muxoai/sdk 1.3.0 → 1.4.3

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 (76) hide show
  1. package/.agents/plugins/marketplace.json +2 -2
  2. package/.claude-plugin/marketplace.json +19 -4
  3. package/.codex/config.toml +9 -2
  4. package/ARCHITECTURE.md +16 -6
  5. package/README.md +69 -24
  6. package/dist/clerk.d.ts +35 -0
  7. package/dist/clerk.js +201 -0
  8. package/dist/cli.js +1677 -103
  9. package/dist/composio-catalog.d.ts +234 -0
  10. package/dist/composio-catalog.js +1894 -0
  11. package/dist/config.d.ts +16 -0
  12. package/dist/config.js +27 -1
  13. package/dist/durable-workflow.d.ts +112 -0
  14. package/dist/durable-workflow.js +284 -0
  15. package/dist/engine.d.ts +377 -6
  16. package/dist/engine.js +1919 -94
  17. package/dist/index.d.ts +3 -0
  18. package/dist/index.js +3 -0
  19. package/dist/mcp-schema.d.ts +286 -0
  20. package/dist/mcp-schema.js +2580 -0
  21. package/dist/mcp.d.ts +2 -25
  22. package/dist/mcp.js +1008 -507
  23. package/dist/memory-graph.d.ts +45 -0
  24. package/dist/memory-graph.js +293 -0
  25. package/dist/nl.js +214 -35
  26. package/dist/oauth.d.ts +32 -0
  27. package/dist/oauth.js +134 -0
  28. package/dist/oss-suite.d.ts +217 -0
  29. package/dist/oss-suite.js +836 -0
  30. package/dist/policy.d.ts +190 -0
  31. package/dist/policy.js +1597 -0
  32. package/dist/providers/composio-instant.d.ts +4 -0
  33. package/dist/providers/composio-instant.js +890 -535
  34. package/dist/providers/composio-sdk.d.ts +126 -5
  35. package/dist/providers/composio-sdk.js +902 -79
  36. package/dist/providers/microsoft-governance.d.ts +89 -3
  37. package/dist/providers/microsoft-governance.js +673 -26
  38. package/dist/providers/stripe-billing.d.ts +42 -0
  39. package/dist/providers/stripe-billing.js +244 -5
  40. package/dist/providers/stripe-projects.d.ts +459 -4
  41. package/dist/providers/stripe-projects.js +2674 -122
  42. package/dist/providers/supermemory.d.ts +102 -6
  43. package/dist/providers/supermemory.js +609 -55
  44. package/dist/provisioning-managed.d.ts +50 -0
  45. package/dist/provisioning-managed.js +155 -0
  46. package/dist/sdk.d.ts +728 -7
  47. package/dist/sdk.js +539 -10
  48. package/dist/server.js +2744 -321
  49. package/dist/store.d.ts +138 -6
  50. package/dist/store.js +932 -58
  51. package/dist/types.d.ts +330 -4
  52. package/dist/ui/console-html.d.ts +62 -0
  53. package/dist/ui/console-html.js +3742 -2228
  54. package/dist/ui/design-tokens.d.ts +177 -0
  55. package/dist/ui/design-tokens.js +210 -0
  56. package/dist/version.d.ts +1 -0
  57. package/dist/version.js +1 -0
  58. package/package.json +6 -5
  59. package/plugins/muxo/.app.json +1 -1
  60. package/plugins/muxo/.claude-plugin/plugin.json +3 -3
  61. package/plugins/muxo/.codex-plugin/plugin.json +19 -10
  62. package/plugins/muxo/.cursor-plugin/plugin.json +30 -0
  63. package/plugins/muxo/.mcp.json +1 -33
  64. package/plugins/muxo/assets/logo.png +0 -0
  65. package/plugins/muxo/hooks/session-start.sh +16 -4
  66. package/plugins/muxo/hooks/user-prompt-submit.sh +14 -1
  67. package/plugins/muxo/mcp.json +0 -10
  68. package/plugins/muxo/plugin.json +65 -8
  69. package/plugins/muxo/skills/muxo/SKILL.md +142 -14
  70. package/plugins/muxo/skills/muxo/agents/openai.yaml +12 -0
  71. package/plugins/muxo/skills/muxo/references/cli.md +9 -3
  72. package/plugins/muxo/skills/muxo/references/mcp.md +22 -10
  73. package/plugins/muxo/skills/muxo-activity-summary/SKILL.md +81 -0
  74. package/plugins/muxo/skills/setup/SKILL.md +17 -3
  75. package/plugins/muxo/skills/setup/agents/openai.yaml +12 -0
  76. package/src/catalogues/stripe-projects-catalog.json +140 -0
package/dist/types.d.ts CHANGED
@@ -1,6 +1,74 @@
1
1
  export type RiskLevel = "read" | "write" | "admin" | "financial" | "provisioning" | "destructive";
2
2
  export type ProviderLane = "composio_sdk" | "composio_instant" | "stripe_projects";
3
- export type SubscriptionTier = "free" | "starter";
3
+ export type SubscriptionTier = "free" | "starter" | "pro";
4
+ export type SubscriptionStatus = "none" | "active" | "trialing" | "past_due" | "unpaid" | "canceled" | "incomplete" | "comped";
5
+ export interface WorkspaceBilling {
6
+ interval: "month" | "year" | null;
7
+ status: SubscriptionStatus;
8
+ cancelAtPeriodEnd: boolean;
9
+ /** When Stripe next renews or ends the subscription. */
10
+ currentPeriodEnd: string | null;
11
+ /** Monthly usage periods are counted from this moment. */
12
+ usagePeriodAnchor: string;
13
+ usagePeriodStart: string;
14
+ usagePeriodEnd: string;
15
+ /** usagePeriodStart of the last period whose plan credits were granted. */
16
+ creditsGrantedFor: string | null;
17
+ paymentFailedAt?: string | null;
18
+ /** Subscription whose start (fresh usage period and first credits) was already applied. */
19
+ startedSubscriptionId?: string | null;
20
+ }
21
+ export type LanguageMode = "non_technical" | "technical" | "hybrid";
22
+ export interface HumanFriendlyExplanation {
23
+ headline: string;
24
+ preferred: string;
25
+ nonTechnical: string;
26
+ technical: string;
27
+ languageMode: LanguageMode;
28
+ customInstructions?: string[];
29
+ }
30
+ /**
31
+ * A structured handoff telling the caller (LLM or human) that a person must
32
+ * complete a step in the browser before the plan can proceed.
33
+ */
34
+ export interface HumanHandoff {
35
+ kind: "approval" | "oauth" | "byok";
36
+ brand?: string;
37
+ url: string | null;
38
+ ctaLabel: string;
39
+ headline: string;
40
+ instructions: string;
41
+ markdownForUser?: string;
42
+ planId?: string;
43
+ provider?: string;
44
+ }
45
+ /**
46
+ * Machine-readable guidance for LLM harnesses on exactly which Muxo tool to
47
+ * call next once a handoff or gate clears.
48
+ */
49
+ export interface LlmGuidance {
50
+ summary: string;
51
+ nextToolCalls: Array<{
52
+ tool: string;
53
+ input: Record<string, unknown>;
54
+ when: string;
55
+ }>;
56
+ }
57
+ export type WorkspaceRole = "owner" | "admin" | "operator" | "member";
58
+ export type ParameterRuleOperator = "equals" | "must_equal" | "not_equals" | "contains" | "not_contains" | "starts_with" | "must_start_with" | "ends_with" | "must_end_with" | "domain_in" | "domain_not_in" | "max_number" | "min_number" | "gt" | "gte" | "lt" | "lte" | "in" | "not_in" | "regex";
59
+ export type ParameterRuleAction = "block" | "require_approval" | "allow" | "auto_approve";
60
+ export interface ParameterPolicyRule {
61
+ id: string;
62
+ toolPattern?: string;
63
+ parameter: string;
64
+ operator: ParameterRuleOperator;
65
+ value: string | number | string[];
66
+ unit?: "usd" | "cents" | "credits" | "raw";
67
+ action: ParameterRuleAction;
68
+ elseAction?: ParameterRuleAction;
69
+ description: string;
70
+ source?: "deterministic" | "llm" | "mcp_harness" | "user";
71
+ }
4
72
  export interface GovernancePolicy {
5
73
  mode: "monitor" | "enforce";
6
74
  requireApprovalFor: RiskLevel[];
@@ -8,15 +76,65 @@ export interface GovernancePolicy {
8
76
  allowProvisioning: boolean;
9
77
  maxCreditsPerRun: number;
10
78
  blockedToolSlugs?: string[];
79
+ parameterRules?: ParameterPolicyRule[];
80
+ executionRing?: 0 | 1 | 2 | 3;
81
+ killSwitchActive?: boolean;
82
+ killSwitchReason?: string | null;
83
+ blockDestructiveSql?: boolean;
84
+ naturalLanguageRules?: string[];
85
+ languageMode?: LanguageMode;
86
+ customInstructions?: string[];
11
87
  }
12
88
  export interface User {
13
89
  id: string;
14
90
  email: string;
15
91
  name: string;
16
92
  workspaceId: string;
17
- role: "owner" | "admin" | "member";
93
+ role: WorkspaceRole;
94
+ createdAt: string;
95
+ }
96
+ export interface WorkspaceMembership {
97
+ id: string;
98
+ workspaceId: string;
99
+ userId: string;
100
+ role: WorkspaceRole;
101
+ teamName: string | null;
102
+ joinedViaKeyId?: string | null;
103
+ joinedVia?: "owner" | "created" | "api_key" | "team_key" | "invite" | "claim" | string;
104
+ apiKeyId?: string | null;
105
+ createdAt: string;
106
+ }
107
+ export interface WorkspaceSummary {
108
+ id: string;
109
+ name: string;
110
+ slug: string;
111
+ tier: SubscriptionTier;
112
+ creditsBalance: number;
113
+ monthlyActionsUsed: number;
114
+ monthlyActionsLimit: number;
115
+ role: WorkspaceRole;
116
+ teamName: string | null;
117
+ joinedVia?: "owner" | "created" | "api_key" | "team_key" | "invite" | "claim" | string;
118
+ isCurrent: boolean;
18
119
  createdAt: string;
19
120
  }
121
+ export interface TeamOnboardingKit {
122
+ ok?: boolean;
123
+ mode: "shared_workspace" | "dedicated_workspace";
124
+ workspace: Workspace | Pick<Workspace, "id" | "name" | "slug" | "tier" | "creditsBalance">;
125
+ teamName: string;
126
+ role: WorkspaceRole;
127
+ apiKey: string;
128
+ keyRecord: ApiKeyRecord;
129
+ claimUrl?: string | null;
130
+ consoleUrl?: string;
131
+ consoleJoinUrl?: string;
132
+ mcpEndpoint?: string;
133
+ cliSetupCommand: string;
134
+ mcpConfig?: Record<string, unknown>;
135
+ mcpConfigSnippet?: string;
136
+ instructions: string[];
137
+ }
20
138
  export interface Workspace {
21
139
  id: string;
22
140
  name: string;
@@ -28,6 +146,8 @@ export interface Workspace {
28
146
  creditsBalance: number;
29
147
  stripeCustomerId: string | null;
30
148
  stripeSubscriptionId: string | null;
149
+ stripeConnectedAccountId?: string | null;
150
+ billing?: WorkspaceBilling;
31
151
  projectsEnvName: string;
32
152
  policy: GovernancePolicy;
33
153
  createdAt: string;
@@ -40,6 +160,9 @@ export interface ApiKeyRecord {
40
160
  keyPrefix: string;
41
161
  environment: "live" | "test";
42
162
  scopes: string[];
163
+ teamName?: string | null;
164
+ role?: WorkspaceRole;
165
+ createdByEmail?: string | null;
43
166
  lastUsedAt: string | null;
44
167
  revokedAt: string | null;
45
168
  createdAt: string;
@@ -56,7 +179,7 @@ export interface MuxoTool {
56
179
  riskLevel: RiskLevel;
57
180
  requiresAuth: boolean;
58
181
  creditCost: number;
59
- billingMode: "customer_oauth" | "provider_wallet" | "resource_provisioning";
182
+ billingMode: "customer_oauth" | "customer_byok" | "provider_wallet" | "resource_provisioning";
60
183
  inputSchema: Record<string, unknown>;
61
184
  llmContextUrl?: string;
62
185
  providerUrl?: string;
@@ -126,15 +249,146 @@ export interface GovernanceDecisionRecord {
126
249
  previousHash: string;
127
250
  chainVerified: boolean;
128
251
  };
252
+ protocolFacets?: {
253
+ sql?: {
254
+ verb: string;
255
+ target: string;
256
+ tables: string;
257
+ functions: string;
258
+ destructive?: boolean;
259
+ };
260
+ k8s?: {
261
+ verb: string;
262
+ resource: string;
263
+ namespace: string;
264
+ name: string;
265
+ subresource: string;
266
+ };
267
+ infra?: {
268
+ provider: string;
269
+ service: string;
270
+ action: string;
271
+ destructive: boolean;
272
+ };
273
+ };
274
+ ringEnforcement?: {
275
+ agentRing: number;
276
+ requiredRing: number;
277
+ allowed: boolean;
278
+ ringLabel: string;
279
+ };
280
+ trustScore?: {
281
+ overall: number;
282
+ tier: "Untrusted" | "Provisional" | "Trusted" | "Verified";
283
+ reliability: number;
284
+ consistency: number;
285
+ };
286
+ contextPoisoning?: {
287
+ safe: boolean;
288
+ riskLevel: "none" | "low" | "medium" | "high" | "critical";
289
+ findingsCount: number;
290
+ findings: Array<{
291
+ patternId: string;
292
+ patternName: string;
293
+ severity: string;
294
+ description: string;
295
+ }>;
296
+ };
297
+ killSwitch?: {
298
+ active: boolean;
299
+ killedAt?: string | null;
300
+ reason?: string | null;
301
+ };
129
302
  ed25519Signature: string;
130
303
  signature: string;
131
304
  bindingHash: string;
132
305
  decidedAt: string;
306
+ explanation?: HumanFriendlyExplanation;
133
307
  }
134
308
  export type MemoryRecordKind = "fact" | "preference" | "resource_note" | "operator_note" | "execution_outcome" | "resource_topology" | "policy_decision";
309
+ export interface TemporalGraphFact {
310
+ id: string;
311
+ workspaceId: string;
312
+ subject: string;
313
+ predicate: string;
314
+ object: string;
315
+ summary: string;
316
+ confidence: number;
317
+ validFrom: string;
318
+ validTo: string | null;
319
+ transactionFrom?: string;
320
+ transactionTo?: string | null;
321
+ episodeId?: string | null;
322
+ supersededById?: string | null;
323
+ sourceKind: MemoryRecordKind | "system" | "manual";
324
+ sourceReferenceId?: string | null;
325
+ metadata: Record<string, unknown>;
326
+ createdAt: string;
327
+ }
328
+ export interface MemoryGraphNode {
329
+ id: string;
330
+ kind: "workspace" | "entity" | "preference" | "guardrail" | "connection" | "resource" | "tool" | "memory" | "episode";
331
+ label: string;
332
+ summary: string;
333
+ status: "active" | "historical";
334
+ hopDistance?: number;
335
+ metadata?: Record<string, unknown>;
336
+ }
337
+ export interface MemoryGraphEdge {
338
+ id: string;
339
+ source: string;
340
+ target: string;
341
+ subject?: string;
342
+ object?: string;
343
+ predicate: string;
344
+ summary: string;
345
+ confidence: number;
346
+ status: "active" | "historical";
347
+ validFrom: string;
348
+ validTo: string | null;
349
+ transactionFrom?: string;
350
+ transactionTo?: string | null;
351
+ episodeId?: string | null;
352
+ supersededById: string | null;
353
+ sourceKind: TemporalGraphFact["sourceKind"];
354
+ sourceReferenceId: string | null;
355
+ }
356
+ export interface MemoryKnowledgeGraph {
357
+ workspaceId: string;
358
+ workspaceSlug: string;
359
+ namespace: string;
360
+ generatedAt: string;
361
+ asOf?: string | null;
362
+ focalEntity?: string | null;
363
+ maxHops?: number;
364
+ query: string | null;
365
+ nodes: MemoryGraphNode[];
366
+ edges: MemoryGraphEdge[];
367
+ activeEdges: MemoryGraphEdge[];
368
+ historicalEdges: MemoryGraphEdge[];
369
+ subgraph?: {
370
+ focalEntity: string;
371
+ maxHops: number;
372
+ nodes: MemoryGraphNode[];
373
+ edges: MemoryGraphEdge[];
374
+ hopDistances: Record<string, number>;
375
+ } | null;
376
+ stats: {
377
+ nodesCount: number;
378
+ activeEdgesCount: number;
379
+ historicalEdgesCount: number;
380
+ memoriesCount: number;
381
+ resourcesCount: number;
382
+ connectionsCount: number;
383
+ episodesCount?: number;
384
+ };
385
+ mermaid: string;
386
+ explanation: HumanFriendlyExplanation;
387
+ }
135
388
  export interface MemoryContextSummary {
136
389
  enabled: boolean;
137
390
  namespace: string;
391
+ fundingSource?: "muxo_funded" | "customer_byok_supermemory" | "local_fallback";
138
392
  staticFacts: string[];
139
393
  dynamicContext: string[];
140
394
  recalledMemories: Array<{
@@ -145,6 +399,7 @@ export interface MemoryContextSummary {
145
399
  createdAt?: string;
146
400
  }>;
147
401
  formattedPromptContext: string;
402
+ profileMarkdown?: string;
148
403
  profile: {
149
404
  static: string[];
150
405
  dynamic: string[];
@@ -157,6 +412,16 @@ export interface MemoryContextSummary {
157
412
  similarity: number;
158
413
  createdAt?: string;
159
414
  }>;
415
+ temporalFacts?: TemporalGraphFact[];
416
+ activeDefaults?: Record<string, unknown>;
417
+ autoFilledInput?: Record<string, unknown>;
418
+ activeGuardrails?: string[];
419
+ contextPoisoningScan?: {
420
+ safe: boolean;
421
+ riskLevel: "none" | "low" | "medium" | "high" | "critical";
422
+ findingsCount: number;
423
+ };
424
+ explanation?: HumanFriendlyExplanation;
160
425
  }
161
426
  export interface WorkspaceMemoryRecord {
162
427
  id: string;
@@ -167,6 +432,7 @@ export interface WorkspaceMemoryRecord {
167
432
  content: string;
168
433
  kind: MemoryRecordKind;
169
434
  metadata: Record<string, unknown>;
435
+ fundingSource?: string;
170
436
  createdAt: string;
171
437
  }
172
438
  export interface ByokKeyRecord {
@@ -209,6 +475,29 @@ export interface SupplierSettlementSummary {
209
475
  supplierWholesalePaidCents: number;
210
476
  muxoNetMarginCents: number;
211
477
  }>;
478
+ masterWalletProtection?: {
479
+ status: "healthy" | "failover_active";
480
+ zeroChargeOnFailure: boolean;
481
+ instantFailoverMode: "zero_cost_native_edge";
482
+ paidProvisioningPolicy: "muxo_master_wallet_or_customer_stripe_byok";
483
+ retailToWholesaleCoverageRatio: number;
484
+ };
485
+ }
486
+ export interface HumanHandoffDescriptor {
487
+ required: boolean;
488
+ kind: "none" | "oauth_connection" | "human_approval" | "oauth_and_approval";
489
+ status: "ready" | "awaiting_oauth" | "awaiting_approval" | "awaiting_oauth_and_approval" | "connected" | "approved" | "rejected";
490
+ headline: string;
491
+ markdownForUser: string;
492
+ agentNextToolCall: {
493
+ tool: string;
494
+ arguments: Record<string, unknown>;
495
+ description: string;
496
+ };
497
+ actionUrl: string | null;
498
+ approvalUrl: string | null;
499
+ oauthRedirectUrl: string | null;
500
+ consoleUrl: string;
212
501
  }
213
502
  export interface ActionPlan {
214
503
  id: string;
@@ -228,6 +517,19 @@ export interface ActionPlan {
228
517
  decisionRecord?: GovernanceDecisionRecord | null;
229
518
  memoryContext?: MemoryContextSummary | null;
230
519
  supplierSettlement?: SupplierSettlement | null;
520
+ surfaceVersion?: string;
521
+ surfaceAudience?: string;
522
+ surfaceConnectionId?: string | null;
523
+ surfaceContext?: Array<{
524
+ recordId: string;
525
+ revision: number;
526
+ contentHash: string;
527
+ }>;
528
+ surfaceFunding?: {
529
+ resource_id: string;
530
+ mode: "customer_funded" | "muxo_funded";
531
+ } | null;
532
+ surfaceOperationId?: string;
231
533
  createdAt: string;
232
534
  expiresAt: string;
233
535
  }
@@ -243,6 +545,7 @@ export interface ExecutionRun {
243
545
  input: Record<string, unknown>;
244
546
  output: Record<string, unknown> | null;
245
547
  error: string | null;
548
+ errorMessage?: string | null;
246
549
  actionsMetered: number;
247
550
  creditsMetered: number;
248
551
  durationMs: number | null;
@@ -250,6 +553,27 @@ export interface ExecutionRun {
250
553
  startedAt: string;
251
554
  completedAt: string | null;
252
555
  }
556
+ export type AgenticReceiptActionType = "ToolCall" | "ModelInference" | "GpuWorkload" | "RagRetrieval" | "ApiCall" | "DistributedJob";
557
+ export interface PortableAgenticReceipt {
558
+ version: string;
559
+ receipt_id: string;
560
+ agent_id: string;
561
+ task_id: string;
562
+ action_type: AgenticReceiptActionType;
563
+ tool_name: string | null;
564
+ model_id: string | null;
565
+ input_hash: string;
566
+ output_hash: string;
567
+ started_at: string;
568
+ completed_at: string;
569
+ latency_ms: number;
570
+ nonce: string;
571
+ previous_receipt_hash: string | null;
572
+ receipt_hash: string;
573
+ signature_algorithm: "Ed25519";
574
+ public_key_hex: string;
575
+ signature_hex: string;
576
+ }
253
577
  export interface ExecutionReceipt {
254
578
  id: string;
255
579
  runId: string;
@@ -268,13 +592,15 @@ export interface ExecutionReceipt {
268
592
  receiptHash: string;
269
593
  signature: string;
270
594
  decisionRecord?: GovernanceDecisionRecord | null;
595
+ agenticReceipt?: PortableAgenticReceipt | null;
271
596
  supplierSettlement?: SupplierSettlement | null;
272
597
  issuedAt: string;
598
+ explanation?: HumanFriendlyExplanation;
273
599
  }
274
600
  export interface LedgerEntry {
275
601
  id: string;
276
602
  workspaceId: string;
277
- kind: "plan_grant" | "credit_topup" | "run_deduction" | "subscription_upgrade" | "manual_adjustment";
603
+ kind: "plan_grant" | "credit_topup" | "run_deduction" | "subscription_upgrade" | "plan_change" | "refund" | "manual_adjustment";
278
604
  actionsDelta: number;
279
605
  creditsDelta: number;
280
606
  balanceAfter: number;
@@ -1,2 +1,64 @@
1
+ export type ConsoleView = "overview" | "catalog" | "setup" | "workspaces" | "activity" | "billing" | "login" | "signup";
2
+ /** Every path that serves the console shell, mapped to the view it opens. */
3
+ export declare const CONSOLE_ROUTES: Readonly<Record<string, ConsoleView>>;
4
+ export declare function isConsolePath(pathname: string): boolean;
1
5
  export declare function renderConsoleHtml(): string;
2
6
  export declare function renderLandingHtml(): string;
7
+ export interface OAuthConsentOptions {
8
+ error?: string;
9
+ clientName?: string;
10
+ redirectOrigin?: string;
11
+ clerk?: {
12
+ publishableKey: string;
13
+ frontendApi: string;
14
+ } | null;
15
+ request?: Record<string, string>;
16
+ /** Renders the workspace-claim variant, which posts to `action` instead of /oauth/authorize. */
17
+ claim?: {
18
+ workspaceName: string;
19
+ targetEmail: string;
20
+ action: string;
21
+ cancelUrl: string;
22
+ };
23
+ }
24
+ /** Consent screen for MCP clients (ChatGPT, Claude, CLIs) asking to use a Muxo workspace. */
25
+ export declare function renderOAuthConsentHtml(opts: OAuthConsentOptions): string;
26
+ export interface ApprovalPageOptions {
27
+ planId: string;
28
+ clerk?: {
29
+ publishableKey: string;
30
+ frontendApi: string;
31
+ } | null;
32
+ }
33
+ /** One-click approval screen for plans held by workspace guardrails (`/approve/:planId`). */
34
+ export declare function renderApprovalPageHtml(opts: ApprovalPageOptions): string;
35
+ export interface OAuthConnectPageField {
36
+ name: string;
37
+ type?: string;
38
+ label?: string;
39
+ description?: string;
40
+ required?: boolean;
41
+ default?: string | null;
42
+ }
43
+ export interface OAuthConnectPageOptions {
44
+ token: string;
45
+ toolkitSlug: string;
46
+ toolkitName: string;
47
+ workspaceId?: string;
48
+ authMode?: string;
49
+ status?: string;
50
+ callbackUrl?: string | null;
51
+ expectedInputFields?: OAuthConnectPageField[];
52
+ error?: string | null;
53
+ }
54
+ /** Muxo-branded OAuth connection handoff screen (`/oauth/connect/:token`). */
55
+ export declare function renderOAuthConnectPageHtml(opts: OAuthConnectPageOptions): string;
56
+ export interface OAuthCallbackPageOptions {
57
+ providerSlug: string;
58
+ providerName: string;
59
+ status: string;
60
+ workspaceId: string;
61
+ externalAccountId?: string | null;
62
+ }
63
+ /** Muxo-branded OAuth callback completion screen (`/oauth/callback`). */
64
+ export declare function renderOAuthCallbackPageHtml(opts: OAuthCallbackPageOptions): string;