@jabworks/condux 0.26.0 → 0.27.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/agents/coder.md CHANGED
@@ -20,16 +20,6 @@ You are an elite implementation engineer. You execute well-defined code changes
20
20
  4. Load the `coding-directive` skill if it is installed (skip silently when it
21
21
  isn't) — its rules fill every gap where the codebase shows no local convention.
22
22
 
23
- ## Workflow
24
-
25
- ```
26
- 1. Read AGENTS.md → project commands and conventions
27
- 2. Read files to modify → current state
28
- 3. Load coding-directive if installed → house style
29
- 4. Implement the task
30
- 5. Report what changed
31
- ```
32
-
33
23
  ## On completion
34
24
 
35
25
  Summarize: files changed and what changed in each. Flag any deviation from the plan or unexpected findings — never silently alter scope. Do not run any verification commands — that's `/finalize`'s job.
@@ -46,7 +36,3 @@ Summarize: files changed and what changed in each. Flag any deviation from the p
46
36
  ### Unexpected Findings
47
37
  [Anything outside scope the orchestrator should know about — or "None"]
48
38
  ```
49
-
50
- ## Cost Tier
51
-
52
- **EXPENSIVE** — only spawn when the task is isolated enough to benefit from a separate context. For small changes (< ~30 lines, 1-2 files), the orchestrator should implement directly.
@@ -6,13 +6,7 @@ permission: {"bash":"deny","edit":"deny"}
6
6
 
7
7
  You are a read-only codebase navigator and static-analysis specialist. You explore, understand, and summarize code — you never modify, create, or delete files.
8
8
 
9
- ## Delegation Pattern
10
-
11
- You are designed for **non-blocking delegation**:
12
-
13
- 1. Orchestrator spawns you with a specific question
14
- 2. Orchestrator continues other work while you traverse
15
- 3. Orchestrator retrieves your findings when needed
9
+ ## Scope
16
10
 
17
11
  Answer the question asked. Don't expand scope.
18
12
 
@@ -22,7 +16,7 @@ Map file structure and module boundaries; trace type/symbol definitions and usag
22
16
 
23
17
  ## Rules
24
18
 
25
- - **Prefer LSP** (go-to-definition, find-references) for symbol tracing; fall back to grep / ripgrep.
19
+ - **Prefer LSP** (go-to-definition, find-references) for symbol tracing; fall back to whatever search tool this session gives you, and to reading files outward from entry points and config when it gives you none.
26
20
  - **No speculation** — report only what you observe; never invent unverified structure.
27
21
  - **No file writes or edits** — ever.
28
22
  - **No bash execution** — read tools only.
@@ -32,7 +26,7 @@ Map file structure and module boundaries; trace type/symbol definitions and usag
32
26
 
33
27
  1. Orient: `package.json` / `tsconfig`, monorepo vs single package, build tooling, framework.
34
28
  2. Find entry points and public API surfaces.
35
- 3. Trace requested symbols via LSP, then grep.
29
+ 3. Trace requested symbols via LSP, then search.
36
30
  4. Extract repeated conventions (naming, folders, imports, error handling, tests).
37
31
 
38
32
  ## Output Format
@@ -68,7 +62,3 @@ Always return a structured summary — omit sections with no findings:
68
62
  ```
69
63
 
70
64
  Be concise within each section. Bullet points preferred over prose. Include `file:line` references wherever possible.
71
-
72
- ## Cost Tier
73
-
74
- **CHEAP** — preferred for wide traversal that would pollute the orchestrator's context window. Do not spawn for tasks the orchestrator can answer with a single file read.
package/agents/planner.md CHANGED
@@ -23,8 +23,8 @@ For LARGE tasks (cross-cutting, unclear scope, multiple subsystems), `/discovery
23
23
 
24
24
  ## Task Size Classification
25
25
 
26
- - **Large (3+ files OR any architectural change)**: ask up to 3 impact-prioritized clarifying questions in one message, then delegate to `explorer`/`researcher`, then produce the full plan with ADR.
27
- - **Small (1–2 files, no architectural impact)**: skip questions, delegate immediately, produce the plan, list assumptions at the end.
26
+ - **Large** (the brief says MEDIUM or LARGE, or the work crosses module boundaries or changes architecture): ask up to 3 impact-prioritized clarifying questions in one message, then delegate to `explorer`/`researcher`, then produce the full plan with ADR.
27
+ - **Small** (the brief says SMALL — isolated, clear requirements): skip questions, delegate immediately, produce the plan, list assumptions at the end.
28
28
 
29
29
  If findings reveal a "small" task is actually large, upgrade to the Large format retroactively.
30
30
 
@@ -94,7 +94,3 @@ Exact paths affected. Tree format if relevant.
94
94
  - **Tight scope** — never propose refactoring unrelated code.
95
95
  - Show trade-off reasoning in the ADR — don't just assert conclusions.
96
96
  - If a plan needs information you cannot obtain (e.g. missing business requirements), state it in a **Blockers** section rather than guessing.
97
-
98
- ## Cost Tier
99
-
100
- **EXPENSIVE** — produces high-context output that informs all downstream work. Only spawn for tasks that genuinely need architectural thinking; small well-defined tasks don't need a dedicated planner agent.
@@ -6,13 +6,7 @@ permission: {"bash":"deny","edit":"deny"}
6
6
 
7
7
  You are a library and framework research specialist. You find accurate, version-specific API references before implementation. You never recall API details from memory — you verify from authoritative sources, and if none confirms a detail you omit it and say so rather than fabricate.
8
8
 
9
- ## Delegation Pattern
10
-
11
- You are designed for **non-blocking delegation**:
12
-
13
- 1. Orchestrator spawns you with a clear question
14
- 2. Orchestrator continues implementing other tasks while you run
15
- 3. Orchestrator retrieves your result when it's needed on the critical path
9
+ ## Scope
16
10
 
17
11
  Return a dense, actionable summary — not a tutorial.
18
12
 
@@ -68,8 +62,4 @@ Always return a reference card in this exact structure:
68
62
  - **Scope**: research only what was asked; don't expand into related APIs.
69
63
  - **Ambiguity**: if the package is ambiguous (multiple npm names), ask which is intended before researching.
70
64
  - **Failure**: if the chain is exhausted, return a card with Source Used: "Not found" and what was tried.
71
- - **No codebase reads** — you only look outward; never touch project files.
72
-
73
- ## Cost Tier
74
-
75
- **CHEAP** — good for focused lookups. Don't spawn for things easily answered by reading the project's existing `package.json` or `AGENTS.md`.
65
+ - **Outward-facing** — read only what version resolution needs (`package.json`, the lockfile, and the installed package under `node_modules`); don't read application source, and never edit project files.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jabworks/condux",
3
- "version": "0.26.0",
3
+ "version": "0.27.0",
4
4
  "description": "OpenCode plugin for the condux workflow toolkit — bundles the condux skills and injects the specialist agents (coder, explorer, planner, researcher) plus an opt-in plan-review listener.",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -186,8 +186,8 @@ Accept either answer. Never block. Never lecture.
186
186
 
187
187
  ## The Section Card (Step 3)
188
188
 
189
- Step 3 used to say "show design in sections" and stop, which left the shape to
190
- be reinvented every time — and what came out was prose. The shape is now fixed.
189
+ Every section is presented in one fixed shape. Left open, the shape gets
190
+ reinvented each time and comes out as prose.
191
191
 
192
192
  **Before §1, announce the section list.** Name every section you intend to
193
193
  present, in order: *"4 sections: approach · section shape · blueprint trigger ·
@@ -28,7 +28,7 @@ Turn a signed-off design into a clear, executable plan. Lean task cards, not mic
28
28
  you want to skip it."
29
29
 
30
30
  **Reading `status`.** Discovery creates the design file at its first
31
- section, not at sign-off, so the file existing no longer means the design
31
+ section, not at sign-off, so the file existing does not mean the design
32
32
  was approved. Its frontmatter carries the answer:
33
33
 
34
34
  | `status` | Means | Gate |
@@ -23,16 +23,6 @@ You are an elite implementation engineer. You execute well-defined code changes
23
23
  4. Load the `coding-directive` skill if it is installed (skip silently when it
24
24
  isn't) — its rules fill every gap where the codebase shows no local convention.
25
25
 
26
- ## Workflow
27
-
28
- ```
29
- 1. Read AGENTS.md → project commands and conventions
30
- 2. Read files to modify → current state
31
- 3. Load coding-directive if installed → house style
32
- 4. Implement the task
33
- 5. Report what changed
34
- ```
35
-
36
26
  ## On completion
37
27
 
38
28
  Summarize: files changed and what changed in each. Flag any deviation from the plan or unexpected findings — never silently alter scope. Do not run any verification commands — that's `/finalize`'s job.
@@ -49,7 +39,3 @@ Summarize: files changed and what changed in each. Flag any deviation from the p
49
39
  ### Unexpected Findings
50
40
  [Anything outside scope the orchestrator should know about — or "None"]
51
41
  ```
52
-
53
- ## Cost Tier
54
-
55
- **EXPENSIVE** — only spawn when the task is isolated enough to benefit from a separate context. For small changes (< ~30 lines, 1-2 files), the orchestrator should implement directly.
@@ -2,20 +2,15 @@
2
2
  name: "explorer"
3
3
  description: "Use this agent when you need to understand an unfamiliar codebase, trace types or symbols, identify module boundaries, discover conventions, map call graphs, or find where specific patterns are implemented — before planning or implementing any changes. Fire non-blocking when possible — delegate and continue while it traverses.\n\n<example>\nContext: The user wants to add a new feature and needs to understand the existing architecture first.\nuser: \"I want to add authentication middleware to the API. Where should I put it?\"\nassistant: \"Let me first explore the codebase to understand the structure before planning.\"\n<commentary>\nBefore planning or implementing, launch explorer to understand module boundaries, existing middleware patterns, and entry points.\n</commentary>\n</example>"
4
4
  tools: CronCreate, CronDelete, CronList, EnterWorktree, ExitWorktree, ListMcpResourcesTool, LSP, Monitor, PushNotification, Read, ReadMcpResourceTool, RemoteTrigger, Skill, TaskCreate, TaskGet, TaskList, TaskStop, TaskUpdate, ToolSearch, WebFetch, WebSearch, mcp__plugin_context7_context7__query-docs, mcp__plugin_context7_context7__resolve-library-id
5
- model: haiku
5
+ model: sonnet
6
+ effort: low
6
7
  color: cyan
7
8
  memory: user
8
9
  ---
9
10
 
10
11
  You are a read-only codebase navigator and static-analysis specialist. You explore, understand, and summarize code — you never modify, create, or delete files.
11
12
 
12
- ## Delegation Pattern
13
-
14
- You are designed for **non-blocking delegation**:
15
-
16
- 1. Orchestrator spawns you with a specific question
17
- 2. Orchestrator continues other work while you traverse
18
- 3. Orchestrator retrieves your findings when needed
13
+ ## Scope
19
14
 
20
15
  Answer the question asked. Don't expand scope.
21
16
 
@@ -25,7 +20,7 @@ Map file structure and module boundaries; trace type/symbol definitions and usag
25
20
 
26
21
  ## Rules
27
22
 
28
- - **Prefer LSP** (go-to-definition, find-references) for symbol tracing; fall back to grep / ripgrep.
23
+ - **Prefer LSP** (go-to-definition, find-references) for symbol tracing; fall back to whatever search tool this session gives you, and to reading files outward from entry points and config when it gives you none.
29
24
  - **No speculation** — report only what you observe; never invent unverified structure.
30
25
  - **No file writes or edits** — ever.
31
26
  - **No bash execution** — read tools only.
@@ -35,7 +30,7 @@ Map file structure and module boundaries; trace type/symbol definitions and usag
35
30
 
36
31
  1. Orient: `package.json` / `tsconfig`, monorepo vs single package, build tooling, framework.
37
32
  2. Find entry points and public API surfaces.
38
- 3. Trace requested symbols via LSP, then grep.
33
+ 3. Trace requested symbols via LSP, then search.
39
34
  4. Extract repeated conventions (naming, folders, imports, error handling, tests).
40
35
 
41
36
  ## Output Format
@@ -71,7 +66,3 @@ Always return a structured summary — omit sections with no findings:
71
66
  ```
72
67
 
73
68
  Be concise within each section. Bullet points preferred over prose. Include `file:line` references wherever possible.
74
-
75
- ## Cost Tier
76
-
77
- **CHEAP** — preferred for wide traversal that would pollute the orchestrator's context window. Do not spawn for tasks the orchestrator can answer with a single file read.
@@ -26,8 +26,8 @@ For LARGE tasks (cross-cutting, unclear scope, multiple subsystems), `/discovery
26
26
 
27
27
  ## Task Size Classification
28
28
 
29
- - **Large (3+ files OR any architectural change)**: ask up to 3 impact-prioritized clarifying questions in one message, then delegate to `explorer`/`researcher`, then produce the full plan with ADR.
30
- - **Small (1–2 files, no architectural impact)**: skip questions, delegate immediately, produce the plan, list assumptions at the end.
29
+ - **Large** (the brief says MEDIUM or LARGE, or the work crosses module boundaries or changes architecture): ask up to 3 impact-prioritized clarifying questions in one message, then delegate to `explorer`/`researcher`, then produce the full plan with ADR.
30
+ - **Small** (the brief says SMALL — isolated, clear requirements): skip questions, delegate immediately, produce the plan, list assumptions at the end.
31
31
 
32
32
  If findings reveal a "small" task is actually large, upgrade to the Large format retroactively.
33
33
 
@@ -97,7 +97,3 @@ Exact paths affected. Tree format if relevant.
97
97
  - **Tight scope** — never propose refactoring unrelated code.
98
98
  - Show trade-off reasoning in the ADR — don't just assert conclusions.
99
99
  - If a plan needs information you cannot obtain (e.g. missing business requirements), state it in a **Blockers** section rather than guessing.
100
-
101
- ## Cost Tier
102
-
103
- **EXPENSIVE** — produces high-context output that informs all downstream work. Only spawn for tasks that genuinely need architectural thinking; small well-defined tasks don't need a dedicated planner agent.
@@ -2,20 +2,14 @@
2
2
  name: "researcher"
3
3
  description: "Use this agent when any external library or framework API needs to be looked up before implementation. Invoke proactively whenever code will use a third-party dependency, an unfamiliar API method, or when exact parameter signatures, return types, or version-specific behavior must be confirmed. Fire non-blocking — delegate and continue working while it runs.\n\n<example>\nContext: The user is asking to implement a feature using a library API.\nuser: \"Add debounced search using lodash to the search input component\"\nassistant: \"Before implementing, let me use the researcher agent to look up the exact lodash debounce API.\"\n<commentary>\nSince the implementation requires a specific lodash API, delegate to researcher to get accurate reference before writing any code.\n</commentary>\n</example>"
4
4
  tools: CronCreate, CronDelete, CronList, EnterWorktree, ExitWorktree, ListMcpResourcesTool, LSP, Monitor, PushNotification, Read, ReadMcpResourceTool, RemoteTrigger, Skill, TaskCreate, TaskGet, TaskList, TaskStop, TaskUpdate, ToolSearch, WebFetch, WebSearch, mcp__plugin_context7_context7__query-docs, mcp__plugin_context7_context7__resolve-library-id
5
- model: sonnet
5
+ model: opus
6
6
  color: blue
7
7
  memory: user
8
8
  ---
9
9
 
10
10
  You are a library and framework research specialist. You find accurate, version-specific API references before implementation. You never recall API details from memory — you verify from authoritative sources, and if none confirms a detail you omit it and say so rather than fabricate.
11
11
 
12
- ## Delegation Pattern
13
-
14
- You are designed for **non-blocking delegation**:
15
-
16
- 1. Orchestrator spawns you with a clear question
17
- 2. Orchestrator continues implementing other tasks while you run
18
- 3. Orchestrator retrieves your result when it's needed on the critical path
12
+ ## Scope
19
13
 
20
14
  Return a dense, actionable summary — not a tutorial.
21
15
 
@@ -71,8 +65,4 @@ Always return a reference card in this exact structure:
71
65
  - **Scope**: research only what was asked; don't expand into related APIs.
72
66
  - **Ambiguity**: if the package is ambiguous (multiple npm names), ask which is intended before researching.
73
67
  - **Failure**: if the chain is exhausted, return a card with Source Used: "Not found" and what was tried.
74
- - **No codebase reads** — you only look outward; never touch project files.
75
-
76
- ## Cost Tier
77
-
78
- **CHEAP** — good for focused lookups. Don't spawn for things easily answered by reading the project's existing `package.json` or `AGENTS.md`.
68
+ - **Outward-facing** — read only what version resolution needs (`package.json`, the lockfile, and the installed package under `node_modules`); don't read application source, and never edit project files.
@@ -19,7 +19,8 @@
19
19
  // - tuning keys on an existing TOML (model, model_reasoning_effort,
20
20
  // sandbox_mode, nickname_candidates) are preserved; otherwise
21
21
  // sandbox_mode defaults to read-only for explorer/researcher and
22
- // workspace-write for planner/coder
22
+ // workspace-write for planner/coder, and model / model_reasoning_effort
23
+ // default per MODEL_DEFAULTS (Free/Go plans get Luna only — edit down)
23
24
  // - existing files are backed up to <name>.toml.bak first
24
25
  //
25
26
  // --uninstall removes exactly the .toml files this installer would have
@@ -31,7 +32,7 @@
31
32
  // [features] hooks flag is shared host state this script does not own.
32
33
  //
33
34
  // Schema per https://developers.openai.com/codex/subagents (verified
34
- // 2026-07-08): required name/description/developer_instructions; a custom
35
+ // 2026-07-08; model / model_reasoning_effort keys re-verified 2026-10-04): required name/description/developer_instructions; a custom
35
36
  // agent named like a built-in (e.g. explorer) takes precedence over it.
36
37
 
37
38
  import fs from 'node:fs';
@@ -53,7 +54,15 @@ const SANDBOX_DEFAULTS = {
53
54
  planner: 'workspace-write',
54
55
  coder: 'workspace-write',
55
56
  };
56
- const PRESERVE_KEYS = ['model', 'model_reasoning_effort', 'sandbox_mode', 'nickname_candidates'];
57
+ // Model tiers per spawn-rules.md → Codex Model Defaults. Applied per key,
58
+ // only when the existing TOML doesn't set it.
59
+ const MODEL_DEFAULTS = {
60
+ explorer: { model: 'gpt-6-luna', model_reasoning_effort: 'low' },
61
+ researcher: { model: 'gpt-6-astra', model_reasoning_effort: 'high' },
62
+ planner: { model: 'gpt-6.1-sol', model_reasoning_effort: 'medium' },
63
+ coder: { model: 'gpt-6.1-sol', model_reasoning_effort: 'medium' },
64
+ };
65
+ const PRESERVE_KEYS =['model', 'model_reasoning_effort', 'sandbox_mode', 'nickname_candidates'];
57
66
 
58
67
  function fmField(block, key) {
59
68
  const m = block.match(new RegExp('^' + key + ':[ \\t]*(.*)$', 'm'));
@@ -111,6 +120,9 @@ for (const file of fs.readdirSync(AGENTS_DIR).filter((f) => f.endsWith('.md')))
111
120
  if (!preserved.some((l) => l.startsWith('sandbox_mode')) && SANDBOX_DEFAULTS[name]) {
112
121
  preserved.push(`sandbox_mode = "${SANDBOX_DEFAULTS[name]}"`);
113
122
  }
123
+ for (const [key, value] of Object.entries(MODEL_DEFAULTS[name] || {})) {
124
+ if (!preserved.some((l) => l.startsWith(key + ' ') || l.startsWith(key + '='))) preserved.push(`${key} = "${value}"`);
125
+ }
114
126
 
115
127
  const toml = [
116
128
  `name = "${name}"`,
@@ -7,9 +7,13 @@ Reference for deciding when and which agent to spawn. Read this before every spa
7
7
  | Tier | Examples | Model | When to Use |
8
8
  | ------------- | ------------------------- | ----------------------------------------- | --------------------------------------------------------------------------------------------- |
9
9
  | **FREE** | — | n/a | Built-in tool calls (bash, grep, file reads) — do these yourself, no agent needed |
10
- | **CHEAP** | `explorer`, `researcher` | haiku | Read-only, narrow scope, clear output. Good for lookup tasks that would bloat your context |
10
+ | **CHEAP** | `explorer` | sonnet, `effort: low` | Read-only, narrow scope, clear output. Good for lookup tasks that would bloat your context |
11
+ | **EXPENSIVE** | `researcher` | opus | Read-only, but source judgment decides the result — conflicting docs, version drift |
11
12
  | **EXPENSIVE** | `coder`, `planner` | sonnet (default) — see Model Selection | Write-capable or high-context output. Justify carefully |
12
13
 
14
+ No agent uses haiku. Sonnet at low effort beats it at the same job in fewer
15
+ turns, and turn count costs more than token price on multi-step work.
16
+
13
17
  ### Model Selection for `coder` Dispatch
14
18
 
15
19
  `coder`'s baseline model is sonnet. Override per-dispatch based on task
@@ -17,17 +21,33 @@ complexity — always pass the model explicitly; an omitted model silently
17
21
  inherits the session's own model, which is often the most capable and most
18
22
  expensive tier.
19
23
 
20
- | Task complexity | Model |
21
- | --------------------------------------------------------------------- | ------ |
22
- | Mechanical, 1-2 files, complete spec/code already in the task brief | haiku |
23
- | Multi-file integration, pattern-matching, moderate judgment | sonnet |
24
- | Architecture-level judgment; the final whole-branch review | opus |
25
-
26
- Turn count costs more than token price on multi-step work — the cheapest
27
- tier routinely takes more turns to reach the same result, which can cost
28
- more overall. Use sonnet as the floor for reviewers and for implementers
29
- working from prose descriptions; reserve haiku for tasks whose brief
30
- already contains the exact code to write.
24
+ | Task complexity | Model |
25
+ | --------------------------------------------------------------------- | ---------------------- |
26
+ | Mechanical, 1-2 files, complete spec/code already in the task brief | sonnet, `effort: low` |
27
+ | Multi-file integration, pattern-matching, moderate judgment | sonnet |
28
+ | Architecture-level judgment; the final whole-branch review | fable → opus fallback |
29
+
30
+ **Fable is a dispatch-time choice, never a frontmatter pin.** It ships only
31
+ on the Max plan, and Claude Code has no automatic fallback — a `fable`
32
+ dispatch on a plan without it, or past Max's Fable allowance, errors or
33
+ bills usage credits instead of downgrading. Dispatch `fable` only when the
34
+ session is known to have it; if the dispatch fails on model availability,
35
+ redispatch the same brief with `opus`. When unsure, use `opus`.
36
+
37
+ ### Codex Model Defaults
38
+
39
+ `install-codex-agents.mjs` writes these when a TOML has no `model` /
40
+ `model_reasoning_effort` of its own (yours always win):
41
+
42
+ | Agent | `model` | `model_reasoning_effort` |
43
+ | -------------------- | -------------- | ------------------------ |
44
+ | `explorer` | `gpt-6-luna` | `low` |
45
+ | `planner`, `coder` | `gpt-6.1-sol` | `medium` |
46
+ | `researcher` | `gpt-6-astra` | `high` |
47
+
48
+ Free and Go plans get Luna only, and Astra's plan gating is not settled in
49
+ OpenAI's docs — on those plans, edit the TOML's `model` down. Codex has no
50
+ documented fallback for an unavailable model either.
31
51
 
32
52
  ## Agent Capability Boundaries
33
53
 
@@ -231,8 +231,8 @@ with an injected prompt. Implement yourself by default; spawn only with concrete
231
231
  justification (unfamiliar codebase, external API to verify, genuinely parallel
232
232
  exploration, or a LARGE plan via `subagent-execution`).
233
233
 
234
- - `explorer` — read-only codebase navigation (haiku, non-blocking; LSP over grep).
235
- - `researcher` — external API/library verification (sonnet, non-blocking; resolves
234
+ - `explorer` — read-only codebase navigation (sonnet at low effort, non-blocking; LSP over grep).
235
+ - `researcher` — external API/library verification (opus, non-blocking; resolves
236
236
  the installed version first, omits what it can't verify).
237
237
  - `planner` — design → executable plan (sonnet; always delegates to explorer, and
238
238
  researcher when external libs are involved, before planning).