@rudderhq/agent-runtime-claude-local 0.1.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/LICENSE +14 -0
  2. package/dist/cli/format-event.d.ts +2 -0
  3. package/dist/cli/format-event.d.ts.map +1 -0
  4. package/dist/cli/format-event.js +94 -0
  5. package/dist/cli/format-event.js.map +1 -0
  6. package/dist/cli/index.d.ts +2 -0
  7. package/dist/cli/index.d.ts.map +1 -0
  8. package/dist/cli/index.js +2 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/cli/quota-probe.d.ts +3 -0
  11. package/dist/cli/quota-probe.d.ts.map +1 -0
  12. package/dist/cli/quota-probe.js +106 -0
  13. package/dist/cli/quota-probe.js.map +1 -0
  14. package/dist/index.d.ts +8 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +37 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/server/execute.d.ts +18 -0
  19. package/dist/server/execute.d.ts.map +1 -0
  20. package/dist/server/execute.js +578 -0
  21. package/dist/server/execute.js.map +1 -0
  22. package/dist/server/index.d.ts +8 -0
  23. package/dist/server/index.d.ts.map +1 -0
  24. package/dist/server/index.js +57 -0
  25. package/dist/server/index.js.map +1 -0
  26. package/dist/server/parse.d.ts +22 -0
  27. package/dist/server/parse.d.ts.map +1 -0
  28. package/dist/server/parse.js +158 -0
  29. package/dist/server/parse.js.map +1 -0
  30. package/dist/server/quota.d.ts +20 -0
  31. package/dist/server/quota.d.ts.map +1 -0
  32. package/dist/server/quota.js +477 -0
  33. package/dist/server/quota.js.map +1 -0
  34. package/dist/server/skills.d.ts +8 -0
  35. package/dist/server/skills.d.ts.map +1 -0
  36. package/dist/server/skills.js +102 -0
  37. package/dist/server/skills.js.map +1 -0
  38. package/dist/server/test.d.ts +3 -0
  39. package/dist/server/test.d.ts.map +1 -0
  40. package/dist/server/test.js +201 -0
  41. package/dist/server/test.js.map +1 -0
  42. package/dist/ui/build-config.d.ts +3 -0
  43. package/dist/ui/build-config.d.ts.map +1 -0
  44. package/dist/ui/build-config.js +115 -0
  45. package/dist/ui/build-config.js.map +1 -0
  46. package/dist/ui/index.d.ts +3 -0
  47. package/dist/ui/index.d.ts.map +1 -0
  48. package/dist/ui/index.js +3 -0
  49. package/dist/ui/index.js.map +1 -0
  50. package/dist/ui/parse-stdout.d.ts +3 -0
  51. package/dist/ui/parse-stdout.d.ts.map +1 -0
  52. package/dist/ui/parse-stdout.js +149 -0
  53. package/dist/ui/parse-stdout.js.map +1 -0
  54. package/package.json +63 -0
  55. package/skills/para-memory-files/SKILL.md +114 -0
  56. package/skills/para-memory-files/references/schemas.md +35 -0
  57. package/skills/rudder/SKILL.md +265 -0
  58. package/skills/rudder/references/api-reference.md +253 -0
  59. package/skills/rudder/references/cli-reference.md +67 -0
  60. package/skills/rudder/references/organization-skills.md +155 -0
  61. package/skills/rudder-create-agent/SKILL.md +166 -0
  62. package/skills/rudder-create-agent/references/api-reference.md +172 -0
  63. package/skills/rudder-create-agent/references/cli-reference.md +126 -0
  64. package/skills/rudder-create-plugin/SKILL.md +103 -0
