feique 1.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.
Files changed (227) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +220 -0
  3. package/README.md +265 -0
  4. package/dist/backend/claude.d.ts +36 -0
  5. package/dist/backend/claude.js +358 -0
  6. package/dist/backend/claude.js.map +1 -0
  7. package/dist/backend/codex.d.ts +31 -0
  8. package/dist/backend/codex.js +100 -0
  9. package/dist/backend/codex.js.map +1 -0
  10. package/dist/backend/factory.d.ts +9 -0
  11. package/dist/backend/factory.js +56 -0
  12. package/dist/backend/factory.js.map +1 -0
  13. package/dist/backend/types.d.ts +54 -0
  14. package/dist/backend/types.js +2 -0
  15. package/dist/backend/types.js.map +1 -0
  16. package/dist/bridge/commands.d.ts +135 -0
  17. package/dist/bridge/commands.js +860 -0
  18. package/dist/bridge/commands.js.map +1 -0
  19. package/dist/bridge/service.d.ts +160 -0
  20. package/dist/bridge/service.js +3785 -0
  21. package/dist/bridge/service.js.map +1 -0
  22. package/dist/bridge/task-queue.d.ts +14 -0
  23. package/dist/bridge/task-queue.js +81 -0
  24. package/dist/bridge/task-queue.js.map +1 -0
  25. package/dist/bridge/types.d.ts +39 -0
  26. package/dist/bridge/types.js +2 -0
  27. package/dist/bridge/types.js.map +1 -0
  28. package/dist/cli.d.ts +2 -0
  29. package/dist/cli.js +1199 -0
  30. package/dist/cli.js.map +1 -0
  31. package/dist/codex/capabilities.d.ts +20 -0
  32. package/dist/codex/capabilities.js +41 -0
  33. package/dist/codex/capabilities.js.map +1 -0
  34. package/dist/codex/runner.d.ts +47 -0
  35. package/dist/codex/runner.js +294 -0
  36. package/dist/codex/runner.js.map +1 -0
  37. package/dist/codex/session-index.d.ts +22 -0
  38. package/dist/codex/session-index.js +205 -0
  39. package/dist/codex/session-index.js.map +1 -0
  40. package/dist/collaboration/awareness.d.ts +36 -0
  41. package/dist/collaboration/awareness.js +107 -0
  42. package/dist/collaboration/awareness.js.map +1 -0
  43. package/dist/collaboration/digest.d.ts +65 -0
  44. package/dist/collaboration/digest.js +178 -0
  45. package/dist/collaboration/digest.js.map +1 -0
  46. package/dist/collaboration/handoff.d.ts +66 -0
  47. package/dist/collaboration/handoff.js +94 -0
  48. package/dist/collaboration/handoff.js.map +1 -0
  49. package/dist/collaboration/insights.d.ts +24 -0
  50. package/dist/collaboration/insights.js +243 -0
  51. package/dist/collaboration/insights.js.map +1 -0
  52. package/dist/collaboration/knowledge.d.ts +26 -0
  53. package/dist/collaboration/knowledge.js +105 -0
  54. package/dist/collaboration/knowledge.js.map +1 -0
  55. package/dist/collaboration/timeline.d.ts +31 -0
  56. package/dist/collaboration/timeline.js +150 -0
  57. package/dist/collaboration/timeline.js.map +1 -0
  58. package/dist/collaboration/trust.d.ts +49 -0
  59. package/dist/collaboration/trust.js +176 -0
  60. package/dist/collaboration/trust.js.map +1 -0
  61. package/dist/config/codex-skill.d.ts +7 -0
  62. package/dist/config/codex-skill.js +44 -0
  63. package/dist/config/codex-skill.js.map +1 -0
  64. package/dist/config/doctor.d.ts +12 -0
  65. package/dist/config/doctor.js +314 -0
  66. package/dist/config/doctor.js.map +1 -0
  67. package/dist/config/init.d.ts +3 -0
  68. package/dist/config/init.js +123 -0
  69. package/dist/config/init.js.map +1 -0
  70. package/dist/config/load.d.ts +33 -0
  71. package/dist/config/load.js +252 -0
  72. package/dist/config/load.js.map +1 -0
  73. package/dist/config/mutate.d.ts +21 -0
  74. package/dist/config/mutate.js +86 -0
  75. package/dist/config/mutate.js.map +1 -0
  76. package/dist/config/paths.d.ts +3 -0
  77. package/dist/config/paths.js +33 -0
  78. package/dist/config/paths.js.map +1 -0
  79. package/dist/config/schema.d.ts +308 -0
  80. package/dist/config/schema.js +250 -0
  81. package/dist/config/schema.js.map +1 -0
  82. package/dist/control-plane/project-session.d.ts +67 -0
  83. package/dist/control-plane/project-session.js +234 -0
  84. package/dist/control-plane/project-session.js.map +1 -0
  85. package/dist/feishu/base.d.ts +19 -0
  86. package/dist/feishu/base.js +93 -0
  87. package/dist/feishu/base.js.map +1 -0
  88. package/dist/feishu/cards.d.ts +22 -0
  89. package/dist/feishu/cards.js +144 -0
  90. package/dist/feishu/cards.js.map +1 -0
  91. package/dist/feishu/client.d.ts +61 -0
  92. package/dist/feishu/client.js +315 -0
  93. package/dist/feishu/client.js.map +1 -0
  94. package/dist/feishu/diagnostics.d.ts +42 -0
  95. package/dist/feishu/diagnostics.js +194 -0
  96. package/dist/feishu/diagnostics.js.map +1 -0
  97. package/dist/feishu/doc.d.ts +13 -0
  98. package/dist/feishu/doc.js +59 -0
  99. package/dist/feishu/doc.js.map +1 -0
  100. package/dist/feishu/extractors.d.ts +7 -0
  101. package/dist/feishu/extractors.js +215 -0
  102. package/dist/feishu/extractors.js.map +1 -0
  103. package/dist/feishu/long-connection.d.ts +12 -0
  104. package/dist/feishu/long-connection.js +41 -0
  105. package/dist/feishu/long-connection.js.map +1 -0
  106. package/dist/feishu/message-resource.d.ts +14 -0
  107. package/dist/feishu/message-resource.js +309 -0
  108. package/dist/feishu/message-resource.js.map +1 -0
  109. package/dist/feishu/replay.d.ts +37 -0
  110. package/dist/feishu/replay.js +114 -0
  111. package/dist/feishu/replay.js.map +1 -0
  112. package/dist/feishu/task.d.ts +18 -0
  113. package/dist/feishu/task.js +86 -0
  114. package/dist/feishu/task.js.map +1 -0
  115. package/dist/feishu/text.d.ts +23 -0
  116. package/dist/feishu/text.js +155 -0
  117. package/dist/feishu/text.js.map +1 -0
  118. package/dist/feishu/webhook.d.ts +23 -0
  119. package/dist/feishu/webhook.js +130 -0
  120. package/dist/feishu/webhook.js.map +1 -0
  121. package/dist/feishu/wiki.d.ts +52 -0
  122. package/dist/feishu/wiki.js +300 -0
  123. package/dist/feishu/wiki.js.map +1 -0
  124. package/dist/index.d.ts +9 -0
  125. package/dist/index.js +9 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/knowledge/search.d.ts +11 -0
  128. package/dist/knowledge/search.js +83 -0
  129. package/dist/knowledge/search.js.map +1 -0
  130. package/dist/logging.d.ts +3 -0
  131. package/dist/logging.js +40 -0
  132. package/dist/logging.js.map +1 -0
  133. package/dist/mcp/server.d.ts +34 -0
  134. package/dist/mcp/server.js +1196 -0
  135. package/dist/mcp/server.js.map +1 -0
  136. package/dist/memory/embedding-factory.d.ts +6 -0
  137. package/dist/memory/embedding-factory.js +20 -0
  138. package/dist/memory/embedding-factory.js.map +1 -0
  139. package/dist/memory/embeddings.d.ts +40 -0
  140. package/dist/memory/embeddings.js +150 -0
  141. package/dist/memory/embeddings.js.map +1 -0
  142. package/dist/memory/ollama-embeddings.d.ts +63 -0
  143. package/dist/memory/ollama-embeddings.js +215 -0
  144. package/dist/memory/ollama-embeddings.js.map +1 -0
  145. package/dist/memory/retrieve.d.ts +17 -0
  146. package/dist/memory/retrieve.js +29 -0
  147. package/dist/memory/retrieve.js.map +1 -0
  148. package/dist/memory/summarize.d.ts +13 -0
  149. package/dist/memory/summarize.js +58 -0
  150. package/dist/memory/summarize.js.map +1 -0
  151. package/dist/observability/cost.d.ts +12 -0
  152. package/dist/observability/cost.js +22 -0
  153. package/dist/observability/cost.js.map +1 -0
  154. package/dist/observability/dashboard-html.d.ts +5 -0
  155. package/dist/observability/dashboard-html.js +304 -0
  156. package/dist/observability/dashboard-html.js.map +1 -0
  157. package/dist/observability/metrics.d.ts +36 -0
  158. package/dist/observability/metrics.js +230 -0
  159. package/dist/observability/metrics.js.map +1 -0
  160. package/dist/observability/readiness.d.ts +31 -0
  161. package/dist/observability/readiness.js +57 -0
  162. package/dist/observability/readiness.js.map +1 -0
  163. package/dist/observability/server.d.ts +84 -0
  164. package/dist/observability/server.js +181 -0
  165. package/dist/observability/server.js.map +1 -0
  166. package/dist/projects/paths.d.ts +9 -0
  167. package/dist/projects/paths.js +30 -0
  168. package/dist/projects/paths.js.map +1 -0
  169. package/dist/runtime/instance-lock.d.ts +12 -0
  170. package/dist/runtime/instance-lock.js +99 -0
  171. package/dist/runtime/instance-lock.js.map +1 -0
  172. package/dist/runtime/process.d.ts +2 -0
  173. package/dist/runtime/process.js +43 -0
  174. package/dist/runtime/process.js.map +1 -0
  175. package/dist/runtime/shutdown.d.ts +11 -0
  176. package/dist/runtime/shutdown.js +38 -0
  177. package/dist/runtime/shutdown.js.map +1 -0
  178. package/dist/security/access.d.ts +13 -0
  179. package/dist/security/access.js +160 -0
  180. package/dist/security/access.js.map +1 -0
  181. package/dist/service/install.d.ts +19 -0
  182. package/dist/service/install.js +35 -0
  183. package/dist/service/install.js.map +1 -0
  184. package/dist/service/templates.d.ts +22 -0
  185. package/dist/service/templates.js +118 -0
  186. package/dist/service/templates.js.map +1 -0
  187. package/dist/state/audit-log.d.ts +33 -0
  188. package/dist/state/audit-log.js +116 -0
  189. package/dist/state/audit-log.js.map +1 -0
  190. package/dist/state/config-history-store.d.ts +27 -0
  191. package/dist/state/config-history-store.js +65 -0
  192. package/dist/state/config-history-store.js.map +1 -0
  193. package/dist/state/handoff-store.d.ts +20 -0
  194. package/dist/state/handoff-store.js +97 -0
  195. package/dist/state/handoff-store.js.map +1 -0
  196. package/dist/state/idempotency-store.d.ts +19 -0
  197. package/dist/state/idempotency-store.js +84 -0
  198. package/dist/state/idempotency-store.js.map +1 -0
  199. package/dist/state/memory-store.d.ts +137 -0
  200. package/dist/state/memory-store.js +713 -0
  201. package/dist/state/memory-store.js.map +1 -0
  202. package/dist/state/pending-command-store.d.ts +30 -0
  203. package/dist/state/pending-command-store.js +108 -0
  204. package/dist/state/pending-command-store.js.map +1 -0
  205. package/dist/state/run-state-store.d.ts +58 -0
  206. package/dist/state/run-state-store.js +269 -0
  207. package/dist/state/run-state-store.js.map +1 -0
  208. package/dist/state/session-store.d.ts +56 -0
  209. package/dist/state/session-store.js +275 -0
  210. package/dist/state/session-store.js.map +1 -0
  211. package/dist/state/trust-store.d.ts +15 -0
  212. package/dist/state/trust-store.js +53 -0
  213. package/dist/state/trust-store.js.map +1 -0
  214. package/dist/utils/fs.d.ts +4 -0
  215. package/dist/utils/fs.js +26 -0
  216. package/dist/utils/fs.js.map +1 -0
  217. package/dist/utils/json.d.ts +1 -0
  218. package/dist/utils/json.js +9 -0
  219. package/dist/utils/json.js.map +1 -0
  220. package/dist/utils/path.d.ts +3 -0
  221. package/dist/utils/path.js +22 -0
  222. package/dist/utils/path.js.map +1 -0
  223. package/dist/utils/serial-executor.d.ts +5 -0
  224. package/dist/utils/serial-executor.js +12 -0
  225. package/dist/utils/serial-executor.js.map +1 -0
  226. package/package.json +71 -0
  227. package/skills/feique-session/SKILL.md +27 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/state/memory-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { BridgeCommand } from '../bridge/commands.js';
