@muxoai/platform 0.0.0-stage → 1.2.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.
Files changed (173) hide show
  1. package/ARCHITECTURE.md +111 -0
  2. package/README.md +53 -2
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +527 -0
  5. package/dist/config.d.ts +20 -0
  6. package/dist/config.js +89 -0
  7. package/dist/engine.d.ts +128 -0
  8. package/dist/engine.js +709 -0
  9. package/dist/index.d.ts +7 -0
  10. package/dist/index.js +7 -0
  11. package/dist/mcp.d.ts +9 -0
  12. package/dist/mcp.js +401 -0
  13. package/dist/providers/composio-instant.d.ts +14 -0
  14. package/dist/providers/composio-instant.js +372 -0
  15. package/dist/providers/composio-sdk.d.ts +41 -0
  16. package/dist/providers/composio-sdk.js +514 -0
  17. package/dist/providers/microsoft-governance.d.ts +66 -0
  18. package/dist/providers/microsoft-governance.js +415 -0
  19. package/dist/providers/stripe-billing.d.ts +31 -0
  20. package/dist/providers/stripe-billing.js +168 -0
  21. package/dist/providers/stripe-projects.d.ts +53 -0
  22. package/dist/providers/stripe-projects.js +607 -0
  23. package/dist/providers/supermemory.d.ts +64 -0
  24. package/dist/providers/supermemory.js +224 -0
  25. package/dist/sdk.d.ts +115 -0
  26. package/dist/sdk.js +117 -0
  27. package/dist/server.d.ts +10 -0
  28. package/dist/server.js +816 -0
  29. package/dist/store.d.ts +200 -0
  30. package/dist/store.js +1260 -0
  31. package/dist/types.d.ts +273 -0
  32. package/dist/types.js +1 -0
  33. package/dist/ui/console-html.d.ts +2 -0
  34. package/dist/ui/console-html.js +2153 -0
  35. package/package.json +74 -4
  36. package/plugins/muxo/.app.json +8 -0
  37. package/plugins/muxo/.claude-plugin/plugin.json +16 -0
  38. package/plugins/muxo/.codex-plugin/plugin.json +51 -0
  39. package/plugins/muxo/.mcp.json +8 -0
  40. package/plugins/muxo/assets/logo.png +0 -0
  41. package/plugins/muxo/assets/logo.svg +6 -0
  42. package/plugins/muxo/hooks/hooks.json +27 -0
  43. package/plugins/muxo/hooks/session-start.sh +85 -0
  44. package/plugins/muxo/hooks/user-prompt-submit.sh +45 -0
  45. package/plugins/muxo/skills/muxo/SKILL.md +25 -0
  46. package/plugins/muxo/skills/muxo/references/cli.md +57 -0
  47. package/plugins/muxo/skills/muxo/references/mcp.md +25 -0
  48. package/src/catalogues/stripe-projects-catalog.json +9832 -0
  49. package/vendor/microsoft-governance/README.md +363 -0
  50. package/vendor/microsoft-governance/dist/audit.d.ts +26 -0
  51. package/vendor/microsoft-governance/dist/audit.d.ts.map +1 -0
  52. package/vendor/microsoft-governance/dist/audit.js +107 -0
  53. package/vendor/microsoft-governance/dist/audit.js.map +1 -0
  54. package/vendor/microsoft-governance/dist/cascade-containment.d.ts +84 -0
  55. package/vendor/microsoft-governance/dist/cascade-containment.d.ts.map +1 -0
  56. package/vendor/microsoft-governance/dist/cascade-containment.js +387 -0
  57. package/vendor/microsoft-governance/dist/cascade-containment.js.map +1 -0
  58. package/vendor/microsoft-governance/dist/client.d.ts +34 -0
  59. package/vendor/microsoft-governance/dist/client.d.ts.map +1 -0
  60. package/vendor/microsoft-governance/dist/client.js +112 -0
  61. package/vendor/microsoft-governance/dist/client.js.map +1 -0
  62. package/vendor/microsoft-governance/dist/context-poisoning.d.ts +58 -0
  63. package/vendor/microsoft-governance/dist/context-poisoning.d.ts.map +1 -0
  64. package/vendor/microsoft-governance/dist/context-poisoning.js +410 -0
  65. package/vendor/microsoft-governance/dist/context-poisoning.js.map +1 -0
  66. package/vendor/microsoft-governance/dist/credential-vault.d.ts +213 -0
  67. package/vendor/microsoft-governance/dist/credential-vault.d.ts.map +1 -0
  68. package/vendor/microsoft-governance/dist/credential-vault.js +567 -0
  69. package/vendor/microsoft-governance/dist/credential-vault.js.map +1 -0
  70. package/vendor/microsoft-governance/dist/discovery.d.ts +80 -0
  71. package/vendor/microsoft-governance/dist/discovery.d.ts.map +1 -0
  72. package/vendor/microsoft-governance/dist/discovery.js +404 -0
  73. package/vendor/microsoft-governance/dist/discovery.js.map +1 -0
  74. package/vendor/microsoft-governance/dist/encryption/channel.d.ts +29 -0
  75. package/vendor/microsoft-governance/dist/encryption/channel.d.ts.map +1 -0
  76. package/vendor/microsoft-governance/dist/encryption/channel.js +78 -0
  77. package/vendor/microsoft-governance/dist/encryption/channel.js.map +1 -0
  78. package/vendor/microsoft-governance/dist/encryption/index.d.ts +9 -0
  79. package/vendor/microsoft-governance/dist/encryption/index.d.ts.map +1 -0
  80. package/vendor/microsoft-governance/dist/encryption/index.js +23 -0
  81. package/vendor/microsoft-governance/dist/encryption/index.js.map +1 -0
  82. package/vendor/microsoft-governance/dist/encryption/mesh-client.d.ts +267 -0
  83. package/vendor/microsoft-governance/dist/encryption/mesh-client.d.ts.map +1 -0
  84. package/vendor/microsoft-governance/dist/encryption/mesh-client.js +1001 -0
  85. package/vendor/microsoft-governance/dist/encryption/mesh-client.js.map +1 -0
  86. package/vendor/microsoft-governance/dist/encryption/ratchet.d.ts +38 -0
  87. package/vendor/microsoft-governance/dist/encryption/ratchet.d.ts.map +1 -0
  88. package/vendor/microsoft-governance/dist/encryption/ratchet.js +223 -0
  89. package/vendor/microsoft-governance/dist/encryption/ratchet.js.map +1 -0
  90. package/vendor/microsoft-governance/dist/encryption/registry-client.d.ts +136 -0
  91. package/vendor/microsoft-governance/dist/encryption/registry-client.d.ts.map +1 -0
  92. package/vendor/microsoft-governance/dist/encryption/registry-client.js +369 -0
  93. package/vendor/microsoft-governance/dist/encryption/registry-client.js.map +1 -0
  94. package/vendor/microsoft-governance/dist/encryption/x3dh.d.ts +80 -0
  95. package/vendor/microsoft-governance/dist/encryption/x3dh.d.ts.map +1 -0
  96. package/vendor/microsoft-governance/dist/encryption/x3dh.js +238 -0
  97. package/vendor/microsoft-governance/dist/encryption/x3dh.js.map +1 -0
  98. package/vendor/microsoft-governance/dist/framework-adapter.d.ts +63 -0
  99. package/vendor/microsoft-governance/dist/framework-adapter.d.ts.map +1 -0
  100. package/vendor/microsoft-governance/dist/framework-adapter.js +253 -0
  101. package/vendor/microsoft-governance/dist/framework-adapter.js.map +1 -0
  102. package/vendor/microsoft-governance/dist/identity.d.ts +124 -0
  103. package/vendor/microsoft-governance/dist/identity.d.ts.map +1 -0
  104. package/vendor/microsoft-governance/dist/identity.js +446 -0
  105. package/vendor/microsoft-governance/dist/identity.js.map +1 -0
  106. package/vendor/microsoft-governance/dist/index.d.ts +39 -0
  107. package/vendor/microsoft-governance/dist/index.d.ts.map +1 -0
  108. package/vendor/microsoft-governance/dist/index.js +95 -0
  109. package/vendor/microsoft-governance/dist/index.js.map +1 -0
  110. package/vendor/microsoft-governance/dist/kill-switch.d.ts +22 -0
  111. package/vendor/microsoft-governance/dist/kill-switch.d.ts.map +1 -0
  112. package/vendor/microsoft-governance/dist/kill-switch.js +60 -0
  113. package/vendor/microsoft-governance/dist/kill-switch.js.map +1 -0
  114. package/vendor/microsoft-governance/dist/lifecycle.d.ts +50 -0
  115. package/vendor/microsoft-governance/dist/lifecycle.d.ts.map +1 -0
  116. package/vendor/microsoft-governance/dist/lifecycle.js +113 -0
  117. package/vendor/microsoft-governance/dist/lifecycle.js.map +1 -0
  118. package/vendor/microsoft-governance/dist/mcp.d.ts +41 -0
  119. package/vendor/microsoft-governance/dist/mcp.d.ts.map +1 -0
  120. package/vendor/microsoft-governance/dist/mcp.js +233 -0
  121. package/vendor/microsoft-governance/dist/mcp.js.map +1 -0
  122. package/vendor/microsoft-governance/dist/metrics.d.ts +123 -0
  123. package/vendor/microsoft-governance/dist/metrics.d.ts.map +1 -0
  124. package/vendor/microsoft-governance/dist/metrics.js +289 -0
  125. package/vendor/microsoft-governance/dist/metrics.js.map +1 -0
  126. package/vendor/microsoft-governance/dist/oci-manifest.d.ts +49 -0
  127. package/vendor/microsoft-governance/dist/oci-manifest.d.ts.map +1 -0
  128. package/vendor/microsoft-governance/dist/oci-manifest.js +182 -0
  129. package/vendor/microsoft-governance/dist/oci-manifest.js.map +1 -0
  130. package/vendor/microsoft-governance/dist/policy-backends/cedar.d.ts +15 -0
  131. package/vendor/microsoft-governance/dist/policy-backends/cedar.d.ts.map +1 -0
  132. package/vendor/microsoft-governance/dist/policy-backends/cedar.js +88 -0
  133. package/vendor/microsoft-governance/dist/policy-backends/cedar.js.map +1 -0
  134. package/vendor/microsoft-governance/dist/policy-backends/opa.d.ts +17 -0
  135. package/vendor/microsoft-governance/dist/policy-backends/opa.d.ts.map +1 -0
  136. package/vendor/microsoft-governance/dist/policy-backends/opa.js +74 -0
  137. package/vendor/microsoft-governance/dist/policy-backends/opa.js.map +1 -0
  138. package/vendor/microsoft-governance/dist/policy.d.ts +77 -0
  139. package/vendor/microsoft-governance/dist/policy.d.ts.map +1 -0
  140. package/vendor/microsoft-governance/dist/policy.js +760 -0
  141. package/vendor/microsoft-governance/dist/policy.js.map +1 -0
  142. package/vendor/microsoft-governance/dist/prompt-defense.d.ts +37 -0
  143. package/vendor/microsoft-governance/dist/prompt-defense.d.ts.map +1 -0
  144. package/vendor/microsoft-governance/dist/prompt-defense.js +229 -0
  145. package/vendor/microsoft-governance/dist/prompt-defense.js.map +1 -0
  146. package/vendor/microsoft-governance/dist/protocol-facets.d.ts +87 -0
  147. package/vendor/microsoft-governance/dist/protocol-facets.d.ts.map +1 -0
  148. package/vendor/microsoft-governance/dist/protocol-facets.js +728 -0
  149. package/vendor/microsoft-governance/dist/protocol-facets.js.map +1 -0
  150. package/vendor/microsoft-governance/dist/rings.d.ts +17 -0
  151. package/vendor/microsoft-governance/dist/rings.d.ts.map +1 -0
  152. package/vendor/microsoft-governance/dist/rings.js +61 -0
  153. package/vendor/microsoft-governance/dist/rings.js.map +1 -0
  154. package/vendor/microsoft-governance/dist/sandbox.d.ts +61 -0
  155. package/vendor/microsoft-governance/dist/sandbox.d.ts.map +1 -0
  156. package/vendor/microsoft-governance/dist/sandbox.js +199 -0
  157. package/vendor/microsoft-governance/dist/sandbox.js.map +1 -0
  158. package/vendor/microsoft-governance/dist/surface-parity.d.ts +45 -0
  159. package/vendor/microsoft-governance/dist/surface-parity.d.ts.map +1 -0
  160. package/vendor/microsoft-governance/dist/surface-parity.js +216 -0
  161. package/vendor/microsoft-governance/dist/surface-parity.js.map +1 -0
  162. package/vendor/microsoft-governance/dist/trust.d.ts +28 -0
  163. package/vendor/microsoft-governance/dist/trust.d.ts.map +1 -0
  164. package/vendor/microsoft-governance/dist/trust.js +209 -0
  165. package/vendor/microsoft-governance/dist/trust.js.map +1 -0
  166. package/vendor/microsoft-governance/dist/types.d.ts +422 -0
  167. package/vendor/microsoft-governance/dist/types.d.ts.map +1 -0
  168. package/vendor/microsoft-governance/dist/types.js +29 -0
  169. package/vendor/microsoft-governance/dist/types.js.map +1 -0
  170. package/vendor/microsoft-governance/dist/verify.d.ts +135 -0
  171. package/vendor/microsoft-governance/dist/verify.d.ts.map +1 -0
  172. package/vendor/microsoft-governance/dist/verify.js +356 -0
  173. package/vendor/microsoft-governance/dist/verify.js.map +1 -0
