@antistud/handrails-cli 0.1.7 → 0.1.9

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.
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerRigCommand = registerRigCommand;
4
+ const path_1 = require("path");
4
5
  const config_1 = require("../../config");
5
6
  const runner_1 = require("../../runner");
7
+ const preflight_1 = require("../../runner/preflight");
8
+ const version_1 = require("../../version");
6
9
  const VALID_RIG_TYPES = ['claude-code', 'opencode', 'codex'];
7
10
  function registerRigCommand(program) {
8
11
  program
@@ -12,7 +15,8 @@ function registerRigCommand(program) {
12
15
  .option('--rig-key <key>', 'Rig key (from dashboard)')
13
16
  .option('--rig-type <type>', `CLI executor to use (${VALID_RIG_TYPES.join(', ')})`)
14
17
  .option('--project <path>', 'Project directory (default: current directory)', '.')
15
- .option('--interval <ms>', 'Heartbeat interval in milliseconds', '10000')
18
+ .option('--interval <ms>', 'Heartbeat interval in milliseconds (overrides server config)')
19
+ .option('--skip-preflight', 'Skip preflight checks')
16
20
  .action(async (options) => {
17
21
  const rigKey = options.rigKey || process.env.HANDRAILS_RIG_KEY;
18
22
  if (!rigKey && !(0, config_1.isAuthenticated)()) {
@@ -27,20 +31,30 @@ function registerRigCommand(program) {
27
31
  const config = (0, config_1.loadConfig)();
28
32
  const apiUrl = options.apiUrl || process.env.HANDRAILS_API_URL || config.apiUrl;
29
33
  const key = rigKey || config.apiKey;
34
+ const projectPath = (0, path_1.resolve)(options.project);
30
35
  console.log('');
31
- console.log(' Handrails Rig');
36
+ console.log(` Handrails Rig v${(0, version_1.getVersion)()}`);
32
37
  console.log(' ============');
33
38
  console.log(' "Agents think. Rigs act. Harness keeps everything on track."');
34
39
  console.log('');
35
- console.log(` Server: ${apiUrl}`);
36
- console.log(` Type: ${rigType || '(from server config)'}`);
37
- console.log(` Project: ${options.project}`);
38
- console.log('');
40
+ // Run preflight checks
41
+ if (!options.skipPreflight) {
42
+ const preflight = await (0, preflight_1.runPreflight)({
43
+ apiUrl,
44
+ rigKey: key,
45
+ projectPath,
46
+ rigType,
47
+ });
48
+ if (!preflight.ok) {
49
+ process.exit(1);
50
+ }
51
+ console.log('');
52
+ }
39
53
  const rig = new runner_1.AgentRig({
40
54
  apiUrl,
41
55
  rigKey: key,
42
- projectPath: options.project,
43
- heartbeatInterval: parseInt(options.interval),
56
+ projectPath,
57
+ heartbeatInterval: options.interval ? parseInt(options.interval) : undefined,
44
58
  rigType,
45
59
  });
46
60
  await rig.start();
@@ -1 +1 @@
1
- {"version":3,"file":"rig.js","sourceRoot":"","sources":["../../../../src/cli/commands/rig.ts"],"names":[],"mappings":";;AAOA,gDA8CC;AApDD,yCAA2D;AAC3D,yCAAwC;AAGxC,MAAM,eAAe,GAAc,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAExE,SAAgB,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,sEAAsE,CAAC;SACnF,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;SACrD,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SAClF,MAAM,CAAC,kBAAkB,EAAE,gDAAgD,EAAE,GAAG,CAAC;SACjF,MAAM,CAAC,iBAAiB,EAAE,oCAAoC,EAAE,OAAO,CAAC;SACxE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC/D,IAAI,CAAC,MAAM,IAAI,CAAC,IAAA,wBAAe,GAAE,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,6FAA6F,CAAC,CAAC;YAC7G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAwB,OAAO,CAAC,OAAO,CAAC;QACrD,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,uBAAuB,OAAO,sBAAsB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC;QAChF,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;QAEpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,IAAI,sBAAsB,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,GAAG,GAAG,IAAI,iBAAQ,CAAC;YACvB,MAAM;YACN,MAAM,EAAE,GAAG;YACX,WAAW,EAAE,OAAO,CAAC,OAAO;YAC5B,iBAAiB,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC7C,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"rig.js","sourceRoot":"","sources":["../../../../src/cli/commands/rig.ts"],"names":[],"mappings":"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"}
@@ -11,12 +11,13 @@ const daemon_1 = require("./commands/daemon");
11
11
  const rig_1 = require("./commands/rig");
12
12
  const sync_1 = require("./commands/sync");
13
13
  const server_1 = require("../mcp/server");
14
+ const version_1 = require("../version");
14
15
  function createProgram() {
15
16
  const program = new commander_1.Command();
16
17
  program
17
18
  .name('handrails')
18
19
  .description('Power tools for Claude Code — team memory, context sync, and session intelligence')
19
- .version('0.1.0');
20
+ .version((0, version_1.getVersion)());
20
21
  // Register all commands
21
22
  (0, login_1.registerLoginCommand)(program);
22
23
  (0, init_1.registerInitCommand)(program);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":";;AAWA,sCAwDC;AAnED,yCAAoC;AACpC,4CAAwD;AACxD,0CAAsD;AACtD,8CAA0D;AAC1D,gDAA4D;AAC5D,8CAA0D;AAC1D,8CAA0D;AAC1D,wCAAoD;AACpD,0CAAsD;AACtD,0CAAqD;AAErD,SAAgB,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,WAAW,CAAC;SACjB,WAAW,CAAC,mFAAmF,CAAC;SAChG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,wBAAwB;IACxB,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;IAC9B,IAAA,0BAAmB,EAAC,OAAO,CAAC,CAAC;IAC7B,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;IAC/B,IAAA,gCAAsB,EAAC,OAAO,CAAC,CAAC;IAChC,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;IAC/B,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;IAC/B,IAAA,wBAAkB,EAAC,OAAO,CAAC,CAAC;IAC5B,IAAA,0BAAmB,EAAC,OAAO,CAAC,CAAC;IAE7B,uCAAuC;IACvC,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,sEAAsE,CAAC;SACnF,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,IAAI,6BAAoB,EAAE,CAAC;QAC1C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEL,wDAAwD;IACxD,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,mBAAmB,EAAE,YAAY,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,+CAA+C;QAC/C,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;QAEhE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;YACpC,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;SAC3B,CAAC;QAEF,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":";;AAYA,sCAwDC;AApED,yCAAoC;AACpC,4CAAwD;AACxD,0CAAsD;AACtD,8CAA0D;AAC1D,gDAA4D;AAC5D,8CAA0D;AAC1D,8CAA0D;AAC1D,wCAAoD;AACpD,0CAAsD;AACtD,0CAAqD;AACrD,wCAAwC;AAExC,SAAgB,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,WAAW,CAAC;SACjB,WAAW,CAAC,mFAAmF,CAAC;SAChG,OAAO,CAAC,IAAA,oBAAU,GAAE,CAAC,CAAC;IAEzB,wBAAwB;IACxB,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;IAC9B,IAAA,0BAAmB,EAAC,OAAO,CAAC,CAAC;IAC7B,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;IAC/B,IAAA,gCAAsB,EAAC,OAAO,CAAC,CAAC;IAChC,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;IAC/B,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;IAC/B,IAAA,wBAAkB,EAAC,OAAO,CAAC,CAAC;IAC5B,IAAA,0BAAmB,EAAC,OAAO,CAAC,CAAC;IAE7B,uCAAuC;IACvC,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,sEAAsE,CAAC;SACnF,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,IAAI,6BAAoB,EAAE,CAAC;QAC1C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEL,wDAAwD;IACxD,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,mBAAmB,EAAE,YAAY,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,+CAA+C;QAC/C,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;QAEhE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;YACpC,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;SAC3B,CAAC;QAEF,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -3,5 +3,7 @@ import type { ExecutorInput, ExecutorResult } from './types';
3
3
  * Execute a task using the locally installed Claude Code CLI.
4
4
  *
5
5
  * Spawns `claude` with streaming JSON output so we can follow along in real-time.
6
+ * MCP servers (handrails, playwright, etc.) are configured via .mcp.json in the project dir,
7
+ * set up by the preflight step — no per-task injection needed.
6
8
  */
7
9
  export declare function executeWithClaudeCode(input: ExecutorInput): Promise<ExecutorResult>;
@@ -2,19 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.executeWithClaudeCode = executeWithClaudeCode;
4
4
  const child_process_1 = require("child_process");
5
- const fs_1 = require("fs");
6
- const path_1 = require("path");
7
- const os_1 = require("os");
8
5
  const types_1 = require("./types");
9
6
  const logger_1 = require("../logger");
10
7
  /**
11
8
  * Execute a task using the locally installed Claude Code CLI.
12
9
  *
13
10
  * Spawns `claude` with streaming JSON output so we can follow along in real-time.
11
+ * MCP servers (handrails, playwright, etc.) are configured via .mcp.json in the project dir,
12
+ * set up by the preflight step — no per-task injection needed.
14
13
  */
15
14
  async function executeWithClaudeCode(input) {
16
15
  const prompt = (0, types_1.buildPrompt)(input);
17
- let mcpConfigPath = null;
18
16
  return new Promise((resolve) => {
19
17
  const chunks = [];
20
18
  let stderr = '';
@@ -30,34 +28,6 @@ async function executeWithClaudeCode(input) {
30
28
  if (input.allowedTools) {
31
29
  args.push('--allowedTools', input.allowedTools.join(','));
32
30
  }
33
- // Generate MCP config so claude can call handrails tools via stdio proxy
34
- if (input.apiUrl && input.apiKey) {
35
- try {
36
- // Resolve the handrails CLI: __dirname is dist/runner/executors, go up 3 to package root
37
- const cliDistPath = (0, path_1.join)(__dirname, '..', '..', 'bin', 'handrails.js');
38
- const mcpConfig = {
39
- mcpServers: {
40
- handrails: {
41
- command: "node",
42
- args: [cliDistPath, "serve"],
43
- env: {
44
- HANDRAILS_API_KEY: input.apiKey,
45
- HANDRAILS_API_URL: input.apiUrl,
46
- },
47
- },
48
- },
49
- };
50
- const tmpDir = (0, fs_1.mkdtempSync)((0, path_1.join)((0, os_1.tmpdir)(), 'handrails-rig-'));
51
- mcpConfigPath = (0, path_1.join)(tmpDir, 'mcp-config.json');
52
- (0, fs_1.writeFileSync)(mcpConfigPath, JSON.stringify(mcpConfig, null, 2));
53
- args.push('--mcp-config', mcpConfigPath);
54
- logger_1.logger.info(`MCP config: ${mcpConfigPath} (stdio via @handrails/cli serve)`);
55
- logger_1.logger.debug(`MCP API URL: ${input.apiUrl}`);
56
- }
57
- catch (err) {
58
- logger_1.logger.warn(`Failed to create MCP config: ${err.message}`);
59
- }
60
- }
61
31
  logger_1.logger.tool(`Spawning: claude -p ... --output-format stream-json --verbose --dangerously-skip-permissions`);
62
32
  logger_1.logger.debug(`Allowed tools: ${input.allowedTools ? input.allowedTools.join(', ') : 'all (unrestricted)'}`);
63
33
  logger_1.logger.debug(`Prompt length: ${prompt.length} chars`);
@@ -105,14 +75,6 @@ async function executeWithClaudeCode(input) {
105
75
  logger_1.logger.debug(`stderr: ${line}`);
106
76
  }
107
77
  });
108
- const cleanup = () => {
109
- if (mcpConfigPath) {
110
- try {
111
- (0, fs_1.unlinkSync)(mcpConfigPath);
112
- }
113
- catch { /* ignore */ }
114
- }
115
- };
116
78
  child.on('close', (code) => {
117
79
  // Process any remaining buffer
118
80
  if (lineBuf.trim()) {
@@ -127,7 +89,6 @@ async function executeWithClaudeCode(input) {
127
89
  }
128
90
  catch { /* ignore */ }
129
91
  }
130
- cleanup();
131
92
  logger_1.logger.divider();
132
93
  logger_1.logger.info(`Process exited with code ${code}`);
133
94
  const output = finalResult || chunks.join('');
@@ -143,7 +104,6 @@ async function executeWithClaudeCode(input) {
143
104
  }
144
105
  });
145
106
  child.on('error', (err) => {
146
- cleanup();
147
107
  logger_1.logger.error(`Failed to spawn process: ${err.message}`);
148
108
  resolve({
149
109
  status: 'failed',
@@ -168,9 +128,8 @@ function logStreamEvent(event) {
168
128
  if (msg.type === 'text' || typeof msg.content === 'string') {
169
129
  const text = msg.content || msg.text || '';
170
130
  if (text) {
171
- // Show assistant text output
172
131
  for (const line of text.split('\n')) {
173
- console.log(` 💬 ${line}`);
132
+ console.log(` ${line}`);
174
133
  }
175
134
  }
176
135
  }
@@ -193,7 +152,7 @@ function logStreamEvent(event) {
193
152
  const outputStr = typeof output === 'string' ? output : JSON.stringify(output);
194
153
  const preview = outputStr.length > 300 ? outputStr.substring(0, 300) + '...' : outputStr;
195
154
  if (toolName) {
196
- logger_1.logger.tool(`${toolName} ${preview}`);
155
+ logger_1.logger.tool(`${toolName} -> ${preview}`);
197
156
  }
198
157
  else {
199
158
  logger_1.logger.debug(`tool result: ${preview}`);
@@ -203,7 +162,7 @@ function logStreamEvent(event) {
203
162
  case 'content_block_start': {
204
163
  const block = event.content_block;
205
164
  if (block?.type === 'tool_use') {
206
- logger_1.logger.tool(`▶ ${block.name || 'tool'}`);
165
+ logger_1.logger.tool(`>> ${block.name || 'tool'}`);
207
166
  }
208
167
  break;
209
168
  }
@@ -212,13 +171,9 @@ function logStreamEvent(event) {
212
171
  if (delta?.type === 'text_delta' && delta.text) {
213
172
  process.stdout.write(delta.text);
214
173
  }
215
- else if (delta?.type === 'input_json_delta' && delta.partial_json) {
216
- // Tool input streaming - show periodically
217
- }
218
174
  break;
219
175
  }
220
176
  case 'content_block_stop':
221
- // Block finished
222
177
  break;
223
178
  case 'message_start':
224
179
  logger_1.logger.debug('Agent thinking...');
@@ -237,7 +192,6 @@ function logStreamEvent(event) {
237
192
  logger_1.logger.error(`${event.error?.message || event.message || JSON.stringify(event)}`);
238
193
  break;
239
194
  default:
240
- // Log unknown event types for visibility
241
195
  if (event.type) {
242
196
  logger_1.logger.debug(`event: ${event.type} ${event.subtype || ''}`);
243
197
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../../src/runner/executors/claude-code.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../../src/runner/executors/claude-code.ts"],"names":[],"mappings":";;AAYA,sDAiHC;AA7HD,iDAAsC;AAEtC,mCAAsC;AACtC,sCAAmC;AAEnC;;;;;;GAMG;AACI,KAAK,UAAU,qBAAqB,CAAC,KAAoB;IAC9D,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,KAAK,CAAC,CAAC;IAElC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,MAAM,IAAI,GAAa;YACrB,IAAI,EAAE,MAAM;YACZ,iBAAiB,EAAE,KAAK,CAAC,YAAY;YACrC,iBAAiB,EAAE,aAAa;YAChC,WAAW;YACX,gCAAgC;SACjC,CAAC;QAEF,8CAA8C;QAC9C,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,eAAM,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;QAC5G,eAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC5G,eAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;QACtD,eAAM,CAAC,KAAK,CAAC,yBAAyB,KAAK,CAAC,YAAY,CAAC,MAAM,QAAQ,CAAC,CAAC;QACzE,eAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,QAAQ,EAAE,IAAI,EAAE;YAClC,GAAG,EAAE,KAAK,CAAC,WAAW;YACtB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;YACvB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,eAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAElD,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAElB,2CAA2C;YAC3C,OAAO,IAAI,IAAI,CAAC;YAChB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAE5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE,SAAS;gBAC3B,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/B,cAAc,CAAC,KAAK,CAAC,CAAC;oBAEtB,gCAAgC;oBAChC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBAC5C,WAAW,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;4BAC5C,CAAC,CAAC,KAAK,CAAC,MAAM;4BACd,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,oBAAoB;oBACpB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;wBAChB,eAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,IAAI,CAAC;YACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,eAAM,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,+BAA+B;YAC/B,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnB,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAClC,cAAc,CAAC,KAAK,CAAC,CAAC;oBACtB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBAC5C,WAAW,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;4BAC5C,CAAC,CAAC,KAAK,CAAC,MAAM;4BACd,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAC1B,CAAC;YAED,eAAM,CAAC,OAAO,EAAE,CAAC;YACjB,eAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;YAEhD,MAAM,MAAM,GAAG,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC;oBACN,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;oBACrB,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,gCAAgC,IAAI,EAAE;iBAC/D,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,eAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC;gBACN,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,gCAAgC,GAAG,CAAC,OAAO,sCAAsC;aACzF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAU;IAChC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,eAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvF,MAAM;QAER,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;YAC1B,IAAI,CAAC,GAAG;gBAAE,MAAM;YAEhB,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC3C,IAAI,IAAI,EAAE,CAAC;oBACT,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBACpC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC;gBACxD,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,KAAK,CAAC;gBAC9C,eAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC;gBAC3B,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,QAAQ,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;oBACvF,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;oBACtF,eAAM,CAAC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;YACnE,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC/E,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YACzF,IAAI,QAAQ,EAAE,CAAC;gBACb,eAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,OAAO,OAAO,EAAE,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,eAAM,CAAC,KAAK,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;YAC1C,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC;YAClC,IAAI,KAAK,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,eAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,oBAAoB;YACvB,MAAM;QAER,KAAK,eAAe;YAClB,eAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAClC,MAAM;QAER,KAAK,eAAe;YAClB,IAAI,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;gBAC7B,eAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1D,CAAC;YACD,MAAM;QAER,KAAK,cAAc;YACjB,MAAM;QAER,KAAK,QAAQ;YACX,eAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAChC,MAAM;QAER,KAAK,OAAO;YACV,eAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClF,MAAM;QAER;YACE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM;IACV,CAAC;AACH,CAAC"}
@@ -1,9 +1,22 @@
1
1
  import type { ExecutorInput, ExecutorResult } from './types';
2
2
  /**
3
- * Execute a task using OpenCode CLI.
3
+ * Execute a task using the OpenCode CLI (anomalyco/opencode).
4
4
  *
5
5
  * OpenCode is an open-source terminal AI assistant.
6
- * Spawns `opencode` with the task prompt in non-interactive mode.
7
6
  * https://opencode.ai
7
+ *
8
+ * CLI reference (from `opencode run --help`):
9
+ * opencode run [message..] --format json --dangerously-skip-permissions --file <path>
10
+ *
11
+ * Key notes:
12
+ * - Message is a positional arg (not a flag)
13
+ * - No --system flag — system prompt must go into a file attachment
14
+ * - --file attaches file(s) as context alongside the message
15
+ * - --format json gives JSONL streaming events
16
+ * - --dangerously-skip-permissions auto-approves all tool use
17
+ *
18
+ * Because the combined system prompt + task can be thousands of chars with
19
+ * newlines and special characters, we write it to a temp file and pass it
20
+ * via --file to avoid argument parsing issues with yargs.
8
21
  */
9
22
  export declare function executeWithOpenCode(input: ExecutorInput): Promise<ExecutorResult>;
@@ -2,28 +2,52 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.executeWithOpenCode = executeWithOpenCode;
4
4
  const child_process_1 = require("child_process");
5
+ const fs_1 = require("fs");
6
+ const path_1 = require("path");
7
+ const os_1 = require("os");
5
8
  const types_1 = require("./types");
6
9
  const logger_1 = require("../logger");
7
10
  /**
8
- * Execute a task using OpenCode CLI.
11
+ * Execute a task using the OpenCode CLI (anomalyco/opencode).
9
12
  *
10
13
  * OpenCode is an open-source terminal AI assistant.
11
- * Spawns `opencode` with the task prompt in non-interactive mode.
12
14
  * https://opencode.ai
15
+ *
16
+ * CLI reference (from `opencode run --help`):
17
+ * opencode run [message..] --format json --dangerously-skip-permissions --file <path>
18
+ *
19
+ * Key notes:
20
+ * - Message is a positional arg (not a flag)
21
+ * - No --system flag — system prompt must go into a file attachment
22
+ * - --file attaches file(s) as context alongside the message
23
+ * - --format json gives JSONL streaming events
24
+ * - --dangerously-skip-permissions auto-approves all tool use
25
+ *
26
+ * Because the combined system prompt + task can be thousands of chars with
27
+ * newlines and special characters, we write it to a temp file and pass it
28
+ * via --file to avoid argument parsing issues with yargs.
13
29
  */
14
30
  async function executeWithOpenCode(input) {
15
31
  const prompt = (0, types_1.buildPrompt)(input);
16
- // Prepend system prompt context into the prompt since opencode
17
- // doesn't have a separate --system-prompt flag
18
- const fullPrompt = `${input.systemPrompt}\n\n---\n\n${prompt}`;
32
+ // Write the full context (system prompt + task) to a temp file
33
+ // because opencode's yargs parser can't handle multi-line positional args
34
+ const fullContext = `# System Prompt\n\n${input.systemPrompt}\n\n---\n\n# Task\n\n${prompt}`;
35
+ const promptFile = (0, path_1.join)((0, os_1.tmpdir)(), `handrails-task-${process.pid}-${Date.now()}.md`);
36
+ (0, fs_1.writeFileSync)(promptFile, fullContext);
19
37
  return new Promise((resolve) => {
20
38
  const chunks = [];
21
39
  let stderr = '';
40
+ let finalOutput = '';
41
+ // Short positional message + attach the full prompt as a file
22
42
  const args = [
23
43
  'run',
24
- '--prompt', fullPrompt,
44
+ '--format', 'json',
45
+ '--dangerously-skip-permissions',
46
+ '--file', promptFile,
47
+ '--', 'Complete the task described in the attached file. Follow the system prompt instructions.',
25
48
  ];
26
- logger_1.logger.tool(`Spawning: opencode run --prompt "<${fullPrompt.length} chars>"`);
49
+ logger_1.logger.tool(`Spawning: opencode run --format json --dangerously-skip-permissions --file <prompt.md>`);
50
+ logger_1.logger.debug(`Prompt file: ${promptFile} (${fullContext.length} chars)`);
27
51
  logger_1.logger.divider();
28
52
  const child = (0, child_process_1.spawn)('opencode', args, {
29
53
  cwd: input.projectPath,
@@ -31,10 +55,38 @@ async function executeWithOpenCode(input) {
31
55
  stdio: ['pipe', 'pipe', 'pipe'],
32
56
  });
33
57
  logger_1.logger.debug(`Process spawned: PID ${child.pid}`);
58
+ let lineBuf = '';
34
59
  child.stdout.on('data', (data) => {
35
60
  const text = data.toString();
36
61
  chunks.push(text);
37
- process.stdout.write(text);
62
+ // Parse streaming JSON events line by line
63
+ lineBuf += text;
64
+ const lines = lineBuf.split('\n');
65
+ lineBuf = lines.pop() || '';
66
+ for (const line of lines) {
67
+ if (!line.trim())
68
+ continue;
69
+ try {
70
+ const event = JSON.parse(line);
71
+ logOpenCodeEvent(event);
72
+ // Capture final output from step_finish or result events
73
+ if (event.type === 'step_finish' && event.output) {
74
+ finalOutput = typeof event.output === 'string'
75
+ ? event.output
76
+ : JSON.stringify(event.output);
77
+ }
78
+ if (event.type === 'result' && event.result) {
79
+ finalOutput = typeof event.result === 'string'
80
+ ? event.result
81
+ : JSON.stringify(event.result);
82
+ }
83
+ }
84
+ catch {
85
+ if (line.trim()) {
86
+ logger_1.logger.debug(`raw: ${line.trim()}`);
87
+ }
88
+ }
89
+ }
38
90
  });
39
91
  child.stderr.on('data', (data) => {
40
92
  const text = data.toString();
@@ -44,9 +96,32 @@ async function executeWithOpenCode(input) {
44
96
  }
45
97
  });
46
98
  child.on('close', (code) => {
99
+ // Clean up temp file
100
+ try {
101
+ (0, fs_1.unlinkSync)(promptFile);
102
+ }
103
+ catch { /* ignore */ }
104
+ // Process any remaining buffer
105
+ if (lineBuf.trim()) {
106
+ try {
107
+ const event = JSON.parse(lineBuf);
108
+ logOpenCodeEvent(event);
109
+ if (event.type === 'step_finish' && event.output) {
110
+ finalOutput = typeof event.output === 'string'
111
+ ? event.output
112
+ : JSON.stringify(event.output);
113
+ }
114
+ if (event.type === 'result' && event.result) {
115
+ finalOutput = typeof event.result === 'string'
116
+ ? event.result
117
+ : JSON.stringify(event.result);
118
+ }
119
+ }
120
+ catch { /* ignore */ }
121
+ }
47
122
  logger_1.logger.divider();
48
123
  logger_1.logger.info(`Process exited with code ${code}`);
49
- const output = chunks.join('');
124
+ const output = finalOutput || chunks.join('');
50
125
  if (code === 0) {
51
126
  resolve({ status: 'completed', output: output.trim() });
52
127
  }
@@ -59,13 +134,82 @@ async function executeWithOpenCode(input) {
59
134
  }
60
135
  });
61
136
  child.on('error', (err) => {
137
+ // Clean up temp file on error too
138
+ try {
139
+ (0, fs_1.unlinkSync)(promptFile);
140
+ }
141
+ catch { /* ignore */ }
62
142
  logger_1.logger.error(`Failed to spawn process: ${err.message}`);
63
143
  resolve({
64
144
  status: 'failed',
65
145
  output: '',
66
- error: `Failed to spawn OpenCode: ${err.message}. Is 'opencode' installed and in PATH?`,
146
+ error: `Failed to spawn OpenCode: ${err.message}. Is 'opencode' installed? Install: curl -fsSL https://opencode.ai/install | bash`,
67
147
  });
68
148
  });
69
149
  });
70
150
  }
151
+ /**
152
+ * Log an OpenCode streaming JSON event in a human-readable way.
153
+ */
154
+ function logOpenCodeEvent(event) {
155
+ const type = event.type || '';
156
+ if (type === 'step_start') {
157
+ logger_1.logger.debug('Agent thinking...');
158
+ return;
159
+ }
160
+ if (type === 'step_finish') {
161
+ const cost = event.cost ? ` ($${event.cost.toFixed(4)})` : '';
162
+ const tokens = event.tokens ? ` [${event.tokens.input || 0}→${event.tokens.output || 0} tokens]` : '';
163
+ logger_1.logger.debug(`Step finished: ${event.reason || 'done'}${tokens}${cost}`);
164
+ return;
165
+ }
166
+ if (type === 'message.part.updated') {
167
+ if (event.part?.type === 'thinking' || event.part?.type === 'reasoning') {
168
+ return;
169
+ }
170
+ if (event.part?.type === 'text' && event.part?.content) {
171
+ for (const line of event.part.content.split('\n')) {
172
+ console.log(` ${line}`);
173
+ }
174
+ }
175
+ return;
176
+ }
177
+ if (type === 'tool_use' || event.tool_name || event.name) {
178
+ const toolName = event.tool_name || event.name || 'tool';
179
+ const state = event.state || '';
180
+ if (state === 'running' || !state) {
181
+ logger_1.logger.tool(`${toolName}`);
182
+ }
183
+ else if (state === 'completed') {
184
+ logger_1.logger.debug(`${toolName} completed`);
185
+ }
186
+ else if (state === 'error') {
187
+ logger_1.logger.error(`${toolName} failed: ${event.error || ''}`);
188
+ }
189
+ if (event.input) {
190
+ const inputStr = typeof event.input === 'string' ? event.input : JSON.stringify(event.input);
191
+ const preview = inputStr.length > 200 ? inputStr.substring(0, 200) + '...' : inputStr;
192
+ logger_1.logger.debug(` input: ${preview}`);
193
+ }
194
+ return;
195
+ }
196
+ if (type === 'tool_result' || type === 'tool_output') {
197
+ const output = event.output || event.content || event.result || '';
198
+ const outputStr = typeof output === 'string' ? output : JSON.stringify(output);
199
+ const preview = outputStr.length > 300 ? outputStr.substring(0, 300) + '...' : outputStr;
200
+ logger_1.logger.debug(`tool result: ${preview}`);
201
+ return;
202
+ }
203
+ if (type === 'error') {
204
+ logger_1.logger.error(`${event.error?.message || event.message || JSON.stringify(event)}`);
205
+ return;
206
+ }
207
+ if (type === 'result') {
208
+ logger_1.logger.success('Task complete');
209
+ return;
210
+ }
211
+ if (type) {
212
+ logger_1.logger.debug(`event: ${type}`);
213
+ }
214
+ }
71
215
  //# sourceMappingURL=opencode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../../src/runner/executors/opencode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../../src/runner/executors/opencode.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,6 @@ export interface ExecutorInput {
9
9
  priorLearnings: string[];
10
10
  projectPath: string;
11
11
  allowedTools?: string[];
12
- apiUrl?: string;
13
- apiKey?: string;
14
12
  }
15
13
  export interface ExecutorResult {
16
14
  status: 'completed' | 'failed';
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/runner/executors/types.ts"],"names":[],"mappings":";;AAuBA,kCAuBC;AA3BD;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAoB;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IAEhD,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;IAE1G,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/runner/executors/types.ts"],"names":[],"mappings":";;AAqBA,kCAuBC;AA3BD;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAoB;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IAEhD,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;IAE1G,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -24,6 +24,7 @@ export declare class AgentRig {
24
24
  private currentSessionId;
25
25
  private rigType;
26
26
  private rigTypeOverride;
27
+ private heartbeatIntervalOverride;
27
28
  private heartbeatCount;
28
29
  constructor(options: RigOptions);
29
30
  start(): Promise<void>;
@@ -28,8 +28,9 @@ class AgentRig {
28
28
  this.heartbeatMs = options.heartbeatInterval || 10000;
29
29
  this.rigType = options.rigType || 'claude-code';
30
30
  this.rigTypeOverride = !!options.rigType;
31
+ this.heartbeatIntervalOverride = !!options.heartbeatInterval;
31
32
  this.http = axios_1.default.create({
32
- baseURL: options.apiUrl,
33
+ baseURL: options.apiUrl.replace(/\/+$/, ''),
33
34
  headers: { 'Content-Type': 'application/json' },
34
35
  timeout: 30000,
35
36
  });
@@ -53,6 +54,14 @@ class AgentRig {
53
54
  }
54
55
  async start() {
55
56
  this.running = true;
57
+ // Do an initial heartbeat to sync server-configured settings (heartbeat_interval, rig_type)
58
+ // before we log the startup banner — so the banner shows accurate values
59
+ try {
60
+ await this.heartbeat();
61
+ }
62
+ catch (err) {
63
+ logger_1.logger.debug(`Initial heartbeat: ${err.message}`);
64
+ }
56
65
  logger_1.logger.section('Rig Starting');
57
66
  logger_1.logger.info(`Rig ID: ${this.rigId}`);
58
67
  logger_1.logger.info(`Rig type: ${this.rigType}`);
@@ -96,6 +105,14 @@ class AgentRig {
96
105
  }
97
106
  this.rigType = response.data.rig_type;
98
107
  }
108
+ // Server sends heartbeat_interval (seconds) — adjust polling rate dynamically
109
+ if (response.data.heartbeat_interval && !this.heartbeatIntervalOverride) {
110
+ const serverIntervalMs = response.data.heartbeat_interval * 1000;
111
+ if (serverIntervalMs !== this.heartbeatMs) {
112
+ logger_1.logger.info(`Heartbeat interval updated by server: ${this.heartbeatMs / 1000}s → ${response.data.heartbeat_interval}s`);
113
+ this.heartbeatMs = serverIntervalMs;
114
+ }
115
+ }
99
116
  const task = response.data.task;
100
117
  if (!task)
101
118
  return;
@@ -159,8 +176,6 @@ class AgentRig {
159
176
  priorMessages: task.prior_messages,
160
177
  priorLearnings: task.prior_learnings,
161
178
  projectPath: this.projectPath,
162
- apiUrl: this.http.defaults.baseURL,
163
- apiKey: this.rigKey,
164
179
  });
165
180
  const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
166
181
  logger_1.logger.sectionEnd();