@oisincoveney/pipeline 3.11.10 → 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.
@@ -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
- provider_models:
87
- # Reasoning-effort variant selectors for ChatGPT OAuth Codex routing.
88
- # Each id must match the oc-codex-multi-auth MODEL_MAP exactly; the plugin
89
- # normalizes the selector back to the base API model (gpt-5.5) and the
90
- # reasoning effort is carried by the generated options.reasoningEffort.
91
- - id: gpt-5.5-none
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
@@ -104,54 +104,66 @@ scheduler:
104
104
  backlog-intake:
105
105
  category: intake
106
106
  profile: moka-researcher
107
- models: [openai/gpt-5.5-medium]
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-high, kimi-for-coding/kimi-k2-thinking]
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-high, kimi-for-coding/k2p6]
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-medium]
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-medium]
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-medium, kimi-for-coding/k2p6]
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-high, kimi-for-coding/kimi-k2-thinking]
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-high, kimi-for-coding/k2p6]
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-high, kimi-for-coding/k2p6, opencode-go/qwen3.7-max]
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-medium]
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-medium]
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-low]
165
+ models: [openai/gpt-5.5]
166
+ reasoning_effort: low
155
167
  schedules:
156
168
  quick-schedule:
157
169
  baseline: quick
@@ -90,7 +90,8 @@ skills:
90
90
  profiles:
91
91
  moka-orchestrator:
92
92
  runner: opencode
93
- model: openai/gpt-5.5-xhigh
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-low
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-xhigh
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-low
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]
@@ -80,6 +80,7 @@ declare const runnerArgoWorkflowManifestSchema: z.ZodObject<{
80
80
  path: z.ZodOptional<z.ZodString>;
81
81
  }, z.core.$strict>>;
82
82
  }, z.core.$strict>>;
83
+ activeDeadlineSeconds: z.ZodOptional<z.ZodNumber>;
83
84
  name: z.ZodString;
84
85
  retryStrategy: z.ZodOptional<z.ZodObject<{
85
86
  expression: z.ZodOptional<z.ZodString>;
@@ -28,9 +28,10 @@ const DEFAULT_RUNNER_RESOURCES = {
28
28
  },
29
29
  requests: {
30
30
  cpu: "1",
31
- memory: "8Gi"
31
+ memory: "5Gi"
32
32
  }
33
33
  };
34
+ const DEFAULT_RUNNER_DEADLINE_SECONDS = 3600;
34
35
  const kubernetesNameSchema = z.string().min(1);
35
36
  const labelValueSchema = z.string().min(1);
36
37
  const stringMapSchema = z.record(z.string().min(1), z.string().min(1));
@@ -109,6 +110,7 @@ const argoWorkflowTemplateSchema = z.object({
109
110
  parameters: z.array(z.object({ name: z.string().min(1) }).strict()).optional()
110
111
  }).strict().optional(),
111
112
  outputs: z.object({ artifacts: z.array(argoWorkflowArtifactSchema) }).strict().optional(),
113
+ activeDeadlineSeconds: z.number().int().positive().optional(),
112
114
  name: z.string().min(1),
113
115
  retryStrategy: argoWorkflowRetryStrategySchema.optional()
114
116
  }).strict().refine((template) => template.container !== void 0 || template.dag !== void 0, { message: "Workflow templates must declare container or dag" });
@@ -384,7 +386,8 @@ function runnerLifecycleTemplate(options, volumeMounts) {
384
386
  volumeMounts
385
387
  },
386
388
  name: RUNNER_WORKFLOW_START_TASK,
387
- retryStrategy: { ...RUNNER_RETRY_STRATEGY }
389
+ retryStrategy: { ...RUNNER_RETRY_STRATEGY },
390
+ activeDeadlineSeconds: DEFAULT_RUNNER_DEADLINE_SECONDS
388
391
  };
389
392
  }
390
393
  function runnerCommandTemplate(task, options, volumeMounts) {
@@ -412,7 +415,8 @@ function runnerCommandTemplate(task, options, volumeMounts) {
412
415
  volumeMounts: [...volumeMounts, taskVolumeMount]
413
416
  },
414
417
  name: task.templateName,
415
- retryStrategy: { ...RUNNER_RETRY_STRATEGY }
418
+ retryStrategy: { ...RUNNER_RETRY_STRATEGY },
419
+ activeDeadlineSeconds: DEFAULT_RUNNER_DEADLINE_SECONDS
416
420
  };
417
421
  }
418
422
  function runnerFinalizerTemplate(options, volumeMounts) {
@@ -435,7 +439,8 @@ function runnerFinalizerTemplate(options, volumeMounts) {
435
439
  resources: options.resources ?? DEFAULT_RUNNER_RESOURCES,
436
440
  volumeMounts
437
441
  },
438
- name: "pipeline-finalizer"
442
+ name: "pipeline-finalizer",
443
+ activeDeadlineSeconds: DEFAULT_RUNNER_DEADLINE_SECONDS
439
444
  };
440
445
  }
441
446
  function compactRecord(input) {
@@ -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";
@@ -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),
@@ -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>;
@@ -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()
package/dist/hooks.d.ts CHANGED
@@ -13,8 +13,8 @@ declare const hookResultSchema: z.ZodObject<{
13
13
  taskContext: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
14
14
  }, z.core.$strict>>;
15
15
  status: z.ZodEnum<{
16
- fail: "fail";
17
16
  pass: "pass";
17
+ fail: "fail";
18
18
  skip: "skip";
19
19
  }>;
20
20
  summary: z.ZodOptional<z.ZodString>;
@@ -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 } : {};
@@ -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<{
@@ -32,6 +32,7 @@ interface PlannedWorkflowNode {
32
32
  needs: string[];
33
33
  nodes?: string[];
34
34
  profile?: string;
35
+ reasoning_effort?: WorkflowNode["reasoning_effort"];
35
36
  retries?: WorkflowNode["retries"];
36
37
  taskContext?: PlannedWorkflowTaskContext;
37
38
  timeoutMs?: number;
@@ -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>;
@@ -108,8 +108,8 @@ declare const runnerEventRecordSchema: z.ZodUnion<readonly [z.ZodObject<{
108
108
  nodeId: z.ZodOptional<z.ZodString>;
109
109
  outputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
110
110
  status: z.ZodEnum<{
111
- fail: "fail";
112
111
  pass: "pass";
112
+ fail: "fail";
113
113
  skip: "skip";
114
114
  }>;
115
115
  summary: 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>;
@@ -286,8 +286,8 @@ declare const runnerEventBatchSchema: z.ZodObject<{
286
286
  nodeId: z.ZodOptional<z.ZodString>;
287
287
  outputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
288
288
  status: z.ZodEnum<{
289
- fail: "fail";
290
289
  pass: "pass";
290
+ fail: "fail";
291
291
  skip: "skip";
292
292
  }>;
293
293
  summary: 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: input.model ?? actor?.model ?? runner.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
  }
@@ -41,6 +41,7 @@ function executeAgentNodeEffect(node, context, attempt) {
41
41
  nodeId: node.id,
42
42
  profileId: node.profile,
43
43
  prompt,
44
+ reasoningEffort: node.reasoning_effort,
44
45
  worktreePath: context.worktreePath
45
46
  });
46
47
  if (node.timeoutMs) plan.timeoutMs = node.timeoutMs;
@@ -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
- body: promptBody(plan),
70
- path: { id: sessionId },
71
- query: { directory: sessionDirectory(deps, plan) }
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
- body: { title: `moka:${plan.nodeId}` },
87
- query: { directory: plan.cwd ?? deps.directory }
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.10",
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",