@osovv/vv-opencode 1.4.5 → 1.6.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 (143) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +47 -16
  3. package/dist/commands/patch-provider.d.ts +5 -5
  4. package/dist/commands/patch-provider.js +10 -6
  5. package/dist/commands/patch-provider.js.map +1 -1
  6. package/dist/lib/agent-tool-catalog.d.ts +144 -0
  7. package/dist/lib/agent-tool-catalog.js +2551 -0
  8. package/dist/lib/agent-tool-catalog.js.map +1 -0
  9. package/dist/lib/agent-tool-contract.d.ts +200 -0
  10. package/dist/lib/agent-tool-contract.js +407 -0
  11. package/dist/lib/agent-tool-contract.js.map +1 -0
  12. package/dist/lib/opencode/agent-registrations.d.ts +33 -0
  13. package/dist/lib/opencode/agent-registrations.js +469 -0
  14. package/dist/lib/opencode/agent-registrations.js.map +1 -0
  15. package/dist/lib/opencode/inspection.d.ts +84 -0
  16. package/dist/lib/opencode/inspection.js +367 -0
  17. package/dist/lib/opencode/inspection.js.map +1 -0
  18. package/dist/lib/opencode/model-overrides.d.ts +19 -0
  19. package/dist/lib/opencode/model-overrides.js +221 -0
  20. package/dist/lib/opencode/model-overrides.js.map +1 -0
  21. package/dist/lib/opencode/paths.d.ts +21 -0
  22. package/dist/lib/opencode/paths.js +62 -0
  23. package/dist/lib/opencode/paths.js.map +1 -0
  24. package/dist/lib/opencode/plugin-registration.d.ts +17 -0
  25. package/dist/lib/opencode/plugin-registration.js +210 -0
  26. package/dist/lib/opencode/plugin-registration.js.map +1 -0
  27. package/dist/lib/opencode/shared-utils.d.ts +30 -0
  28. package/dist/lib/opencode/shared-utils.js +183 -0
  29. package/dist/lib/opencode/shared-utils.js.map +1 -0
  30. package/dist/lib/opencode/vvoc-config-io.d.ts +9 -0
  31. package/dist/lib/opencode/vvoc-config-io.js +58 -0
  32. package/dist/lib/opencode/vvoc-config-io.js.map +1 -0
  33. package/dist/lib/opencode.d.ts +15 -174
  34. package/dist/lib/opencode.js +19 -1387
  35. package/dist/lib/opencode.js.map +1 -1
  36. package/dist/lib/spec-lint/cross-file-rules.d.ts +2 -0
  37. package/dist/lib/spec-lint/cross-file-rules.js +33 -0
  38. package/dist/lib/spec-lint/cross-file-rules.js.map +1 -0
  39. package/dist/lib/spec-lint/delegated-extraction.d.ts +8 -0
  40. package/dist/lib/spec-lint/delegated-extraction.js +112 -0
  41. package/dist/lib/spec-lint/delegated-extraction.js.map +1 -0
  42. package/dist/lib/spec-lint/lint.d.ts +7 -0
  43. package/dist/lib/spec-lint/lint.js +92 -0
  44. package/dist/lib/spec-lint/lint.js.map +1 -0
  45. package/dist/lib/spec-lint/parser.d.ts +101 -0
  46. package/dist/lib/spec-lint/parser.js +482 -0
  47. package/dist/lib/spec-lint/parser.js.map +1 -0
  48. package/dist/lib/spec-lint/plan-rules.d.ts +38 -0
  49. package/dist/lib/spec-lint/plan-rules.js +745 -0
  50. package/dist/lib/spec-lint/plan-rules.js.map +1 -0
  51. package/dist/lib/spec-lint/spec-rules.d.ts +8 -0
  52. package/dist/lib/spec-lint/spec-rules.js +188 -0
  53. package/dist/lib/spec-lint/spec-rules.js.map +1 -0
  54. package/dist/lib/spec-lint.d.ts +4 -63
  55. package/dist/lib/spec-lint.js +13 -1505
  56. package/dist/lib/spec-lint.js.map +1 -1
  57. package/dist/lib/vvoc-preset-registry.d.ts +7 -7
  58. package/dist/lib/vvoc-preset-registry.js +8 -8
  59. package/dist/lib/vvoc-preset-registry.js.map +1 -1
  60. package/dist/lib/workflow-contract.d.ts +12 -0
  61. package/dist/lib/workflow-contract.js +71 -18
  62. package/dist/lib/workflow-contract.js.map +1 -1
  63. package/dist/plugins/hashline-edit/index.js +102 -97
  64. package/dist/plugins/hashline-edit/index.js.map +1 -1
  65. package/dist/plugins/hashline-edit/normalize-edits.d.ts +2 -8
  66. package/dist/plugins/hashline-edit/normalize-edits.js +32 -17
  67. package/dist/plugins/hashline-edit/normalize-edits.js.map +1 -1
  68. package/dist/plugins/hashline-edit/schemas.d.ts +246 -0
  69. package/dist/plugins/hashline-edit/schemas.js +659 -0
  70. package/dist/plugins/hashline-edit/schemas.js.map +1 -0
  71. package/dist/plugins/hashline-edit/str-replace-editor.d.ts +6 -17
  72. package/dist/plugins/hashline-edit/str-replace-editor.js +19 -21
  73. package/dist/plugins/hashline-edit/str-replace-editor.js.map +1 -1
  74. package/dist/plugins/hashline-edit/tool-description.d.ts +1 -0
  75. package/dist/plugins/hashline-edit/tool-description.js +20 -4
  76. package/dist/plugins/hashline-edit/tool-description.js.map +1 -1
  77. package/dist/plugins/web-tools/fetch-service.d.ts +8 -5
  78. package/dist/plugins/web-tools/fetch-service.js +30 -45
  79. package/dist/plugins/web-tools/fetch-service.js.map +1 -1
  80. package/dist/plugins/web-tools/index.js +23 -5
  81. package/dist/plugins/web-tools/index.js.map +1 -1
  82. package/dist/plugins/web-tools/schemas.d.ts +469 -0
  83. package/dist/plugins/web-tools/schemas.js +523 -0
  84. package/dist/plugins/web-tools/schemas.js.map +1 -0
  85. package/dist/plugins/web-tools/search-service.d.ts +6 -3
  86. package/dist/plugins/web-tools/search-service.js +24 -29
  87. package/dist/plugins/web-tools/search-service.js.map +1 -1
  88. package/dist/plugins/workflow/authority.d.ts +6 -0
  89. package/dist/plugins/workflow/authority.js +45 -10
  90. package/dist/plugins/workflow/authority.js.map +1 -1
  91. package/dist/plugins/workflow/authorization.d.ts +30 -0
  92. package/dist/plugins/workflow/authorization.js +147 -0
  93. package/dist/plugins/workflow/authorization.js.map +1 -0
  94. package/dist/plugins/workflow/checkpoints.d.ts +41 -2
  95. package/dist/plugins/workflow/checkpoints.js +176 -47
  96. package/dist/plugins/workflow/checkpoints.js.map +1 -1
  97. package/dist/plugins/workflow/delegated.d.ts +15 -1
  98. package/dist/plugins/workflow/delegated.js +65 -35
  99. package/dist/plugins/workflow/delegated.js.map +1 -1
  100. package/dist/plugins/workflow/execution.d.ts +15 -30
  101. package/dist/plugins/workflow/execution.js +133 -33
  102. package/dist/plugins/workflow/execution.js.map +1 -1
  103. package/dist/plugins/workflow/index.js +197 -435
  104. package/dist/plugins/workflow/index.js.map +1 -1
  105. package/dist/plugins/workflow/input-validation.d.ts +48 -0
  106. package/dist/plugins/workflow/input-validation.js +536 -0
  107. package/dist/plugins/workflow/input-validation.js.map +1 -0
  108. package/dist/plugins/workflow/inspection.d.ts +60 -0
  109. package/dist/plugins/workflow/inspection.js +316 -0
  110. package/dist/plugins/workflow/inspection.js.map +1 -0
  111. package/dist/plugins/workflow/protocol.d.ts +2 -0
  112. package/dist/plugins/workflow/protocol.js +26 -4
  113. package/dist/plugins/workflow/protocol.js.map +1 -1
  114. package/dist/plugins/workflow/recovery.d.ts +18 -0
  115. package/dist/plugins/workflow/recovery.js +217 -0
  116. package/dist/plugins/workflow/recovery.js.map +1 -0
  117. package/dist/plugins/workflow/repair.d.ts +1 -1
  118. package/dist/plugins/workflow/repair.js +9 -10
  119. package/dist/plugins/workflow/repair.js.map +1 -1
  120. package/dist/plugins/workflow/results.d.ts +2566 -0
  121. package/dist/plugins/workflow/results.js +1111 -0
  122. package/dist/plugins/workflow/results.js.map +1 -0
  123. package/dist/plugins/workflow/schemas.d.ts +398 -0
  124. package/dist/plugins/workflow/schemas.js +399 -0
  125. package/dist/plugins/workflow/schemas.js.map +1 -0
  126. package/dist/plugins/workflow/state.d.ts +3 -2
  127. package/dist/plugins/workflow/state.js +15 -8
  128. package/dist/plugins/workflow/state.js.map +1 -1
  129. package/dist/plugins/workflow/system-instruction.md +17 -1
  130. package/dist/plugins/workflow/tooling.d.ts +11 -82
  131. package/dist/plugins/workflow/tooling.js +478 -461
  132. package/dist/plugins/workflow/tooling.js.map +1 -1
  133. package/dist/plugins/workflow/transactions.d.ts +13 -0
  134. package/dist/plugins/workflow/transactions.js +13 -3
  135. package/dist/plugins/workflow/transactions.js.map +1 -1
  136. package/package.json +6 -3
  137. package/schemas/vvoc/v3.json +1 -1
  138. package/templates/agents/vv-code-reviewer.md +13 -4
  139. package/templates/agents/vv-implementer.md +16 -9
  140. package/templates/agents/vv-spec-reviewer.md +13 -4
  141. package/templates/skills/vv-execute/SKILL.md +3 -3
  142. package/templates/skills/vv-execute/references/tool-contracts.md +1750 -0
  143. package/templates/skills/vv-review/SKILL.md +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/plugins/hashline-edit/schemas.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,11 @@
