@iamdevlinph/codex-kit 1.0.2 → 1.0.4
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/README.md +13 -2
- package/assets/SUBAGENT_ROUTING.md +16 -10
- package/bin/codex-kit.js +29 -18
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -27,13 +27,23 @@ For one-off use without a global installation, prefix a command with
|
|
|
27
27
|
`global install` copies reusable agents to `${CODEX_HOME:-~/.codex}` and
|
|
28
28
|
maintains a marked routing section in the global `AGENTS.md`.
|
|
29
29
|
|
|
30
|
+
The Sol root agent plans, coordinates, and validates. All project-file changes,
|
|
31
|
+
including small one-file edits, are delegated to a Luna `quick-implementer` or
|
|
32
|
+
`implementer`; the selected implementation agent edits directly without further
|
|
33
|
+
delegation.
|
|
34
|
+
|
|
30
35
|
`global configure` sets these defaults while preserving unrelated settings:
|
|
31
36
|
|
|
32
37
|
```toml
|
|
33
38
|
model = "gpt-5.6-sol"
|
|
34
39
|
model_reasoning_effort = "high"
|
|
40
|
+
plan_mode_reasoning_effort = "high"
|
|
35
41
|
```
|
|
36
42
|
|
|
43
|
+
Before changing these keys, codex-kit creates a timestamped `config.toml`
|
|
44
|
+
backup and records their previous values. `global uninstall` restores those
|
|
45
|
+
values without replacing unrelated configuration changed afterward.
|
|
46
|
+
|
|
37
47
|
Use a different Codex home when needed:
|
|
38
48
|
|
|
39
49
|
```sh
|
|
@@ -49,8 +59,9 @@ Inspect the installed setup:
|
|
|
49
59
|
pnpm dlx @iamdevlinph/codex-kit@latest global list
|
|
50
60
|
```
|
|
51
61
|
|
|
52
|
-
The summary shows the Codex home, orchestrator,
|
|
53
|
-
status, and installed custom agents without dumping unrelated
|
|
62
|
+
The summary shows the Codex home, orchestrator, normal and Plan-mode reasoning
|
|
63
|
+
effort, routing status, and installed custom agents without dumping unrelated
|
|
64
|
+
configuration.
|
|
54
65
|
|
|
55
66
|
Uninstall package-managed global files:
|
|
56
67
|
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
# Subagent Routing
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
The root parent is the Sol planner and orchestrator. It must delegate all
|
|
4
|
+
file-changing implementation to a Luna implementation agent. The user does not
|
|
5
|
+
need to request subagents explicitly.
|
|
6
6
|
|
|
7
7
|
The parent owns requirements, architecture, integration, and final validation.
|
|
8
8
|
Never delegate the overall objective. Avoid parallel write-heavy work and never
|
|
9
9
|
assign overlapping files to multiple agents.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
For any task that creates, edits, or deletes project files, delegate the work to
|
|
12
|
+
exactly one of `quick-implementer` or `implementer`. Include bookkeeping commands
|
|
13
|
+
that write project state in that assignment. The parent may perform read-only
|
|
14
|
+
inspection and final validation, but must not make the project-file changes itself.
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
These routing rules apply to the root parent. An implementation subagent performs
|
|
17
|
+
its assigned edits directly and must not delegate them again. Do not delegate
|
|
18
|
+
trivial conversation or straightforward read-only commands. A slow command alone
|
|
19
|
+
is not a reason to delegate.
|
|
20
|
+
|
|
21
|
+
For delegated work:
|
|
16
22
|
|
|
17
23
|
- Prefer one subagent. Add more only for independent, non-overlapping work.
|
|
18
24
|
- Give each agent a bounded task and request a concise, decision-ready report.
|
|
@@ -27,9 +33,9 @@ Select custom agents by exact name:
|
|
|
27
33
|
- Multi-file behavior change, debugging, or substantial tests: `implementer`
|
|
28
34
|
- Independent review of high-risk or difficult-to-validate changes: `code-reviewer`
|
|
29
35
|
|
|
30
|
-
Use either `quick-implementer` or `implementer` for a change, not both.
|
|
31
|
-
lowest reasoning effort that reliably fits the work. Do not
|
|
32
|
-
agent when a matching custom role is available.
|
|
36
|
+
Use either `quick-implementer` or `implementer` for a change, not both. Both roles
|
|
37
|
+
run Luna; use the lowest reasoning effort that reliably fits the work. Do not
|
|
38
|
+
substitute a generic agent when a matching custom role is available.
|
|
33
39
|
|
|
34
40
|
There is no commit-pusher role. Never delegate Git publishing. Do not stage,
|
|
35
41
|
commit, or push unless the user explicitly requests that operation in the current
|
package/bin/codex-kit.js
CHANGED
|
@@ -71,7 +71,7 @@ function topLevelConfigEntries(contents) {
|
|
|
71
71
|
}
|
|
72
72
|
if (inTable)
|
|
73
73
|
continue;
|
|
74
|
-
const match = /^(\s*)(model|model_reasoning_effort)\s*=\s*(.*?)\s*$/.exec(line);
|
|
74
|
+
const match = /^(\s*)(model|model_reasoning_effort|plan_mode_reasoning_effort)\s*=\s*(.*?)\s*$/.exec(line);
|
|
75
75
|
const key = match?.[2];
|
|
76
76
|
const value = match?.[3];
|
|
77
77
|
if (key && value !== undefined && !entries.has(key))
|
|
@@ -97,7 +97,7 @@ function setTopLevelConfig(contents, desired) {
|
|
|
97
97
|
const line = lines[index];
|
|
98
98
|
if (line === undefined)
|
|
99
99
|
continue;
|
|
100
|
-
const match = /^(\s*)(model|model_reasoning_effort)\s*=\s*(.*?)\s*$/.exec(line);
|
|
100
|
+
const match = /^(\s*)(model|model_reasoning_effort|plan_mode_reasoning_effort)\s*=\s*(.*?)\s*$/.exec(line);
|
|
101
101
|
const key = match?.[2];
|
|
102
102
|
if (!match || !key || seen.has(key))
|
|
103
103
|
continue;
|
|
@@ -128,7 +128,7 @@ function restoreTopLevelConfig(contents, config) {
|
|
|
128
128
|
const line = lines[index];
|
|
129
129
|
if (line === undefined)
|
|
130
130
|
continue;
|
|
131
|
-
const match = /^(\s*)(model|model_reasoning_effort)\s*=\s*(.*?)\s*$/.exec(line);
|
|
131
|
+
const match = /^(\s*)(model|model_reasoning_effort|plan_mode_reasoning_effort)\s*=\s*(.*?)\s*$/.exec(line);
|
|
132
132
|
const key = match?.[2];
|
|
133
133
|
if (!match || !key || restored.has(key))
|
|
134
134
|
continue;
|
|
@@ -286,6 +286,7 @@ function configureGlobal(options) {
|
|
|
286
286
|
const desired = {
|
|
287
287
|
model: options.orchestrator,
|
|
288
288
|
model_reasoning_effort: options.reasoningEffort,
|
|
289
|
+
plan_mode_reasoning_effort: options.reasoningEffort,
|
|
289
290
|
};
|
|
290
291
|
const priorState = loadState(home);
|
|
291
292
|
const original = existsSync(configFile) ? readText(configFile) : "";
|
|
@@ -327,6 +328,7 @@ function configureGlobal(options) {
|
|
|
327
328
|
saveState(home, priorState);
|
|
328
329
|
console.log(`Orchestrator: ${desired.model}`);
|
|
329
330
|
console.log(`Reasoning effort: ${desired.model_reasoning_effort}`);
|
|
331
|
+
console.log(`Plan mode reasoning effort: ${desired.plan_mode_reasoning_effort}`);
|
|
330
332
|
}
|
|
331
333
|
function listGlobal(options) {
|
|
332
334
|
const home = options.codexHome;
|
|
@@ -353,6 +355,7 @@ function listGlobal(options) {
|
|
|
353
355
|
console.log(`Config: ${configFile}${existsSync(configFile) ? "" : " (missing)"}`);
|
|
354
356
|
console.log(`Orchestrator: ${value("model")}`);
|
|
355
357
|
console.log(`Reasoning effort: ${value("model_reasoning_effort")}`);
|
|
358
|
+
console.log(`Plan mode reasoning effort: ${value("plan_mode_reasoning_effort")}`);
|
|
356
359
|
console.log(`Kit state: ${existsSync(stateFile) ? state.version : "not installed"}`);
|
|
357
360
|
const hasRoutingBlock = existsSync(globalAgents) && readText(globalAgents).includes(GLOBAL_BEGIN);
|
|
358
361
|
console.log(`Global routing: ${hasRoutingBlock ? "installed" : "not installed"}`);
|
|
@@ -644,22 +647,30 @@ function help() {
|
|
|
644
647
|
console.log(`codex-kit ${PACKAGE.version}
|
|
645
648
|
|
|
646
649
|
Usage:
|
|
647
|
-
codex-kit
|
|
648
|
-
codex-kit global configure [--orchestrator MODEL] [--reasoning-effort LEVEL]
|
|
649
|
-
codex-kit global list [--codex-home PATH]
|
|
650
|
-
codex-kit global uninstall [--codex-home PATH]
|
|
651
|
-
codex-kit project init [--cwd PATH]
|
|
652
|
-
codex-kit project sync [--cwd PATH]
|
|
653
|
-
codex-kit project status [--cwd PATH]
|
|
654
|
-
codex-kit project mark-applied [--cwd PATH]
|
|
655
|
-
codex-kit version check
|
|
656
|
-
codex-kit --help
|
|
657
|
-
codex-kit --version
|
|
650
|
+
codex-kit <command> [options]
|
|
658
651
|
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
652
|
+
Commands:
|
|
653
|
+
global install Install or update package-owned agents and routing guidance.
|
|
654
|
+
global configure Set the orchestrator and normal/Plan reasoning defaults.
|
|
655
|
+
global list Show model settings, routing status, and custom agents.
|
|
656
|
+
global uninstall Restore managed config values and remove package-owned files.
|
|
657
|
+
project init Initialize AGENTS.md, TEMPLATE_AGENTS.md, and project state.
|
|
658
|
+
project sync Refresh TEMPLATE_AGENTS.md without editing AGENTS.md.
|
|
659
|
+
project status Show whether template changes still need reconciliation.
|
|
660
|
+
project mark-applied Record the current template as reconciled with AGENTS.md.
|
|
661
|
+
version check Compare the installed version with the latest npm release.
|
|
662
|
+
--help Show this help.
|
|
663
|
+
--version Print the installed version.
|
|
664
|
+
|
|
665
|
+
Options:
|
|
666
|
+
--codex-home PATH Use a Codex home other than CODEX_HOME or ~/.codex.
|
|
667
|
+
--cwd PATH Use a project directory other than the current directory.
|
|
668
|
+
--force Replace modified files or config managed by codex-kit.
|
|
669
|
+
--orchestrator MODEL Set the root/orchestrator model (default: gpt-5.6-sol).
|
|
670
|
+
--model MODEL Alias for --orchestrator.
|
|
671
|
+
--reasoning-effort LEVEL Set normal and Plan-mode effort (default: high).
|
|
672
|
+
|
|
673
|
+
Run a command with only its applicable options.`);
|
|
663
674
|
}
|
|
664
675
|
export function main(argv = process.argv.slice(2)) {
|
|
665
676
|
const options = parse(argv);
|