@ubundi/openclaw-cortex 0.7.0 → 1.0.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 +26 -6
- package/dist/adapters/cortex/client.d.ts +1 -7
- package/dist/adapters/cortex/client.d.ts.map +1 -1
- package/dist/adapters/cortex/client.js +2 -4
- package/dist/adapters/cortex/client.js.map +1 -1
- package/dist/core/config/schema.d.ts +61 -0
- package/dist/core/config/schema.d.ts.map +1 -0
- package/dist/core/config/schema.js +39 -0
- package/dist/core/config/schema.js.map +1 -0
- package/dist/core/plugin.d.ts +61 -0
- package/dist/core/plugin.d.ts.map +1 -0
- package/dist/core/plugin.js +147 -0
- package/dist/core/plugin.js.map +1 -0
- package/dist/cortex/client.d.ts +142 -0
- package/dist/cortex/client.d.ts.map +1 -0
- package/dist/cortex/client.js +145 -0
- package/dist/cortex/client.js.map +1 -0
- package/dist/features/capture/handler.d.ts +1 -1
- package/dist/features/capture/handler.d.ts.map +1 -1
- package/dist/features/capture/handler.js +6 -29
- package/dist/features/capture/handler.js.map +1 -1
- package/dist/features/reflect/service.d.ts +19 -0
- package/dist/features/reflect/service.d.ts.map +1 -0
- package/dist/features/reflect/service.js +38 -0
- package/dist/features/reflect/service.js.map +1 -0
- package/dist/internal/identity/api-key.js +1 -1
- package/dist/plugin/config/schema.d.ts +0 -5
- package/dist/plugin/config/schema.d.ts.map +1 -1
- package/dist/plugin/config/schema.js +0 -1
- package/dist/plugin/config/schema.js.map +1 -1
- package/dist/plugin/index.d.ts +0 -2
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +9 -25
- package/dist/plugin/index.js.map +1 -1
- package/dist/shared/fs/safe-path.d.ts +8 -0
- package/dist/shared/fs/safe-path.d.ts.map +1 -0
- package/dist/shared/fs/safe-path.js +32 -0
- package/dist/shared/fs/safe-path.js.map +1 -0
- package/dist/shared/metrics/latency-metrics.d.ts +19 -0
- package/dist/shared/metrics/latency-metrics.d.ts.map +1 -0
- package/dist/shared/metrics/latency-metrics.js +45 -0
- package/dist/shared/metrics/latency-metrics.js.map +1 -0
- package/dist/shared/queue/retry-queue.d.ts +31 -0
- package/dist/shared/queue/retry-queue.d.ts.map +1 -0
- package/dist/shared/queue/retry-queue.js +115 -0
- package/dist/shared/queue/retry-queue.js.map +1 -0
- package/dist/shared/transcript/cleaner.d.ts +24 -0
- package/dist/shared/transcript/cleaner.d.ts.map +1 -0
- package/dist/shared/transcript/cleaner.js +96 -0
- package/dist/shared/transcript/cleaner.js.map +1 -0
- package/openclaw.plugin.json +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
export type NodeType = "FACT" | "ENTITY" | "EMOTION" | "INSIGHT" | "VALUE" | "BELIEF" | "LIFECONTEXT" | "SESSION" | "COMMUNITY";
|
|
2
|
+
export interface RetrieveResultMetadata {
|
|
3
|
+
speaker?: string;
|
|
4
|
+
fact_type?: string;
|
|
5
|
+
entity_refs?: string[];
|
|
6
|
+
occurred_at?: string | null;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
}
|
|
9
|
+
export interface RetrieveResult {
|
|
10
|
+
node_id: string;
|
|
11
|
+
type: NodeType;
|
|
12
|
+
content: string;
|
|
13
|
+
score: number;
|
|
14
|
+
source?: string;
|
|
15
|
+
confidence?: number;
|
|
16
|
+
metadata?: RetrieveResultMetadata;
|
|
17
|
+
}
|
|
18
|
+
export interface RetrieveResponse {
|
|
19
|
+
results: RetrieveResult[];
|
|
20
|
+
}
|
|
21
|
+
export interface IngestFact {
|
|
22
|
+
core: string;
|
|
23
|
+
fact_type: string;
|
|
24
|
+
occurred_at: string | null;
|
|
25
|
+
entity_refs: string[];
|
|
26
|
+
speaker: string;
|
|
27
|
+
}
|
|
28
|
+
export interface IngestEntity {
|
|
29
|
+
name: string;
|
|
30
|
+
type: string;
|
|
31
|
+
aliases: string[];
|
|
32
|
+
}
|
|
33
|
+
export interface IngestResponse {
|
|
34
|
+
nodes_created: number;
|
|
35
|
+
edges_created: number;
|
|
36
|
+
facts: IngestFact[];
|
|
37
|
+
entities: IngestEntity[];
|
|
38
|
+
}
|
|
39
|
+
export interface ReflectResponse {
|
|
40
|
+
nodes_created: number;
|
|
41
|
+
edges_created: number;
|
|
42
|
+
entities_processed: number;
|
|
43
|
+
entities_skipped: number;
|
|
44
|
+
}
|
|
45
|
+
export interface WarmupResponse {
|
|
46
|
+
tenant_id: string;
|
|
47
|
+
already_warm: boolean;
|
|
48
|
+
}
|
|
49
|
+
export interface ConversationMessage {
|
|
50
|
+
role: string;
|
|
51
|
+
content: string;
|
|
52
|
+
}
|
|
53
|
+
export type QueryType = "factual" | "emotional" | "combined";
|
|
54
|
+
export interface BatchIngestItem {
|
|
55
|
+
text: string;
|
|
56
|
+
session_id?: string;
|
|
57
|
+
reference_date?: string;
|
|
58
|
+
}
|
|
59
|
+
export interface BatchIngestResponse {
|
|
60
|
+
results: IngestResponse[];
|
|
61
|
+
total_nodes_created: number;
|
|
62
|
+
total_edges_created: number;
|
|
63
|
+
failed_count: number;
|
|
64
|
+
errors: string[];
|
|
65
|
+
}
|
|
66
|
+
export interface HealthCheckResponse {
|
|
67
|
+
status: string;
|
|
68
|
+
}
|
|
69
|
+
export interface JobSubmitResponse {
|
|
70
|
+
job_id: string;
|
|
71
|
+
status: string;
|
|
72
|
+
}
|
|
73
|
+
export interface RecallMemory {
|
|
74
|
+
content: string;
|
|
75
|
+
confidence: number;
|
|
76
|
+
when: string | null;
|
|
77
|
+
session_id: string | null;
|
|
78
|
+
entities: string[];
|
|
79
|
+
}
|
|
80
|
+
export interface RecallResponse {
|
|
81
|
+
memories: RecallMemory[];
|
|
82
|
+
}
|
|
83
|
+
export interface RememberResponse {
|
|
84
|
+
session_id: string | null;
|
|
85
|
+
memories_created: number;
|
|
86
|
+
entities_found: string[];
|
|
87
|
+
facts: string[];
|
|
88
|
+
}
|
|
89
|
+
export interface ForgetResponse {
|
|
90
|
+
memories_removed: number;
|
|
91
|
+
}
|
|
92
|
+
export interface KnowledgeEntity {
|
|
93
|
+
name: string;
|
|
94
|
+
memory_count: number;
|
|
95
|
+
last_seen: string;
|
|
96
|
+
}
|
|
97
|
+
export interface KnowledgeResponse {
|
|
98
|
+
total_memories: number;
|
|
99
|
+
total_sessions: number;
|
|
100
|
+
maturity: "cold" | "warming" | "mature";
|
|
101
|
+
entities: KnowledgeEntity[];
|
|
102
|
+
}
|
|
103
|
+
export interface StatsResponse {
|
|
104
|
+
pipeline_tier: 1 | 2 | 3;
|
|
105
|
+
pipeline_maturity: "cold" | "warming" | "mature";
|
|
106
|
+
[key: string]: unknown;
|
|
107
|
+
}
|
|
108
|
+
export declare class CortexClient {
|
|
109
|
+
private baseUrl;
|
|
110
|
+
private apiKey;
|
|
111
|
+
constructor(baseUrl: string, apiKey: string);
|
|
112
|
+
private fetchJsonWithTimeout;
|
|
113
|
+
private fetchRequest;
|
|
114
|
+
healthCheck(timeoutMs?: number): Promise<boolean>;
|
|
115
|
+
warmup(timeoutMs?: number): Promise<WarmupResponse>;
|
|
116
|
+
retrieve(query: string, topK: number, mode: "fast" | "full", timeoutMs: number, queryType?: QueryType, options?: {
|
|
117
|
+
referenceDate?: string;
|
|
118
|
+
debug?: boolean;
|
|
119
|
+
}): Promise<RetrieveResponse>;
|
|
120
|
+
ingest(text: string, sessionId?: string, timeoutMs?: number, referenceDate?: string): Promise<IngestResponse>;
|
|
121
|
+
ingestConversation(messages: ConversationMessage[], sessionId?: string, timeoutMs?: number, referenceDate?: string): Promise<IngestResponse>;
|
|
122
|
+
getJob(jobId: string): Promise<JobSubmitResponse & {
|
|
123
|
+
result?: IngestResponse;
|
|
124
|
+
error?: string;
|
|
125
|
+
}>;
|
|
126
|
+
submitIngest(text: string, sessionId?: string, referenceDate?: string): Promise<JobSubmitResponse>;
|
|
127
|
+
submitIngestConversation(messages: ConversationMessage[], sessionId?: string, referenceDate?: string): Promise<JobSubmitResponse>;
|
|
128
|
+
batchIngest(items: BatchIngestItem[], timeoutMs?: number): Promise<BatchIngestResponse>;
|
|
129
|
+
reflect(sessionId?: string, timeoutMs?: number): Promise<ReflectResponse>;
|
|
130
|
+
remember(text: string, sessionId?: string, timeoutMs?: number, referenceDate?: string): Promise<RememberResponse>;
|
|
131
|
+
rememberConversation(messages: ConversationMessage[], sessionId?: string, timeoutMs?: number, referenceDate?: string): Promise<RememberResponse>;
|
|
132
|
+
recall(query: string, timeoutMs?: number, options?: {
|
|
133
|
+
limit?: number;
|
|
134
|
+
context?: string;
|
|
135
|
+
sessionFilter?: string;
|
|
136
|
+
}): Promise<RecallResponse>;
|
|
137
|
+
forgetSession(sessionId: string, timeoutMs?: number): Promise<ForgetResponse>;
|
|
138
|
+
forgetEntity(entityName: string, timeoutMs?: number): Promise<ForgetResponse>;
|
|
139
|
+
knowledge(timeoutMs?: number): Promise<KnowledgeResponse>;
|
|
140
|
+
stats(timeoutMs?: number): Promise<StatsResponse>;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/cortex/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
// --- Internal API Defaults ---
|
|
2
|
+
const DEFAULT_INGEST_TIMEOUT_MS = 45_000;
|
|
3
|
+
const DEFAULT_SUBMIT_TIMEOUT_MS = 10_000;
|
|
4
|
+
const DEFAULT_REFLECT_TIMEOUT_MS = 30_000;
|
|
5
|
+
const DEFAULT_HEALTH_TIMEOUT_MS = 5_000;
|
|
6
|
+
const DEFAULT_WARMUP_TIMEOUT_MS = 60_000;
|
|
7
|
+
// --- Agent API Defaults ---
|
|
8
|
+
const DEFAULT_REMEMBER_TIMEOUT_MS = 45_000;
|
|
9
|
+
const DEFAULT_RECALL_TIMEOUT_MS = 10_000;
|
|
10
|
+
export class CortexClient {
|
|
11
|
+
baseUrl;
|
|
12
|
+
apiKey;
|
|
13
|
+
constructor(baseUrl, apiKey) {
|
|
14
|
+
this.baseUrl = baseUrl;
|
|
15
|
+
this.apiKey = apiKey;
|
|
16
|
+
}
|
|
17
|
+
async fetchJsonWithTimeout(url, body, timeoutMs, label) {
|
|
18
|
+
return this.fetchRequest(url, { method: "POST", body: JSON.stringify(body) }, timeoutMs, label);
|
|
19
|
+
}
|
|
20
|
+
async fetchRequest(url, init, timeoutMs, label) {
|
|
21
|
+
const controller = new AbortController();
|
|
22
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
23
|
+
try {
|
|
24
|
+
const res = await fetch(url, {
|
|
25
|
+
...init,
|
|
26
|
+
headers: {
|
|
27
|
+
"x-api-key": this.apiKey,
|
|
28
|
+
"Content-Type": "application/json",
|
|
29
|
+
...init.headers,
|
|
30
|
+
},
|
|
31
|
+
signal: controller.signal,
|
|
32
|
+
});
|
|
33
|
+
if (!res.ok) {
|
|
34
|
+
throw new Error(`Cortex ${label} failed: ${res.status}`);
|
|
35
|
+
}
|
|
36
|
+
return (await res.json());
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
clearTimeout(timeout);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async healthCheck(timeoutMs = DEFAULT_HEALTH_TIMEOUT_MS) {
|
|
43
|
+
const controller = new AbortController();
|
|
44
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
45
|
+
try {
|
|
46
|
+
const res = await fetch(`${this.baseUrl}/health`, {
|
|
47
|
+
method: "GET",
|
|
48
|
+
headers: { "x-api-key": this.apiKey },
|
|
49
|
+
signal: controller.signal,
|
|
50
|
+
});
|
|
51
|
+
return res.ok;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
clearTimeout(timeout);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async warmup(timeoutMs = DEFAULT_WARMUP_TIMEOUT_MS) {
|
|
61
|
+
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/warmup`, {}, timeoutMs, "warmup");
|
|
62
|
+
}
|
|
63
|
+
async retrieve(query, topK, mode, timeoutMs, queryType, options) {
|
|
64
|
+
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/retrieve`, {
|
|
65
|
+
query,
|
|
66
|
+
top_k: topK,
|
|
67
|
+
mode,
|
|
68
|
+
query_type: queryType,
|
|
69
|
+
reference_date: options?.referenceDate ?? undefined,
|
|
70
|
+
debug: options?.debug ?? undefined,
|
|
71
|
+
}, timeoutMs, "retrieve");
|
|
72
|
+
}
|
|
73
|
+
async ingest(text, sessionId, timeoutMs = DEFAULT_INGEST_TIMEOUT_MS, referenceDate) {
|
|
74
|
+
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/ingest`, { text, session_id: sessionId, reference_date: referenceDate ?? null }, timeoutMs, "ingest");
|
|
75
|
+
}
|
|
76
|
+
async ingestConversation(messages, sessionId, timeoutMs = DEFAULT_INGEST_TIMEOUT_MS, referenceDate) {
|
|
77
|
+
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/ingest/conversation`, { messages, session_id: sessionId, reference_date: referenceDate ?? null }, timeoutMs, "ingest/conversation");
|
|
78
|
+
}
|
|
79
|
+
async getJob(jobId) {
|
|
80
|
+
const controller = new AbortController();
|
|
81
|
+
const timeout = setTimeout(() => controller.abort(), DEFAULT_SUBMIT_TIMEOUT_MS);
|
|
82
|
+
try {
|
|
83
|
+
const res = await fetch(`${this.baseUrl}/v1/jobs/${jobId}`, {
|
|
84
|
+
method: "GET",
|
|
85
|
+
headers: { "x-api-key": this.apiKey },
|
|
86
|
+
signal: controller.signal,
|
|
87
|
+
});
|
|
88
|
+
if (!res.ok) {
|
|
89
|
+
throw new Error(`Cortex job status failed: ${res.status}`);
|
|
90
|
+
}
|
|
91
|
+
return (await res.json());
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
clearTimeout(timeout);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async submitIngest(text, sessionId, referenceDate) {
|
|
98
|
+
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/jobs/ingest`, { text, session_id: sessionId, reference_date: referenceDate ?? null }, DEFAULT_SUBMIT_TIMEOUT_MS, "jobs/ingest");
|
|
99
|
+
}
|
|
100
|
+
async submitIngestConversation(messages, sessionId, referenceDate) {
|
|
101
|
+
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/jobs/ingest/conversation`, { messages, session_id: sessionId, reference_date: referenceDate ?? null }, DEFAULT_SUBMIT_TIMEOUT_MS, "jobs/ingest/conversation");
|
|
102
|
+
}
|
|
103
|
+
async batchIngest(items, timeoutMs = DEFAULT_INGEST_TIMEOUT_MS) {
|
|
104
|
+
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/ingest/batch`, { items }, timeoutMs, "ingest/batch");
|
|
105
|
+
}
|
|
106
|
+
async reflect(sessionId, timeoutMs = DEFAULT_REFLECT_TIMEOUT_MS) {
|
|
107
|
+
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/reflect`, { session_id: sessionId }, timeoutMs, "reflect");
|
|
108
|
+
}
|
|
109
|
+
// --- Agent API Methods ---
|
|
110
|
+
async remember(text, sessionId, timeoutMs = DEFAULT_REMEMBER_TIMEOUT_MS, referenceDate) {
|
|
111
|
+
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/remember`, {
|
|
112
|
+
text,
|
|
113
|
+
session_id: sessionId ?? null,
|
|
114
|
+
reference_date: referenceDate ?? null,
|
|
115
|
+
}, timeoutMs, "remember");
|
|
116
|
+
}
|
|
117
|
+
async rememberConversation(messages, sessionId, timeoutMs = DEFAULT_REMEMBER_TIMEOUT_MS, referenceDate) {
|
|
118
|
+
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/remember`, {
|
|
119
|
+
messages,
|
|
120
|
+
session_id: sessionId ?? null,
|
|
121
|
+
reference_date: referenceDate ?? null,
|
|
122
|
+
}, timeoutMs, "remember");
|
|
123
|
+
}
|
|
124
|
+
async recall(query, timeoutMs = DEFAULT_RECALL_TIMEOUT_MS, options) {
|
|
125
|
+
return this.fetchJsonWithTimeout(`${this.baseUrl}/v1/recall`, {
|
|
126
|
+
query,
|
|
127
|
+
limit: options?.limit ?? undefined,
|
|
128
|
+
context: options?.context ?? undefined,
|
|
129
|
+
session_filter: options?.sessionFilter ?? undefined,
|
|
130
|
+
}, timeoutMs, "recall");
|
|
131
|
+
}
|
|
132
|
+
async forgetSession(sessionId, timeoutMs = DEFAULT_RECALL_TIMEOUT_MS) {
|
|
133
|
+
return this.fetchRequest(`${this.baseUrl}/v1/forget/session/${encodeURIComponent(sessionId)}`, { method: "DELETE" }, timeoutMs, "forget/session");
|
|
134
|
+
}
|
|
135
|
+
async forgetEntity(entityName, timeoutMs = DEFAULT_RECALL_TIMEOUT_MS) {
|
|
136
|
+
return this.fetchRequest(`${this.baseUrl}/v1/forget/entity/${encodeURIComponent(entityName)}`, { method: "DELETE" }, timeoutMs, "forget/entity");
|
|
137
|
+
}
|
|
138
|
+
async knowledge(timeoutMs = DEFAULT_RECALL_TIMEOUT_MS) {
|
|
139
|
+
return this.fetchRequest(`${this.baseUrl}/v1/knowledge`, { method: "GET" }, timeoutMs, "knowledge");
|
|
140
|
+
}
|
|
141
|
+
async stats(timeoutMs = DEFAULT_RECALL_TIMEOUT_MS) {
|
|
142
|
+
return this.fetchRequest(`${this.baseUrl}/v1/stats`, { method: "GET" }, timeoutMs, "stats");
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/cortex/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,6 @@ type Logger = {
|
|
|
23
23
|
warn(...args: unknown[]): void;
|
|
24
24
|
error(...args: unknown[]): void;
|
|
25
25
|
};
|
|
26
|
-
export declare function createCaptureHandler(client: CortexClient, config: CortexConfig, logger: Logger, retryQueue?: RetryQueue, knowledgeState?: KnowledgeState, getUserId?: () => string | undefined, userIdReady?: Promise<void
|
|
26
|
+
export declare function createCaptureHandler(client: CortexClient, config: CortexConfig, logger: Logger, retryQueue?: RetryQueue, knowledgeState?: KnowledgeState, getUserId?: () => string | undefined, userIdReady?: Promise<void>): (event: AgentEndEvent) => Promise<void>;
|
|
27
27
|
export {};
|
|
28
28
|
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/features/capture/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,iCAAiC,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEtE,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;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;
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/features/capture/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,iCAAiC,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEtE,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;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;AAkCF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,UAAU,EACvB,cAAc,CAAC,EAAE,cAAc,EAC/B,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,EACpC,WAAW,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAMb,OAAO,aAAa,KAAG,OAAO,CAAC,IAAI,CAAC,CA0FnD"}
|
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
const MIN_CONTENT_LENGTH = 20;
|
|
2
|
-
/** Strip injected recall block so we don't re-ingest recalled memories as new content */
|
|
3
|
-
const RECALL_BLOCK_RE = /\s*<cortex_memories>[\s\S]*?<\/cortex_memories>\s*/g;
|
|
4
|
-
function stripRecallBlock(text) {
|
|
5
|
-
return text.replace(RECALL_BLOCK_RE, "").trim();
|
|
6
|
-
}
|
|
7
2
|
function extractContent(content) {
|
|
8
3
|
if (typeof content === "string")
|
|
9
4
|
return content;
|
|
@@ -33,7 +28,7 @@ function isWorthCapturing(messages) {
|
|
|
33
28
|
const KNOWLEDGE_REFRESH_EVERY_N = 5;
|
|
34
29
|
/** Minimum interval between knowledge refreshes */
|
|
35
30
|
const KNOWLEDGE_REFRESH_MIN_INTERVAL_MS = 5 * 60_000; // 5 minutes
|
|
36
|
-
export function createCaptureHandler(client, config, logger, retryQueue, knowledgeState, getUserId, userIdReady
|
|
31
|
+
export function createCaptureHandler(client, config, logger, retryQueue, knowledgeState, getUserId, userIdReady) {
|
|
37
32
|
let captureCounter = 0;
|
|
38
33
|
let lastCapturedAt = 0;
|
|
39
34
|
let capturesSinceRefresh = 0;
|
|
@@ -54,7 +49,7 @@ export function createCaptureHandler(client, config, logger, retryQueue, knowled
|
|
|
54
49
|
"content" in msg)
|
|
55
50
|
.map((msg) => ({
|
|
56
51
|
role: String(msg.role),
|
|
57
|
-
content:
|
|
52
|
+
content: extractContent(msg.content),
|
|
58
53
|
}))
|
|
59
54
|
.filter((msg) => msg.content.length > 0);
|
|
60
55
|
if (!isWorthCapturing(normalized)) {
|
|
@@ -64,37 +59,19 @@ export function createCaptureHandler(client, config, logger, retryQueue, knowled
|
|
|
64
59
|
// API caps at 200 messages — take the most recent to stay within the limit
|
|
65
60
|
const MAX_MESSAGES = 200;
|
|
66
61
|
const trimmed = normalized.length > MAX_MESSAGES ? normalized.slice(-MAX_MESSAGES) : normalized;
|
|
67
|
-
const totalChars = trimmed.reduce((sum, m) => sum + m.content.length, 0);
|
|
68
|
-
logger.info(`Cortex capture: ${trimmed.length} messages, ${totalChars} chars`);
|
|
69
62
|
// Advance watermark before async work so a second turn doesn't re-send this delta
|
|
70
63
|
lastCapturedAt = event.messages.length;
|
|
71
64
|
// Ensure userId is resolved before sending — in practice this resolves in <100ms
|
|
72
65
|
// at startup, well before agent_end fires, but we await explicitly to be correct.
|
|
73
66
|
if (userIdReady)
|
|
74
67
|
await userIdReady;
|
|
75
|
-
const sessionId = event.sessionKey ?? event.sessionId
|
|
76
|
-
logger.debug?.(`Cortex capture: sessionId=${sessionId}, userId=${getUserId?.()}`);
|
|
77
|
-
// Flatten messages into a role: content transcript for ingestion
|
|
78
|
-
const transcript = trimmed
|
|
79
|
-
.map((m) => `${m.role}: ${m.content}`)
|
|
80
|
-
.join("\n\n");
|
|
81
|
-
// Log a summary of what's being sent
|
|
82
|
-
const roleCounts = {};
|
|
83
|
-
for (const m of trimmed) {
|
|
84
|
-
roleCounts[m.role] = (roleCounts[m.role] ?? 0) + 1;
|
|
85
|
-
}
|
|
86
|
-
const roleBreakdown = Object.entries(roleCounts).map(([r, n]) => `${r}=${n}`).join(", ");
|
|
87
|
-
const preview = transcript.length > 300 ? transcript.slice(0, 300) + "…" : transcript;
|
|
88
|
-
logger.info(`Cortex capture summary: ${trimmed.length} msgs (${roleBreakdown}), ${transcript.length} chars, sessionId=${sessionId}\n--- transcript preview ---\n${preview}\n--- end preview ---`);
|
|
68
|
+
const sessionId = event.sessionKey ?? event.sessionId;
|
|
89
69
|
const doRemember = async () => {
|
|
90
70
|
// Re-evaluate userId at call time so retries pick up the resolved value
|
|
91
71
|
const userId = getUserId?.();
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const job = await client.submitIngest(transcript, sessionId, new Date().toISOString(), userId);
|
|
96
|
-
logger.info(`Cortex capture: submitted job ${job.job_id} (status=${job.status})`);
|
|
97
|
-
if (knowledgeState) {
|
|
72
|
+
const res = await client.rememberConversation(trimmed, sessionId, undefined, undefined, userId);
|
|
73
|
+
logger.info(`Cortex capture: remembered ${res.memories_created} memories`);
|
|
74
|
+
if (knowledgeState && res.memories_created > 0) {
|
|
98
75
|
knowledgeState.hasMemories = true;
|
|
99
76
|
}
|
|
100
77
|
// Periodically refresh knowledge state so totalSessions (and thus
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/features/capture/handler.ts"],"names":[],"mappings":"AA4BA,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/features/capture/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CortexClient } from "../../cortex/client.js";
|
|
2
|
+
type Logger = {
|
|
3
|
+
debug?(...args: unknown[]): void;
|
|
4
|
+
info(...args: unknown[]): void;
|
|
5
|
+
warn(...args: unknown[]): void;
|
|
6
|
+
error(...args: unknown[]): void;
|
|
7
|
+
};
|
|
8
|
+
export declare class PeriodicReflect {
|
|
9
|
+
private client;
|
|
10
|
+
private logger;
|
|
11
|
+
private intervalMs;
|
|
12
|
+
private timer;
|
|
13
|
+
constructor(client: CortexClient, logger: Logger, intervalMs?: number);
|
|
14
|
+
start(): void;
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
stop(): void;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/features/reflect/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,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,eAAe;IAIxB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,KAAK,CAA+C;gBAGlD,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,SAAsB;IAG1C,KAAK,IAAI,IAAI;IAYP,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1B,IAAI,IAAI,IAAI;CAMb"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const DEFAULT_INTERVAL_MS = 60 * 60 * 1000; // 1 hour
|
|
2
|
+
export class PeriodicReflect {
|
|
3
|
+
client;
|
|
4
|
+
logger;
|
|
5
|
+
intervalMs;
|
|
6
|
+
timer = null;
|
|
7
|
+
constructor(client, logger, intervalMs = DEFAULT_INTERVAL_MS) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
this.logger = logger;
|
|
10
|
+
this.intervalMs = intervalMs;
|
|
11
|
+
}
|
|
12
|
+
start() {
|
|
13
|
+
if (this.timer)
|
|
14
|
+
return;
|
|
15
|
+
this.timer = setInterval(() => {
|
|
16
|
+
this.run().catch((err) => {
|
|
17
|
+
this.logger.warn(`Periodic reflect failed: ${String(err)}`);
|
|
18
|
+
});
|
|
19
|
+
}, this.intervalMs);
|
|
20
|
+
this.logger.debug?.(`Periodic reflect: scheduled every ${this.intervalMs / 1000}s`);
|
|
21
|
+
}
|
|
22
|
+
async run() {
|
|
23
|
+
try {
|
|
24
|
+
const result = await this.client.reflect();
|
|
25
|
+
this.logger.info(`Reflect: synthesized ${result.nodes_created} nodes, ${result.edges_created} edges (${result.entities_processed} entities processed, ${result.entities_skipped} skipped)`);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
this.logger.warn(`Reflect failed: ${String(err)}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
stop() {
|
|
32
|
+
if (this.timer) {
|
|
33
|
+
clearInterval(this.timer);
|
|
34
|
+
this.timer = null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/features/reflect/service.ts"],"names":[],"mappings":"AASA,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAErD,MAAM,OAAO,eAAe;IAIhB;IACA;IACA;IALF,KAAK,GAA0C,IAAI,CAAC;IAE5D,YACU,MAAoB,EACpB,MAAc,EACd,aAAa,mBAAmB;QAFhC,WAAM,GAAN,MAAM,CAAc;QACpB,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAsB;IACvC,CAAC;IAEJ,KAAK;QACH,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QAEvB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,qCAAqC,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,GAAG;QACP,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,wBAAwB,MAAM,CAAC,aAAa,WAAW,MAAM,CAAC,aAAa,WAAW,MAAM,CAAC,kBAAkB,wBAAwB,MAAM,CAAC,gBAAgB,WAAW,CAC1K,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* In source this is a placeholder; the dist file contains the real value.
|
|
4
4
|
* Never commit a real key here.
|
|
5
5
|
*/
|
|
6
|
-
export const BAKED_API_KEY = "
|
|
6
|
+
export const BAKED_API_KEY = "__OPENCLAW_API_KEY__";
|
|
7
7
|
//# sourceMappingURL=api-key.js.map
|
|
@@ -6,7 +6,6 @@ export declare const CortexConfigSchema: z.ZodObject<{
|
|
|
6
6
|
autoCapture: z.ZodDefault<z.ZodBoolean>;
|
|
7
7
|
recallLimit: z.ZodDefault<z.ZodNumber>;
|
|
8
8
|
recallTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
9
|
-
toolTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
10
9
|
fileSync: z.ZodDefault<z.ZodBoolean>;
|
|
11
10
|
transcriptSync: z.ZodDefault<z.ZodBoolean>;
|
|
12
11
|
namespace: z.ZodDefault<z.ZodString>;
|
|
@@ -16,7 +15,6 @@ export declare const CortexConfigSchema: z.ZodObject<{
|
|
|
16
15
|
autoCapture: boolean;
|
|
17
16
|
recallLimit: number;
|
|
18
17
|
recallTimeoutMs: number;
|
|
19
|
-
toolTimeoutMs: number;
|
|
20
18
|
fileSync: boolean;
|
|
21
19
|
transcriptSync: boolean;
|
|
22
20
|
namespace: string;
|
|
@@ -28,7 +26,6 @@ export declare const CortexConfigSchema: z.ZodObject<{
|
|
|
28
26
|
autoCapture?: boolean | undefined;
|
|
29
27
|
recallLimit?: number | undefined;
|
|
30
28
|
recallTimeoutMs?: number | undefined;
|
|
31
|
-
toolTimeoutMs?: number | undefined;
|
|
32
29
|
fileSync?: boolean | undefined;
|
|
33
30
|
transcriptSync?: boolean | undefined;
|
|
34
31
|
namespace?: string | undefined;
|
|
@@ -46,7 +43,6 @@ export declare const configSchema: {
|
|
|
46
43
|
autoCapture?: boolean | undefined;
|
|
47
44
|
recallLimit?: number | undefined;
|
|
48
45
|
recallTimeoutMs?: number | undefined;
|
|
49
|
-
toolTimeoutMs?: number | undefined;
|
|
50
46
|
fileSync?: boolean | undefined;
|
|
51
47
|
transcriptSync?: boolean | undefined;
|
|
52
48
|
namespace?: string | undefined;
|
|
@@ -56,7 +52,6 @@ export declare const configSchema: {
|
|
|
56
52
|
autoCapture: boolean;
|
|
57
53
|
recallLimit: number;
|
|
58
54
|
recallTimeoutMs: number;
|
|
59
|
-
toolTimeoutMs: number;
|
|
60
55
|
fileSync: boolean;
|
|
61
56
|
transcriptSync: boolean;
|
|
62
57
|
namespace: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/plugin/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwBxB,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/plugin/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwBxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,YAAY;qBACN,OAAO;;;;;;;;;;;;;;;;;;;;;CAGzB,CAAC"}
|
|
@@ -23,7 +23,6 @@ export const CortexConfigSchema = z.object({
|
|
|
23
23
|
autoCapture: z.boolean().default(true),
|
|
24
24
|
recallLimit: z.number().int().min(1).max(50).default(10),
|
|
25
25
|
recallTimeoutMs: z.number().int().min(100).max(10000).default(2000),
|
|
26
|
-
toolTimeoutMs: z.number().int().min(1000).max(30000).default(10000),
|
|
27
26
|
fileSync: z.boolean().default(true),
|
|
28
27
|
transcriptSync: z.boolean().default(true),
|
|
29
28
|
namespace: z.string().min(1).default("openclaw"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/plugin/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,QAAQ,GAAG,CAAC;KACf,MAAM,EAAE;KACR,GAAG,CAAC,6BAA6B,CAAC;KAClC,MAAM,CACL,CAAC,GAAG,EAAE,EAAE;IACN,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC9C,wDAAwD;IACxD,IACE,MAAM,CAAC,QAAQ,KAAK,OAAO;QAC3B,CAAC,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC,EACpE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,EACD,EAAE,OAAO,EAAE,0DAA0D,EAAE,CACxE,CAAC;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,QAAQ,CAAC,OAAO,CACvB,6DAA6D,CAC9D;IACD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACxD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACnE,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/plugin/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,QAAQ,GAAG,CAAC;KACf,MAAM,EAAE;KACR,GAAG,CAAC,6BAA6B,CAAC;KAClC,MAAM,CACL,CAAC,GAAG,EAAE,EAAE;IACN,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC9C,wDAAwD;IACxD,IACE,MAAM,CAAC,QAAQ,KAAK,OAAO;QAC3B,CAAC,MAAM,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC,EACpE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,EACD,EAAE,OAAO,EAAE,0DAA0D,EAAE,CACxE,CAAC;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,QAAQ,CAAC,OAAO,CACvB,6DAA6D,CAC9D;IACD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACxD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACnE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;CACjD,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,CAAC,KAAc;QACtB,OAAO,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC"}
|
package/dist/plugin/index.d.ts
CHANGED
|
@@ -82,7 +82,6 @@ declare const plugin: {
|
|
|
82
82
|
autoCapture?: boolean | undefined;
|
|
83
83
|
recallLimit?: number | undefined;
|
|
84
84
|
recallTimeoutMs?: number | undefined;
|
|
85
|
-
toolTimeoutMs?: number | undefined;
|
|
86
85
|
fileSync?: boolean | undefined;
|
|
87
86
|
transcriptSync?: boolean | undefined;
|
|
88
87
|
namespace?: string | undefined;
|
|
@@ -92,7 +91,6 @@ declare const plugin: {
|
|
|
92
91
|
autoCapture: boolean;
|
|
93
92
|
recallLimit: number;
|
|
94
93
|
recallTimeoutMs: number;
|
|
95
|
-
toolTimeoutMs: number;
|
|
96
94
|
fileSync: boolean;
|
|
97
95
|
transcriptSync: boolean;
|
|
98
96
|
namespace: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}
|