@muxoai/sdk 1.2.3 → 1.4.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.
Files changed (208) hide show
  1. package/.agents/plugins/marketplace.json +22 -0
  2. package/.claude-plugin/marketplace.json +32 -0
  3. package/.codex/config.toml +12 -0
  4. package/ARCHITECTURE.md +121 -0
  5. package/README.md +85 -31
  6. package/dist/clerk.d.ts +35 -0
  7. package/dist/clerk.js +201 -0
  8. package/dist/cli.d.ts +2 -0
  9. package/dist/cli.js +2380 -0
  10. package/dist/composio-catalog.d.ts +234 -0
  11. package/dist/composio-catalog.js +1894 -0
  12. package/dist/config.d.ts +36 -0
  13. package/dist/config.js +115 -0
  14. package/dist/durable-workflow.d.ts +45 -0
  15. package/dist/durable-workflow.js +90 -0
  16. package/dist/engine.d.ts +465 -0
  17. package/dist/engine.js +2560 -0
  18. package/dist/index.d.ts +7 -0
  19. package/dist/index.js +7 -0
  20. package/dist/mcp-schema.d.ts +286 -0
  21. package/dist/mcp-schema.js +2559 -0
  22. package/dist/mcp.d.ts +22 -0
  23. package/dist/mcp.js +1356 -0
  24. package/dist/memory-graph.d.ts +21 -0
  25. package/dist/memory-graph.js +173 -0
  26. package/dist/nl.d.ts +34 -0
  27. package/dist/nl.js +756 -0
  28. package/dist/oauth.d.ts +32 -0
  29. package/dist/oauth.js +134 -0
  30. package/dist/policy.d.ts +190 -0
  31. package/dist/policy.js +1597 -0
  32. package/dist/providers/composio-instant.d.ts +18 -0
  33. package/dist/providers/composio-instant.js +1169 -0
  34. package/dist/providers/composio-sdk.d.ts +162 -0
  35. package/dist/providers/composio-sdk.js +1395 -0
  36. package/dist/providers/microsoft-governance.d.ts +152 -0
  37. package/dist/providers/microsoft-governance.js +1062 -0
  38. package/dist/providers/stripe-billing.d.ts +83 -0
  39. package/dist/providers/stripe-billing.js +611 -0
  40. package/dist/providers/stripe-projects.d.ts +508 -0
  41. package/dist/providers/stripe-projects.js +3188 -0
  42. package/dist/providers/supermemory.d.ts +160 -0
  43. package/dist/providers/supermemory.js +778 -0
  44. package/dist/provisioning-managed.d.ts +50 -0
  45. package/dist/provisioning-managed.js +155 -0
  46. package/dist/sdk.d.ts +951 -0
  47. package/dist/sdk.js +748 -0
  48. package/dist/server.d.ts +10 -0
  49. package/dist/server.js +3575 -0
  50. package/dist/store.d.ts +348 -0
  51. package/dist/store.js +2323 -0
  52. package/dist/types.d.ts +593 -0
  53. package/dist/types.js +1 -0
  54. package/dist/ui/console-html.d.ts +64 -0
  55. package/dist/ui/console-html.js +3857 -0
  56. package/dist/ui/design-tokens.d.ts +177 -0
  57. package/dist/ui/design-tokens.js +210 -0
  58. package/dist/version.d.ts +1 -0
  59. package/dist/version.js +1 -0
  60. package/package.json +68 -7
  61. package/plugins/muxo/.app.json +8 -0
  62. package/plugins/muxo/.claude-plugin/plugin.json +16 -0
  63. package/plugins/muxo/.codex-plugin/plugin.json +64 -0
  64. package/plugins/muxo/.cursor-plugin/plugin.json +30 -0
  65. package/plugins/muxo/.mcp.json +8 -0
  66. package/plugins/muxo/assets/logo.png +0 -0
  67. package/plugins/muxo/assets/logo.svg +6 -0
  68. package/plugins/muxo/hooks/hooks.json +27 -0
  69. package/plugins/muxo/hooks/session-start.sh +97 -0
  70. package/plugins/muxo/hooks/user-prompt-submit.sh +58 -0
  71. package/plugins/muxo/mcp.json +28 -0
  72. package/plugins/muxo/plugin.json +116 -0
  73. package/plugins/muxo/skills/muxo/SKILL.md +153 -0
  74. package/plugins/muxo/skills/muxo/agents/openai.yaml +12 -0
  75. package/plugins/muxo/skills/muxo/references/cli.md +63 -0
  76. package/plugins/muxo/skills/muxo/references/mcp.md +37 -0
  77. package/plugins/muxo/skills/muxo-activity-summary/SKILL.md +81 -0
  78. package/plugins/muxo/skills/setup/SKILL.md +42 -0
  79. package/plugins/muxo/skills/setup/agents/openai.yaml +12 -0
  80. package/src/catalogues/stripe-projects-catalog.json +9972 -0
  81. package/vendor/microsoft-governance/README.md +363 -0
  82. package/vendor/microsoft-governance/dist/audit.d.ts +26 -0
  83. package/vendor/microsoft-governance/dist/audit.d.ts.map +1 -0
  84. package/vendor/microsoft-governance/dist/audit.js +107 -0
  85. package/vendor/microsoft-governance/dist/audit.js.map +1 -0
  86. package/vendor/microsoft-governance/dist/cascade-containment.d.ts +84 -0
  87. package/vendor/microsoft-governance/dist/cascade-containment.d.ts.map +1 -0
  88. package/vendor/microsoft-governance/dist/cascade-containment.js +387 -0
  89. package/vendor/microsoft-governance/dist/cascade-containment.js.map +1 -0
  90. package/vendor/microsoft-governance/dist/client.d.ts +34 -0
  91. package/vendor/microsoft-governance/dist/client.d.ts.map +1 -0
  92. package/vendor/microsoft-governance/dist/client.js +112 -0
  93. package/vendor/microsoft-governance/dist/client.js.map +1 -0
  94. package/vendor/microsoft-governance/dist/context-poisoning.d.ts +58 -0
  95. package/vendor/microsoft-governance/dist/context-poisoning.d.ts.map +1 -0
  96. package/vendor/microsoft-governance/dist/context-poisoning.js +410 -0
  97. package/vendor/microsoft-governance/dist/context-poisoning.js.map +1 -0
  98. package/vendor/microsoft-governance/dist/credential-vault.d.ts +213 -0
  99. package/vendor/microsoft-governance/dist/credential-vault.d.ts.map +1 -0
  100. package/vendor/microsoft-governance/dist/credential-vault.js +567 -0
  101. package/vendor/microsoft-governance/dist/credential-vault.js.map +1 -0
  102. package/vendor/microsoft-governance/dist/discovery.d.ts +80 -0
  103. package/vendor/microsoft-governance/dist/discovery.d.ts.map +1 -0
  104. package/vendor/microsoft-governance/dist/discovery.js +404 -0
  105. package/vendor/microsoft-governance/dist/discovery.js.map +1 -0
  106. package/vendor/microsoft-governance/dist/encryption/channel.d.ts +29 -0
  107. package/vendor/microsoft-governance/dist/encryption/channel.d.ts.map +1 -0
  108. package/vendor/microsoft-governance/dist/encryption/channel.js +78 -0
  109. package/vendor/microsoft-governance/dist/encryption/channel.js.map +1 -0
  110. package/vendor/microsoft-governance/dist/encryption/index.d.ts +9 -0
  111. package/vendor/microsoft-governance/dist/encryption/index.d.ts.map +1 -0
  112. package/vendor/microsoft-governance/dist/encryption/index.js +23 -0
  113. package/vendor/microsoft-governance/dist/encryption/index.js.map +1 -0
  114. package/vendor/microsoft-governance/dist/encryption/mesh-client.d.ts +267 -0
  115. package/vendor/microsoft-governance/dist/encryption/mesh-client.d.ts.map +1 -0
  116. package/vendor/microsoft-governance/dist/encryption/mesh-client.js +1001 -0
  117. package/vendor/microsoft-governance/dist/encryption/mesh-client.js.map +1 -0
  118. package/vendor/microsoft-governance/dist/encryption/ratchet.d.ts +38 -0
  119. package/vendor/microsoft-governance/dist/encryption/ratchet.d.ts.map +1 -0
  120. package/vendor/microsoft-governance/dist/encryption/ratchet.js +223 -0
  121. package/vendor/microsoft-governance/dist/encryption/ratchet.js.map +1 -0
  122. package/vendor/microsoft-governance/dist/encryption/registry-client.d.ts +136 -0
  123. package/vendor/microsoft-governance/dist/encryption/registry-client.d.ts.map +1 -0
  124. package/vendor/microsoft-governance/dist/encryption/registry-client.js +369 -0
  125. package/vendor/microsoft-governance/dist/encryption/registry-client.js.map +1 -0
  126. package/vendor/microsoft-governance/dist/encryption/x3dh.d.ts +80 -0
  127. package/vendor/microsoft-governance/dist/encryption/x3dh.d.ts.map +1 -0
  128. package/vendor/microsoft-governance/dist/encryption/x3dh.js +238 -0
  129. package/vendor/microsoft-governance/dist/encryption/x3dh.js.map +1 -0
  130. package/vendor/microsoft-governance/dist/framework-adapter.d.ts +63 -0
  131. package/vendor/microsoft-governance/dist/framework-adapter.d.ts.map +1 -0
  132. package/vendor/microsoft-governance/dist/framework-adapter.js +253 -0
  133. package/vendor/microsoft-governance/dist/framework-adapter.js.map +1 -0
  134. package/vendor/microsoft-governance/dist/identity.d.ts +124 -0
  135. package/vendor/microsoft-governance/dist/identity.d.ts.map +1 -0
  136. package/vendor/microsoft-governance/dist/identity.js +446 -0
  137. package/vendor/microsoft-governance/dist/identity.js.map +1 -0
  138. package/vendor/microsoft-governance/dist/index.d.ts +39 -0
  139. package/vendor/microsoft-governance/dist/index.d.ts.map +1 -0
  140. package/vendor/microsoft-governance/dist/index.js +95 -0
  141. package/vendor/microsoft-governance/dist/index.js.map +1 -0
  142. package/vendor/microsoft-governance/dist/kill-switch.d.ts +22 -0
  143. package/vendor/microsoft-governance/dist/kill-switch.d.ts.map +1 -0
  144. package/vendor/microsoft-governance/dist/kill-switch.js +60 -0
  145. package/vendor/microsoft-governance/dist/kill-switch.js.map +1 -0
  146. package/vendor/microsoft-governance/dist/lifecycle.d.ts +50 -0
  147. package/vendor/microsoft-governance/dist/lifecycle.d.ts.map +1 -0
  148. package/vendor/microsoft-governance/dist/lifecycle.js +113 -0
  149. package/vendor/microsoft-governance/dist/lifecycle.js.map +1 -0
  150. package/vendor/microsoft-governance/dist/mcp.d.ts +41 -0
  151. package/vendor/microsoft-governance/dist/mcp.d.ts.map +1 -0
  152. package/vendor/microsoft-governance/dist/mcp.js +233 -0
  153. package/vendor/microsoft-governance/dist/mcp.js.map +1 -0
  154. package/vendor/microsoft-governance/dist/metrics.d.ts +123 -0
  155. package/vendor/microsoft-governance/dist/metrics.d.ts.map +1 -0
  156. package/vendor/microsoft-governance/dist/metrics.js +289 -0
  157. package/vendor/microsoft-governance/dist/metrics.js.map +1 -0
  158. package/vendor/microsoft-governance/dist/oci-manifest.d.ts +49 -0
  159. package/vendor/microsoft-governance/dist/oci-manifest.d.ts.map +1 -0
  160. package/vendor/microsoft-governance/dist/oci-manifest.js +182 -0
  161. package/vendor/microsoft-governance/dist/oci-manifest.js.map +1 -0
  162. package/vendor/microsoft-governance/dist/policy-backends/cedar.d.ts +15 -0
  163. package/vendor/microsoft-governance/dist/policy-backends/cedar.d.ts.map +1 -0
  164. package/vendor/microsoft-governance/dist/policy-backends/cedar.js +88 -0
  165. package/vendor/microsoft-governance/dist/policy-backends/cedar.js.map +1 -0
  166. package/vendor/microsoft-governance/dist/policy-backends/opa.d.ts +17 -0
  167. package/vendor/microsoft-governance/dist/policy-backends/opa.d.ts.map +1 -0
  168. package/vendor/microsoft-governance/dist/policy-backends/opa.js +74 -0
  169. package/vendor/microsoft-governance/dist/policy-backends/opa.js.map +1 -0
  170. package/vendor/microsoft-governance/dist/policy.d.ts +77 -0
  171. package/vendor/microsoft-governance/dist/policy.d.ts.map +1 -0
  172. package/vendor/microsoft-governance/dist/policy.js +760 -0
  173. package/vendor/microsoft-governance/dist/policy.js.map +1 -0
  174. package/vendor/microsoft-governance/dist/prompt-defense.d.ts +37 -0
  175. package/vendor/microsoft-governance/dist/prompt-defense.d.ts.map +1 -0
  176. package/vendor/microsoft-governance/dist/prompt-defense.js +229 -0
  177. package/vendor/microsoft-governance/dist/prompt-defense.js.map +1 -0
  178. package/vendor/microsoft-governance/dist/protocol-facets.d.ts +87 -0
  179. package/vendor/microsoft-governance/dist/protocol-facets.d.ts.map +1 -0
  180. package/vendor/microsoft-governance/dist/protocol-facets.js +728 -0
  181. package/vendor/microsoft-governance/dist/protocol-facets.js.map +1 -0
  182. package/vendor/microsoft-governance/dist/rings.d.ts +17 -0
  183. package/vendor/microsoft-governance/dist/rings.d.ts.map +1 -0
  184. package/vendor/microsoft-governance/dist/rings.js +61 -0
  185. package/vendor/microsoft-governance/dist/rings.js.map +1 -0
  186. package/vendor/microsoft-governance/dist/sandbox.d.ts +61 -0
  187. package/vendor/microsoft-governance/dist/sandbox.d.ts.map +1 -0
  188. package/vendor/microsoft-governance/dist/sandbox.js +199 -0
  189. package/vendor/microsoft-governance/dist/sandbox.js.map +1 -0
  190. package/vendor/microsoft-governance/dist/surface-parity.d.ts +45 -0
  191. package/vendor/microsoft-governance/dist/surface-parity.d.ts.map +1 -0
  192. package/vendor/microsoft-governance/dist/surface-parity.js +216 -0
  193. package/vendor/microsoft-governance/dist/surface-parity.js.map +1 -0
  194. package/vendor/microsoft-governance/dist/trust.d.ts +28 -0
  195. package/vendor/microsoft-governance/dist/trust.d.ts.map +1 -0
  196. package/vendor/microsoft-governance/dist/trust.js +209 -0
  197. package/vendor/microsoft-governance/dist/trust.js.map +1 -0
  198. package/vendor/microsoft-governance/dist/types.d.ts +422 -0
  199. package/vendor/microsoft-governance/dist/types.d.ts.map +1 -0
  200. package/vendor/microsoft-governance/dist/types.js +29 -0
  201. package/vendor/microsoft-governance/dist/types.js.map +1 -0
  202. package/vendor/microsoft-governance/dist/verify.d.ts +135 -0
  203. package/vendor/microsoft-governance/dist/verify.d.ts.map +1 -0
  204. package/vendor/microsoft-governance/dist/verify.js +356 -0
  205. package/vendor/microsoft-governance/dist/verify.js.map +1 -0
  206. package/vendor/microsoft-governance/package.json +64 -0
  207. package/index.d.ts +0 -177
  208. package/index.js +0 -1
