@decocms/runtime 0.24.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/dist/admin.d.ts +5 -0
- package/dist/admin.js +21 -0
- package/dist/admin.js.map +1 -0
- package/dist/bindings/deconfig/index.d.ts +10 -0
- package/dist/bindings/deconfig/index.js +10 -0
- package/dist/bindings/deconfig/index.js.map +1 -0
- package/dist/bindings/index.d.ts +1054 -0
- package/dist/bindings/index.js +133 -0
- package/dist/bindings/index.js.map +1 -0
- package/dist/chunk-377XXI4J.js +764 -0
- package/dist/chunk-377XXI4J.js.map +1 -0
- package/dist/chunk-4UQ5U73Y.js +129 -0
- package/dist/chunk-4UQ5U73Y.js.map +1 -0
- package/dist/chunk-4XSQKJLU.js +105 -0
- package/dist/chunk-4XSQKJLU.js.map +1 -0
- package/dist/chunk-73FIKR3X.js +128 -0
- package/dist/chunk-73FIKR3X.js.map +1 -0
- package/dist/chunk-AOFOWQXY.js +27 -0
- package/dist/chunk-AOFOWQXY.js.map +1 -0
- package/dist/chunk-G3NWZG2F.js +155 -0
- package/dist/chunk-G3NWZG2F.js.map +1 -0
- package/dist/chunk-I7BWSAN6.js +49 -0
- package/dist/chunk-I7BWSAN6.js.map +1 -0
- package/dist/chunk-UHR3BLMF.js +92 -0
- package/dist/chunk-UHR3BLMF.js.map +1 -0
- package/dist/chunk-ZPUT6RN6.js +32 -0
- package/dist/chunk-ZPUT6RN6.js.map +1 -0
- package/dist/chunk-ZRJ5SGAO.js +494 -0
- package/dist/chunk-ZRJ5SGAO.js.map +1 -0
- package/dist/client.d.ts +28 -0
- package/dist/client.js +5 -0
- package/dist/client.js.map +1 -0
- package/dist/connection-DDtQYrea.d.ts +30 -0
- package/dist/d1-store.d.ts +9 -0
- package/dist/d1-store.js +4 -0
- package/dist/d1-store.js.map +1 -0
- package/dist/drizzle.d.ts +48 -0
- package/dist/drizzle.js +121 -0
- package/dist/drizzle.js.map +1 -0
- package/dist/index-BBAR4TQu.d.ts +530 -0
- package/dist/index-D_J_044C.d.ts +461 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +634 -0
- package/dist/index.js.map +1 -0
- package/dist/mastra.d.ts +9 -0
- package/dist/mastra.js +6 -0
- package/dist/mastra.js.map +1 -0
- package/dist/mcp-Bv7IAgWX.d.ts +109 -0
- package/dist/mcp-client.d.ts +236 -0
- package/dist/mcp-client.js +4 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/proxy.d.ts +10 -0
- package/dist/proxy.js +5 -0
- package/dist/proxy.js.map +1 -0
- package/dist/resources.d.ts +393 -0
- package/dist/resources.js +4 -0
- package/dist/resources.js.map +1 -0
- package/dist/views.d.ts +72 -0
- package/dist/views.js +4 -0
- package/dist/views.js.map +1 -0
- package/package.json +91 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/views.ts"],"names":[],"mappings":";;;AAEA,IAAM,kBAAkB,CAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,MAAA,EAAQ,SAAS,CAAC,CAAA;AAGnD,IAAM,qBAAA,GAAwB,EAAE,MAAA,CAAO;AAAA,EAC5C,OAAO,CAAA,CAAE,KAAA;AAAA,IACP,EAAE,MAAA,CAAO;AAAA,MACP,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MACxB,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAC1B,KAAA,EAAO,EAAE,MAAA,EAAO;AAAA,MAChB,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MACjC,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,MACf,GAAA,EAAK,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,MAEzB,eAAA,EAAiB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MACrC,YAAA,EAAc,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,MAElC,KAAA,EAAO,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,MAChD,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAC5B,eAAA,EAAiB,gBAAgB,QAAA;AAAS,KAC3C;AAAA;AAEL,CAAC","file":"chunk-AOFOWQXY.js","sourcesContent":["import { z } from \"zod\";\n\nconst installBehavior = z.enum([\"none\", \"open\", \"autoPin\"]);\n\n// New, richer schema with backward-compat fields kept optional\nexport const ViewsListOutputSchema = z.object({\n views: z.array(\n z.object({\n id: z.string().optional(),\n name: z.string().optional(),\n title: z.string(),\n description: z.string().optional(),\n icon: z.string(),\n url: z.string().optional(),\n // New acceptance rules\n mimeTypePattern: z.string().optional(),\n resourceName: z.string().optional(),\n // Legacy/compat fields\n tools: z.array(z.string()).optional().default([]),\n prompt: z.string().optional(),\n installBehavior: installBehavior.optional(),\n }),\n ),\n});\n\nexport type ViewsListOutput = z.infer<typeof ViewsListOutputSchema>;\n"]}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { createServerClient } from './chunk-4UQ5U73Y.js';
|
|
2
|
+
import { convertJsonSchemaToZod } from 'zod-from-json-schema';
|
|
3
|
+
|
|
4
|
+
// src/well-known.ts
|
|
5
|
+
var Hosts = {
|
|
6
|
+
API: "api.decocms.com",
|
|
7
|
+
WEB_APP: "admin.decocms.com",
|
|
8
|
+
LOCALHOST: "localhost:3000",
|
|
9
|
+
API_LEGACY: "api.deco.chat",
|
|
10
|
+
WEB_APP_LEGACY: "deco.chat"
|
|
11
|
+
};
|
|
12
|
+
var WELL_KNOWN_API_HOSTNAMES = [
|
|
13
|
+
Hosts.API,
|
|
14
|
+
Hosts.API_LEGACY,
|
|
15
|
+
Hosts.LOCALHOST.split(":")[0]
|
|
16
|
+
];
|
|
17
|
+
var WELL_KNOWN_ORIGINS = [
|
|
18
|
+
`http://${Hosts.LOCALHOST}`,
|
|
19
|
+
`https://${Hosts.WEB_APP}`,
|
|
20
|
+
`https://${Hosts.WEB_APP_LEGACY}`
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
// src/proxy.ts
|
|
24
|
+
var getWorkspace = (workspace) => {
|
|
25
|
+
if (workspace && workspace.length > 0 && !workspace.includes("/")) {
|
|
26
|
+
return `/shared/${workspace}`;
|
|
27
|
+
}
|
|
28
|
+
return workspace ?? "";
|
|
29
|
+
};
|
|
30
|
+
var safeParse = (content) => {
|
|
31
|
+
try {
|
|
32
|
+
return JSON.parse(content);
|
|
33
|
+
} catch {
|
|
34
|
+
return content;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
var toolsMap = /* @__PURE__ */ new Map();
|
|
38
|
+
function supportsToolNameInPath(url) {
|
|
39
|
+
try {
|
|
40
|
+
return WELL_KNOWN_API_HOSTNAMES.includes(new URL(url).hostname);
|
|
41
|
+
} catch {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function createMCPClientProxy(options) {
|
|
46
|
+
if (typeof options?.connection === "function") {
|
|
47
|
+
throw new Error(
|
|
48
|
+
"Deprecation Notice: Passing a function as 'connection' is deprecated and will be removed in a future release. Please provide a connection object instead."
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
const mcpPath = options?.mcpPath ?? "/mcp";
|
|
52
|
+
const connection = options?.connection || {
|
|
53
|
+
type: "HTTP",
|
|
54
|
+
token: options?.token,
|
|
55
|
+
url: new URL(
|
|
56
|
+
`${getWorkspace(options?.workspace)}${mcpPath}`,
|
|
57
|
+
options?.decoCmsApiUrl ?? `https://api.decocms.com`
|
|
58
|
+
).href
|
|
59
|
+
};
|
|
60
|
+
return new Proxy({}, {
|
|
61
|
+
get(_, name) {
|
|
62
|
+
if (name === "toJSON") {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
if (typeof name !== "string") {
|
|
66
|
+
throw new Error("Name must be a string");
|
|
67
|
+
}
|
|
68
|
+
async function callToolFn(args) {
|
|
69
|
+
const debugId = options?.debugId?.();
|
|
70
|
+
const extraHeaders = debugId ? { "x-trace-debug-id": debugId } : void 0;
|
|
71
|
+
let toolConnection = connection;
|
|
72
|
+
const shouldAddToolName = options?.supportsToolName ?? ("url" in connection && typeof connection.url === "string" && supportsToolNameInPath(connection.url));
|
|
73
|
+
if (shouldAddToolName && "url" in connection && typeof connection.url === "string") {
|
|
74
|
+
toolConnection = {
|
|
75
|
+
...connection,
|
|
76
|
+
url: connection.url.endsWith("/") ? `${connection.url}tool/${String(name)}` : `${connection.url}/tool/${String(name)}`
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const client = await createServerClient(
|
|
80
|
+
{ connection: toolConnection },
|
|
81
|
+
void 0,
|
|
82
|
+
extraHeaders
|
|
83
|
+
);
|
|
84
|
+
const { structuredContent, isError, content } = await client.callTool(
|
|
85
|
+
{
|
|
86
|
+
name: String(name),
|
|
87
|
+
arguments: args
|
|
88
|
+
},
|
|
89
|
+
void 0,
|
|
90
|
+
{
|
|
91
|
+
timeout: 3e6
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
if (isError) {
|
|
95
|
+
const maybeErrorMessage = content?.[0]?.text;
|
|
96
|
+
const error = typeof maybeErrorMessage === "string" ? safeParse(maybeErrorMessage) : null;
|
|
97
|
+
const throwableError = error?.code && typeof options?.getErrorByStatusCode === "function" ? options.getErrorByStatusCode(
|
|
98
|
+
error.code,
|
|
99
|
+
error.message,
|
|
100
|
+
error.traceId
|
|
101
|
+
) : null;
|
|
102
|
+
if (throwableError) {
|
|
103
|
+
throw throwableError;
|
|
104
|
+
}
|
|
105
|
+
throw new Error(
|
|
106
|
+
`Tool ${String(name)} returned an error: ${JSON.stringify(
|
|
107
|
+
structuredContent ?? content
|
|
108
|
+
)}`
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
return structuredContent;
|
|
112
|
+
}
|
|
113
|
+
const listToolsFn = async () => {
|
|
114
|
+
const client = await createServerClient({ connection });
|
|
115
|
+
const { tools } = await client.listTools();
|
|
116
|
+
return tools;
|
|
117
|
+
};
|
|
118
|
+
async function listToolsOnce() {
|
|
119
|
+
const conn = connection;
|
|
120
|
+
const key = JSON.stringify(conn);
|
|
121
|
+
try {
|
|
122
|
+
if (!toolsMap.has(key)) {
|
|
123
|
+
toolsMap.set(key, listToolsFn());
|
|
124
|
+
}
|
|
125
|
+
return await toolsMap.get(key);
|
|
126
|
+
} catch (error) {
|
|
127
|
+
console.error("Failed to list tools", error);
|
|
128
|
+
toolsMap.delete(key);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
callToolFn.asTool = async () => {
|
|
133
|
+
const tools = await listToolsOnce() ?? [];
|
|
134
|
+
const tool = tools.find((t) => t.name === name);
|
|
135
|
+
if (!tool) {
|
|
136
|
+
throw new Error(`Tool ${name} not found`);
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
...tool,
|
|
140
|
+
id: tool.name,
|
|
141
|
+
inputSchema: tool.inputSchema ? convertJsonSchemaToZod(tool.inputSchema) : void 0,
|
|
142
|
+
outputSchema: tool.outputSchema ? convertJsonSchemaToZod(tool.outputSchema) : void 0,
|
|
143
|
+
execute: (input) => {
|
|
144
|
+
return callToolFn(input.context);
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
return callToolFn;
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export { WELL_KNOWN_ORIGINS, createMCPClientProxy };
|
|
154
|
+
//# sourceMappingURL=chunk-G3NWZG2F.js.map
|
|
155
|
+
//# sourceMappingURL=chunk-G3NWZG2F.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/well-known.ts","../src/proxy.ts"],"names":[],"mappings":"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","file":"chunk-G3NWZG2F.js","sourcesContent":["export const Hosts = {\n API: \"api.decocms.com\",\n WEB_APP: \"admin.decocms.com\",\n APPS: \"deco.page\",\n LOCALHOST: \"localhost:3000\",\n API_LEGACY: \"api.deco.chat\",\n WEB_APP_LEGACY: \"deco.chat\",\n} as const;\n\nexport const WELL_KNOWN_API_HOSTNAMES = [\n Hosts.API,\n Hosts.API_LEGACY,\n Hosts.LOCALHOST.split(\":\")[0],\n] as const;\n\nexport const WELL_KNOWN_ORIGINS = [\n `http://${Hosts.LOCALHOST}`,\n `https://${Hosts.WEB_APP}`,\n `https://${Hosts.WEB_APP_LEGACY}`,\n] as const;\n","/* oxlint-disable no-explicit-any */\nimport type { ToolExecutionContext as _ToolExecutionContext } from \"@mastra/core\";\nimport { convertJsonSchemaToZod } from \"zod-from-json-schema\";\nimport { MCPConnection } from \"./connection.ts\";\nimport { createServerClient } from \"./mcp-client.ts\";\nimport type { CreateStubAPIOptions } from \"./mcp.ts\";\nimport { WELL_KNOWN_API_HOSTNAMES } from \"./well-known.ts\";\n\nconst getWorkspace = (workspace?: string) => {\n if (workspace && workspace.length > 0 && !workspace.includes(\"/\")) {\n return `/shared/${workspace}`;\n }\n return workspace ?? \"\";\n};\n\nconst safeParse = (content: string) => {\n try {\n return JSON.parse(content as string);\n } catch {\n return content;\n }\n};\n\nconst toolsMap = new Map<\n string,\n Promise<\n Array<{\n name: string;\n inputSchema: any;\n outputSchema?: any;\n description: string;\n }>\n >\n>();\n\n/**\n * Determines if a given URL supports tool names in the path.\n * Our APIs (api.decocms.com, api.deco.chat, localhost) support /tool/${toolName} routing.\n * Third-party APIs typically don't support this pattern.\n */\nfunction supportsToolNameInPath(url: string): boolean {\n try {\n // Our main APIs that support /tool/${toolName} routing\n return WELL_KNOWN_API_HOSTNAMES.includes(new URL(url).hostname);\n } catch {\n return false;\n }\n}\n\n/**\n * The base fetcher used to fetch the MCP from API.\n */\nexport function createMCPClientProxy<T extends Record<string, unknown>>(\n options?: CreateStubAPIOptions,\n): T {\n if (typeof options?.connection === \"function\") {\n // [DEPRECATED] Passing a function as 'connection' is deprecated and will be removed in a future release.\n // Please provide a connection object instead.\n throw new Error(\n \"Deprecation Notice: Passing a function as 'connection' is deprecated and will be removed in a future release. Please provide a connection object instead.\",\n );\n }\n\n const mcpPath = options?.mcpPath ?? \"/mcp\";\n\n const connection: MCPConnection = options?.connection || {\n type: \"HTTP\",\n token: options?.token,\n url: new URL(\n `${getWorkspace(options?.workspace)}${mcpPath}`,\n options?.decoCmsApiUrl ?? `https://api.decocms.com`,\n ).href,\n };\n\n return new Proxy<T>({} as T, {\n get(_, name) {\n if (name === \"toJSON\") {\n return null;\n }\n if (typeof name !== \"string\") {\n throw new Error(\"Name must be a string\");\n }\n async function callToolFn(args: unknown) {\n const debugId = options?.debugId?.();\n const extraHeaders = debugId\n ? { \"x-trace-debug-id\": debugId }\n : undefined;\n\n // Create a connection with the tool name in the URL path for better logging\n // Only modify connections that have a URL property (HTTP, SSE, Websocket)\n // Use automatic detection based on URL, with optional override\n let toolConnection = connection;\n const shouldAddToolName =\n options?.supportsToolName ??\n (\"url\" in connection &&\n typeof connection.url === \"string\" &&\n supportsToolNameInPath(connection.url));\n\n if (\n shouldAddToolName &&\n \"url\" in connection &&\n typeof connection.url === \"string\"\n ) {\n toolConnection = {\n ...connection,\n url: connection.url.endsWith(\"/\")\n ? `${connection.url}tool/${String(name)}`\n : `${connection.url}/tool/${String(name)}`,\n };\n }\n\n const client = await createServerClient(\n { connection: toolConnection },\n undefined,\n extraHeaders,\n );\n\n const { structuredContent, isError, content } = await client.callTool(\n {\n name: String(name),\n arguments: args as Record<string, unknown>,\n },\n undefined,\n {\n timeout: 3000000,\n },\n );\n\n if (isError) {\n // @ts-expect-error - content is not typed\n const maybeErrorMessage = content?.[0]?.text;\n const error =\n typeof maybeErrorMessage === \"string\"\n ? safeParse(maybeErrorMessage)\n : null;\n\n const throwableError =\n error?.code && typeof options?.getErrorByStatusCode === \"function\"\n ? options.getErrorByStatusCode(\n error.code,\n error.message,\n error.traceId,\n )\n : null;\n\n if (throwableError) {\n throw throwableError;\n }\n\n throw new Error(\n `Tool ${String(name)} returned an error: ${JSON.stringify(\n structuredContent ?? content,\n )}`,\n );\n }\n return structuredContent;\n }\n\n const listToolsFn = async () => {\n const client = await createServerClient({ connection });\n const { tools } = await client.listTools();\n\n return tools as {\n name: string;\n inputSchema: any;\n outputSchema?: any;\n description: string;\n }[];\n };\n\n async function listToolsOnce() {\n const conn = connection;\n const key = JSON.stringify(conn);\n\n try {\n if (!toolsMap.has(key)) {\n toolsMap.set(key, listToolsFn());\n }\n\n return await toolsMap.get(key)!;\n } catch (error) {\n console.error(\"Failed to list tools\", error);\n\n toolsMap.delete(key);\n return;\n }\n }\n callToolFn.asTool = async () => {\n const tools = (await listToolsOnce()) ?? [];\n const tool = tools.find((t) => t.name === name);\n if (!tool) {\n throw new Error(`Tool ${name} not found`);\n }\n\n return {\n ...tool,\n id: tool.name,\n inputSchema: tool.inputSchema\n ? convertJsonSchemaToZod(tool.inputSchema)\n : undefined,\n outputSchema: tool.outputSchema\n ? convertJsonSchemaToZod(tool.outputSchema)\n : undefined,\n execute: (input: any) => {\n return callToolFn(input.context);\n },\n };\n };\n return callToolFn;\n },\n });\n}\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
2
|
+
var __typeError = (msg) => {
|
|
3
|
+
throw TypeError(msg);
|
|
4
|
+
};
|
|
5
|
+
var __using = (stack, value, async) => {
|
|
6
|
+
if (value != null) {
|
|
7
|
+
if (typeof value !== "object" && typeof value !== "function") __typeError("Object expected");
|
|
8
|
+
var dispose, inner;
|
|
9
|
+
if (async) dispose = value[__knownSymbol("asyncDispose")];
|
|
10
|
+
if (dispose === void 0) {
|
|
11
|
+
dispose = value[__knownSymbol("dispose")];
|
|
12
|
+
if (async) inner = dispose;
|
|
13
|
+
}
|
|
14
|
+
if (typeof dispose !== "function") __typeError("Object not disposable");
|
|
15
|
+
if (inner) dispose = function() {
|
|
16
|
+
try {
|
|
17
|
+
inner.call(this);
|
|
18
|
+
} catch (e) {
|
|
19
|
+
return Promise.reject(e);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
stack.push([async, dispose, value]);
|
|
23
|
+
} else if (async) {
|
|
24
|
+
stack.push([async]);
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
};
|
|
28
|
+
var __callDispose = (stack, error, hasError) => {
|
|
29
|
+
var E = typeof SuppressedError === "function" ? SuppressedError : function(e, s, m, _) {
|
|
30
|
+
return _ = Error(m), _.name = "SuppressedError", _.error = e, _.suppressed = s, _;
|
|
31
|
+
};
|
|
32
|
+
var fail = (e) => error = hasError ? new E(e, error, "An error was suppressed during disposal") : (hasError = true, e);
|
|
33
|
+
var next = (it) => {
|
|
34
|
+
while (it = stack.pop()) {
|
|
35
|
+
try {
|
|
36
|
+
var result = it[1] && it[1].call(it[2]);
|
|
37
|
+
if (it[0]) return Promise.resolve(result).then(next, (e) => (fail(e), next()));
|
|
38
|
+
} catch (e) {
|
|
39
|
+
fail(e);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (hasError) throw error;
|
|
43
|
+
};
|
|
44
|
+
return next();
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export { __callDispose, __using };
|
|
48
|
+
//# sourceMappingURL=chunk-I7BWSAN6.js.map
|
|
49
|
+
//# sourceMappingURL=chunk-I7BWSAN6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-I7BWSAN6.js"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// src/bindings/deconfig/helpers.ts
|
|
2
|
+
var normalizeDirectory = (dir) => {
|
|
3
|
+
const normalized = dir.startsWith("/") ? dir : `/${dir}`;
|
|
4
|
+
return normalized.endsWith("/") ? normalized.slice(0, -1) : normalized;
|
|
5
|
+
};
|
|
6
|
+
var ResourcePath = {
|
|
7
|
+
build: (directory, resourceId) => {
|
|
8
|
+
const normalizedDir = normalizeDirectory(directory);
|
|
9
|
+
return `${normalizedDir}/${resourceId}.json`;
|
|
10
|
+
},
|
|
11
|
+
extract: (path) => {
|
|
12
|
+
const match = path.match(/^(.+)\/(.+)\.json$/);
|
|
13
|
+
if (!match) {
|
|
14
|
+
throw new Error("Invalid resource path");
|
|
15
|
+
}
|
|
16
|
+
return { directory: match[1], resourceId: match[2] };
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
var ResourceUri = {
|
|
20
|
+
build: (integrationId, resourceName, resourceId) => {
|
|
21
|
+
return `rsc://${integrationId}/${resourceName}/${resourceId}`;
|
|
22
|
+
},
|
|
23
|
+
unwind: (uri) => {
|
|
24
|
+
const match = uri.match(/^rsc:\/\/[^/]+\/([^/]+)\/(.+)$/);
|
|
25
|
+
if (!match) {
|
|
26
|
+
throw new Error("Invalid Resources 2.0 URI format");
|
|
27
|
+
}
|
|
28
|
+
return { resourceName: match[1], resourceId: match[2] };
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
function getMetadataValue(metadata, key) {
|
|
32
|
+
if (!metadata || typeof metadata !== "object") return void 0;
|
|
33
|
+
const metaObj = metadata;
|
|
34
|
+
if (key in metaObj) return metaObj[key];
|
|
35
|
+
const nested = metaObj.metadata;
|
|
36
|
+
if (nested && typeof nested === "object" && key in nested) {
|
|
37
|
+
return nested[key];
|
|
38
|
+
}
|
|
39
|
+
return void 0;
|
|
40
|
+
}
|
|
41
|
+
function getMetadataString(metadata, key) {
|
|
42
|
+
const value = getMetadataValue(metadata, key);
|
|
43
|
+
return typeof value === "string" ? value : void 0;
|
|
44
|
+
}
|
|
45
|
+
var toAsyncIterator = (emitter, eventType = "message") => {
|
|
46
|
+
const queue = [];
|
|
47
|
+
let done = false;
|
|
48
|
+
let waitPromise = null;
|
|
49
|
+
const triggerLoop = () => {
|
|
50
|
+
if (waitPromise) {
|
|
51
|
+
waitPromise();
|
|
52
|
+
waitPromise = null;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
const messageHandler = (data) => {
|
|
56
|
+
try {
|
|
57
|
+
queue.push(JSON.parse(data.data));
|
|
58
|
+
} catch {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
triggerLoop();
|
|
62
|
+
};
|
|
63
|
+
const errorHandler = () => {
|
|
64
|
+
done = true;
|
|
65
|
+
triggerLoop();
|
|
66
|
+
};
|
|
67
|
+
emitter.addEventListener(eventType, messageHandler);
|
|
68
|
+
emitter.addEventListener("error", errorHandler);
|
|
69
|
+
return {
|
|
70
|
+
async *[Symbol.asyncIterator]() {
|
|
71
|
+
try {
|
|
72
|
+
while (true) {
|
|
73
|
+
const value = queue.shift();
|
|
74
|
+
if (value) {
|
|
75
|
+
yield value;
|
|
76
|
+
} else {
|
|
77
|
+
if (done) return;
|
|
78
|
+
await new Promise((resolve) => waitPromise = resolve);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
} finally {
|
|
82
|
+
emitter.removeEventListener(eventType, messageHandler);
|
|
83
|
+
emitter.removeEventListener("error", errorHandler);
|
|
84
|
+
emitter.close();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export { ResourcePath, ResourceUri, getMetadataString, getMetadataValue, normalizeDirectory, toAsyncIterator };
|
|
91
|
+
//# sourceMappingURL=chunk-UHR3BLMF.js.map
|
|
92
|
+
//# sourceMappingURL=chunk-UHR3BLMF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/bindings/deconfig/helpers.ts"],"names":[],"mappings":";AAEO,IAAM,kBAAA,GAAqB,CAAC,GAAA,KAAgB;AAEjD,EAAA,MAAM,aAAa,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA,GAAI,GAAA,GAAM,IAAI,GAAG,CAAA,CAAA;AACtD,EAAA,OAAO,UAAA,CAAW,SAAS,GAAG,CAAA,GAAI,WAAW,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GAAI,UAAA;AAC9D;AAEO,IAAM,YAAA,GAAe;AAAA,EAC1B,KAAA,EAAO,CAAC,SAAA,EAAmB,UAAA,KAAuB;AAChD,IAAA,MAAM,aAAA,GAAgB,mBAAmB,SAAS,CAAA;AAClD,IAAA,OAAO,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,UAAU,CAAA,KAAA,CAAA;AAAA,EACvC,CAAA;AAAA,EACA,OAAA,EAAS,CAAC,IAAA,KAAiB;AACzB,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,oBAAoB,CAAA;AAC7C,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,IACzC;AACA,IAAA,OAAO,EAAE,WAAW,KAAA,CAAM,CAAC,GAAG,UAAA,EAAY,KAAA,CAAM,CAAC,CAAA,EAAE;AAAA,EACrD;AACF;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,KAAA,EAAO,CAAC,aAAA,EAAuB,YAAA,EAAsB,UAAA,KAAuB;AAC1E,IAAA,OAAO,CAAA,MAAA,EAAS,aAAa,CAAA,CAAA,EAAI,YAAY,IAAI,UAAU,CAAA,CAAA;AAAA,EAC7D,CAAA;AAAA,EACA,MAAA,EAAQ,CAAC,GAAA,KAAgB;AACvB,IAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,gCAAgC,CAAA;AACxD,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAAA,IACpD;AACA,IAAA,OAAO,EAAE,cAAc,KAAA,CAAM,CAAC,GAAG,UAAA,EAAY,KAAA,CAAM,CAAC,CAAA,EAAE;AAAA,EACxD;AACF;AAEO,SAAS,gBAAA,CAAiB,UAAmB,GAAA,EAAsB;AACxE,EAAA,IAAI,CAAC,QAAA,IAAY,OAAO,QAAA,KAAa,UAAU,OAAO,MAAA;AACtD,EAAA,MAAM,OAAA,GAAU,QAAA;AAChB,EAAA,IAAI,GAAA,IAAO,OAAA,EAAS,OAAO,OAAA,CAAQ,GAAG,CAAA;AACtC,EAAA,MAAM,SAAS,OAAA,CAAQ,QAAA;AACvB,EAAA,IAAI,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA,IAAY,OAAO,MAAA,EAAQ;AACzD,IAAA,OAAQ,OAAmC,GAAG,CAAA;AAAA,EAChD;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,iBAAA,CACd,UACA,GAAA,EACoB;AACpB,EAAA,MAAM,KAAA,GAAQ,gBAAA,CAAiB,QAAA,EAAU,GAAG,CAAA;AAC5C,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,MAAA;AAC7C;AAEO,IAAM,eAAA,GAAkB,CAC7B,OAAA,EACA,SAAA,GAAoB,SAAA,KACC;AACrB,EAAA,MAAM,QAAa,EAAC;AACpB,EAAA,IAAI,IAAA,GAAO,KAAA;AACX,EAAA,IAAI,WAAA,GAA2C,IAAA;AAE/C,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,WAAA,EAAY;AACZ,MAAA,WAAA,GAAc,IAAA;AAAA,IAChB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,IAAA,KAAuB;AAC7C,IAAA,IAAI;AACF,MAAA,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,IAClC,CAAA,CAAA,MAAQ;AAEN,MAAA;AAAA,IACF;AACA,IAAA,WAAA,EAAY;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,IAAA,GAAO,IAAA;AACP,IAAA,WAAA,EAAY;AAAA,EACd,CAAA;AAEA,EAAA,OAAA,CAAQ,gBAAA,CAAiB,WAAW,cAAc,CAAA;AAClD,EAAA,OAAA,CAAQ,gBAAA,CAAiB,SAAS,YAAY,CAAA;AAE9C,EAAA,OAAO;AAAA,IACL,QAAQ,MAAA,CAAO,aAAa,CAAA,GAAI;AAC9B,MAAA,IAAI;AACF,QAAA,OAAO,IAAA,EAAM;AACX,UAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,EAAM;AAC1B,UAAA,IAAI,KAAA,EAAO;AACT,YAAA,MAAM,KAAA;AAAA,UACR,CAAA,MAAO;AACL,YAAA,IAAI,IAAA,EAAM;AACV,YAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAa,cAAc,OAAQ,CAAA;AAAA,UACxD;AAAA,QACF;AAAA,MACF,CAAA,SAAE;AACA,QAAA,OAAA,CAAQ,mBAAA,CAAoB,WAAW,cAAc,CAAA;AACrD,QAAA,OAAA,CAAQ,mBAAA,CAAoB,SAAS,YAAY,CAAA;AACjD,QAAA,OAAA,CAAQ,KAAA,EAAM;AAAA,MAChB;AAAA,IACF;AAAA,GACF;AACF","file":"chunk-UHR3BLMF.js","sourcesContent":["// Helper functions for DeconfigResource\n\nexport const normalizeDirectory = (dir: string) => {\n // Ensure directory starts with / and doesn't end with /\n const normalized = dir.startsWith(\"/\") ? dir : `/${dir}`;\n return normalized.endsWith(\"/\") ? normalized.slice(0, -1) : normalized;\n};\n\nexport const ResourcePath = {\n build: (directory: string, resourceId: string) => {\n const normalizedDir = normalizeDirectory(directory);\n return `${normalizedDir}/${resourceId}.json`;\n },\n extract: (path: string) => {\n const match = path.match(/^(.+)\\/(.+)\\.json$/);\n if (!match) {\n throw new Error(\"Invalid resource path\");\n }\n return { directory: match[1], resourceId: match[2] };\n },\n};\n\nexport const ResourceUri = {\n build: (integrationId: string, resourceName: string, resourceId: string) => {\n return `rsc://${integrationId}/${resourceName}/${resourceId}`;\n },\n unwind: (uri: string) => {\n const match = uri.match(/^rsc:\\/\\/[^/]+\\/([^/]+)\\/(.+)$/);\n if (!match) {\n throw new Error(\"Invalid Resources 2.0 URI format\");\n }\n return { resourceName: match[1], resourceId: match[2] };\n },\n};\n\nexport function getMetadataValue(metadata: unknown, key: string): unknown {\n if (!metadata || typeof metadata !== \"object\") return undefined;\n const metaObj = metadata as Record<string, unknown>;\n if (key in metaObj) return metaObj[key];\n const nested = metaObj.metadata;\n if (nested && typeof nested === \"object\" && key in nested) {\n return (nested as Record<string, unknown>)[key];\n }\n return undefined;\n}\n\nexport function getMetadataString(\n metadata: unknown,\n key: string,\n): string | undefined {\n const value = getMetadataValue(metadata, key);\n return typeof value === \"string\" ? value : undefined;\n}\n\nexport const toAsyncIterator = <T>(\n emitter: EventSource,\n eventType: string = \"message\",\n): AsyncIterable<T> => {\n const queue: T[] = [];\n let done = false;\n let waitPromise: ((data?: T) => void) | null = null;\n\n const triggerLoop = () => {\n if (waitPromise) {\n waitPromise();\n waitPromise = null;\n }\n };\n\n const messageHandler = (data: MessageEvent) => {\n try {\n queue.push(JSON.parse(data.data));\n } catch {\n // Silently ignore malformed data or optionally log error\n return;\n }\n triggerLoop();\n };\n\n const errorHandler = () => {\n done = true;\n triggerLoop();\n };\n\n emitter.addEventListener(eventType, messageHandler);\n emitter.addEventListener(\"error\", errorHandler);\n\n return {\n async *[Symbol.asyncIterator]() {\n try {\n while (true) {\n const value = queue.shift();\n if (value) {\n yield value;\n } else {\n if (done) return;\n await new Promise((resolve) => (waitPromise = resolve));\n }\n }\n } finally {\n emitter.removeEventListener(eventType, messageHandler);\n emitter.removeEventListener(\"error\", errorHandler);\n emitter.close();\n }\n },\n };\n};\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { D1Store as D1Store$1 } from '@mastra/cloudflare-d1';
|
|
2
|
+
|
|
3
|
+
// src/d1-store.ts
|
|
4
|
+
var D1Store = class extends D1Store$1 {
|
|
5
|
+
constructor(config) {
|
|
6
|
+
super(config);
|
|
7
|
+
this.config = config;
|
|
8
|
+
}
|
|
9
|
+
async init() {
|
|
10
|
+
await super.init();
|
|
11
|
+
const indexQueries = [
|
|
12
|
+
{
|
|
13
|
+
sql: "CREATE INDEX IF NOT EXISTS idx_mastra_workflow_snapshot_created_at ON mastra_workflow_snapshot(createdAt)",
|
|
14
|
+
params: []
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
sql: "CREATE INDEX IF NOT EXISTS idx_mastra_messages_created_at ON mastra_messages(createdAt)",
|
|
18
|
+
params: []
|
|
19
|
+
}
|
|
20
|
+
];
|
|
21
|
+
for (const { sql, params } of indexQueries) {
|
|
22
|
+
await this.config.client.query({
|
|
23
|
+
sql,
|
|
24
|
+
params
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export { D1Store };
|
|
31
|
+
//# sourceMappingURL=chunk-ZPUT6RN6.js.map
|
|
32
|
+
//# sourceMappingURL=chunk-ZPUT6RN6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/d1-store.ts"],"names":["MastraD1Store"],"mappings":";;;AAKO,IAAM,OAAA,GAAN,cAAsBA,SAAA,CAAc;AAAA,EACzC,YAAoB,MAAA,EAA6B;AAC/C,IAAA,KAAA,CAAM,MAAM,CAAA;AADM,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAEpB;AAAA,EAEA,MAAe,IAAA,GAAO;AACpB,IAAA,MAAM,MAAM,IAAA,EAAK;AAGjB,IAAA,MAAM,YAAA,GAAe;AAAA,MACnB;AAAA,QACE,GAAA,EAAK,2GAAA;AAAA,QACL,QAAQ;AAAC,OACX;AAAA,MACA;AAAA,QACE,GAAA,EAAK,yFAAA;AAAA,QACL,QAAQ;AAAC;AACX,KACF;AAGA,IAAA,KAAA,MAAW,EAAE,GAAA,EAAK,MAAA,EAAO,IAAK,YAAA,EAAc;AAC1C,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM;AAAA,QAC7B,GAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH;AAAA,EACF;AACF","file":"chunk-ZPUT6RN6.js","sourcesContent":["import {\n D1ClientConfig as MastraD1StoreConfig,\n D1Store as MastraD1Store,\n} from \"@mastra/cloudflare-d1\";\n\nexport class D1Store extends MastraD1Store {\n constructor(private config: MastraD1StoreConfig) {\n super(config);\n }\n\n override async init() {\n await super.init();\n\n // Create indexes for better performance on frequently queried columns\n const indexQueries = [\n {\n sql: \"CREATE INDEX IF NOT EXISTS idx_mastra_workflow_snapshot_created_at ON mastra_workflow_snapshot(createdAt)\",\n params: [],\n },\n {\n sql: \"CREATE INDEX IF NOT EXISTS idx_mastra_messages_created_at ON mastra_messages(createdAt)\",\n params: [],\n },\n ];\n\n // Execute each index creation query\n for (const { sql, params } of indexQueries) {\n await this.config.client.query({\n sql,\n params,\n });\n }\n }\n}\n"]}
|