@osovv/vv-opencode 0.1.0 → 0.2.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.
Files changed (44) hide show
  1. package/AGENTS.md +62 -50
  2. package/README.md +237 -20
  3. package/dist/commands/doctor.d.ts +1 -7
  4. package/dist/commands/doctor.js +3 -20
  5. package/dist/commands/doctor.js.map +1 -1
  6. package/dist/commands/guardian.js +1 -1
  7. package/dist/commands/guardian.js.map +1 -1
  8. package/dist/commands/install.d.ts +1 -7
  9. package/dist/commands/install.js +4 -16
  10. package/dist/commands/install.js.map +1 -1
  11. package/dist/commands/status.d.ts +1 -1
  12. package/dist/commands/status.js +2 -5
  13. package/dist/commands/status.js.map +1 -1
  14. package/dist/commands/sync.d.ts +1 -7
  15. package/dist/commands/sync.js +4 -15
  16. package/dist/commands/sync.js.map +1 -1
  17. package/dist/index.d.ts +1 -0
  18. package/dist/index.js +1 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/lib/opencode.d.ts +3 -18
  21. package/dist/lib/opencode.js +39 -111
  22. package/dist/lib/opencode.js.map +1 -1
  23. package/dist/lib/opencode.test.js +23 -6
  24. package/dist/lib/opencode.test.js.map +1 -1
  25. package/dist/lib/vvoc-paths.d.ts +6 -0
  26. package/dist/lib/vvoc-paths.js +25 -0
  27. package/dist/lib/vvoc-paths.js.map +1 -0
  28. package/dist/plugins/guardian.js +20 -21
  29. package/dist/plugins/guardian.js.map +1 -1
  30. package/dist/plugins/memory-store.d.ts +49 -0
  31. package/dist/plugins/memory-store.js +452 -0
  32. package/dist/plugins/memory-store.js.map +1 -0
  33. package/dist/plugins/memory.d.ts +2 -0
  34. package/dist/plugins/memory.js +323 -0
  35. package/dist/plugins/memory.js.map +1 -0
  36. package/dist/plugins/memory.test.d.ts +1 -0
  37. package/dist/plugins/memory.test.js +151 -0
  38. package/dist/plugins/memory.test.js.map +1 -0
  39. package/docs/development-plan.xml +100 -20
  40. package/docs/knowledge-graph.xml +30 -6
  41. package/docs/requirements.xml +30 -19
  42. package/docs/technology.xml +23 -14
  43. package/docs/verification-plan.xml +92 -25
  44. package/package.json +14 -2
@@ -5,15 +5,9 @@ declare const _default: import("citty").CommandDef<{
5
5
  readonly default: "global";
6
6
  readonly description: "Sync global or project config.";
7
7
  };
8
- readonly source: {
9
- readonly type: "enum";
10
- readonly options: ["local", "npm"];
11
- readonly default: "local";
12
- readonly description: "Sync a local plugin shim or npm package reference.";
13
- };
14
8
  readonly "config-dir": {
15
9
  readonly type: "string";
16
- readonly description: "Override the global OpenCode config directory.";
10
+ readonly description: "Override the global config home used for opencode/ and vvoc/.";
17
11
  };
