@amaster.ai/pi-storage 0.1.0-beta.0 → 0.1.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 +1 -1
- package/dist/artifact-stores.d.ts +1 -1
- package/dist/artifact-stores.d.ts.map +1 -1
- package/dist/artifact-stores.js +2 -2
- package/dist/artifact-stores.js.map +1 -1
- package/dist/db-migrations.js +24 -24
- package/dist/db-migrations.js.map +1 -1
- package/dist/db-runtime-storage.d.ts +1 -1
- package/dist/db-runtime-storage.d.ts.map +1 -1
- package/dist/db-runtime-storage.js +175 -123
- package/dist/db-runtime-storage.js.map +1 -1
- package/dist/db.d.ts +3 -2
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +3 -2
- package/dist/db.js.map +1 -1
- package/dist/event-stores.d.ts +1 -1
- package/dist/event-stores.d.ts.map +1 -1
- package/dist/event-stores.js +22 -5
- package/dist/event-stores.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +3 -3
- package/dist/internal.js +3 -3
- package/dist/json-file.d.ts +7 -0
- package/dist/json-file.d.ts.map +1 -1
- package/dist/json-file.js +6 -6
- package/dist/json-file.js.map +1 -1
- package/dist/json.d.ts +5 -4
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +5 -4
- package/dist/json.js.map +1 -1
- package/dist/migration-main.js +4 -4
- package/dist/redis-locks.js +7 -7
- package/dist/runtime-scope.d.ts +1 -1
- package/dist/runtime-scope.d.ts.map +1 -1
- package/dist/runtime-storage-json.d.ts +18 -0
- package/dist/runtime-storage-json.d.ts.map +1 -0
- package/dist/runtime-storage-json.js +19 -0
- package/dist/runtime-storage-json.js.map +1 -0
- package/dist/{scheduled-task-stores.d.ts → scheduler-db.d.ts} +2 -24
- package/dist/scheduler-db.d.ts.map +1 -0
- package/dist/{scheduled-task-stores.js → scheduler-db.js} +32 -171
- package/dist/scheduler-db.js.map +1 -0
- package/dist/scheduler-json.d.ts +24 -0
- package/dist/scheduler-json.d.ts.map +1 -0
- package/dist/scheduler-json.js +134 -0
- package/dist/scheduler-json.js.map +1 -0
- package/dist/session-stores.d.ts +2 -1
- package/dist/session-stores.d.ts.map +1 -1
- package/dist/session-stores.js +41 -24
- package/dist/session-stores.js.map +1 -1
- package/dist/session-workspaces.d.ts +22 -0
- package/dist/session-workspaces.d.ts.map +1 -0
- package/dist/session-workspaces.js +75 -0
- package/dist/session-workspaces.js.map +1 -0
- package/dist/subagent-store.d.ts +2 -2
- package/dist/subagent-store.d.ts.map +1 -1
- package/dist/subagent-store.js +18 -18
- package/dist/subagent-store.js.map +1 -1
- package/package.json +21 -8
- package/dist/runtime-storage.d.ts +0 -30
- package/dist/runtime-storage.d.ts.map +0 -1
- package/dist/runtime-storage.js +0 -60
- package/dist/runtime-storage.js.map +0 -1
- package/dist/scheduled-task-stores.d.ts.map +0 -1
- package/dist/scheduled-task-stores.js.map +0 -1
- package/dist/scheduler.d.ts +0 -2
- package/dist/scheduler.d.ts.map +0 -1
- package/dist/scheduler.js +0 -2
- package/dist/scheduler.js.map +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CopilotMemoryStore, LlmGenerationEventStore, RuntimeArtifactStore, RuntimeEventStore, RuntimeSessionStore, RuntimeTimelineEventStore, SubagentRunStore, ToolEventStore, TranscriptStore } from '@amaster.ai/pi-shared';
|
|
2
|
+
export type RuntimeStorageBundle = {
|
|
3
|
+
store: RuntimeSessionStore;
|
|
4
|
+
transcripts: TranscriptStore;
|
|
5
|
+
memory: CopilotMemoryStore;
|
|
6
|
+
runtimeEvents: RuntimeEventStore;
|
|
7
|
+
toolEvents: ToolEventStore;
|
|
8
|
+
llmGenerationEvents: LlmGenerationEventStore;
|
|
9
|
+
timelineEvents: RuntimeTimelineEventStore;
|
|
10
|
+
subagents: SubagentRunStore;
|
|
11
|
+
artifacts: RuntimeArtifactStore;
|
|
12
|
+
};
|
|
13
|
+
export declare function createJsonRuntimeStorage(agentDir: string, eventLimits: {
|
|
14
|
+
runtimeEvents: number;
|
|
15
|
+
toolEvents: number;
|
|
16
|
+
llmGenerationEvents: number;
|
|
17
|
+
}): RuntimeStorageBundle;
|
|
18
|
+
//# sourceMappingURL=runtime-storage-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-storage-json.d.ts","sourceRoot":"","sources":["../src/runtime-storage-json.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,cAAc,EACd,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAe/B,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,WAAW,EAAE,eAAe,CAAC;IAC7B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,aAAa,EAAE,iBAAiB,CAAC;IACjC,UAAU,EAAE,cAAc,CAAC;IAC3B,mBAAmB,EAAE,uBAAuB,CAAC;IAC7C,cAAc,EAAE,yBAAyB,CAAC;IAC1C,SAAS,EAAE,gBAAgB,CAAC;IAC5B,SAAS,EAAE,oBAAoB,CAAC;CACjC,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,GACA,oBAAoB,CAwBtB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { JsonFileArtifactStore } from './artifact-stores.js';
|
|
3
|
+
import { JsonFileLlmGenerationEventStore, JsonFileRuntimeEventStore, JsonFileRuntimeTimelineEventStore, JsonFileToolEventStore, } from './event-stores.js';
|
|
4
|
+
import { JsonFileConversationStore, JsonFileMemoryStore, JsonFileTranscriptStore, } from './session-stores.js';
|
|
5
|
+
import { JsonFileSubagentRunStore } from './subagent-store.js';
|
|
6
|
+
export function createJsonRuntimeStorage(agentDir, eventLimits) {
|
|
7
|
+
return {
|
|
8
|
+
store: new JsonFileConversationStore(path.join(agentDir, 'sessions.json')),
|
|
9
|
+
transcripts: new JsonFileTranscriptStore(path.join(agentDir, 'transcripts.json')),
|
|
10
|
+
memory: new JsonFileMemoryStore(path.join(agentDir, 'memory.json')),
|
|
11
|
+
runtimeEvents: new JsonFileRuntimeEventStore(path.join(agentDir, 'runtime-events.json'), eventLimits.runtimeEvents),
|
|
12
|
+
toolEvents: new JsonFileToolEventStore(path.join(agentDir, 'tool-events.json'), eventLimits.toolEvents),
|
|
13
|
+
llmGenerationEvents: new JsonFileLlmGenerationEventStore(path.join(agentDir, 'llm-generation-events.json'), eventLimits.llmGenerationEvents),
|
|
14
|
+
timelineEvents: new JsonFileRuntimeTimelineEventStore(path.join(agentDir, 'events.json'), Math.max(eventLimits.runtimeEvents, eventLimits.toolEvents, eventLimits.llmGenerationEvents)),
|
|
15
|
+
subagents: new JsonFileSubagentRunStore(path.join(agentDir, 'subagents.json')),
|
|
16
|
+
artifacts: new JsonFileArtifactStore(path.join(agentDir, 'artifacts.json')),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=runtime-storage-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-storage-json.js","sourceRoot":"","sources":["../src/runtime-storage-json.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAY7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,+BAA+B,EAC/B,yBAAyB,EACzB,iCAAiC,EACjC,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAc/D,MAAM,UAAU,wBAAwB,CACtC,QAAgB,EAChB,WAIC;IAED,OAAO;QACL,KAAK,EAAE,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QAC1E,WAAW,EAAE,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACjF,MAAM,EAAE,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACnE,aAAa,EAAE,IAAI,yBAAyB,CAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,EAC1C,WAAW,CAAC,aAAa,CAC1B;QACD,UAAU,EAAE,IAAI,sBAAsB,CACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EACvC,WAAW,CAAC,UAAU,CACvB;QACD,mBAAmB,EAAE,IAAI,+BAA+B,CACtD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,4BAA4B,CAAC,EACjD,WAAW,CAAC,mBAAmB,CAChC;QACD,cAAc,EAAE,IAAI,iCAAiC,CACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAClC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAC7F;QACD,SAAS,EAAE,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC9E,SAAS,EAAE,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;KAC5E,CAAC;AACJ,CAAC"}
|
|
@@ -1,26 +1,4 @@
|
|
|
1
|
-
import { type ScheduledTask, type ScheduledTaskStore, type SchedulerLock, type TaskSchedulerScope } from
|
|
2
|
-
export declare class JsonScheduledTaskStore implements ScheduledTaskStore {
|
|
3
|
-
private readonly filePath;
|
|
4
|
-
private loaded;
|
|
5
|
-
private readonly tasks;
|
|
6
|
-
constructor(filePath: string);
|
|
7
|
-
list(scope?: TaskSchedulerScope): Promise<ScheduledTask[]>;
|
|
8
|
-
get(taskId: string, scope?: TaskSchedulerScope): Promise<ScheduledTask | undefined>;
|
|
9
|
-
create(task: ScheduledTask): Promise<ScheduledTask>;
|
|
10
|
-
update(taskId: string, task: ScheduledTask, scope?: TaskSchedulerScope): Promise<ScheduledTask | undefined>;
|
|
11
|
-
delete(taskId: string, scope?: TaskSchedulerScope): Promise<boolean>;
|
|
12
|
-
private load;
|
|
13
|
-
private save;
|
|
14
|
-
}
|
|
15
|
-
export declare class FileSchedulerLock implements SchedulerLock {
|
|
16
|
-
readonly path: string;
|
|
17
|
-
private acquired;
|
|
18
|
-
constructor(path: string);
|
|
19
|
-
acquire(): boolean;
|
|
20
|
-
release(): void;
|
|
21
|
-
isAcquired(): boolean;
|
|
22
|
-
holderPid(): number | undefined;
|
|
23
|
-
}
|
|
1
|
+
import { type ScheduledTask, type ScheduledTaskStore, type SchedulerLock, type TaskSchedulerScope } from '@amaster.ai/pi-task-scheduler';
|
|
24
2
|
export declare class RedisSchedulerLock implements SchedulerLock {
|
|
25
3
|
private readonly key;
|
|
26
4
|
private readonly ttlMs;
|
|
@@ -46,4 +24,4 @@ export declare class DbScheduledTaskStore implements ScheduledTaskStore {
|
|
|
46
24
|
private listRunHistory;
|
|
47
25
|
private syncTaskRuns;
|
|
48
26
|
}
|
|
49
|
-
//# sourceMappingURL=
|
|
27
|
+
//# sourceMappingURL=scheduler-db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler-db.d.ts","sourceRoot":"","sources":["../src/scheduler-db.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAGlB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,+BAA+B,CAAC;AAIvC,qBAAa,kBAAmB,YAAW,aAAa;IAOpD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAPxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;gBAGvC,QAAQ,EAAE,MAAM,EACC,GAAG,SAAwB,EAC3B,KAAK,SAAS;IAM3B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAK3B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAK1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,UAAU,IAAI,OAAO;IAIrB,SAAS,IAAI,MAAM,GAAG,SAAS;CAGhC;AAED,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,WAAW,EAAE,MAAM;IAQzB,IAAI,CAAC,KAAK,GAAE,kBAAuB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAQ9D,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,kBAAuB,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAOvF,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IASnD,MAAM,CACV,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,EACnB,KAAK,GAAE,kBAAuB,GAC7B,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAa/B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,kBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;YAQhE,cAAc;YA4Bd,cAAc;YASd,YAAY;CAU3B"}
|
|
@@ -1,139 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import { normalizeScheduledTask, } from "@amaster.ai/pi-task-scheduler";
|
|
5
|
-
import { readJsonFile, writeJsonFile } from "./json-file.js";
|
|
6
|
-
import { RedisLockManager } from "./redis-locks.js";
|
|
7
|
-
export class JsonScheduledTaskStore {
|
|
8
|
-
filePath;
|
|
9
|
-
loaded = false;
|
|
10
|
-
tasks = new Map();
|
|
11
|
-
constructor(filePath) {
|
|
12
|
-
this.filePath = filePath;
|
|
13
|
-
}
|
|
14
|
-
async list(scope = {}) {
|
|
15
|
-
await this.load();
|
|
16
|
-
return [...this.tasks.values()].filter((task) => taskMatchesScope(task, scope));
|
|
17
|
-
}
|
|
18
|
-
async get(taskId, scope = {}) {
|
|
19
|
-
await this.load();
|
|
20
|
-
const task = this.tasks.get(taskId);
|
|
21
|
-
return task && taskMatchesScope(task, scope) ? task : undefined;
|
|
22
|
-
}
|
|
23
|
-
async create(task) {
|
|
24
|
-
await this.load();
|
|
25
|
-
const normalized = normalizeScheduledTask(task);
|
|
26
|
-
this.tasks.set(normalized.id, normalized);
|
|
27
|
-
await this.save();
|
|
28
|
-
return normalized;
|
|
29
|
-
}
|
|
30
|
-
async update(taskId, task, scope = {}) {
|
|
31
|
-
await this.load();
|
|
32
|
-
const existing = await this.get(taskId, scope);
|
|
33
|
-
if (!existing) {
|
|
34
|
-
return undefined;
|
|
35
|
-
}
|
|
36
|
-
const normalized = normalizeScheduledTask(task);
|
|
37
|
-
this.tasks.set(taskId, normalized);
|
|
38
|
-
await this.save();
|
|
39
|
-
return normalized;
|
|
40
|
-
}
|
|
41
|
-
async delete(taskId, scope = {}) {
|
|
42
|
-
await this.load();
|
|
43
|
-
const existing = await this.get(taskId, scope);
|
|
44
|
-
if (!existing) {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
const deleted = this.tasks.delete(taskId);
|
|
48
|
-
await this.save();
|
|
49
|
-
return deleted;
|
|
50
|
-
}
|
|
51
|
-
async load() {
|
|
52
|
-
if (this.loaded) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
const tasks = await readJsonFile(this.filePath, []);
|
|
56
|
-
this.tasks.clear();
|
|
57
|
-
for (const rawTask of tasks) {
|
|
58
|
-
const task = normalizeScheduledTask(rawTask);
|
|
59
|
-
this.tasks.set(task.id, task);
|
|
60
|
-
}
|
|
61
|
-
this.loaded = true;
|
|
62
|
-
}
|
|
63
|
-
async save() {
|
|
64
|
-
await writeJsonFile(this.filePath, [...this.tasks.values()]);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
export class FileSchedulerLock {
|
|
68
|
-
path;
|
|
69
|
-
acquired = false;
|
|
70
|
-
constructor(path) {
|
|
71
|
-
this.path = path;
|
|
72
|
-
}
|
|
73
|
-
acquire() {
|
|
74
|
-
mkdirSync(path.dirname(this.path), { recursive: true });
|
|
75
|
-
const holder = this.holderPid();
|
|
76
|
-
if (holder && holder !== process.pid) {
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
try {
|
|
80
|
-
unlinkSync(this.path);
|
|
81
|
-
}
|
|
82
|
-
catch {
|
|
83
|
-
// Lock did not exist or was already removed between checks.
|
|
84
|
-
}
|
|
85
|
-
try {
|
|
86
|
-
writeFileSync(this.path, String(process.pid), { flag: "wx" });
|
|
87
|
-
this.acquired = true;
|
|
88
|
-
return true;
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
if (error.code === "EEXIST") {
|
|
92
|
-
this.acquired = false;
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
throw error;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
release() {
|
|
99
|
-
if (!this.acquired) {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
try {
|
|
103
|
-
const pid = Number(readFileSync(this.path, "utf8").trim());
|
|
104
|
-
if (pid === process.pid) {
|
|
105
|
-
unlinkSync(this.path);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
catch {
|
|
109
|
-
// Lock was already gone; the scheduler is stopping anyway.
|
|
110
|
-
}
|
|
111
|
-
this.acquired = false;
|
|
112
|
-
}
|
|
113
|
-
isAcquired() {
|
|
114
|
-
return this.acquired;
|
|
115
|
-
}
|
|
116
|
-
holderPid() {
|
|
117
|
-
try {
|
|
118
|
-
const pid = Number(readFileSync(this.path, "utf8").trim());
|
|
119
|
-
if (Number.isInteger(pid) && pid > 0 && isProcessAlive(pid)) {
|
|
120
|
-
return pid;
|
|
121
|
-
}
|
|
122
|
-
unlinkSync(this.path);
|
|
123
|
-
return undefined;
|
|
124
|
-
}
|
|
125
|
-
catch {
|
|
126
|
-
return undefined;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
1
|
+
import { normalizeScheduledTask, } from '@amaster.ai/pi-task-scheduler';
|
|
2
|
+
import { Prisma, PrismaClient } from '@prisma/client';
|
|
3
|
+
import { RedisLockManager } from './redis-locks.js';
|
|
130
4
|
export class RedisSchedulerLock {
|
|
131
5
|
key;
|
|
132
6
|
ttlMs;
|
|
133
7
|
path;
|
|
134
8
|
acquired = false;
|
|
135
9
|
locks;
|
|
136
|
-
constructor(redisUrl, key =
|
|
10
|
+
constructor(redisUrl, key = 'pi:scheduler:leader', ttlMs = 30_000) {
|
|
137
11
|
this.key = key;
|
|
138
12
|
this.ttlMs = ttlMs;
|
|
139
13
|
this.path = `redis:${key}`;
|
|
@@ -170,7 +44,7 @@ export class DbScheduledTaskStore {
|
|
|
170
44
|
async list(scope = {}) {
|
|
171
45
|
const rows = await this.prisma.piAgentScheduledTask.findMany({
|
|
172
46
|
where: scheduledTaskWhere(scope),
|
|
173
|
-
orderBy: { updatedAt:
|
|
47
|
+
orderBy: { updatedAt: 'desc' },
|
|
174
48
|
});
|
|
175
49
|
return await Promise.all(rows.map((row) => this.taskFromPrisma(row)));
|
|
176
50
|
}
|
|
@@ -186,7 +60,7 @@ export class DbScheduledTaskStore {
|
|
|
186
60
|
data: scheduledTaskPrismaData(normalized),
|
|
187
61
|
});
|
|
188
62
|
await this.syncTaskRuns(normalized);
|
|
189
|
-
return await this.get(normalized.id) ?? normalized;
|
|
63
|
+
return (await this.get(normalized.id)) ?? normalized;
|
|
190
64
|
}
|
|
191
65
|
async update(taskId, task, scope = {}) {
|
|
192
66
|
const normalized = normalizeScheduledTask(task);
|
|
@@ -217,11 +91,11 @@ export class DbScheduledTaskStore {
|
|
|
217
91
|
...(row.name ? { name: row.name } : {}),
|
|
218
92
|
prompt: row.prompt,
|
|
219
93
|
type: row.taskType,
|
|
220
|
-
schedule: row.schedule ??
|
|
94
|
+
schedule: row.schedule ?? '',
|
|
221
95
|
intervalSeconds: row.intervalSeconds ?? 0,
|
|
222
96
|
enabled: Boolean(row.enabled),
|
|
223
97
|
model: parseModel(row.modelJson),
|
|
224
|
-
toolPolicyProfile: row.toolPolicyProfile ??
|
|
98
|
+
toolPolicyProfile: row.toolPolicyProfile ?? 'scheduled',
|
|
225
99
|
...(row.workspaceDir ? { workspaceDir: row.workspaceDir } : {}),
|
|
226
100
|
...(row.description ? { description: row.description } : {}),
|
|
227
101
|
createdAt: toIso(row.createdAt),
|
|
@@ -237,7 +111,7 @@ export class DbScheduledTaskStore {
|
|
|
237
111
|
async listRunHistory(taskId) {
|
|
238
112
|
const rows = await this.prisma.piAgentTaskRun.findMany({
|
|
239
113
|
where: { taskId },
|
|
240
|
-
orderBy: { createdAt:
|
|
114
|
+
orderBy: { createdAt: 'desc' },
|
|
241
115
|
take: 25,
|
|
242
116
|
});
|
|
243
117
|
return rows.map(taskRunHistoryFromPrisma).reverse();
|
|
@@ -253,19 +127,6 @@ export class DbScheduledTaskStore {
|
|
|
253
127
|
}
|
|
254
128
|
}
|
|
255
129
|
}
|
|
256
|
-
function taskMatchesScope(task, scope) {
|
|
257
|
-
return (!scope.tenantId || task.tenantId === scope.tenantId) &&
|
|
258
|
-
(!scope.userId || task.userId === scope.userId);
|
|
259
|
-
}
|
|
260
|
-
function isProcessAlive(pid) {
|
|
261
|
-
try {
|
|
262
|
-
process.kill(pid, 0);
|
|
263
|
-
return true;
|
|
264
|
-
}
|
|
265
|
-
catch {
|
|
266
|
-
return false;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
130
|
function scheduledTaskWhere(scope, extra = {}) {
|
|
270
131
|
return {
|
|
271
132
|
deletedAt: null,
|
|
@@ -277,8 +138,8 @@ function scheduledTaskWhere(scope, extra = {}) {
|
|
|
277
138
|
function scheduledTaskPrismaData(task) {
|
|
278
139
|
return {
|
|
279
140
|
id: task.id,
|
|
280
|
-
tenantId: task.tenantId ??
|
|
281
|
-
userId: task.userId ??
|
|
141
|
+
tenantId: task.tenantId ?? 'default',
|
|
142
|
+
userId: task.userId ?? 'system',
|
|
282
143
|
workspaceId: task.workspaceId ?? null,
|
|
283
144
|
sessionId: task.sessionId,
|
|
284
145
|
name: task.name ?? null,
|
|
@@ -304,16 +165,16 @@ function scheduledTaskPrismaData(task) {
|
|
|
304
165
|
function taskRunPrismaCreate(task, entry, status) {
|
|
305
166
|
return {
|
|
306
167
|
id: entry.id,
|
|
307
|
-
tenantId: task.tenantId ??
|
|
308
|
-
userId: task.userId ??
|
|
168
|
+
tenantId: task.tenantId ?? 'default',
|
|
169
|
+
userId: task.userId ?? 'system',
|
|
309
170
|
workspaceId: task.workspaceId ?? null,
|
|
310
171
|
taskId: task.id,
|
|
311
172
|
sessionId: entry.sessionId ?? task.sessionId,
|
|
312
173
|
status,
|
|
313
174
|
message: entry.message ?? null,
|
|
314
175
|
errorJson: errorJson(task, entry),
|
|
315
|
-
startedAt: status ===
|
|
316
|
-
endedAt: status ===
|
|
176
|
+
startedAt: status === 'running' ? toDate(entry.createdAt) : null,
|
|
177
|
+
endedAt: status === 'success' || status === 'error' ? toDate(task.lastRunAt ?? task.updatedAt) : null,
|
|
317
178
|
createdAt: toDate(entry.createdAt),
|
|
318
179
|
};
|
|
319
180
|
}
|
|
@@ -323,12 +184,12 @@ function taskRunPrismaUpdate(task, entry, status) {
|
|
|
323
184
|
status,
|
|
324
185
|
message: entry.message ?? null,
|
|
325
186
|
errorJson: errorJson(task, entry),
|
|
326
|
-
endedAt: status ===
|
|
187
|
+
endedAt: status === 'success' || status === 'error' ? toDate(task.lastRunAt ?? task.updatedAt) : null,
|
|
327
188
|
};
|
|
328
189
|
}
|
|
329
190
|
function errorJson(task, entry) {
|
|
330
|
-
return entry.status ===
|
|
331
|
-
? jsonInput({ message: entry.message ?? task.lastError ??
|
|
191
|
+
return entry.status === 'error'
|
|
192
|
+
? jsonInput({ message: entry.message ?? task.lastError ?? 'Scheduled task failed' })
|
|
332
193
|
: Prisma.JsonNull;
|
|
333
194
|
}
|
|
334
195
|
function taskRunHistoryFromPrisma(row) {
|
|
@@ -341,33 +202,33 @@ function taskRunHistoryFromPrisma(row) {
|
|
|
341
202
|
};
|
|
342
203
|
}
|
|
343
204
|
function parseModel(value) {
|
|
344
|
-
if (typeof value ===
|
|
205
|
+
if (typeof value === 'string') {
|
|
345
206
|
try {
|
|
346
207
|
return parseModel(JSON.parse(value));
|
|
347
208
|
}
|
|
348
209
|
catch {
|
|
349
|
-
return { provider:
|
|
210
|
+
return { provider: 'unknown', model: 'unknown' };
|
|
350
211
|
}
|
|
351
212
|
}
|
|
352
|
-
if (!value || typeof value !==
|
|
353
|
-
return { provider:
|
|
213
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
214
|
+
return { provider: 'unknown', model: 'unknown' };
|
|
354
215
|
}
|
|
355
216
|
const raw = value;
|
|
356
217
|
return {
|
|
357
|
-
provider: typeof raw.provider ===
|
|
358
|
-
model: typeof raw.model ===
|
|
218
|
+
provider: typeof raw.provider === 'string' ? raw.provider : 'unknown',
|
|
219
|
+
model: typeof raw.model === 'string' ? raw.model : 'unknown',
|
|
359
220
|
...(isThinkingLevel(raw.thinkingLevel) ? { thinkingLevel: raw.thinkingLevel } : {}),
|
|
360
|
-
...(typeof raw.authProfileId ===
|
|
221
|
+
...(typeof raw.authProfileId === 'string' ? { authProfileId: raw.authProfileId } : {}),
|
|
361
222
|
...(raw.reasoning === true ? { reasoning: true } : {}),
|
|
362
223
|
};
|
|
363
224
|
}
|
|
364
225
|
function isThinkingLevel(value) {
|
|
365
|
-
return (value ===
|
|
366
|
-
value ===
|
|
367
|
-
value ===
|
|
368
|
-
value ===
|
|
369
|
-
value ===
|
|
370
|
-
value ===
|
|
226
|
+
return (value === 'off' ||
|
|
227
|
+
value === 'minimal' ||
|
|
228
|
+
value === 'low' ||
|
|
229
|
+
value === 'medium' ||
|
|
230
|
+
value === 'high' ||
|
|
231
|
+
value === 'xhigh');
|
|
371
232
|
}
|
|
372
233
|
function jsonInput(value) {
|
|
373
234
|
return JSON.parse(JSON.stringify(value ?? null));
|
|
@@ -378,4 +239,4 @@ function toDate(value) {
|
|
|
378
239
|
function toIso(value) {
|
|
379
240
|
return value instanceof Date ? value.toISOString() : value;
|
|
380
241
|
}
|
|
381
|
-
//# sourceMappingURL=
|
|
242
|
+
//# sourceMappingURL=scheduler-db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler-db.js","sourceRoot":"","sources":["../src/scheduler-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ScheduledTask, type ScheduledTaskStore, type SchedulerLock, type TaskSchedulerScope } from '@amaster.ai/pi-task-scheduler';
|
|
2
|
+
export declare class JsonScheduledTaskStore implements ScheduledTaskStore {
|
|
3
|
+
private readonly filePath;
|
|
4
|
+
private loaded;
|
|
5
|
+
private readonly tasks;
|
|
6
|
+
constructor(filePath: string);
|
|
7
|
+
list(_scope?: TaskSchedulerScope): Promise<ScheduledTask[]>;
|
|
8
|
+
get(taskId: string, _scope?: TaskSchedulerScope): Promise<ScheduledTask | undefined>;
|
|
9
|
+
create(task: ScheduledTask): Promise<ScheduledTask>;
|
|
10
|
+
update(taskId: string, task: ScheduledTask, _scope?: TaskSchedulerScope): Promise<ScheduledTask | undefined>;
|
|
11
|
+
delete(taskId: string, _scope?: TaskSchedulerScope): Promise<boolean>;
|
|
12
|
+
private load;
|
|
13
|
+
private save;
|
|
14
|
+
}
|
|
15
|
+
export declare class FileSchedulerLock implements SchedulerLock {
|
|
16
|
+
readonly path: string;
|
|
17
|
+
private acquired;
|
|
18
|
+
constructor(path: string);
|
|
19
|
+
acquire(): boolean;
|
|
20
|
+
release(): void;
|
|
21
|
+
isAcquired(): boolean;
|
|
22
|
+
holderPid(): number | undefined;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=scheduler-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler-json.d.ts","sourceRoot":"","sources":["../src/scheduler-json.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,+BAA+B,CAAC;AAGvC,qBAAa,sBAAuB,YAAW,kBAAkB;IAInD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAHrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;gBAE7B,QAAQ,EAAE,MAAM;IAEvC,IAAI,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAK/D,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAKxF,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAQnD,MAAM,CACV,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,EACnB,MAAM,GAAE,kBAAuB,GAC9B,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAW/B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;YAUjE,IAAI;YAaJ,IAAI;CAGnB;AAED,qBAAa,iBAAkB,YAAW,aAAa;IAGzC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAFjC,OAAO,CAAC,QAAQ,CAAS;gBAEJ,IAAI,EAAE,MAAM;IAEjC,OAAO,IAAI,OAAO;IAwBlB,OAAO,IAAI,IAAI;IAef,UAAU,IAAI,OAAO;IAIrB,SAAS,IAAI,MAAM,GAAG,SAAS;CAYhC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { normalizeScheduledTask, } from '@amaster.ai/pi-task-scheduler';
|
|
4
|
+
import { readJsonFile, writeJsonFile } from './json-file.js';
|
|
5
|
+
export class JsonScheduledTaskStore {
|
|
6
|
+
filePath;
|
|
7
|
+
loaded = false;
|
|
8
|
+
tasks = new Map();
|
|
9
|
+
constructor(filePath) {
|
|
10
|
+
this.filePath = filePath;
|
|
11
|
+
}
|
|
12
|
+
async list(_scope = {}) {
|
|
13
|
+
await this.load();
|
|
14
|
+
return [...this.tasks.values()];
|
|
15
|
+
}
|
|
16
|
+
async get(taskId, _scope = {}) {
|
|
17
|
+
await this.load();
|
|
18
|
+
return this.tasks.get(taskId);
|
|
19
|
+
}
|
|
20
|
+
async create(task) {
|
|
21
|
+
await this.load();
|
|
22
|
+
const normalized = normalizeScheduledTask(task);
|
|
23
|
+
this.tasks.set(normalized.id, normalized);
|
|
24
|
+
await this.save();
|
|
25
|
+
return normalized;
|
|
26
|
+
}
|
|
27
|
+
async update(taskId, task, _scope = {}) {
|
|
28
|
+
await this.load();
|
|
29
|
+
if (!this.tasks.has(taskId)) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
const normalized = normalizeScheduledTask(task);
|
|
33
|
+
this.tasks.set(taskId, normalized);
|
|
34
|
+
await this.save();
|
|
35
|
+
return normalized;
|
|
36
|
+
}
|
|
37
|
+
async delete(taskId, _scope = {}) {
|
|
38
|
+
await this.load();
|
|
39
|
+
if (!this.tasks.has(taskId)) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const deleted = this.tasks.delete(taskId);
|
|
43
|
+
await this.save();
|
|
44
|
+
return deleted;
|
|
45
|
+
}
|
|
46
|
+
async load() {
|
|
47
|
+
if (this.loaded) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const tasks = await readJsonFile(this.filePath, []);
|
|
51
|
+
this.tasks.clear();
|
|
52
|
+
for (const rawTask of tasks) {
|
|
53
|
+
const task = normalizeScheduledTask(rawTask);
|
|
54
|
+
this.tasks.set(task.id, task);
|
|
55
|
+
}
|
|
56
|
+
this.loaded = true;
|
|
57
|
+
}
|
|
58
|
+
async save() {
|
|
59
|
+
await writeJsonFile(this.filePath, [...this.tasks.values()]);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export class FileSchedulerLock {
|
|
63
|
+
path;
|
|
64
|
+
acquired = false;
|
|
65
|
+
constructor(path) {
|
|
66
|
+
this.path = path;
|
|
67
|
+
}
|
|
68
|
+
acquire() {
|
|
69
|
+
mkdirSync(path.dirname(this.path), { recursive: true });
|
|
70
|
+
const holder = this.holderPid();
|
|
71
|
+
if (holder && holder !== process.pid) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
unlinkSync(this.path);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Lock did not exist or was already removed between checks.
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
writeFileSync(this.path, String(process.pid), { flag: 'wx' });
|
|
82
|
+
this.acquired = true;
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
if (error.code === 'EEXIST') {
|
|
87
|
+
this.acquired = false;
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
release() {
|
|
94
|
+
if (!this.acquired) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
const pid = Number(readFileSync(this.path, 'utf8').trim());
|
|
99
|
+
if (pid === process.pid) {
|
|
100
|
+
unlinkSync(this.path);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Lock was already gone; the scheduler is stopping anyway.
|
|
105
|
+
}
|
|
106
|
+
this.acquired = false;
|
|
107
|
+
}
|
|
108
|
+
isAcquired() {
|
|
109
|
+
return this.acquired;
|
|
110
|
+
}
|
|
111
|
+
holderPid() {
|
|
112
|
+
try {
|
|
113
|
+
const pid = Number(readFileSync(this.path, 'utf8').trim());
|
|
114
|
+
if (Number.isInteger(pid) && pid > 0 && isProcessAlive(pid)) {
|
|
115
|
+
return pid;
|
|
116
|
+
}
|
|
117
|
+
unlinkSync(this.path);
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function isProcessAlive(pid) {
|
|
126
|
+
try {
|
|
127
|
+
process.kill(pid, 0);
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=scheduler-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler-json.js","sourceRoot":"","sources":["../src/scheduler-json.ts"],"names":[],"mappings":"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"}
|
package/dist/session-stores.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ConversationMessage, ConversationTurn, CopilotMemoryStore, JsonObject, MemoryRecord, RuntimeScope, RuntimeSession, RuntimeSessionStore, RuntimeSessionSummary, TranscriptStore } from
|
|
1
|
+
import type { ConversationMessage, ConversationTurn, CopilotMemoryStore, JsonObject, MemoryRecord, RuntimeScope, RuntimeSession, RuntimeSessionStore, RuntimeSessionSummary, TranscriptStore } from '@amaster.ai/pi-shared';
|
|
2
2
|
export declare class JsonFileConversationStore implements RuntimeSessionStore {
|
|
3
3
|
private readonly filePath;
|
|
4
4
|
private sessionsLoaded;
|
|
@@ -22,6 +22,7 @@ export declare class JsonFileTranscriptStore implements TranscriptStore {
|
|
|
22
22
|
list(scope: RuntimeScope, sessionId?: string): Promise<ConversationTurn[]>;
|
|
23
23
|
listMessages(scope: RuntimeScope, sessionId: string): Promise<ConversationMessage[]>;
|
|
24
24
|
listSessionSummaries(scope: RuntimeScope, sessions: RuntimeSession[]): Promise<RuntimeSessionSummary[]>;
|
|
25
|
+
updateSessionTitle(scope: RuntimeScope, sessionId: string, title: string): Promise<void>;
|
|
25
26
|
private update;
|
|
26
27
|
private load;
|
|
27
28
|
private save;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-stores.d.ts","sourceRoot":"","sources":["../src/session-stores.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"session-stores.d.ts","sourceRoot":"","sources":["../src/session-stores.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAY/B,qBAAa,yBAA0B,YAAW,mBAAmB;IAKvD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJrC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,SAAS,CAAuC;gBAE3B,QAAQ,EAAE,MAAM;IAEvC,iBAAiB,CACrB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAMhC,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YAK3D,IAAI;YAYJ,MAAM;CASrB;AAED,qBAAa,uBAAwB,YAAW,eAAe;IAKjD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAuE;IACpF,OAAO,CAAC,SAAS,CAAuC;gBAE3B,QAAQ,EAAE,MAAM;IAEvC,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjD,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAI/E,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAO1E,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAMpF,oBAAoB,CACxB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,cAAc,EAAE,GACzB,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAW7B,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAYhF,MAAM;YAUN,IAAI;YASJ,IAAI;CAGnB;AAqID,qBAAa,mBAAoB,YAAW,kBAAkB;IAGhD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,SAAS,CAAuC;gBAE3B,QAAQ,EAAE,MAAM;IAEvC,KAAK,CAAC,KAAK,EAAE;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,QAAQ,CAAC,EAAE,UAAU,CAAC;KACvB,GAAG,OAAO,CAAC,YAAY,CAAC;IAcnB,MAAM,CAAC,KAAK,EAAE;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAmB3B,OAAO,CAAC,IAAI;YAIE,MAAM;CAWrB"}
|