@osovv/vv-opencode 1.1.0 → 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 +8 -0
- package/README.md +25 -11
- 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/status.js +8 -2
- 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 +16 -0
- package/dist/lib/opencode.js +144 -9
- package/dist/lib/opencode.js.map +1 -1
- 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/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 +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// FILE: src/lib/config-layers.ts
|
|
2
2
|
// VERSION: 1.0.0
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
4
|
-
// PURPOSE: Resolve vvoc and OpenCode config layers for global, project, and effective scopes.
|
|
5
|
-
// SCOPE: Env override handling, ancestor project-root discovery, project write-root selection, global fallback paths, singleton runtime vvoc loading, and source metadata.
|
|
4
|
+
// PURPOSE: Resolve vvoc, OpenCode runtime, and OpenCode TUI config layers for global, project, and effective scopes.
|
|
5
|
+
// SCOPE: Env override handling, ancestor project-root discovery, project write-root selection, global fallback paths, dedicated TUI config selection, singleton runtime vvoc loading, and source metadata.
|
|
6
6
|
// DEPENDS: [node:fs/promises, node:path, src/lib/vvoc-config.ts, src/lib/vvoc-paths.ts]
|
|
7
7
|
// LINKS: [M-CONFIG-LAYERS, M-CLI-CONFIG]
|
|
8
8
|
// ROLE: RUNTIME
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
// START_MODULE_MAP
|
|
13
13
|
// VVOC_CONFIG_ENV - Environment variable name for explicit vvoc config selection.
|
|
14
14
|
// OPENCODE_CONFIG_ENV - Environment variable name for explicit OpenCode config selection.
|
|
15
|
+
// OPENCODE_TUI_CONFIG_ENV - Environment variable name for explicit OpenCode TUI config selection.
|
|
15
16
|
// ConfigWriteScope - Supported write scopes for mutating commands.
|
|
16
17
|
// ConfigReadScope - Supported read scopes for list/show/diagnostic commands.
|
|
17
18
|
// ConfigSourceKind - Source kind labels for selected config sources.
|
|
@@ -25,6 +26,7 @@
|
|
|
25
26
|
// resolveProjectOpenCodeConfigPath - Selects the canonical project .opencode/opencode.json(c) path.
|
|
26
27
|
// resolveVvocConfigSource - Resolves vvoc source metadata for global, project, or effective reads.
|
|
27
28
|
// resolveOpenCodeConfigSource - Resolves OpenCode source metadata for global, project, or effective reads.
|
|
29
|
+
// resolveOpenCodeTuiConfigSource - Resolves OpenCode TUI source metadata for global, project, or effective reads.
|
|
28
30
|
// resolveConfigWriteTargets - Returns canonical global or project write paths.
|
|
29
31
|
// loadVvocConfigForRead - Loads vvoc config for CLI read/list/show commands without creating files.
|
|
30
32
|
// VvocConfigSnapshot - Immutable runtime vvoc config snapshot plus source metadata.
|
|
@@ -34,6 +36,7 @@
|
|
|
34
36
|
// END_MODULE_MAP
|
|
35
37
|
//
|
|
36
38
|
// START_CHANGE_SUMMARY
|
|
39
|
+
// LAST_CHANGE: [C-CONTEXT-TUI-PLUGIN - Added layered dedicated tui.json(c) source and write-target resolution.]
|
|
37
40
|
// LAST_CHANGE: [v1.1.0 - Replaced keyed runtime memoization with a single loadVvocConfig startup promise shared by all plugins.]
|
|
38
41
|
// LAST_CHANGE: [v1.0.1 - Memoized loadEffectiveVvocConfigForRuntime to eliminate redundant ancestor discovery across multiple plugins during startup.]
|
|
39
42
|
// LAST_CHANGE: [v1.0.0 - Added layered config source discovery, write target resolution, and runtime vvoc loading.]
|
|
@@ -44,21 +47,25 @@ import { createDefaultVvocConfig, parseVvocConfigText } from "./vvoc-config.js";
|
|
|
44
47
|
import { getGlobalOpencodeDir, getGlobalVvocConfigPath, getGlobalVvocDir, getProjectOpencodeDir, getProjectVvocConfigPath, } from "./vvoc-paths.js";
|
|
45
48
|
export const VVOC_CONFIG_ENV = "VVOC_CONFIG";
|
|
46
49
|
export const OPENCODE_CONFIG_ENV = "OPENCODE_CONFIG";
|
|
50
|
+
export const OPENCODE_TUI_CONFIG_ENV = "OPENCODE_TUI_CONFIG";
|
|
47
51
|
let runtimeConfigPromise;
|
|
48
52
|
let runtimeConfigSignature;
|
|
49
53
|
const OPENCODE_CONFIG_FILE_NAMES = ["opencode.json", "opencode.jsonc"];
|
|
54
|
+
const OPENCODE_TUI_CONFIG_FILE_NAMES = ["tui.json", "tui.jsonc"];
|
|
50
55
|
// START_BLOCK_PROJECT_LAYER_DISCOVERY
|
|
51
56
|
export async function findNearestProjectConfigRoot(cwd) {
|
|
52
57
|
let currentDir = resolve(cwd);
|
|
53
58
|
while (true) {
|
|
54
59
|
const vvocConfigPath = getProjectVvocConfigPath(currentDir);
|
|
55
60
|
const opencodeConfigPath = await findExistingProjectOpenCodeConfigPath(currentDir);
|
|
61
|
+
const opencodeTuiConfigPath = await findExistingProjectOpenCodeTuiConfigPath(currentDir);
|
|
56
62
|
const hasVvocConfig = await pathExists(vvocConfigPath);
|
|
57
|
-
if (hasVvocConfig || opencodeConfigPath) {
|
|
63
|
+
if (hasVvocConfig || opencodeConfigPath || opencodeTuiConfigPath) {
|
|
58
64
|
return {
|
|
59
65
|
rootDir: currentDir,
|
|
60
66
|
vvocConfigPath: hasVvocConfig ? vvocConfigPath : undefined,
|
|
61
67
|
opencodeConfigPath,
|
|
68
|
+
opencodeTuiConfigPath,
|
|
62
69
|
};
|
|
63
70
|
}
|
|
64
71
|
const parentDir = dirname(currentDir);
|
|
@@ -118,6 +125,23 @@ export async function resolveOpenCodeConfigSource(options) {
|
|
|
118
125
|
}
|
|
119
126
|
return resolveGlobalOpenCodeSource(options.configDir);
|
|
120
127
|
}
|
|
128
|
+
export async function resolveOpenCodeTuiConfigSource(options) {
|
|
129
|
+
if (options.scope === "global") {
|
|
130
|
+
return resolveGlobalOpenCodeTuiSource(options.configDir);
|
|
131
|
+
}
|
|
132
|
+
if (options.scope === "project") {
|
|
133
|
+
return resolveProjectOpenCodeTuiSource(options.cwd);
|
|
134
|
+
}
|
|
135
|
+
const envSource = readEnvConfigSource(options.env, OPENCODE_TUI_CONFIG_ENV);
|
|
136
|
+
if (envSource) {
|
|
137
|
+
return envSource;
|
|
138
|
+
}
|
|
139
|
+
const projectSource = await resolveProjectOpenCodeTuiSource(options.cwd);
|
|
140
|
+
if (projectSource.kind === "project") {
|
|
141
|
+
return projectSource;
|
|
142
|
+
}
|
|
143
|
+
return resolveGlobalOpenCodeTuiSource(options.configDir);
|
|
144
|
+
}
|
|
121
145
|
export async function resolveConfigWriteTargets(options) {
|
|
122
146
|
if (options.scope === "global") {
|
|
123
147
|
const opencodeBaseDir = getGlobalOpencodeDir(options.configDir);
|
|
@@ -127,6 +151,7 @@ export async function resolveConfigWriteTargets(options) {
|
|
|
127
151
|
opencodeBaseDir,
|
|
128
152
|
vvocBaseDir: getGlobalVvocDir(options.configDir),
|
|
129
153
|
opencodeConfigPath,
|
|
154
|
+
opencodeTuiConfigPath: await selectExistingPath(OPENCODE_TUI_CONFIG_FILE_NAMES.map((name) => join(opencodeBaseDir, name))),
|
|
130
155
|
vvocConfigPath: getGlobalVvocConfigPath(options.configDir),
|
|
131
156
|
};
|
|
132
157
|
}
|
|
@@ -138,6 +163,8 @@ export async function resolveConfigWriteTargets(options) {
|
|
|
138
163
|
opencodeBaseDir,
|
|
139
164
|
vvocBaseDir: dirname(getProjectVvocConfigPath(projectRoot)),
|
|
140
165
|
opencodeConfigPath: await resolveProjectOpenCodeConfigPath(projectRoot),
|
|
166
|
+
opencodeTuiConfigPath: (await findExistingProjectOpenCodeTuiConfigPath(projectRoot)) ??
|
|
167
|
+
join(opencodeBaseDir, "tui.json"),
|
|
141
168
|
vvocConfigPath: getProjectVvocConfigPath(projectRoot),
|
|
142
169
|
};
|
|
143
170
|
}
|
|
@@ -274,6 +301,18 @@ async function resolveProjectOpenCodeSource(cwd) {
|
|
|
274
301
|
reason: "project OpenCode config missing; run vvoc install --scope project",
|
|
275
302
|
};
|
|
276
303
|
}
|
|
304
|
+
async function resolveProjectOpenCodeTuiSource(cwd) {
|
|
305
|
+
const root = await findNearestProjectConfigRoot(cwd);
|
|
306
|
+
if (root?.opencodeTuiConfigPath) {
|
|
307
|
+
return { kind: "project", path: root.opencodeTuiConfigPath, rootDir: root.rootDir };
|
|
308
|
+
}
|
|
309
|
+
return {
|
|
310
|
+
kind: "missing",
|
|
311
|
+
path: root ? join(getProjectOpencodeDir(root.rootDir), "tui.json") : undefined,
|
|
312
|
+
rootDir: root?.rootDir,
|
|
313
|
+
reason: "project OpenCode TUI config missing; run vvoc install --scope project",
|
|
314
|
+
};
|
|
315
|
+
}
|
|
277
316
|
async function resolveGlobalVvocSource(configDir) {
|
|
278
317
|
const path = getGlobalVvocConfigPath(configDir);
|
|
279
318
|
return (await pathExists(path))
|
|
@@ -291,6 +330,17 @@ async function resolveGlobalOpenCodeSource(configDir) {
|
|
|
291
330
|
reason: "global OpenCode config missing",
|
|
292
331
|
};
|
|
293
332
|
}
|
|
333
|
+
async function resolveGlobalOpenCodeTuiSource(configDir) {
|
|
334
|
+
const baseDir = getGlobalOpencodeDir(configDir);
|
|
335
|
+
const path = await findExistingOpenCodeTuiConfigPath(baseDir);
|
|
336
|
+
return path
|
|
337
|
+
? { kind: "global", path }
|
|
338
|
+
: {
|
|
339
|
+
kind: "missing",
|
|
340
|
+
path: join(baseDir, "tui.json"),
|
|
341
|
+
reason: "global OpenCode TUI config missing",
|
|
342
|
+
};
|
|
343
|
+
}
|
|
294
344
|
function readEnvConfigSource(env, name) {
|
|
295
345
|
const value = env ? env[name] : process.env[name];
|
|
296
346
|
if (typeof value !== "string" || !value.trim()) {
|
|
@@ -301,6 +351,9 @@ function readEnvConfigSource(env, name) {
|
|
|
301
351
|
async function findExistingProjectOpenCodeConfigPath(projectRoot) {
|
|
302
352
|
return findExistingOpenCodeConfigPath(getProjectOpencodeDir(projectRoot));
|
|
303
353
|
}
|
|
354
|
+
async function findExistingProjectOpenCodeTuiConfigPath(projectRoot) {
|
|
355
|
+
return findExistingOpenCodeTuiConfigPath(getProjectOpencodeDir(projectRoot));
|
|
356
|
+
}
|
|
304
357
|
async function findExistingOpenCodeConfigPath(baseDir) {
|
|
305
358
|
for (const name of OPENCODE_CONFIG_FILE_NAMES) {
|
|
306
359
|
const candidate = join(baseDir, name);
|
|
@@ -310,6 +363,15 @@ async function findExistingOpenCodeConfigPath(baseDir) {
|
|
|
310
363
|
}
|
|
311
364
|
return undefined;
|
|
312
365
|
}
|
|
366
|
+
async function findExistingOpenCodeTuiConfigPath(baseDir) {
|
|
367
|
+
for (const name of OPENCODE_TUI_CONFIG_FILE_NAMES) {
|
|
368
|
+
const candidate = join(baseDir, name);
|
|
369
|
+
if (await pathExists(candidate)) {
|
|
370
|
+
return candidate;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return undefined;
|
|
374
|
+
}
|
|
313
375
|
async function selectExistingPath(candidates) {
|
|
314
376
|
for (const candidate of candidates) {
|
|
315
377
|
if (await pathExists(candidate)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-layers.js","sourceRoot":"","sources":["../../src/lib/config-layers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config-layers.js","sourceRoot":"","sources":["../../src/lib/config-layers.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/opencode.d.ts
CHANGED
|
@@ -6,7 +6,10 @@ import { type ConfigReadScope, type ConfigSource } from "./config-layers.js";
|
|
|
6
6
|
export declare const CLI_NAME = "vvoc";
|
|
7
7
|
export { PACKAGE_NAME };
|
|
8
8
|
export declare const OPENCODE_SCHEMA_URL = "https://opencode.ai/config.json";
|
|
9
|
+
export declare const OPENCODE_TUI_SCHEMA_URL = "https://opencode.ai/tui.json";
|
|
10
|
+
export declare const TUI_PACKAGE_SPECIFIER = "@osovv/vv-opencode/tui";
|
|
9
11
|
type JsonObject = Record<string, unknown>;
|
|
12
|
+
export type TuiPluginEntry = string | [string, JsonObject];
|
|
10
13
|
export type OpenCodeDefaultModelKey = "model" | "small_model";
|
|
11
14
|
export type Scope = "global" | "project";
|
|
12
15
|
export type ResolvedPaths = {
|
|
@@ -21,6 +24,8 @@ export type ResolvedPaths = {
|
|
|
21
24
|
managedSkillsDirPath: string;
|
|
22
25
|
opencodeConfigPath: string;
|
|
23
26
|
opencodeAlternatePaths: string[];
|
|
27
|
+
opencodeTuiConfigPath: string;
|
|
28
|
+
opencodeTuiAlternatePaths: string[];
|
|
24
29
|
};
|
|
25
30
|
export type WriteResult = {
|
|
26
31
|
action: "created" | "updated" | "kept" | "skipped";
|
|
@@ -42,6 +47,14 @@ export type InstallationInspection = {
|
|
|
42
47
|
pluginConfigured: boolean;
|
|
43
48
|
plugins: string[];
|
|
44
49
|
};
|
|
50
|
+
tui: {
|
|
51
|
+
path: string;
|
|
52
|
+
exists: boolean;
|
|
53
|
+
alternates: string[];
|
|
54
|
+
parseError?: string;
|
|
55
|
+
pluginConfigured: boolean;
|
|
56
|
+
plugins: TuiPluginEntry[];
|
|
57
|
+
};
|
|
45
58
|
vvoc: {
|
|
46
59
|
path: string;
|
|
47
60
|
exists: boolean;
|
|
@@ -79,6 +92,8 @@ export declare function resolvePaths(options: {
|
|
|
79
92
|
configDir?: string;
|
|
80
93
|
}): Promise<ResolvedPaths>;
|
|
81
94
|
export declare function ensurePackageConfigText(text: string | undefined, packageSpecifier?: string): string;
|
|
95
|
+
export declare function ensureTuiPackageConfigText(text: string | undefined, packageSpecifier?: string): string;
|
|
96
|
+
export declare function ensureTuiPackageInstalled(paths: Pick<ResolvedPaths, "opencodeTuiConfigPath">): Promise<WriteResult>;
|
|
82
97
|
export declare function ensureManagedAgentRegistrationsConfigText(text: string | undefined, paths: Pick<ResolvedPaths, "managedAgentsDirPath" | "managedSkillsDirPath" | "opencodeConfigPath">): string;
|
|
83
98
|
export declare function syncManagedAgentRegistrations(paths: ResolvedPaths): Promise<{
|
|
84
99
|
path: string;
|
|
@@ -135,6 +150,7 @@ export declare function inspectInstallationForScope(options: {
|
|
|
135
150
|
configDir?: string;
|
|
136
151
|
}): Promise<InstallationInspection & {
|
|
137
152
|
opencodeSource: ConfigSource;
|
|
153
|
+
opencodeTuiSource: ConfigSource;
|
|
138
154
|
vvocSource: ConfigSource;
|
|
139
155
|
}>;
|
|
140
156
|
export declare function describeWriteResult(result: WriteResult): string;
|
package/dist/lib/opencode.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// FILE: src/lib/opencode.ts
|
|
2
2
|
// VERSION: 1.0.0
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
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 vvoc rendering, and source-aware installation inspection including orchestration.
|
|
4
|
+
// PURPOSE: Manage OpenCode runtime/TUI config mutation, provider patching, and scoped vvoc.json config files.
|
|
5
|
+
// SCOPE: Layer-aware path resolution, pinned runtime and TUI 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
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
7
|
// LINKS: [M-CLI-CONFIG, M-ORCHESTRATION-PROFILES]
|
|
8
8
|
// ROLE: RUNTIME
|
|
@@ -13,13 +13,17 @@
|
|
|
13
13
|
// CLI_NAME - Canonical vvoc CLI binary name.
|
|
14
14
|
// PACKAGE_NAME - Canonical vvoc npm package name.
|
|
15
15
|
// OPENCODE_SCHEMA_URL - OpenCode config schema URL.
|
|
16
|
+
// OPENCODE_TUI_SCHEMA_URL - OpenCode TUI config schema URL.
|
|
17
|
+
// TUI_PACKAGE_SPECIFIER - Stable package subpath registered in tui.json(c).
|
|
16
18
|
// OpenCodeDefaultModelKey - Supported top-level OpenCode default model fields.
|
|
17
19
|
// Scope - Supported installation scopes for vvoc config writes.
|
|
18
|
-
// ResolvedPaths - Scope-aware path bundle for OpenCode and vvoc config locations.
|
|
20
|
+
// ResolvedPaths - Scope-aware path bundle for OpenCode runtime/TUI and vvoc config locations.
|
|
19
21
|
// WriteResult - Result shape returned by managed config write operations.
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
+
// TuiPluginEntry - Supported TUI plugin string or tuple entry.
|
|
23
|
+
// InstallationInspection - Current OpenCode runtime/TUI and vvoc installation status snapshot.
|
|
24
|
+
// resolvePaths - Resolves OpenCode runtime/TUI and vvoc config paths for global/project scopes.
|
|
22
25
|
// ensurePackageConfigText - Ensures OpenCode config contains the pinned vvoc plugin specifier.
|
|
26
|
+
// ensureTuiPackageConfigText - Ensures TUI config contains the vvoc TUI package subpath while preserving tuple options.
|
|
23
27
|
// readOpenCodeDefaultModel - Reads a top-level OpenCode model or small_model override.
|
|
24
28
|
// writeOpenCodeDefaultModel - Writes or removes a top-level OpenCode model or small_model override.
|
|
25
29
|
// writeOpenCodeProviderObject - Writes or merges a provider.<id> object override.
|
|
@@ -27,6 +31,7 @@
|
|
|
27
31
|
// ensureManagedAgentRegistrationsConfigText - Ensures OpenCode config contains the vvoc-managed default agent, agent registrations, and tool gating.
|
|
28
32
|
// readVvocConfig - Loads the canonical vvoc.json document when present.
|
|
29
33
|
// ensurePackageInstalled - Writes the pinned vvoc plugin specifier into OpenCode config.
|
|
34
|
+
// ensureTuiPackageInstalled - Writes the vvoc TUI package subpath into dedicated tui.json(c).
|
|
30
35
|
// installVvocConfig - Creates or refreshes the canonical vvoc.json document.
|
|
31
36
|
// syncVvocConfig - Rewrites the canonical vvoc.json document while preserving valid current values.
|
|
32
37
|
// writeProviderBaseUrl - Writes a provider options.baseURL override into OpenCode config.
|
|
@@ -53,9 +58,9 @@
|
|
|
53
58
|
// renderGuardianConfig - Render guardian section JSON.
|
|
54
59
|
// GuardianConfigOverrides - Guardian config override type.
|
|
55
60
|
// END_MODULE_MAP
|
|
56
|
-
// END_MODULE_MAP
|
|
57
61
|
//
|
|
58
62
|
// START_CHANGE_SUMMARY
|
|
63
|
+
// LAST_CHANGE: [C-CONTEXT-TUI-PLUGIN - Added conservative dedicated TUI config mutation, path resolution, and installation inspection.]
|
|
59
64
|
// LAST_CHANGE: [v1.3.0 - Removed old-name managed-agent and managed-command cleanup from syncManagedAgentRegistrations.]
|
|
60
65
|
// LAST_CHANGE: [v1.2.0 - Switched vvoc config mutation paths to strict current-only parsing for existing vvoc.json files.]
|
|
61
66
|
// LAST_CHANGE: [v1.1.1 - Fixed syncManagedSkillFiles to not sync references when parent skill is skipped (user-owned/custom). Added regression coverage.]
|
|
@@ -82,13 +87,16 @@ import { BUILTIN_ROLE_NAMES, getBuiltInRoleBindings, ROLE_REFERENCE_PREFIX, } fr
|
|
|
82
87
|
import { resolveOrchestrationPolicy } from "./orchestration.js";
|
|
83
88
|
import { createDefaultVvocConfig, createGuardianConfig, parseVvocConfigText, parseVersionedVvocConfigText, renderVvocConfig, } from "./vvoc-config.js";
|
|
84
89
|
import { getPinnedPackageSpecifier, PACKAGE_NAME } from "./package.js";
|
|
85
|
-
import { resolveConfigWriteTargets, resolveOpenCodeConfigSource, resolveVvocConfigSource, } from "./config-layers.js";
|
|
90
|
+
import { resolveConfigWriteTargets, resolveOpenCodeConfigSource, resolveOpenCodeTuiConfigSource, resolveVvocConfigSource, } from "./config-layers.js";
|
|
86
91
|
import { getConfigHome, getGlobalOpencodeSkillsDir, getGlobalVvocDir, getVvocAgentsDir, getVvocSkillsDir, } from "./vvoc-paths.js";
|
|
87
92
|
export const CLI_NAME = "vvoc";
|
|
88
93
|
export { PACKAGE_NAME };
|
|
89
94
|
export const OPENCODE_SCHEMA_URL = "https://opencode.ai/config.json";
|
|
95
|
+
export const OPENCODE_TUI_SCHEMA_URL = "https://opencode.ai/tui.json";
|
|
96
|
+
export const TUI_PACKAGE_SPECIFIER = `${PACKAGE_NAME}/tui`;
|
|
90
97
|
const MANAGED_MARKER = "Managed by vvoc";
|
|
91
98
|
const OPENCODE_CONFIG_FILE_NAMES = ["opencode.json", "opencode.jsonc"];
|
|
99
|
+
const OPENCODE_TUI_CONFIG_FILE_NAMES = ["tui.json", "tui.jsonc"];
|
|
92
100
|
const MANAGED_DEFAULT_AGENT = "vv-controller";
|
|
93
101
|
const JSON_FORMAT = {
|
|
94
102
|
insertSpaces: true,
|
|
@@ -113,6 +121,8 @@ export async function resolvePaths(options) {
|
|
|
113
121
|
managedSkillsDirPath,
|
|
114
122
|
opencodeConfigPath: targets.opencodeConfigPath,
|
|
115
123
|
opencodeAlternatePaths: await resolveOpenCodeAlternates(targets.opencodeBaseDir, targets.opencodeConfigPath),
|
|
124
|
+
opencodeTuiConfigPath: targets.opencodeTuiConfigPath,
|
|
125
|
+
opencodeTuiAlternatePaths: await resolveConfigAlternates(targets.opencodeBaseDir, targets.opencodeTuiConfigPath, OPENCODE_TUI_CONFIG_FILE_NAMES),
|
|
116
126
|
};
|
|
117
127
|
}
|
|
118
128
|
// END_BLOCK_RESOLVE_CONFIG_PATHS
|
|
@@ -142,6 +152,44 @@ export function ensurePackageConfigText(text, packageSpecifier = PACKAGE_NAME) {
|
|
|
142
152
|
return ensureTrailingNewline(applyEdits(nextText, format(nextText, undefined, JSON_FORMAT)));
|
|
143
153
|
}
|
|
144
154
|
// END_BLOCK_ENSURE_OPENCODE_PLUGIN_CONFIG
|
|
155
|
+
// START_BLOCK_ENSURE_TUI_PLUGIN_CONFIG
|
|
156
|
+
export function ensureTuiPackageConfigText(text, packageSpecifier = TUI_PACKAGE_SPECIFIER) {
|
|
157
|
+
if (!text?.trim()) {
|
|
158
|
+
return renderJson({
|
|
159
|
+
$schema: OPENCODE_TUI_SCHEMA_URL,
|
|
160
|
+
plugin: [packageSpecifier],
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
const document = parseObjectDocument(text, "OpenCode TUI config");
|
|
164
|
+
const currentPlugins = readTuiPluginList(document, "OpenCode TUI config");
|
|
165
|
+
let nextText = text;
|
|
166
|
+
if (!Object.hasOwn(document, "$schema")) {
|
|
167
|
+
nextText = applyEdits(nextText, modify(nextText, ["$schema"], OPENCODE_TUI_SCHEMA_URL, {
|
|
168
|
+
formattingOptions: JSON_FORMAT,
|
|
169
|
+
getInsertionIndex: () => 0,
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
const nextPlugins = normalizeTuiPluginList(currentPlugins, packageSpecifier);
|
|
173
|
+
if (JSON.stringify(nextPlugins) !== JSON.stringify(currentPlugins)) {
|
|
174
|
+
nextText = applyEdits(nextText, modify(nextText, ["plugin"], nextPlugins, {
|
|
175
|
+
formattingOptions: JSON_FORMAT,
|
|
176
|
+
}));
|
|
177
|
+
}
|
|
178
|
+
return ensureTrailingNewline(applyEdits(nextText, format(nextText, undefined, JSON_FORMAT)));
|
|
179
|
+
}
|
|
180
|
+
export async function ensureTuiPackageInstalled(paths) {
|
|
181
|
+
const currentText = await readOptionalText(paths.opencodeTuiConfigPath);
|
|
182
|
+
const nextText = ensureTuiPackageConfigText(currentText);
|
|
183
|
+
if ((currentText ?? "") === nextText) {
|
|
184
|
+
return { action: "kept", path: paths.opencodeTuiConfigPath };
|
|
185
|
+
}
|
|
186
|
+
await writeText(paths.opencodeTuiConfigPath, nextText);
|
|
187
|
+
return {
|
|
188
|
+
action: currentText ? "updated" : "created",
|
|
189
|
+
path: paths.opencodeTuiConfigPath,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
// END_BLOCK_ENSURE_TUI_PLUGIN_CONFIG
|
|
145
193
|
// START_BLOCK_ENSURE_MANAGED_AGENT_CONFIG
|
|
146
194
|
export function ensureManagedAgentRegistrationsConfigText(text, paths) {
|
|
147
195
|
const builtInRoleBindings = getBuiltInRoleBindings();
|
|
@@ -585,6 +633,9 @@ export async function inspectInstallation(paths) {
|
|
|
585
633
|
if (paths.opencodeAlternatePaths.length > 0) {
|
|
586
634
|
warnings.push(`multiple OpenCode config files exist: ${[paths.opencodeConfigPath, ...paths.opencodeAlternatePaths].join(", ")}`);
|
|
587
635
|
}
|
|
636
|
+
if (paths.opencodeTuiAlternatePaths.length > 0) {
|
|
637
|
+
warnings.push(`multiple OpenCode TUI config files exist: ${[paths.opencodeTuiConfigPath, ...paths.opencodeTuiAlternatePaths].join(", ")}`);
|
|
638
|
+
}
|
|
588
639
|
const opencodeText = await readOptionalText(paths.opencodeConfigPath);
|
|
589
640
|
let opencodeParseError;
|
|
590
641
|
let plugins = [];
|
|
@@ -600,6 +651,21 @@ export async function inspectInstallation(paths) {
|
|
|
600
651
|
problems.push(opencodeParseError);
|
|
601
652
|
}
|
|
602
653
|
}
|
|
654
|
+
const tuiText = await readOptionalText(paths.opencodeTuiConfigPath);
|
|
655
|
+
let tuiParseError;
|
|
656
|
+
let tuiPlugins = [];
|
|
657
|
+
let tuiPluginConfigured = false;
|
|
658
|
+
if (tuiText) {
|
|
659
|
+
try {
|
|
660
|
+
const document = parseObjectDocument(tuiText, paths.opencodeTuiConfigPath);
|
|
661
|
+
tuiPlugins = readTuiPluginList(document, paths.opencodeTuiConfigPath);
|
|
662
|
+
tuiPluginConfigured = tuiPlugins.some((entry) => isTuiPackageSpecifier(readTuiPluginName(entry)));
|
|
663
|
+
}
|
|
664
|
+
catch (error) {
|
|
665
|
+
tuiParseError = error instanceof Error ? error.message : String(error);
|
|
666
|
+
problems.push(tuiParseError);
|
|
667
|
+
}
|
|
668
|
+
}
|
|
603
669
|
const vvocText = await readOptionalText(paths.vvocConfigPath);
|
|
604
670
|
let vvocParseError;
|
|
605
671
|
let vvocConfig;
|
|
@@ -628,6 +694,9 @@ export async function inspectInstallation(paths) {
|
|
|
628
694
|
if (!pluginConfigured) {
|
|
629
695
|
problems.push(`${PACKAGE_NAME} is not configured in ${paths.opencodeConfigPath}`);
|
|
630
696
|
}
|
|
697
|
+
if (!tuiPluginConfigured) {
|
|
698
|
+
problems.push(`${TUI_PACKAGE_SPECIFIER} is not configured in ${paths.opencodeTuiConfigPath}`);
|
|
699
|
+
}
|
|
631
700
|
if (!vvocText) {
|
|
632
701
|
problems.push(`vvoc config is missing at ${paths.vvocConfigPath}`);
|
|
633
702
|
}
|
|
@@ -641,6 +710,14 @@ export async function inspectInstallation(paths) {
|
|
|
641
710
|
pluginConfigured,
|
|
642
711
|
plugins,
|
|
643
712
|
},
|
|
713
|
+
tui: {
|
|
714
|
+
path: paths.opencodeTuiConfigPath,
|
|
715
|
+
exists: Boolean(tuiText),
|
|
716
|
+
alternates: paths.opencodeTuiAlternatePaths,
|
|
717
|
+
parseError: tuiParseError,
|
|
718
|
+
pluginConfigured: tuiPluginConfigured,
|
|
719
|
+
plugins: tuiPlugins,
|
|
720
|
+
},
|
|
644
721
|
vvoc: {
|
|
645
722
|
path: paths.vvocConfigPath,
|
|
646
723
|
exists: Boolean(vvocText),
|
|
@@ -666,12 +743,17 @@ export async function inspectInstallation(paths) {
|
|
|
666
743
|
};
|
|
667
744
|
}
|
|
668
745
|
export async function inspectInstallationForScope(options) {
|
|
669
|
-
const [opencodeSource, vvocSource] = await Promise.all([
|
|
746
|
+
const [opencodeSource, opencodeTuiSource, vvocSource] = await Promise.all([
|
|
670
747
|
resolveOpenCodeConfigSource({
|
|
671
748
|
scope: options.scope,
|
|
672
749
|
cwd: options.cwd,
|
|
673
750
|
configDir: options.configDir,
|
|
674
751
|
}),
|
|
752
|
+
resolveOpenCodeTuiConfigSource({
|
|
753
|
+
scope: options.scope,
|
|
754
|
+
cwd: options.cwd,
|
|
755
|
+
configDir: options.configDir,
|
|
756
|
+
}),
|
|
675
757
|
resolveVvocConfigSource({
|
|
676
758
|
scope: options.scope,
|
|
677
759
|
cwd: options.cwd,
|
|
@@ -691,14 +773,17 @@ export async function inspectInstallationForScope(options) {
|
|
|
691
773
|
configDir: options.configDir,
|
|
692
774
|
});
|
|
693
775
|
const opencodeConfigPath = opencodeSource.path ?? fallbackPaths.opencodeConfigPath;
|
|
776
|
+
const opencodeTuiConfigPath = opencodeTuiSource.path ?? fallbackPaths.opencodeTuiConfigPath;
|
|
694
777
|
const vvocConfigPath = vvocSource.path ?? fallbackPaths.vvocConfigPath;
|
|
695
778
|
const scopedPaths = {
|
|
696
779
|
...fallbackPaths,
|
|
697
780
|
opencodeBaseDir: dirname(opencodeConfigPath),
|
|
698
781
|
vvocBaseDir: dirname(vvocConfigPath),
|
|
699
782
|
opencodeConfigPath,
|
|
783
|
+
opencodeTuiConfigPath,
|
|
700
784
|
vvocConfigPath,
|
|
701
785
|
opencodeAlternatePaths: [],
|
|
786
|
+
opencodeTuiAlternatePaths: [],
|
|
702
787
|
managedAgentsDirPath: getVvocAgentsDir(dirname(vvocConfigPath)),
|
|
703
788
|
managedSkillsDirPath: getVvocSkillsDir(dirname(vvocConfigPath)),
|
|
704
789
|
};
|
|
@@ -713,6 +798,7 @@ export async function inspectInstallationForScope(options) {
|
|
|
713
798
|
},
|
|
714
799
|
scope: options.scope,
|
|
715
800
|
opencodeSource,
|
|
801
|
+
opencodeTuiSource,
|
|
716
802
|
vvocSource,
|
|
717
803
|
};
|
|
718
804
|
}
|
|
@@ -760,6 +846,26 @@ function readPluginList(document, label) {
|
|
|
760
846
|
}
|
|
761
847
|
return raw.slice();
|
|
762
848
|
}
|
|
849
|
+
function readTuiPluginList(document, label) {
|
|
850
|
+
const raw = document.plugin;
|
|
851
|
+
if (raw === undefined)
|
|
852
|
+
return [];
|
|
853
|
+
if (!Array.isArray(raw)) {
|
|
854
|
+
throw new Error(`${label}: expected "plugin" to be an array`);
|
|
855
|
+
}
|
|
856
|
+
return raw.map((entry, index) => {
|
|
857
|
+
if (typeof entry === "string") {
|
|
858
|
+
return entry;
|
|
859
|
+
}
|
|
860
|
+
if (Array.isArray(entry) &&
|
|
861
|
+
entry.length === 2 &&
|
|
862
|
+
typeof entry[0] === "string" &&
|
|
863
|
+
isJsonObject(entry[1])) {
|
|
864
|
+
return [entry[0], entry[1]];
|
|
865
|
+
}
|
|
866
|
+
throw new Error(`${label}: expected "plugin[${index}]" to be a string or [string, options] tuple`);
|
|
867
|
+
});
|
|
868
|
+
}
|
|
763
869
|
function readStringArray(value, label) {
|
|
764
870
|
if (!Array.isArray(value) || value.some((entry) => typeof entry !== "string")) {
|
|
765
871
|
throw new Error(`${label}: expected an array of strings`);
|
|
@@ -791,9 +897,35 @@ function normalizePluginList(currentPlugins, packageSpecifier) {
|
|
|
791
897
|
}
|
|
792
898
|
return nextPlugins;
|
|
793
899
|
}
|
|
900
|
+
function normalizeTuiPluginList(currentPlugins, packageSpecifier) {
|
|
901
|
+
const nextPlugins = [];
|
|
902
|
+
let insertedPackage = false;
|
|
903
|
+
for (const entry of currentPlugins) {
|
|
904
|
+
if (!isTuiPackageSpecifier(readTuiPluginName(entry))) {
|
|
905
|
+
nextPlugins.push(entry);
|
|
906
|
+
continue;
|
|
907
|
+
}
|
|
908
|
+
if (insertedPackage) {
|
|
909
|
+
continue;
|
|
910
|
+
}
|
|
911
|
+
nextPlugins.push(typeof entry === "string" ? packageSpecifier : [packageSpecifier, entry[1]]);
|
|
912
|
+
insertedPackage = true;
|
|
913
|
+
}
|
|
914
|
+
if (!insertedPackage) {
|
|
915
|
+
nextPlugins.push(packageSpecifier);
|
|
916
|
+
}
|
|
917
|
+
return nextPlugins;
|
|
918
|
+
}
|
|
794
919
|
function isPackagePluginSpecifier(value) {
|
|
795
920
|
return value === PACKAGE_NAME || value.startsWith(`${PACKAGE_NAME}@`);
|
|
796
921
|
}
|
|
922
|
+
function readTuiPluginName(entry) {
|
|
923
|
+
return typeof entry === "string" ? entry : entry[0];
|
|
924
|
+
}
|
|
925
|
+
function isTuiPackageSpecifier(value) {
|
|
926
|
+
return (value === TUI_PACKAGE_SPECIFIER ||
|
|
927
|
+
(value.startsWith(`${PACKAGE_NAME}@`) && value.endsWith("/tui")));
|
|
928
|
+
}
|
|
797
929
|
// START_BLOCK_MANAGED_AGENT_HELPERS
|
|
798
930
|
function readAgentMap(document, label) {
|
|
799
931
|
const raw = document.agent;
|
|
@@ -1146,8 +1278,11 @@ async function writeText(path, text) {
|
|
|
1146
1278
|
await writeFile(path, text, "utf8");
|
|
1147
1279
|
}
|
|
1148
1280
|
async function resolveOpenCodeAlternates(opencodeBaseDir, selectedPath) {
|
|
1281
|
+
return resolveConfigAlternates(opencodeBaseDir, selectedPath, OPENCODE_CONFIG_FILE_NAMES);
|
|
1282
|
+
}
|
|
1283
|
+
async function resolveConfigAlternates(baseDir, selectedPath, fileNames) {
|
|
1149
1284
|
const alternates = [];
|
|
1150
|
-
for (const candidate of
|
|
1285
|
+
for (const candidate of fileNames.map((name) => join(baseDir, name))) {
|
|
1151
1286
|
if (candidate !== selectedPath && (await readOptionalText(candidate)) !== undefined) {
|
|
1152
1287
|
alternates.push(candidate);
|
|
1153
1288
|
}
|