@osovv/vv-opencode 1.0.2 → 1.1.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/CHANGELOG.md +24 -0
- package/README.md +62 -8
- package/dist/cli.js +4 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/completion.js +34 -6
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/orchestration.d.ts +25 -0
- package/dist/commands/orchestration.js +185 -0
- package/dist/commands/orchestration.js.map +1 -0
- package/dist/commands/patch-provider.d.ts +18 -29
- package/dist/commands/patch-provider.js +28 -31
- package/dist/commands/patch-provider.js.map +1 -1
- package/dist/commands/preset.d.ts +8 -1
- package/dist/commands/preset.js +49 -18
- package/dist/commands/preset.js.map +1 -1
- package/dist/commands/status.js +5 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/lib/opencode.d.ts +4 -0
- package/dist/lib/opencode.js +14 -3
- package/dist/lib/opencode.js.map +1 -1
- package/dist/lib/orchestration.d.ts +21 -0
- package/dist/lib/orchestration.js +118 -0
- package/dist/lib/orchestration.js.map +1 -0
- package/dist/lib/vvoc-config.d.ts +25 -0
- package/dist/lib/vvoc-config.js +24 -7
- package/dist/lib/vvoc-config.js.map +1 -1
- package/dist/lib/vvoc-preset-registry.d.ts +26 -8
- package/dist/lib/vvoc-preset-registry.js +18 -10
- package/dist/lib/vvoc-preset-registry.js.map +1 -1
- package/dist/plugins/system-context-injection/index.js +17 -38
- package/dist/plugins/system-context-injection/index.js.map +1 -1
- package/dist/plugins/workflow/index.js +42 -6
- package/dist/plugins/workflow/index.js.map +1 -1
- package/package.json +1 -1
- package/schemas/vvoc/v3.json +23 -1
- package/templates/agents/vv-controller.md +77 -111
- package/templates/skills/vv-execute/SKILL.md +1 -1
|
@@ -54,32 +54,34 @@ declare const PATCH_PROVIDER_PRESETS: {
|
|
|
54
54
|
};
|
|
55
55
|
readonly summary: "provider.zai-coding-plan.models.glm-4.5-airx patched";
|
|
56
56
|
};
|
|
57
|
-
readonly
|
|
57
|
+
readonly codex: {
|
|
58
58
|
readonly kind: "provider-object";
|
|
59
59
|
readonly providerID: "openai";
|
|
60
60
|
readonly value: {
|
|
61
61
|
readonly models: {
|
|
62
|
-
readonly "vv-gpt-5.4-
|
|
63
|
-
readonly name: "VV GPT-5.4
|
|
64
|
-
readonly id: "gpt-5.4";
|
|
62
|
+
readonly "vv-codex-gpt-5.4-mini-low": {
|
|
63
|
+
readonly name: "VV Codex GPT-5.4 Mini Low";
|
|
64
|
+
readonly id: "gpt-5.4-mini";
|
|
65
65
|
readonly variants: {};
|
|
66
66
|
readonly limit: {
|
|
67
67
|
readonly context: 400000;
|
|
68
|
+
readonly input: 272000;
|
|
68
69
|
readonly output: 128000;
|
|
69
70
|
};
|
|
70
71
|
readonly reasoning: true;
|
|
71
72
|
readonly options: {
|
|
72
|
-
readonly reasoningEffort: "
|
|
73
|
+
readonly reasoningEffort: "low";
|
|
73
74
|
readonly reasoningSummary: "auto";
|
|
74
75
|
readonly include: readonly ["reasoning.encrypted_content"];
|
|
75
76
|
};
|
|
76
77
|
};
|
|
77
|
-
readonly "vv-gpt-5.5-xhigh": {
|
|
78
|
-
readonly name: "VV GPT-5.5-XHigh";
|
|
78
|
+
readonly "vv-codex-gpt-5.5-xhigh": {
|
|
79
|
+
readonly name: "VV Codex GPT-5.5-XHigh";
|
|
79
80
|
readonly id: "gpt-5.5";
|
|
80
81
|
readonly variants: {};
|
|
81
82
|
readonly limit: {
|
|
82
83
|
readonly context: 400000;
|
|
84
|
+
readonly input: 272000;
|
|
83
85
|
readonly output: 128000;
|
|
84
86
|
};
|
|
85
87
|
readonly reasoning: true;
|
|
@@ -89,27 +91,13 @@ declare const PATCH_PROVIDER_PRESETS: {
|
|
|
89
91
|
readonly include: readonly ["reasoning.encrypted_content"];
|
|
90
92
|
};
|
|
91
93
|
};
|
|
92
|
-
readonly "vv-gpt-5.
|
|
93
|
-
readonly name: "VV GPT-5.
|
|
94
|
-
readonly id: "gpt-5.4-mini";
|
|
95
|
-
readonly variants: {};
|
|
96
|
-
readonly limit: {
|
|
97
|
-
readonly context: 400000;
|
|
98
|
-
readonly output: 128000;
|
|
99
|
-
};
|
|
100
|
-
readonly reasoning: true;
|
|
101
|
-
readonly options: {
|
|
102
|
-
readonly reasoningEffort: "low";
|
|
103
|
-
readonly reasoningSummary: "auto";
|
|
104
|
-
readonly include: readonly ["reasoning.encrypted_content"];
|
|
105
|
-
};
|
|
106
|
-
};
|
|
107
|
-
readonly "vv-gpt-5.6-terra-high": {
|
|
108
|
-
readonly name: "VV GPT-5.6 Terra High";
|
|
94
|
+
readonly "vv-codex-gpt-5.6-terra-high": {
|
|
95
|
+
readonly name: "VV Codex GPT-5.6 Terra High";
|
|
109
96
|
readonly id: "gpt-5.6-terra";
|
|
110
97
|
readonly variants: {};
|
|
111
98
|
readonly limit: {
|
|
112
|
-
readonly context:
|
|
99
|
+
readonly context: 500000;
|
|
100
|
+
readonly input: 372000;
|
|
113
101
|
readonly output: 128000;
|
|
114
102
|
};
|
|
115
103
|
readonly reasoning: true;
|
|
@@ -119,12 +107,13 @@ declare const PATCH_PROVIDER_PRESETS: {
|
|
|
119
107
|
readonly include: readonly ["reasoning.encrypted_content"];
|
|
120
108
|
};
|
|
121
109
|
};
|
|
122
|
-
readonly "vv-gpt-5.6-sol-xhigh": {
|
|
123
|
-
readonly name: "VV GPT-5.6 Sol XHigh";
|
|
110
|
+
readonly "vv-codex-gpt-5.6-sol-xhigh": {
|
|
111
|
+
readonly name: "VV Codex GPT-5.6 Sol XHigh";
|
|
124
112
|
readonly id: "gpt-5.6-sol";
|
|
125
113
|
readonly variants: {};
|
|
126
114
|
readonly limit: {
|
|
127
|
-
readonly context:
|
|
115
|
+
readonly context: 500000;
|
|
116
|
+
readonly input: 372000;
|
|
128
117
|
readonly output: 128000;
|
|
129
118
|
};
|
|
130
119
|
readonly reasoning: true;
|
|
@@ -136,7 +125,7 @@ declare const PATCH_PROVIDER_PRESETS: {
|
|
|
136
125
|
};
|
|
137
126
|
};
|
|
138
127
|
};
|
|
139
|
-
readonly summary: "provider.openai.models vv-gpt-5.4/5.5/5.6 aliases patched";
|
|
128
|
+
readonly summary: "provider.openai.models vv-codex-gpt-5.4/5.5/5.6 aliases patched";
|
|
140
129
|
};
|
|
141
130
|
};
|
|
142
131
|
export type PatchProviderPresetName = keyof typeof PATCH_PROVIDER_PRESETS;
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
// LAST_CHANGE: [v0.4.3 - Added reasoning:true to vv-gpt-5.4-xhigh and vv-gpt-5.5-xhigh in openai patch preset.]
|
|
22
22
|
// LAST_CHANGE: [v0.6.0 - Added vv-gpt-5.6-luna-low, vv-gpt-5.6-terra-high, vv-gpt-5.6-sol-xhigh to openai patch preset.]
|
|
23
23
|
// LAST_CHANGE: [v0.7.0 - Replaced the unavailable vv-gpt-5.6-luna-low alias with vv-gpt-5.4-mini-low.]
|
|
24
|
+
// LAST_CHANGE: [C-CODEX-PRESET-LIMITS - Renamed managed aliases to vv-codex-gpt-* namespace with explicit Codex subscription limits and made codex the canonical patch-provider preset.]
|
|
24
25
|
// END_CHANGE_SUMMARY
|
|
25
26
|
import { defineCommand } from "citty";
|
|
26
27
|
import { describeWriteResult, resolvePaths, writeOpenCodeProviderObject, writeProviderBaseUrl, } from "../lib/opencode.js";
|
|
@@ -57,27 +58,29 @@ const STEPFUN_PATCH = {
|
|
|
57
58
|
};
|
|
58
59
|
const OPENAI_PATCH = {
|
|
59
60
|
models: {
|
|
60
|
-
"vv-gpt-5.4-
|
|
61
|
-
name: "VV GPT-5.4
|
|
62
|
-
id: "gpt-5.4",
|
|
61
|
+
"vv-codex-gpt-5.4-mini-low": {
|
|
62
|
+
name: "VV Codex GPT-5.4 Mini Low",
|
|
63
|
+
id: "gpt-5.4-mini",
|
|
63
64
|
variants: {},
|
|
64
65
|
limit: {
|
|
65
66
|
context: 400000,
|
|
67
|
+
input: 272000,
|
|
66
68
|
output: 128000,
|
|
67
69
|
},
|
|
68
70
|
reasoning: true,
|
|
69
71
|
options: {
|
|
70
|
-
reasoningEffort: "
|
|
72
|
+
reasoningEffort: "low",
|
|
71
73
|
reasoningSummary: "auto",
|
|
72
74
|
include: ["reasoning.encrypted_content"],
|
|
73
75
|
},
|
|
74
76
|
},
|
|
75
|
-
"vv-gpt-5.5-xhigh": {
|
|
76
|
-
name: "VV GPT-5.5-XHigh",
|
|
77
|
+
"vv-codex-gpt-5.5-xhigh": {
|
|
78
|
+
name: "VV Codex GPT-5.5-XHigh",
|
|
77
79
|
id: "gpt-5.5",
|
|
78
80
|
variants: {},
|
|
79
81
|
limit: {
|
|
80
82
|
context: 400000,
|
|
83
|
+
input: 272000,
|
|
81
84
|
output: 128000,
|
|
82
85
|
},
|
|
83
86
|
reasoning: true,
|
|
@@ -87,27 +90,13 @@ const OPENAI_PATCH = {
|
|
|
87
90
|
include: ["reasoning.encrypted_content"],
|
|
88
91
|
},
|
|
89
92
|
},
|
|
90
|
-
"vv-gpt-5.
|
|
91
|
-
name: "VV GPT-5.
|
|
92
|
-
id: "gpt-5.4-mini",
|
|
93
|
-
variants: {},
|
|
94
|
-
limit: {
|
|
95
|
-
context: 400000,
|
|
96
|
-
output: 128000,
|
|
97
|
-
},
|
|
98
|
-
reasoning: true,
|
|
99
|
-
options: {
|
|
100
|
-
reasoningEffort: "low",
|
|
101
|
-
reasoningSummary: "auto",
|
|
102
|
-
include: ["reasoning.encrypted_content"],
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
"vv-gpt-5.6-terra-high": {
|
|
106
|
-
name: "VV GPT-5.6 Terra High",
|
|
93
|
+
"vv-codex-gpt-5.6-terra-high": {
|
|
94
|
+
name: "VV Codex GPT-5.6 Terra High",
|
|
107
95
|
id: "gpt-5.6-terra",
|
|
108
96
|
variants: {},
|
|
109
97
|
limit: {
|
|
110
|
-
context:
|
|
98
|
+
context: 500000,
|
|
99
|
+
input: 372000,
|
|
111
100
|
output: 128000,
|
|
112
101
|
},
|
|
113
102
|
reasoning: true,
|
|
@@ -117,12 +106,13 @@ const OPENAI_PATCH = {
|
|
|
117
106
|
include: ["reasoning.encrypted_content"],
|
|
118
107
|
},
|
|
119
108
|
},
|
|
120
|
-
"vv-gpt-5.6-sol-xhigh": {
|
|
121
|
-
name: "VV GPT-5.6 Sol XHigh",
|
|
109
|
+
"vv-codex-gpt-5.6-sol-xhigh": {
|
|
110
|
+
name: "VV Codex GPT-5.6 Sol XHigh",
|
|
122
111
|
id: "gpt-5.6-sol",
|
|
123
112
|
variants: {},
|
|
124
113
|
limit: {
|
|
125
|
-
context:
|
|
114
|
+
context: 500000,
|
|
115
|
+
input: 372000,
|
|
126
116
|
output: 128000,
|
|
127
117
|
},
|
|
128
118
|
reasoning: true,
|
|
@@ -147,13 +137,16 @@ const PATCH_PROVIDER_PRESETS = {
|
|
|
147
137
|
value: ZAI_CODING_PLAN_PATCH,
|
|
148
138
|
summary: "provider.zai-coding-plan.models.glm-4.5-airx patched",
|
|
149
139
|
},
|
|
150
|
-
|
|
140
|
+
codex: {
|
|
151
141
|
kind: "provider-object",
|
|
152
142
|
providerID: "openai",
|
|
153
143
|
value: OPENAI_PATCH,
|
|
154
|
-
summary: "provider.openai.models vv-gpt-5.4/5.5/5.6 aliases patched",
|
|
144
|
+
summary: "provider.openai.models vv-codex-gpt-5.4/5.5/5.6 aliases patched",
|
|
155
145
|
},
|
|
156
146
|
};
|
|
147
|
+
const PATCH_PROVIDER_PRESET_ALIASES = {
|
|
148
|
+
openai: "codex",
|
|
149
|
+
};
|
|
157
150
|
const presetArg = {
|
|
158
151
|
type: "positional",
|
|
159
152
|
required: true,
|
|
@@ -171,12 +164,16 @@ const writeScopeArg = {
|
|
|
171
164
|
};
|
|
172
165
|
// START_BLOCK_PROVIDER_PRESET_RESOLUTION
|
|
173
166
|
export function resolvePatchProviderPreset(name) {
|
|
174
|
-
const
|
|
167
|
+
const requestedName = name.trim();
|
|
168
|
+
const presetName = requestedName in PATCH_PROVIDER_PRESET_ALIASES
|
|
169
|
+
? PATCH_PROVIDER_PRESET_ALIASES[requestedName]
|
|
170
|
+
: requestedName;
|
|
175
171
|
if (presetName in PATCH_PROVIDER_PRESETS) {
|
|
176
172
|
return PATCH_PROVIDER_PRESETS[presetName];
|
|
177
173
|
}
|
|
178
174
|
const supported = Object.keys(PATCH_PROVIDER_PRESETS).join(", ");
|
|
179
|
-
|
|
175
|
+
const aliases = Object.keys(PATCH_PROVIDER_PRESET_ALIASES).join(", ");
|
|
176
|
+
throw new Error(`Unsupported OpenCode patch preset: ${name}. Supported presets: ${supported}. Compatibility aliases: ${aliases}`);
|
|
180
177
|
}
|
|
181
178
|
export async function applyPatchProviderPreset(presetName, options = {}) {
|
|
182
179
|
const preset = resolvePatchProviderPreset(presetName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch-provider.js","sourceRoot":"","sources":["../../src/commands/patch-provider.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,iBAAiB;AACjB,wBAAwB;AACxB,uFAAuF;AACvF,mLAAmL;AACnL,0CAA0C;AAC1C,gDAAgD;AAChD,kBAAkB;AAClB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,yDAAyD;AACzD,+FAA+F;AAC/F,8EAA8E;AAC9E,8GAA8G;AAC9G,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,gFAAgF;AAChF,kHAAkH;AAClH,2HAA2H;AAC3H,yGAAyG;AACzG,qBAAqB;AAErB,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAmB5B,MAAM,qBAAqB,GAAG;IAC5B,MAAM,EAAE;QACN,cAAc,EAAE;YACd,oBAAoB,EAAE;gBACpB,KAAK,EAAE;oBACL,OAAO,EAAE,MAAM;oBACf,MAAM,EAAE,KAAK;iBACd;aACF;SACF;KACF;CACyC,CAAC;AAE7C,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE;QACP,OAAO,EAAE,2BAA2B;KACrC;IACD,MAAM,EAAE;QACN,gBAAgB,EAAE;YAChB,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,MAAM;aACf;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;gBACxB,MAAM,EAAE,CAAC,MAAM,CAAC;aACjB;SACF;KACF;CACyC,CAAC;AAE7C,MAAM,YAAY,GAAG;IACnB,MAAM,EAAE;QACN,
|
|
1
|
+
{"version":3,"file":"patch-provider.js","sourceRoot":"","sources":["../../src/commands/patch-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import { type ConfigWriteScope } from "../lib/config-layers.js";
|
|
2
|
+
import { type OrchestrationProfile } from "../lib/orchestration.js";
|
|
2
3
|
import { type VvocPreset, type VvocPresets } from "../lib/vvoc-config.js";
|
|
3
4
|
type ListedPreset = {
|
|
4
5
|
name: string;
|
|
5
6
|
preset: VvocPreset;
|
|
6
7
|
};
|
|
7
|
-
type AppliedPresetChange = {
|
|
8
|
+
export type AppliedPresetChange = {
|
|
8
9
|
roleId: string;
|
|
9
10
|
model: string;
|
|
10
11
|
action: "updated" | "kept";
|
|
11
12
|
};
|
|
13
|
+
/** Result of applying the optional orchestration part of a preset. */
|
|
14
|
+
export type AppliedPresetOrchestrationChange = {
|
|
15
|
+
profile: OrchestrationProfile;
|
|
16
|
+
action: "updated" | "kept" | "unchanged";
|
|
17
|
+
};
|
|
12
18
|
declare const _default: import("citty").CommandDef<{
|
|
13
19
|
readonly command: {
|
|
14
20
|
type: "positional";
|
|
@@ -45,5 +51,6 @@ export declare function applyPreset(presetName: string, options?: {
|
|
|
45
51
|
name: string;
|
|
46
52
|
preset: VvocPreset;
|
|
47
53
|
changes: AppliedPresetChange[];
|
|
54
|
+
orchestration: AppliedPresetOrchestrationChange;
|
|
48
55
|
path: string;
|
|
49
56
|
}>;
|
package/dist/commands/preset.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// FILE: src/commands/preset.ts
|
|
2
2
|
// VERSION: 0.4.2
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
4
|
-
// PURPOSE: List, show, and apply declarative
|
|
5
|
-
// SCOPE: Effective/global/project preset lookup, preset rendering, and role
|
|
6
|
-
// DEPENDS: [citty, node:fs/promises, src/lib/config-layers.ts, src/lib/model-roles.ts, src/lib/opencode.ts, src/lib/vvoc-config.ts]
|
|
7
|
-
// LINKS: [M-CLI-PRESET, M-CLI-CONFIG, M-CLI-COMMANDS]
|
|
4
|
+
// PURPOSE: List, show, and atomically apply declarative role and orchestration presets from scoped vvoc.json layers.
|
|
5
|
+
// SCOPE: Effective/global/project preset lookup, preset rendering, and conservative role plus optional orchestration writes.
|
|
6
|
+
// DEPENDS: [citty, node:fs/promises, src/lib/config-layers.ts, src/lib/model-roles.ts, src/lib/opencode.ts, src/lib/orchestration.ts, src/lib/vvoc-config.ts]
|
|
7
|
+
// LINKS: [M-CLI-PRESET, M-CLI-CONFIG, M-ORCHESTRATION-PROFILES, M-CLI-COMMANDS]
|
|
8
8
|
// ROLE: RUNTIME
|
|
9
9
|
// MAP_MODE: EXPORTS
|
|
10
10
|
// END_MODULE_CONTRACT
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
// listConfiguredPresets - Returns configured presets in deterministic name order.
|
|
15
15
|
// resolvePreset - Validates a preset name and returns the matching preset.
|
|
16
16
|
// formatPreset - Renders a preset object as JSON for CLI output.
|
|
17
|
-
//
|
|
17
|
+
// AppliedPresetOrchestrationChange - Reports whether a preset changed, kept, or omitted orchestration.
|
|
18
|
+
// applyPreset - Validates and atomically applies listed roles plus an optional orchestration profile.
|
|
18
19
|
// END_MODULE_MAP
|
|
19
20
|
//
|
|
20
21
|
// START_CHANGE_SUMMARY
|
|
@@ -22,6 +23,7 @@
|
|
|
22
23
|
// LAST_CHANGE: [v0.4.0 - Switched preset application to canonical role-only writes and removed legacy scope/OpenCode target mutation behavior.]
|
|
23
24
|
// LAST_CHANGE: [v0.4.1 - Stopped preset flows from running sync rewrites; now bootstrap vvoc.json only when missing and keep existing config sections untouched unless listed roles change.]
|
|
24
25
|
// LAST_CHANGE: [v0.4.2 - Switched existing-file preset flows to strict raw vvoc.json validation and role-only document mutation without preset reseeding side effects.]
|
|
26
|
+
// LAST_CHANGE: [C-PRESET-ORCHESTRATION-PROFILES - Added validated atomic role/profile application, profile reporting, target paths, and restart guidance.]
|
|
25
27
|
// END_CHANGE_SUMMARY
|
|
26
28
|
import { defineCommand } from "citty";
|
|
27
29
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
@@ -29,7 +31,8 @@ import { dirname } from "node:path";
|
|
|
29
31
|
import { loadVvocConfigForRead, } from "../lib/config-layers.js";
|
|
30
32
|
import { parseModelSelection } from "../lib/model-roles.js";
|
|
31
33
|
import { resolvePaths } from "../lib/opencode.js";
|
|
32
|
-
import {
|
|
34
|
+
import { createOrchestrationConfig, parseOrchestrationProfile, } from "../lib/orchestration.js";
|
|
35
|
+
import { createDefaultVvocConfig, validateVvocConfigDocument, } from "../lib/vvoc-config.js";
|
|
33
36
|
const commandArg = {
|
|
34
37
|
type: "positional",
|
|
35
38
|
required: false,
|
|
@@ -87,26 +90,49 @@ export function formatPreset(_name, preset) {
|
|
|
87
90
|
return `${JSON.stringify(preset, null, 2)}\n`;
|
|
88
91
|
}
|
|
89
92
|
export async function applyPreset(presetName, options = {}) {
|
|
90
|
-
const { config, paths } = await loadScopedVvocConfigForWrite(options);
|
|
93
|
+
const { config, paths, currentText } = await loadScopedVvocConfigForWrite(options);
|
|
91
94
|
const resolved = resolvePreset(presetName, config.presets);
|
|
92
|
-
const
|
|
93
|
-
const nextRoles = { ...config.roles };
|
|
94
|
-
const changes = [];
|
|
95
|
-
for (const [rawRoleId, rawModelSelection] of entries) {
|
|
95
|
+
const validatedRoles = Object.entries(resolved.preset.agents).map(([rawRoleId, rawModelSelection]) => {
|
|
96
96
|
const roleId = normalizeRoleId(rawRoleId, `preset ${resolved.name}`);
|
|
97
97
|
const model = parseModelSelection(normalizePresetModelSelection(rawModelSelection, `preset ${resolved.name} role ${roleId}`)).normalized;
|
|
98
|
+
return { roleId, model };
|
|
99
|
+
});
|
|
100
|
+
const currentProfile = createOrchestrationConfig(config.orchestration).profile;
|
|
101
|
+
const declaredProfile = resolved.preset.orchestration === undefined
|
|
102
|
+
? undefined
|
|
103
|
+
: parseOrchestrationProfile(resolved.preset.orchestration.profile, `preset ${resolved.name} orchestration`);
|
|
104
|
+
const nextRoles = { ...config.roles };
|
|
105
|
+
const changes = [];
|
|
106
|
+
for (const { roleId, model } of validatedRoles) {
|
|
98
107
|
const action = nextRoles[roleId] === model ? "kept" : "updated";
|
|
99
108
|
nextRoles[roleId] = model;
|
|
100
109
|
changes.push({ roleId, model, action });
|
|
101
110
|
}
|
|
102
|
-
|
|
111
|
+
const orchestration = declaredProfile
|
|
112
|
+
? {
|
|
113
|
+
profile: declaredProfile,
|
|
114
|
+
action: declaredProfile === currentProfile ? "kept" : "updated",
|
|
115
|
+
}
|
|
116
|
+
: { profile: currentProfile, action: "unchanged" };
|
|
117
|
+
const changed = currentText === undefined ||
|
|
118
|
+
changes.some((change) => change.action === "updated") ||
|
|
119
|
+
orchestration.action === "updated";
|
|
120
|
+
if (changed) {
|
|
103
121
|
const nextConfig = {
|
|
104
122
|
...config,
|
|
105
123
|
roles: nextRoles,
|
|
124
|
+
...(declaredProfile ? { orchestration: { profile: declaredProfile } } : {}),
|
|
106
125
|
};
|
|
126
|
+
await mkdir(dirname(paths.vvocConfigPath), { recursive: true });
|
|
107
127
|
await writeFile(paths.vvocConfigPath, `${JSON.stringify(nextConfig, null, 2)}\n`, "utf8");
|
|
108
128
|
}
|
|
109
|
-
return {
|
|
129
|
+
return {
|
|
130
|
+
name: resolved.name,
|
|
131
|
+
preset: resolved.preset,
|
|
132
|
+
changes,
|
|
133
|
+
orchestration,
|
|
134
|
+
path: paths.vvocConfigPath,
|
|
135
|
+
};
|
|
110
136
|
}
|
|
111
137
|
async function listPresets(options = {}) {
|
|
112
138
|
return listConfiguredPresets(await readConfiguredPresets(options));
|
|
@@ -129,7 +155,8 @@ async function runPresetCommand(args) {
|
|
|
129
155
|
for (const { name, preset } of presets) {
|
|
130
156
|
const description = preset.description ? ` - ${preset.description}` : "";
|
|
131
157
|
const roleCount = Object.keys(preset.agents).length;
|
|
132
|
-
|
|
158
|
+
const profile = preset.orchestration?.profile ?? "unchanged";
|
|
159
|
+
console.log(` ${name}${description} (${roleCount} role${roleCount === 1 ? "" : "s"}, profile ${profile})`);
|
|
133
160
|
}
|
|
134
161
|
return;
|
|
135
162
|
}
|
|
@@ -158,6 +185,12 @@ async function runPresetCommand(args) {
|
|
|
158
185
|
for (const change of applied.changes) {
|
|
159
186
|
console.log(` ${change.roleId}: ${change.action} (${change.model})`);
|
|
160
187
|
}
|
|
188
|
+
console.log(` orchestration: ${applied.orchestration.action} (${applied.orchestration.profile})`);
|
|
189
|
+
console.log(`Target: ${applied.path}`);
|
|
190
|
+
if (applied.changes.some((change) => change.action === "updated") ||
|
|
191
|
+
applied.orchestration.action === "updated") {
|
|
192
|
+
console.log("Restart OpenCode to apply the changed roles or orchestration profile.");
|
|
193
|
+
}
|
|
161
194
|
}
|
|
162
195
|
async function readConfiguredPresets(options = {}) {
|
|
163
196
|
const { config } = await loadVvocConfigForRead({
|
|
@@ -179,6 +212,7 @@ async function loadScopedVvocConfigForWrite(options) {
|
|
|
179
212
|
return {
|
|
180
213
|
config: parseRawVvocConfigText(text, paths.vvocConfigPath),
|
|
181
214
|
paths,
|
|
215
|
+
currentText: text,
|
|
182
216
|
};
|
|
183
217
|
}
|
|
184
218
|
catch (error) {
|
|
@@ -186,10 +220,7 @@ async function loadScopedVvocConfigForWrite(options) {
|
|
|
186
220
|
throw error;
|
|
187
221
|
}
|
|
188
222
|
}
|
|
189
|
-
|
|
190
|
-
await mkdir(dirname(paths.vvocConfigPath), { recursive: true });
|
|
191
|
-
await writeFile(paths.vvocConfigPath, renderVvocConfig(defaultConfig), "utf8");
|
|
192
|
-
return { config: defaultConfig, paths };
|
|
223
|
+
return { config: createDefaultVvocConfig(), paths, currentText: undefined };
|
|
193
224
|
}
|
|
194
225
|
function parseRawVvocConfigText(text, label) {
|
|
195
226
|
let value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../src/commands/preset.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,iBAAiB;AACjB,wBAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../src/commands/preset.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// FILE: src/commands/status.ts
|
|
2
2
|
// VERSION: 0.4.0
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
4
|
-
// PURPOSE: Show
|
|
5
|
-
// SCOPE: Read-scope parsing, layered source-aware inspection lookup, and human-readable
|
|
4
|
+
// PURPOSE: Show current vv-opencode installation status including the effective orchestration profile.
|
|
5
|
+
// SCOPE: Read-scope parsing, layered source-aware inspection lookup, and human-readable OpenCode, vvoc, orchestration, role, and plugin diagnostics.
|
|
6
6
|
// DEPENDS: [citty, src/lib/config-layers.ts, src/lib/opencode.ts]
|
|
7
|
-
// LINKS: [M-CLI-COMMANDS, M-CLI-CONFIG]
|
|
7
|
+
// LINKS: [M-CLI-COMMANDS, M-CLI-CONFIG, M-ORCHESTRATION-PROFILES]
|
|
8
8
|
// ROLE: RUNTIME
|
|
9
9
|
// MAP_MODE: EXPORTS
|
|
10
10
|
// END_MODULE_CONTRACT
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
// LAST_CHANGE: [v0.6.0 - Printed vvoc config parse diagnostics during status without mutating invalid config files.]
|
|
18
18
|
// LAST_CHANGE: [v0.5.0 - Added global/project/effective status scopes with selected source reporting.]
|
|
19
19
|
// LAST_CHANGE: [v0.4.0 - Added canonical role inventory output and unresolved role-reference reporting sourced from installation inspection.]
|
|
20
|
+
// LAST_CHANGE: [C-PRESET-ORCHESTRATION-PROFILES - Printed the profile resolved from the selected vvoc source.]
|
|
20
21
|
// END_CHANGE_SUMMARY
|
|
21
22
|
import { defineCommand } from "citty";
|
|
22
23
|
import { inspectInstallationForScope } from "../lib/opencode.js";
|
|
@@ -45,6 +46,7 @@ export default defineCommand({
|
|
|
45
46
|
console.log(`Scope: ${inspection.scope}`);
|
|
46
47
|
console.log(`OpenCode source: ${inspection.opencodeSource.kind}${inspection.opencodeSource.path ? ` ${inspection.opencodeSource.path}` : ""}`);
|
|
47
48
|
console.log(`vvoc source: ${inspection.vvocSource.kind}${inspection.vvocSource.path ? ` ${inspection.vvocSource.path}` : ""}`);
|
|
49
|
+
console.log(`Orchestration profile: ${inspection.orchestration.profile ?? "unknown"}`);
|
|
48
50
|
console.log(`OpenCode config: ${inspection.opencode.path}`);
|
|
49
51
|
console.log(`OpenCode config exists: ${inspection.opencode.exists ? "yes" : "no"}`);
|
|
50
52
|
console.log(`Package configured: ${inspection.opencode.pluginConfigured ? "yes" : "no"}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,iBAAiB;AACjB,wBAAwB;AACxB
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/opencode.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ManagedOpenCodeAgentName } from "./managed-agents.js";
|
|
2
|
+
import { type OrchestrationProfile } from "./orchestration.js";
|
|
2
3
|
import { type GuardianConfig, type GuardianConfigOverrides, type SecretsRedactionConfig, type VvocConfig } from "./vvoc-config.js";
|
|
3
4
|
import { PACKAGE_NAME } from "./package.js";
|
|
4
5
|
import { type ConfigReadScope, type ConfigSource } from "./config-layers.js";
|
|
@@ -54,6 +55,9 @@ export type InstallationInspection = {
|
|
|
54
55
|
secretsRedaction: {
|
|
55
56
|
config?: SecretsRedactionConfig;
|
|
56
57
|
};
|
|
58
|
+
orchestration: {
|
|
59
|
+
profile?: OrchestrationProfile;
|
|
60
|
+
};
|
|
57
61
|
roles: {
|
|
58
62
|
assignments: Array<{
|
|
59
63
|
roleId: string;
|
package/dist/lib/opencode.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
// VERSION: 1.0.0
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
4
4
|
// PURPOSE: Manage OpenCode config mutation, provider patching, and scoped vvoc.json config files.
|
|
5
|
-
// SCOPE: Layer-aware path resolution, pinned plugin writes, managed OpenCode defaults, local skills path registration, provider patching, managed prompts/skills, strict
|
|
6
|
-
// DEPENDS: [jsonc-parser, node:fs/promises, node:path, src/lib/config-layers.ts, src/lib/managed-agents.ts, src/lib/managed-skills.ts, src/lib/package.ts, src/lib/vvoc-config.ts, src/lib/vvoc-paths.ts]
|
|
7
|
-
// LINKS: [M-CLI-CONFIG]
|
|
5
|
+
// SCOPE: Layer-aware path resolution, pinned plugin writes, managed OpenCode defaults, local skills path registration, provider patching, managed prompts/skills, strict vvoc rendering, and source-aware installation inspection including orchestration.
|
|
6
|
+
// DEPENDS: [jsonc-parser, node:fs/promises, node:path, src/lib/config-layers.ts, src/lib/managed-agents.ts, src/lib/managed-skills.ts, src/lib/orchestration.ts, src/lib/package.ts, src/lib/vvoc-config.ts, src/lib/vvoc-paths.ts]
|
|
7
|
+
// LINKS: [M-CLI-CONFIG, M-ORCHESTRATION-PROFILES]
|
|
8
8
|
// ROLE: RUNTIME
|
|
9
9
|
// MAP_MODE: EXPORTS
|
|
10
10
|
// END_MODULE_CONTRACT
|
|
@@ -71,6 +71,7 @@
|
|
|
71
71
|
// LAST_CHANGE: [v0.9.2 - Added conservative cleanup of legacy tracked managed agent registrations so sync removes pre-rename implementer/spec-reviewer/code-reviewer entries.]
|
|
72
72
|
// LAST_CHANGE: [v0.9.1 - Narrowed built-in OpenCode auto-seeding to `agent.explore` so install/init/sync stop rewriting other built-in agent model refs.]
|
|
73
73
|
// LAST_CHANGE: [v0.9.0 - Added OpenCode agent variant read/write helpers so vvoc can translate provider/model:variant into native agent config fields.]
|
|
74
|
+
// LAST_CHANGE: [C-PRESET-ORCHESTRATION-PROFILES - Added resolved orchestration profile inspection for selected and default vvoc sources.]
|
|
74
75
|
// END_CHANGE_SUMMARY
|
|
75
76
|
import { applyEdits, format, modify, parse } from "jsonc-parser";
|
|
76
77
|
import { mkdir, readFile, symlink, unlink, writeFile } from "node:fs/promises";
|
|
@@ -78,6 +79,7 @@ import { dirname, join, relative } from "node:path";
|
|
|
78
79
|
import { MANAGED_AGENT_PROMPT_NAMES, MANAGED_OPENCODE_AGENTS, getManagedAgentPromptPath, getManagedOpenCodeAgentDefinition, loadManagedAgentPromptTemplate, } from "./managed-agents.js";
|
|
79
80
|
import { MANAGED_SKILL_NAMES, getManagedSkillFilePath, listManagedSkillReferenceNames, loadManagedSkillReference, loadManagedSkillTemplate, } from "./managed-skills.js";
|
|
80
81
|
import { BUILTIN_ROLE_NAMES, getBuiltInRoleBindings, ROLE_REFERENCE_PREFIX, } from "./model-roles.js";
|
|
82
|
+
import { resolveOrchestrationPolicy } from "./orchestration.js";
|
|
81
83
|
import { createDefaultVvocConfig, createGuardianConfig, parseVvocConfigText, parseVersionedVvocConfigText, renderVvocConfig, } from "./vvoc-config.js";
|
|
82
84
|
import { getPinnedPackageSpecifier, PACKAGE_NAME } from "./package.js";
|
|
83
85
|
import { resolveConfigWriteTargets, resolveOpenCodeConfigSource, resolveVvocConfigSource, } from "./config-layers.js";
|
|
@@ -652,6 +654,9 @@ export async function inspectInstallation(paths) {
|
|
|
652
654
|
secretsRedaction: {
|
|
653
655
|
config: vvocConfig?.secretsRedaction,
|
|
654
656
|
},
|
|
657
|
+
orchestration: {
|
|
658
|
+
profile: vvocConfig ? resolveOrchestrationPolicy(vvocConfig).profile : undefined,
|
|
659
|
+
},
|
|
655
660
|
roles: {
|
|
656
661
|
assignments: roleAssignments,
|
|
657
662
|
unresolvedReferences: unresolvedRoleReferences,
|
|
@@ -700,6 +705,12 @@ export async function inspectInstallationForScope(options) {
|
|
|
700
705
|
const inspection = await inspectInstallation(scopedPaths);
|
|
701
706
|
return {
|
|
702
707
|
...inspection,
|
|
708
|
+
orchestration: {
|
|
709
|
+
profile: inspection.orchestration.profile ??
|
|
710
|
+
(vvocSource.kind === "default"
|
|
711
|
+
? resolveOrchestrationPolicy(createDefaultVvocConfig()).profile
|
|
712
|
+
: undefined),
|
|
713
|
+
},
|
|
703
714
|
scope: options.scope,
|
|
704
715
|
opencodeSource,
|
|
705
716
|
vvocSource,
|