2
+ export interface PendingCommandRecord {
3
+ key: string;
4
+ chat_id: string;
5
+ actor_id?: string;
6
+ source_text: string;
7
+ summary: string;
8
+ command: BridgeCommand;
9
+ created_at: string;
10
+ expires_at: string;
11
+ }
12
+ export declare class PendingCommandStore {
13
+ private readonly filePath;
14
+ private readonly serial;
15
+ constructor(stateDir: string);
16
+ save(input: {
17
+ chatId: string;
18
+ actorId?: string;
19
+ sourceText: string;
20
+ summary: string;
21
+ command: BridgeCommand;
22
+ ttlSeconds: number;
23
+ }): Promise<PendingCommandRecord>;
24
+ get(chatId: string, actorId?: string): Promise<PendingCommandRecord | null>;
25
+ consume(chatId: string, actorId?: string): Promise<PendingCommandRecord | null>;
26
+ clear(chatId: string, actorId?: string): Promise<void>;
27
+ private readState;
28
+ private writeState;
29
+ }
30
+ export declare function buildPendingCommandKey(chatId: string, actorId?: string): string;
@@ -0,0 +1,108 @@
1
+ import path from 'node:path';
2
+ import { SerialExecutor } from '../utils/serial-executor.js';
3
+ import { ensureDir, fileExists, readUtf8, writeUtf8Atomic } from '../utils/fs.js';
4
+ const DEFAULT_STATE = {
5
+ version: 1,
6
+ records: {},
7
+ };
8
+ export class PendingCommandStore {
9
+ filePath;
10
+ serial = new SerialExecutor();
11
+ constructor(stateDir) {
12
+ this.filePath = path.join(stateDir, 'pending-commands.json');
13
+ }
14
+ async save(input) {
15
+ return this.serial.run(async () => {
16
+ const state = await this.readState();
17
+ const now = new Date();
18
+ const key = buildPendingCommandKey(input.chatId, input.actorId);
19
+ const record = {
20
+ key,
21
+ chat_id: input.chatId,
22
+ ...(input.actorId ? { actor_id: input.actorId } : {}),
23
+ source_text: input.sourceText,
24
+ summary: input.summary,
25
+ command: input.command,
26
+ created_at: now.toISOString(),
27
+ expires_at: new Date(now.getTime() + input.ttlSeconds * 1000).toISOString(),
28
+ };
29
+ state.records[key] = record;
30
+ pruneExpiredRecords(state, now.toISOString());
31
+ await this.writeState(state);
32
+ return record;
33
+ });
34
+ }
35
+ async get(chatId, actorId) {
36
+ return this.serial.run(async () => {
37
+ const state = await this.readState();
38
+ const now = new Date().toISOString();
39
+ const key = buildPendingCommandKey(chatId, actorId);
40
+ const record = state.records[key];
41
+ if (!record) {
42
+ return null;
43
+ }
44
+ if (Date.parse(record.expires_at) <= Date.parse(now)) {
45
+ delete state.records[key];
46
+ await this.writeState(state);
47
+ return null;
48
+ }
49
+ return record;
50
+ });
51
+ }
52
+ async consume(chatId, actorId) {
53
+ return this.serial.run(async () => {
54
+ const state = await this.readState();
55
+ const now = new Date().toISOString();
56
+ const key = buildPendingCommandKey(chatId, actorId);
57
+ const record = state.records[key];
58
+ if (!record) {
59
+ return null;
60
+ }
61
+ delete state.records[key];
62
+ pruneExpiredRecords(state, now);
63
+ await this.writeState(state);
64
+ if (Date.parse(record.expires_at) <= Date.parse(now)) {
65
+ return null;
66
+ }
67
+ return record;
68
+ });
69
+ }
70
+ async clear(chatId, actorId) {
71
+ await this.serial.run(async () => {
72
+ const state = await this.readState();
73
+ delete state.records[buildPendingCommandKey(chatId, actorId)];
74
+ await this.writeState(state);
75
+ });
76
+ }
77
+ async readState() {
78
+ if (!(await fileExists(this.filePath))) {
79
+ return structuredClone(DEFAULT_STATE);
80
+ }
81
+ try {
82
+ const content = await readUtf8(this.filePath);
83
+ const parsed = JSON.parse(content);
84
+ return {
85
+ version: 1,
86
+ records: parsed.records ?? {},
87
+ };
88
+ }
89
+ catch {
90
+ return structuredClone(DEFAULT_STATE);
91
+ }
92
+ }
93
+ async writeState(state) {
94
+ await ensureDir(path.dirname(this.filePath));
95
+ await writeUtf8Atomic(this.filePath, `${JSON.stringify(state, null, 2)}\n`);
96
+ }
97
+ }
98
+ export function buildPendingCommandKey(chatId, actorId) {
99
+ return `${chatId}::${actorId ?? 'actor'}`;
100
+ }
101
+ function pruneExpiredRecords(state, nowIso) {
102
+ for (const [key, record] of Object.entries(state.records)) {
103
+ if (Date.parse(record.expires_at) <= Date.parse(nowIso)) {
104
+ delete state.records[key];
105
+ }
106
+ }
107
+ }
108
+ //# sourceMappingURL=pending-command-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending-command-store.js","sourceRoot":"","sources":["../../src/state/pending-command-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ export type RunStatus = 'queued' | 'running' | 'success' | 'failure' | 'cancelled' | 'stale' | 'orphaned';
2
+ export interface RunState {
3
+ run_id: string;
4
+ queue_key: string;
5
+ conversation_key: string;
6
+ project_alias: string;
7
+ chat_id: string;
8
+ actor_id?: string;
9
+ session_id?: string;
10
+ project_root?: string;
11
+ pid?: number;
12
+ prompt_excerpt: string;
13
+ status: RunStatus;
14
+ status_detail?: string;
15
+ started_at: string;
16
+ updated_at: string;
17
+ finished_at?: string;
18
+ error?: string;
19
+ input_tokens?: number;
20
+ output_tokens?: number;
21
+ estimated_cost_usd?: number;
22
+ }
23
+ export declare class RunStateStore {
24
+ private readonly db;
25
+ private readonly serial;
26
+ constructor(stateDir: string);
27
+ close(): void;
28
+ upsertRun(runId: string, patch: Partial<RunState> & Pick<RunState, 'queue_key' | 'conversation_key' | 'project_alias' | 'chat_id' | 'prompt_excerpt' | 'status'>): Promise<RunState>;
29
+ getRun(runId: string): Promise<RunState | null>;
30
+ listRuns(): Promise<RunState[]>;
31
+ getActiveRun(queueKey: string): Promise<RunState | null>;
32
+ getLatestVisibleRun(queueKey: string): Promise<RunState | null>;
33
+ listActiveRuns(): Promise<RunState[]>;
34
+ getExecutionRunByProjectRoot(projectRoot: string): Promise<RunState | null>;
35
+ recoverOrphanedRuns(): Promise<RunState[]>;
36
+ getCostSummary(hours?: number): Promise<{
37
+ total_runs: number;
38
+ total_input_tokens: number;
39
+ total_output_tokens: number;
40
+ total_cost_usd: number;
41
+ by_project: Record<string, {
42
+ runs: number;
43
+ input_tokens: number;
44
+ output_tokens: number;
45
+ cost_usd: number;
46
+ }>;
47
+ by_actor: Record<string, {
48
+ runs: number;
49
+ input_tokens: number;
50
+ output_tokens: number;
51
+ cost_usd: number;
52
+ }>;
53
+ }>;
54
+ private getRunSync;
55
+ private updateRunInPlace;
56
+ private pruneOldRuns;
57
+ private nextMonotonicTimestamp;
58
+ }
@@ -0,0 +1,269 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { DatabaseSync } from 'node:sqlite';
4
+ import { SerialExecutor } from '../utils/serial-executor.js';
5
+ import { isProcessAlive } from '../runtime/process.js';
6
+ /** Retention: auto-delete completed/failed/cancelled runs older than 30 days. */
7
+ const RETENTION_DAYS = 30;
8
+ export class RunStateStore {
9
+ db;
10
+ serial = new SerialExecutor();
11
+ constructor(stateDir) {
12
+ fs.mkdirSync(stateDir, { recursive: true });
13
+ const dbPath = path.join(stateDir, 'runs.db');
14
+ this.db = new DatabaseSync(dbPath);
15
+ initializeSchema(this.db);
16
+ }
17
+ close() {
18
+ this.db.close();
19
+ }
20
+ async upsertRun(runId, patch) {
21
+ return this.serial.run(async () => {
22
+ const existing = this.getRunSync(runId);
23
+ const now = this.nextMonotonicTimestamp();
24
+ const next = {
25
+ run_id: runId,
26
+ queue_key: patch.queue_key,
27
+ conversation_key: patch.conversation_key,
28
+ project_alias: patch.project_alias,
29
+ chat_id: patch.chat_id,
30
+ prompt_excerpt: patch.prompt_excerpt,
31
+ status: patch.status,
32
+ started_at: existing?.started_at ?? now,
33
+ updated_at: now,
34
+ actor_id: pickPatchedValue(patch, 'actor_id', existing?.actor_id),
35
+ session_id: pickPatchedValue(patch, 'session_id', existing?.session_id),
36
+ project_root: pickPatchedValue(patch, 'project_root', existing?.project_root),
37
+ pid: pickPatchedValue(patch, 'pid', existing?.pid),
38
+ status_detail: pickPatchedValue(patch, 'status_detail', existing?.status_detail),
39
+ finished_at: pickPatchedValue(patch, 'finished_at', existing?.finished_at),
40
+ error: pickPatchedValue(patch, 'error', existing?.error),
41
+ input_tokens: pickPatchedValue(patch, 'input_tokens', existing?.input_tokens),
42
+ output_tokens: pickPatchedValue(patch, 'output_tokens', existing?.output_tokens),
43
+ estimated_cost_usd: pickPatchedValue(patch, 'estimated_cost_usd', existing?.estimated_cost_usd),
44
+ };
45
+ if (isTerminalRunStatus(next.status)) {
46
+ next.finished_at = patch.finished_at ?? now;
47
+ }
48
+ else {
49
+ next.finished_at = undefined;
50
+ }
51
+ this.db.prepare(`
52
+ INSERT OR REPLACE INTO runs (
53
+ run_id, queue_key, conversation_key, project_alias, chat_id,
54
+ actor_id, session_id, project_root, pid, prompt_excerpt,
55
+ status, status_detail, started_at, updated_at, finished_at, error,
56
+ input_tokens, output_tokens, estimated_cost_usd
57
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
58
+ `).run(next.run_id, next.queue_key, next.conversation_key, next.project_alias, next.chat_id, next.actor_id ?? null, next.session_id ?? null, next.project_root ?? null, next.pid ?? null, next.prompt_excerpt, next.status, next.status_detail ?? null, next.started_at, next.updated_at, next.finished_at ?? null, next.error ?? null, next.input_tokens ?? null, next.output_tokens ?? null, next.estimated_cost_usd ?? null);
59
+ this.pruneOldRuns();
60
+ return next;
61
+ });
62
+ }
63
+ async getRun(runId) {
64
+ await this.serial.wait();
65
+ return this.getRunSync(runId);
66
+ }
67
+ async listRuns() {
68
+ await this.serial.wait();
69
+ const rows = this.db.prepare('SELECT * FROM runs ORDER BY updated_at DESC').all();
70
+ return rows.map(mapRunRow);
71
+ }
72
+ async getActiveRun(queueKey) {
73
+ await this.serial.wait();
74
+ const row = this.db.prepare("SELECT * FROM runs WHERE queue_key = ? AND status IN ('running', 'orphaned') ORDER BY updated_at DESC LIMIT 1").get(queueKey);
75
+ return row ? mapRunRow(row) : null;
76
+ }
77
+ async getLatestVisibleRun(queueKey) {
78
+ await this.serial.wait();
79
+ const row = this.db.prepare("SELECT * FROM runs WHERE queue_key = ? AND status IN ('queued', 'running', 'orphaned') ORDER BY updated_at DESC LIMIT 1").get(queueKey);
80
+ return row ? mapRunRow(row) : null;
81
+ }
82
+ async listActiveRuns() {
83
+ await this.serial.wait();
84
+ const rows = this.db.prepare("SELECT * FROM runs WHERE status IN ('queued', 'running', 'orphaned') ORDER BY updated_at DESC").all();
85
+ return rows.map(mapRunRow);
86
+ }
87
+ async getExecutionRunByProjectRoot(projectRoot) {
88
+ await this.serial.wait();
89
+ const row = this.db.prepare("SELECT * FROM runs WHERE project_root = ? AND status IN ('running', 'orphaned') ORDER BY updated_at DESC LIMIT 1").get(projectRoot);
90
+ return row ? mapRunRow(row) : null;
91
+ }
92
+ async recoverOrphanedRuns() {
93
+ return this.serial.run(async () => {
94
+ const rows = this.db.prepare("SELECT * FROM runs WHERE status IN ('queued', 'running')").all();
95
+ const recovered = [];
96
+ const now = new Date().toISOString();
97
+ for (const row of rows) {
98
+ const run = mapRunRow(row);
99
+ if (run.status === 'queued') {
100
+ run.status = 'stale';
101
+ run.finished_at = now;
102
+ run.updated_at = now;
103
+ this.updateRunInPlace(run);
104
+ recovered.push({ ...run });
105
+ continue;
106
+ }
107
+ if (run.status !== 'running') {
108
+ continue;
109
+ }
110
+ if (run.pid && isProcessAlive(run.pid)) {
111
+ run.status = 'orphaned';
112
+ run.updated_at = now;
113
+ this.updateRunInPlace(run);
114
+ recovered.push({ ...run });
115
+ continue;
116
+ }
117
+ run.status = 'stale';
118
+ run.finished_at = now;
119
+ run.updated_at = now;
120
+ this.updateRunInPlace(run);
121
+ recovered.push({ ...run });
122
+ }
123
+ return recovered;
124
+ });
125
+ }
126
+ async getCostSummary(hours = 24) {
127
+ await this.serial.wait();
128
+ const cutoff = new Date(Date.now() - hours * 3600_000).toISOString();
129
+ const rows = this.db.prepare('SELECT * FROM runs WHERE started_at >= ?').all(cutoff);
130
+ let totalInputTokens = 0;
131
+ let totalOutputTokens = 0;
132
+ let totalCostUsd = 0;
133
+ const byProject = new Map();
134
+ const byActor = new Map();
135
+ for (const row of rows) {
136
+ const input = row.input_tokens ?? 0;
137
+ const output = row.output_tokens ?? 0;
138
+ const cost = row.estimated_cost_usd ?? 0;
139
+ totalInputTokens += input;
140
+ totalOutputTokens += output;
141
+ totalCostUsd += cost;
142
+ // By project
143
+ const projEntry = byProject.get(row.project_alias) ?? { runs: 0, input_tokens: 0, output_tokens: 0, cost_usd: 0 };
144
+ projEntry.runs += 1;
145
+ projEntry.input_tokens += input;
146
+ projEntry.output_tokens += output;
147
+ projEntry.cost_usd += cost;
148
+ byProject.set(row.project_alias, projEntry);
149
+ // By actor
150
+ const actorKey = row.actor_id ?? 'unknown';
151
+ const actorEntry = byActor.get(actorKey) ?? { runs: 0, input_tokens: 0, output_tokens: 0, cost_usd: 0 };
152
+ actorEntry.runs += 1;
153
+ actorEntry.input_tokens += input;
154
+ actorEntry.output_tokens += output;
155
+ actorEntry.cost_usd += cost;
156
+ byActor.set(actorKey, actorEntry);
157
+ }
158
+ return {
159
+ total_runs: rows.length,
160
+ total_input_tokens: totalInputTokens,
161
+ total_output_tokens: totalOutputTokens,
162
+ total_cost_usd: totalCostUsd,
163
+ by_project: Object.fromEntries(byProject),
164
+ by_actor: Object.fromEntries(byActor),
165
+ };
166
+ }
167
+ // ── private helpers ──
168
+ getRunSync(runId) {
169
+ const row = this.db.prepare('SELECT * FROM runs WHERE run_id = ?').get(runId);
170
+ return row ? mapRunRow(row) : null;
171
+ }
172
+ updateRunInPlace(run) {
173
+ this.db.prepare(`
174
+ UPDATE runs SET
175
+ queue_key = ?, conversation_key = ?, project_alias = ?, chat_id = ?,
176
+ actor_id = ?, session_id = ?, project_root = ?, pid = ?,
177
+ prompt_excerpt = ?, status = ?, status_detail = ?,
178
+ started_at = ?, updated_at = ?, finished_at = ?, error = ?,
179
+ input_tokens = ?, output_tokens = ?, estimated_cost_usd = ?
180
+ WHERE run_id = ?
181
+ `).run(run.queue_key, run.conversation_key, run.project_alias, run.chat_id, run.actor_id ?? null, run.session_id ?? null, run.project_root ?? null, run.pid ?? null, run.prompt_excerpt, run.status, run.status_detail ?? null, run.started_at, run.updated_at, run.finished_at ?? null, run.error ?? null, run.input_tokens ?? null, run.output_tokens ?? null, run.estimated_cost_usd ?? null, run.run_id);
182
+ }
183
+ pruneOldRuns() {
184
+ const cutoff = new Date(Date.now() - RETENTION_DAYS * 24 * 60 * 60 * 1000).toISOString();
185
+ this.db.prepare("DELETE FROM runs WHERE status IN ('success', 'failure', 'cancelled') AND finished_at IS NOT NULL AND finished_at < ?").run(cutoff);
186
+ }
187
+ nextMonotonicTimestamp() {
188
+ const row = this.db.prepare('SELECT MAX(updated_at) AS latest FROM runs').get();
189
+ const latestStr = row?.latest;
190
+ const latestMs = latestStr ? Date.parse(latestStr) : 0;
191
+ const now = Date.now();
192
+ return new Date(Math.max(now, (Number.isNaN(latestMs) ? 0 : latestMs) + 1)).toISOString();
193
+ }
194
+ }
195
+ function mapRunRow(row) {
196
+ return {
197
+ run_id: row.run_id,
198
+ queue_key: row.queue_key,
199
+ conversation_key: row.conversation_key,
200
+ project_alias: row.project_alias,
201
+ chat_id: row.chat_id,
202
+ actor_id: row.actor_id ?? undefined,
203
+ session_id: row.session_id ?? undefined,
204
+ project_root: row.project_root ?? undefined,
205
+ pid: row.pid ?? undefined,
206
+ prompt_excerpt: row.prompt_excerpt,
207
+ status: row.status,
208
+ status_detail: row.status_detail ?? undefined,
209
+ started_at: row.started_at,
210
+ updated_at: row.updated_at,
211
+ finished_at: row.finished_at ?? undefined,
212
+ error: row.error ?? undefined,
213
+ input_tokens: row.input_tokens ?? undefined,
214
+ output_tokens: row.output_tokens ?? undefined,
215
+ estimated_cost_usd: row.estimated_cost_usd ?? undefined,
216
+ };
217
+ }
218
+ // ── Schema bootstrap ──
219
+ function initializeSchema(db) {
220
+ db.exec('PRAGMA journal_mode = WAL;');
221
+ db.exec(`
222
+ CREATE TABLE IF NOT EXISTS runs (
223
+ run_id TEXT PRIMARY KEY,
224
+ queue_key TEXT NOT NULL,
225
+ conversation_key TEXT NOT NULL,
226
+ project_alias TEXT NOT NULL,
227
+ chat_id TEXT NOT NULL,
228
+ actor_id TEXT,
229
+ session_id TEXT,
230
+ project_root TEXT,
231
+ pid INTEGER,
232
+ prompt_excerpt TEXT NOT NULL,
233
+ status TEXT NOT NULL,
234
+ status_detail TEXT,
235
+ started_at TEXT NOT NULL,
236
+ updated_at TEXT NOT NULL,
237
+ finished_at TEXT,
238
+ error TEXT,
239
+ input_tokens INTEGER,
240
+ output_tokens INTEGER,
241
+ estimated_cost_usd REAL
242
+ );
243
+
244
+ CREATE INDEX IF NOT EXISTS idx_runs_status_project ON runs(status, project_alias);
245
+ CREATE INDEX IF NOT EXISTS idx_runs_project_root_status ON runs(project_root, status);
246
+ CREATE INDEX IF NOT EXISTS idx_runs_queue_key_status ON runs(queue_key, status);
247
+ CREATE INDEX IF NOT EXISTS idx_runs_started_at ON runs(started_at);
248
+ `);
249
+ // Migrate existing databases that lack the token columns.
250
+ const cols = db.prepare("PRAGMA table_info('runs')").all();
251
+ const colNames = new Set(cols.map((c) => c.name));
252
+ if (!colNames.has('input_tokens')) {
253
+ db.exec('ALTER TABLE runs ADD COLUMN input_tokens INTEGER;');
254
+ }
255
+ if (!colNames.has('output_tokens')) {
256
+ db.exec('ALTER TABLE runs ADD COLUMN output_tokens INTEGER;');
257
+ }
258
+ if (!colNames.has('estimated_cost_usd')) {
259
+ db.exec('ALTER TABLE runs ADD COLUMN estimated_cost_usd REAL;');
260
+ }
261
+ }
262
+ // ── Utility functions (unchanged public contract) ──
263
+ function isTerminalRunStatus(status) {
264
+ return status === 'success' || status === 'failure' || status === 'cancelled' || status === 'stale';
265
+ }
266
+ function pickPatchedValue(patch, key, fallback) {
267
+ return (Object.prototype.hasOwnProperty.call(patch, key) ? patch[key] : fallback);
268
+ }
269
+ //# sourceMappingURL=run-state-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-state-store.js","sourceRoot":"","sources":["../../src/state/run-state-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { BackendName, SessionScope } from '../config/schema.js';
2
+ export interface SessionHistoryEntry {
3
+ thread_id: string;
4
+ created_at: string;
5
+ updated_at: string;
6
+ last_prompt?: string;
7
+ last_response_excerpt?: string;
8
+ }
9
+ export interface ProjectSessionState {
10
+ thread_id?: string;
11
+ active_thread_id?: string;
12
+ active_backend?: BackendName;
13
+ last_prompt?: string;
14
+ last_response_excerpt?: string;
15
+ updated_at: string;
16
+ sessions?: Record<string, SessionHistoryEntry>;
17
+ }
18
+ export interface ConversationState {
19
+ selected_project_alias?: string;
20
+ updated_at: string;
21
+ scope: SessionScope;
22
+ tenant_key?: string;
23
+ chat_id: string;
24
+ actor_id?: string;
25
+ projects: Record<string, ProjectSessionState>;
26
+ }
27
+ export interface SessionStateFile {
28
+ version: 1;
29
+ conversations: Record<string, ConversationState>;
30
+ }
31
+ export declare class SessionStore {
32
+ private readonly stateFilePath;
33
+ private readonly serial;
34
+ constructor(stateDir: string);
35
+ listConversations(): Promise<Array<[string, ConversationState]>>;
36
+ getConversation(conversationKey: string): Promise<ConversationState | null>;
37
+ ensureConversation(conversationKey: string, seed: Pick<ConversationState, 'chat_id' | 'scope' | 'tenant_key' | 'actor_id'>): Promise<ConversationState>;
38
+ selectProject(conversationKey: string, projectAlias: string): Promise<void>;
39
+ upsertProjectSession(conversationKey: string, projectAlias: string, patch: Partial<ProjectSessionState>): Promise<ProjectSessionState>;
40
+ listProjectSessions(conversationKey: string, projectAlias: string): Promise<SessionHistoryEntry[]>;
41
+ setActiveProjectSession(conversationKey: string, projectAlias: string, threadId: string): Promise<ProjectSessionState>;
42
+ clearActiveProjectSession(conversationKey: string, projectAlias: string): Promise<ProjectSessionState | null>;
43
+ setProjectBackend(conversationKey: string, projectAlias: string, backendName: BackendName): Promise<void>;
44
+ getProjectBackend(conversationKey: string, projectAlias: string): Promise<BackendName | undefined>;
45
+ dropProjectSession(conversationKey: string, projectAlias: string, threadId: string): Promise<ProjectSessionState | null>;
46
+ resetProjectSession(conversationKey: string, projectAlias: string): Promise<void>;
47
+ clearConversation(conversationKey: string): Promise<void>;
48
+ private readState;
49
+ private writeState;
50
+ }
51
+ export declare function buildConversationKey(input: {
52
+ tenantKey?: string;
53
+ chatId: string;
54
+ actorId?: string;
55
+ scope: SessionScope;
56
+ }): string;