18
12
  readonly force: {
19
13
  readonly type: "boolean";
@@ -1,5 +1,5 @@
1
1
  import { defineCommand } from "citty";
2
- import { describeWriteResult, ensurePackageInstalled, resolvePaths, syncGuardianConfig, syncLocalPlugin, } from "../lib/opencode.js";
2
+ import { describeWriteResult, ensurePackageInstalled, resolvePaths, syncGuardianConfig, } from "../lib/opencode.js";
3
3
  export default defineCommand({
4
4
  meta: {
5
5
  name: "sync",
@@ -12,15 +12,9 @@ export default defineCommand({
12
12
  default: "global",
13
13
  description: "Sync global or project config.",
14
14
  },
15
- source: {
16
- type: "enum",
17
- options: ["local", "npm"],
18
- default: "local",
19
- description: "Sync a local plugin shim or npm package reference.",
20
- },
21
15
  "config-dir": {
22
16
  type: "string",
23
- description: "Override the global OpenCode config directory.",
17
+ description: "Override the global config home used for opencode/ and vvoc/.",
24
18
  },
25
19
  force: {
26
20
  type: "boolean",
@@ -35,14 +29,9 @@ export default defineCommand({
35
29
  cwd: process.cwd(),
36
30
  configDir,
37
31
  });
38
- const pluginResult = args.source === "npm"
39
- ? (() => ensurePackageInstalled(paths).then((opencode) => ({
40
- action: opencode.changed ? "updated" : "kept",
41
- path: opencode.path,
42
- })))()
43
- : syncLocalPlugin(paths, { force: Boolean(args.force) });
32
+ const opencode = await ensurePackageInstalled(paths);
44
33
  const guardian = await syncGuardianConfig(paths, { force: Boolean(args.force) });
45
- console.log(describeWriteResult(await pluginResult));
34
+ console.log(`${opencode.changed ? "Updated" : "Kept"} ${opencode.path}`);
46
35
  console.log(describeWriteResult(guardian));
47
36
  },
48
37
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,eAAe,GAEhB,MAAM,oBAAoB,CAAC;AAE5B,eAAe,aAAa,CAAC;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,wCAAwC;KACtD;IACD,IAAI,EAAE;QACJ,KAAK,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;YAC9B,OAAO,EAAE,QAAQ;YACjB,WAAW,EAAE,gCAAgC;SAC9C;QACD,MAAM,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;YACzB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,oDAAoD;SAClE;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,gDAAgD;SAC9D;QACD,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,kDAAkD;SAChE;KACF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9D,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC;YAC/B,KAAK,EAAE,KAAc;YACrB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,SAAS;SACV,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,KAAK,KAAK;YACxC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACzD,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;gBAC7C,IAAI,EAAE,QAAQ,CAAC,IAAI;aACV,CAAA,CAAC,CAAC,EAAE;YACf,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEjF,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,GAEnB,MAAM,oBAAoB,CAAC;AAE5B,eAAe,aAAa,CAAC;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,wCAAwC;KACtD;IACD,IAAI,EAAE;QACJ,KAAK,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;YAC9B,OAAO,EAAE,QAAQ;YACjB,WAAW,EAAE,gCAAgC;SAC9C;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,+DAA+D;SAC7E;QACD,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,kDAAkD;SAChE;KACF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9D,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC;YAC/B,KAAK,EAAE,KAAc;YACrB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,SAAS;SACV,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEjF,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export { GuardianPlugin } from "./plugins/guardian.js";
2
+ export { MemoryPlugin } from "./plugins/memory.js";
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export { GuardianPlugin } from "./plugins/guardian.js";
2
+ export { MemoryPlugin } from "./plugins/memory.js";
2
3
  //# 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,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
@@ -2,18 +2,16 @@ export declare const CLI_NAME = "vvoc";
2
2
  export declare const PACKAGE_NAME = "@osovv/vv-opencode";
3
3
  export declare const OPENCODE_SCHEMA_URL = "https://opencode.ai/config.json";
4
4
  export type Scope = "global" | "project";
5
- export type PluginInstallSource = "local" | "npm";
6
5
  export type ResolvedPaths = {
7
6
  scope: Scope;
8
7
  cwd: string;
8
+ configHome: string;
9
9
  opencodeBaseDir: string;
10
- guardianBaseDir: string;
11
- pluginBaseDir: string;
10
+ vvocBaseDir: string;
12
11
  opencodeConfigPath: string;
13
12
  opencodeAlternatePaths: string[];
14
13
  guardianConfigPath: string;
15
14
  guardianAlternatePaths: string[];
16
- pluginEntryPath: string;
17
15
  };
18
16
  export type GuardianConfigOverrides = {
19
17
  model?: string;
@@ -34,7 +32,7 @@ export type InstallationInspection = {
34
32
  exists: boolean;
35
33
  alternates: string[];
36
34
  parseError?: string;
37
- packageConfigured: boolean;
35
+ pluginConfigured: boolean;
38
36
  plugins: string[];
39
37
  };
40
38
  guardian: {
@@ -45,12 +43,6 @@ export type InstallationInspection = {
45
43
  parseError?: string;
46
44
  overrides?: GuardianConfigOverrides;
47
45
  };
48
- localPlugin: {
49
- path: string;
50
- exists: boolean;
51
- managed: boolean;
52
- target?: string;
53
- };
54
46
  warnings: string[];
55
47
  problems: string[];
56
48
  };
@@ -66,12 +58,6 @@ export declare function ensurePackageInstalled(paths: ResolvedPaths): Promise<{
66
58
  path: string;
67
59
  changed: boolean;
68
60
  }>;
69
- export declare function installLocalPlugin(paths: ResolvedPaths, options: {
70
- force: boolean;
71
- }): Promise<WriteResult>;
72
- export declare function syncLocalPlugin(paths: ResolvedPaths, options: {
73
- force: boolean;
74
- }): Promise<WriteResult>;
75
61
  export declare function installGuardianConfig(paths: ResolvedPaths, options: {
76
62
  force: boolean;
77
63
  }): Promise<WriteResult>;
@@ -82,5 +68,4 @@ export declare function writeGuardianConfig(paths: ResolvedPaths, overrides: Gua
82
68
  force: boolean;
83
69
  }): Promise<WriteResult>;
84
70
  export declare function inspectInstallation(paths: ResolvedPaths): Promise<InstallationInspection>;
85
- export declare function renderLocalPluginShim(): Promise<string>;
86
71
  export declare function describeWriteResult(result: WriteResult): string;
@@ -1,50 +1,38 @@
1
1
  import { applyEdits, format, modify, parse } from "jsonc-parser";
2
- import { access, mkdir, readFile, writeFile } from "node:fs/promises";
3
- import { homedir } from "node:os";
2
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
4
3
  import { dirname, join } from "node:path";
5
- import { fileURLToPath, pathToFileURL } from "node:url";
4
+ import { getConfigHome, getGlobalOpencodeDir, getGlobalVvocDir, getProjectVvocDir, } from "./vvoc-paths.js";
6
5
  export const CLI_NAME = "vvoc";
7
6
  export const PACKAGE_NAME = "@osovv/vv-opencode";
8
7
  export const OPENCODE_SCHEMA_URL = "https://opencode.ai/config.json";
9
- const DEFAULT_GLOBAL_CONFIG_DIR = join(homedir(), ".config", "opencode");
10
8
  const MANAGED_MARKER = "Managed by vvoc";
11
9
  const DEFAULT_GUARDIAN_TIMEOUT_MS = 90_000;
12
10
  const DEFAULT_GUARDIAN_APPROVAL_RISK_THRESHOLD = 80;
13
- const LOCAL_PLUGIN_FILE_NAME = "vv-opencode.ts";
11
+ const GUARDIAN_CONFIG_FILE_NAMES = ["guardian.jsonc", "guardian.json"];
12
+ const OPENCODE_CONFIG_FILE_NAMES = ["opencode.json", "opencode.jsonc"];
14
13
  const JSON_FORMAT = {
15
14
  insertSpaces: true,
16
15
  tabSize: 2,
17
16
  eol: "\n",
18
17
  };
19
18
  export async function resolvePaths(options) {
20
- const opencodeBaseDir = options.scope === "global"
21
- ? options.configDir ?? DEFAULT_GLOBAL_CONFIG_DIR
22
- : options.cwd;
23
- const guardianBaseDir = options.scope === "global"
24
- ? options.configDir ?? DEFAULT_GLOBAL_CONFIG_DIR
25
- : join(options.cwd, ".opencode");
26
- const pluginBaseDir = options.scope === "global"
27
- ? join(options.configDir ?? DEFAULT_GLOBAL_CONFIG_DIR, "plugins")
28
- : join(options.cwd, ".opencode", "plugins");
29
- const opencodeSelection = await selectPrimaryPath([
30
- join(opencodeBaseDir, "opencode.json"),
31
- join(opencodeBaseDir, "opencode.jsonc"),
32
- ]);
33
- const guardianSelection = await selectPrimaryPath([
34
- join(guardianBaseDir, "guardian.jsonc"),
35
- join(guardianBaseDir, "guardian.json"),
36
- ]);
19
+ const configHome = getConfigHome(options.configDir);
20
+ const opencodeBaseDir = options.scope === "global" ? getGlobalOpencodeDir(options.configDir) : options.cwd;
21
+ const vvocBaseDir = options.scope === "global"
22
+ ? getGlobalVvocDir(options.configDir)
23
+ : getProjectVvocDir(options.cwd);
24
+ const opencodeSelection = await selectPrimaryPath(OPENCODE_CONFIG_FILE_NAMES.map((name) => join(opencodeBaseDir, name)));
25
+ const guardianSelection = await selectPrimaryPath(GUARDIAN_CONFIG_FILE_NAMES.map((name) => join(vvocBaseDir, name)));
37
26
  return {
38
27
  scope: options.scope,
39
28
  cwd: options.cwd,
29
+ configHome,
40
30
  opencodeBaseDir,
41
- guardianBaseDir,
42
- pluginBaseDir,
31
+ vvocBaseDir,
43
32
  opencodeConfigPath: opencodeSelection.primary,
44
33
  opencodeAlternatePaths: opencodeSelection.alternates,
45
34
  guardianConfigPath: guardianSelection.primary,
46
35
  guardianAlternatePaths: guardianSelection.alternates,
47
- pluginEntryPath: join(pluginBaseDir, LOCAL_PLUGIN_FILE_NAME),
48
36
  };
49
37
  }
50
38
  export function ensurePackageConfigText(text) {
@@ -76,8 +64,7 @@ export function parseGuardianConfigText(text, label) {
76
64
  }
77
65
  export function renderGuardianConfig(overrides = {}) {
78
66
  const timeoutMs = overrides.timeoutMs ?? DEFAULT_GUARDIAN_TIMEOUT_MS;
79
- const approvalRiskThreshold = overrides.approvalRiskThreshold
80
- ?? DEFAULT_GUARDIAN_APPROVAL_RISK_THRESHOLD;
67
+ const approvalRiskThreshold = overrides.approvalRiskThreshold ?? DEFAULT_GUARDIAN_APPROVAL_RISK_THRESHOLD;
81
68
  const reviewToastDurationMs = overrides.reviewToastDurationMs ?? timeoutMs;
82
69
  const lines = [
83
70
  "// Managed by vvoc.",
@@ -87,22 +74,22 @@ export function renderGuardianConfig(overrides = {}) {
87
74
  "{",
88
75
  ];
89
76
  if (overrides.model) {
90
- lines.push(` \"model\": ${JSON.stringify(overrides.model)},`);
77
+ lines.push(` "model": ${JSON.stringify(overrides.model)},`);
91
78
  }
92
79
  else {
93
- lines.push(" // \"model\": \"anthropic/claude-sonnet-4-5\",");
80
+ lines.push(' // "model": "anthropic/claude-sonnet-4-5",');
94
81
  }
95
82
  lines.push("");
96
83
  if (overrides.variant) {
97
- lines.push(` \"variant\": ${JSON.stringify(overrides.variant)},`);
84
+ lines.push(` "variant": ${JSON.stringify(overrides.variant)},`);
98
85
  }
99
86
  else {
100
- lines.push(" // \"variant\": \"high\",");
87
+ lines.push(' // "variant": "high",');
101
88
  }
102
89
  lines.push("");
103
- lines.push(` \"timeoutMs\": ${timeoutMs},`);
104
- lines.push(` \"approvalRiskThreshold\": ${approvalRiskThreshold},`);
105
- lines.push(` \"reviewToastDurationMs\": ${reviewToastDurationMs}`);
90
+ lines.push(` "timeoutMs": ${timeoutMs},`);
91
+ lines.push(` "approvalRiskThreshold": ${approvalRiskThreshold},`);
92
+ lines.push(` "reviewToastDurationMs": ${reviewToastDurationMs}`);
106
93
  lines.push("}");
107
94
  return `${lines.join("\n")}\n`;
108
95
  }
@@ -115,29 +102,6 @@ export async function ensurePackageInstalled(paths) {
115
102
  await writeText(paths.opencodeConfigPath, nextText);
116
103
  return { path: paths.opencodeConfigPath, changed: true };
117
104
  }
118
- export async function installLocalPlugin(paths, options) {
119
- const currentText = await readOptionalText(paths.pluginEntryPath);
120
- const nextText = await renderLocalPluginShim();
121
- if (!currentText) {
122
- await writeText(paths.pluginEntryPath, nextText);
123
- return { action: "created", path: paths.pluginEntryPath };
124
- }
125
- if (!options.force && !isManagedFile(currentText)) {
126
- return {
127
- action: "skipped",
128
- path: paths.pluginEntryPath,
129
- reason: "existing plugin file is not managed by vvoc",
130
- };
131
- }
132
- if (currentText === nextText) {
133
- return { action: "kept", path: paths.pluginEntryPath };
134
- }
135
- await writeText(paths.pluginEntryPath, nextText);
136
- return { action: "updated", path: paths.pluginEntryPath };
137
- }
138
- export async function syncLocalPlugin(paths, options) {
139
- return installLocalPlugin(paths, options);
140
- }
141
105
  export async function installGuardianConfig(paths, options) {
142
106
  const currentText = await readOptionalText(paths.guardianConfigPath);
143
107
  if (!currentText) {
@@ -207,12 +171,12 @@ export async function inspectInstallation(paths) {
207
171
  const opencodeText = await readOptionalText(paths.opencodeConfigPath);
208
172
  let opencodeParseError;
209
173
  let plugins = [];
210
- let packageConfigured = false;
174
+ let pluginConfigured = false;
211
175
  if (opencodeText) {
212
176
  try {
213
177
  const document = parseObjectDocument(opencodeText, paths.opencodeConfigPath);
214
178
  plugins = readPluginList(document, paths.opencodeConfigPath);
215
- packageConfigured = plugins.includes(PACKAGE_NAME);
179
+ pluginConfigured = plugins.includes(PACKAGE_NAME);
216
180
  }
217
181
  catch (error) {
218
182
  opencodeParseError = error instanceof Error ? error.message : String(error);
@@ -232,9 +196,9 @@ export async function inspectInstallation(paths) {
232
196
  problems.push(guardianParseError);
233
197
  }
234
198
  }
235
- const localPluginText = await readOptionalText(paths.pluginEntryPath);
236
- const localPluginManaged = localPluginText ? isManagedFile(localPluginText) : false;
237
- const localPluginTarget = localPluginText ? readLocalPluginTarget(localPluginText) : undefined;
199
+ if (!pluginConfigured) {
200
+ problems.push(`${PACKAGE_NAME} is not configured in ${paths.opencodeConfigPath}`);
201
+ }
238
202
  return {
239
203
  scope: paths.scope,
240
204
  opencode: {
@@ -242,7 +206,7 @@ export async function inspectInstallation(paths) {
242
206
  exists: Boolean(opencodeText),
243
207
  alternates: paths.opencodeAlternatePaths,
244
208
  parseError: opencodeParseError,
245
- packageConfigured,
209
+ pluginConfigured,
246
210
  plugins,
247
211
  },
248
212
  guardian: {
@@ -253,37 +217,27 @@ export async function inspectInstallation(paths) {
253
217
  parseError: guardianParseError,
254
218
  overrides: guardianOverrides,
255
219
  },
256
- localPlugin: {
257
- path: paths.pluginEntryPath,
258
- exists: Boolean(localPluginText),
259
- managed: localPluginManaged,
260
- target: localPluginTarget,
261
- },
262
220
  warnings,
263
221
  problems,
264
222
  };
265
223
  }
266
- export async function renderLocalPluginShim() {
267
- const targetPath = await resolveLocalPluginTargetPath();
268
- const targetUrl = pathToFileURL(targetPath).href;
269
- return [
270
- "// Managed by vvoc.",
271
- "// Local development shim for @osovv/vv-opencode.",
272
- `export { GuardianPlugin } from ${JSON.stringify(targetUrl)};`,
273
- "",
274
- ].join("\n");
275
- }
276
224
  export function describeWriteResult(result) {
225
+ let message = "";
277
226
  switch (result.action) {
278
227
  case "created":
279
- return `Created ${result.path}`;
228
+ message = `Created ${result.path}`;
229
+ break;
280
230
  case "updated":
281
- return `Updated ${result.path}`;
231
+ message = `Updated ${result.path}`;
232
+ break;
282
233
  case "kept":
283
- return `Kept ${result.path}`;
234
+ message = `Kept ${result.path}`;
235
+ break;
284
236
  case "skipped":
285
- return `Skipped ${result.path}${result.reason ? ` (${result.reason})` : ""}`;
237
+ message = `Skipped ${result.path}`;
238
+ break;
286
239
  }
240
+ return result.reason ? `${message} (${result.reason})` : message;
287
241
  }
288
242
  function parseObjectDocument(text, label) {
289
243
  const errors = [];
@@ -305,7 +259,7 @@ function readPluginList(document, label) {
305
259
  if (raw === undefined)
306
260
  return [];
307
261
  if (!Array.isArray(raw) || raw.some((entry) => typeof entry !== "string")) {
308
- throw new Error(`${label}: expected \"plugin\" to be an array of strings`);
262
+ throw new Error(`${label}: expected "plugin" to be an array of strings`);
309
263
  }
310
264
  return raw.slice();
311
265
  }
@@ -353,10 +307,6 @@ function readThreshold(value, label) {
353
307
  function isManagedFile(text) {
354
308
  return text.includes(MANAGED_MARKER);
355
309
  }
356
- function readLocalPluginTarget(text) {
357
- const match = text.match(/export\s+\{\s*GuardianPlugin\s*\}\s+from\s+["']([^"']+)["']/);
358
- return match?.[1];
359
- }
360
310
  function renderJson(value) {
361
311
  return `${JSON.stringify(value, null, 2)}\n`;
362
312
  }
@@ -378,23 +328,10 @@ async function writeText(path, text) {
378
328
  await mkdir(dirname(path), { recursive: true });
379
329
  await writeFile(path, text, "utf8");
380
330
  }
381
- async function resolveLocalPluginTargetPath() {
382
- const packageRoot = fileURLToPath(new URL("../../", import.meta.url));
383
- const candidates = [
384
- join(packageRoot, "src", "plugins", "guardian.ts"),
385
- join(packageRoot, "dist", "plugins", "guardian.js"),
386
- ];
387
- for (const candidate of candidates) {
388
- if (await pathExists(candidate)) {
389
- return candidate;
390
- }
391
- }
392
- return candidates[0];
393
- }
394
331
  async function selectPrimaryPath(candidates) {
395
332
  const existing = [];
396
333
  for (const candidate of candidates) {
397
- if (await readOptionalText(candidate) !== undefined) {
334
+ if ((await readOptionalText(candidate)) !== undefined) {
398
335
  existing.push(candidate);
399
336
  }
400
337
  }
@@ -403,13 +340,4 @@ async function selectPrimaryPath(candidates) {
403
340
  alternates: existing.slice(1),
404
341
  };
405
342
  }
406
- async function pathExists(path) {
407
- try {
408
- await access(path);
409
- return true;
410
- }
411
- catch {
412
- return false;
413
- }
414
- }
415
343
  //# sourceMappingURL=opencode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/lib/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAmB,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC/B,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,CAAC;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,iCAAiC,CAAC;AAErE,MAAM,yBAAyB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACzE,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,2BAA2B,GAAG,MAAM,CAAC;AAC3C,MAAM,wCAAwC,GAAG,EAAE,CAAC;AACpD,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAEhD,MAAM,WAAW,GAAG;IAClB,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,CAAC;IACV,GAAG,EAAE,IAAI;CACD,CAAC;AA8DX,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAIlC;IACC,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,KAAK,QAAQ;QAChD,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,yBAAyB;QAChD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAChB,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,KAAK,QAAQ;QAChD,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,yBAAyB;QAChD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,KAAK,QAAQ;QAC9C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,yBAAyB,EAAE,SAAS,CAAC;QACjE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAAC;QAChD,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC;QACtC,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC;KACxC,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAAC;QAChD,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC;QACvC,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC;KACvC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,eAAe;QACf,eAAe;QACf,aAAa;QACb,kBAAkB,EAAE,iBAAiB,CAAC,OAAO;QAC7C,sBAAsB,EAAE,iBAAiB,CAAC,UAAU;QACpD,kBAAkB,EAAE,iBAAiB,CAAC,OAAO;QAC7C,sBAAsB,EAAE,iBAAiB,CAAC,UAAU;QACpD,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,sBAAsB,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAa;IACnD,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QAClB,OAAO,UAAU,CAAC;YAChB,OAAO,EAAE,mBAAmB;YAC5B,MAAM,EAAE,CAAC,YAAY,CAAC;SACvB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACnE,IAAI,QAAQ,GAAG,IAAI,CAAC;IAEpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;QACxC,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,mBAAmB,EAAE;YACjF,iBAAiB,EAAE,WAAW;YAC9B,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3E,IAAI,WAAW,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,EAAE,CAAC;QACjD,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE;YACxE,iBAAiB,EAAE,WAAW;SAC/B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,qBAAqB,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,KAAa;IAEb,OAAO,0BAA0B,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,YAAqC,EAAE;IAC1E,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,2BAA2B,CAAC;IACrE,MAAM,qBAAqB,GAAG,SAAS,CAAC,qBAAqB;WACxD,wCAAwC,CAAC;IAC9C,MAAM,qBAAqB,GAAG,SAAS,CAAC,qBAAqB,IAAI,SAAS,CAAC;IAC3E,MAAM,KAAK,GAAG;QACZ,qBAAqB;QACrB,iFAAiF;QACjF,gEAAgE;QAChE,EAAE;QACF,GAAG;KACJ,CAAC;IAEF,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,oBAAoB,SAAS,GAAG,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,gCAAgC,qBAAqB,GAAG,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,gCAAgC,qBAAqB,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEhB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAoB;IAI/D,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAEtD,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,SAAS,CAAC,KAAK,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACpD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAoB,EACpB,OAA2B;IAE3B,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAClD,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,KAAK,CAAC,eAAe;YAC3B,MAAM,EAAE,6CAA6C;SACtD,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACjD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAoB,EACpB,OAA2B;IAE3B,OAAO,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAAoB,EACpB,OAA2B;IAE3B,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACrE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,KAAK,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAClE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,KAAK,CAAC,kBAAkB;gBAC9B,MAAM,EAAE,sCAAsC;aAC/C,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC5D,CAAC;IAED,OAAO,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAoB,EACpB,OAA2B;IAE3B,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACrE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,SAAS,CAAC,KAAK,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAClE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAClD,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,KAAK,CAAC,kBAAkB;YAC9B,MAAM,EAAE,sCAAsC;SAC/C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,uBAAuB,CAAC,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACtG,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,SAAS,CAAC,KAAK,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACpD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAAoB,EACpB,SAAkC,EAClC,OAA2B;IAE3B,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACrE,IAAI,WAAW,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QACjE,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,KAAK,CAAC,kBAAkB;YAC9B,MAAM,EAAE,sCAAsC;SAC/C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,SAAS,CAAC,KAAK,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACpD,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC3C,IAAI,EAAE,KAAK,CAAC,kBAAkB;KAC/B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAoB;IAC5D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,KAAK,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,QAAQ,CAAC,IAAI,CACX,yCAAyC,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClH,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,QAAQ,CAAC,IAAI,CACX,yCAAyC,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClH,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtE,IAAI,kBAAsC,CAAC;IAC3C,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC7E,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC7D,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kBAAkB,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtE,IAAI,kBAAsC,CAAC;IAC3C,IAAI,iBAAsD,CAAC;IAC3D,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAE3E,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,iBAAiB,GAAG,uBAAuB,CAAC,YAAY,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kBAAkB,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACtE,MAAM,kBAAkB,GAAG,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACpF,MAAM,iBAAiB,GAAG,eAAe,CAAC,CAAC,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE/F,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE;YACR,IAAI,EAAE,KAAK,CAAC,kBAAkB;YAC9B,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC;YAC7B,UAAU,EAAE,KAAK,CAAC,sBAAsB;YACxC,UAAU,EAAE,kBAAkB;YAC9B,iBAAiB;YACjB,OAAO;SACR;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,KAAK,CAAC,kBAAkB;YAC9B,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC;YAC7B,UAAU,EAAE,KAAK,CAAC,sBAAsB;YACxC,OAAO,EAAE,eAAe;YACxB,UAAU,EAAE,kBAAkB;YAC9B,SAAS,EAAE,iBAAiB;SAC7B;QACD,WAAW,EAAE;YACX,IAAI,EAAE,KAAK,CAAC,eAAe;YAC3B,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC;YAChC,OAAO,EAAE,kBAAkB;YAC3B,MAAM,EAAE,iBAAiB;SAC1B;QACD,QAAQ;QACR,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,UAAU,GAAG,MAAM,4BAA4B,EAAE,CAAC;IACxD,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;IAEjD,OAAO;QACL,qBAAqB;QACrB,mDAAmD;QACnD,kCAAkC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG;QAC9D,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,SAAS;YACZ,OAAO,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,KAAK,SAAS;YACZ,OAAO,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,KAAK,MAAM;YACT,OAAO,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,KAAK,SAAS;YACZ,OAAO,WAAW,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACjF,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,KAAa;IACtD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE;QAChC,iBAAiB,EAAE,KAAK;QACxB,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,KAAK;KACxB,CAAY,CAAC;IAEd,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,4BAA4B,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,+BAA+B,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,KAAmB,CAAC;AAC7B,CAAC;AAED,SAAS,cAAc,CAAC,QAAoB,EAAE,KAAa;IACzD,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC5B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iDAAiD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAY,EAAE,KAAa;IAC7D,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,+BAA+B,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,MAAM,SAAS,GAA4B,EAAE,CAAC;IAE9C,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QACnC,SAAS,CAAC,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,WAAW,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;QACvC,SAAS,CAAC,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,KAAK,aAAa,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAAE,CAAC;QACnD,SAAS,CAAC,qBAAqB,GAAG,aAAa,CAC7C,MAAM,CAAC,qBAAqB,EAC5B,GAAG,KAAK,yBAAyB,CAClC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAAE,CAAC;QACnD,SAAS,CAAC,qBAAqB,GAAG,mBAAmB,CACnD,MAAM,CAAC,qBAAqB,EAC5B,GAAG,KAAK,yBAAyB,CAClC,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,KAAa;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,+BAA+B,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc,EAAE,KAAa;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,+BAA+B,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,KAAa;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,uCAAuC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACxF,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,IAAY;IACjD,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,KAAK,UAAU,4BAA4B;IACzC,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC;QAClD,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC;KACpD,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,UAAoB;IAInD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,MAAM,gBAAgB,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;QACrC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/lib/opencode.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, test } from "bun:test";
2
2
  import { parse } from "jsonc-parser";
3
- import { OPENCODE_SCHEMA_URL, PACKAGE_NAME, ensurePackageConfigText, parseGuardianConfigText, renderLocalPluginShim, renderGuardianConfig, } from "./opencode.js";
3
+ import { OPENCODE_SCHEMA_URL, PACKAGE_NAME, ensurePackageConfigText, parseGuardianConfigText, renderGuardianConfig, resolvePaths, } from "./opencode.js";
4
4
  describe("ensurePackageConfigText", () => {
5
5
  test("creates a new config when none exists", () => {
6
6
  const output = ensurePackageConfigText();
@@ -37,11 +37,28 @@ describe("guardian config helpers", () => {
37
37
  reviewToastDurationMs: 6_789,
38
38
  });
39
39
  });
40
- test("renders a managed local plugin shim", async () => {
41
- const output = await renderLocalPluginShim();
42
- expect(output).toContain("Managed by vvoc");
43
- expect(output).toContain("GuardianPlugin");
44
- expect(output).toContain("file://");
40
+ });
41
+ describe("resolvePaths", () => {
42
+ test("separates global opencode and vvoc config roots", async () => {
43
+ const paths = await resolvePaths({
44
+ scope: "global",
45
+ cwd: "/workspace/project",
46
+ configDir: "/tmp/vvoc-config-home",
47
+ });
48
+ expect(paths.configHome).toBe("/tmp/vvoc-config-home");
49
+ expect(paths.opencodeBaseDir).toBe("/tmp/vvoc-config-home/opencode");
50
+ expect(paths.vvocBaseDir).toBe("/tmp/vvoc-config-home/vvoc");
51
+ expect(paths.opencodeConfigPath).toBe("/tmp/vvoc-config-home/opencode/opencode.json");
52
+ expect(paths.guardianConfigPath).toBe("/tmp/vvoc-config-home/vvoc/guardian.jsonc");
53
+ });
54
+ test("uses .vvoc for project-scoped vvoc config", async () => {
55
+ const paths = await resolvePaths({
56
+ scope: "project",
57
+ cwd: "/workspace/project",
58
+ });
59
+ expect(paths.opencodeBaseDir).toBe("/workspace/project");
60
+ expect(paths.vvocBaseDir).toBe("/workspace/project/.vvoc");
61
+ expect(paths.guardianConfigPath).toBe("/workspace/project/.vvoc/guardian.jsonc");
45
62
  });
46
63
  });
47
64
  //# sourceMappingURL=opencode.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.test.js","sourceRoot":"","sources":["../../src/lib/opencode.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAA4C,CAAC;QAExE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACzD,MAAM,KAAK,GAAG;;;IAGd,CAAC;QACD,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAA0B,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,KAAK,EAAE,6BAA6B;YACpC,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,MAAM;YACjB,qBAAqB,EAAE,EAAE;YACzB,qBAAqB,EAAE,KAAK;SAC7B,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAEvE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,6BAA6B;YACpC,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,MAAM;YACjB,qBAAqB,EAAE,EAAE;YACzB,qBAAqB,EAAE,KAAK;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,MAAM,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAE7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"opencode.test.js","sourceRoot":"","sources":["../../src/lib/opencode.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const VVOC_DIRECTORY_NAME = ".vvoc";
2
+ export declare function getConfigHome(configHomeOverride?: string): string;
3
+ export declare function getGlobalOpencodeDir(configHomeOverride?: string): string;
4
+ export declare function getGlobalVvocDir(configHomeOverride?: string): string;
5
+ export declare function getProjectVvocDir(cwd: string): string;
6
+ export declare function getProjectLegacyOpencodeDir(cwd: string): string;
@@ -0,0 +1,25 @@
1
+ import { homedir } from "node:os";
2
+ import { join } from "node:path";
3
+ export const VVOC_DIRECTORY_NAME = ".vvoc";
4
+ export function getConfigHome(configHomeOverride) {
5
+ if (typeof configHomeOverride === "string" && configHomeOverride.trim()) {
6
+ return configHomeOverride.trim();
7
+ }
8
+ if (typeof process.env.XDG_CONFIG_HOME === "string" && process.env.XDG_CONFIG_HOME.trim()) {
9
+ return process.env.XDG_CONFIG_HOME.trim();
10
+ }
11
+ return join(homedir(), ".config");
12
+ }
13
+ export function getGlobalOpencodeDir(configHomeOverride) {
14
+ return join(getConfigHome(configHomeOverride), "opencode");
15
+ }
16
+ export function getGlobalVvocDir(configHomeOverride) {
17
+ return join(getConfigHome(configHomeOverride), "vvoc");
18
+ }
19
+ export function getProjectVvocDir(cwd) {
20
+ return join(cwd, VVOC_DIRECTORY_NAME);
21
+ }
22
+ export function getProjectLegacyOpencodeDir(cwd) {
23
+ return join(cwd, ".opencode");
24
+ }
25
+ //# sourceMappingURL=vvoc-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vvoc-paths.js","sourceRoot":"","sources":["../../src/lib/vvoc-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAE3C,MAAM,UAAU,aAAa,CAAC,kBAA2B;IACvD,IAAI,OAAO,kBAAkB,KAAK,QAAQ,IAAI,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC;QACxE,OAAO,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1F,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,kBAA2B;IAC9D,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,kBAA2B;IAC1D,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAChC,CAAC"}