@osovv/vv-opencode 1.0.2 → 1.1.1
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 +32 -0
- package/README.md +87 -19
- 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/doctor.js +7 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.js +14 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.js +6 -3
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/launch.d.ts +1 -0
- package/dist/commands/launch.js +20 -8
- package/dist/commands/launch.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 +11 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.js +6 -3
- package/dist/commands/sync.js.map +1 -1
- package/dist/lib/config-layers.d.ts +6 -0
- package/dist/lib/config-layers.js +65 -3
- package/dist/lib/config-layers.js.map +1 -1
- package/dist/lib/opencode.d.ts +20 -0
- package/dist/lib/opencode.js +157 -11
- 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/plugin-toggle-config.d.ts +1 -1
- package/dist/lib/plugin-toggle-config.js +2 -0
- package/dist/lib/plugin-toggle-config.js.map +1 -1
- 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/dist/tui/context/analyze.d.ts +4 -0
- package/dist/tui/context/analyze.js +256 -0
- package/dist/tui/context/analyze.js.map +1 -0
- package/dist/tui/context/collect.d.ts +3 -0
- package/dist/tui/context/collect.js +94 -0
- package/dist/tui/context/collect.js.map +1 -0
- package/dist/tui/context/estimate.d.ts +2 -0
- package/dist/tui/context/estimate.js +49 -0
- package/dist/tui/context/estimate.js.map +1 -0
- package/dist/tui/context/plugin.d.ts +10 -0
- package/dist/tui/context/plugin.js +91 -0
- package/dist/tui/context/plugin.js.map +1 -0
- package/dist/tui/context/types.d.ts +61 -0
- package/dist/tui/context/types.js +25 -0
- package/dist/tui/context/types.js.map +1 -0
- package/dist/tui/context/view.d.ts +3 -0
- package/dist/tui/context/view.js +45 -0
- package/dist/tui/context/view.js.map +1 -0
- package/dist/tui.d.ts +7 -0
- package/dist/tui.js +27 -0
- package/dist/tui.js.map +1 -0
- package/package.json +16 -4
- package/schemas/vvoc/v3.json +23 -1
- package/templates/agents/vv-controller.md +77 -111
- package/templates/skills/vv-execute/SKILL.md +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,iBAAiB;AACjB,wBAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// FILE: src/commands/install.ts
|
|
2
2
|
// VERSION: 0.4.0
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
4
|
-
// PURPOSE: Install vv-opencode into OpenCode config and bootstrap the canonical vvoc.json config plus managed prompts.
|
|
5
|
-
// SCOPE: Scope parsing, path resolution, pinned plugin registration, managed OpenCode agent registration, managed agent prompt and plan directory scaffolding, and canonical vvoc config creation.
|
|
4
|
+
// PURPOSE: Install vv-opencode into OpenCode runtime/TUI config and bootstrap the canonical vvoc.json config plus managed prompts.
|
|
5
|
+
// SCOPE: Scope parsing, path resolution, pinned runtime/TUI plugin registration, managed OpenCode agent registration, managed agent prompt and plan directory scaffolding, and canonical vvoc config creation.
|
|
6
6
|
// DEPENDS: [citty, src/lib/opencode.ts]
|
|
7
7
|
// LINKS: [M-CLI-COMMANDS, M-CLI-CONFIG]
|
|
8
8
|
// ROLE: RUNTIME
|
|
@@ -14,13 +14,14 @@
|
|
|
14
14
|
// END_MODULE_MAP
|
|
15
15
|
//
|
|
16
16
|
// START_CHANGE_SUMMARY
|
|
17
|
+
// LAST_CHANGE: [C-CONTEXT-TUI-PLUGIN - Registered the managed TUI subpath during installation.]
|
|
17
18
|
// LAST_CHANGE: [v0.6.0 - Skipped global managed skill symlink creation for project-scope installs.]
|
|
18
19
|
// LAST_CHANGE: [v0.5.0 - Added managed skill file install during vvoc install.]
|
|
19
20
|
// LAST_CHANGE: [v0.4.0 - Ensured the project-local managed planning artifact directory exists during project-scope install.]
|
|
20
21
|
// LAST_CHANGE: [v0.3.0 - Replaced per-feature vvoc config scaffolding with canonical vvoc.json creation.]
|
|
21
22
|
// END_CHANGE_SUMMARY
|
|
22
23
|
import { defineCommand } from "citty";
|
|
23
|
-
import { describeWriteResult, ensureManagedSkillSymlink, ensurePackageInstalled, installManagedAgentPrompts, installVvocConfig, installManagedSkillFiles, resolvePaths, syncManagedAgentRegistrations, } from "../lib/opencode.js";
|
|
24
|
+
import { describeWriteResult, ensureManagedSkillSymlink, ensurePackageInstalled, ensureTuiPackageInstalled, installManagedAgentPrompts, installVvocConfig, installManagedSkillFiles, resolvePaths, syncManagedAgentRegistrations, } from "../lib/opencode.js";
|
|
24
25
|
export default defineCommand({
|
|
25
26
|
meta: {
|
|
26
27
|
name: "install",
|
|
@@ -52,8 +53,10 @@ export default defineCommand({
|
|
|
52
53
|
configDir,
|
|
53
54
|
});
|
|
54
55
|
const opencode = await ensurePackageInstalled(paths);
|
|
56
|
+
const tui = await ensureTuiPackageInstalled(paths);
|
|
55
57
|
const managedAgents = await syncManagedAgentRegistrations(paths);
|
|
56
58
|
console.log(`${opencode.changed ? "Updated" : "Kept"} ${opencode.path}`);
|
|
59
|
+
console.log(describeWriteResult(tui));
|
|
57
60
|
console.log(`${managedAgents.changed ? "Updated" : "Kept"} ${managedAgents.path} (managed agents)`);
|
|
58
61
|
for (const result of await installManagedAgentPrompts(paths, {
|
|
59
62
|
force: Boolean(args.force),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,iBAAiB;AACjB,wBAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/launch.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// FILE: src/commands/launch.ts
|
|
2
2
|
// VERSION: 1.0.0
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
4
|
-
// PURPOSE: Launch OpenCode with deterministic vvoc and
|
|
5
|
-
// SCOPE: Scope parsing, config source selection, subprocess env construction, arg forwarding, stdio forwarding, and exit-code preservation.
|
|
4
|
+
// PURPOSE: Launch OpenCode with deterministic vvoc, OpenCode runtime, and managed TUI config layer environment variables.
|
|
5
|
+
// SCOPE: Scope parsing, runtime/TUI config source selection, subprocess env construction, arg forwarding, stdio forwarding, and exit-code preservation.
|
|
6
6
|
// DEPENDS: [citty, src/lib/config-layers.ts]
|
|
7
7
|
// LINKS: [M-CLI-COMMANDS]
|
|
8
8
|
// ROLE: RUNTIME
|
|
@@ -18,10 +18,11 @@
|
|
|
18
18
|
// END_MODULE_MAP
|
|
19
19
|
//
|
|
20
20
|
// START_CHANGE_SUMMARY
|
|
21
|
+
// LAST_CHANGE: [C-CONTEXT-TUI-PLUGIN - Added conditional OPENCODE_TUI_CONFIG selection for existing managed TUI files.]
|
|
21
22
|
// LAST_CHANGE: [v1.0.0 - Added deterministic OpenCode launch planning and subprocess execution.]
|
|
22
23
|
// END_CHANGE_SUMMARY
|
|
23
24
|
import { defineCommand } from "citty";
|
|
24
|
-
import { OPENCODE_CONFIG_ENV, VVOC_CONFIG_ENV, resolveOpenCodeConfigSource, resolveVvocConfigSource, } from "../lib/config-layers.js";
|
|
25
|
+
import { OPENCODE_CONFIG_ENV, OPENCODE_TUI_CONFIG_ENV, VVOC_CONFIG_ENV, resolveOpenCodeConfigSource, resolveOpenCodeTuiConfigSource, resolveVvocConfigSource, } from "../lib/config-layers.js";
|
|
25
26
|
const launchScopeArg = {
|
|
26
27
|
type: "enum",
|
|
27
28
|
options: ["effective", "project", "global"],
|
|
@@ -29,13 +30,19 @@ const launchScopeArg = {
|
|
|
29
30
|
description: "Launch with effective, project-local, or global config paths.",
|
|
30
31
|
};
|
|
31
32
|
export async function buildLaunchPlan(options) {
|
|
32
|
-
const [opencodeSource, vvocSource] = await Promise.all([
|
|
33
|
+
const [opencodeSource, opencodeTuiSource, vvocSource] = await Promise.all([
|
|
33
34
|
resolveOpenCodeConfigSource({
|
|
34
35
|
scope: options.scope,
|
|
35
36
|
cwd: options.cwd,
|
|
36
37
|
configDir: options.configDir,
|
|
37
38
|
env: options.env,
|
|
38
39
|
}),
|
|
40
|
+
resolveOpenCodeTuiConfigSource({
|
|
41
|
+
scope: options.scope,
|
|
42
|
+
cwd: options.cwd,
|
|
43
|
+
configDir: options.configDir,
|
|
44
|
+
env: options.env,
|
|
45
|
+
}),
|
|
39
46
|
resolveVvocConfigSource({
|
|
40
47
|
scope: options.scope,
|
|
41
48
|
cwd: options.cwd,
|
|
@@ -56,13 +63,18 @@ export async function buildLaunchPlan(options) {
|
|
|
56
63
|
if (!vvocSource.path) {
|
|
57
64
|
throw new Error("vvoc config source has no path; run vvoc install --scope project or vvoc install");
|
|
58
65
|
}
|
|
66
|
+
const env = {
|
|
67
|
+
[OPENCODE_CONFIG_ENV]: opencodeSource.path,
|
|
68
|
+
[VVOC_CONFIG_ENV]: vvocSource.path,
|
|
69
|
+
};
|
|
70
|
+
if (opencodeTuiSource.kind !== "missing" && opencodeTuiSource.path) {
|
|
71
|
+
env[OPENCODE_TUI_CONFIG_ENV] = opencodeTuiSource.path;
|
|
72
|
+
}
|
|
59
73
|
return {
|
|
60
74
|
command: ["opencode", ...options.passthroughArgs],
|
|
61
|
-
env
|
|
62
|
-
[OPENCODE_CONFIG_ENV]: opencodeSource.path,
|
|
63
|
-
[VVOC_CONFIG_ENV]: vvocSource.path,
|
|
64
|
-
},
|
|
75
|
+
env,
|
|
65
76
|
opencodeSource,
|
|
77
|
+
opencodeTuiSource,
|
|
66
78
|
vvocSource,
|
|
67
79
|
};
|
|
68
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/commands/launch.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,iBAAiB;AACjB,wBAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/commands/launch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ConfigReadScope, type ConfigSource, type ConfigWriteScope } from "../lib/config-layers.js";
|
|
2
|
+
import { type OrchestrationProfile } from "../lib/orchestration.js";
|
|
3
|
+
/** Result returned by a scoped orchestration profile write. */
|
|
4
|
+
export type OrchestrationWriteResult = {
|
|
5
|
+
action: "updated" | "kept";
|
|
6
|
+
profile: OrchestrationProfile;
|
|
7
|
+
path: string;
|
|
8
|
+
};
|
|
9
|
+
declare const _default: import("citty").CommandDef<import("citty").ArgsDef>;
|
|
10
|
+
export default _default;
|
|
11
|
+
/** Reads one resolved profile and selected source without mutation. */
|
|
12
|
+
export declare function showOrchestrationProfile(options?: {
|
|
13
|
+
cwd?: string;
|
|
14
|
+
configDir?: string;
|
|
15
|
+
scope?: ConfigReadScope;
|
|
16
|
+
}): Promise<{
|
|
17
|
+
profile: OrchestrationProfile;
|
|
18
|
+
source: ConfigSource;
|
|
19
|
+
}>;
|
|
20
|
+
/** Writes one explicit profile to global or project vvoc.json. */
|
|
21
|
+
export declare function setOrchestrationProfile(profile: OrchestrationProfile, options?: {
|
|
22
|
+
cwd?: string;
|
|
23
|
+
configDir?: string;
|
|
24
|
+
scope?: ConfigWriteScope;
|
|
25
|
+
}): Promise<OrchestrationWriteResult>;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
// FILE: src/commands/orchestration.ts
|
|
2
|
+
// VERSION: 1.0.0
|
|
3
|
+
// START_MODULE_CONTRACT
|
|
4
|
+
// PURPOSE: Show and set scoped orchestration profiles with effective source and restart diagnostics.
|
|
5
|
+
// SCOPE: Global/project/effective reads, global/project conservative writes, strict profile parsing, canonical bootstrap, and CLI output.
|
|
6
|
+
// DEPENDS: [citty, node:fs/promises, node:path, src/lib/config-layers.ts, src/lib/opencode.ts, src/lib/orchestration.ts, src/lib/vvoc-config.ts]
|
|
7
|
+
// LINKS: [M-CLI-ORCHESTRATION, M-ORCHESTRATION-PROFILES, M-CONFIG-LAYERS, M-CLI-CONFIG]
|
|
8
|
+
// ROLE: RUNTIME
|
|
9
|
+
// MAP_MODE: EXPORTS
|
|
10
|
+
// END_MODULE_CONTRACT
|
|
11
|
+
//
|
|
12
|
+
// START_MODULE_MAP
|
|
13
|
+
// default - Orchestration show/set command group.
|
|
14
|
+
// OrchestrationWriteResult - Result returned by a scoped profile write.
|
|
15
|
+
// showOrchestrationProfile - Resolves one profile and selected source without mutation.
|
|
16
|
+
// setOrchestrationProfile - Conservatively writes one explicit root profile.
|
|
17
|
+
// END_MODULE_MAP
|
|
18
|
+
//
|
|
19
|
+
// START_CHANGE_SUMMARY
|
|
20
|
+
// LAST_CHANGE: [C-PRESET-ORCHESTRATION-PROFILES - Added scoped orchestration profile reads, writes, validation, and restart output.]
|
|
21
|
+
// END_CHANGE_SUMMARY
|
|
22
|
+
import { defineCommand } from "citty";
|
|
23
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
24
|
+
import { dirname } from "node:path";
|
|
25
|
+
import { loadVvocConfigForRead, } from "../lib/config-layers.js";
|
|
26
|
+
import { resolvePaths } from "../lib/opencode.js";
|
|
27
|
+
import { ORCHESTRATION_PROFILE_NAMES, parseOrchestrationProfile, resolveOrchestrationPolicy, } from "../lib/orchestration.js";
|
|
28
|
+
import { createDefaultVvocConfig, renderVvocConfig, validateVvocConfigDocument, } from "../lib/vvoc-config.js";
|
|
29
|
+
const configDirArg = {
|
|
30
|
+
type: "string",
|
|
31
|
+
description: "Override the global config home used for vvoc/.",
|
|
32
|
+
};
|
|
33
|
+
const showCommand = defineCommand({
|
|
34
|
+
meta: {
|
|
35
|
+
name: "show",
|
|
36
|
+
description: "Show the resolved orchestration profile and selected source.",
|
|
37
|
+
},
|
|
38
|
+
args: {
|
|
39
|
+
scope: {
|
|
40
|
+
type: "enum",
|
|
41
|
+
options: ["global", "project", "effective"],
|
|
42
|
+
default: "effective",
|
|
43
|
+
description: "Read global, project-local, or effective layered config.",
|
|
44
|
+
},
|
|
45
|
+
"config-dir": configDirArg,
|
|
46
|
+
},
|
|
47
|
+
async run({ args }) {
|
|
48
|
+
const result = await showOrchestrationProfile({
|
|
49
|
+
cwd: process.cwd(),
|
|
50
|
+
configDir: resolveConfigDir(args),
|
|
51
|
+
scope: resolveReadScope(args.scope),
|
|
52
|
+
});
|
|
53
|
+
console.log(`Orchestration profile: ${result.profile}`);
|
|
54
|
+
console.log(`Source: ${formatSource(result.source)}`);
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
const setCommand = defineCommand({
|
|
58
|
+
meta: {
|
|
59
|
+
name: "set",
|
|
60
|
+
description: "Set an explicit orchestration profile.",
|
|
61
|
+
},
|
|
62
|
+
args: {
|
|
63
|
+
profile: {
|
|
64
|
+
type: "positional",
|
|
65
|
+
required: true,
|
|
66
|
+
description: `Profile (${ORCHESTRATION_PROFILE_NAMES.join(", ")}).`,
|
|
67
|
+
},
|
|
68
|
+
scope: {
|
|
69
|
+
type: "enum",
|
|
70
|
+
options: ["global", "project"],
|
|
71
|
+
default: "global",
|
|
72
|
+
description: "Write global or project-local vvoc config.",
|
|
73
|
+
},
|
|
74
|
+
"config-dir": configDirArg,
|
|
75
|
+
},
|
|
76
|
+
async run({ args }) {
|
|
77
|
+
const profile = parseOrchestrationProfile(args.profile, "orchestration set");
|
|
78
|
+
const result = await setOrchestrationProfile(profile, {
|
|
79
|
+
cwd: process.cwd(),
|
|
80
|
+
configDir: resolveConfigDir(args),
|
|
81
|
+
scope: resolveWriteScope(args.scope),
|
|
82
|
+
});
|
|
83
|
+
console.log(`${result.action}: orchestration profile ${result.profile}`);
|
|
84
|
+
console.log(`Target: ${result.path}`);
|
|
85
|
+
if (result.action === "updated") {
|
|
86
|
+
console.log("Restart OpenCode to apply the changed orchestration profile.");
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
export default defineCommand({
|
|
91
|
+
meta: {
|
|
92
|
+
name: "orchestration",
|
|
93
|
+
description: "Show or set the vv-controller orchestration profile.",
|
|
94
|
+
},
|
|
95
|
+
subCommands: {
|
|
96
|
+
show: showCommand,
|
|
97
|
+
set: setCommand,
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
/** Reads one resolved profile and selected source without mutation. */
|
|
101
|
+
export async function showOrchestrationProfile(options = {}) {
|
|
102
|
+
const { config, source } = await loadVvocConfigForRead({
|
|
103
|
+
scope: options.scope ?? "effective",
|
|
104
|
+
cwd: options.cwd ?? process.cwd(),
|
|
105
|
+
configDir: options.configDir,
|
|
106
|
+
allowDefault: true,
|
|
107
|
+
});
|
|
108
|
+
return {
|
|
109
|
+
profile: resolveOrchestrationPolicy(config).profile,
|
|
110
|
+
source,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/** Writes one explicit profile to global or project vvoc.json. */
|
|
114
|
+
export async function setOrchestrationProfile(profile, options = {}) {
|
|
115
|
+
const normalizedProfile = parseOrchestrationProfile(profile, "orchestration set");
|
|
116
|
+
const scope = assertWriteScope(options.scope ?? "global");
|
|
117
|
+
const paths = await resolvePaths({
|
|
118
|
+
scope,
|
|
119
|
+
cwd: options.cwd ?? process.cwd(),
|
|
120
|
+
configDir: options.configDir,
|
|
121
|
+
});
|
|
122
|
+
const currentText = await readOptionalText(paths.vvocConfigPath);
|
|
123
|
+
if (currentText === undefined) {
|
|
124
|
+
const config = createDefaultVvocConfig();
|
|
125
|
+
config.orchestration = { profile: normalizedProfile };
|
|
126
|
+
await mkdir(dirname(paths.vvocConfigPath), { recursive: true });
|
|
127
|
+
await writeFile(paths.vvocConfigPath, renderVvocConfig(config), "utf8");
|
|
128
|
+
return { action: "updated", profile: normalizedProfile, path: paths.vvocConfigPath };
|
|
129
|
+
}
|
|
130
|
+
const config = parseRawVvocConfigText(currentText, paths.vvocConfigPath);
|
|
131
|
+
if (config.orchestration?.profile === normalizedProfile) {
|
|
132
|
+
return { action: "kept", profile: normalizedProfile, path: paths.vvocConfigPath };
|
|
133
|
+
}
|
|
134
|
+
const nextConfig = {
|
|
135
|
+
...config,
|
|
136
|
+
orchestration: { profile: normalizedProfile },
|
|
137
|
+
};
|
|
138
|
+
await writeFile(paths.vvocConfigPath, `${JSON.stringify(nextConfig, null, 2)}\n`, "utf8");
|
|
139
|
+
return { action: "updated", profile: normalizedProfile, path: paths.vvocConfigPath };
|
|
140
|
+
}
|
|
141
|
+
function parseRawVvocConfigText(text, label) {
|
|
142
|
+
let value;
|
|
143
|
+
try {
|
|
144
|
+
value = JSON.parse(text);
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
throw new Error(`${label}: invalid JSON`);
|
|
148
|
+
}
|
|
149
|
+
const errors = validateVvocConfigDocument(value);
|
|
150
|
+
if (errors.length > 0)
|
|
151
|
+
throw new Error(`${label}: ${errors.join("; ")}`);
|
|
152
|
+
return value;
|
|
153
|
+
}
|
|
154
|
+
async function readOptionalText(path) {
|
|
155
|
+
try {
|
|
156
|
+
return await readFile(path, "utf8");
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT")
|
|
160
|
+
return undefined;
|
|
161
|
+
throw error;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function assertWriteScope(scope) {
|
|
165
|
+
if (scope !== "global" && scope !== "project") {
|
|
166
|
+
throw new Error("orchestration set supports --scope global or --scope project, not effective");
|
|
167
|
+
}
|
|
168
|
+
return scope;
|
|
169
|
+
}
|
|
170
|
+
function resolveReadScope(value) {
|
|
171
|
+
return value === "global" || value === "project" ? value : "effective";
|
|
172
|
+
}
|
|
173
|
+
function resolveWriteScope(value) {
|
|
174
|
+
if (value === "effective") {
|
|
175
|
+
throw new Error("orchestration set supports --scope global or --scope project, not effective");
|
|
176
|
+
}
|
|
177
|
+
return value === "project" ? "project" : "global";
|
|
178
|
+
}
|
|
179
|
+
function resolveConfigDir(args) {
|
|
180
|
+
return typeof args["config-dir"] === "string" ? args["config-dir"] : undefined;
|
|
181
|
+
}
|
|
182
|
+
function formatSource(source) {
|
|
183
|
+
return `${source.kind}${source.path ? ` ${source.path}` : ""}`;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=orchestration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../src/commands/orchestration.ts"],"names":[],"mappings":"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"}
|
|
@@ -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);
|