package/dist/sdk.js ADDED
@@ -0,0 +1,748 @@
1
+ /** Error thrown for any non-OK Muxo API response. Carries the machine-readable code and payload. */
2
+ export class MuxoApiError extends Error {
3
+ status;
4
+ code;
5
+ url;
6
+ checkoutUrl;
7
+ data;
8
+ constructor(status, payload) {
9
+ super(String(payload.error || `Muxo request failed with HTTP ${status}`));
10
+ this.name = "MuxoApiError";
11
+ this.status = status;
12
+ this.code = typeof payload.code === "string" ? payload.code : undefined;
13
+ this.url = typeof payload.url === "string" ? payload.url : undefined;
14
+ this.checkoutUrl =
15
+ typeof payload.checkoutUrl === "string" ? payload.checkoutUrl : undefined;
16
+ this.data = payload;
17
+ }
18
+ }
19
+ export class MuxoClient {
20
+ baseUrl;
21
+ apiKeyResolver;
22
+ fetchImpl;
23
+ timeoutMs;
24
+ constructor(options = {}) {
25
+ this.baseUrl = (options.baseUrl ||
26
+ process.env.MUXO_BASE_URL ||
27
+ "https://app.muxo.ai").replace(/\/+$/, "");
28
+ if (typeof options.apiKey === "function") {
29
+ this.apiKeyResolver = options.apiKey;
30
+ }
31
+ else if (typeof options.apiKey === "string") {
32
+ const key = options.apiKey;
33
+ this.apiKeyResolver = () => key;
34
+ }
35
+ else if (process.env.MUXO_API_KEY) {
36
+ const key = process.env.MUXO_API_KEY;
37
+ this.apiKeyResolver = () => key;
38
+ }
39
+ this.fetchImpl = options.fetch || fetch;
40
+ this.timeoutMs = options.timeoutMs ?? 30000;
41
+ }
42
+ async request(path, init = {}) {
43
+ const headers = {
44
+ Accept: "application/json",
45
+ };
46
+ if (this.apiKeyResolver) {
47
+ const token = await this.apiKeyResolver();
48
+ if (token)
49
+ headers.Authorization = `Bearer ${token}`;
50
+ }
51
+ if (init.body !== undefined) {
52
+ headers["Content-Type"] = "application/json";
53
+ }
54
+ const res = await this.fetchImpl(`${this.baseUrl}${path}`, {
55
+ method: init.method || "GET",
56
+ headers,
57
+ body: init.body !== undefined ? JSON.stringify(init.body) : undefined,
58
+ signal: AbortSignal.timeout(this.timeoutMs),
59
+ });
60
+ const payload = (await res.json());
61
+ if (!res.ok || payload.ok === false) {
62
+ throw new MuxoApiError(res.status, payload);
63
+ }
64
+ return payload;
65
+ }
66
+ static async signup(params = {}, baseUrl = "https://app.muxo.ai") {
67
+ const client = new MuxoClient({ baseUrl });
68
+ return client.signupAgent({
69
+ agentName: params.agentName || params.workspaceName || "muxo-sdk-agent",
70
+ harness: params.harness || "muxo-sdk",
71
+ });
72
+ }
73
+ static async register(params, baseUrl = "https://app.muxo.ai") {
74
+ const client = new MuxoClient({ baseUrl });
75
+ return client.register(params);
76
+ }
77
+ static async login(params, baseUrl = "https://app.muxo.ai") {
78
+ const client = new MuxoClient({ baseUrl });
79
+ return client.login(params);
80
+ }
81
+ async register(params) {
82
+ return this.request("/api/v1/auth/register", {
83
+ method: "POST",
84
+ body: params,
85
+ });
86
+ }
87
+ async login(params) {
88
+ return this.request("/api/v1/auth/login", {
89
+ method: "POST",
90
+ body: params,
91
+ });
92
+ }
93
+ async signupAgent(params) {
94
+ return this.request("/api/v1/agents/signup", {
95
+ method: "POST",
96
+ body: params,
97
+ });
98
+ }
99
+ async whoami() {
100
+ const res = await this.mcpCall("get_organization", {});
101
+ const workspace = (res.workspace || res.organization);
102
+ return {
103
+ ok: true,
104
+ ...res,
105
+ workspace,
106
+ };
107
+ }
108
+ async mcpCall(name, args = {}) {
109
+ const rpcRes = await this.request("/mcp", {
110
+ method: "POST",
111
+ body: {
112
+ jsonrpc: "2.0",
113
+ id: Date.now(),
114
+ method: "tools/call",
115
+ params: { name, arguments: args },
116
+ },
117
+ });
118
+ if (rpcRes.error) {
119
+ throw new Error(rpcRes.error.message || "MCP call failed");
120
+ }
121
+ if (rpcRes.result?.isError) {
122
+ const errObj = rpcRes.result.structuredContent;
123
+ throw new Error(String(errObj?.error || rpcRes.result.content?.[0]?.text || "MCP tool execution failed"));
124
+ }
125
+ if (rpcRes.result?.structuredContent) {
126
+ return rpcRes.result.structuredContent;
127
+ }
128
+ const text = rpcRes.result?.content?.[0]?.text;
129
+ if (text) {
130
+ return JSON.parse(text);
131
+ }
132
+ return (rpcRes.result || {});
133
+ }
134
+ async searchTools(params) {
135
+ const qs = new URLSearchParams();
136
+ if (params?.query)
137
+ qs.set("query", params.query);
138
+ if (params?.lane)
139
+ qs.set("lane", params.lane);
140
+ if (params?.riskLevel)
141
+ qs.set("risk_level", params.riskLevel);
142
+ if (params?.limit)
143
+ qs.set("limit", String(params.limit));
144
+ const suffix = qs.toString() ? `?${qs.toString()}` : "";
145
+ return this.request(`/api/v1/tools${suffix}`);
146
+ }
147
+ async inspectTool(slug) {
148
+ return this.request(`/api/v1/tools/${encodeURIComponent(slug)}`);
149
+ }
150
+ async planAction(params) {
151
+ return this.request("/api/v1/plans", {
152
+ method: "POST",
153
+ body: params,
154
+ });
155
+ }
156
+ async getPlan(planId, options) {
157
+ const qs = new URLSearchParams();
158
+ if (options?.waitForApproval)
159
+ qs.set("wait_for_approval", "true");
160
+ if (options?.timeoutSeconds !== undefined) {
161
+ qs.set("timeout_seconds", String(options.timeoutSeconds));
162
+ }
163
+ const suffix = qs.toString() ? `?${qs.toString()}` : "";
164
+ return this.request(`/api/v1/plans/${encodeURIComponent(planId)}${suffix}`);
165
+ }
166
+ async waitForPlanApproval(planId, timeoutSeconds = 25) {
167
+ return this.request(`/api/v1/plans/${encodeURIComponent(planId)}/wait`, {
168
+ method: "POST",
169
+ body: { timeoutSeconds },
170
+ });
171
+ }
172
+ async approvePlan(planId, decision = "approved") {
173
+ return this.request(`/api/v1/plans/${encodeURIComponent(planId)}/approve`, {
174
+ method: "POST",
175
+ body: { decision },
176
+ });
177
+ }
178
+ async executePlan(planId) {
179
+ return this.request(`/api/v1/plans/${encodeURIComponent(planId)}/execute`, {
180
+ method: "POST",
181
+ });
182
+ }
183
+ async getRun(runId) {
184
+ return this.request(`/api/v1/runs/${encodeURIComponent(runId)}`);
185
+ }
186
+ async cancelRun(runId, reason) {
187
+ return this.request(`/api/v1/runs/${encodeURIComponent(runId)}/cancel`, {
188
+ method: "POST",
189
+ body: reason ? { reason } : {},
190
+ });
191
+ }
192
+ async exec(toolSlug, input = {}, options = {}) {
193
+ const planned = await this.planAction({
194
+ toolSlug,
195
+ input,
196
+ reason: options.reason,
197
+ fundingMode: options.fundingMode,
198
+ });
199
+ let plan = planned.plan;
200
+ if (plan.approvalStatus === "pending_approval" && options.approve) {
201
+ try {
202
+ const approved = await this.approvePlan(plan.id);
203
+ plan = approved.plan;
204
+ }
205
+ catch (err) {
206
+ if (err instanceof MuxoApiError && err.code === "human_required") {
207
+ throw new MuxoApiError(err.status, {
208
+ ...err.data,
209
+ planId: plan.id,
210
+ approvalUrl: err.url,
211
+ error: `Plan ${plan.id} needs approval from a signed-in person at ${err.url || "the Muxo console"}; API keys cannot approve plans.`,
212
+ });
213
+ }
214
+ throw err;
215
+ }
216
+ }
217
+ const executed = await this.executePlan(plan.id);
218
+ return {
219
+ ok: true,
220
+ plan,
221
+ run: executed.run,
222
+ receipt: executed.receipt,
223
+ settlement: executed.settlement ||
224
+ executed.receipt?.supplierSettlement ||
225
+ null,
226
+ };
227
+ }
228
+ async verifyReceipt(receiptId) {
229
+ const res = await this.request(`/api/v1/receipts/${encodeURIComponent(receiptId)}`);
230
+ const isOk = Boolean(res.valid ?? res.verified ?? true);
231
+ return {
232
+ ok: true,
233
+ valid: isOk,
234
+ verified: isOk,
235
+ receipt: res.receipt,
236
+ agenticReceiptValid: res.agenticReceiptValid,
237
+ explanation: res.explanation,
238
+ };
239
+ }
240
+ async verifyReceiptChain(limit = 100) {
241
+ return this.request(`/api/v1/receipts/verify-chain?limit=${encodeURIComponent(String(limit))}`);
242
+ }
243
+ async getMemoryGraph(query) {
244
+ const suffix = query ? `?query=${encodeURIComponent(query)}` : "";
245
+ return this.request(`/api/v1/memory/graph${suffix}`);
246
+ }
247
+ async startConnection(paramsOrProvider) {
248
+ const body = typeof paramsOrProvider === "string"
249
+ ? { provider: paramsOrProvider }
250
+ : paramsOrProvider;
251
+ return this.request("/api/v1/connections", {
252
+ method: "POST",
253
+ body,
254
+ });
255
+ }
256
+ async waitForConnection(paramsOrProvider, options) {
257
+ const body = typeof paramsOrProvider === "string"
258
+ ? { provider: paramsOrProvider, ...options }
259
+ : paramsOrProvider;
260
+ const res = await this.request("/api/v1/connections/wait", {
261
+ method: "POST",
262
+ body,
263
+ });
264
+ return {
265
+ ...res,
266
+ status: res.status || res.connection?.status || "pending",
267
+ };
268
+ }
269
+ async listResources() {
270
+ return this.request("/api/v1/resources");
271
+ }
272
+ async pullEnv() {
273
+ const res = await this.request("/api/v1/resources/env");
274
+ return Object.assign(res, {
275
+ includes: (substr) => String(res.dotenv || "").includes(substr),
276
+ toString: () => String(res.dotenv || ""),
277
+ });
278
+ }
279
+ async topupCredits(paramsOrCredits, description) {
280
+ const body = typeof paramsOrCredits === "number"
281
+ ? { credits: paramsOrCredits, description }
282
+ : paramsOrCredits;
283
+ const res = await this.request("/api/v1/billing/topup", {
284
+ method: "POST",
285
+ body,
286
+ });
287
+ return {
288
+ ...res,
289
+ creditBalance: res.creditBalance ?? res.workspace?.creditsBalance ?? 0,
290
+ };
291
+ }
292
+ async getBillingStatus() {
293
+ const res = await this.request("/api/v1/billing/status");
294
+ if (res.settlementSummary &&
295
+ res.settlementSummary.totalCustomerChargedCredits === undefined) {
296
+ res.settlementSummary.totalCustomerChargedCredits =
297
+ res.settlementSummary.totalCreditsConsumed;
298
+ }
299
+ return res;
300
+ }
301
+ async settlements() {
302
+ const res = await this.getSettlements();
303
+ return {
304
+ ...res,
305
+ summary: res.settlementSummary,
306
+ };
307
+ }
308
+ async getSettlements() {
309
+ const res = await this.request("/api/v1/billing/settlements");
310
+ if (res.settlementSummary &&
311
+ res.settlementSummary.totalCustomerChargedCredits === undefined) {
312
+ res.settlementSummary.totalCustomerChargedCredits =
313
+ res.settlementSummary.totalCreditsConsumed;
314
+ }
315
+ return res;
316
+ }
317
+ async recallMemory(query) {
318
+ const suffix = query ? `?query=${encodeURIComponent(query)}` : "";
319
+ return this.request(`/api/v1/memory${suffix}`);
320
+ }
321
+ async addMemory(paramsOrContent) {
322
+ const body = typeof paramsOrContent === "string"
323
+ ? { title: paramsOrContent.slice(0, 60), content: paramsOrContent }
324
+ : paramsOrContent;
325
+ return this.request("/api/v1/memory", {
326
+ method: "POST",
327
+ body,
328
+ });
329
+ }
330
+ async deleteMemory(id) {
331
+ return this.request(`/api/v1/memory/${encodeURIComponent(id)}`, {
332
+ method: "DELETE",
333
+ });
334
+ }
335
+ async getMemoryFacts(options = {}) {
336
+ const opts = typeof options === "boolean" ? { includeHistorical: options } : options;
337
+ const params = new URLSearchParams();
338
+ params.set("historical", opts.includeHistorical === false ? "false" : "true");
339
+ if (opts.query)
340
+ params.set("query", opts.query);
341
+ if (opts.subject)
342
+ params.set("subject", opts.subject);
343
+ if (opts.predicate)
344
+ params.set("predicate", opts.predicate);
345
+ if (opts.limit)
346
+ params.set("limit", String(opts.limit));
347
+ return this.request(`/api/v1/memory/facts?${params.toString()}`);
348
+ }
349
+ async listTemporalFacts(options) {
350
+ return this.getMemoryFacts(options);
351
+ }
352
+ async forgetMemory(queryOrParams) {
353
+ const query = (typeof queryOrParams === "string" ? queryOrParams : queryOrParams.query)?.trim();
354
+ if (!query) {
355
+ throw new Error("forgetMemory requires a non-empty query");
356
+ }
357
+ return this.request("/api/v1/memory/forget", {
358
+ method: "POST",
359
+ body: { query },
360
+ });
361
+ }
362
+ async getGovernanceStatus() {
363
+ return this.request("/api/v1/governance");
364
+ }
365
+ async getGuardrails() {
366
+ return this.request("/api/v1/guardrails");
367
+ }
368
+ async setGuardrail(promptOrParams) {
369
+ const prompt = typeof promptOrParams === "string"
370
+ ? promptOrParams
371
+ : promptOrParams.prompt;
372
+ return this.request("/api/v1/guardrails", {
373
+ method: "POST",
374
+ body: { prompt },
375
+ });
376
+ }
377
+ async resetGuardrails() {
378
+ return this.request("/api/v1/guardrails", {
379
+ method: "POST",
380
+ body: { reset: true },
381
+ });
382
+ }
383
+ async setKillSwitch(action, reason) {
384
+ return this.request("/api/v1/governance/kill-switch", {
385
+ method: "POST",
386
+ body: reason ? { action, reason } : { action },
387
+ });
388
+ }
389
+ async scanContext(contentOrParams) {
390
+ const body = typeof contentOrParams === "string"
391
+ ? { content: contentOrParams }
392
+ : contentOrParams;
393
+ return this.request("/api/v1/governance/scan-context", {
394
+ method: "POST",
395
+ body,
396
+ });
397
+ }
398
+ async updatePolicy(policy) {
399
+ return this.request("/api/v1/policy", {
400
+ method: "POST",
401
+ body: policy,
402
+ });
403
+ }
404
+ async getPolicy() {
405
+ return this.request("/api/v1/policy");
406
+ }
407
+ async getContext(query) {
408
+ const suffix = query ? `?query=${encodeURIComponent(query)}` : "";
409
+ return this.request(`/api/v1/context${suffix}`);
410
+ }
411
+ async listReceipts(limit = 25) {
412
+ return this.request(`/api/v1/receipts?limit=${encodeURIComponent(String(limit))}`);
413
+ }
414
+ async remember(instruction) {
415
+ return this.request("/api/v1/memory", {
416
+ method: "POST",
417
+ body: { prompt: instruction },
418
+ });
419
+ }
420
+ async do(prompt, options = {}) {
421
+ const isDryRun = options.dryRun === true || options.planOnly === true;
422
+ return this.request("/api/v1/do", {
423
+ method: "POST",
424
+ body: {
425
+ prompt,
426
+ input: options.input,
427
+ autoApprove: options.autoApprove !== false,
428
+ dryRun: isDryRun,
429
+ planOnly: isDryRun,
430
+ fundingMode: options.fundingMode,
431
+ },
432
+ });
433
+ }
434
+ async ask(prompt, options) {
435
+ return this.do(prompt, options);
436
+ }
437
+ async listByokKeys() {
438
+ return this.request("/api/v1/byok");
439
+ }
440
+ async setByokKey(provider, secretKey) {
441
+ return this.request("/api/v1/byok", {
442
+ method: "POST",
443
+ body: { provider, secretKey },
444
+ });
445
+ }
446
+ async deleteByokKey(provider) {
447
+ return this.request(`/api/v1/byok/${encodeURIComponent(provider)}`, {
448
+ method: "DELETE",
449
+ });
450
+ }
451
+ /** Lists plans, prices, and credit packs. No auth required. */
452
+ async getPlans() {
453
+ return this.request("/api/v1/billing/plans");
454
+ }
455
+ /**
456
+ * Moves the workspace to a plan. A first subscription returns a Stripe checkout URL
457
+ * (`payment_required`); changing an existing subscription returns a billing-portal URL.
458
+ * Plan changes are confirmed by a signed-in person; API keys get `human_required`.
459
+ */
460
+ async upgradePlan(options = {}) {
461
+ try {
462
+ return await this.request("/api/v1/billing/upgrade", {
463
+ method: "POST",
464
+ body: {
465
+ tier: options.tier || "starter",
466
+ interval: options.interval || "month",
467
+ },
468
+ });
469
+ }
470
+ catch (err) {
471
+ if (err instanceof MuxoApiError &&
472
+ (err.code === "payment_required" || err.code === "human_required")) {
473
+ return err.data;
474
+ }
475
+ throw err;
476
+ }
477
+ }
478
+ /**
479
+ * Opens the Stripe billing portal to manage payment details, switch plans, or cancel.
480
+ * Signed-in people only; API keys get a `human_required` MuxoApiError.
481
+ */
482
+ async openBillingPortal() {
483
+ return this.request("/api/v1/billing/portal", {
484
+ method: "POST",
485
+ body: {},
486
+ });
487
+ }
488
+ async createCheckoutSession(kind = "credit_topup", optionsOrCredits) {
489
+ const opts = typeof optionsOrCredits === "number"
490
+ ? { credits: optionsOrCredits }
491
+ : optionsOrCredits || {};
492
+ return this.request("/api/v1/billing/checkout", {
493
+ method: "POST",
494
+ body: { kind, ...opts },
495
+ });
496
+ }
497
+ async verifyCheckoutSession(sessionId) {
498
+ return this.request("/api/v1/billing/verify-session", {
499
+ method: "POST",
500
+ body: { sessionId },
501
+ });
502
+ }
503
+ // Stripe v2 Provisioning API (`Stripe-Version: 2026-09-30.preview`) SDK Methods
504
+ async createProvisioningConnectedAccount(params) {
505
+ return this.request("/api/v1/provisioning/connected_accounts", {
506
+ method: "POST",
507
+ body: params || {},
508
+ });
509
+ }
510
+ async getProvisioningConnectedAccount(accountId) {
511
+ if (accountId) {
512
+ return this.request(`/api/v1/provisioning/connected_accounts/${encodeURIComponent(accountId)}`);
513
+ }
514
+ return this.request("/api/v1/provisioning/connected_accounts");
515
+ }
516
+ async createProvisioningConnectedAccountLink(params) {
517
+ return this.request("/api/v1/provisioning/connected_account_links", {
518
+ method: "POST",
519
+ body: params || {},
520
+ });
521
+ }
522
+ async createProvisioningConnectedAccountSession(params) {
523
+ return this.request("/api/v1/provisioning/connected_account_sessions", {
524
+ method: "POST",
525
+ body: params || {},
526
+ });
527
+ }
528
+ async checkProvisioningEligibility() {
529
+ return this.request("/api/v1/provisioning/eligibility");
530
+ }
531
+ async listProvisioningProviders(params) {
532
+ const qs = new URLSearchParams();
533
+ if (params?.catalog)
534
+ qs.set("catalog", params.catalog);
535
+ if (params?.limit)
536
+ qs.set("limit", String(params.limit));
537
+ if (params?.page)
538
+ qs.set("page", params.page);
539
+ const suffix = qs.toString() ? `?${qs.toString()}` : "";
540
+ return this.request(`/api/v1/provisioning/catalog/providers${suffix}`);
541
+ }
542
+ async listProvisioningServices(params) {
543
+ const qs = new URLSearchParams();
544
+ if (params?.catalog)
545
+ qs.set("catalog", params.catalog);
546
+ if (params?.provider_name)
547
+ qs.set("provider_name", params.provider_name);
548
+ if (params?.provider_id)
549
+ qs.set("provider_id", params.provider_id);
550
+ if (params?.limit)
551
+ qs.set("limit", String(params.limit));
552
+ if (params?.page)
553
+ qs.set("page", params.page);
554
+ const suffix = qs.toString() ? `?${qs.toString()}` : "";
555
+ return this.request(`/api/v1/provisioning/catalog/services${suffix}`);
556
+ }
557
+ async getProvisioningPaymentProfile(params) {
558
+ const qs = new URLSearchParams();
559
+ if (params?.provider)
560
+ qs.set("provider", params.provider);
561
+ if (params?.livemode !== undefined)
562
+ qs.set("livemode", String(params.livemode));
563
+ const suffix = qs.toString() ? `?${qs.toString()}` : "";
564
+ return this.request(`/api/v1/provisioning/payment_profile${suffix}`);
565
+ }
566
+ async createProvisioningPaymentMethodRequest(params) {
567
+ return this.request("/api/v1/provisioning/payment_method_requests", {
568
+ method: "POST",
569
+ body: params || {},
570
+ });
571
+ }
572
+ async listProvisioningProviderConnections(params) {
573
+ const qs = new URLSearchParams();
574
+ if (params?.provider)
575
+ qs.set("provider", params.provider);
576
+ if (params?.limit)
577
+ qs.set("limit", String(params.limit));
578
+ if (params?.page)
579
+ qs.set("page", params.page);
580
+ const suffix = qs.toString() ? `?${qs.toString()}` : "";
581
+ return this.request(`/api/v1/provisioning/provider_connections${suffix}`);
582
+ }
583
+ async createProvisioningProviderConnectionRequest(params) {
584
+ return this.request("/api/v1/provisioning/provider_connection_requests", {
585
+ method: "POST",
586
+ body: params,
587
+ });
588
+ }
589
+ async listProvisioningProjects(params) {
590
+ const qs = new URLSearchParams();
591
+ if (params?.limit)
592
+ qs.set("limit", String(params.limit));
593
+ if (params?.page)
594
+ qs.set("page", params.page);
595
+ const suffix = qs.toString() ? `?${qs.toString()}` : "";
596
+ return this.request(`/api/v1/provisioning/projects${suffix}`);
597
+ }
598
+ async createProvisioningProject(params) {
599
+ return this.request("/api/v1/provisioning/projects", {
600
+ method: "POST",
601
+ body: params,
602
+ });
603
+ }
604
+ async listProvisioningResources(params) {
605
+ const qs = new URLSearchParams();
606
+ if (params?.project)
607
+ qs.set("project", params.project);
608
+ if (params?.provider)
609
+ qs.set("provider", params.provider);
610
+ if (params?.limit)
611
+ qs.set("limit", String(params.limit));
612
+ if (params?.page)
613
+ qs.set("page", params.page);
614
+ const suffix = qs.toString() ? `?${qs.toString()}` : "";
615
+ return this.request(`/api/v1/provisioning/resources${suffix}`);
616
+ }
617
+ async createProvisioningResource(params) {
618
+ return this.request("/api/v1/provisioning/resources", {
619
+ method: "POST",
620
+ body: params,
621
+ });
622
+ }
623
+ async revealResourceAccessConfiguration(resourceId) {
624
+ return this.request(`/api/v1/provisioning/resources/${encodeURIComponent(resourceId)}/reveal_access_configuration`, {
625
+ method: "POST",
626
+ body: {},
627
+ });
628
+ }
629
+ async getResourceSecrets(resourceId) {
630
+ return this.request(`/api/v1/resources/${encodeURIComponent(resourceId)}/secrets`);
631
+ }
632
+ // ---------------------------------------------------------------------------
633
+ // Multi-Workspace & Team API Key Onboarding
634
+ // ---------------------------------------------------------------------------
635
+ async listWorkspaces() {
636
+ return this.request("/api/v1/workspaces");
637
+ }
638
+ async createWorkspace(params) {
639
+ return this.request("/api/v1/workspaces", {
640
+ method: "POST",
641
+ body: params,
642
+ });
643
+ }
644
+ async switchWorkspace(workspaceId) {
645
+ return this.request("/api/v1/workspaces/switch", {
646
+ method: "POST",
647
+ body: { workspaceId },
648
+ });
649
+ }
650
+ async joinWorkspaceWithApiKey(apiKey) {
651
+ return this.request("/api/v1/workspaces/join", {
652
+ method: "POST",
653
+ body: { apiKey },
654
+ });
655
+ }
656
+ async onboardTeam(params) {
657
+ return this.request("/api/v1/workspaces/onboard-team", {
658
+ method: "POST",
659
+ body: params,
660
+ });
661
+ }
662
+ // ---------------------------------------------------------------------------
663
+ // Stripe v2 Billing Meter Streams, Event Destinations, Composio Toolkits/Triggers, & Cloudflare Workflows
664
+ // ---------------------------------------------------------------------------
665
+ async updateProvisioningSpendLimit(params) {
666
+ return this.request("/api/v1/provisioning/payment_profile/update_limit", {
667
+ method: "POST",
668
+ body: {
669
+ usage_limits: {
670
+ max_amount: String(params.max_amount),
671
+ currency: params.currency || "usd",
672
+ recurring_interval: params.recurring_interval || "month",
673
+ },
674
+ provider: params.provider,
675
+ },
676
+ });
677
+ }
678
+ async createProvisioningEventDestination(params) {
679
+ return this.request("/api/v1/provisioning/event_destinations", {
680
+ method: "POST",
681
+ body: params,
682
+ });
683
+ }
684
+ async recordBillingMeterEvent(params) {
685
+ return this.request("/api/v1/billing/meter_events", {
686
+ method: "POST",
687
+ body: params,
688
+ });
689
+ }
690
+ async listBillingMeterEvents(limit = 50) {
691
+ return this.request(`/api/v1/billing/meter_events?limit=${limit}`);
692
+ }
693
+ async listToolkits(params) {
694
+ const qs = new URLSearchParams();
695
+ if (params?.category)
696
+ qs.set("category", params.category);
697
+ if (params?.search)
698
+ qs.set("search", params.search);
699
+ const suffix = qs.toString() ? `?${qs.toString()}` : "";
700
+ return this.request(`/api/v1/toolkits${suffix}`);
701
+ }
702
+ async createCustomAuthConfig(params) {
703
+ return this.request("/api/v1/connections/auth-configs", {
704
+ method: "POST",
705
+ body: params,
706
+ });
707
+ }
708
+ async listTriggers(provider) {
709
+ const suffix = provider ? `?provider=${encodeURIComponent(provider)}` : "";
710
+ return this.request(`/api/v1/triggers${suffix}`);
711
+ }
712
+ async enableTrigger(params) {
713
+ return this.request("/api/v1/triggers", {
714
+ method: "POST",
715
+ body: params,
716
+ });
717
+ }
718
+ async ingestTriggerWebhook(params) {
719
+ return this.request("/api/v1/triggers/webhook", {
720
+ method: "POST",
721
+ body: params,
722
+ });
723
+ }
724
+ async executeBatchPlans(params) {
725
+ return this.request("/api/v1/plans/batch", {
726
+ method: "POST",
727
+ body: params,
728
+ });
729
+ }
730
+ async searchMemoryHybrid(query, limit = 10) {
731
+ return this.request(`/api/v1/memory/hybrid?query=${encodeURIComponent(query)}&limit=${limit}`);
732
+ }
733
+ async startDurableWorkflow(params) {
734
+ return this.request("/api/v1/workflows", {
735
+ method: "POST",
736
+ body: params,
737
+ });
738
+ }
739
+ async advanceDurableWorkflow(workflowId, eventPayload) {
740
+ return this.request(`/api/v1/workflows/${encodeURIComponent(workflowId)}/advance`, {
741
+ method: "POST",
742
+ body: eventPayload || {},
743
+ });
744
+ }
745
+ async exportGovernanceArchive() {
746
+ return this.request("/api/v1/governance/archive");
747
+ }
748
+ }