@roackb2/heddle 0.0.12 → 0.0.14
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 +327 -211
- package/dist/src/cli/chat/App.d.ts.map +1 -1
- package/dist/src/cli/chat/App.js +6 -0
- package/dist/src/cli/chat/App.js.map +1 -1
- package/dist/src/cli/chat/state/local-commands.d.ts +3 -1
- package/dist/src/cli/chat/state/local-commands.d.ts.map +1 -1
- package/dist/src/cli/chat/state/local-commands.js +178 -3
- package/dist/src/cli/chat/state/local-commands.js.map +1 -1
- package/dist/src/cli/chat/state/types.d.ts +6 -0
- package/dist/src/cli/chat/state/types.d.ts.map +1 -1
- package/dist/src/cli/chat/submit.d.ts +2 -0
- package/dist/src/cli/chat/submit.d.ts.map +1 -1
- package/dist/src/cli/chat/submit.js +10 -1
- package/dist/src/cli/chat/submit.js.map +1 -1
- package/dist/src/cli/chat/utils/runtime.d.ts +1 -0
- package/dist/src/cli/chat/utils/runtime.d.ts.map +1 -1
- package/dist/src/cli/chat/utils/runtime.js +1 -0
- package/dist/src/cli/chat/utils/runtime.js.map +1 -1
- package/dist/src/cli/daemon.d.ts +14 -0
- package/dist/src/cli/daemon.d.ts.map +1 -0
- package/dist/src/cli/daemon.js +61 -0
- package/dist/src/cli/daemon.js.map +1 -0
- package/dist/src/cli/heartbeat.d.ts.map +1 -1
- package/dist/src/cli/heartbeat.js +14 -5
- package/dist/src/cli/heartbeat.js.map +1 -1
- package/dist/src/cli/main.js +6 -0
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/runtime/heartbeat-lucid.d.ts +42 -0
- package/dist/src/runtime/heartbeat-lucid.d.ts.map +1 -0
- package/dist/src/runtime/heartbeat-lucid.js +188 -0
- package/dist/src/runtime/heartbeat-lucid.js.map +1 -0
- package/dist/src/runtime/heartbeat-scheduler.d.ts +13 -0
- package/dist/src/runtime/heartbeat-scheduler.d.ts.map +1 -1
- package/dist/src/runtime/heartbeat-scheduler.js +74 -4
- package/dist/src/runtime/heartbeat-scheduler.js.map +1 -1
- package/dist/src/runtime/heartbeat-views.d.ts +50 -0
- package/dist/src/runtime/heartbeat-views.d.ts.map +1 -0
- package/dist/src/runtime/heartbeat-views.js +60 -0
- package/dist/src/runtime/heartbeat-views.js.map +1 -0
- package/dist/src/server/app.d.ts +6 -0
- package/dist/src/server/app.d.ts.map +1 -0
- package/dist/src/server/app.js +36 -0
- package/dist/src/server/app.js.map +1 -0
- package/dist/src/server/dev.d.ts +2 -0
- package/dist/src/server/dev.d.ts.map +1 -0
- package/dist/src/server/dev.js +39 -0
- package/dist/src/server/dev.js.map +1 -0
- package/dist/src/server/features/control-plane/router.d.ts +37 -0
- package/dist/src/server/features/control-plane/router.d.ts.map +1 -0
- package/dist/src/server/features/control-plane/router.js +34 -0
- package/dist/src/server/features/control-plane/router.js.map +1 -0
- package/dist/src/server/features/control-plane/services/chat-sessions.d.ts +4 -0
- package/dist/src/server/features/control-plane/services/chat-sessions.d.ts.map +1 -0
- package/dist/src/server/features/control-plane/services/chat-sessions.js +63 -0
- package/dist/src/server/features/control-plane/services/chat-sessions.js.map +1 -0
- package/dist/src/server/features/control-plane/services/control-plane-state.d.ts +4 -0
- package/dist/src/server/features/control-plane/services/control-plane-state.d.ts.map +1 -0
- package/dist/src/server/features/control-plane/services/control-plane-state.js +19 -0
- package/dist/src/server/features/control-plane/services/control-plane-state.js.map +1 -0
- package/dist/src/server/features/control-plane/services/heartbeat.d.ts +7 -0
- package/dist/src/server/features/control-plane/services/heartbeat.d.ts.map +1 -0
- package/dist/src/server/features/control-plane/services/heartbeat.js +12 -0
- package/dist/src/server/features/control-plane/services/heartbeat.js.map +1 -0
- package/dist/src/server/features/control-plane/types.d.ts +31 -0
- package/dist/src/server/features/control-plane/types.d.ts.map +1 -0
- package/dist/src/server/features/control-plane/types.js +2 -0
- package/dist/src/server/features/control-plane/types.js.map +1 -0
- package/dist/src/server/index.d.ts +8 -0
- package/dist/src/server/index.d.ts.map +1 -0
- package/dist/src/server/index.js +42 -0
- package/dist/src/server/index.js.map +1 -0
- package/dist/src/server/logger.d.ts +8 -0
- package/dist/src/server/logger.d.ts.map +1 -0
- package/dist/src/server/logger.js +11 -0
- package/dist/src/server/logger.js.map +1 -0
- package/dist/src/server/middleware/request-logging.d.ts +4 -0
- package/dist/src/server/middleware/request-logging.d.ts.map +1 -0
- package/dist/src/server/middleware/request-logging.js +15 -0
- package/dist/src/server/middleware/request-logging.js.map +1 -0
- package/dist/src/server/router.d.ts +55 -0
- package/dist/src/server/router.d.ts.map +1 -0
- package/dist/src/server/router.js +14 -0
- package/dist/src/server/router.js.map +1 -0
- package/dist/src/server/static.d.ts +4 -0
- package/dist/src/server/static.d.ts.map +1 -0
- package/dist/src/server/static.js +25 -0
- package/dist/src/server/static.js.map +1 -0
- package/dist/src/server/trpc.d.ts +9 -0
- package/dist/src/server/trpc.d.ts.map +1 -0
- package/dist/src/server/trpc.js +5 -0
- package/dist/src/server/trpc.js.map +1 -0
- package/dist/src/server/types.d.ts +17 -0
- package/dist/src/server/types.d.ts.map +1 -0
- package/dist/src/server/types.js +2 -0
- package/dist/src/server/types.js.map +1 -0
- package/dist/src/web/assets/index-DmYQXJQf.css +1 -0
- package/dist/src/web/assets/index-xFJTOaTY.js +9 -0
- package/dist/src/web/index.html +13 -0
- package/package.json +18 -3
|
@@ -17,12 +17,19 @@ export type HeartbeatTask = {
|
|
|
17
17
|
searchIgnoreDirs?: string[];
|
|
18
18
|
systemContext?: string;
|
|
19
19
|
lastRunAt?: string;
|
|
20
|
+
status?: HeartbeatTaskStatus;
|
|
21
|
+
lastProgress?: string;
|
|
22
|
+
lastRunId?: string;
|
|
23
|
+
lastLoadedCheckpoint?: boolean;
|
|
24
|
+
resumable?: boolean;
|
|
25
|
+
lastUsage?: LlmUsage;
|
|
20
26
|
lastDecision?: HeartbeatDecision;
|
|
21
27
|
lastOutcome?: string;
|
|
22
28
|
lastSummary?: string;
|
|
23
29
|
lastError?: string;
|
|
24
30
|
updatedAt?: string;
|
|
25
31
|
};
|
|
32
|
+
export type HeartbeatTaskStatus = 'idle' | 'running' | 'waiting' | 'blocked' | 'complete' | 'failed';
|
|
26
33
|
export type HeartbeatTaskRunRecord = {
|
|
27
34
|
task: HeartbeatTask;
|
|
28
35
|
result: AgentHeartbeatResult;
|
|
@@ -66,12 +73,16 @@ export type HeartbeatSchedulerEvent = {
|
|
|
66
73
|
type: 'heartbeat.task.started';
|
|
67
74
|
taskId: string;
|
|
68
75
|
loadedCheckpoint: boolean;
|
|
76
|
+
status: HeartbeatTaskStatus;
|
|
77
|
+
progress: string;
|
|
69
78
|
timestamp: string;
|
|
70
79
|
} | {
|
|
71
80
|
type: 'heartbeat.task.finished';
|
|
72
81
|
taskId: string;
|
|
73
82
|
decision: HeartbeatDecision;
|
|
74
83
|
outcome: string;
|
|
84
|
+
status: HeartbeatTaskStatus;
|
|
85
|
+
progress: string;
|
|
75
86
|
summary: string;
|
|
76
87
|
runId: string;
|
|
77
88
|
usage?: LlmUsage;
|
|
@@ -82,6 +93,8 @@ export type HeartbeatSchedulerEvent = {
|
|
|
82
93
|
type: 'heartbeat.task.failed';
|
|
83
94
|
taskId: string;
|
|
84
95
|
error: string;
|
|
96
|
+
status: HeartbeatTaskStatus;
|
|
97
|
+
progress: string;
|
|
85
98
|
nextRunAt?: string;
|
|
86
99
|
timestamp: string;
|
|
87
100
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat-scheduler.d.ts","sourceRoot":"","sources":["../../../src/runtime/heartbeat-scheduler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"heartbeat-scheduler.d.ts","sourceRoot":"","sources":["../../../src/runtime/heartbeat-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,24 +78,39 @@ export async function runDueHeartbeatTasks(options) {
|
|
|
78
78
|
options.onEvent?.({ type: 'heartbeat.task.due', taskId: task.id, timestamp: now.toISOString() });
|
|
79
79
|
try {
|
|
80
80
|
const checkpoint = await options.store.loadCheckpoint(task);
|
|
81
|
+
const runningTask = normalizeTaskForSave({
|
|
82
|
+
...task,
|
|
83
|
+
status: 'running',
|
|
84
|
+
lastProgress: checkpoint ?
|
|
85
|
+
'Resuming heartbeat wake from the last checkpoint.'
|
|
86
|
+
: 'Starting a new heartbeat wake cycle.',
|
|
87
|
+
lastLoadedCheckpoint: Boolean(checkpoint),
|
|
88
|
+
lastError: undefined,
|
|
89
|
+
updatedAt: now.toISOString(),
|
|
90
|
+
});
|
|
91
|
+
await options.store.saveTask(runningTask);
|
|
81
92
|
options.onEvent?.({
|
|
82
93
|
type: 'heartbeat.task.started',
|
|
83
94
|
taskId: task.id,
|
|
84
95
|
loadedCheckpoint: Boolean(checkpoint),
|
|
96
|
+
status: runningTask.status ?? 'running',
|
|
97
|
+
progress: runningTask.lastProgress ?? '',
|
|
85
98
|
timestamp: now.toISOString(),
|
|
86
99
|
});
|
|
87
100
|
const result = await runHeartbeatTask(task, checkpoint, options);
|
|
88
|
-
const record = { task, result, loadedCheckpoint: Boolean(checkpoint) };
|
|
89
101
|
await options.store.saveCheckpoint(task, result.checkpoint);
|
|
102
|
+
const nextTask = updateTaskAfterResult(task, result, now, Boolean(checkpoint));
|
|
103
|
+
await options.store.saveTask(nextTask);
|
|
104
|
+
const record = { task: nextTask, result, loadedCheckpoint: Boolean(checkpoint) };
|
|
90
105
|
await options.store.saveRunRecord?.(record);
|
|
91
106
|
records.push(record);
|
|
92
|
-
const nextTask = updateTaskAfterResult(task, result, now);
|
|
93
|
-
await options.store.saveTask(nextTask);
|
|
94
107
|
options.onEvent?.({
|
|
95
108
|
type: 'heartbeat.task.finished',
|
|
96
109
|
taskId: task.id,
|
|
97
110
|
decision: result.decision,
|
|
98
111
|
outcome: result.state.outcome,
|
|
112
|
+
status: nextTask.status ?? 'waiting',
|
|
113
|
+
progress: nextTask.lastProgress ?? '',
|
|
99
114
|
summary: result.summary,
|
|
100
115
|
runId: result.state.runId,
|
|
101
116
|
usage: result.state.usage,
|
|
@@ -112,6 +127,8 @@ export async function runDueHeartbeatTasks(options) {
|
|
|
112
127
|
type: 'heartbeat.task.failed',
|
|
113
128
|
taskId: task.id,
|
|
114
129
|
error: error instanceof Error ? error.message : String(error),
|
|
130
|
+
status: nextTask.status ?? 'failed',
|
|
131
|
+
progress: nextTask.lastProgress ?? '',
|
|
115
132
|
nextRunAt: nextTask.nextRunAt,
|
|
116
133
|
timestamp: now.toISOString(),
|
|
117
134
|
});
|
|
@@ -169,16 +186,23 @@ async function runHeartbeatTask(task, checkpoint, options) {
|
|
|
169
186
|
systemContext: task.systemContext ?? options.heartbeat?.systemContext,
|
|
170
187
|
});
|
|
171
188
|
}
|
|
172
|
-
function updateTaskAfterResult(task, result, now) {
|
|
189
|
+
function updateTaskAfterResult(task, result, now, loadedCheckpoint) {
|
|
173
190
|
const terminal = result.decision === 'complete' || result.decision === 'escalate';
|
|
174
191
|
const delayMs = terminal ? undefined
|
|
175
192
|
: result.decision === 'continue' ? task.intervalMs
|
|
176
193
|
: suggestNextHeartbeatDelayMs(result.decision) ?? task.intervalMs;
|
|
194
|
+
const projection = projectionForResult(result, delayMs);
|
|
177
195
|
return normalizeTaskForSave({
|
|
178
196
|
...task,
|
|
179
197
|
enabled: terminal ? false : task.enabled,
|
|
198
|
+
status: projection.status,
|
|
199
|
+
lastProgress: projection.progress,
|
|
180
200
|
nextRunAt: delayMs === undefined ? undefined : new Date(now.getTime() + delayMs).toISOString(),
|
|
181
201
|
lastRunAt: now.toISOString(),
|
|
202
|
+
lastRunId: result.state.runId,
|
|
203
|
+
lastLoadedCheckpoint: loadedCheckpoint,
|
|
204
|
+
resumable: result.decision !== 'complete',
|
|
205
|
+
lastUsage: result.state.usage,
|
|
182
206
|
lastDecision: result.decision,
|
|
183
207
|
lastOutcome: result.state.outcome,
|
|
184
208
|
lastSummary: result.summary,
|
|
@@ -189,6 +213,8 @@ function updateTaskAfterResult(task, result, now) {
|
|
|
189
213
|
function updateTaskAfterFailure(task, error, now, retryMs) {
|
|
190
214
|
return normalizeTaskForSave({
|
|
191
215
|
...task,
|
|
216
|
+
status: 'failed',
|
|
217
|
+
lastProgress: 'Heartbeat wake failed and will retry later.',
|
|
192
218
|
nextRunAt: new Date(now.getTime() + retryMs).toISOString(),
|
|
193
219
|
lastRunAt: now.toISOString(),
|
|
194
220
|
lastError: error instanceof Error ? error.message : String(error),
|
|
@@ -199,6 +225,7 @@ function normalizeTaskForSave(task) {
|
|
|
199
225
|
return {
|
|
200
226
|
...task,
|
|
201
227
|
intervalMs: Math.max(1, Math.trunc(task.intervalMs)),
|
|
228
|
+
status: task.status ?? 'idle',
|
|
202
229
|
};
|
|
203
230
|
}
|
|
204
231
|
function checkpointPathForTask(task, checkpointsDir) {
|
|
@@ -210,6 +237,49 @@ function safeTaskFileName(id) {
|
|
|
210
237
|
}
|
|
211
238
|
return id;
|
|
212
239
|
}
|
|
240
|
+
function projectionForResult(result, delayMs) {
|
|
241
|
+
switch (result.decision) {
|
|
242
|
+
case 'continue':
|
|
243
|
+
return {
|
|
244
|
+
status: 'waiting',
|
|
245
|
+
progress: delayMs === undefined ?
|
|
246
|
+
'Heartbeat wake finished.'
|
|
247
|
+
: `Heartbeat wake finished. Waiting until the next scheduled run in ${formatDelay(delayMs)}.`,
|
|
248
|
+
};
|
|
249
|
+
case 'pause':
|
|
250
|
+
return {
|
|
251
|
+
status: 'waiting',
|
|
252
|
+
progress: delayMs === undefined ?
|
|
253
|
+
'Heartbeat paused.'
|
|
254
|
+
: `Heartbeat paused. Waiting ${formatDelay(delayMs)} before the next wake.`,
|
|
255
|
+
};
|
|
256
|
+
case 'complete':
|
|
257
|
+
return {
|
|
258
|
+
status: 'complete',
|
|
259
|
+
progress: 'Heartbeat task completed and will not wake again.',
|
|
260
|
+
};
|
|
261
|
+
case 'escalate':
|
|
262
|
+
return {
|
|
263
|
+
status: 'blocked',
|
|
264
|
+
progress: 'Heartbeat escalated for user input and is waiting for follow-up.',
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
function formatDelay(ms) {
|
|
269
|
+
if (ms % (24 * 60 * 60_000) === 0) {
|
|
270
|
+
return `${ms / (24 * 60 * 60_000)}d`;
|
|
271
|
+
}
|
|
272
|
+
if (ms % (60 * 60_000) === 0) {
|
|
273
|
+
return `${ms / (60 * 60_000)}h`;
|
|
274
|
+
}
|
|
275
|
+
if (ms % 60_000 === 0) {
|
|
276
|
+
return `${ms / 60_000}m`;
|
|
277
|
+
}
|
|
278
|
+
if (ms % 1_000 === 0) {
|
|
279
|
+
return `${ms / 1_000}s`;
|
|
280
|
+
}
|
|
281
|
+
return `${ms}ms`;
|
|
282
|
+
}
|
|
213
283
|
function runRecordEntryFromPath(path, record) {
|
|
214
284
|
const id = basename(path, '.json');
|
|
215
285
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat-scheduler.js","sourceRoot":"","sources":["../../../src/runtime/heartbeat-scheduler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"heartbeat-scheduler.js","sourceRoot":"","sources":["../../../src/runtime/heartbeat-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { HeartbeatTask, HeartbeatTaskRunRecordEntry, HeartbeatTaskStatus, HeartbeatTaskStore } from './heartbeat-scheduler.js';
|
|
2
|
+
import type { HeartbeatDecision } from './heartbeat.js';
|
|
3
|
+
import type { LlmUsage } from '../llm/types.js';
|
|
4
|
+
export type HeartbeatTaskView = {
|
|
5
|
+
taskId: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
task: string;
|
|
8
|
+
enabled: boolean;
|
|
9
|
+
status: HeartbeatTaskStatus;
|
|
10
|
+
decision?: HeartbeatDecision;
|
|
11
|
+
outcome?: string;
|
|
12
|
+
progress?: string;
|
|
13
|
+
summary?: string;
|
|
14
|
+
nextRunAt?: string;
|
|
15
|
+
lastRunAt?: string;
|
|
16
|
+
lastRunId?: string;
|
|
17
|
+
loadedCheckpoint?: boolean;
|
|
18
|
+
resumable: boolean;
|
|
19
|
+
usage?: LlmUsage;
|
|
20
|
+
error?: string;
|
|
21
|
+
intervalMs: number;
|
|
22
|
+
model?: string;
|
|
23
|
+
};
|
|
24
|
+
export type HeartbeatRunView = {
|
|
25
|
+
id: string;
|
|
26
|
+
taskId: string;
|
|
27
|
+
runId: string;
|
|
28
|
+
createdAt: string;
|
|
29
|
+
task: string;
|
|
30
|
+
enabled: boolean;
|
|
31
|
+
status: HeartbeatTaskStatus;
|
|
32
|
+
decision: HeartbeatDecision;
|
|
33
|
+
outcome: string;
|
|
34
|
+
progress?: string;
|
|
35
|
+
summary: string;
|
|
36
|
+
loadedCheckpoint: boolean;
|
|
37
|
+
resumable: boolean;
|
|
38
|
+
usage?: LlmUsage;
|
|
39
|
+
};
|
|
40
|
+
export declare function listHeartbeatTaskViews(store: HeartbeatTaskStore): Promise<HeartbeatTaskView[]>;
|
|
41
|
+
export declare function listHeartbeatRunViews(store: HeartbeatTaskStore, options?: {
|
|
42
|
+
taskId?: string;
|
|
43
|
+
limit?: number;
|
|
44
|
+
}): Promise<HeartbeatRunView[]>;
|
|
45
|
+
export declare function loadHeartbeatRunView(store: HeartbeatTaskStore, id: string, options?: {
|
|
46
|
+
taskId?: string;
|
|
47
|
+
}): Promise<HeartbeatRunView | undefined>;
|
|
48
|
+
export declare function projectHeartbeatTaskView(task: HeartbeatTask): HeartbeatTaskView;
|
|
49
|
+
export declare function projectHeartbeatRunView(run: HeartbeatTaskRunRecordEntry): HeartbeatRunView;
|
|
50
|
+
//# sourceMappingURL=heartbeat-views.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat-views.d.ts","sourceRoot":"","sources":["../../../src/runtime/heartbeat-views.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAEpG;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAChD,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAG7B;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,kBAAkB,EACzB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAYvC;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,aAAa,GAAG,iBAAiB,CAqB/E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,2BAA2B,GAAG,gBAAgB,CAiB1F"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export async function listHeartbeatTaskViews(store) {
|
|
2
|
+
return (await store.listTasks()).map(projectHeartbeatTaskView);
|
|
3
|
+
}
|
|
4
|
+
export async function listHeartbeatRunViews(store, options = {}) {
|
|
5
|
+
const runs = await store.listRunRecords?.(options);
|
|
6
|
+
return (runs ?? []).map(projectHeartbeatRunView);
|
|
7
|
+
}
|
|
8
|
+
export async function loadHeartbeatRunView(store, id, options = {}) {
|
|
9
|
+
const run = id === 'latest' ?
|
|
10
|
+
(await store.listRunRecords?.({ taskId: options.taskId, limit: 1 }))?.[0]
|
|
11
|
+
: await store.loadRunRecord?.(id);
|
|
12
|
+
if (!run) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
if (options.taskId && run.taskId !== options.taskId) {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
return projectHeartbeatRunView(run);
|
|
19
|
+
}
|
|
20
|
+
export function projectHeartbeatTaskView(task) {
|
|
21
|
+
return {
|
|
22
|
+
taskId: task.id,
|
|
23
|
+
name: task.name,
|
|
24
|
+
task: task.task,
|
|
25
|
+
enabled: task.enabled,
|
|
26
|
+
status: task.status ?? 'idle',
|
|
27
|
+
decision: task.lastDecision,
|
|
28
|
+
outcome: task.lastOutcome,
|
|
29
|
+
progress: task.lastProgress,
|
|
30
|
+
summary: task.lastSummary,
|
|
31
|
+
nextRunAt: task.nextRunAt,
|
|
32
|
+
lastRunAt: task.lastRunAt,
|
|
33
|
+
lastRunId: task.lastRunId,
|
|
34
|
+
loadedCheckpoint: task.lastLoadedCheckpoint,
|
|
35
|
+
resumable: task.resumable ?? true,
|
|
36
|
+
usage: task.lastUsage,
|
|
37
|
+
error: task.lastError,
|
|
38
|
+
intervalMs: task.intervalMs,
|
|
39
|
+
model: task.model,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function projectHeartbeatRunView(run) {
|
|
43
|
+
return {
|
|
44
|
+
id: run.id,
|
|
45
|
+
taskId: run.taskId,
|
|
46
|
+
runId: run.runId,
|
|
47
|
+
createdAt: run.createdAt,
|
|
48
|
+
task: run.record.task.task,
|
|
49
|
+
enabled: run.record.task.enabled,
|
|
50
|
+
status: run.record.task.status ?? 'idle',
|
|
51
|
+
decision: run.record.result.decision,
|
|
52
|
+
outcome: run.record.result.state.outcome,
|
|
53
|
+
progress: run.record.task.lastProgress,
|
|
54
|
+
summary: run.record.result.summary,
|
|
55
|
+
loadedCheckpoint: run.record.loadedCheckpoint,
|
|
56
|
+
resumable: run.record.task.resumable ?? true,
|
|
57
|
+
usage: run.record.result.state.usage,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=heartbeat-views.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat-views.js","sourceRoot":"","sources":["../../../src/runtime/heartbeat-views.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import type { HeddleServerContext } from './types.js';
|
|
3
|
+
export declare function createHeddleServerApp(options: Omit<HeddleServerContext, 'logger'> & Partial<Pick<HeddleServerContext, 'logger'>> & {
|
|
4
|
+
assetsDir?: string;
|
|
5
|
+
}): express.Express;
|
|
6
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAM9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,CA+B3K"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import { createExpressMiddleware } from '@trpc/server/adapters/express';
|
|
3
|
+
import { createServerLogger } from './logger.js';
|
|
4
|
+
import { createRequestLoggingMiddleware } from './middleware/request-logging.js';
|
|
5
|
+
import { appRouter } from './router.js';
|
|
6
|
+
import { installWebStaticRoutes } from './static.js';
|
|
7
|
+
export function createHeddleServerApp(options) {
|
|
8
|
+
const logger = options.logger ?? createServerLogger({ stateRoot: options.stateRoot });
|
|
9
|
+
const app = express();
|
|
10
|
+
app.disable('x-powered-by');
|
|
11
|
+
app.use(createRequestLoggingMiddleware(logger));
|
|
12
|
+
app.use('/trpc', createExpressMiddleware({
|
|
13
|
+
router: appRouter,
|
|
14
|
+
createContext: () => ({
|
|
15
|
+
workspaceRoot: options.workspaceRoot,
|
|
16
|
+
stateRoot: options.stateRoot,
|
|
17
|
+
logger,
|
|
18
|
+
}),
|
|
19
|
+
onError: ({ error, path, type }) => {
|
|
20
|
+
logger.error({
|
|
21
|
+
error: {
|
|
22
|
+
message: error.message,
|
|
23
|
+
code: error.code,
|
|
24
|
+
stack: error.stack,
|
|
25
|
+
},
|
|
26
|
+
path,
|
|
27
|
+
type,
|
|
28
|
+
}, 'tRPC request failed');
|
|
29
|
+
},
|
|
30
|
+
}));
|
|
31
|
+
if (options.assetsDir) {
|
|
32
|
+
installWebStaticRoutes(app, options.assetsDir);
|
|
33
|
+
}
|
|
34
|
+
return app;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD,MAAM,UAAU,qBAAqB,CAAC,OAAoH;IACxJ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,kBAAkB,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5B,GAAG,CAAC,GAAG,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhD,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,uBAAuB,CAAC;QACvC,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;YACpB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM;SACP,CAAC;QACF,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;YACjC,MAAM,CAAC,KAAK,CAAC;gBACX,KAAK,EAAE;oBACL,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;iBACnB;gBACD,IAAI;gBACJ,IAAI;aACL,EAAE,qBAAqB,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC,CAAC,CAAC;IAEJ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/server/dev.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
import { createHeddleServerApp } from './app.js';
|
|
3
|
+
import { createServerLogger } from './logger.js';
|
|
4
|
+
const host = process.env.HEDDLE_SERVER_HOST ?? '127.0.0.1';
|
|
5
|
+
const port = parsePort(process.env.HEDDLE_SERVER_PORT) ?? 8765;
|
|
6
|
+
const workspaceRoot = resolve(process.env.HEDDLE_WORKSPACE_ROOT ?? process.cwd());
|
|
7
|
+
const stateDir = process.env.HEDDLE_STATE_DIR ?? '.heddle';
|
|
8
|
+
const stateRoot = resolve(workspaceRoot, stateDir);
|
|
9
|
+
const logger = createServerLogger({
|
|
10
|
+
stateRoot,
|
|
11
|
+
logFilePath: process.env.HEDDLE_SERVER_LOG_FILE,
|
|
12
|
+
});
|
|
13
|
+
const app = createHeddleServerApp({
|
|
14
|
+
workspaceRoot,
|
|
15
|
+
stateRoot,
|
|
16
|
+
logger,
|
|
17
|
+
});
|
|
18
|
+
const server = app.listen(port, host, () => {
|
|
19
|
+
logger.info({
|
|
20
|
+
host,
|
|
21
|
+
port,
|
|
22
|
+
workspaceRoot,
|
|
23
|
+
stateRoot,
|
|
24
|
+
apiPath: '/trpc',
|
|
25
|
+
url: `http://${host}:${port}`,
|
|
26
|
+
}, 'Heddle dev server started');
|
|
27
|
+
});
|
|
28
|
+
server.once('error', (error) => {
|
|
29
|
+
logger.error({ error }, 'Heddle dev server failed');
|
|
30
|
+
throw error;
|
|
31
|
+
});
|
|
32
|
+
function parsePort(raw) {
|
|
33
|
+
if (!raw) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const value = Number.parseInt(raw, 10);
|
|
37
|
+
return Number.isFinite(value) && value > 0 && value <= 65_535 ? value : undefined;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/server/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,WAAW,CAAC;AAC3D,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC;AAC/D,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAClF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,SAAS,CAAC;AAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACnD,MAAM,MAAM,GAAG,kBAAkB,CAAC;IAChC,SAAS;IACT,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;CAChD,CAAC,CAAC;AAEH,MAAM,GAAG,GAAG,qBAAqB,CAAC;IAChC,aAAa;IACb,SAAS;IACT,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;IACzC,MAAM,CAAC,IAAI,CAAC;QACV,IAAI;QACJ,IAAI;QACJ,aAAa;QACb,SAAS;QACT,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,UAAU,IAAI,IAAI,IAAI,EAAE;KAC9B,EAAE,2BAA2B,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;IAC7B,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,0BAA0B,CAAC,CAAC;IACpD,MAAM,KAAK,CAAC;AACd,CAAC,CAAC,CAAC;AAEH,SAAS,SAAS,CAAC,GAAuB;IACxC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACpF,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare const controlPlaneRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
2
|
+
ctx: import("../../types.js").HeddleServerContext;
|
|
3
|
+
meta: object;
|
|
4
|
+
errorShape: import("@trpc/server").TRPCDefaultErrorShape;
|
|
5
|
+
transformer: false;
|
|
6
|
+
}, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
|
|
7
|
+
state: import("@trpc/server").TRPCQueryProcedure<{
|
|
8
|
+
input: void;
|
|
9
|
+
output: import("./types.js").ControlPlaneState;
|
|
10
|
+
meta: object;
|
|
11
|
+
}>;
|
|
12
|
+
sessions: import("@trpc/server").TRPCQueryProcedure<{
|
|
13
|
+
input: void;
|
|
14
|
+
output: {
|
|
15
|
+
sessions: import("./types.js").ChatSessionView[];
|
|
16
|
+
};
|
|
17
|
+
meta: object;
|
|
18
|
+
}>;
|
|
19
|
+
heartbeatTasks: import("@trpc/server").TRPCQueryProcedure<{
|
|
20
|
+
input: void;
|
|
21
|
+
output: {
|
|
22
|
+
tasks: import("../../../index.js").HeartbeatTaskView[];
|
|
23
|
+
};
|
|
24
|
+
meta: object;
|
|
25
|
+
}>;
|
|
26
|
+
heartbeatRuns: import("@trpc/server").TRPCQueryProcedure<{
|
|
27
|
+
input: {
|
|
28
|
+
taskId?: string | undefined;
|
|
29
|
+
limit?: number | undefined;
|
|
30
|
+
} | undefined;
|
|
31
|
+
output: {
|
|
32
|
+
runs: import("../../../index.js").HeartbeatRunView[];
|
|
33
|
+
};
|
|
34
|
+
meta: object;
|
|
35
|
+
}>;
|
|
36
|
+
}>>;
|
|
37
|
+
//# sourceMappingURL=router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../../../src/server/features/control-plane/router.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsB7B,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { procedure, router } from '../../trpc.js';
|
|
4
|
+
import { readChatSessionViews } from './services/chat-sessions.js';
|
|
5
|
+
import { loadControlPlaneState } from './services/control-plane-state.js';
|
|
6
|
+
import { listControlPlaneHeartbeatRuns, listControlPlaneHeartbeatTasks } from './services/heartbeat.js';
|
|
7
|
+
const heartbeatRunsInputSchema = z.object({
|
|
8
|
+
taskId: z.string().min(1).optional(),
|
|
9
|
+
limit: z.number().int().min(1).max(100).optional(),
|
|
10
|
+
}).optional();
|
|
11
|
+
export const controlPlaneRouter = router({
|
|
12
|
+
state: procedure.query(async ({ ctx }) => {
|
|
13
|
+
return await loadControlPlaneState(ctx);
|
|
14
|
+
}),
|
|
15
|
+
sessions: procedure.query(({ ctx }) => {
|
|
16
|
+
return {
|
|
17
|
+
sessions: readChatSessionViews(resolve(ctx.stateRoot, 'chat-sessions.json')),
|
|
18
|
+
};
|
|
19
|
+
}),
|
|
20
|
+
heartbeatTasks: procedure.query(async ({ ctx }) => {
|
|
21
|
+
return {
|
|
22
|
+
tasks: await listControlPlaneHeartbeatTasks(ctx.stateRoot),
|
|
23
|
+
};
|
|
24
|
+
}),
|
|
25
|
+
heartbeatRuns: procedure.input(heartbeatRunsInputSchema).query(async ({ ctx, input }) => {
|
|
26
|
+
return {
|
|
27
|
+
runs: await listControlPlaneHeartbeatRuns(ctx.stateRoot, {
|
|
28
|
+
taskId: input?.taskId,
|
|
29
|
+
limit: input?.limit ?? 20,
|
|
30
|
+
}),
|
|
31
|
+
};
|
|
32
|
+
}),
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../../src/server/features/control-plane/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAExG,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;IACvC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACvC,OAAO,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC,CAAC;IACF,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;QACpC,OAAO;YACL,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;SAC7E,CAAC;IACJ,CAAC,CAAC;IACF,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QAChD,OAAO;YACL,KAAK,EAAE,MAAM,8BAA8B,CAAC,GAAG,CAAC,SAAS,CAAC;SAC3D,CAAC;IACJ,CAAC,CAAC;IACF,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;QACtF,OAAO;YACL,IAAI,EAAE,MAAM,6BAA6B,CAAC,GAAG,CAAC,SAAS,EAAE;gBACvD,MAAM,EAAE,KAAK,EAAE,MAAM;gBACrB,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;aAC1B,CAAC;SACH,CAAC;IACJ,CAAC,CAAC;CACH,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-sessions.d.ts","sourceRoot":"","sources":["../../../../../../src/server/features/control-plane/services/chat-sessions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,EAAE,CAgB5E;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,EAAE,CAqCtE"}
|