1
1
  import type { FileCacheVerdict, FileSnapshot } from "./session-state.js";
2
+ import { type StrReplaceEditorResult, type StrReplaceEditorToolArgs } from "./schemas.js";
3
+ import { STR_REPLACE_EDITOR_DESCRIPTION } from "./tool-description.js";
4
+ export { STR_REPLACE_EDITOR_DESCRIPTION };
5
+ export type { StrReplaceEditorResult };
6
+ /** Tool-facing command arguments; schema-derived from the registered contract. */
7
+ export type StrReplaceEditorArgs = StrReplaceEditorToolArgs;
2
8
  export declare const STR_REPLACE_TRUNCATION_MARKER = "<response clipped><NOTE>To save on context only part of this file was been shown to you. You should retry this tool after you have searched inside the file with `grep -n` in order to find the line numbers of what you are looking for.</NOTE>";
3
- export declare const STR_REPLACE_EDITOR_DESCRIPTION: string;
4
- export interface StrReplaceEditorArgs {
5
- command: "view" | "create" | "str_replace" | "insert";
6
- path: string;
7
- file_text?: string;
8
- old_str?: string;
9
- new_str?: string;
10
- insert_line?: number;
11
- view_range?: number[];
12
- }
13
- export type StrReplaceEditorResult = {
14
- ok: true;
15
- output: string;
16
- } | {
17
- ok: false;
18
- error: string;
19
- };
20
9
  export interface StrReplaceEditorFsEntry {
21
10
  name: string;
22
11
  type: "file" | "directory";
@@ -1,19 +1,19 @@
1
1
  // FILE: src/plugins/hashline-edit/str-replace-editor.ts
2
- // VERSION: 0.1.0
2
+ // VERSION: 0.2.0
3
3
  // START_MODULE_CONTRACT
4
4
  // PURPOSE: Implement the DeepSeek dsh str_replace_editor contract (view/create/str_replace/insert) as a native edit profile.
5
- // SCOPE: Command dispatch, dsh-verbatim view formatting and error texts, exact-verbatim str_replace matching with occurrence line numbers, insert_line validation, create guard, absolute-path hint, directory listing, output truncation, and view-cache freshness checks.
6
- // DEPENDS: [src/plugins/hashline-edit/session-state.ts]
7
- // LINKS: [M-PLUGIN-HASHLINE-EDIT]
5
+ // SCOPE: Command dispatch, dsh-verbatim view formatting and file-dependent error texts, exact-verbatim str_replace matching with occurrence line numbers, insert_line file-length validation, create guard, absolute-path hint, directory listing, output truncation, and view-cache freshness checks. Registered argument shapes and args-only command validation come from schemas.ts; this module reruns that validation at its direct entry before any filesystem access. The model-facing description is owned by tool-description.ts and re-exported here.
6
+ // DEPENDS: [src/lib/agent-tool-contract.ts, src/plugins/hashline-edit/schemas.ts, src/plugins/hashline-edit/session-state.ts, src/plugins/hashline-edit/tool-description.ts]
7
+ // LINKS: [M-PLUGIN-HASHLINE-EDIT, M-AGENT-TOOL-CONTRACT]
8
8
  // ROLE: RUNTIME
9
9
  // MAP_MODE: EXPORTS
10
10
  // END_MODULE_CONTRACT
11
11
  //
12
12
  // START_MODULE_MAP
13
- // STR_REPLACE_EDITOR_DESCRIPTION - Model-facing dsh tool description (verbatim, MIT attribution).
13
+ // STR_REPLACE_EDITOR_DESCRIPTION - Model-facing dsh tool description (verbatim, MIT attribution); re-exported from tool-description.ts.
14
14
  // STR_REPLACE_TRUNCATION_MARKER - dsh response-clipped marker appended to truncated view output.
15
- // StrReplaceEditorArgs - Tool-facing command arguments.
16
- // StrReplaceEditorResult - Ok output or fail-closed error text.
15
+ // StrReplaceEditorArgs - Tool-facing command arguments; schema-derived from schemas.ts.
16
+ // StrReplaceEditorResult - Ok output or fail-closed error text; schema-derived from schemas.ts.
17
17
  // StrReplaceEditorFs - Filesystem seam used by the editor (node:fs-backed in production, fake in tests).
18
18
  // StrReplaceEditorFsEntry - Directory entry name and type returned by the filesystem seam.
19
19
  // StrReplaceEditorOptions - Editor options: filesystem seam, output cap, and view-cache callbacks.
@@ -21,23 +21,14 @@
21
21
  // END_MODULE_MAP
22
22
  //
23
23
  // START_CHANGE_SUMMARY
24
- // LAST_CHANGE: [v0.1.0 - Ported the dsh str_replace_editor contract (deepseek-ai/deepseek-harness @ 47f94385, MIT) with an mtime/size view-cache as the replaceIfVersion CAS equivalent.]
24
+ // LAST_CHANGE: [C-AGENT-TOOL-CONTRACTS T-005 - Moved the description to tool-description.ts (re-exported), derived argument/result types from the single-source contract, and rejected structural/command-invalid arguments at the direct editor entry before any filesystem access.]
25
25
  // END_CHANGE_SUMMARY
26
+ import { formatContractIssues } from "../../lib/agent-tool-contract.js";
27
+ import { validateStrReplaceEditorToolInput, } from "./schemas.js";
28
+ import { STR_REPLACE_EDITOR_DESCRIPTION } from "./tool-description.js";
29
+ export { STR_REPLACE_EDITOR_DESCRIPTION };
26
30
  // START_BLOCK_CONSTANTS
27
- // Verbatim from deepseek-ai/deepseek-harness (MIT).
28
31
  export const STR_REPLACE_TRUNCATION_MARKER = "<response clipped><NOTE>To save on context only part of this file was been shown to you. You should retry this tool after you have searched inside the file with `grep -n` in order to find the line numbers of what you are looking for.</NOTE>";
29
- export const STR_REPLACE_EDITOR_DESCRIPTION = `
30
- Custom editing tool for viewing, creating and editing files
31
- * State is persistent across command calls and discussions with the user
32
- * If \`path\` is a file, \`view\` displays the result of applying \`cat -n\`. If \`path\` is a directory, \`view\` lists non-hidden files and directories up to 2 levels deep
33
- * The \`create\` command cannot be used if the specified \`path\` already exists as a file
34
- * If a \`command\` generates a long output, it will be truncated and marked with \`<response clipped>\`
35
-
36
- Notes for using the \`str_replace\` command:
37
- * The \`old_str\` parameter should match EXACTLY one or more consecutive lines from the original file. Be mindful of whitespaces!
38
- * If the \`old_str\` parameter is not unique in the file, the replacement will not be performed. Make sure to include enough context in \`old_str\` to make it unique
39
- * The \`new_str\` parameter should contain the edited lines that should replace the \`old_str\`
40
- `.trim();
41
32
  const DEFAULT_MAX_OUTPUT_CHARS = 16_000;
42
33
  // END_BLOCK_TYPES
43
34
  // START_BLOCK_HELPERS
@@ -90,6 +81,13 @@ export class StrReplaceEditor {
90
81
  this.maxOutputChars = options.maxOutputChars ?? DEFAULT_MAX_OUTPUT_CHARS;
91
82
  }
92
83
  async execute(args) {
84
+ // Reject structural and command-invalid arguments before touching the
85
+ // filesystem or the view-freshness cache. The registered hook runs the same
86
+ // validator; this direct entry never relies on the host having done so.
87
+ const validation = validateStrReplaceEditorToolInput(args);
88
+ if (!validation.ok) {
89
+ return fail(formatContractIssues(validation.issues));
90
+ }
93
91
  const path = args.path;
94
92
  if (typeof path !== "string" || path.trim().length === 0) {
95
93
  return fail("path must be a non-empty string");
@@ -1 +1 @@
1
- {"version":3,"file":"str-replace-editor.js","sourceRoot":"","sources":["../../../src/plugins/hashline-edit/str-replace-editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"str-replace-editor.js","sourceRoot":"","sources":["../../../src/plugins/hashline-edit/str-replace-editor.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
+ export declare const STR_REPLACE_EDITOR_DESCRIPTION: string;
1
2
  export declare const HASHLINE_EDIT_DESCRIPTION = "Edit files using exact hash-anchored line references from the latest Read output.\n\n<must>\n1. SNAPSHOT: All edits in one call reference the ORIGINAL file state. Do NOT adjust line numbers for prior edits in the same batch \u2014 the system applies them bottom-up automatically.\n2. replace with pos replaces ONE line. Add an end anchor to replace the INCLUSIVE range pos..end in a single operation (replace_range is an alias that requires pos + end).\n3. For range replacement, the end line WILL BE replaced. If you set end to a line that belongs to the next function/method/statement, that line is DELETED.\n CORRECT: pos on the first line to replace, end on the LAST line to replace \u2014 not the line after.\n4. lines must contain ONLY the content that belongs inside the replaced range. Lines AFTER end survive unchanged \u2014 do NOT include them in lines. If you do, they will appear twice.\n INSERTION SAFETY: To add a function, handler, statement, or block NEXT TO existing code, use append/prepend anchored to a surviving line. To add code AFTER a closed block, append after its final structural closing line. Do NOT replace that closing line merely to reproduce it and add content after it.\n STRUCTURAL CLOSURES: If replace_range intentionally consumes lines containing closing syntax such as }, });, ], ), );, or </tag>, lines MUST include every closure required by the resulting code. Never assume the tool reconstructs omitted closing syntax.\n5. Tags MUST be copied exactly from read output or >>> mismatch output. NEVER guess or reconstruct tags.\n6. Batch = multiple operations in edits[], NOT one big replace covering everything. Each operation targets the smallest possible change.\n7. lines must contain plain replacement text only (no LINE#HASH#ANCHOR| prefixes, no diff + markers).\n8. CRITICAL: Double-quote characters inside lines strings MUST be escaped as \\\". Unescaped \\\" inside a JSON string will break the parser. Example: [\"const x = \\\"hello\\\";\"] \u2014 NOT [\"const x = \"hello\";\"]. Single quotes and backticks do NOT need escaping.\n9. LITERAL APPLICATION: payloads are applied byte-for-byte. There is NO merging, splitting, indentation fixing, or other content rewriting. The only automatic removals are exact duplicate echoes, and each one is reported as a Warning line in the result.\n10. PHYSICAL LINES: every string[] entry in lines must be exactly one physical line. Entries with embedded newlines are rejected. A string value is split on newlines.\n11. DELETION: to delete lines use lines: [] or lines: null with replace/replace_range. lines: [\"\"] is REJECTED because a single blank line is ambiguous \u2014 use append/prepend when you really want to insert a blank line.\n12. VERIFY: successful results include a bounded diff (@@ block) of what changed. Check that it matches your intent before moving on.\n</must>\n\n<operations>\nANCHOR FORMAT:\n Each anchor is `{line_number}#{hash_id}#{anchor_hash}` from read output like `42#VK#AB|content`.\n Anchors MUST be the full three-part triple copied exactly from read output. Two-part `{line}#{hash}` references are REJECTED for edits.\n\nOPERATION CHOICE:\n replace with pos -> replace ONE line at pos\n replace with pos + end -> replace range pos..end INCLUSIVE (both lines replaced)\n replace_range with pos+end -> alias for replace with end; use only when those existing lines must change or be removed\n append with pos -> insert lines AFTER the anchored line; preferred for adding code after a block's final }, });, ], or other closing line\n prepend with pos -> insert lines BEFORE the anchored line; preferred for adding code before an existing declaration or block\n append/prepend without pos -> EOF/BOF insertion (also creates missing files)\n\nCONTENT FORMAT:\n lines: string (single line) or string[] (multi-line, preferred); each array entry is exactly one physical line\n lines: null or lines: [] with replace/replace_range -> DELETE those lines\n lines: [\"\"] with replace/replace_range -> REJECTED (ambiguous); use [] / null to delete, append/prepend to insert blank lines\n\nFILE MODES:\n delete=true deletes file and requires edits=[] with no rename\n rename moves final content to a new path and removes old path\n</operations>\n\n<examples>\nGiven this file after read:\n 10#VK#AB|function hello() {\n 11#XJ#CD| console.log(\"hi\");\n 12#MB#EF| console.log(\"bye\");\n 13#QR#GH|} // end of hello()\n\nSingle-line replace (change line 11):\n { op: \"replace\", pos: \"11#XJ#CD\", lines: [\" console.log(\\\"hello\\\");\"] }\n Result: line 11 replaced. Lines 10, 12-13 unchanged.\n\nRange replace (replace lines 11-12, function body):\n { op: \"replace_range\", pos: \"11#XJ#CD\", end: \"12#MB#EF\", lines: [\" return \\\"hello world\\\";\"] }\n Result: lines 11-12 removed, replaced by 1 new line. Lines 10, 13 unchanged.\n\nBAD - end is one line too far (DELETES closing brace):\n { op: \"replace_range\", pos: \"11#XJ#CD\", end: \"13#QR#GH\", lines: [\" return \\\"hello world\\\";\"] }\n Result: line 13 (closing brace) is REPLACED too \u2014 function is broken!\n CORRECT: use end: \"12#MB#EF\" \u2014 only replace lines 11-12, keep line 13 unchanged.\n\nBAD - lines extend past end (DUPLICATES line 13):\n { op: \"replace_range\", pos: \"11#XJ#CD\", end: \"12#MB#EF\", lines: [\" return \\\"hi\\\";\", \"}\"] }\n Line 13 is \"}\" which already exists after end. Including it in lines duplicates it.\n CORRECT: { op: \"replace_range\", pos: \"11#XJ#CD\", end: \"12#MB#EF\", lines: [\" return \\\"hi\\\";\"] }\n\nAppend after a line (insert between functions):\n { op: \"append\", pos: \"13#QR#GH\", lines: [\"\", \"function added() {\", \" return true;\", \"}\"] }\n Result: 4 lines inserted after line 13. All existing lines unchanged.\n\nBAD - replacing a closing line only to insert after it:\n { op: \"replace_range\", pos: \"13#QR#GH\", end: \"13#QR#GH\", lines: [\"} // end of hello()\", \"\", \"function added() {\", \"}\"] }\n This unnecessarily consumes the existing closing line. If that closure is omitted or altered, hello() becomes unbalanced.\n CORRECT: { op: \"append\", pos: \"13#QR#GH\", lines: [\"\", \"function added() {\", \"}\"] }\n\nWhen a structural rewrite really changes both opening and closing syntax:\n Use replace_range covering the complete structure, and include the required replacement closures explicitly. Re-read the edited region or run the narrow syntax/type check immediately afterward.\n</examples>\n\n<auto>\nBuilt-in normalization (you do NOT need to handle these):\n BOM and CRLF line endings are preserved automatically.\n Hashline prefixes and diff + markers copied into text are auto-stripped.\n Exact duplicate echoes are dropped and reported as Warning lines: a payload line identical to the append/prepend anchor line, or a range payload longer than its range whose first/last line exactly duplicates a surviving neighbor.\nEverything else is applied literally \u2014 no merging, splitting, or indentation fixes.\n</auto>\n\nRecovery:\n- If you get a hash mismatch error, copy the updated anchors shown in that error or re-read the file before retrying.";
@@ -1,8 +1,8 @@
1
1
  // FILE: src/plugins/hashline-edit/tool-description.ts
2
- // VERSION: 0.9.0
2
+ // VERSION: 0.10.0
3
3
  // START_MODULE_CONTRACT
4
- // PURPOSE: Provide the LLM-facing tool description for the hash-anchored edit tool.
5
- // SCOPE: Stable instructions for read-then-edit workflow, three-part anchor usage, unified replace operation choice, literal payload semantics, and stale-anchor recovery.
4
+ // PURPOSE: Provide the LLM-facing tool descriptions for both vvoc-owned edit tools.
5
+ // SCOPE: Stable instructions for the hash-anchored read-then-edit workflow (three-part anchors, unified replace, literal payload semantics, stale-anchor recovery) plus the verbatim dsh str_replace_editor description (MIT attribution). Both constants are consumed by the registered tool contracts in schemas.ts; the str_replace_editor module re-exports its description to preserve the existing public surface.
6
6
  // DEPENDS: []
7
7
  // LINKS: [M-PLUGIN-HASHLINE-EDIT]
8
8
  // ROLE: RUNTIME
@@ -11,11 +11,27 @@
11
11
  //
12
12
  // START_MODULE_MAP
13
13
  // HASHLINE_EDIT_DESCRIPTION - Canonical LLM-facing description for the hashline-backed `hashline_edit` tool.
14
+ // STR_REPLACE_EDITOR_DESCRIPTION - Verbatim dsh description for the `str_replace_editor` tool (re-exported by str-replace-editor.ts).
14
15
  // END_MODULE_MAP
15
16
  //
16
17
  // START_CHANGE_SUMMARY
17
- // LAST_CHANGE: [v0.9.0 - Documented mandatory three-part anchors and unified replace with optional end for hashline; removed the replace-profile edit description (the host built-in edit serves the edit cohort).]
18
+ // LAST_CHANGE: [C-AGENT-TOOL-CONTRACTS T-005 - Moved the str_replace_editor description here so the pure contract module can single-source both descriptions without a schema/editor import cycle; str-replace-editor.ts re-exports it.]
18
19
  // END_CHANGE_SUMMARY
20
+ // START_BLOCK_STR_REPLACE_DESCRIPTION
21
+ // Verbatim from deepseek-ai/deepseek-harness (MIT).
22
+ export const STR_REPLACE_EDITOR_DESCRIPTION = `
23
+ Custom editing tool for viewing, creating and editing files
24
+ * State is persistent across command calls and discussions with the user
25
+ * If \`path\` is a file, \`view\` displays the result of applying \`cat -n\`. If \`path\` is a directory, \`view\` lists non-hidden files and directories up to 2 levels deep
26
+ * The \`create\` command cannot be used if the specified \`path\` already exists as a file
27
+ * If a \`command\` generates a long output, it will be truncated and marked with \`<response clipped>\`
28
+
29
+ Notes for using the \`str_replace\` command:
30
+ * The \`old_str\` parameter should match EXACTLY one or more consecutive lines from the original file. Be mindful of whitespaces!
31
+ * If the \`old_str\` parameter is not unique in the file, the replacement will not be performed. Make sure to include enough context in \`old_str\` to make it unique
32
+ * The \`new_str\` parameter should contain the edited lines that should replace the \`old_str\`
33
+ `.trim();
34
+ // END_BLOCK_STR_REPLACE_DESCRIPTION
19
35
  export const HASHLINE_EDIT_DESCRIPTION = `Edit files using exact hash-anchored line references from the latest Read output.
20
36
 
21
37
  <must>
@@ -1 +1 @@
1
- {"version":3,"file":"tool-description.js","sourceRoot":"","sources":["../../../src/plugins/hashline-edit/tool-description.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,iBAAiB;AACjB,wBAAwB;AACxB,sFAAsF;AACtF,6KAA6K;AAC7K,gBAAgB;AAChB,oCAAoC;AACpC,kBAAkB;AAClB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,+GAA+G;AAC/G,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,sNAAsN;AACtN,qBAAqB;AACrB,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sHA0F6E,CAAC"}
1
+ {"version":3,"file":"tool-description.js","sourceRoot":"","sources":["../../../src/plugins/hashline-edit/tool-description.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,kBAAkB;AAClB,wBAAwB;AACxB,sFAAsF;AACtF,2ZAA2Z;AAC3Z,gBAAgB;AAChB,oCAAoC;AACpC,kBAAkB;AAClB,sBAAsB;AACtB,sBAAsB;AACtB,EAAE;AACF,mBAAmB;AACnB,+GAA+G;AAC/G,wIAAwI;AACxI,iBAAiB;AACjB,EAAE;AACF,uBAAuB;AACvB,2OAA2O;AAC3O,qBAAqB;AAErB,sCAAsC;AACtC,oDAAoD;AACpD,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;;;;;;CAW7C,CAAC,IAAI,EAAE,CAAC;AACT,oCAAoC;AACpC,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sHA0F6E,CAAC"}
@@ -1,12 +1,15 @@
1
1
  import { type ToolDefinition } from "@opencode-ai/plugin";
2
2
  import type { ResolvedWebFetchConfig } from "./config.js";
3
- export declare const WEB_FETCH_DEFAULT_TIMEOUT_SECONDS = 30;
4
- export declare const WEB_FETCH_MAX_TIMEOUT_SECONDS = 120;
3
+ export { WEB_FETCH_DEFAULT_TIMEOUT_SECONDS, WEB_FETCH_MAX_TIMEOUT_SECONDS } from "./schemas.js";
5
4
  /**
6
5
  * Create the web_fetch tool bound to the resolved fetch configuration.
7
- * execute validates http or https schemes, asks permission key web_fetch with patterns [url],
8
- * routes textual extraction to native, Spider, or direct Z.AI reader, returns media as attachments with a short
9
- * Markdown summary in the same ToolResult, and reports metadata
6
+ * execute validates raw host-forwarded arguments through the shared strict contract first, so
7
+ * unknown keys, invalid provided values, and unsupported or malformed URLs reject with a
8
+ * bounded field diagnostic before any permission request, credential lookup, or provider
9
+ * dispatch; the documented format/timeout defaults are re-applied here because the host
10
+ * forwards unparsed raw arguments. Permission uses key web_fetch with patterns [url]. Textual
11
+ * extraction routes to native, Spider, or direct Z.AI reader; media returns as an attachment
12
+ * with a short Markdown summary in the same ToolResult and reports metadata
10
13
  * { provider, format, credentialSource?, status?, durationMs? }.
11
14
  * Native fetch requires no credential; Spider and Z.AI validate credentials at execution time
12
15
  * with actionable messages naming the environment variable and web.fetch.apiKey.
@@ -1,31 +1,31 @@
1
1
  // FILE: src/plugins/web-tools/fetch-service.ts
2
2
  // VERSION: 1.0.0
3
3
  // START_MODULE_CONTRACT
4
- // PURPOSE: Build the provider-neutral web_fetch tool: input validation, permission request, provider dispatch, and structured text or attachment results.
5
- // SCOPE: web_fetch ToolDefinition factory; delegates retrieval and conversion to the native, Spider, and direct Z.AI adapters.
6
- // DEPENDS: [@opencode-ai/plugin, src/plugins/web-tools/config.ts, src/plugins/web-tools/providers/native-fetch.ts, src/plugins/web-tools/providers/spider.ts, src/plugins/web-tools/providers/zai.ts, src/plugins/web-tools/providers/exa.ts]
7
- // LINKS: M-WEB-FETCH-SERVICE, M-WEB-NATIVE-FETCH, M-WEB-SPIDER, M-WEB-ZAI, M-WEB-MEDIA-LOADER, M-WEB-EXA, M-PLUGIN-WEB-TOOLS, V-M-WEB-FETCH-SERVICE, DF-WEB-FETCH
4
+ // PURPOSE: Build the provider-neutral web_fetch tool: strict contract validation with explicit execute-time defaults, URL scheme/shape rejection, permission request, provider dispatch, and structured text or attachment results.
5
+ // SCOPE: web_fetch ToolDefinition factory plus provider result mapping. Validates raw host-forwarded arguments through the shared web_fetch contract before any permission request, credential lookup, or provider dispatch; delegates retrieval and conversion to the native, Spider, and direct Z.AI adapters.
6
+ // DEPENDS: [@opencode-ai/plugin, src/lib/agent-tool-contract.ts, src/plugins/web-tools/config.ts, src/plugins/web-tools/schemas.ts, src/plugins/web-tools/providers/native-fetch.ts, src/plugins/web-tools/providers/spider.ts, src/plugins/web-tools/providers/zai.ts, src/plugins/web-tools/providers/exa.ts]
7
+ // LINKS: M-WEB-FETCH-SERVICE, M-WEB-NATIVE-FETCH, M-WEB-SPIDER, M-WEB-ZAI, M-WEB-MEDIA-LOADER, M-WEB-EXA, M-PLUGIN-WEB-TOOLS, M-AGENT-TOOL-CONTRACT, V-M-WEB-FETCH-SERVICE, DF-WEB-FETCH
8
8
  // ROLE: RUNTIME
9
9
  // MAP_MODE: EXPORTS
10
10
  // END_MODULE_CONTRACT
11
11
  //
12
12
  // START_MODULE_MAP
13
- // WEB_FETCH_DEFAULT_TIMEOUT_SECONDS - Default per-call timeout in seconds.
14
- // WEB_FETCH_MAX_TIMEOUT_SECONDS - Maximum model-configurable timeout in seconds.
13
+ // WEB_FETCH_DEFAULT_TIMEOUT_SECONDS - Default per-call timeout in seconds (re-exported from schemas).
14
+ // WEB_FETCH_MAX_TIMEOUT_SECONDS - Maximum model-configurable timeout in seconds (re-exported from schemas).
15
15
  // createWebFetchTool - Create the web_fetch ToolDefinition bound to a resolved fetch config.
16
16
  // END_MODULE_MAP
17
17
  //
18
18
  // START_CHANGE_SUMMARY
19
- // LAST_CHANGE: [DIRECT-FIX - Applied web_fetch format and timeout defaults inside execute when OpenCode omits schema defaults at runtime.]
19
+ // LAST_CHANGE: [C-AGENT-TOOL-CONTRACTS T-006 - Registered web_fetch from the shared schemas.ts contract and validated URL shape/scheme plus re-applied the documented format/timeout defaults at the execute boundary before any permission request or dispatch.]
20
20
  // END_CHANGE_SUMMARY
21
21
  import { tool, } from "@opencode-ai/plugin";
22
+ import { ContractInputError } from "../../lib/agent-tool-contract.js";
22
23
  import { WebProviderError } from "./providers/exa.js";
23
24
  import { fetchNative } from "./providers/native-fetch.js";
24
25
  import { scrapeSpider } from "./providers/spider.js";
25
26
  import { fetchZai } from "./providers/zai.js";
26
- const z = tool.schema;
27
- export const WEB_FETCH_DEFAULT_TIMEOUT_SECONDS = 30;
28
- export const WEB_FETCH_MAX_TIMEOUT_SECONDS = 120;
27
+ import { WEB_FETCH_TOOL_ID, validateWebFetchToolInput, webFetchArgs, webFetchContract, } from "./schemas.js";
28
+ export { WEB_FETCH_DEFAULT_TIMEOUT_SECONDS, WEB_FETCH_MAX_TIMEOUT_SECONDS } from "./schemas.js";
29
29
  // START_BLOCK_RESULT_MAPPING
30
30
  function mediaSummary(attachment) {
31
31
  const name = attachment.filename ? `\`${attachment.filename}\`` : "the requested resource";
@@ -84,57 +84,42 @@ function zaiResult(url, format, region, credentialSource, outcome) {
84
84
  // END_BLOCK_RESULT_MAPPING
85
85
  /**
86
86
  * Create the web_fetch tool bound to the resolved fetch configuration.
87
- * execute validates http or https schemes, asks permission key web_fetch with patterns [url],
88
- * routes textual extraction to native, Spider, or direct Z.AI reader, returns media as attachments with a short
89
- * Markdown summary in the same ToolResult, and reports metadata
87
+ * execute validates raw host-forwarded arguments through the shared strict contract first, so
88
+ * unknown keys, invalid provided values, and unsupported or malformed URLs reject with a
89
+ * bounded field diagnostic before any permission request, credential lookup, or provider
90
+ * dispatch; the documented format/timeout defaults are re-applied here because the host
91
+ * forwards unparsed raw arguments. Permission uses key web_fetch with patterns [url]. Textual
92
+ * extraction routes to native, Spider, or direct Z.AI reader; media returns as an attachment
93
+ * with a short Markdown summary in the same ToolResult and reports metadata
90
94
  * { provider, format, credentialSource?, status?, durationMs? }.
91
95
  * Native fetch requires no credential; Spider and Z.AI validate credentials at execution time
92
96
  * with actionable messages naming the environment variable and web.fetch.apiKey.
93
97
  */
94
98
  export function createWebFetchTool(resolved) {
95
99
  return tool({
96
- description: "Fetch a known HTTP or HTTPS URL using the configured provider. Returns Markdown, text, raw HTML, or an image/PDF attachment.",
97
- args: {
98
- url: z.string().min(1).describe("The HTTP or HTTPS URL to retrieve."),
99
- format: z
100
- .enum(["markdown", "text", "html"])
101
- .default("markdown")
102
- .describe("Output format for textual resources; defaults to markdown."),
103
- timeout: z
104
- .number()
105
- .positive()
106
- .max(WEB_FETCH_MAX_TIMEOUT_SECONDS)
107
- .default(WEB_FETCH_DEFAULT_TIMEOUT_SECONDS)
108
- .describe("Timeout in seconds, greater than 0 and at most 120."),
109
- },
100
+ description: webFetchContract.description,
101
+ args: webFetchArgs,
110
102
  async execute(args, context) {
111
- let parsedUrl;
112
- try {
113
- parsedUrl = new URL(args.url);
114
- }
115
- catch {
116
- throw new Error("web_fetch requires a valid HTTP or HTTPS URL");
117
- }
118
- if (parsedUrl.protocol !== "http:" && parsedUrl.protocol !== "https:") {
119
- throw new Error(`web_fetch supports only HTTP and HTTPS URLs; received ${parsedUrl.protocol || "unknown scheme"}`);
103
+ const validation = validateWebFetchToolInput(args);
104
+ if (!validation.ok) {
105
+ throw new ContractInputError(WEB_FETCH_TOOL_ID, validation.issues);
120
106
  }
121
- const format = args.format ?? "markdown";
122
- const timeoutSeconds = args.timeout ?? WEB_FETCH_DEFAULT_TIMEOUT_SECONDS;
107
+ const { url, format, timeout: timeoutSeconds } = validation.data;
123
108
  await context.ask({
124
109
  permission: "web_fetch",
125
- patterns: [args.url],
110
+ patterns: [url],
126
111
  always: [],
127
112
  metadata: { provider: resolved.provider, format },
128
113
  });
129
114
  const timeoutMs = timeoutSeconds * 1000;
130
115
  if (resolved.provider === "native") {
131
116
  const outcome = await fetchNative({
132
- url: args.url,
117
+ url,
133
118
  format,
134
119
  abort: context.abort,
135
120
  timeoutMs,
136
121
  });
137
- return nativeResult(args.url, format, outcome);
122
+ return nativeResult(url, format, outcome);
138
123
  }
139
124
  if (!resolved.credential) {
140
125
  throw new WebProviderError(resolved.provider, "MISSING_CREDENTIAL", `missing credential for ${resolved.provider}: set ${resolved.envVar ?? "SPIDER_API_KEY"} or ${resolved.configField ?? "web.fetch.apiKey"}`);
@@ -144,23 +129,23 @@ export function createWebFetchTool(resolved) {
144
129
  throw new Error("web.fetch.region is required when provider is zai");
145
130
  }
146
131
  const outcome = await fetchZai({
147
- url: args.url,
132
+ url,
148
133
  format,
149
134
  region: resolved.region,
150
135
  credential: resolved.credential,
151
136
  abort: context.abort,
152
137
  timeoutMs,
153
138
  });
154
- return zaiResult(args.url, format, resolved.region, resolved.credential.source, outcome);
139
+ return zaiResult(url, format, resolved.region, resolved.credential.source, outcome);
155
140
  }
156
141
  const outcome = await scrapeSpider({
157
- url: args.url,
142
+ url,
158
143
  format,
159
144
  credential: resolved.credential,
160
145
  abort: context.abort,
161
146
  timeoutMs,
162
147
  });
163
- return spiderResult(args.url, format, resolved.credential.source, outcome);
148
+ return spiderResult(url, format, resolved.credential.source, outcome);
164
149
  },
165
150
  });
166
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-service.js","sourceRoot":"","sources":["../../../src/plugins/web-tools/fetch-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-service.js","sourceRoot":"","sources":["../../../src/plugins/web-tools/fetch-service.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  // FILE: src/plugins/web-tools/index.ts
2
2
  // VERSION: 1.0.0
3
3
  // START_MODULE_CONTRACT
4
- // PURPOSE: Register the canonical web_search and web_fetch tools and suppress OpenCode built-ins at runtime while the web-tools plugin is enabled.
5
- // SCOPE: Startup vvoc snapshot use, plugin toggle handling, runtime permission suppression, tool registration, and credential-safe diagnostics.
6
- // DEPENDS: [@opencode-ai/plugin, src/lib/config-layers.ts, src/lib/plugin-toggle-config.ts, src/plugins/web-tools/config.ts, src/plugins/web-tools/search-service.ts, src/plugins/web-tools/fetch-service.ts]
7
- // LINKS: M-PLUGIN-WEB-TOOLS, M-WEB-CONFIG, M-WEB-SEARCH-SERVICE, M-WEB-FETCH-SERVICE, V-M-PLUGIN-WEB-TOOLS, DF-WEB-SEARCH, DF-WEB-FETCH
4
+ // PURPOSE: Register the canonical web_search and web_fetch tools, publish their strict input contracts through the owned definition seam, validate owned raw arguments before execution, and suppress OpenCode built-ins at runtime while the web-tools plugin is enabled.
5
+ // SCOPE: Startup vvoc snapshot use, plugin toggle handling, runtime permission suppression, tool registration, owned contract publication and pre-execute validation for the two owned tool ids only, and credential-safe diagnostics. No interception of unrelated host or MCP tools.
6
+ // DEPENDS: [@opencode-ai/plugin, src/lib/agent-tool-contract.ts, src/lib/config-layers.ts, src/lib/plugin-toggle-config.ts, src/plugins/web-tools/config.ts, src/plugins/web-tools/schemas.ts, src/plugins/web-tools/search-service.ts, src/plugins/web-tools/fetch-service.ts]
7
+ // LINKS: M-PLUGIN-WEB-TOOLS, M-WEB-CONFIG, M-WEB-SEARCH-SERVICE, M-WEB-FETCH-SERVICE, M-AGENT-TOOL-CONTRACT, V-M-PLUGIN-WEB-TOOLS, DF-WEB-SEARCH, DF-WEB-FETCH
8
8
  // ROLE: RUNTIME
9
9
  // MAP_MODE: EXPORTS
10
10
  // END_MODULE_CONTRACT
@@ -16,12 +16,14 @@
16
16
  // END_MODULE_MAP
17
17
  //
18
18
  // START_CHANGE_SUMMARY
19
- // LAST_CHANGE: [C-ZAI-DIRECT-WEB-PROVIDERS - Added credential-safe direct Z.AI region diagnostics while preserving the canonical tool surface.]
19
+ // LAST_CHANGE: [C-AGENT-TOOL-CONTRACTS T-006 - Published both web tool contracts through the owned definition adapter and added an owned-only pre-execute guard; preserved built-in suppression, explicit user overrides, and disabled-plugin behavior.]
20
20
  // END_CHANGE_SUMMARY
21
+ import { ContractInputError, createToolDefinitionAdapter } from "../../lib/agent-tool-contract.js";
21
22
  import { loadVvocConfig } from "../../lib/config-layers.js";
22
23
  import { isVvocPluginEnabled } from "../../lib/plugin-toggle-config.js";
23
24
  import { resolveWebRuntimeConfig, warnIfSecretBearingProjectConfigTracked } from "./config.js";
24
25
  import { createWebFetchTool } from "./fetch-service.js";
26
+ import { WEB_FETCH_TOOL_ID, WEB_SEARCH_TOOL_ID, validateWebFetchToolInput, validateWebSearchToolInput, webToolContracts, } from "./schemas.js";
25
27
  import { createWebSearchTool } from "./search-service.js";
26
28
  /** Built-in permission ids suppressed at runtime while web-tools is enabled. */
27
29
  export const SUPPRESSED_BUILTIN_PERMISSIONS = ["webfetch", "websearch"];
@@ -81,12 +83,28 @@ export const WebToolsPlugin = async ({ client, directory }) => {
81
83
  body: { service: "web-tools", level: "warn", message: trackedConfigWarning },
82
84
  });
83
85
  }
86
+ // Owned-only contract publication: the strict input JSON Schema is published through the
87
+ // host's observable jsonSchema member without replacing the host decoder. Unowned tool ids
88
+ // are left untouched.
89
+ const toolDefinitionAdapter = createToolDefinitionAdapter([...webToolContracts]);
84
90
  return {
85
91
  config: async (config) => applyBuiltinSuppression(config),
92
+ "tool.execute.before": async (input, output) => {
93
+ // Validate only the two owned tool ids; every other host or MCP tool is untouched.
94
+ const validation = input.tool === WEB_SEARCH_TOOL_ID
95
+ ? validateWebSearchToolInput(output.args)
96
+ : input.tool === WEB_FETCH_TOOL_ID
97
+ ? validateWebFetchToolInput(output.args)
98
+ : undefined;
99
+ if (validation && !validation.ok) {
100
+ throw new ContractInputError(input.tool, validation.issues);
101
+ }
102
+ },
86
103
  tool: {
87
104
  web_search: createWebSearchTool(resolved.search),
88
105
  web_fetch: createWebFetchTool(resolved.fetch),
89
106
  },
107
+ "tool.definition": toolDefinitionAdapter,
90
108
  };
91
109
  };
92
110
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/web-tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/web-tools/index.ts"],"names":[],"mappings":"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"}