@rallycry/conveyor-agent 4.4.0 → 4.6.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.
package/dist/cli.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  AgentRunner,
4
4
  ProjectRunner
5
- } from "./chunk-FS3A4THO.js";
5
+ } from "./chunk-XG5DMOJX.js";
6
6
 
7
7
  // src/cli.ts
8
8
  async function bootstrapFromCodespace(apiUrl) {
@@ -18,6 +18,9 @@ async function bootstrapFromCodespace(apiUrl) {
18
18
  process.env.CONVEYOR_TASK_TOKEN = config.taskToken;
19
19
  process.env.CONVEYOR_AGENT_MODE = config.agentMode;
20
20
  process.env.CONVEYOR_IS_AUTO = config.isAuto;
21
+ if (config.pullBranch) {
22
+ process.env.CONVEYOR_PULL_BRANCH = config.pullBranch;
23
+ }
21
24
  for (const [key, value] of Object.entries(config.envVars ?? {})) {
22
25
  process.env[key] = value;
23
26
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n/* oxlint-disable no-console */\n\nimport { AgentRunner } from \"./runner/index.js\";\nimport { ProjectRunner } from \"./runner/index.js\";\nimport type { AgentEvent, AgentRunnerStatus, RunnerMode } from \"./types.js\";\n\nasync function bootstrapFromCodespace(apiUrl: string): Promise<void> {\n console.log(`[conveyor-agent] Bootstrapping from codespace ${process.env.CODESPACE_NAME}...`);\n const response = await fetch(`${apiUrl}/api/codespace/bootstrap/${process.env.CODESPACE_NAME}`);\n if (!response.ok) {\n const errorText = await response.text();\n console.error(`Bootstrap failed (${response.status}): ${errorText}`);\n process.exit(1);\n }\n const config = (await response.json()) as {\n taskId: string;\n taskToken: string;\n agentMode: string;\n isAuto: string;\n envVars: Record<string, string>;\n };\n process.env.CONVEYOR_TASK_ID = config.taskId;\n process.env.CONVEYOR_TASK_TOKEN = config.taskToken;\n process.env.CONVEYOR_AGENT_MODE = config.agentMode;\n process.env.CONVEYOR_IS_AUTO = config.isAuto;\n for (const [key, value] of Object.entries(config.envVars ?? {})) {\n process.env[key] = value;\n }\n console.log(`[conveyor-agent] Bootstrap complete, task ${config.taskId}`);\n}\n\nprocess.on(\"uncaughtException\", (err: NodeJS.ErrnoException) => {\n if (err.code === \"EPIPE\") return;\n console.error(\"Uncaught exception:\", err);\n process.exit(1);\n});\n\nconst CONVEYOR_API_URL = process.env.CONVEYOR_API_URL;\nconst CONVEYOR_PROJECT_TOKEN = process.env.CONVEYOR_PROJECT_TOKEN;\nconst CONVEYOR_PROJECT_ID = process.env.CONVEYOR_PROJECT_ID;\n\n// Project runner mode: connect once, auto-handle tasks\nif (CONVEYOR_PROJECT_TOKEN && CONVEYOR_PROJECT_ID) {\n if (!CONVEYOR_API_URL) {\n console.error(\"CONVEYOR_API_URL is required for project mode\");\n process.exit(1);\n }\n\n const projectRunner = new ProjectRunner({\n conveyorApiUrl: CONVEYOR_API_URL,\n projectToken: CONVEYOR_PROJECT_TOKEN,\n projectId: CONVEYOR_PROJECT_ID,\n projectDir: process.env.CONVEYOR_WORKSPACE ?? process.cwd(),\n });\n\n projectRunner.start().catch((error: unknown) => {\n console.error(\"Project runner failed:\", error);\n process.exit(1);\n });\n} else {\n // Codespace bootstrap: fetch task config from API using codespace name\n if (process.env.CODESPACE_NAME && !process.env.CONVEYOR_TASK_TOKEN) {\n if (!CONVEYOR_API_URL) {\n console.error(\"CONVEYOR_API_URL is required for codespace bootstrap\");\n process.exit(1);\n }\n await bootstrapFromCodespace(CONVEYOR_API_URL);\n }\n\n // Standard per-task agent mode\n const CONVEYOR_TASK_TOKEN = process.env.CONVEYOR_TASK_TOKEN;\n const CONVEYOR_TASK_ID = process.env.CONVEYOR_TASK_ID;\n const CONVEYOR_MODEL = process.env.CONVEYOR_MODEL ?? \"claude-sonnet-4-20250514\";\n const CONVEYOR_INSTRUCTIONS = process.env.CONVEYOR_INSTRUCTIONS ?? \"\";\n const CONVEYOR_WORKSPACE = process.env.CONVEYOR_WORKSPACE ?? process.cwd();\n const CONVEYOR_MODE = (process.env.CONVEYOR_MODE ?? \"task\") as RunnerMode;\n const CONVEYOR_AGENT_MODE = process.env.CONVEYOR_AGENT_MODE || undefined;\n const CONVEYOR_IS_AUTO = CONVEYOR_AGENT_MODE\n ? CONVEYOR_AGENT_MODE === \"auto\"\n : process.env.CONVEYOR_IS_AUTO === \"true\";\n\n if (!CONVEYOR_API_URL || !CONVEYOR_TASK_TOKEN || !CONVEYOR_TASK_ID) {\n console.error(\"Missing required environment variables:\");\n console.error(\" CONVEYOR_API_URL - URL of the Conveyor API server\");\n console.error(\" CONVEYOR_TASK_TOKEN - JWT token for task authentication\");\n console.error(\" CONVEYOR_TASK_ID - ID of the task to execute\");\n console.error(\"\");\n console.error(\"Optional:\");\n console.error(\" CONVEYOR_MODE - Runner mode: 'task' (default) or 'pm'\");\n console.error(\" CONVEYOR_MODEL - Claude model to use\");\n console.error(\" CONVEYOR_WORKSPACE - Working directory (defaults to cwd)\");\n console.error(\"\");\n console.error(\"Project runner mode:\");\n console.error(\" CONVEYOR_PROJECT_TOKEN - Project token for project runner\");\n console.error(\" CONVEYOR_PROJECT_ID - Project ID for project runner\");\n process.exit(1);\n }\n\n if (CONVEYOR_MODE !== \"task\" && CONVEYOR_MODE !== \"pm\") {\n console.error(`Invalid CONVEYOR_MODE: \"${CONVEYOR_MODE}\". Must be \"task\" or \"pm\".`);\n process.exit(1);\n }\n\n console.log(`[conveyor-agent] Starting in ${CONVEYOR_MODE} mode`);\n\n const runner = new AgentRunner(\n {\n conveyorApiUrl: CONVEYOR_API_URL,\n taskToken: CONVEYOR_TASK_TOKEN,\n taskId: CONVEYOR_TASK_ID,\n model: CONVEYOR_MODEL,\n instructions: CONVEYOR_INSTRUCTIONS,\n workspaceDir: CONVEYOR_WORKSPACE,\n mode: CONVEYOR_MODE,\n isAuto: CONVEYOR_IS_AUTO,\n },\n {\n onEvent: (event: AgentEvent) => {\n const detail =\n \"message\" in event\n ? event.message\n : \"content\" in event\n ? event.content\n : \"summary\" in event\n ? event.summary\n : \"\";\n console.log(`[${event.type}] ${detail}`);\n },\n onStatusChange: (status: AgentRunnerStatus) => {\n console.log(`[status] ${status}`);\n },\n },\n );\n\n process.on(\"SIGTERM\", () => {\n console.log(\"Received SIGTERM, stopping agent...\");\n runner.stop();\n });\n\n process.on(\"SIGINT\", () => {\n console.log(\"Received SIGINT, stopping agent...\");\n runner.stop();\n });\n\n runner.start().catch((error: unknown) => {\n console.error(\"Agent runner failed:\", error);\n process.exit(1);\n });\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n/* oxlint-disable no-console */\n\nimport { AgentRunner } from \"./runner/index.js\";\nimport { ProjectRunner } from \"./runner/index.js\";\nimport type { AgentEvent, AgentRunnerStatus, RunnerMode } from \"./types.js\";\n\nasync function bootstrapFromCodespace(apiUrl: string): Promise<void> {\n console.log(`[conveyor-agent] Bootstrapping from codespace ${process.env.CODESPACE_NAME}...`);\n const response = await fetch(`${apiUrl}/api/codespace/bootstrap/${process.env.CODESPACE_NAME}`);\n if (!response.ok) {\n const errorText = await response.text();\n console.error(`Bootstrap failed (${response.status}): ${errorText}`);\n process.exit(1);\n }\n const config = (await response.json()) as {\n taskId: string;\n taskToken: string;\n agentMode: string;\n isAuto: string;\n pullBranch?: string;\n envVars: Record<string, string>;\n };\n process.env.CONVEYOR_TASK_ID = config.taskId;\n process.env.CONVEYOR_TASK_TOKEN = config.taskToken;\n process.env.CONVEYOR_AGENT_MODE = config.agentMode;\n process.env.CONVEYOR_IS_AUTO = config.isAuto;\n if (config.pullBranch) {\n process.env.CONVEYOR_PULL_BRANCH = config.pullBranch;\n }\n for (const [key, value] of Object.entries(config.envVars ?? {})) {\n process.env[key] = value;\n }\n console.log(`[conveyor-agent] Bootstrap complete, task ${config.taskId}`);\n}\n\nprocess.on(\"uncaughtException\", (err: NodeJS.ErrnoException) => {\n if (err.code === \"EPIPE\") return;\n console.error(\"Uncaught exception:\", err);\n process.exit(1);\n});\n\nconst CONVEYOR_API_URL = process.env.CONVEYOR_API_URL;\nconst CONVEYOR_PROJECT_TOKEN = process.env.CONVEYOR_PROJECT_TOKEN;\nconst CONVEYOR_PROJECT_ID = process.env.CONVEYOR_PROJECT_ID;\n\n// Project runner mode: connect once, auto-handle tasks\nif (CONVEYOR_PROJECT_TOKEN && CONVEYOR_PROJECT_ID) {\n if (!CONVEYOR_API_URL) {\n console.error(\"CONVEYOR_API_URL is required for project mode\");\n process.exit(1);\n }\n\n const projectRunner = new ProjectRunner({\n conveyorApiUrl: CONVEYOR_API_URL,\n projectToken: CONVEYOR_PROJECT_TOKEN,\n projectId: CONVEYOR_PROJECT_ID,\n projectDir: process.env.CONVEYOR_WORKSPACE ?? process.cwd(),\n });\n\n projectRunner.start().catch((error: unknown) => {\n console.error(\"Project runner failed:\", error);\n process.exit(1);\n });\n} else {\n // Codespace bootstrap: fetch task config from API using codespace name\n if (process.env.CODESPACE_NAME && !process.env.CONVEYOR_TASK_TOKEN) {\n if (!CONVEYOR_API_URL) {\n console.error(\"CONVEYOR_API_URL is required for codespace bootstrap\");\n process.exit(1);\n }\n await bootstrapFromCodespace(CONVEYOR_API_URL);\n }\n\n // Standard per-task agent mode\n const CONVEYOR_TASK_TOKEN = process.env.CONVEYOR_TASK_TOKEN;\n const CONVEYOR_TASK_ID = process.env.CONVEYOR_TASK_ID;\n const CONVEYOR_MODEL = process.env.CONVEYOR_MODEL ?? \"claude-sonnet-4-20250514\";\n const CONVEYOR_INSTRUCTIONS = process.env.CONVEYOR_INSTRUCTIONS ?? \"\";\n const CONVEYOR_WORKSPACE = process.env.CONVEYOR_WORKSPACE ?? process.cwd();\n const CONVEYOR_MODE = (process.env.CONVEYOR_MODE ?? \"task\") as RunnerMode;\n const CONVEYOR_AGENT_MODE = process.env.CONVEYOR_AGENT_MODE || undefined;\n const CONVEYOR_IS_AUTO = CONVEYOR_AGENT_MODE\n ? CONVEYOR_AGENT_MODE === \"auto\"\n : process.env.CONVEYOR_IS_AUTO === \"true\";\n\n if (!CONVEYOR_API_URL || !CONVEYOR_TASK_TOKEN || !CONVEYOR_TASK_ID) {\n console.error(\"Missing required environment variables:\");\n console.error(\" CONVEYOR_API_URL - URL of the Conveyor API server\");\n console.error(\" CONVEYOR_TASK_TOKEN - JWT token for task authentication\");\n console.error(\" CONVEYOR_TASK_ID - ID of the task to execute\");\n console.error(\"\");\n console.error(\"Optional:\");\n console.error(\" CONVEYOR_MODE - Runner mode: 'task' (default) or 'pm'\");\n console.error(\" CONVEYOR_MODEL - Claude model to use\");\n console.error(\" CONVEYOR_WORKSPACE - Working directory (defaults to cwd)\");\n console.error(\"\");\n console.error(\"Project runner mode:\");\n console.error(\" CONVEYOR_PROJECT_TOKEN - Project token for project runner\");\n console.error(\" CONVEYOR_PROJECT_ID - Project ID for project runner\");\n process.exit(1);\n }\n\n if (CONVEYOR_MODE !== \"task\" && CONVEYOR_MODE !== \"pm\") {\n console.error(`Invalid CONVEYOR_MODE: \"${CONVEYOR_MODE}\". Must be \"task\" or \"pm\".`);\n process.exit(1);\n }\n\n console.log(`[conveyor-agent] Starting in ${CONVEYOR_MODE} mode`);\n\n const runner = new AgentRunner(\n {\n conveyorApiUrl: CONVEYOR_API_URL,\n taskToken: CONVEYOR_TASK_TOKEN,\n taskId: CONVEYOR_TASK_ID,\n model: CONVEYOR_MODEL,\n instructions: CONVEYOR_INSTRUCTIONS,\n workspaceDir: CONVEYOR_WORKSPACE,\n mode: CONVEYOR_MODE,\n isAuto: CONVEYOR_IS_AUTO,\n },\n {\n onEvent: (event: AgentEvent) => {\n const detail =\n \"message\" in event\n ? event.message\n : \"content\" in event\n ? event.content\n : \"summary\" in event\n ? event.summary\n : \"\";\n console.log(`[${event.type}] ${detail}`);\n },\n onStatusChange: (status: AgentRunnerStatus) => {\n console.log(`[status] ${status}`);\n },\n },\n );\n\n process.on(\"SIGTERM\", () => {\n console.log(\"Received SIGTERM, stopping agent...\");\n runner.stop();\n });\n\n process.on(\"SIGINT\", () => {\n console.log(\"Received SIGINT, stopping agent...\");\n runner.stop();\n });\n\n runner.start().catch((error: unknown) => {\n console.error(\"Agent runner failed:\", error);\n process.exit(1);\n });\n}\n"],"mappings":"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","names":[]}
package/dist/index.d.ts CHANGED
@@ -26,6 +26,7 @@ declare class AgentRunner {
26
26
  private callbacks;
27
27
  private _state;
28
28
  private stopped;
29
+ private interrupted;
29
30
  private inputResolver;
30
31
  private pendingMessages;
31
32
  private setupLog;
@@ -43,6 +44,7 @@ declare class AgentRunner {
43
44
  private idleTimer;
44
45
  private idleCheckInterval;
45
46
  private deferredStartConfig;
47
+ private _queryHost;
46
48
  constructor(config: AgentRunnerConfig, callbacks: AgentRunnerCallbacks);
47
49
  get state(): AgentRunnerStatus;
48
50
  private get effectiveAgentMode();
@@ -67,6 +69,7 @@ declare class AgentRunner {
67
69
  createInputStream(initialPrompt: string | MultimodalBlock[]): AsyncGenerator<SDKUserMessage, void, unknown>;
68
70
  private asQueryHost;
69
71
  private handleModeChange;
72
+ softStop(): void;
70
73
  stop(): void;
71
74
  }
72
75
 
@@ -98,9 +101,11 @@ declare class ConveyorConnection {
98
101
  private static readonly EVENT_BATCH_MS;
99
102
  private earlyMessages;
100
103
  private earlyStop;
104
+ private earlySoftStop;
101
105
  private earlyModeChanges;
102
106
  private chatMessageCallback;
103
107
  private stopCallback;
108
+ private softStopCallback;
104
109
  private modeChangeCallback;
105
110
  private runStartCommandCallback;
106
111
  private pendingQuestionResolvers;
@@ -131,6 +136,7 @@ declare class ConveyorConnection {
131
136
  }): void;
132
137
  onChatMessage(callback: (message: IncomingMessagePayload) => void): void;
133
138
  onStopRequested(callback: () => void): void;
139
+ onSoftStopRequested(callback: () => void): void;
134
140
  onModeChange(callback: (data: SetModePayload) => void): void;
135
141
  onRunStartCommand(callback: () => void): void;
136
142
  emitModeChanged(agentMode?: AgentMode | null): void;
@@ -149,6 +155,7 @@ declare class ConveyorConnection {
149
155
  }[];
150
156
  }): void;
151
157
  emitStatus(status: string): void;
158
+ emitRateLimitPause(resetsAt: string): void;
152
159
  sendHeartbeat(): void;
153
160
  sendTypingStart(): void;
154
161
  sendTypingStop(): void;
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  removeWorktree,
10
10
  runSetupCommand,
11
11
  runStartCommand
12
- } from "./chunk-FS3A4THO.js";
12
+ } from "./chunk-XG5DMOJX.js";
13
13
  export {
14
14
  AgentRunner,
15
15
  ConveyorConnection,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rallycry/conveyor-agent",
3
- "version": "4.4.0",
3
+ "version": "4.6.0",
4
4
  "description": "Conveyor cloud build agent runner - executes task plans inside GitHub Codespaces",
5
5
  "keywords": [
6
6
  "agent",