opencode-graphiti 0.2.1 → 0.2.2-canary.2a69f50.20260403031412
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/esm/_dnt.shims.d.ts +1 -5
- package/esm/_dnt.shims.d.ts.map +1 -1
- package/esm/_dnt.shims.js +1 -5
- package/esm/src/config.js +2 -2
- package/esm/src/services/connection-manager.d.ts.map +1 -1
- package/esm/src/services/connection-manager.js +47 -10
- package/esm/src/services/logger.js +2 -2
- package/esm/src/services/redis-events.js +1 -1
- package/esm/src/services/runtime-teardown.d.ts +5 -0
- package/esm/src/services/runtime-teardown.d.ts.map +1 -1
- package/esm/src/services/runtime-teardown.js +22 -1
- package/esm/src/services/session-corpus.d.ts.map +1 -1
- package/esm/src/services/session-corpus.js +10 -4
- package/esm/src/services/session-executor.d.ts.map +1 -1
- package/esm/src/services/session-executor.js +52 -18
- package/esm/src/services/session-mcp-runtime.d.ts.map +1 -1
- package/esm/src/services/session-mcp-runtime.js +2 -2
- package/package.json +3 -5
- package/script/_dnt.shims.d.ts +1 -5
- package/script/_dnt.shims.d.ts.map +1 -1
- package/script/_dnt.shims.js +2 -7
- package/script/src/config.js +2 -2
- package/script/src/services/connection-manager.d.ts.map +1 -1
- package/script/src/services/connection-manager.js +80 -10
- package/script/src/services/logger.js +5 -35
- package/script/src/services/redis-events.js +1 -1
- package/script/src/services/runtime-teardown.d.ts +5 -0
- package/script/src/services/runtime-teardown.d.ts.map +1 -1
- package/script/src/services/runtime-teardown.js +22 -1
- package/script/src/services/session-corpus.d.ts.map +1 -1
- package/script/src/services/session-corpus.js +10 -4
- package/script/src/services/session-executor.d.ts.map +1 -1
- package/script/src/services/session-executor.js +52 -51
- package/script/src/services/session-mcp-runtime.d.ts.map +1 -1
- package/script/src/services/session-mcp-runtime.js +2 -35
package/esm/_dnt.shims.d.ts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export { Deno } from "@deno/shim-deno";
|
|
3
|
-
export declare const dntGlobalThis: Omit<typeof globalThis, "Deno"> & {
|
|
4
|
-
Deno: typeof Deno;
|
|
5
|
-
};
|
|
1
|
+
export declare const dntGlobalThis: Omit<typeof globalThis, never>;
|
|
6
2
|
//# sourceMappingURL=_dnt.shims.d.ts.map
|
package/esm/_dnt.shims.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_dnt.shims.d.ts","sourceRoot":"","sources":["../src/_dnt.shims.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_dnt.shims.d.ts","sourceRoot":"","sources":["../src/_dnt.shims.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,gCAA2C,CAAC"}
|
package/esm/_dnt.shims.js
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export { Deno } from "@deno/shim-deno";
|
|
3
|
-
const dntGlobals = {
|
|
4
|
-
Deno,
|
|
5
|
-
};
|
|
1
|
+
const dntGlobals = {};
|
|
6
2
|
export const dntGlobalThis = createMergeProxy(globalThis, dntGlobals);
|
|
7
3
|
function createMergeProxy(baseObj, extObj) {
|
|
8
4
|
return new Proxy(baseObj, {
|
package/esm/src/config.js
CHANGED
|
@@ -42,7 +42,7 @@ export class ConfigLoadError extends Error {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
const
|
|
45
|
+
const nodeRequire = createRequire(globalThis[Symbol.for("import-meta-ponyfill-esmodule")](import.meta).url);
|
|
46
46
|
const isRecord = (value) => !!value && typeof value === "object" && !Array.isArray(value);
|
|
47
47
|
const readString = (value, key) => typeof value[key] === "string" ? value[key] : undefined;
|
|
48
48
|
const readTrimmedString = (value, key) => {
|
|
@@ -226,7 +226,7 @@ const resolveConfig = (value) => {
|
|
|
226
226
|
};
|
|
227
227
|
};
|
|
228
228
|
const createCosmiconfigAdapter = () => {
|
|
229
|
-
const { cosmiconfigSync } =
|
|
229
|
+
const { cosmiconfigSync } = nodeRequire("cosmiconfig");
|
|
230
230
|
const explorer = cosmiconfigSync("graphiti", { searchStrategy: "global" });
|
|
231
231
|
return {
|
|
232
232
|
search(from) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../src/src/services/connection-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../src/src/services/connection-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { pathToFileURL } from "node:url";
|
|
3
3
|
import manifest from "../../deno.js";
|
|
4
4
|
import { isAbortError } from "../utils.js";
|
|
5
5
|
import { redactEndpointUserInfo } from "./endpoint-redaction.js";
|
|
6
6
|
import { logger } from "./logger.js";
|
|
7
|
+
const nodeRequire = createRequire(globalThis[Symbol.for("import-meta-ponyfill-esmodule")](import.meta).url);
|
|
8
|
+
let mcpRuntimeModulesPromise = null;
|
|
9
|
+
const importResolvedModule = async (specifier) => {
|
|
10
|
+
const resolvedPath = nodeRequire.resolve(specifier);
|
|
11
|
+
return await import(pathToFileURL(resolvedPath).href);
|
|
12
|
+
};
|
|
13
|
+
const loadMcpRuntimeModules = async () => {
|
|
14
|
+
if (mcpRuntimeModulesPromise) {
|
|
15
|
+
return await mcpRuntimeModulesPromise;
|
|
16
|
+
}
|
|
17
|
+
mcpRuntimeModulesPromise = Promise.all([
|
|
18
|
+
importResolvedModule("@modelcontextprotocol/sdk/client/index.js"),
|
|
19
|
+
importResolvedModule("@modelcontextprotocol/sdk/client/streamableHttp.js"),
|
|
20
|
+
]).then(([clientModule, transportModule]) => ({
|
|
21
|
+
Client: clientModule.Client,
|
|
22
|
+
StreamableHTTPClientTransport: transportModule.StreamableHTTPClientTransport,
|
|
23
|
+
}));
|
|
24
|
+
return await mcpRuntimeModulesPromise;
|
|
25
|
+
};
|
|
7
26
|
export class GraphitiOfflineError extends Error {
|
|
8
27
|
constructor(state, message) {
|
|
9
28
|
super(message ??
|
|
@@ -103,15 +122,33 @@ const validateEndpoint = (endpoint) => {
|
|
|
103
122
|
return normalized;
|
|
104
123
|
};
|
|
105
124
|
function createMcpConnection(endpoint) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
125
|
+
let runtimePromise = null;
|
|
126
|
+
const getRuntime = async () => {
|
|
127
|
+
if (runtimePromise) {
|
|
128
|
+
return await runtimePromise;
|
|
129
|
+
}
|
|
130
|
+
runtimePromise = loadMcpRuntimeModules().then(({ Client, StreamableHTTPClientTransport }) => ({
|
|
131
|
+
client: new Client({
|
|
132
|
+
name: manifest.name,
|
|
133
|
+
version: manifest.version,
|
|
134
|
+
}),
|
|
135
|
+
transport: new StreamableHTTPClientTransport(new URL(endpoint)),
|
|
136
|
+
}));
|
|
137
|
+
return await runtimePromise;
|
|
138
|
+
};
|
|
111
139
|
return {
|
|
112
|
-
connect: () =>
|
|
113
|
-
|
|
114
|
-
|
|
140
|
+
connect: async () => {
|
|
141
|
+
const { client, transport } = await getRuntime();
|
|
142
|
+
await client.connect(transport);
|
|
143
|
+
},
|
|
144
|
+
close: async () => {
|
|
145
|
+
const { client } = await getRuntime();
|
|
146
|
+
await client.close();
|
|
147
|
+
},
|
|
148
|
+
callTool: async (request, options) => {
|
|
149
|
+
const { client } = await getRuntime();
|
|
150
|
+
return await client.callTool(request, undefined, options);
|
|
151
|
+
},
|
|
115
152
|
};
|
|
116
153
|
}
|
|
117
154
|
function getErrorMessage(err) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import process from "node:process";
|
|
2
2
|
import { logStructuredWarning, shouldSuppressConsoleWarningsDuringTests, } from "./opencode-warning.js";
|
|
3
3
|
const console = globalThis.console;
|
|
4
4
|
const PREFIX = "[graphiti]";
|
|
@@ -56,7 +56,7 @@ const isDebugEnabled = () => {
|
|
|
56
56
|
if (debugOverride !== undefined)
|
|
57
57
|
return debugOverride;
|
|
58
58
|
try {
|
|
59
|
-
return !!
|
|
59
|
+
return !!process.env.GRAPHITI_DEBUG;
|
|
60
60
|
}
|
|
61
61
|
catch {
|
|
62
62
|
return false;
|
|
@@ -482,7 +482,7 @@ export class RedisEventsService {
|
|
|
482
482
|
await this.redis.deleteKey(drainClaimCheckpointKey(groupId, claimToken));
|
|
483
483
|
await this.redis.deleteKeyIfValue(drainClaimActiveKey(groupId), claimToken);
|
|
484
484
|
await this.redis.deleteKeyIfValue(drainClaimLockKey(groupId), claimToken);
|
|
485
|
-
await this.redis.setString(drainCursorKey(groupId), entries.
|
|
485
|
+
await this.redis.setString(drainCursorKey(groupId), entries[entries.length - 1]?.event.id ?? "", DRAIN_TTL_SECONDS);
|
|
486
486
|
}
|
|
487
487
|
async moveBatchToDeadLetter(groupId, entries) {
|
|
488
488
|
for (const entry of entries) {
|
|
@@ -17,6 +17,11 @@ type ShutdownRegistrationAdapter = {
|
|
|
17
17
|
removeSignalListener?: (signal: "SIGINT" | "SIGTERM", handler: () => void) => void;
|
|
18
18
|
exit?: (code?: number) => never;
|
|
19
19
|
};
|
|
20
|
+
process?: {
|
|
21
|
+
on?: (event: string, handler: () => void) => void;
|
|
22
|
+
off?: (event: string, handler: () => void) => void;
|
|
23
|
+
exitCode?: number;
|
|
24
|
+
};
|
|
20
25
|
};
|
|
21
26
|
export declare function registerRuntimeTeardown(tasks: RuntimeTeardownTask[], runtime?: ShutdownRegistrationAdapter): RuntimeTeardownRegistration;
|
|
22
27
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-teardown.d.ts","sourceRoot":"","sources":["../../../src/src/services/runtime-teardown.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,OAAO,IAAI,IAAI,CAAC;CACjB;AAMD,KAAK,2BAA2B,GAAG;IACjC,gBAAgB,CAAC,EAAE,CACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,EACjC,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KACtD,IAAI,CAAC;IACV,mBAAmB,CAAC,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,EACjC,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,KACrC,IAAI,CAAC;IACV,IAAI,CAAC,EAAE;QACL,iBAAiB,CAAC,EAAE,CAClB,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,IAAI,KAChB,IAAI,CAAC;QACV,oBAAoB,CAAC,EAAE,CACrB,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,IAAI,KAChB,IAAI,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;KACjC,CAAC;CACH,CAAC;AAwBF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,GAAE,
|
|
1
|
+
{"version":3,"file":"runtime-teardown.d.ts","sourceRoot":"","sources":["../../../src/src/services/runtime-teardown.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,OAAO,IAAI,IAAI,CAAC;CACjB;AAMD,KAAK,2BAA2B,GAAG;IACjC,gBAAgB,CAAC,EAAE,CACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,EACjC,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KACtD,IAAI,CAAC;IACV,mBAAmB,CAAC,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,EACjC,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,KACrC,IAAI,CAAC;IACV,IAAI,CAAC,EAAE;QACL,iBAAiB,CAAC,EAAE,CAClB,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,IAAI,KAChB,IAAI,CAAC;QACV,oBAAoB,CAAC,EAAE,CACrB,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,IAAI,KAChB,IAAI,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;KACjC,CAAC;IACF,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;QAClD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;QACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC;AAwBF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,GAAE,2BAC6C,GACrD,2BAA2B,CAqK7B"}
|
|
@@ -24,6 +24,7 @@ export function registerRuntimeTeardown(tasks, runtime = dntShim.dntGlobalThis)
|
|
|
24
24
|
let gracefulShutdownStarted = false;
|
|
25
25
|
const eventListeners = [];
|
|
26
26
|
const signalListeners = [];
|
|
27
|
+
const processEventListeners = [];
|
|
27
28
|
const disposeEventListeners = () => {
|
|
28
29
|
if (eventListenersDisposed)
|
|
29
30
|
return;
|
|
@@ -38,6 +39,10 @@ export function registerRuntimeTeardown(tasks, runtime = dntShim.dntGlobalThis)
|
|
|
38
39
|
signalListenersDisposed = true;
|
|
39
40
|
for (const { signal, handler } of signalListeners) {
|
|
40
41
|
runtime.Deno?.removeSignalListener?.(signal, handler);
|
|
42
|
+
runtime.process?.off?.(signal, handler);
|
|
43
|
+
}
|
|
44
|
+
for (const { event, handler } of processEventListeners) {
|
|
45
|
+
runtime.process?.off?.(event, handler);
|
|
41
46
|
}
|
|
42
47
|
};
|
|
43
48
|
const releaseRegistration = () => {
|
|
@@ -62,7 +67,13 @@ export function registerRuntimeTeardown(tasks, runtime = dntShim.dntGlobalThis)
|
|
|
62
67
|
return;
|
|
63
68
|
exitRequested = true;
|
|
64
69
|
dispose();
|
|
65
|
-
|
|
70
|
+
const exitCode = SHUTDOWN_EXIT_CODE[signal];
|
|
71
|
+
if (runtime.Deno?.exit) {
|
|
72
|
+
runtime.Deno.exit(exitCode);
|
|
73
|
+
}
|
|
74
|
+
if (runtime.process) {
|
|
75
|
+
runtime.process.exitCode = exitCode;
|
|
76
|
+
}
|
|
66
77
|
};
|
|
67
78
|
const run = () => {
|
|
68
79
|
if (teardownPromise)
|
|
@@ -128,8 +139,18 @@ export function registerRuntimeTeardown(tasks, runtime = dntShim.dntGlobalThis)
|
|
|
128
139
|
beginGracefulShutdown({ kind: "signal", signal });
|
|
129
140
|
};
|
|
130
141
|
runtime.Deno?.addSignalListener?.(signal, handler);
|
|
142
|
+
runtime.process?.on?.(signal, handler);
|
|
131
143
|
signalListeners.push({ signal, handler });
|
|
132
144
|
}
|
|
145
|
+
const beforeExitHandler = () => {
|
|
146
|
+
beginGracefulShutdown({ kind: "event", type: "beforeunload" });
|
|
147
|
+
};
|
|
148
|
+
const exitHandler = () => {
|
|
149
|
+
beginGracefulShutdown({ kind: "event", type: "unload" });
|
|
150
|
+
};
|
|
151
|
+
runtime.process?.on?.("beforeExit", beforeExitHandler);
|
|
152
|
+
runtime.process?.on?.("exit", exitHandler);
|
|
153
|
+
processEventListeners.push({ event: "beforeExit", handler: beforeExitHandler }, { event: "exit", handler: exitHandler });
|
|
133
154
|
const registrations = activeRegistrations.get(runtimeKey) ?? new Set();
|
|
134
155
|
registrations.add(dispose);
|
|
135
156
|
activeRegistrations.set(runtimeKey, registrations);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-corpus.d.ts","sourceRoot":"","sources":["../../../src/src/services/session-corpus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAevE,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAupBF,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAC3C,OAAO,0BAA0B,CAClC,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,SAAS,oBAAoB;
|
|
1
|
+
{"version":3,"file":"session-corpus.d.ts","sourceRoot":"","sources":["../../../src/src/services/session-corpus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAevE,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAupBF,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAC3C,OAAO,0BAA0B,CAClC,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,SAAS,oBAAoB;iBAy1BjD,UAAU;mBA9oBlB,MAAM;oBACL,MAAM;oBACN,MAAM,EAAE;mBACT,OAAO;qBACL,MAAM;;;yBAiqBQ,kBAAkB;;;;;;;;;;;;;;;;;yBAmDlB,kBAAkB;;;;;;kBAsDzB,WAAW,GAAG,OAAO,CAAC;QACxC,MAAM,EAAE,IAAI,CAAC;QACb,OAAO,EAAE,YAAY,EAAE,CAAC;QACxB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;4BAyR4B,MAAM;;;;;;;;+BAanB,MAAM,UACb,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;mDApyBX,MAAM,uBACN,MAAM,KAC1B,OAAO,CAAC,IAAI,CAAC;mBATI,OAAO,CAAC,IAAI,CAAC;CAmzBlC,CAAC"}
|
|
@@ -58,7 +58,7 @@ const stemToken = (token) => {
|
|
|
58
58
|
};
|
|
59
59
|
const containsVowel = (value) => [...value].some((_char, index) => !isConsonant(value, index));
|
|
60
60
|
const endsWithDoubleConsonant = (value) => value.length >= 2 &&
|
|
61
|
-
value.
|
|
61
|
+
value[value.length - 1] === value[value.length - 2] &&
|
|
62
62
|
isConsonant(value, value.length - 1);
|
|
63
63
|
const cvc = (value) => {
|
|
64
64
|
if (value.length < 3)
|
|
@@ -564,7 +564,9 @@ export const createSessionCorpusService = (options) => {
|
|
|
564
564
|
const sourcePrefix = `${sessionPrefix(sourceRootSessionId)}:corpus:`;
|
|
565
565
|
if (!corpusRef.startsWith(sourcePrefix))
|
|
566
566
|
return corpusRef;
|
|
567
|
-
const
|
|
567
|
+
const sourceCorpusParts = corpusRef.split(":");
|
|
568
|
+
const sourceCorpusId = sourceCorpusParts[sourceCorpusParts.length - 2] ??
|
|
569
|
+
"";
|
|
568
570
|
const targetCorpusId = corpusIdMap.get(sourceCorpusId);
|
|
569
571
|
return targetCorpusId
|
|
570
572
|
? corpusRefFor(targetRootSessionId, targetCorpusId)
|
|
@@ -1080,7 +1082,8 @@ export const createSessionCorpusService = (options) => {
|
|
|
1080
1082
|
}
|
|
1081
1083
|
const result = await writeCorpus(input, "index");
|
|
1082
1084
|
if (input.source && input.label) {
|
|
1083
|
-
const
|
|
1085
|
+
const corpusRefParts = result.corpusRef.split(":");
|
|
1086
|
+
const corpusId = corpusRefParts[corpusRefParts.length - 2] ?? "";
|
|
1084
1087
|
await options.redis.setString(identityKey(input.rootSessionId, input.source, input.label), corpusId, options.ttlSeconds);
|
|
1085
1088
|
}
|
|
1086
1089
|
return { status: "ok", ...result };
|
|
@@ -1147,7 +1150,10 @@ export const createSessionCorpusService = (options) => {
|
|
|
1147
1150
|
artifact_count: 1,
|
|
1148
1151
|
bytes_saved_estimate: encoder.encode(input.body).byteLength,
|
|
1149
1152
|
});
|
|
1150
|
-
await refreshCorpusFamily(input.rootSessionId,
|
|
1153
|
+
await refreshCorpusFamily(input.rootSessionId, (() => {
|
|
1154
|
+
const corpusRefParts = corpus.corpusRef.split(":");
|
|
1155
|
+
return corpusRefParts[corpusRefParts.length - 2] ?? "";
|
|
1156
|
+
})());
|
|
1151
1157
|
return {
|
|
1152
1158
|
status: "ok",
|
|
1153
1159
|
artifactRef,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-executor.d.ts","sourceRoot":"","sources":["../../../src/src/services/session-executor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-executor.d.ts","sourceRoot":"","sources":["../../../src/src/services/session-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import * as dntShim from "../../_dnt.shims.js";
|
|
2
1
|
import path from "node:path";
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { readFile as readFileNode } from "node:fs/promises";
|
|
4
|
+
import process from "node:process";
|
|
3
5
|
import { createAbortError, isAbortError } from "../utils.js";
|
|
4
6
|
export const SESSION_EXECUTOR_RESPONSE_BUDGET_BYTES = 8 * 1024;
|
|
5
7
|
export const SESSION_EXECUTOR_DEFAULT_COMMAND_TIMEOUT_SECONDS = 30;
|
|
@@ -11,30 +13,62 @@ const textDecoder = new TextDecoder();
|
|
|
11
13
|
const byteLength = (value) => textEncoder.encode(value).byteLength;
|
|
12
14
|
const serialize = (value) => JSON.stringify(value);
|
|
13
15
|
const clampTimeoutSeconds = (timeoutSeconds, defaults) => Math.min(timeoutSeconds ?? defaults.defaultCommandTimeoutSeconds, defaults.maxCommandTimeoutSeconds);
|
|
16
|
+
const concatChunks = (chunks) => {
|
|
17
|
+
const totalBytes = chunks.reduce((sum, chunk) => sum + chunk.byteLength, 0);
|
|
18
|
+
const combined = new Uint8Array(totalBytes);
|
|
19
|
+
let offset = 0;
|
|
20
|
+
for (const chunk of chunks) {
|
|
21
|
+
combined.set(chunk, offset);
|
|
22
|
+
offset += chunk.byteLength;
|
|
23
|
+
}
|
|
24
|
+
return combined;
|
|
25
|
+
};
|
|
14
26
|
const defaultRunCommand = async ({ command, cwd, signal }) => {
|
|
15
|
-
const shell =
|
|
27
|
+
const shell = process.platform === "win32"
|
|
16
28
|
? { executable: "cmd", args: ["/d", "/s", "/c", command] }
|
|
17
29
|
: { executable: "/bin/sh", args: ["-lc", command] };
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
return await new Promise((resolve, reject) => {
|
|
31
|
+
const stdoutChunks = [];
|
|
32
|
+
const stderrChunks = [];
|
|
33
|
+
let settled = false;
|
|
34
|
+
const child = spawn(shell.executable, shell.args, {
|
|
35
|
+
cwd,
|
|
36
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
37
|
+
signal,
|
|
38
|
+
});
|
|
39
|
+
const rejectOnce = (error) => {
|
|
40
|
+
if (settled)
|
|
41
|
+
return;
|
|
42
|
+
settled = true;
|
|
43
|
+
reject(error);
|
|
44
|
+
};
|
|
45
|
+
const resolveOnce = (value) => {
|
|
46
|
+
if (settled)
|
|
47
|
+
return;
|
|
48
|
+
settled = true;
|
|
49
|
+
resolve(value);
|
|
50
|
+
};
|
|
51
|
+
child.stdout.on("data", (chunk) => {
|
|
52
|
+
stdoutChunks.push(typeof chunk === "string" ? textEncoder.encode(chunk) : chunk);
|
|
53
|
+
});
|
|
54
|
+
child.stderr.on("data", (chunk) => {
|
|
55
|
+
stderrChunks.push(typeof chunk === "string" ? textEncoder.encode(chunk) : chunk);
|
|
56
|
+
});
|
|
57
|
+
child.on("error", rejectOnce);
|
|
58
|
+
child.on("close", (code) => {
|
|
59
|
+
resolveOnce({
|
|
60
|
+
exitCode: code ?? (signal.aborted ? -1 : 1),
|
|
61
|
+
stdout: textDecoder.decode(concatChunks(stdoutChunks)),
|
|
62
|
+
stderr: textDecoder.decode(concatChunks(stderrChunks)),
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
});
|
|
32
66
|
};
|
|
33
|
-
const defaultReadFile = (filePath) =>
|
|
67
|
+
const defaultReadFile = (filePath) => readFileNode(filePath, "utf8");
|
|
34
68
|
const defaultStoreArtifact = ({ body }) => Promise.resolve({
|
|
35
69
|
artifactRef: `inline://payload/${encodeURIComponent(body)}`,
|
|
36
70
|
});
|
|
37
|
-
const resolveCwd = (context) => context.worktree ?? context.directory ??
|
|
71
|
+
const resolveCwd = (context) => context.worktree ?? context.directory ?? process.cwd();
|
|
38
72
|
const isWithinRoot = (rootPath, targetPath) => {
|
|
39
73
|
const relative = path.relative(rootPath, targetPath);
|
|
40
74
|
return relative === "" ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-mcp-runtime.d.ts","sourceRoot":"","sources":["../../../src/src/services/session-mcp-runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-mcp-runtime.d.ts","sourceRoot":"","sources":["../../../src/src/services/session-mcp-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EACL,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,qBAAqB,EAIrB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,qBAAqB,EAE1B,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAIjE,eAAO,MAAM,iCAAiC,QAAW,CAAC;AA8D1D,KAAK,iBAAiB,CAAC,SAAS,SAAS,kBAAkB,IAAI,CAC7D,OAAO,EAAE,oBAAoB,CAAC,SAAS,CAAC,EACxC,OAAO,EAAE,WAAW,KACjB,OAAO,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;AAE/C,KAAK,oBAAoB,GAAG;KACzB,CAAC,IAAI,kBAAkB,GAAG,iBAAiB,CAAC,CAAC,CAAC;CAChD,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0BAA0B,CAAC,EAAE,OAAO,0BAA0B,CAAC;IAC/D,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IACrD,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IACnD,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9D,CAAC;AAkBF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;IAClD,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,uBAAuB,EAAE,CACvB,oBAAoB,EAAE,2BAA2B,GAAG,SAAS,KAC1D,IAAI,CAAC;IACV,uBAAuB,EAAE,CACvB,mBAAmB,EAAE,MAAM,EAC3B,mBAAmB,EAAE,MAAM,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC;AA0MF,eAAO,MAAM,uBAAuB,GAClC,UAAS,wBAA6B,KACrC,iBA6mBF,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as dntShim from "../../_dnt.shims.js";
|
|
2
1
|
import { tool, } from "@opencode-ai/plugin";
|
|
3
2
|
import { createSessionCorpusService, } from "./session-corpus.js";
|
|
4
3
|
import { createSessionExecutor, SESSION_EXECUTOR_DEFAULT_COMMAND_TIMEOUT_SECONDS, SESSION_EXECUTOR_MAX_COMMAND_TIMEOUT_SECONDS, SESSION_EXECUTOR_MAX_NORMALIZED_INDEXED_BODY_BYTES, } from "./session-executor.js";
|
|
5
4
|
import { SESSION_MCP_TOOL_NAMES, sessionMcpRequestSchemas, sessionMcpResponseSchemas, } from "./session-mcp-types.js";
|
|
5
|
+
import { readFile as readFileNode } from "node:fs/promises";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
export const SESSION_MCP_RESPONSE_BUDGET_BYTES = 8 * 1024;
|
|
8
8
|
const pluginSchema = tool.schema;
|
|
@@ -122,7 +122,7 @@ const extractInlineArtifactPayload = (artifactRef) => {
|
|
|
122
122
|
}
|
|
123
123
|
};
|
|
124
124
|
const byteLength = (value) => textEncoder.encode(value).byteLength;
|
|
125
|
-
const readTextFile = (filePath) =>
|
|
125
|
+
const readTextFile = (filePath) => readFileNode(filePath, "utf8");
|
|
126
126
|
const createBoundedSessionIndexError = (code, message) => Object.assign(new Error(message), { code, bounded: true });
|
|
127
127
|
const isWithinBudget = (value) => byteLength(value) <= SESSION_MCP_RESPONSE_BUDGET_BYTES;
|
|
128
128
|
const resolveSessionIndexPath = (requestPath, context) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-graphiti",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2-canary.2a69f50.20260403031412",
|
|
4
4
|
"description": "OpenCode plugin for persistent memory via Graphiti knowledge graph",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"opencode",
|
|
@@ -45,16 +45,14 @@
|
|
|
45
45
|
]
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@modelcontextprotocol/sdk": "^1.25.2",
|
|
49
48
|
"@opencode-ai/plugin": "1.2.26",
|
|
50
49
|
"@opencode-ai/sdk": "1.2.26",
|
|
51
|
-
"cosmiconfig": "9.0.0",
|
|
52
50
|
"ioredis": "^5.7.0",
|
|
53
51
|
"zod": "4.3.6",
|
|
54
|
-
"
|
|
52
|
+
"cosmiconfig": "^9.0.0"
|
|
55
53
|
},
|
|
56
54
|
"devDependencies": {
|
|
57
|
-
"@types/node": "^20.
|
|
55
|
+
"@types/node": "^20.0.0"
|
|
58
56
|
},
|
|
59
57
|
"_generatedBy": "dnt@dev"
|
|
60
58
|
}
|
package/script/_dnt.shims.d.ts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export { Deno } from "@deno/shim-deno";
|
|
3
|
-
export declare const dntGlobalThis: Omit<typeof globalThis, "Deno"> & {
|
|
4
|
-
Deno: typeof Deno;
|
|
5
|
-
};
|
|
1
|
+
export declare const dntGlobalThis: Omit<typeof globalThis, never>;
|
|
6
2
|
//# sourceMappingURL=_dnt.shims.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_dnt.shims.d.ts","sourceRoot":"","sources":["../src/_dnt.shims.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_dnt.shims.d.ts","sourceRoot":"","sources":["../src/_dnt.shims.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,gCAA2C,CAAC"}
|
package/script/_dnt.shims.js
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.dntGlobalThis =
|
|
4
|
-
const
|
|
5
|
-
var shim_deno_2 = require("@deno/shim-deno");
|
|
6
|
-
Object.defineProperty(exports, "Deno", { enumerable: true, get: function () { return shim_deno_2.Deno; } });
|
|
7
|
-
const dntGlobals = {
|
|
8
|
-
Deno: shim_deno_1.Deno,
|
|
9
|
-
};
|
|
3
|
+
exports.dntGlobalThis = void 0;
|
|
4
|
+
const dntGlobals = {};
|
|
10
5
|
exports.dntGlobalThis = createMergeProxy(globalThis, dntGlobals);
|
|
11
6
|
function createMergeProxy(baseObj, extObj) {
|
|
12
7
|
return new Proxy(baseObj, {
|
package/script/src/config.js
CHANGED
|
@@ -50,7 +50,7 @@ class ConfigLoadError extends Error {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
exports.ConfigLoadError = ConfigLoadError;
|
|
53
|
-
const
|
|
53
|
+
const nodeRequire = (0, node_module_1.createRequire)(globalThis[Symbol.for("import-meta-ponyfill-commonjs")](require, module).url);
|
|
54
54
|
const isRecord = (value) => !!value && typeof value === "object" && !Array.isArray(value);
|
|
55
55
|
const readString = (value, key) => typeof value[key] === "string" ? value[key] : undefined;
|
|
56
56
|
const readTrimmedString = (value, key) => {
|
|
@@ -234,7 +234,7 @@ const resolveConfig = (value) => {
|
|
|
234
234
|
};
|
|
235
235
|
};
|
|
236
236
|
const createCosmiconfigAdapter = () => {
|
|
237
|
-
const { cosmiconfigSync } =
|
|
237
|
+
const { cosmiconfigSync } = nodeRequire("cosmiconfig");
|
|
238
238
|
const explorer = cosmiconfigSync("graphiti", { searchStrategy: "global" });
|
|
239
239
|
return {
|
|
240
240
|
search(from) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../src/src/services/connection-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../src/src/services/connection-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
@@ -6,12 +39,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
39
|
exports.GraphitiConnectionManager = exports.GraphitiSessionExpiredError = exports.GraphitiTransportError = exports.GraphitiRequestTimeoutError = exports.GraphitiQueueTimeoutError = exports.GraphitiOfflineError = void 0;
|
|
7
40
|
exports.isGraphitiOfflineError = isGraphitiOfflineError;
|
|
8
41
|
exports.isGraphitiTimeoutError = isGraphitiTimeoutError;
|
|
9
|
-
const
|
|
10
|
-
const
|
|
42
|
+
const node_module_1 = require("node:module");
|
|
43
|
+
const node_url_1 = require("node:url");
|
|
11
44
|
const deno_js_1 = __importDefault(require("../../deno.js"));
|
|
12
45
|
const utils_js_1 = require("../utils.js");
|
|
13
46
|
const endpoint_redaction_js_1 = require("./endpoint-redaction.js");
|
|
14
47
|
const logger_js_1 = require("./logger.js");
|
|
48
|
+
const nodeRequire = (0, node_module_1.createRequire)(globalThis[Symbol.for("import-meta-ponyfill-commonjs")](require, module).url);
|
|
49
|
+
let mcpRuntimeModulesPromise = null;
|
|
50
|
+
const importResolvedModule = async (specifier) => {
|
|
51
|
+
const resolvedPath = nodeRequire.resolve(specifier);
|
|
52
|
+
return await Promise.resolve(`${(0, node_url_1.pathToFileURL)(resolvedPath).href}`).then(s => __importStar(require(s)));
|
|
53
|
+
};
|
|
54
|
+
const loadMcpRuntimeModules = async () => {
|
|
55
|
+
if (mcpRuntimeModulesPromise) {
|
|
56
|
+
return await mcpRuntimeModulesPromise;
|
|
57
|
+
}
|
|
58
|
+
mcpRuntimeModulesPromise = Promise.all([
|
|
59
|
+
importResolvedModule("@modelcontextprotocol/sdk/client/index.js"),
|
|
60
|
+
importResolvedModule("@modelcontextprotocol/sdk/client/streamableHttp.js"),
|
|
61
|
+
]).then(([clientModule, transportModule]) => ({
|
|
62
|
+
Client: clientModule.Client,
|
|
63
|
+
StreamableHTTPClientTransport: transportModule.StreamableHTTPClientTransport,
|
|
64
|
+
}));
|
|
65
|
+
return await mcpRuntimeModulesPromise;
|
|
66
|
+
};
|
|
15
67
|
class GraphitiOfflineError extends Error {
|
|
16
68
|
constructor(state, message) {
|
|
17
69
|
super(message ??
|
|
@@ -116,15 +168,33 @@ const validateEndpoint = (endpoint) => {
|
|
|
116
168
|
return normalized;
|
|
117
169
|
};
|
|
118
170
|
function createMcpConnection(endpoint) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
171
|
+
let runtimePromise = null;
|
|
172
|
+
const getRuntime = async () => {
|
|
173
|
+
if (runtimePromise) {
|
|
174
|
+
return await runtimePromise;
|
|
175
|
+
}
|
|
176
|
+
runtimePromise = loadMcpRuntimeModules().then(({ Client, StreamableHTTPClientTransport }) => ({
|
|
177
|
+
client: new Client({
|
|
178
|
+
name: deno_js_1.default.name,
|
|
179
|
+
version: deno_js_1.default.version,
|
|
180
|
+
}),
|
|
181
|
+
transport: new StreamableHTTPClientTransport(new URL(endpoint)),
|
|
182
|
+
}));
|
|
183
|
+
return await runtimePromise;
|
|
184
|
+
};
|
|
124
185
|
return {
|
|
125
|
-
connect: () =>
|
|
126
|
-
|
|
127
|
-
|
|
186
|
+
connect: async () => {
|
|
187
|
+
const { client, transport } = await getRuntime();
|
|
188
|
+
await client.connect(transport);
|
|
189
|
+
},
|
|
190
|
+
close: async () => {
|
|
191
|
+
const { client } = await getRuntime();
|
|
192
|
+
await client.close();
|
|
193
|
+
},
|
|
194
|
+
callTool: async (request, options) => {
|
|
195
|
+
const { client } = await getRuntime();
|
|
196
|
+
return await client.callTool(request, undefined, options);
|
|
197
|
+
},
|
|
128
198
|
};
|
|
129
199
|
}
|
|
130
200
|
function getErrorMessage(err) {
|
|
@@ -1,40 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
35
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
6
|
exports.logger = exports.setLoggerSilentOverride = exports.setLoggerDebugOverride = void 0;
|
|
37
|
-
const
|
|
7
|
+
const node_process_1 = __importDefault(require("node:process"));
|
|
38
8
|
const opencode_warning_js_1 = require("./opencode-warning.js");
|
|
39
9
|
const console = globalThis.console;
|
|
40
10
|
const PREFIX = "[graphiti]";
|
|
@@ -92,7 +62,7 @@ const isDebugEnabled = () => {
|
|
|
92
62
|
if (debugOverride !== undefined)
|
|
93
63
|
return debugOverride;
|
|
94
64
|
try {
|
|
95
|
-
return !!
|
|
65
|
+
return !!node_process_1.default.env.GRAPHITI_DEBUG;
|
|
96
66
|
}
|
|
97
67
|
catch {
|
|
98
68
|
return false;
|
|
@@ -500,7 +500,7 @@ class RedisEventsService {
|
|
|
500
500
|
await this.redis.deleteKey((0, exports.drainClaimCheckpointKey)(groupId, claimToken));
|
|
501
501
|
await this.redis.deleteKeyIfValue((0, exports.drainClaimActiveKey)(groupId), claimToken);
|
|
502
502
|
await this.redis.deleteKeyIfValue((0, exports.drainClaimLockKey)(groupId), claimToken);
|
|
503
|
-
await this.redis.setString((0, exports.drainCursorKey)(groupId), entries.
|
|
503
|
+
await this.redis.setString((0, exports.drainCursorKey)(groupId), entries[entries.length - 1]?.event.id ?? "", DRAIN_TTL_SECONDS);
|
|
504
504
|
}
|
|
505
505
|
async moveBatchToDeadLetter(groupId, entries) {
|
|
506
506
|
for (const entry of entries) {
|
|
@@ -17,6 +17,11 @@ type ShutdownRegistrationAdapter = {
|
|
|
17
17
|
removeSignalListener?: (signal: "SIGINT" | "SIGTERM", handler: () => void) => void;
|
|
18
18
|
exit?: (code?: number) => never;
|
|
19
19
|
};
|
|
20
|
+
process?: {
|
|
21
|
+
on?: (event: string, handler: () => void) => void;
|
|
22
|
+
off?: (event: string, handler: () => void) => void;
|
|
23
|
+
exitCode?: number;
|
|
24
|
+
};
|
|
20
25
|
};
|
|
21
26
|
export declare function registerRuntimeTeardown(tasks: RuntimeTeardownTask[], runtime?: ShutdownRegistrationAdapter): RuntimeTeardownRegistration;
|
|
22
27
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-teardown.d.ts","sourceRoot":"","sources":["../../../src/src/services/runtime-teardown.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,OAAO,IAAI,IAAI,CAAC;CACjB;AAMD,KAAK,2BAA2B,GAAG;IACjC,gBAAgB,CAAC,EAAE,CACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,EACjC,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KACtD,IAAI,CAAC;IACV,mBAAmB,CAAC,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,EACjC,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,KACrC,IAAI,CAAC;IACV,IAAI,CAAC,EAAE;QACL,iBAAiB,CAAC,EAAE,CAClB,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,IAAI,KAChB,IAAI,CAAC;QACV,oBAAoB,CAAC,EAAE,CACrB,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,IAAI,KAChB,IAAI,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;KACjC,CAAC;CACH,CAAC;AAwBF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,GAAE,
|
|
1
|
+
{"version":3,"file":"runtime-teardown.d.ts","sourceRoot":"","sources":["../../../src/src/services/runtime-teardown.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,OAAO,IAAI,IAAI,CAAC;CACjB;AAMD,KAAK,2BAA2B,GAAG;IACjC,gBAAgB,CAAC,EAAE,CACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,EACjC,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KACtD,IAAI,CAAC;IACV,mBAAmB,CAAC,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,EACjC,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,KACrC,IAAI,CAAC;IACV,IAAI,CAAC,EAAE;QACL,iBAAiB,CAAC,EAAE,CAClB,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,IAAI,KAChB,IAAI,CAAC;QACV,oBAAoB,CAAC,EAAE,CACrB,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,IAAI,KAChB,IAAI,CAAC;QACV,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;KACjC,CAAC;IACF,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;QAClD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;QACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC;AAwBF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,GAAE,2BAC6C,GACrD,2BAA2B,CAqK7B"}
|
|
@@ -60,6 +60,7 @@ function registerRuntimeTeardown(tasks, runtime = dntShim.dntGlobalThis) {
|
|
|
60
60
|
let gracefulShutdownStarted = false;
|
|
61
61
|
const eventListeners = [];
|
|
62
62
|
const signalListeners = [];
|
|
63
|
+
const processEventListeners = [];
|
|
63
64
|
const disposeEventListeners = () => {
|
|
64
65
|
if (eventListenersDisposed)
|
|
65
66
|
return;
|
|
@@ -74,6 +75,10 @@ function registerRuntimeTeardown(tasks, runtime = dntShim.dntGlobalThis) {
|
|
|
74
75
|
signalListenersDisposed = true;
|
|
75
76
|
for (const { signal, handler } of signalListeners) {
|
|
76
77
|
runtime.Deno?.removeSignalListener?.(signal, handler);
|
|
78
|
+
runtime.process?.off?.(signal, handler);
|
|
79
|
+
}
|
|
80
|
+
for (const { event, handler } of processEventListeners) {
|
|
81
|
+
runtime.process?.off?.(event, handler);
|
|
77
82
|
}
|
|
78
83
|
};
|
|
79
84
|
const releaseRegistration = () => {
|
|
@@ -98,7 +103,13 @@ function registerRuntimeTeardown(tasks, runtime = dntShim.dntGlobalThis) {
|
|
|
98
103
|
return;
|
|
99
104
|
exitRequested = true;
|
|
100
105
|
dispose();
|
|
101
|
-
|
|
106
|
+
const exitCode = SHUTDOWN_EXIT_CODE[signal];
|
|
107
|
+
if (runtime.Deno?.exit) {
|
|
108
|
+
runtime.Deno.exit(exitCode);
|
|
109
|
+
}
|
|
110
|
+
if (runtime.process) {
|
|
111
|
+
runtime.process.exitCode = exitCode;
|
|
112
|
+
}
|
|
102
113
|
};
|
|
103
114
|
const run = () => {
|
|
104
115
|
if (teardownPromise)
|
|
@@ -164,8 +175,18 @@ function registerRuntimeTeardown(tasks, runtime = dntShim.dntGlobalThis) {
|
|
|
164
175
|
beginGracefulShutdown({ kind: "signal", signal });
|
|
165
176
|
};
|
|
166
177
|
runtime.Deno?.addSignalListener?.(signal, handler);
|
|
178
|
+
runtime.process?.on?.(signal, handler);
|
|
167
179
|
signalListeners.push({ signal, handler });
|
|
168
180
|
}
|
|
181
|
+
const beforeExitHandler = () => {
|
|
182
|
+
beginGracefulShutdown({ kind: "event", type: "beforeunload" });
|
|
183
|
+
};
|
|
184
|
+
const exitHandler = () => {
|
|
185
|
+
beginGracefulShutdown({ kind: "event", type: "unload" });
|
|
186
|
+
};
|
|
187
|
+
runtime.process?.on?.("beforeExit", beforeExitHandler);
|
|
188
|
+
runtime.process?.on?.("exit", exitHandler);
|
|
189
|
+
processEventListeners.push({ event: "beforeExit", handler: beforeExitHandler }, { event: "exit", handler: exitHandler });
|
|
169
190
|
const registrations = activeRegistrations.get(runtimeKey) ?? new Set();
|
|
170
191
|
registrations.add(dispose);
|
|
171
192
|
activeRegistrations.set(runtimeKey, registrations);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-corpus.d.ts","sourceRoot":"","sources":["../../../src/src/services/session-corpus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAevE,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAupBF,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAC3C,OAAO,0BAA0B,CAClC,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,SAAS,oBAAoB;
|
|
1
|
+
{"version":3,"file":"session-corpus.d.ts","sourceRoot":"","sources":["../../../src/src/services/session-corpus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAevE,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAupBF,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAC3C,OAAO,0BAA0B,CAClC,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,SAAS,oBAAoB;iBAy1BjD,UAAU;mBA9oBlB,MAAM;oBACL,MAAM;oBACN,MAAM,EAAE;mBACT,OAAO;qBACL,MAAM;;;yBAiqBQ,kBAAkB;;;;;;;;;;;;;;;;;yBAmDlB,kBAAkB;;;;;;kBAsDzB,WAAW,GAAG,OAAO,CAAC;QACxC,MAAM,EAAE,IAAI,CAAC;QACb,OAAO,EAAE,YAAY,EAAE,CAAC;QACxB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;4BAyR4B,MAAM;;;;;;;;+BAanB,MAAM,UACb,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;mDApyBX,MAAM,uBACN,MAAM,KAC1B,OAAO,CAAC,IAAI,CAAC;mBATI,OAAO,CAAC,IAAI,CAAC;CAmzBlC,CAAC"}
|
|
@@ -61,7 +61,7 @@ const stemToken = (token) => {
|
|
|
61
61
|
};
|
|
62
62
|
const containsVowel = (value) => [...value].some((_char, index) => !isConsonant(value, index));
|
|
63
63
|
const endsWithDoubleConsonant = (value) => value.length >= 2 &&
|
|
64
|
-
value.
|
|
64
|
+
value[value.length - 1] === value[value.length - 2] &&
|
|
65
65
|
isConsonant(value, value.length - 1);
|
|
66
66
|
const cvc = (value) => {
|
|
67
67
|
if (value.length < 3)
|
|
@@ -567,7 +567,9 @@ const createSessionCorpusService = (options) => {
|
|
|
567
567
|
const sourcePrefix = `${sessionPrefix(sourceRootSessionId)}:corpus:`;
|
|
568
568
|
if (!corpusRef.startsWith(sourcePrefix))
|
|
569
569
|
return corpusRef;
|
|
570
|
-
const
|
|
570
|
+
const sourceCorpusParts = corpusRef.split(":");
|
|
571
|
+
const sourceCorpusId = sourceCorpusParts[sourceCorpusParts.length - 2] ??
|
|
572
|
+
"";
|
|
571
573
|
const targetCorpusId = corpusIdMap.get(sourceCorpusId);
|
|
572
574
|
return targetCorpusId
|
|
573
575
|
? corpusRefFor(targetRootSessionId, targetCorpusId)
|
|
@@ -1083,7 +1085,8 @@ const createSessionCorpusService = (options) => {
|
|
|
1083
1085
|
}
|
|
1084
1086
|
const result = await writeCorpus(input, "index");
|
|
1085
1087
|
if (input.source && input.label) {
|
|
1086
|
-
const
|
|
1088
|
+
const corpusRefParts = result.corpusRef.split(":");
|
|
1089
|
+
const corpusId = corpusRefParts[corpusRefParts.length - 2] ?? "";
|
|
1087
1090
|
await options.redis.setString(identityKey(input.rootSessionId, input.source, input.label), corpusId, options.ttlSeconds);
|
|
1088
1091
|
}
|
|
1089
1092
|
return { status: "ok", ...result };
|
|
@@ -1150,7 +1153,10 @@ const createSessionCorpusService = (options) => {
|
|
|
1150
1153
|
artifact_count: 1,
|
|
1151
1154
|
bytes_saved_estimate: encoder.encode(input.body).byteLength,
|
|
1152
1155
|
});
|
|
1153
|
-
await refreshCorpusFamily(input.rootSessionId,
|
|
1156
|
+
await refreshCorpusFamily(input.rootSessionId, (() => {
|
|
1157
|
+
const corpusRefParts = corpus.corpusRef.split(":");
|
|
1158
|
+
return corpusRefParts[corpusRefParts.length - 2] ?? "";
|
|
1159
|
+
})());
|
|
1154
1160
|
return {
|
|
1155
1161
|
status: "ok",
|
|
1156
1162
|
artifactRef,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-executor.d.ts","sourceRoot":"","sources":["../../../src/src/services/session-executor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-executor.d.ts","sourceRoot":"","sources":["../../../src/src/services/session-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
4
|
};
|
|
38
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
6
|
exports.createSessionExecutor = exports.SESSION_EXECUTOR_OUT_OF_WORKSPACE_MESSAGE = exports.SESSION_EXECUTOR_MAX_NORMALIZED_INDEXED_BODY_BYTES = exports.SESSION_EXECUTOR_MAX_COMMAND_TIMEOUT_SECONDS = exports.SESSION_EXECUTOR_DEFAULT_COMMAND_TIMEOUT_SECONDS = exports.SESSION_EXECUTOR_RESPONSE_BUDGET_BYTES = void 0;
|
|
40
|
-
const dntShim = __importStar(require("../../_dnt.shims.js"));
|
|
41
7
|
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const node_child_process_1 = require("node:child_process");
|
|
9
|
+
const promises_1 = require("node:fs/promises");
|
|
10
|
+
const node_process_1 = __importDefault(require("node:process"));
|
|
42
11
|
const utils_js_1 = require("../utils.js");
|
|
43
12
|
exports.SESSION_EXECUTOR_RESPONSE_BUDGET_BYTES = 8 * 1024;
|
|
44
13
|
exports.SESSION_EXECUTOR_DEFAULT_COMMAND_TIMEOUT_SECONDS = 30;
|
|
@@ -50,30 +19,62 @@ const textDecoder = new TextDecoder();
|
|
|
50
19
|
const byteLength = (value) => textEncoder.encode(value).byteLength;
|
|
51
20
|
const serialize = (value) => JSON.stringify(value);
|
|
52
21
|
const clampTimeoutSeconds = (timeoutSeconds, defaults) => Math.min(timeoutSeconds ?? defaults.defaultCommandTimeoutSeconds, defaults.maxCommandTimeoutSeconds);
|
|
22
|
+
const concatChunks = (chunks) => {
|
|
23
|
+
const totalBytes = chunks.reduce((sum, chunk) => sum + chunk.byteLength, 0);
|
|
24
|
+
const combined = new Uint8Array(totalBytes);
|
|
25
|
+
let offset = 0;
|
|
26
|
+
for (const chunk of chunks) {
|
|
27
|
+
combined.set(chunk, offset);
|
|
28
|
+
offset += chunk.byteLength;
|
|
29
|
+
}
|
|
30
|
+
return combined;
|
|
31
|
+
};
|
|
53
32
|
const defaultRunCommand = async ({ command, cwd, signal }) => {
|
|
54
|
-
const shell =
|
|
33
|
+
const shell = node_process_1.default.platform === "win32"
|
|
55
34
|
? { executable: "cmd", args: ["/d", "/s", "/c", command] }
|
|
56
35
|
: { executable: "/bin/sh", args: ["-lc", command] };
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
36
|
+
return await new Promise((resolve, reject) => {
|
|
37
|
+
const stdoutChunks = [];
|
|
38
|
+
const stderrChunks = [];
|
|
39
|
+
let settled = false;
|
|
40
|
+
const child = (0, node_child_process_1.spawn)(shell.executable, shell.args, {
|
|
41
|
+
cwd,
|
|
42
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
43
|
+
signal,
|
|
44
|
+
});
|
|
45
|
+
const rejectOnce = (error) => {
|
|
46
|
+
if (settled)
|
|
47
|
+
return;
|
|
48
|
+
settled = true;
|
|
49
|
+
reject(error);
|
|
50
|
+
};
|
|
51
|
+
const resolveOnce = (value) => {
|
|
52
|
+
if (settled)
|
|
53
|
+
return;
|
|
54
|
+
settled = true;
|
|
55
|
+
resolve(value);
|
|
56
|
+
};
|
|
57
|
+
child.stdout.on("data", (chunk) => {
|
|
58
|
+
stdoutChunks.push(typeof chunk === "string" ? textEncoder.encode(chunk) : chunk);
|
|
59
|
+
});
|
|
60
|
+
child.stderr.on("data", (chunk) => {
|
|
61
|
+
stderrChunks.push(typeof chunk === "string" ? textEncoder.encode(chunk) : chunk);
|
|
62
|
+
});
|
|
63
|
+
child.on("error", rejectOnce);
|
|
64
|
+
child.on("close", (code) => {
|
|
65
|
+
resolveOnce({
|
|
66
|
+
exitCode: code ?? (signal.aborted ? -1 : 1),
|
|
67
|
+
stdout: textDecoder.decode(concatChunks(stdoutChunks)),
|
|
68
|
+
stderr: textDecoder.decode(concatChunks(stderrChunks)),
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
71
72
|
};
|
|
72
|
-
const defaultReadFile = (filePath) =>
|
|
73
|
+
const defaultReadFile = (filePath) => (0, promises_1.readFile)(filePath, "utf8");
|
|
73
74
|
const defaultStoreArtifact = ({ body }) => Promise.resolve({
|
|
74
75
|
artifactRef: `inline://payload/${encodeURIComponent(body)}`,
|
|
75
76
|
});
|
|
76
|
-
const resolveCwd = (context) => context.worktree ?? context.directory ??
|
|
77
|
+
const resolveCwd = (context) => context.worktree ?? context.directory ?? node_process_1.default.cwd();
|
|
77
78
|
const isWithinRoot = (rootPath, targetPath) => {
|
|
78
79
|
const relative = node_path_1.default.relative(rootPath, targetPath);
|
|
79
80
|
return relative === "" ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-mcp-runtime.d.ts","sourceRoot":"","sources":["../../../src/src/services/session-mcp-runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-mcp-runtime.d.ts","sourceRoot":"","sources":["../../../src/src/services/session-mcp-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EACL,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,qBAAqB,EAIrB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,qBAAqB,EAE1B,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAIjE,eAAO,MAAM,iCAAiC,QAAW,CAAC;AA8D1D,KAAK,iBAAiB,CAAC,SAAS,SAAS,kBAAkB,IAAI,CAC7D,OAAO,EAAE,oBAAoB,CAAC,SAAS,CAAC,EACxC,OAAO,EAAE,WAAW,KACjB,OAAO,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;AAE/C,KAAK,oBAAoB,GAAG;KACzB,CAAC,IAAI,kBAAkB,GAAG,iBAAiB,CAAC,CAAC,CAAC;CAChD,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0BAA0B,CAAC,EAAE,OAAO,0BAA0B,CAAC;IAC/D,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IACrD,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IACnD,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9D,CAAC;AAkBF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;IAClD,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,uBAAuB,EAAE,CACvB,oBAAoB,EAAE,2BAA2B,GAAG,SAAS,KAC1D,IAAI,CAAC;IACV,uBAAuB,EAAE,CACvB,mBAAmB,EAAE,MAAM,EAC3B,mBAAmB,EAAE,MAAM,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC;AA0MF,eAAO,MAAM,uBAAuB,GAClC,UAAS,wBAA6B,KACrC,iBA6mBF,CAAC"}
|
|
@@ -1,47 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
4
|
};
|
|
38
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
6
|
exports.createSessionMcpRuntime = exports.SESSION_MCP_RESPONSE_BUDGET_BYTES = void 0;
|
|
40
|
-
const dntShim = __importStar(require("../../_dnt.shims.js"));
|
|
41
7
|
const plugin_1 = require("@opencode-ai/plugin");
|
|
42
8
|
const session_corpus_js_1 = require("./session-corpus.js");
|
|
43
9
|
const session_executor_js_1 = require("./session-executor.js");
|
|
44
10
|
const session_mcp_types_js_1 = require("./session-mcp-types.js");
|
|
11
|
+
const promises_1 = require("node:fs/promises");
|
|
45
12
|
const node_path_1 = __importDefault(require("node:path"));
|
|
46
13
|
exports.SESSION_MCP_RESPONSE_BUDGET_BYTES = 8 * 1024;
|
|
47
14
|
const pluginSchema = plugin_1.tool.schema;
|
|
@@ -161,7 +128,7 @@ const extractInlineArtifactPayload = (artifactRef) => {
|
|
|
161
128
|
}
|
|
162
129
|
};
|
|
163
130
|
const byteLength = (value) => textEncoder.encode(value).byteLength;
|
|
164
|
-
const readTextFile = (filePath) =>
|
|
131
|
+
const readTextFile = (filePath) => (0, promises_1.readFile)(filePath, "utf8");
|
|
165
132
|
const createBoundedSessionIndexError = (code, message) => Object.assign(new Error(message), { code, bounded: true });
|
|
166
133
|
const isWithinBudget = (value) => byteLength(value) <= exports.SESSION_MCP_RESPONSE_BUDGET_BYTES;
|
|
167
134
|
const resolveSessionIndexPath = (requestPath, context) => {
|