@muxoai/platform 1.4.1 → 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 (53) hide show
  1. package/.agents/plugins/marketplace.json +1 -1
  2. package/.claude-plugin/marketplace.json +2 -2
  3. package/README.md +1 -1
  4. package/dist/cli.js +94 -3
  5. package/dist/composio-catalog.d.ts +177 -1
  6. package/dist/composio-catalog.js +1427 -7
  7. package/dist/config.d.ts +6 -0
  8. package/dist/config.js +11 -1
  9. package/dist/durable-workflow.d.ts +71 -4
  10. package/dist/durable-workflow.js +199 -5
  11. package/dist/engine.d.ts +82 -3
  12. package/dist/engine.js +406 -41
  13. package/dist/index.d.ts +3 -0
  14. package/dist/index.js +3 -0
  15. package/dist/mcp-schema.d.ts +162 -1
  16. package/dist/mcp-schema.js +1544 -40
  17. package/dist/mcp.d.ts +2 -2
  18. package/dist/mcp.js +474 -26
  19. package/dist/memory-graph.d.ts +26 -2
  20. package/dist/memory-graph.js +127 -7
  21. package/dist/oss-suite.d.ts +217 -0
  22. package/dist/oss-suite.js +836 -0
  23. package/dist/policy.d.ts +108 -1
  24. package/dist/policy.js +406 -1
  25. package/dist/providers/composio-instant.js +38 -3
  26. package/dist/providers/composio-sdk.d.ts +59 -2
  27. package/dist/providers/composio-sdk.js +273 -59
  28. package/dist/providers/stripe-projects.d.ts +4 -0
  29. package/dist/providers/stripe-projects.js +548 -126
  30. package/dist/sdk.d.ts +24 -1
  31. package/dist/sdk.js +53 -2
  32. package/dist/server.js +659 -64
  33. package/dist/store.js +2 -0
  34. package/dist/types.d.ts +34 -1
  35. package/dist/ui/console-html.d.ts +31 -1
  36. package/dist/ui/console-html.js +922 -368
  37. package/dist/ui/design-tokens.js +1 -1
  38. package/dist/version.d.ts +1 -1
  39. package/dist/version.js +1 -1
  40. package/package.json +3 -2
  41. package/plugins/muxo/.claude-plugin/plugin.json +2 -2
  42. package/plugins/muxo/.codex-plugin/plugin.json +15 -8
  43. package/plugins/muxo/.cursor-plugin/plugin.json +30 -0
  44. package/plugins/muxo/hooks/session-start.sh +15 -3
  45. package/plugins/muxo/hooks/user-prompt-submit.sh +14 -1
  46. package/plugins/muxo/mcp.json +0 -10
  47. package/plugins/muxo/plugin.json +4 -4
  48. package/plugins/muxo/skills/muxo/SKILL.md +25 -16
  49. package/plugins/muxo/skills/muxo/references/cli.md +5 -1
  50. package/plugins/muxo/skills/muxo/references/mcp.md +11 -6
  51. package/plugins/muxo/skills/muxo-activity-summary/SKILL.md +81 -0
  52. package/plugins/muxo/skills/setup/SKILL.md +1 -1
  53. package/src/catalogues/stripe-projects-catalog.json +140 -0