@@ -0,0 +1,578 @@
1
+ import fs from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { asString, asNumber, asBoolean, asStringArray, parseObject, parseJson, buildRudderEnv, readRudderRuntimeSkillEntries, joinPromptSections, redactEnvForLogs, ensureAbsoluteDirectory, ensureCommandResolvable, ensureRudderCliInPath, ensurePathInEnv, renderTemplate, runChildProcess, selectPromptTemplate, } from "@rudderhq/agent-runtime-utils/server-utils";
6
+ import { parseClaudeStreamJson, describeClaudeFailure, detectClaudeLoginRequired, isClaudeMaxTurnsResult, isClaudeUnknownSessionError, } from "./parse.js";
7
+ import { resolveClaudeDesiredSkillNames } from "./skills.js";
8
+ const __moduleDir = path.dirname(fileURLToPath(import.meta.url));
9
+ const DEFAULT_RUDDER_INSTANCE_ID = "default";
10
+ const SHARED_CLAUDE_HOME_ENTRIES = [
11
+ ".claude.json",
12
+ ".config/claude",
13
+ ".config/anthropic",
14
+ ".anthropic",
15
+ ];
16
+ const SHARED_CLAUDE_DOTDIR_ENTRIES = [
17
+ "settings.json",
18
+ ];
19
+ /**
20
+ * Create a tmpdir with `.claude/skills/` containing symlinks to skills from
21
+ * the repo's `.agents/skills/` directory, so `--add-dir` makes Claude Code discover
22
+ * them as proper registered skills.
23
+ */
24
+ async function buildSkillsDir(config) {
25
+ const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "rudder-skills-"));
26
+ const target = path.join(tmp, ".claude", "skills");
27
+ await fs.mkdir(target, { recursive: true });
28
+ const availableEntries = await readRudderRuntimeSkillEntries(config, __moduleDir);
29
+ const desiredNames = new Set(resolveClaudeDesiredSkillNames(config, availableEntries));
30
+ for (const entry of availableEntries) {
31
+ if (!desiredNames.has(entry.key))
32
+ continue;
33
+ await fs.symlink(entry.source, path.join(target, entry.runtimeName));
34
+ }
35
+ return tmp;
36
+ }
37
+ function nonEmpty(value) {
38
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
39
+ }
40
+ async function pathExists(candidate) {
41
+ return fs.access(candidate).then(() => true).catch(() => false);
42
+ }
43
+ async function ensureParentDir(target) {
44
+ await fs.mkdir(path.dirname(target), { recursive: true });
45
+ }
46
+ async function ensureSymlink(target, source) {
47
+ const existing = await fs.lstat(target).catch(() => null);
48
+ if (!existing) {
49
+ await ensureParentDir(target);
50
+ await fs.symlink(source, target);
51
+ return;
52
+ }
53
+ if (!existing.isSymbolicLink())
54
+ return;
55
+ const linkedPath = await fs.readlink(target).catch(() => null);
56
+ const resolvedLinkedPath = linkedPath ? path.resolve(path.dirname(target), linkedPath) : null;
57
+ if (resolvedLinkedPath === source)
58
+ return;
59
+ await fs.unlink(target);
60
+ await fs.symlink(source, target);
61
+ }
62
+ function resolveSharedClaudeHomeDir(env) {
63
+ return path.resolve(nonEmpty(env.HOME) ?? os.homedir());
64
+ }
65
+ function resolveManagedClaudeHomeDir(env, orgId) {
66
+ const rudderHome = nonEmpty(env.RUDDER_HOME) ?? path.resolve(os.homedir(), ".rudder");
67
+ const instanceId = nonEmpty(env.RUDDER_INSTANCE_ID) ?? DEFAULT_RUDDER_INSTANCE_ID;
68
+ return path.resolve(rudderHome, "instances", instanceId, "organizations", orgId, "claude-home");
69
+ }
70
+ async function syncClaudeSharedDotdirEntries(sourceHome, targetHome) {
71
+ const sourceClaudeDir = path.join(sourceHome, ".claude");
72
+ const targetClaudeDir = path.join(targetHome, ".claude");
73
+ await fs.mkdir(targetClaudeDir, { recursive: true });
74
+ for (const relativeEntry of SHARED_CLAUDE_DOTDIR_ENTRIES) {
75
+ const source = path.join(sourceClaudeDir, relativeEntry);
76
+ if (!(await pathExists(source)))
77
+ continue;
78
+ await ensureSymlink(path.join(targetClaudeDir, relativeEntry), source);
79
+ }
80
+ }
81
+ async function prepareManagedClaudeHome(env, onLog, orgId) {
82
+ const sourceHome = resolveSharedClaudeHomeDir(env);
83
+ const targetHome = resolveManagedClaudeHomeDir(env, orgId);
84
+ if (targetHome === sourceHome)
85
+ return targetHome;
86
+ await fs.mkdir(targetHome, { recursive: true });
87
+ await fs.mkdir(path.join(targetHome, ".claude", "skills"), { recursive: true });
88
+ await syncClaudeSharedDotdirEntries(sourceHome, targetHome);
89
+ for (const relativeEntry of SHARED_CLAUDE_HOME_ENTRIES) {
90
+ const source = path.join(sourceHome, relativeEntry);
91
+ if (!(await pathExists(source)))
92
+ continue;
93
+ await ensureSymlink(path.join(targetHome, relativeEntry), source);
94
+ }
95
+ await onLog("stdout", `[rudder] Using Rudder-managed Claude home "${targetHome}" (seeded from "${sourceHome}").\n`);
96
+ return targetHome;
97
+ }
98
+ function buildLoginResult(input) {
99
+ return {
100
+ exitCode: input.proc.exitCode,
101
+ signal: input.proc.signal,
102
+ timedOut: input.proc.timedOut,
103
+ stdout: input.proc.stdout,
104
+ stderr: input.proc.stderr,
105
+ loginUrl: input.loginUrl,
106
+ };
107
+ }
108
+ function hasNonEmptyEnvValue(env, key) {
109
+ const raw = env[key];
110
+ return typeof raw === "string" && raw.trim().length > 0;
111
+ }
112
+ function resolveClaudeBillingType(env) {
113
+ // Claude uses API-key auth when ANTHROPIC_API_KEY is present; otherwise rely on local login/session auth.
114
+ return hasNonEmptyEnvValue(env, "ANTHROPIC_API_KEY") ? "api" : "subscription";
115
+ }
116
+ async function buildClaudeRuntimeConfig(input) {
117
+ const { runId, agent, config, context, authToken } = input;
118
+ const command = asString(config.command, "claude");
119
+ const workspaceContext = parseObject(context.rudderWorkspace);
120
+ const workspaceCwd = asString(workspaceContext.cwd, "");
121
+ const workspaceSource = asString(workspaceContext.source, "");
122
+ const workspaceStrategy = asString(workspaceContext.strategy, "");
123
+ const workspaceId = asString(workspaceContext.workspaceId, "") || null;
124
+ const workspaceRepoUrl = asString(workspaceContext.repoUrl, "") || null;
125
+ const workspaceRepoRef = asString(workspaceContext.repoRef, "") || null;
126
+ const workspaceBranch = asString(workspaceContext.branchName, "") || null;
127
+ const workspaceWorktreePath = asString(workspaceContext.worktreePath, "") || null;
128
+ const agentHome = asString(workspaceContext.agentHome, "") || null;
129
+ const agentInstructionsDir = asString(workspaceContext.instructionsDir, "") || null;
130
+ const agentMemoryDir = asString(workspaceContext.memoryDir, "") || null;
131
+ const agentSkillsDir = asString(workspaceContext.agentSkillsDir, "") || null;
132
+ const orgWorkspaceRoot = asString(workspaceContext.orgWorkspaceRoot, "") || null;
133
+ const orgSkillsDir = asString(workspaceContext.orgSkillsDir, "") || null;
134
+ const orgPlansDir = asString(workspaceContext.orgPlansDir, "") || null;
135
+ const workspaceHints = Array.isArray(context.rudderWorkspaces)
136
+ ? context.rudderWorkspaces.filter((value) => typeof value === "object" && value !== null)
137
+ : [];
138
+ const runtimeServiceIntents = Array.isArray(context.rudderRuntimeServiceIntents)
139
+ ? context.rudderRuntimeServiceIntents.filter((value) => typeof value === "object" && value !== null)
140
+ : [];
141
+ const runtimeServices = Array.isArray(context.rudderRuntimeServices)
142
+ ? context.rudderRuntimeServices.filter((value) => typeof value === "object" && value !== null)
143
+ : [];
144
+ const runtimePrimaryUrl = asString(context.rudderRuntimePrimaryUrl, "");
145
+ const configuredCwd = asString(config.cwd, "");
146
+ const useConfiguredInsteadOfAgentHome = workspaceSource === "agent_home" && configuredCwd.length > 0;
147
+ const effectiveWorkspaceCwd = useConfiguredInsteadOfAgentHome ? "" : workspaceCwd;
148
+ const cwd = effectiveWorkspaceCwd || configuredCwd || process.cwd();
149
+ await ensureAbsoluteDirectory(cwd, { createIfMissing: true });
150
+ const envConfig = parseObject(config.env);
151
+ const hasExplicitApiKey = typeof envConfig.RUDDER_API_KEY === "string" && envConfig.RUDDER_API_KEY.trim().length > 0;
152
+ const env = { ...buildRudderEnv(agent) };
153
+ env.RUDDER_RUN_ID = runId;
154
+ const wakeTaskId = (typeof context.taskId === "string" && context.taskId.trim().length > 0 && context.taskId.trim()) ||
155
+ (typeof context.issueId === "string" && context.issueId.trim().length > 0 && context.issueId.trim()) ||
156
+ null;
157
+ const wakeReason = typeof context.wakeReason === "string" && context.wakeReason.trim().length > 0
158
+ ? context.wakeReason.trim()
159
+ : null;
160
+ const wakeCommentId = (typeof context.wakeCommentId === "string" && context.wakeCommentId.trim().length > 0 && context.wakeCommentId.trim()) ||
161
+ (typeof context.commentId === "string" && context.commentId.trim().length > 0 && context.commentId.trim()) ||
162
+ null;
163
+ const approvalId = typeof context.approvalId === "string" && context.approvalId.trim().length > 0
164
+ ? context.approvalId.trim()
165
+ : null;
166
+ const approvalStatus = typeof context.approvalStatus === "string" && context.approvalStatus.trim().length > 0
167
+ ? context.approvalStatus.trim()
168
+ : null;
169
+ const linkedIssueIds = Array.isArray(context.issueIds)
170
+ ? context.issueIds.filter((value) => typeof value === "string" && value.trim().length > 0)
171
+ : [];
172
+ if (wakeTaskId) {
173
+ env.RUDDER_TASK_ID = wakeTaskId;
174
+ }
175
+ if (wakeReason) {
176
+ env.RUDDER_WAKE_REASON = wakeReason;
177
+ }
178
+ if (wakeCommentId) {
179
+ env.RUDDER_WAKE_COMMENT_ID = wakeCommentId;
180
+ }
181
+ if (approvalId) {
182
+ env.RUDDER_APPROVAL_ID = approvalId;
183
+ }
184
+ if (approvalStatus) {
185
+ env.RUDDER_APPROVAL_STATUS = approvalStatus;
186
+ }
187
+ if (linkedIssueIds.length > 0) {
188
+ env.RUDDER_LINKED_ISSUE_IDS = linkedIssueIds.join(",");
189
+ }
190
+ if (effectiveWorkspaceCwd) {
191
+ env.RUDDER_WORKSPACE_CWD = effectiveWorkspaceCwd;
192
+ }
193
+ if (workspaceSource) {
194
+ env.RUDDER_WORKSPACE_SOURCE = workspaceSource;
195
+ }
196
+ if (workspaceStrategy) {
197
+ env.RUDDER_WORKSPACE_STRATEGY = workspaceStrategy;
198
+ }
199
+ if (workspaceId) {
200
+ env.RUDDER_WORKSPACE_ID = workspaceId;
201
+ }
202
+ if (workspaceRepoUrl) {
203
+ env.RUDDER_WORKSPACE_REPO_URL = workspaceRepoUrl;
204
+ }
205
+ if (workspaceRepoRef) {
206
+ env.RUDDER_WORKSPACE_REPO_REF = workspaceRepoRef;
207
+ }
208
+ if (workspaceBranch) {
209
+ env.RUDDER_WORKSPACE_BRANCH = workspaceBranch;
210
+ }
211
+ if (workspaceWorktreePath) {
212
+ env.RUDDER_WORKSPACE_WORKTREE_PATH = workspaceWorktreePath;
213
+ }
214
+ if (agentHome) {
215
+ env.AGENT_HOME = agentHome;
216
+ env.RUDDER_AGENT_ROOT = agentHome;
217
+ }
218
+ if (agentInstructionsDir) {
219
+ env.RUDDER_AGENT_INSTRUCTIONS_DIR = agentInstructionsDir;
220
+ }
221
+ if (agentMemoryDir) {
222
+ env.RUDDER_AGENT_MEMORY_DIR = agentMemoryDir;
223
+ }
224
+ if (agentSkillsDir) {
225
+ env.RUDDER_AGENT_SKILLS_DIR = agentSkillsDir;
226
+ }
227
+ if (orgWorkspaceRoot) {
228
+ env.RUDDER_ORG_WORKSPACE_ROOT = orgWorkspaceRoot;
229
+ }
230
+ if (orgSkillsDir) {
231
+ env.RUDDER_ORG_SKILLS_DIR = orgSkillsDir;
232
+ }
233
+ if (orgPlansDir) {
234
+ env.RUDDER_ORG_PLANS_DIR = orgPlansDir;
235
+ }
236
+ if (workspaceHints.length > 0) {
237
+ env.RUDDER_WORKSPACES_JSON = JSON.stringify(workspaceHints);
238
+ }
239
+ if (runtimeServiceIntents.length > 0) {
240
+ env.RUDDER_RUNTIME_SERVICE_INTENTS_JSON = JSON.stringify(runtimeServiceIntents);
241
+ }
242
+ if (runtimeServices.length > 0) {
243
+ env.RUDDER_RUNTIME_SERVICES_JSON = JSON.stringify(runtimeServices);
244
+ }
245
+ if (runtimePrimaryUrl) {
246
+ env.RUDDER_RUNTIME_PRIMARY_URL = runtimePrimaryUrl;
247
+ }
248
+ for (const [key, value] of Object.entries(envConfig)) {
249
+ if (typeof value === "string")
250
+ env[key] = value;
251
+ }
252
+ env.HOME = await prepareManagedClaudeHome({ ...process.env, ...env }, input.onLog ?? (async () => { }), agent.orgId);
253
+ if (!hasExplicitApiKey && authToken) {
254
+ env.RUDDER_API_KEY = authToken;
255
+ }
256
+ const runtimeEnv = ensurePathInEnv(await ensureRudderCliInPath(__moduleDir, { ...process.env, ...env }));
257
+ await ensureCommandResolvable(command, cwd, runtimeEnv);
258
+ const timeoutSec = asNumber(config.timeoutSec, 0);
259
+ const graceSec = asNumber(config.graceSec, 20);
260
+ const extraArgs = (() => {
261
+ const fromExtraArgs = asStringArray(config.extraArgs);
262
+ if (fromExtraArgs.length > 0)
263
+ return fromExtraArgs;
264
+ return asStringArray(config.args);
265
+ })();
266
+ return {
267
+ command,
268
+ cwd,
269
+ workspaceId,
270
+ workspaceRepoUrl,
271
+ workspaceRepoRef,
272
+ env,
273
+ timeoutSec,
274
+ graceSec,
275
+ extraArgs,
276
+ };
277
+ }
278
+ export async function runClaudeLogin(input) {
279
+ const onLog = input.onLog ?? (async () => { });
280
+ const runtime = await buildClaudeRuntimeConfig({
281
+ runId: input.runId,
282
+ agent: input.agent,
283
+ config: input.config,
284
+ context: input.context ?? {},
285
+ authToken: input.authToken,
286
+ onLog,
287
+ });
288
+ const proc = await runChildProcess(input.runId, runtime.command, ["login"], {
289
+ cwd: runtime.cwd,
290
+ env: runtime.env,
291
+ timeoutSec: runtime.timeoutSec,
292
+ graceSec: runtime.graceSec,
293
+ onLog,
294
+ });
295
+ const loginMeta = detectClaudeLoginRequired({
296
+ parsed: null,
297
+ stdout: proc.stdout,
298
+ stderr: proc.stderr,
299
+ });
300
+ return buildLoginResult({
301
+ proc,
302
+ loginUrl: loginMeta.loginUrl,
303
+ });
304
+ }
305
+ export async function execute(ctx) {
306
+ const { runId, agent, runtime, config, context, onLog, onMeta, onSpawn, authToken } = ctx;
307
+ const promptTemplate = selectPromptTemplate(asString(config.promptTemplate, ""), context);
308
+ const model = asString(config.model, "");
309
+ const effort = asString(config.effort, "");
310
+ const chrome = asBoolean(config.chrome, false);
311
+ const maxTurns = asNumber(config.maxTurnsPerRun, 0);
312
+ const dangerouslySkipPermissions = asBoolean(config.dangerouslySkipPermissions, false);
313
+ const instructionsFilePath = asString(config.instructionsFilePath, "").trim();
314
+ const instructionsFileDir = instructionsFilePath ? `${path.dirname(instructionsFilePath)}/` : "";
315
+ const commandNotes = instructionsFilePath
316
+ ? [
317
+ `Injected agent instructions via --append-system-prompt-file ${instructionsFilePath} (with path directive appended)`,
318
+ ]
319
+ : [];
320
+ const runtimeConfig = await buildClaudeRuntimeConfig({
321
+ runId,
322
+ agent,
323
+ config,
324
+ context,
325
+ authToken,
326
+ onLog,
327
+ });
328
+ const { command, cwd, workspaceId, workspaceRepoUrl, workspaceRepoRef, env, timeoutSec, graceSec, extraArgs, } = runtimeConfig;
329
+ const effectiveEnv = Object.fromEntries(Object.entries({ ...process.env, ...env }).filter((entry) => typeof entry[1] === "string"));
330
+ const billingType = resolveClaudeBillingType(effectiveEnv);
331
+ const skillsDir = await buildSkillsDir(config);
332
+ // When instructionsFilePath is configured, create a combined temp file that
333
+ // includes both the file content and the path directive, so we only need
334
+ // --append-system-prompt-file (Claude CLI forbids using both flags together).
335
+ let effectiveInstructionsFilePath = instructionsFilePath;
336
+ if (instructionsFilePath) {
337
+ try {
338
+ const instructionsContent = await fs.readFile(instructionsFilePath, "utf-8");
339
+ const pathDirective = `\nThe above agent instructions were loaded from ${instructionsFilePath}. Resolve any relative file references from ${instructionsFileDir}.`;
340
+ const combinedPath = path.join(skillsDir, "agent-instructions.md");
341
+ await fs.writeFile(combinedPath, instructionsContent + pathDirective, "utf-8");
342
+ effectiveInstructionsFilePath = combinedPath;
343
+ await onLog("stdout", `[rudder] Loaded agent instructions file: ${instructionsFilePath}\n`);
344
+ }
345
+ catch (err) {
346
+ const reason = err instanceof Error ? err.message : String(err);
347
+ await onLog("stderr", `[rudder] Warning: could not read agent instructions file "${instructionsFilePath}": ${reason}\n`);
348
+ effectiveInstructionsFilePath = undefined;
349
+ }
350
+ }
351
+ const runtimeSessionParams = parseObject(runtime.sessionParams);
352
+ const runtimeSessionId = asString(runtimeSessionParams.sessionId, runtime.sessionId ?? "");
353
+ const runtimeSessionCwd = asString(runtimeSessionParams.cwd, "");
354
+ const canResumeSession = runtimeSessionId.length > 0 &&
355
+ (runtimeSessionCwd.length === 0 || path.resolve(runtimeSessionCwd) === path.resolve(cwd));
356
+ const sessionId = canResumeSession ? runtimeSessionId : null;
357
+ if (runtimeSessionId && !canResumeSession) {
358
+ await onLog("stdout", `[rudder] Claude session "${runtimeSessionId}" was saved for cwd "${runtimeSessionCwd}" and will not be resumed in "${cwd}".\n`);
359
+ }
360
+ /**
361
+ * Final prompt assembly order is intentional and shared across runtimes:
362
+ * 1) optional bootstrap prompt (only when not resuming a prior session),
363
+ * 2) optional session handoff markdown,
364
+ * 3) heartbeat prompt selected by wake trigger (assignment, mention, retry, fallback).
365
+ *
366
+ * Prompt example (comment mention wakeup):
367
+ * [bootstrap prompt]
368
+ * [session handoff note]
369
+ * You are agent agent-456 (Backend Worker). You were mentioned in a comment and your attention is needed.
370
+ * Issue: "Stabilize queue worker"
371
+ * Comment: "@agent please check timeout handling in retry path."
372
+ *
373
+ * Reasoning: assignment/mention heartbeat templates carry issue/comment context so
374
+ * the agent can start useful work on turn one without spending extra tool calls on
375
+ * "what changed?" discovery.
376
+ *
377
+ * Traceability:
378
+ * - doc/plans/2026-04-07-agent-prompt-context-injection.md
379
+ * - doc/DEVELOPING.md
380
+ */
381
+ const bootstrapPromptTemplate = asString(config.bootstrapPromptTemplate, "");
382
+ const templateData = {
383
+ agentId: agent.id,
384
+ orgId: agent.orgId,
385
+ runId,
386
+ organization: { id: agent.orgId },
387
+ agent,
388
+ run: {
389
+ id: runId,
390
+ source: context.wakeSource ?? "on_demand",
391
+ wakeReason: context.wakeReason ?? null,
392
+ },
393
+ context,
394
+ // Issue and comment context for enriched prompts
395
+ issue: context.issue ?? null,
396
+ comment: context.comment ?? null,
397
+ wakeReason: context.wakeReason ?? null,
398
+ wakeSource: context.wakeSource ?? null,
399
+ };
400
+ const renderedPrompt = renderTemplate(promptTemplate, templateData);
401
+ const renderedBootstrapPrompt = !sessionId && bootstrapPromptTemplate.trim().length > 0
402
+ ? renderTemplate(bootstrapPromptTemplate, templateData).trim()
403
+ : "";
404
+ const sessionHandoffNote = asString(context.rudderSessionHandoffMarkdown, "").trim();
405
+ const prompt = joinPromptSections([
406
+ renderedBootstrapPrompt,
407
+ sessionHandoffNote,
408
+ renderedPrompt,
409
+ ]);
410
+ const promptMetrics = {
411
+ promptChars: prompt.length,
412
+ bootstrapPromptChars: renderedBootstrapPrompt.length,
413
+ sessionHandoffChars: sessionHandoffNote.length,
414
+ heartbeatPromptChars: renderedPrompt.length,
415
+ };
416
+ const buildClaudeArgs = (resumeSessionId) => {
417
+ const args = ["--print", "-", "--output-format", "stream-json", "--verbose"];
418
+ if (resumeSessionId)
419
+ args.push("--resume", resumeSessionId);
420
+ if (dangerouslySkipPermissions)
421
+ args.push("--dangerously-skip-permissions");
422
+ if (chrome)
423
+ args.push("--chrome");
424
+ if (model)
425
+ args.push("--model", model);
426
+ if (effort)
427
+ args.push("--effort", effort);
428
+ if (maxTurns > 0)
429
+ args.push("--max-turns", String(maxTurns));
430
+ if (effectiveInstructionsFilePath) {
431
+ args.push("--append-system-prompt-file", effectiveInstructionsFilePath);
432
+ }
433
+ args.push("--add-dir", skillsDir);
434
+ if (extraArgs.length > 0)
435
+ args.push(...extraArgs);
436
+ return args;
437
+ };
438
+ const parseFallbackErrorMessage = (proc) => {
439
+ const stderrLine = proc.stderr
440
+ .split(/\r?\n/)
441
+ .map((line) => line.trim())
442
+ .find(Boolean) ?? "";
443
+ if ((proc.exitCode ?? 0) === 0) {
444
+ return "Failed to parse claude JSON output";
445
+ }
446
+ return stderrLine
447
+ ? `Claude exited with code ${proc.exitCode ?? -1}: ${stderrLine}`
448
+ : `Claude exited with code ${proc.exitCode ?? -1}`;
449
+ };
450
+ const runAttempt = async (resumeSessionId) => {
451
+ const args = buildClaudeArgs(resumeSessionId);
452
+ if (onMeta) {
453
+ await onMeta({
454
+ agentRuntimeType: "claude_local",
455
+ command,
456
+ cwd,
457
+ commandArgs: args,
458
+ commandNotes,
459
+ env: redactEnvForLogs(env),
460
+ prompt,
461
+ promptMetrics,
462
+ context,
463
+ });
464
+ }
465
+ const proc = await runChildProcess(runId, command, args, {
466
+ cwd,
467
+ env,
468
+ stdin: prompt,
469
+ timeoutSec,
470
+ graceSec,
471
+ onSpawn,
472
+ abortSignal: ctx.abortSignal,
473
+ onLog,
474
+ });
475
+ const parsedStream = parseClaudeStreamJson(proc.stdout);
476
+ const parsed = parsedStream.resultJson ?? parseJson(proc.stdout);
477
+ return { proc, parsedStream, parsed };
478
+ };
479
+ const toAdapterResult = (attempt, opts) => {
480
+ const { proc, parsedStream, parsed } = attempt;
481
+ const loginMeta = detectClaudeLoginRequired({
482
+ parsed,
483
+ stdout: proc.stdout,
484
+ stderr: proc.stderr,
485
+ });
486
+ const errorMeta = loginMeta.loginUrl != null
487
+ ? {
488
+ loginUrl: loginMeta.loginUrl,
489
+ }
490
+ : undefined;
491
+ if (proc.timedOut) {
492
+ return {
493
+ exitCode: proc.exitCode,
494
+ signal: proc.signal,
495
+ timedOut: true,
496
+ errorMessage: `Timed out after ${timeoutSec}s`,
497
+ errorCode: "timeout",
498
+ errorMeta,
499
+ clearSession: Boolean(opts.clearSessionOnMissingSession),
500
+ };
501
+ }
502
+ if (!parsed) {
503
+ return {
504
+ exitCode: proc.exitCode,
505
+ signal: proc.signal,
506
+ timedOut: false,
507
+ errorMessage: parseFallbackErrorMessage(proc),
508
+ errorCode: loginMeta.requiresLogin ? "claude_auth_required" : null,
509
+ errorMeta,
510
+ resultJson: {
511
+ stdout: proc.stdout,
512
+ stderr: proc.stderr,
513
+ },
514
+ clearSession: Boolean(opts.clearSessionOnMissingSession),
515
+ };
516
+ }
517
+ const usage = parsedStream.usage ??
518
+ (() => {
519
+ const usageObj = parseObject(parsed.usage);
520
+ return {
521
+ inputTokens: asNumber(usageObj.input_tokens, 0),
522
+ cachedInputTokens: asNumber(usageObj.cache_read_input_tokens, 0),
523
+ outputTokens: asNumber(usageObj.output_tokens, 0),
524
+ };
525
+ })();
526
+ const resolvedSessionId = parsedStream.sessionId ??
527
+ (asString(parsed.session_id, opts.fallbackSessionId ?? "") || opts.fallbackSessionId);
528
+ const resolvedSessionParams = resolvedSessionId
529
+ ? {
530
+ sessionId: resolvedSessionId,
531
+ cwd,
532
+ ...(workspaceId ? { workspaceId } : {}),
533
+ ...(workspaceRepoUrl ? { repoUrl: workspaceRepoUrl } : {}),
534
+ ...(workspaceRepoRef ? { repoRef: workspaceRepoRef } : {}),
535
+ }
536
+ : null;
537
+ const clearSessionForMaxTurns = isClaudeMaxTurnsResult(parsed);
538
+ return {
539
+ exitCode: proc.exitCode,
540
+ signal: proc.signal,
541
+ timedOut: false,
542
+ errorMessage: (proc.exitCode ?? 0) === 0
543
+ ? null
544
+ : describeClaudeFailure(parsed) ?? `Claude exited with code ${proc.exitCode ?? -1}`,
545
+ errorCode: loginMeta.requiresLogin ? "claude_auth_required" : null,
546
+ errorMeta,
547
+ usage,
548
+ sessionId: resolvedSessionId,
549
+ sessionParams: resolvedSessionParams,
550
+ sessionDisplayId: resolvedSessionId,
551
+ provider: "anthropic",
552
+ biller: "anthropic",
553
+ model: parsedStream.model || asString(parsed.model, model),
554
+ billingType,
555
+ costUsd: parsedStream.costUsd ?? asNumber(parsed.total_cost_usd, 0),
556
+ resultJson: parsed,
557
+ summary: parsedStream.summary || asString(parsed.result, ""),
558
+ clearSession: clearSessionForMaxTurns || Boolean(opts.clearSessionOnMissingSession && !resolvedSessionId),
559
+ };
560
+ };
561
+ try {
562
+ const initial = await runAttempt(sessionId ?? null);
563
+ if (sessionId &&
564
+ !initial.proc.timedOut &&
565
+ (initial.proc.exitCode ?? 0) !== 0 &&
566
+ initial.parsed &&
567
+ isClaudeUnknownSessionError(initial.parsed)) {
568
+ await onLog("stdout", `[rudder] Claude resume session "${sessionId}" is unavailable; retrying with a fresh session.\n`);
569
+ const retry = await runAttempt(null);
570
+ return toAdapterResult(retry, { fallbackSessionId: null, clearSessionOnMissingSession: true });
571
+ }
572
+ return toAdapterResult(initial, { fallbackSessionId: runtimeSessionId || runtime.sessionId });
573
+ }
574
+ finally {
575
+ fs.rm(skillsDir, { recursive: true, force: true }).catch(() => { });
576
+ }
577
+ }
578
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/server/execute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { execute, runClaudeLogin } from "./execute.js";
2
+ export { listClaudeSkills, syncClaudeSkills } from "./skills.js";
3
+ export { testEnvironment } from "./test.js";
4
+ export { parseClaudeStreamJson, describeClaudeFailure, isClaudeMaxTurnsResult, isClaudeUnknownSessionError, } from "./parse.js";
5
+ export { getQuotaWindows, readClaudeAuthStatus, readClaudeToken, fetchClaudeQuota, fetchClaudeCliQuota, captureClaudeCliUsageText, parseClaudeCliUsageText, toPercent, fetchWithTimeout, claudeConfigDir, } from "./quota.js";
6
+ import type { AgentRuntimeSessionCodec } from "@rudderhq/agent-runtime-utils";
7
+ export declare const sessionCodec: AgentRuntimeSessionCodec;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,SAAS,EACT,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAM9E,eAAO,MAAM,YAAY,EAAE,wBA4C1B,CAAC"}