@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,274 @@
1
+ // FILE: src/plugins/model-roles/v2.ts
2
+ // VERSION: 1.0.0
3
+ // START_MODULE_CONTRACT
4
+ // PURPOSE: Resolve vv-role model references through OpenCode v2 replayable agent and model transforms with config-file-driven hot reload.
5
+ // SCOPE: v2 setup only: load the canonical role map for the plugin-load location, rewrite role-referenced agent models inside the agent transform, apply role-referenced top-level model and small_model selections through the model transform default and the built-in title agent, pin each session's model to its role-resolved selection on the first prompt (probe-verified v2 mechanism), watch the project vvoc config and reload both domains on change, and fail closed per reference with a logged error instead of breaking the server.
6
+ // DEPENDS: [@opencode/plugin, src/lib/config-layers.ts, src/lib/model-roles.ts, src/lib/plugin-toggle-config.ts, src/plugins/v2-runtime/setup.ts]
7
+ // LINKS: [M-PLUGIN-MODEL-ROLES, V-M-PLUGIN-MODEL-ROLES, M-MODEL-ROLES, M-PLUGIN-V2-RUNTIME]
8
+ // ROLE: RUNTIME
9
+ // MAP_MODE: EXPORTS
10
+ // END_MODULE_CONTRACT
11
+ //
12
+ // START_MODULE_MAP
13
+ // setupModelRolesV2 - Register the role-resolving agent and model transforms with hot reload for one OpenCode v2 plugin context.
14
+ // RoleResolutionState - Captured, replayable inputs for the transforms: role map, default-model reference, and title-model reference.
15
+ // END_MODULE_MAP
16
+ //
17
+ // START_CHANGE_SUMMARY
18
+ // LAST_CHANGE: [C-OPENCODE-V2-MIGRATION T-006 - Ported role resolution onto v2 transforms with restart-free preset switching.]
19
+ // END_CHANGE_SUMMARY
20
+ import { loadVvocConfigForRead } from "../../lib/config-layers.js";
21
+ import { isRoleReference, parseModelSelection, resolveRoleReference, } from "../../lib/model-roles.js";
22
+ import { isVvocPluginEnabled } from "../../lib/plugin-toggle-config.js";
23
+ import { readFile } from "node:fs/promises";
24
+ import { join } from "node:path";
25
+ // END_BLOCK_ROLE_RESOLUTION_STATE
26
+ // START_BLOCK_LOAD_ROLE_RESOLUTION_STATE
27
+ /**
28
+ * Load the role map and the raw OpenCode config model references for one
29
+ * location. Unknown roles or unreadable files degrade to an empty state with
30
+ * a logged warning so the transforms stay registered and inert.
31
+ */
32
+ async function loadRoleResolutionState(directory) {
33
+ try {
34
+ const read = await loadVvocConfigForRead({
35
+ cwd: directory,
36
+ scope: "effective",
37
+ allowDefault: true,
38
+ });
39
+ if (!isVvocPluginEnabled(read.config, "model-roles")) {
40
+ return {
41
+ roleMap: {},
42
+ defaultModelReference: undefined,
43
+ titleModelReference: undefined,
44
+ agentRoleReferences: {},
45
+ };
46
+ }
47
+ const roleMap = {};
48
+ const roles = read.config.roles;
49
+ if (roles && typeof roles === "object" && !Array.isArray(roles)) {
50
+ for (const [role, selection] of Object.entries(roles)) {
51
+ if (typeof selection === "string" && selection.trim()) {
52
+ roleMap[role] = selection.trim();
53
+ }
54
+ }
55
+ }
56
+ let defaultModelReference;
57
+ let titleModelReference;
58
+ const agentRoleReferences = {};
59
+ const projectRoot = read.source.rootDir ?? directory;
60
+ for (const name of ["opencode.json", "opencode.jsonc"]) {
61
+ let text;
62
+ try {
63
+ text = await readFile(join(projectRoot, name), "utf8");
64
+ }
65
+ catch {
66
+ continue;
67
+ }
68
+ try {
69
+ const parsed = JSON.parse(text.replace(/^\s*\/\/.*$/gm, ""));
70
+ if (typeof parsed.model === "string" && isRoleReference(parsed.model)) {
71
+ defaultModelReference = parsed.model;
72
+ }
73
+ if (typeof parsed.small_model === "string" && isRoleReference(parsed.small_model)) {
74
+ titleModelReference = parsed.small_model;
75
+ }
76
+ const agentMaps = [parsed.agent, parsed.agents];
77
+ for (const agentMap of agentMaps) {
78
+ if (!agentMap || typeof agentMap !== "object" || Array.isArray(agentMap))
79
+ continue;
80
+ for (const [agentName, entry] of Object.entries(agentMap)) {
81
+ const model = entry?.model;
82
+ if (typeof model === "string" && isRoleReference(model)) {
83
+ agentRoleReferences[agentName] = model;
84
+ }
85
+ }
86
+ }
87
+ break;
88
+ }
89
+ catch {
90
+ // Unreadable project config leaves the references unset.
91
+ }
92
+ }
93
+ return { roleMap, defaultModelReference, titleModelReference, agentRoleReferences };
94
+ }
95
+ catch (error) {
96
+ console.warn(`[vvoc][model-roles] state load failed for ${directory}: ${String(error)}`);
97
+ return {
98
+ roleMap: {},
99
+ defaultModelReference: undefined,
100
+ titleModelReference: undefined,
101
+ agentRoleReferences: {},
102
+ };
103
+ }
104
+ }
105
+ // END_BLOCK_LOAD_ROLE_RESOLUTION_STATE
106
+ // START_BLOCK_RESOLVE_REFERENCE
107
+ /**
108
+ * Resolve one role reference against the captured role map, failing closed
109
+ * with a logged error that leaves the caller's field untouched.
110
+ */
111
+ function resolveReferenceOrLog(reference, roleMap, fieldPath) {
112
+ try {
113
+ return resolveRoleReference(reference, roleMap).normalized;
114
+ }
115
+ catch (error) {
116
+ console.error(`[vvoc][model-roles] ${fieldPath} references an invalid role (${reference}): ${String(error)}`);
117
+ return undefined;
118
+ }
119
+ }
120
+ // END_BLOCK_RESOLVE_REFERENCE
121
+ // START_BLOCK_APPLY_AGENT_MODEL
122
+ /**
123
+ * Apply one resolved provider/model selection to an agent draft in the v2
124
+ * Agent.Info object shape. The editor schema rejects plain string models, so
125
+ * the selection is parsed and assigned as { providerID, id } with an optional
126
+ * variant suffix split from the model id.
127
+ */
128
+ function applyAgentModel(draft, selection, fieldPath) {
129
+ try {
130
+ const parsed = parseModelSelection(selection);
131
+ const variantMatch = /^(.+)#(.+)$/.exec(parsed.model);
132
+ draft.model = variantMatch
133
+ ? { providerID: parsed.provider, id: variantMatch[1], variant: variantMatch[2] }
134
+ : { providerID: parsed.provider, id: parsed.model };
135
+ }
136
+ catch (error) {
137
+ console.error(`[vvoc][model-roles] ${fieldPath} resolved an unparseable model (${selection}): ${String(error)}`);
138
+ }
139
+ }
140
+ // END_BLOCK_APPLY_AGENT_MODEL
141
+ // START_BLOCK_SETUP_MODEL_ROLES_V2
142
+ /**
143
+ * Register the role-resolving transforms on the v2 runtime.
144
+ *
145
+ * The v1 startup config hook becomes two replayable transforms plus a config
146
+ * watcher: agent transforms rewrite every role-referenced agent model, the
147
+ * model transform applies role-referenced default and title selections read
148
+ * from the raw project config, and vvoc.json changes reload both domains so
149
+ * preset switching takes effect without restarting the shared server.
150
+ */
151
+ export async function setupModelRolesV2(adapter) {
152
+ const directory = adapter.ctx.location.directory;
153
+ const state = await loadRoleResolutionState(directory);
154
+ const agentRegistration = await adapter.ctx.agent.transform((editor) => {
155
+ for (const agent of editor.list()) {
156
+ const agentId = String(agent.id);
157
+ const rawReference = state.agentRoleReferences[agentId];
158
+ if (rawReference) {
159
+ const resolved = resolveReferenceOrLog(rawReference, state.roleMap, `agent.${agentId}.model`);
160
+ if (resolved) {
161
+ editor.update(agentId, (draft) => {
162
+ applyAgentModel(draft, resolved, `agent.${agentId}.model`);
163
+ });
164
+ continue;
165
+ }
166
+ }
167
+ const model = agent.model;
168
+ if (typeof model !== "string" || !isRoleReference(model))
169
+ continue;
170
+ const resolved = resolveReferenceOrLog(model, state.roleMap, `agent.${agentId}.model`);
171
+ if (!resolved)
172
+ continue;
173
+ editor.update(agentId, (draft) => {
174
+ applyAgentModel(draft, resolved, `agent.${agentId}.model`);
175
+ });
176
+ }
177
+ if (state.titleModelReference) {
178
+ const title = editor.list().find((agent) => String(agent.id) === "title");
179
+ if (title) {
180
+ const resolved = resolveReferenceOrLog(state.titleModelReference, state.roleMap, "small_model");
181
+ if (resolved) {
182
+ editor.update(String(title.id), (draft) => {
183
+ applyAgentModel(draft, resolved, "small_model");
184
+ });
185
+ }
186
+ }
187
+ }
188
+ });
189
+ const modelRegistration = await adapter.ctx.model.transform((editor) => {
190
+ if (!state.defaultModelReference)
191
+ return;
192
+ const resolved = resolveReferenceOrLog(state.defaultModelReference, state.roleMap, "model");
193
+ if (!resolved)
194
+ return;
195
+ const [providerID, modelID] = resolved.split("/");
196
+ if (!providerID || !modelID) {
197
+ console.error(`[vvoc][model-roles] resolved model is not provider/model shaped: ${resolved}`);
198
+ return;
199
+ }
200
+ editor.default.set(providerID, modelID);
201
+ });
202
+ // START_BLOCK_PROMPT_MODEL_APPLICATION
203
+ // Probe-verified on OpenCode v2.0.18: external plugin agent transforms write
204
+ // a plugin-host registry that config-defined agents and session model
205
+ // selection do not read, so role references also apply through the prompt
206
+ // hook: the first prompt of a session pins that session's model to the
207
+ // role-resolved selection, which both restores the v1 behavior and anchors
208
+ // long-running sessions to the preset they started with. Later prompts keep
209
+ // the pinned selection; new sessions resolve against the current role map,
210
+ // which the config watcher refreshes without a server restart.
211
+ const appliedSessions = new Set();
212
+ const promptRegistration = await adapter.ctx.session.hook("prompt", (event) => {
213
+ // Fire-and-forget: awaiting the switch inside admission races the first
214
+ // model dispatch (probe-verified — the awaited form interrupts the
215
+ // request), while the unawaited form lands before dispatch in practice.
216
+ void (async () => {
217
+ try {
218
+ const sessionID = String(event.sessionID);
219
+ if (appliedSessions.has(sessionID))
220
+ return;
221
+ const session = await adapter.ctx.session.get({ sessionID });
222
+ const agent = session?.agent;
223
+ if (typeof agent !== "string" || !agent)
224
+ return;
225
+ const reference = state.agentRoleReferences[agent];
226
+ if (!reference)
227
+ return;
228
+ const resolved = resolveReferenceOrLog(reference, state.roleMap, `agent.${agent}.model`);
229
+ if (!resolved)
230
+ return;
231
+ const parsed = parseModelSelection(resolved);
232
+ const variantMatch = /^(.+)#(.+)$/.exec(parsed.model);
233
+ await adapter.ctx.session.switchModel({
234
+ sessionID: event.sessionID,
235
+ model: {
236
+ providerID: parsed.provider,
237
+ id: variantMatch ? variantMatch[1] : parsed.model,
238
+ ...(variantMatch ? { variant: variantMatch[2] } : {}),
239
+ },
240
+ });
241
+ appliedSessions.add(sessionID);
242
+ }
243
+ catch (error) {
244
+ console.warn(`[vvoc][model-roles] prompt model application failed: ${String(error)}`);
245
+ }
246
+ })();
247
+ });
248
+ // END_BLOCK_PROMPT_MODEL_APPLICATION
249
+ const stopWatch = await adapter.watchConfig(directory, () => {
250
+ void (async () => {
251
+ const fresh = await loadRoleResolutionState(directory);
252
+ state.roleMap = fresh.roleMap;
253
+ state.defaultModelReference = fresh.defaultModelReference;
254
+ state.titleModelReference = fresh.titleModelReference;
255
+ state.agentRoleReferences = fresh.agentRoleReferences;
256
+ try {
257
+ await adapter.ctx.agent.reload();
258
+ await adapter.ctx.model.reload();
259
+ }
260
+ catch (error) {
261
+ console.warn(`[vvoc][model-roles] reload after config change failed: ${String(error)}`);
262
+ }
263
+ })();
264
+ });
265
+ return async () => {
266
+ stopWatch();
267
+ await promptRegistration.dispose();
268
+ await agentRegistration.dispose();
269
+ await modelRegistration.dispose();
270
+ await modelRegistration.dispose();
271
+ };
272
+ }
273
+ // END_BLOCK_SETUP_MODEL_ROLES_V2
274
+ //# sourceMappingURL=v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2.js","sourceRoot":"","sources":["../../../src/plugins/model-roles/v2.ts"],"names":[],"mappings":"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"}
@@ -29,3 +29,5 @@ export declare function buildHardBlockMessage(providerID: string, peak: ActivePe
29
29
  */
30
30
  export declare function createPeakHoursPlugin(dependencies?: Partial<PeakHoursPluginDependencies>): Plugin;
31
31
  export declare const PeakHoursPlugin: Plugin;
32
+ declare const _default: import("../v2-runtime/index.js").DualPlugin;
33
+ export default _default;
@@ -3,7 +3,7 @@
3
3
  // START_MODULE_CONTRACT
4
4
  // PURPOSE: Block LLM requests whose model provider is in configured peak hours in hard mode, with dynamic off-peak provider suggestions and session-age plus subagent grace; soft mode never mutates messages.
5
5
  // SCOPE: Startup vvoc snapshot resolution and peak-hours entry parsing, internal and subagent-like agent exemptions, persisted-session grace lookup, connected provider enumeration with bounded fallback, hard blocking through a chat.params error raised after the user message is persisted, soft pass-through without any server-side message mutation, and fail-open degradation.
6
- // DEPENDS: [@opencode-ai/plugin, src/lib/config-layers.ts, src/lib/plugin-toggle-config.ts, src/lib/managed-agents.ts, src/lib/peak-hours.ts]
6
+ // DEPENDS: [@opencode-ai/plugin, src/lib/config-layers.ts, src/lib/plugin-toggle-config.ts, src/lib/managed-agents.ts, src/lib/peak-hours.ts, src/plugins/v2-runtime/index.ts]
7
7
  // LINKS: [M-PLUGIN-PEAK-HOURS, M-PEAK-HOURS-SCHEDULES, M-PLUGIN-TOGGLE-CONFIG]
8
8
  // ROLE: RUNTIME
9
9
  // MAP_MODE: EXPORTS
@@ -15,10 +15,11 @@
15
15
  // buildHardBlockMessage - Composes the blocking error text with window end, wait, and suggestions.
16
16
  // createPeakHoursPlugin - Builds the peak-hours server plugin with injectable dependencies.
17
17
  // PeakHoursPlugin - Default production peak-hours server plugin.
18
+ // default - Dual subpath entrypoint: v2 setup() seam plus v1 server() delegating to the named factory.
18
19
  // END_MODULE_MAP
19
20
  //
20
21
  // START_CHANGE_SUMMARY
21
- // LAST_CHANGE: [DIRECT-FIX - Removed the soft-mode chat.message system-note injection so soft mode passes messages through untouched; peak cost state stays visible through the TUI banner only.]
22
+ // 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 - Removed the soft-mode chat.message system-note injection so soft mode passes messages through untouched; peak cost state stays visible through the TUI banner only.]
22
23
  // END_CHANGE_SUMMARY
23
24
  import { loadVvocConfig } from "../../lib/config-layers.js";
24
25
  import { MANAGED_SUBAGENT_NAMES } from "../../lib/managed-agents.js";
@@ -272,4 +273,14 @@ export function createPeakHoursPlugin(dependencies = {}) {
272
273
  }
273
274
  export const PeakHoursPlugin = createPeakHoursPlugin();
274
275
  // END_BLOCK_PLUGIN_ENTRY
276
+ // START_BLOCK_DUAL_SUBPATH_ENTRY
277
+ import { defineDualPlugin } from "../v2-runtime/index.js";
278
+ import { createV2Adapter } from "../v2-runtime/setup.js";
279
+ import { setupPeakHoursV2 } from "./v2.js";
280
+ export default defineDualPlugin({
281
+ id: "vvoc.peak-hours",
282
+ v1: PeakHoursPlugin,
283
+ v2: (ctx) => setupPeakHoursV2(createV2Adapter(ctx)),
284
+ });
285
+ // END_BLOCK_DUAL_SUBPATH_ENTRY
275
286
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/peak-hours/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/peak-hours/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,iBAAiB;AACjB,wBAAwB;AACxB,iNAAiN;AACjN,0XAA0X;AAC1X,iLAAiL;AACjL,iFAAiF;AACjF,kBAAkB;AAClB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,0HAA0H;AAC1H,0EAA0E;AAC1E,qGAAqG;AACrG,8FAA8F;AAC9F,mEAAmE;AACnE,yGAAyG;AACzG,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,oVAAoV;AACpV,qBAAqB;AAGrB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,GAKxB,MAAM,yBAAyB,CAAC;AAEjC,0EAA0E;AAC1E,4BAA4B;AAC5B,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,CAAU,CAAC;AACpE,MAAM,kBAAkB,GAAG,CAAC,SAAS,CAAU,CAAC;AAChD,MAAM,wBAAwB,GAAG,CAAC,UAAU,CAAU,CAAC;AAEvD,MAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;AAC9C,MAAM,yBAAyB,GAAG,KAAK,CAAC;AACxC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAe/B,+BAA+B;AAC/B,SAAS,sBAAsB;IAC7B,OAAO,IAAI,GAAG,CAAS;QACrB,GAAG,kBAAkB;QACrB,GAAG,wBAAwB;QAC3B,GAAG,sBAAsB;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAC9B,gBAAyC,EACzC,cAA2B;IAE3B,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClE,IACE,UAAU;YACV,OAAO,UAAU,KAAK,QAAQ;YAC7B,UAAiC,CAAC,IAAI,KAAK,UAAU,EACtD,CAAC;YACD,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,SAA6B;IACpD,OAAO,CAAC,CAAC,SAAS,IAAK,eAAqC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACnF,CAAC;AACD,6BAA6B;AAE7B,wCAAwC;AACxC,oGAAoG;AACpG,8JAA8J;AAC9J,0DAA0D;AAC1D,uBAAuB;AACvB,gDAAgD;AAChD,sCAAsC;AACtC,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,IAAgB,EAChB,WAA8B;IAE9B,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG;QACZ,+BAA+B,UAAU,4BAA4B,KAAK,WAAW,IAAI,IAAI;QAC7F,gDAAgD;KACjD,CAAC;IACF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CACR,qDAAqD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CACzH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,0JAA0J,CAC3J,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,mCAAmC;AACnC,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAChG,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,MAAuC,EACvC,SAAiB,EACjB,SAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YACzC,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;YACvB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;SACD,CAAC,CAAwC,CAAC;QACvF,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAGxB,CAAC;QACF,OAAO;YACL,SAAS,EAAE,OAAO,OAAO,CAAC,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACvF,QAAQ,EAAE,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SAC9E,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,MAAuC,EACvC,SAAc,EACd,SAAiB;IAEjB,+DAA+D;IAC/D,MAAM,YAAY,GAChB,MAKD,CAAC,MAAM,CAAC;IACT,IAAI,OAAO,YAAY,EAAE,SAAS,KAAK,UAAU,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,CAC3C,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CACjD,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;YACjD,OAAO,SAAS;iBACb,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;iBAC9B,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QACpD,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,yBAAyB,CAAC;SACvD,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA2C,CAAC;QAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QACvC,OAAO,SAAS;aACb,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;aAC9B,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AASD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,eAAqD,EAAE;IAEvD,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE;QAChD,MAAM,aAAa,GAAkC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAExE,MAAM,IAAI,GAAgC;YACxC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;gBACtD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;oBACpD,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;gBAC1E,CAAC;gBACD,OAAO,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;YACxE,kBAAkB,EAAE,KAAK,IAAI,EAAE;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,IAAI,GAAG,GAAG,aAAa,CAAC,EAAE,GAAG,qBAAqB,EAAE,CAAC;oBACnD,OAAO,aAAa,CAAC,GAAG,CAAC;gBAC3B,CAAC;gBACD,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBACvE,aAAa,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnD,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;gBACxB,OAAO,GAAG,CAAC;YACb,CAAC;YACD,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;gBACnC,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;wBACnB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC9C,IAAI,EAAE;4BACJ,OAAO,EAAE,kBAAkB;4BAC3B,KAAK;4BACL,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC;4BACjC,KAAK;yBACN;qBACF,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,sDAAsD;gBACxD,CAAC;YACH,CAAC;YACD,GAAG,YAAY;SAChB,CAAC;QAEF,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAE9B,MAAM,cAAc,GAAG,sBAAsB,EAAE,CAAC;QAEhD,0EAA0E;QAC1E,2EAA2E;QAC3E,yEAAyE;QACzE,uCAAuC;QACvC,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAIlC,EAAqC,EAAE;YACtC,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YAEnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;YAE5B,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;YACzD,IAAI,IAAI,GAAkB,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;YAEjD,kEAAkE;YAClE,IAAI,KAAK,CAAC,KAAK,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,IAAI,GAAG,MAAM,CAAC;YAChB,CAAC;YAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACpD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,iDAAiD;oBACjD,IAAI,GAAG,MAAM,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;wBACrB,IAAI,GAAG,MAAM,CAAC;oBAChB,CAAC;oBACD,IACE,KAAK,CAAC,mBAAmB;wBACzB,OAAO,CAAC,SAAS,KAAK,SAAS;wBAC/B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAC5C,CAAC;wBACD,IAAI,GAAG,MAAM,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,+BAA+B,EAAE;YACtD,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;YAC9C,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAChD,YAAY,EAAE,QAAQ,CAAC,MAAM;SAC9B,CAAC,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,8BAA8B,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,OAAO;YACL,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACvB,uBAAuB,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAA4B,EAAE,cAAc,CAAC,CAAC;YAC3F,CAAC;YACD,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC;gBAC3C,IAAI,CAAC,UAAU;oBAAE,OAAO;gBAExB,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC;oBACzC,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,UAAU;oBACV,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC3B,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM;oBAAE,OAAO;gBAElD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAClD,MAAM,WAAW,GAAG,uBAAuB,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,MAAM,CACjF,CAAC,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,KAAK,mBAAmB,CAAC,UAAU,CAAC,CAClF,CAAC;gBACF,MAAM,OAAO,GAAG,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC9E,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,+BAA+B,EAAE;oBACtD,UAAU;oBACV,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW;oBACtC,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;oBAC9C,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB;oBAC3C,WAAW;oBACX,SAAS,EAAE,KAAK,CAAC,SAAS;iBAC3B,CAAC,CAAC;gBACH,wEAAwE;gBACxE,uEAAuE;gBACvE,+DAA+D;gBAC/D,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAW,qBAAqB,EAAE,CAAC;AAC/D,yBAAyB;AAEzB,iCAAiC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAe,gBAAgB,CAAC;IAC9B,EAAE,EAAE,iBAAiB;IACrB,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;CACpD,CAAC,CAAC;AACH,+BAA+B"}
@@ -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 peak-hours hook on the v2 runtime.
5
+ *
6
+ * The v1 chat.params post-persist throw becomes the v2 session context hook:
7
+ * the prompt is already admitted, so throwing fails the outgoing model call
8
+ * and surfaces the block as the request error, preserving the v1 semantics.
9
+ * The peak decision reuses the shared pure schedule library with the same
10
+ * internal-agent, subagent, parent-session, and session-age grace rules.
11
+ */
12
+ export declare function setupPeakHoursV2(adapter: V2AdapterContext): Promise<V2Plugin.Cleanup | void>;
@@ -0,0 +1,95 @@
1
+ // FILE: src/plugins/peak-hours/v2.ts
2
+ // VERSION: 1.0.0
3
+ // START_MODULE_CONTRACT
4
+ // PURPOSE: Block peak-priced provider requests on the OpenCode v2 runtime with dynamic off-peak suggestions and session-age plus subagent grace.
5
+ // SCOPE: v2 setup only: gate the session context hook on the per-location peak-hours entry, apply internal-agent and known-subagent exemptions plus persisted-session grace, compose the identical hard-block message from the shared pure schedule library, enumerate connected providers through the v2 provider domain, and degrade fail-open on any resolution error.
6
+ // DEPENDS: [@opencode/plugin, src/lib/peak-hours.ts, src/plugins/peak-hours/index.ts, src/plugins/v2-runtime/setup.ts]
7
+ // LINKS: [M-PLUGIN-PEAK-HOURS, V-M-PLUGIN-PEAK-HOURS, M-PEAK-HOURS-SCHEDULES, M-PLUGIN-V2-RUNTIME]
8
+ // ROLE: RUNTIME
9
+ // MAP_MODE: EXPORTS
10
+ // END_MODULE_CONTRACT
11
+ //
12
+ // START_MODULE_MAP
13
+ // setupPeakHoursV2 - Register the peak-hours hard-block context hook 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 peak-hours hard blocking onto the v2 session context hook.]
18
+ // END_CHANGE_SUMMARY
19
+ import { findActivePeak, formatPeakEndTime, normalizeProviderId, parsePeakHoursEntry, suggestOffPeakProviders, } from "../../lib/peak-hours.js";
20
+ import { buildHardBlockMessage } from "./index.js";
21
+ // START_BLOCK_SETUP_PEAK_HOURS_V2
22
+ /**
23
+ * Register the peak-hours hook on the v2 runtime.
24
+ *
25
+ * The v1 chat.params post-persist throw becomes the v2 session context hook:
26
+ * the prompt is already admitted, so throwing fails the outgoing model call
27
+ * and surfaces the block as the request error, preserving the v1 semantics.
28
+ * The peak decision reuses the shared pure schedule library with the same
29
+ * internal-agent, subagent, parent-session, and session-age grace rules.
30
+ */
31
+ export async function setupPeakHoursV2(adapter) {
32
+ const knownSubagents = new Set();
33
+ const registration = await adapter.ctx.session.hook("context", async (event) => {
34
+ try {
35
+ const providerID = event.model?.providerID;
36
+ if (!providerID)
37
+ return;
38
+ const agent = event.agent;
39
+ if (agent === "compaction" || agent === "title" || agent === "summary")
40
+ return;
41
+ const snapshot = await adapter.resolver.forSession(event.sessionID, (input) => adapter.ctx.session.get(input));
42
+ if (!snapshot)
43
+ return;
44
+ const { entry } = parsePeakHoursEntry(snapshot.config.plugins?.["peak-hours"]);
45
+ if (!entry.enabled)
46
+ return;
47
+ const now = new Date();
48
+ const peak = findActivePeak(now, entry.schedules, providerID);
49
+ if (!peak)
50
+ return;
51
+ const override = entry.schedules[peak.providerKey]?.mode;
52
+ let mode = override ?? entry.mode;
53
+ if (agent && knownSubagents.has(agent))
54
+ mode = "soft";
55
+ if (mode === "hard") {
56
+ const session = (await adapter.ctx.session
57
+ .get({ sessionID: event.sessionID })
58
+ .catch(() => undefined));
59
+ if (!session) {
60
+ mode = "soft";
61
+ }
62
+ else {
63
+ const parentID = session.parentID;
64
+ if (typeof parentID === "string" && parentID)
65
+ mode = "soft";
66
+ const created = session.time?.created;
67
+ if (entry.graceActiveSessions &&
68
+ (typeof created === "number" || typeof created === "string") &&
69
+ new Date(created).getTime() < peak.startedAt.getTime()) {
70
+ mode = "soft";
71
+ }
72
+ }
73
+ }
74
+ if (mode !== "hard")
75
+ return;
76
+ const providersResponse = (await adapter.ctx.provider.list().catch(() => undefined));
77
+ const connected = (providersResponse?.data ?? [])
78
+ .map((provider) => (typeof provider.id === "string" ? provider.id : ""))
79
+ .filter(Boolean);
80
+ const suggestions = suggestOffPeakProviders(now, entry.schedules, connected).filter((candidate) => normalizeProviderId(candidate) !== normalizeProviderId(providerID));
81
+ const message = buildHardBlockMessage(providerID, peak, suggestions);
82
+ console.log(`[peak-hours] hard block applied: provider=${providerID} until=${formatPeakEndTime(peak.endsAt)} session=${String(event.sessionID)}`);
83
+ throw new Error(message);
84
+ }
85
+ catch (error) {
86
+ if (error instanceof Error && error.message.includes("peak")) {
87
+ throw error;
88
+ }
89
+ console.warn(`[vvoc][peak-hours] context hook failed open: ${String(error)}`);
90
+ }
91
+ });
92
+ return () => registration.dispose();
93
+ }
94
+ // END_BLOCK_SETUP_PEAK_HOURS_V2
95
+ //# sourceMappingURL=v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2.js","sourceRoot":"","sources":["../../../src/plugins/peak-hours/v2.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,9 @@
1
+ import { buildPatternSet } from "./patterns.js";
2
+ import { PlaceholderSession } from "./session.js";
1
3
  import type { Plugin } from "@opencode-ai/plugin";
4
+ import type { Part } from "@opencode-ai/sdk/client";
5
+ export declare const PLACEHOLDER_PREFIX = "__VVOC_SECRET_";
6
+ export declare function redactMessageParts(parts: Part[], patternSet: ReturnType<typeof buildPatternSet>, session: PlaceholderSession): void;
2
7
  export declare const SecretsRedactionPlugin: Plugin;
8
+ declare const _default: import("../v2-runtime/index.js").DualPlugin;
9
+ export default _default;
@@ -3,7 +3,7 @@
3
3
  // START_MODULE_CONTRACT
4
4
  // PURPOSE: OpenCode plugin that redacts secrets from messages before LLM requests and restores them after.
5
5
  // SCOPE: Startup vvoc config snapshot use plus 3 hook handlers — chat.messages.transform (text, reasoning, and tool-part state redaction), text.complete, tool.execute.before
6
- // DEPENDS: src/lib/config-layers.ts, src/lib/plugin-toggle-config.ts, session, engine, patterns, restore, deep, config
6
+ // DEPENDS: src/lib/config-layers.ts, src/lib/plugin-toggle-config.ts, session, engine, patterns, restore, deep, config, src/plugins/v2-runtime/index.ts
7
7
  // LINKS: [M-PLUGIN-SECRETS-REDACTION]
8
8
  // ROLE: RUNTIME
9
9
  // MAP_MODE: EXPORTS
@@ -11,10 +11,13 @@
11
11
  //
12
12
  // START_MODULE_MAP
13
13
  // SecretsRedactionPlugin - main plugin factory function
14
+ // PLACEHOLDER_PREFIX - Stable placeholder prefix shared by the v1 and v2 redaction paths.
15
+ // redactMessageParts - Redacts text, reasoning, and tool-part state of one message in place.
16
+ // default - Dual subpath entrypoint: v2 setup() seam plus v1 server() delegating to the named factory.
14
17
  // END_MODULE_MAP
15
18
  //
16
19
  // START_CHANGE_SUMMARY
17
- // LAST_CHANGE: [v1.3.0 - Fixed a redaction bypass: tool-part payloads (ToolPart.state input/output/error/metadata) are now deep-redacted in chat.messages.transform; removed the dead msg.info.state path that never matched the SDK message shape.]
20
+ // 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: v1.3.0 - Fixed a redaction bypass: tool-part payloads (ToolPart.state input/output/error/metadata) are now deep-redacted in chat.messages.transform; removed the dead msg.info.state path that never matched the SDK message shape.]
18
21
  // END_CHANGE_SUMMARY
19
22
  import { resolveSecretsRedactionRuntimeConfig } from "./config.js";
20
23
  import { buildPatternSet } from "./patterns.js";
@@ -24,7 +27,7 @@ import { redactDeep, restoreDeep } from "./deep.js";
24
27
  import { PlaceholderSession } from "./session.js";
25
28
  import { loadVvocConfig } from "../../lib/config-layers.js";
26
29
  import { isVvocPluginEnabled } from "../../lib/plugin-toggle-config.js";
27
- const PLACEHOLDER_PREFIX = "__VVOC_SECRET_";
30
+ export const PLACEHOLDER_PREFIX = "__VVOC_SECRET_";
28
31
  function isTextPart(part) {
29
32
  return part.type === "text";
30
33
  }
@@ -34,7 +37,7 @@ function isReasoningPart(part) {
34
37
  function isToolPart(part) {
35
38
  return part.type === "tool";
36
39
  }
37
- function redactMessageParts(parts, patternSet, session) {
40
+ export function redactMessageParts(parts, patternSet, session) {
38
41
  for (const part of parts) {
39
42
  if (isTextPart(part)) {
40
43
  const result = redactText(part.text, patternSet, session);
@@ -120,4 +123,14 @@ export const SecretsRedactionPlugin = async (ctx) => {
120
123
  },
121
124
  };
122
125
  };
126
+ // START_BLOCK_DUAL_SUBPATH_ENTRY
127
+ import { defineDualPlugin } from "../v2-runtime/index.js";
128
+ import { createV2Adapter } from "../v2-runtime/setup.js";
129
+ import { setupSecretsRedactionV2 } from "./v2.js";
130
+ export default defineDualPlugin({
131
+ id: "vvoc.secrets-redaction",
132
+ v1: SecretsRedactionPlugin,
133
+ v2: (ctx) => setupSecretsRedactionV2(createV2Adapter(ctx)),
134
+ });
135
+ // END_BLOCK_DUAL_SUBPATH_ENTRY
123
136
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/secrets-redaction/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,iBAAiB;AACjB,wBAAwB;AACxB,6GAA6G;AAC7G,gLAAgL;AAChL,yHAAyH;AACzH,wCAAwC;AACxC,kBAAkB;AAClB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,0DAA0D;AAC1D,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,uPAAuP;AACvP,qBAAqB;AAErB,OAAO,EAAE,oCAAoC,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAIxE,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAE5C,SAAS,UAAU,CAAC,IAAU;IAC5B,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC;AAED,SAAS,eAAe,CAAC,IAAU;IACjC,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;AACnC,CAAC;AAED,SAAS,UAAU,CAAC,IAAU;IAC5B,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAa,EACb,UAA8C,EAC9C,OAA2B;IAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC;QACD,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,oEAAoE;YACpE,qEAAqE;YACrE,0EAA0E;YAC1E,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAW,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1D,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,CAAC;QAC3D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,oCAAoC,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YACvB,IAAI,EAAE;gBACJ,OAAO,EAAE,mBAAmB;gBAC5B,KAAK,EAAE,OAAgB;gBACvB,OAAO,EAAE,uBAAuB,IAAI,IAAI,MAAM,EAAE;aACjD;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YACvB,IAAI,EAAE;gBACJ,OAAO,EAAE,mBAAmB;gBAC5B,KAAK,EAAE,MAAe;gBACtB,OAAO,EAAE,OAAO;aACjB;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC;QACrC,MAAM,EAAE,kBAAkB;QAC1B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACrB,WAAW,CACT,GAAG,EAAE;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5C,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;oBACjB,IAAI,EAAE;wBACJ,OAAO,EAAE,mBAAmB;wBAC5B,KAAK,EAAE,OAAgB;wBACvB,OAAO,EAAE,WAAW,OAAO,uBAAuB;qBACnD;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAC/B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QACtB,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QACrB,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC9C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QACD,sCAAsC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC/D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QACD,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACrD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/secrets-redaction/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Plugin as V2Plugin } from "@opencode/plugin";
2
+ import type { V2AdapterContext } from "../v2-runtime/setup.js";
3
+ /**
4
+ * Register the secrets-redaction hooks on the v2 runtime.
5
+ *
6
+ * The v1 experimental.chat.messages.transform becomes the v2 session context
7
+ * hook redacting the mutable request messages (including tool-part state),
8
+ * and the v1 tool.execute.before restore keeps the identical role on the v2
9
+ * tool hook. The v1 experimental.text.complete restore has no v2 equivalent;
10
+ * transient ctx.session.generate results are covered by the generate hook.
11
+ * Pattern configuration resolves per session location, and every handler
12
+ * failure degrades fail-open with a logged warning.
13
+ */
14
+ export declare function setupSecretsRedactionV2(adapter: V2AdapterContext): Promise<V2Plugin.Cleanup | void>;