@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.
Files changed (103) hide show
  1. package/README.md +327 -211
  2. package/dist/src/cli/chat/App.d.ts.map +1 -1
  3. package/dist/src/cli/chat/App.js +6 -0
  4. package/dist/src/cli/chat/App.js.map +1 -1
  5. package/dist/src/cli/chat/state/local-commands.d.ts +3 -1
  6. package/dist/src/cli/chat/state/local-commands.d.ts.map +1 -1
  7. package/dist/src/cli/chat/state/local-commands.js +178 -3
  8. package/dist/src/cli/chat/state/local-commands.js.map +1 -1
  9. package/dist/src/cli/chat/state/types.d.ts +6 -0
  10. package/dist/src/cli/chat/state/types.d.ts.map +1 -1
  11. package/dist/src/cli/chat/submit.d.ts +2 -0
  12. package/dist/src/cli/chat/submit.d.ts.map +1 -1
  13. package/dist/src/cli/chat/submit.js +10 -1
  14. package/dist/src/cli/chat/submit.js.map +1 -1
  15. package/dist/src/cli/chat/utils/runtime.d.ts +1 -0
  16. package/dist/src/cli/chat/utils/runtime.d.ts.map +1 -1
  17. package/dist/src/cli/chat/utils/runtime.js +1 -0
  18. package/dist/src/cli/chat/utils/runtime.js.map +1 -1
  19. package/dist/src/cli/daemon.d.ts +14 -0
  20. package/dist/src/cli/daemon.d.ts.map +1 -0
  21. package/dist/src/cli/daemon.js +61 -0
  22. package/dist/src/cli/daemon.js.map +1 -0
  23. package/dist/src/cli/heartbeat.d.ts.map +1 -1
  24. package/dist/src/cli/heartbeat.js +14 -5
  25. package/dist/src/cli/heartbeat.js.map +1 -1
  26. package/dist/src/cli/main.js +6 -0
  27. package/dist/src/cli/main.js.map +1 -1
  28. package/dist/src/index.d.ts +4 -0
  29. package/dist/src/index.d.ts.map +1 -1
  30. package/dist/src/index.js +2 -0
  31. package/dist/src/index.js.map +1 -1
  32. package/dist/src/runtime/heartbeat-lucid.d.ts +42 -0
  33. package/dist/src/runtime/heartbeat-lucid.d.ts.map +1 -0
  34. package/dist/src/runtime/heartbeat-lucid.js +188 -0
  35. package/dist/src/runtime/heartbeat-lucid.js.map +1 -0
  36. package/dist/src/runtime/heartbeat-scheduler.d.ts +13 -0
  37. package/dist/src/runtime/heartbeat-scheduler.d.ts.map +1 -1
  38. package/dist/src/runtime/heartbeat-scheduler.js +74 -4
  39. package/dist/src/runtime/heartbeat-scheduler.js.map +1 -1
  40. package/dist/src/runtime/heartbeat-views.d.ts +50 -0
  41. package/dist/src/runtime/heartbeat-views.d.ts.map +1 -0
  42. package/dist/src/runtime/heartbeat-views.js +60 -0
  43. package/dist/src/runtime/heartbeat-views.js.map +1 -0
  44. package/dist/src/server/app.d.ts +6 -0
  45. package/dist/src/server/app.d.ts.map +1 -0
  46. package/dist/src/server/app.js +36 -0
  47. package/dist/src/server/app.js.map +1 -0
  48. package/dist/src/server/dev.d.ts +2 -0
  49. package/dist/src/server/dev.d.ts.map +1 -0
  50. package/dist/src/server/dev.js +39 -0
  51. package/dist/src/server/dev.js.map +1 -0
  52. package/dist/src/server/features/control-plane/router.d.ts +37 -0
  53. package/dist/src/server/features/control-plane/router.d.ts.map +1 -0
  54. package/dist/src/server/features/control-plane/router.js +34 -0
  55. package/dist/src/server/features/control-plane/router.js.map +1 -0
  56. package/dist/src/server/features/control-plane/services/chat-sessions.d.ts +4 -0
  57. package/dist/src/server/features/control-plane/services/chat-sessions.d.ts.map +1 -0
  58. package/dist/src/server/features/control-plane/services/chat-sessions.js +63 -0
  59. package/dist/src/server/features/control-plane/services/chat-sessions.js.map +1 -0
  60. package/dist/src/server/features/control-plane/services/control-plane-state.d.ts +4 -0
  61. package/dist/src/server/features/control-plane/services/control-plane-state.d.ts.map +1 -0
  62. package/dist/src/server/features/control-plane/services/control-plane-state.js +19 -0
  63. package/dist/src/server/features/control-plane/services/control-plane-state.js.map +1 -0
  64. package/dist/src/server/features/control-plane/services/heartbeat.d.ts +7 -0
  65. package/dist/src/server/features/control-plane/services/heartbeat.d.ts.map +1 -0
  66. package/dist/src/server/features/control-plane/services/heartbeat.js +12 -0
  67. package/dist/src/server/features/control-plane/services/heartbeat.js.map +1 -0
  68. package/dist/src/server/features/control-plane/types.d.ts +31 -0
  69. package/dist/src/server/features/control-plane/types.d.ts.map +1 -0
  70. package/dist/src/server/features/control-plane/types.js +2 -0
  71. package/dist/src/server/features/control-plane/types.js.map +1 -0
  72. package/dist/src/server/index.d.ts +8 -0
  73. package/dist/src/server/index.d.ts.map +1 -0
  74. package/dist/src/server/index.js +42 -0
  75. package/dist/src/server/index.js.map +1 -0
  76. package/dist/src/server/logger.d.ts +8 -0
  77. package/dist/src/server/logger.d.ts.map +1 -0
  78. package/dist/src/server/logger.js +11 -0
  79. package/dist/src/server/logger.js.map +1 -0
  80. package/dist/src/server/middleware/request-logging.d.ts +4 -0
  81. package/dist/src/server/middleware/request-logging.d.ts.map +1 -0
  82. package/dist/src/server/middleware/request-logging.js +15 -0
  83. package/dist/src/server/middleware/request-logging.js.map +1 -0
  84. package/dist/src/server/router.d.ts +55 -0
  85. package/dist/src/server/router.d.ts.map +1 -0
  86. package/dist/src/server/router.js +14 -0
  87. package/dist/src/server/router.js.map +1 -0
  88. package/dist/src/server/static.d.ts +4 -0
  89. package/dist/src/server/static.d.ts.map +1 -0
  90. package/dist/src/server/static.js +25 -0
  91. package/dist/src/server/static.js.map +1 -0
  92. package/dist/src/server/trpc.d.ts +9 -0
  93. package/dist/src/server/trpc.d.ts.map +1 -0
  94. package/dist/src/server/trpc.js +5 -0
  95. package/dist/src/server/trpc.js.map +1 -0
  96. package/dist/src/server/types.d.ts +17 -0
  97. package/dist/src/server/types.d.ts.map +1 -0
  98. package/dist/src/server/types.js +2 -0
  99. package/dist/src/server/types.js.map +1 -0
  100. package/dist/src/web/assets/index-DmYQXJQf.css +1 -0
  101. package/dist/src/web/assets/index-xFJTOaTY.js +9 -0
  102. package/dist/src/web/index.html +13 -0
  103. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dev.d.ts.map
@@ -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,4 @@
1
+ import type { ChatSessionView } from '../types.js';
2
+ export declare function readChatSessionViews(sessionsPath: string): ChatSessionView[];
3
+ export declare function projectChatSessionView(raw: unknown): ChatSessionView[];
4
+ //# sourceMappingURL=chat-sessions.d.ts.map
@@ -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"}