@harny/sdk 0.1.2 → 0.1.4

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.
Files changed (81) hide show
  1. package/dist/cjs/agent/adapters.d.ts +167 -0
  2. package/dist/cjs/agent/adapters.js +557 -0
  3. package/dist/cjs/agent/adapters.js.map +1 -0
  4. package/dist/cjs/agent/hooks.d.ts +52 -0
  5. package/dist/cjs/agent/hooks.js +41 -0
  6. package/dist/cjs/agent/hooks.js.map +1 -0
  7. package/dist/cjs/agent/index.d.ts +34 -0
  8. package/dist/cjs/agent/index.js +62 -0
  9. package/dist/cjs/agent/index.js.map +1 -0
  10. package/dist/cjs/agent/loop.d.ts +401 -0
  11. package/dist/cjs/agent/loop.js +1252 -0
  12. package/dist/cjs/agent/loop.js.map +1 -0
  13. package/dist/cjs/agent/roster.d.ts +62 -0
  14. package/dist/cjs/agent/roster.js +149 -0
  15. package/dist/cjs/agent/roster.js.map +1 -0
  16. package/dist/cjs/agent/session.d.ts +106 -0
  17. package/dist/cjs/agent/session.js +261 -0
  18. package/dist/cjs/agent/session.js.map +1 -0
  19. package/dist/cjs/agent/spend.d.ts +39 -0
  20. package/dist/cjs/agent/spend.js +70 -0
  21. package/dist/cjs/agent/spend.js.map +1 -0
  22. package/dist/cjs/agent/tools.d.ts +83 -0
  23. package/dist/cjs/agent/tools.js +212 -0
  24. package/dist/cjs/agent/tools.js.map +1 -0
  25. package/dist/cjs/agent/tracing.d.ts +72 -0
  26. package/dist/cjs/agent/tracing.js +128 -0
  27. package/dist/cjs/agent/tracing.js.map +1 -0
  28. package/dist/cjs/agent/util.d.ts +60 -0
  29. package/dist/cjs/agent/util.js +188 -0
  30. package/dist/cjs/agent/util.js.map +1 -0
  31. package/dist/cjs/conflictQuestion.d.ts +137 -0
  32. package/dist/cjs/conflictQuestion.js +356 -0
  33. package/dist/cjs/conflictQuestion.js.map +1 -0
  34. package/dist/cjs/index.d.ts +950 -0
  35. package/dist/cjs/index.js +1124 -0
  36. package/dist/cjs/index.js.map +1 -0
  37. package/dist/cjs/memoryV1.d.ts +121 -0
  38. package/dist/cjs/memoryV1.js +132 -0
  39. package/dist/cjs/memoryV1.js.map +1 -0
  40. package/dist/cjs/package.json +1 -0
  41. package/dist/esm/agent/adapters.d.ts +167 -0
  42. package/dist/esm/agent/adapters.js +543 -0
  43. package/dist/esm/agent/adapters.js.map +1 -0
  44. package/dist/esm/agent/hooks.d.ts +52 -0
  45. package/dist/esm/agent/hooks.js +36 -0
  46. package/dist/esm/agent/hooks.js.map +1 -0
  47. package/dist/esm/agent/index.d.ts +34 -0
  48. package/dist/esm/agent/index.js +28 -0
  49. package/dist/esm/agent/index.js.map +1 -0
  50. package/dist/esm/agent/loop.d.ts +401 -0
  51. package/dist/esm/agent/loop.js +1243 -0
  52. package/dist/esm/agent/loop.js.map +1 -0
  53. package/dist/esm/agent/roster.d.ts +62 -0
  54. package/dist/esm/agent/roster.js +143 -0
  55. package/dist/esm/agent/roster.js.map +1 -0
  56. package/dist/esm/agent/session.d.ts +106 -0
  57. package/dist/esm/agent/session.js +221 -0
  58. package/dist/esm/agent/session.js.map +1 -0
  59. package/dist/esm/agent/spend.d.ts +39 -0
  60. package/dist/esm/agent/spend.js +65 -0
  61. package/dist/esm/agent/spend.js.map +1 -0
  62. package/dist/esm/agent/tools.d.ts +83 -0
  63. package/dist/esm/agent/tools.js +205 -0
  64. package/dist/esm/agent/tools.js.map +1 -0
  65. package/dist/esm/agent/tracing.d.ts +72 -0
  66. package/dist/esm/agent/tracing.js +119 -0
  67. package/dist/esm/agent/tracing.js.map +1 -0
  68. package/dist/esm/agent/util.d.ts +60 -0
  69. package/dist/esm/agent/util.js +168 -0
  70. package/dist/esm/agent/util.js.map +1 -0
  71. package/dist/esm/conflictQuestion.d.ts +137 -0
  72. package/dist/esm/conflictQuestion.js +346 -0
  73. package/dist/esm/conflictQuestion.js.map +1 -0
  74. package/dist/esm/index.d.ts +950 -0
  75. package/dist/esm/index.js +1072 -0
  76. package/dist/esm/index.js.map +1 -0
  77. package/dist/esm/memoryV1.d.ts +121 -0
  78. package/dist/esm/memoryV1.js +124 -0
  79. package/dist/esm/memoryV1.js.map +1 -0
  80. package/dist/esm/package.json +1 -0
  81. package/package.json +3 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../src/agent/loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Resolve a model preset against the platform roster, with the business's own key.
