@osovv/vv-opencode 1.7.0 → 2.0.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.
Files changed (98) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +22 -2
  3. package/dist/commands/preset.js +1 -1
  4. package/dist/commands/preset.js.map +1 -1
  5. package/dist/index.d.ts +7 -11
  6. package/dist/index.js +53 -20
  7. package/dist/index.js.map +1 -1
  8. package/dist/plugins/analytics/index.d.ts +2 -0
  9. package/dist/plugins/analytics/index.js +13 -2
  10. package/dist/plugins/analytics/index.js.map +1 -1
  11. package/dist/plugins/analytics/v2.d.ts +21 -0
  12. package/dist/plugins/analytics/v2.js +133 -0
  13. package/dist/plugins/analytics/v2.js.map +1 -0
  14. package/dist/plugins/guardian/index.d.ts +46 -0
  15. package/dist/plugins/guardian/index.js +21 -6
  16. package/dist/plugins/guardian/index.js.map +1 -1
  17. package/dist/plugins/guardian/v2.d.ts +13 -0
  18. package/dist/plugins/guardian/v2.js +161 -0
  19. package/dist/plugins/guardian/v2.js.map +1 -0
  20. package/dist/plugins/hashline-edit/index.d.ts +33 -1
  21. package/dist/plugins/hashline-edit/index.js +38 -14
  22. package/dist/plugins/hashline-edit/index.js.map +1 -1
  23. package/dist/plugins/hashline-edit/schemas.d.ts +7 -7
  24. package/dist/plugins/hashline-edit/v2.d.ts +12 -0
  25. package/dist/plugins/hashline-edit/v2.js +145 -0
  26. package/dist/plugins/hashline-edit/v2.js.map +1 -0
  27. package/dist/plugins/model-roles/index.d.ts +2 -0
  28. package/dist/plugins/model-roles/index.js +13 -2
  29. package/dist/plugins/model-roles/index.js.map +1 -1
  30. package/dist/plugins/model-roles/v2.d.ts +24 -0
  31. package/dist/plugins/model-roles/v2.js +274 -0
  32. package/dist/plugins/model-roles/v2.js.map +1 -0
  33. package/dist/plugins/peak-hours/index.d.ts +2 -0
  34. package/dist/plugins/peak-hours/index.js +13 -2
  35. package/dist/plugins/peak-hours/index.js.map +1 -1
  36. package/dist/plugins/peak-hours/v2.d.ts +12 -0
  37. package/dist/plugins/peak-hours/v2.js +95 -0
  38. package/dist/plugins/peak-hours/v2.js.map +1 -0
  39. package/dist/plugins/secrets-redaction/index.d.ts +7 -0
  40. package/dist/plugins/secrets-redaction/index.js +17 -4
  41. package/dist/plugins/secrets-redaction/index.js.map +1 -1
  42. package/dist/plugins/secrets-redaction/v2.d.ts +14 -0
  43. package/dist/plugins/secrets-redaction/v2.js +100 -0
  44. package/dist/plugins/secrets-redaction/v2.js.map +1 -0
  45. package/dist/plugins/spec-guard/index.d.ts +2 -0
  46. package/dist/plugins/spec-guard/index.js +13 -2
  47. package/dist/plugins/spec-guard/index.js.map +1 -1
  48. package/dist/plugins/spec-guard/v2.d.ts +12 -0
  49. package/dist/plugins/spec-guard/v2.js +139 -0
  50. package/dist/plugins/spec-guard/v2.js.map +1 -0
  51. package/dist/plugins/system-context-injection/agent-contexts.d.ts +5 -0
  52. package/dist/plugins/system-context-injection/agent-contexts.js +164 -0
  53. package/dist/plugins/system-context-injection/agent-contexts.js.map +1 -0
  54. package/dist/plugins/system-context-injection/index.d.ts +2 -0
  55. package/dist/plugins/system-context-injection/index.js +16 -146
  56. package/dist/plugins/system-context-injection/index.js.map +1 -1
  57. package/dist/plugins/system-context-injection/v2.d.ts +13 -0
  58. package/dist/plugins/system-context-injection/v2.js +60 -0
  59. package/dist/plugins/system-context-injection/v2.js.map +1 -0
  60. package/dist/plugins/tool-history-compaction/index.d.ts +2 -0
  61. package/dist/plugins/tool-history-compaction/index.js +13 -2
  62. package/dist/plugins/tool-history-compaction/index.js.map +1 -1
  63. package/dist/plugins/tool-history-compaction/v2.d.ts +11 -0
  64. package/dist/plugins/tool-history-compaction/v2.js +56 -0
  65. package/dist/plugins/tool-history-compaction/v2.js.map +1 -0
  66. package/dist/plugins/v2-runtime/config-watcher.d.ts +26 -0
  67. package/dist/plugins/v2-runtime/config-watcher.js +111 -0
  68. package/dist/plugins/v2-runtime/config-watcher.js.map +1 -0
  69. package/dist/plugins/v2-runtime/index.d.ts +50 -0
  70. package/dist/plugins/v2-runtime/index.js +114 -0
  71. package/dist/plugins/v2-runtime/index.js.map +1 -0
  72. package/dist/plugins/v2-runtime/location-config.d.ts +51 -0
  73. package/dist/plugins/v2-runtime/location-config.js +91 -0
  74. package/dist/plugins/v2-runtime/location-config.js.map +1 -0
  75. package/dist/plugins/v2-runtime/setup.d.ts +48 -0
  76. package/dist/plugins/v2-runtime/setup.js +174 -0
  77. package/dist/plugins/v2-runtime/setup.js.map +1 -0
  78. package/dist/plugins/web-tools/index.d.ts +2 -0
  79. package/dist/plugins/web-tools/index.js +13 -2
  80. package/dist/plugins/web-tools/index.js.map +1 -1
  81. package/dist/plugins/web-tools/v2.d.ts +11 -0
  82. package/dist/plugins/web-tools/v2.js +99 -0
  83. package/dist/plugins/web-tools/v2.js.map +1 -0
  84. package/dist/plugins/workflow/index.d.ts +2 -0
  85. package/dist/plugins/workflow/index.js +13 -2
  86. package/dist/plugins/workflow/index.js.map +1 -1
  87. package/dist/plugins/workflow/results.d.ts +16 -16
  88. package/dist/plugins/workflow/v2.d.ts +58 -0
  89. package/dist/plugins/workflow/v2.js +181 -0
  90. package/dist/plugins/workflow/v2.js.map +1 -0
  91. package/dist/tui.d.ts +1 -0
  92. package/dist/tui.js +41 -6
  93. package/dist/tui.js.map +1 -1
  94. package/package.json +13 -5
  95. package/schemas/vvoc/v3.json +1 -1
  96. package/server.js +7 -0
  97. package/templates/skills/vv-execute/references/tool-contracts.md +1 -1
  98. package/tui.js +7 -0
