@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.
- package/LICENSE +14 -0
- package/dist/cli/format-event.d.ts +2 -0
- package/dist/cli/format-event.d.ts.map +1 -0
- package/dist/cli/format-event.js +213 -0
- package/dist/cli/format-event.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/quota-probe.d.ts +3 -0
- package/dist/cli/quota-probe.d.ts.map +1 -0
- package/dist/cli/quota-probe.js +97 -0
- package/dist/cli/quota-probe.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/server/codex-home.d.ts +7 -0
- package/dist/server/codex-home.d.ts.map +1 -0
- package/dist/server/codex-home.js +456 -0
- package/dist/server/codex-home.js.map +1 -0
- package/dist/server/execute.d.ts +3 -0
- package/dist/server/execute.d.ts.map +1 -0
- package/dist/server/execute.js +514 -0
- package/dist/server/execute.js.map +1 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +57 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/parse.d.ts +12 -0
- package/dist/server/parse.d.ts.map +1 -0
- package/dist/server/parse.js +67 -0
- package/dist/server/parse.js.map +1 -0
- package/dist/server/quota.d.ts +64 -0
- package/dist/server/quota.d.ts.map +1 -0
- package/dist/server/quota.js +425 -0
- package/dist/server/quota.js.map +1 -0
- package/dist/server/skills.d.ts +7 -0
- package/dist/server/skills.d.ts.map +1 -0
- package/dist/server/skills.js +57 -0
- package/dist/server/skills.js.map +1 -0
- package/dist/server/test.d.ts +3 -0
- package/dist/server/test.d.ts.map +1 -0
- package/dist/server/test.js +194 -0
- package/dist/server/test.js.map +1 -0
- package/dist/ui/build-config.d.ts +3 -0
- package/dist/ui/build-config.d.ts.map +1 -0
- package/dist/ui/build-config.js +116 -0
- package/dist/ui/build-config.js.map +1 -0
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/parse-stdout.d.ts +3 -0
- package/dist/ui/parse-stdout.d.ts.map +1 -0
- package/dist/ui/parse-stdout.js +232 -0
- package/dist/ui/parse-stdout.js.map +1 -0
- package/package.json +62 -0
- package/skills/para-memory-files/SKILL.md +114 -0
- package/skills/para-memory-files/references/schemas.md +35 -0
- package/skills/rudder/SKILL.md +265 -0
- package/skills/rudder/references/api-reference.md +253 -0
- package/skills/rudder/references/cli-reference.md +67 -0
- package/skills/rudder/references/organization-skills.md +155 -0
- package/skills/rudder-create-agent/SKILL.md +166 -0
- package/skills/rudder-create-agent/references/api-reference.md +172 -0
- package/skills/rudder-create-agent/references/cli-reference.md +126 -0
- package/skills/rudder-create-plugin/SKILL.md +103 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
This package is part of the Rudder project.
|
|
2
|
+
|
|
3
|
+
Rudder began as a fork of an early version of Paperclip.
|
|
4
|
+
|
|
5
|
+
Licensing for this package follows the repository-level transition:
|
|
6
|
+
- new Rudder contributions are made under the Apache License, Version 2.0
|
|
7
|
+
- upstream-derived Paperclip portions preserve the original MIT notice where applicable
|
|
8
|
+
|
|
9
|
+
Canonical project-level license and attribution texts live in the source repository:
|
|
10
|
+
- `LICENSE`
|
|
11
|
+
- `NOTICE`
|
|
12
|
+
- `LICENSES/MIT-PAPERCLIP`
|
|
13
|
+
|
|
14
|
+
Source repository: https://github.com/Undertone0809/rudder
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-event.d.ts","sourceRoot":"","sources":["../../src/cli/format-event.ts"],"names":[],"mappings":"AA6IA,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAuFxE"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import pc from "picocolors";
|
|
2
|
+
function asRecord(value) {
|
|
3
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
4
|
+
return null;
|
|
5
|
+
return value;
|
|
6
|
+
}
|
|
7
|
+
function asString(value, fallback = "") {
|
|
8
|
+
return typeof value === "string" ? value : fallback;
|
|
9
|
+
}
|
|
10
|
+
function asNumber(value, fallback = 0) {
|
|
11
|
+
return typeof value === "number" && Number.isFinite(value) ? value : fallback;
|
|
12
|
+
}
|
|
13
|
+
function errorText(value) {
|
|
14
|
+
if (typeof value === "string")
|
|
15
|
+
return value;
|
|
16
|
+
const rec = asRecord(value);
|
|
17
|
+
if (!rec)
|
|
18
|
+
return "";
|
|
19
|
+
const msg = (typeof rec.message === "string" && rec.message) ||
|
|
20
|
+
(typeof rec.error === "string" && rec.error) ||
|
|
21
|
+
(typeof rec.code === "string" && rec.code) ||
|
|
22
|
+
"";
|
|
23
|
+
if (msg)
|
|
24
|
+
return msg;
|
|
25
|
+
try {
|
|
26
|
+
return JSON.stringify(rec);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return "";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function printItemStarted(item) {
|
|
33
|
+
const itemType = asString(item.type);
|
|
34
|
+
if (itemType === "command_execution") {
|
|
35
|
+
const command = asString(item.command);
|
|
36
|
+
console.log(pc.yellow("tool_call: command_execution"));
|
|
37
|
+
if (command)
|
|
38
|
+
console.log(pc.gray(command));
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
if (itemType === "tool_use") {
|
|
42
|
+
const name = asString(item.name, "unknown");
|
|
43
|
+
console.log(pc.yellow(`tool_call: ${name}`));
|
|
44
|
+
if (item.input !== undefined) {
|
|
45
|
+
try {
|
|
46
|
+
console.log(pc.gray(JSON.stringify(item.input, null, 2)));
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
console.log(pc.gray(String(item.input)));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
function printItemCompleted(item) {
|
|
57
|
+
const itemType = asString(item.type);
|
|
58
|
+
if (itemType === "agent_message") {
|
|
59
|
+
const text = asString(item.text);
|
|
60
|
+
if (text)
|
|
61
|
+
console.log(pc.green(`assistant: ${text}`));
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
if (itemType === "reasoning") {
|
|
65
|
+
const text = asString(item.text);
|
|
66
|
+
if (text)
|
|
67
|
+
console.log(pc.gray(`thinking: ${text}`));
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
if (itemType === "tool_use") {
|
|
71
|
+
const name = asString(item.name, "unknown");
|
|
72
|
+
console.log(pc.yellow(`tool_call: ${name}`));
|
|
73
|
+
if (item.input !== undefined) {
|
|
74
|
+
try {
|
|
75
|
+
console.log(pc.gray(JSON.stringify(item.input, null, 2)));
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
console.log(pc.gray(String(item.input)));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
if (itemType === "command_execution") {
|
|
84
|
+
const command = asString(item.command);
|
|
85
|
+
const status = asString(item.status);
|
|
86
|
+
const exitCode = typeof item.exit_code === "number" && Number.isFinite(item.exit_code) ? item.exit_code : null;
|
|
87
|
+
const output = asString(item.aggregated_output).replace(/\s+$/, "");
|
|
88
|
+
const isError = (exitCode !== null && exitCode !== 0) ||
|
|
89
|
+
status === "failed" ||
|
|
90
|
+
status === "errored" ||
|
|
91
|
+
status === "error" ||
|
|
92
|
+
status === "cancelled";
|
|
93
|
+
const summaryParts = [
|
|
94
|
+
"tool_result: command_execution",
|
|
95
|
+
command ? `command="${command}"` : "",
|
|
96
|
+
status ? `status=${status}` : "",
|
|
97
|
+
exitCode !== null ? `exit_code=${exitCode}` : "",
|
|
98
|
+
].filter(Boolean);
|
|
99
|
+
console.log((isError ? pc.red : pc.cyan)(summaryParts.join(" ")));
|
|
100
|
+
if (output)
|
|
101
|
+
console.log((isError ? pc.red : pc.gray)(output));
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
if (itemType === "file_change") {
|
|
105
|
+
const changes = Array.isArray(item.changes) ? item.changes : [];
|
|
106
|
+
const entries = changes
|
|
107
|
+
.map((changeRaw) => asRecord(changeRaw))
|
|
108
|
+
.filter((change) => Boolean(change))
|
|
109
|
+
.map((change) => {
|
|
110
|
+
const kind = asString(change.kind, "update");
|
|
111
|
+
const path = asString(change.path, "unknown");
|
|
112
|
+
return `${kind} ${path}`;
|
|
113
|
+
});
|
|
114
|
+
const preview = entries.length > 0 ? entries.slice(0, 6).join(", ") : "none";
|
|
115
|
+
const more = entries.length > 6 ? ` (+${entries.length - 6} more)` : "";
|
|
116
|
+
console.log(pc.cyan(`file_change: ${preview}${more}`));
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
if (itemType === "error") {
|
|
120
|
+
const message = errorText(item.message ?? item.error ?? item);
|
|
121
|
+
if (message)
|
|
122
|
+
console.log(pc.red(`error: ${message}`));
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
if (itemType === "tool_result") {
|
|
126
|
+
const isError = item.is_error === true || asString(item.status) === "error";
|
|
127
|
+
const text = asString(item.content) || asString(item.result) || asString(item.output);
|
|
128
|
+
console.log((isError ? pc.red : pc.cyan)(`tool_result${isError ? " (error)" : ""}`));
|
|
129
|
+
if (text)
|
|
130
|
+
console.log((isError ? pc.red : pc.gray)(text));
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
export function printCodexStreamEvent(raw, _debug) {
|
|
136
|
+
const line = raw.trim();
|
|
137
|
+
if (!line)
|
|
138
|
+
return;
|
|
139
|
+
let parsed = null;
|
|
140
|
+
try {
|
|
141
|
+
parsed = JSON.parse(line);
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
console.log(line);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const type = asString(parsed.type);
|
|
148
|
+
if (type === "thread.started") {
|
|
149
|
+
const threadId = asString(parsed.thread_id);
|
|
150
|
+
const model = asString(parsed.model);
|
|
151
|
+
const details = [threadId ? `session: ${threadId}` : "", model ? `model: ${model}` : ""].filter(Boolean).join(", ");
|
|
152
|
+
console.log(pc.blue(`Codex thread started${details ? ` (${details})` : ""}`));
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (type === "turn.started") {
|
|
156
|
+
console.log(pc.blue("turn started"));
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
if (type === "item.started" || type === "item.completed") {
|
|
160
|
+
const item = asRecord(parsed.item);
|
|
161
|
+
if (item) {
|
|
162
|
+
const handled = type === "item.started"
|
|
163
|
+
? printItemStarted(item)
|
|
164
|
+
: printItemCompleted(item);
|
|
165
|
+
if (!handled) {
|
|
166
|
+
const itemType = asString(item.type, "unknown");
|
|
167
|
+
const id = asString(item.id);
|
|
168
|
+
const status = asString(item.status);
|
|
169
|
+
const meta = [id ? `id=${id}` : "", status ? `status=${status}` : ""].filter(Boolean).join(" ");
|
|
170
|
+
console.log(pc.gray(`${type}: ${itemType}${meta ? ` (${meta})` : ""}`));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
console.log(pc.gray(type));
|
|
175
|
+
}
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if (type === "turn.completed") {
|
|
179
|
+
const usage = asRecord(parsed.usage);
|
|
180
|
+
const input = asNumber(usage?.input_tokens);
|
|
181
|
+
const output = asNumber(usage?.output_tokens);
|
|
182
|
+
const cached = asNumber(usage?.cached_input_tokens, asNumber(usage?.cache_read_input_tokens));
|
|
183
|
+
const cost = asNumber(parsed.total_cost_usd);
|
|
184
|
+
const isError = parsed.is_error === true;
|
|
185
|
+
const subtype = asString(parsed.subtype);
|
|
186
|
+
const errors = Array.isArray(parsed.errors) ? parsed.errors.map(errorText).filter(Boolean) : [];
|
|
187
|
+
console.log(pc.blue(`tokens: in=${input} out=${output} cached=${cached} cost=$${cost.toFixed(6)}`));
|
|
188
|
+
if (subtype || isError || errors.length > 0) {
|
|
189
|
+
console.log(pc.red(`result: subtype=${subtype || "unknown"} is_error=${isError ? "true" : "false"}`));
|
|
190
|
+
if (errors.length > 0)
|
|
191
|
+
console.log(pc.red(`errors: ${errors.join(" | ")}`));
|
|
192
|
+
}
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (type === "turn.failed") {
|
|
196
|
+
const usage = asRecord(parsed.usage);
|
|
197
|
+
const input = asNumber(usage?.input_tokens);
|
|
198
|
+
const output = asNumber(usage?.output_tokens);
|
|
199
|
+
const cached = asNumber(usage?.cached_input_tokens, asNumber(usage?.cache_read_input_tokens));
|
|
200
|
+
const message = errorText(parsed.error ?? parsed.message);
|
|
201
|
+
console.log(pc.red(`turn failed${message ? `: ${message}` : ""}`));
|
|
202
|
+
console.log(pc.blue(`tokens: in=${input} out=${output} cached=${cached}`));
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
if (type === "error") {
|
|
206
|
+
const message = errorText(parsed.message ?? parsed.error ?? parsed);
|
|
207
|
+
if (message)
|
|
208
|
+
console.log(pc.red(`error: ${message}`));
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
console.log(line);
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=format-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-event.js","sourceRoot":"","sources":["../../src/cli/format-event.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-probe.d.ts","sourceRoot":"","sources":["../../src/cli/quota-probe.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { fetchCodexQuota, fetchCodexRpcQuota, getQuotaWindows, readCodexAuthInfo, readCodexToken, } from "../server/quota.js";
|
|
3
|
+
function parseArgs(argv) {
|
|
4
|
+
return {
|
|
5
|
+
json: argv.includes("--json"),
|
|
6
|
+
rpcOnly: argv.includes("--rpc-only"),
|
|
7
|
+
whamOnly: argv.includes("--wham-only"),
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
function stringifyError(error) {
|
|
11
|
+
return error instanceof Error ? error.message : String(error);
|
|
12
|
+
}
|
|
13
|
+
async function main() {
|
|
14
|
+
const args = parseArgs(process.argv.slice(2));
|
|
15
|
+
if (args.rpcOnly && args.whamOnly) {
|
|
16
|
+
throw new Error("Choose either --rpc-only or --wham-only, not both.");
|
|
17
|
+
}
|
|
18
|
+
const auth = await readCodexAuthInfo();
|
|
19
|
+
const token = await readCodexToken();
|
|
20
|
+
const result = {
|
|
21
|
+
timestamp: new Date().toISOString(),
|
|
22
|
+
auth,
|
|
23
|
+
tokenAvailable: token != null,
|
|
24
|
+
};
|
|
25
|
+
if (!args.whamOnly) {
|
|
26
|
+
try {
|
|
27
|
+
result.rpc = {
|
|
28
|
+
ok: true,
|
|
29
|
+
...(await fetchCodexRpcQuota()),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
result.rpc = {
|
|
34
|
+
ok: false,
|
|
35
|
+
error: stringifyError(error),
|
|
36
|
+
windows: [],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (!args.rpcOnly) {
|
|
41
|
+
if (!token) {
|
|
42
|
+
result.wham = {
|
|
43
|
+
ok: false,
|
|
44
|
+
error: "No local Codex auth token found in ~/.codex/auth.json.",
|
|
45
|
+
windows: [],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
try {
|
|
50
|
+
result.wham = {
|
|
51
|
+
ok: true,
|
|
52
|
+
windows: await fetchCodexQuota(token.token, token.accountId),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
result.wham = {
|
|
57
|
+
ok: false,
|
|
58
|
+
error: stringifyError(error),
|
|
59
|
+
windows: [],
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (!args.rpcOnly && !args.whamOnly) {
|
|
65
|
+
try {
|
|
66
|
+
result.aggregated = await getQuotaWindows();
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
result.aggregated = {
|
|
70
|
+
ok: false,
|
|
71
|
+
error: stringifyError(error),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const rpcOk = result.rpc?.ok === true;
|
|
76
|
+
const whamOk = result.wham?.ok === true;
|
|
77
|
+
const aggregatedOk = result.aggregated?.ok === true;
|
|
78
|
+
const ok = rpcOk || whamOk || aggregatedOk;
|
|
79
|
+
if (args.json || process.stdout.isTTY === false) {
|
|
80
|
+
console.log(JSON.stringify({ ok, ...result }, null, 2));
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
console.log(`timestamp: ${result.timestamp}`);
|
|
84
|
+
console.log(`auth: ${JSON.stringify(auth)}`);
|
|
85
|
+
console.log(`tokenAvailable: ${token != null}`);
|
|
86
|
+
if (result.rpc)
|
|
87
|
+
console.log(`rpc: ${JSON.stringify(result.rpc, null, 2)}`);
|
|
88
|
+
if (result.wham)
|
|
89
|
+
console.log(`wham: ${JSON.stringify(result.wham, null, 2)}`);
|
|
90
|
+
if (result.aggregated)
|
|
91
|
+
console.log(`aggregated: ${JSON.stringify(result.aggregated, null, 2)}`);
|
|
92
|
+
}
|
|
93
|
+
if (!ok)
|
|
94
|
+
process.exitCode = 1;
|
|
95
|
+
}
|
|
96
|
+
await main();
|
|
97
|
+
//# sourceMappingURL=quota-probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-probe.js","sourceRoot":"","sources":["../../src/cli/quota-probe.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const type = "codex_local";
|
|
2
|
+
export declare const label = "Codex (local)";
|
|
3
|
+
export declare const DEFAULT_CODEX_LOCAL_MODEL = "gpt-5.5";
|
|
4
|
+
export declare const DEFAULT_CODEX_LOCAL_BYPASS_APPROVALS_AND_SANDBOX = true;
|
|
5
|
+
export declare const models: {
|
|
6
|
+
id: string;
|
|
7
|
+
label: string;
|
|
8
|
+
}[];
|
|
9
|
+
export declare const agentConfigurationDoc = "# codex_local agent configuration\n\nAdapter: codex_local\n\nCore fields:\n- cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)\n- instructionsFilePath (string, optional): absolute path to a markdown instructions file prepended to stdin prompt at runtime\n- model (string, optional): Codex model id\n- modelReasoningEffort (string, optional): reasoning effort override (minimal|low|medium|high) passed via -c model_reasoning_effort=...\n- promptTemplate (string, optional): run prompt template\n- search (boolean, optional): run codex with --search\n- dangerouslyBypassApprovalsAndSandbox (boolean, optional): run with bypass flag\n- command (string, optional): defaults to \"codex\"\n- extraArgs (string[], optional): additional CLI args\n- env (object, optional): KEY=VALUE environment variables\n- workspaceStrategy (object, optional): execution workspace strategy; currently supports { type: \"git_worktree\", baseRef?, branchTemplate?, worktreeParentDir? }\n- workspaceRuntime (object, optional): workspace runtime service intents; local host-managed services are realized before Codex starts and exposed back via context/env\n\nOperational fields:\n- timeoutSec (number, optional): run timeout in seconds\n- graceSec (number, optional): SIGTERM grace period in seconds\n\nNotes:\n- Prompts are piped via stdin (Codex receives \"-\" prompt argument).\n- If instructionsFilePath is configured, Rudder prepends that file's contents to the stdin prompt on every run.\n- Codex exec automatically applies repo-scoped AGENTS.md instructions from the active workspace. Rudder cannot suppress that discovery in exec mode, so repo AGENTS.md files may still apply even when you only configured an explicit instructionsFilePath.\n- Agent enabled-skill state is controlled only by Rudder's bundled skills plus the selections saved on the agent's Skills page.\n- The codex_local adapter does not materialize skills into repo-scoped \".agents/skills\"; it realizes selected skills by linking them into the Rudder-managed `CODEX_HOME/skills` directory that Codex discovers at runtime.\n- Unless explicitly overridden in adapter config, Rudder runs Codex with a per-agent managed CODEX_HOME under the active Rudder instance and seeds auth/config from the shared Codex home (the CODEX_HOME env var, when set, or ~/.codex).\n- Rudder also isolates the child process HOME/USERPROFILE away from the operator's real home so Codex does not auto-discover unrelated global skills from ~/.agents/skills during agent runs.\n- Some model/tool combinations reject certain effort levels (for example minimal with web search enabled).\n- When Rudder realizes a workspace/runtime for a run, it injects RUDDER_WORKSPACE_* and RUDDER_RUNTIME_* env vars for agent-side tooling.\n";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,gBAAgB,CAAC;AAClC,eAAO,MAAM,KAAK,kBAAkB,CAAC;AACrC,eAAO,MAAM,yBAAyB,YAAY,CAAC;AACnD,eAAO,MAAM,gDAAgD,OAAO,CAAC;AAErE,eAAO,MAAM,MAAM;;;GAWlB,CAAC;AAEF,eAAO,MAAM,qBAAqB,6wFAgCjC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export const type = "codex_local";
|
|
2
|
+
export const label = "Codex (local)";
|
|
3
|
+
export const DEFAULT_CODEX_LOCAL_MODEL = "gpt-5.5";
|
|
4
|
+
export const DEFAULT_CODEX_LOCAL_BYPASS_APPROVALS_AND_SANDBOX = true;
|
|
5
|
+
export const models = [
|
|
6
|
+
{ id: DEFAULT_CODEX_LOCAL_MODEL, label: DEFAULT_CODEX_LOCAL_MODEL },
|
|
7
|
+
{ id: "gpt-5.4", label: "gpt-5.4" },
|
|
8
|
+
{ id: "gpt-5.3-codex-spark", label: "gpt-5.3-codex-spark" },
|
|
9
|
+
{ id: "gpt-5", label: "gpt-5" },
|
|
10
|
+
{ id: "o3", label: "o3" },
|
|
11
|
+
{ id: "o4-mini", label: "o4-mini" },
|
|
12
|
+
{ id: "gpt-5-mini", label: "gpt-5-mini" },
|
|
13
|
+
{ id: "gpt-5-nano", label: "gpt-5-nano" },
|
|
14
|
+
{ id: "o3-mini", label: "o3-mini" },
|
|
15
|
+
{ id: "codex-mini-latest", label: "Codex Mini" },
|
|
16
|
+
];
|
|
17
|
+
export const agentConfigurationDoc = `# codex_local agent configuration
|
|
18
|
+
|
|
19
|
+
Adapter: codex_local
|
|
20
|
+
|
|
21
|
+
Core fields:
|
|
22
|
+
- cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)
|
|
23
|
+
- instructionsFilePath (string, optional): absolute path to a markdown instructions file prepended to stdin prompt at runtime
|
|
24
|
+
- model (string, optional): Codex model id
|
|
25
|
+
- modelReasoningEffort (string, optional): reasoning effort override (minimal|low|medium|high) passed via -c model_reasoning_effort=...
|
|
26
|
+
- promptTemplate (string, optional): run prompt template
|
|
27
|
+
- search (boolean, optional): run codex with --search
|
|
28
|
+
- dangerouslyBypassApprovalsAndSandbox (boolean, optional): run with bypass flag
|
|
29
|
+
- command (string, optional): defaults to "codex"
|
|
30
|
+
- extraArgs (string[], optional): additional CLI args
|
|
31
|
+
- env (object, optional): KEY=VALUE environment variables
|
|
32
|
+
- workspaceStrategy (object, optional): execution workspace strategy; currently supports { type: "git_worktree", baseRef?, branchTemplate?, worktreeParentDir? }
|
|
33
|
+
- workspaceRuntime (object, optional): workspace runtime service intents; local host-managed services are realized before Codex starts and exposed back via context/env
|
|
34
|
+
|
|
35
|
+
Operational fields:
|
|
36
|
+
- timeoutSec (number, optional): run timeout in seconds
|
|
37
|
+
- graceSec (number, optional): SIGTERM grace period in seconds
|
|
38
|
+
|
|
39
|
+
Notes:
|
|
40
|
+
- Prompts are piped via stdin (Codex receives "-" prompt argument).
|
|
41
|
+
- If instructionsFilePath is configured, Rudder prepends that file's contents to the stdin prompt on every run.
|
|
42
|
+
- Codex exec automatically applies repo-scoped AGENTS.md instructions from the active workspace. Rudder cannot suppress that discovery in exec mode, so repo AGENTS.md files may still apply even when you only configured an explicit instructionsFilePath.
|
|
43
|
+
- Agent enabled-skill state is controlled only by Rudder's bundled skills plus the selections saved on the agent's Skills page.
|
|
44
|
+
- The codex_local adapter does not materialize skills into repo-scoped ".agents/skills"; it realizes selected skills by linking them into the Rudder-managed \`CODEX_HOME/skills\` directory that Codex discovers at runtime.
|
|
45
|
+
- Unless explicitly overridden in adapter config, Rudder runs Codex with a per-agent managed CODEX_HOME under the active Rudder instance and seeds auth/config from the shared Codex home (the CODEX_HOME env var, when set, or ~/.codex).
|
|
46
|
+
- Rudder also isolates the child process HOME/USERPROFILE away from the operator's real home so Codex does not auto-discover unrelated global skills from ~/.agents/skills during agent runs.
|
|
47
|
+
- Some model/tool combinations reject certain effort levels (for example minimal with web search enabled).
|
|
48
|
+
- When Rudder realizes a workspace/runtime for a run, it injects RUDDER_WORKSPACE_* and RUDDER_RUNTIME_* env vars for agent-side tooling.
|
|
49
|
+
`;
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC;AAClC,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAC;AACrC,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAS,CAAC;AACnD,MAAM,CAAC,MAAM,gDAAgD,GAAG,IAAI,CAAC;AAErE,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,EAAE,EAAE,EAAE,yBAAyB,EAAE,KAAK,EAAE,yBAAyB,EAAE;IACnE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACnC,EAAE,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,qBAAqB,EAAE;IAC3D,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IAC/B,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IACzB,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACnC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;IACzC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;IACzC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACnC,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,YAAY,EAAE;CACjD,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCpC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AgentRuntimeExecutionContext } from "@rudderhq/agent-runtime-utils";
|
|
2
|
+
export declare function pathExists(candidate: string): Promise<boolean>;
|
|
3
|
+
export declare function resolveSharedCodexHomeDir(env?: NodeJS.ProcessEnv): string;
|
|
4
|
+
export declare function resolveManagedCodexHomeDir(env: NodeJS.ProcessEnv, orgId?: string, agentId?: string): string;
|
|
5
|
+
export declare function prepareManagedCodexHome(env: NodeJS.ProcessEnv, onLog: AgentRuntimeExecutionContext["onLog"], orgId?: string, agentId?: string): Promise<string>;
|
|
6
|
+
export declare function realizeManagedCodexSkillEntries(env: NodeJS.ProcessEnv, codexHome: string, skillSources: string[], onLog: AgentRuntimeExecutionContext["onLog"]): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=codex-home.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-home.d.ts","sourceRoot":"","sources":["../../src/server/codex-home.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AA0ClF,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpE;AAED,wBAAgB,yBAAyB,CACvC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAGR;AAMD,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAkBR;AAqYD,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,KAAK,EAAE,4BAA4B,CAAC,OAAO,CAAC,EAC5C,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAgCjB;AAiED,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,4BAA4B,CAAC,OAAO,CAAC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAQf"}
|