@jabworks/condux 0.10.2 → 0.11.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/index.js
CHANGED
|
@@ -13,6 +13,14 @@
|
|
|
13
13
|
// separate `npx skills add` step for condux. This works because the config hook
|
|
14
14
|
// mutates the cached config before OpenCode lazily discovers skills.
|
|
15
15
|
//
|
|
16
|
+
// It also pushes workflow's routing.md onto config.instructions, giving
|
|
17
|
+
// OpenCode the same `/workflow`-as-entry-point enforcement Claude Code and
|
|
18
|
+
// Codex get from their SessionStart hook — OpenCode has no hook system for
|
|
19
|
+
// that, so `instructions` (ambient every turn, verified via `opencode debug
|
|
20
|
+
// config` against a config-hook mutation) is the closest equivalent. Costs
|
|
21
|
+
// ~390 tokens/turn, permanently; that trade was made deliberately, not by
|
|
22
|
+
// default (docket #38).
|
|
23
|
+
//
|
|
16
24
|
// Optional plan-review listener (CONDUX_PLAN_REVIEW=1): when the primary
|
|
17
25
|
// `plan` agent finishes a turn (session.idle), spawns the plan-review annotate
|
|
18
26
|
// server from an installed condux skill tree. Best-effort only — OpenCode does
|
|
@@ -28,6 +36,7 @@ import { fileURLToPath } from 'node:url';
|
|
|
28
36
|
const PKG_DIR = path.dirname(fileURLToPath(import.meta.url));
|
|
29
37
|
const AGENTS_DIR = path.join(PKG_DIR, 'agents');
|
|
30
38
|
const SKILLS_DIR = path.join(PKG_DIR, 'skills');
|
|
39
|
+
const ROUTING_MD = path.join(SKILLS_DIR, 'workflow', 'hooks', 'routing.md');
|
|
31
40
|
|
|
32
41
|
// Bundled agent files use exactly the frontmatter the toolkit generator emits:
|
|
33
42
|
// a JSON-quoted `description`, a plain `mode`, an optional `permission` deny map
|
|
@@ -107,6 +116,13 @@ export const ConduxPlugin = async ({ worktree }) => {
|
|
|
107
116
|
cfg.skills.paths ??= [];
|
|
108
117
|
if (!cfg.skills.paths.includes(SKILLS_DIR)) cfg.skills.paths.push(SKILLS_DIR);
|
|
109
118
|
}
|
|
119
|
+
|
|
120
|
+
// Route through /workflow the same way Claude Code and Codex do —
|
|
121
|
+
// see the file-header comment for why `instructions` is the mechanism.
|
|
122
|
+
if (existsSync(ROUTING_MD)) {
|
|
123
|
+
cfg.instructions ??= [];
|
|
124
|
+
if (!cfg.instructions.includes(ROUTING_MD)) cfg.instructions.push(ROUTING_MD);
|
|
125
|
+
}
|
|
110
126
|
},
|
|
111
127
|
|
|
112
128
|
'chat.params': async (input) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jabworks/condux",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.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": {
|
|
@@ -333,7 +333,17 @@ function probeOpencode(hosts) {
|
|
|
333
333
|
return { host: 'opencode', status: 'broken', detail: 'the installed package entry point does not parse', fix: `reinstall ${PACKAGE}` };
|
|
334
334
|
}
|
|
335
335
|
|
|
336
|
-
|
|
336
|
+
const routing = path.join(pkg, 'skills', 'workflow', 'hooks', 'routing.md');
|
|
337
|
+
if (!fs.existsSync(routing)) {
|
|
338
|
+
return {
|
|
339
|
+
host: 'opencode',
|
|
340
|
+
status: 'broken',
|
|
341
|
+
detail: 'the installed package ships no workflow/hooks/routing.md — /workflow routing enforcement is missing',
|
|
342
|
+
fix: `reinstall ${PACKAGE}`,
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
return { host: 'opencode', status: 'done', detail: 'registered, and the installed package ships its agents, skills, and /workflow routing enforcement' };
|
|
337
347
|
}
|
|
338
348
|
|
|
339
349
|
// The four specialist agents are plugin-level and reached by their own sync
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: root-cause-analysis
|
|
3
|
-
description: "Enforces root-cause-first bug investigation — read the error, reproduce it, trace the data flow backward. Never propose a solution before the investigation phase completes. Trigger the moment debugging starts — never proactively — and always before any fix is proposed or any change is made. Phrases include \"why is this failing\", \"this bug\", \"unexpected behavior\", \"error when I…\". Not for a jabworks/agentic-toolkit skill or plugin misbehaving (won't trigger, won't show up, dist drift); that's toolkit-debugging-playbook."
|
|
3
|
+
description: "Enforces root-cause-first bug investigation — read the error, reproduce it, trace the data flow backward. Never propose a solution before the investigation phase completes. Trigger the moment debugging starts — never proactively — and always before any fix is proposed or any change is made. Phrases include \"why is this failing\", \"this bug\", \"unexpected behavior\", \"error when I…\", and declarative bug reports with no question mark — \"checkout crashes on empty cart\", \"there's a bug where X happens\" — a stated symptom is a bug report too. Not for a jabworks/agentic-toolkit skill or plugin misbehaving (won't trigger, won't show up, dist drift); that's toolkit-debugging-playbook."
|
|
4
4
|
argument-hint: "<error message or bug description>"
|
|
5
5
|
effort: high
|
|
6
6
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: subagent-execution
|
|
3
|
-
description: "Execute a plan using named specialist agents. Default is to implement yourself — only spawn when there is a concrete justification. Trigger when implementing a LARGE plan with tasks that benefit from agent specialization or parallel exploration — including task briefs, review packages, spawn rules, and resuming an interrupted plan from the `.condux/progress/` ledger (not session-handoff). Not for ad-hoc independent tasks outside a plan (that's subagent-deployment)."
|
|
3
|
+
description: "Execute a plan using named specialist agents. Default is to implement yourself — only spawn when there is a concrete justification. Trigger when implementing a LARGE plan with tasks that benefit from agent specialization or parallel exploration — including task briefs, review packages, spawn rules, which model a dispatched agent should get, and resuming an interrupted plan from the `.condux/progress/` ledger (not session-handoff). Not for ad-hoc independent tasks outside a plan (that's subagent-deployment)."
|
|
4
4
|
argument-hint: "<plan file path>"
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
{ "query": "continue the wave, tasks 5 and 6 are unblocked", "should_trigger": true, "expected_skill": "subagent-execution" },
|
|
12
12
|
{ "query": "we compacted mid-plan, where were we with the agents", "should_trigger": true, "expected_skill": "subagent-execution" },
|
|
13
13
|
{ "query": "dont re-dispatch tasks that are already done", "should_trigger": true, "expected_skill": "subagent-execution" },
|
|
14
|
-
{ "query": "
|
|
14
|
+
{ "query": "spawn the agents for this plan", "should_trigger": true, "expected_skill": "subagent-execution" },
|
|
15
15
|
{ "query": "dispatch these three unrelated fixes in parallel", "should_trigger": true, "expected_skill": "subagent-deployment" },
|
|
16
16
|
{ "query": "fan out independent lookups across agents", "should_trigger": true, "expected_skill": "subagent-deployment" },
|
|
17
17
|
{ "query": "three independent bugs, fix them concurrently", "should_trigger": true, "expected_skill": "subagent-deployment" },
|