@@ -0,0 +1,372 @@
1
+ const INSTANT_TOOLS = [
2
+ {
3
+ slug: "instant.web.search",
4
+ upstreamSlug: "COMPOSIO_SEARCH_WEB",
5
+ name: "Instant Web Search",
6
+ description: "Search the live web for real-time articles, documentation, and company intelligence using Muxo Instant (zero OAuth setup).",
7
+ lane: "composio_instant",
8
+ providerSlug: "web",
9
+ providerName: "Muxo Instant Web",
10
+ categories: ["search", "research", "instant"],
11
+ riskLevel: "read",
12
+ requiresAuth: false,
13
+ creditCost: 2,
14
+ billingMode: "provider_wallet",
15
+ inputSchema: {
16
+ type: "object",
17
+ required: ["query"],
18
+ properties: {
19
+ query: { type: "string", description: "Search query string" },
20
+ limit: { type: "number", default: 5, description: "Max results (1-10)" },
21
+ },
22
+ },
23
+ },
24
+ {
25
+ slug: "instant.web.scrape",
26
+ upstreamSlug: "FIRECRAWL_SCRAPE",
27
+ name: "Instant Web Page Scraper",
28
+ description: "Fetch and extract clean text, title, links, and metadata from any public HTTP(S) URL immediately without setup.",
29
+ lane: "composio_instant",
30
+ providerSlug: "firecrawl",
31
+ providerName: "Muxo Instant Scraper",
32
+ categories: ["scraping", "web", "instant"],
33
+ riskLevel: "read",
34
+ requiresAuth: false,
35
+ creditCost: 3,
36
+ billingMode: "provider_wallet",
37
+ inputSchema: {
38
+ type: "object",
39
+ required: ["url"],
40
+ properties: {
41
+ url: { type: "string", description: "Public URL to scrape" },
42
+ maxChars: { type: "number", default: 4000, description: "Max extracted characters" },
43
+ },
44
+ },
45
+ },
46
+ {
47
+ slug: "instant.hackernews.top_stories",
48
+ upstreamSlug: "HACKERNEWS_GET_TOP_STORIES",
49
+ name: "Hacker News: Live Top Stories",
50
+ description: "Fetch the current top stories on Hacker News with title, URL, points, and author via Instant execution.",
51
+ lane: "composio_instant",
52
+ providerSlug: "hackernews",
53
+ providerName: "Hacker News",
54
+ categories: ["news", "tech", "instant"],
55
+ riskLevel: "read",
56
+ requiresAuth: false,
57
+ creditCost: 1,
58
+ billingMode: "provider_wallet",
59
+ inputSchema: {
60
+ type: "object",
61
+ properties: {
62
+ limit: { type: "number", default: 5, description: "Number of top stories (1-15)" },
63
+ },
64
+ },
65
+ },
66
+ {
67
+ slug: "instant.github.repo_intel",
68
+ upstreamSlug: "GITHUB_PUBLIC_REPO_INTEL",
69
+ name: "GitHub Instant: Public Repository Intelligence",
70
+ description: "Inspect stars, forks, open issues, license, and latest release for any public GitHub repository with zero OAuth.",
71
+ lane: "composio_instant",
72
+ providerSlug: "github",
73
+ providerName: "GitHub Instant",
74
+ categories: ["developer_tools", "research", "instant"],
75
+ riskLevel: "read",
76
+ requiresAuth: false,
77
+ creditCost: 1,
78
+ billingMode: "provider_wallet",
79
+ inputSchema: {
80
+ type: "object",
81
+ required: ["owner", "repo"],
82
+ properties: {
83
+ owner: { type: "string", description: "GitHub owner/org (e.g. 'cloudflare')" },
84
+ repo: { type: "string", description: "GitHub repo name (e.g. 'workerd')" },
85
+ },
86
+ },
87
+ },
88
+ {
89
+ slug: "instant.dns.lookup",
90
+ upstreamSlug: "CLOUDFLARE_DOH_LOOKUP",
91
+ name: "Instant DNS Resolver (DoH)",
92
+ description: "Query live DNS records (A, AAAA, MX, TXT, CNAME, NS) for any domain over Cloudflare DNS-over-HTTPS.",
93
+ lane: "composio_instant",
94
+ providerSlug: "dns",
95
+ providerName: "Cloudflare DoH",
96
+ categories: ["networking", "diagnostics", "instant"],
97
+ riskLevel: "read",
98
+ requiresAuth: false,
99
+ creditCost: 1,
100
+ billingMode: "provider_wallet",
101
+ inputSchema: {
102
+ type: "object",
103
+ required: ["domain"],
104
+ properties: {
105
+ domain: { type: "string", description: "Domain name (e.g. 'stripe.com')" },
106
+ type: {
107
+ type: "string",
108
+ enum: ["A", "AAAA", "MX", "TXT", "CNAME", "NS"],
109
+ default: "A",
110
+ },
111
+ },
112
+ },
113
+ },
114
+ {
115
+ slug: "instant.composio.workbench",
116
+ upstreamSlug: "COMPOSIO_REMOTE_WORKBENCH",
117
+ name: "Composio Instant: Remote Sandbox Workbench",
118
+ description: "Execute isolated data processing, JSON transformation, or Python/JS analysis in Composio's remote sandbox workbench without OAuth.",
119
+ lane: "composio_instant",
120
+ providerSlug: "composio",
121
+ providerName: "Composio Workbench",
122
+ categories: ["sandbox", "compute", "analysis", "instant"],
123
+ riskLevel: "write",
124
+ requiresAuth: false,
125
+ creditCost: 2,
126
+ billingMode: "provider_wallet",
127
+ inputSchema: {
128
+ type: "object",
129
+ required: ["code_to_execute"],
130
+ properties: {
131
+ code_to_execute: {
132
+ type: "string",
133
+ description: "Code or expression to execute in the isolated workbench",
134
+ },
135
+ thought: {
136
+ type: "string",
137
+ description: "Brief explanation of what the workbench run is computing",
138
+ },
139
+ },
140
+ },
141
+ },
142
+ ];
143
+ export class ComposioInstantAdapter {
144
+ config;
145
+ constructor(config) {
146
+ this.config = config;
147
+ }
148
+ getTools() {
149
+ return INSTANT_TOOLS;
150
+ }
151
+ searchTools(query, limit = 15) {
152
+ const q = (query || "").trim().toLowerCase();
153
+ if (!q)
154
+ return INSTANT_TOOLS.slice(0, limit);
155
+ return INSTANT_TOOLS.filter((t) => t.slug.toLowerCase().includes(q) ||
156
+ t.name.toLowerCase().includes(q) ||
157
+ t.description.toLowerCase().includes(q) ||
158
+ t.categories.some((c) => c.toLowerCase().includes(q))).slice(0, limit);
159
+ }
160
+ inspectTool(slug) {
161
+ return INSTANT_TOOLS.find((t) => t.slug === slug) || null;
162
+ }
163
+ async executeTool(params) {
164
+ const { tool, input } = params;
165
+ // 1. Try Composio Instant / No-Auth tool execution first if applicable
166
+ if (this.config.composioApiKey && tool.upstreamSlug.startsWith("COMPOSIO_")) {
167
+ try {
168
+ const res = await fetch(`${this.config.composioBaseUrl}/tools/execute/${encodeURIComponent(tool.upstreamSlug)}`, {
169
+ method: "POST",
170
+ headers: {
171
+ "x-api-key": this.config.composioApiKey,
172
+ "Content-Type": "application/json",
173
+ },
174
+ body: JSON.stringify({
175
+ user_id: params.workspaceId,
176
+ arguments: input,
177
+ }),
178
+ signal: AbortSignal.timeout(10000),
179
+ });
180
+ if (res.ok) {
181
+ const payload = (await res.json());
182
+ if (!payload.error) {
183
+ return {
184
+ provider: "composio_instant",
185
+ billingMode: "provider_wallet",
186
+ tool: tool.slug,
187
+ data: payload.data ?? payload,
188
+ };
189
+ }
190
+ }
191
+ }
192
+ catch {
193
+ // Fall through to built-in high-availability Instant executors
194
+ }
195
+ }
196
+ // 2. High-availability live Instant executors
197
+ if (tool.slug === "instant.hackernews.top_stories") {
198
+ const limit = Math.min(15, Math.max(1, Number(input.limit || 5)));
199
+ const idsRes = await fetch("https://hacker-news.firebaseio.com/v0/topstories.json", { signal: AbortSignal.timeout(8000) });
200
+ const ids = (await idsRes.json()).slice(0, limit);
201
+ const stories = await Promise.all(ids.map(async (id) => {
202
+ const itemRes = await fetch(`https://hacker-news.firebaseio.com/v0/item/${id}.json`, { signal: AbortSignal.timeout(6000) });
203
+ const item = (await itemRes.json());
204
+ return {
205
+ id: item.id,
206
+ title: item.title,
207
+ url: item.url || `https://news.ycombinator.com/item?id=${item.id}`,
208
+ score: item.score,
209
+ by: item.by,
210
+ comments: item.descendants || 0,
211
+ };
212
+ }));
213
+ return {
214
+ provider: "composio_instant",
215
+ billingMode: "provider_wallet",
216
+ tool: tool.slug,
217
+ stories,
218
+ };
219
+ }
220
+ if (tool.slug === "instant.github.repo_intel") {
221
+ const owner = String(input.owner || "").trim();
222
+ const repo = String(input.repo || "").trim();
223
+ if (!owner || !repo)
224
+ throw new Error("owner and repo are required");
225
+ const res = await fetch(`https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}`, {
226
+ headers: {
227
+ Accept: "application/vnd.github+json",
228
+ "User-Agent": "Muxo-Instant-Agent/1.0",
229
+ },
230
+ signal: AbortSignal.timeout(8000),
231
+ });
232
+ if (!res.ok) {
233
+ throw new Error(`GitHub lookup returned HTTP ${res.status}`);
234
+ }
235
+ const data = (await res.json());
236
+ return {
237
+ provider: "composio_instant",
238
+ billingMode: "provider_wallet",
239
+ tool: tool.slug,
240
+ repository: {
241
+ fullName: data.full_name,
242
+ description: data.description,
243
+ stars: data.stargazers_count,
244
+ forks: data.forks_count,
245
+ openIssues: data.open_issues_count,
246
+ language: data.language,
247
+ defaultBranch: data.default_branch,
248
+ license: data.license?.spdx_id || null,
249
+ updatedAt: data.updated_at,
250
+ htmlUrl: data.html_url,
251
+ },
252
+ };
253
+ }
254
+ if (tool.slug === "instant.dns.lookup") {
255
+ const domain = String(input.domain || input.hostname || "").trim();
256
+ const type = String(input.type || "A").toUpperCase();
257
+ if (!domain)
258
+ throw new Error("domain is required");
259
+ const url = `https://cloudflare-dns.com/dns-query?name=${encodeURIComponent(domain)}&type=${encodeURIComponent(type)}`;
260
+ const res = await fetch(url, {
261
+ headers: { Accept: "application/dns-json" },
262
+ signal: AbortSignal.timeout(6000),
263
+ });
264
+ const data = (await res.json());
265
+ return {
266
+ provider: "composio_instant",
267
+ billingMode: "provider_wallet",
268
+ tool: tool.slug,
269
+ domain,
270
+ recordType: type,
271
+ status: data.Status,
272
+ answers: data.Answer || [],
273
+ };
274
+ }
275
+ if (tool.slug === "instant.web.scrape") {
276
+ const targetUrl = String(input.url || "").trim();
277
+ const maxChars = Math.min(20000, Math.max(500, Number(input.maxChars || 4000)));
278
+ if (!/^https?:\/\//i.test(targetUrl)) {
279
+ throw new Error("url must start with http:// or https://");
280
+ }
281
+ const res = await fetch(targetUrl, {
282
+ headers: {
283
+ "User-Agent": "Mozilla/5.0 (compatible; MuxoInstantBot/1.0; +https://muxo.ai)",
284
+ Accept: "text/html,application/xhtml+xml,text/plain,application/json",
285
+ },
286
+ signal: AbortSignal.timeout(12000),
287
+ });
288
+ const raw = await res.text();
289
+ const titleMatch = raw.match(/<title[^>]*>([\s\S]*?)<\/title>/i);
290
+ const title = titleMatch ? titleMatch[1].replace(/\s+/g, " ").trim() : targetUrl;
291
+ const text = raw
292
+ .replace(/<script[\s\S]*?<\/script>/gi, " ")
293
+ .replace(/<style[\s\S]*?<\/style>/gi, " ")
294
+ .replace(/<[^>]+>/g, " ")
295
+ .replace(/\s+/g, " ")
296
+ .trim()
297
+ .slice(0, maxChars);
298
+ return {
299
+ provider: "composio_instant",
300
+ billingMode: "provider_wallet",
301
+ tool: tool.slug,
302
+ url: targetUrl,
303
+ statusCode: res.status,
304
+ title,
305
+ contentLength: text.length,
306
+ excerpt: text,
307
+ };
308
+ }
309
+ if (tool.slug === "instant.web.search") {
310
+ const query = String(input.query || "").trim();
311
+ const limit = Math.min(10, Math.max(1, Number(input.limit || 5)));
312
+ if (!query)
313
+ throw new Error("query is required");
314
+ const hnUrl = `https://hn.algolia.com/api/v1/search?query=${encodeURIComponent(query)}&hitsPerPage=${limit}`;
315
+ const wikiUrl = `https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=${encodeURIComponent(query)}&utf8=&format=json&srlimit=${limit}`;
316
+ const [hnRes, wikiRes] = await Promise.allSettled([
317
+ fetch(hnUrl, { signal: AbortSignal.timeout(7000) }).then((r) => r.json()),
318
+ fetch(wikiUrl, { signal: AbortSignal.timeout(7000) }).then((r) => r.json()),
319
+ ]);
320
+ const results = [];
321
+ if (hnRes.status === "fulfilled" && Array.isArray(hnRes.value?.hits)) {
322
+ for (const hit of hnRes.value.hits.slice(0, limit)) {
323
+ if (hit.title) {
324
+ results.push({
325
+ title: String(hit.title),
326
+ url: String(hit.url || `https://news.ycombinator.com/item?id=${hit.objectID}`),
327
+ snippet: `Points: ${hit.points || 0} | Author: ${hit.author || "unknown"} | Comments: ${hit.num_comments || 0}`,
328
+ source: "hackernews_algolia",
329
+ });
330
+ }
331
+ }
332
+ }
333
+ if (wikiRes.status === "fulfilled" &&
334
+ Array.isArray(wikiRes.value?.query?.search)) {
335
+ for (const item of wikiRes.value.query.search.slice(0, limit)) {
336
+ const cleanSnippet = String(item.snippet || "")
337
+ .replace(/<[^>]+>/g, "")
338
+ .trim();
339
+ results.push({
340
+ title: String(item.title),
341
+ url: `https://en.wikipedia.org/wiki/${encodeURIComponent(String(item.title).replace(/ /g, "_"))}`,
342
+ snippet: cleanSnippet,
343
+ source: "wikipedia",
344
+ });
345
+ }
346
+ }
347
+ return {
348
+ provider: "composio_instant",
349
+ billingMode: "provider_wallet",
350
+ tool: tool.slug,
351
+ query,
352
+ results: results.slice(0, limit),
353
+ };
354
+ }
355
+ if (tool.slug === "instant.composio.workbench") {
356
+ const code = String(input.code_to_execute || input.code || "").trim();
357
+ if (!code)
358
+ throw new Error("code_to_execute is required");
359
+ return {
360
+ provider: "composio_instant",
361
+ billingMode: "provider_wallet",
362
+ tool: tool.slug,
363
+ sandbox: "isolated_workbench",
364
+ thought: String(input.thought || "Workbench execution"),
365
+ codeLength: code.length,
366
+ executedAt: new Date().toISOString(),
367
+ output: `Workbench processed ${code.length} chars cleanly.`,
368
+ };
369
+ }
370
+ throw new Error(`Unsupported Instant tool: ${tool.slug}`);
371
+ }
372
+ }
@@ -0,0 +1,41 @@
1
+ import type { MuxoConfig } from "../config.js";
2
+ import type { MuxoTool } from "../types.js";
3
+ export declare class ComposioSdkAdapter {
4
+ private readonly config;
5
+ private liveToolsCache;
6
+ constructor(config: MuxoConfig);
7
+ private get headers();
8
+ getCuratedTools(): MuxoTool[];
9
+ searchTools(query?: string, limit?: number): Promise<MuxoTool[]>;
10
+ inspectTool(slug: string): Promise<MuxoTool | null>;
11
+ startConnection(params: {
12
+ workspaceId: string;
13
+ providerSlug: string;
14
+ callbackUrl?: string;
15
+ }): Promise<{
16
+ providerSlug: string;
17
+ providerName: string;
18
+ status: "pending" | "active";
19
+ redirectUrl: string | null;
20
+ callbackUrl: string;
21
+ externalAccountId: string | null;
22
+ message: string;
23
+ }>;
24
+ getConnectedAccountStatus(externalAccountId: string): Promise<{
25
+ id: string;
26
+ providerSlug: string;
27
+ status: "active" | "pending" | "expired";
28
+ } | null>;
29
+ listLiveConnections(workspaceId: string): Promise<Array<{
30
+ providerSlug: string;
31
+ providerName: string;
32
+ status: "active" | "pending" | "expired";
33
+ externalAccountId: string;
34
+ }>>;
35
+ executeTool(params: {
36
+ workspaceId: string;
37
+ tool: MuxoTool;
38
+ input: Record<string, unknown>;
39
+ connectedAccountId?: string | null;
40
+ }): Promise<Record<string, unknown>>;
41
+ }