@osovv/vv-opencode 0.4.1 → 0.5.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/README.md +21 -0
- package/dist/cli.js +13 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/agent.js +44 -0
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/completion.d.ts +11 -0
- package/dist/commands/completion.js +117 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/config-validate.d.ts +36 -0
- package/dist/commands/config-validate.js +298 -0
- package/dist/commands/config-validate.js.map +1 -0
- package/dist/commands/config.d.ts +2 -0
- package/dist/commands/config.js +30 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/init.d.ts +29 -0
- package/dist/commands/init.js +134 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/plugin-list.d.ts +27 -0
- package/dist/commands/plugin-list.js +123 -0
- package/dist/commands/plugin-list.js.map +1 -0
- package/dist/commands/plugin.d.ts +2 -0
- package/dist/commands/plugin.js +30 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/upgrade.d.ts +5 -0
- package/dist/commands/upgrade.js +125 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -303,3 +303,24 @@ npm publish
|
|
|
303
303
|
- `src/` is the source of truth
|
|
304
304
|
- `dist/` is generated output for packaging and local smoke tests
|
|
305
305
|
- if you change CLI behavior, plugin exports, vvoc config paths, or memory workflow, keep this README in sync
|
|
306
|
+
|
|
307
|
+
## Highly Recommended Addons
|
|
308
|
+
|
|
309
|
+
### RTK — LLM Token Optimizer
|
|
310
|
+
|
|
311
|
+
[RTK](https://github.com/rtk-ai/rtk) is a CLI proxy that reduces LLM token consumption by 60-90% on common dev commands like `git`, `ls`, `cat`, `rg`, `grep`, `pytest`, `cargo test`, and 100+ more. Single Rust binary, zero dependencies.
|
|
312
|
+
|
|
313
|
+
**Why use it with vvoc:**
|
|
314
|
+
- Transparent command rewriting — no workflow changes needed
|
|
315
|
+
- Works alongside vvoc's Guardian and Memory plugins
|
|
316
|
+
- Minimal overhead (<10ms)
|
|
317
|
+
|
|
318
|
+
**Quick install:**
|
|
319
|
+
```bash
|
|
320
|
+
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
|
|
321
|
+
rtk init -g --opencode
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
After install, commands like `git status` and `cargo test` are automatically rewritten to their RTK equivalents, producing compact output that costs 60-90% fewer tokens.
|
|
325
|
+
|
|
326
|
+
For more commands and details, see the [RTK documentation](https://github.com/rtk-ai/rtk).
|
package/dist/cli.js
CHANGED
|
@@ -20,11 +20,16 @@
|
|
|
20
20
|
// END_CHANGE_SUMMARY
|
|
21
21
|
import { defineCommand, runMain } from "citty";
|
|
22
22
|
import agent from "./commands/agent.js";
|
|
23
|
+
import completion from "./commands/completion.js";
|
|
24
|
+
import config from "./commands/config.js";
|
|
23
25
|
import doctor from "./commands/doctor.js";
|
|
24
26
|
import guardian from "./commands/guardian.js";
|
|
27
|
+
import init from "./commands/init.js";
|
|
25
28
|
import install from "./commands/install.js";
|
|
29
|
+
import plugin from "./commands/plugin.js";
|
|
26
30
|
import status from "./commands/status.js";
|
|
27
31
|
import sync from "./commands/sync.js";
|
|
32
|
+
import upgrade from "./commands/upgrade.js";
|
|
28
33
|
import version from "./commands/version.js";
|
|
29
34
|
import { getPackageVersion } from "./lib/package.js";
|
|
30
35
|
// START_BLOCK_BUILD_CLI_METADATA
|
|
@@ -37,11 +42,16 @@ const main = defineCommand({
|
|
|
37
42
|
},
|
|
38
43
|
subCommands: {
|
|
39
44
|
agent,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
status,
|
|
45
|
+
completion,
|
|
46
|
+
config,
|
|
43
47
|
doctor,
|
|
44
48
|
guardian,
|
|
49
|
+
init,
|
|
50
|
+
install,
|
|
51
|
+
plugin,
|
|
52
|
+
status,
|
|
53
|
+
sync,
|
|
54
|
+
upgrade,
|
|
45
55
|
version,
|
|
46
56
|
},
|
|
47
57
|
});
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,mBAAmB;AACnB,iBAAiB;AACjB,wBAAwB;AACxB,uDAAuD;AACvD,+FAA+F;AAC/F,2LAA2L;AAC3L,4BAA4B;AAC5B,iBAAiB;AACjB,qBAAqB;AACrB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,oEAAoE;AACpE,wCAAwC;AACxC,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,wHAAwH;AACxH,qBAAqB;AAErB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,iCAAiC;AACjC,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;AAEjD,MAAM,IAAI,GAAG,aAAa,CAAC;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,cAAc;QACvB,WAAW,EAAE,oDAAoD;KAClE;IACD,WAAW,EAAE;QACX,KAAK;QACL,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,mBAAmB;AACnB,iBAAiB;AACjB,wBAAwB;AACxB,uDAAuD;AACvD,+FAA+F;AAC/F,2LAA2L;AAC3L,4BAA4B;AAC5B,iBAAiB;AACjB,qBAAqB;AACrB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,oEAAoE;AACpE,wCAAwC;AACxC,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,wHAAwH;AACxH,qBAAqB;AAErB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,iCAAiC;AACjC,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;AAEjD,MAAM,IAAI,GAAG,aAAa,CAAC;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,cAAc;QACvB,WAAW,EAAE,oDAAoD;KAClE;IACD,WAAW,EAAE;QACX,KAAK;QACL,UAAU;QACV,MAAM;QACN,MAAM;QACN,QAAQ;QACR,IAAI;QACJ,OAAO;QACP,MAAM;QACN,MAAM;QACN,IAAI;QACJ,OAAO;QACP,OAAO;KACR;CACF,CAAC,CAAC;AACH,+BAA+B;AAE/B,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/commands/agent.js
CHANGED
|
@@ -218,6 +218,44 @@ const memoryReviewerCmd = defineCommand({
|
|
|
218
218
|
unset: memoryReviewerUnset,
|
|
219
219
|
},
|
|
220
220
|
});
|
|
221
|
+
const agentList = defineCommand({
|
|
222
|
+
meta: {
|
|
223
|
+
name: "list",
|
|
224
|
+
description: "List configured agent models.",
|
|
225
|
+
},
|
|
226
|
+
args: {
|
|
227
|
+
scope: {
|
|
228
|
+
type: "enum",
|
|
229
|
+
options: ["global", "project"],
|
|
230
|
+
default: "global",
|
|
231
|
+
description: "Show global or project config.",
|
|
232
|
+
},
|
|
233
|
+
"config-dir": {
|
|
234
|
+
type: "string",
|
|
235
|
+
description: "Override the global config home.",
|
|
236
|
+
},
|
|
237
|
+
},
|
|
238
|
+
async run({ args }) {
|
|
239
|
+
const scope = args.scope === "project" ? "project" : "global";
|
|
240
|
+
const configDir = typeof args["config-dir"] === "string" ? args["config-dir"] : undefined;
|
|
241
|
+
const paths = await resolvePaths({ scope: scope, cwd: process.cwd(), configDir });
|
|
242
|
+
const guardianText = await Bun.file(paths.guardianConfigPath)
|
|
243
|
+
.text()
|
|
244
|
+
.catch(() => "");
|
|
245
|
+
const memoryText = await Bun.file(paths.memoryConfigPath)
|
|
246
|
+
.text()
|
|
247
|
+
.catch(() => "");
|
|
248
|
+
const guardianConfig = guardianText
|
|
249
|
+
? parseGuardianConfigText(guardianText, paths.guardianConfigPath)
|
|
250
|
+
: {};
|
|
251
|
+
const memoryConfig = memoryText
|
|
252
|
+
? parseMemoryConfigText(memoryText, paths.memoryConfigPath)
|
|
253
|
+
: {};
|
|
254
|
+
console.log(`Agent models (${scope}):`);
|
|
255
|
+
console.log(` guardian: ${formatAgentModel(guardianConfig.model, guardianConfig.variant)}`);
|
|
256
|
+
console.log(` memory-reviewer: ${formatAgentModel(memoryConfig.reviewerModel, memoryConfig.reviewerVariant)}`);
|
|
257
|
+
},
|
|
258
|
+
});
|
|
221
259
|
export default defineCommand({
|
|
222
260
|
meta: {
|
|
223
261
|
name: "agent",
|
|
@@ -226,8 +264,14 @@ export default defineCommand({
|
|
|
226
264
|
subCommands: {
|
|
227
265
|
guardian: guardianCmd,
|
|
228
266
|
"memory-reviewer": memoryReviewerCmd,
|
|
267
|
+
list: agentList,
|
|
229
268
|
},
|
|
230
269
|
});
|
|
270
|
+
function formatAgentModel(model, variant) {
|
|
271
|
+
if (!model)
|
|
272
|
+
return "default";
|
|
273
|
+
return variant ? `${model}:${variant}` : model;
|
|
274
|
+
}
|
|
231
275
|
function parseModelArg(value, operation) {
|
|
232
276
|
if (typeof value !== "string" || !value.trim()) {
|
|
233
277
|
throw new Error(`model argument required for ${operation}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare const _default: import("citty").CommandDef<{
|
|
2
|
+
readonly shell: {
|
|
3
|
+
readonly type: "positional";
|
|
4
|
+
readonly required: true;
|
|
5
|
+
readonly description: "Shell type: bash, zsh, or fish.";
|
|
6
|
+
};
|
|
7
|
+
}>;
|
|
8
|
+
export default _default;
|
|
9
|
+
export declare function generateBashCompletion(): string;
|
|
10
|
+
export declare function generateZshCompletion(): string;
|
|
11
|
+
export declare function generateFishCompletion(): string;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// FILE: src/commands/completion.ts
|
|
2
|
+
// VERSION: 0.4.0
|
|
3
|
+
// START_MODULE_CONTRACT
|
|
4
|
+
// PURPOSE: Generate and print shell completion scripts for bash, zsh, and fish.
|
|
5
|
+
// SCOPE: Shell type argument validation, completion script generation, and stdout output.
|
|
6
|
+
// DEPENDS: [citty]
|
|
7
|
+
// LINKS: [M-CLI-COMPLETION, M-CLI-COMMANDS]
|
|
8
|
+
// ROLE: RUNTIME
|
|
9
|
+
// MAP_MODE: EXPORTS
|
|
10
|
+
// END_MODULE_CONTRACT
|
|
11
|
+
//
|
|
12
|
+
// START_MODULE_MAP
|
|
13
|
+
// default - Completion command definition for vvoc.
|
|
14
|
+
// generateBashCompletion - Generate bash completion script.
|
|
15
|
+
// generateZshCompletion - Generate zsh completion script.
|
|
16
|
+
// generateFishCompletion - Generate fish completion script.
|
|
17
|
+
// END_MODULE_MAP
|
|
18
|
+
//
|
|
19
|
+
// START_CHANGE_SUMMARY
|
|
20
|
+
// LAST_CHANGE: [v0.4.0 - Initial GRACE implementation for shell completion command.]
|
|
21
|
+
// END_CHANGE_SUMMARY
|
|
22
|
+
import { defineCommand } from "citty";
|
|
23
|
+
const VVOC_COMMANDS = [
|
|
24
|
+
"agent",
|
|
25
|
+
"config",
|
|
26
|
+
"doctor",
|
|
27
|
+
"guardian",
|
|
28
|
+
"install",
|
|
29
|
+
"plugin",
|
|
30
|
+
"status",
|
|
31
|
+
"sync",
|
|
32
|
+
"upgrade",
|
|
33
|
+
"validate",
|
|
34
|
+
"version",
|
|
35
|
+
"list",
|
|
36
|
+
];
|
|
37
|
+
export default defineCommand({
|
|
38
|
+
meta: {
|
|
39
|
+
name: "completion",
|
|
40
|
+
description: "Generate shell completion scripts.",
|
|
41
|
+
},
|
|
42
|
+
args: {
|
|
43
|
+
shell: {
|
|
44
|
+
type: "positional",
|
|
45
|
+
required: true,
|
|
46
|
+
description: "Shell type: bash, zsh, or fish.",
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
async run({ args }) {
|
|
50
|
+
// START_BLOCK_RUN_COMPLETION
|
|
51
|
+
const shell = String(args.shell).toLowerCase();
|
|
52
|
+
switch (shell) {
|
|
53
|
+
case "bash":
|
|
54
|
+
process.stdout.write(generateBashCompletion());
|
|
55
|
+
break;
|
|
56
|
+
case "zsh":
|
|
57
|
+
process.stdout.write(generateZshCompletion());
|
|
58
|
+
break;
|
|
59
|
+
case "fish":
|
|
60
|
+
process.stdout.write(generateFishCompletion());
|
|
61
|
+
break;
|
|
62
|
+
default:
|
|
63
|
+
console.error("Unsupported shell: " + shell + ". Use bash, zsh, or fish.");
|
|
64
|
+
process.exitCode = 1;
|
|
65
|
+
}
|
|
66
|
+
// END_BLOCK_RUN_COMPLETION
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
export function generateBashCompletion() {
|
|
70
|
+
const cmds = VVOC_COMMANDS.join(" ");
|
|
71
|
+
return ("# bash completion for vvoc\n" +
|
|
72
|
+
"_vvoc() {\n" +
|
|
73
|
+
" local cur prev words cword\n" +
|
|
74
|
+
" _init_completion || return\n" +
|
|
75
|
+
"\n" +
|
|
76
|
+
' case "${words[0]}" in\n' +
|
|
77
|
+
" vvoc)\n" +
|
|
78
|
+
" _vvoc_commands\n" +
|
|
79
|
+
" ;;\n" +
|
|
80
|
+
" *)\n" +
|
|
81
|
+
" ;;\n" +
|
|
82
|
+
" esac\n" +
|
|
83
|
+
"}\n" +
|
|
84
|
+
"\n" +
|
|
85
|
+
"_vvoc_commands() {\n" +
|
|
86
|
+
' local commands="' +
|
|
87
|
+
cmds +
|
|
88
|
+
'"\n' +
|
|
89
|
+
' _completions=($(compgen -W "$commands" -- "$cur"))\n' +
|
|
90
|
+
' COMPREPLY=("${_completions[@]}")\n' +
|
|
91
|
+
"}\n" +
|
|
92
|
+
"\n" +
|
|
93
|
+
"complete -F _vvoc vvoc\n");
|
|
94
|
+
}
|
|
95
|
+
export function generateZshCompletion() {
|
|
96
|
+
const lines = [
|
|
97
|
+
"# zsh completion for vvoc",
|
|
98
|
+
"",
|
|
99
|
+
"_vvoc() {",
|
|
100
|
+
" local -a commands",
|
|
101
|
+
" commands=(",
|
|
102
|
+
];
|
|
103
|
+
for (const cmd of VVOC_COMMANDS) {
|
|
104
|
+
lines.push(' "' + cmd + '"');
|
|
105
|
+
}
|
|
106
|
+
lines.push(" )", "", " _arguments -C \\", ' "-s[shell type]" \\', ' "1: :(' + VVOC_COMMANDS.join(" ") + ')" \\', ' "*::arg:->args"', "", " case $line[1] in", " config)", " _vvoc_config_cmds", " ;;", " plugin)", " _vvoc_plugin_cmds", " ;;", " esac", "}", "", "_vvoc_config_cmds() {", " local -a config_commands", " config_commands=(validate)", ' _arguments "1: :(validate)"', "}", "", "_vvoc_plugin_cmds() {", " local -a plugin_commands", " plugin_commands=(list)", ' _arguments "1: :(list)"', "}", "", "compdef _vvoc vvoc");
|
|
107
|
+
return lines.join("\n") + "\n";
|
|
108
|
+
}
|
|
109
|
+
export function generateFishCompletion() {
|
|
110
|
+
const lines = ["# fish completion for vvoc", "", "function __vvoc_commands"];
|
|
111
|
+
for (const cmd of VVOC_COMMANDS) {
|
|
112
|
+
lines.push(" echo " + cmd);
|
|
113
|
+
}
|
|
114
|
+
lines.push("end", "", "function __vvoc_config_cmds", " echo validate", "end", "", "function __vvoc_plugin_cmds", " echo list", "end", "", 'complete -c vvoc -f -a "(__vvoc_commands)"', 'complete -c vvoc -n "__fish_seen_subcommand_from config" -f -a "(__vvoc_config_cmds)"', 'complete -c vvoc -n "__fish_seen_subcommand_from plugin" -f -a "(__vvoc_plugin_cmds)"');
|
|
115
|
+
return lines.join("\n") + "\n";
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type Scope } from "../lib/opencode.js";
|
|
2
|
+
type ConfigValidateResult = {
|
|
3
|
+
path: string;
|
|
4
|
+
valid: boolean;
|
|
5
|
+
errors: string[];
|
|
6
|
+
};
|
|
7
|
+
export type { ConfigValidateResult };
|
|
8
|
+
declare const _default: import("citty").CommandDef<{
|
|
9
|
+
readonly scope: {
|
|
10
|
+
readonly type: "enum";
|
|
11
|
+
readonly options: ["global", "project", "all"];
|
|
12
|
+
readonly default: "all";
|
|
13
|
+
readonly description: "Validate global, project, or all config files.";
|
|
14
|
+
};
|
|
15
|
+
readonly "config-dir": {
|
|
16
|
+
readonly type: "string";
|
|
17
|
+
readonly description: "Override the global config home used for vvoc/";
|
|
18
|
+
};
|
|
19
|
+
readonly "guardian-only": {
|
|
20
|
+
readonly type: "boolean";
|
|
21
|
+
readonly default: false;
|
|
22
|
+
readonly description: "Only validate guardian.jsonc.";
|
|
23
|
+
};
|
|
24
|
+
readonly "memory-only": {
|
|
25
|
+
readonly type: "boolean";
|
|
26
|
+
readonly default: false;
|
|
27
|
+
readonly description: "Only validate memory.jsonc.";
|
|
28
|
+
};
|
|
29
|
+
}>;
|
|
30
|
+
export default _default;
|
|
31
|
+
export declare function validateGuardianConfig(scope: Scope, cwd: string, configDir?: string): Promise<ConfigValidateResult>;
|
|
32
|
+
export declare function validateMemoryConfig(scope: Scope, cwd: string, configDir?: string): Promise<ConfigValidateResult>;
|
|
33
|
+
export declare function validateGuardianConfigContent(content: string, filePath: string): ConfigValidateResult;
|
|
34
|
+
export declare function validateGuardianConfigFile(filePath: string): ConfigValidateResult;
|
|
35
|
+
export declare function validateMemoryConfigContent(content: string, filePath: string): ConfigValidateResult;
|
|
36
|
+
export declare function validateMemoryConfigFile(filePath: string): ConfigValidateResult;
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
// FILE: src/commands/config-validate.ts
|
|
2
|
+
// VERSION: 0.4.0
|
|
3
|
+
// START_MODULE_CONTRACT
|
|
4
|
+
// PURPOSE: Validate guardian.jsonc and memory.jsonc configuration files with human-readable error reporting.
|
|
5
|
+
// SCOPE: Scope parsing, file discovery, JSONC parse error reporting, schema field validation, and pass/fail terminal output.
|
|
6
|
+
// DEPENDS: [citty, src/lib/opencode.js, src/lib/vvoc-paths.js]
|
|
7
|
+
// LINKS: [M-CLI-CONFIG-VALIDATE, M-CLI-CONFIG]
|
|
8
|
+
// ROLE: RUNTIME
|
|
9
|
+
// MAP_MODE: EXPORTS
|
|
10
|
+
// END_MODULE_CONTRACT
|
|
11
|
+
//
|
|
12
|
+
// START_MODULE_MAP
|
|
13
|
+
// default - ConfigValidate command definition for vvoc.
|
|
14
|
+
// validateGuardianConfig - Validate guardian.jsonc and report schema violations.
|
|
15
|
+
// validateMemoryConfig - Validate memory.jsonc and report schema violations.
|
|
16
|
+
// ConfigValidateResult - Outcome of a single config file validation.
|
|
17
|
+
// END_MODULE_MAP
|
|
18
|
+
//
|
|
19
|
+
// START_CHANGE_SUMMARY
|
|
20
|
+
// LAST_CHANGE: [v0.4.0 - Initial GRACE implementation for config validation commands.]
|
|
21
|
+
// END_CHANGE_SUMMARY
|
|
22
|
+
import { defineCommand } from "citty";
|
|
23
|
+
import { parse } from "jsonc-parser";
|
|
24
|
+
import { resolvePaths } from "../lib/opencode.js";
|
|
25
|
+
const GUARDIAN_REQUIRED_FIELDS = {
|
|
26
|
+
timeoutMs: "number",
|
|
27
|
+
approvalRiskThreshold: "number",
|
|
28
|
+
};
|
|
29
|
+
const GUARDIAN_OPTIONAL_FIELDS = {
|
|
30
|
+
model: "string",
|
|
31
|
+
variant: "string",
|
|
32
|
+
reviewToastDurationMs: "number",
|
|
33
|
+
};
|
|
34
|
+
const MEMORY_REQUIRED_FIELDS = {
|
|
35
|
+
enabled: "boolean",
|
|
36
|
+
};
|
|
37
|
+
const MEMORY_OPTIONAL_FIELDS = {
|
|
38
|
+
defaultSearchLimit: "number",
|
|
39
|
+
reviewerModel: "string",
|
|
40
|
+
reviewerVariant: "string",
|
|
41
|
+
};
|
|
42
|
+
export default defineCommand({
|
|
43
|
+
meta: {
|
|
44
|
+
name: "validate",
|
|
45
|
+
description: "Validate guardian.jsonc and memory.jsonc configuration files.",
|
|
46
|
+
},
|
|
47
|
+
args: {
|
|
48
|
+
scope: {
|
|
49
|
+
type: "enum",
|
|
50
|
+
options: ["global", "project", "all"],
|
|
51
|
+
default: "all",
|
|
52
|
+
description: "Validate global, project, or all config files.",
|
|
53
|
+
},
|
|
54
|
+
"config-dir": {
|
|
55
|
+
type: "string",
|
|
56
|
+
description: "Override the global config home used for vvoc/",
|
|
57
|
+
},
|
|
58
|
+
"guardian-only": {
|
|
59
|
+
type: "boolean",
|
|
60
|
+
default: false,
|
|
61
|
+
description: "Only validate guardian.jsonc.",
|
|
62
|
+
},
|
|
63
|
+
"memory-only": {
|
|
64
|
+
type: "boolean",
|
|
65
|
+
default: false,
|
|
66
|
+
description: "Only validate memory.jsonc.",
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
async run({ args }) {
|
|
70
|
+
// START_BLOCK_RUN_VALIDATE
|
|
71
|
+
const scope = args.scope === "project" ? "project" : args.scope === "global" ? "global" : undefined;
|
|
72
|
+
const configDir = typeof args["config-dir"] === "string" ? args["config-dir"] : undefined;
|
|
73
|
+
const guardianOnly = args["guardian-only"] === true;
|
|
74
|
+
const memoryOnly = args["memory-only"] === true;
|
|
75
|
+
const cwd = process.cwd();
|
|
76
|
+
let exitCode = 0;
|
|
77
|
+
if (!guardianOnly && !memoryOnly) {
|
|
78
|
+
if (scope !== undefined) {
|
|
79
|
+
const guardianResult = await validateGuardianConfig(scope, cwd, configDir);
|
|
80
|
+
printResult(guardianResult);
|
|
81
|
+
if (!guardianResult.valid)
|
|
82
|
+
exitCode = 1;
|
|
83
|
+
const memoryResult = await validateMemoryConfig(scope, cwd, configDir);
|
|
84
|
+
printResult(memoryResult);
|
|
85
|
+
if (!memoryResult.valid)
|
|
86
|
+
exitCode = 1;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
const globalGuardian = await validateGuardianConfig("global", cwd, configDir);
|
|
90
|
+
printResult(globalGuardian);
|
|
91
|
+
if (!globalGuardian.valid)
|
|
92
|
+
exitCode = 1;
|
|
93
|
+
const globalMemory = await validateMemoryConfig("global", cwd, configDir);
|
|
94
|
+
printResult(globalMemory);
|
|
95
|
+
if (!globalMemory.valid)
|
|
96
|
+
exitCode = 1;
|
|
97
|
+
const projectGuardian = await validateGuardianConfig("project", cwd, configDir);
|
|
98
|
+
printResult(projectGuardian);
|
|
99
|
+
if (!projectGuardian.valid)
|
|
100
|
+
exitCode = 1;
|
|
101
|
+
const projectMemory = await validateMemoryConfig("project", cwd, configDir);
|
|
102
|
+
printResult(projectMemory);
|
|
103
|
+
if (!projectMemory.valid)
|
|
104
|
+
exitCode = 1;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
if (!guardianOnly) {
|
|
109
|
+
if (scope !== undefined) {
|
|
110
|
+
const guardianResult = await validateGuardianConfig(scope, cwd, configDir);
|
|
111
|
+
printResult(guardianResult);
|
|
112
|
+
if (!guardianResult.valid)
|
|
113
|
+
exitCode = 1;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
const globalGuardian = await validateGuardianConfig("global", cwd, configDir);
|
|
117
|
+
printResult(globalGuardian);
|
|
118
|
+
if (!globalGuardian.valid)
|
|
119
|
+
exitCode = 1;
|
|
120
|
+
const projectGuardian = await validateGuardianConfig("project", cwd, configDir);
|
|
121
|
+
printResult(projectGuardian);
|
|
122
|
+
if (!projectGuardian.valid)
|
|
123
|
+
exitCode = 1;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (!memoryOnly) {
|
|
127
|
+
if (scope !== undefined) {
|
|
128
|
+
const memoryResult = await validateMemoryConfig(scope, cwd, configDir);
|
|
129
|
+
printResult(memoryResult);
|
|
130
|
+
if (!memoryResult.valid)
|
|
131
|
+
exitCode = 1;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
const globalMemory = await validateMemoryConfig("global", cwd, configDir);
|
|
135
|
+
printResult(globalMemory);
|
|
136
|
+
if (!globalMemory.valid)
|
|
137
|
+
exitCode = 1;
|
|
138
|
+
const projectMemory = await validateMemoryConfig("project", cwd, configDir);
|
|
139
|
+
printResult(projectMemory);
|
|
140
|
+
if (!projectMemory.valid)
|
|
141
|
+
exitCode = 1;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
process.exitCode = exitCode;
|
|
146
|
+
// END_BLOCK_RUN_VALIDATE
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
export async function validateGuardianConfig(scope, cwd, configDir) {
|
|
150
|
+
const paths = await resolvePaths({ scope, cwd, configDir });
|
|
151
|
+
return validateGuardianConfigFile(paths.guardianConfigPath);
|
|
152
|
+
}
|
|
153
|
+
export async function validateMemoryConfig(scope, cwd, configDir) {
|
|
154
|
+
const paths = await resolvePaths({ scope, cwd, configDir });
|
|
155
|
+
return validateMemoryConfigFile(paths.memoryConfigPath);
|
|
156
|
+
}
|
|
157
|
+
export function validateGuardianConfigContent(content, filePath) {
|
|
158
|
+
const errors = [];
|
|
159
|
+
const parseErrors = [];
|
|
160
|
+
const parsed = parse(content, parseErrors, {
|
|
161
|
+
allowEmptyContent: true,
|
|
162
|
+
allowTrailingComma: true,
|
|
163
|
+
disallowComments: false,
|
|
164
|
+
});
|
|
165
|
+
if (parseErrors.length > 0) {
|
|
166
|
+
for (const err of parseErrors) {
|
|
167
|
+
const lineCol = offsetToLineCol(content, err.offset);
|
|
168
|
+
errors.push(`${filePath}:${lineCol.line}:${lineCol.col} - invalid JSONC (${err.error})`);
|
|
169
|
+
}
|
|
170
|
+
return { path: filePath, valid: false, errors };
|
|
171
|
+
}
|
|
172
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
173
|
+
errors.push(`${filePath} - expected a top-level object`);
|
|
174
|
+
return { path: filePath, valid: false, errors };
|
|
175
|
+
}
|
|
176
|
+
for (const [field, expectedType] of Object.entries(GUARDIAN_REQUIRED_FIELDS)) {
|
|
177
|
+
if (!Object.hasOwn(parsed, field)) {
|
|
178
|
+
errors.push(`${filePath} - missing required field "${field}" (expected ${expectedType})`);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
const actual = typeof parsed[field];
|
|
182
|
+
if (actual !== expectedType) {
|
|
183
|
+
errors.push(`${filePath} - field "${field}" has type "${actual}" but expected "${expectedType}"`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
for (const [field, expectedType] of Object.entries(GUARDIAN_OPTIONAL_FIELDS)) {
|
|
188
|
+
if (Object.hasOwn(parsed, field)) {
|
|
189
|
+
const actual = typeof parsed[field];
|
|
190
|
+
if (actual !== expectedType) {
|
|
191
|
+
errors.push(`${filePath} - optional field "${field}" has type "${actual}" but expected "${expectedType}"`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (Object.hasOwn(parsed, "timeoutMs")) {
|
|
196
|
+
const val = parsed.timeoutMs;
|
|
197
|
+
if (typeof val === "number" && (val <= 0 || !Number.isFinite(val))) {
|
|
198
|
+
errors.push(`${filePath} - "timeoutMs" must be a positive number`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (Object.hasOwn(parsed, "approvalRiskThreshold")) {
|
|
202
|
+
const val = parsed.approvalRiskThreshold;
|
|
203
|
+
if (typeof val === "number" && (val < 0 || val > 100 || !Number.isFinite(val))) {
|
|
204
|
+
errors.push(`${filePath} - "approvalRiskThreshold" must be a number between 0 and 100`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (Object.hasOwn(parsed, "reviewToastDurationMs")) {
|
|
208
|
+
const val = parsed.reviewToastDurationMs;
|
|
209
|
+
if (typeof val === "number" && (val <= 0 || !Number.isFinite(val))) {
|
|
210
|
+
errors.push(`${filePath} - "reviewToastDurationMs" must be a positive number`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return { path: filePath, valid: errors.length === 0, errors };
|
|
214
|
+
}
|
|
215
|
+
export function validateGuardianConfigFile(filePath) {
|
|
216
|
+
return validateGuardianConfigContent(readFileOrEmpty(filePath), filePath);
|
|
217
|
+
}
|
|
218
|
+
export function validateMemoryConfigContent(content, filePath) {
|
|
219
|
+
const errors = [];
|
|
220
|
+
const parseErrors = [];
|
|
221
|
+
const parsed = parse(content, parseErrors, {
|
|
222
|
+
allowEmptyContent: true,
|
|
223
|
+
allowTrailingComma: true,
|
|
224
|
+
disallowComments: false,
|
|
225
|
+
});
|
|
226
|
+
if (parseErrors.length > 0) {
|
|
227
|
+
for (const err of parseErrors) {
|
|
228
|
+
const lineCol = offsetToLineCol(content, err.offset);
|
|
229
|
+
errors.push(`${filePath}:${lineCol.line}:${lineCol.col} - invalid JSONC (${err.error})`);
|
|
230
|
+
}
|
|
231
|
+
return { path: filePath, valid: false, errors };
|
|
232
|
+
}
|
|
233
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
234
|
+
errors.push(`${filePath} - expected a top-level object`);
|
|
235
|
+
return { path: filePath, valid: false, errors };
|
|
236
|
+
}
|
|
237
|
+
for (const [field, expectedType] of Object.entries(MEMORY_REQUIRED_FIELDS)) {
|
|
238
|
+
if (!Object.hasOwn(parsed, field)) {
|
|
239
|
+
errors.push(`${filePath} - missing required field "${field}" (expected ${expectedType})`);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
const actual = typeof parsed[field];
|
|
243
|
+
if (actual !== expectedType) {
|
|
244
|
+
errors.push(`${filePath} - field "${field}" has type "${actual}" but expected "${expectedType}"`);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
for (const [field, expectedType] of Object.entries(MEMORY_OPTIONAL_FIELDS)) {
|
|
249
|
+
if (Object.hasOwn(parsed, field)) {
|
|
250
|
+
const actual = typeof parsed[field];
|
|
251
|
+
if (actual !== expectedType) {
|
|
252
|
+
errors.push(`${filePath} - optional field "${field}" has type "${actual}" but expected "${expectedType}"`);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
if (Object.hasOwn(parsed, "defaultSearchLimit")) {
|
|
257
|
+
const val = parsed.defaultSearchLimit;
|
|
258
|
+
if (typeof val === "number" && (val <= 0 || !Number.isInteger(val))) {
|
|
259
|
+
errors.push(`${filePath} - "defaultSearchLimit" must be a positive integer`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return { path: filePath, valid: errors.length === 0, errors };
|
|
263
|
+
}
|
|
264
|
+
export function validateMemoryConfigFile(filePath) {
|
|
265
|
+
return validateMemoryConfigContent(readFileOrEmpty(filePath), filePath);
|
|
266
|
+
}
|
|
267
|
+
function printResult(result) {
|
|
268
|
+
if (result.valid) {
|
|
269
|
+
console.log(`${result.path}: OK`);
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
for (const error of result.errors) {
|
|
273
|
+
console.error(error);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
function readFileOrEmpty(path) {
|
|
278
|
+
try {
|
|
279
|
+
const { readFileSync } = require("node:fs");
|
|
280
|
+
return readFileSync(path, "utf8");
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
return "";
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
function offsetToLineCol(content, offset) {
|
|
287
|
+
const lines = content.split("\n");
|
|
288
|
+
let pos = 0;
|
|
289
|
+
for (let i = 0; i < lines.length; i++) {
|
|
290
|
+
const lineLen = lines[i].length + 1;
|
|
291
|
+
if (pos + lineLen > offset) {
|
|
292
|
+
return { line: i + 1, col: offset - pos + 1 };
|
|
293
|
+
}
|
|
294
|
+
pos += lineLen;
|
|
295
|
+
}
|
|
296
|
+
return { line: lines.length, col: 1 };
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=config-validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-validate.js","sourceRoot":"","sources":["../../src/commands/config-validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// FILE: src/commands/config.ts
|
|
2
|
+
// VERSION: 0.4.0
|
|
3
|
+
// START_MODULE_CONTRACT
|
|
4
|
+
// PURPOSE: Group config-related subcommands (validate) under the vvoc config parent command.
|
|
5
|
+
// SCOPE: Parent command definition and subcommand wiring.
|
|
6
|
+
// DEPENDS: [citty, src/commands/config-validate.js]
|
|
7
|
+
// LINKS: [M-CLI-CONFIG-VALIDATE, M-CLI-COMMANDS]
|
|
8
|
+
// ROLE: RUNTIME
|
|
9
|
+
// MAP_MODE: EXPORTS
|
|
10
|
+
// END_MODULE_CONTRACT
|
|
11
|
+
//
|
|
12
|
+
// START_MODULE_MAP
|
|
13
|
+
// default - Config parent command grouping config subcommands.
|
|
14
|
+
// END_MODULE_MAP
|
|
15
|
+
//
|
|
16
|
+
// START_CHANGE_SUMMARY
|
|
17
|
+
// LAST_CHANGE: [v0.4.0 - Initial GRACE implementation for config parent command.]
|
|
18
|
+
// END_CHANGE_SUMMARY
|
|
19
|
+
import { defineCommand } from "citty";
|
|
20
|
+
import validateCommand from "./config-validate.js";
|
|
21
|
+
export default defineCommand({
|
|
22
|
+
meta: {
|
|
23
|
+
name: "config",
|
|
24
|
+
description: "Config-related commands.",
|
|
25
|
+
},
|
|
26
|
+
subCommands: {
|
|
27
|
+
validate: validateCommand,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,iBAAiB;AACjB,wBAAwB;AACxB,+FAA+F;AAC/F,4DAA4D;AAC5D,sDAAsD;AACtD,mDAAmD;AACnD,kBAAkB;AAClB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,iEAAiE;AACjE,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,oFAAoF;AACpF,qBAAqB;AAErB,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAEnD,eAAe,aAAa,CAAC;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0BAA0B;KACxC;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,eAAe;KAC1B;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type Scope } from "../lib/opencode.js";
|
|
2
|
+
declare const _default: import("citty").CommandDef<{
|
|
3
|
+
readonly scope: {
|
|
4
|
+
readonly type: "enum";
|
|
5
|
+
readonly options: ["global", "project"];
|
|
6
|
+
readonly default: "global";
|
|
7
|
+
readonly description: "Initialize globally or per-project.";
|
|
8
|
+
};
|
|
9
|
+
readonly plugins: {
|
|
10
|
+
readonly type: "string";
|
|
11
|
+
readonly default: "@osovv/vv-opencode";
|
|
12
|
+
readonly description: "Comma-separated list of plugins to enable.";
|
|
13
|
+
};
|
|
14
|
+
readonly "non-interactive": {
|
|
15
|
+
readonly type: "boolean";
|
|
16
|
+
readonly default: false;
|
|
17
|
+
readonly description: "Skip interactive prompts and use defaults.";
|
|
18
|
+
};
|
|
19
|
+
readonly "config-dir": {
|
|
20
|
+
readonly type: "string";
|
|
21
|
+
readonly description: "Override the global config home.";
|
|
22
|
+
};
|
|
23
|
+
}>;
|
|
24
|
+
export default _default;
|
|
25
|
+
export declare function runInitNonInteractive(options: {
|
|
26
|
+
scope: Scope;
|
|
27
|
+
cwd: string;
|
|
28
|
+
configDir?: string;
|
|
29
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
// FILE: src/commands/init.ts
|
|
2
|
+
// VERSION: 0.4.0
|
|
3
|
+
// START_MODULE_CONTRACT
|
|
4
|
+
// PURPOSE: Interactive project initialization: registers @osovv/vv-opencode in OpenCode plugin array and scaffolds initial vvoc config files. Uses @clack/prompts for TTY prompts. Interactive mode is the default; --non-interactive flag enables batch mode.
|
|
5
|
+
// SCOPE: Scope selection, plugin registration, config file scaffolding, and idempotent re-run handling.
|
|
6
|
+
// DEPENDS: [citty, @clack/prompts, src/lib/opencode.js]
|
|
7
|
+
// LINKS: [M-CLI-INIT, M-CLI-CONFIG]
|
|
8
|
+
// ROLE: RUNTIME
|
|
9
|
+
// MAP_MODE: EXPORTS
|
|
10
|
+
// END_MODULE_CONTRACT
|
|
11
|
+
//
|
|
12
|
+
// START_MODULE_MAP
|
|
13
|
+
// default - Init command definition for vvoc.
|
|
14
|
+
// runInit - Run the initialization flow.
|
|
15
|
+
// END_MODULE_MAP
|
|
16
|
+
//
|
|
17
|
+
// START_CHANGE_SUMMARY
|
|
18
|
+
// LAST_CHANGE: [v0.4.0 - Initial GRACE implementation for init command.]
|
|
19
|
+
// END_CHANGE_SUMMARY
|
|
20
|
+
import { defineCommand } from "citty";
|
|
21
|
+
import * as p from "@clack/prompts";
|
|
22
|
+
import { ensurePackageInstalled, installGuardianConfig, installMemoryConfig, inspectInstallation, resolvePaths, } from "../lib/opencode.js";
|
|
23
|
+
export default defineCommand({
|
|
24
|
+
meta: {
|
|
25
|
+
name: "init",
|
|
26
|
+
description: "Initialize vvoc in a project or globally.",
|
|
27
|
+
},
|
|
28
|
+
args: {
|
|
29
|
+
scope: {
|
|
30
|
+
type: "enum",
|
|
31
|
+
options: ["global", "project"],
|
|
32
|
+
default: "global",
|
|
33
|
+
description: "Initialize globally or per-project.",
|
|
34
|
+
},
|
|
35
|
+
plugins: {
|
|
36
|
+
type: "string",
|
|
37
|
+
default: "@osovv/vv-opencode",
|
|
38
|
+
description: "Comma-separated list of plugins to enable.",
|
|
39
|
+
},
|
|
40
|
+
"non-interactive": {
|
|
41
|
+
type: "boolean",
|
|
42
|
+
default: false,
|
|
43
|
+
description: "Skip interactive prompts and use defaults.",
|
|
44
|
+
},
|
|
45
|
+
"config-dir": {
|
|
46
|
+
type: "string",
|
|
47
|
+
description: "Override the global config home.",
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
async run({ args }) {
|
|
51
|
+
// START_BLOCK_RUN_INIT
|
|
52
|
+
const nonInteractive = args["non-interactive"] === true;
|
|
53
|
+
const scope = (args.scope === "project" ? "project" : "global");
|
|
54
|
+
const configDir = typeof args["config-dir"] === "string" ? args["config-dir"] : undefined;
|
|
55
|
+
const cwd = process.cwd();
|
|
56
|
+
p.intro("Initializing vvoc");
|
|
57
|
+
try {
|
|
58
|
+
await runInit({ scope, cwd, configDir, nonInteractive });
|
|
59
|
+
p.outro("vvoc initialized successfully");
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
if (err instanceof Error && err.message === "ABORTED") {
|
|
63
|
+
p.cancel("Initialization cancelled");
|
|
64
|
+
process.exitCode = 130;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
p.cancel("Initialization failed: " + (err instanceof Error ? err.message : String(err)));
|
|
68
|
+
process.exitCode = 1;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// END_BLOCK_RUN_INIT
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
async function runInit(options) {
|
|
75
|
+
const { scope, cwd, configDir, nonInteractive } = options;
|
|
76
|
+
let selectedScope = scope;
|
|
77
|
+
if (!nonInteractive) {
|
|
78
|
+
const scopeAnswer = await p.select({
|
|
79
|
+
message: "Select installation scope:",
|
|
80
|
+
options: [
|
|
81
|
+
{ label: "Global (all projects)", value: "global" },
|
|
82
|
+
{ label: "Project (current directory only)", value: "project" },
|
|
83
|
+
],
|
|
84
|
+
initialValue: scope,
|
|
85
|
+
});
|
|
86
|
+
if (p.isCancel(scopeAnswer)) {
|
|
87
|
+
throw new Error("ABORTED");
|
|
88
|
+
}
|
|
89
|
+
selectedScope = scopeAnswer;
|
|
90
|
+
const reloadedPaths = await resolvePaths({ scope: selectedScope, cwd, configDir });
|
|
91
|
+
const inspection = await inspectInstallation(reloadedPaths);
|
|
92
|
+
if (inspection.opencode.pluginConfigured) {
|
|
93
|
+
const overwrite = await p.confirm({
|
|
94
|
+
message: `@osovv/vv-opencode is already configured. Overwrite?`,
|
|
95
|
+
initialValue: false,
|
|
96
|
+
});
|
|
97
|
+
if (p.isCancel(overwrite)) {
|
|
98
|
+
throw new Error("ABORTED");
|
|
99
|
+
}
|
|
100
|
+
if (!overwrite) {
|
|
101
|
+
p.cancel("Already configured. Run `vvoc sync` to update configs.");
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const finalPaths = await resolvePaths({ scope: selectedScope, cwd, configDir });
|
|
107
|
+
p.log.step("Registering plugin in OpenCode config...");
|
|
108
|
+
const pkgResult = await ensurePackageInstalled(finalPaths);
|
|
109
|
+
p.log.info(pkgResult.path + " - " + (pkgResult.changed ? "updated" : "already up to date"));
|
|
110
|
+
p.log.step("Scaffolding Guardian config...");
|
|
111
|
+
const guardianResult = await installGuardianConfig(finalPaths, { force: true });
|
|
112
|
+
p.log.info(guardianResult.path + " - " + guardianResult.action);
|
|
113
|
+
p.log.step("Scaffolding Memory config...");
|
|
114
|
+
const memoryResult = await installMemoryConfig(finalPaths, { force: true });
|
|
115
|
+
p.log.info(memoryResult.path + " - " + memoryResult.action);
|
|
116
|
+
p.outro(`vvoc initialized successfully
|
|
117
|
+
|
|
118
|
+
💡 Highly recommended: Install RTK for 60-90% token savings on git/test/lint commands
|
|
119
|
+
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
|
|
120
|
+
rtk init -g --opencode`);
|
|
121
|
+
}
|
|
122
|
+
export async function runInitNonInteractive(options) {
|
|
123
|
+
const { scope, cwd, configDir } = options;
|
|
124
|
+
const paths = await resolvePaths({ scope, cwd, configDir });
|
|
125
|
+
const inspection = await inspectInstallation(paths);
|
|
126
|
+
if (inspection.opencode.pluginConfigured) {
|
|
127
|
+
console.log("Already configured. Run `vvoc sync` to update configs.");
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
await ensurePackageInstalled(paths);
|
|
131
|
+
await installGuardianConfig(paths, { force: true });
|
|
132
|
+
await installMemoryConfig(paths, { force: true });
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type Scope } from "../lib/opencode.js";
|
|
2
|
+
export type PluginEntry = {
|
|
3
|
+
name: string;
|
|
4
|
+
source: string;
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
};
|
|
7
|
+
declare const _default: import("citty").CommandDef<{
|
|
8
|
+
readonly scope: {
|
|
9
|
+
readonly type: "enum";
|
|
10
|
+
readonly options: ["global", "project"];
|
|
11
|
+
readonly default: "global";
|
|
12
|
+
readonly description: "List plugins from global or project config.";
|
|
13
|
+
};
|
|
14
|
+
readonly "config-dir": {
|
|
15
|
+
readonly type: "string";
|
|
16
|
+
readonly description: "Override the global config home used for opencode/";
|
|
17
|
+
};
|
|
18
|
+
readonly verbose: {
|
|
19
|
+
readonly type: "boolean";
|
|
20
|
+
readonly default: false;
|
|
21
|
+
readonly description: "Show additional details including config path.";
|
|
22
|
+
};
|
|
23
|
+
}>;
|
|
24
|
+
export default _default;
|
|
25
|
+
export declare function listPlugins(scope: Scope, cwd: string, configDir?: string): Promise<PluginEntry[]>;
|
|
26
|
+
export declare function parsePluginSpecifier(specifier: string): PluginEntry;
|
|
27
|
+
export declare function renderPluginTable(plugins: PluginEntry[]): void;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// FILE: src/commands/plugin-list.ts
|
|
2
|
+
// VERSION: 0.4.0
|
|
3
|
+
// START_MODULE_CONTRACT
|
|
4
|
+
// PURPOSE: Display all installed OpenCode plugins with their status (enabled/disabled) and source paths.
|
|
5
|
+
// SCOPE: Scope parsing, plugin array inspection, table rendering, and graceful handling of missing config.
|
|
6
|
+
// DEPENDS: [citty, src/lib/opencode.js]
|
|
7
|
+
// LINKS: [M-CLI-PLUGIN-LIST, M-CLI-CONFIG]
|
|
8
|
+
// ROLE: RUNTIME
|
|
9
|
+
// MAP_MODE: EXPORTS
|
|
10
|
+
// END_MODULE_CONTRACT
|
|
11
|
+
//
|
|
12
|
+
// START_MODULE_MAP
|
|
13
|
+
// default - PluginList command definition for vvoc.
|
|
14
|
+
// listPlugins - Returns the list of plugins from OpenCode config.
|
|
15
|
+
// renderPluginTable - Renders a table of plugins with name, source, and enabled status.
|
|
16
|
+
// END_MODULE_MAP
|
|
17
|
+
//
|
|
18
|
+
// START_CHANGE_SUMMARY
|
|
19
|
+
// LAST_CHANGE: [v0.4.0 - Initial GRACE implementation for plugin list command.]
|
|
20
|
+
// END_CHANGE_SUMMARY
|
|
21
|
+
import { defineCommand } from "citty";
|
|
22
|
+
import { resolvePaths } from "../lib/opencode.js";
|
|
23
|
+
export default defineCommand({
|
|
24
|
+
meta: {
|
|
25
|
+
name: "list",
|
|
26
|
+
description: "List installed OpenCode plugins.",
|
|
27
|
+
},
|
|
28
|
+
args: {
|
|
29
|
+
scope: {
|
|
30
|
+
type: "enum",
|
|
31
|
+
options: ["global", "project"],
|
|
32
|
+
default: "global",
|
|
33
|
+
description: "List plugins from global or project config.",
|
|
34
|
+
},
|
|
35
|
+
"config-dir": {
|
|
36
|
+
type: "string",
|
|
37
|
+
description: "Override the global config home used for opencode/",
|
|
38
|
+
},
|
|
39
|
+
verbose: {
|
|
40
|
+
type: "boolean",
|
|
41
|
+
default: false,
|
|
42
|
+
description: "Show additional details including config path.",
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
async run({ args }) {
|
|
46
|
+
// START_BLOCK_RUN_PLUGIN_LIST
|
|
47
|
+
const scope = args.scope === "project" ? "project" : "global";
|
|
48
|
+
const configDir = typeof args["config-dir"] === "string" ? args["config-dir"] : undefined;
|
|
49
|
+
const verbose = args.verbose === true;
|
|
50
|
+
const cwd = process.cwd();
|
|
51
|
+
const paths = await resolvePaths({ scope, cwd, configDir });
|
|
52
|
+
const plugins = await listPlugins(scope, cwd, configDir);
|
|
53
|
+
if (verbose) {
|
|
54
|
+
console.log(`Scope: ${scope}`);
|
|
55
|
+
console.log(`OpenCode config: ${paths.opencodeConfigPath}`);
|
|
56
|
+
}
|
|
57
|
+
renderPluginTable(plugins);
|
|
58
|
+
// END_BLOCK_RUN_PLUGIN_LIST
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
export async function listPlugins(scope, cwd, configDir) {
|
|
62
|
+
const paths = await resolvePaths({ scope, cwd, configDir });
|
|
63
|
+
try {
|
|
64
|
+
const { readFileSync } = await import("node:fs");
|
|
65
|
+
const content = readFileSync(paths.opencodeConfigPath, "utf8");
|
|
66
|
+
const { parse } = await import("jsonc-parser");
|
|
67
|
+
const errors = [];
|
|
68
|
+
const parsed = parse(content, errors, { allowTrailingComma: true, disallowComments: false });
|
|
69
|
+
if (errors.length > 0 || typeof parsed !== "object" || parsed === null) {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
const obj = parsed;
|
|
73
|
+
const pluginField = obj.plugin;
|
|
74
|
+
if (!Array.isArray(pluginField)) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
return pluginField
|
|
78
|
+
.filter((entry) => typeof entry === "string")
|
|
79
|
+
.map((specifier) => parsePluginSpecifier(specifier));
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return [];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export function parsePluginSpecifier(specifier) {
|
|
86
|
+
const enabled = !specifier.startsWith("#");
|
|
87
|
+
const source = specifier.replace(/^#/, "").trim();
|
|
88
|
+
const lastSlash = source.lastIndexOf("/");
|
|
89
|
+
const versionIdx = lastSlash >= 0 ? source.indexOf("@", lastSlash + 1) : source.indexOf("@");
|
|
90
|
+
const nameSource = versionIdx > 0 ? source.slice(0, versionIdx) : source;
|
|
91
|
+
let name = nameSource;
|
|
92
|
+
if (nameSource.startsWith("@")) {
|
|
93
|
+
const parts = nameSource.split("/");
|
|
94
|
+
if (parts.length >= 2) {
|
|
95
|
+
name = `${parts[0]}/${parts[1]}`;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else if (nameSource.includes("/")) {
|
|
99
|
+
const idx = nameSource.lastIndexOf("/");
|
|
100
|
+
name = nameSource.slice(idx + 1);
|
|
101
|
+
}
|
|
102
|
+
return { name, source, enabled };
|
|
103
|
+
}
|
|
104
|
+
export function renderPluginTable(plugins) {
|
|
105
|
+
if (plugins.length === 0) {
|
|
106
|
+
console.log("No plugins configured.");
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const nameCol = "Name";
|
|
110
|
+
const sourceCol = "Source";
|
|
111
|
+
const statusCol = "Status";
|
|
112
|
+
const nameWidth = Math.max(nameCol.length, ...plugins.map((p) => p.name.length));
|
|
113
|
+
const sourceWidth = Math.max(sourceCol.length, ...plugins.map((p) => p.source.length));
|
|
114
|
+
const header = ` ${nameCol.padEnd(nameWidth)} ${sourceCol.padEnd(sourceWidth)} ${statusCol}`;
|
|
115
|
+
const separator = ` ${"-".repeat(nameWidth)} ${"-".repeat(sourceWidth)} ${"-".repeat(6)}`;
|
|
116
|
+
console.log(header);
|
|
117
|
+
console.log(separator);
|
|
118
|
+
for (const plugin of plugins) {
|
|
119
|
+
const status = plugin.enabled ? "enabled" : "disabled";
|
|
120
|
+
console.log(` ${plugin.name.padEnd(nameWidth)} ${plugin.source.padEnd(sourceWidth)} ${status}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=plugin-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-list.js","sourceRoot":"","sources":["../../src/commands/plugin-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// FILE: src/commands/plugin.ts
|
|
2
|
+
// VERSION: 0.4.0
|
|
3
|
+
// START_MODULE_CONTRACT
|
|
4
|
+
// PURPOSE: Group plugin-related subcommands (list) under the vvoc plugin parent command.
|
|
5
|
+
// SCOPE: Parent command definition and subcommand wiring.
|
|
6
|
+
// DEPENDS: [citty, src/commands/plugin-list.js]
|
|
7
|
+
// LINKS: [M-CLI-PLUGIN-LIST, M-CLI-COMMANDS]
|
|
8
|
+
// ROLE: RUNTIME
|
|
9
|
+
// MAP_MODE: EXPORTS
|
|
10
|
+
// END_MODULE_CONTRACT
|
|
11
|
+
//
|
|
12
|
+
// START_MODULE_MAP
|
|
13
|
+
// default - Plugin parent command grouping plugin subcommands.
|
|
14
|
+
// END_MODULE_MAP
|
|
15
|
+
//
|
|
16
|
+
// START_CHANGE_SUMMARY
|
|
17
|
+
// LAST_CHANGE: [v0.4.0 - Initial GRACE implementation for plugin parent command.]
|
|
18
|
+
// END_CHANGE_SUMMARY
|
|
19
|
+
import { defineCommand } from "citty";
|
|
20
|
+
import listCommand from "./plugin-list.js";
|
|
21
|
+
export default defineCommand({
|
|
22
|
+
meta: {
|
|
23
|
+
name: "plugin",
|
|
24
|
+
description: "Plugin management commands.",
|
|
25
|
+
},
|
|
26
|
+
subCommands: {
|
|
27
|
+
list: listCommand,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/commands/plugin.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,iBAAiB;AACjB,wBAAwB;AACxB,2FAA2F;AAC3F,4DAA4D;AAC5D,kDAAkD;AAClD,+CAA+C;AAC/C,kBAAkB;AAClB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,iEAAiE;AACjE,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,oFAAoF;AACpF,qBAAqB;AAErB,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAE3C,eAAe,aAAa,CAAC;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6BAA6B;KAC3C;IACD,WAAW,EAAE;QACX,IAAI,EAAE,WAAW;KAClB;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
declare const _default: import("citty").CommandDef<import("citty").ArgsDef>;
|
|
2
|
+
export default _default;
|
|
3
|
+
export declare function fetchLatestVersion(): Promise<string | null>;
|
|
4
|
+
export declare function fetchChangelog(_fromVersion: string, _toVersion: string): Promise<string | null>;
|
|
5
|
+
export declare function printUpgradeStatus(currentVersion: string, latestVersion: string): void;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
// FILE: src/commands/upgrade.ts
|
|
2
|
+
// VERSION: 0.4.0
|
|
3
|
+
// START_MODULE_CONTRACT
|
|
4
|
+
// PURPOSE: Check npm registry for the latest vvoc version and offer in-place upgrade with changelog.
|
|
5
|
+
// SCOPE: npm registry query, version comparison, changelog fetching, and user prompts.
|
|
6
|
+
// DEPENDS: [citty]
|
|
7
|
+
// LINKS: [M-CLI-UPGRADE]
|
|
8
|
+
// ROLE: RUNTIME
|
|
9
|
+
// MAP_MODE: EXPORTS
|
|
10
|
+
// END_MODULE_CONTRACT
|
|
11
|
+
//
|
|
12
|
+
// START_MODULE_MAP
|
|
13
|
+
// default - Upgrade command definition for vvoc.
|
|
14
|
+
// fetchLatestVersion - Query npm registry for latest version.
|
|
15
|
+
// fetchChangelog - Fetch changelog from npm registry.
|
|
16
|
+
// printUpgradeStatus - Print up-to-date or upgrade available message.
|
|
17
|
+
// END_MODULE_MAP
|
|
18
|
+
//
|
|
19
|
+
// START_CHANGE_SUMMARY
|
|
20
|
+
// LAST_CHANGE: [v0.4.0 - Initial GRACE implementation for upgrade command.]
|
|
21
|
+
// END_CHANGE_SUMMARY
|
|
22
|
+
import { defineCommand } from "citty";
|
|
23
|
+
const PACKAGE_NAME = "@osovv/vv-opencode";
|
|
24
|
+
const NPM_REGISTRY = "https://registry.npmjs.org";
|
|
25
|
+
export default defineCommand({
|
|
26
|
+
meta: {
|
|
27
|
+
name: "upgrade",
|
|
28
|
+
description: "Check for and perform upgrades.",
|
|
29
|
+
},
|
|
30
|
+
async run() {
|
|
31
|
+
// START_BLOCK_RUN_UPGRADE
|
|
32
|
+
try {
|
|
33
|
+
const latestVersion = await fetchLatestVersion();
|
|
34
|
+
const currentVersion = await getCurrentVersion();
|
|
35
|
+
if (!latestVersion) {
|
|
36
|
+
console.error("NETWORK_ERROR: Could not reach npm registry");
|
|
37
|
+
process.exitCode = 1;
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (latestVersion === currentVersion) {
|
|
41
|
+
console.log(`Already at latest version: ${currentVersion}`);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
console.log(`Current version: ${currentVersion}`);
|
|
45
|
+
console.log(`Latest version: ${latestVersion}`);
|
|
46
|
+
console.log("Upgrade available!");
|
|
47
|
+
const changelog = await fetchChangelog(currentVersion, latestVersion);
|
|
48
|
+
if (changelog) {
|
|
49
|
+
console.log("\n--- Changelog ---");
|
|
50
|
+
console.log(changelog);
|
|
51
|
+
}
|
|
52
|
+
console.log("\nTo upgrade, run:");
|
|
53
|
+
console.log(` npm install -g ${PACKAGE_NAME}@${latestVersion}`);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
if (err instanceof Error && err.message === "NETWORK_ERROR") {
|
|
57
|
+
console.error("NETWORK_ERROR: Could not reach npm registry");
|
|
58
|
+
process.exitCode = 1;
|
|
59
|
+
}
|
|
60
|
+
else if (err instanceof Error && err.message === "ALREADY_LATEST") {
|
|
61
|
+
console.log("Already at latest version");
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
console.error("Upgrade check failed:", err instanceof Error ? err.message : String(err));
|
|
65
|
+
process.exitCode = 1;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// END_BLOCK_RUN_UPGRADE
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
export async function fetchLatestVersion() {
|
|
72
|
+
try {
|
|
73
|
+
const url = `${NPM_REGISTRY}/${encodeURIComponent(PACKAGE_NAME)}/latest`;
|
|
74
|
+
const response = await fetch(url, {
|
|
75
|
+
method: "GET",
|
|
76
|
+
headers: { Accept: "application/json" },
|
|
77
|
+
});
|
|
78
|
+
if (!response.ok) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
const data = (await response.json());
|
|
82
|
+
return data.version ?? null;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export async function fetchChangelog(_fromVersion, _toVersion) {
|
|
89
|
+
try {
|
|
90
|
+
const url = `${NPM_REGISTRY}/${encodeURIComponent(PACKAGE_NAME)}`;
|
|
91
|
+
const response = await fetch(url, {
|
|
92
|
+
method: "GET",
|
|
93
|
+
headers: { Accept: "application/json" },
|
|
94
|
+
});
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
const data = (await response.json());
|
|
99
|
+
const latest = data["dist-tags"]?.latest;
|
|
100
|
+
if (!latest || !data.versions) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
const versionData = data.versions[latest];
|
|
104
|
+
return versionData?.description ?? null;
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
export function printUpgradeStatus(currentVersion, latestVersion) {
|
|
111
|
+
if (currentVersion === latestVersion) {
|
|
112
|
+
console.log(`Already at latest version: ${currentVersion}`);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
console.log(`Update available: ${currentVersion} -> ${latestVersion}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async function getCurrentVersion() {
|
|
119
|
+
const { readFileSync } = await import("node:fs");
|
|
120
|
+
const { resolve } = await import("path");
|
|
121
|
+
const packageJsonPath = resolve(process.cwd(), "package.json");
|
|
122
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf8"));
|
|
123
|
+
return packageJson.version ?? "0.0.0";
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=upgrade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osovv/vv-opencode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Portable OpenCode workflow plugins, explicit memory, and CLI tooling.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
"prepare": "lefthook install --force"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
+
"@clack/prompts": "^1.2.0",
|
|
60
61
|
"@opencode-ai/plugin": "1.3.17",
|
|
61
62
|
"@opencode-ai/sdk": "1.3.17",
|
|
62
63
|
"citty": "0.2.2",
|