@oharness/engine 0.1.0 → 0.2.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 -0
- package/dist/agent/agent.d.ts +11 -0
- package/dist/agent/agent.js +30 -9
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/hooks.d.ts +2 -0
- package/dist/agent/hooks.js +11 -0
- package/dist/agent/hooks.js.map +1 -1
- package/dist/agent/memory.d.ts +10 -1
- package/dist/agent/memory.js +147 -49
- package/dist/agent/memory.js.map +1 -1
- package/dist/agent/permissions.js +21 -3
- package/dist/agent/permissions.js.map +1 -1
- package/dist/artifacts/publish.d.ts +2 -2
- package/dist/artifacts/publish.js +2 -2
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.js +1 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/manager.d.ts +14 -0
- package/dist/auth/manager.js +25 -5
- package/dist/auth/manager.js.map +1 -1
- package/dist/auth/providers/account.d.ts +10 -45
- package/dist/auth/providers/account.js +123 -233
- package/dist/auth/providers/account.js.map +1 -1
- package/dist/config-files.d.ts +27 -0
- package/dist/config-files.js +116 -0
- package/dist/config-files.js.map +1 -0
- package/dist/config.d.ts +5 -25
- package/dist/config.js +16 -2
- package/dist/config.js.map +1 -1
- package/dist/core/audit.d.ts +20 -0
- package/dist/core/audit.js +2 -0
- package/dist/core/audit.js.map +1 -0
- package/dist/harness.d.ts +35 -2
- package/dist/harness.js +162 -50
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/registry.d.ts +42 -0
- package/dist/providers/registry.js +71 -9
- package/dist/providers/registry.js.map +1 -1
- package/dist/runtime-plugins/audit.d.ts +11 -0
- package/dist/runtime-plugins/audit.js +31 -0
- package/dist/runtime-plugins/audit.js.map +1 -0
- package/dist/runtime-plugins/builtin/jsonl-audit.d.ts +7 -0
- package/dist/runtime-plugins/builtin/jsonl-audit.js +24 -0
- package/dist/runtime-plugins/builtin/jsonl-audit.js.map +1 -0
- package/dist/runtime-plugins/builtin/memory.d.ts +70 -0
- package/dist/runtime-plugins/builtin/memory.js +360 -0
- package/dist/runtime-plugins/builtin/memory.js.map +1 -0
- package/dist/runtime-plugins/cloud-connector.d.ts +56 -0
- package/dist/runtime-plugins/cloud-connector.js +261 -0
- package/dist/runtime-plugins/cloud-connector.js.map +1 -0
- package/dist/runtime-plugins/composio/client.d.ts +65 -0
- package/dist/runtime-plugins/composio/client.js +190 -0
- package/dist/runtime-plugins/composio/client.js.map +1 -0
- package/dist/runtime-plugins/composio/index.d.ts +23 -0
- package/dist/runtime-plugins/composio/index.js +113 -0
- package/dist/runtime-plugins/composio/index.js.map +1 -0
- package/dist/runtime-plugins/connector.d.ts +15 -0
- package/dist/runtime-plugins/connector.js +17 -0
- package/dist/runtime-plugins/connector.js.map +1 -0
- package/dist/runtime-plugins/extensions.d.ts +21 -0
- package/dist/runtime-plugins/extensions.js +23 -0
- package/dist/runtime-plugins/extensions.js.map +1 -0
- package/dist/runtime-plugins/host.d.ts +34 -0
- package/dist/runtime-plugins/host.js +263 -0
- package/dist/runtime-plugins/host.js.map +1 -0
- package/dist/runtime-plugins/index.d.ts +12 -0
- package/dist/runtime-plugins/index.js +7 -0
- package/dist/runtime-plugins/index.js.map +1 -0
- package/dist/runtime-plugins/loader.d.ts +5 -0
- package/dist/runtime-plugins/loader.js +36 -0
- package/dist/runtime-plugins/loader.js.map +1 -0
- package/dist/runtime-plugins/tool-adapter.d.ts +3 -0
- package/dist/runtime-plugins/tool-adapter.js +13 -0
- package/dist/runtime-plugins/tool-adapter.js.map +1 -0
- package/dist/runtime-plugins/types.d.ts +81 -0
- package/dist/runtime-plugins/types.js +2 -0
- package/dist/runtime-plugins/types.js.map +1 -0
- package/dist/sync/settings.d.ts +2 -0
- package/dist/sync/settings.js +17 -1
- package/dist/sync/settings.js.map +1 -1
- package/dist/tools/registry.d.ts +2 -0
- package/dist/tools/registry.js +10 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/types.d.ts +2 -0
- package/dist/tools/types.js.map +1 -1
- package/official.json +1 -2
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# @oharness/engine
|
|
2
|
+
|
|
3
|
+
The agent loop, and everything a frontend does not decide: tool execution,
|
|
4
|
+
context compaction, permissions, sessions, MCP, and the provider adapters.
|
|
5
|
+
|
|
6
|
+
Model-agnostic by construction. Anthropic, OpenAI (including any
|
|
7
|
+
OpenAI-compatible endpoint) and Gemini are all reached over plain `fetch` with
|
|
8
|
+
hand-written SSE parsing — no vendor SDKs — and a conversation can change model
|
|
9
|
+
mid-session without its history being converted, because the history is never
|
|
10
|
+
stored in a vendor's shape to begin with.
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install @oharness/engine
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
One runtime dependency: `zod`, for tool schemas. Node 22.6+.
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
import { Harness } from "@oharness/engine";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Frontends live in separate packages — [`oharness`](https://www.npmjs.com/package/oharness)
|
|
23
|
+
for the terminal, [`@oharness/server`](https://www.npmjs.com/package/@oharness/server)
|
|
24
|
+
for the browser. This package renders nothing.
|
|
25
|
+
|
|
26
|
+
Documentation and the full picture: https://github.com/Jet1217/OHarness
|
package/dist/agent/agent.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RuntimeAuditEvent } from "../core/audit.ts";
|
|
1
2
|
import type { Message, StopReason, Usage } from "../core/types.ts";
|
|
2
3
|
import type { McpManager } from "../mcp/manager.ts";
|
|
3
4
|
import type { ThinkingConfig } from "../providers/types.ts";
|
|
@@ -119,6 +120,8 @@ export interface AgentOptions {
|
|
|
119
120
|
skills?: SkillRegistry;
|
|
120
121
|
/** Durable notes carried between sessions. */
|
|
121
122
|
memory?: MemoryStore;
|
|
123
|
+
/** Runtime-plugin prompt contributions, rebuilt once per run. */
|
|
124
|
+
promptSections?: () => Promise<string[]>;
|
|
122
125
|
/** Called after the agent writes into a skills directory. */
|
|
123
126
|
onSkillsChanged?: () => Promise<unknown>;
|
|
124
127
|
/** Restricts where writes may land. A policy gate, not an OS sandbox. */
|
|
@@ -126,6 +129,12 @@ export interface AgentOptions {
|
|
|
126
129
|
/** Enable provider prompt caching where the model supports it. */
|
|
127
130
|
cache?: boolean;
|
|
128
131
|
agentId?: string;
|
|
132
|
+
/** Host shutdown applies to existing agents and their descendants. */
|
|
133
|
+
lifecycleSignal?: AbortSignal;
|
|
134
|
+
/** Best-effort observation; never participates in permission decisions. */
|
|
135
|
+
onAudit?: (event: RuntimeAuditEvent) => void;
|
|
136
|
+
/** Internal host lifecycle accounting; inherited by subagents. */
|
|
137
|
+
onRunStart?: () => () => void;
|
|
129
138
|
logger?: Logger;
|
|
130
139
|
}
|
|
131
140
|
/**
|
|
@@ -154,6 +163,7 @@ export declare class Agent implements ToolHost {
|
|
|
154
163
|
private stopRequested?;
|
|
155
164
|
/** Memory index for this run's system prompt. */
|
|
156
165
|
private memoryIndex?;
|
|
166
|
+
private pluginSections;
|
|
157
167
|
constructor(opts: AgentOptions);
|
|
158
168
|
/**
|
|
159
169
|
* Announce a model switch so a UI can render it and hooks can react.
|
|
@@ -170,6 +180,7 @@ export declare class Agent implements ToolHost {
|
|
|
170
180
|
end(): Promise<void>;
|
|
171
181
|
/** Cancel the in-flight turn. The loop exits with `stopReason: "aborted"`. */
|
|
172
182
|
abort(): void;
|
|
183
|
+
private audit;
|
|
173
184
|
get isRunning(): boolean;
|
|
174
185
|
/**
|
|
175
186
|
* Where the file tools are allowed to look. The policy lives here, so the
|
package/dist/agent/agent.js
CHANGED
|
@@ -45,6 +45,7 @@ export class Agent {
|
|
|
45
45
|
stopRequested;
|
|
46
46
|
/** Memory index for this run's system prompt. */
|
|
47
47
|
memoryIndex;
|
|
48
|
+
pluginSections = [];
|
|
48
49
|
constructor(opts) {
|
|
49
50
|
this.opts = opts;
|
|
50
51
|
this.session = opts.session;
|
|
@@ -122,6 +123,14 @@ export class Agent {
|
|
|
122
123
|
abort() {
|
|
123
124
|
this.controller.abort();
|
|
124
125
|
}
|
|
126
|
+
audit(event) {
|
|
127
|
+
try {
|
|
128
|
+
this.opts.onAudit?.(event);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
this.logger.warn("audit observer failed");
|
|
132
|
+
}
|
|
133
|
+
}
|
|
125
134
|
get isRunning() {
|
|
126
135
|
return this.running;
|
|
127
136
|
}
|
|
@@ -152,6 +161,9 @@ export class Agent {
|
|
|
152
161
|
});
|
|
153
162
|
for (const [key, value] of this.session.state)
|
|
154
163
|
child.state.set(key, value);
|
|
164
|
+
child.permissions.onDecision((entry) => {
|
|
165
|
+
this.audit({ type: "permission", timestamp: Date.now(), sessionId: child.id, entry });
|
|
166
|
+
});
|
|
155
167
|
const childAgent = new Agent({
|
|
156
168
|
...this.opts,
|
|
157
169
|
session: child,
|
|
@@ -196,14 +208,15 @@ export class Agent {
|
|
|
196
208
|
async *run(input, runOpts = {}) {
|
|
197
209
|
this.running = true;
|
|
198
210
|
this.controller = new AbortController();
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
211
|
+
const signal = AbortSignal.any([
|
|
212
|
+
this.controller.signal,
|
|
213
|
+
...(runOpts.signal ? [runOpts.signal] : []),
|
|
214
|
+
...(this.opts.lifecycleSignal ? [this.opts.lifecycleSignal] : []),
|
|
215
|
+
]);
|
|
216
|
+
if (this.opts.lifecycleSignal?.aborted) {
|
|
217
|
+
this.running = false;
|
|
218
|
+
throw new Error("Agent host is closed");
|
|
219
|
+
}
|
|
207
220
|
// Fired once per session rather than per turn: hooks use it to seed
|
|
208
221
|
// context or announce the session, which should not repeat every prompt.
|
|
209
222
|
if (!this.sessionStarted) {
|
|
@@ -222,11 +235,13 @@ export class Agent {
|
|
|
222
235
|
const maxTurns = this.opts.maxTurns ?? DEFAULT_MAX_TURNS;
|
|
223
236
|
let stopReason = "end_turn";
|
|
224
237
|
let turn = 0;
|
|
238
|
+
const finishRun = this.opts.onRunStart?.();
|
|
225
239
|
try {
|
|
226
240
|
await this.session.init();
|
|
227
241
|
// Read once per run: the index is only rebuilt when the agent writes a
|
|
228
242
|
// note, and re-reading the directory every turn would be wasteful.
|
|
229
243
|
this.memoryIndex = await this.memory?.promptSection();
|
|
244
|
+
this.pluginSections = await this.opts.promptSections?.() ?? [];
|
|
230
245
|
yield* this.ingestInput(input);
|
|
231
246
|
while (turn < maxTurns) {
|
|
232
247
|
if (signal.aborted) {
|
|
@@ -330,6 +345,7 @@ export class Agent {
|
|
|
330
345
|
finally {
|
|
331
346
|
this.running = false;
|
|
332
347
|
await this.session.persist().catch(() => { });
|
|
348
|
+
finishRun?.();
|
|
333
349
|
}
|
|
334
350
|
yield {
|
|
335
351
|
type: "done",
|
|
@@ -412,7 +428,7 @@ export class Agent {
|
|
|
412
428
|
toolNames: this.tools.visible(this.opts.toolFilter).map((t) => t.name),
|
|
413
429
|
// Only the descriptions — loading every skill body up front would
|
|
414
430
|
// defeat the point of having them be loadable.
|
|
415
|
-
extraSections: [this.skills.promptSection(), this.memoryIndex].filter((section) => section !== undefined),
|
|
431
|
+
extraSections: [this.skills.promptSection(), this.memoryIndex, ...this.pluginSections].filter((section) => section !== undefined),
|
|
416
432
|
});
|
|
417
433
|
}
|
|
418
434
|
buildRequest(signal) {
|
|
@@ -646,6 +662,11 @@ export class Agent {
|
|
|
646
662
|
}
|
|
647
663
|
}
|
|
648
664
|
const durationMs = Date.now() - started;
|
|
665
|
+
this.audit({
|
|
666
|
+
type: "tool_execution", timestamp: Date.now(), sessionId: this.session.id,
|
|
667
|
+
agentId: this.agentId, toolCallId: call.id, toolName: call.name,
|
|
668
|
+
pluginId: tool.pluginId, durationMs, isError: result.isError === true,
|
|
669
|
+
});
|
|
649
670
|
yield { type: "tool_end", toolCallId: call.id, toolName: call.name, result, durationMs };
|
|
650
671
|
// Read off the final result rather than captured at execute time, so a
|
|
651
672
|
// PostToolUse hook that rewrites or suppresses the result suppresses the
|
package/dist/agent/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/hooks.d.ts
CHANGED
|
@@ -66,6 +66,8 @@ export declare class HookRegistry {
|
|
|
66
66
|
private readonly logger;
|
|
67
67
|
constructor(logger?: Logger);
|
|
68
68
|
on(event: HookEvent, handler: HookHandler): this;
|
|
69
|
+
/** A distinct subscription even when the same handler is installed twice. */
|
|
70
|
+
subscribe(event: HookEvent, handler: HookHandler): () => void;
|
|
69
71
|
loadShellHooks(config: HookConfig): this;
|
|
70
72
|
has(event: HookEvent): boolean;
|
|
71
73
|
/**
|
package/dist/agent/hooks.js
CHANGED
|
@@ -24,6 +24,17 @@ export class HookRegistry {
|
|
|
24
24
|
this.handlers.set(event, list);
|
|
25
25
|
return this;
|
|
26
26
|
}
|
|
27
|
+
/** A distinct subscription even when the same handler is installed twice. */
|
|
28
|
+
subscribe(event, handler) {
|
|
29
|
+
const subscription = (payload) => handler(payload);
|
|
30
|
+
this.on(event, subscription);
|
|
31
|
+
return () => {
|
|
32
|
+
const list = this.handlers.get(event);
|
|
33
|
+
const index = list?.indexOf(subscription) ?? -1;
|
|
34
|
+
if (index >= 0)
|
|
35
|
+
list.splice(index, 1);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
27
38
|
loadShellHooks(config) {
|
|
28
39
|
for (const [event, hooks] of Object.entries(config)) {
|
|
29
40
|
if (!hooks?.length)
|
package/dist/agent/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/agent/hooks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/agent/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/memory.d.ts
CHANGED
|
@@ -18,11 +18,16 @@ export interface MemoryEntry {
|
|
|
18
18
|
/** Free-form tags for retrieval. */
|
|
19
19
|
tags: string[];
|
|
20
20
|
createdAt: number;
|
|
21
|
+
updatedAt?: number;
|
|
21
22
|
file: string;
|
|
22
23
|
}
|
|
24
|
+
export type MemoryNote = Omit<MemoryEntry, "file">;
|
|
25
|
+
export declare const validMemoryId: (id: unknown) => id is string;
|
|
26
|
+
export declare function noteHash(note: MemoryNote | undefined): string | null;
|
|
27
|
+
export declare function memoryNote(entry: MemoryEntry): MemoryNote;
|
|
28
|
+
export declare function validateNote(note: MemoryNote): void;
|
|
23
29
|
export declare class MemoryStore {
|
|
24
30
|
private readonly dir;
|
|
25
|
-
private cache?;
|
|
26
31
|
constructor(dir: string);
|
|
27
32
|
get location(): string;
|
|
28
33
|
load(): Promise<MemoryEntry[]>;
|
|
@@ -32,6 +37,10 @@ export declare class MemoryStore {
|
|
|
32
37
|
tags?: string[];
|
|
33
38
|
}): Promise<MemoryEntry>;
|
|
34
39
|
forget(id: string): Promise<boolean>;
|
|
40
|
+
/** Compare before applying downloaded data; never overwrite a concurrent edit. */
|
|
41
|
+
apply(id: string, note: MemoryNote | undefined, expected: string | null): Promise<void>;
|
|
42
|
+
private exclusive;
|
|
43
|
+
private atomic;
|
|
35
44
|
/** Full-text search across summaries, bodies and tags. */
|
|
36
45
|
search(query: string): Promise<MemoryEntry[]>;
|
|
37
46
|
/**
|
package/dist/agent/memory.js
CHANGED
|
@@ -1,12 +1,26 @@
|
|
|
1
|
-
import { mkdir,
|
|
1
|
+
import { mkdir, open, readdir, writeFile, rename, rm, lstat } from "node:fs/promises";
|
|
2
|
+
import { constants } from "node:fs";
|
|
3
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
2
4
|
import path from "node:path";
|
|
3
5
|
import { shortId } from "../util/id.js";
|
|
4
6
|
import { splitFrontmatter } from "./skills.js";
|
|
7
|
+
export const validMemoryId = (id) => typeof id === "string" && /^[a-zA-Z0-9_-]{1,128}$/.test(id) && !["__proto__", "constructor", "prototype"].includes(id);
|
|
8
|
+
export function noteHash(note) {
|
|
9
|
+
return note ? createHash("sha256").update(JSON.stringify([note.id, note.summary, note.body, note.tags, note.createdAt])).digest("hex") : null;
|
|
10
|
+
}
|
|
11
|
+
export function memoryNote(entry) { const { file: _, ...note } = entry; return note; }
|
|
12
|
+
export function validateNote(note) {
|
|
13
|
+
if (!validMemoryId(note.id) || typeof note.summary !== "string" || !note.summary.trim() || note.summary.length > 500 ||
|
|
14
|
+
/[\r\n]/.test(note.summary) || note.summary !== note.summary.trim() || typeof note.body !== "string" || note.body !== note.body.trim() || Buffer.byteLength(note.body) > 128 * 1024 ||
|
|
15
|
+
!Array.isArray(note.tags) || note.tags.length > 30 || note.tags.some((tag) => typeof tag !== "string" || !/^[^\s,\r\n]{1,64}$/.test(tag)) ||
|
|
16
|
+
!Number.isSafeInteger(note.createdAt) || note.createdAt < 0)
|
|
17
|
+
throw new Error("Invalid memory note");
|
|
18
|
+
}
|
|
19
|
+
const writes = new Map();
|
|
5
20
|
/** How much of the memory index may enter the system prompt. */
|
|
6
21
|
const MAX_PROMPT_CHARS = 4_000;
|
|
7
22
|
export class MemoryStore {
|
|
8
23
|
dir;
|
|
9
|
-
cache;
|
|
10
24
|
constructor(dir) {
|
|
11
25
|
this.dir = dir;
|
|
12
26
|
}
|
|
@@ -14,24 +28,42 @@ export class MemoryStore {
|
|
|
14
28
|
return this.dir;
|
|
15
29
|
}
|
|
16
30
|
async load() {
|
|
17
|
-
if (this.cache)
|
|
18
|
-
return this.cache;
|
|
19
31
|
let files;
|
|
20
32
|
try {
|
|
33
|
+
for (const directory of [this.dir, path.dirname(this.dir)]) {
|
|
34
|
+
if ((await lstat(directory)).isSymbolicLink())
|
|
35
|
+
throw new Error("Memory directory cannot be a symlink");
|
|
36
|
+
}
|
|
21
37
|
files = (await readdir(this.dir)).filter((name) => name.endsWith(".md"));
|
|
22
38
|
}
|
|
23
|
-
catch {
|
|
24
|
-
|
|
25
|
-
|
|
39
|
+
catch (error) {
|
|
40
|
+
if (error.code === "ENOENT")
|
|
41
|
+
return [];
|
|
42
|
+
throw error;
|
|
26
43
|
}
|
|
44
|
+
if (files.length > 500)
|
|
45
|
+
throw new Error("Memory limit: 500 notes per project");
|
|
27
46
|
const entries = [];
|
|
28
47
|
for (const name of files) {
|
|
29
48
|
const file = path.join(this.dir, name);
|
|
30
49
|
let raw;
|
|
50
|
+
const handle = await open(file, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
31
51
|
try {
|
|
32
|
-
|
|
52
|
+
const stat = await handle.stat();
|
|
53
|
+
if (!stat.isFile() || stat.size > 256 * 1024)
|
|
54
|
+
throw new Error("Invalid memory file");
|
|
55
|
+
raw = await handle.readFile("utf8");
|
|
33
56
|
}
|
|
34
|
-
|
|
57
|
+
finally {
|
|
58
|
+
await handle.close();
|
|
59
|
+
}
|
|
60
|
+
// New writes use JSON-flow YAML metadata so quotes, colons and tags round-trip.
|
|
61
|
+
// Keep the original scalar frontmatter reader for existing local notes.
|
|
62
|
+
const jsonHeader = /^\uFEFF?---\r?\n(\{[^\n]+\})\r?\n---\r?\n([\s\S]*)$/.exec(raw);
|
|
63
|
+
if (jsonHeader) {
|
|
64
|
+
const metadata = JSON.parse(jsonHeader[1]);
|
|
65
|
+
entries.push({ id: metadata.id, summary: metadata.summary, tags: metadata.tags,
|
|
66
|
+
createdAt: metadata.createdAt, updatedAt: metadata.updatedAt, body: jsonHeader[2].trim(), file });
|
|
35
67
|
continue;
|
|
36
68
|
}
|
|
37
69
|
const { frontmatter, body } = splitFrontmatter(raw);
|
|
@@ -39,7 +71,7 @@ export class MemoryStore {
|
|
|
39
71
|
// Without a summary the entry cannot appear in the index, and an entry
|
|
40
72
|
// the model never sees is one it will never ask for.
|
|
41
73
|
if (!summary)
|
|
42
|
-
|
|
74
|
+
throw new Error("Memory note has no summary");
|
|
43
75
|
entries.push({
|
|
44
76
|
id: frontmatter["id"]?.trim() || name.replace(/\.md$/, ""),
|
|
45
77
|
summary,
|
|
@@ -49,52 +81,98 @@ export class MemoryStore {
|
|
|
49
81
|
.map((tag) => tag.trim())
|
|
50
82
|
.filter((tag) => tag !== ""),
|
|
51
83
|
createdAt: Number(frontmatter["createdAt"]) || 0,
|
|
84
|
+
updatedAt: Number(frontmatter["updatedAt"]) || 0,
|
|
52
85
|
file,
|
|
53
86
|
});
|
|
54
87
|
}
|
|
55
88
|
entries.sort((a, b) => b.createdAt - a.createdAt);
|
|
56
|
-
|
|
89
|
+
const seen = new Set();
|
|
90
|
+
for (const entry of entries) {
|
|
91
|
+
validateNote(entry);
|
|
92
|
+
if (seen.has(entry.id))
|
|
93
|
+
throw new Error("Duplicate memory id");
|
|
94
|
+
seen.add(entry.id);
|
|
95
|
+
}
|
|
57
96
|
return entries;
|
|
58
97
|
}
|
|
59
98
|
async remember(input) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
createdAt,
|
|
86
|
-
file,
|
|
87
|
-
};
|
|
99
|
+
if (typeof input.summary !== "string" || typeof input.body !== "string" || input.tags !== undefined && !Array.isArray(input.tags))
|
|
100
|
+
throw new Error("Invalid memory note");
|
|
101
|
+
return this.exclusive(async () => {
|
|
102
|
+
await mkdir(this.dir, { recursive: true });
|
|
103
|
+
const existing = await this.load();
|
|
104
|
+
// Re-learning the same lesson should update the note, not add a duplicate
|
|
105
|
+
// that competes with it in the index.
|
|
106
|
+
const match = existing.find((entry) => entry.summary.toLowerCase() === input.summary.trim().toLowerCase());
|
|
107
|
+
const id = match?.id ?? `${slug(input.summary)}-${shortId(3)}`;
|
|
108
|
+
if (!match && existing.length >= 500)
|
|
109
|
+
throw new Error("Memory limit: 500 notes per project");
|
|
110
|
+
const createdAt = match?.createdAt || Date.now();
|
|
111
|
+
const file = match?.file ?? path.join(this.dir, `${id}.md`);
|
|
112
|
+
const note = { id, summary: input.summary.trim(), body: input.body.trim(), tags: input.tags ?? [], createdAt, updatedAt: Date.now() };
|
|
113
|
+
validateNote(note);
|
|
114
|
+
await this.atomic(file, encodeNote(note));
|
|
115
|
+
return {
|
|
116
|
+
id,
|
|
117
|
+
summary: input.summary.trim(),
|
|
118
|
+
body: input.body.trim(),
|
|
119
|
+
tags: input.tags ?? [],
|
|
120
|
+
createdAt,
|
|
121
|
+
file,
|
|
122
|
+
};
|
|
123
|
+
});
|
|
88
124
|
}
|
|
89
125
|
async forget(id) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
126
|
+
return this.exclusive(async () => {
|
|
127
|
+
const entries = await this.load();
|
|
128
|
+
const match = entries.find((entry) => entry.id === id);
|
|
129
|
+
if (!match)
|
|
130
|
+
return false;
|
|
131
|
+
await rm(match.file, { force: true });
|
|
132
|
+
return true;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/** Compare before applying downloaded data; never overwrite a concurrent edit. */
|
|
136
|
+
async apply(id, note, expected) {
|
|
137
|
+
if (!validMemoryId(id) || (note && note.id !== id))
|
|
138
|
+
throw new Error("Invalid memory id");
|
|
139
|
+
if (note)
|
|
140
|
+
validateNote(note);
|
|
141
|
+
await this.exclusive(async () => {
|
|
142
|
+
const entries = await this.load(), current = entries.find((entry) => entry.id === id);
|
|
143
|
+
if (note && !current && entries.length >= 500)
|
|
144
|
+
throw new Error("Memory limit: 500 notes per project");
|
|
145
|
+
if (noteHash(current) !== expected)
|
|
146
|
+
throw new Error("本地记忆已改变,请重新同步。");
|
|
147
|
+
const file = current?.file ?? path.join(this.dir, id + ".md");
|
|
148
|
+
if (!note) {
|
|
149
|
+
if (current)
|
|
150
|
+
await rm(file);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
await this.atomic(file, encodeNote(note));
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
exclusive(action) {
|
|
157
|
+
const key = path.resolve(this.dir), job = (writes.get(key) ?? Promise.resolve()).then(action);
|
|
158
|
+
const tail = job.catch(() => { });
|
|
159
|
+
writes.set(key, tail);
|
|
160
|
+
void tail.finally(() => { if (writes.get(key) === tail)
|
|
161
|
+
writes.delete(key); });
|
|
162
|
+
return job;
|
|
163
|
+
}
|
|
164
|
+
async atomic(file, raw) {
|
|
165
|
+
await mkdir(this.dir, { recursive: true });
|
|
166
|
+
if ((await lstat(this.dir)).isSymbolicLink())
|
|
167
|
+
throw new Error("Memory directory cannot be a symlink");
|
|
168
|
+
const temp = path.join(this.dir, "." + randomUUID() + ".tmp");
|
|
169
|
+
try {
|
|
170
|
+
await writeFile(temp, raw, { mode: 0o600, flag: "wx" });
|
|
171
|
+
await rename(temp, file);
|
|
172
|
+
}
|
|
173
|
+
finally {
|
|
174
|
+
await rm(temp, { force: true });
|
|
175
|
+
}
|
|
98
176
|
}
|
|
99
177
|
/** Full-text search across summaries, bodies and tags. */
|
|
100
178
|
async search(query) {
|
|
@@ -111,9 +189,25 @@ export class MemoryStore {
|
|
|
111
189
|
* a summary, then asks for the body if it matters.
|
|
112
190
|
*/
|
|
113
191
|
async promptSection() {
|
|
114
|
-
const
|
|
115
|
-
if (
|
|
192
|
+
const loaded = await this.load();
|
|
193
|
+
if (loaded.length === 0)
|
|
116
194
|
return undefined;
|
|
195
|
+
/*
|
|
196
|
+
* Most recently touched first, which is not the order the notes are stored
|
|
197
|
+
* in.
|
|
198
|
+
*
|
|
199
|
+
* The budget below drops whatever does not fit, so this line decides which
|
|
200
|
+
* notes stop being visible once there are more than about fifty. Ordered by
|
|
201
|
+
* creation — the order load() returns, and the right one for a list someone
|
|
202
|
+
* is reading — the first to fall out is the oldest note, whether or not it
|
|
203
|
+
* is the one being re-learned every week. A note written a year ago and
|
|
204
|
+
* corrected on Tuesday is the more useful of the two, and updatedAt is the
|
|
205
|
+
* only thing here that knows that.
|
|
206
|
+
*
|
|
207
|
+
* Nothing is lost, only unlisted: the line at the end says how many, and
|
|
208
|
+
* the tool searches every note whether or not it is in the index.
|
|
209
|
+
*/
|
|
210
|
+
const entries = [...loaded].sort((a, b) => (b.updatedAt ?? b.createdAt) - (a.updatedAt ?? a.createdAt));
|
|
117
211
|
const lines = [
|
|
118
212
|
"## Memory",
|
|
119
213
|
"",
|
|
@@ -137,6 +231,10 @@ export class MemoryStore {
|
|
|
137
231
|
return lines.join("\n");
|
|
138
232
|
}
|
|
139
233
|
}
|
|
234
|
+
function encodeNote(note) {
|
|
235
|
+
const metadata = { id: note.id, summary: note.summary, tags: note.tags, createdAt: note.createdAt, updatedAt: note.updatedAt ?? Date.now() };
|
|
236
|
+
return "---\n" + JSON.stringify(metadata) + "\n---\n" + note.body + "\n";
|
|
237
|
+
}
|
|
140
238
|
function slug(value) {
|
|
141
239
|
return (value
|
|
142
240
|
.toLowerCase()
|