@rudderhq/agent-runtime-codex-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 (68) 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 +213 -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 +97 -0
  13. package/dist/cli/quota-probe.js.map +1 -0
  14. package/dist/index.d.ts +10 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +50 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/server/codex-home.d.ts +7 -0
  19. package/dist/server/codex-home.d.ts.map +1 -0
  20. package/dist/server/codex-home.js +456 -0
  21. package/dist/server/codex-home.js.map +1 -0
  22. package/dist/server/execute.d.ts +3 -0
  23. package/dist/server/execute.d.ts.map +1 -0
  24. package/dist/server/execute.js +514 -0
  25. package/dist/server/execute.js.map +1 -0
  26. package/dist/server/index.d.ts +8 -0
  27. package/dist/server/index.d.ts.map +1 -0
  28. package/dist/server/index.js +57 -0
  29. package/dist/server/index.js.map +1 -0
  30. package/dist/server/parse.d.ts +12 -0
  31. package/dist/server/parse.d.ts.map +1 -0
  32. package/dist/server/parse.js +67 -0
  33. package/dist/server/parse.js.map +1 -0
  34. package/dist/server/quota.d.ts +64 -0
  35. package/dist/server/quota.d.ts.map +1 -0
  36. package/dist/server/quota.js +425 -0
  37. package/dist/server/quota.js.map +1 -0
  38. package/dist/server/skills.d.ts +7 -0
  39. package/dist/server/skills.d.ts.map +1 -0
  40. package/dist/server/skills.js +57 -0
  41. package/dist/server/skills.js.map +1 -0
  42. package/dist/server/test.d.ts +3 -0
  43. package/dist/server/test.d.ts.map +1 -0
  44. package/dist/server/test.js +194 -0
  45. package/dist/server/test.js.map +1 -0
  46. package/dist/ui/build-config.d.ts +3 -0
  47. package/dist/ui/build-config.d.ts.map +1 -0
  48. package/dist/ui/build-config.js +116 -0
  49. package/dist/ui/build-config.js.map +1 -0
  50. package/dist/ui/index.d.ts +3 -0
  51. package/dist/ui/index.d.ts.map +1 -0
  52. package/dist/ui/index.js +3 -0
  53. package/dist/ui/index.js.map +1 -0
  54. package/dist/ui/parse-stdout.d.ts +3 -0
  55. package/dist/ui/parse-stdout.d.ts.map +1 -0
  56. package/dist/ui/parse-stdout.js +232 -0
  57. package/dist/ui/parse-stdout.js.map +1 -0
  58. package/package.json +62 -0
  59. package/skills/para-memory-files/SKILL.md +114 -0
  60. package/skills/para-memory-files/references/schemas.md +35 -0
  61. package/skills/rudder/SKILL.md +265 -0
  62. package/skills/rudder/references/api-reference.md +253 -0
  63. package/skills/rudder/references/cli-reference.md +67 -0
  64. package/skills/rudder/references/organization-skills.md +155 -0
  65. package/skills/rudder-create-agent/SKILL.md +166 -0
  66. package/skills/rudder-create-agent/references/api-reference.md +172 -0
  67. package/skills/rudder-create-agent/references/cli-reference.md +126 -0
  68. package/skills/rudder-create-plugin/SKILL.md +103 -0