@@ -6,7 +6,7 @@
6
6
  "plugins": [
7
7
  {
8
8
  "name": "muxo",
9
- "version": "1.4.1",
9
+ "version": "1.4.3",
10
10
  "description": "Governed execution across 1,000+ Connected Apps, Instant Tools (search, scrape, crawl, SEO audit), Cloud Infrastructure provisioning, Workspace Memory recall, and cryptographic execution receipts.",
11
11
  "source": {
12
12
  "source": "local",
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "metadata": {
10
10
  "description": "Official Muxo plugin marketplace for governed execution across Connected Apps, Instant Tools, Cloud Infrastructure, and Workspace Memory.",
11
- "version": "1.4.1"
11
+ "version": "1.4.3"
12
12
  },
13
13
  "plugins": [
14
14
  {
@@ -19,7 +19,7 @@
19
19
  },
20
20
  "strict": false,
21
21
  "description": "Governed execution across 1,000+ Connected Apps, Instant Tools (search, scrape, crawl, SEO audit), Cloud Infrastructure provisioning, Workspace Memory recall, and verifiable audit records.",
22
- "version": "1.4.1",
22
+ "version": "1.4.3",
23
23
  "category": "Productivity",
24
24
  "skills": [
25
25
  "./plugins/muxo/skills/muxo",
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Muxo (`@muxoai/platform` / `@muxoai/cli` / `@muxoai/sdk`)
2
2
 
3
- Muxo (`v1.4.0`) is the unified execution, cloud infrastructure provisioning, contextual memory, and cryptographic governance platform for AI agents and applications. Customers and their agents interact exclusively with **Muxo** — either via structured tool slugs or free-form **Natural Language** (`muxo do`, `POST /api/v1/do`, `client.do()`, and MCP `plan_action`).
3
+ Muxo (`v1.4.3`) is the unified execution, cloud infrastructure provisioning, contextual memory, and cryptographic governance platform for AI agents and applications. Customers and their agents interact exclusively with **Muxo** — either via structured tool slugs or free-form **Natural Language** (`muxo do`, `POST /api/v1/do`, `client.do()`, and MCP `plan_action`).
4
4
 
5
5
  See [`ARCHITECTURE.md`](./ARCHITECTURE.md) for the complete internal engineering blueprint, open-source ecosystem Keep/Adopt/Drop matrix, and 4-pillar architecture.
6
6
 
package/dist/cli.js CHANGED
@@ -5,7 +5,7 @@ import path from "node:path";
5
5
  import readline from "node:readline";
6
6
  import { getConfig } from "./config.js";
7
7
  import { MuxoEngine } from "./engine.js";
8
- import { handleJsonRpcMcpRequest } from "./mcp.js";
8
+ import { handleJsonRpcMcpRequest, LATEST_MCP_PROTOCOL_VERSION } from "./mcp.js";
9
9
  import { DEFAULT_WORKSPACE_POLICY, describePolicyInPlainEnglish, sanitizePolicyPatch, } from "./policy.js";
10
10
  import { RING_LABELS } from "./providers/microsoft-governance.js";
11
11
  import { BYOK_PROVIDER_CATALOG, MuxoStore } from "./store.js";
@@ -532,6 +532,9 @@ async function runCli() {
532
532
  if (mcpSessionId) {
533
533
  headers["Mcp-Session-Id"] = mcpSessionId;
534
534
  }
535
+ if (typeof rpc.method === "string" && rpc.method.trim()) {
536
+ headers["Mcp-Method"] = rpc.method.trim();
537
+ }
535
538
  const res = await fetch(`${remoteUrl}/mcp`, {
536
539
  method: "POST",
537
540
  headers,
@@ -654,7 +657,7 @@ async function runCli() {
654
657
  });
655
658
  await runCheck("mcp_initialize", "MCP server accepts a session", async () => {
656
659
  const result = await mcpCall(1, "initialize", {
657
- protocolVersion: "2025-06-18",
660
+ protocolVersion: LATEST_MCP_PROTOCOL_VERSION,
658
661
  capabilities: {},
659
662
  clientInfo: { name: "muxo-cli-harness", version: MUXO_VERSION },
660
663
  });
@@ -710,7 +713,7 @@ async function runCli() {
710
713
  jsonrpc: "2.0",
711
714
  id: 1,
712
715
  method: "initialize",
713
- params: { protocolVersion: "2025-06-18", capabilities: {} },
716
+ params: { protocolVersion: LATEST_MCP_PROTOCOL_VERSION, capabilities: {} },
714
717
  });
715
718
  const info = res?.result?.serverInfo;
716
719
  assertCheck(info?.name, "initialize returned no serverInfo");
@@ -2318,6 +2321,90 @@ async function runCli() {
2318
2321
  console.log(JSON.stringify(result, null, 2));
2319
2322
  return;
2320
2323
  }
2324
+ if (cmd === "playbooks" || cmd === "playbook") {
2325
+ const sub = positional[1];
2326
+ if (sub === "run") {
2327
+ const slug = positional[2] ||
2328
+ flags.slug ||
2329
+ "fullstack-cloud-bootstrap";
2330
+ const input = flags.input
2331
+ ? JSON.parse(String(flags.input))
2332
+ : {};
2333
+ if (remoteUrl) {
2334
+ const res = await remoteFetch(`/api/v1/playbooks/${encodeURIComponent(slug)}/run`, {
2335
+ method: "POST",
2336
+ body: { input },
2337
+ });
2338
+ console.log(JSON.stringify(res, null, 2));
2339
+ return;
2340
+ }
2341
+ const { engine, ctx } = getLocalContext();
2342
+ const res = engine.runCommercialPlaybook(ctx, { slug, input });
2343
+ console.log(JSON.stringify(res, null, 2));
2344
+ return;
2345
+ }
2346
+ if (remoteUrl) {
2347
+ const res = await remoteFetch("/api/v1/playbooks");
2348
+ console.log(JSON.stringify(res, null, 2));
2349
+ return;
2350
+ }
2351
+ const { engine } = getLocalContext();
2352
+ const playbooks = engine.listCommercialPlaybooks();
2353
+ console.log(JSON.stringify({ ok: true, count: playbooks.length, playbooks }, null, 2));
2354
+ return;
2355
+ }
2356
+ if (cmd === "roi") {
2357
+ if (remoteUrl) {
2358
+ const res = await remoteFetch("/api/v1/analytics/roi");
2359
+ console.log(JSON.stringify(res, null, 2));
2360
+ return;
2361
+ }
2362
+ const { engine, ctx } = getLocalContext();
2363
+ console.log(JSON.stringify({ ok: true, ...engine.getCommercialRoiReport(ctx) }, null, 2));
2364
+ return;
2365
+ }
2366
+ if (cmd === "cedar") {
2367
+ const sub = positional[1];
2368
+ if (sub === "evaluate" || sub === "eval") {
2369
+ const toolSlug = positional[2] || flags.tool || "instant.web.search";
2370
+ const input = flags.input
2371
+ ? JSON.parse(String(flags.input))
2372
+ : {};
2373
+ if (remoteUrl) {
2374
+ const res = await remoteFetch("/api/v1/governance/cedar/evaluate", {
2375
+ method: "POST",
2376
+ body: { toolSlug, input },
2377
+ });
2378
+ console.log(JSON.stringify(res, null, 2));
2379
+ return;
2380
+ }
2381
+ const { engine, ctx } = getLocalContext();
2382
+ console.log(JSON.stringify({
2383
+ ok: true,
2384
+ ...engine.evaluatePolicyAsCode(ctx, { toolSlug, input }),
2385
+ }, null, 2));
2386
+ return;
2387
+ }
2388
+ if (remoteUrl) {
2389
+ const res = await remoteFetch("/api/v1/governance/cedar");
2390
+ console.log(JSON.stringify(res, null, 2));
2391
+ return;
2392
+ }
2393
+ const { engine, ctx } = getLocalContext();
2394
+ console.log(JSON.stringify({ ok: true, ...engine.getPolicyAsCodeBundle(ctx) }, null, 2));
2395
+ return;
2396
+ }
2397
+ if (cmd === "telemetry" || cmd === "otel") {
2398
+ const limit = flags.limit ? Number(flags.limit) : 25;
2399
+ if (remoteUrl) {
2400
+ const res = await remoteFetch(`/api/v1/telemetry/otlp?limit=${limit}`);
2401
+ console.log(JSON.stringify(res, null, 2));
2402
+ return;
2403
+ }
2404
+ const { engine, ctx } = getLocalContext();
2405
+ console.log(JSON.stringify({ ok: true, ...engine.exportOtelTraces(ctx, limit) }, null, 2));
2406
+ return;
2407
+ }
2321
2408
  console.log(`
2322
2409
  Muxo CLI — Unified Agent Execution, Cloud Infrastructure, Memory & Safety Platform
2323
2410
 
@@ -2362,6 +2449,10 @@ Core Commands:
2362
2449
  muxo governance scan <text> Check text for prompt injection before storing or sending it
2363
2450
  muxo governance policy [--mode enforce|monitor] [--ring 0-3] [--require-approval write,admin|none]
2364
2451
  [--block-destructive-sql true|false] [--max-credits <n>]
2452
+ muxo cedar [evaluate <tool_slug>] Compile or evaluate AWS Cedar 4.x & OPA Rego v1 policy-as-code
2453
+ muxo telemetry [--limit 25] Export OpenTelemetry GenAI / MCP OTLP & Langfuse trace spans
2454
+ muxo playbooks [run <slug>] List or execute Temporal-compatible commercial Saga playbooks
2455
+ muxo roi Compute FinOps unit economics, BYOK savings, and engineering ROI
2365
2456
  muxo harness Check API, MCP, auth, governance and catalog; print MCP config
2366
2457
  muxo serve [--port 4310] Start unified HTTP Console, Landing, OAuth Callback & MCP server
2367
2458
  muxo mcp Run stdio MCP server (19 canonical tools)
@@ -8,29 +8,44 @@ export interface ComposioToolkitMetadata {
8
8
  pinnedVersion: string;
9
9
  readOnlyScopes: string[];
10
10
  fullAccessScopes: string[];
11
+ lane?: "composio_sdk" | "stripe_projects" | "composio_instant" | "stripe_billing";
11
12
  sampleActions: Array<{
12
13
  upstreamSlug: string;
13
14
  muxoSlug: string;
14
15
  name: string;
15
- riskLevel: "read" | "write" | "destructive" | "financial";
16
+ riskLevel: "read" | "write" | "destructive" | "financial" | "provisioning" | "admin";
16
17
  }>;
17
18
  }
19
+ export type ComposioWebhookEventType = "composio.trigger.message" | "composio.trigger.disabled" | "composio.connected_account.expired" | "composio.connected_account.activated";
20
+ export declare const COMPOSIO_V3_WEBHOOK_EVENTS: ComposioWebhookEventType[];
18
21
  export interface ComposioTriggerSubscription {
19
22
  id: string;
23
+ upstreamTriggerId?: string;
20
24
  workspaceId: string;
25
+ userId?: string;
21
26
  triggerSlug: string;
22
27
  providerSlug: string;
23
28
  connectedAccountId: string;
24
29
  webhookUrl: string;
25
30
  config: Record<string, unknown>;
26
31
  status: "active" | "paused" | "disabled";
32
+ source?: "composio_v3_sdk" | "muxo_managed";
27
33
  createdAt: string;
28
34
  }
29
35
  export interface ComposioTriggerEventRecord {
30
36
  id: string;
31
37
  workspaceId: string;
38
+ eventType?: ComposioWebhookEventType | string;
39
+ webhookVersion?: "V3" | "V2" | "V1" | "direct";
40
+ signatureVerified?: boolean;
41
+ webhookId?: string;
42
+ triggerId?: string;
32
43
  triggerSlug: string;
33
44
  providerSlug: string;
45
+ connectedAccountId?: string;
46
+ userId?: string;
47
+ projectId?: string;
48
+ orgId?: string;
34
49
  receivedAt: string;
35
50
  promptInjectionScan: {
36
51
  safe: boolean;
@@ -47,12 +62,173 @@ export interface ComposioTriggerType {
47
62
  providerSlug: string;
48
63
  name: string;
49
64
  description: string;
65
+ config: Record<string, unknown>;
50
66
  }
51
67
  export declare const COMPOSIO_TRIGGER_CATALOGUE: ComposioTriggerType[];
52
68
  export declare function listComposioTriggerTypes(providerSlug?: string): ComposioTriggerType[];
69
+ export declare function getComposioTriggerType(slug: string): ComposioTriggerType | null;
70
+ /**
71
+ * Verifies a Composio V3 webhook HMAC-SHA256 signature (`v1,<base64>`) across Node and Cloudflare Workers.
72
+ * Signing input: `${webhookId}.${webhookTimestamp}.${rawPayload}`
73
+ */
74
+ export declare function verifyComposioWebhookSignature(params: {
75
+ rawPayload: string;
76
+ signatureHeader?: string | null;
77
+ webhookIdHeader?: string | null;
78
+ webhookTimestampHeader?: string | null;
79
+ secret?: string | null;
80
+ toleranceSeconds?: number;
81
+ }): Promise<{
82
+ verified: boolean;
83
+ reason?: string;
84
+ }>;
85
+ export interface ParsedComposioWebhookEnvelope {
86
+ eventType: ComposioWebhookEventType | string;
87
+ webhookVersion: "V3" | "V2" | "V1" | "direct";
88
+ webhookId?: string;
89
+ timestamp?: string;
90
+ triggerId?: string;
91
+ triggerSlug: string;
92
+ providerSlug: string;
93
+ connectedAccountId?: string;
94
+ connectionStatus?: "active" | "expired" | "disabled";
95
+ userId?: string;
96
+ projectId?: string;
97
+ orgId?: string;
98
+ payloadObj: Record<string, unknown>;
99
+ }
100
+ /**
101
+ * Normalizes Composio V3 webhook events (`composio.trigger.message`, `composio.trigger.disabled`,
102
+ * `composio.connected_account.expired`, `composio.connected_account.activated`) as well as direct
103
+ * trigger webhook payloads into a single canonical envelope.
104
+ */
105
+ export declare function parseComposioWebhookEnvelope(body: Record<string, unknown>, headers?: {
106
+ webhookId?: string | null;
107
+ webhookTimestamp?: string | null;
108
+ webhookVersion?: string | null;
109
+ }): ParsedComposioWebhookEnvelope;
53
110
  export declare function filterComposioToolkits(params?: {
54
111
  category?: string;
55
112
  search?: string;
56
113
  }): ComposioToolkitMetadata[];
57
114
  /** Least-privilege scopes for a custom auth config: explicit scopes win, then the toolkit's read-only or full set. */
58
115
  export declare function composioAuthConfigScopes(toolkitSlug: string, scopeMode: "read_only" | "full_access", customScopes?: string[]): string[];
116
+ export interface MuxoConnectInputField {
117
+ name: string;
118
+ type?: string;
119
+ label?: string;
120
+ description?: string;
121
+ required?: boolean;
122
+ default?: string | null;
123
+ }
124
+ export interface MuxoConnectLinkMetadata {
125
+ token: string;
126
+ toolkitSlug: string;
127
+ toolkitName: string;
128
+ connectedAccountId: string | null;
129
+ authMode: string;
130
+ status: string;
131
+ callbackUrl: string | null;
132
+ expectedInputFields: MuxoConnectInputField[];
133
+ }
134
+ export declare function ensureOAuthCallbackParams(callbackUrl: string, workspaceId: string, providerSlug: string): string;
135
+ /**
136
+ * Normalizes upstream Composio hosted link URLs (`connect.composio.dev/link/lk_...`,
137
+ * `dashboard.composio.dev/link/lk_...`, `backend.composio.dev/api/v3/s/...`, or
138
+ * legacy `/oauth/connect/lk_...`) directly to Composio's native hosted OAuth URL
139
+ * (`https://connect.composio.dev/link/<token>`), avoiding intermediate custom pages.
140
+ */
141
+ export declare function wrapMuxoConnectUrl(rawUrl: string | null | undefined, _baseUrl?: string, _params?: {
142
+ workspaceId?: string;
143
+ providerSlug?: string;
144
+ callbackUrl?: string | null;
145
+ externalAccountId?: string | null;
146
+ }): string | null;
147
+ export declare function fetchMuxoConnectLinkMetadata(token: string, fallback?: {
148
+ workspaceId?: string;
149
+ providerSlug?: string;
150
+ callbackUrl?: string | null;
151
+ connectedAccountId?: string | null;
152
+ }): Promise<MuxoConnectLinkMetadata>;
153
+ export declare function submitMuxoConnectLink(token: string, input?: Record<string, unknown>, fallback?: {
154
+ workspaceId?: string;
155
+ providerSlug?: string;
156
+ callbackUrl?: string | null;
157
+ connectedAccountId?: string | null;
158
+ }): Promise<{
159
+ ok: boolean;
160
+ status: string;
161
+ redirectUrl: string | null;
162
+ connectedAccountId: string | null;
163
+ error?: string;
164
+ }>;
165
+ /**
166
+ * Canonical Stripe Projects Cloud Infrastructure providers (`stripe_projects` lane).
167
+ * These providers are provisioned and deployed directly through Stripe Projects
168
+ * (and/or Muxo instant cloud provisioning) without Composio OAuth handoffs.
169
+ */
170
+ export declare const STRIPE_PROJECTS_PROVIDER_SLUGS: Set<string>;
171
+ export declare const STRIPE_PROJECTS_HOSTING_PROVIDERS: Set<string>;
172
+ export declare const STRIPE_PROJECTS_DATABASE_PROVIDERS: ReadonlySet<string>;
173
+ export declare const STRIPE_PROJECTS_MESSAGING_PROVIDERS: ReadonlySet<string>;
174
+ export declare const STRIPE_PROJECTS_AI_SEARCH_PROVIDERS: ReadonlySet<string>;
175
+ export declare const STRIPE_PROJECTS_SANDBOX_BROWSER_PROVIDERS: ReadonlySet<string>;
176
+ export declare const STRIPE_PROJECTS_CANONICAL_RESOURCE_SLUG: Record<string, string>;
177
+ /**
178
+ * Multi-service deployable slugs supported per Stripe Projects provider.
179
+ */
180
+ export declare const STRIPE_PROJECTS_MULTI_SERVICE_MAP: Record<string, Record<string, string>>;
181
+ export interface StripeProjectsDeployableCatalogEntry {
182
+ slug: string;
183
+ upstreamSlug: string;
184
+ providerSlug: string;
185
+ providerName: string;
186
+ serviceId: string;
187
+ name: string;
188
+ description: string;
189
+ categories: string[];
190
+ defaultPlan: string;
191
+ availablePlans: string[];
192
+ providerUrl: string;
193
+ llmContextUrl?: string;
194
+ }
195
+ export declare const STRIPE_PROJECTS_DEPLOYABLE_CATALOG: StripeProjectsDeployableCatalogEntry[];
196
+ /**
197
+ * Stripe Projects Toolkits Catalog exposed alongside Enterprise Connected Apps in `/api/v1/toolkits`
198
+ * and `filterComposioToolkits` so every Stripe Projects provider and its services are discoverable as toolkits.
199
+ */
200
+ export declare const STRIPE_PROJECTS_TOOLKITS_CATALOG: ComposioToolkitMetadata[];
201
+ export declare function normalizeStripeProjectsProviderSlug(raw: string): string;
202
+ export declare function isStripeProjectsExclusiveProvider(rawSlug: string): boolean;
203
+ export declare function isStripeProjectsHostingProvider(rawSlug: string): boolean;
204
+ export declare function isStripeProjectsDatabaseProvider(rawSlug: string): boolean;
205
+ /**
206
+ * Resolves any tool or provider reference targeting a Stripe Projects provider
207
+ * (including `app.vercel.deploy`, `app.vercel.create_deployment`, `resource.vercel.deploy`,
208
+ * `vercel/deploy`, `app.netlify.deploy`, `app.turso.create_database`, `supabase_migration`,
209
+ * `resource.cloudflare.d1`, `resource.upstash.vector`, `resource.railway.postgres`, etc.)
210
+ * to its canonical `resource.<provider>.<service>` tool slug on the `stripe_projects` lane.
211
+ */
212
+ export declare function resolveStripeProjectsCanonicalToolSlug(rawSlug: string): string | null;
213
+ export declare function extractHostedHtmlFromInput(input: Record<string, unknown>): {
214
+ html: string | null;
215
+ files: Record<string, string>;
216
+ envVars: Record<string, string>;
217
+ };
218
+ export declare function extractDatabaseMigrationsFromInput(input: Record<string, unknown>): {
219
+ hasMigrations: boolean;
220
+ sqlStatements: string[];
221
+ tablesCreated: string[];
222
+ };
223
+ export declare function buildStandardStripeProjectsSecrets(params: {
224
+ providerSlug: string;
225
+ resourceName: string;
226
+ workspaceSlug?: string;
227
+ liveUrl?: string;
228
+ }): Record<string, string>;
229
+ export declare function renderDefaultHostedSiteHtml(params: {
230
+ resourceName: string;
231
+ providerName: string;
232
+ providerSlug: string;
233
+ liveUrl: string;
234
+ }): string;