@grackle-ai/server 0.72.6 → 0.73.1

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 (143) hide show
  1. package/dist/adapter-manager.js +1 -1
  2. package/dist/adapter-manager.js.map +1 -1
  3. package/dist/auto-reconnect.js +1 -1
  4. package/dist/auto-reconnect.js.map +1 -1
  5. package/dist/compute-task-status.d.ts +1 -1
  6. package/dist/compute-task-status.d.ts.map +1 -1
  7. package/dist/credential-bundle.d.ts +1 -1
  8. package/dist/credential-bundle.d.ts.map +1 -1
  9. package/dist/credential-bundle.js +2 -2
  10. package/dist/credential-bundle.js.map +1 -1
  11. package/dist/event-bus.js +1 -1
  12. package/dist/event-bus.js.map +1 -1
  13. package/dist/event-processor.d.ts.map +1 -1
  14. package/dist/event-processor.js +1 -5
  15. package/dist/event-processor.js.map +1 -1
  16. package/dist/github-import.d.ts.map +1 -1
  17. package/dist/github-import.js +1 -3
  18. package/dist/github-import.js.map +1 -1
  19. package/dist/grpc-service.d.ts.map +1 -1
  20. package/dist/grpc-service.js +2 -16
  21. package/dist/grpc-service.js.map +1 -1
  22. package/dist/index.js +6 -15
  23. package/dist/index.js.map +1 -1
  24. package/dist/knowledge-init.d.ts.map +1 -1
  25. package/dist/knowledge-init.js +1 -3
  26. package/dist/knowledge-init.js.map +1 -1
  27. package/dist/lifecycle.d.ts.map +1 -1
  28. package/dist/lifecycle.js +1 -2
  29. package/dist/lifecycle.js.map +1 -1
  30. package/dist/pipe-delivery.js +1 -1
  31. package/dist/pipe-delivery.js.map +1 -1
  32. package/dist/reanimate-agent.d.ts +1 -1
  33. package/dist/reanimate-agent.d.ts.map +1 -1
  34. package/dist/reanimate-agent.js +1 -3
  35. package/dist/reanimate-agent.js.map +1 -1
  36. package/dist/session-recovery.d.ts.map +1 -1
  37. package/dist/session-recovery.js +1 -3
  38. package/dist/session-recovery.js.map +1 -1
  39. package/dist/signals/sigchld.d.ts.map +1 -1
  40. package/dist/signals/sigchld.js +1 -2
  41. package/dist/signals/sigchld.js.map +1 -1
  42. package/dist/signals/signal-delivery.js +1 -1
  43. package/dist/signals/signal-delivery.js.map +1 -1
  44. package/dist/test-utils/mock-database.d.ts +130 -0
  45. package/dist/test-utils/mock-database.d.ts.map +1 -0
  46. package/dist/test-utils/mock-database.js +147 -0
  47. package/dist/test-utils/mock-database.js.map +1 -0
  48. package/dist/token-push.d.ts.map +1 -1
  49. package/dist/token-push.js +3 -4
  50. package/dist/token-push.js.map +1 -1
  51. package/dist/ws-bridge.d.ts +1 -1
  52. package/dist/ws-bridge.d.ts.map +1 -1
  53. package/dist/ws-bridge.js +2 -16
  54. package/dist/ws-bridge.js.map +1 -1
  55. package/dist/ws-broadcast.d.ts +1 -1
  56. package/dist/ws-broadcast.d.ts.map +1 -1
  57. package/dist/ws-broadcast.js +1 -1
  58. package/dist/ws-broadcast.js.map +1 -1
  59. package/package.json +14 -12
  60. package/dist/credential-providers.d.ts +0 -41
  61. package/dist/credential-providers.d.ts.map +0 -1
  62. package/dist/credential-providers.js +0 -98
  63. package/dist/credential-providers.js.map +0 -1
  64. package/dist/crypto.d.ts +0 -5
  65. package/dist/crypto.d.ts.map +0 -1
  66. package/dist/crypto.js +0 -74
  67. package/dist/crypto.js.map +0 -1
  68. package/dist/db-seed.d.ts +0 -16
  69. package/dist/db-seed.d.ts.map +0 -1
  70. package/dist/db-seed.js +0 -176
  71. package/dist/db-seed.js.map +0 -1
  72. package/dist/db.d.ts +0 -43
  73. package/dist/db.d.ts.map +0 -1
  74. package/dist/db.js +0 -478
  75. package/dist/db.js.map +0 -1
  76. package/dist/env-registry.d.ts +0 -29
  77. package/dist/env-registry.d.ts.map +0 -1
  78. package/dist/env-registry.js +0 -78
  79. package/dist/env-registry.js.map +0 -1
  80. package/dist/event-store.d.ts +0 -9
  81. package/dist/event-store.d.ts.map +0 -1
  82. package/dist/event-store.js +0 -16
  83. package/dist/event-store.js.map +0 -1
  84. package/dist/finding-store.d.ts +0 -7
  85. package/dist/finding-store.d.ts.map +0 -1
  86. package/dist/finding-store.js +0 -45
  87. package/dist/finding-store.js.map +0 -1
  88. package/dist/json-helpers.d.ts +0 -7
  89. package/dist/json-helpers.d.ts.map +0 -1
  90. package/dist/json-helpers.js +0 -22
  91. package/dist/json-helpers.js.map +0 -1
  92. package/dist/orchestrator-context.d.ts +0 -31
  93. package/dist/orchestrator-context.d.ts.map +0 -1
  94. package/dist/orchestrator-context.js +0 -95
  95. package/dist/orchestrator-context.js.map +0 -1
  96. package/dist/paths.d.ts +0 -7
  97. package/dist/paths.d.ts.map +0 -1
  98. package/dist/paths.js +0 -12
  99. package/dist/paths.js.map +0 -1
  100. package/dist/persona-store.d.ts +0 -15
  101. package/dist/persona-store.d.ts.map +0 -1
  102. package/dist/persona-store.js +0 -57
  103. package/dist/persona-store.js.map +0 -1
  104. package/dist/resolve-persona.d.ts +0 -33
  105. package/dist/resolve-persona.d.ts.map +0 -1
  106. package/dist/resolve-persona.js +0 -44
  107. package/dist/resolve-persona.js.map +0 -1
  108. package/dist/schema.d.ts +0 -1784
  109. package/dist/schema.d.ts.map +0 -1
  110. package/dist/schema.js +0 -152
  111. package/dist/schema.js.map +0 -1
  112. package/dist/session-store.d.ts +0 -57
  113. package/dist/session-store.d.ts.map +0 -1
  114. package/dist/session-store.js +0 -204
  115. package/dist/session-store.js.map +0 -1
  116. package/dist/settings-store.d.ts +0 -14
  117. package/dist/settings-store.d.ts.map +0 -1
  118. package/dist/settings-store.js +0 -30
  119. package/dist/settings-store.js.map +0 -1
  120. package/dist/system-prompt-builder.d.ts +0 -145
  121. package/dist/system-prompt-builder.d.ts.map +0 -1
  122. package/dist/system-prompt-builder.js +0 -323
  123. package/dist/system-prompt-builder.js.map +0 -1
  124. package/dist/task-store.d.ts +0 -71
  125. package/dist/task-store.d.ts.map +0 -1
  126. package/dist/task-store.js +0 -301
  127. package/dist/task-store.js.map +0 -1
  128. package/dist/test-db.d.ts +0 -13
  129. package/dist/test-db.d.ts.map +0 -1
  130. package/dist/test-db.js +0 -14
  131. package/dist/test-db.js.map +0 -1
  132. package/dist/token-store.d.ts +0 -25
  133. package/dist/token-store.d.ts.map +0 -1
  134. package/dist/token-store.js +0 -58
  135. package/dist/token-store.js.map +0 -1
  136. package/dist/utils/slugify.d.ts +0 -20
  137. package/dist/utils/slugify.d.ts.map +0 -1
  138. package/dist/utils/slugify.js +0 -22
  139. package/dist/utils/slugify.js.map +0 -1
  140. package/dist/workspace-store.d.ts +0 -29
  141. package/dist/workspace-store.d.ts.map +0 -1
  142. package/dist/workspace-store.js +0 -74
  143. package/dist/workspace-store.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/dist/schema.js DELETED
