@muxoai/sdk 1.2.2 → 1.3.0
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 +22 -0
- package/.claude-plugin/marketplace.json +17 -0
- package/.codex/config.toml +5 -0
- package/ARCHITECTURE.md +111 -0
- package/README.md +57 -28
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +894 -0
- package/dist/config.d.ts +20 -0
- package/dist/config.js +89 -0
- package/dist/engine.d.ts +156 -0
- package/dist/engine.js +876 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/mcp.d.ts +45 -0
- package/dist/mcp.js +914 -0
- package/dist/nl.d.ts +34 -0
- package/dist/nl.js +577 -0
- package/dist/providers/composio-instant.d.ts +14 -0
- package/dist/providers/composio-instant.js +814 -0
- package/dist/providers/composio-sdk.d.ts +41 -0
- package/dist/providers/composio-sdk.js +572 -0
- package/dist/providers/microsoft-governance.d.ts +66 -0
- package/dist/providers/microsoft-governance.js +415 -0
- package/dist/providers/stripe-billing.d.ts +41 -0
- package/dist/providers/stripe-billing.js +372 -0
- package/dist/providers/stripe-projects.d.ts +53 -0
- package/dist/providers/stripe-projects.js +636 -0
- package/dist/providers/supermemory.d.ts +64 -0
- package/dist/providers/supermemory.js +224 -0
- package/dist/sdk.d.ts +84 -1
- package/dist/sdk.js +53 -0
- package/dist/server.d.ts +10 -0
- package/dist/server.js +1277 -0
- package/dist/store.d.ts +216 -0
- package/dist/store.js +1449 -0
- package/dist/types.d.ts +14 -2
- package/dist/ui/console-html.d.ts +2 -0
- package/dist/ui/console-html.js +2343 -0
- package/package.json +66 -17
- package/plugins/muxo/.app.json +8 -0
- package/plugins/muxo/.claude-plugin/plugin.json +16 -0
- package/plugins/muxo/.codex-plugin/plugin.json +55 -0
- package/plugins/muxo/.mcp.json +40 -0
- package/plugins/muxo/assets/logo.png +0 -0
- package/plugins/muxo/assets/logo.svg +6 -0
- package/plugins/muxo/hooks/hooks.json +27 -0
- package/plugins/muxo/hooks/session-start.sh +85 -0
- package/plugins/muxo/hooks/user-prompt-submit.sh +45 -0
- package/plugins/muxo/mcp.json +38 -0
- package/plugins/muxo/plugin.json +59 -0
- package/plugins/muxo/skills/muxo/SKILL.md +25 -0
- package/plugins/muxo/skills/muxo/references/cli.md +57 -0
- package/plugins/muxo/skills/muxo/references/mcp.md +25 -0
- package/plugins/muxo/skills/setup/SKILL.md +28 -0
- package/src/catalogues/stripe-projects-catalog.json +9832 -0
- package/vendor/microsoft-governance/README.md +363 -0
- package/vendor/microsoft-governance/dist/audit.d.ts +26 -0
- package/vendor/microsoft-governance/dist/audit.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/audit.js +107 -0
- package/vendor/microsoft-governance/dist/audit.js.map +1 -0
- package/vendor/microsoft-governance/dist/cascade-containment.d.ts +84 -0
- package/vendor/microsoft-governance/dist/cascade-containment.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/cascade-containment.js +387 -0
- package/vendor/microsoft-governance/dist/cascade-containment.js.map +1 -0
- package/vendor/microsoft-governance/dist/client.d.ts +34 -0
- package/vendor/microsoft-governance/dist/client.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/client.js +112 -0
- package/vendor/microsoft-governance/dist/client.js.map +1 -0
- package/vendor/microsoft-governance/dist/context-poisoning.d.ts +58 -0
- package/vendor/microsoft-governance/dist/context-poisoning.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/context-poisoning.js +410 -0
- package/vendor/microsoft-governance/dist/context-poisoning.js.map +1 -0
- package/vendor/microsoft-governance/dist/credential-vault.d.ts +213 -0
- package/vendor/microsoft-governance/dist/credential-vault.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/credential-vault.js +567 -0
- package/vendor/microsoft-governance/dist/credential-vault.js.map +1 -0
- package/vendor/microsoft-governance/dist/discovery.d.ts +80 -0
- package/vendor/microsoft-governance/dist/discovery.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/discovery.js +404 -0
- package/vendor/microsoft-governance/dist/discovery.js.map +1 -0
- package/vendor/microsoft-governance/dist/encryption/channel.d.ts +29 -0
- package/vendor/microsoft-governance/dist/encryption/channel.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/encryption/channel.js +78 -0
- package/vendor/microsoft-governance/dist/encryption/channel.js.map +1 -0
- package/vendor/microsoft-governance/dist/encryption/index.d.ts +9 -0
- package/vendor/microsoft-governance/dist/encryption/index.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/encryption/index.js +23 -0
- package/vendor/microsoft-governance/dist/encryption/index.js.map +1 -0
- package/vendor/microsoft-governance/dist/encryption/mesh-client.d.ts +267 -0
- package/vendor/microsoft-governance/dist/encryption/mesh-client.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/encryption/mesh-client.js +1001 -0
- package/vendor/microsoft-governance/dist/encryption/mesh-client.js.map +1 -0
- package/vendor/microsoft-governance/dist/encryption/ratchet.d.ts +38 -0
- package/vendor/microsoft-governance/dist/encryption/ratchet.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/encryption/ratchet.js +223 -0
- package/vendor/microsoft-governance/dist/encryption/ratchet.js.map +1 -0
- package/vendor/microsoft-governance/dist/encryption/registry-client.d.ts +136 -0
- package/vendor/microsoft-governance/dist/encryption/registry-client.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/encryption/registry-client.js +369 -0
- package/vendor/microsoft-governance/dist/encryption/registry-client.js.map +1 -0
- package/vendor/microsoft-governance/dist/encryption/x3dh.d.ts +80 -0
- package/vendor/microsoft-governance/dist/encryption/x3dh.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/encryption/x3dh.js +238 -0
- package/vendor/microsoft-governance/dist/encryption/x3dh.js.map +1 -0
- package/vendor/microsoft-governance/dist/framework-adapter.d.ts +63 -0
- package/vendor/microsoft-governance/dist/framework-adapter.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/framework-adapter.js +253 -0
- package/vendor/microsoft-governance/dist/framework-adapter.js.map +1 -0
- package/vendor/microsoft-governance/dist/identity.d.ts +124 -0
- package/vendor/microsoft-governance/dist/identity.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/identity.js +446 -0
- package/vendor/microsoft-governance/dist/identity.js.map +1 -0
- package/vendor/microsoft-governance/dist/index.d.ts +39 -0
- package/vendor/microsoft-governance/dist/index.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/index.js +95 -0
- package/vendor/microsoft-governance/dist/index.js.map +1 -0
- package/vendor/microsoft-governance/dist/kill-switch.d.ts +22 -0
- package/vendor/microsoft-governance/dist/kill-switch.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/kill-switch.js +60 -0
- package/vendor/microsoft-governance/dist/kill-switch.js.map +1 -0
- package/vendor/microsoft-governance/dist/lifecycle.d.ts +50 -0
- package/vendor/microsoft-governance/dist/lifecycle.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/lifecycle.js +113 -0
- package/vendor/microsoft-governance/dist/lifecycle.js.map +1 -0
- package/vendor/microsoft-governance/dist/mcp.d.ts +41 -0
- package/vendor/microsoft-governance/dist/mcp.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/mcp.js +233 -0
- package/vendor/microsoft-governance/dist/mcp.js.map +1 -0
- package/vendor/microsoft-governance/dist/metrics.d.ts +123 -0
- package/vendor/microsoft-governance/dist/metrics.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/metrics.js +289 -0
- package/vendor/microsoft-governance/dist/metrics.js.map +1 -0
- package/vendor/microsoft-governance/dist/oci-manifest.d.ts +49 -0
- package/vendor/microsoft-governance/dist/oci-manifest.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/oci-manifest.js +182 -0
- package/vendor/microsoft-governance/dist/oci-manifest.js.map +1 -0
- package/vendor/microsoft-governance/dist/policy-backends/cedar.d.ts +15 -0
- package/vendor/microsoft-governance/dist/policy-backends/cedar.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/policy-backends/cedar.js +88 -0
- package/vendor/microsoft-governance/dist/policy-backends/cedar.js.map +1 -0
- package/vendor/microsoft-governance/dist/policy-backends/opa.d.ts +17 -0
- package/vendor/microsoft-governance/dist/policy-backends/opa.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/policy-backends/opa.js +74 -0
- package/vendor/microsoft-governance/dist/policy-backends/opa.js.map +1 -0
- package/vendor/microsoft-governance/dist/policy.d.ts +77 -0
- package/vendor/microsoft-governance/dist/policy.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/policy.js +760 -0
- package/vendor/microsoft-governance/dist/policy.js.map +1 -0
- package/vendor/microsoft-governance/dist/prompt-defense.d.ts +37 -0
- package/vendor/microsoft-governance/dist/prompt-defense.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/prompt-defense.js +229 -0
- package/vendor/microsoft-governance/dist/prompt-defense.js.map +1 -0
- package/vendor/microsoft-governance/dist/protocol-facets.d.ts +87 -0
- package/vendor/microsoft-governance/dist/protocol-facets.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/protocol-facets.js +728 -0
- package/vendor/microsoft-governance/dist/protocol-facets.js.map +1 -0
- package/vendor/microsoft-governance/dist/rings.d.ts +17 -0
- package/vendor/microsoft-governance/dist/rings.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/rings.js +61 -0
- package/vendor/microsoft-governance/dist/rings.js.map +1 -0
- package/vendor/microsoft-governance/dist/sandbox.d.ts +61 -0
- package/vendor/microsoft-governance/dist/sandbox.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/sandbox.js +199 -0
- package/vendor/microsoft-governance/dist/sandbox.js.map +1 -0
- package/vendor/microsoft-governance/dist/surface-parity.d.ts +45 -0
- package/vendor/microsoft-governance/dist/surface-parity.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/surface-parity.js +216 -0
- package/vendor/microsoft-governance/dist/surface-parity.js.map +1 -0
- package/vendor/microsoft-governance/dist/trust.d.ts +28 -0
- package/vendor/microsoft-governance/dist/trust.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/trust.js +209 -0
- package/vendor/microsoft-governance/dist/trust.js.map +1 -0
- package/vendor/microsoft-governance/dist/types.d.ts +422 -0
- package/vendor/microsoft-governance/dist/types.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/types.js +29 -0
- package/vendor/microsoft-governance/dist/types.js.map +1 -0
- package/vendor/microsoft-governance/dist/verify.d.ts +135 -0
- package/vendor/microsoft-governance/dist/verify.d.ts.map +1 -0
- package/vendor/microsoft-governance/dist/verify.js +356 -0
- package/vendor/microsoft-governance/dist/verify.js.map +1 -0
- package/vendor/microsoft-governance/package.json +64 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { MuxoConfig } from "../config.js";
|
|
2
|
+
import type { MemoryContextSummary, MemoryRecordKind } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Supermemory v5 Contextual Brain & Context-Aware Tool Call Adapter.
|
|
5
|
+
* Uses deterministic per-workspace namespaces (`/ns/muxo-v5-<hash>/...`)
|
|
6
|
+
* and strict secret redaction so credentials never enter external memory.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SupermemoryAdapter {
|
|
9
|
+
private readonly config;
|
|
10
|
+
private readonly client;
|
|
11
|
+
constructor(config: MuxoConfig);
|
|
12
|
+
isEnabled(): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Derives a strict Supermemory v5 namespace (`^[a-zA-Z0-9_:-]+$`) scoped to a workspace.
|
|
15
|
+
*/
|
|
16
|
+
namespaceForWorkspace(workspaceId: string): string;
|
|
17
|
+
getWorkspaceNamespace(workspaceId: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Strips any API keys, bearer tokens, connection strings, or .env secret assignments
|
|
20
|
+
* before content is stored in Supermemory (AGENTS.md Invariant #11 & #12).
|
|
21
|
+
*/
|
|
22
|
+
sanitizeContent(raw: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Fetches the workspace's static + dynamic profile and optionally semantic search results
|
|
25
|
+
* in a single fail-open call.
|
|
26
|
+
*/
|
|
27
|
+
getContextForWorkspace(workspaceIdOrParams: string | {
|
|
28
|
+
workspaceId: string;
|
|
29
|
+
query?: string;
|
|
30
|
+
limit?: number;
|
|
31
|
+
}, optionalQuery?: string): Promise<MemoryContextSummary>;
|
|
32
|
+
/**
|
|
33
|
+
* Stores a governed, secret-sanitized document/memory in the workspace's Supermemory v5 namespace.
|
|
34
|
+
*/
|
|
35
|
+
addMemory(params: {
|
|
36
|
+
workspaceId: string;
|
|
37
|
+
documentId?: string;
|
|
38
|
+
title: string;
|
|
39
|
+
content: string;
|
|
40
|
+
kind: MemoryRecordKind;
|
|
41
|
+
metadata?: Record<string, unknown>;
|
|
42
|
+
}): Promise<{
|
|
43
|
+
documentId: string;
|
|
44
|
+
namespace: string;
|
|
45
|
+
status: string;
|
|
46
|
+
sanitizedContent: string;
|
|
47
|
+
}>;
|
|
48
|
+
recordExecutionMemory(params: {
|
|
49
|
+
workspaceId: string;
|
|
50
|
+
toolSlug: string;
|
|
51
|
+
lane: string;
|
|
52
|
+
riskLevel: string;
|
|
53
|
+
reason: string;
|
|
54
|
+
status: string;
|
|
55
|
+
summary: string;
|
|
56
|
+
}): Promise<string | null>;
|
|
57
|
+
/**
|
|
58
|
+
* Deletes/forgets a memory document from the workspace's Supermemory v5 namespace.
|
|
59
|
+
*/
|
|
60
|
+
deleteMemory(workspaceId: string, documentId: string): Promise<{
|
|
61
|
+
deleted: boolean;
|
|
62
|
+
namespace: string;
|
|
63
|
+
}>;
|
|
64
|
+
}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import Supermemory from "supermemory";
|
|
3
|
+
/**
|
|
4
|
+
* Supermemory v5 Contextual Brain & Context-Aware Tool Call Adapter.
|
|
5
|
+
* Uses deterministic per-workspace namespaces (`/ns/muxo-v5-<hash>/...`)
|
|
6
|
+
* and strict secret redaction so credentials never enter external memory.
|
|
7
|
+
*/
|
|
8
|
+
export class SupermemoryAdapter {
|
|
9
|
+
config;
|
|
10
|
+
client;
|
|
11
|
+
constructor(config) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
if (config.supermemoryApiKey) {
|
|
14
|
+
this.client = new Supermemory({
|
|
15
|
+
apiKey: config.supermemoryApiKey,
|
|
16
|
+
baseUrl: config.supermemoryBaseUrl,
|
|
17
|
+
maxRetries: 1,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.client = null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
isEnabled() {
|
|
25
|
+
return Boolean(this.client);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Derives a strict Supermemory v5 namespace (`^[a-zA-Z0-9_:-]+$`) scoped to a workspace.
|
|
29
|
+
*/
|
|
30
|
+
namespaceForWorkspace(workspaceId) {
|
|
31
|
+
const hash = crypto
|
|
32
|
+
.createHash("sha256")
|
|
33
|
+
.update(`muxo-v5-ns:${workspaceId}`)
|
|
34
|
+
.digest("hex")
|
|
35
|
+
.slice(0, 24);
|
|
36
|
+
return `muxo-v5-${hash}`;
|
|
37
|
+
}
|
|
38
|
+
getWorkspaceNamespace(workspaceId) {
|
|
39
|
+
return this.namespaceForWorkspace(workspaceId);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Strips any API keys, bearer tokens, connection strings, or .env secret assignments
|
|
43
|
+
* before content is stored in Supermemory (AGENTS.md Invariant #11 & #12).
|
|
44
|
+
*/
|
|
45
|
+
sanitizeContent(raw) {
|
|
46
|
+
return raw
|
|
47
|
+
.replace(/\b(sk_live_|sk_test_|mk_live_|mk_test_|sm_|ak_|uak_|rk_live_|rk_test_|whsec_|ghp_|xoxb-|xoxp-)[A-Za-z0-9_\-]{6,}/g, "[REDACTED_KEY]")
|
|
48
|
+
.replace(/\b(postgres(?:ql)?|mysql|redis|rediss|mongodb(?:\+srv)?):\/\/[^\s"'`]+/gi, "$1://[REDACTED_CONNECTION_URI]")
|
|
49
|
+
.replace(/\b([A-Z0-9_]*(?:SECRET|TOKEN|PASSWORD|API_KEY|PRIVATE_KEY|CONNECTION_STRING)[A-Z0-9_]*)\s*=\s*[^\s\n]+/g, "$1=[REDACTED]");
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Fetches the workspace's static + dynamic profile and optionally semantic search results
|
|
53
|
+
* in a single fail-open call.
|
|
54
|
+
*/
|
|
55
|
+
async getContextForWorkspace(workspaceIdOrParams, optionalQuery) {
|
|
56
|
+
const params = typeof workspaceIdOrParams === "string"
|
|
57
|
+
? { workspaceId: workspaceIdOrParams, query: optionalQuery, limit: 5 }
|
|
58
|
+
: workspaceIdOrParams;
|
|
59
|
+
const namespace = this.namespaceForWorkspace(params.workspaceId);
|
|
60
|
+
if (!this.client) {
|
|
61
|
+
return {
|
|
62
|
+
enabled: false,
|
|
63
|
+
namespace,
|
|
64
|
+
staticFacts: [],
|
|
65
|
+
dynamicContext: [],
|
|
66
|
+
recalledMemories: [],
|
|
67
|
+
formattedPromptContext: "Supermemory v5 disabled (no API key configured).",
|
|
68
|
+
profile: { static: [], dynamic: [], preferences: [] },
|
|
69
|
+
relevantMemories: [],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const limit = Math.min(10, Math.max(1, Number(params.limit || 5)));
|
|
73
|
+
let staticFacts = [];
|
|
74
|
+
let dynamicFacts = [];
|
|
75
|
+
let preferences = [];
|
|
76
|
+
const relevantMemories = [];
|
|
77
|
+
try {
|
|
78
|
+
const profileRes = await this.client.profile(namespace, {
|
|
79
|
+
...(params.query ? { q: params.query } : {}),
|
|
80
|
+
});
|
|
81
|
+
staticFacts = Array.isArray(profileRes?.profile?.static)
|
|
82
|
+
? profileRes.profile.static.map(String)
|
|
83
|
+
: [];
|
|
84
|
+
dynamicFacts = Array.isArray(profileRes?.profile?.dynamic)
|
|
85
|
+
? profileRes.profile.dynamic.map(String)
|
|
86
|
+
: [];
|
|
87
|
+
preferences = Array.isArray(profileRes?.profile?.buckets?.preferences)
|
|
88
|
+
? profileRes.profile.buckets.preferences.map(String)
|
|
89
|
+
: [];
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Fail-open: never block tool planning if profile endpoint times out
|
|
93
|
+
}
|
|
94
|
+
if (params.query && params.query.trim().length > 0) {
|
|
95
|
+
try {
|
|
96
|
+
const searchRes = await this.client.search(namespace, {
|
|
97
|
+
query: params.query.trim(),
|
|
98
|
+
limit,
|
|
99
|
+
searchMode: "hybrid",
|
|
100
|
+
include: { documents: true, forgotten: false, related: false },
|
|
101
|
+
rewriteQuery: false,
|
|
102
|
+
});
|
|
103
|
+
for (const item of (searchRes?.results || []).slice(0, limit)) {
|
|
104
|
+
const doc = item.included?.document;
|
|
105
|
+
const title = String(doc?.metadata?.title ||
|
|
106
|
+
doc?.title ||
|
|
107
|
+
item.memory ||
|
|
108
|
+
item.chunk ||
|
|
109
|
+
"Workspace Memory").slice(0, 120);
|
|
110
|
+
const snippet = String(item.memory || item.chunk || doc?.metadata?.summary || "").slice(0, 300);
|
|
111
|
+
relevantMemories.push({
|
|
112
|
+
documentId: String(doc?.id || item.id || ""),
|
|
113
|
+
title,
|
|
114
|
+
snippet,
|
|
115
|
+
similarity: Number(item.similarity || 0),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Fail-open
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const promptLines = [
|
|
124
|
+
`[Supermemory Brain — Namespace: ${namespace}]`,
|
|
125
|
+
];
|
|
126
|
+
if (staticFacts.length > 0) {
|
|
127
|
+
promptLines.push(`Static Facts: ${staticFacts.join(" | ")}`);
|
|
128
|
+
}
|
|
129
|
+
if (dynamicFacts.length > 0) {
|
|
130
|
+
promptLines.push(`Dynamic Context: ${dynamicFacts.join(" | ")}`);
|
|
131
|
+
}
|
|
132
|
+
if (relevantMemories.length > 0) {
|
|
133
|
+
promptLines.push(`Recalled Memories: ${relevantMemories.map((m) => `${m.title}: ${m.snippet}`).join(" | ")}`);
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
enabled: true,
|
|
137
|
+
namespace,
|
|
138
|
+
staticFacts,
|
|
139
|
+
dynamicContext: dynamicFacts,
|
|
140
|
+
recalledMemories: relevantMemories,
|
|
141
|
+
formattedPromptContext: promptLines.join("\n"),
|
|
142
|
+
profile: {
|
|
143
|
+
static: staticFacts,
|
|
144
|
+
dynamic: dynamicFacts,
|
|
145
|
+
preferences,
|
|
146
|
+
},
|
|
147
|
+
relevantMemories,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Stores a governed, secret-sanitized document/memory in the workspace's Supermemory v5 namespace.
|
|
152
|
+
*/
|
|
153
|
+
async addMemory(params) {
|
|
154
|
+
const namespace = this.namespaceForWorkspace(params.workspaceId);
|
|
155
|
+
const sanitizedContent = this.sanitizeContent(params.content);
|
|
156
|
+
const docId = params.documentId || `mem_${crypto.randomBytes(8).toString("hex")}`;
|
|
157
|
+
if (!this.client) {
|
|
158
|
+
return {
|
|
159
|
+
documentId: docId,
|
|
160
|
+
namespace,
|
|
161
|
+
status: "local_only",
|
|
162
|
+
sanitizedContent,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
const res = await this.client.add(namespace, {
|
|
166
|
+
id: docId,
|
|
167
|
+
content: `${params.title}\n\n${sanitizedContent}`,
|
|
168
|
+
taskType: "memory",
|
|
169
|
+
metadata: {
|
|
170
|
+
title: params.title,
|
|
171
|
+
muxoWorkspaceId: params.workspaceId,
|
|
172
|
+
muxoKind: params.kind,
|
|
173
|
+
...(params.metadata || {}),
|
|
174
|
+
},
|
|
175
|
+
});
|
|
176
|
+
return {
|
|
177
|
+
documentId: String(res.id || docId),
|
|
178
|
+
namespace,
|
|
179
|
+
status: String(res.status || "queued"),
|
|
180
|
+
sanitizedContent,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
async recordExecutionMemory(params) {
|
|
184
|
+
try {
|
|
185
|
+
const added = await this.addMemory({
|
|
186
|
+
workspaceId: params.workspaceId,
|
|
187
|
+
title: `Execution: ${params.toolSlug} (${params.status})`,
|
|
188
|
+
content: params.summary,
|
|
189
|
+
kind: "execution_outcome",
|
|
190
|
+
metadata: {
|
|
191
|
+
toolSlug: params.toolSlug,
|
|
192
|
+
lane: params.lane,
|
|
193
|
+
riskLevel: params.riskLevel,
|
|
194
|
+
status: params.status,
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
return added.documentId;
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Deletes/forgets a memory document from the workspace's Supermemory v5 namespace.
|
|
205
|
+
*/
|
|
206
|
+
async deleteMemory(workspaceId, documentId) {
|
|
207
|
+
const namespace = this.namespaceForWorkspace(workspaceId);
|
|
208
|
+
if (!this.client) {
|
|
209
|
+
return { deleted: true, namespace };
|
|
210
|
+
}
|
|
211
|
+
try {
|
|
212
|
+
const res = await this.client.documents.delete(namespace, {
|
|
213
|
+
ids: [documentId],
|
|
214
|
+
});
|
|
215
|
+
return {
|
|
216
|
+
deleted: (res?.count || 0) >= 1,
|
|
217
|
+
namespace,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
return { deleted: false, namespace };
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
package/dist/sdk.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ActionPlan, ConnectionRecord, ExecutionReceipt, ExecutionRun, MuxoTool, ProviderLane, ProvisionedResource, RiskLevel, SupplierSettlementSummary, Workspace, WorkspaceMemoryRecord } from "./types.js";
|
|
1
|
+
import type { ActionPlan, ByokKeyRecord, ConnectionRecord, ExecutionReceipt, ExecutionRun, MuxoTool, ProviderLane, ProvisionedResource, RiskLevel, SupplierSettlementSummary, Workspace, WorkspaceMemoryRecord } from "./types.js";
|
|
2
2
|
export interface MuxoClientOptions {
|
|
3
3
|
baseUrl?: string;
|
|
4
4
|
apiKey?: string | (() => string | Promise<string>);
|
|
@@ -156,6 +156,13 @@ export declare class MuxoClient {
|
|
|
156
156
|
totalCustomerChargedCredits?: number;
|
|
157
157
|
};
|
|
158
158
|
}>;
|
|
159
|
+
settlements(): Promise<{
|
|
160
|
+
ok: true;
|
|
161
|
+
settlementSummary: SupplierSettlementSummary & {
|
|
162
|
+
totalCustomerChargedCredits?: number;
|
|
163
|
+
};
|
|
164
|
+
summary?: SupplierSettlementSummary;
|
|
165
|
+
}>;
|
|
159
166
|
getSettlements(): Promise<{
|
|
160
167
|
ok: true;
|
|
161
168
|
settlementSummary: SupplierSettlementSummary & {
|
|
@@ -167,4 +174,80 @@ export declare class MuxoClient {
|
|
|
167
174
|
namespace: string;
|
|
168
175
|
records: WorkspaceMemoryRecord[];
|
|
169
176
|
}>;
|
|
177
|
+
do(prompt: string, options?: {
|
|
178
|
+
input?: Record<string, unknown>;
|
|
179
|
+
autoApprove?: boolean;
|
|
180
|
+
dryRun?: boolean;
|
|
181
|
+
}): Promise<{
|
|
182
|
+
ok: boolean;
|
|
183
|
+
executed: boolean;
|
|
184
|
+
status: string;
|
|
185
|
+
intent: {
|
|
186
|
+
toolSlug: string | null;
|
|
187
|
+
input: Record<string, unknown>;
|
|
188
|
+
extractedInput: Record<string, unknown>;
|
|
189
|
+
reason: string;
|
|
190
|
+
confidence: number;
|
|
191
|
+
};
|
|
192
|
+
resolution: Record<string, unknown>;
|
|
193
|
+
plan?: ActionPlan;
|
|
194
|
+
run?: ExecutionRun;
|
|
195
|
+
receipt?: ExecutionReceipt;
|
|
196
|
+
humanMessage: string;
|
|
197
|
+
}>;
|
|
198
|
+
ask(prompt: string, options?: {
|
|
199
|
+
input?: Record<string, unknown>;
|
|
200
|
+
autoApprove?: boolean;
|
|
201
|
+
dryRun?: boolean;
|
|
202
|
+
}): Promise<{
|
|
203
|
+
ok: boolean;
|
|
204
|
+
executed: boolean;
|
|
205
|
+
status: string;
|
|
206
|
+
intent: {
|
|
207
|
+
toolSlug: string | null;
|
|
208
|
+
input: Record<string, unknown>;
|
|
209
|
+
extractedInput: Record<string, unknown>;
|
|
210
|
+
reason: string;
|
|
211
|
+
confidence: number;
|
|
212
|
+
};
|
|
213
|
+
resolution: Record<string, unknown>;
|
|
214
|
+
plan?: ActionPlan;
|
|
215
|
+
run?: ExecutionRun;
|
|
216
|
+
receipt?: ExecutionReceipt;
|
|
217
|
+
humanMessage: string;
|
|
218
|
+
}>;
|
|
219
|
+
listByokKeys(): Promise<{
|
|
220
|
+
ok: true;
|
|
221
|
+
workspaceId: string;
|
|
222
|
+
keys: ByokKeyRecord[];
|
|
223
|
+
}>;
|
|
224
|
+
setByokKey(provider: string, secretKey: string): Promise<{
|
|
225
|
+
ok: true;
|
|
226
|
+
key: ByokKeyRecord;
|
|
227
|
+
keys: ByokKeyRecord[];
|
|
228
|
+
}>;
|
|
229
|
+
deleteByokKey(provider: string): Promise<{
|
|
230
|
+
ok: true;
|
|
231
|
+
deleted: boolean;
|
|
232
|
+
provider: string;
|
|
233
|
+
keys: ByokKeyRecord[];
|
|
234
|
+
}>;
|
|
235
|
+
upgradePlan(): Promise<{
|
|
236
|
+
ok: true;
|
|
237
|
+
tier: string;
|
|
238
|
+
workspace: Workspace;
|
|
239
|
+
settlementSummary: SupplierSettlementSummary;
|
|
240
|
+
}>;
|
|
241
|
+
createCheckoutSession(kind?: "starter_subscription" | "credit_topup"): Promise<{
|
|
242
|
+
ok: true;
|
|
243
|
+
sessionId: string;
|
|
244
|
+
url: string;
|
|
245
|
+
mode?: string;
|
|
246
|
+
}>;
|
|
247
|
+
verifyCheckoutSession(sessionId: string): Promise<{
|
|
248
|
+
ok: true;
|
|
249
|
+
fulfilled: boolean;
|
|
250
|
+
workspace: Workspace | null;
|
|
251
|
+
kind: string;
|
|
252
|
+
}>;
|
|
170
253
|
}
|
package/dist/sdk.js
CHANGED
|
@@ -201,6 +201,13 @@ export class MuxoClient {
|
|
|
201
201
|
async getBillingStatus() {
|
|
202
202
|
return this.getSettlements();
|
|
203
203
|
}
|
|
204
|
+
async settlements() {
|
|
205
|
+
const res = await this.getSettlements();
|
|
206
|
+
return {
|
|
207
|
+
...res,
|
|
208
|
+
summary: res.settlementSummary,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
204
211
|
async getSettlements() {
|
|
205
212
|
const res = await this.request("/api/v1/billing/settlements");
|
|
206
213
|
if (res.settlementSummary &&
|
|
@@ -214,4 +221,50 @@ export class MuxoClient {
|
|
|
214
221
|
const suffix = query ? `?query=${encodeURIComponent(query)}` : "";
|
|
215
222
|
return this.request(`/api/v1/memory${suffix}`);
|
|
216
223
|
}
|
|
224
|
+
async do(prompt, options = {}) {
|
|
225
|
+
return this.request("/api/v1/do", {
|
|
226
|
+
method: "POST",
|
|
227
|
+
body: {
|
|
228
|
+
prompt,
|
|
229
|
+
input: options.input,
|
|
230
|
+
autoApprove: options.autoApprove !== false,
|
|
231
|
+
dryRun: options.dryRun === true,
|
|
232
|
+
},
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
async ask(prompt, options) {
|
|
236
|
+
return this.do(prompt, options);
|
|
237
|
+
}
|
|
238
|
+
async listByokKeys() {
|
|
239
|
+
return this.request("/api/v1/byok");
|
|
240
|
+
}
|
|
241
|
+
async setByokKey(provider, secretKey) {
|
|
242
|
+
return this.request("/api/v1/byok", {
|
|
243
|
+
method: "POST",
|
|
244
|
+
body: { provider, secretKey },
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
async deleteByokKey(provider) {
|
|
248
|
+
return this.request(`/api/v1/byok/${encodeURIComponent(provider)}`, {
|
|
249
|
+
method: "DELETE",
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
async upgradePlan() {
|
|
253
|
+
return this.request("/api/v1/billing/upgrade", {
|
|
254
|
+
method: "POST",
|
|
255
|
+
body: {},
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
async createCheckoutSession(kind = "credit_topup") {
|
|
259
|
+
return this.request("/api/v1/billing/checkout", {
|
|
260
|
+
method: "POST",
|
|
261
|
+
body: { kind },
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
async verifyCheckoutSession(sessionId) {
|
|
265
|
+
return this.request("/api/v1/billing/verify-session", {
|
|
266
|
+
method: "POST",
|
|
267
|
+
body: { sessionId },
|
|
268
|
+
});
|
|
269
|
+
}
|
|
217
270
|
}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
import { type MuxoConfig } from "./config.js";
|
|
3
|
+
import { MuxoEngine } from "./engine.js";
|
|
4
|
+
import { MuxoStore } from "./store.js";
|
|
5
|
+
export declare function createMuxoServer(customConfig?: Partial<MuxoConfig>): {
|
|
6
|
+
server: http.Server;
|
|
7
|
+
engine: MuxoEngine;
|
|
8
|
+
store: MuxoStore;
|
|
9
|
+
defaultApiKey?: string;
|
|
10
|
+
};
|