@muxoai/platform 1.4.1 → 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 (43) 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 +6 -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/engine.d.ts +18 -1
  10. package/dist/engine.js +259 -35
  11. package/dist/mcp-schema.d.ts +162 -1
  12. package/dist/mcp-schema.js +1523 -40
  13. package/dist/mcp.d.ts +2 -2
  14. package/dist/mcp.js +412 -23
  15. package/dist/policy.d.ts +108 -1
  16. package/dist/policy.js +406 -1
  17. package/dist/providers/composio-instant.js +38 -3
  18. package/dist/providers/composio-sdk.d.ts +59 -2
  19. package/dist/providers/composio-sdk.js +273 -59
  20. package/dist/providers/stripe-projects.d.ts +4 -0
  21. package/dist/providers/stripe-projects.js +548 -126
  22. package/dist/server.js +531 -61
  23. package/dist/store.js +2 -0
  24. package/dist/types.d.ts +15 -0
  25. package/dist/ui/console-html.d.ts +31 -1
  26. package/dist/ui/console-html.js +922 -368
  27. package/dist/ui/design-tokens.js +1 -1
  28. package/dist/version.d.ts +1 -1
  29. package/dist/version.js +1 -1
  30. package/package.json +3 -2
  31. package/plugins/muxo/.claude-plugin/plugin.json +2 -2
  32. package/plugins/muxo/.codex-plugin/plugin.json +15 -8
  33. package/plugins/muxo/.cursor-plugin/plugin.json +30 -0
  34. package/plugins/muxo/hooks/session-start.sh +15 -3
  35. package/plugins/muxo/hooks/user-prompt-submit.sh +14 -1
  36. package/plugins/muxo/mcp.json +0 -10
  37. package/plugins/muxo/plugin.json +4 -4
  38. package/plugins/muxo/skills/muxo/SKILL.md +25 -16
  39. package/plugins/muxo/skills/muxo/references/cli.md +5 -1
  40. package/plugins/muxo/skills/muxo/references/mcp.md +11 -6
  41. package/plugins/muxo/skills/muxo-activity-summary/SKILL.md +81 -0
  42. package/plugins/muxo/skills/setup/SKILL.md +1 -1
  43. 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.2",
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.2"
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.2",
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.2`) 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");
@@ -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;