3
+ *
4
+ * The rule is short and deliberate:
5
+ *
6
+ * 1. Take the preset's entries in roster order.
7
+ * 2. If a provider is pinned, keep only its entry.
8
+ * 3. The first entry for which a key is available wins: the explicit key (only
9
+ * together with a pinned provider, so a key is never guessed onto the wrong
10
+ * provider), else the provider's conventional key variables in order.
11
+ *
12
+ * Nothing model-specific lives in the caller's code or config: the model id,
13
+ * wire style, base URL and headers all come from the roster entry, so an
14
+ * operator edit of the roster changes the model with no code change.
15
+ */
16
+ import type { ModelRoster, RosterEntry } from "../index.js";
17
+ export declare const PRESET_NAMES: readonly ["cost_first", "quality_first", "regulated"];
18
+ export type PresetName = (typeof PRESET_NAMES)[number];
19
+ /** No roster entry can run with the keys this deploy holds. */
20
+ export declare class PresetResolutionError extends Error {
21
+ constructor(message: string);
22
+ }
23
+ export type ToolTransport = "client" | "mcp";
24
+ /**
25
+ * One roster entry plus the key that will call it. The key is readable as
26
+ * `apiKey` but never enumerated, logged or serialized (`toJSON` is `describe()`).
27
+ */
28
+ export declare class ResolvedModel {
29
+ readonly preset: string;
30
+ readonly entry: RosterEntry;
31
+ readonly keySource: string;
32
+ readonly rosterVersion: string;
33
+ readonly toolTransport: ToolTransport;
34
+ readonly notes: readonly string[];
35
+ constructor(init: {
36
+ preset: string;
37
+ entry: RosterEntry;
38
+ apiKey: string;
39
+ keySource: string;
40
+ rosterVersion: string;
41
+ toolTransport?: ToolTransport;
42
+ notes?: readonly string[];
43
+ });
44
+ get apiKey(): string;
45
+ get provider(): string;
46
+ get model(): string;
47
+ /** A key-free summary for logs, health checks and lock files. */
48
+ describe(): Record<string, unknown>;
49
+ toJSON(): Record<string, unknown>;
50
+ }
51
+ export interface ResolvePresetOptions {
52
+ /** Pin one provider of the preset (for example from your deploy's config). */
53
+ provider?: string | null;
54
+ /** An explicit model key. Needs `provider`, so the key is never sent to the wrong one. */
55
+ apiKey?: string | null;
56
+ /** Where the conventional key variables are read. Defaults to the process environment. */
57
+ env?: Record<string, string | undefined>;
58
+ /** `"mcp"` asks for remote MCP; an entry that cannot reach one falls back to client-side tools, with a note. */
59
+ toolTransport?: ToolTransport;
60
+ }
61
+ /** Pick the roster entry this deploy can run, or say exactly why none fits. */
62
+ export declare function resolvePreset(roster: ModelRoster, preset: string, options?: ResolvePresetOptions): ResolvedModel;
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Resolve a model preset against the platform roster, with the business's own key.
3
+ *
4
+ * The rule is short and deliberate:
5
+ *
6
+ * 1. Take the preset's entries in roster order.
7
+ * 2. If a provider is pinned, keep only its entry.
8
+ * 3. The first entry for which a key is available wins: the explicit key (only
9
+ * together with a pinned provider, so a key is never guessed onto the wrong
10
+ * provider), else the provider's conventional key variables in order.
11
+ *
12
+ * Nothing model-specific lives in the caller's code or config: the model id,
13
+ * wire style, base URL and headers all come from the roster entry, so an
14
+ * operator edit of the roster changes the model with no code change.
15
+ */
16
+ import { processEnv, quoted } from "./util.js";
17
+ export const PRESET_NAMES = ["cost_first", "quality_first", "regulated"];
18
+ /** No roster entry can run with the keys this deploy holds. */
19
+ export class PresetResolutionError extends Error {
20
+ constructor(message) {
21
+ super(message);
22
+ this.name = "PresetResolutionError";
23
+ }
24
+ }
25
+ const KEYS = new WeakMap();
26
+ /**
27
+ * One roster entry plus the key that will call it. The key is readable as
28
+ * `apiKey` but never enumerated, logged or serialized (`toJSON` is `describe()`).
29
+ */
30
+ export class ResolvedModel {
31
+ constructor(init) {
32
+ this.preset = init.preset;
33
+ this.entry = init.entry;
34
+ this.keySource = init.keySource;
35
+ this.rosterVersion = init.rosterVersion;
36
+ this.toolTransport = init.toolTransport ?? "client";
37
+ this.notes = Object.freeze([...(init.notes ?? [])]);
38
+ KEYS.set(this, init.apiKey);
39
+ }
40
+ get apiKey() {
41
+ return KEYS.get(this) ?? "";
42
+ }
43
+ get provider() {
44
+ return this.entry.provider;
45
+ }
46
+ get model() {
47
+ return this.entry.model;
48
+ }
49
+ /** A key-free summary for logs, health checks and lock files. */
50
+ describe() {
51
+ const caps = this.entry.capabilities ?? {};
52
+ return {
53
+ preset: this.preset,
54
+ entry_id: this.entry.id,
55
+ provider: this.entry.provider,
56
+ model: this.entry.model,
57
+ api_style: this.entry.api.style,
58
+ region: this.entry.region,
59
+ host: this.entry.host ? this.entry.host.id : null,
60
+ answer_room_tokens: caps.thinking_always_on ? caps.answer_room_tokens ?? null : null,
61
+ priced: Boolean(this.entry.price?.priced),
62
+ mcp_supported: Boolean(caps.mcp_supported),
63
+ tool_transport: this.toolTransport,
64
+ key_source: this.keySource,
65
+ roster_version: this.rosterVersion,
66
+ };
67
+ }
68
+ toJSON() {
69
+ return this.describe();
70
+ }
71
+ }
72
+ /** Pick the roster entry this deploy can run, or say exactly why none fits. */
73
+ export function resolvePreset(roster, preset, options = {}) {
74
+ if (!PRESET_NAMES.includes(preset)) {
75
+ const names = "[" + PRESET_NAMES.map(quoted).join(", ") + "]";
76
+ throw new PresetResolutionError(`preset must be one of ${names}, got ${quoted(preset)}`);
77
+ }
78
+ const body = roster?.presets?.[preset];
79
+ if (!body || !Array.isArray(body.entries) || body.entries.length === 0) {
80
+ throw new PresetResolutionError(`the roster has no entries for preset ${quoted(preset)}`);
81
+ }
82
+ const environ = options.env ?? processEnv();
83
+ const provider = options.provider || null;
84
+ const apiKey = options.apiKey || null;
85
+ let entries = body.entries.filter((e) => e.capabilities?.tool_calls ?? true);
86
+ if (provider) {
87
+ entries = entries.filter((e) => e.provider === provider);
88
+ if (entries.length === 0) {
89
+ const offered = body.entries.map((e) => e.provider).join(", ");
90
+ throw new PresetResolutionError(`preset ${quoted(preset)} has no entry for provider ${quoted(provider)}; it offers: ${offered}`);
91
+ }
92
+ }
93
+ else if (apiKey) {
94
+ throw new PresetResolutionError("a model key was given without a provider; pass apiKey together with provider, " +
95
+ "so the key is never sent to the wrong one");
96
+ }
97
+ for (const entry of entries) {
98
+ let key = null;
99
+ let source = "";
100
+ if (apiKey && provider) {
101
+ key = apiKey;
102
+ source = "explicit";
103
+ }
104
+ else {
105
+ for (const name of entry.key_env ?? []) {
106
+ const value = (environ[name] ?? "").trim();
107
+ if (value) {
108
+ key = value;
109
+ source = `env:${name}`;
110
+ break;
111
+ }
112
+ }
113
+ }
114
+ if (!key)
115
+ continue;
116
+ const notes = [];
117
+ let transport = "client";
118
+ if (options.toolTransport === "mcp") {
119
+ if (entry.capabilities?.mcp_supported) {
120
+ transport = "mcp";
121
+ }
122
+ else {
123
+ notes.push(`${entry.provider} cannot reach a remote MCP server from this endpoint; tools run client-side`);
124
+ }
125
+ }
126
+ if (!entry.price?.priced) {
127
+ notes.push("this model has no list price in the roster; dollar spend caps need a stated price");
128
+ }
129
+ return new ResolvedModel({
130
+ preset,
131
+ entry,
132
+ apiKey: key,
133
+ keySource: source,
134
+ rosterVersion: roster.roster_version,
135
+ toolTransport: transport,
136
+ notes,
137
+ });
138
+ }
139
+ const wanted = entries.map((e) => `${e.provider}: ${(e.key_env ?? []).join(" or ")}`).join("; ");
140
+ throw new PresetResolutionError(`no model key found for preset ${quoted(preset)}. Set one of these (${wanted}), ` +
141
+ "or pass apiKey together with provider.");
142
+ }
143
+ //# sourceMappingURL=roster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roster.js","sourceRoot":"","sources":["../../../src/agent/roster.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Short-term conversation memory for the agent, kept in the business's own deploy.
3
+ *
4
+ * The agent remembers the last turns of a conversation so a follow-up ("move
5
+ * it to 4") makes sense. Those turns live HERE, in a store the business runs;
6
+ * they are never sent to Harny. Swap the store by implementing `SessionStore`
7
+ * (three methods) over the business's own database.
8
+ *
9
+ * The agent's default is `MemorySessionStore`, which keeps conversations
10
+ * until the process stops. `FileSessionStore` (Node only) writes one JSON
11
+ * file per session, readable only by its owner, with an atomic replace, so a
12
+ * crash never leaves half a file. Session ids are hashed into file names, so
13
+ * an id can never escape the directory. The file format is the one the Python
14
+ * SDK writes, so either SDK can read the other's files.
15
+ *
16
+ * Each assistant turn also carries a short note of the actions the agent
17
+ * performed in it (`ActionNote`: action, record id, time, and for an event its
18
+ * title and start). The next run puts those notes in front of the model, so
19
+ * "undo that" in a later message finds the record id. The notes stay in this
20
+ * store with the conversation; they are never sent to Harny. A store that
21
+ * keeps only `role` and `content` still works: it just loses the notes.
22
+ */
23
+ /** One action the agent performed, as the conversation remembers it. */
24
+ export declare class ActionNote {
25
+ readonly action: string;
26
+ readonly recordId: string;
27
+ readonly at: Date;
28
+ readonly outcome: string;
29
+ /** For an undo: the record it reversed. */
30
+ readonly reverses: string | null;
31
+ /** For an event: what the person would call it. */
32
+ readonly title: string | null;
33
+ readonly start: string | null;
34
+ readonly confirmedInApp: boolean;
35
+ constructor(init: {
36
+ action: string;
37
+ recordId: string;
38
+ at?: Date | string;
39
+ outcome?: string;
40
+ reverses?: string | null;
41
+ title?: string | null;
42
+ start?: string | null;
43
+ confirmedInApp?: boolean;
44
+ });
45
+ /** The stored form (the Python SDK's field names). */
46
+ toJSON(): Record<string, unknown>;
47
+ static fromJSON(raw: unknown): ActionNote;
48
+ }
49
+ export type TurnRole = "user" | "assistant";
50
+ export declare class Turn {
51
+ readonly role: TurnRole;
52
+ readonly content: string;
53
+ readonly at: Date;
54
+ readonly actions: ActionNote[];
55
+ constructor(init: {
56
+ role: TurnRole;
57
+ content: string;
58
+ at?: Date | string;
59
+ actions?: ActionNote[];
60
+ });
61
+ toJSON(): Record<string, unknown>;
62
+ static fromJSON(raw: unknown): Turn;
63
+ }
64
+ export interface SessionStore {
65
+ load(sessionId: string, options?: {
66
+ limit?: number | null;
67
+ }): Promise<Turn[]>;
68
+ append(sessionId: string, turns: Turn[]): Promise<void>;
69
+ clear(sessionId: string): Promise<void>;
70
+ }
71
+ /** In-process store: the agent's default. Kept until the process stops. */
72
+ export declare class MemorySessionStore implements SessionStore {
73
+ private readonly data;
74
+ private readonly maxTurns;
75
+ constructor(options?: {
76
+ maxTurns?: number;
77
+ });
78
+ load(sessionId: string, options?: {
79
+ limit?: number | null;
80
+ }): Promise<Turn[]>;
81
+ append(sessionId: string, turns: Turn[]): Promise<void>;
82
+ clear(sessionId: string): Promise<void>;
83
+ sessionIds(): string[];
84
+ }
85
+ /** One JSON file per session under `directory`, readable only by its owner (Node only). */
86
+ export declare class FileSessionStore implements SessionStore {
87
+ private readonly directory;
88
+ private readonly maxTurns;
89
+ private queue;
90
+ private modules;
91
+ constructor(directory: string, options?: {
92
+ maxTurns?: number;
93
+ });
94
+ private node;
95
+ /** One operation at a time, so two appends never interleave a read and a write. */
96
+ private locked;
97
+ private file;
98
+ private read;
99
+ private write;
100
+ load(sessionId: string, options?: {
101
+ limit?: number | null;
102
+ }): Promise<Turn[]>;
103
+ append(sessionId: string, turns: Turn[]): Promise<void>;
104
+ clear(sessionId: string): Promise<void>;
105
+ sessionIds(): Promise<string[]>;
106
+ }
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Short-term conversation memory for the agent, kept in the business's own deploy.
3
+ *
4
+ * The agent remembers the last turns of a conversation so a follow-up ("move
5
+ * it to 4") makes sense. Those turns live HERE, in a store the business runs;
6
+ * they are never sent to Harny. Swap the store by implementing `SessionStore`
7
+ * (three methods) over the business's own database.
8
+ *
9
+ * The agent's default is `MemorySessionStore`, which keeps conversations
10
+ * until the process stops. `FileSessionStore` (Node only) writes one JSON
11
+ * file per session, readable only by its owner, with an atomic replace, so a
12
+ * crash never leaves half a file. Session ids are hashed into file names, so
13
+ * an id can never escape the directory. The file format is the one the Python
14
+ * SDK writes, so either SDK can read the other's files.
15
+ *
16
+ * Each assistant turn also carries a short note of the actions the agent
17
+ * performed in it (`ActionNote`: action, record id, time, and for an event its
18
+ * title and start). The next run puts those notes in front of the model, so
19
+ * "undo that" in a later message finds the record id. The notes stay in this
20
+ * store with the conversation; they are never sent to Harny. A store that
21
+ * keeps only `role` and `content` still works: it just loses the notes.
22
+ */
23
+ import { isPlainObject, randomHex, sha256Hex } from "./util.js";
24
+ function toDate(value) {
25
+ if (value instanceof Date)
26
+ return value;
27
+ if (typeof value === "string" || typeof value === "number") {
28
+ const parsed = new Date(value);
29
+ if (!Number.isNaN(parsed.getTime()))
30
+ return parsed;
31
+ }
32
+ return new Date();
33
+ }
34
+ function optionalText(value) {
35
+ return value === null || value === undefined ? null : String(value);
36
+ }
37
+ /** One action the agent performed, as the conversation remembers it. */
38
+ export class ActionNote {
39
+ constructor(init) {
40
+ this.action = init.action;
41
+ this.recordId = init.recordId;
42
+ this.at = init.at === undefined ? new Date() : toDate(init.at);
43
+ this.outcome = init.outcome ?? "completed";
44
+ this.reverses = init.reverses ?? null;
45
+ this.title = init.title ?? null;
46
+ this.start = init.start ?? null;
47
+ this.confirmedInApp = init.confirmedInApp ?? false;
48
+ }
49
+ /** The stored form (the Python SDK's field names). */
50
+ toJSON() {
51
+ return {
52
+ action: this.action,
53
+ record_id: this.recordId,
54
+ at: this.at.toISOString(),
55
+ outcome: this.outcome,
56
+ reverses: this.reverses,
57
+ title: this.title,
58
+ start: this.start,
59
+ confirmed_in_app: this.confirmedInApp,
60
+ };
61
+ }
62
+ static fromJSON(raw) {
63
+ if (!isPlainObject(raw) || typeof raw.action !== "string" || raw.record_id === undefined || raw.record_id === null) {
64
+ throw new Error("a stored action note needs action and record_id");
65
+ }
66
+ return new ActionNote({
67
+ action: raw.action,
68
+ recordId: String(raw.record_id),
69
+ at: raw.at === undefined || raw.at === null ? undefined : toDate(raw.at),
70
+ outcome: raw.outcome === undefined || raw.outcome === null ? undefined : String(raw.outcome),
71
+ reverses: optionalText(raw.reverses),
72
+ title: optionalText(raw.title),
73
+ start: optionalText(raw.start),
74
+ confirmedInApp: Boolean(raw.confirmed_in_app),
75
+ });
76
+ }
77
+ }
78
+ export class Turn {
79
+ constructor(init) {
80
+ if (init.role !== "user" && init.role !== "assistant")
81
+ throw new Error("a turn's role is user or assistant");
82
+ if (typeof init.content !== "string")
83
+ throw new Error("a turn's content is text");
84
+ this.role = init.role;
85
+ this.content = init.content;
86
+ this.at = init.at === undefined ? new Date() : toDate(init.at);
87
+ this.actions = [...(init.actions ?? [])];
88
+ }
89
+ toJSON() {
90
+ return {
91
+ role: this.role,
92
+ content: this.content,
93
+ at: this.at.toISOString(),
94
+ actions: this.actions.map((note) => note.toJSON()),
95
+ };
96
+ }
97
+ static fromJSON(raw) {
98
+ if (!isPlainObject(raw))
99
+ throw new Error("a stored turn is an object");
100
+ const actions = Array.isArray(raw.actions) ? raw.actions.map((a) => ActionNote.fromJSON(a)) : [];
101
+ return new Turn({
102
+ role: raw.role,
103
+ content: raw.content,
104
+ at: raw.at === undefined || raw.at === null ? undefined : toDate(raw.at),
105
+ actions,
106
+ });
107
+ }
108
+ }
109
+ function lastTurns(turns, limit) {
110
+ return limit ? turns.slice(-limit) : turns;
111
+ }
112
+ /** In-process store: the agent's default. Kept until the process stops. */
113
+ export class MemorySessionStore {
114
+ constructor(options = {}) {
115
+ this.data = new Map();
116
+ this.maxTurns = options.maxTurns ?? 200;
117
+ }
118
+ async load(sessionId, options = {}) {
119
+ return lastTurns([...(this.data.get(sessionId) ?? [])], options.limit);
120
+ }
121
+ async append(sessionId, turns) {
122
+ const kept = [...(this.data.get(sessionId) ?? []), ...turns].slice(-this.maxTurns);
123
+ this.data.set(sessionId, kept);
124
+ }
125
+ async clear(sessionId) {
126
+ this.data.delete(sessionId);
127
+ }
128
+ sessionIds() {
129
+ return [...this.data.keys()];
130
+ }
131
+ }
132
+ /** One JSON file per session under `directory`, readable only by its owner (Node only). */
133
+ export class FileSessionStore {
134
+ constructor(directory, options = {}) {
135
+ this.queue = Promise.resolve();
136
+ this.modules = null;
137
+ if (!directory)
138
+ throw new Error("directory is required");
139
+ this.directory = directory;
140
+ this.maxTurns = options.maxTurns ?? 200;
141
+ }
142
+ node() {
143
+ this.modules ?? (this.modules = Promise.all([import("node:fs/promises"), import("node:path")]));
144
+ return this.modules;
145
+ }
146
+ /** One operation at a time, so two appends never interleave a read and a write. */
147
+ locked(operation) {
148
+ const next = this.queue.then(operation, operation);
149
+ this.queue = next.catch(() => undefined);
150
+ return next;
151
+ }
152
+ async file(sessionId) {
153
+ const [, path] = await this.node();
154
+ return path.join(this.directory, `${await sha256Hex(sessionId)}.json`);
155
+ }
156
+ async read(sessionId) {
157
+ const [fs] = await this.node();
158
+ let raw;
159
+ try {
160
+ raw = JSON.parse(await fs.readFile(await this.file(sessionId), "utf8"));
161
+ }
162
+ catch {
163
+ return [];
164
+ }
165
+ const turns = isPlainObject(raw) && Array.isArray(raw.turns) ? raw.turns : [];
166
+ return turns.map((item) => Turn.fromJSON(item));
167
+ }
168
+ async write(sessionId, turns) {
169
+ const [fs, path] = await this.node();
170
+ await fs.mkdir(this.directory, { recursive: true });
171
+ const tmp = path.join(this.directory, `.tmp-${randomHex(8)}.json`);
172
+ const payload = { session_id: sessionId, turns: turns.map((t) => t.toJSON()) };
173
+ try {
174
+ await fs.writeFile(tmp, JSON.stringify(payload), { encoding: "utf8", flag: "wx", mode: 0o600 });
175
+ await fs.rename(tmp, await this.file(sessionId));
176
+ }
177
+ finally {
178
+ await fs.rm(tmp, { force: true });
179
+ }
180
+ }
181
+ load(sessionId, options = {}) {
182
+ return this.locked(async () => lastTurns(await this.read(sessionId), options.limit));
183
+ }
184
+ append(sessionId, turns) {
185
+ return this.locked(async () => {
186
+ const kept = [...(await this.read(sessionId)), ...turns].slice(-this.maxTurns);
187
+ await this.write(sessionId, kept);
188
+ });
189
+ }
190
+ clear(sessionId) {
191
+ return this.locked(async () => {
192
+ const [fs] = await this.node();
193
+ await fs.rm(await this.file(sessionId), { force: true });
194
+ });
195
+ }
196
+ sessionIds() {
197
+ return this.locked(async () => {
198
+ const [fs, path] = await this.node();
199
+ let names;
200
+ try {
201
+ names = (await fs.readdir(this.directory)).filter((n) => n.endsWith(".json")).sort();
202
+ }
203
+ catch {
204
+ return [];
205
+ }
206
+ const ids = [];
207
+ for (const name of names) {
208
+ try {
209
+ const raw = JSON.parse(await fs.readFile(path.join(this.directory, name), "utf8"));
210
+ if (isPlainObject(raw) && raw.session_id !== undefined)
211
+ ids.push(String(raw.session_id));
212
+ }
213
+ catch {
214
+ continue;
215
+ }
216
+ }
217
+ return ids;
218
+ });
219
+ }
220
+ }
221
+ //# sourceMappingURL=session.js.map