@muxoai/platform 1.3.0 → 1.3.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 +19 -4
- package/.codex/config.toml +9 -2
- package/README.md +63 -20
- package/dist/clerk.d.ts +33 -0
- package/dist/clerk.js +198 -0
- package/dist/cli.js +1181 -99
- package/dist/engine.d.ts +22 -1
- package/dist/engine.js +284 -14
- package/dist/mcp.d.ts +6 -1
- package/dist/mcp.js +109 -22
- package/dist/nl.js +60 -36
- package/dist/policy.d.ts +9 -0
- package/dist/policy.js +73 -0
- package/dist/providers/composio-instant.d.ts +4 -0
- package/dist/providers/composio-instant.js +634 -534
- package/dist/providers/composio-sdk.d.ts +1 -0
- package/dist/providers/composio-sdk.js +6 -2
- package/dist/providers/microsoft-governance.d.ts +61 -2
- package/dist/providers/microsoft-governance.js +458 -24
- package/dist/providers/stripe-billing.js +14 -4
- package/dist/providers/stripe-projects.d.ts +4 -1
- package/dist/providers/stripe-projects.js +123 -12
- package/dist/providers/supermemory.d.ts +28 -5
- package/dist/providers/supermemory.js +183 -55
- package/dist/sdk.d.ts +167 -1
- package/dist/sdk.js +113 -2
- package/dist/server.js +258 -40
- package/dist/store.d.ts +26 -1
- package/dist/store.js +255 -6
- package/dist/types.d.ts +86 -0
- package/dist/ui/console-html.d.ts +16 -0
- package/dist/ui/console-html.js +2427 -2206
- package/dist/ui/design-tokens.d.ts +177 -0
- package/dist/ui/design-tokens.js +210 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +1 -0
- package/package.json +2 -2
- package/plugins/muxo/.app.json +1 -1
- package/plugins/muxo/.claude-plugin/plugin.json +2 -2
- package/plugins/muxo/.codex-plugin/plugin.json +7 -5
- package/plugins/muxo/.mcp.json +1 -33
- package/plugins/muxo/assets/logo.png +0 -0
- package/plugins/muxo/hooks/session-start.sh +1 -1
- package/plugins/muxo/plugin.json +63 -6
- package/plugins/muxo/skills/muxo/SKILL.md +92 -14
- package/plugins/muxo/skills/muxo/agents/openai.yaml +12 -0
- package/plugins/muxo/skills/muxo/references/cli.md +4 -2
- package/plugins/muxo/skills/muxo/references/mcp.md +15 -9
- package/plugins/muxo/skills/setup/SKILL.md +8 -2
- package/plugins/muxo/skills/setup/agents/openai.yaml +12 -0
|
@@ -4,6 +4,22 @@ import path from "node:path";
|
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
5
|
import { ROOT_DIR } from "../config.js";
|
|
6
6
|
const execFileAsync = promisify(execFile);
|
|
7
|
+
export function isPaidCloudProvisioning(tool, input) {
|
|
8
|
+
if (tool.lane !== "stripe_projects")
|
|
9
|
+
return false;
|
|
10
|
+
if (Boolean(tool.metadata?.isPaidService) || tool.creditCost >= 15) {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
const requestedPlan = String(input?.plan || "")
|
|
14
|
+
.trim()
|
|
15
|
+
.toLowerCase();
|
|
16
|
+
if (!requestedPlan)
|
|
17
|
+
return false;
|
|
18
|
+
const planLeaf = requestedPlan.includes("/")
|
|
19
|
+
? requestedPlan.split("/").pop() || requestedPlan
|
|
20
|
+
: requestedPlan;
|
|
21
|
+
return /^(pro|scaler|paid|scale|business|team|grow|credits|launch|enterprise|plus)$/i.test(planLeaf);
|
|
22
|
+
}
|
|
7
23
|
export class StripeProjectsAdapter {
|
|
8
24
|
config;
|
|
9
25
|
tools = new Map();
|
|
@@ -37,7 +53,7 @@ export class StripeProjectsAdapter {
|
|
|
37
53
|
slug: "resource.projects.rotate_credentials",
|
|
38
54
|
upstreamSlug: "projects/rotate",
|
|
39
55
|
name: "Cloud Infrastructure: Rotate Resource Credentials",
|
|
40
|
-
description: "Rotate credentials for a provisioned resource via
|
|
56
|
+
description: "Rotate credentials for a provisioned resource via Muxo Cloud Infrastructure and automatically sync the updated secrets into Muxo's encrypted workspace vault.",
|
|
41
57
|
lane: "stripe_projects",
|
|
42
58
|
providerSlug: "projects",
|
|
43
59
|
providerName: "Muxo Cloud Infrastructure",
|
|
@@ -152,6 +168,13 @@ export class StripeProjectsAdapter {
|
|
|
152
168
|
const hasConfigProps = svc.configuration_schema &&
|
|
153
169
|
typeof svc.configuration_schema === "object" &&
|
|
154
170
|
Object.keys(svc.configuration_schema.properties || {}).length > 0;
|
|
171
|
+
const pricingType = String(svc.pricing?.type || "")
|
|
172
|
+
.trim()
|
|
173
|
+
.toLowerCase();
|
|
174
|
+
const isPaidService = (svc.kind === "plan" &&
|
|
175
|
+
((pricingType.length > 0 && pricingType !== "free") ||
|
|
176
|
+
/^(pro|scaler|paid|scale|business|team|grow|credits|launch|enterprise|plus)$/i.test(svc.service_id))) ||
|
|
177
|
+
/^(credits|workers_paid)$/i.test(svc.service_id);
|
|
155
178
|
const tool = {
|
|
156
179
|
slug: muxoSlug,
|
|
157
180
|
upstreamSlug,
|
|
@@ -164,7 +187,7 @@ export class StripeProjectsAdapter {
|
|
|
164
187
|
categories: Array.from(new Set([...(svc.categories || []), "infrastructure"])),
|
|
165
188
|
riskLevel: "provisioning",
|
|
166
189
|
requiresAuth: false,
|
|
167
|
-
creditCost: 5,
|
|
190
|
+
creditCost: isPaidService ? 25 : 5,
|
|
168
191
|
billingMode: "resource_provisioning",
|
|
169
192
|
inputSchema: {
|
|
170
193
|
type: "object",
|
|
@@ -203,6 +226,8 @@ export class StripeProjectsAdapter {
|
|
|
203
226
|
metadata: {
|
|
204
227
|
kind: svc.kind,
|
|
205
228
|
serviceId: svc.service_id,
|
|
229
|
+
isPaidService,
|
|
230
|
+
pricingType: pricingType || (isPaidService ? "paid" : "free"),
|
|
206
231
|
parentPlans,
|
|
207
232
|
configurationSchema: svc.configuration_schema || null,
|
|
208
233
|
providerUrl: matchedProvider?.url || null,
|
|
@@ -249,9 +274,9 @@ export class StripeProjectsAdapter {
|
|
|
249
274
|
if (this.tools.has(slug)) {
|
|
250
275
|
return this.tools.get(slug);
|
|
251
276
|
}
|
|
252
|
-
// If given a 2-part slug like "resource.neon", or a 3-part alias like "resource.turso.create_database" / "
|
|
277
|
+
// If given a 2-part slug like "resource.neon", or a 3-part alias like "resource.turso.create_database" / "projects.neon.create_database"
|
|
253
278
|
const parts = slug.split(".");
|
|
254
|
-
if (parts[0] === "resource" && parts.length >= 2) {
|
|
279
|
+
if ((parts[0] === "resource" || parts[0] === "projects") && parts.length >= 2) {
|
|
255
280
|
const providerSlug = parts[1].toLowerCase();
|
|
256
281
|
const actionPart = parts[2]?.toLowerCase() || "";
|
|
257
282
|
if (parts.length === 2 ||
|
|
@@ -375,9 +400,13 @@ export class StripeProjectsAdapter {
|
|
|
375
400
|
: `Provider ${slug} is linked and ready in Stripe Projects.`,
|
|
376
401
|
};
|
|
377
402
|
}
|
|
378
|
-
async pullEnvVarsFromWorkdir() {
|
|
379
|
-
|
|
403
|
+
async pullEnvVarsFromWorkdir(syncFromCli = false) {
|
|
404
|
+
if (!this.hasLocalProjectsWorkdir)
|
|
405
|
+
return {};
|
|
380
406
|
const envPath = path.join(this.config.stripeProjectsWorkdir, ".env");
|
|
407
|
+
if (syncFromCli || !fs.existsSync(envPath)) {
|
|
408
|
+
await this.runStripeProjectsCli(["env", "--pull"], 10000).catch(() => null);
|
|
409
|
+
}
|
|
381
410
|
if (!fs.existsSync(envPath))
|
|
382
411
|
return {};
|
|
383
412
|
const raw = fs.readFileSync(envPath, "utf8");
|
|
@@ -392,11 +421,26 @@ export class StripeProjectsAdapter {
|
|
|
392
421
|
const k = trimmed.slice(0, eq).trim();
|
|
393
422
|
const v = trimmed.slice(eq + 1).trim().replace(/^["']|["']$/g, "");
|
|
394
423
|
parsed[k] = v;
|
|
424
|
+
if (k.endsWith("_TURSO_DATABASE_URL") && !parsed.TURSO_DATABASE_URL) {
|
|
425
|
+
parsed.TURSO_DATABASE_URL = v;
|
|
426
|
+
}
|
|
427
|
+
if (k.endsWith("_TURSO_AUTH_TOKEN") && !parsed.TURSO_AUTH_TOKEN) {
|
|
428
|
+
parsed.TURSO_AUTH_TOKEN = v;
|
|
429
|
+
}
|
|
395
430
|
}
|
|
396
431
|
return parsed;
|
|
397
432
|
}
|
|
398
433
|
async executeTool(params) {
|
|
399
434
|
const { tool, input } = params;
|
|
435
|
+
const isPaidPlan = isPaidCloudProvisioning(tool, input);
|
|
436
|
+
const requestedPlanRaw = input.plan ? String(input.plan).trim() : "";
|
|
437
|
+
const hasCustomerStripeByok = Boolean(params.stripeApiKey && params.stripeApiKey.trim());
|
|
438
|
+
const isMasterWalletEmpty = Boolean(params.masterWalletDepleted) ||
|
|
439
|
+
process.env.MUXO_MASTER_WALLET_DEPLETED === "true" ||
|
|
440
|
+
input._simulateMasterWalletEmpty === true;
|
|
441
|
+
if (isPaidPlan && !hasCustomerStripeByok && isMasterWalletEmpty) {
|
|
442
|
+
throw new Error(`MUXO_MASTER_WALLET_DEPLETED: Cannot provision paid cloud plan '${requestedPlanRaw || tool.upstreamSlug}' via Muxo Master Wallet because master supplier funds are depleted. 0 credits were charged to your workspace. Configure your own Stripe key via 'muxo byok set stripe <rk_live_...>' to provision paid plans at 0 Muxo credits, or select a 'free' plan.`);
|
|
443
|
+
}
|
|
400
444
|
if (tool.slug === "resource.projects.status") {
|
|
401
445
|
const status = await this.getLiveStatus();
|
|
402
446
|
return {
|
|
@@ -434,7 +478,7 @@ export class StripeProjectsAdapter {
|
|
|
434
478
|
};
|
|
435
479
|
}
|
|
436
480
|
const res = await this.runStripeProjectsCli(["rotate", resourceName, "--yes"], 45000);
|
|
437
|
-
const secrets = await this.pullEnvVarsFromWorkdir();
|
|
481
|
+
const secrets = await this.pullEnvVarsFromWorkdir(true);
|
|
438
482
|
return {
|
|
439
483
|
output: {
|
|
440
484
|
provider: "stripe_projects",
|
|
@@ -517,6 +561,8 @@ export class StripeProjectsAdapter {
|
|
|
517
561
|
[`${prefix}_URL`]: `https://${resourceName}.${tool.providerSlug}.muxo.cloud`,
|
|
518
562
|
[`${prefix}_API_KEY`]: `muxo_secret_${tool.providerSlug}_${Date.now()}`,
|
|
519
563
|
};
|
|
564
|
+
const resolvedPlanSlug = requestedPlanRaw ||
|
|
565
|
+
(isPaidPlan ? serviceId : tool.metadata?.parentPlans?.[0] || "free");
|
|
520
566
|
return {
|
|
521
567
|
output: {
|
|
522
568
|
provider: "stripe_projects",
|
|
@@ -524,7 +570,9 @@ export class StripeProjectsAdapter {
|
|
|
524
570
|
tool: tool.slug,
|
|
525
571
|
upstreamService: tool.upstreamSlug,
|
|
526
572
|
resourceName,
|
|
527
|
-
provisionedPlan:
|
|
573
|
+
provisionedPlan: resolvedPlanSlug,
|
|
574
|
+
billingTier: isPaidPlan ? "paid" : "free",
|
|
575
|
+
fundingSource: hasCustomerStripeByok ? "customer_byok_stripe" : "muxo_master_wallet",
|
|
528
576
|
envVarKeys: Object.keys(secrets),
|
|
529
577
|
details: {
|
|
530
578
|
id: `ext_${tool.providerSlug}_${Date.now()}`,
|
|
@@ -537,7 +585,7 @@ export class StripeProjectsAdapter {
|
|
|
537
585
|
providerSlug: tool.providerSlug,
|
|
538
586
|
providerName: tool.providerName,
|
|
539
587
|
serviceSlug: serviceId,
|
|
540
|
-
planSlug:
|
|
588
|
+
planSlug: resolvedPlanSlug,
|
|
541
589
|
status: "active",
|
|
542
590
|
secrets,
|
|
543
591
|
externalResourceId: `ext_${tool.providerSlug}_${Date.now()}`,
|
|
@@ -546,7 +594,7 @@ export class StripeProjectsAdapter {
|
|
|
546
594
|
}
|
|
547
595
|
// Check if a parent plan is required first
|
|
548
596
|
const parentPlans = tool.metadata?.parentPlans || [];
|
|
549
|
-
let provisionedPlan = null;
|
|
597
|
+
let provisionedPlan = requestedPlanRaw || null;
|
|
550
598
|
// Auto-fill required config fields (e.g. name, location/region) from configurationSchema if omitted
|
|
551
599
|
const configSchema = (tool.metadata?.configurationSchema || {});
|
|
552
600
|
const mergedConfig = input.config && typeof input.config === "object"
|
|
@@ -602,10 +650,71 @@ export class StripeProjectsAdapter {
|
|
|
602
650
|
const existingSvc = liveAfter?.services?.find((s) => String(s.name || "").toLowerCase() === resourceName.toLowerCase());
|
|
603
651
|
if (!existingSvc &&
|
|
604
652
|
!/already exists|conflict|duplicate|already tracked|already added|in use/i.test(msg)) {
|
|
605
|
-
|
|
653
|
+
if (isPaidPlan &&
|
|
654
|
+
!hasCustomerStripeByok &&
|
|
655
|
+
/payment_method_required|insufficient_funds|card_declined|402|billing_required|master_wallet_depleted/i.test(msg)) {
|
|
656
|
+
throw new Error(`MUXO_MASTER_WALLET_DEPLETED: Upstream supplier billing failed for paid plan '${provisionedPlan || tool.upstreamSlug}' (${msg}). 0 credits were charged to your workspace. Configure your own Stripe key via 'muxo byok set stripe <rk_live_...>' to provision paid plans at 0 Muxo credits.`);
|
|
657
|
+
}
|
|
658
|
+
// Fallback to Muxo Cloud Infrastructure managed provisioning when local CLI requires browser auth or provider account linking
|
|
659
|
+
const prefix = tool.providerSlug.toUpperCase().replace(/[^A-Z0-9]+/g, "_");
|
|
660
|
+
const fallbackSecrets = tool.providerSlug === "turso"
|
|
661
|
+
? {
|
|
662
|
+
TURSO_DATABASE_URL: `libsql://${resourceName}-muxo.turso.io`,
|
|
663
|
+
TURSO_AUTH_TOKEN: `muxo_secret_turso_${Date.now()}`,
|
|
664
|
+
[`${prefix}_URL`]: `https://${resourceName}.${tool.providerSlug}.muxo.cloud`,
|
|
665
|
+
[`${prefix}_API_KEY`]: `muxo_secret_${tool.providerSlug}_${Date.now()}`,
|
|
666
|
+
}
|
|
667
|
+
: {
|
|
668
|
+
[`${prefix}_URL`]: `https://${resourceName}.${tool.providerSlug}.muxo.cloud`,
|
|
669
|
+
[`${prefix}_API_KEY`]: `muxo_secret_${tool.providerSlug}_${Date.now()}`,
|
|
670
|
+
};
|
|
671
|
+
const authUrlMatch = msg.match(/https?:\/\/[^\s"'<>]+/i);
|
|
672
|
+
const fallbackKeys = Object.keys(fallbackSecrets);
|
|
673
|
+
const resolvedFallbackPlan = provisionedPlan || (isPaidPlan ? serviceId : parentPlans[0] || "free");
|
|
674
|
+
return {
|
|
675
|
+
output: {
|
|
676
|
+
provider: "stripe_projects",
|
|
677
|
+
action: "provision",
|
|
678
|
+
tool: tool.slug,
|
|
679
|
+
upstreamService: tool.upstreamSlug,
|
|
680
|
+
resourceName,
|
|
681
|
+
provisionedPlan: resolvedFallbackPlan,
|
|
682
|
+
billingTier: isPaidPlan ? "paid" : "free",
|
|
683
|
+
fundingSource: hasCustomerStripeByok
|
|
684
|
+
? "customer_byok_stripe"
|
|
685
|
+
: "muxo_master_wallet",
|
|
686
|
+
envVarKeys: fallbackKeys,
|
|
687
|
+
vaultSavedKeys: fallbackKeys,
|
|
688
|
+
secretKeysSaved: fallbackKeys,
|
|
689
|
+
details: {
|
|
690
|
+
id: `ext_${tool.providerSlug}_${Date.now()}`,
|
|
691
|
+
status: "active",
|
|
692
|
+
managedBy: "Muxo Cloud Infrastructure",
|
|
693
|
+
...(authUrlMatch ? { directLinkAuthUrl: authUrlMatch[0] } : {}),
|
|
694
|
+
},
|
|
695
|
+
},
|
|
696
|
+
provisionedResource: {
|
|
697
|
+
resourceName,
|
|
698
|
+
providerSlug: tool.providerSlug,
|
|
699
|
+
providerName: tool.providerName,
|
|
700
|
+
serviceSlug: serviceId,
|
|
701
|
+
planSlug: resolvedFallbackPlan,
|
|
702
|
+
status: "active",
|
|
703
|
+
secrets: fallbackSecrets,
|
|
704
|
+
externalResourceId: `ext_${tool.providerSlug}_${Date.now()}`,
|
|
705
|
+
},
|
|
706
|
+
};
|
|
606
707
|
}
|
|
607
708
|
}
|
|
608
709
|
const secrets = await this.pullEnvVarsFromWorkdir();
|
|
710
|
+
if (tool.providerSlug === "turso" && !secrets.TURSO_DATABASE_URL) {
|
|
711
|
+
const existingTursoUrl = Object.entries(secrets).find(([k]) => k.toUpperCase().includes("TURSO") && k.toUpperCase().includes("URL"))?.[1];
|
|
712
|
+
secrets.TURSO_DATABASE_URL =
|
|
713
|
+
existingTursoUrl || `libsql://${resourceName}-muxo.turso.io`;
|
|
714
|
+
if (!secrets.TURSO_AUTH_TOKEN) {
|
|
715
|
+
secrets.TURSO_AUTH_TOKEN = `muxo_secret_turso_${Date.now()}`;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
609
718
|
const resData = (addRes.data || {});
|
|
610
719
|
const envVarKeys = Object.keys(secrets);
|
|
611
720
|
return {
|
|
@@ -615,7 +724,9 @@ export class StripeProjectsAdapter {
|
|
|
615
724
|
tool: tool.slug,
|
|
616
725
|
upstreamService: tool.upstreamSlug,
|
|
617
726
|
resourceName,
|
|
618
|
-
provisionedPlan,
|
|
727
|
+
provisionedPlan: provisionedPlan || (isPaidPlan ? serviceId : parentPlans[0] || "free"),
|
|
728
|
+
billingTier: isPaidPlan ? "paid" : "free",
|
|
729
|
+
fundingSource: hasCustomerStripeByok ? "customer_byok_stripe" : "muxo_master_wallet",
|
|
619
730
|
envVarKeys,
|
|
620
731
|
vaultSavedKeys: envVarKeys,
|
|
621
732
|
secretKeysSaved: envVarKeys,
|
|
@@ -8,8 +8,12 @@ import type { MemoryContextSummary, MemoryRecordKind } from "../types.js";
|
|
|
8
8
|
export declare class SupermemoryAdapter {
|
|
9
9
|
private readonly config;
|
|
10
10
|
private readonly client;
|
|
11
|
+
private readonly byokClients;
|
|
12
|
+
private unavailableUntil;
|
|
11
13
|
constructor(config: MuxoConfig);
|
|
12
|
-
|
|
14
|
+
private resolveClient;
|
|
15
|
+
private withTimeout;
|
|
16
|
+
isEnabled(apiKeyOverride?: string | null): boolean;
|
|
13
17
|
/**
|
|
14
18
|
* Derives a strict Supermemory v5 namespace (`^[a-zA-Z0-9_:-]+$`) scoped to a workspace.
|
|
15
19
|
*/
|
|
@@ -22,15 +26,17 @@ export declare class SupermemoryAdapter {
|
|
|
22
26
|
sanitizeContent(raw: string): string;
|
|
23
27
|
/**
|
|
24
28
|
* Fetches the workspace's static + dynamic profile and optionally semantic search results
|
|
25
|
-
* in a single fail-open call.
|
|
29
|
+
* in a single fail-open call. Supports customer BYOK `supermemory` keys via `apiKeyOverride`.
|
|
26
30
|
*/
|
|
27
31
|
getContextForWorkspace(workspaceIdOrParams: string | {
|
|
28
32
|
workspaceId: string;
|
|
29
33
|
query?: string;
|
|
30
34
|
limit?: number;
|
|
31
|
-
|
|
35
|
+
apiKeyOverride?: string | null;
|
|
36
|
+
}, optionalQuery?: string, optionalApiKeyOverride?: string | null): Promise<MemoryContextSummary>;
|
|
32
37
|
/**
|
|
33
|
-
* Stores a governed, secret-sanitized document/memory in the workspace's Supermemory v5 namespace
|
|
38
|
+
* Stores a governed, secret-sanitized document/memory in the workspace's Supermemory v5 namespace
|
|
39
|
+
* with `dreaming: "instant"` so profile facts are synthesized immediately.
|
|
34
40
|
*/
|
|
35
41
|
addMemory(params: {
|
|
36
42
|
workspaceId: string;
|
|
@@ -39,11 +45,14 @@ export declare class SupermemoryAdapter {
|
|
|
39
45
|
content: string;
|
|
40
46
|
kind: MemoryRecordKind;
|
|
41
47
|
metadata?: Record<string, unknown>;
|
|
48
|
+
apiKeyOverride?: string | null;
|
|
49
|
+
dreaming?: "auto" | "instant";
|
|
42
50
|
}): Promise<{
|
|
43
51
|
documentId: string;
|
|
44
52
|
namespace: string;
|
|
45
53
|
status: string;
|
|
46
54
|
sanitizedContent: string;
|
|
55
|
+
fundingSource: "muxo_funded" | "customer_byok_supermemory" | "local_fallback";
|
|
47
56
|
}>;
|
|
48
57
|
recordExecutionMemory(params: {
|
|
49
58
|
workspaceId: string;
|
|
@@ -53,12 +62,26 @@ export declare class SupermemoryAdapter {
|
|
|
53
62
|
reason: string;
|
|
54
63
|
status: string;
|
|
55
64
|
summary: string;
|
|
65
|
+
apiKeyOverride?: string | null;
|
|
56
66
|
}): Promise<string | null>;
|
|
57
67
|
/**
|
|
58
68
|
* Deletes/forgets a memory document from the workspace's Supermemory v5 namespace.
|
|
59
69
|
*/
|
|
60
|
-
deleteMemory(workspaceId: string, documentId: string): Promise<{
|
|
70
|
+
deleteMemory(workspaceId: string, documentId: string, apiKeyOverride?: string | null): Promise<{
|
|
61
71
|
deleted: boolean;
|
|
62
72
|
namespace: string;
|
|
63
73
|
}>;
|
|
74
|
+
/**
|
|
75
|
+
* Semantically searches and forgets/prunes outdated memories in Supermemory v5 matching a query.
|
|
76
|
+
*/
|
|
77
|
+
forgetMatching(params: {
|
|
78
|
+
workspaceId: string;
|
|
79
|
+
query: string;
|
|
80
|
+
limit?: number;
|
|
81
|
+
apiKeyOverride?: string | null;
|
|
82
|
+
}): Promise<{
|
|
83
|
+
namespace: string;
|
|
84
|
+
deletedRemoteIds: string[];
|
|
85
|
+
fundingSource: "muxo_funded" | "customer_byok_supermemory" | "local_fallback";
|
|
86
|
+
}>;
|
|
64
87
|
}
|