@mutmutco/hermes-plugin 4.2.4 → 4.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
package/plugin.yaml
CHANGED
|
@@ -322,7 +322,12 @@ export function analyzeGhLadder(command) {
|
|
|
322
322
|
replacement: hit.replacement,
|
|
323
323
|
mapped,
|
|
324
324
|
reason:
|
|
325
|
-
`Command ladder (#2347): use \`${hit.replacement}\` instead of raw \`gh ${hit.object} ${hit.verb}
|
|
325
|
+
`Command ladder (#2347): use \`${hit.replacement}\` instead of raw \`gh ${hit.object} ${hit.verb}\` — ` +
|
|
326
|
+
// #5858: the deny aborts the ENTIRE tool call, and the remedy line below invites retrying only
|
|
327
|
+
// the corrected verb — the one retry that cannot work when a heredoc wrote the body file in the
|
|
328
|
+
// same call. It fails with ENOENT, which reads as a path bug, not as a discarded write. Same
|
|
329
|
+
// sentence, same position, as the test-policy guard (#5726).
|
|
330
|
+
'the ENTIRE command was aborted before execution; no segment ran, so any file write or other step batched into the same call was NOT applied — re-run those steps separately. ' +
|
|
326
331
|
runLine +
|
|
327
332
|
'mmi-cli is the required path for covered board/issue/PR writes in org repos. ' +
|
|
328
333
|
'Genuine gaps stay allowed: gh api reads, gh project, gh issue/pr view|list|close|edit, gh pr checks, gh auth/repo/workflow/run. ' +
|
|
@@ -8,8 +8,10 @@
|
|
|
8
8
|
//
|
|
9
9
|
// One extractor, used by every edit-shaped hook, so a new host contract is taught in one place.
|
|
10
10
|
|
|
11
|
-
/** Tool names that mean "this call writes files".
|
|
12
|
-
|
|
11
|
+
/** Tool names that mean "this call writes files". `StrReplace` is Cursor's in-place edit tool: it
|
|
12
|
+
* carries its target in `tool_input.path` and was outside this set, so even once the adapter matched
|
|
13
|
+
* it the gate would have read a non-edit tool and allowed (#5852). */
|
|
14
|
+
export const EDIT_TOOL_NAMES = new Set(['Edit', 'Write', 'apply_patch', 'ApplyPatch', 'StrReplace']);
|
|
13
15
|
|
|
14
16
|
export function isEditTool(toolName) {
|
|
15
17
|
return typeof toolName === 'string' && EDIT_TOOL_NAMES.has(toolName);
|