@ubundi/openclaw-cortex 0.3.7 → 0.5.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/README.md +53 -53
- package/dist/{cortex → adapters/cortex}/client.d.ts +51 -0
- package/dist/adapters/cortex/client.d.ts.map +1 -0
- package/dist/{cortex → adapters/cortex}/client.js +54 -2
- package/dist/adapters/cortex/client.js.map +1 -0
- package/dist/features/capture/handler.d.ts +16 -12
- package/dist/features/capture/handler.d.ts.map +1 -1
- package/dist/features/capture/handler.js +64 -20
- package/dist/features/capture/handler.js.map +1 -1
- package/dist/features/recall/formatter.d.ts +2 -2
- package/dist/features/recall/formatter.d.ts.map +1 -1
- package/dist/features/recall/formatter.js +3 -3
- package/dist/features/recall/formatter.js.map +1 -1
- package/dist/features/recall/handler.d.ts +10 -4
- package/dist/features/recall/handler.d.ts.map +1 -1
- package/dist/features/recall/handler.js +25 -11
- package/dist/features/recall/handler.js.map +1 -1
- package/dist/features/sync/daily-logs-sync.d.ts +4 -3
- package/dist/features/sync/daily-logs-sync.d.ts.map +1 -1
- package/dist/features/sync/daily-logs-sync.js +13 -7
- package/dist/features/sync/daily-logs-sync.js.map +1 -1
- package/dist/features/sync/memory-md-sync.d.ts +4 -3
- package/dist/features/sync/memory-md-sync.d.ts.map +1 -1
- package/dist/features/sync/memory-md-sync.js +14 -8
- package/dist/features/sync/memory-md-sync.js.map +1 -1
- package/dist/features/sync/transcripts-sync.d.ts +4 -3
- package/dist/features/sync/transcripts-sync.d.ts.map +1 -1
- package/dist/features/sync/transcripts-sync.js +14 -8
- package/dist/features/sync/transcripts-sync.js.map +1 -1
- package/dist/features/sync/watcher.d.ts +4 -3
- package/dist/features/sync/watcher.d.ts.map +1 -1
- package/dist/features/sync/watcher.js +6 -4
- package/dist/features/sync/watcher.js.map +1 -1
- package/dist/index.d.ts +6 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -7
- package/dist/index.js.map +1 -1
- package/dist/internal/fs/safe-path.d.ts.map +1 -0
- package/dist/internal/fs/safe-path.js.map +1 -0
- package/dist/internal/identity/api-key.d.ts +7 -0
- package/dist/internal/identity/api-key.d.ts.map +1 -0
- package/dist/internal/identity/api-key.js +7 -0
- package/dist/internal/identity/api-key.js.map +1 -0
- package/dist/internal/identity/user-id.d.ts +8 -0
- package/dist/internal/identity/user-id.d.ts.map +1 -0
- package/dist/internal/identity/user-id.js +33 -0
- package/dist/internal/identity/user-id.js.map +1 -0
- package/dist/internal/metrics/latency-metrics.d.ts.map +1 -0
- package/dist/internal/metrics/latency-metrics.js.map +1 -0
- package/dist/internal/queue/retry-queue.d.ts.map +1 -0
- package/dist/internal/queue/retry-queue.js.map +1 -0
- package/dist/{shared → internal}/transcript/cleaner.d.ts +1 -1
- package/dist/internal/transcript/cleaner.d.ts.map +1 -0
- package/dist/internal/transcript/cleaner.js.map +1 -0
- package/dist/{core → plugin}/config/schema.d.ts +10 -29
- package/dist/plugin/config/schema.d.ts.map +1 -0
- package/dist/{core → plugin}/config/schema.js +2 -7
- package/dist/plugin/config/schema.js.map +1 -0
- package/dist/{core/plugin.d.ts → plugin/index.d.ts} +12 -11
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/{core/plugin.js → plugin/index.js} +63 -29
- package/dist/plugin/index.js.map +1 -0
- package/openclaw.plugin.json +17 -58
- package/package.json +2 -2
- package/dist/core/config/schema.d.ts.map +0 -1
- package/dist/core/config/schema.js.map +0 -1
- package/dist/core/plugin.d.ts.map +0 -1
- package/dist/core/plugin.js.map +0 -1
- package/dist/cortex/client.d.ts.map +0 -1
- package/dist/cortex/client.js.map +0 -1
- package/dist/features/reflect/service.d.ts +0 -19
- package/dist/features/reflect/service.d.ts.map +0 -1
- package/dist/features/reflect/service.js +0 -38
- package/dist/features/reflect/service.js.map +0 -1
- package/dist/shared/fs/safe-path.d.ts.map +0 -1
- package/dist/shared/fs/safe-path.js.map +0 -1
- package/dist/shared/metrics/latency-metrics.d.ts.map +0 -1
- package/dist/shared/metrics/latency-metrics.js.map +0 -1
- package/dist/shared/queue/retry-queue.d.ts.map +0 -1
- package/dist/shared/queue/retry-queue.js.map +0 -1
- package/dist/shared/transcript/cleaner.d.ts.map +0 -1
- package/dist/shared/transcript/cleaner.js.map +0 -1
- /package/dist/{shared → internal}/fs/safe-path.d.ts +0 -0
- /package/dist/{shared → internal}/fs/safe-path.js +0 -0
- /package/dist/{shared → internal}/metrics/latency-metrics.d.ts +0 -0
- /package/dist/{shared → internal}/metrics/latency-metrics.js +0 -0
- /package/dist/{shared → internal}/queue/retry-queue.d.ts +0 -0
- /package/dist/{shared → internal}/queue/retry-queue.js +0 -0
- /package/dist/{shared → internal}/transcript/cleaner.js +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { CortexClient } from "../../cortex/client.js";
|
|
2
|
-
import type { CortexConfig } from "../../
|
|
3
|
-
import {
|
|
1
|
+
import type { CortexClient } from "../../adapters/cortex/client.js";
|
|
2
|
+
import type { CortexConfig } from "../../plugin/config/schema.js";
|
|
3
|
+
import type { KnowledgeState } from "../../plugin/index.js";
|
|
4
|
+
import { LatencyMetrics } from "../../internal/metrics/latency-metrics.js";
|
|
4
5
|
interface BeforeAgentStartEvent {
|
|
5
6
|
prompt: string;
|
|
6
7
|
messages?: unknown[];
|
|
@@ -20,7 +21,12 @@ type Logger = {
|
|
|
20
21
|
warn(...args: unknown[]): void;
|
|
21
22
|
error(...args: unknown[]): void;
|
|
22
23
|
};
|
|
23
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Derives an effective recall timeout that respects the server's adaptive pipeline tiers.
|
|
26
|
+
* Higher tiers run heavier pipelines (reranking, graph traversal) that need more time.
|
|
27
|
+
*/
|
|
28
|
+
export declare function deriveEffectiveTimeout(configuredMs: number, totalSessions: number): number;
|
|
29
|
+
export declare function createRecallHandler(client: CortexClient, config: CortexConfig, logger: Logger, metrics?: LatencyMetrics, knowledgeState?: KnowledgeState, getUserId?: () => string | undefined): {
|
|
24
30
|
(event: BeforeAgentStartEvent, _ctx: AgentContext): Promise<BeforeAgentStartResult | void>;
|
|
25
31
|
metrics: LatencyMetrics;
|
|
26
32
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/features/recall/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/features/recall/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAE3E,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,sBAAsB;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,KAAK,MAAM,GAAG;IACZ,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACjC,CAAC;AAUF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAI1F;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,cAAc,EACxB,cAAc,CAAC,EAAE,cAAc,EAC/B,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS;YAO3B,qBAAqB,QACtB,YAAY,GACjB,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;;EAuE1C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { formatMemories } from "./formatter.js";
|
|
2
|
-
import { LatencyMetrics } from "../../
|
|
2
|
+
import { LatencyMetrics } from "../../internal/metrics/latency-metrics.js";
|
|
3
3
|
/**
|
|
4
4
|
* Cold-start detection: if the first N requests all timeout or fail,
|
|
5
5
|
* assume the ECS task is cold and disable recall temporarily.
|
|
@@ -7,13 +7,29 @@ import { LatencyMetrics } from "../../shared/metrics/latency-metrics.js";
|
|
|
7
7
|
*/
|
|
8
8
|
const COLD_START_WINDOW = 3; // consecutive failures to trigger cold-start
|
|
9
9
|
const COLD_START_COOLDOWN_MS = 30_000; // wait 30s before retrying
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Derives an effective recall timeout that respects the server's adaptive pipeline tiers.
|
|
12
|
+
* Higher tiers run heavier pipelines (reranking, graph traversal) that need more time.
|
|
13
|
+
*/
|
|
14
|
+
export function deriveEffectiveTimeout(configuredMs, totalSessions) {
|
|
15
|
+
if (totalSessions >= 30)
|
|
16
|
+
return Math.max(configuredMs, 2000); // Tier 3
|
|
17
|
+
if (totalSessions >= 15)
|
|
18
|
+
return Math.max(configuredMs, 1500); // Tier 2
|
|
19
|
+
return configuredMs; // Tier 1
|
|
20
|
+
}
|
|
21
|
+
export function createRecallHandler(client, config, logger, metrics, knowledgeState, getUserId) {
|
|
11
22
|
const recallMetrics = metrics ?? new LatencyMetrics();
|
|
12
23
|
let consecutiveFailures = 0;
|
|
13
24
|
let coldStartUntil = 0;
|
|
14
25
|
const handler = async (event, _ctx) => {
|
|
15
26
|
if (!config.autoRecall)
|
|
16
27
|
return;
|
|
28
|
+
// Skip recall when we know there are no memories yet
|
|
29
|
+
if (knowledgeState && !knowledgeState.hasMemories) {
|
|
30
|
+
logger.debug?.("Cortex recall: skipped (no memories yet)");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
17
33
|
const prompt = event.prompt?.trim();
|
|
18
34
|
if (!prompt || prompt.length < 5)
|
|
19
35
|
return;
|
|
@@ -23,22 +39,20 @@ export function createRecallHandler(client, config, logger, metrics) {
|
|
|
23
39
|
return;
|
|
24
40
|
}
|
|
25
41
|
const start = Date.now();
|
|
42
|
+
const effectiveTimeout = knowledgeState
|
|
43
|
+
? deriveEffectiveTimeout(config.recallTimeoutMs, knowledgeState.totalSessions)
|
|
44
|
+
: config.recallTimeoutMs;
|
|
26
45
|
try {
|
|
27
|
-
|
|
28
|
-
// "fast" = BM25 + semantic only (~80-150ms server-side)
|
|
29
|
-
// "balanced" = adds light reranking (~150-300ms)
|
|
30
|
-
// "full" = adds graph traversal + full reranker (~300-600ms)
|
|
31
|
-
const apiMode = config.recallMode === "balanced" ? "fast" : config.recallMode;
|
|
32
|
-
const response = await client.retrieve(prompt, config.recallTopK, apiMode, config.recallTimeoutMs, config.recallQueryType, { referenceDate: new Date().toISOString() });
|
|
46
|
+
const response = await client.recall(prompt, effectiveTimeout, { limit: config.recallLimit, userId: getUserId?.(), queryType: "factual" });
|
|
33
47
|
const elapsed = Date.now() - start;
|
|
34
48
|
recallMetrics.record(elapsed);
|
|
35
49
|
consecutiveFailures = 0; // reset on success
|
|
36
|
-
if (!response.
|
|
50
|
+
if (!response.memories?.length)
|
|
37
51
|
return;
|
|
38
|
-
const formatted = formatMemories(response.
|
|
52
|
+
const formatted = formatMemories(response.memories);
|
|
39
53
|
if (!formatted)
|
|
40
54
|
return;
|
|
41
|
-
logger.debug?.(`Cortex recall: ${response.
|
|
55
|
+
logger.debug?.(`Cortex recall: ${response.memories.length} memories in ${elapsed}ms`);
|
|
42
56
|
return { prependContext: formatted };
|
|
43
57
|
}
|
|
44
58
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/features/recall/handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/features/recall/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CortexClient } from "../../cortex/client.js";
|
|
2
|
-
import type { RetryQueue } from "../../
|
|
1
|
+
import type { CortexClient } from "../../adapters/cortex/client.js";
|
|
2
|
+
import type { RetryQueue } from "../../internal/queue/retry-queue.js";
|
|
3
3
|
type Logger = {
|
|
4
4
|
debug?(...args: unknown[]): void;
|
|
5
5
|
info(...args: unknown[]): void;
|
|
@@ -12,8 +12,9 @@ export declare class DailyLogsSync {
|
|
|
12
12
|
private logger;
|
|
13
13
|
private retryQueue?;
|
|
14
14
|
private allowedRoot?;
|
|
15
|
+
private getUserId?;
|
|
15
16
|
private offsets;
|
|
16
|
-
constructor(client: CortexClient, sessionPrefix: string, logger: Logger, retryQueue?: RetryQueue | undefined, allowedRoot?: string | undefined);
|
|
17
|
+
constructor(client: CortexClient, sessionPrefix: string, logger: Logger, retryQueue?: RetryQueue | undefined, allowedRoot?: string | undefined, getUserId?: (() => string | undefined) | undefined);
|
|
17
18
|
onFileChange(filePath: string, filename: string): Promise<void>;
|
|
18
19
|
stop(): void;
|
|
19
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daily-logs-sync.d.ts","sourceRoot":"","sources":["../../../src/features/sync/daily-logs-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"daily-logs-sync.d.ts","sourceRoot":"","sources":["../../../src/features/sync/daily-logs-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAGtE,KAAK,MAAM,GAAG;IACZ,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,qBAAa,aAAa;IAItB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,SAAS,CAAC;IARpB,OAAO,CAAC,OAAO,CAA6B;gBAGlC,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,UAAU,YAAA,EACvB,WAAW,CAAC,EAAE,MAAM,YAAA,EACpB,SAAS,CAAC,GAAE,MAAM,MAAM,GAAG,SAAS,aAAA;IAGxC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCrE,IAAI,IAAI,IAAI;CAGb;AAID,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG5E"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
|
-
import { safePath } from "../../
|
|
2
|
+
import { safePath } from "../../internal/fs/safe-path.js";
|
|
3
3
|
export class DailyLogsSync {
|
|
4
4
|
client;
|
|
5
5
|
sessionPrefix;
|
|
6
6
|
logger;
|
|
7
7
|
retryQueue;
|
|
8
8
|
allowedRoot;
|
|
9
|
+
getUserId;
|
|
9
10
|
offsets = new Map();
|
|
10
|
-
constructor(client, sessionPrefix, logger, retryQueue, allowedRoot) {
|
|
11
|
+
constructor(client, sessionPrefix, logger, retryQueue, allowedRoot, getUserId) {
|
|
11
12
|
this.client = client;
|
|
12
13
|
this.sessionPrefix = sessionPrefix;
|
|
13
14
|
this.logger = logger;
|
|
14
15
|
this.retryQueue = retryQueue;
|
|
15
16
|
this.allowedRoot = allowedRoot;
|
|
17
|
+
this.getUserId = getUserId;
|
|
16
18
|
}
|
|
17
19
|
async onFileChange(filePath, filename) {
|
|
18
20
|
try {
|
|
@@ -32,15 +34,19 @@ export class DailyLogsSync {
|
|
|
32
34
|
return;
|
|
33
35
|
const sessionId = `${this.sessionPrefix}:daily:${filename}`;
|
|
34
36
|
const referenceDate = extractDateFromFilename(filename);
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
const doRemember = () => {
|
|
38
|
+
// Re-evaluate userId at call time so retries use the resolved value
|
|
39
|
+
const userId = this.getUserId?.();
|
|
40
|
+
return this.client.remember(newContent, sessionId, undefined, referenceDate, userId).then((res) => {
|
|
41
|
+
this.logger.debug?.(`Daily log sync: remembered ${res.memories_created} memories for ${filename}`);
|
|
42
|
+
});
|
|
43
|
+
};
|
|
38
44
|
try {
|
|
39
|
-
await
|
|
45
|
+
await doRemember();
|
|
40
46
|
}
|
|
41
47
|
catch (err) {
|
|
42
48
|
this.logger.warn(`Daily log sync failed for ${filename}, queuing for retry: ${String(err)}`);
|
|
43
|
-
this.retryQueue?.enqueue(
|
|
49
|
+
this.retryQueue?.enqueue(doRemember, `daily-${filename}`);
|
|
44
50
|
}
|
|
45
51
|
}
|
|
46
52
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daily-logs-sync.js","sourceRoot":"","sources":["../../../src/features/sync/daily-logs-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"daily-logs-sync.js","sourceRoot":"","sources":["../../../src/features/sync/daily-logs-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CortexClient } from "../../cortex/client.js";
|
|
2
|
-
import type { RetryQueue } from "../../
|
|
1
|
+
import type { CortexClient } from "../../adapters/cortex/client.js";
|
|
2
|
+
import type { RetryQueue } from "../../internal/queue/retry-queue.js";
|
|
3
3
|
type Logger = {
|
|
4
4
|
debug?(...args: unknown[]): void;
|
|
5
5
|
info(...args: unknown[]): void;
|
|
@@ -13,10 +13,11 @@ export declare class MemoryMdSync {
|
|
|
13
13
|
private logger;
|
|
14
14
|
private retryQueue?;
|
|
15
15
|
private allowedRoot?;
|
|
16
|
+
private getUserId?;
|
|
16
17
|
private lastContent;
|
|
17
18
|
private debounceTimer;
|
|
18
19
|
private syncCounter;
|
|
19
|
-
constructor(filePath: string, client: CortexClient, sessionId: string, logger: Logger, retryQueue?: RetryQueue | undefined, allowedRoot?: string | undefined);
|
|
20
|
+
constructor(filePath: string, client: CortexClient, sessionId: string, logger: Logger, retryQueue?: RetryQueue | undefined, allowedRoot?: string | undefined, getUserId?: (() => string | undefined) | undefined);
|
|
20
21
|
onFileChange(): void;
|
|
21
22
|
private diffAndIngest;
|
|
22
23
|
stop(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-md-sync.d.ts","sourceRoot":"","sources":["../../../src/features/sync/memory-md-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"memory-md-sync.d.ts","sourceRoot":"","sources":["../../../src/features/sync/memory-md-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAGtE,KAAK,MAAM,GAAG;IACZ,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACjC,CAAC;AAIF,qBAAa,YAAY;IAMrB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,SAAS,CAAC;IAXpB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,WAAW,CAAK;gBAGd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,UAAU,YAAA,EACvB,WAAW,CAAC,EAAE,MAAM,YAAA,EACpB,SAAS,CAAC,GAAE,MAAM,MAAM,GAAG,SAAS,aAAA;IAG9C,YAAY,IAAI,IAAI;YAUN,aAAa;IA0C3B,IAAI,IAAI,IAAI;CAMb;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMlE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
|
-
import { safePath } from "../../
|
|
2
|
+
import { safePath } from "../../internal/fs/safe-path.js";
|
|
3
3
|
const DEBOUNCE_MS = 2000;
|
|
4
4
|
export class MemoryMdSync {
|
|
5
5
|
filePath;
|
|
@@ -8,16 +8,18 @@ export class MemoryMdSync {
|
|
|
8
8
|
logger;
|
|
9
9
|
retryQueue;
|
|
10
10
|
allowedRoot;
|
|
11
|
+
getUserId;
|
|
11
12
|
lastContent = "";
|
|
12
13
|
debounceTimer = null;
|
|
13
14
|
syncCounter = 0;
|
|
14
|
-
constructor(filePath, client, sessionId, logger, retryQueue, allowedRoot) {
|
|
15
|
+
constructor(filePath, client, sessionId, logger, retryQueue, allowedRoot, getUserId) {
|
|
15
16
|
this.filePath = filePath;
|
|
16
17
|
this.client = client;
|
|
17
18
|
this.sessionId = sessionId;
|
|
18
19
|
this.logger = logger;
|
|
19
20
|
this.retryQueue = retryQueue;
|
|
20
21
|
this.allowedRoot = allowedRoot;
|
|
22
|
+
this.getUserId = getUserId;
|
|
21
23
|
}
|
|
22
24
|
onFileChange() {
|
|
23
25
|
if (this.debounceTimer)
|
|
@@ -51,15 +53,19 @@ export class MemoryMdSync {
|
|
|
51
53
|
this.lastContent = current;
|
|
52
54
|
if (!added.trim())
|
|
53
55
|
return;
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
const doRemember = () => {
|
|
57
|
+
// Re-evaluate userId at call time so retries use the resolved value
|
|
58
|
+
const userId = this.getUserId?.();
|
|
59
|
+
return this.client.remember(added, this.sessionId, undefined, undefined, userId).then((res) => {
|
|
60
|
+
this.logger.debug?.(`MEMORY.md sync: remembered ${res.memories_created} memories`);
|
|
61
|
+
});
|
|
62
|
+
};
|
|
57
63
|
try {
|
|
58
|
-
await
|
|
64
|
+
await doRemember();
|
|
59
65
|
}
|
|
60
66
|
catch (err) {
|
|
61
|
-
this.logger.warn(`MEMORY.md sync
|
|
62
|
-
this.retryQueue?.enqueue(
|
|
67
|
+
this.logger.warn(`MEMORY.md sync failed, queuing for retry: ${String(err)}`);
|
|
68
|
+
this.retryQueue?.enqueue(doRemember, `memory-md-${++this.syncCounter}`);
|
|
63
69
|
}
|
|
64
70
|
}
|
|
65
71
|
stop() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-md-sync.js","sourceRoot":"","sources":["../../../src/features/sync/memory-md-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"memory-md-sync.js","sourceRoot":"","sources":["../../../src/features/sync/memory-md-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CortexClient } from "../../cortex/client.js";
|
|
2
|
-
import type { RetryQueue } from "../../
|
|
1
|
+
import type { CortexClient } from "../../adapters/cortex/client.js";
|
|
2
|
+
import type { RetryQueue } from "../../internal/queue/retry-queue.js";
|
|
3
3
|
type Logger = {
|
|
4
4
|
debug?(...args: unknown[]): void;
|
|
5
5
|
info(...args: unknown[]): void;
|
|
@@ -12,8 +12,9 @@ export declare class TranscriptsSync {
|
|
|
12
12
|
private logger;
|
|
13
13
|
private retryQueue?;
|
|
14
14
|
private allowedRoot?;
|
|
15
|
+
private getUserId?;
|
|
15
16
|
private offsets;
|
|
16
|
-
constructor(client: CortexClient, sessionPrefix: string, logger: Logger, retryQueue?: RetryQueue | undefined, allowedRoot?: string | undefined);
|
|
17
|
+
constructor(client: CortexClient, sessionPrefix: string, logger: Logger, retryQueue?: RetryQueue | undefined, allowedRoot?: string | undefined, getUserId?: (() => string | undefined) | undefined);
|
|
17
18
|
onFileChange(filePath: string, filename: string): Promise<void>;
|
|
18
19
|
stop(): void;
|
|
19
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcripts-sync.d.ts","sourceRoot":"","sources":["../../../src/features/sync/transcripts-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"transcripts-sync.d.ts","sourceRoot":"","sources":["../../../src/features/sync/transcripts-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAItE,KAAK,MAAM,GAAG;IACZ,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,qBAAa,eAAe;IAIxB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,SAAS,CAAC;IARpB,OAAO,CAAC,OAAO,CAA6B;gBAGlC,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,UAAU,YAAA,EACvB,WAAW,CAAC,EAAE,MAAM,YAAA,EACpB,SAAS,CAAC,GAAE,MAAM,MAAM,GAAG,SAAS,aAAA;IAGxC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDrE,IAAI,IAAI,IAAI;CAGb"}
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
|
-
import { cleanTranscriptChunk } from "../../
|
|
3
|
-
import { safePath } from "../../
|
|
2
|
+
import { cleanTranscriptChunk } from "../../internal/transcript/cleaner.js";
|
|
3
|
+
import { safePath } from "../../internal/fs/safe-path.js";
|
|
4
4
|
export class TranscriptsSync {
|
|
5
5
|
client;
|
|
6
6
|
sessionPrefix;
|
|
7
7
|
logger;
|
|
8
8
|
retryQueue;
|
|
9
9
|
allowedRoot;
|
|
10
|
+
getUserId;
|
|
10
11
|
offsets = new Map();
|
|
11
|
-
constructor(client, sessionPrefix, logger, retryQueue, allowedRoot) {
|
|
12
|
+
constructor(client, sessionPrefix, logger, retryQueue, allowedRoot, getUserId) {
|
|
12
13
|
this.client = client;
|
|
13
14
|
this.sessionPrefix = sessionPrefix;
|
|
14
15
|
this.logger = logger;
|
|
15
16
|
this.retryQueue = retryQueue;
|
|
16
17
|
this.allowedRoot = allowedRoot;
|
|
18
|
+
this.getUserId = getUserId;
|
|
17
19
|
}
|
|
18
20
|
async onFileChange(filePath, filename) {
|
|
19
21
|
try {
|
|
@@ -40,15 +42,19 @@ export class TranscriptsSync {
|
|
|
40
42
|
const sessionName = filename.replace(/\.jsonl$/, "");
|
|
41
43
|
const sessionId = `${this.sessionPrefix}:session:${sessionName}`;
|
|
42
44
|
const referenceDate = new Date().toISOString().slice(0, 10);
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
const doRemember = () => {
|
|
46
|
+
// Re-evaluate userId at call time so retries use the resolved value
|
|
47
|
+
const userId = this.getUserId?.();
|
|
48
|
+
return this.client.rememberConversation(messages, sessionId, undefined, referenceDate, userId).then((res) => {
|
|
49
|
+
this.logger.debug?.(`Transcript sync: remembered ${res.memories_created} memories for ${filename}`);
|
|
50
|
+
});
|
|
51
|
+
};
|
|
46
52
|
try {
|
|
47
|
-
await
|
|
53
|
+
await doRemember();
|
|
48
54
|
}
|
|
49
55
|
catch (err) {
|
|
50
56
|
this.logger.warn(`Transcript sync failed for ${filename}, queuing for retry: ${String(err)}`);
|
|
51
|
-
this.retryQueue?.enqueue(
|
|
57
|
+
this.retryQueue?.enqueue(doRemember, `transcript-${filename}`);
|
|
52
58
|
}
|
|
53
59
|
}
|
|
54
60
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcripts-sync.js","sourceRoot":"","sources":["../../../src/features/sync/transcripts-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"transcripts-sync.js","sourceRoot":"","sources":["../../../src/features/sync/transcripts-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CortexClient } from "../../cortex/client.js";
|
|
2
|
-
import type { RetryQueue } from "../../
|
|
1
|
+
import type { CortexClient } from "../../adapters/cortex/client.js";
|
|
2
|
+
import type { RetryQueue } from "../../internal/queue/retry-queue.js";
|
|
3
3
|
type Logger = {
|
|
4
4
|
debug?(...args: unknown[]): void;
|
|
5
5
|
info(...args: unknown[]): void;
|
|
@@ -16,12 +16,13 @@ export declare class FileSyncWatcher {
|
|
|
16
16
|
private logger;
|
|
17
17
|
private retryQueue?;
|
|
18
18
|
private options;
|
|
19
|
+
private getUserId?;
|
|
19
20
|
private watchers;
|
|
20
21
|
private memoryMdSync;
|
|
21
22
|
private dailyLogsSync;
|
|
22
23
|
private transcriptsSync;
|
|
23
24
|
private started;
|
|
24
|
-
constructor(workspaceDir: string, client: CortexClient, sessionPrefix: string, logger: Logger, retryQueue?: RetryQueue | undefined, options?: FileSyncOptions);
|
|
25
|
+
constructor(workspaceDir: string, client: CortexClient, sessionPrefix: string, logger: Logger, retryQueue?: RetryQueue | undefined, options?: FileSyncOptions, getUserId?: (() => string | undefined) | undefined);
|
|
25
26
|
start(): void;
|
|
26
27
|
stop(): void;
|
|
27
28
|
private watchPath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../../src/features/sync/watcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../../src/features/sync/watcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAKtE,KAAK,MAAM,GAAG;IACZ,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,eAAe;IAQxB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS,CAAC;IAbpB,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,OAAO,CAAS;gBAGd,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,UAAU,YAAA,EACvB,OAAO,GAAE,eAAoB,EAC7B,SAAS,CAAC,GAAE,MAAM,MAAM,GAAG,SAAS,aAAA;IAG9C,KAAK,IAAI,IAAI;IA2Eb,IAAI,IAAI,IAAI;IAiBZ,OAAO,CAAC,SAAS;CAelB"}
|
|
@@ -10,18 +10,20 @@ export class FileSyncWatcher {
|
|
|
10
10
|
logger;
|
|
11
11
|
retryQueue;
|
|
12
12
|
options;
|
|
13
|
+
getUserId;
|
|
13
14
|
watchers = [];
|
|
14
15
|
memoryMdSync = null;
|
|
15
16
|
dailyLogsSync = null;
|
|
16
17
|
transcriptsSync = null;
|
|
17
18
|
started = false;
|
|
18
|
-
constructor(workspaceDir, client, sessionPrefix, logger, retryQueue, options = {}) {
|
|
19
|
+
constructor(workspaceDir, client, sessionPrefix, logger, retryQueue, options = {}, getUserId) {
|
|
19
20
|
this.workspaceDir = workspaceDir;
|
|
20
21
|
this.client = client;
|
|
21
22
|
this.sessionPrefix = sessionPrefix;
|
|
22
23
|
this.logger = logger;
|
|
23
24
|
this.retryQueue = retryQueue;
|
|
24
25
|
this.options = options;
|
|
26
|
+
this.getUserId = getUserId;
|
|
25
27
|
}
|
|
26
28
|
start() {
|
|
27
29
|
if (this.started) {
|
|
@@ -32,8 +34,8 @@ export class FileSyncWatcher {
|
|
|
32
34
|
const memoryMdPath = join(this.workspaceDir, "MEMORY.md");
|
|
33
35
|
const memoryDir = join(this.workspaceDir, "memory");
|
|
34
36
|
const sessionsDir = join(this.workspaceDir, "sessions");
|
|
35
|
-
this.memoryMdSync = new MemoryMdSync(memoryMdPath, this.client, `${this.sessionPrefix}:memory-md`, this.logger, this.retryQueue, this.workspaceDir);
|
|
36
|
-
this.dailyLogsSync = new DailyLogsSync(this.client, this.sessionPrefix, this.logger, this.retryQueue, memoryDir);
|
|
37
|
+
this.memoryMdSync = new MemoryMdSync(memoryMdPath, this.client, `${this.sessionPrefix}:memory-md`, this.logger, this.retryQueue, this.workspaceDir, this.getUserId);
|
|
38
|
+
this.dailyLogsSync = new DailyLogsSync(this.client, this.sessionPrefix, this.logger, this.retryQueue, memoryDir, this.getUserId);
|
|
37
39
|
this.watchPath(memoryMdPath, () => {
|
|
38
40
|
this.memoryMdSync?.onFileChange();
|
|
39
41
|
}, "File sync: watching MEMORY.md", "File sync: MEMORY.md not found, skipping");
|
|
@@ -45,7 +47,7 @@ export class FileSyncWatcher {
|
|
|
45
47
|
}, "File sync: watching memory/*.md", "File sync: memory/ directory not found, skipping", { recursive: true });
|
|
46
48
|
// Watch sessions/*.jsonl (transcripts)
|
|
47
49
|
if (this.options.transcripts !== false) {
|
|
48
|
-
this.transcriptsSync = new TranscriptsSync(this.client, this.sessionPrefix, this.logger, this.retryQueue, sessionsDir);
|
|
50
|
+
this.transcriptsSync = new TranscriptsSync(this.client, this.sessionPrefix, this.logger, this.retryQueue, sessionsDir, this.getUserId);
|
|
49
51
|
this.watchPath(sessionsDir, (_event, filename) => {
|
|
50
52
|
if (typeof filename !== "string" || !filename.endsWith(".jsonl"))
|
|
51
53
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/features/sync/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAaxD,MAAM,OAAO,eAAe;IAQhB;IACA;IACA;IACA;IACA;IACA;
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/features/sync/watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import plugin from "./
|
|
1
|
+
import plugin from "./plugin/index.js";
|
|
2
2
|
export default plugin;
|
|
3
|
-
export { CortexClient } from "./cortex/client.js";
|
|
4
|
-
export { CortexConfigSchema, type CortexConfig } from "./
|
|
3
|
+
export { CortexClient } from "./adapters/cortex/client.js";
|
|
4
|
+
export { CortexConfigSchema, type CortexConfig } from "./plugin/config/schema.js";
|
|
5
5
|
export { createRecallHandler } from "./features/recall/handler.js";
|
|
6
6
|
export { createCaptureHandler } from "./features/capture/handler.js";
|
|
7
7
|
export { FileSyncWatcher } from "./features/sync/watcher.js";
|
|
8
|
-
export { RetryQueue } from "./
|
|
9
|
-
export { LatencyMetrics } from "./
|
|
10
|
-
export { PeriodicReflect } from "./features/reflect/service.js";
|
|
8
|
+
export { RetryQueue } from "./internal/queue/retry-queue.js";
|
|
9
|
+
export { LatencyMetrics } from "./internal/metrics/latency-metrics.js";
|
|
11
10
|
export { formatMemories } from "./features/recall/formatter.js";
|
|
12
|
-
export { cleanTranscript, cleanTranscriptChunk } from "./
|
|
11
|
+
export { cleanTranscript, cleanTranscriptChunk } from "./internal/transcript/cleaner.js";
|
|
13
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,eAAe,MAAM,CAAC;AAGtB,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import plugin from "./
|
|
1
|
+
import plugin from "./plugin/index.js";
|
|
2
2
|
export default plugin;
|
|
3
3
|
// Named exports for testing / advanced usage
|
|
4
|
-
export { CortexClient } from "./cortex/client.js";
|
|
5
|
-
export { CortexConfigSchema } from "./
|
|
4
|
+
export { CortexClient } from "./adapters/cortex/client.js";
|
|
5
|
+
export { CortexConfigSchema } from "./plugin/config/schema.js";
|
|
6
6
|
export { createRecallHandler } from "./features/recall/handler.js";
|
|
7
7
|
export { createCaptureHandler } from "./features/capture/handler.js";
|
|
8
8
|
export { FileSyncWatcher } from "./features/sync/watcher.js";
|
|
9
|
-
export { RetryQueue } from "./
|
|
10
|
-
export { LatencyMetrics } from "./
|
|
11
|
-
export { PeriodicReflect } from "./features/reflect/service.js";
|
|
9
|
+
export { RetryQueue } from "./internal/queue/retry-queue.js";
|
|
10
|
+
export { LatencyMetrics } from "./internal/metrics/latency-metrics.js";
|
|
12
11
|
export { formatMemories } from "./features/recall/formatter.js";
|
|
13
|
-
export { cleanTranscript, cleanTranscriptChunk } from "./
|
|
12
|
+
export { cleanTranscript, cleanTranscriptChunk } from "./internal/transcript/cleaner.js";
|
|
14
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,eAAe,MAAM,CAAC;AAEtB,6CAA6C;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAqB,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-path.d.ts","sourceRoot":"","sources":["../../../src/internal/fs/safe-path.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-path.js","sourceRoot":"","sources":["../../../src/internal/fs/safe-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAgB,EAChB,WAAmB;IAEnB,IAAI,CAAC;QACH,sCAAsC;QACtC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mDAAmD;QACnD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;QAElD,sDAAsD;QACtD,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC;YAChD,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;QAExB,IAAI,SAAS,KAAK,aAAa,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Cortex API key is injected at publish time by scripts/inject-api-key.mjs.
|
|
3
|
+
* In source this is a placeholder; the dist file contains the real value.
|
|
4
|
+
* Never commit a real key here.
|
|
5
|
+
*/
|
|
6
|
+
export declare const BAKED_API_KEY = "__OPENCLAW_API_KEY__";
|
|
7
|
+
//# sourceMappingURL=api-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key.d.ts","sourceRoot":"","sources":["../../../src/internal/identity/api-key.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,aAAa,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Cortex API key is injected at publish time by scripts/inject-api-key.mjs.
|
|
3
|
+
* In source this is a placeholder; the dist file contains the real value.
|
|
4
|
+
* Never commit a real key here.
|
|
5
|
+
*/
|
|
6
|
+
export const BAKED_API_KEY = "95134e1c-7c62-42d2-8672-c1ebee09553e";
|
|
7
|
+
//# sourceMappingURL=api-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-key.js","sourceRoot":"","sources":["../../../src/internal/identity/api-key.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loads the persistent Cortex user ID for this installation.
|
|
3
|
+
* If it doesn't exist yet, generates a new UUID, persists it, and returns it.
|
|
4
|
+
* The ID is stored at ~/.openclaw/cortex-user-id and survives across sessions
|
|
5
|
+
* and workspace changes.
|
|
6
|
+
*/
|
|
7
|
+
export declare function loadOrCreateUserId(): Promise<string>;
|
|
8
|
+
//# sourceMappingURL=user-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-id.d.ts","sourceRoot":"","sources":["../../../src/internal/identity/user-id.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAiB1D"}
|