@@ -1,152 +0,0 @@
1
- import { sqliteTable, text, integer, real } from "drizzle-orm/sqlite-core";
2
- import { sql } from "drizzle-orm";
3
- // ─── Environments ──────────────────────────────────────────
4
- /* eslint-disable @rushstack/typedef-var -- Drizzle table types are inferred from sqliteTable() */
5
- export const environments = sqliteTable("environments", {
6
- id: text("id").primaryKey(),
7
- displayName: text("display_name").notNull(),
8
- adapterType: text("adapter_type").notNull(),
9
- adapterConfig: text("adapter_config").notNull(),
10
- defaultRuntime: text("default_runtime").notNull().default("claude-code"),
11
- bootstrapped: integer("bootstrapped", { mode: "boolean" })
12
- .notNull()
13
- .default(false),
14
- status: text("status").notNull().default("disconnected"),
15
- lastSeen: text("last_seen"),
16
- envInfo: text("env_info"),
17
- createdAt: text("created_at")
18
- .notNull()
19
- .default(sql `(datetime('now'))`),
20
- powerlineToken: text("powerline_token").notNull().default(""),
21
- });
22
- // ─── Sessions ──────────────────────────────────────────────
23
- export const sessions = sqliteTable("sessions", {
24
- id: text("id").primaryKey(),
25
- environmentId: text("env_id")
26
- .notNull()
27
- .references(() => environments.id),
28
- runtime: text("runtime").notNull(),
29
- runtimeSessionId: text("runtime_session_id"),
30
- prompt: text("prompt").notNull(),
31
- model: text("model").notNull(),
32
- status: text("status").notNull().default("pending"),
33
- logPath: text("log_path"),
34
- turns: integer("turns").notNull().default(0),
35
- startedAt: text("started_at")
36
- .notNull()
37
- .default(sql `(datetime('now'))`),
38
- suspendedAt: text("suspended_at"),
39
- endedAt: text("ended_at"),
40
- endReason: text("end_reason"),
41
- error: text("error"),
42
- taskId: text("task_id").notNull().default(""),
43
- personaId: text("persona_id").notNull().default(""),
44
- parentSessionId: text("parent_session_id").notNull().default(""),
45
- pipeMode: text("pipe_mode").notNull().default(""),
46
- inputTokens: integer("input_tokens").notNull().default(0),
47
- outputTokens: integer("output_tokens").notNull().default(0),
48
- costUsd: real("cost_usd").notNull().default(0),
49
- });
50
- // ─── Tokens ────────────────────────────────────────────────
51
- export const tokens = sqliteTable("tokens", {
52
- id: text("id").primaryKey(),
53
- config: text("config").notNull(),
54
- createdAt: text("created_at")
55
- .notNull()
56
- .default(sql `(datetime('now'))`),
57
- });
58
- // ─── Workspaces ───────────────────────────────────────────
59
- export const workspaces = sqliteTable("workspaces", {
60
- id: text("id").primaryKey(),
61
- name: text("name").notNull(),
62
- description: text("description").notNull().default(""),
63
- repoUrl: text("repo_url").notNull().default(""),
64
- environmentId: text("environment_id").notNull().references(() => environments.id),
65
- status: text("status").notNull().default("active"),
66
- useWorktrees: integer("use_worktrees", { mode: "boolean" })
67
- .notNull()
68
- .default(true),
69
- worktreeBasePath: text("worktree_base_path").notNull().default(""),
70
- defaultPersonaId: text("default_persona_id").notNull().default(""),
71
- createdAt: text("created_at")
72
- .notNull()
73
- .default(sql `(datetime('now'))`),
74
- updatedAt: text("updated_at")
75
- .notNull()
76
- .default(sql `(datetime('now'))`),
77
- });
78
- // ─── Tasks ────────────────────────────────────────────────
79
- export const tasks = sqliteTable("tasks", {
80
- id: text("id").primaryKey(),
81
- workspaceId: text("workspace_id")
82
- .references(() => workspaces.id),
83
- title: text("title").notNull(),
84
- description: text("description").notNull().default(""),
85
- status: text("status").notNull().default("not_started"),
86
- branch: text("branch").notNull().default(""),
87
- dependsOn: text("depends_on").notNull().default("[]"),
88
- startedAt: text("started_at"),
89
- completedAt: text("completed_at"),
90
- createdAt: text("created_at")
91
- .notNull()
92
- .default(sql `(datetime('now'))`),
93
- updatedAt: text("updated_at")
94
- .notNull()
95
- .default(sql `(datetime('now'))`),
96
- sortOrder: integer("sort_order").notNull().default(0),
97
- parentTaskId: text("parent_task_id").notNull().default(""),
98
- depth: integer("depth").notNull().default(0),
99
- canDecompose: integer("can_decompose", { mode: "boolean" })
100
- .notNull()
101
- .default(false),
102
- defaultPersonaId: text("default_persona_id").notNull().default(""),
103
- });
104
- // ─── Findings ─────────────────────────────────────────────
105
- export const findings = sqliteTable("findings", {
106
- id: text("id").primaryKey(),
107
- workspaceId: text("workspace_id")
108
- .notNull()
109
- .references(() => workspaces.id),
110
- taskId: text("task_id").notNull().default(""),
111
- sessionId: text("session_id").notNull().default(""),
112
- category: text("category").notNull().default("general"),
113
- title: text("title").notNull(),
114
- content: text("content").notNull(),
115
- tags: text("tags").notNull().default("[]"),
116
- createdAt: text("created_at")
117
- .notNull()
118
- .default(sql `(datetime('now'))`),
119
- });
120
- // ─── Settings ─────────────────────────────────────────────
121
- export const settings = sqliteTable("settings", {
122
- key: text("key").primaryKey(),
123
- value: text("value").notNull(),
124
- });
125
- // ─── Personas ─────────────────────────────────────────────
126
- export const personas = sqliteTable("personas", {
127
- id: text("id").primaryKey(),
128
- name: text("name").notNull().unique(),
129
- description: text("description").notNull().default(""),
130
- systemPrompt: text("system_prompt").notNull(),
131
- toolConfig: text("tool_config").notNull().default("{}"),
132
- runtime: text("runtime").notNull().default(""),
133
- model: text("model").notNull().default(""),
134
- maxTurns: integer("max_turns").notNull().default(0),
135
- mcpServers: text("mcp_servers").notNull().default("[]"),
136
- type: text("type").notNull().default("agent"),
137
- script: text("script").notNull().default(""),
138
- createdAt: text("created_at")
139
- .notNull()
140
- .default(sql `(datetime('now'))`),
141
- updatedAt: text("updated_at")
142
- .notNull()
143
- .default(sql `(datetime('now'))`),
144
- });
145
- // ─── Domain Events ───────────────────────────────────────
146
- export const domainEvents = sqliteTable("domain_events", {
147
- id: text("id").primaryKey(),
148
- type: text("type").notNull(),
149
- timestamp: text("timestamp").notNull(),
150
- payload: text("payload").notNull(),
151
- });
152
- //# sourceMappingURL=schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- import { type SessionRow } from "./schema.js";
2
- import type { SessionStatus, PipeMode, EndReason } from "@grackle-ai/common";
3
- export type { SessionRow };
4
- /** Insert a new session record into the database. */
5
- export declare function createSession(id: string, environmentId: string, runtime: string, prompt: string, model: string, logPath: string, taskId?: string, personaId?: string, parentSessionId?: string, pipeMode?: PipeMode): void;
6
- /** Retrieve a single session by ID. */
7
- export declare function getSession(id: string): SessionRow | undefined;
8
- /** List sessions, optionally filtered by environment and/or status. */
9
- export declare function listSessions(environmentId?: string, status?: string): SessionRow[];
10
- /** List all sessions belonging to a specific environment. */
11
- export declare function listByEnv(environmentId: string): SessionRow[];
12
- /** Update a session's status and error; auto-sets `endedAt` for terminal states.
13
- * Only updates `runtimeSessionId` when explicitly provided (omitting preserves the current value).
14
- * `endReason` is only meaningful when status is STOPPED — it records why the session ended. */
15
- export declare function updateSession(id: string, status: SessionStatus, runtimeSessionId?: string, error?: string, endReason?: EndReason): void;
16
- /** Update only the status column of a session. */
17
- export declare function updateSessionStatus(id: string, status: SessionStatus): void;
18
- /** Get the currently active (pending/running/waiting_input) session for an environment, if any. */
19
- export declare function getActiveForEnv(environmentId: string): SessionRow | undefined;
20
- /** Increment the turn counter for a session. */
21
- export declare function incrementTurns(id: string): void;
22
- /** Accumulate token usage and cost for a session (additive — call once per usage event). */
23
- export declare function updateSessionUsage(id: string, inputTokens: number, outputTokens: number, costUsd: number): void;
24
- /** Aggregate usage stats across sessions matching the given filter. */
25
- export declare function aggregateUsage(filter: {
26
- taskId?: string;
27
- taskIds?: string[];
28
- environmentId?: string;
29
- }): {
30
- inputTokens: number;
31
- outputTokens: number;
32
- costUsd: number;
33
- sessionCount: number;
34
- };
35
- /** Delete all sessions belonging to a specific environment. */
36
- export declare function deleteByEnvironment(environmentId: string): void;
37
- /** Update the taskId for an existing session (late-bind). */
38
- export declare function setSessionTask(id: string, taskId: string): void;
39
- /** Persist the runtime-native session ID returned by the PowerLine. */
40
- export declare function updateRuntimeSessionId(id: string, runtimeSessionId: string): void;
41
- /** Transition a session to SUSPENDED — transport lost, pending auto-recovery on reconnect. */
42
- export declare function suspendSession(id: string): void;
43
- /** Get all SUSPENDED sessions for an environment, ordered by startedAt (oldest first). */
44
- export declare function getSuspendedForEnv(environmentId: string): SessionRow[];
45
- /** Clear terminal state for reanimate — reset status to running, clear endedAt/endReason/error/suspendedAt. */
46
- export declare function reanimateSession(id: string): void;
47
- /** List all sessions for a specific task, ordered chronologically (oldest first). */
48
- export declare function listSessionsForTask(taskId: string): SessionRow[];
49
- /** Get the most recent session for a task (by startedAt DESC, id DESC). */
50
- export declare function getLatestSessionForTask(taskId: string): SessionRow | undefined;
51
- /** Get all active (non-terminal) sessions for a task. */
52
- export declare function getActiveSessionsForTask(taskId: string): SessionRow[];
53
- /** Batch-fetch all sessions for a set of task IDs. Avoids N+1 queries for listTasks. */
54
- export declare function listSessionsByTaskIds(taskIds: string[]): SessionRow[];
55
- /** List all child sessions spawned by a parent session. */
56
- export declare function getChildSessions(parentSessionId: string): SessionRow[];
57
- //# sourceMappingURL=session-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"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"}
@@ -1,204 +0,0 @@
1
- import db from "./db.js";
2
- import { sessions } from "./schema.js";
3
- import { eq, and, inArray, desc, asc, sql } from "drizzle-orm";
4
- import { SESSION_STATUS } from "@grackle-ai/common";
5
- /** Insert a new session record into the database. */
6
- export function createSession(id, environmentId, runtime, prompt, model, logPath, taskId = "", personaId = "", parentSessionId = "", pipeMode = "") {
7
- db.insert(sessions).values({
8
- id,
9
- environmentId,
10
- runtime,
11
- prompt,
12
- model,
13
- logPath,
14
- taskId,
15
- personaId,
16
- parentSessionId,
17
- pipeMode,
18
- // We always set startedAt explicitly (ISO 8601 format with milliseconds).
19
- // The schema default also produces ISO format via strftime, but we set it
20
- // here for consistency. ISO format sorts lexicographically correctly.
21
- startedAt: new Date().toISOString(),
22
- }).run();
23
- }
24
- /** Retrieve a single session by ID. */
25
- export function getSession(id) {
26
- return db.select().from(sessions).where(eq(sessions.id, id)).get();
27
- }
28
- /** List sessions, optionally filtered by environment and/or status. */
29
- export function listSessions(environmentId, status) {
30
- const conditions = [];
31
- if (environmentId) {
32
- conditions.push(eq(sessions.environmentId, environmentId));
33
- }
34
- if (status) {
35
- conditions.push(eq(sessions.status, status));
36
- }
37
- const query = db.select().from(sessions);
38
- if (conditions.length > 0) {
39
- return query.where(and(...conditions)).orderBy(desc(sessions.startedAt)).all();
40
- }
41
- return query.orderBy(desc(sessions.startedAt)).all();
42
- }
43
- /** List all sessions belonging to a specific environment. */
44
- export function listByEnv(environmentId) {
45
- return db.select().from(sessions)
46
- .where(eq(sessions.environmentId, environmentId))
47
- .orderBy(desc(sessions.startedAt))
48
- .all();
49
- }
50
- /** Update a session's status and error; auto-sets `endedAt` for terminal states.
51
- * Only updates `runtimeSessionId` when explicitly provided (omitting preserves the current value).
52
- * `endReason` is only meaningful when status is STOPPED — it records why the session ended. */
53
- export function updateSession(id, status, runtimeSessionId, error, endReason) {
54
- const endedAt = status === SESSION_STATUS.STOPPED
55
- ? new Date().toISOString()
56
- : null;
57
- const patch = {
58
- status,
59
- endedAt,
60
- endReason: endReason ?? null,
61
- error: error ?? null,
62
- };
63
- if (runtimeSessionId !== undefined) {
64
- patch.runtimeSessionId = runtimeSessionId;
65
- }
66
- db.update(sessions)
67
- .set(patch)
68
- .where(eq(sessions.id, id))
69
- .run();
70
- }
71
- /** Update only the status column of a session. */
72
- export function updateSessionStatus(id, status) {
73
- db.update(sessions)
74
- .set({ status })
75
- .where(eq(sessions.id, id))
76
- .run();
77
- }
78
- /** Get the currently active (pending/running/waiting_input) session for an environment, if any. */
79
- export function getActiveForEnv(environmentId) {
80
- return db.select().from(sessions)
81
- .where(and(eq(sessions.environmentId, environmentId), inArray(sessions.status, [SESSION_STATUS.PENDING, SESSION_STATUS.RUNNING, SESSION_STATUS.IDLE])))
82
- .get();
83
- }
84
- /** Increment the turn counter for a session. */
85
- export function incrementTurns(id) {
86
- db.update(sessions)
87
- .set({ turns: sql `${sessions.turns} + 1` })
88
- .where(eq(sessions.id, id))
89
- .run();
90
- }
91
- /** Accumulate token usage and cost for a session (additive — call once per usage event). */
92
- export function updateSessionUsage(id, inputTokens, outputTokens, costUsd) {
93
- db.update(sessions)
94
- .set({
95
- inputTokens: sql `${sessions.inputTokens} + ${inputTokens}`,
96
- outputTokens: sql `${sessions.outputTokens} + ${outputTokens}`,
97
- costUsd: sql `${sessions.costUsd} + ${costUsd}`,
98
- })
99
- .where(eq(sessions.id, id))
100
- .run();
101
- }
102
- /** Aggregate usage stats across sessions matching the given filter. */
103
- export function aggregateUsage(filter) {
104
- const conditions = [];
105
- if (filter.taskId) {
106
- conditions.push(eq(sessions.taskId, filter.taskId));
107
- }
108
- if (filter.taskIds && filter.taskIds.length > 0) {
109
- conditions.push(inArray(sessions.taskId, filter.taskIds));
110
- }
111
- if (filter.environmentId) {
112
- conditions.push(eq(sessions.environmentId, filter.environmentId));
113
- }
114
- const where = conditions.length > 0 ? and(...conditions) : undefined;
115
- const result = db.select({
116
- inputTokens: sql `COALESCE(SUM(${sessions.inputTokens}), 0)`,
117
- outputTokens: sql `COALESCE(SUM(${sessions.outputTokens}), 0)`,
118
- costUsd: sql `COALESCE(SUM(${sessions.costUsd}), 0)`,
119
- sessionCount: sql `COUNT(*)`,
120
- }).from(sessions).where(where).get();
121
- return result ?? { inputTokens: 0, outputTokens: 0, costUsd: 0, sessionCount: 0 };
122
- }
123
- /** Delete all sessions belonging to a specific environment. */
124
- export function deleteByEnvironment(environmentId) {
125
- db.delete(sessions).where(eq(sessions.environmentId, environmentId)).run();
126
- }
127
- /** Update the taskId for an existing session (late-bind). */
128
- export function setSessionTask(id, taskId) {
129
- db.update(sessions)
130
- .set({ taskId })
131
- .where(eq(sessions.id, id))
132
- .run();
133
- }
134
- /** Persist the runtime-native session ID returned by the PowerLine. */
135
- export function updateRuntimeSessionId(id, runtimeSessionId) {
136
- db.update(sessions)
137
- .set({ runtimeSessionId })
138
- .where(eq(sessions.id, id))
139
- .run();
140
- }
141
- /** Transition a session to SUSPENDED — transport lost, pending auto-recovery on reconnect. */
142
- export function suspendSession(id) {
143
- db.update(sessions)
144
- .set({
145
- status: SESSION_STATUS.SUSPENDED,
146
- suspendedAt: new Date().toISOString(),
147
- error: null,
148
- })
149
- .where(eq(sessions.id, id))
150
- .run();
151
- }
152
- /** Get all SUSPENDED sessions for an environment, ordered by startedAt (oldest first). */
153
- export function getSuspendedForEnv(environmentId) {
154
- return db.select().from(sessions)
155
- .where(and(eq(sessions.environmentId, environmentId), eq(sessions.status, SESSION_STATUS.SUSPENDED)))
156
- .orderBy(asc(sessions.startedAt))
157
- .all();
158
- }
159
- /** Clear terminal state for reanimate — reset status to running, clear endedAt/endReason/error/suspendedAt. */
160
- export function reanimateSession(id) {
161
- db.update(sessions)
162
- .set({ status: SESSION_STATUS.RUNNING, endedAt: null, endReason: null, error: null, suspendedAt: null })
163
- .where(eq(sessions.id, id))
164
- .run();
165
- }
166
- /** List all sessions for a specific task, ordered chronologically (oldest first). */
167
- export function listSessionsForTask(taskId) {
168
- return db.select().from(sessions)
169
- .where(eq(sessions.taskId, taskId))
170
- .orderBy(asc(sessions.startedAt), asc(sessions.id))
171
- .all();
172
- }
173
- /** Get the most recent session for a task (by startedAt DESC, id DESC). */
174
- export function getLatestSessionForTask(taskId) {
175
- return db.select().from(sessions)
176
- .where(eq(sessions.taskId, taskId))
177
- .orderBy(desc(sessions.startedAt), desc(sessions.id))
178
- .limit(1)
179
- .get();
180
- }
181
- /** Get all active (non-terminal) sessions for a task. */
182
- export function getActiveSessionsForTask(taskId) {
183
- return db.select().from(sessions)
184
- .where(and(eq(sessions.taskId, taskId), inArray(sessions.status, [SESSION_STATUS.PENDING, SESSION_STATUS.RUNNING, SESSION_STATUS.IDLE])))
185
- .all();
186
- }
187
- /** Batch-fetch all sessions for a set of task IDs. Avoids N+1 queries for listTasks. */
188
- export function listSessionsByTaskIds(taskIds) {
189
- if (taskIds.length === 0) {
190
- return [];
191
- }
192
- return db.select().from(sessions)
193
- .where(inArray(sessions.taskId, taskIds))
194
- .orderBy(asc(sessions.startedAt), asc(sessions.id))
195
- .all();
196
- }
197
- /** List all child sessions spawned by a parent session. */
198
- export function getChildSessions(parentSessionId) {
199
- return db.select().from(sessions)
200
- .where(eq(sessions.parentSessionId, parentSessionId))
201
- .orderBy(asc(sessions.startedAt), asc(sessions.id))
202
- .all();
203
- }
204
- //# sourceMappingURL=session-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Setting keys that clients are allowed to read and write via the public API.
3
- *
4
- * Keys outside this set (e.g. credential provider config) are internal and
5
- * must not be exposed to WebSocket or gRPC callers.
6
- */
7
- export declare const WRITABLE_SETTING_KEYS: ReadonlySet<string>;
8
- /** Check whether a setting key is allowed for public read/write access. */
9
- export declare function isAllowedSettingKey(key: string): boolean;
10
- /** Retrieve a setting value by key. Returns undefined if the key does not exist. */
11
- export declare function getSetting(key: string): string | undefined;
12
- /** Set a setting value by key. Creates or overwrites the value. */
13
- export declare function setSetting(key: string, value: string): void;
14
- //# sourceMappingURL=settings-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings-store.d.ts","sourceRoot":"","sources":["../src/settings-store.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAGpD,CAAC;AAEH,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1D;AAED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAK3D"}
@@ -1,30 +0,0 @@
1
- import db from "./db.js";
2
- import { settings } from "./schema.js";
3
- import { eq } from "drizzle-orm";
4
- /**
5
- * Setting keys that clients are allowed to read and write via the public API.
6
- *
7
- * Keys outside this set (e.g. credential provider config) are internal and
8
- * must not be exposed to WebSocket or gRPC callers.
9
- */
10
- export const WRITABLE_SETTING_KEYS = new Set([
11
- "default_persona_id",
12
- "onboarding_completed",
13
- ]);
14
- /** Check whether a setting key is allowed for public read/write access. */
15
- export function isAllowedSettingKey(key) {
16
- return WRITABLE_SETTING_KEYS.has(key);
17
- }
18
- /** Retrieve a setting value by key. Returns undefined if the key does not exist. */
19
- export function getSetting(key) {
20
- const row = db.select().from(settings).where(eq(settings.key, key)).get();
21
- return row?.value;
22
- }
23
- /** Set a setting value by key. Creates or overwrites the value. */
24
- export function setSetting(key, value) {
25
- db.insert(settings)
26
- .values({ key, value })
27
- .onConflictDoUpdate({ target: settings.key, set: { value } })
28
- .run();
29
- }
30
- //# sourceMappingURL=settings-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings-store.js","sourceRoot":"","sources":["../src/settings-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IAChE,oBAAoB;IACpB,sBAAsB;CACvB,CAAC,CAAC;AAEH,2EAA2E;AAC3E,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,OAAO,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1E,OAAO,GAAG,EAAE,KAAK,CAAC;AACpB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,KAAa;IACnD,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;SAChB,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;SACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;SAC5D,GAAG,EAAE,CAAC;AACX,CAAC"}