@northflare/runner 0.0.13 → 0.0.16

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 (119) hide show
  1. package/README.md +8 -5
  2. package/bin/northflare-runner +44 -16
  3. package/dist/components/claude-sdk-manager.d.ts +3 -3
  4. package/dist/components/claude-sdk-manager.d.ts.map +1 -1
  5. package/dist/components/claude-sdk-manager.js +80 -111
  6. package/dist/components/claude-sdk-manager.js.map +1 -1
  7. package/dist/components/codex-sdk-manager.d.ts +15 -6
  8. package/dist/components/codex-sdk-manager.d.ts.map +1 -1
  9. package/dist/components/codex-sdk-manager.js +128 -97
  10. package/dist/components/codex-sdk-manager.js.map +1 -1
  11. package/dist/components/enhanced-repository-manager.d.ts +2 -2
  12. package/dist/components/enhanced-repository-manager.d.ts.map +1 -1
  13. package/dist/components/enhanced-repository-manager.js +68 -75
  14. package/dist/components/enhanced-repository-manager.js.map +1 -1
  15. package/dist/components/message-handler-sse.d.ts +1 -1
  16. package/dist/components/message-handler-sse.d.ts.map +1 -1
  17. package/dist/components/message-handler-sse.js +205 -97
  18. package/dist/components/message-handler-sse.js.map +1 -1
  19. package/dist/components/{claude-manager.d.ts → northflare-agent-sdk-manager.d.ts} +17 -14
  20. package/dist/components/northflare-agent-sdk-manager.d.ts.map +1 -0
  21. package/dist/components/northflare-agent-sdk-manager.js +1456 -0
  22. package/dist/components/northflare-agent-sdk-manager.js.map +1 -0
  23. package/dist/components/repository-manager.d.ts +2 -2
  24. package/dist/components/repository-manager.d.ts.map +1 -1
  25. package/dist/components/repository-manager.js +34 -74
  26. package/dist/components/repository-manager.js.map +1 -1
  27. package/dist/index.d.ts +3 -3
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +115 -79
  30. package/dist/index.js.map +1 -1
  31. package/dist/runner-sse.d.ts +22 -5
  32. package/dist/runner-sse.d.ts.map +1 -1
  33. package/dist/runner-sse.js +95 -74
  34. package/dist/runner-sse.js.map +1 -1
  35. package/dist/services/RunnerAPIClient.d.ts +1 -1
  36. package/dist/services/RunnerAPIClient.d.ts.map +1 -1
  37. package/dist/services/RunnerAPIClient.js +3 -7
  38. package/dist/services/RunnerAPIClient.js.map +1 -1
  39. package/dist/services/SSEClient.js +5 -9
  40. package/dist/services/SSEClient.js.map +1 -1
  41. package/dist/types/claude.d.ts +16 -2
  42. package/dist/types/claude.d.ts.map +1 -1
  43. package/dist/types/claude.js +1 -2
  44. package/dist/types/claude.js.map +1 -1
  45. package/dist/types/index.d.ts +5 -3
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/dist/types/index.js +3 -19
  48. package/dist/types/index.js.map +1 -1
  49. package/dist/types/messages.js +1 -2
  50. package/dist/types/messages.js.map +1 -1
  51. package/dist/types/runner-interface.d.ts +8 -4
  52. package/dist/types/runner-interface.d.ts.map +1 -1
  53. package/dist/types/runner-interface.js +1 -2
  54. package/dist/types/runner-interface.js.map +1 -1
  55. package/dist/utils/StateManager.js +12 -19
  56. package/dist/utils/StateManager.js.map +1 -1
  57. package/dist/utils/config.d.ts +1 -1
  58. package/dist/utils/config.d.ts.map +1 -1
  59. package/dist/utils/config.js +19 -26
  60. package/dist/utils/config.js.map +1 -1
  61. package/dist/utils/console.js +3 -6
  62. package/dist/utils/console.js.map +1 -1
  63. package/dist/utils/debug.js +1 -4
  64. package/dist/utils/debug.js.map +1 -1
  65. package/dist/utils/expand-env.js +1 -4
  66. package/dist/utils/expand-env.js.map +1 -1
  67. package/dist/utils/inactivity-timeout.d.ts +19 -0
  68. package/dist/utils/inactivity-timeout.d.ts.map +1 -0
  69. package/dist/utils/inactivity-timeout.js +72 -0
  70. package/dist/utils/inactivity-timeout.js.map +1 -0
  71. package/dist/utils/logger.d.ts.map +1 -1
  72. package/dist/utils/logger.js +24 -35
  73. package/dist/utils/logger.js.map +1 -1
  74. package/dist/utils/model.d.ts +3 -1
  75. package/dist/utils/model.d.ts.map +1 -1
  76. package/dist/utils/model.js +18 -4
  77. package/dist/utils/model.js.map +1 -1
  78. package/dist/utils/status-line.d.ts +1 -0
  79. package/dist/utils/status-line.d.ts.map +1 -1
  80. package/dist/utils/status-line.js +25 -18
  81. package/dist/utils/status-line.js.map +1 -1
  82. package/dist/utils/tool-response-sanitizer.js +6 -10
  83. package/dist/utils/tool-response-sanitizer.js.map +1 -1
  84. package/lib/codex-sdk/dist/index.d.ts +1 -1
  85. package/lib/codex-sdk/dist/samples/basic_streaming.d.ts +3 -0
  86. package/lib/codex-sdk/dist/samples/basic_streaming.d.ts.map +1 -0
  87. package/lib/codex-sdk/dist/samples/basic_streaming.js +81 -0
  88. package/lib/codex-sdk/dist/samples/basic_streaming.js.map +1 -0
  89. package/lib/codex-sdk/dist/samples/helpers.d.ts +2 -0
  90. package/lib/codex-sdk/dist/samples/helpers.d.ts.map +1 -0
  91. package/lib/codex-sdk/dist/samples/helpers.js +6 -0
  92. package/lib/codex-sdk/dist/samples/helpers.js.map +1 -0
  93. package/lib/codex-sdk/dist/samples/structured_output.d.ts +3 -0
  94. package/lib/codex-sdk/dist/samples/structured_output.d.ts.map +1 -0
  95. package/lib/codex-sdk/dist/samples/structured_output.js +17 -0
  96. package/lib/codex-sdk/dist/samples/structured_output.js.map +1 -0
  97. package/lib/codex-sdk/dist/samples/structured_output_zod.d.ts +3 -0
  98. package/lib/codex-sdk/dist/samples/structured_output_zod.d.ts.map +1 -0
  99. package/lib/codex-sdk/dist/samples/structured_output_zod.js +16 -0
  100. package/lib/codex-sdk/dist/samples/structured_output_zod.js.map +1 -0
  101. package/lib/codex-sdk/dist/tsup.config.d.ts +3 -0
  102. package/lib/codex-sdk/dist/tsup.config.js +12 -0
  103. package/package.json +9 -4
  104. package/scripts/verify-openrouter-agent.ts +163 -0
  105. package/dist/collections/runner-messages.d.ts +0 -52
  106. package/dist/collections/runner-messages.d.ts.map +0 -1
  107. package/dist/collections/runner-messages.js +0 -161
  108. package/dist/collections/runner-messages.js.map +0 -1
  109. package/dist/components/claude-manager.d.ts.map +0 -1
  110. package/dist/components/claude-manager.js +0 -783
  111. package/dist/components/claude-manager.js.map +0 -1
  112. package/dist/components/message-handler.d.ts +0 -35
  113. package/dist/components/message-handler.d.ts.map +0 -1
  114. package/dist/components/message-handler.js +0 -689
  115. package/dist/components/message-handler.js.map +0 -1
  116. package/dist/runner.d.ts +0 -51
  117. package/dist/runner.d.ts.map +0 -1
  118. package/dist/runner.js +0 -530
  119. package/dist/runner.js.map +0 -1
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@northflare/runner",
3
- "version": "0.0.13",
3
+ "version": "0.0.16",
4
4
  "description": "Distributed conversation runner for Northflare",
