@fro.bot/systematic 3.16.0 → 3.16.2
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/dist/cli.js +1 -1
- package/dist/{index-ae6mhwth.js → index-65g87tgr.js} +20 -16
- package/dist/index.js +70 -15
- package/dist/pi.js +20 -16
- package/dist/schemas/systematic-config.schema.json +17 -17
- package/package.json +2 -2
- package/skills/agent-native-architecture/references/agent-execution-patterns.md +3 -3
package/dist/cli.js
CHANGED
|
@@ -7539,11 +7539,11 @@ var permissionSchema = record(string(), permissionRuleSchema).meta({
|
|
|
7539
7539
|
description: "Permission overrides per tool",
|
|
7540
7540
|
examples: [{ edit: "allow", bash: { curl: "allow", rm: "deny" } }]
|
|
7541
7541
|
});
|
|
7542
|
-
var MODEL_FORMAT_MESSAGE = 'must be in provider/model format (e.g., "anthropic/claude-sonnet-
|
|
7542
|
+
var MODEL_FORMAT_MESSAGE = 'must be in provider/model format (e.g., "anthropic/claude-sonnet-5")';
|
|
7543
7543
|
var MODEL_FORMAT_REGEX = /^[^\s/]+\/\S+$/;
|
|
7544
7544
|
var modelSchema = string().min(1).regex(MODEL_FORMAT_REGEX, MODEL_FORMAT_MESSAGE).nullable().meta({
|
|
7545
7545
|
description: "Model identifier in provider/model format, or null to inherit parent model",
|
|
7546
|
-
examples: ["anthropic/claude-sonnet-
|
|
7546
|
+
examples: ["anthropic/claude-sonnet-5", null]
|
|
7547
7547
|
});
|
|
7548
7548
|
var variantSchema = string().min(1).max(128, "variant must be at most 128 characters").regex(/^\S+$/, "must be a non-empty string without whitespace").meta({
|
|
7549
7549
|
description: "Model variant identifier",
|
|
@@ -7618,7 +7618,7 @@ var OpencodeHarnessBlockSchema = object({
|
|
|
7618
7618
|
}).strict().meta({
|
|
7619
7619
|
description: "OpenCode-specific routing block. When present, model/variant here override the flat model/variant fields for OpenCode only; the flat fields remain the harness-neutral default and still apply to Pi. `variant` is bound to whichever layer supplies `model`: it is used only from that layer or a more specific one, and is dropped when a more specific layer sets (or nulls) `model` without repeating the variant. A `variant` with no `model` anywhere in the merged overlay is a config-load error raised by the routing resolver, not a parse-time error.",
|
|
7620
7620
|
examples: [
|
|
7621
|
-
{ model: "anthropic/claude-opus-
|
|
7621
|
+
{ model: "anthropic/claude-opus-5", variant: "high" },
|
|
7622
7622
|
{ model: null }
|
|
7623
7623
|
]
|
|
7624
7624
|
});
|
|
@@ -7628,7 +7628,7 @@ var PiHarnessBlockSchema = object({
|
|
|
7628
7628
|
}).strict().meta({
|
|
7629
7629
|
description: "Pi-specific routing block. When present, model/thinking here override the flat model field and the legacy `pi_subagents.<name>.thinking` value for Pi only; the flat model field remains the harness-neutral default and still applies to OpenCode. Unlike OpenCode's `variant`, `thinking` is independent of `model`: it applies to whatever model the delegate ends up running, including one inherited from the parent session, so `thinking` with no `model` anywhere in the merged overlay is valid and never a config-load error.",
|
|
7630
7630
|
examples: [
|
|
7631
|
-
{ model: "anthropic/claude-opus-
|
|
7631
|
+
{ model: "anthropic/claude-opus-5", thinking: "high" },
|
|
7632
7632
|
{ model: null }
|
|
7633
7633
|
]
|
|
7634
7634
|
});
|
|
@@ -7650,13 +7650,13 @@ var AgentOverlaySchema = object({
|
|
|
7650
7650
|
description: "Per-agent configuration overlay",
|
|
7651
7651
|
examples: [
|
|
7652
7652
|
{
|
|
7653
|
-
model: "anthropic/claude-opus-
|
|
7653
|
+
model: "anthropic/claude-opus-5",
|
|
7654
7654
|
temperature: 0.1,
|
|
7655
7655
|
mode: "subagent"
|
|
7656
7656
|
},
|
|
7657
7657
|
{
|
|
7658
|
-
opencode: { model: "anthropic/claude-opus-
|
|
7659
|
-
pi: { model: "anthropic/claude-opus-
|
|
7658
|
+
opencode: { model: "anthropic/claude-opus-5", variant: "high" },
|
|
7659
|
+
pi: { model: "anthropic/claude-opus-5", thinking: "high" }
|
|
7660
7660
|
}
|
|
7661
7661
|
]
|
|
7662
7662
|
});
|
|
@@ -7676,8 +7676,8 @@ var CategoryOverlaySchema = object({
|
|
|
7676
7676
|
}).strict().meta({
|
|
7677
7677
|
description: "Per-category configuration overlay (same fields as agent minus disable)",
|
|
7678
7678
|
examples: [
|
|
7679
|
-
{ model: "anthropic/claude-opus-
|
|
7680
|
-
{ opencode: { variant: "
|
|
7679
|
+
{ model: "anthropic/claude-opus-5", temperature: 0.1 },
|
|
7680
|
+
{ opencode: { variant: "high" }, pi: { thinking: "high" } }
|
|
7681
7681
|
]
|
|
7682
7682
|
});
|
|
7683
7683
|
var ProfileOverlaySchema = object({
|
|
@@ -7690,8 +7690,8 @@ var ProfileOverlaySchema = object({
|
|
|
7690
7690
|
}).strict().meta({
|
|
7691
7691
|
description: "Routing-only overlay fields permitted inside a named profile bundle entry: model, variant, temperature, top_p, and the opencode/pi harness blocks. Non-routing fields (permission, skills, mode, hidden, disable, steps, color) are rejected.",
|
|
7692
7692
|
examples: [
|
|
7693
|
-
{ model: "anthropic/claude-opus-
|
|
7694
|
-
{ opencode: { variant: "
|
|
7693
|
+
{ model: "anthropic/claude-opus-5" },
|
|
7694
|
+
{ opencode: { variant: "high" }, pi: { thinking: "high" } }
|
|
7695
7695
|
]
|
|
7696
7696
|
});
|
|
7697
7697
|
function createProfileBundleSchema(agentNames, qualifiedAgentIds) {
|
|
@@ -7701,17 +7701,19 @@ function createProfileBundleSchema(agentNames, qualifiedAgentIds) {
|
|
|
7701
7701
|
ProfileOverlaySchema.optional()
|
|
7702
7702
|
]))).strict().optional().meta({
|
|
7703
7703
|
description: "Per-agent routing overlays for this profile, keyed by bundled agent name (bare or qualified category/name), using the same routing-only field set as every profile entry. Unknown keys are rejected with a Zod parse error, exactly like the top-level `agents` field.",
|
|
7704
|
-
examples: [
|
|
7704
|
+
examples: [
|
|
7705
|
+
{ "correctness-reviewer": { model: "openai/gpt-6-astra" } }
|
|
7706
|
+
]
|
|
7705
7707
|
}),
|
|
7706
7708
|
categories: record(string(), ProfileOverlaySchema).optional().meta({
|
|
7707
7709
|
description: "Per-category routing overlays for this profile, keyed by category name, using the same routing-only field set as every profile entry.",
|
|
7708
|
-
examples: [{ review: { model: "anthropic/claude-opus-
|
|
7710
|
+
examples: [{ review: { model: "anthropic/claude-opus-5" } }]
|
|
7709
7711
|
})
|
|
7710
7712
|
}).strict().meta({
|
|
7711
7713
|
description: "A named routing-only overlay bundle. Entries under agents/categories have the same shape as the top-level agents/categories overlays, restricted to routing fields.",
|
|
7712
7714
|
examples: [
|
|
7713
7715
|
{
|
|
7714
|
-
agents: { fixer: { model: "anthropic/claude-opus-
|
|
7716
|
+
agents: { fixer: { model: "anthropic/claude-opus-5" } },
|
|
7715
7717
|
categories: { review: { pi: { thinking: "high" } } }
|
|
7716
7718
|
}
|
|
7717
7719
|
]
|
|
@@ -7810,14 +7812,16 @@ function createSystematicConfigSchema(opts) {
|
|
|
7810
7812
|
}),
|
|
7811
7813
|
categories: record(string(), CategoryOverlaySchema).default({}).meta({
|
|
7812
7814
|
description: "Per-category configuration overlays keyed by category name",
|
|
7813
|
-
examples: [{ review: { model: "anthropic/claude-opus-
|
|
7815
|
+
examples: [{ review: { model: "anthropic/claude-opus-5" } }, {}]
|
|
7814
7816
|
}),
|
|
7815
7817
|
profiles: record(string(), createProfileBundleSchema(agentNames, qualifiedAgentIds)).default({}).meta({
|
|
7816
7818
|
description: "Named routing-only overlay bundles, selectable by name via the profile field. Only valid in user config or OPENCODE_CONFIG_DIR config \u2014 a project config may select a profile but may not define this field.",
|
|
7817
7819
|
examples: [
|
|
7818
7820
|
{
|
|
7819
7821
|
personal: {
|
|
7820
|
-
agents: {
|
|
7822
|
+
agents: {
|
|
7823
|
+
"correctness-reviewer": { model: "openai/gpt-6-astra" }
|
|
7824
|
+
}
|
|
7821
7825
|
}
|
|
7822
7826
|
},
|
|
7823
7827
|
{}
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
extractCommandFrontmatter,
|
|
20
20
|
findSkillsInDir,
|
|
21
21
|
discoverSkills
|
|
22
|
-
} from "./index-
|
|
22
|
+
} from "./index-65g87tgr.js";
|
|
23
23
|
|
|
24
24
|
// src/index.ts
|
|
25
25
|
import { createHash as createHash4 } from "crypto";
|
|
@@ -4005,7 +4005,7 @@ import { randomBytes as randomBytes3 } from "crypto";
|
|
|
4005
4005
|
import fs7 from "fs";
|
|
4006
4006
|
import { fileURLToPath } from "url";
|
|
4007
4007
|
|
|
4008
|
-
// node_modules/.bun/web-tree-sitter@0.
|
|
4008
|
+
// node_modules/.bun/web-tree-sitter@0.27.0/node_modules/web-tree-sitter/web-tree-sitter.js
|
|
4009
4009
|
var __defProp = Object.defineProperty;
|
|
4010
4010
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
4011
4011
|
var Edit = class {
|
|
@@ -4110,44 +4110,65 @@ function setModule(module2) {
|
|
|
4110
4110
|
}
|
|
4111
4111
|
__name(setModule, "setModule");
|
|
4112
4112
|
var C;
|
|
4113
|
+
function newFinalizer(handler) {
|
|
4114
|
+
try {
|
|
4115
|
+
return new FinalizationRegistry(handler);
|
|
4116
|
+
} catch (e) {
|
|
4117
|
+
console.error("Unsupported FinalizationRegistry:", e);
|
|
4118
|
+
return;
|
|
4119
|
+
}
|
|
4120
|
+
}
|
|
4121
|
+
__name(newFinalizer, "newFinalizer");
|
|
4122
|
+
var finalizer = newFinalizer((address) => {
|
|
4123
|
+
C._ts_lookahead_iterator_delete(address);
|
|
4124
|
+
});
|
|
4113
4125
|
var LookaheadIterator = class {
|
|
4114
4126
|
static {
|
|
4115
4127
|
__name(this, "LookaheadIterator");
|
|
4116
4128
|
}
|
|
4117
4129
|
[0] = 0;
|
|
4118
4130
|
language;
|
|
4131
|
+
positioned = false;
|
|
4119
4132
|
constructor(internal, address, language) {
|
|
4120
4133
|
assertInternal(internal);
|
|
4121
4134
|
this[0] = address;
|
|
4122
4135
|
this.language = language;
|
|
4136
|
+
finalizer?.register(this, address, this);
|
|
4123
4137
|
}
|
|
4124
4138
|
get currentTypeId() {
|
|
4125
|
-
return C._ts_lookahead_iterator_current_symbol(this[0]);
|
|
4139
|
+
return this.positioned ? C._ts_lookahead_iterator_current_symbol(this[0]) : null;
|
|
4126
4140
|
}
|
|
4127
4141
|
get currentType() {
|
|
4128
|
-
|
|
4142
|
+
const id = this.currentTypeId;
|
|
4143
|
+
if (id === null)
|
|
4144
|
+
return null;
|
|
4145
|
+
return this.language.types[id] ?? C.UTF8ToString(C._ts_language_symbol_name(this.language[0], id));
|
|
4129
4146
|
}
|
|
4130
4147
|
delete() {
|
|
4148
|
+
finalizer?.unregister(this);
|
|
4131
4149
|
C._ts_lookahead_iterator_delete(this[0]);
|
|
4132
4150
|
this[0] = 0;
|
|
4133
4151
|
}
|
|
4134
4152
|
reset(language, stateId) {
|
|
4135
4153
|
if (C._ts_lookahead_iterator_reset(this[0], language[0], stateId)) {
|
|
4136
4154
|
this.language = language;
|
|
4155
|
+
this.positioned = false;
|
|
4137
4156
|
return true;
|
|
4138
4157
|
}
|
|
4139
4158
|
return false;
|
|
4140
4159
|
}
|
|
4141
4160
|
resetState(stateId) {
|
|
4142
|
-
|
|
4161
|
+
if (!C._ts_lookahead_iterator_reset_state(this[0], stateId))
|
|
4162
|
+
return false;
|
|
4163
|
+
this.positioned = false;
|
|
4164
|
+
return true;
|
|
4143
4165
|
}
|
|
4144
4166
|
[Symbol.iterator]() {
|
|
4145
4167
|
return {
|
|
4146
4168
|
next: /* @__PURE__ */ __name(() => {
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
}
|
|
4150
|
-
return { done: true, value: "" };
|
|
4169
|
+
this.positioned = Boolean(C._ts_lookahead_iterator_next(this[0]));
|
|
4170
|
+
const value = this.currentType;
|
|
4171
|
+
return value === null ? { done: true, value: "" } : { done: false, value };
|
|
4151
4172
|
}, "next")
|
|
4152
4173
|
};
|
|
4153
4174
|
}
|
|
@@ -4173,6 +4194,9 @@ function getText(tree, startIndex, endIndex, startPosition) {
|
|
|
4173
4194
|
return result ?? "";
|
|
4174
4195
|
}
|
|
4175
4196
|
__name(getText, "getText");
|
|
4197
|
+
var finalizer2 = newFinalizer((address) => {
|
|
4198
|
+
C._ts_tree_delete(address);
|
|
4199
|
+
});
|
|
4176
4200
|
var Tree = class _Tree {
|
|
4177
4201
|
static {
|
|
4178
4202
|
__name(this, "Tree");
|
|
@@ -4185,12 +4209,14 @@ var Tree = class _Tree {
|
|
|
4185
4209
|
this[0] = address;
|
|
4186
4210
|
this.language = language;
|
|
4187
4211
|
this.textCallback = textCallback;
|
|
4212
|
+
finalizer2?.register(this, address, this);
|
|
4188
4213
|
}
|
|
4189
4214
|
copy() {
|
|
4190
4215
|
const address = C._ts_tree_copy(this[0]);
|
|
4191
4216
|
return new _Tree(INTERNAL, address, this.language, this.textCallback);
|
|
4192
4217
|
}
|
|
4193
4218
|
delete() {
|
|
4219
|
+
finalizer2?.unregister(this);
|
|
4194
4220
|
C._ts_tree_delete(this[0]);
|
|
4195
4221
|
this[0] = 0;
|
|
4196
4222
|
}
|
|
@@ -4246,6 +4272,9 @@ var Tree = class _Tree {
|
|
|
4246
4272
|
return result;
|
|
4247
4273
|
}
|
|
4248
4274
|
};
|
|
4275
|
+
var finalizer3 = newFinalizer((address) => {
|
|
4276
|
+
C._ts_tree_cursor_delete_wasm(address);
|
|
4277
|
+
});
|
|
4249
4278
|
var TreeCursor = class _TreeCursor {
|
|
4250
4279
|
static {
|
|
4251
4280
|
__name(this, "TreeCursor");
|
|
@@ -4259,6 +4288,7 @@ var TreeCursor = class _TreeCursor {
|
|
|
4259
4288
|
assertInternal(internal);
|
|
4260
4289
|
this.tree = tree;
|
|
4261
4290
|
unmarshalTreeCursor(this);
|
|
4291
|
+
finalizer3?.register(this, this.tree[0], this);
|
|
4262
4292
|
}
|
|
4263
4293
|
copy() {
|
|
4264
4294
|
const copy = new _TreeCursor(INTERNAL, this.tree);
|
|
@@ -4267,6 +4297,7 @@ var TreeCursor = class _TreeCursor {
|
|
|
4267
4297
|
return copy;
|
|
4268
4298
|
}
|
|
4269
4299
|
delete() {
|
|
4300
|
+
finalizer3?.unregister(this);
|
|
4270
4301
|
marshalTreeCursor(this);
|
|
4271
4302
|
C._ts_tree_cursor_delete_wasm(this.tree[0]);
|
|
4272
4303
|
this[0] = this[1] = this[2] = 0;
|
|
@@ -5026,16 +5057,23 @@ ${body2}`);
|
|
|
5026
5057
|
}
|
|
5027
5058
|
}
|
|
5028
5059
|
const mod = await C.loadWebAssemblyModule(binary2, { loadAsync: true });
|
|
5060
|
+
return _Language.loadFromWasmExports(mod, { sync: false });
|
|
5061
|
+
}
|
|
5062
|
+
static loadFromWasmExports(mod, { sync }) {
|
|
5029
5063
|
const symbolNames = Object.keys(mod);
|
|
5030
5064
|
const functionName = symbolNames.find((key) => LANGUAGE_FUNCTION_REGEX.test(key) && !key.includes("external_scanner_"));
|
|
5031
5065
|
if (!functionName) {
|
|
5032
5066
|
console.log(`Couldn't find language function in Wasm file. Symbols:
|
|
5033
5067
|
${JSON.stringify(symbolNames, null, 2)}`);
|
|
5034
|
-
throw new Error("
|
|
5068
|
+
throw new Error(`Language.${sync ? "loadSync" : "load"} failed: no language function found in Wasm file`);
|
|
5035
5069
|
}
|
|
5036
5070
|
const languageAddress = mod[functionName]();
|
|
5037
5071
|
return new _Language(INTERNAL, languageAddress);
|
|
5038
5072
|
}
|
|
5073
|
+
static loadSync(wasmModule) {
|
|
5074
|
+
const mod = C.loadWebAssemblyModule(wasmModule, { loadAsync: false });
|
|
5075
|
+
return _Language.loadFromWasmExports(mod, { sync: true });
|
|
5076
|
+
}
|
|
5039
5077
|
};
|
|
5040
5078
|
async function Module2(moduleArg = {}) {
|
|
5041
5079
|
var moduleRtn;
|
|
@@ -5555,7 +5593,7 @@ async function Module2(moduleArg = {}) {
|
|
|
5555
5593
|
newDSO("__main__", 0, wasmImports);
|
|
5556
5594
|
}
|
|
5557
5595
|
};
|
|
5558
|
-
var ___heap_base =
|
|
5596
|
+
var ___heap_base = 82240;
|
|
5559
5597
|
var alignMemory = /* @__PURE__ */ __name((size, alignment) => Math.ceil(size / alignment) * alignment, "alignMemory");
|
|
5560
5598
|
var getMemory = /* @__PURE__ */ __name((size) => {
|
|
5561
5599
|
if (runtimeInitialized) {
|
|
@@ -6081,12 +6119,12 @@ async function Module2(moduleArg = {}) {
|
|
|
6081
6119
|
value: "i32",
|
|
6082
6120
|
mutable: false
|
|
6083
6121
|
}, 1024);
|
|
6084
|
-
var ___stack_high =
|
|
6085
|
-
var ___stack_low =
|
|
6122
|
+
var ___stack_high = 82240;
|
|
6123
|
+
var ___stack_low = 16704;
|
|
6086
6124
|
var ___stack_pointer = new WebAssembly.Global({
|
|
6087
6125
|
value: "i32",
|
|
6088
6126
|
mutable: true
|
|
6089
|
-
},
|
|
6127
|
+
}, 82240);
|
|
6090
6128
|
var ___table_base = new WebAssembly.Global({
|
|
6091
6129
|
value: "i32",
|
|
6092
6130
|
mutable: false
|
|
@@ -6353,7 +6391,7 @@ async function Module2(moduleArg = {}) {
|
|
|
6353
6391
|
Module["loadWebAssemblyModule"] = loadWebAssemblyModule;
|
|
6354
6392
|
Module["LE_HEAP_STORE_I64"] = LE_HEAP_STORE_I64;
|
|
6355
6393
|
var ASM_CONSTS = {};
|
|
6356
|
-
var _malloc, _calloc, _realloc, _free, _ts_range_edit, _memcmp, _ts_language_symbol_count, _ts_language_state_count, _ts_language_abi_version, _ts_language_name, _ts_language_field_count, _ts_language_next_state, _ts_language_symbol_name, _ts_language_symbol_for_name, _strncmp, _ts_language_symbol_type, _ts_language_field_name_for_id, _ts_lookahead_iterator_new, _ts_lookahead_iterator_delete, _ts_lookahead_iterator_reset_state, _ts_lookahead_iterator_reset, _ts_lookahead_iterator_next, _ts_lookahead_iterator_current_symbol, _ts_point_edit, _ts_parser_delete, _ts_parser_reset, _ts_parser_set_language, _ts_parser_set_included_ranges, _ts_query_new, _ts_query_delete, _iswspace, _iswalnum, _ts_query_pattern_count, _ts_query_capture_count, _ts_query_string_count, _ts_query_capture_name_for_id, _ts_query_capture_quantifier_for_id, _ts_query_string_value_for_id, _ts_query_predicates_for_pattern, _ts_query_start_byte_for_pattern, _ts_query_end_byte_for_pattern, _ts_query_is_pattern_rooted, _ts_query_is_pattern_non_local, _ts_query_is_pattern_guaranteed_at_step, _ts_query_disable_capture, _ts_query_disable_pattern, _ts_tree_copy, _ts_tree_delete, _ts_init, _ts_parser_new_wasm, _ts_parser_enable_logger_wasm, _ts_parser_parse_wasm, _ts_parser_included_ranges_wasm, _ts_language_type_is_named_wasm, _ts_language_type_is_visible_wasm, _ts_language_metadata_wasm, _ts_language_supertypes_wasm, _ts_language_subtypes_wasm, _ts_tree_root_node_wasm, _ts_tree_root_node_with_offset_wasm, _ts_tree_edit_wasm, _ts_tree_included_ranges_wasm, _ts_tree_get_changed_ranges_wasm, _ts_tree_cursor_new_wasm, _ts_tree_cursor_copy_wasm, _ts_tree_cursor_delete_wasm, _ts_tree_cursor_reset_wasm, _ts_tree_cursor_reset_to_wasm, _ts_tree_cursor_goto_first_child_wasm, _ts_tree_cursor_goto_last_child_wasm, _ts_tree_cursor_goto_first_child_for_index_wasm, _ts_tree_cursor_goto_first_child_for_position_wasm, _ts_tree_cursor_goto_next_sibling_wasm, _ts_tree_cursor_goto_previous_sibling_wasm, _ts_tree_cursor_goto_descendant_wasm, _ts_tree_cursor_goto_parent_wasm, _ts_tree_cursor_current_node_type_id_wasm, _ts_tree_cursor_current_node_state_id_wasm, _ts_tree_cursor_current_node_is_named_wasm, _ts_tree_cursor_current_node_is_missing_wasm, _ts_tree_cursor_current_node_id_wasm, _ts_tree_cursor_start_position_wasm, _ts_tree_cursor_end_position_wasm, _ts_tree_cursor_start_index_wasm, _ts_tree_cursor_end_index_wasm, _ts_tree_cursor_current_field_id_wasm, _ts_tree_cursor_current_depth_wasm, _ts_tree_cursor_current_descendant_index_wasm, _ts_tree_cursor_current_node_wasm, _ts_node_symbol_wasm, _ts_node_field_name_for_child_wasm, _ts_node_field_name_for_named_child_wasm, _ts_node_children_by_field_id_wasm, _ts_node_first_child_for_byte_wasm, _ts_node_first_named_child_for_byte_wasm, _ts_node_grammar_symbol_wasm, _ts_node_child_count_wasm, _ts_node_named_child_count_wasm, _ts_node_child_wasm, _ts_node_named_child_wasm, _ts_node_child_by_field_id_wasm, _ts_node_next_sibling_wasm, _ts_node_prev_sibling_wasm, _ts_node_next_named_sibling_wasm, _ts_node_prev_named_sibling_wasm, _ts_node_descendant_count_wasm, _ts_node_parent_wasm, _ts_node_child_with_descendant_wasm, _ts_node_descendant_for_index_wasm, _ts_node_named_descendant_for_index_wasm, _ts_node_descendant_for_position_wasm, _ts_node_named_descendant_for_position_wasm, _ts_node_start_point_wasm, _ts_node_end_point_wasm, _ts_node_start_index_wasm, _ts_node_end_index_wasm, _ts_node_to_string_wasm, _ts_node_children_wasm, _ts_node_named_children_wasm, _ts_node_descendants_of_type_wasm, _ts_node_is_named_wasm, _ts_node_has_changes_wasm, _ts_node_has_error_wasm, _ts_node_is_error_wasm, _ts_node_is_missing_wasm, _ts_node_is_extra_wasm, _ts_node_parse_state_wasm, _ts_node_next_parse_state_wasm, _ts_query_matches_wasm, _ts_query_captures_wasm, _memset, _memcpy, _memmove, _iswalpha, _iswblank, _iswdigit, _iswlower, _iswupper, _iswxdigit, _memchr, _strlen, _strcmp, _strncat, _strncpy, _towlower, _towupper, _setThrew, __emscripten_stack_restore, __emscripten_stack_alloc, _emscripten_stack_get_current, ___wasm_apply_data_relocs;
|
|
6394
|
+
var _malloc, _calloc, _realloc, _free, _ts_range_edit, _memcmp, _ts_language_symbol_count, _ts_language_state_count, _ts_language_abi_version, _ts_language_name, _ts_language_field_count, _ts_language_next_state, _ts_language_symbol_name, _ts_language_symbol_for_name, _strncmp, _ts_language_symbol_type, _ts_language_field_name_for_id, _ts_lookahead_iterator_new, _ts_lookahead_iterator_delete, _ts_lookahead_iterator_reset_state, _ts_lookahead_iterator_reset, _ts_lookahead_iterator_next, _ts_lookahead_iterator_current_symbol, _ts_point_edit, _ts_parser_delete, _ts_parser_reset, _ts_parser_set_language, _ts_parser_set_included_ranges, _ts_query_new, _ts_query_delete, _iswspace, _iswalnum, _ts_query_copy, _ts_query_pattern_count, _ts_query_capture_count, _ts_query_string_count, _ts_query_capture_name_for_id, _ts_query_capture_quantifier_for_id, _ts_query_string_value_for_id, _ts_query_predicates_for_pattern, _ts_query_start_byte_for_pattern, _ts_query_end_byte_for_pattern, _ts_query_is_pattern_rooted, _ts_query_is_pattern_non_local, _ts_query_is_pattern_guaranteed_at_step, _ts_query_disable_capture, _ts_query_disable_pattern, _ts_tree_copy, _ts_tree_delete, _ts_init, _ts_parser_new_wasm, _ts_parser_enable_logger_wasm, _ts_parser_parse_wasm, _ts_parser_included_ranges_wasm, _ts_language_type_is_named_wasm, _ts_language_type_is_visible_wasm, _ts_language_metadata_wasm, _ts_language_supertypes_wasm, _ts_language_subtypes_wasm, _ts_tree_root_node_wasm, _ts_tree_root_node_with_offset_wasm, _ts_tree_edit_wasm, _ts_tree_included_ranges_wasm, _ts_tree_get_changed_ranges_wasm, _ts_tree_cursor_new_wasm, _ts_tree_cursor_copy_wasm, _ts_tree_cursor_delete_wasm, _ts_tree_cursor_reset_wasm, _ts_tree_cursor_reset_to_wasm, _ts_tree_cursor_goto_first_child_wasm, _ts_tree_cursor_goto_last_child_wasm, _ts_tree_cursor_goto_first_child_for_index_wasm, _ts_tree_cursor_goto_first_child_for_position_wasm, _ts_tree_cursor_goto_next_sibling_wasm, _ts_tree_cursor_goto_previous_sibling_wasm, _ts_tree_cursor_goto_descendant_wasm, _ts_tree_cursor_goto_parent_wasm, _ts_tree_cursor_current_node_type_id_wasm, _ts_tree_cursor_current_node_state_id_wasm, _ts_tree_cursor_current_node_is_named_wasm, _ts_tree_cursor_current_node_is_missing_wasm, _ts_tree_cursor_current_node_id_wasm, _ts_tree_cursor_start_position_wasm, _ts_tree_cursor_end_position_wasm, _ts_tree_cursor_start_index_wasm, _ts_tree_cursor_end_index_wasm, _ts_tree_cursor_current_field_id_wasm, _ts_tree_cursor_current_depth_wasm, _ts_tree_cursor_current_descendant_index_wasm, _ts_tree_cursor_current_node_wasm, _ts_node_symbol_wasm, _ts_node_field_name_for_child_wasm, _ts_node_field_name_for_named_child_wasm, _ts_node_children_by_field_id_wasm, _ts_node_first_child_for_byte_wasm, _ts_node_first_named_child_for_byte_wasm, _ts_node_grammar_symbol_wasm, _ts_node_child_count_wasm, _ts_node_named_child_count_wasm, _ts_node_child_wasm, _ts_node_named_child_wasm, _ts_node_child_by_field_id_wasm, _ts_node_next_sibling_wasm, _ts_node_prev_sibling_wasm, _ts_node_next_named_sibling_wasm, _ts_node_prev_named_sibling_wasm, _ts_node_descendant_count_wasm, _ts_node_parent_wasm, _ts_node_child_with_descendant_wasm, _ts_node_descendant_for_index_wasm, _ts_node_named_descendant_for_index_wasm, _ts_node_descendant_for_position_wasm, _ts_node_named_descendant_for_position_wasm, _ts_node_start_point_wasm, _ts_node_end_point_wasm, _ts_node_start_index_wasm, _ts_node_end_index_wasm, _ts_node_to_string_wasm, _ts_node_children_wasm, _ts_node_named_children_wasm, _ts_node_descendants_of_type_wasm, _ts_node_is_named_wasm, _ts_node_has_changes_wasm, _ts_node_has_error_wasm, _ts_node_is_error_wasm, _ts_node_is_missing_wasm, _ts_node_is_extra_wasm, _ts_node_parse_state_wasm, _ts_node_next_parse_state_wasm, _ts_query_matches_wasm, _ts_query_captures_wasm, _memset, _memcpy, _memmove, _iswalpha, _iswblank, _iswdigit, _iswlower, _iswpunct, _iswupper, _iswxdigit, _memchr, _strlen, _strcmp, _strncat, _strncpy, _towlower, _towupper, _setThrew, __emscripten_stack_restore, __emscripten_stack_alloc, _emscripten_stack_get_current, ___wasm_apply_data_relocs;
|
|
6357
6395
|
function assignWasmExports(wasmExports2) {
|
|
6358
6396
|
Module["_malloc"] = _malloc = wasmExports2["malloc"];
|
|
6359
6397
|
Module["_calloc"] = _calloc = wasmExports2["calloc"];
|
|
@@ -6387,6 +6425,7 @@ async function Module2(moduleArg = {}) {
|
|
|
6387
6425
|
Module["_ts_query_delete"] = _ts_query_delete = wasmExports2["ts_query_delete"];
|
|
6388
6426
|
Module["_iswspace"] = _iswspace = wasmExports2["iswspace"];
|
|
6389
6427
|
Module["_iswalnum"] = _iswalnum = wasmExports2["iswalnum"];
|
|
6428
|
+
Module["_ts_query_copy"] = _ts_query_copy = wasmExports2["ts_query_copy"];
|
|
6390
6429
|
Module["_ts_query_pattern_count"] = _ts_query_pattern_count = wasmExports2["ts_query_pattern_count"];
|
|
6391
6430
|
Module["_ts_query_capture_count"] = _ts_query_capture_count = wasmExports2["ts_query_capture_count"];
|
|
6392
6431
|
Module["_ts_query_string_count"] = _ts_query_string_count = wasmExports2["ts_query_string_count"];
|
|
@@ -6492,6 +6531,7 @@ async function Module2(moduleArg = {}) {
|
|
|
6492
6531
|
Module["_iswblank"] = _iswblank = wasmExports2["iswblank"];
|
|
6493
6532
|
Module["_iswdigit"] = _iswdigit = wasmExports2["iswdigit"];
|
|
6494
6533
|
Module["_iswlower"] = _iswlower = wasmExports2["iswlower"];
|
|
6534
|
+
Module["_iswpunct"] = _iswpunct = wasmExports2["iswpunct"];
|
|
6495
6535
|
Module["_iswupper"] = _iswupper = wasmExports2["iswupper"];
|
|
6496
6536
|
Module["_iswxdigit"] = _iswxdigit = wasmExports2["iswxdigit"];
|
|
6497
6537
|
Module["_memchr"] = _memchr = wasmExports2["memchr"];
|
|
@@ -6611,6 +6651,10 @@ __name(checkModule, "checkModule");
|
|
|
6611
6651
|
var TRANSFER_BUFFER;
|
|
6612
6652
|
var LANGUAGE_VERSION;
|
|
6613
6653
|
var MIN_COMPATIBLE_VERSION;
|
|
6654
|
+
var finalizer4 = newFinalizer((addresses) => {
|
|
6655
|
+
C._ts_parser_delete(addresses[0]);
|
|
6656
|
+
C._free(addresses[1]);
|
|
6657
|
+
});
|
|
6614
6658
|
var Parser = class {
|
|
6615
6659
|
static {
|
|
6616
6660
|
__name(this, "Parser");
|
|
@@ -6627,6 +6671,7 @@ var Parser = class {
|
|
|
6627
6671
|
}
|
|
6628
6672
|
constructor() {
|
|
6629
6673
|
this.initialize();
|
|
6674
|
+
finalizer4?.register(this, [this[0], this[1]], this);
|
|
6630
6675
|
}
|
|
6631
6676
|
initialize() {
|
|
6632
6677
|
if (!checkModule()) {
|
|
@@ -6637,6 +6682,7 @@ var Parser = class {
|
|
|
6637
6682
|
this[1] = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32");
|
|
6638
6683
|
}
|
|
6639
6684
|
delete() {
|
|
6685
|
+
finalizer4?.unregister(this);
|
|
6640
6686
|
C._ts_parser_delete(this[0]);
|
|
6641
6687
|
C._free(this[1]);
|
|
6642
6688
|
this[0] = 0;
|
|
@@ -6767,6 +6813,10 @@ var QueryError = class _QueryError extends Error {
|
|
|
6767
6813
|
this.length = length;
|
|
6768
6814
|
this.name = "QueryError";
|
|
6769
6815
|
}
|
|
6816
|
+
kind;
|
|
6817
|
+
info;
|
|
6818
|
+
index;
|
|
6819
|
+
length;
|
|
6770
6820
|
static {
|
|
6771
6821
|
__name(this, "QueryError");
|
|
6772
6822
|
}
|
|
@@ -6950,6 +7000,9 @@ function parsePattern(index, stepType, stepValueId, captureNames, stringValues,
|
|
|
6950
7000
|
}
|
|
6951
7001
|
}
|
|
6952
7002
|
__name(parsePattern, "parsePattern");
|
|
7003
|
+
var finalizer5 = newFinalizer((address) => {
|
|
7004
|
+
C._ts_query_delete(address);
|
|
7005
|
+
});
|
|
6953
7006
|
var Query = class {
|
|
6954
7007
|
static {
|
|
6955
7008
|
__name(this, "Query");
|
|
@@ -7049,8 +7102,10 @@ var Query = class {
|
|
|
7049
7102
|
this.assertedProperties = assertedProperties;
|
|
7050
7103
|
this.refutedProperties = refutedProperties;
|
|
7051
7104
|
this.exceededMatchLimit = false;
|
|
7105
|
+
finalizer5?.register(this, address, this);
|
|
7052
7106
|
}
|
|
7053
7107
|
delete() {
|
|
7108
|
+
finalizer5?.unregister(this);
|
|
7054
7109
|
C._ts_query_delete(this[0]);
|
|
7055
7110
|
this[0] = 0;
|
|
7056
7111
|
}
|
package/dist/pi.js
CHANGED
|
@@ -9217,11 +9217,11 @@ var permissionSchema = record(string2(), permissionRuleSchema).meta({
|
|
|
9217
9217
|
description: "Permission overrides per tool",
|
|
9218
9218
|
examples: [{ edit: "allow", bash: { curl: "allow", rm: "deny" } }]
|
|
9219
9219
|
});
|
|
9220
|
-
var MODEL_FORMAT_MESSAGE = 'must be in provider/model format (e.g., "anthropic/claude-sonnet-
|
|
9220
|
+
var MODEL_FORMAT_MESSAGE = 'must be in provider/model format (e.g., "anthropic/claude-sonnet-5")';
|
|
9221
9221
|
var MODEL_FORMAT_REGEX = /^[^\s/]+\/\S+$/;
|
|
9222
9222
|
var modelSchema = string2().min(1).regex(MODEL_FORMAT_REGEX, MODEL_FORMAT_MESSAGE).nullable().meta({
|
|
9223
9223
|
description: "Model identifier in provider/model format, or null to inherit parent model",
|
|
9224
|
-
examples: ["anthropic/claude-sonnet-
|
|
9224
|
+
examples: ["anthropic/claude-sonnet-5", null]
|
|
9225
9225
|
});
|
|
9226
9226
|
var variantSchema = string2().min(1).max(128, "variant must be at most 128 characters").regex(/^\S+$/, "must be a non-empty string without whitespace").meta({
|
|
9227
9227
|
description: "Model variant identifier",
|
|
@@ -9296,7 +9296,7 @@ var OpencodeHarnessBlockSchema = object({
|
|
|
9296
9296
|
}).strict().meta({
|
|
9297
9297
|
description: "OpenCode-specific routing block. When present, model/variant here override the flat model/variant fields for OpenCode only; the flat fields remain the harness-neutral default and still apply to Pi. `variant` is bound to whichever layer supplies `model`: it is used only from that layer or a more specific one, and is dropped when a more specific layer sets (or nulls) `model` without repeating the variant. A `variant` with no `model` anywhere in the merged overlay is a config-load error raised by the routing resolver, not a parse-time error.",
|
|
9298
9298
|
examples: [
|
|
9299
|
-
{ model: "anthropic/claude-opus-
|
|
9299
|
+
{ model: "anthropic/claude-opus-5", variant: "high" },
|
|
9300
9300
|
{ model: null }
|
|
9301
9301
|
]
|
|
9302
9302
|
});
|
|
@@ -9306,7 +9306,7 @@ var PiHarnessBlockSchema = object({
|
|
|
9306
9306
|
}).strict().meta({
|
|
9307
9307
|
description: "Pi-specific routing block. When present, model/thinking here override the flat model field and the legacy `pi_subagents.<name>.thinking` value for Pi only; the flat model field remains the harness-neutral default and still applies to OpenCode. Unlike OpenCode's `variant`, `thinking` is independent of `model`: it applies to whatever model the delegate ends up running, including one inherited from the parent session, so `thinking` with no `model` anywhere in the merged overlay is valid and never a config-load error.",
|
|
9308
9308
|
examples: [
|
|
9309
|
-
{ model: "anthropic/claude-opus-
|
|
9309
|
+
{ model: "anthropic/claude-opus-5", thinking: "high" },
|
|
9310
9310
|
{ model: null }
|
|
9311
9311
|
]
|
|
9312
9312
|
});
|
|
@@ -9328,13 +9328,13 @@ var AgentOverlaySchema = object({
|
|
|
9328
9328
|
description: "Per-agent configuration overlay",
|
|
9329
9329
|
examples: [
|
|
9330
9330
|
{
|
|
9331
|
-
model: "anthropic/claude-opus-
|
|
9331
|
+
model: "anthropic/claude-opus-5",
|
|
9332
9332
|
temperature: 0.1,
|
|
9333
9333
|
mode: "subagent"
|
|
9334
9334
|
},
|
|
9335
9335
|
{
|
|
9336
|
-
opencode: { model: "anthropic/claude-opus-
|
|
9337
|
-
pi: { model: "anthropic/claude-opus-
|
|
9336
|
+
opencode: { model: "anthropic/claude-opus-5", variant: "high" },
|
|
9337
|
+
pi: { model: "anthropic/claude-opus-5", thinking: "high" }
|
|
9338
9338
|
}
|
|
9339
9339
|
]
|
|
9340
9340
|
});
|
|
@@ -9354,8 +9354,8 @@ var CategoryOverlaySchema = object({
|
|
|
9354
9354
|
}).strict().meta({
|
|
9355
9355
|
description: "Per-category configuration overlay (same fields as agent minus disable)",
|
|
9356
9356
|
examples: [
|
|
9357
|
-
{ model: "anthropic/claude-opus-
|
|
9358
|
-
{ opencode: { variant: "
|
|
9357
|
+
{ model: "anthropic/claude-opus-5", temperature: 0.1 },
|
|
9358
|
+
{ opencode: { variant: "high" }, pi: { thinking: "high" } }
|
|
9359
9359
|
]
|
|
9360
9360
|
});
|
|
9361
9361
|
var ProfileOverlaySchema = object({
|
|
@@ -9368,8 +9368,8 @@ var ProfileOverlaySchema = object({
|
|
|
9368
9368
|
}).strict().meta({
|
|
9369
9369
|
description: "Routing-only overlay fields permitted inside a named profile bundle entry: model, variant, temperature, top_p, and the opencode/pi harness blocks. Non-routing fields (permission, skills, mode, hidden, disable, steps, color) are rejected.",
|
|
9370
9370
|
examples: [
|
|
9371
|
-
{ model: "anthropic/claude-opus-
|
|
9372
|
-
{ opencode: { variant: "
|
|
9371
|
+
{ model: "anthropic/claude-opus-5" },
|
|
9372
|
+
{ opencode: { variant: "high" }, pi: { thinking: "high" } }
|
|
9373
9373
|
]
|
|
9374
9374
|
});
|
|
9375
9375
|
function createProfileBundleSchema(agentNames, qualifiedAgentIds) {
|
|
@@ -9379,17 +9379,19 @@ function createProfileBundleSchema(agentNames, qualifiedAgentIds) {
|
|
|
9379
9379
|
ProfileOverlaySchema.optional()
|
|
9380
9380
|
]))).strict().optional().meta({
|
|
9381
9381
|
description: "Per-agent routing overlays for this profile, keyed by bundled agent name (bare or qualified category/name), using the same routing-only field set as every profile entry. Unknown keys are rejected with a Zod parse error, exactly like the top-level `agents` field.",
|
|
9382
|
-
examples: [
|
|
9382
|
+
examples: [
|
|
9383
|
+
{ "correctness-reviewer": { model: "openai/gpt-6-astra" } }
|
|
9384
|
+
]
|
|
9383
9385
|
}),
|
|
9384
9386
|
categories: record(string2(), ProfileOverlaySchema).optional().meta({
|
|
9385
9387
|
description: "Per-category routing overlays for this profile, keyed by category name, using the same routing-only field set as every profile entry.",
|
|
9386
|
-
examples: [{ review: { model: "anthropic/claude-opus-
|
|
9388
|
+
examples: [{ review: { model: "anthropic/claude-opus-5" } }]
|
|
9387
9389
|
})
|
|
9388
9390
|
}).strict().meta({
|
|
9389
9391
|
description: "A named routing-only overlay bundle. Entries under agents/categories have the same shape as the top-level agents/categories overlays, restricted to routing fields.",
|
|
9390
9392
|
examples: [
|
|
9391
9393
|
{
|
|
9392
|
-
agents: { fixer: { model: "anthropic/claude-opus-
|
|
9394
|
+
agents: { fixer: { model: "anthropic/claude-opus-5" } },
|
|
9393
9395
|
categories: { review: { pi: { thinking: "high" } } }
|
|
9394
9396
|
}
|
|
9395
9397
|
]
|
|
@@ -9488,14 +9490,16 @@ function createSystematicConfigSchema(opts) {
|
|
|
9488
9490
|
}),
|
|
9489
9491
|
categories: record(string2(), CategoryOverlaySchema).default({}).meta({
|
|
9490
9492
|
description: "Per-category configuration overlays keyed by category name",
|
|
9491
|
-
examples: [{ review: { model: "anthropic/claude-opus-
|
|
9493
|
+
examples: [{ review: { model: "anthropic/claude-opus-5" } }, {}]
|
|
9492
9494
|
}),
|
|
9493
9495
|
profiles: record(string2(), createProfileBundleSchema(agentNames, qualifiedAgentIds)).default({}).meta({
|
|
9494
9496
|
description: "Named routing-only overlay bundles, selectable by name via the profile field. Only valid in user config or OPENCODE_CONFIG_DIR config — a project config may select a profile but may not define this field.",
|
|
9495
9497
|
examples: [
|
|
9496
9498
|
{
|
|
9497
9499
|
personal: {
|
|
9498
|
-
agents: {
|
|
9500
|
+
agents: {
|
|
9501
|
+
"correctness-reviewer": { model: "openai/gpt-6-astra" }
|
|
9502
|
+
}
|
|
9499
9503
|
}
|
|
9500
9504
|
},
|
|
9501
9505
|
{}
|
|
@@ -659,17 +659,17 @@
|
|
|
659
659
|
"description": "Per-agent configuration overlay",
|
|
660
660
|
"examples": [
|
|
661
661
|
{
|
|
662
|
-
"model": "anthropic/claude-opus-
|
|
662
|
+
"model": "anthropic/claude-opus-5",
|
|
663
663
|
"temperature": 0.1,
|
|
664
664
|
"mode": "subagent"
|
|
665
665
|
},
|
|
666
666
|
{
|
|
667
667
|
"opencode": {
|
|
668
|
-
"model": "anthropic/claude-opus-
|
|
669
|
-
"variant": "
|
|
668
|
+
"model": "anthropic/claude-opus-5",
|
|
669
|
+
"variant": "high"
|
|
670
670
|
},
|
|
671
671
|
"pi": {
|
|
672
|
-
"model": "anthropic/claude-opus-
|
|
672
|
+
"model": "anthropic/claude-opus-5",
|
|
673
673
|
"thinking": "high"
|
|
674
674
|
}
|
|
675
675
|
}
|
|
@@ -698,7 +698,7 @@
|
|
|
698
698
|
}
|
|
699
699
|
],
|
|
700
700
|
"description": "Model identifier in provider/model format, or null to inherit parent model",
|
|
701
|
-
"examples": ["anthropic/claude-sonnet-
|
|
701
|
+
"examples": ["anthropic/claude-sonnet-5", null]
|
|
702
702
|
},
|
|
703
703
|
"__schema8": {
|
|
704
704
|
"trust": "project-or-higher",
|
|
@@ -932,8 +932,8 @@
|
|
|
932
932
|
"description": "OpenCode-specific routing block. When present, model/variant here override the flat model/variant fields for OpenCode only; the flat fields remain the harness-neutral default and still apply to Pi. `variant` is bound to whichever layer supplies `model`: it is used only from that layer or a more specific one, and is dropped when a more specific layer sets (or nulls) `model` without repeating the variant. A `variant` with no `model` anywhere in the merged overlay is a config-load error raised by the routing resolver, not a parse-time error.",
|
|
933
933
|
"examples": [
|
|
934
934
|
{
|
|
935
|
-
"model": "anthropic/claude-opus-
|
|
936
|
-
"variant": "
|
|
935
|
+
"model": "anthropic/claude-opus-5",
|
|
936
|
+
"variant": "high"
|
|
937
937
|
},
|
|
938
938
|
{
|
|
939
939
|
"model": null
|
|
@@ -984,7 +984,7 @@
|
|
|
984
984
|
"description": "Pi-specific routing block. When present, model/thinking here override the flat model field and the legacy `pi_subagents.<name>.thinking` value for Pi only; the flat model field remains the harness-neutral default and still applies to OpenCode. Unlike OpenCode's `variant`, `thinking` is independent of `model`: it applies to whatever model the delegate ends up running, including one inherited from the parent session, so `thinking` with no `model` anywhere in the merged overlay is valid and never a config-load error.",
|
|
985
985
|
"examples": [
|
|
986
986
|
{
|
|
987
|
-
"model": "anthropic/claude-opus-
|
|
987
|
+
"model": "anthropic/claude-opus-5",
|
|
988
988
|
"thinking": "high"
|
|
989
989
|
},
|
|
990
990
|
{
|
|
@@ -998,7 +998,7 @@
|
|
|
998
998
|
"examples": [
|
|
999
999
|
{
|
|
1000
1000
|
"review": {
|
|
1001
|
-
"model": "anthropic/claude-opus-
|
|
1001
|
+
"model": "anthropic/claude-opus-5"
|
|
1002
1002
|
}
|
|
1003
1003
|
},
|
|
1004
1004
|
{}
|
|
@@ -1058,12 +1058,12 @@
|
|
|
1058
1058
|
"description": "Per-category configuration overlay (same fields as agent minus disable)",
|
|
1059
1059
|
"examples": [
|
|
1060
1060
|
{
|
|
1061
|
-
"model": "anthropic/claude-opus-
|
|
1061
|
+
"model": "anthropic/claude-opus-5",
|
|
1062
1062
|
"temperature": 0.1
|
|
1063
1063
|
},
|
|
1064
1064
|
{
|
|
1065
1065
|
"opencode": {
|
|
1066
|
-
"variant": "
|
|
1066
|
+
"variant": "high"
|
|
1067
1067
|
},
|
|
1068
1068
|
"pi": {
|
|
1069
1069
|
"thinking": "high"
|
|
@@ -1172,7 +1172,7 @@
|
|
|
1172
1172
|
"personal": {
|
|
1173
1173
|
"agents": {
|
|
1174
1174
|
"correctness-reviewer": {
|
|
1175
|
-
"model": "openai/gpt-
|
|
1175
|
+
"model": "openai/gpt-6-astra"
|
|
1176
1176
|
}
|
|
1177
1177
|
}
|
|
1178
1178
|
}
|
|
@@ -1206,7 +1206,7 @@
|
|
|
1206
1206
|
{
|
|
1207
1207
|
"agents": {
|
|
1208
1208
|
"fixer": {
|
|
1209
|
-
"model": "anthropic/claude-opus-
|
|
1209
|
+
"model": "anthropic/claude-opus-5"
|
|
1210
1210
|
}
|
|
1211
1211
|
},
|
|
1212
1212
|
"categories": {
|
|
@@ -1225,7 +1225,7 @@
|
|
|
1225
1225
|
"examples": [
|
|
1226
1226
|
{
|
|
1227
1227
|
"correctness-reviewer": {
|
|
1228
|
-
"model": "openai/gpt-
|
|
1228
|
+
"model": "openai/gpt-6-astra"
|
|
1229
1229
|
}
|
|
1230
1230
|
}
|
|
1231
1231
|
],
|
|
@@ -1785,11 +1785,11 @@
|
|
|
1785
1785
|
"description": "Routing-only overlay fields permitted inside a named profile bundle entry: model, variant, temperature, top_p, and the opencode/pi harness blocks. Non-routing fields (permission, skills, mode, hidden, disable, steps, color) are rejected.",
|
|
1786
1786
|
"examples": [
|
|
1787
1787
|
{
|
|
1788
|
-
"model": "anthropic/claude-opus-
|
|
1788
|
+
"model": "anthropic/claude-opus-5"
|
|
1789
1789
|
},
|
|
1790
1790
|
{
|
|
1791
1791
|
"opencode": {
|
|
1792
|
-
"variant": "
|
|
1792
|
+
"variant": "high"
|
|
1793
1793
|
},
|
|
1794
1794
|
"pi": {
|
|
1795
1795
|
"thinking": "high"
|
|
@@ -1850,7 +1850,7 @@
|
|
|
1850
1850
|
"examples": [
|
|
1851
1851
|
{
|
|
1852
1852
|
"review": {
|
|
1853
|
-
"model": "anthropic/claude-opus-
|
|
1853
|
+
"model": "anthropic/claude-opus-5"
|
|
1854
1854
|
}
|
|
1855
1855
|
}
|
|
1856
1856
|
],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fro.bot/systematic",
|
|
3
|
-
"version": "3.16.
|
|
3
|
+
"version": "3.16.2",
|
|
4
4
|
"description": "Compound-engineering loops for OpenCode, Pi, and Claude Code",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://fro.bot/systematic",
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
"js-yaml": "^4.3.1",
|
|
118
118
|
"jsonc-parser": "^3.3.0",
|
|
119
119
|
"tree-sitter-bash": "0.25.1",
|
|
120
|
-
"web-tree-sitter": "0.
|
|
120
|
+
"web-tree-sitter": "0.27.0",
|
|
121
121
|
"zod": "4.5.4"
|
|
122
122
|
},
|
|
123
123
|
"overrides": {
|
|
@@ -234,9 +234,9 @@ enum ModelTier {
|
|
|
234
234
|
|
|
235
235
|
var modelId: String {
|
|
236
236
|
switch self {
|
|
237
|
-
case .fast: return "claude-
|
|
238
|
-
case .balanced: return "claude-sonnet-
|
|
239
|
-
case .powerful: return "claude-opus-
|
|
237
|
+
case .fast: return "claude-haiku-4-5"
|
|
238
|
+
case .balanced: return "claude-sonnet-5"
|
|
239
|
+
case .powerful: return "claude-opus-5"
|
|
240
240
|
}
|
|
241
241
|
}
|
|
242
242
|
}
|