@polpo-ai/file-stores 0.11.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/LICENSE +13 -0
- package/dist/file-agent-store.d.ts +24 -0
- package/dist/file-agent-store.d.ts.map +1 -0
- package/dist/file-agent-store.js +102 -0
- package/dist/file-agent-store.js.map +1 -0
- package/dist/file-approval-store.d.ts +20 -0
- package/dist/file-approval-store.d.ts.map +1 -0
- package/dist/file-approval-store.js +62 -0
- package/dist/file-approval-store.js.map +1 -0
- package/dist/file-checkpoint-store.d.ts +18 -0
- package/dist/file-checkpoint-store.d.ts.map +1 -0
- package/dist/file-checkpoint-store.js +52 -0
- package/dist/file-checkpoint-store.js.map +1 -0
- package/dist/file-delay-store.d.ts +18 -0
- package/dist/file-delay-store.d.ts.map +1 -0
- package/dist/file-delay-store.js +52 -0
- package/dist/file-delay-store.js.map +1 -0
- package/dist/file-log-store.d.ts +22 -0
- package/dist/file-log-store.d.ts.map +1 -0
- package/dist/file-log-store.js +123 -0
- package/dist/file-log-store.js.map +1 -0
- package/dist/file-memory-store.d.ts +21 -0
- package/dist/file-memory-store.d.ts.map +1 -0
- package/dist/file-memory-store.js +85 -0
- package/dist/file-memory-store.js.map +1 -0
- package/dist/file-playbook-store.d.ts +25 -0
- package/dist/file-playbook-store.d.ts.map +1 -0
- package/dist/file-playbook-store.js +35 -0
- package/dist/file-playbook-store.js.map +1 -0
- package/dist/file-run-store.d.ts +29 -0
- package/dist/file-run-store.d.ts.map +1 -0
- package/dist/file-run-store.js +131 -0
- package/dist/file-run-store.js.map +1 -0
- package/dist/file-session-store.d.ts +28 -0
- package/dist/file-session-store.d.ts.map +1 -0
- package/dist/file-session-store.js +245 -0
- package/dist/file-session-store.js.map +1 -0
- package/dist/file-skill-store.d.ts +26 -0
- package/dist/file-skill-store.d.ts.map +1 -0
- package/dist/file-skill-store.js +92 -0
- package/dist/file-skill-store.js.map +1 -0
- package/dist/file-task-store.d.ts +48 -0
- package/dist/file-task-store.d.ts.map +1 -0
- package/dist/file-task-store.js +296 -0
- package/dist/file-task-store.js.map +1 -0
- package/dist/file-team-store.d.ts +20 -0
- package/dist/file-team-store.d.ts.map +1 -0
- package/dist/file-team-store.js +91 -0
- package/dist/file-team-store.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/json-config-store.d.ts +25 -0
- package/dist/json-config-store.d.ts.map +1 -0
- package/dist/json-config-store.js +66 -0
- package/dist/json-config-store.js.map +1 -0
- package/dist/json-task-store.d.ts +22 -0
- package/dist/json-task-store.d.ts.map +1 -0
- package/dist/json-task-store.js +112 -0
- package/dist/json-task-store.js.map +1 -0
- package/dist/paths.d.ts +11 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +17 -0
- package/dist/paths.js.map +1 -0
- package/dist/playbook-files.d.ts +38 -0
- package/dist/playbook-files.d.ts.map +1 -0
- package/dist/playbook-files.js +159 -0
- package/dist/playbook-files.js.map +1 -0
- package/package.json +36 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
Copyright 2026-present Lumea Labs
|
|
2
|
+
|
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
you may not use this file except in compliance with the License.
|
|
5
|
+
You may obtain a copy of the License at
|
|
6
|
+
|
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
|
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
See the License for the specific language governing permissions and
|
|
13
|
+
limitations under the License.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AgentConfig } from "@polpo-ai/core/types";
|
|
2
|
+
import type { AgentStore } from "@polpo-ai/core/agent-store";
|
|
3
|
+
/**
|
|
4
|
+
* File-based AgentStore.
|
|
5
|
+
* Persists agents as JSON in `.polpo/agents.json`.
|
|
6
|
+
*/
|
|
7
|
+
export declare class FileAgentStore implements AgentStore {
|
|
8
|
+
private readonly filePath;
|
|
9
|
+
constructor(polpoDir: string);
|
|
10
|
+
private readAll;
|
|
11
|
+
private writeAll;
|
|
12
|
+
getAgents(teamName?: string): Promise<AgentConfig[]>;
|
|
13
|
+
getAgent(name: string): Promise<AgentConfig | undefined>;
|
|
14
|
+
getAgentTeam(name: string): Promise<string | undefined>;
|
|
15
|
+
createAgent(agent: AgentConfig, teamName: string): Promise<AgentConfig>;
|
|
16
|
+
updateAgent(name: string, updates: Partial<Omit<AgentConfig, "name">>): Promise<AgentConfig>;
|
|
17
|
+
moveAgent(name: string, newTeamName: string): Promise<AgentConfig>;
|
|
18
|
+
deleteAgent(name: string): Promise<boolean>;
|
|
19
|
+
cleanupVolatileAgents(missionGroup: string): Promise<number>;
|
|
20
|
+
seed(agents: Array<AgentConfig & {
|
|
21
|
+
teamName: string;
|
|
22
|
+
}>): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=file-agent-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-agent-store.d.ts","sourceRoot":"","sources":["../src/file-agent-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAQ7D;;;GAGG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,QAAQ,EAAE,MAAM;IAM5B,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,QAAQ;IAQV,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAMpD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAIxD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIvD,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAWvE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAS5F,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IASlE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3C,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAS5D,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAY7E"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
2
|
+
import { join, dirname } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* File-based AgentStore.
|
|
5
|
+
* Persists agents as JSON in `.polpo/agents.json`.
|
|
6
|
+
*/
|
|
7
|
+
export class FileAgentStore {
|
|
8
|
+
filePath;
|
|
9
|
+
constructor(polpoDir) {
|
|
10
|
+
this.filePath = join(polpoDir, "agents.json");
|
|
11
|
+
}
|
|
12
|
+
// ── helpers ──────────────────────────────────────────────────────────
|
|
13
|
+
readAll() {
|
|
14
|
+
if (!existsSync(this.filePath))
|
|
15
|
+
return [];
|
|
16
|
+
try {
|
|
17
|
+
return JSON.parse(readFileSync(this.filePath, "utf-8"));
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
writeAll(entries) {
|
|
24
|
+
const dir = dirname(this.filePath);
|
|
25
|
+
if (!existsSync(dir))
|
|
26
|
+
mkdirSync(dir, { recursive: true });
|
|
27
|
+
writeFileSync(this.filePath, JSON.stringify(entries, null, 2), "utf-8");
|
|
28
|
+
}
|
|
29
|
+
// ── AgentStore implementation ────────────────────────────────────────
|
|
30
|
+
async getAgents(teamName) {
|
|
31
|
+
const entries = this.readAll();
|
|
32
|
+
const filtered = teamName ? entries.filter(e => e.teamName === teamName) : entries;
|
|
33
|
+
return filtered.map(e => e.agent);
|
|
34
|
+
}
|
|
35
|
+
async getAgent(name) {
|
|
36
|
+
return this.readAll().find(e => e.agent.name === name)?.agent;
|
|
37
|
+
}
|
|
38
|
+
async getAgentTeam(name) {
|
|
39
|
+
return this.readAll().find(e => e.agent.name === name)?.teamName;
|
|
40
|
+
}
|
|
41
|
+
async createAgent(agent, teamName) {
|
|
42
|
+
const entries = this.readAll();
|
|
43
|
+
if (entries.some(e => e.agent.name === agent.name)) {
|
|
44
|
+
throw new Error(`Agent "${agent.name}" already exists`);
|
|
45
|
+
}
|
|
46
|
+
if (!agent.createdAt)
|
|
47
|
+
agent.createdAt = new Date().toISOString();
|
|
48
|
+
entries.push({ agent, teamName });
|
|
49
|
+
this.writeAll(entries);
|
|
50
|
+
return agent;
|
|
51
|
+
}
|
|
52
|
+
async updateAgent(name, updates) {
|
|
53
|
+
const entries = this.readAll();
|
|
54
|
+
const entry = entries.find(e => e.agent.name === name);
|
|
55
|
+
if (!entry)
|
|
56
|
+
throw new Error(`Agent "${name}" not found`);
|
|
57
|
+
Object.assign(entry.agent, updates);
|
|
58
|
+
this.writeAll(entries);
|
|
59
|
+
return entry.agent;
|
|
60
|
+
}
|
|
61
|
+
async moveAgent(name, newTeamName) {
|
|
62
|
+
const entries = this.readAll();
|
|
63
|
+
const entry = entries.find(e => e.agent.name === name);
|
|
64
|
+
if (!entry)
|
|
65
|
+
throw new Error(`Agent "${name}" not found`);
|
|
66
|
+
entry.teamName = newTeamName;
|
|
67
|
+
this.writeAll(entries);
|
|
68
|
+
return entry.agent;
|
|
69
|
+
}
|
|
70
|
+
async deleteAgent(name) {
|
|
71
|
+
const entries = this.readAll();
|
|
72
|
+
const idx = entries.findIndex(e => e.agent.name === name);
|
|
73
|
+
if (idx < 0)
|
|
74
|
+
return false;
|
|
75
|
+
entries.splice(idx, 1);
|
|
76
|
+
this.writeAll(entries);
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
async cleanupVolatileAgents(missionGroup) {
|
|
80
|
+
const entries = this.readAll();
|
|
81
|
+
const before = entries.length;
|
|
82
|
+
const filtered = entries.filter(e => !(e.agent.volatile && e.agent.missionGroup === missionGroup));
|
|
83
|
+
if (filtered.length === before)
|
|
84
|
+
return 0;
|
|
85
|
+
this.writeAll(filtered);
|
|
86
|
+
return before - filtered.length;
|
|
87
|
+
}
|
|
88
|
+
async seed(agents) {
|
|
89
|
+
const existing = this.readAll();
|
|
90
|
+
const existingNames = new Set(existing.map(e => e.agent.name));
|
|
91
|
+
let changed = false;
|
|
92
|
+
for (const { teamName, ...agent } of agents) {
|
|
93
|
+
if (!existingNames.has(agent.name)) {
|
|
94
|
+
existing.push({ agent: agent, teamName });
|
|
95
|
+
changed = true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (changed)
|
|
99
|
+
this.writeAll(existing);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=file-agent-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-agent-store.js","sourceRoot":"","sources":["../src/file-agent-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ApprovalStore } from "@polpo-ai/core/approval-store";
|
|
2
|
+
import type { ApprovalRequest, ApprovalStatus } from "@polpo-ai/core/types";
|
|
3
|
+
/**
|
|
4
|
+
* Filesystem-based approval store.
|
|
5
|
+
* Persists approval requests as JSON in .polpo/approvals.json.
|
|
6
|
+
*/
|
|
7
|
+
export declare class FileApprovalStore implements ApprovalStore {
|
|
8
|
+
private filePath;
|
|
9
|
+
private requests;
|
|
10
|
+
constructor(polpoDir: string);
|
|
11
|
+
upsert(request: ApprovalRequest): Promise<void>;
|
|
12
|
+
get(id: string): Promise<ApprovalRequest | undefined>;
|
|
13
|
+
list(status?: ApprovalStatus): Promise<ApprovalRequest[]>;
|
|
14
|
+
listByTask(taskId: string): Promise<ApprovalRequest[]>;
|
|
15
|
+
delete(id: string): Promise<boolean>;
|
|
16
|
+
close(): Promise<void>;
|
|
17
|
+
private load;
|
|
18
|
+
private save;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=file-approval-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-approval-store.d.ts","sourceRoot":"","sources":["../src/file-approval-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE5E;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAA+B;gBAEnC,QAAQ,EAAE,MAAM;IAStB,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/C,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAIrD,IAAI,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAMzD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAItD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,CAAC,IAAI;IAYZ,OAAO,CAAC,IAAI;CAKb"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Filesystem-based approval store.
|
|
5
|
+
* Persists approval requests as JSON in .polpo/approvals.json.
|
|
6
|
+
*/
|
|
7
|
+
export class FileApprovalStore {
|
|
8
|
+
filePath;
|
|
9
|
+
requests;
|
|
10
|
+
constructor(polpoDir) {
|
|
11
|
+
if (!existsSync(polpoDir)) {
|
|
12
|
+
mkdirSync(polpoDir, { recursive: true });
|
|
13
|
+
}
|
|
14
|
+
this.filePath = join(polpoDir, "approvals.json");
|
|
15
|
+
this.requests = new Map();
|
|
16
|
+
this.load();
|
|
17
|
+
}
|
|
18
|
+
async upsert(request) {
|
|
19
|
+
this.requests.set(request.id, request);
|
|
20
|
+
this.save();
|
|
21
|
+
}
|
|
22
|
+
async get(id) {
|
|
23
|
+
return this.requests.get(id);
|
|
24
|
+
}
|
|
25
|
+
async list(status) {
|
|
26
|
+
const all = [...this.requests.values()];
|
|
27
|
+
if (status)
|
|
28
|
+
return all.filter(r => r.status === status);
|
|
29
|
+
return all;
|
|
30
|
+
}
|
|
31
|
+
async listByTask(taskId) {
|
|
32
|
+
return [...this.requests.values()].filter(r => r.taskId === taskId);
|
|
33
|
+
}
|
|
34
|
+
async delete(id) {
|
|
35
|
+
const had = this.requests.delete(id);
|
|
36
|
+
if (had)
|
|
37
|
+
this.save();
|
|
38
|
+
return had;
|
|
39
|
+
}
|
|
40
|
+
async close() {
|
|
41
|
+
this.save();
|
|
42
|
+
}
|
|
43
|
+
load() {
|
|
44
|
+
try {
|
|
45
|
+
if (existsSync(this.filePath)) {
|
|
46
|
+
const raw = readFileSync(this.filePath, "utf-8");
|
|
47
|
+
const arr = JSON.parse(raw);
|
|
48
|
+
for (const r of arr) {
|
|
49
|
+
this.requests.set(r.id, r);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch { /* corrupted file — start fresh */ }
|
|
54
|
+
}
|
|
55
|
+
save() {
|
|
56
|
+
try {
|
|
57
|
+
writeFileSync(this.filePath, JSON.stringify([...this.requests.values()], null, 2));
|
|
58
|
+
}
|
|
59
|
+
catch { /* best-effort */ }
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=file-approval-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-approval-store.js","sourceRoot":"","sources":["../src/file-approval-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACpB,QAAQ,CAAS;IACjB,QAAQ,CAA+B;IAE/C,YAAY,QAAgB;QAC1B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAwB;QACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAuB;QAChC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,MAAM;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACxD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEO,IAAI;QACV,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACjD,MAAM,GAAG,GAAsB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/C,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;oBACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;IAChD,CAAC;IAEO,IAAI;QACV,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CheckpointStore, CheckpointState } from "@polpo-ai/core/checkpoint-store";
|
|
2
|
+
export type { CheckpointState };
|
|
3
|
+
/**
|
|
4
|
+
* Filesystem-based checkpoint store.
|
|
5
|
+
* Persists checkpoint runtime state as JSON in `.polpo/checkpoints.json`
|
|
6
|
+
* so that checkpoint blocking survives server restarts.
|
|
7
|
+
*/
|
|
8
|
+
export declare class FileCheckpointStore implements CheckpointStore {
|
|
9
|
+
private filePath;
|
|
10
|
+
constructor(polpoDir: string);
|
|
11
|
+
/** Load persisted state (returns empty collections if file missing/corrupt). */
|
|
12
|
+
load(): Promise<CheckpointState>;
|
|
13
|
+
/** Persist current state to disk. */
|
|
14
|
+
save(state: CheckpointState): Promise<void>;
|
|
15
|
+
/** Remove all entries for a given group and persist. */
|
|
16
|
+
removeGroup(state: CheckpointState, group: string): Promise<CheckpointState>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=file-checkpoint-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-checkpoint-store.d.ts","sourceRoot":"","sources":["../src/file-checkpoint-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAExF,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAO5B,gFAAgF;IAC1E,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC;IAetC,qCAAqC;IAC/B,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjD,wDAAwD;IAClD,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAUnF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Filesystem-based checkpoint store.
|
|
5
|
+
* Persists checkpoint runtime state as JSON in `.polpo/checkpoints.json`
|
|
6
|
+
* so that checkpoint blocking survives server restarts.
|
|
7
|
+
*/
|
|
8
|
+
export class FileCheckpointStore {
|
|
9
|
+
filePath;
|
|
10
|
+
constructor(polpoDir) {
|
|
11
|
+
if (!existsSync(polpoDir)) {
|
|
12
|
+
mkdirSync(polpoDir, { recursive: true });
|
|
13
|
+
}
|
|
14
|
+
this.filePath = join(polpoDir, "checkpoints.json");
|
|
15
|
+
}
|
|
16
|
+
/** Load persisted state (returns empty collections if file missing/corrupt). */
|
|
17
|
+
async load() {
|
|
18
|
+
try {
|
|
19
|
+
if (existsSync(this.filePath)) {
|
|
20
|
+
const raw = readFileSync(this.filePath, "utf-8");
|
|
21
|
+
const data = JSON.parse(raw);
|
|
22
|
+
return {
|
|
23
|
+
definitions: data.definitions ?? {},
|
|
24
|
+
active: data.active ?? {},
|
|
25
|
+
resumed: data.resumed ?? [],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch { /* corrupted file — start fresh */ }
|
|
30
|
+
return { definitions: {}, active: {}, resumed: [] };
|
|
31
|
+
}
|
|
32
|
+
/** Persist current state to disk. */
|
|
33
|
+
async save(state) {
|
|
34
|
+
try {
|
|
35
|
+
writeFileSync(this.filePath, JSON.stringify(state, null, 2));
|
|
36
|
+
}
|
|
37
|
+
catch { /* best-effort */ }
|
|
38
|
+
}
|
|
39
|
+
/** Remove all entries for a given group and persist. */
|
|
40
|
+
async removeGroup(state, group) {
|
|
41
|
+
delete state.definitions[group];
|
|
42
|
+
const prefix = `${group}:`;
|
|
43
|
+
for (const key of Object.keys(state.active)) {
|
|
44
|
+
if (key.startsWith(prefix))
|
|
45
|
+
delete state.active[key];
|
|
46
|
+
}
|
|
47
|
+
state.resumed = state.resumed.filter(k => !k.startsWith(prefix));
|
|
48
|
+
await this.save(state);
|
|
49
|
+
return state;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=file-checkpoint-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-checkpoint-store.js","sourceRoot":"","sources":["../src/file-checkpoint-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IACtB,QAAQ,CAAS;IAEzB,YAAY,QAAgB;QAC1B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IACrD,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;gBAChD,OAAO;oBACL,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;oBACnC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;oBACzB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;iBAC5B,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC9C,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,IAAI,CAAC,KAAsB;QAC/B,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,WAAW,CAAC,KAAsB,EAAE,KAAa;QACrD,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { DelayStore, DelayState } from "@polpo-ai/core/delay-store";
|
|
2
|
+
export type { DelayState };
|
|
3
|
+
/**
|
|
4
|
+
* Filesystem-based delay store.
|
|
5
|
+
* Persists delay runtime state as JSON in `.polpo/delays.json`
|
|
6
|
+
* so that delay blocking survives server restarts.
|
|
7
|
+
*/
|
|
8
|
+
export declare class FileDelayStore implements DelayStore {
|
|
9
|
+
private filePath;
|
|
10
|
+
constructor(polpoDir: string);
|
|
11
|
+
/** Load persisted state (returns empty collections if file missing/corrupt). */
|
|
12
|
+
load(): Promise<DelayState>;
|
|
13
|
+
/** Persist current state to disk. */
|
|
14
|
+
save(state: DelayState): Promise<void>;
|
|
15
|
+
/** Remove all entries for a given group and persist. */
|
|
16
|
+
removeGroup(state: DelayState, group: string): Promise<DelayState>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=file-delay-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-delay-store.d.ts","sourceRoot":"","sources":["../src/file-delay-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEzE,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B;;;;GAIG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAO5B,gFAAgF;IAC1E,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAejC,qCAAqC;IAC/B,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,wDAAwD;IAClD,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAUzE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Filesystem-based delay store.
|
|
5
|
+
* Persists delay runtime state as JSON in `.polpo/delays.json`
|
|
6
|
+
* so that delay blocking survives server restarts.
|
|
7
|
+
*/
|
|
8
|
+
export class FileDelayStore {
|
|
9
|
+
filePath;
|
|
10
|
+
constructor(polpoDir) {
|
|
11
|
+
if (!existsSync(polpoDir)) {
|
|
12
|
+
mkdirSync(polpoDir, { recursive: true });
|
|
13
|
+
}
|
|
14
|
+
this.filePath = join(polpoDir, "delays.json");
|
|
15
|
+
}
|
|
16
|
+
/** Load persisted state (returns empty collections if file missing/corrupt). */
|
|
17
|
+
async load() {
|
|
18
|
+
try {
|
|
19
|
+
if (existsSync(this.filePath)) {
|
|
20
|
+
const raw = readFileSync(this.filePath, "utf-8");
|
|
21
|
+
const data = JSON.parse(raw);
|
|
22
|
+
return {
|
|
23
|
+
definitions: data.definitions ?? {},
|
|
24
|
+
active: data.active ?? {},
|
|
25
|
+
expired: data.expired ?? [],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch { /* corrupted file — start fresh */ }
|
|
30
|
+
return { definitions: {}, active: {}, expired: [] };
|
|
31
|
+
}
|
|
32
|
+
/** Persist current state to disk. */
|
|
33
|
+
async save(state) {
|
|
34
|
+
try {
|
|
35
|
+
writeFileSync(this.filePath, JSON.stringify(state, null, 2));
|
|
36
|
+
}
|
|
37
|
+
catch { /* best-effort */ }
|
|
38
|
+
}
|
|
39
|
+
/** Remove all entries for a given group and persist. */
|
|
40
|
+
async removeGroup(state, group) {
|
|
41
|
+
delete state.definitions[group];
|
|
42
|
+
const prefix = `${group}:`;
|
|
43
|
+
for (const key of Object.keys(state.active)) {
|
|
44
|
+
if (key.startsWith(prefix))
|
|
45
|
+
delete state.active[key];
|
|
46
|
+
}
|
|
47
|
+
state.expired = state.expired.filter(k => !k.startsWith(prefix));
|
|
48
|
+
await this.save(state);
|
|
49
|
+
return state;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=file-delay-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-delay-store.js","sourceRoot":"","sources":["../src/file-delay-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACjB,QAAQ,CAAS;IAEzB,YAAY,QAAgB;QAC1B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAChD,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;gBAC3C,OAAO;oBACL,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;oBACnC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;oBACzB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;iBAC5B,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC9C,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,IAAI,CAAC,KAAiB;QAC1B,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,WAAW,CAAC,KAAiB,EAAE,KAAa;QAChD,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { LogStore, LogEntry, SessionInfo } from "@polpo-ai/core/log-store";
|
|
2
|
+
/**
|
|
3
|
+
* File-backed LogStore.
|
|
4
|
+
* Writes JSONL files to `.polpo/logs/`, one per session.
|
|
5
|
+
*
|
|
6
|
+
* File naming: `{sessionId}.jsonl`
|
|
7
|
+
* First line of each file: `{"_session":true,"sessionId":"...","startedAt":"..."}`
|
|
8
|
+
*/
|
|
9
|
+
export declare class FileLogStore implements LogStore {
|
|
10
|
+
private readonly logsDir;
|
|
11
|
+
private sessionId?;
|
|
12
|
+
constructor(polpoDir: string);
|
|
13
|
+
startSession(): Promise<string>;
|
|
14
|
+
getSessionId(): Promise<string | undefined>;
|
|
15
|
+
append(entry: LogEntry): Promise<void>;
|
|
16
|
+
getSessionEntries(sessionId?: string): Promise<LogEntry[]>;
|
|
17
|
+
listSessions(): Promise<SessionInfo[]>;
|
|
18
|
+
prune(keepSessions: number): Promise<number>;
|
|
19
|
+
close(): Promise<void>;
|
|
20
|
+
private sessionFile;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=file-log-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-log-store.d.ts","sourceRoot":"","sources":["../src/file-log-store.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEhF;;;;;;GAMG;AACH,qBAAa,YAAa,YAAW,QAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,QAAQ,EAAE,MAAM;IAItB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAc/B,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI3C,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAStC,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAoB1D,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAgCtC,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,OAAO,CAAC,WAAW;CAGpB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, appendFileSync, readFileSync, readdirSync, unlinkSync, statSync, } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { nanoid } from "nanoid";
|
|
4
|
+
/**
|
|
5
|
+
* File-backed LogStore.
|
|
6
|
+
* Writes JSONL files to `.polpo/logs/`, one per session.
|
|
7
|
+
*
|
|
8
|
+
* File naming: `{sessionId}.jsonl`
|
|
9
|
+
* First line of each file: `{"_session":true,"sessionId":"...","startedAt":"..."}`
|
|
10
|
+
*/
|
|
11
|
+
export class FileLogStore {
|
|
12
|
+
logsDir;
|
|
13
|
+
sessionId;
|
|
14
|
+
constructor(polpoDir) {
|
|
15
|
+
this.logsDir = join(polpoDir, "logs");
|
|
16
|
+
}
|
|
17
|
+
async startSession() {
|
|
18
|
+
if (!existsSync(this.logsDir)) {
|
|
19
|
+
mkdirSync(this.logsDir, { recursive: true });
|
|
20
|
+
}
|
|
21
|
+
this.sessionId = nanoid(10);
|
|
22
|
+
const header = JSON.stringify({
|
|
23
|
+
_session: true,
|
|
24
|
+
sessionId: this.sessionId,
|
|
25
|
+
startedAt: new Date().toISOString(),
|
|
26
|
+
});
|
|
27
|
+
appendFileSync(this.sessionFile(this.sessionId), header + "\n", "utf-8");
|
|
28
|
+
return this.sessionId;
|
|
29
|
+
}
|
|
30
|
+
async getSessionId() {
|
|
31
|
+
return this.sessionId;
|
|
32
|
+
}
|
|
33
|
+
async append(entry) {
|
|
34
|
+
if (!this.sessionId)
|
|
35
|
+
return;
|
|
36
|
+
try {
|
|
37
|
+
const line = JSON.stringify(entry);
|
|
38
|
+
appendFileSync(this.sessionFile(this.sessionId), line + "\n", "utf-8");
|
|
39
|
+
}
|
|
40
|
+
catch { /* best-effort: non-critical */
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async getSessionEntries(sessionId) {
|
|
44
|
+
const sid = sessionId ?? this.sessionId;
|
|
45
|
+
if (!sid)
|
|
46
|
+
return [];
|
|
47
|
+
const file = this.sessionFile(sid);
|
|
48
|
+
if (!existsSync(file))
|
|
49
|
+
return [];
|
|
50
|
+
try {
|
|
51
|
+
const lines = readFileSync(file, "utf-8").split("\n").filter(Boolean);
|
|
52
|
+
const entries = [];
|
|
53
|
+
for (const line of lines) {
|
|
54
|
+
const obj = JSON.parse(line);
|
|
55
|
+
// Skip session header
|
|
56
|
+
if (obj._session)
|
|
57
|
+
continue;
|
|
58
|
+
entries.push(obj);
|
|
59
|
+
}
|
|
60
|
+
return entries;
|
|
61
|
+
}
|
|
62
|
+
catch { /* unreadable log file */
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async listSessions() {
|
|
67
|
+
if (!existsSync(this.logsDir))
|
|
68
|
+
return [];
|
|
69
|
+
const files = readdirSync(this.logsDir)
|
|
70
|
+
.filter(f => f.endsWith(".jsonl"))
|
|
71
|
+
.sort()
|
|
72
|
+
.reverse(); // most recent first (nanoid is not time-sorted, so use file mtime)
|
|
73
|
+
// Sort by modification time (most recent first)
|
|
74
|
+
const withMtime = files.map(f => ({
|
|
75
|
+
file: f,
|
|
76
|
+
mtime: statSync(join(this.logsDir, f)).mtimeMs,
|
|
77
|
+
}));
|
|
78
|
+
withMtime.sort((a, b) => b.mtime - a.mtime);
|
|
79
|
+
const sessions = [];
|
|
80
|
+
for (const { file } of withMtime) {
|
|
81
|
+
const filePath = join(this.logsDir, file);
|
|
82
|
+
try {
|
|
83
|
+
const content = readFileSync(filePath, "utf-8");
|
|
84
|
+
const lines = content.split("\n").filter(Boolean);
|
|
85
|
+
const header = JSON.parse(lines[0]);
|
|
86
|
+
sessions.push({
|
|
87
|
+
sessionId: header.sessionId ?? file.replace(".jsonl", ""),
|
|
88
|
+
startedAt: header.startedAt ?? new Date(statSync(filePath).mtimeMs).toISOString(),
|
|
89
|
+
entries: lines.length - 1, // exclude header
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
catch { /* skip corrupt file */
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return sessions;
|
|
96
|
+
}
|
|
97
|
+
async prune(keepSessions) {
|
|
98
|
+
const sessions = await this.listSessions();
|
|
99
|
+
if (sessions.length <= keepSessions)
|
|
100
|
+
return 0;
|
|
101
|
+
const toRemove = sessions.slice(keepSessions);
|
|
102
|
+
let removed = 0;
|
|
103
|
+
for (const s of toRemove) {
|
|
104
|
+
// Don't prune current session
|
|
105
|
+
if (s.sessionId === this.sessionId)
|
|
106
|
+
continue;
|
|
107
|
+
try {
|
|
108
|
+
unlinkSync(this.sessionFile(s.sessionId));
|
|
109
|
+
removed++;
|
|
110
|
+
}
|
|
111
|
+
catch { /* file already removed */ }
|
|
112
|
+
}
|
|
113
|
+
return removed;
|
|
114
|
+
}
|
|
115
|
+
async close() {
|
|
116
|
+
// No resources to release for file-based store
|
|
117
|
+
this.sessionId = undefined;
|
|
118
|
+
}
|
|
119
|
+
sessionFile(sessionId) {
|
|
120
|
+
return join(this.logsDir, `${sessionId}.jsonl`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=file-log-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-log-store.js","sourceRoot":"","sources":["../src/file-log-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { MemoryStore } from "@polpo-ai/core/memory-store";
|
|
2
|
+
/**
|
|
3
|
+
* File-backed MemoryStore.
|
|
4
|
+
* Reads/writes `.polpo/memory.md` for shared memory (no scope).
|
|
5
|
+
* Agent-scoped memory lives in `.polpo/memory/<agent-name>.md`.
|
|
6
|
+
*/
|
|
7
|
+
export declare class FileMemoryStore implements MemoryStore {
|
|
8
|
+
private readonly sharedPath;
|
|
9
|
+
private readonly scopeDir;
|
|
10
|
+
constructor(polpoDir: string);
|
|
11
|
+
/** Resolve the file path for a given scope. Undefined = shared memory. */
|
|
12
|
+
private resolvePath;
|
|
13
|
+
exists(scope?: string): Promise<boolean>;
|
|
14
|
+
get(scope?: string): Promise<string>;
|
|
15
|
+
save(content: string, scope?: string): Promise<void>;
|
|
16
|
+
append(line: string, scope?: string): Promise<void>;
|
|
17
|
+
update(oldText: string, newText: string, scope?: string): Promise<true | string>;
|
|
18
|
+
/** List all agent scopes that have memory files. Returns agent names (without "agent:" prefix). */
|
|
19
|
+
listScopes(): Promise<string[]>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=file-memory-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-memory-store.d.ts","sourceRoot":"","sources":["../src/file-memory-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,QAAQ,EAAE,MAAM;IAK5B,0EAA0E;IAC1E,OAAO,CAAC,WAAW;IAOb,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUpC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASpD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;IAiBtF,mGAAmG;IAC7F,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAUtC"}
|