@muxoai/platform 1.4.3 → 1.4.5
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 +25 -1
- package/dist/cli.js +167 -38
- package/dist/composio-catalog.d.ts +26 -0
- package/dist/composio-catalog.js +157 -0
- package/dist/config.d.ts +1 -0
- package/dist/config.js +1 -0
- package/dist/engine.d.ts +51 -5
- package/dist/engine.js +484 -30
- package/dist/mcp-schema.d.ts +14 -0
- package/dist/mcp-schema.js +77 -8
- package/dist/mcp.js +300 -3
- package/dist/oss-suite.d.ts +188 -4
- package/dist/oss-suite.js +1249 -20
- package/dist/policy.js +59 -0
- package/dist/providers/composio-instant.js +54 -36
- package/dist/providers/composio-sdk.d.ts +10 -1
- package/dist/providers/composio-sdk.js +144 -31
- package/dist/sdk.d.ts +19 -0
- package/dist/sdk.js +32 -0
- package/dist/server.js +119 -7
- package/dist/skills-catalog.d.ts +66 -0
- package/dist/skills-catalog.js +840 -0
- package/dist/store.d.ts +4 -1
- package/dist/store.js +37 -3
- package/dist/types.d.ts +33 -0
- package/dist/ui/console-html.js +35 -9
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/plugins/muxo/.claude-plugin/plugin.json +2 -2
- package/plugins/muxo/.codex-plugin/plugin.json +3 -3
- package/plugins/muxo/.cursor-plugin/plugin.json +2 -2
- package/plugins/muxo/plugin.json +3 -3
- package/plugins/muxo/skills/muxo/SKILL.md +13 -3
package/dist/store.d.ts
CHANGED
|
@@ -178,7 +178,10 @@ export declare class MuxoStore {
|
|
|
178
178
|
category: "llm" | "supplier";
|
|
179
179
|
envVarName: string;
|
|
180
180
|
};
|
|
181
|
-
setByokKey(workspaceId: string, providerInput: string, secretKey: string
|
|
181
|
+
setByokKey(workspaceId: string, providerInput: string, secretKey: string, options?: {
|
|
182
|
+
mcpGatewayUrl?: string | null;
|
|
183
|
+
}): ByokKeyRecord;
|
|
184
|
+
getByokMcpGatewayUrl(workspaceId: string): string | null;
|
|
182
185
|
getByokKey(workspaceId: string, providerInput: string): string | null;
|
|
183
186
|
deleteByokKey(workspaceId: string, providerInput: string): boolean;
|
|
184
187
|
listByokKeys(workspaceId: string): ByokKeyRecord[];
|
package/dist/store.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DatabaseSync } from "node:sqlite";
|
|
2
2
|
import crypto from "node:crypto";
|
|
3
|
+
import { normalizeComposioByokGatewayUrl } from "./composio-catalog.js";
|
|
3
4
|
export const BYOK_PROVIDER_CATALOG = {
|
|
4
5
|
openai: { category: "llm", envVarName: "OPENAI_API_KEY", label: "OpenAI (GPT-4o / o3-mini)" },
|
|
5
6
|
anthropic: { category: "llm", envVarName: "ANTHROPIC_API_KEY", label: "Anthropic (Claude 3.7 Sonnet)" },
|
|
@@ -1204,7 +1205,7 @@ export class MuxoStore {
|
|
|
1204
1205
|
envVarName,
|
|
1205
1206
|
};
|
|
1206
1207
|
}
|
|
1207
|
-
setByokKey(workspaceId, providerInput, secretKey) {
|
|
1208
|
+
setByokKey(workspaceId, providerInput, secretKey, options) {
|
|
1208
1209
|
const trimmed = secretKey.trim();
|
|
1209
1210
|
if (!trimmed) {
|
|
1210
1211
|
throw new Error("BYOK secretKey must not be empty");
|
|
@@ -1214,7 +1215,17 @@ export class MuxoStore {
|
|
|
1214
1215
|
const keyPreview = trimmed.length <= 8
|
|
1215
1216
|
? `${trimmed.slice(0, 2)}***`
|
|
1216
1217
|
: `${trimmed.slice(0, 6)}...${trimmed.slice(-4)}`;
|
|
1217
|
-
|
|
1218
|
+
if (options?.mcpGatewayUrl && provider !== "composio") {
|
|
1219
|
+
throw new Error("MCP gateway URLs are only supported for Composio BYOK.");
|
|
1220
|
+
}
|
|
1221
|
+
const cleanGatewayUrl = options?.mcpGatewayUrl
|
|
1222
|
+
? normalizeComposioByokGatewayUrl(options.mcpGatewayUrl)
|
|
1223
|
+
: provider === "composio" ? this.getByokMcpGatewayUrl(workspaceId) || "" : "";
|
|
1224
|
+
const secretPayload = {
|
|
1225
|
+
[envVarName]: trimmed,
|
|
1226
|
+
...(cleanGatewayUrl ? { COMPOSIO_MCP_GATEWAY_URL: cleanGatewayUrl } : {}),
|
|
1227
|
+
};
|
|
1228
|
+
const encryptedHex = this.encryptSecrets(workspaceId, secretPayload);
|
|
1218
1229
|
this.db
|
|
1219
1230
|
.prepare(`INSERT INTO byok_keys (
|
|
1220
1231
|
workspace_id, provider, category, env_var_name, key_preview, encrypted_secret_hex, updated_at
|
|
@@ -1233,9 +1244,19 @@ export class MuxoStore {
|
|
|
1233
1244
|
envVarName,
|
|
1234
1245
|
keyPreview,
|
|
1235
1246
|
configured: true,
|
|
1247
|
+
...(cleanGatewayUrl ? { mcpGatewayUrl: cleanGatewayUrl } : {}),
|
|
1236
1248
|
updatedAt: now,
|
|
1237
1249
|
};
|
|
1238
1250
|
}
|
|
1251
|
+
getByokMcpGatewayUrl(workspaceId) {
|
|
1252
|
+
const row = this.db
|
|
1253
|
+
.prepare("SELECT encrypted_secret_hex FROM byok_keys WHERE workspace_id = ? AND provider = 'composio'")
|
|
1254
|
+
.get(workspaceId);
|
|
1255
|
+
if (!row)
|
|
1256
|
+
return null;
|
|
1257
|
+
const dec = this.decryptSecrets(workspaceId, row.encrypted_secret_hex);
|
|
1258
|
+
return dec.COMPOSIO_MCP_GATEWAY_URL || null;
|
|
1259
|
+
}
|
|
1239
1260
|
getByokKey(workspaceId, providerInput) {
|
|
1240
1261
|
const { provider, envVarName } = this.normalizeByokProvider(providerInput);
|
|
1241
1262
|
const row = this.db
|
|
@@ -1255,11 +1276,23 @@ export class MuxoStore {
|
|
|
1255
1276
|
}
|
|
1256
1277
|
listByokKeys(workspaceId) {
|
|
1257
1278
|
const rows = this.db
|
|
1258
|
-
.prepare("SELECT provider, category, env_var_name, key_preview, updated_at FROM byok_keys WHERE workspace_id = ? ORDER BY updated_at DESC")
|
|
1279
|
+
.prepare("SELECT provider, category, env_var_name, key_preview, encrypted_secret_hex, updated_at FROM byok_keys WHERE workspace_id = ? ORDER BY updated_at DESC")
|
|
1259
1280
|
.all(workspaceId);
|
|
1260
1281
|
const configuredMap = new Map();
|
|
1261
1282
|
for (const r of rows) {
|
|
1262
1283
|
const p = String(r.provider);
|
|
1284
|
+
let mcpGatewayUrl;
|
|
1285
|
+
if (p === "composio" && r.encrypted_secret_hex) {
|
|
1286
|
+
try {
|
|
1287
|
+
const dec = this.decryptSecrets(workspaceId, String(r.encrypted_secret_hex));
|
|
1288
|
+
if (dec.COMPOSIO_MCP_GATEWAY_URL) {
|
|
1289
|
+
mcpGatewayUrl = dec.COMPOSIO_MCP_GATEWAY_URL;
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
1292
|
+
catch {
|
|
1293
|
+
// ignore
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1263
1296
|
configuredMap.set(p, {
|
|
1264
1297
|
provider: p,
|
|
1265
1298
|
providerSlug: p,
|
|
@@ -1267,6 +1300,7 @@ export class MuxoStore {
|
|
|
1267
1300
|
envVarName: String(r.env_var_name),
|
|
1268
1301
|
keyPreview: String(r.key_preview),
|
|
1269
1302
|
configured: true,
|
|
1303
|
+
...(mcpGatewayUrl ? { mcpGatewayUrl } : {}),
|
|
1270
1304
|
updatedAt: String(r.updated_at),
|
|
1271
1305
|
});
|
|
1272
1306
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -184,6 +184,7 @@ export interface MuxoTool {
|
|
|
184
184
|
llmContextUrl?: string;
|
|
185
185
|
providerUrl?: string;
|
|
186
186
|
metadata?: Record<string, unknown>;
|
|
187
|
+
domainSkill?: Record<string, unknown>;
|
|
187
188
|
}
|
|
188
189
|
export type ToolDescriptor = MuxoTool;
|
|
189
190
|
export interface ConnectionRecord {
|
|
@@ -441,6 +442,7 @@ export interface ByokKeyRecord {
|
|
|
441
442
|
category: "llm" | "supplier";
|
|
442
443
|
envVarName: string;
|
|
443
444
|
keyPreview: string;
|
|
445
|
+
mcpGatewayUrl?: string | null;
|
|
444
446
|
configured: boolean;
|
|
445
447
|
updatedAt: string;
|
|
446
448
|
}
|
|
@@ -499,6 +501,29 @@ export interface HumanHandoffDescriptor {
|
|
|
499
501
|
oauthRedirectUrl: string | null;
|
|
500
502
|
consoleUrl: string;
|
|
501
503
|
}
|
|
504
|
+
export interface ApprovalImpactPreview {
|
|
505
|
+
whatChanges: string;
|
|
506
|
+
whoIsAffected: string;
|
|
507
|
+
targetEntity: string;
|
|
508
|
+
estimatedCostUsd: number;
|
|
509
|
+
creditCost: number;
|
|
510
|
+
fundingMode: "muxo_funded" | "byok";
|
|
511
|
+
costDisplay: string;
|
|
512
|
+
triggeredRule: string;
|
|
513
|
+
reversibility: "reversible" | "compensatable_saga" | "irreversible";
|
|
514
|
+
recoveryBehavior: string;
|
|
515
|
+
}
|
|
516
|
+
export interface BusinessReceiptSummary {
|
|
517
|
+
whatChanged: string;
|
|
518
|
+
whoAuthorized: string;
|
|
519
|
+
whatSucceeded: string;
|
|
520
|
+
whatRemainsUnresolved: string[];
|
|
521
|
+
costUsd: number;
|
|
522
|
+
creditsCharged: number;
|
|
523
|
+
fundingMode: "muxo_funded" | "byok";
|
|
524
|
+
costDisplay: string;
|
|
525
|
+
reconciliationStatus: "verified_complete" | "failed_zero_charge" | "cancelled" | "needs_reconciliation";
|
|
526
|
+
}
|
|
502
527
|
export interface ActionPlan {
|
|
503
528
|
id: string;
|
|
504
529
|
workspaceId: string;
|
|
@@ -510,6 +535,9 @@ export interface ActionPlan {
|
|
|
510
535
|
input: Record<string, unknown>;
|
|
511
536
|
reason: string;
|
|
512
537
|
creditCost: number;
|
|
538
|
+
estimatedCostUsd?: number;
|
|
539
|
+
changePreview?: ApprovalImpactPreview;
|
|
540
|
+
idempotencyKey?: string;
|
|
513
541
|
approvalStatus: "auto_approved" | "pending_approval" | "approved" | "rejected" | "executed";
|
|
514
542
|
approvedBy: string | null;
|
|
515
543
|
approvedAt: string | null;
|
|
@@ -548,6 +576,9 @@ export interface ExecutionRun {
|
|
|
548
576
|
errorMessage?: string | null;
|
|
549
577
|
actionsMetered: number;
|
|
550
578
|
creditsMetered: number;
|
|
579
|
+
estimatedCostUsd?: number;
|
|
580
|
+
idempotentReplay?: boolean;
|
|
581
|
+
reconciliationStatus?: "verified_complete" | "failed_zero_charge" | "cancelled" | "needs_reconciliation";
|
|
551
582
|
durationMs: number | null;
|
|
552
583
|
receiptId: string | null;
|
|
553
584
|
startedAt: string;
|
|
@@ -586,6 +617,8 @@ export interface ExecutionReceipt {
|
|
|
586
617
|
status: "succeeded" | "failed" | "cancelled";
|
|
587
618
|
actionsMetered: number;
|
|
588
619
|
creditsMetered: number;
|
|
620
|
+
estimatedCostUsd?: number;
|
|
621
|
+
businessSummary?: BusinessReceiptSummary;
|
|
589
622
|
inputHash: string;
|
|
590
623
|
outputHash: string;
|
|
591
624
|
prevReceiptHash: string;
|
package/dist/ui/console-html.js
CHANGED
|
@@ -2003,9 +2003,12 @@ async function loadByokKeys() {
|
|
|
2003
2003
|
async function saveByokKeyFromUi() {
|
|
2004
2004
|
var provider = byId('byok-provider-select').value;
|
|
2005
2005
|
var secretKey = byId('byok-key-input').value.trim();
|
|
2006
|
+
var gwInput = byId('byok-gateway-input');
|
|
2007
|
+
var mcpGatewayUrl = provider === 'composio' && gwInput && gwInput.value ? gwInput.value.trim() : undefined;
|
|
2006
2008
|
if (!secretKey) { showToast('Paste a key first'); byId('byok-key-input').focus(); return; }
|
|
2007
|
-
await post('/api/v1/byok', { provider: provider, secretKey: secretKey, apiKey: secretKey });
|
|
2009
|
+
await post('/api/v1/byok', { provider: provider, secretKey: secretKey, apiKey: secretKey, mcpGatewayUrl: mcpGatewayUrl });
|
|
2008
2010
|
byId('byok-key-input').value = '';
|
|
2011
|
+
if (gwInput) gwInput.value = '';
|
|
2009
2012
|
showToast('Saved your ' + provider + ' key. It is encrypted in your vault.');
|
|
2010
2013
|
await loadByokKeys();
|
|
2011
2014
|
}
|
|
@@ -2365,6 +2368,13 @@ function init() {
|
|
|
2365
2368
|
onSubmit('policy-form', savePolicy);
|
|
2366
2369
|
onSubmit('scan-form', scanContextFromUi);
|
|
2367
2370
|
onSubmit('byok-form', saveByokKeyFromUi);
|
|
2371
|
+
var byokSelect = byId('byok-provider-select');
|
|
2372
|
+
if (byokSelect) {
|
|
2373
|
+
byokSelect.addEventListener('change', function () {
|
|
2374
|
+
var gwField = byId('byok-gateway-field');
|
|
2375
|
+
if (gwField) gwField.hidden = byokSelect.value !== 'composio';
|
|
2376
|
+
});
|
|
2377
|
+
}
|
|
2368
2378
|
onSubmit('join-workspace-form', joinWorkspaceFromForm);
|
|
2369
2379
|
onSubmit('create-workspace-form', createWorkspaceFromForm);
|
|
2370
2380
|
onSubmit('team-onboard-form', onboardTeamFromForm);
|
|
@@ -2753,7 +2763,7 @@ export function renderConsoleHtml() {
|
|
|
2753
2763
|
<option value="anthropic">Anthropic (plain-English routing)</option>
|
|
2754
2764
|
<option value="openrouter">OpenRouter (plain-English routing)</option>
|
|
2755
2765
|
<option value="gemini">Google Gemini (plain-English routing)</option>
|
|
2756
|
-
<option value="composio">Apps
|
|
2766
|
+
<option value="composio">Apps, MCP Gateway & instant tools (0 credits)</option>
|
|
2757
2767
|
<option value="stripe">Cloud infrastructure (0 credits)</option>
|
|
2758
2768
|
<option value="supermemory">Workspace memory</option>
|
|
2759
2769
|
<option value="firecrawl">Firecrawl (scrape and crawl)</option>
|
|
@@ -2761,6 +2771,7 @@ export function renderConsoleHtml() {
|
|
|
2761
2771
|
</select>
|
|
2762
2772
|
</label>
|
|
2763
2773
|
<label class="field"><span>Key</span><input id="byok-key-input" type="password" placeholder="Paste the key" autocomplete="off" /></label>
|
|
2774
|
+
<label class="field" id="byok-gateway-field" hidden><span>MCP Gateway URL (optional)</span><input id="byok-gateway-input" type="url" placeholder="https://connect.composio.dev/mcp" autocomplete="off" /></label>
|
|
2764
2775
|
<button class="btn btn-primary" type="submit" style="min-height:40px">Save key</button>
|
|
2765
2776
|
</form>
|
|
2766
2777
|
<div class="table-wrap">
|
|
@@ -3312,17 +3323,17 @@ export function renderOAuthConsentHtml(opts) {
|
|
|
3312
3323
|
</html>`;
|
|
3313
3324
|
}
|
|
3314
3325
|
const approvalCss = `
|
|
3315
|
-
.approval-facts{display:grid;gap:
|
|
3316
|
-
.approval-facts li{display:flex;justify-content:space-between;gap:
|
|
3326
|
+
.approval-facts{display:grid;gap:6px;margin:12px 0 0;padding:0;list-style:none;text-align:left;font-size:13px}
|
|
3327
|
+
.approval-facts li{display:flex;justify-content:space-between;gap:12px;padding:6px 10px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg)}
|
|
3317
3328
|
.approval-facts .k{color:var(--color-muted);flex:none}
|
|
3318
3329
|
.approval-facts .v{color:var(--color-text);font-weight:500;text-align:right;overflow-wrap:anywhere}
|
|
3319
|
-
.approval-input{margin:
|
|
3330
|
+
.approval-input{margin:10px 0 0;padding:10px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg);font-family:var(--font-mono);font-size:12px;text-align:left;white-space:pre-wrap;overflow-wrap:anywhere;max-height:110px;overflow:auto}
|
|
3320
3331
|
.approval-risk{display:inline-block;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;text-transform:capitalize}
|
|
3321
3332
|
.approval-risk[data-tone="ok"]{background:var(--color-ok-bg);color:var(--color-ok)}
|
|
3322
3333
|
.approval-risk[data-tone="warn"]{background:var(--color-warn-bg);color:var(--color-warn)}
|
|
3323
3334
|
.approval-risk[data-tone="strict"]{background:var(--color-danger-bg);color:var(--color-danger)}
|
|
3324
|
-
.approval-note{margin-top:
|
|
3325
|
-
.approval-done{margin-top:
|
|
3335
|
+
.approval-note{margin-top:10px;color:var(--color-muted);font-size:13px}
|
|
3336
|
+
.approval-done{margin-top:14px;text-align:left;font-size:14px}
|
|
3326
3337
|
`;
|
|
3327
3338
|
const approvalScript = String.raw `
|
|
3328
3339
|
(function () {
|
|
@@ -3356,10 +3367,17 @@ const approvalScript = String.raw `
|
|
|
3356
3367
|
function renderPlan() {
|
|
3357
3368
|
show('approval-loading', false);
|
|
3358
3369
|
show('approval-review', true);
|
|
3370
|
+
var preview = plan.changePreview || {};
|
|
3371
|
+
var credits = plan.creditCost != null ? plan.creditCost : 0;
|
|
3372
|
+
var usd = plan.estimatedCostUsd != null ? Number(plan.estimatedCostUsd).toFixed(2) : (credits * 0.01).toFixed(2);
|
|
3359
3373
|
byId('approval-tool').textContent = plan.toolSlug || '';
|
|
3360
3374
|
byId('approval-risk').textContent = plan.riskLevel + ' risk';
|
|
3361
3375
|
byId('approval-risk').setAttribute('data-tone', riskTone(plan.riskLevel));
|
|
3362
|
-
byId('approval-
|
|
3376
|
+
byId('approval-what-changes').textContent = preview.whatChanges || plan.reason || ('Execute ' + (plan.toolSlug || 'action'));
|
|
3377
|
+
byId('approval-affected').textContent = preview.whoIsAffected || preview.targetEntity || 'Workspace integration';
|
|
3378
|
+
byId('approval-cost').textContent = preview.costDisplay || ('$' + usd + ' USD (' + credits + ' credits)');
|
|
3379
|
+
byId('approval-rule').textContent = preview.triggeredRule || (plan.decisionRecord && plan.decisionRecord.matchedRule) || 'Workspace approval policy';
|
|
3380
|
+
byId('approval-recovery').textContent = preview.recoveryBehavior || 'Execute-once idempotency; 0 credits charged on failure.';
|
|
3363
3381
|
byId('approval-reason').textContent = plan.reason || '—';
|
|
3364
3382
|
byId('approval-input').textContent = JSON.stringify(plan.input || {}, null, 2);
|
|
3365
3383
|
var already = plan.approvalStatus === 'approved' || plan.approvalStatus === 'auto_approved';
|
|
@@ -3377,7 +3395,11 @@ const approvalScript = String.raw `
|
|
|
3377
3395
|
show('approval-done', true);
|
|
3378
3396
|
var html = '<p>' + esc(message) + '</p>';
|
|
3379
3397
|
if (result && result.run) {
|
|
3398
|
+
var bs = (result.receipt && result.receipt.businessSummary) || {};
|
|
3380
3399
|
html += '<ul class="approval-facts">'
|
|
3400
|
+
+ (bs.whatChanged ? '<li><span class="k">What changed</span><span class="v">' + esc(bs.whatChanged) + '</span></li>' : '')
|
|
3401
|
+
+ (bs.whoAuthorized ? '<li><span class="k">Authorized by</span><span class="v">' + esc(bs.whoAuthorized) + '</span></li>' : '')
|
|
3402
|
+
+ (bs.costDisplay ? '<li><span class="k">Cost</span><span class="v">' + esc(bs.costDisplay) + '</span></li>' : '')
|
|
3381
3403
|
+ '<li><span class="k">Run</span><span class="v">' + esc(result.run.id) + ' · ' + esc(result.run.status) + '</span></li>'
|
|
3382
3404
|
+ (result.receipt ? '<li><span class="k">Receipt</span><span class="v">' + esc(result.receipt.id) + '</span></li>' : '')
|
|
3383
3405
|
+ '</ul>';
|
|
@@ -3542,8 +3564,12 @@ export function renderApprovalPageHtml(opts) {
|
|
|
3542
3564
|
<div id="approval-review" hidden>
|
|
3543
3565
|
<ul class="approval-facts">
|
|
3544
3566
|
<li><span class="k">Action</span><span class="v" id="approval-tool"></span></li>
|
|
3567
|
+
<li><span class="k">What changes</span><span class="v" id="approval-what-changes"></span></li>
|
|
3568
|
+
<li><span class="k">Who is affected</span><span class="v" id="approval-affected"></span></li>
|
|
3545
3569
|
<li><span class="k">Risk</span><span class="v"><span id="approval-risk" class="approval-risk" data-tone="warn"></span></span></li>
|
|
3546
|
-
<li><span class="k">
|
|
3570
|
+
<li><span class="k">Estimated cost</span><span class="v" id="approval-cost"></span></li>
|
|
3571
|
+
<li><span class="k">Triggered rule</span><span class="v" id="approval-rule"></span></li>
|
|
3572
|
+
<li><span class="k">Recovery & safety</span><span class="v" id="approval-recovery"></span></li>
|
|
3547
3573
|
<li><span class="k">Reason</span><span class="v" id="approval-reason"></span></li>
|
|
3548
3574
|
</ul>
|
|
3549
3575
|
<pre id="approval-input" class="approval-input" aria-label="Tool input"></pre>
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const MUXO_VERSION = "1.4.
|
|
1
|
+
export declare const MUXO_VERSION = "1.4.5";
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const MUXO_VERSION = "1.4.
|
|
1
|
+
export const MUXO_VERSION = "1.4.5";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@muxoai/platform",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.5",
|
|
4
4
|
"description": "Muxo — Unified Execution, Provisioning & Governance Platform over Composio, Stripe Projects, Microsoft Agent Governance & Supermemory",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muxo",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.5",
|
|
4
4
|
"description": "Governed agent execution across 1,000+ Connected Apps (managed OAuth handoff), Instant Tools (search, scrape, crawl, SEO audit), live Cloud Infrastructure provisioning, Workspace Memory recall, and verifiable audit records.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Muxo AI LLC",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"url": "https://muxo.ai"
|
|
9
9
|
},
|
|
10
10
|
"homepage": "https://muxo.ai",
|
|
11
|
-
"repository": "https://github.com/
|
|
11
|
+
"repository": "https://github.com/Muxoai/muxo3",
|
|
12
12
|
"license": "MIT",
|
|
13
13
|
"skills": "./skills/",
|
|
14
14
|
"hooks": "./hooks/hooks.json",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muxo",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.5",
|
|
4
4
|
"description": "Your agent decides what to do — Muxo governs, provisions, remembers, and executes it. Unified access to 1,000+ Connected Apps (managed OAuth handoff), Instant Tools (search, scrape, crawl, SEO audit), live Cloud Infrastructure provisioning (Postgres, Redis, SQLite, Storage), Workspace Memory recall, and verifiable audit records.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Muxo AI LLC",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"url": "https://muxo.ai"
|
|
9
9
|
},
|
|
10
10
|
"homepage": "https://muxo.ai",
|
|
11
|
-
"repository": "https://github.com/
|
|
11
|
+
"repository": "https://github.com/Muxoai/muxo3",
|
|
12
12
|
"license": "MIT",
|
|
13
13
|
"keywords": [
|
|
14
14
|
"muxo",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"com.openai": {
|
|
34
34
|
"onboardingSkill": "./skills/setup/SKILL.md",
|
|
35
35
|
"publication": {
|
|
36
|
-
"release_notes": "Muxo v1.4.
|
|
36
|
+
"release_notes": "Muxo v1.4.5: Unified governed execution across 1,000+ Connected Apps, Instant web/SEO tools, 94 Stripe Projects Cloud Infrastructure services, MCP 2026-07-28 compliance, and Workspace Memory."
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muxo",
|
|
3
3
|
"description": "Your agent decides what to do — Muxo governs, provisions, remembers, and executes it. Connect and operate 1,000+ external apps via managed OAuth, zero-auth Instant Tools (web search, scrape, crawl, SEO audit, remote workbench), live Cloud Infrastructure provisioning (Stripe Projects), and Workspace Memory from Cursor.",
|
|
4
|
-
"version": "1.4.
|
|
4
|
+
"version": "1.4.5",
|
|
5
5
|
"mcpServers": "../mcp.json",
|
|
6
6
|
"skills": "../skills/",
|
|
7
7
|
"author": {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"url": "https://muxo.ai"
|
|
11
11
|
},
|
|
12
12
|
"homepage": "https://muxo.ai",
|
|
13
|
-
"repository": "https://github.com/
|
|
13
|
+
"repository": "https://github.com/Muxoai/muxo3",
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"keywords": [
|
|
16
16
|
"muxo",
|
package/plugins/muxo/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "muxo",
|
|
4
|
-
"version": "1.4.
|
|
4
|
+
"version": "1.4.5",
|
|
5
5
|
"description": "Your agent decides what to do — Muxo governs, provisions, remembers, and executes it. Unified access to 1,000+ Connected Apps (managed OAuth handoff), Instant Tools (search, scrape, crawl, SEO audit), live Cloud Infrastructure provisioning (Postgres, Redis, SQLite, Storage), Workspace Memory recall, and verifiable audit records.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Muxo AI LLC",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"url": "https://muxo.ai"
|
|
10
10
|
},
|
|
11
11
|
"homepage": "https://muxo.ai",
|
|
12
|
-
"repository": "https://github.com/
|
|
12
|
+
"repository": "https://github.com/Muxoai/muxo3",
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"keywords": [
|
|
15
15
|
"muxo",
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
"commerce_description": "This plugin does not sell retail products or process consumer checkout inside ChatGPT."
|
|
110
110
|
},
|
|
111
111
|
"publication": {
|
|
112
|
-
"release_notes": "Muxo v1.4.
|
|
112
|
+
"release_notes": "Muxo v1.4.5: Unified governed execution across 1,000+ Connected Apps, Instant web/SEO tools, 94 Stripe Projects Cloud Infrastructure services, MCP 2026-07-28 compliance, and Workspace Memory."
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
}
|
|
@@ -138,9 +138,19 @@ Users can operate every Muxo pillar in plain English through `POST /api/v1/do` (
|
|
|
138
138
|
|
|
139
139
|
### Context, MCP Resources & Prompts
|
|
140
140
|
- **Inspect**: "Show my workspace context", "Explain current run context", or call `get_run_context({ query: "..." })` — returns credits, learned defaults, active guardrails, `llmPolicyBrief`, provisioned resources, and a ready-to-use `llmSystemPrompt` block.
|
|
141
|
-
- **
|
|
142
|
-
- **
|
|
143
|
-
-
|
|
141
|
+
- **Plain-English OSS & Commercial Intent Router on `get_run_context` & `POST /api/v1/do`**: Pass any plain-English prompt to `get_run_context({ prompt: "..." })` or `POST /api/v1/do` (`{"prompt": "..."}`) without memorizing sub-action enums, workflow IDs, or playbook slugs:
|
|
142
|
+
- **Turnkey & Custom Saga Playbooks**: `"Run the fullstack cloud bootstrap playbook"`, `"List playbooks"`, or `"Create playbook daily-seo-slack that runs instant.seo.audit and app.slack.send_message"` (`POST /api/v1/playbooks`, `POST /api/v1/playbooks/:slug/run`).
|
|
143
|
+
- **Temporal Workflow Saga Rollback, Signals & History (`"latest"` supported)**: `"Rollback the latest workflow because staging healthcheck failed"`, `"Signal workflow latest human.approval.granted"`, `"Show Temporal history for latest workflow"` (`POST /api/v1/workflows/latest/rollback`, `/signal`, `/history`).
|
|
144
|
+
- **Graphiti Time-Travel & Multi-Hop BFS Memory Graph**: `"Show my knowledge graph as of 2026-10-20T00:00:00Z within 2 hops of workspace"` (`GET /api/v1/memory/graph?as_of=...&focal_entity=...&max_hops=2`).
|
|
145
|
+
- **AWS Cedar 4.0 & OPA Rego v1 Policy-as-Code**: `"Compile our guardrails to AWS Cedar"` or `"Evaluate Cedar policy for resource.turso.database with DROP TABLE users"` (`GET /api/v1/governance/cedar`, `POST /api/v1/governance/cedar/evaluate`).
|
|
146
|
+
- **OpenTelemetry GenAI 1.29.0 & Langfuse Traces**: `"Export OpenTelemetry traces and Langfuse batch"` (`GET /api/v1/telemetry/otlp`).
|
|
147
|
+
- **FinOps & Commercial Engineering ROI**: `"What is our ROI and how many engineering hours have we saved?"` (`GET /api/v1/analytics/roi`).
|
|
148
|
+
- **One-Shot Agent Harness Configurator & Presets**: `"Configure harness preset strict-production and only allow emails to @muxo.ai"` (`GET/POST /api/v1/harness/configure`, `get_run_context({ action: "configure_harness", preset: "strict-production", harness: "claude_code" })`).
|
|
149
|
+
- **MCP Resources (`resources/read`)**: `muxo://policy/brief`, `muxo://governance/policy`, `muxo://context`, `muxo://memory/graph`, `muxo://harness/config`, `muxo://playbooks`, `muxo://skills`, `muxo://skills/{skillSlug}`.
|
|
150
|
+
- **MCP Prompts (`prompts/get`)**: `context`, `policy_guardrails` (accepts optional `tool_slug`), `governed_execution`, `security_audit`, `harness_setup`, `commercial_playbook`.
|
|
151
|
+
- **Governed Domain & Workflow Skills Catalog (`muxo://skills/{skillSlug}`)**:
|
|
152
|
+
- Read domain playbooks & parameter pitfalls via MCP (`resources/read` on `muxo://skills/github-automation`, `muxo://skills/supabase-provisioning`, `muxo://skills/changelog-generator`, or `skills/get` on `skill://muxo/<slug>/SKILL.md`), REST (`GET /api/v1/skills`, `GET /api/v1/skills/:slug`, `GET /skills/:slug/SKILL.md`), or CLI (`muxo skills list`, `muxo skills show <slug>`, `muxo skills install <slug> --all-curated`).
|
|
153
|
+
- REST equivalent: `GET/POST /api/v1/context`, `GET/POST /api/v1/harness/configure`, `GET/POST /api/v1/playbooks`, `GET /api/v1/skills`.
|
|
144
154
|
|
|
145
155
|
### Receipts
|
|
146
156
|
- **Explain / verify**: "Explain my latest receipt", "Verify receipt rcpt_...", "Show recent receipts" — returns the tamper-proof receipt with signature status and a plain-English explanation of action, cost, and funding mode.
|