@oisincoveney/pipeline 3.11.11 → 3.11.12
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/defaults/opencode-ecosystem.yaml +6 -50
- package/defaults/pipeline.yaml +24 -12
- package/defaults/profiles.yaml +8 -4
- package/dist/argo-workflow.js +1 -1
- package/dist/config/defaults.d.ts +0 -37
- package/dist/config/defaults.js +0 -24
- package/dist/config/schemas.d.ts +29 -1
- package/dist/config/schemas.js +12 -1
- package/dist/install-commands/opencode.js +1 -10
- package/dist/moka-submit.d.ts +7 -7
- package/dist/planning/compile.d.ts +1 -0
- package/dist/planning/compile.js +1 -0
- package/dist/planning/generate.d.ts +20 -0
- package/dist/runner-command-contract.d.ts +2 -2
- package/dist/runner-event-schema.d.ts +6 -6
- package/dist/runner.d.ts +3 -0
- package/dist/runner.js +34 -4
- package/dist/runtime/agent-node/agent-node.js +1 -0
- package/dist/runtime/opencode-server.js +1 -1
- package/dist/runtime/opencode-session-executor.js +7 -6
- package/dist/runtime/services/opencode-sdk-service.js +1 -1
- package/dist/schedule/passes/models.js +2 -1
- package/package.json +1 -1
|
@@ -83,56 +83,12 @@ ecosystem_code:
|
|
|
83
83
|
role: OpenCode policy enforcement through tool execution hooks
|
|
84
84
|
default_stack: true
|
|
85
85
|
source: https://cupcake.eqtylab.io/getting-started/usage/opencode/
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
provider: openai
|
|
93
|
-
role: zero-reasoning GPT-5.5 selector for mechanical low-stakes work
|
|
94
|
-
options:
|
|
95
|
-
reasoningEffort: none
|
|
96
|
-
reasoningSummary: auto
|
|
97
|
-
textVerbosity: medium
|
|
98
|
-
include: [reasoning.encrypted_content]
|
|
99
|
-
store: false
|
|
100
|
-
- id: gpt-5.5-low
|
|
101
|
-
provider: openai
|
|
102
|
-
role: low-reasoning GPT-5.5 selector for cheap inspection and bookkeeping roles
|
|
103
|
-
options:
|
|
104
|
-
reasoningEffort: low
|
|
105
|
-
reasoningSummary: auto
|
|
106
|
-
textVerbosity: medium
|
|
107
|
-
include: [reasoning.encrypted_content]
|
|
108
|
-
store: false
|
|
109
|
-
- id: gpt-5.5-medium
|
|
110
|
-
provider: openai
|
|
111
|
-
role: default-reasoning GPT-5.5 selector for research and coverage roles
|
|
112
|
-
options:
|
|
113
|
-
reasoningEffort: medium
|
|
114
|
-
reasoningSummary: auto
|
|
115
|
-
textVerbosity: medium
|
|
116
|
-
include: [reasoning.encrypted_content]
|
|
117
|
-
store: false
|
|
118
|
-
- id: gpt-5.5-high
|
|
119
|
-
provider: openai
|
|
120
|
-
role: high-reasoning GPT-5.5 selector for implementation roles
|
|
121
|
-
options:
|
|
122
|
-
reasoningEffort: high
|
|
123
|
-
reasoningSummary: detailed
|
|
124
|
-
textVerbosity: medium
|
|
125
|
-
include: [reasoning.encrypted_content]
|
|
126
|
-
store: false
|
|
127
|
-
- id: gpt-5.5-xhigh
|
|
128
|
-
provider: openai
|
|
129
|
-
role: maximum-reasoning GPT-5.5 selector for schedule planning
|
|
130
|
-
options:
|
|
131
|
-
reasoningEffort: xhigh
|
|
132
|
-
reasoningSummary: detailed
|
|
133
|
-
textVerbosity: medium
|
|
134
|
-
include: [reasoning.encrypted_content]
|
|
135
|
-
store: false
|
|
86
|
+
# Reasoning effort is no longer expressed as synthetic per-effort model ids.
|
|
87
|
+
# Pipeline config carries `reasoning_effort` as data on each node/profile and the
|
|
88
|
+
# runner applies it as the opencode model variant (`--variant` / prompt body
|
|
89
|
+
# `variant`) for the selected GPT-5 model. The oc-codex-multi-auth plugin owns
|
|
90
|
+
# the base-model templates and the Codex request options (store:false,
|
|
91
|
+
# reasoning.encrypted_content), so moka registers no provider models here.
|
|
136
92
|
mcp_backends:
|
|
137
93
|
- id: pipeline-gateway
|
|
138
94
|
locality: project-remote
|
package/defaults/pipeline.yaml
CHANGED
|
@@ -104,54 +104,66 @@ scheduler:
|
|
|
104
104
|
backlog-intake:
|
|
105
105
|
category: intake
|
|
106
106
|
profile: moka-researcher
|
|
107
|
-
models: [openai/gpt-5.5
|
|
107
|
+
models: [openai/gpt-5.5]
|
|
108
|
+
reasoning_effort: medium
|
|
108
109
|
red-tests:
|
|
109
110
|
category: red
|
|
110
111
|
profile: moka-test-writer
|
|
111
|
-
models: [openai/gpt-5.5
|
|
112
|
+
models: [openai/gpt-5.5, kimi-for-coding/kimi-k2-thinking]
|
|
113
|
+
reasoning_effort: high
|
|
112
114
|
green-implementation:
|
|
113
115
|
category: green
|
|
114
116
|
profile: moka-code-writer
|
|
115
|
-
models: [opencode-go/qwen3.7-max, openai/gpt-5.5
|
|
117
|
+
models: [opencode-go/qwen3.7-max, openai/gpt-5.5, kimi-for-coding/k2p6]
|
|
118
|
+
reasoning_effort: high
|
|
116
119
|
verification:
|
|
117
120
|
category: verification
|
|
118
121
|
profile: moka-verifier
|
|
119
|
-
models: [openai/gpt-5.5
|
|
122
|
+
models: [openai/gpt-5.5]
|
|
123
|
+
reasoning_effort: medium
|
|
120
124
|
execute:
|
|
121
125
|
required_categories: [intake, research, red, green, mechanical, acceptance, verification, learn]
|
|
122
126
|
nodes:
|
|
123
127
|
backlog-intake:
|
|
124
128
|
category: intake
|
|
125
129
|
profile: moka-researcher
|
|
126
|
-
models: [openai/gpt-5.5
|
|
130
|
+
models: [openai/gpt-5.5]
|
|
131
|
+
reasoning_effort: medium
|
|
127
132
|
research:
|
|
128
133
|
category: research
|
|
129
134
|
profile: moka-researcher
|
|
130
|
-
models: [openai/gpt-5.5
|
|
135
|
+
models: [openai/gpt-5.5, kimi-for-coding/k2p6]
|
|
136
|
+
reasoning_effort: medium
|
|
131
137
|
red-tests:
|
|
132
138
|
category: red
|
|
133
139
|
profile: moka-test-writer
|
|
134
|
-
models: [openai/gpt-5.5
|
|
140
|
+
models: [openai/gpt-5.5, kimi-for-coding/kimi-k2-thinking]
|
|
141
|
+
reasoning_effort: high
|
|
135
142
|
green-backend:
|
|
136
143
|
category: green
|
|
137
144
|
profile: moka-code-writer
|
|
138
|
-
models: [opencode-go/qwen3.7-max, openai/gpt-5.5
|
|
145
|
+
models: [opencode-go/qwen3.7-max, openai/gpt-5.5, kimi-for-coding/k2p6]
|
|
146
|
+
reasoning_effort: high
|
|
139
147
|
green-frontend:
|
|
140
148
|
category: green
|
|
141
149
|
profile: moka-code-writer
|
|
142
|
-
models: [openai/gpt-5.5
|
|
150
|
+
models: [openai/gpt-5.5, kimi-for-coding/k2p6, opencode-go/qwen3.7-max]
|
|
151
|
+
reasoning_effort: high
|
|
143
152
|
acceptance-review:
|
|
144
153
|
category: acceptance
|
|
145
154
|
profile: moka-acceptance-reviewer
|
|
146
|
-
models: [openai/gpt-5.5
|
|
155
|
+
models: [openai/gpt-5.5]
|
|
156
|
+
reasoning_effort: medium
|
|
147
157
|
verification:
|
|
148
158
|
category: verification
|
|
149
159
|
profile: moka-verifier
|
|
150
|
-
models: [openai/gpt-5.5
|
|
160
|
+
models: [openai/gpt-5.5]
|
|
161
|
+
reasoning_effort: medium
|
|
151
162
|
learn:
|
|
152
163
|
category: learn
|
|
153
164
|
profile: moka-learner
|
|
154
|
-
models: [openai/gpt-5.5
|
|
165
|
+
models: [openai/gpt-5.5]
|
|
166
|
+
reasoning_effort: low
|
|
155
167
|
schedules:
|
|
156
168
|
quick-schedule:
|
|
157
169
|
baseline: quick
|
package/defaults/profiles.yaml
CHANGED
|
@@ -90,7 +90,8 @@ skills:
|
|
|
90
90
|
profiles:
|
|
91
91
|
moka-orchestrator:
|
|
92
92
|
runner: opencode
|
|
93
|
-
model: openai/gpt-5.5
|
|
93
|
+
model: openai/gpt-5.5
|
|
94
|
+
reasoning_effort: xhigh
|
|
94
95
|
description: Orchestrate the configured pipeline and enforce gates.
|
|
95
96
|
instructions: { inline: "Orchestrate through the canonical local `moka run` supervisor. For compatibility slash commands, run the `moka run` command and flags shown in the command body. Treat execution as CLI/supervised runtime, not OpenCode-native Task execution. Enforce only package-configured gates." }
|
|
96
97
|
skills: [orchestrate, execute, quick, inspect]
|
|
@@ -128,7 +129,8 @@ profiles:
|
|
|
128
129
|
repair: { enabled: true, max_attempts: 1 }
|
|
129
130
|
moka-inspector:
|
|
130
131
|
runner: opencode
|
|
131
|
-
model: openai/gpt-5.5
|
|
132
|
+
model: openai/gpt-5.5
|
|
133
|
+
reasoning_effort: low
|
|
132
134
|
description: Inspect the repository without modifying files.
|
|
133
135
|
instructions: { inline: "Inspect the repository without modifying files." }
|
|
134
136
|
skills: [research]
|
|
@@ -138,7 +140,8 @@ profiles:
|
|
|
138
140
|
network: { mode: inherit }
|
|
139
141
|
moka-schedule-planner:
|
|
140
142
|
runner: opencode
|
|
141
|
-
model: openai/gpt-5.5
|
|
143
|
+
model: openai/gpt-5.5
|
|
144
|
+
reasoning_effort: xhigh
|
|
142
145
|
description: Refine a baseline schedule into a specialized approved-plan artifact.
|
|
143
146
|
instructions: { inline: "Generate exactly one workflow named root as an explicit schedule graph. Return YAML only." }
|
|
144
147
|
timeout_ms: 300000
|
|
@@ -219,7 +222,8 @@ profiles:
|
|
|
219
222
|
repair: { enabled: true, max_attempts: 1 }
|
|
220
223
|
moka-learner:
|
|
221
224
|
runner: opencode
|
|
222
|
-
model: openai/gpt-5.5
|
|
225
|
+
model: openai/gpt-5.5
|
|
226
|
+
reasoning_effort: low
|
|
223
227
|
description: Store durable lessons from the completed run.
|
|
224
228
|
instructions: { inline: "Store durable lessons from the completed run when useful." }
|
|
225
229
|
skills: [migrate]
|
package/dist/argo-workflow.js
CHANGED
|
@@ -55,31 +55,6 @@ declare const openCodeEcosystemManifestSchema: z.ZodObject<{
|
|
|
55
55
|
source: z.ZodOptional<z.ZodString>;
|
|
56
56
|
used_by: z.ZodArray<z.ZodString>;
|
|
57
57
|
}, z.core.$strict>>;
|
|
58
|
-
provider_models: z.ZodArray<z.ZodObject<{
|
|
59
|
-
id: z.ZodString;
|
|
60
|
-
options: z.ZodObject<{
|
|
61
|
-
include: z.ZodArray<z.ZodString>;
|
|
62
|
-
reasoningEffort: z.ZodEnum<{
|
|
63
|
-
none: "none";
|
|
64
|
-
low: "low";
|
|
65
|
-
medium: "medium";
|
|
66
|
-
high: "high";
|
|
67
|
-
xhigh: "xhigh";
|
|
68
|
-
}>;
|
|
69
|
-
reasoningSummary: z.ZodEnum<{
|
|
70
|
-
auto: "auto";
|
|
71
|
-
detailed: "detailed";
|
|
72
|
-
}>;
|
|
73
|
-
store: z.ZodLiteral<false>;
|
|
74
|
-
textVerbosity: z.ZodEnum<{
|
|
75
|
-
low: "low";
|
|
76
|
-
medium: "medium";
|
|
77
|
-
high: "high";
|
|
78
|
-
}>;
|
|
79
|
-
}, z.core.$strict>;
|
|
80
|
-
provider: z.ZodString;
|
|
81
|
-
role: z.ZodString;
|
|
82
|
-
}, z.core.$strict>>;
|
|
83
58
|
runtime: z.ZodObject<{
|
|
84
59
|
compatibility_runners: z.ZodArray<z.ZodString>;
|
|
85
60
|
default_runner: z.ZodLiteral<"opencode">;
|
|
@@ -150,18 +125,6 @@ declare const DEFAULT_OPENCODE_ECOSYSTEM_MANIFEST: {
|
|
|
150
125
|
path?: string | undefined;
|
|
151
126
|
source?: string | undefined;
|
|
152
127
|
}[];
|
|
153
|
-
provider_models: {
|
|
154
|
-
id: string;
|
|
155
|
-
options: {
|
|
156
|
-
include: string[];
|
|
157
|
-
reasoningEffort: "none" | "low" | "medium" | "high" | "xhigh";
|
|
158
|
-
reasoningSummary: "auto" | "detailed";
|
|
159
|
-
store: false;
|
|
160
|
-
textVerbosity: "low" | "medium" | "high";
|
|
161
|
-
};
|
|
162
|
-
provider: string;
|
|
163
|
-
role: string;
|
|
164
|
-
}[];
|
|
165
128
|
runtime: {
|
|
166
129
|
compatibility_runners: string[];
|
|
167
130
|
default_runner: "opencode";
|
package/dist/config/defaults.js
CHANGED
|
@@ -46,29 +46,6 @@ const ecosystemCodeSchema = z.object({
|
|
|
46
46
|
role: z.string().min(1),
|
|
47
47
|
source: z.string().url()
|
|
48
48
|
}).strict();
|
|
49
|
-
const ecosystemProviderModelOptionsSchema = z.object({
|
|
50
|
-
include: ecosystemStringArraySchema,
|
|
51
|
-
reasoningEffort: z.enum([
|
|
52
|
-
"none",
|
|
53
|
-
"low",
|
|
54
|
-
"medium",
|
|
55
|
-
"high",
|
|
56
|
-
"xhigh"
|
|
57
|
-
]),
|
|
58
|
-
reasoningSummary: z.enum(["auto", "detailed"]),
|
|
59
|
-
store: z.literal(false),
|
|
60
|
-
textVerbosity: z.enum([
|
|
61
|
-
"low",
|
|
62
|
-
"medium",
|
|
63
|
-
"high"
|
|
64
|
-
])
|
|
65
|
-
}).strict();
|
|
66
|
-
const ecosystemProviderModelSchema = z.object({
|
|
67
|
-
id: z.string().min(1),
|
|
68
|
-
options: ecosystemProviderModelOptionsSchema,
|
|
69
|
-
provider: z.string().min(1),
|
|
70
|
-
role: z.string().min(1)
|
|
71
|
-
}).strict();
|
|
72
49
|
const ecosystemMcpBackendSchema = z.object({
|
|
73
50
|
credentials: ecosystemStringArraySchema,
|
|
74
51
|
id: z.string().min(1),
|
|
@@ -105,7 +82,6 @@ const openCodeEcosystemManifestSchema = z.object({
|
|
|
105
82
|
mcp_backends: z.array(ecosystemMcpBackendSchema).min(1),
|
|
106
83
|
official_dependencies: z.array(ecosystemDependencySchema).min(1),
|
|
107
84
|
prompts: z.array(ecosystemProfileResourceSchema).min(1),
|
|
108
|
-
provider_models: z.array(ecosystemProviderModelSchema).min(1),
|
|
109
85
|
runtime: ecosystemRuntimeSchema,
|
|
110
86
|
skills: z.array(ecosystemProfileResourceSchema).min(1),
|
|
111
87
|
sources: z.array(ecosystemSourceSchema).min(1),
|
package/dist/config/schemas.d.ts
CHANGED
|
@@ -98,6 +98,13 @@ declare const workflowNodeBaseSchema: z.ZodObject<{
|
|
|
98
98
|
id: z.ZodString;
|
|
99
99
|
models: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
100
100
|
needs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
101
|
+
reasoning_effort: z.ZodOptional<z.ZodEnum<{
|
|
102
|
+
none: "none";
|
|
103
|
+
low: "low";
|
|
104
|
+
medium: "medium";
|
|
105
|
+
high: "high";
|
|
106
|
+
xhigh: "xhigh";
|
|
107
|
+
}>>;
|
|
101
108
|
retries: z.ZodOptional<z.ZodObject<{
|
|
102
109
|
backoff_ms: z.ZodOptional<z.ZodNumber>;
|
|
103
110
|
max_attempts: z.ZodNumber;
|
|
@@ -311,6 +318,13 @@ declare const configSchema: z.ZodObject<{
|
|
|
311
318
|
}, z.core.$strict>>;
|
|
312
319
|
schema_path: z.ZodOptional<z.ZodString>;
|
|
313
320
|
}, z.core.$strict>>;
|
|
321
|
+
reasoning_effort: z.ZodOptional<z.ZodEnum<{
|
|
322
|
+
none: "none";
|
|
323
|
+
low: "low";
|
|
324
|
+
medium: "medium";
|
|
325
|
+
high: "high";
|
|
326
|
+
xhigh: "xhigh";
|
|
327
|
+
}>>;
|
|
314
328
|
rules: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
315
329
|
runner: z.ZodString;
|
|
316
330
|
scheduling_roles: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
@@ -392,6 +406,13 @@ declare const configSchema: z.ZodObject<{
|
|
|
392
406
|
command: z.ZodOptional<z.ZodString>;
|
|
393
407
|
host_models: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
394
408
|
model: z.ZodOptional<z.ZodString>;
|
|
409
|
+
reasoning_effort: z.ZodOptional<z.ZodEnum<{
|
|
410
|
+
none: "none";
|
|
411
|
+
low: "low";
|
|
412
|
+
medium: "medium";
|
|
413
|
+
high: "high";
|
|
414
|
+
xhigh: "xhigh";
|
|
415
|
+
}>>;
|
|
395
416
|
type: z.ZodEnum<{
|
|
396
417
|
command: "command";
|
|
397
418
|
opencode: "opencode";
|
|
@@ -474,6 +495,13 @@ declare const configSchema: z.ZodObject<{
|
|
|
474
495
|
}, z.core.$strict>], "kind">>>;
|
|
475
496
|
models: z.ZodArray<z.ZodString>;
|
|
476
497
|
profile: z.ZodString;
|
|
498
|
+
reasoning_effort: z.ZodOptional<z.ZodEnum<{
|
|
499
|
+
none: "none";
|
|
500
|
+
low: "low";
|
|
501
|
+
medium: "medium";
|
|
502
|
+
high: "high";
|
|
503
|
+
xhigh: "xhigh";
|
|
504
|
+
}>>;
|
|
477
505
|
}, z.core.$strict>>>;
|
|
478
506
|
required_categories: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
479
507
|
}, z.core.$strict>>>;
|
|
@@ -481,8 +509,8 @@ declare const configSchema: z.ZodObject<{
|
|
|
481
509
|
schedules: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
482
510
|
description: z.ZodOptional<z.ZodString>;
|
|
483
511
|
baseline: z.ZodEnum<{
|
|
484
|
-
execute: "execute";
|
|
485
512
|
quick: "quick";
|
|
513
|
+
execute: "execute";
|
|
486
514
|
}>;
|
|
487
515
|
max_parallel_nodes: z.ZodOptional<z.ZodNumber>;
|
|
488
516
|
node_catalog: z.ZodOptional<z.ZodString>;
|
package/dist/config/schemas.js
CHANGED
|
@@ -2,6 +2,13 @@ import { z } from "zod";
|
|
|
2
2
|
import { Data } from "effect";
|
|
3
3
|
//#region src/config/schemas.ts
|
|
4
4
|
const ID_RE = /^[a-z][a-z0-9-]*$/;
|
|
5
|
+
const reasoningEffortSchema = z.enum([
|
|
6
|
+
"none",
|
|
7
|
+
"low",
|
|
8
|
+
"medium",
|
|
9
|
+
"high",
|
|
10
|
+
"xhigh"
|
|
11
|
+
]);
|
|
5
12
|
const RUNNER_TYPES = ["opencode", "command"];
|
|
6
13
|
const HOOK_EVENTS = [
|
|
7
14
|
"workflow.start",
|
|
@@ -85,6 +92,7 @@ const runnerSchema = z.object({
|
|
|
85
92
|
command: z.string().optional(),
|
|
86
93
|
host_models: z.record(z.string(), z.string().min(1)).optional(),
|
|
87
94
|
model: z.string().optional(),
|
|
95
|
+
reasoning_effort: reasoningEffortSchema.optional(),
|
|
88
96
|
type: z.enum(RUNNER_TYPES)
|
|
89
97
|
}).strict();
|
|
90
98
|
const pathRefSchema = z.object({
|
|
@@ -254,6 +262,7 @@ const profileSchema = z.object({
|
|
|
254
262
|
model: z.string().optional(),
|
|
255
263
|
network: networkSchema.optional(),
|
|
256
264
|
output: outputSchema.optional(),
|
|
265
|
+
reasoning_effort: reasoningEffortSchema.optional(),
|
|
257
266
|
rules: z.array(z.string()).optional(),
|
|
258
267
|
runner: z.string(),
|
|
259
268
|
scheduling_roles: z.array(z.enum(SCHEDULING_ROLES)).optional(),
|
|
@@ -359,7 +368,8 @@ const schedulerNodeTemplateSchema = z.object({
|
|
|
359
368
|
description: z.string().optional(),
|
|
360
369
|
gates: z.array(gateSchema).optional(),
|
|
361
370
|
models: modelFallbacksSchema,
|
|
362
|
-
profile: z.string().min(1)
|
|
371
|
+
profile: z.string().min(1),
|
|
372
|
+
reasoning_effort: reasoningEffortSchema.optional()
|
|
363
373
|
}).strict();
|
|
364
374
|
const schedulerNodeCatalogSchema = z.object({
|
|
365
375
|
nodes: strictRecord(schedulerNodeTemplateSchema).default({}),
|
|
@@ -375,6 +385,7 @@ const workflowNodeBaseSchema = z.object({
|
|
|
375
385
|
id: z.string(),
|
|
376
386
|
models: modelFallbacksSchema.optional(),
|
|
377
387
|
needs: z.array(z.string()).optional(),
|
|
388
|
+
reasoning_effort: reasoningEffortSchema.optional(),
|
|
378
389
|
retries: retriesSchema.optional(),
|
|
379
390
|
task_context: nodeTaskContextSchema.optional(),
|
|
380
391
|
timeout_ms: z.number().int().positive().optional()
|
|
@@ -209,18 +209,9 @@ function renderOpenCodeProjectConfig(config) {
|
|
|
209
209
|
return formatOpenCodeProjectJson({
|
|
210
210
|
...shouldEmbedProjectGateway(config) ? JSON.parse(renderOpenCodeGatewayConfig(config)) : { $schema: "https://opencode.ai/config.json" },
|
|
211
211
|
lsp: true,
|
|
212
|
-
...opencodePluginConfig()
|
|
213
|
-
...opencodeProviderConfig()
|
|
212
|
+
...opencodePluginConfig()
|
|
214
213
|
});
|
|
215
214
|
}
|
|
216
|
-
function opencodeProviderConfig() {
|
|
217
|
-
const provider = {};
|
|
218
|
-
for (const model of DEFAULT_OPENCODE_ECOSYSTEM_MANIFEST.provider_models) {
|
|
219
|
-
provider[model.provider] ??= { models: {} };
|
|
220
|
-
provider[model.provider].models[model.id] = { options: model.options };
|
|
221
|
-
}
|
|
222
|
-
return Object.keys(provider).length > 0 ? { provider } : {};
|
|
223
|
-
}
|
|
224
215
|
function opencodePluginConfig() {
|
|
225
216
|
const plugins = DEFAULT_OPENCODE_ECOSYSTEM_MANIFEST.ecosystem_code.flatMap((item) => npmPluginPackage(item)).sort((a, b) => a.localeCompare(b));
|
|
226
217
|
return plugins.length > 0 ? { plugin: plugins } : {};
|
package/dist/moka-submit.d.ts
CHANGED
|
@@ -5,13 +5,13 @@ import { z } from "zod";
|
|
|
5
5
|
//#region src/moka-submit.d.ts
|
|
6
6
|
declare const mokaSubmitDirectHooksSchema: z.ZodRecord<z.ZodEnum<{
|
|
7
7
|
"workflow.start": "workflow.start";
|
|
8
|
-
"node.finish": "node.finish";
|
|
9
|
-
"node.start": "node.start";
|
|
10
8
|
"workflow.success": "workflow.success";
|
|
11
9
|
"workflow.failure": "workflow.failure";
|
|
12
10
|
"workflow.complete": "workflow.complete";
|
|
11
|
+
"node.start": "node.start";
|
|
13
12
|
"node.success": "node.success";
|
|
14
13
|
"node.error": "node.error";
|
|
14
|
+
"node.finish": "node.finish";
|
|
15
15
|
"gate.failure": "gate.failure";
|
|
16
16
|
}> & z.core.$partial, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
17
17
|
failure: z.ZodDefault<z.ZodEnum<{
|
|
@@ -94,13 +94,13 @@ declare const mokaSubmitOptionsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
94
94
|
}, z.core.$strict>>;
|
|
95
95
|
hooks: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
96
96
|
"workflow.start": "workflow.start";
|
|
97
|
-
"node.finish": "node.finish";
|
|
98
|
-
"node.start": "node.start";
|
|
99
97
|
"workflow.success": "workflow.success";
|
|
100
98
|
"workflow.failure": "workflow.failure";
|
|
101
99
|
"workflow.complete": "workflow.complete";
|
|
100
|
+
"node.start": "node.start";
|
|
102
101
|
"node.success": "node.success";
|
|
103
102
|
"node.error": "node.error";
|
|
103
|
+
"node.finish": "node.finish";
|
|
104
104
|
"gate.failure": "gate.failure";
|
|
105
105
|
}> & z.core.$partial, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
106
106
|
failure: z.ZodDefault<z.ZodEnum<{
|
|
@@ -161,8 +161,8 @@ declare const mokaSubmitOptionsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
161
161
|
}, z.core.$strict>>;
|
|
162
162
|
serviceAccountName: z.ZodOptional<z.ZodString>;
|
|
163
163
|
mode: z.ZodEnum<{
|
|
164
|
-
quick: "quick";
|
|
165
164
|
full: "full";
|
|
165
|
+
quick: "quick";
|
|
166
166
|
}>;
|
|
167
167
|
schedulePath: z.ZodOptional<z.ZodString>;
|
|
168
168
|
scheduleYaml: z.ZodOptional<z.ZodString>;
|
|
@@ -207,13 +207,13 @@ declare const mokaSubmitOptionsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
207
207
|
}, z.core.$strict>>;
|
|
208
208
|
hooks: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
|
|
209
209
|
"workflow.start": "workflow.start";
|
|
210
|
-
"node.finish": "node.finish";
|
|
211
|
-
"node.start": "node.start";
|
|
212
210
|
"workflow.success": "workflow.success";
|
|
213
211
|
"workflow.failure": "workflow.failure";
|
|
214
212
|
"workflow.complete": "workflow.complete";
|
|
213
|
+
"node.start": "node.start";
|
|
215
214
|
"node.success": "node.success";
|
|
216
215
|
"node.error": "node.error";
|
|
216
|
+
"node.finish": "node.finish";
|
|
217
217
|
"gate.failure": "gate.failure";
|
|
218
218
|
}> & z.core.$partial, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
219
219
|
failure: z.ZodDefault<z.ZodEnum<{
|
package/dist/planning/compile.js
CHANGED
|
@@ -204,6 +204,7 @@ function toPlannedNode(node, index) {
|
|
|
204
204
|
needs: node.needs ?? [],
|
|
205
205
|
nodes: node.kind === "group" ? node.nodes : void 0,
|
|
206
206
|
profile: "profile" in node ? node.profile : void 0,
|
|
207
|
+
reasoning_effort: node.reasoning_effort,
|
|
207
208
|
retries: node.retries,
|
|
208
209
|
taskContext: plannedTaskContext(node.task_context)
|
|
209
210
|
};
|
|
@@ -77,6 +77,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
77
77
|
})[] | undefined;
|
|
78
78
|
models?: string[] | undefined;
|
|
79
79
|
needs?: string[] | undefined;
|
|
80
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
80
81
|
retries?: {
|
|
81
82
|
max_attempts: number;
|
|
82
83
|
backoff_ms?: number | undefined;
|
|
@@ -155,6 +156,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
155
156
|
})[] | undefined;
|
|
156
157
|
models?: string[] | undefined;
|
|
157
158
|
needs?: string[] | undefined;
|
|
159
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
158
160
|
retries?: {
|
|
159
161
|
max_attempts: number;
|
|
160
162
|
backoff_ms?: number | undefined;
|
|
@@ -232,6 +234,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
232
234
|
})[] | undefined;
|
|
233
235
|
models?: string[] | undefined;
|
|
234
236
|
needs?: string[] | undefined;
|
|
237
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
235
238
|
retries?: {
|
|
236
239
|
max_attempts: number;
|
|
237
240
|
backoff_ms?: number | undefined;
|
|
@@ -309,6 +312,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
309
312
|
})[] | undefined;
|
|
310
313
|
models?: string[] | undefined;
|
|
311
314
|
needs?: string[] | undefined;
|
|
315
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
312
316
|
retries?: {
|
|
313
317
|
max_attempts: number;
|
|
314
318
|
backoff_ms?: number | undefined;
|
|
@@ -386,6 +390,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
386
390
|
})[] | undefined;
|
|
387
391
|
models?: string[] | undefined;
|
|
388
392
|
needs?: string[] | undefined;
|
|
393
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
389
394
|
retries?: {
|
|
390
395
|
max_attempts: number;
|
|
391
396
|
backoff_ms?: number | undefined;
|
|
@@ -462,6 +467,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
462
467
|
})[] | undefined;
|
|
463
468
|
models?: string[] | undefined;
|
|
464
469
|
needs?: string[] | undefined;
|
|
470
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
465
471
|
retries?: {
|
|
466
472
|
max_attempts: number;
|
|
467
473
|
backoff_ms?: number | undefined;
|
|
@@ -540,6 +546,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
540
546
|
})[] | undefined;
|
|
541
547
|
models?: string[] | undefined;
|
|
542
548
|
needs?: string[] | undefined;
|
|
549
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
543
550
|
retries?: {
|
|
544
551
|
max_attempts: number;
|
|
545
552
|
backoff_ms?: number | undefined;
|
|
@@ -617,6 +624,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
617
624
|
})[] | undefined;
|
|
618
625
|
models?: string[] | undefined;
|
|
619
626
|
needs?: string[] | undefined;
|
|
627
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
620
628
|
retries?: {
|
|
621
629
|
max_attempts: number;
|
|
622
630
|
backoff_ms?: number | undefined;
|
|
@@ -694,6 +702,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
694
702
|
})[] | undefined;
|
|
695
703
|
models?: string[] | undefined;
|
|
696
704
|
needs?: string[] | undefined;
|
|
705
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
697
706
|
retries?: {
|
|
698
707
|
max_attempts: number;
|
|
699
708
|
backoff_ms?: number | undefined;
|
|
@@ -771,6 +780,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
771
780
|
})[] | undefined;
|
|
772
781
|
models?: string[] | undefined;
|
|
773
782
|
needs?: string[] | undefined;
|
|
783
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
774
784
|
retries?: {
|
|
775
785
|
max_attempts: number;
|
|
776
786
|
backoff_ms?: number | undefined;
|
|
@@ -846,6 +856,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
846
856
|
})[] | undefined;
|
|
847
857
|
models?: string[] | undefined;
|
|
848
858
|
needs?: string[] | undefined;
|
|
859
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
849
860
|
retries?: {
|
|
850
861
|
max_attempts: number;
|
|
851
862
|
backoff_ms?: number | undefined;
|
|
@@ -924,6 +935,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
924
935
|
})[] | undefined;
|
|
925
936
|
models?: string[] | undefined;
|
|
926
937
|
needs?: string[] | undefined;
|
|
938
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
927
939
|
retries?: {
|
|
928
940
|
max_attempts: number;
|
|
929
941
|
backoff_ms?: number | undefined;
|
|
@@ -1001,6 +1013,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
1001
1013
|
})[] | undefined;
|
|
1002
1014
|
models?: string[] | undefined;
|
|
1003
1015
|
needs?: string[] | undefined;
|
|
1016
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
1004
1017
|
retries?: {
|
|
1005
1018
|
max_attempts: number;
|
|
1006
1019
|
backoff_ms?: number | undefined;
|
|
@@ -1078,6 +1091,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
1078
1091
|
})[] | undefined;
|
|
1079
1092
|
models?: string[] | undefined;
|
|
1080
1093
|
needs?: string[] | undefined;
|
|
1094
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
1081
1095
|
retries?: {
|
|
1082
1096
|
max_attempts: number;
|
|
1083
1097
|
backoff_ms?: number | undefined;
|
|
@@ -1155,6 +1169,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
1155
1169
|
})[] | undefined;
|
|
1156
1170
|
models?: string[] | undefined;
|
|
1157
1171
|
needs?: string[] | undefined;
|
|
1172
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
1158
1173
|
retries?: {
|
|
1159
1174
|
max_attempts: number;
|
|
1160
1175
|
backoff_ms?: number | undefined;
|
|
@@ -1231,6 +1246,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
1231
1246
|
})[] | undefined;
|
|
1232
1247
|
models?: string[] | undefined;
|
|
1233
1248
|
needs?: string[] | undefined;
|
|
1249
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
1234
1250
|
retries?: {
|
|
1235
1251
|
max_attempts: number;
|
|
1236
1252
|
backoff_ms?: number | undefined;
|
|
@@ -1309,6 +1325,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
1309
1325
|
})[] | undefined;
|
|
1310
1326
|
models?: string[] | undefined;
|
|
1311
1327
|
needs?: string[] | undefined;
|
|
1328
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
1312
1329
|
retries?: {
|
|
1313
1330
|
max_attempts: number;
|
|
1314
1331
|
backoff_ms?: number | undefined;
|
|
@@ -1386,6 +1403,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
1386
1403
|
})[] | undefined;
|
|
1387
1404
|
models?: string[] | undefined;
|
|
1388
1405
|
needs?: string[] | undefined;
|
|
1406
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
1389
1407
|
retries?: {
|
|
1390
1408
|
max_attempts: number;
|
|
1391
1409
|
backoff_ms?: number | undefined;
|
|
@@ -1463,6 +1481,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
1463
1481
|
})[] | undefined;
|
|
1464
1482
|
models?: string[] | undefined;
|
|
1465
1483
|
needs?: string[] | undefined;
|
|
1484
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
1466
1485
|
retries?: {
|
|
1467
1486
|
max_attempts: number;
|
|
1468
1487
|
backoff_ms?: number | undefined;
|
|
@@ -1540,6 +1559,7 @@ declare const scheduleArtifactSchema: z.ZodObject<{
|
|
|
1540
1559
|
})[] | undefined;
|
|
1541
1560
|
models?: string[] | undefined;
|
|
1542
1561
|
needs?: string[] | undefined;
|
|
1562
|
+
reasoning_effort?: "none" | "low" | "medium" | "high" | "xhigh" | undefined;
|
|
1543
1563
|
retries?: {
|
|
1544
1564
|
max_attempts: number;
|
|
1545
1565
|
backoff_ms?: number | undefined;
|
|
@@ -43,8 +43,8 @@ declare const runnerDeliverySchema: z.ZodObject<{
|
|
|
43
43
|
declare const mokaSubmissionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
44
44
|
kind: z.ZodLiteral<"graph">;
|
|
45
45
|
mode: z.ZodEnum<{
|
|
46
|
-
quick: "quick";
|
|
47
46
|
full: "full";
|
|
47
|
+
quick: "quick";
|
|
48
48
|
}>;
|
|
49
49
|
}, z.core.$strict>, z.ZodObject<{
|
|
50
50
|
argv: z.ZodArray<z.ZodString>;
|
|
@@ -104,8 +104,8 @@ declare const runnerCommandPayloadSchema: z.ZodObject<{
|
|
|
104
104
|
submission: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
105
105
|
kind: z.ZodLiteral<"graph">;
|
|
106
106
|
mode: z.ZodEnum<{
|
|
107
|
-
quick: "quick";
|
|
108
107
|
full: "full";
|
|
108
|
+
quick: "quick";
|
|
109
109
|
}>;
|
|
110
110
|
}, z.core.$strict>, z.ZodObject<{
|
|
111
111
|
argv: z.ZodArray<z.ZodString>;
|
|
@@ -11,8 +11,8 @@ declare const runnerEventRecordSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
11
11
|
runId: z.ZodString;
|
|
12
12
|
sequence: z.ZodNumber;
|
|
13
13
|
type: z.ZodEnum<{
|
|
14
|
-
"workflow.planned": "workflow.planned";
|
|
15
14
|
"workflow.start": "workflow.start";
|
|
15
|
+
"workflow.planned": "workflow.planned";
|
|
16
16
|
}>;
|
|
17
17
|
workflowPlan: z.ZodObject<{
|
|
18
18
|
edges: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -58,10 +58,10 @@ declare const runnerEventRecordSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
58
58
|
}>;
|
|
59
59
|
}, z.core.$strip>;
|
|
60
60
|
type: z.ZodEnum<{
|
|
61
|
+
"node.start": "node.start";
|
|
62
|
+
"node.finish": "node.finish";
|
|
61
63
|
"agent.finish": "agent.finish";
|
|
62
64
|
"agent.start": "agent.start";
|
|
63
|
-
"node.finish": "node.finish";
|
|
64
|
-
"node.start": "node.start";
|
|
65
65
|
}>;
|
|
66
66
|
}, z.core.$strip>, z.ZodObject<{
|
|
67
67
|
at: z.ZodOptional<z.ZodString>;
|
|
@@ -189,8 +189,8 @@ declare const runnerEventBatchSchema: z.ZodObject<{
|
|
|
189
189
|
runId: z.ZodString;
|
|
190
190
|
sequence: z.ZodNumber;
|
|
191
191
|
type: z.ZodEnum<{
|
|
192
|
-
"workflow.planned": "workflow.planned";
|
|
193
192
|
"workflow.start": "workflow.start";
|
|
193
|
+
"workflow.planned": "workflow.planned";
|
|
194
194
|
}>;
|
|
195
195
|
workflowPlan: z.ZodObject<{
|
|
196
196
|
edges: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -236,10 +236,10 @@ declare const runnerEventBatchSchema: z.ZodObject<{
|
|
|
236
236
|
}>;
|
|
237
237
|
}, z.core.$strip>;
|
|
238
238
|
type: z.ZodEnum<{
|
|
239
|
+
"node.start": "node.start";
|
|
240
|
+
"node.finish": "node.finish";
|
|
239
241
|
"agent.finish": "agent.finish";
|
|
240
242
|
"agent.start": "agent.start";
|
|
241
|
-
"node.finish": "node.finish";
|
|
242
|
-
"node.start": "node.start";
|
|
243
243
|
}>;
|
|
244
244
|
}, z.core.$strip>, z.ZodObject<{
|
|
245
245
|
at: z.ZodOptional<z.ZodString>;
|
package/dist/runner.d.ts
CHANGED
|
@@ -59,6 +59,7 @@ interface AgentRunRequest {
|
|
|
59
59
|
interface AgentAdapter {
|
|
60
60
|
run(request: AgentRunRequest): Promise<AgentResult>;
|
|
61
61
|
}
|
|
62
|
+
type ReasoningEffort = NonNullable<PipelineConfig["profiles"][string]["reasoning_effort"]>;
|
|
62
63
|
interface RunnerLaunchPlan {
|
|
63
64
|
args: string[];
|
|
64
65
|
command: string;
|
|
@@ -71,6 +72,7 @@ interface RunnerLaunchPlan {
|
|
|
71
72
|
runnerId: string;
|
|
72
73
|
timeoutMs?: number;
|
|
73
74
|
type: RunnerType;
|
|
75
|
+
variant?: ReasoningEffort;
|
|
74
76
|
}
|
|
75
77
|
interface RunnerLaunchInput {
|
|
76
78
|
contextFile?: string | null;
|
|
@@ -78,6 +80,7 @@ interface RunnerLaunchInput {
|
|
|
78
80
|
nodeId: string;
|
|
79
81
|
profileId?: string;
|
|
80
82
|
prompt: string;
|
|
83
|
+
reasoningEffort?: ReasoningEffort;
|
|
81
84
|
worktreePath: string;
|
|
82
85
|
}
|
|
83
86
|
declare const RunnerCapabilityError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => import("effect/Cause").YieldableError & {
|
package/dist/runner.js
CHANGED
|
@@ -46,6 +46,9 @@ function actorModel(actor) {
|
|
|
46
46
|
function runnerModel(runner) {
|
|
47
47
|
return runner?.model;
|
|
48
48
|
}
|
|
49
|
+
function optionalVariantArgs(variant) {
|
|
50
|
+
return variant ? ["--variant", variant] : [];
|
|
51
|
+
}
|
|
49
52
|
/**
|
|
50
53
|
* Per-harness argv shape, excluding the leading harness binary name.
|
|
51
54
|
*/
|
|
@@ -56,6 +59,7 @@ function harnessArgv(prompt, worktreePath, contextFile, options = {}) {
|
|
|
56
59
|
"--format",
|
|
57
60
|
"json",
|
|
58
61
|
...optionalModelArgs(options.runner, options.actor, options.model),
|
|
62
|
+
...optionalVariantArgs(options.variant),
|
|
59
63
|
...skillArgs,
|
|
60
64
|
"--dangerously-skip-permissions",
|
|
61
65
|
"--dir",
|
|
@@ -68,6 +72,7 @@ function harnessArgv(prompt, worktreePath, contextFile, options = {}) {
|
|
|
68
72
|
"--format",
|
|
69
73
|
"json",
|
|
70
74
|
...optionalModelArgs(options.runner, options.actor, options.model),
|
|
75
|
+
...optionalVariantArgs(options.variant),
|
|
71
76
|
...skillArgs,
|
|
72
77
|
"--dangerously-skip-permissions",
|
|
73
78
|
"--dir",
|
|
@@ -129,16 +134,19 @@ function createActorLaunchPlan(config, input, actor, runnerId) {
|
|
|
129
134
|
if (runner.capabilities.output_formats && !runner.capabilities.output_formats.includes(outputFormat)) throw new RunnerCapabilityError(`runner '${runnerId}' does not support output format '${outputFormat}'`);
|
|
130
135
|
const command = runner.command ?? runner.type;
|
|
131
136
|
const timeoutMs = actor?.timeout_ms ?? agentTimeoutMsFromEnv();
|
|
137
|
+
const env = {};
|
|
138
|
+
const { model, variant } = resolveLaunchModel(input, actor, runner);
|
|
132
139
|
const base = {
|
|
133
140
|
cwd: input.worktreePath,
|
|
134
|
-
env
|
|
135
|
-
model
|
|
141
|
+
env,
|
|
142
|
+
model,
|
|
136
143
|
nodeId: input.nodeId,
|
|
137
144
|
outputFormat,
|
|
138
145
|
profileId: input.profileId,
|
|
139
146
|
runnerId,
|
|
140
147
|
timeoutMs,
|
|
141
|
-
type: runner.type
|
|
148
|
+
type: runner.type,
|
|
149
|
+
variant
|
|
142
150
|
};
|
|
143
151
|
if (runner.type === "command") {
|
|
144
152
|
if (!runner.command) throw new RunnerCapabilityError(`command runner '${runnerId}' must declare command`);
|
|
@@ -155,11 +163,33 @@ function createActorLaunchPlan(config, input, actor, runnerId) {
|
|
|
155
163
|
config,
|
|
156
164
|
model: input.model,
|
|
157
165
|
nodeId: input.nodeId,
|
|
158
|
-
runner
|
|
166
|
+
runner,
|
|
167
|
+
variant
|
|
159
168
|
}),
|
|
160
169
|
command
|
|
161
170
|
};
|
|
162
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Reasoning effort applies as the opencode model variant, but only the GPT-5
|
|
174
|
+
* family (openai provider, via oc-codex-multi-auth) defines variants. For any
|
|
175
|
+
* other selected fallback model, omit the variant so opencode does not reject
|
|
176
|
+
* an unknown variant.
|
|
177
|
+
*/
|
|
178
|
+
function resolveVariant(effort, model) {
|
|
179
|
+
if (!(effort && model)) return;
|
|
180
|
+
return model.startsWith("openai/") ? effort : void 0;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Resolve the selected model and its opencode variant from the launch input,
|
|
184
|
+
* actor (profile), and runner, preferring the most specific source.
|
|
185
|
+
*/
|
|
186
|
+
function resolveLaunchModel(input, actor, runner) {
|
|
187
|
+
const model = input.model ?? actor?.model ?? runner.model;
|
|
188
|
+
return {
|
|
189
|
+
model,
|
|
190
|
+
variant: resolveVariant(input.reasoningEffort ?? actor?.reasoning_effort ?? runner.reasoning_effort, model)
|
|
191
|
+
};
|
|
192
|
+
}
|
|
163
193
|
function skillArgsFor() {
|
|
164
194
|
return [];
|
|
165
195
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OpencodeSdkService, OpencodeSdkServiceLive } from "./services/opencode-sdk-service.js";
|
|
2
2
|
import { Data, Effect } from "effect";
|
|
3
|
-
import { createOpencodeClient } from "@opencode-ai/sdk";
|
|
3
|
+
import { createOpencodeClient } from "@opencode-ai/sdk/v2";
|
|
4
4
|
//#region src/runtime/opencode-server.ts
|
|
5
5
|
const DEFAULT_STARTUP_TIMEOUT_MS = 3e4;
|
|
6
6
|
var OpencodeServerStartupError = class extends Data.TaggedError("OpencodeServerStartupError") {
|
|
@@ -66,9 +66,9 @@ function promptSessionResult(deps, plan, sessionId, options) {
|
|
|
66
66
|
}
|
|
67
67
|
function promptRequest(deps, plan, sessionId) {
|
|
68
68
|
return {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
directory: sessionDirectory(deps, plan),
|
|
70
|
+
sessionID: sessionId,
|
|
71
|
+
...promptBody(plan)
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
function stopStream(stream) {
|
|
@@ -83,8 +83,8 @@ function resolveSessionId(deps, plan, options) {
|
|
|
83
83
|
return Effect.gen(function* () {
|
|
84
84
|
const session = yield* retryTransientTransport(() => Effect.gen(function* () {
|
|
85
85
|
return yield* unwrapEffect(yield* (yield* OpencodeSdkService).createSession(deps.client, {
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
directory: plan.cwd ?? deps.directory,
|
|
87
|
+
title: `moka:${plan.nodeId}`
|
|
88
88
|
}));
|
|
89
89
|
}), {
|
|
90
90
|
label: "session.create",
|
|
@@ -158,7 +158,8 @@ function promptBody(plan) {
|
|
|
158
158
|
type: "text"
|
|
159
159
|
}],
|
|
160
160
|
...agent ? { agent } : {},
|
|
161
|
-
...model ? { model } : {}
|
|
161
|
+
...model ? { model } : {},
|
|
162
|
+
...plan.variant ? { variant: plan.variant } : {}
|
|
162
163
|
};
|
|
163
164
|
}
|
|
164
165
|
const FLAGS_TAKING_VALUE = new Set([
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
|
-
import { createOpencode, createOpencodeClient } from "@opencode-ai/sdk";
|
|
2
|
+
import { createOpencode, createOpencodeClient } from "@opencode-ai/sdk/v2";
|
|
3
3
|
//#region src/runtime/services/opencode-sdk-service.ts
|
|
4
4
|
var OpencodeSdkService = class extends Context.Tag("OpencodeSdkService")() {};
|
|
5
5
|
const OpencodeSdkServiceLive = Layer.succeed(OpencodeSdkService, {
|
|
@@ -30,7 +30,8 @@ function applyNodeCatalogModelsToAgentNode(node, templates) {
|
|
|
30
30
|
return {
|
|
31
31
|
...node,
|
|
32
32
|
category: node.category ?? template.category,
|
|
33
|
-
models: nodeModelsOrCatalog(node, template)
|
|
33
|
+
models: nodeModelsOrCatalog(node, template),
|
|
34
|
+
reasoning_effort: node.reasoning_effort ?? template.reasoning_effort
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
37
|
function nodeModelsOrCatalog(node, template) {
|
package/package.json
CHANGED
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
"prepack": "bun run build:cli"
|
|
128
128
|
},
|
|
129
129
|
"type": "module",
|
|
130
|
-
"version": "3.11.
|
|
130
|
+
"version": "3.11.12",
|
|
131
131
|
"description": "Config-driven multi-agent pipeline runner for repository work",
|
|
132
132
|
"main": "./dist/index.js",
|
|
133
133
|
"types": "./dist/index.d.ts",
|