@@ -0,0 +1,514 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { inferOpenAiCompatibleBiller } from "@rudderhq/agent-runtime-utils";
5
+ import { asString, asNumber, asBoolean, asStringArray, parseObject, buildRudderEnv, redactEnvForLogs, ensureAbsoluteDirectory, ensureCommandResolvable, ensureRudderCliInPath, ensurePathInEnv, readRudderRuntimeSkillEntries, resolveRudderDesiredSkillNames, renderTemplate, joinPromptSections, runChildProcess, selectPromptTemplate, } from "@rudderhq/agent-runtime-utils/server-utils";
6
+ import { parseCodexJsonl, isCodexUnknownSessionError } from "./parse.js";
7
+ import { prepareManagedCodexHome, realizeManagedCodexSkillEntries, resolveManagedCodexHomeDir, } from "./codex-home.js";
8
+ const __moduleDir = path.dirname(fileURLToPath(import.meta.url));
9
+ const CODEX_BENIGN_STDERR_RES = [
10
+ /^\d{4}-\d{2}-\d{2}T[^\s]+\s+ERROR\s+codex_core::rollout::list:\s+state db missing rollout path for thread\s+[a-z0-9-]+$/i,
11
+ /^\d{4}-\d{2}-\d{2}T[^\s]+\s+WARN\s+codex_core::shell_snapshot:\s+Failed to delete shell snapshot at\s+".+?\.tmp-\d+":\s+Os\s+\{\s+code:\s*2,\s+kind:\s*NotFound,\s+message:\s*"No such file or directory"\s+\}$/i,
12
+ ];
13
+ function isBenignCodexStderrLine(line) {
14
+ return CODEX_BENIGN_STDERR_RES.some((pattern) => pattern.test(line.trim()));
15
+ }
16
+ function stripCodexBenignStderr(text) {
17
+ const parts = text.split(/\r?\n/);
18
+ const kept = [];
19
+ for (const part of parts) {
20
+ const trimmed = part.trim();
21
+ if (!trimmed) {
22
+ kept.push(part);
23
+ continue;
24
+ }
25
+ if (isBenignCodexStderrLine(trimmed))
26
+ continue;
27
+ kept.push(part);
28
+ }
29
+ return kept.join("\n");
30
+ }
31
+ function splitCompleteLines(text) {
32
+ const lines = [];
33
+ let start = 0;
34
+ for (let index = 0; index < text.length; index += 1) {
35
+ if (text[index] !== "\n")
36
+ continue;
37
+ lines.push(text.slice(start, index + 1));
38
+ start = index + 1;
39
+ }
40
+ return {
41
+ lines,
42
+ remainder: text.slice(start),
43
+ };
44
+ }
45
+ function firstNonEmptyLine(text) {
46
+ return (text
47
+ .split(/\r?\n/)
48
+ .map((line) => line.trim())
49
+ .find(Boolean) ?? "");
50
+ }
51
+ function firstMeaningfulErrorLine(text) {
52
+ const lines = text
53
+ .split(/\r?\n/)
54
+ .map((line) => line.trim())
55
+ .filter(Boolean);
56
+ const informative = lines.find((line) => {
57
+ if (/^file:\/\//i.test(line))
58
+ return false;
59
+ if (/^\^+$/.test(line))
60
+ return false;
61
+ if (/^throw\s+new\s+[A-Za-z]*Error\b/.test(line))
62
+ return false;
63
+ if (/^(at\s|node:internal\b|Node\.js v\d+)/.test(line))
64
+ return false;
65
+ return true;
66
+ });
67
+ return informative ?? lines[0] ?? "";
68
+ }
69
+ function hasCliArg(args, flag) {
70
+ return args.includes(flag);
71
+ }
72
+ function hasNonEmptyEnvValue(env, key) {
73
+ const raw = env[key];
74
+ return typeof raw === "string" && raw.trim().length > 0;
75
+ }
76
+ function resolveCodexBillingType(env) {
77
+ // Codex uses API-key auth when OPENAI_API_KEY is present; otherwise rely on local login/session auth.
78
+ return hasNonEmptyEnvValue(env, "OPENAI_API_KEY") ? "api" : "subscription";
79
+ }
80
+ function resolveCodexBiller(env, billingType) {
81
+ const openAiCompatibleBiller = inferOpenAiCompatibleBiller(env, "openai");
82
+ if (openAiCompatibleBiller === "openrouter")
83
+ return "openrouter";
84
+ return billingType === "subscription" ? "chatgpt" : openAiCompatibleBiller ?? "openai";
85
+ }
86
+ export async function execute(ctx) {
87
+ const { runId, agent, runtime, config, context, onLog, onMeta, onSpawn, authToken } = ctx;
88
+ const promptTemplate = selectPromptTemplate(asString(config.promptTemplate, ""), context);
89
+ const command = asString(config.command, "codex");
90
+ const model = asString(config.model, "");
91
+ const modelReasoningEffort = asString(config.modelReasoningEffort, asString(config.reasoningEffort, ""));
92
+ const search = asBoolean(config.search, false);
93
+ const bypass = asBoolean(config.dangerouslyBypassApprovalsAndSandbox, asBoolean(config.dangerouslyBypassSandbox, false));
94
+ const workspaceContext = parseObject(context.rudderWorkspace);
95
+ const workspaceCwd = asString(workspaceContext.cwd, "");
96
+ const workspaceSource = asString(workspaceContext.source, "");
97
+ const workspaceStrategy = asString(workspaceContext.strategy, "");
98
+ const workspaceId = asString(workspaceContext.workspaceId, "");
99
+ const workspaceRepoUrl = asString(workspaceContext.repoUrl, "");
100
+ const workspaceRepoRef = asString(workspaceContext.repoRef, "");
101
+ const workspaceBranch = asString(workspaceContext.branchName, "");
102
+ const workspaceWorktreePath = asString(workspaceContext.worktreePath, "");
103
+ const agentHome = asString(workspaceContext.agentHome, "");
104
+ const agentInstructionsDir = asString(workspaceContext.instructionsDir, "");
105
+ const agentMemoryDir = asString(workspaceContext.memoryDir, "");
106
+ const agentSkillsDir = asString(workspaceContext.agentSkillsDir, "");
107
+ const orgWorkspaceRoot = asString(workspaceContext.orgWorkspaceRoot, "");
108
+ const orgSkillsDir = asString(workspaceContext.orgSkillsDir, "");
109
+ const orgPlansDir = asString(workspaceContext.orgPlansDir, "");
110
+ const workspaceHints = Array.isArray(context.rudderWorkspaces)
111
+ ? context.rudderWorkspaces.filter((value) => typeof value === "object" && value !== null)
112
+ : [];
113
+ const runtimeServiceIntents = Array.isArray(context.rudderRuntimeServiceIntents)
114
+ ? context.rudderRuntimeServiceIntents.filter((value) => typeof value === "object" && value !== null)
115
+ : [];
116
+ const runtimeServices = Array.isArray(context.rudderRuntimeServices)
117
+ ? context.rudderRuntimeServices.filter((value) => typeof value === "object" && value !== null)
118
+ : [];
119
+ const runtimePrimaryUrl = asString(context.rudderRuntimePrimaryUrl, "");
120
+ const runtimeScene = asString(context.rudderScene, "");
121
+ const configuredCwd = asString(config.cwd, "");
122
+ const useConfiguredInsteadOfAgentHome = workspaceSource === "agent_home" && configuredCwd.length > 0;
123
+ const effectiveWorkspaceCwd = useConfiguredInsteadOfAgentHome ? "" : workspaceCwd;
124
+ const cwd = effectiveWorkspaceCwd || configuredCwd || process.cwd();
125
+ const envConfig = parseObject(config.env);
126
+ const configuredCodexHome = typeof envConfig.CODEX_HOME === "string" && envConfig.CODEX_HOME.trim().length > 0
127
+ ? path.resolve(envConfig.CODEX_HOME.trim())
128
+ : null;
129
+ await ensureAbsoluteDirectory(cwd, { createIfMissing: true });
130
+ const sourceEnv = {
131
+ ...process.env,
132
+ ...Object.fromEntries(Object.entries(envConfig).filter((entry) => typeof entry[1] === "string")),
133
+ };
134
+ const preparedManagedCodexHome = configuredCodexHome ? null : await prepareManagedCodexHome(sourceEnv, onLog, agent.orgId, agent.id);
135
+ const defaultCodexHome = resolveManagedCodexHomeDir(sourceEnv, agent.orgId, agent.id);
136
+ const effectiveCodexHome = configuredCodexHome ?? preparedManagedCodexHome ?? defaultCodexHome;
137
+ await fs.mkdir(effectiveCodexHome, { recursive: true });
138
+ const isolatedHome = agentHome || path.join(effectiveCodexHome, "home");
139
+ await fs.mkdir(isolatedHome, { recursive: true });
140
+ const codexSkillEntries = await readRudderRuntimeSkillEntries(config, __moduleDir);
141
+ const desiredCodexSkillNames = resolveRudderDesiredSkillNames(config, codexSkillEntries);
142
+ await realizeManagedCodexSkillEntries({
143
+ ...sourceEnv,
144
+ CODEX_HOME: effectiveCodexHome,
145
+ }, effectiveCodexHome, codexSkillEntries
146
+ .filter((entry) => desiredCodexSkillNames.includes(entry.key))
147
+ .map((entry) => entry.source), onLog);
148
+ const hasExplicitApiKey = typeof envConfig.RUDDER_API_KEY === "string" && envConfig.RUDDER_API_KEY.trim().length > 0;
149
+ const env = { ...buildRudderEnv(agent) };
150
+ env.CODEX_HOME = effectiveCodexHome;
151
+ env.HOME = isolatedHome;
152
+ env.USERPROFILE = isolatedHome;
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
+ env.AGENT_HOME = agentHome || isolatedHome;
215
+ if (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 [k, v] of Object.entries(envConfig)) {
249
+ if (typeof v === "string")
250
+ env[k] = v;
251
+ }
252
+ if (!hasExplicitApiKey && authToken) {
253
+ env.RUDDER_API_KEY = authToken;
254
+ }
255
+ const effectiveEnv = Object.fromEntries(Object.entries({ ...process.env, ...env }).filter((entry) => typeof entry[1] === "string"));
256
+ const billingType = resolveCodexBillingType(effectiveEnv);
257
+ const runtimeEnv = ensurePathInEnv(await ensureRudderCliInPath(__moduleDir, effectiveEnv));
258
+ await ensureCommandResolvable(command, cwd, runtimeEnv);
259
+ const timeoutSec = asNumber(config.timeoutSec, 0);
260
+ const graceSec = asNumber(config.graceSec, 20);
261
+ const extraArgs = (() => {
262
+ const fromExtraArgs = asStringArray(config.extraArgs);
263
+ if (fromExtraArgs.length > 0)
264
+ return fromExtraArgs;
265
+ return asStringArray(config.args);
266
+ })();
267
+ const runtimeSessionParams = parseObject(runtime.sessionParams);
268
+ const runtimeSessionId = asString(runtimeSessionParams.sessionId, runtime.sessionId ?? "");
269
+ const runtimeSessionCwd = asString(runtimeSessionParams.cwd, "");
270
+ const canResumeSession = runtimeSessionId.length > 0 &&
271
+ (runtimeSessionCwd.length === 0 || path.resolve(runtimeSessionCwd) === path.resolve(cwd));
272
+ const sessionId = canResumeSession ? runtimeSessionId : null;
273
+ if (runtimeSessionId && !canResumeSession) {
274
+ await onLog("stdout", `[rudder] Codex session "${runtimeSessionId}" was saved for cwd "${runtimeSessionCwd}" and will not be resumed in "${cwd}".\n`);
275
+ }
276
+ const instructionsFilePath = asString(config.instructionsFilePath, "").trim();
277
+ const instructionsDir = instructionsFilePath ? `${path.dirname(instructionsFilePath)}/` : "";
278
+ let instructionsPrefix = "";
279
+ let instructionsChars = 0;
280
+ if (instructionsFilePath) {
281
+ try {
282
+ const instructionsContents = await fs.readFile(instructionsFilePath, "utf8");
283
+ instructionsPrefix =
284
+ `${instructionsContents}\n\n` +
285
+ `The above agent instructions were loaded from ${instructionsFilePath}. ` +
286
+ `Resolve any relative file references from ${instructionsDir}.\n\n`;
287
+ instructionsChars = instructionsPrefix.length;
288
+ await onLog("stdout", `[rudder] Loaded agent instructions file: ${instructionsFilePath}\n`);
289
+ }
290
+ catch (err) {
291
+ const reason = err instanceof Error ? err.message : String(err);
292
+ await onLog("stdout", `[rudder] Warning: could not read agent instructions file "${instructionsFilePath}": ${reason}\n`);
293
+ }
294
+ }
295
+ const repoAgentsNote = "Codex exec automatically applies repo-scoped AGENTS.md instructions from the current workspace; Rudder does not currently suppress that discovery.";
296
+ const commandNotes = (() => {
297
+ if (!instructionsFilePath) {
298
+ return [repoAgentsNote];
299
+ }
300
+ if (instructionsPrefix.length > 0) {
301
+ return [
302
+ `Loaded agent instructions from ${instructionsFilePath}`,
303
+ `Prepended instructions + path directive to stdin prompt (relative references from ${instructionsDir}).`,
304
+ repoAgentsNote,
305
+ ];
306
+ }
307
+ return [
308
+ `Configured instructionsFilePath ${instructionsFilePath}, but file could not be read; continuing without injected instructions.`,
309
+ repoAgentsNote,
310
+ ];
311
+ })();
312
+ /**
313
+ * Final prompt assembly order is intentional and shared across runtimes:
314
+ * 1) optional injected instructions prefix,
315
+ * 2) optional bootstrap prompt (only when not resuming a prior session),
316
+ * 3) optional session handoff markdown,
317
+ * 4) heartbeat prompt selected by wake trigger (assignment, mention, retry, fallback).
318
+ *
319
+ * Prompt example (assignment wakeup):
320
+ * [instructions prefix]
321
+ * [bootstrap prompt]
322
+ * [session handoff note]
323
+ * You are agent agent-123 (Frontend Maintainer). You have been assigned to work on an issue.
324
+ * Issue: "Fix onboarding redirect"
325
+ * Description: "Users land on a blank page after login."
326
+ *
327
+ * Reasoning: assignment/mention heartbeat templates carry issue/comment context so
328
+ * the agent can start useful work on turn one without spending extra tool calls on
329
+ * "what changed?" discovery.
330
+ *
331
+ * Traceability:
332
+ * - doc/plans/2026-04-07-agent-prompt-context-injection.md
333
+ * - doc/DEVELOPING.md
334
+ */
335
+ const bootstrapPromptTemplate = asString(config.bootstrapPromptTemplate, "");
336
+ const templateData = {
337
+ agentId: agent.id,
338
+ orgId: agent.orgId,
339
+ runId,
340
+ organization: { id: agent.orgId },
341
+ agent,
342
+ run: {
343
+ id: runId,
344
+ source: context.wakeSource ?? "on_demand",
345
+ wakeReason: context.wakeReason ?? null,
346
+ },
347
+ context,
348
+ // Issue and comment context for enriched prompts
349
+ issue: context.issue ?? null,
350
+ comment: context.comment ?? null,
351
+ wakeReason: context.wakeReason ?? null,
352
+ wakeSource: context.wakeSource ?? null,
353
+ };
354
+ const renderedPrompt = renderTemplate(promptTemplate, templateData);
355
+ const renderedBootstrapPrompt = !sessionId && bootstrapPromptTemplate.trim().length > 0
356
+ ? renderTemplate(bootstrapPromptTemplate, templateData).trim()
357
+ : "";
358
+ const sessionHandoffNote = asString(context.rudderSessionHandoffMarkdown, "").trim();
359
+ const prompt = joinPromptSections([
360
+ instructionsPrefix,
361
+ renderedBootstrapPrompt,
362
+ sessionHandoffNote,
363
+ renderedPrompt,
364
+ ]);
365
+ const promptMetrics = {
366
+ promptChars: prompt.length,
367
+ instructionsChars,
368
+ bootstrapPromptChars: renderedBootstrapPrompt.length,
369
+ sessionHandoffChars: sessionHandoffNote.length,
370
+ heartbeatPromptChars: renderedPrompt.length,
371
+ };
372
+ const buildArgs = (resumeSessionId) => {
373
+ const args = ["exec", "--json", "--disable", "plugins"];
374
+ if (search)
375
+ args.unshift("--search");
376
+ if (bypass)
377
+ args.push("--dangerously-bypass-approvals-and-sandbox");
378
+ if (model)
379
+ args.push("--model", model);
380
+ if (modelReasoningEffort)
381
+ args.push("-c", `model_reasoning_effort=${JSON.stringify(modelReasoningEffort)}`);
382
+ if (runtimeScene === "chat" && !hasCliArg(extraArgs, "--skip-git-repo-check")) {
383
+ args.push("--skip-git-repo-check");
384
+ }
385
+ if (extraArgs.length > 0)
386
+ args.push(...extraArgs);
387
+ args.push("-c", "skills.bundled.enabled=false");
388
+ if (resumeSessionId)
389
+ args.push("resume", resumeSessionId, "-");
390
+ else
391
+ args.push("-");
392
+ return args;
393
+ };
394
+ const runAttempt = async (resumeSessionId) => {
395
+ const args = buildArgs(resumeSessionId);
396
+ if (onMeta) {
397
+ await onMeta({
398
+ agentRuntimeType: "codex_local",
399
+ command,
400
+ cwd,
401
+ commandNotes,
402
+ commandArgs: args.map((value, idx) => {
403
+ if (idx === args.length - 1 && value !== "-")
404
+ return `<prompt ${prompt.length} chars>`;
405
+ return value;
406
+ }),
407
+ env: redactEnvForLogs(env),
408
+ prompt,
409
+ promptMetrics,
410
+ context,
411
+ });
412
+ }
413
+ let stderrBuffer = "";
414
+ const flushBufferedStderr = async (force) => {
415
+ if (!stderrBuffer)
416
+ return;
417
+ const { lines, remainder } = splitCompleteLines(stderrBuffer);
418
+ stderrBuffer = force ? "" : remainder;
419
+ const emittedLines = force ? [...lines, ...(remainder ? [remainder] : [])] : lines;
420
+ for (const line of emittedLines) {
421
+ if (isBenignCodexStderrLine(line))
422
+ continue;
423
+ await onLog("stderr", line);
424
+ }
425
+ };
426
+ const proc = await runChildProcess(runId, command, args, {
427
+ cwd,
428
+ env,
429
+ stdin: prompt,
430
+ timeoutSec,
431
+ graceSec,
432
+ onSpawn,
433
+ abortSignal: ctx.abortSignal,
434
+ onLog: async (stream, chunk) => {
435
+ if (stream !== "stderr") {
436
+ await onLog(stream, chunk);
437
+ return;
438
+ }
439
+ stderrBuffer += chunk;
440
+ await flushBufferedStderr(false);
441
+ },
442
+ });
443
+ await flushBufferedStderr(true);
444
+ const cleanedStderr = stripCodexBenignStderr(proc.stderr);
445
+ return {
446
+ proc: {
447
+ ...proc,
448
+ stderr: cleanedStderr,
449
+ },
450
+ rawStderr: proc.stderr,
451
+ parsed: parseCodexJsonl(proc.stdout),
452
+ };
453
+ };
454
+ const toResult = (attempt, clearSessionOnMissingSession = false) => {
455
+ if (attempt.proc.timedOut) {
456
+ return {
457
+ exitCode: attempt.proc.exitCode,
458
+ signal: attempt.proc.signal,
459
+ timedOut: true,
460
+ errorMessage: `Timed out after ${timeoutSec}s`,
461
+ clearSession: clearSessionOnMissingSession,
462
+ };
463
+ }
464
+ const resolvedSessionId = attempt.parsed.sessionId ?? runtimeSessionId ?? runtime.sessionId ?? null;
465
+ const resolvedSessionParams = resolvedSessionId
466
+ ? {
467
+ sessionId: resolvedSessionId,
468
+ cwd,
469
+ ...(workspaceId ? { workspaceId } : {}),
470
+ ...(workspaceRepoUrl ? { repoUrl: workspaceRepoUrl } : {}),
471
+ ...(workspaceRepoRef ? { repoRef: workspaceRepoRef } : {}),
472
+ }
473
+ : null;
474
+ const parsedError = typeof attempt.parsed.errorMessage === "string" ? attempt.parsed.errorMessage.trim() : "";
475
+ const stderrLine = firstMeaningfulErrorLine(attempt.proc.stderr);
476
+ const fallbackErrorMessage = parsedError ||
477
+ stderrLine ||
478
+ `Codex exited with code ${attempt.proc.exitCode ?? -1}`;
479
+ return {
480
+ exitCode: attempt.proc.exitCode,
481
+ signal: attempt.proc.signal,
482
+ timedOut: false,
483
+ errorMessage: (attempt.proc.exitCode ?? 0) === 0
484
+ ? null
485
+ : fallbackErrorMessage,
486
+ usage: attempt.parsed.usage,
487
+ sessionId: resolvedSessionId,
488
+ sessionParams: resolvedSessionParams,
489
+ sessionDisplayId: resolvedSessionId,
490
+ provider: "openai",
491
+ biller: resolveCodexBiller(effectiveEnv, billingType),
492
+ model,
493
+ billingType,
494
+ costUsd: null,
495
+ resultJson: {
496
+ stdout: attempt.proc.stdout,
497
+ stderr: attempt.proc.stderr,
498
+ },
499
+ summary: attempt.parsed.summary,
500
+ clearSession: Boolean(clearSessionOnMissingSession && !resolvedSessionId),
501
+ };
502
+ };
503
+ const initial = await runAttempt(sessionId);
504
+ if (sessionId &&
505
+ !initial.proc.timedOut &&
506
+ (initial.proc.exitCode ?? 0) !== 0 &&
507
+ isCodexUnknownSessionError(initial.proc.stdout, initial.rawStderr)) {
508
+ await onLog("stdout", `[rudder] Codex resume session "${sessionId}" is unavailable; retrying with a fresh session.\n`);
509
+ const retry = await runAttempt(null);
510
+ return toResult(retry, true);
511
+ }
512
+ return toResult(initial);
513
+ }
514
+ //# 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 } from "./execute.js";
2
+ export { listCodexSkills, syncCodexSkills } from "./skills.js";
3
+ export { testEnvironment } from "./test.js";
4
+ export { parseCodexJsonl, isCodexUnknownSessionError } from "./parse.js";
5
+ export { getQuotaWindows, readCodexAuthInfo, readCodexToken, fetchCodexQuota, fetchCodexRpcQuota, mapCodexRpcQuota, secondsToWindowLabel, fetchWithTimeout, codexHomeDir, } 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,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAM9E,eAAO,MAAM,YAAY,EAAE,wBA4C1B,CAAC"}
@@ -0,0 +1,57 @@
1
+ export { execute } from "./execute.js";
2
+ export { listCodexSkills, syncCodexSkills } from "./skills.js";
3
+ export { testEnvironment } from "./test.js";
4
+ export { parseCodexJsonl, isCodexUnknownSessionError } from "./parse.js";
5
+ export { getQuotaWindows, readCodexAuthInfo, readCodexToken, fetchCodexQuota, fetchCodexRpcQuota, mapCodexRpcQuota, secondsToWindowLabel, fetchWithTimeout, codexHomeDir, } from "./quota.js";
6
+ function readNonEmptyString(value) {
7
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
8
+ }
9
+ export const sessionCodec = {
10
+ deserialize(raw) {
11
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw))
12
+ return null;
13
+ const record = raw;
14
+ const sessionId = readNonEmptyString(record.sessionId) ?? readNonEmptyString(record.session_id);
15
+ if (!sessionId)
16
+ return null;
17
+ const cwd = readNonEmptyString(record.cwd) ??
18
+ readNonEmptyString(record.workdir) ??
19
+ readNonEmptyString(record.folder);
20
+ const workspaceId = readNonEmptyString(record.workspaceId) ?? readNonEmptyString(record.workspace_id);
21
+ const repoUrl = readNonEmptyString(record.repoUrl) ?? readNonEmptyString(record.repo_url);
22
+ const repoRef = readNonEmptyString(record.repoRef) ?? readNonEmptyString(record.repo_ref);
23
+ return {
24
+ sessionId,
25
+ ...(cwd ? { cwd } : {}),
26
+ ...(workspaceId ? { workspaceId } : {}),
27
+ ...(repoUrl ? { repoUrl } : {}),
28
+ ...(repoRef ? { repoRef } : {}),
29
+ };
30
+ },
31
+ serialize(params) {
32
+ if (!params)
33
+ return null;
34
+ const sessionId = readNonEmptyString(params.sessionId) ?? readNonEmptyString(params.session_id);
35
+ if (!sessionId)
36
+ return null;
37
+ const cwd = readNonEmptyString(params.cwd) ??
38
+ readNonEmptyString(params.workdir) ??
39
+ readNonEmptyString(params.folder);
40
+ const workspaceId = readNonEmptyString(params.workspaceId) ?? readNonEmptyString(params.workspace_id);
41
+ const repoUrl = readNonEmptyString(params.repoUrl) ?? readNonEmptyString(params.repo_url);
42
+ const repoRef = readNonEmptyString(params.repoRef) ?? readNonEmptyString(params.repo_ref);
43
+ return {
44
+ sessionId,
45
+ ...(cwd ? { cwd } : {}),
46
+ ...(workspaceId ? { workspaceId } : {}),
47
+ ...(repoUrl ? { repoUrl } : {}),
48
+ ...(repoRef ? { repoRef } : {}),
49
+ };
50
+ },
51
+ getDisplayId(params) {
52
+ if (!params)
53
+ return null;
54
+ return readNonEmptyString(params.sessionId) ?? readNonEmptyString(params.session_id);
55
+ },
56
+ };
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare function parseCodexJsonl(stdout: string): {
2
+ sessionId: string | null;
3
+ summary: string;
4
+ usage: {
5
+ inputTokens: number;
6
+ cachedInputTokens: number;
7
+ outputTokens: number;
8
+ };
9
+ errorMessage: string | null;
10
+ };
11
+ export declare function isCodexUnknownSessionError(stdout: string, stderr: string): boolean;
12
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/server/parse.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM;;;;;;;;;EA2D7C;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CASlF"}