5
5
  "license": "MIT",
6
+ "type": "module",
6
7
  "main": "dist/index.js",
7
8
  "types": "dist/index.d.ts",
8
9
  "bin": "./bin/northflare-runner",
@@ -20,13 +21,17 @@
20
21
  "release:env": "source .env && npm publish --access public"
21
22
  },
22
23
  "dependencies": {
23
- "@anthropic-ai/claude-agent-sdk": "0.1.37",
24
+ "@ai-sdk/groq": "^3.0.0-beta.42",
25
+ "@anthropic-ai/claude-agent-sdk": "0.1.51",
24
26
  "@botanicastudios/claude-code-sdk-ts": "0.2.22-fork",
25
27
  "@botanicastudios/mcp-host-rpc": "^0.4.0",
28
+ "@northflare/agent": "workspace:*",
26
29
  "@northflare/codex-sdk": "file:lib/codex-sdk",
27
- "@openai/codex-sdk": "^0.58.0",
30
+ "@openai/codex-sdk": "^0.60.1",
31
+ "@openrouter/ai-sdk-provider": "^1.2.8",
28
32
  "@tanstack/react-query": "^5.x.x",
29
33
  "@types/jsonwebtoken": "^9.0.10",
34
+ "ai": "^6.0.0-beta.124",
30
35
  "ajv": "^8.x.x",
31
36
  "commander": "^11.x.x",
32
37
  "computer-name": "^0.1.0",
@@ -36,7 +41,7 @@
36
41
  "jsonwebtoken": "^9.0.2",
37
42
  "simple-git": "^3.x.x",
38
43
  "winston": "^3.x.x",
39
- "zod": "^3.x.x"
44
+ "zod": "^3.25.8"
40
45
  },
