@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.
- package/.agents/plugins/marketplace.json +1 -1
- package/.claude-plugin/marketplace.json +2 -2
- package/README.md +1 -1
- package/dist/cli.js +6 -3
- package/dist/composio-catalog.d.ts +177 -1
- package/dist/composio-catalog.js +1427 -7
- package/dist/config.d.ts +6 -0
- package/dist/config.js +11 -1
- package/dist/engine.d.ts +18 -1
- package/dist/engine.js +259 -35
- package/dist/mcp-schema.d.ts +162 -1
- package/dist/mcp-schema.js +1523 -40
- package/dist/mcp.d.ts +2 -2
- package/dist/mcp.js +412 -23
- package/dist/policy.d.ts +108 -1
- package/dist/policy.js +406 -1
- package/dist/providers/composio-instant.js +38 -3
- package/dist/providers/composio-sdk.d.ts +59 -2
- package/dist/providers/composio-sdk.js +273 -59
- package/dist/providers/stripe-projects.d.ts +4 -0
- package/dist/providers/stripe-projects.js +548 -126
- package/dist/server.js +531 -61
- package/dist/store.js +2 -0
- package/dist/types.d.ts +15 -0
- package/dist/ui/console-html.d.ts +31 -1
- package/dist/ui/console-html.js +922 -368
- package/dist/ui/design-tokens.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -2
- package/plugins/muxo/.claude-plugin/plugin.json +2 -2
- package/plugins/muxo/.codex-plugin/plugin.json +15 -8
- package/plugins/muxo/.cursor-plugin/plugin.json +30 -0
- package/plugins/muxo/hooks/session-start.sh +15 -3
- package/plugins/muxo/hooks/user-prompt-submit.sh +14 -1
- package/plugins/muxo/mcp.json +0 -10
- package/plugins/muxo/plugin.json +4 -4
- package/plugins/muxo/skills/muxo/SKILL.md +25 -16
- package/plugins/muxo/skills/muxo/references/cli.md +5 -1
- package/plugins/muxo/skills/muxo/references/mcp.md +11 -6
- package/plugins/muxo/skills/muxo-activity-summary/SKILL.md +81 -0
- package/plugins/muxo/skills/setup/SKILL.md +1 -1
- 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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:
|
|
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:
|
|
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;
|