@@ -0,0 +1,100 @@
1
+ // FILE: src/plugins/secrets-redaction/v2.ts
2
+ // VERSION: 1.0.0
3
+ // START_MODULE_CONTRACT
4
+ // PURPOSE: Redact secrets from outgoing model requests and restore placeholders in tool inputs on the OpenCode v2 runtime with per-session location resolution.
5
+ // SCOPE: v2 setup only: redact message and tool-part state through the session context hook, restore placeholders in tool arguments through the execute.before hook, resolve the pattern configuration per session location, keep the placeholder session with its TTL cleanup, and stay fail-open on handler errors.
6
+ // DEPENDS: [@opencode/plugin, src/lib/config-layers.ts, src/plugins/secrets-redaction/config.ts, src/plugins/secrets-redaction/patterns.ts, src/plugins/secrets-redaction/restore.ts, src/plugins/secrets-redaction/deep.ts, src/plugins/secrets-redaction/session.ts, src/plugins/v2-runtime/setup.ts]
7
+ // LINKS: [M-PLUGIN-SECRETS-REDACTION, V-M-PLUGIN-SECRETS-REDACTION, M-PLUGIN-V2-RUNTIME]
8
+ // ROLE: RUNTIME
9
+ // MAP_MODE: EXPORTS
10
+ // END_MODULE_CONTRACT
11
+ //
12
+ // START_MODULE_MAP
13
+ // setupSecretsRedactionV2 - Register the redaction and restoration hooks for one OpenCode v2 plugin context.
14
+ // END_MODULE_MAP
15
+ //
16
+ // START_CHANGE_SUMMARY
17
+ // LAST_CHANGE: [C-OPENCODE-V2-MIGRATION T-003 - Ported secrets redaction onto v2 session context and tool hooks.]
18
+ // END_CHANGE_SUMMARY
19
+ import { isVvocPluginEnabled } from "../../lib/plugin-toggle-config.js";
20
+ import { resolveSecretsRedactionRuntimeConfig } from "./config.js";
21
+ import { buildPatternSet } from "./patterns.js";
22
+ import { redactDeep, restoreDeep } from "./deep.js";
23
+ import { PlaceholderSession } from "./session.js";
24
+ import { PLACEHOLDER_PREFIX, redactMessageParts } from "./index.js";
25
+ // START_BLOCK_SETUP_SECRETS_REDACTION_V2
26
+ /**
27
+ * Register the secrets-redaction hooks on the v2 runtime.
28
+ *
29
+ * The v1 experimental.chat.messages.transform becomes the v2 session context
30
+ * hook redacting the mutable request messages (including tool-part state),
31
+ * and the v1 tool.execute.before restore keeps the identical role on the v2
32
+ * tool hook. The v1 experimental.text.complete restore has no v2 equivalent;
33
+ * transient ctx.session.generate results are covered by the generate hook.
34
+ * Pattern configuration resolves per session location, and every handler
35
+ * failure degrades fail-open with a logged warning.
36
+ */
37
+ export async function setupSecretsRedactionV2(adapter) {
38
+ const perLocation = new Map();
39
+ async function resolveForSession(sessionID) {
40
+ const snapshot = await adapter.resolver.forSession(sessionID, (input) => adapter.ctx.session.get(input));
41
+ if (!snapshot || !isVvocPluginEnabled(snapshot.config, "secrets-redaction"))
42
+ return undefined;
43
+ const existing = perLocation.get(snapshot.directory);
44
+ if (existing)
45
+ return existing;
46
+ const { config } = resolveSecretsRedactionRuntimeConfig({ config: snapshot.config });
47
+ const entry = {
48
+ patternSet: buildPatternSet(config.patterns),
49
+ session: new PlaceholderSession({
50
+ prefix: PLACEHOLDER_PREFIX,
51
+ ttlMs: config.ttlMs,
52
+ maxMappings: config.maxMappings,
53
+ secret: config.secret,
54
+ }),
55
+ };
56
+ perLocation.set(snapshot.directory, entry);
57
+ return entry;
58
+ }
59
+ const contextHook = await adapter.ctx.session.hook("context", async (event) => {
60
+ try {
61
+ const entry = await resolveForSession(String(event.sessionID));
62
+ if (!entry)
63
+ return;
64
+ for (const message of event.messages) {
65
+ redactMessageParts((message.parts ?? []), entry.patternSet, entry.session);
66
+ // v2 tool parts carry their payload under part.state identically to v1.
67
+ for (const part of (message.parts ?? [])) {
68
+ if (part.type === "tool" && part.state && typeof part.state === "object") {
69
+ redactDeep(part.state, entry.patternSet, entry.session);
70
+ if (part.metadata) {
71
+ redactDeep(part.metadata, entry.patternSet, entry.session);
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ catch (error) {
78
+ console.warn(`[vvoc][secrets-redaction] context hook failed (fail-open): ${String(error)}`);
79
+ }
80
+ });
81
+ const beforeHook = await adapter.ctx.tool.hook("execute.before", async (event) => {
82
+ try {
83
+ const entry = await resolveForSession(String(event.sessionID));
84
+ if (!entry)
85
+ return;
86
+ if (event.input && typeof event.input === "object") {
87
+ restoreDeep(event.input, entry.session);
88
+ }
89
+ }
90
+ catch (error) {
91
+ console.warn(`[vvoc][secrets-redaction] restore hook failed (fail-open): ${String(error)}`);
92
+ }
93
+ });
94
+ return async () => {
95
+ await contextHook.dispose();
96
+ await beforeHook.dispose();
97
+ };
98
+ }
99
+ // END_BLOCK_SETUP_SECRETS_REDACTION_V2
100
+ //# sourceMappingURL=v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2.js","sourceRoot":"","sources":["../../../src/plugins/secrets-redaction/v2.ts"],"names":[],"mappings":"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"}
@@ -37,3 +37,5 @@ export declare function lintSpecGuardFile(deps: SpecGuardPluginDependencies, fil
37
37
  */
38
38
  export declare function createSpecGuardPlugin(dependencies?: Partial<SpecGuardPluginDependencies>): Plugin;
39
39
  export declare const SpecGuardPlugin: Plugin;
40
+ declare const _default: import("../v2-runtime/index.js").DualPlugin;
41
+ export default _default;
@@ -3,7 +3,7 @@
3
3
  // START_MODULE_CONTRACT
4
4
  // PURPOSE: Annotate reads and validate writes of active .vvoc spec-package XML artifacts with lint verdicts, failing writes in enforce mode only when ERROR-severity findings exist.
5
5
  // SCOPE: Startup vvoc snapshot resolution and spec-guard entry parsing, active-vs-archive path gating, cache-backed lint runs with cross-file sibling spec resolution for plans, read annotation through tool.execute.after output mutation, write validation through tool.execute.before for full-content writes and tool.execute.after for edits, enforce throwing only on ERROR findings, and fail-open degradation to warning logs.
6
- // DEPENDS: [@opencode-ai/plugin, src/lib/config-layers.ts, src/lib/plugin-toggle-config.ts, src/lib/spec-lint.ts, src/lib/spec-lint-cache.ts]
6
+ // DEPENDS: [@opencode-ai/plugin, src/lib/config-layers.ts, src/lib/plugin-toggle-config.ts, src/lib/spec-lint.ts, src/lib/spec-lint-cache.ts, src/plugins/v2-runtime/index.ts]
7
7
  // LINKS: [M-PLUGIN-SPEC-GUARD, M-SPEC-LINT, M-PLUGIN-TOGGLE-CONFIG]
8
8
  // ROLE: RUNTIME
9
9
  // MAP_MODE: EXPORTS
@@ -20,10 +20,11 @@
20
20
  // lintSpecGuardFile - Runs a cache-backed lint for one artifact with its sibling spec when applicable.
21
21
  // createSpecGuardPlugin - Builds the spec-guard server plugin with injectable dependencies.
22
22
  // SpecGuardPlugin - Default production spec-guard server plugin.
23
+ // default - Dual subpath entrypoint: v2 setup() seam plus v1 server() delegating to the named factory.
23
24
  // END_MODULE_MAP
24
25
  //
25
26
  // START_CHANGE_SUMMARY
26
- // LAST_CHANGE: [DIRECT-FIX - Read-path verdicts now derive from the artifact file on disk instead of the tool's rendered output, whose envelope tags and line prefixes are host-specific.]
27
+ // LAST_CHANGE: [C-OPENCODE-V2-MIGRATION T-001 - Added the dual subpath entrypoint so the plugin loads under OpenCode v1 via server() and v2 via setup(). Prior: DIRECT-FIX - Read-path verdicts now derive from the artifact file on disk instead of the tool's rendered output, whose envelope tags and line prefixes are host-specific.]
27
28
  // END_CHANGE_SUMMARY
28
29
  import { loadVvocConfig } from "../../lib/config-layers.js";
29
30
  import { isVvocPluginEnabled } from "../../lib/plugin-toggle-config.js";
@@ -250,4 +251,14 @@ function isWriteToolArgs(args) {
250
251
  }
251
252
  export const SpecGuardPlugin = createSpecGuardPlugin();
252
253
  // END_BLOCK_PLUGIN_ENTRY
254
+ // START_BLOCK_DUAL_SUBPATH_ENTRY
255
+ import { defineDualPlugin } from "../v2-runtime/index.js";
256
+ import { createV2Adapter } from "../v2-runtime/setup.js";
257
+ import { setupSpecGuardV2 } from "./v2.js";
258
+ export default defineDualPlugin({
259
+ id: "vvoc.spec-guard",
260
+ v1: SpecGuardPlugin,
261
+ v2: (ctx) => setupSpecGuardV2(createV2Adapter(ctx)),
262
+ });
263
+ // END_BLOCK_DUAL_SUBPATH_ENTRY
253
264
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/spec-guard/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/spec-guard/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Plugin as V2Plugin } from "@opencode/plugin";
2
+ import type { V2AdapterContext } from "../v2-runtime/setup.js";
3
+ /**
4
+ * Register the spec-guard hooks on the v2 runtime.
5
+ *
6
+ * The v1 tool.execute.before write refusal becomes a throwing v2
7
+ * execute.before hook (the only v2 hook whose failure rejects the tool call),
8
+ * and the v1 output annotation becomes a mutation of the completed tool
9
+ * result's content. Mode and toggle resolve per session location, and every
10
+ * non-enforce failure degrades fail-open with a logged warning.
11
+ */
12
+ export declare function setupSpecGuardV2(adapter: V2AdapterContext): Promise<V2Plugin.Cleanup | void>;
@@ -0,0 +1,139 @@
1
+ // FILE: src/plugins/spec-guard/v2.ts
2
+ // VERSION: 1.0.0
3
+ // START_MODULE_CONTRACT
4
+ // PURPOSE: Register spec-guard read annotation and write enforcement on the OpenCode v2 tool hooks with per-session location resolution.
5
+ // SCOPE: v2 setup only: annotate read and edit tool results with lint verdicts, refuse enforce-mode full-content writes carrying ERROR findings by failing the tool call, resolve mode and toggle per session location, and degrade fail-open with logged warnings.
6
+ // DEPENDS: [@opencode/plugin, src/lib/config-layers.ts, src/lib/spec-lint-cache.ts, src/plugins/spec-guard/index.ts, src/plugins/v2-runtime/setup.ts]
7
+ // LINKS: [M-PLUGIN-SPEC-GUARD, V-M-PLUGIN-SPEC-GUARD, M-PLUGIN-V2-RUNTIME]
8
+ // ROLE: RUNTIME
9
+ // MAP_MODE: EXPORTS
10
+ // END_MODULE_CONTRACT
11
+ //
12
+ // START_MODULE_MAP
13
+ // setupSpecGuardV2 - Register the spec-guard tool hooks for one OpenCode v2 plugin context.
14
+ // END_MODULE_MAP
15
+ //
16
+ // START_CHANGE_SUMMARY
17
+ // LAST_CHANGE: [C-OPENCODE-V2-MIGRATION T-003 - Ported spec-guard onto v2 tool hooks with per-session mode resolution.]
18
+ // END_CHANGE_SUMMARY
19
+ import { createSpecLintCache } from "../../lib/spec-lint-cache.js";
20
+ import { readFile } from "node:fs/promises";
21
+ import { formatSpecGuardVerdict, isSpecGuardTargetPath, lintSpecGuardFile, SPEC_GUARD_VERDICT_TAG, specGuardPathFromArgs, } from "./index.js";
22
+ // START_BLOCK_RESOLVE_V2_MODE
23
+ async function resolveMode(adapter, sessionID) {
24
+ try {
25
+ const snapshot = await adapter.resolver.forSession(sessionID, (input) => adapter.ctx.session.get(input));
26
+ if (!snapshot)
27
+ return "off";
28
+ const entry = snapshot.config.plugins?.["spec-guard"];
29
+ if (entry === undefined || entry === true)
30
+ return "warn";
31
+ if (entry === false)
32
+ return "off";
33
+ if (typeof entry === "object" && entry !== null) {
34
+ const mode = entry.mode;
35
+ if (mode === "enforce" || mode === "warn")
36
+ return mode;
37
+ return "off";
38
+ }
39
+ return "warn";
40
+ }
41
+ catch {
42
+ return "off";
43
+ }
44
+ }
45
+ // END_BLOCK_RESOLVE_V2_MODE
46
+ // START_BLOCK_SETUP_SPEC_GUARD_V2
47
+ /**
48
+ * Register the spec-guard hooks on the v2 runtime.
49
+ *
50
+ * The v1 tool.execute.before write refusal becomes a throwing v2
51
+ * execute.before hook (the only v2 hook whose failure rejects the tool call),
52
+ * and the v1 output annotation becomes a mutation of the completed tool
53
+ * result's content. Mode and toggle resolve per session location, and every
54
+ * non-enforce failure degrades fail-open with a logged warning.
55
+ */
56
+ export async function setupSpecGuardV2(adapter) {
57
+ const cache = await createSpecLintCache();
58
+ const readFileDependency = (path) => readFile(path, "utf8").catch(() => undefined);
59
+ const log = async (level, message, _extra) => {
60
+ if (level === "warn" || process.env.DEBUG?.includes("vvoc")) {
61
+ console.log(`[spec-guard][${level}] ${message}`);
62
+ }
63
+ };
64
+ const guard = async (operation, run) => {
65
+ try {
66
+ return await run();
67
+ }
68
+ catch (error) {
69
+ if (error instanceof Error && error.message.includes(SPEC_GUARD_VERDICT_TAG))
70
+ throw error;
71
+ await log("warn", `spec-guard ${operation} failed open: ${String(error)}`);
72
+ return undefined;
73
+ }
74
+ };
75
+ const before = await adapter.ctx.tool.hook("execute.before", async (event) => {
76
+ const mode = await resolveMode(adapter, String(event.sessionID));
77
+ if (mode !== "enforce")
78
+ return;
79
+ await guard("before-write inspection", async () => {
80
+ const path = specGuardPathFromArgs(event.input);
81
+ if (!path || !isSpecGuardTargetPath(path))
82
+ return;
83
+ const content = event.input?.content;
84
+ if (typeof content !== "string")
85
+ return;
86
+ const { verdict } = await lintSpecGuardFile({ mode: () => "enforce", cache, readFile: readFileDependency, log }, path, content);
87
+ if (!verdict.ok) {
88
+ throw new Error(`${SPEC_GUARD_VERDICT_TAG} enforce: refusing to write ${path} with ERROR-severity lint findings:\n${formatSpecGuardVerdict(verdict, false)}`);
89
+ }
90
+ });
91
+ });
92
+ const after = await adapter.ctx.tool.hook("execute.after", async (event) => {
93
+ const tool = String(event.tool);
94
+ if (tool !== "read" && tool !== "edit" && tool !== "write")
95
+ return;
96
+ if (event.status !== "completed")
97
+ return;
98
+ const mode = await resolveMode(adapter, String(event.sessionID));
99
+ if (mode === "off")
100
+ return;
101
+ await guard("output annotation", async () => {
102
+ const path = specGuardPathFromArgs(event.input);
103
+ if (!path || !isSpecGuardTargetPath(path))
104
+ return;
105
+ const { verdict, cached } = await lintSpecGuardFile({ mode: () => mode, cache, readFile: readFileDependency, log }, path);
106
+ const result = event.result;
107
+ const appendAnnotation = (annotation, leading = false) => {
108
+ if (typeof result.content === "string") {
109
+ result.content = leading
110
+ ? `${annotation}\n\n${result.content}`
111
+ : `${result.content}\n\n${annotation}`;
112
+ }
113
+ else if (Array.isArray(result.content)) {
114
+ result.content = leading
115
+ ? [{ type: "text", text: annotation }, ...result.content]
116
+ : [...result.content, { type: "text", text: annotation }];
117
+ }
118
+ else {
119
+ result.content = annotation;
120
+ }
121
+ };
122
+ if (tool === "read") {
123
+ appendAnnotation(formatSpecGuardVerdict(verdict, cached));
124
+ return;
125
+ }
126
+ if (mode === "enforce" && tool === "edit" && !verdict.ok) {
127
+ appendAnnotation(`${SPEC_GUARD_VERDICT_TAG} enforce: ${path} now contains ERROR-severity lint findings; fix them before continuing\n\n${formatSpecGuardVerdict(verdict, cached)}`, true);
128
+ return;
129
+ }
130
+ appendAnnotation(formatSpecGuardVerdict(verdict, cached));
131
+ });
132
+ });
133
+ return async () => {
134
+ await before.dispose();
135
+ await after.dispose();
136
+ };
137
+ }
138
+ // END_BLOCK_SETUP_SPEC_GUARD_V2
139
+ //# sourceMappingURL=v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2.js","sourceRoot":"","sources":["../../../src/plugins/spec-guard/v2.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,iBAAiB;AACjB,wBAAwB;AACxB,2IAA2I;AAC3I,sQAAsQ;AACtQ,wJAAwJ;AACxJ,6EAA6E;AAC7E,kBAAkB;AAClB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,8FAA8F;AAC9F,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,0HAA0H;AAC1H,qBAAqB;AAIrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,8BAA8B;AAC9B,KAAK,UAAU,WAAW,CACxB,OAAyB,EACzB,SAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CACtE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAC/B,CAAC;QACF,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,MAAM,KAAK,GAAI,QAAQ,CAAC,MAAM,CAAC,OAA+C,EAAE,CAAC,YAAY,CAAC,CAAC;QAC/F,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QACzD,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,IAAI,GAAI,KAA4B,CAAC,IAAI,CAAC;YAChD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM;gBAAE,OAAO,IAAI,CAAC;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AACD,4BAA4B;AAE5B,kCAAkC;AAClC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAyB;IAEzB,MAAM,KAAK,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC1C,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAG,KAAK,EAAE,KAAsB,EAAE,OAAe,EAAE,MAAgC,EAAE,EAAE;QAC9F,IAAI,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,KAAK,OAAO,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,KAAK,EAAK,SAAiB,EAAE,GAAqB,EAA0B,EAAE;QAC1F,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC1F,MAAM,GAAG,CAAC,MAAM,EAAE,cAAc,SAAS,iBAAiB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3E,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO;QAC/B,MAAM,KAAK,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;gBAAE,OAAO;YAClD,MAAM,OAAO,GAAI,KAAK,CAAC,KAA6C,EAAE,OAAO,CAAC;YAC9E,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,OAAO;YACxC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAiB,CACzC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,EAAE,EACnE,IAAI,EACJ,OAAO,CACR,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CACb,GAAG,sBAAsB,+BAA+B,IAAI,wCAAwC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAC7I,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO;QACnE,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO;QACzC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO;QAC3B,MAAM,KAAK,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;gBAAE,OAAO;YAClD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CACjD,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAC9D,IAAI,CACL,CAAC;YAEF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAuE,CAAC;YAC7F,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,OAAO,GAAG,KAAK,EAAE,EAAE;gBAC/D,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACvC,MAAM,CAAC,OAAO,GAAG,OAAO;wBACtB,CAAC,CAAC,GAAG,UAAU,OAAO,MAAM,CAAC,OAAO,EAAE;wBACtC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,OAAO,UAAU,EAAE,CAAC;gBAC3C,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzC,MAAM,CAAC,OAAO,GAAG,OAAO;wBACtB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;wBACzD,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC;gBAC9B,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,gBAAgB,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC1D,OAAO;YACT,CAAC;YACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBACzD,gBAAgB,CACd,GAAG,sBAAsB,aAAa,IAAI,6EAA6E,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAChK,IAAI,CACL,CAAC;gBACF,OAAO;YACT,CAAC;YACD,gBAAgB,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,IAAI,EAAE;QAChB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC;AACD,gCAAgC"}
@@ -0,0 +1,5 @@
1
+ import type { ResolvedOrchestrationPolicy } from "../../lib/orchestration.js";
2
+ export declare function createKnownSubagentSet(): Set<string>;
3
+ export declare function shouldInjectForAgent(agentName: string | undefined, knownSubagents: Set<string>): boolean;
4
+ /** Returns universal primary guidance and, only for vv-controller, one concrete policy. */
5
+ export declare function getSystemContextsForAgent(agentName: string | undefined, policy: ResolvedOrchestrationPolicy): readonly string[];
@@ -0,0 +1,164 @@
1
+ // FILE: src/plugins/system-context-injection/agent-contexts.ts
2
+ // VERSION: 1.0.0
3
+ // START_MODULE_CONTRACT
4
+ // PURPOSE: Own the shared system-context blocks and agent filters used by both the v1 chat.message hook and the v2 session context hook.
5
+ // SCOPE: Pure constants and filters only: universal and explore system contexts, known subagent sets, injection eligibility, and per-agent context selection.
6
+ // DEPENDS: [src/lib/managed-agents.ts, src/lib/orchestration.ts]
7
+ // LINKS: [M-PLUGIN-SYSTEM-CONTEXT-INJECTION, V-M-PLUGIN-SYSTEM-CONTEXT-INJECTION]
8
+ // ROLE: RUNTIME
9
+ // MAP_MODE: EXPORTS
10
+ // END_MODULE_CONTRACT
11
+ //
12
+ // START_MODULE_MAP
13
+ // createKnownSubagentSet - Builds the built-in, plugin-managed, and vvoc-managed subagent name set.
14
+ // shouldInjectForAgent - Decides whether one agent receives system context injection.
15
+ // getSystemContextsForAgent - Returns the system context blocks for one agent and orchestration policy.
16
+ // END_MODULE_MAP
17
+ //
18
+ // START_CHANGE_SUMMARY
19
+ // LAST_CHANGE: [C-OPENCODE-V2-MIGRATION T-004 - Extracted the shared agent context blocks and filters for dual-runtime reuse.]
20
+ // END_CHANGE_SUMMARY
21
+ import { MANAGED_SUBAGENT_NAMES } from "../../lib/managed-agents.js";
22
+ const BUILT_IN_SUBAGENTS = ["general"];
23
+ const PLUGIN_MANAGED_SUBAGENTS = ["guardian"];
24
+ const INTERNAL_PRIMARY_AGENTS = ["compaction", "title", "summary"];
25
+ const SELF_SUFFICIENT_PRIMARY_AGENTS = [];
26
+ const EXPLORE_SUBAGENT = "explore";
27
+ const VV_CONTROLLER_AGENT = "vv-controller";
28
+ const UNIVERSAL_PRIMARY_SYSTEM_CONTEXTS = [
29
+ [
30
+ "<semantic_continuity>",
31
+ "Reuse stable domain terms from the user request and the repository.",
32
+ "When the repository already has a canonical name for a concept, keep that name.",
33
+ "If the user's wording conflicts with repository terminology, map it once and continue with the repository's canonical term.",
34
+ "Keep stable domain terms across planning, implementation, review, and reporting.",
35
+ "</semantic_continuity>",
36
+ ].join("\n"),
37
+ [
38
+ "<assumption_discipline>",
39
+ "Do not make silent material assumptions.",
40
+ "A material assumption is one that affects behavior, scope, API shape, schema, UX, data meaning, or verification.",
41
+ "If a material assumption is necessary, state it explicitly and carry its effect into the result report.",
42
+ "If a material assumption later becomes false, stop and reroute.",
43
+ "Resolve repository-answerable technical questions from the established code, contracts, and tests yourself; only a genuine business-semantics fork needs a user decision.",
44
+ "When a request assumes something that does not exist (a library, file, or behavior), surface the false premise and investigate the actual mechanism; continue only if the original goal stays unambiguous and within the approved scope, and never silently substitute a different goal or add an unnecessary dependency to make the premise true.",
45
+ "Report honest residual uncertainty: an unverified material condition is named as unverified, never presented as a passed check.",
46
+ "</assumption_discipline>",
47
+ ].join("\n"),
48
+ [
49
+ "<execution_source_and_authority>",
50
+ "Execution ownership, requirement source, and authority are distinct: a native spec/plan package, a provided plan, and the current conversation are all valid sources, and none of them by itself implies a different ownership model.",
51
+ "Required reviews are exactly those declared by the selected source, explicitly requested by the user, or explicitly registered by the controller; do not invent a universal final-review pair.",
52
+ "When the user explicitly authorizes autonomous completion, record it as a bounded advance authority with a finite shared reserve. Use it only after ordinary allowances are exhausted, disclose material decisions without turning each into a blocking question, and still respect reserved stops, host permissions, and destructive, publication, or credential operations.",
53
+ "Report completion honestly as controller-accepted when no independent review was assigned, and as independently reviewed only when every registered obligation actually passed for the current result.",
54
+ "</execution_source_and_authority>",
55
+ ].join("\n"),
56
+ [
57
+ "<correctness_obligations>",
58
+ "For behavior changes, run a compact correctness cycle before reporting done: state the target effect, derive the material properties that must be preserved from the request and established contracts, identify the directly affected consumers, challenge at least one material assumption with a diagnostic counterexample, choose verification proportionate to the risk, report the observed result, and name the remaining uncertainty.",
59
+ "Separate write scope (what you may edit), impact scope (behavior that could change), and verification scope (what you actually check). Investigating directly affected consumers to understand impact is required; broadening writes beyond the approved scope is not — request a scope decision instead.",
60
+ "Choose verification at the level where the risk arises. Derive test expectations from the contract and the request, not from the implementation's current output, and ground mocks in the dependency's established contract rather than in whatever makes the change pass.",
61
+ "Report honestly what was inspected, what was reasoned about, and what was executed as a check. The absence of a discovered defect is not proof of correctness: a substantive completion claim needs observed evidence, and an unverified material condition is reported as remaining uncertainty, never presented as a passed check.",
62
+ "Once required checks substantiate the material claims for the current files and inputs, move forward; recheck for changed inputs, uncovered material properties, conflicting evidence, or a mandatory gate, not for reassurance alone.",
63
+ "Interpret test results as evidence against the request and established contracts, not as the authoritative specification: a failing test that contradicts the agreed contract is a discrepancy to surface, not an automatic reason to rewrite code or tests.",
64
+ "Unrelated informational or trivial documentation work needs none of this ceremony.",
65
+ "</correctness_obligations>",
66
+ ].join("\n"),
67
+ [
68
+ "<working_state>",
69
+ "For non-trivial work, stabilize a compact working state before acting: goal, current route, constraints, non-goals when relevant, assumptions, verification target, current unknown, and reroute if.",
70
+ "Check that state against the original request before and while acting; a constraint dropped early wastes the downstream chain.",
71
+ "Keep it compact and revise it when evidence changes.",
72
+ "Surface it explicitly when blocked, rerouting, or handing off to the user.",
73
+ "</working_state>",
74
+ ].join("\n"),
75
+ [
76
+ "<editing_workflow>",
77
+ "When editing files, prefer the `edit` tool over shell-based rewrites when it is available.",
78
+ "Read the file first, then use exact `line#hash#anchor` refs from the latest `read` output when present.",
79
+ "Reserve `bash` for tests, builds, git, and other non-file-edit commands.",
80
+ "</editing_workflow>",
81
+ ].join("\n"),
82
+ [
83
+ "<reroute_on_evidence>",
84
+ "When new evidence invalidates the current route, stop and reroute.",
85
+ "Reroute when root cause or expected behavior remains unclear, scope crosses an unexpected boundary, or requirement ambiguity blocks safe progress.",
86
+ "When rerouting, state the current route, the trigger, the next route, and why the previous route is no longer safe.",
87
+ "A retry must carry a named diagnosis of the prior failure; a blank retry is the same attempt again.",
88
+ "A reopen or reroute trigger is concrete — contradictory evidence, a specific error or counterexample, changed requirements, or changed relevant inputs. Vague doubt or unsupported pressure is not itself a trigger: retain a supported conclusion with a brief justification and ask for a specific discrepancy only when needed, while an explicit user change in requirements follows the existing scope and approval process rather than a factual debate.",
89
+ "An unchecked claim is not settled: run the required checks before treating a conclusion as final.",
90
+ "</reroute_on_evidence>",
91
+ ].join("\n"),
92
+ [
93
+ "<anti_drift_budget>",
94
+ "When repeated attempts do not converge, stop and summarize.",
95
+ "Drift signals include repeated file reading without a stable path, repeated speculative fixes without stronger evidence, 2 major strategy changes for the same task, 2 review rounds without convergence, or requirement interpretation changing repeatedly during execution.",
96
+ "When drift signals accumulate, report what was learned, what remains unknown, and which route is now safest.",
97
+ "</anti_drift_budget>",
98
+ ].join("\n"),
99
+ [
100
+ "<project_overlays>",
101
+ "If the task context or repository provides project-specific vocabulary, preferred patterns, boundaries, verification commands, architecture notes, or examples, treat them as project-owned overlays.",
102
+ "Prefer those overlays over generic vvoc defaults when they do not conflict with the user's request.",
103
+ "Use only overlays provided in the task context or repository.",
104
+ "</project_overlays>",
105
+ ].join("\n"),
106
+ [
107
+ "<repository_memory>",
108
+ "If `.vvoc/lessons/index.xml` or `.vvoc/runbooks/index.xml` exists, inspect relevant index entries before debugging, fixing, changing behavior, operating on, architecting, or investigating repository-specific issues.",
109
+ "Load only entry files whose slug, summary, or applicability signal appears relevant to the current task.",
110
+ "Treat `.vvoc/lessons` and `.vvoc/runbooks` as advisory agent-facing repository memory, not as stronger authority than explicit user instructions, code, tests, or repository-owned instructions.",
111
+ "After a long development, debugging, bugfix, ops, or investigation session with reusable findings, consider using the vv-reflect skill to propose durable lessons or runbooks.",
112
+ "</repository_memory>",
113
+ ].join("\n"),
114
+ [
115
+ "<delivery_discipline>",
116
+ "Keep internal and scratch reasoning compact; anything user- or tool-facing must be clean, complete language with no half-compressed notation or stray markers.",
117
+ "</delivery_discipline>",
118
+ ].join("\n"),
119
+ ];
120
+ const EXPLORE_SYSTEM_CONTEXTS = [
121
+ [
122
+ "<explore_role>",
123
+ "You are a repository search-and-discovery worker.",
124
+ "Behave like grep/glob/fuzzy-search over the repo: locate relevant files, symbols, call sites, config entries, tests, and line ranges.",
125
+ "Do not act like a file-dumping reader and never act like an editor.",
126
+ "Do not return exact file contents, large pasted excerpts, or rewrite proposals unless the parent explicitly asks for them.",
127
+ "Default output: a short summary plus a compact, prioritized list of relevant paths with why they matter and line references or anchors when useful.",
128
+ "Use short quoted snippets only when needed to disambiguate a match or prove a finding.",
129
+ "If full contents seem necessary, return the path and the most relevant line ranges or anchors so the parent session can read the file directly.",
130
+ "Keep results capped and focused. Prefer the smallest useful set of references over broad dumps.",
131
+ "</explore_role>",
132
+ ].join("\n"),
133
+ ];
134
+ // START_BLOCK_AGENT_FILTERS
135
+ export function createKnownSubagentSet() {
136
+ return new Set([...BUILT_IN_SUBAGENTS, ...PLUGIN_MANAGED_SUBAGENTS, ...MANAGED_SUBAGENT_NAMES]);
137
+ }
138
+ export function shouldInjectForAgent(agentName, knownSubagents) {
139
+ if (!agentName) {
140
+ return false;
141
+ }
142
+ if (knownSubagents.has(agentName)) {
143
+ return false;
144
+ }
145
+ if (INTERNAL_PRIMARY_AGENTS.includes(agentName)) {
146
+ return false;
147
+ }
148
+ if (SELF_SUFFICIENT_PRIMARY_AGENTS.includes(agentName)) {
149
+ return false;
150
+ }
151
+ return true;
152
+ }
153
+ /** Returns universal primary guidance and, only for vv-controller, one concrete policy. */
154
+ export function getSystemContextsForAgent(agentName, policy) {
155
+ if (agentName === EXPLORE_SUBAGENT) {
156
+ return EXPLORE_SYSTEM_CONTEXTS;
157
+ }
158
+ if (agentName === VV_CONTROLLER_AGENT) {
159
+ return [...UNIVERSAL_PRIMARY_SYSTEM_CONTEXTS, policy.controllerSystemContext];
160
+ }
161
+ return UNIVERSAL_PRIMARY_SYSTEM_CONTEXTS;
162
+ }
163
+ // END_BLOCK_AGENT_FILTERS
164
+ //# sourceMappingURL=agent-contexts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-contexts.js","sourceRoot":"","sources":["../../../src/plugins/system-context-injection/agent-contexts.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,4 @@
1
1
  import { type Plugin } from "@opencode-ai/plugin";
2
2
  export declare const SystemContextInjectionPlugin: Plugin;
3
+ declare const _default: import("../v2-runtime/index.js").DualPlugin;
4
+ export default _default;