41
46
  "devDependencies": {
42
47
  "@types/eventsource": "^1.1.15",
@@ -0,0 +1,163 @@
1
+ #!/usr/bin/env -S node --no-warnings
2
+ /**
3
+ * Standalone Northflare Agent SDK reproducer for OpenRouter/Groq hangs.
4
+ *
5
+ * Mirrors the runner's NorthflareAgentManager pipeline:
6
+ * - streams a single user message into sdkQuery()
7
+ * - passes env/cwd/systemPrompt/disallowedTools just like the runner
8
+ * - logs idle status while waiting so hangs are visible
9
+ *
10
+ * Run with tsx from the repo root:
11
+ * OPENROUTER_API_KEY=... GROQ_API_KEY=... npx tsx runner/scripts/verify-openrouter-agent.ts \
12
+ * --model moonshotai/kimi-k2-instruct --provider groq --message "hello"
13
+ */
14
+
15
+ import { parseArgs } from "node:util";
16
+ import { query as sdkQuery } from "@northflare/agent";
17
+ import { groq as groqProvider } from "@ai-sdk/groq";
18
+ import { createOpenRouter } from "@openrouter/ai-sdk-provider";
19
+
20
+ type Provider = "openrouter" | "groq";
21
+
22
+ const {
23
+ values: {
24
+ model = "moonshotai/kimi-k2-instruct",
25
+ provider = "openrouter",
26
+ message = "hello",
27
+ appendSystemPrompt,
28
+ resume,
29
+ cwd,
30
+ debug = true,
31
+ },
32
+ } = parseArgs({
33
+ options: {
34
+ model: { type: "string" },
35
+ provider: { type: "string" },
36
+ message: { type: "string" },
37
+ appendSystemPrompt: { type: "string" },
38
+ resume: { type: "string" },
39
+ cwd: { type: "string" },
40
+ debug: { type: "boolean" },
41
+ },
42
+ });
43
+
44
+ const normalizedProvider = (provider?.toLowerCase() as Provider) || "openrouter";
45
+ const systemPrompt = appendSystemPrompt
46
+ ? { type: "preset" as const, preset: "claude_code" as const, append: appendSystemPrompt }
47
+ : undefined;
48
+
49
+ const envVars: Record<string, string> = {};
50
+
51
+ // Only pass through the env vars the runner would send. Values are not logged.
52
+ if (process.env.OPENROUTER_API_KEY) envVars.OPENROUTER_API_KEY = process.env.OPENROUTER_API_KEY;
53
+ if (process.env.GROQ_API_KEY) envVars.GROQ_API_KEY = process.env.GROQ_API_KEY as string;
54
+ if (process.env.ANTHROPIC_API_KEY) envVars.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY;
55
+ if (process.env.OPENAI_API_KEY) envVars.OPENAI_API_KEY = process.env.OPENAI_API_KEY;
56
+ if (process.env.GITHUB_TOKEN) envVars.GITHUB_TOKEN = process.env.GITHUB_TOKEN;
57
+ if (process.env.TOOL_TOKEN) envVars.TOOL_TOKEN = process.env.TOOL_TOKEN;
58
+
59
+ // Emit a launch summary similar to the runner for quick visual comparison.
60
+ console.log("[verify-openrouter-agent] Launch config", {
61
+ model,
62
+ provider: normalizedProvider,
63
+ cwd: cwd || process.cwd(),
64
+ hasSystemPrompt: Boolean(systemPrompt),
65
+ env: {
66
+ OPENROUTER_API_KEY: Boolean(envVars.OPENROUTER_API_KEY),
67
+ GROQ_API_KEY: Boolean(envVars.GROQ_API_KEY),
68
+ ANTHROPIC_API_KEY: Boolean(envVars.ANTHROPIC_API_KEY),
69
+ OPENAI_API_KEY: Boolean(envVars.OPENAI_API_KEY),
70
+ GITHUB_TOKEN: Boolean(envVars.GITHUB_TOKEN),
71
+ TOOL_TOKEN: Boolean(envVars.TOOL_TOKEN),
72
+ },
73
+ });
74
+
75
+ function toUserMessage(text: string) {
76
+ return {
77
+ type: "user",
78
+ session_id: "",
79
+ parent_tool_use_id: null,
80
+ message: { role: "user", content: text },
81
+ };
82
+ }
83
+
84
+ async function run() {
85
+ // Build the LanguageModel value exactly like NorthflareAgentManager
86
+ const sdkModel = (() => {
87
+ if (normalizedProvider === "groq") return groqProvider(model) as any;
88
+ if (normalizedProvider === "openrouter") {
89
+ const client = createOpenRouter({
90
+ apiKey: process.env.OPENROUTER_API_KEY || "",
91
+ });
92
+ const normalizedModel = model.startsWith("openrouter:")
93
+ ? model.slice("openrouter:".length)
94
+ : model;
95
+ const resolved = client(normalizedModel);
96
+ console.log("[verify-openrouter-agent] Model resolution", {
97
+ provider: normalizedProvider,
98
+ rawModel: model,
99
+ normalizedModel,
100
+ openRouterApiKeyPresent: Boolean(process.env.OPENROUTER_API_KEY),
101
+ sdkModelType: (resolved as any)?.constructor?.name,
102
+ });
103
+ return resolved;
104
+ }
105
+ return model;
106
+ })();
107
+
108
+ const promptStream = (async function* () {
109
+ yield toUserMessage(message);
110
+ })();
111
+
112
+ const sdk = sdkQuery({
113
+ prompt: promptStream,
114
+ options: {
115
+ cwd: cwd || process.cwd(),
116
+ env: envVars,
117
+ model: sdkModel,
118
+ resume: resume || undefined,
119
+ debug,
120
+ systemPrompt,
121
+ stderr: (data: string) => console.error(`[agent-sdk:stderr] ${data}`),
122
+ onStepFinish: (step: any) =>
123
+ console.log("[agent-sdk:step]", {
124
+ type: step?.type,
125
+ tool: step?.tool,
126
+ finishReason: step?.finishReason,
127
+ }),
128
+ },
129
+ });
130
+
131
+ let count = 0;
132
+ let last = Date.now();
133
+ const idleTimer = setInterval(() => {
134
+ const idleMs = Date.now() - last;
135
+ if (idleMs >= 5000) {
136
+ console.log("[verify-openrouter-agent] waiting for agent output", {
137
+ streamedMessageCount: count,
138
+ idleMs,
139
+ });
140
+ }
141
+ }, 5000);
142
+
143
+ try {
144
+ for await (const msg of sdk) {
145
+ last = Date.now();
146
+ count += 1;
147
+ // Keep logs compact but show the important parts
148
+ console.log(`[agent-sdk] message #${count}`, {
149
+ type: msg?.type,
150
+ session_id: msg?.session_id || msg?.sessionId,
151
+ role: msg?.message?.role,
152
+ contentPreview: JSON.stringify(msg).slice(0, 240),
153
+ });
154
+ }
155
+ console.log("[verify-openrouter-agent] stream completed", { count });
156
+ } catch (error) {
157
+ console.error("[verify-openrouter-agent] stream errored", error);
158
+ } finally {
159
+ clearInterval(idleTimer);
160
+ }
161
+ }
162
+
163
+ run();
@@ -1,52 +0,0 @@
1
- /**
2
- * ElectricSQL collection for RunnerMessages with real-time sync
3
- */
4
- import { z } from "zod";
5
- import { RunnerConfig } from "../types";
6
- export declare const runnerMessageSchema: z.ZodObject<{
7
- id: z.ZodString;
8
- direction: z.ZodEnum<["to_runner", "to_orchestrator"]>;
9
- runnerId: z.ZodString;
10
- taskId: z.ZodNullable<z.ZodString>;
11
- workspaceId: z.ZodNullable<z.ZodString>;
12
- conversationId: z.ZodNullable<z.ZodString>;
13
- payload: z.ZodAny;
14
- expiresAt: z.ZodString;
15
- createdAt: z.ZodString;
16
- }, "strip", z.ZodTypeAny, {
17
- workspaceId: string | null;
18
- taskId: string | null;
19
- id: string;
20
- conversationId: string | null;
21
- runnerId: string;
22
- direction: "to_runner" | "to_orchestrator";
23
- expiresAt: string;
24
- createdAt: string;
25
- payload?: any;
26
- }, {
27
- workspaceId: string | null;
28
- taskId: string | null;
29
- id: string;
30
- conversationId: string | null;
31
- runnerId: string;
32
- direction: "to_runner" | "to_orchestrator";
33
- expiresAt: string;
34
- createdAt: string;
35
- payload?: any;
36
- }>;
37
- export type RunnerMessage = z.infer<typeof runnerMessageSchema>;
38
- export declare class RunnerMessagesCollection {
39
- private shape;
40
- private stream;
41
- private subscribers;
42
- private shapeUnsubscribe?;
43
- private isInitialized;
44
- state: Map<string, RunnerMessage>;
45
- constructor(config: RunnerConfig, lastProcessedAt?: Date | null);
46
- subscribe(callback: () => void): () => void;
47
- preload(): Promise<void>;
48
- isReady(): boolean;
49
- stop(): void;
50
- }
51
- export declare function createRunnerMessagesCollection(config: RunnerConfig, lastProcessedAt?: Date | null): RunnerMessagesCollection;
52
- //# sourceMappingURL=runner-messages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner-messages.d.ts","sourceRoot":"","sources":["../../src/collections/runner-messages.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAmBxC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,qBAAa,wBAAwB;IACnC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,gBAAgB,CAAC,CAAa;IACtC,OAAO,CAAC,aAAa,CAAkB;IAChC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAa;gBAEzC,MAAM,EAAE,YAAY,EAAE,eAAe,CAAC,EAAE,IAAI,GAAG,IAAI;IAkF/D,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAUrC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B,OAAO,IAAI,OAAO;IAMlB,IAAI,IAAI,IAAI;CAiBb;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,YAAY,EAAE,eAAe,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,wBAAwB,CAE5H"}
@@ -1,161 +0,0 @@
1
- "use strict";
2
- /**
3
- * ElectricSQL collection for RunnerMessages with real-time sync
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.RunnerMessagesCollection = exports.runnerMessageSchema = void 0;
7
- exports.createRunnerMessagesCollection = createRunnerMessagesCollection;
8
- const client_1 = require("@electric-sql/client");
9
- const zod_1 = require("zod");
10
- const logger_1 = require("../utils/logger");
11
- const logger = (0, logger_1.createLogger)("ElectricSQL");
12
- // Schema for RunnerMessage from ElectricSQL (raw database columns)
13
- const electricMessageSchema = zod_1.z.object({
14
- id: zod_1.z.string(),
15
- direction: zod_1.z.enum(["to_runner", "to_orchestrator"]),
16
- runner: zod_1.z.string(), // Database column name
17
- task: zod_1.z.string().nullable(), // Database column name for taskId
18
- workspace: zod_1.z.string().nullable(), // Database column name
19
- conversation: zod_1.z.string().nullable(), // Database column name for conversationId (relation id)
20
- payload: zod_1.z.any(), // JSONRPC 2.0 message
21
- expiresAt: zod_1.z.string(),
22
- createdAt: zod_1.z.string(),
23
- });
24
- // Schema for normalized RunnerMessage used internally
25
- exports.runnerMessageSchema = zod_1.z.object({
26
- id: zod_1.z.string(),
27
- direction: zod_1.z.enum(["to_runner", "to_orchestrator"]),
28
- runnerId: zod_1.z.string(),
29
- taskId: zod_1.z.string().nullable(),
30
- workspaceId: zod_1.z.string().nullable(),
31
- conversationId: zod_1.z.string().nullable(),
32
- payload: zod_1.z.any(), // JSONRPC 2.0 message
33
- expiresAt: zod_1.z.string(),
34
- createdAt: zod_1.z.string(),
35
- });
36
- class RunnerMessagesCollection {
37
- shape;
38
- stream;
39
- subscribers = new Set();
40
- shapeUnsubscribe;
41
- isInitialized = false;
42
- state = new Map();
43
- constructor(config, lastProcessedAt) {
44
- // Build the where clause based on lastProcessedAt
45
- let whereClause = `"direction" = 'to_runner' AND "runner" = '${config.runnerId}'`;
46
- if (lastProcessedAt) {
47
- // Only get messages created after lastProcessedAt
48
- whereClause += ` AND "createdAt" > '${lastProcessedAt.toISOString()}'`;
49
- }
50
- // Debug logging for ElectricSQL connection setup
51
- if (process.env["DEBUG"] === "true") {
52
- logger.debug("Creating ElectricSQL shape stream", {
53
- electricUrl: config.electricUrl,
54
- runnerId: config.runnerId,
55
- lastProcessedAt: lastProcessedAt?.toISOString() || "null",
56
- whereClause: whereClause,
57
- table: '"RunnerMessage"',
58
- authToken: process.env["CLAUDETTE_RUNNER_TOKEN"] ? "present" : "missing"
59
- });
60
- }
61
- // Create the ShapeStream
62
- this.stream = new client_1.ShapeStream({
63
- url: `${config.electricUrl}/v1/shape`,
64
- params: {
65
- table: '"RunnerMessage"',
66
- where: whereClause,
67
- },
68
- headers: {
69
- Authorization: `Bearer ${process.env["CLAUDETTE_RUNNER_TOKEN"]}`,
70
- },
71
- });
72
- // Create the Shape to handle data
73
- this.shape = new client_1.Shape(this.stream);
74
- // Subscribe to shape changes
75
- this.shapeUnsubscribe = this.shape.subscribe(({ rows }) => {
76
- // Update internal state with normalized messages
77
- this.state.clear();
78
- rows.forEach((row) => {
79
- // Normalize the database column names to our internal schema
80
- // ElectricSQL always returns raw database columns: task, runner, workspace
81
- const normalizedMessage = {
82
- id: row.id,
83
- direction: row.direction,
84
- runnerId: row.runner, // Database column 'runner' -> 'runnerId'
85
- taskId: row.task, // Database column 'task' -> 'taskId'
86
- workspaceId: row.workspace, // Database column 'workspace' -> 'workspaceId'
87
- conversationId: row.conversation ?? null,
88
- payload: row.payload,
89
- expiresAt: row.expiresAt,
90
- createdAt: row.createdAt,
91
- };
92
- this.state.set(normalizedMessage.id, normalizedMessage);
93
- });
94
- // Mark as initialized after first sync
95
- if (!this.isInitialized) {
96
- this.isInitialized = true;
97
- }
98
- if (process.env["DEBUG"] === "true") {
99
- logger.debug("ElectricSQL shape updated", {
100
- messageCount: rows.length,
101
- runnerId: config.runnerId
102
- });
103
- }
104
- // Notify all subscribers
105
- this.subscribers.forEach(callback => callback());
106
- });
107
- // Log when collection is created
108
- if (process.env["DEBUG"] === "true") {
109
- logger.debug("ElectricSQL collection created", {
110
- hasState: true,
111
- shapeUrl: `${config.electricUrl}/v1/shape`
112
- });
113
- }
114
- }
115
- // Subscribe to collection changes
116
- subscribe(callback) {
117
- this.subscribers.add(callback);
118
- // Return unsubscribe function
119
- return () => {
120
- this.subscribers.delete(callback);
121
- };
122
- }
123
- // Preload data - wait for initial sync
124
- async preload() {
125
- if (process.env["DEBUG"] === "true") {
126
- logger.debug("Preloading ElectricSQL data");
127
- }
128
- // Wait for initial data to load
129
- await this.shape.rows;
130
- if (process.env["DEBUG"] === "true") {
131
- logger.debug("ElectricSQL preload complete", {
132
- messageCount: this.state.size
133
- });
134
- }
135
- }
136
- // Check if collection is ready
137
- isReady() {
138
- // Consider ready after initial sync
139
- return this.isInitialized;
140
- }
141
- // Stop the collection
142
- stop() {
143
- // Unsubscribe from shape updates
144
- if (this.shapeUnsubscribe) {
145
- this.shapeUnsubscribe();
146
- }
147
- // Stop all stream subscriptions
148
- this.stream.unsubscribeAll();
149
- // Clear internal state
150
- this.subscribers.clear();
151
- this.state.clear();
152
- if (process.env["DEBUG"] === "true") {
153
- logger.debug("ElectricSQL collection stopped");
154
- }
155
- }
156
- }
157
- exports.RunnerMessagesCollection = RunnerMessagesCollection;
158
- function createRunnerMessagesCollection(config, lastProcessedAt) {
159
- return new RunnerMessagesCollection(config, lastProcessedAt);
160
- }
161
- //# sourceMappingURL=runner-messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner-messages.js","sourceRoot":"","sources":["../../src/collections/runner-messages.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-manager.d.ts","sourceRoot":"","sources":["../../src/components/claude-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAM5E,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,iBAAiB,CAA4B;gBAGnD,MAAM,EAAE,UAAU,EAClB,iBAAiB,EAAE,yBAAyB;IAiB9C,OAAO,CAAC,sBAAsB;IAKxB,iBAAiB,CACrB,sBAAsB,EAAE,MAAM,GAAG,UAAU,EAC3C,oBAAoB,EAAE,MAAM,EAC5B,MAAM,EAAE,kBAAkB,EAC1B,eAAe,EAAE,OAAO,EAAE,EAC1B,gBAAgB,CAAC,EAAE;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB,EAAE,MAAM,CAAC;QAC3B,qBAAqB,EAAE,MAAM,CAAC;QAC9B,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;KACxB,GACA,OAAO,CAAC,mBAAmB,CAAC;IA6XzB,gBAAgB,CACpB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC;IAuBV,kBAAkB,CACtB,sBAAsB,EAAE,MAAM,GAAG,UAAU,EAC3C,oBAAoB,EAAE,MAAM,EAC5B,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,kBAAkB,EAC1B,gBAAgB,CAAC,EAAE,GAAG,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC;IAmCZ,eAAe,CACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,GAAG,EACZ,MAAM,CAAC,EAAE,kBAAkB,EAC3B,sBAAsB,CAAC,EAAE,MAAM,GAAG,UAAU,EAC5C,oBAAoB,CAAC,EAAE,MAAM,EAC7B,YAAY,CAAC,EAAE,GAAG,GACjB,OAAO,CAAC,IAAI,CAAC;YA8JF,iBAAiB;YA2BjB,wBAAwB;IA2BtC,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,eAAe;YA2CT,qBAAqB;CAmQpC"}