@on-par/factory-config 0.0.0-stage → 0.9.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/LICENSE +21 -0
- package/README.md +19 -2
- package/dist/constitutions/_template.md +87 -0
- package/dist/constitutions/default-review.md +31 -0
- package/dist/constitutions/example-client-delivery.md +90 -0
- package/dist/constitutions/example-data-app.md +78 -0
- package/dist/constitutions/example-marketing-site.md +102 -0
- package/dist/defaults.d.ts +198 -0
- package/dist/defaults.d.ts.map +1 -0
- package/dist/defaults.js +631 -0
- package/dist/defaults.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/package.json +48 -4
package/dist/defaults.js
ADDED
|
@@ -0,0 +1,631 @@
|
|
|
1
|
+
// packages/config/src/defaults.ts — the shipped factory defaults, as TypeScript.
|
|
2
|
+
//
|
|
3
|
+
// This file is the ONLY copy of these values. It replaced models.json /
|
|
4
|
+
// routes.json / factory.json (#716): tsc used to emit a second copy of those
|
|
5
|
+
// into dist/, and the two load paths could disagree about which was
|
|
6
|
+
// authoritative. Do not add JSON back to this package.
|
|
7
|
+
//
|
|
8
|
+
// Declares its own structural interfaces rather than importing zod or
|
|
9
|
+
// @on-par/factory-core: this package is zero-dependency and config <- core
|
|
10
|
+
// is the dependency direction (AGENTS.md), so the zod schemas in
|
|
11
|
+
// packages/core/src/config/index.ts stay the single runtime shape authority.
|
|
12
|
+
/** Model registry: providers, costs, capabilities, tiers and failover chains. */
|
|
13
|
+
export const defaultModelsConfig = {
|
|
14
|
+
version: 1,
|
|
15
|
+
models: {
|
|
16
|
+
/** Claude Fable 5 — most capable model, uses claude CLI subscription auth. Falls back to opus on rate-limit/usage-cap. */
|
|
17
|
+
'claude-fable-5': {
|
|
18
|
+
provider: 'anthropic',
|
|
19
|
+
tier: 'boss',
|
|
20
|
+
costPerMtokInput: 8.0,
|
|
21
|
+
costPerMtokOutput: 40.0,
|
|
22
|
+
contextWindow: 200000,
|
|
23
|
+
capabilities: ['planning', 'design', 'architecture', 'review', 'dispute_resolution'],
|
|
24
|
+
envKey: null,
|
|
25
|
+
harness: 'claude-cli',
|
|
26
|
+
claudeFlag: 'fable',
|
|
27
|
+
},
|
|
28
|
+
/** Claude Opus 5 — boss/plan model, uses claude CLI subscription auth. */
|
|
29
|
+
'claude-opus-5': {
|
|
30
|
+
provider: 'anthropic',
|
|
31
|
+
tier: 'boss',
|
|
32
|
+
costPerMtokInput: 5.0,
|
|
33
|
+
costPerMtokOutput: 25.0,
|
|
34
|
+
contextWindow: 200000,
|
|
35
|
+
capabilities: ['planning', 'design', 'architecture', 'review', 'dispute_resolution'],
|
|
36
|
+
envKey: null,
|
|
37
|
+
harness: 'claude-cli',
|
|
38
|
+
claudeFlag: 'claude-opus-5',
|
|
39
|
+
},
|
|
40
|
+
/** Claude Opus 5.5 — registered for repo pins only (not in any default tier), uses claude CLI subscription auth. */
|
|
41
|
+
'claude-opus-5-5': {
|
|
42
|
+
provider: 'anthropic',
|
|
43
|
+
tier: 'boss',
|
|
44
|
+
costPerMtokInput: 4.0,
|
|
45
|
+
costPerMtokOutput: 20.0,
|
|
46
|
+
contextWindow: 200000,
|
|
47
|
+
capabilities: ['planning', 'design', 'architecture', 'review', 'dispute_resolution'],
|
|
48
|
+
envKey: null,
|
|
49
|
+
harness: 'claude-cli',
|
|
50
|
+
claudeFlag: 'claude-opus-5-5',
|
|
51
|
+
},
|
|
52
|
+
/** Uses claude CLI subscription auth, no API key needed. */
|
|
53
|
+
'claude-opus-4-8': {
|
|
54
|
+
provider: 'anthropic',
|
|
55
|
+
tier: 'boss',
|
|
56
|
+
costPerMtokInput: 5.0,
|
|
57
|
+
costPerMtokOutput: 25.0,
|
|
58
|
+
contextWindow: 200000,
|
|
59
|
+
capabilities: ['planning', 'design', 'architecture', 'review', 'dispute_resolution'],
|
|
60
|
+
envKey: null,
|
|
61
|
+
harness: 'claude-cli',
|
|
62
|
+
claudeFlag: 'claude-opus-4-8',
|
|
63
|
+
},
|
|
64
|
+
/** Uses claude CLI subscription auth, no API key needed. */
|
|
65
|
+
'claude-sonnet-5': {
|
|
66
|
+
provider: 'anthropic',
|
|
67
|
+
tier: ['checker', 'boss_fallback', 'worker_fallback'],
|
|
68
|
+
costPerMtokInput: 3.0,
|
|
69
|
+
costPerMtokOutput: 15.0,
|
|
70
|
+
contextWindow: 200000,
|
|
71
|
+
capabilities: ['review', 'verification', 'implementation', 'triage'],
|
|
72
|
+
envKey: null,
|
|
73
|
+
harness: 'claude-cli',
|
|
74
|
+
claudeFlag: 'claude-sonnet-5',
|
|
75
|
+
},
|
|
76
|
+
/** Claude Sonnet 5.5 — registered for repo pins only (not in any default tier), uses claude CLI subscription auth. */
|
|
77
|
+
'claude-sonnet-5-5': {
|
|
78
|
+
provider: 'anthropic',
|
|
79
|
+
tier: ['checker', 'boss_fallback', 'worker_fallback'],
|
|
80
|
+
costPerMtokInput: 2.0,
|
|
81
|
+
costPerMtokOutput: 10.0,
|
|
82
|
+
contextWindow: 200000,
|
|
83
|
+
capabilities: ['review', 'verification', 'implementation', 'triage'],
|
|
84
|
+
envKey: null,
|
|
85
|
+
harness: 'claude-cli',
|
|
86
|
+
claudeFlag: 'claude-sonnet-5-5',
|
|
87
|
+
},
|
|
88
|
+
/** Codex CLI subscription auth (ChatGPT/OAuth), not an API key — do not gate availability on OPENAI_API_KEY. Explicitly pins -m gpt-5.6-sol instead of silently riding ~/.codex/config.toml's default model. */
|
|
89
|
+
'gpt-5.6-sol': {
|
|
90
|
+
provider: 'openai',
|
|
91
|
+
tier: ['worker'],
|
|
92
|
+
costPerMtokInput: 1.25,
|
|
93
|
+
costPerMtokOutput: 10.0,
|
|
94
|
+
contextWindow: 272000,
|
|
95
|
+
capabilities: ['implementation', 'codex'],
|
|
96
|
+
envKey: null,
|
|
97
|
+
harness: 'codex-cli',
|
|
98
|
+
codex: true,
|
|
99
|
+
codexFlag: '-m gpt-5.6-sol -c model_reasoning_effort=medium',
|
|
100
|
+
},
|
|
101
|
+
/** Codex CLI subscription auth (ChatGPT/OAuth), not an API key — do not gate availability on OPENAI_API_KEY. Explicitly pins -m gpt-5.1-codex so failover from gpt-5.6-sol actually changes models (#415). Kept as fallback behind gpt-5.6-sol. */
|
|
102
|
+
'gpt-5.1-codex': {
|
|
103
|
+
provider: 'openai',
|
|
104
|
+
tier: ['worker'],
|
|
105
|
+
costPerMtokInput: 1.25,
|
|
106
|
+
costPerMtokOutput: 10.0,
|
|
107
|
+
contextWindow: 272000,
|
|
108
|
+
capabilities: ['implementation', 'codex'],
|
|
109
|
+
envKey: null,
|
|
110
|
+
harness: 'codex-cli',
|
|
111
|
+
codex: true,
|
|
112
|
+
codexFlag: '-m gpt-5.1-codex -c model_reasoning_effort=high',
|
|
113
|
+
},
|
|
114
|
+
/** Default Codex GPT PLAN profile (#529): GPT 5.6 Terra at high reasoning effort. Codex CLI subscription auth (ChatGPT/OAuth) — do not gate on OPENAI_API_KEY. Kept at the END of tiers.boss so Claude/Ollama plan defaults are unchanged; it is the plan model whenever the GPT provider path is selected (provider filtering or an explicit pin). Distinct model_reasoning_effort per profile keeps the #415 failover-changes-config invariant. */
|
|
115
|
+
'gpt-5.6-terra-high': {
|
|
116
|
+
provider: 'openai',
|
|
117
|
+
tier: ['boss'],
|
|
118
|
+
costPerMtokInput: 1.25,
|
|
119
|
+
costPerMtokOutput: 10.0,
|
|
120
|
+
contextWindow: 272000,
|
|
121
|
+
capabilities: ['planning', 'design', 'architecture', 'review', 'codex'],
|
|
122
|
+
envKey: null,
|
|
123
|
+
harness: 'codex-cli',
|
|
124
|
+
codex: true,
|
|
125
|
+
codexFlag: '-m gpt-5.6-terra -c model_reasoning_effort=high',
|
|
126
|
+
},
|
|
127
|
+
/** Default Codex GPT BUILD profile (#529): GPT 5.6 Terra at medium reasoning effort. Codex CLI subscription auth (ChatGPT/OAuth) — do not gate on OPENAI_API_KEY. First in the build_codex chain; gpt-5.6-sol and gpt-5.1-codex remain as failovers. */
|
|
128
|
+
'gpt-5.6-terra-medium': {
|
|
129
|
+
provider: 'openai',
|
|
130
|
+
tier: ['worker'],
|
|
131
|
+
costPerMtokInput: 1.25,
|
|
132
|
+
costPerMtokOutput: 10.0,
|
|
133
|
+
contextWindow: 272000,
|
|
134
|
+
capabilities: ['implementation', 'codex'],
|
|
135
|
+
envKey: null,
|
|
136
|
+
harness: 'codex-cli',
|
|
137
|
+
codex: true,
|
|
138
|
+
codexFlag: '-m gpt-5.6-terra -c model_reasoning_effort=medium',
|
|
139
|
+
},
|
|
140
|
+
/** Codex GPT BUILD/CHECK profile: GPT 5.6 Luna at high reasoning effort. Codex CLI subscription auth (ChatGPT/OAuth) — do not gate on OPENAI_API_KEY. Intended for fast worker/checker lanes when the repo explicitly pins it. */
|
|
141
|
+
'gpt-5.6-luna-high': {
|
|
142
|
+
provider: 'openai',
|
|
143
|
+
tier: ['worker', 'checker'],
|
|
144
|
+
costPerMtokInput: 1.25,
|
|
145
|
+
costPerMtokOutput: 10.0,
|
|
146
|
+
contextWindow: 272000,
|
|
147
|
+
capabilities: ['implementation', 'verification', 'codex'],
|
|
148
|
+
envKey: null,
|
|
149
|
+
harness: 'codex-cli',
|
|
150
|
+
codex: true,
|
|
151
|
+
codexFlag: '-m gpt-5.6-luna -c model_reasoning_effort=high',
|
|
152
|
+
},
|
|
153
|
+
/** Opt-in Astra profile. Codex subscription auth; existing tier order stays unchanged. */
|
|
154
|
+
'gpt-6-astra': {
|
|
155
|
+
provider: 'openai',
|
|
156
|
+
tier: ['boss', 'worker', 'checker'],
|
|
157
|
+
costPerMtokInput: 10,
|
|
158
|
+
costPerMtokOutput: 50,
|
|
159
|
+
contextWindow: 272000,
|
|
160
|
+
capabilities: ['planning', 'implementation', 'verification', 'codex'],
|
|
161
|
+
envKey: null,
|
|
162
|
+
harness: 'codex-cli',
|
|
163
|
+
codex: true,
|
|
164
|
+
codexFlag: '-m gpt-6-astra -c model_reasoning_effort=medium',
|
|
165
|
+
},
|
|
166
|
+
/** claude-CLI wiring is unproven — the Claude CLI only serves Anthropic models */
|
|
167
|
+
'gpt-4.1-mini': {
|
|
168
|
+
provider: 'openai',
|
|
169
|
+
tier: 'checker',
|
|
170
|
+
costPerMtokInput: 0.4,
|
|
171
|
+
costPerMtokOutput: 1.6,
|
|
172
|
+
contextWindow: 128000,
|
|
173
|
+
capabilities: ['verification', 'lightweight_review'],
|
|
174
|
+
envKey: 'OPENAI_API_KEY',
|
|
175
|
+
harness: 'claude-cli',
|
|
176
|
+
claudeFlag: 'gpt-4.1-mini',
|
|
177
|
+
experimental: true,
|
|
178
|
+
},
|
|
179
|
+
/** speculative — opt in with FACTORY_EXPERIMENTAL=1 */
|
|
180
|
+
'glm-5.2': {
|
|
181
|
+
provider: 'ollama',
|
|
182
|
+
tier: 'worker',
|
|
183
|
+
costPerMtokInput: 0.1,
|
|
184
|
+
costPerMtokOutput: 0.5,
|
|
185
|
+
contextWindow: 131072,
|
|
186
|
+
capabilities: ['implementation', 'coding'],
|
|
187
|
+
envKey: null,
|
|
188
|
+
harness: 'ollama-http',
|
|
189
|
+
claudeFlag: 'ollama/glm-5.2:cloud',
|
|
190
|
+
experimental: true,
|
|
191
|
+
},
|
|
192
|
+
/** Local-only Ollama coding model for 16GB Macs. Slow is acceptable; keep concurrency low. */
|
|
193
|
+
'qwen2.5-coder:14b': {
|
|
194
|
+
provider: 'ollama',
|
|
195
|
+
tier: ['boss', 'worker', 'checker', 'triage'],
|
|
196
|
+
costPerMtokInput: 0,
|
|
197
|
+
costPerMtokOutput: 0,
|
|
198
|
+
contextWindow: 32768,
|
|
199
|
+
capabilities: ['planning', 'implementation', 'coding', 'review', 'verification', 'triage'],
|
|
200
|
+
envKey: null,
|
|
201
|
+
harness: 'ollama-http',
|
|
202
|
+
providerModel: 'qwen2.5-coder:14b',
|
|
203
|
+
providerOptions: {
|
|
204
|
+
num_ctx: 16384,
|
|
205
|
+
temperature: 0.1,
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
/** EXPERIMENTAL quarantined spike (ADR-0003): local-only worker driving Ollama qwen3.5:9b through the schema-bound ollama-agentic harness. codex: true only marks build_codex eligibility — this model never runs 'codex exec --local-provider'; there is no codexFlag. Opt in with FACTORY_EXPERIMENTAL=1. Retire or keep after the #170 bounded-retry test and the first green local fixture run (epic #163). */
|
|
209
|
+
'codex-ollama-qwen3.5:9b': {
|
|
210
|
+
provider: 'ollama',
|
|
211
|
+
tier: ['worker'],
|
|
212
|
+
costPerMtokInput: 0,
|
|
213
|
+
costPerMtokOutput: 0,
|
|
214
|
+
contextWindow: 32768,
|
|
215
|
+
capabilities: ['implementation', 'coding', 'codex'],
|
|
216
|
+
envKey: null,
|
|
217
|
+
harness: 'ollama-agentic',
|
|
218
|
+
providerModel: 'qwen3.5:9b',
|
|
219
|
+
providerOptions: {
|
|
220
|
+
num_ctx: 8192,
|
|
221
|
+
temperature: 0.1,
|
|
222
|
+
},
|
|
223
|
+
codex: true,
|
|
224
|
+
experimental: true,
|
|
225
|
+
},
|
|
226
|
+
/** Local Ollama fallback/second-opinion model; supports tools/thinking in Ollama. */
|
|
227
|
+
'qwen3.5:9b': {
|
|
228
|
+
provider: 'ollama',
|
|
229
|
+
tier: ['worker', 'checker'],
|
|
230
|
+
costPerMtokInput: 0,
|
|
231
|
+
costPerMtokOutput: 0,
|
|
232
|
+
contextWindow: 65536,
|
|
233
|
+
capabilities: ['implementation', 'coding', 'review', 'verification'],
|
|
234
|
+
envKey: null,
|
|
235
|
+
harness: 'ollama-http',
|
|
236
|
+
providerModel: 'qwen3.5:9b',
|
|
237
|
+
providerOptions: {
|
|
238
|
+
num_ctx: 8192,
|
|
239
|
+
temperature: 0.1,
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
/** Smaller local Ollama fallback for memory-constrained runs. */
|
|
243
|
+
'qwen3:8b': {
|
|
244
|
+
provider: 'ollama',
|
|
245
|
+
tier: ['worker', 'checker'],
|
|
246
|
+
costPerMtokInput: 0,
|
|
247
|
+
costPerMtokOutput: 0,
|
|
248
|
+
contextWindow: 40960,
|
|
249
|
+
capabilities: ['implementation', 'coding', 'review', 'verification'],
|
|
250
|
+
envKey: null,
|
|
251
|
+
harness: 'ollama-http',
|
|
252
|
+
providerModel: 'qwen3:8b',
|
|
253
|
+
providerOptions: {
|
|
254
|
+
num_ctx: 24576,
|
|
255
|
+
temperature: 0.2,
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
/** Local Ollama planning/review alternative; expect model swaps on 16GB hosts. */
|
|
259
|
+
'gemma4:12b': {
|
|
260
|
+
provider: 'ollama',
|
|
261
|
+
tier: ['boss', 'checker'],
|
|
262
|
+
costPerMtokInput: 0,
|
|
263
|
+
costPerMtokOutput: 0,
|
|
264
|
+
contextWindow: 131072,
|
|
265
|
+
capabilities: ['planning', 'review', 'verification', 'dispute_resolution'],
|
|
266
|
+
envKey: null,
|
|
267
|
+
harness: 'ollama-http',
|
|
268
|
+
providerModel: 'gemma4:12b',
|
|
269
|
+
providerOptions: {
|
|
270
|
+
num_ctx: 32768,
|
|
271
|
+
temperature: 0.2,
|
|
272
|
+
},
|
|
273
|
+
},
|
|
274
|
+
/** speculative — opt in with FACTORY_EXPERIMENTAL=1 */
|
|
275
|
+
'deepseek-v3': {
|
|
276
|
+
provider: 'deepseek',
|
|
277
|
+
tier: 'worker',
|
|
278
|
+
costPerMtokInput: 0.07,
|
|
279
|
+
costPerMtokOutput: 0.28,
|
|
280
|
+
contextWindow: 128000,
|
|
281
|
+
capabilities: ['implementation', 'coding'],
|
|
282
|
+
envKey: 'DEEPSEEK_API_KEY',
|
|
283
|
+
harness: 'claude-cli',
|
|
284
|
+
claudeFlag: 'deepseek/deepseek-chat',
|
|
285
|
+
experimental: true,
|
|
286
|
+
},
|
|
287
|
+
/** speculative — opt in with FACTORY_EXPERIMENTAL=1 */
|
|
288
|
+
'qwen-3.5-coder': {
|
|
289
|
+
provider: 'ollama',
|
|
290
|
+
tier: 'worker',
|
|
291
|
+
costPerMtokInput: 0.05,
|
|
292
|
+
costPerMtokOutput: 0.2,
|
|
293
|
+
contextWindow: 131072,
|
|
294
|
+
capabilities: ['implementation', 'coding'],
|
|
295
|
+
envKey: null,
|
|
296
|
+
harness: 'ollama-http',
|
|
297
|
+
claudeFlag: 'ollama/qwen3.5-coder:cloud',
|
|
298
|
+
experimental: true,
|
|
299
|
+
},
|
|
300
|
+
/** First provider added via the generic harness seam (#188). OpenCode CLI (opencode run) with provider/model id; opt in with FACTORY_EXPERIMENTAL=1. Doctor reports 'opencode CLI not found on PATH' when the CLI is missing. */
|
|
301
|
+
'opencode-sonnet': {
|
|
302
|
+
provider: 'custom',
|
|
303
|
+
tier: ['worker'],
|
|
304
|
+
costPerMtokInput: 3.0,
|
|
305
|
+
costPerMtokOutput: 15.0,
|
|
306
|
+
contextWindow: 200000,
|
|
307
|
+
capabilities: ['implementation', 'coding'],
|
|
308
|
+
envKey: null,
|
|
309
|
+
harness: 'opencode',
|
|
310
|
+
providerModel: 'anthropic/claude-sonnet-5',
|
|
311
|
+
experimental: true,
|
|
312
|
+
},
|
|
313
|
+
/** Added 2026-08-12 per Patrick's OpenCode Go subscription (OPENCODE_API_KEY env var). Served via OpenCode Go (https://opencode.ai/zen/go/v1) — distinct provider from OpenCode Zen (opencode/... prefix, pay-per-use, $0 balance when this was set up; do not confuse the two, same env var backs both). Confirmed working live: `opencode run --model opencode-go/deepseek-v4-flash "..."` returns real output. opt in with FACTORY_EXPERIMENTAL=1. */
|
|
314
|
+
'opencode-deepseek-v4-flash': {
|
|
315
|
+
provider: 'custom',
|
|
316
|
+
tier: ['worker'],
|
|
317
|
+
costPerMtokInput: 0.07,
|
|
318
|
+
costPerMtokOutput: 0.14,
|
|
319
|
+
contextWindow: 1000000,
|
|
320
|
+
capabilities: ['implementation', 'coding'],
|
|
321
|
+
envKey: 'OPENCODE_API_KEY',
|
|
322
|
+
harness: 'opencode',
|
|
323
|
+
providerModel: 'opencode-go/deepseek-v4-flash',
|
|
324
|
+
experimental: true,
|
|
325
|
+
},
|
|
326
|
+
/** Added 2026-08-17: OpenCode Go's monthly usage cap ($60/mo) hit 100% and doesn't reset until 2026-09-13, blocking opencode-deepseek-v4-flash. This is OpenCode Zen's (not Go's) promo-period free tier for the same model, opencode/... prefix, no balance or subscription quota involved. Anoma.ly's privacy notice: during the free promo, request data may be used to improve the model (not the zero-retention terms Go/paid Zen get) — acceptable for skunkworks throwaway prototypes, reconsider before using on anything with real user/client data. Free tier may be pulled without notice; if `opencode/deepseek-v4-flash-free` starts erroring, check https://opencode.ai/docs/zen/ for current free-tier availability. Confirmed working live: `opencode run --model opencode/deepseek-v4-flash-free "..."` returns real output. opt in with FACTORY_EXPERIMENTAL=1. */
|
|
327
|
+
'opencode-deepseek-v4-flash-free': {
|
|
328
|
+
provider: 'custom',
|
|
329
|
+
tier: ['worker'],
|
|
330
|
+
costPerMtokInput: 0,
|
|
331
|
+
costPerMtokOutput: 0,
|
|
332
|
+
contextWindow: 1000000,
|
|
333
|
+
capabilities: ['implementation', 'coding'],
|
|
334
|
+
envKey: 'OPENCODE_API_KEY',
|
|
335
|
+
harness: 'opencode',
|
|
336
|
+
providerModel: 'opencode/deepseek-v4-flash-free',
|
|
337
|
+
experimental: true,
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
tiers: {
|
|
341
|
+
boss: [
|
|
342
|
+
'claude-opus-5',
|
|
343
|
+
'qwen2.5-coder:14b',
|
|
344
|
+
'gemma4:12b',
|
|
345
|
+
'claude-fable-5',
|
|
346
|
+
'claude-opus-4-8',
|
|
347
|
+
'claude-sonnet-5',
|
|
348
|
+
'glm-5.2',
|
|
349
|
+
'gpt-5.6-terra-high',
|
|
350
|
+
],
|
|
351
|
+
worker: [
|
|
352
|
+
'codex-ollama-qwen3.5:9b',
|
|
353
|
+
'qwen2.5-coder:14b',
|
|
354
|
+
'qwen3.5:9b',
|
|
355
|
+
'qwen3:8b',
|
|
356
|
+
'gpt-5.6-terra-medium',
|
|
357
|
+
'gpt-5.6-sol',
|
|
358
|
+
'gpt-5.1-codex',
|
|
359
|
+
'claude-sonnet-5',
|
|
360
|
+
'glm-5.2',
|
|
361
|
+
'deepseek-v3',
|
|
362
|
+
'qwen-3.5-coder',
|
|
363
|
+
'opencode-sonnet',
|
|
364
|
+
'opencode-deepseek-v4-flash-free',
|
|
365
|
+
],
|
|
366
|
+
checker: [
|
|
367
|
+
'qwen3.5:9b',
|
|
368
|
+
'gemma4:12b',
|
|
369
|
+
'qwen2.5-coder:14b',
|
|
370
|
+
'qwen3:8b',
|
|
371
|
+
'claude-sonnet-5',
|
|
372
|
+
'gpt-5.6-luna-high',
|
|
373
|
+
'gpt-4.1-mini',
|
|
374
|
+
'glm-5.2',
|
|
375
|
+
],
|
|
376
|
+
triage: ['qwen2.5-coder:14b', 'claude-sonnet-5', 'glm-5.2'],
|
|
377
|
+
},
|
|
378
|
+
failover: {
|
|
379
|
+
triggers: ['rate_limit', 'usage_cap', 'timeout', 'error', 'empty_response'],
|
|
380
|
+
maxRetries: 2,
|
|
381
|
+
cooldownMs: 5000,
|
|
382
|
+
escalateAfterTierExhausted: true,
|
|
383
|
+
},
|
|
384
|
+
routingRules: {
|
|
385
|
+
codex_available: {
|
|
386
|
+
if: 'command -v codex && FACTORY_CODEX != 0',
|
|
387
|
+
worker_preferred: ['gpt-5.6-terra-medium', 'gpt-5.6-sol', 'gpt-5.1-codex'],
|
|
388
|
+
boss_preferred: ['gpt-5.6-terra-high'],
|
|
389
|
+
note: 'Codex flat-rate is cheapest for implementation when available. Phase-effort policy (#529): PLAN defaults to gpt-5.6-terra-high, BUILD defaults to gpt-5.6-terra-medium, both pinned explicitly via -m; gpt-5.6-sol and gpt-5.1-codex remain as failovers (pinned via -m, #415).',
|
|
390
|
+
},
|
|
391
|
+
ollama_available: {
|
|
392
|
+
if: 'command -v ollama',
|
|
393
|
+
worker_preferred_add: ['codex-ollama-qwen3.5:9b', 'qwen2.5-coder:14b', 'qwen3.5:9b', 'qwen3:8b'],
|
|
394
|
+
note: 'Local Ollama models are free but slower; good for bulk work',
|
|
395
|
+
},
|
|
396
|
+
byok_active: {
|
|
397
|
+
if: 'FACTORY_BYOK=1',
|
|
398
|
+
skip_models_without_env: true,
|
|
399
|
+
note: 'In BYOK mode, only use models whose env keys are present',
|
|
400
|
+
},
|
|
401
|
+
},
|
|
402
|
+
};
|
|
403
|
+
/** Task-type → model-tier routing. The router resolves a tier to the first available model. */
|
|
404
|
+
export const defaultRoutesConfig = {
|
|
405
|
+
version: 1,
|
|
406
|
+
routes: {
|
|
407
|
+
plan: {
|
|
408
|
+
tier: 'boss',
|
|
409
|
+
description: 'Spec writing, architecture, route selection — needs judgment',
|
|
410
|
+
},
|
|
411
|
+
readiness_enrich: {
|
|
412
|
+
tier: 'triage',
|
|
413
|
+
description: 'Create a complete factory-task issue body before PLAN',
|
|
414
|
+
},
|
|
415
|
+
decompose: {
|
|
416
|
+
tier: 'triage',
|
|
417
|
+
description: 'Decompose an oversized factory-task issue into an epic + INVEST-sized stories (proposed as a comment, not filed)',
|
|
418
|
+
},
|
|
419
|
+
build_codex: {
|
|
420
|
+
tier: 'worker',
|
|
421
|
+
description: 'Codex CLI implementation from frozen spec',
|
|
422
|
+
requires: 'codex',
|
|
423
|
+
},
|
|
424
|
+
build_claude: {
|
|
425
|
+
tier: 'worker',
|
|
426
|
+
description: 'Claude implementation from frozen spec (design/UX tasks) - requires the claude-cli harness, which drives its own commits (commit-only; SHIP publishes after CHECK)',
|
|
427
|
+
requires: 'claude',
|
|
428
|
+
},
|
|
429
|
+
build_opencode: {
|
|
430
|
+
tier: 'worker',
|
|
431
|
+
description: 'OpenCode CLI implementation from frozen spec - requires the opencode harness (e.g. opencode-deepseek-v4-flash)',
|
|
432
|
+
requires: 'opencode',
|
|
433
|
+
},
|
|
434
|
+
check_compile: {
|
|
435
|
+
tier: 'checker',
|
|
436
|
+
description: 'Build/compile verification',
|
|
437
|
+
},
|
|
438
|
+
check_tests: {
|
|
439
|
+
tier: 'checker',
|
|
440
|
+
description: 'Test suite execution and result verification',
|
|
441
|
+
},
|
|
442
|
+
check_lint: {
|
|
443
|
+
tier: 'checker',
|
|
444
|
+
description: 'Linting and type checking',
|
|
445
|
+
},
|
|
446
|
+
check_accessibility: {
|
|
447
|
+
tier: 'checker',
|
|
448
|
+
description: 'WCAG/accessibility checks in real browser',
|
|
449
|
+
},
|
|
450
|
+
check_links: {
|
|
451
|
+
tier: 'checker',
|
|
452
|
+
description: 'URL/link resolution and validation',
|
|
453
|
+
},
|
|
454
|
+
check_custom: {
|
|
455
|
+
tier: 'checker',
|
|
456
|
+
description: 'Product-specific custom checks (from constitution)',
|
|
457
|
+
},
|
|
458
|
+
check_design: {
|
|
459
|
+
tier: 'checker',
|
|
460
|
+
description: "Program-design smell critic over the lane's real diff",
|
|
461
|
+
},
|
|
462
|
+
eval_judge: {
|
|
463
|
+
tier: 'checker',
|
|
464
|
+
description: 'LLM judge scoring eval specs against a rubric',
|
|
465
|
+
},
|
|
466
|
+
review_pr: {
|
|
467
|
+
tier: 'checker',
|
|
468
|
+
description: 'Code review of the final diff before PR',
|
|
469
|
+
},
|
|
470
|
+
security_review: {
|
|
471
|
+
tier: 'checker',
|
|
472
|
+
description: 'Security review of the diff',
|
|
473
|
+
},
|
|
474
|
+
classify_pr: {
|
|
475
|
+
tier: 'checker',
|
|
476
|
+
description: 'PR classifier: escalate-only review class (A/B/C) from the diff (ADR-0121)',
|
|
477
|
+
},
|
|
478
|
+
steward: {
|
|
479
|
+
tier: 'boss',
|
|
480
|
+
description: 'Stuck-run steward (ADR-0155): one tool-less call over the sanitized packet, returning one JSON verdict',
|
|
481
|
+
model: 'claude-opus-5',
|
|
482
|
+
allowedTools: [],
|
|
483
|
+
output: 'json',
|
|
484
|
+
},
|
|
485
|
+
dispute_resolution: {
|
|
486
|
+
tier: 'boss',
|
|
487
|
+
description: 'Boss arbitrates when worker disputes checker failure',
|
|
488
|
+
},
|
|
489
|
+
triage: {
|
|
490
|
+
tier: 'triage',
|
|
491
|
+
description: 'Issue triage and queue building',
|
|
492
|
+
},
|
|
493
|
+
},
|
|
494
|
+
};
|
|
495
|
+
export const defaultEvidenceCaps = {
|
|
496
|
+
maxExcerptChars: 2000,
|
|
497
|
+
maxBodyChars: 8000,
|
|
498
|
+
};
|
|
499
|
+
/** Lane circuit breaker threshold (#1915): default for `budget.laneBreakerThreshold`. 0 turns the breaker off. */
|
|
500
|
+
export const defaultLaneBreakerThreshold = 2;
|
|
501
|
+
/** Global factory configuration: paths, timeouts, merge/worktree/budget/intake defaults. */
|
|
502
|
+
export const defaultFactoryConfig = {
|
|
503
|
+
version: 1,
|
|
504
|
+
paths: {
|
|
505
|
+
constitutions: 'constitutions/',
|
|
506
|
+
checkers: 'lib/checkers/',
|
|
507
|
+
plans: '.factory/plans/',
|
|
508
|
+
logs: '.factory/logs/',
|
|
509
|
+
events: '.factory/events.ndjson',
|
|
510
|
+
constitution: '.factory/constitution.md',
|
|
511
|
+
},
|
|
512
|
+
timeouts: {
|
|
513
|
+
plan_seconds: 1800,
|
|
514
|
+
build_seconds: 7200,
|
|
515
|
+
check_seconds: 1800,
|
|
516
|
+
merge_poll_seconds: 120,
|
|
517
|
+
approval_seconds: 1800,
|
|
518
|
+
tests_seconds: 300,
|
|
519
|
+
},
|
|
520
|
+
merge: {
|
|
521
|
+
auto: false,
|
|
522
|
+
comment: 'Set FACTORY_MERGE=1 to enable autonomous squash-merge; set FACTORY_MERGE_ADMIN=1 to bypass unmet merge requirements with GitHub admin privileges',
|
|
523
|
+
},
|
|
524
|
+
worktree: {
|
|
525
|
+
parent: '~/.factory/worktrees',
|
|
526
|
+
comment: 'Where lane worktrees are created. "~/..." or an absolute path is a shared root, namespaced as <parent>/<owner>/<repo>/. ' +
|
|
527
|
+
'A repo-relative path is used as-is: "../" gives the old sibling layout; ".factory/worktrees" keeps them inside the repo ' +
|
|
528
|
+
"(auto-added to .git/info/exclude) but the repo's own tools (jest, eslint, tsc, globbing scripts) may crawl into those nested checkouts.",
|
|
529
|
+
gcTtlDays: 7,
|
|
530
|
+
autoGcOnRun: true,
|
|
531
|
+
},
|
|
532
|
+
byok: {
|
|
533
|
+
enabled: false,
|
|
534
|
+
comment: 'When true, only use models whose API keys are present in env',
|
|
535
|
+
},
|
|
536
|
+
notifications: {
|
|
537
|
+
on_ship: true,
|
|
538
|
+
on_fail: true,
|
|
539
|
+
on_escalate: true,
|
|
540
|
+
on_park: true,
|
|
541
|
+
on_merge: true,
|
|
542
|
+
},
|
|
543
|
+
cost_tracking: {
|
|
544
|
+
enabled: true,
|
|
545
|
+
log_file: '.factory/costs.jsonl',
|
|
546
|
+
comment: 'Per-task token usage and cost logged for analysis',
|
|
547
|
+
},
|
|
548
|
+
kpis: {
|
|
549
|
+
defectWindowDays: 14,
|
|
550
|
+
comment: 'Post-merge defect window (#612): after a factory PR merges, follow-up signals (revert commits, new issues back-referencing the PR/issue/merge commit, non-bot post-merge comments raising concerns) are watched for this many days. A run is only scored once its window has closed. Override with FACTORY_DEFECT_WINDOW_DAYS.',
|
|
551
|
+
},
|
|
552
|
+
ci: {
|
|
553
|
+
skip: false,
|
|
554
|
+
comment: 'Set FACTORY_SKIP_CI=1 to skip waiting for GitHub Actions CI before merging',
|
|
555
|
+
},
|
|
556
|
+
sweep: {
|
|
557
|
+
loopIntervalSeconds: 300,
|
|
558
|
+
staleThresholdMultiplier: 2,
|
|
559
|
+
comment: 'Optional: set sweep.heartbeatFile (or export HEARTBEAT_FILE) to the path an auto-merge-sweep loop writes an ISO8601 timestamp to once per pass (see scripts/auto-merge-sweep.sh, docs/runbooks/sweep-heartbeat.md). factory doctor/status fail when it is older than loopIntervalSeconds * staleThresholdMultiplier seconds. Unset means no sweep is configured for this repo — no check runs.',
|
|
560
|
+
},
|
|
561
|
+
plan_approval: {
|
|
562
|
+
enabled: false,
|
|
563
|
+
comment: 'OPTIONAL pre-code gate: when true (or --approve-plan / FACTORY_APPROVE_PLAN=1), PLAN pauses after freezing the spec and waits for operator approval before BUILD. Default off keeps unattended auto-plan. Independent of the SHIP/auto-merge gate.',
|
|
564
|
+
},
|
|
565
|
+
/**
|
|
566
|
+
* Opt-in: when true, PLAN stops before BUILD if a behaviorDelta row with verdict worse/unknown is not listed in
|
|
567
|
+
* openQuestions. Default false = log design_regression_unresolved only, like the other design checks.
|
|
568
|
+
* FACTORY_DESIGN_BLOCK_REGRESSIONS=1/0 overrides.
|
|
569
|
+
*/
|
|
570
|
+
design: { blockUnresolvedRegressions: false },
|
|
571
|
+
/**
|
|
572
|
+
* BUILD policy (#1867). false keeps BUILD commit-only on every route (SHIP pushes and
|
|
573
|
+
* opens the PR after CHECK); true lets the claude worker push and open a PR itself.
|
|
574
|
+
*/
|
|
575
|
+
build: { publishFromBuild: false },
|
|
576
|
+
/** Size gates on: an oversized issue files child issues or parks (ADR-0043). Slice cap 10 (ADR-0156). */
|
|
577
|
+
sizeGate: { mode: 'file', maxSlices: 10 },
|
|
578
|
+
sandbox: {
|
|
579
|
+
enabled: true,
|
|
580
|
+
runtime: 'auto',
|
|
581
|
+
network: { allow: ['api.anthropic.com', 'github.com'] },
|
|
582
|
+
resources: { cpuMs: 300000, memMb: 4096 },
|
|
583
|
+
docker: { rolloutPercent: 0 },
|
|
584
|
+
comment: 'Containment for agentic build runs. Disable per-run with --no-sandbox or FACTORY_SANDBOX=0. Empty network.allow denies all egress; non-empty leaves egress open (per-host filtering is logged as degraded in v1). Set sandbox.runtime (auto|sandbox-exec|firejail|docker-sandbox|none) or FACTORY_SANDBOX_RUNTIME to pick a runtime; auto probes the host. docker-sandbox is reserved for the microVM runtime and does not contain anything yet (#653). sandbox.docker.rolloutPercent (0-100) deterministically promotes that percentage of unpinned lanes into the docker-sandbox cohort for A/B evidence (#655).',
|
|
585
|
+
},
|
|
586
|
+
discovery: {
|
|
587
|
+
enabled: true,
|
|
588
|
+
schedule: 'weekly',
|
|
589
|
+
maxCandidates: 5,
|
|
590
|
+
comment: 'Scheduled read-only scan that proposes a ranked, capped list of candidate ideas from product signals. No GitHub writes.',
|
|
591
|
+
},
|
|
592
|
+
filing: {
|
|
593
|
+
enabled: true,
|
|
594
|
+
excludeReasons: ['rate_limit', 'usage_cap', 'timeout', 'verify_failed'],
|
|
595
|
+
repeatThreshold: 3,
|
|
596
|
+
maxPerRun: 5,
|
|
597
|
+
maxPerDay: 20,
|
|
598
|
+
selfFixLabel: 'no-auto-merge',
|
|
599
|
+
bugLabels: ['bug'],
|
|
600
|
+
sensitivePaths: ['packages/core/', 'packages/config/', 'packages/cli/', 'scripts/', '.github/'],
|
|
601
|
+
comment: 'Guardrails for auto-filing self-defects. excludeReasons are never filed unless the same fingerprint parks >= repeatThreshold times. maxPerRun/maxPerDay cap new bugs. Bugs whose origin is factory-internal get selfFixLabel so the merge path refuses auto-merge (human approval required).',
|
|
602
|
+
},
|
|
603
|
+
ingest: {
|
|
604
|
+
enabled: false,
|
|
605
|
+
label: 'ready',
|
|
606
|
+
lane: 'auto',
|
|
607
|
+
maxPerCycle: 20,
|
|
608
|
+
comment: 'Always-on auto-ingest. When enabled, `factory supervise` polls each cycle for open issues carrying `label` and appends new ones (deduped against the queue and open factory/* PRs, legacy ship-it branches included) to the queue under `lane`. Enable per-run with FACTORY_AUTO_INGEST=1; disable with =0.',
|
|
609
|
+
},
|
|
610
|
+
intake: { enforce: 'warn' },
|
|
611
|
+
environment: {
|
|
612
|
+
ports: {
|
|
613
|
+
enabled: true,
|
|
614
|
+
range: [3100, 3999],
|
|
615
|
+
comment: 'Per-lane app-port leases (.factory/ports.json). Each lane gets a unique port injected as PORT/FACTORY_APP_PORT/FACTORY_BASE_URL into BUILD/CHECK agent runs. Disable per-run with FACTORY_ENV_PORTS=0.',
|
|
616
|
+
},
|
|
617
|
+
proxy: {
|
|
618
|
+
enabled: false,
|
|
619
|
+
port: 80,
|
|
620
|
+
domain: 'factory.localhost',
|
|
621
|
+
comment: 'Opt-in loopback reverse proxy giving each lane a stable URL http://<lane>.<domain>[:port]. Routes resolve per-request from .factory/ports.json so they always track the lease lifecycle. Binds 127.0.0.1 only. *.localhost resolves to loopback in Chrome/Firefox and per RFC 6761; Safari/curl may need dnsmasq with a .test domain — documented, not solved, in v1. Started in-process by `factory run`/`supervise`, or manually via `factory proxy`. If the port cannot be bound (e.g. :80 without privileges on Linux) lanes degrade to port-based URLs with one informational log line. Override per-run with FACTORY_PROXY=1/0.',
|
|
622
|
+
},
|
|
623
|
+
},
|
|
624
|
+
auto_failover: {
|
|
625
|
+
enabled: true,
|
|
626
|
+
cooldown_minutes: 30,
|
|
627
|
+
fallback_model: 'claude-sonnet-5',
|
|
628
|
+
comment: 'Supervisor circuit breaker for cross-harness build failover. On a quota trip (usage_cap/rate_limit) the Codex provider is skipped for cooldown_minutes: the lane that trips it falls over to fallback_model (when available); every later lane during the cooldown is routed straight to claude via the existing codexDisabled path (default tier order, not necessarily fallback_model). Configure enabled, cooldown_minutes and fallback_model in .factory/config.json; environment variables do not override this policy.',
|
|
629
|
+
},
|
|
630
|
+
};
|
|
631
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"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"}
|