@osovv/vv-opencode 0.8.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +252 -207
- package/dist/commands/agent.js +150 -234
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/completion.js +15 -14
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/init.js +10 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.js +6 -4
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/sync.js +6 -4
- package/dist/commands/sync.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +7 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/managed-agents.d.ts +0 -1
- package/dist/lib/managed-agents.js +2 -6
- package/dist/lib/managed-agents.js.map +1 -1
- package/dist/lib/opencode.d.ts +5 -0
- package/dist/lib/opencode.js +120 -6
- package/dist/lib/opencode.js.map +1 -1
- package/dist/plugins/enhance/index.d.ts +2 -0
- package/dist/plugins/enhance/index.js +135 -0
- package/dist/plugins/enhance/index.js.map +1 -0
- package/dist/plugins/guardian/index.js +4 -3
- package/dist/plugins/guardian/index.js.map +1 -1
- package/dist/plugins/memory/index.js +0 -1
- package/dist/plugins/memory/index.js.map +1 -1
- package/package.json +6 -2
- package/templates/agents/code-reviewer.md +26 -5
- package/templates/agents/guardian.md +2 -1
- package/templates/agents/implementer.md +45 -9
- package/templates/agents/investitagor.md +30 -7
- package/templates/agents/memory-reviewer.md +0 -1
- package/templates/agents/spec-reviewer.md +30 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,iBAAiB;AACjB,wBAAwB;AACxB,0EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// FILE: src/commands/init.ts
|
|
2
|
-
// VERSION: 0.4.
|
|
2
|
+
// VERSION: 0.4.2
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
4
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, managed subagent registration, managed agent prompt scaffolding, config file scaffolding, and idempotent re-run handling.
|
|
5
|
+
// SCOPE: Scope selection, plugin registration, managed OpenCode command registration, managed subagent registration, managed agent prompt scaffolding, config file scaffolding, and idempotent re-run handling.
|
|
6
6
|
// DEPENDS: [citty, @clack/prompts, src/lib/opencode.js]
|
|
7
7
|
// LINKS: [M-CLI-INIT, M-CLI-CONFIG]
|
|
8
8
|
// ROLE: RUNTIME
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
// END_MODULE_MAP
|
|
16
16
|
//
|
|
17
17
|
// START_CHANGE_SUMMARY
|
|
18
|
-
// LAST_CHANGE: [v0.4.
|
|
18
|
+
// LAST_CHANGE: [v0.4.2 - Added managed /enhance OpenCode command registration to init.]
|
|
19
19
|
// END_CHANGE_SUMMARY
|
|
20
20
|
import { defineCommand } from "citty";
|
|
21
21
|
import * as p from "@clack/prompts";
|
|
22
|
-
import { ensurePackageInstalled, installGuardianConfig, installManagedAgentPrompts, installMemoryConfig, inspectInstallation, resolvePaths, syncManagedSubagentRegistrations, } from "../lib/opencode.js";
|
|
22
|
+
import { ensurePackageInstalled, installGuardianConfig, installManagedAgentPrompts, installMemoryConfig, inspectInstallation, resolvePaths, syncManagedCommandRegistrations, syncManagedSubagentRegistrations, } from "../lib/opencode.js";
|
|
23
23
|
export default defineCommand({
|
|
24
24
|
meta: {
|
|
25
25
|
name: "init",
|
|
@@ -107,6 +107,11 @@ async function runInit(options) {
|
|
|
107
107
|
p.log.step("Registering plugin in OpenCode config...");
|
|
108
108
|
const pkgResult = await ensurePackageInstalled(finalPaths);
|
|
109
109
|
p.log.info(pkgResult.path + " - " + (pkgResult.changed ? "updated" : "already up to date"));
|
|
110
|
+
p.log.step("Registering managed commands...");
|
|
111
|
+
const commandRegistration = await syncManagedCommandRegistrations(finalPaths);
|
|
112
|
+
p.log.info(commandRegistration.path +
|
|
113
|
+
" - " +
|
|
114
|
+
(commandRegistration.changed ? "updated" : "already up to date"));
|
|
110
115
|
p.log.step("Registering managed subagents...");
|
|
111
116
|
const agentRegistration = await syncManagedSubagentRegistrations(finalPaths);
|
|
112
117
|
p.log.info(agentRegistration.path + " - " + (agentRegistration.changed ? "updated" : "already up to date"));
|
|
@@ -135,6 +140,7 @@ export async function runInitNonInteractive(options) {
|
|
|
135
140
|
return;
|
|
136
141
|
}
|
|
137
142
|
await ensurePackageInstalled(paths);
|
|
143
|
+
await syncManagedCommandRegistrations(paths);
|
|
138
144
|
await syncManagedSubagentRegistrations(paths);
|
|
139
145
|
await installManagedAgentPrompts(paths, { force: true });
|
|
140
146
|
await installGuardianConfig(paths, { force: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,iBAAiB;AACjB,wBAAwB;AACxB,iQAAiQ;AACjQ,
|
|
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
|
-
// VERSION: 0.2.
|
|
2
|
+
// VERSION: 0.2.7
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
4
4
|
// PURPOSE: Install vv-opencode into OpenCode config and bootstrap vvoc-managed config files.
|
|
5
|
-
// SCOPE: Scope parsing, path resolution, pinned plugin registration, managed agent prompt scaffolding, and initial Guardian/Memory config creation.
|
|
5
|
+
// SCOPE: Scope parsing, path resolution, pinned plugin registration, managed OpenCode command registration, managed agent prompt scaffolding, and initial Guardian/Memory config creation.
|
|
6
6
|
// DEPENDS: [citty, src/lib/opencode.ts]
|
|
7
7
|
// LINKS: [M-CLI-COMMANDS, M-CLI-CONFIG]
|
|
8
8
|
// ROLE: RUNTIME
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
// END_MODULE_MAP
|
|
15
15
|
//
|
|
16
16
|
// START_CHANGE_SUMMARY
|
|
17
|
-
// LAST_CHANGE: [v0.2.
|
|
17
|
+
// LAST_CHANGE: [v0.2.7 - Added managed /enhance OpenCode command registration to install.]
|
|
18
18
|
// END_CHANGE_SUMMARY
|
|
19
19
|
import { defineCommand } from "citty";
|
|
20
|
-
import { describeWriteResult, ensurePackageInstalled, installGuardianConfig, installManagedAgentPrompts, installMemoryConfig, installSecretsRedactionConfig, resolvePaths, syncManagedSubagentRegistrations, } from "../lib/opencode.js";
|
|
20
|
+
import { describeWriteResult, ensurePackageInstalled, installGuardianConfig, installManagedAgentPrompts, installMemoryConfig, installSecretsRedactionConfig, resolvePaths, syncManagedCommandRegistrations, syncManagedSubagentRegistrations, } from "../lib/opencode.js";
|
|
21
21
|
export default defineCommand({
|
|
22
22
|
meta: {
|
|
23
23
|
name: "install",
|
|
@@ -64,8 +64,10 @@ export default defineCommand({
|
|
|
64
64
|
configDir,
|
|
65
65
|
});
|
|
66
66
|
const opencode = await ensurePackageInstalled(paths);
|
|
67
|
+
const managedCommands = await syncManagedCommandRegistrations(paths);
|
|
67
68
|
const managedSubagents = await syncManagedSubagentRegistrations(paths);
|
|
68
69
|
console.log(`${opencode.changed ? "Updated" : "Kept"} ${opencode.path}`);
|
|
70
|
+
console.log(`${managedCommands.changed ? "Updated" : "Kept"} ${managedCommands.path} (managed commands)`);
|
|
69
71
|
console.log(`${managedSubagents.changed ? "Updated" : "Kept"} ${managedSubagents.path} (managed subagents)`);
|
|
70
72
|
for (const result of await installManagedAgentPrompts(paths, {
|
|
71
73
|
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,+FAA+F;AAC/F,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/sync.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// FILE: src/commands/sync.ts
|
|
2
|
-
// VERSION: 0.2.
|
|
2
|
+
// VERSION: 0.2.7
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
4
4
|
// PURPOSE: Sync managed vvoc config files and keep the OpenCode plugin specifier current.
|
|
5
|
-
// SCOPE: Scope parsing, path resolution, pinned plugin sync, managed agent prompt sync, and managed Guardian/Memory config rewrites.
|
|
5
|
+
// SCOPE: Scope parsing, path resolution, pinned plugin sync, managed OpenCode command sync, managed agent prompt sync, and managed Guardian/Memory config rewrites.
|
|
6
6
|
// DEPENDS: [citty, src/lib/opencode.ts]
|
|
7
7
|
// LINKS: [M-CLI-COMMANDS, M-CLI-CONFIG]
|
|
8
8
|
// ROLE: RUNTIME
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
// END_MODULE_MAP
|
|
15
15
|
//
|
|
16
16
|
// START_CHANGE_SUMMARY
|
|
17
|
-
// LAST_CHANGE: [v0.2.
|
|
17
|
+
// LAST_CHANGE: [v0.2.7 - Added managed /enhance OpenCode command syncing to vvoc sync.]
|
|
18
18
|
// END_CHANGE_SUMMARY
|
|
19
19
|
import { defineCommand } from "citty";
|
|
20
|
-
import { describeWriteResult, ensurePackageInstalled, resolvePaths, syncManagedAgentPrompts, syncManagedSubagentRegistrations, syncGuardianConfig, syncMemoryConfig, } from "../lib/opencode.js";
|
|
20
|
+
import { describeWriteResult, ensurePackageInstalled, resolvePaths, syncManagedAgentPrompts, syncManagedCommandRegistrations, syncManagedSubagentRegistrations, syncGuardianConfig, syncMemoryConfig, } from "../lib/opencode.js";
|
|
21
21
|
export default defineCommand({
|
|
22
22
|
meta: {
|
|
23
23
|
name: "sync",
|
|
@@ -49,11 +49,13 @@ export default defineCommand({
|
|
|
49
49
|
configDir,
|
|
50
50
|
});
|
|
51
51
|
const opencode = await ensurePackageInstalled(paths);
|
|
52
|
+
const managedCommands = await syncManagedCommandRegistrations(paths);
|
|
52
53
|
const managedSubagents = await syncManagedSubagentRegistrations(paths);
|
|
53
54
|
const managedPrompts = await syncManagedAgentPrompts(paths, { force: Boolean(args.force) });
|
|
54
55
|
const guardian = await syncGuardianConfig(paths, { force: Boolean(args.force) });
|
|
55
56
|
const memory = await syncMemoryConfig(paths, { force: Boolean(args.force) });
|
|
56
57
|
console.log(`${opencode.changed ? "Updated" : "Kept"} ${opencode.path}`);
|
|
58
|
+
console.log(`${managedCommands.changed ? "Updated" : "Kept"} ${managedCommands.path} (managed commands)`);
|
|
57
59
|
console.log(`${managedSubagents.changed ? "Updated" : "Kept"} ${managedSubagents.path} (managed subagents)`);
|
|
58
60
|
for (const result of managedPrompts) {
|
|
59
61
|
console.log(describeWriteResult(result));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,iBAAiB;AACjB,wBAAwB;AACxB,4FAA4F;AAC5F,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
// FILE: src/index.ts
|
|
2
|
-
// VERSION: 0.3.
|
|
2
|
+
// VERSION: 0.3.1
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
4
4
|
// PURPOSE: Re-export the public vv-opencode plugin entrypoints from the package root.
|
|
5
|
-
// SCOPE: Package-root exports for GuardianPlugin, MemoryPlugin, and SecretsRedactionPlugin.
|
|
6
|
-
// DEPENDS: [src/plugins/guardian.ts, src/plugins/memory.ts, src/plugins/secrets-redaction.ts]
|
|
7
|
-
// LINKS: [M-PLUGIN-GUARDIAN, M-PLUGIN-MEMORY, M-PLUGIN-SECRETS-REDACTION]
|
|
5
|
+
// SCOPE: Package-root exports for GuardianPlugin, MemoryPlugin, EnhanceCommandPlugin, and SecretsRedactionPlugin.
|
|
6
|
+
// DEPENDS: [src/plugins/guardian/index.ts, src/plugins/memory/index.ts, src/plugins/enhance/index.ts, src/plugins/secrets-redaction.ts]
|
|
7
|
+
// LINKS: [M-PLUGIN-GUARDIAN, M-PLUGIN-MEMORY, M-PLUGIN-ENHANCE, M-PLUGIN-SECRETS-REDACTION]
|
|
8
8
|
// ROLE: BARREL
|
|
9
9
|
// MAP_MODE: SUMMARY
|
|
10
10
|
// END_MODULE_CONTRACT
|
|
11
11
|
//
|
|
12
12
|
// START_MODULE_MAP
|
|
13
|
-
// GuardianPlugin, MemoryPlugin, SecretsRedactionPlugin - Public plugin exports available from @osovv/vv-opencode.
|
|
13
|
+
// GuardianPlugin, MemoryPlugin, EnhanceCommandPlugin, SecretsRedactionPlugin - Public plugin exports available from @osovv/vv-opencode.
|
|
14
14
|
// END_MODULE_MAP
|
|
15
15
|
//
|
|
16
16
|
// START_CHANGE_SUMMARY
|
|
17
|
-
// LAST_CHANGE: [v0.3.
|
|
17
|
+
// LAST_CHANGE: [v0.3.1 - Added EnhanceCommandPlugin export for runtime /enhance prompt rewriting.]
|
|
18
18
|
// END_CHANGE_SUMMARY
|
|
19
19
|
export { GuardianPlugin } from "./plugins/guardian/index.js";
|
|
20
20
|
export { MemoryPlugin } from "./plugins/memory/index.js";
|
|
21
|
+
export { EnhanceCommandPlugin } from "./plugins/enhance/index.js";
|
|
21
22
|
export { SecretsRedactionPlugin } from "./plugins/secrets-redaction.js";
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,iBAAiB;AACjB,wBAAwB;AACxB,wFAAwF;AACxF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,iBAAiB;AACjB,wBAAwB;AACxB,wFAAwF;AACxF,oHAAoH;AACpH,0IAA0I;AAC1I,8FAA8F;AAC9F,iBAAiB;AACjB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,0IAA0I;AAC1I,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,qGAAqG;AACrG,qBAAqB;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -6,7 +6,6 @@ export type ManagedSubagentDefinition = {
|
|
|
6
6
|
name: ManagedSubagentName;
|
|
7
7
|
description: string;
|
|
8
8
|
promptFileName: `${ManagedSubagentName}.md`;
|
|
9
|
-
steps?: number;
|
|
10
9
|
permission?: Record<string, unknown>;
|
|
11
10
|
};
|
|
12
11
|
export declare const MANAGED_SUBAGENTS: readonly ManagedSubagentDefinition[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// FILE: src/lib/managed-agents.ts
|
|
2
|
-
// VERSION: 0.2.
|
|
2
|
+
// VERSION: 0.2.1
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
4
4
|
// PURPOSE: Describe vvoc-managed OpenCode agent prompts and load them from bundled templates or scoped vvoc config roots.
|
|
5
5
|
// SCOPE: Built-in subagent metadata, managed prompt names, prompt file path resolution, bundled template loading, and project/global prompt lookup.
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
// END_MODULE_MAP
|
|
25
25
|
//
|
|
26
26
|
// START_CHANGE_SUMMARY
|
|
27
|
-
// LAST_CHANGE: [v0.2.
|
|
27
|
+
// LAST_CHANGE: [v0.2.1 - Removed explicit steps from vvoc-managed subagents so only guardian keeps a hard step limit.]
|
|
28
28
|
// END_CHANGE_SUMMARY
|
|
29
29
|
import { readFile } from "node:fs/promises";
|
|
30
30
|
import { join } from "node:path";
|
|
@@ -45,13 +45,11 @@ export const MANAGED_SUBAGENTS = [
|
|
|
45
45
|
name: "implementer",
|
|
46
46
|
description: "Implements approved changes with focused verification and a minimal diff.",
|
|
47
47
|
promptFileName: "implementer.md",
|
|
48
|
-
steps: 8,
|
|
49
48
|
},
|
|
50
49
|
{
|
|
51
50
|
name: "spec-reviewer",
|
|
52
51
|
description: "Checks an implementation against the requested spec and flags missing or extra behavior.",
|
|
53
52
|
promptFileName: "spec-reviewer.md",
|
|
54
|
-
steps: 6,
|
|
55
53
|
permission: {
|
|
56
54
|
edit: "deny",
|
|
57
55
|
},
|
|
@@ -60,7 +58,6 @@ export const MANAGED_SUBAGENTS = [
|
|
|
60
58
|
name: "code-reviewer",
|
|
61
59
|
description: "Reviews changes for bugs, regressions, maintainability risks, and missing tests.",
|
|
62
60
|
promptFileName: "code-reviewer.md",
|
|
63
|
-
steps: 6,
|
|
64
61
|
permission: {
|
|
65
62
|
edit: "deny",
|
|
66
63
|
},
|
|
@@ -69,7 +66,6 @@ export const MANAGED_SUBAGENTS = [
|
|
|
69
66
|
name: "investitagor",
|
|
70
67
|
description: "Investigates bugs and unclear behavior before implementation work begins.",
|
|
71
68
|
promptFileName: "investitagor.md",
|
|
72
|
-
steps: 6,
|
|
73
69
|
permission: {
|
|
74
70
|
edit: "deny",
|
|
75
71
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managed-agents.js","sourceRoot":"","sources":["../../src/lib/managed-agents.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,iBAAiB;AACjB,wBAAwB;AACxB,4HAA4H;AAC5H,sJAAsJ;AACtJ,kEAAkE;AAClE,8DAA8D;AAC9D,kBAAkB;AAClB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,iEAAiE;AACjE,+GAA+G;AAC/G,iGAAiG;AACjG,6DAA6D;AAC7D,qEAAqE;AACrE,+DAA+D;AAC/D,0FAA0F;AAC1F,4EAA4E;AAC5E,8FAA8F;AAC9F,mGAAmG;AACnG,yHAAyH;AACzH,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,
|
|
1
|
+
{"version":3,"file":"managed-agents.js","sourceRoot":"","sources":["../../src/lib/managed-agents.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/opencode.d.ts
CHANGED
|
@@ -76,6 +76,11 @@ export declare function resolvePaths(options: {
|
|
|
76
76
|
configDir?: string;
|
|
77
77
|
}): Promise<ResolvedPaths>;
|
|
78
78
|
export declare function ensurePackageConfigText(text: string | undefined, packageSpecifier?: string): string;
|
|
79
|
+
export declare function ensureManagedCommandsConfigText(text: string | undefined): string;
|
|
80
|
+
export declare function syncManagedCommandRegistrations(paths: ResolvedPaths): Promise<{
|
|
81
|
+
path: string;
|
|
82
|
+
changed: boolean;
|
|
83
|
+
}>;
|
|
79
84
|
export declare function ensureManagedSubagentsConfigText(text: string | undefined, paths: Pick<ResolvedPaths, "managedAgentsDirPath" | "opencodeConfigPath">): string;
|
|
80
85
|
export declare function syncManagedSubagentRegistrations(paths: ResolvedPaths): Promise<{
|
|
81
86
|
path: string;
|
package/dist/lib/opencode.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// FILE: src/lib/opencode.ts
|
|
2
|
-
// VERSION: 0.
|
|
2
|
+
// VERSION: 0.3.0
|
|
3
3
|
// START_MODULE_CONTRACT
|
|
4
4
|
// PURPOSE: Manage OpenCode config mutation, provider patching, and vvoc-owned config files.
|
|
5
|
-
// SCOPE: Scope-aware path resolution, pinned plugin writes, provider baseURL patching, OpenCode agent model overrides, managed subagent registration, managed agent prompt sync, Guardian/Memory config rendering and sync, and installation inspection.
|
|
5
|
+
// SCOPE: Scope-aware path resolution, pinned plugin writes, provider baseURL patching, managed OpenCode command registration, OpenCode agent model overrides, managed subagent registration, managed agent prompt sync, Guardian/Memory config rendering and sync, and installation inspection.
|
|
6
6
|
// DEPENDS: [jsonc-parser, node:fs/promises, node:path, src/lib/managed-agents.ts, src/lib/package.ts, src/lib/vvoc-paths.ts, src/plugins/memory-store.ts]
|
|
7
7
|
// LINKS: [M-CLI-CONFIG]
|
|
8
8
|
// ROLE: RUNTIME
|
|
@@ -21,11 +21,13 @@
|
|
|
21
21
|
// resolvePaths - Resolves OpenCode and vvoc config paths for global/project scopes.
|
|
22
22
|
// ensurePackageConfigText - Ensures OpenCode config contains the pinned vvoc plugin specifier.
|
|
23
23
|
// ensureProviderBaseUrlConfigText - Ensures OpenCode config contains the requested provider options.baseURL override.
|
|
24
|
+
// ensureManagedCommandsConfigText - Ensures OpenCode config contains the vvoc-managed slash command registrations.
|
|
24
25
|
// ensureManagedSubagentsConfigText - Ensures OpenCode config contains the vvoc-managed subagent registrations.
|
|
25
26
|
// parseGuardianConfigText - Parses Guardian config JSONC into typed overrides.
|
|
26
27
|
// renderGuardianConfig - Renders managed Guardian config JSONC.
|
|
27
28
|
// ensurePackageInstalled - Writes the pinned vvoc plugin specifier into OpenCode config.
|
|
28
29
|
// writeProviderBaseUrl - Writes a provider options.baseURL override into OpenCode config.
|
|
30
|
+
// syncManagedCommandRegistrations - Syncs the canonical vvoc-managed slash command registrations into OpenCode config.
|
|
29
31
|
// syncManagedSubagentRegistrations - Syncs the canonical vvoc-managed subagent registrations into OpenCode config.
|
|
30
32
|
// installManagedAgentPrompts - Creates managed vvoc prompt files for the bundled Guardian/subagent agents when missing.
|
|
31
33
|
// syncManagedAgentPrompts - Rewrites managed vvoc prompt files for the bundled Guardian/subagent agents.
|
|
@@ -43,7 +45,7 @@
|
|
|
43
45
|
// END_MODULE_MAP
|
|
44
46
|
//
|
|
45
47
|
// START_CHANGE_SUMMARY
|
|
46
|
-
// LAST_CHANGE: [v0.
|
|
48
|
+
// LAST_CHANGE: [v0.3.0 - Added conservative registration for the managed /enhance OpenCode slash command with a structured XML execution prompt.]
|
|
47
49
|
// END_CHANGE_SUMMARY
|
|
48
50
|
import { applyEdits, format, modify, parse } from "jsonc-parser";
|
|
49
51
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
@@ -70,6 +72,35 @@ const JSON_FORMAT = {
|
|
|
70
72
|
tabSize: 2,
|
|
71
73
|
eol: "\n",
|
|
72
74
|
};
|
|
75
|
+
const ENHANCE_COMMAND_TEMPLATE = [
|
|
76
|
+
'<vvoc_enhance version="1.0">',
|
|
77
|
+
" <source_request><![CDATA[$ARGUMENTS]]></source_request>",
|
|
78
|
+
" <execution_goal>Interpret the source request and carry the work through to completion.</execution_goal>",
|
|
79
|
+
" <rules>",
|
|
80
|
+
" <preserve_user_intent>true</preserve_user_intent>",
|
|
81
|
+
" <preserve_explicit_constraints>true</preserve_explicit_constraints>",
|
|
82
|
+
" <do_not_invent_requirements>true</do_not_invent_requirements>",
|
|
83
|
+
" <inspect_relevant_context_first>true</inspect_relevant_context_first>",
|
|
84
|
+
" <prefer_minimal_correct_change>true</prefer_minimal_correct_change>",
|
|
85
|
+
" <ask_only_when_blocked>true</ask_only_when_blocked>",
|
|
86
|
+
" <run_relevant_verification>true</run_relevant_verification>",
|
|
87
|
+
" </rules>",
|
|
88
|
+
" <missing_request_behavior>",
|
|
89
|
+
" If the source request is empty, ask the user to provide the raw request to enhance instead of guessing.",
|
|
90
|
+
" </missing_request_behavior>",
|
|
91
|
+
" <deliverables>",
|
|
92
|
+
" <item>Complete the requested work or explain the concrete blocker.</item>",
|
|
93
|
+
" <item>Summarize the result and the verification you ran.</item>",
|
|
94
|
+
" </deliverables>",
|
|
95
|
+
"</vvoc_enhance>",
|
|
96
|
+
].join("\n");
|
|
97
|
+
const MANAGED_COMMANDS = [
|
|
98
|
+
{
|
|
99
|
+
name: "enhance",
|
|
100
|
+
description: "Wrap a raw request in vvoc's structured XML execution prompt.",
|
|
101
|
+
template: ENHANCE_COMMAND_TEMPLATE,
|
|
102
|
+
},
|
|
103
|
+
];
|
|
73
104
|
// START_BLOCK_RESOLVE_CONFIG_PATHS
|
|
74
105
|
export async function resolvePaths(options) {
|
|
75
106
|
const configHome = getConfigHome(options.configDir);
|
|
@@ -126,6 +157,51 @@ export function ensurePackageConfigText(text, packageSpecifier = PACKAGE_NAME) {
|
|
|
126
157
|
return ensureTrailingNewline(applyEdits(nextText, format(nextText, undefined, JSON_FORMAT)));
|
|
127
158
|
}
|
|
128
159
|
// END_BLOCK_ENSURE_OPENCODE_PLUGIN_CONFIG
|
|
160
|
+
// START_BLOCK_ENSURE_MANAGED_COMMAND_CONFIG
|
|
161
|
+
export function ensureManagedCommandsConfigText(text) {
|
|
162
|
+
if (!text?.trim()) {
|
|
163
|
+
return renderJson({
|
|
164
|
+
$schema: OPENCODE_SCHEMA_URL,
|
|
165
|
+
command: Object.fromEntries(MANAGED_COMMANDS.map((definition) => [
|
|
166
|
+
definition.name,
|
|
167
|
+
getManagedCommandRegistration(definition.name),
|
|
168
|
+
])),
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
const document = parseObjectDocument(text, "OpenCode config");
|
|
172
|
+
const currentCommands = readCommandMap(document, "OpenCode config");
|
|
173
|
+
let nextText = text;
|
|
174
|
+
if (!Object.hasOwn(document, "$schema")) {
|
|
175
|
+
nextText = applyEdits(nextText, modify(nextText, ["$schema"], OPENCODE_SCHEMA_URL, {
|
|
176
|
+
formattingOptions: JSON_FORMAT,
|
|
177
|
+
getInsertionIndex: () => 0,
|
|
178
|
+
}));
|
|
179
|
+
}
|
|
180
|
+
for (const definition of MANAGED_COMMANDS) {
|
|
181
|
+
const currentEntry = currentCommands[definition.name];
|
|
182
|
+
const nextEntry = {
|
|
183
|
+
...getManagedCommandRegistration(definition.name),
|
|
184
|
+
...currentEntry,
|
|
185
|
+
};
|
|
186
|
+
if (JSON.stringify(currentEntry) === JSON.stringify(nextEntry)) {
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
nextText = applyEdits(nextText, modify(nextText, ["command", definition.name], nextEntry, {
|
|
190
|
+
formattingOptions: JSON_FORMAT,
|
|
191
|
+
}));
|
|
192
|
+
}
|
|
193
|
+
return ensureTrailingNewline(applyEdits(nextText, format(nextText, undefined, JSON_FORMAT)));
|
|
194
|
+
}
|
|
195
|
+
export async function syncManagedCommandRegistrations(paths) {
|
|
196
|
+
const currentText = await readOptionalText(paths.opencodeConfigPath);
|
|
197
|
+
const nextText = ensureManagedCommandsConfigText(currentText);
|
|
198
|
+
if (currentText === nextText) {
|
|
199
|
+
return { path: paths.opencodeConfigPath, changed: false };
|
|
200
|
+
}
|
|
201
|
+
await writeText(paths.opencodeConfigPath, nextText);
|
|
202
|
+
return { path: paths.opencodeConfigPath, changed: true };
|
|
203
|
+
}
|
|
204
|
+
// END_BLOCK_ENSURE_MANAGED_COMMAND_CONFIG
|
|
129
205
|
// START_BLOCK_ENSURE_MANAGED_SUBAGENT_CONFIG
|
|
130
206
|
export function ensureManagedSubagentsConfigText(text, paths) {
|
|
131
207
|
if (!text?.trim()) {
|
|
@@ -722,6 +798,23 @@ function readPluginList(document, label) {
|
|
|
722
798
|
}
|
|
723
799
|
return raw.slice();
|
|
724
800
|
}
|
|
801
|
+
function readCommandMap(document, label) {
|
|
802
|
+
const raw = document.command;
|
|
803
|
+
if (raw === undefined) {
|
|
804
|
+
return {};
|
|
805
|
+
}
|
|
806
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
|
|
807
|
+
throw new Error(`${label}: expected "command" to be an object`);
|
|
808
|
+
}
|
|
809
|
+
const entries = {};
|
|
810
|
+
for (const [name, value] of Object.entries(raw)) {
|
|
811
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
812
|
+
throw new Error(`${label}: expected "command.${name}" to be an object`);
|
|
813
|
+
}
|
|
814
|
+
entries[name] = value;
|
|
815
|
+
}
|
|
816
|
+
return entries;
|
|
817
|
+
}
|
|
725
818
|
function normalizePluginList(currentPlugins, packageSpecifier) {
|
|
726
819
|
const nextPlugins = [];
|
|
727
820
|
const seen = new Set();
|
|
@@ -750,6 +843,30 @@ function normalizePluginList(currentPlugins, packageSpecifier) {
|
|
|
750
843
|
function isPackagePluginSpecifier(value) {
|
|
751
844
|
return value === PACKAGE_NAME || value.startsWith(`${PACKAGE_NAME}@`);
|
|
752
845
|
}
|
|
846
|
+
function getManagedCommandDefinition(commandName) {
|
|
847
|
+
const definition = MANAGED_COMMANDS.find((entry) => entry.name === commandName);
|
|
848
|
+
if (!definition) {
|
|
849
|
+
throw new Error(`unknown managed command: ${commandName}`);
|
|
850
|
+
}
|
|
851
|
+
return definition;
|
|
852
|
+
}
|
|
853
|
+
function getManagedCommandRegistration(commandName) {
|
|
854
|
+
const definition = getManagedCommandDefinition(commandName);
|
|
855
|
+
const registration = {
|
|
856
|
+
description: definition.description,
|
|
857
|
+
template: definition.template,
|
|
858
|
+
};
|
|
859
|
+
if (definition.agent) {
|
|
860
|
+
registration.agent = definition.agent;
|
|
861
|
+
}
|
|
862
|
+
if (definition.model) {
|
|
863
|
+
registration.model = definition.model;
|
|
864
|
+
}
|
|
865
|
+
if (definition.subtask !== undefined) {
|
|
866
|
+
registration.subtask = definition.subtask;
|
|
867
|
+
}
|
|
868
|
+
return registration;
|
|
869
|
+
}
|
|
753
870
|
// START_BLOCK_MANAGED_SUBAGENT_HELPERS
|
|
754
871
|
function readAgentMap(document, label) {
|
|
755
872
|
const raw = document.agent;
|
|
@@ -823,9 +940,6 @@ function getManagedSubagentRegistration(paths, agentName) {
|
|
|
823
940
|
mode: "subagent",
|
|
824
941
|
prompt: getManagedSubagentPromptReference(paths, agentName),
|
|
825
942
|
};
|
|
826
|
-
if (definition.steps !== undefined) {
|
|
827
|
-
registration.steps = definition.steps;
|
|
828
|
-
}
|
|
829
943
|
if (definition.permission) {
|
|
830
944
|
registration.permission = definition.permission;
|
|
831
945
|
}
|