@alessandroraffa/tangyr 0.20.0 → 0.21.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.
- package/dist/index.js +764 -627
- package/mappings/hook-events.yaml +89 -36
- package/mappings/platform-paths.yaml +8 -0
- package/package.json +1 -1
|
@@ -47,18 +47,27 @@ targets:
|
|
|
47
47
|
SessionStart:
|
|
48
48
|
status: probe
|
|
49
49
|
reason: >-
|
|
50
|
-
Not
|
|
51
|
-
|
|
50
|
+
Not probed, and not probeable on the machine this mapping was last measured on
|
|
51
|
+
(2026-09-04): no Copilot CLI is installed there, and ~/.copilot/hooks is empty, so no
|
|
52
|
+
hook can be made to fire from a terminal. To settle it: install the Copilot CLI, register
|
|
53
|
+
a hook per event that appends its payload to a file, and drive one session that submits a
|
|
54
|
+
prompt, runs a tool, fails a tool and ends.
|
|
52
55
|
UserPromptSubmit:
|
|
53
56
|
status: probe
|
|
54
57
|
reason: >-
|
|
55
|
-
Not
|
|
56
|
-
|
|
58
|
+
Not probed, and not probeable on the machine this mapping was last measured on
|
|
59
|
+
(2026-09-04): no Copilot CLI is installed there, and ~/.copilot/hooks is empty, so no
|
|
60
|
+
hook can be made to fire from a terminal. To settle it: install the Copilot CLI, register
|
|
61
|
+
a hook per event that appends its payload to a file, and drive one session that submits a
|
|
62
|
+
prompt, runs a tool, fails a tool and ends.
|
|
57
63
|
PostToolUseFailure:
|
|
58
64
|
status: probe
|
|
59
65
|
reason: >-
|
|
60
|
-
Not
|
|
61
|
-
|
|
66
|
+
Not probed, and not probeable on the machine this mapping was last measured on
|
|
67
|
+
(2026-09-04): no Copilot CLI is installed there, and ~/.copilot/hooks is empty, so no
|
|
68
|
+
hook can be made to fire from a terminal. To settle it: install the Copilot CLI, register
|
|
69
|
+
a hook per event that appends its payload to a file, and drive one session that submits a
|
|
70
|
+
prompt, runs a tool, fails a tool and ends.
|
|
62
71
|
PreToolUse:
|
|
63
72
|
status: mapped
|
|
64
73
|
target_event: preToolUse
|
|
@@ -89,20 +98,20 @@ targets:
|
|
|
89
98
|
windows: false
|
|
90
99
|
source_to_target:
|
|
91
100
|
SessionStart:
|
|
92
|
-
status:
|
|
93
|
-
|
|
94
|
-
Not verified against this runtime. Until someone probes it, the adapter must not
|
|
95
|
-
claim support it has not observed, and must not present the absence as a decision.
|
|
101
|
+
status: mapped
|
|
102
|
+
target_event: SessionStart
|
|
96
103
|
UserPromptSubmit:
|
|
97
|
-
status:
|
|
98
|
-
|
|
99
|
-
Not verified against this runtime. Until someone probes it, the adapter must not
|
|
100
|
-
claim support it has not observed, and must not present the absence as a decision.
|
|
104
|
+
status: mapped
|
|
105
|
+
target_event: UserPromptSubmit
|
|
101
106
|
PostToolUseFailure:
|
|
102
|
-
status:
|
|
107
|
+
status: drop
|
|
108
|
+
severity: warning
|
|
103
109
|
reason: >-
|
|
104
|
-
|
|
105
|
-
|
|
110
|
+
Measured, not assumed. A `codex exec` run on 2026-09-04 registered all nine events and
|
|
111
|
+
deliberately ran a failing command; Codex fired PostToolUse for it and never fired
|
|
112
|
+
PostToolUseFailure. Claude Code, where PostToolUse does not fire on a failure, is the
|
|
113
|
+
reason a kit subscribes to both — under Codex the failure arrives on PostToolUse instead,
|
|
114
|
+
so a hook that only listens to PostToolUseFailure sees nothing here.
|
|
106
115
|
PreToolUse:
|
|
107
116
|
status: mapped
|
|
108
117
|
target_event: PreToolUse
|
|
@@ -110,39 +119,75 @@ targets:
|
|
|
110
119
|
status: mapped
|
|
111
120
|
target_event: PostToolUse
|
|
112
121
|
PreCompact:
|
|
113
|
-
status:
|
|
122
|
+
status: probe
|
|
114
123
|
severity: warning
|
|
115
|
-
reason:
|
|
124
|
+
reason: >-
|
|
125
|
+
Registered in the 2026-09-04 probe and never fired, but that run never compacted, so the
|
|
126
|
+
measurement is inconclusive rather than negative. To settle it: drive a session past its
|
|
127
|
+
context limit with the probe hooks installed.
|
|
116
128
|
SubagentStart:
|
|
117
|
-
status:
|
|
129
|
+
status: probe
|
|
118
130
|
severity: warning
|
|
119
|
-
reason:
|
|
131
|
+
reason: >-
|
|
132
|
+
Registered in the 2026-09-04 probe and never fired, but that run spawned no subagent.
|
|
133
|
+
Inconclusive. To settle it: run a task that delegates, with the probe hooks installed.
|
|
120
134
|
SubagentStop:
|
|
121
|
-
status:
|
|
135
|
+
status: probe
|
|
122
136
|
severity: warning
|
|
123
|
-
reason:
|
|
137
|
+
reason: >-
|
|
138
|
+
Registered in the 2026-09-04 probe and never fired, but that run spawned no subagent.
|
|
139
|
+
Inconclusive. To settle it: run a task that delegates, with the probe hooks installed.
|
|
124
140
|
Stop:
|
|
125
141
|
status: mapped
|
|
126
142
|
target_event: Stop
|
|
127
143
|
|
|
128
144
|
cursor:
|
|
129
145
|
delivery: native-versioned-object
|
|
146
|
+
# READ THIS BEFORE TRUSTING THE ENTRIES BELOW.
|
|
147
|
+
#
|
|
148
|
+
# On 2026-09-04 the shipped Cursor binary was inspected at
|
|
149
|
+
# /Applications/Cursor.app/Contents/Resources/app/extensions/cursor-agent-exec/dist/main.js.
|
|
150
|
+
# Its hook-step enum holds twelve values, all camelCase:
|
|
151
|
+
#
|
|
152
|
+
# afterFileEdit, afterMCPExecution, afterShellExecution, beforeMCPExecution,
|
|
153
|
+
# beforeReadFile, beforeShellExecution, postToolUse, postToolUseFailure,
|
|
154
|
+
# preCompact, preToolUse, subagentStart, subagentStop
|
|
155
|
+
#
|
|
156
|
+
# The target_event values written below are PascalCase — `PreToolUse`, not `preToolUse` —
|
|
157
|
+
# and JSON keys are case sensitive. Three consequences follow, none of them verified:
|
|
158
|
+
#
|
|
159
|
+
# 1. What this CLI writes to .cursor/hooks.json may be inert. The file exists, names real
|
|
160
|
+
# scripts, and may match no key Cursor looks up. That is exactly the failure shape this
|
|
161
|
+
# mapping is meant to prevent, so it is recorded here rather than left to be discovered.
|
|
162
|
+
# 2. preCompact, subagentStart and subagentStop ARE in that enum, while the entries below
|
|
163
|
+
# say they have "no documented equivalent". That claim is wrong, whatever the case
|
|
164
|
+
# question turns out to be.
|
|
165
|
+
# 3. The same file resolves ~/.claude/settings.json and <project>/.claude/settings.json as
|
|
166
|
+
# hook sources alongside ~/.cursor/hooks.json. Cursor may already be reading the
|
|
167
|
+
# Claude Code artifact this CLI writes, which would make its own hooks.json redundant.
|
|
168
|
+
#
|
|
169
|
+
# Nothing below was changed on this evidence. Minified code read without running it is a
|
|
170
|
+
# strong hint and not a measurement, and swapping one unverified mapping for another is the
|
|
171
|
+
# same mistake in the other direction. To settle it: install this kit for cursor, open the
|
|
172
|
+
# Cursor GUI, run one agent turn that executes a shell command, and check whether the hook
|
|
173
|
+
# script ran — then repeat with the keys lowercased. Cursor has no CLI on the machine this
|
|
174
|
+
# was measured on, which is why it stopped here.
|
|
130
175
|
source_to_target:
|
|
131
176
|
SessionStart:
|
|
132
177
|
status: probe
|
|
133
178
|
reason: >-
|
|
134
|
-
Not
|
|
135
|
-
|
|
179
|
+
Not in the observed enum under any casing, and not probeable without the GUI. See the
|
|
180
|
+
note above this block.
|
|
136
181
|
UserPromptSubmit:
|
|
137
182
|
status: probe
|
|
138
183
|
reason: >-
|
|
139
|
-
Not
|
|
140
|
-
|
|
184
|
+
Not in the observed enum; the nearest candidate is beforeSubmitPrompt, which is a
|
|
185
|
+
different contract. See the note above this block.
|
|
141
186
|
PostToolUseFailure:
|
|
142
187
|
status: probe
|
|
143
188
|
reason: >-
|
|
144
|
-
|
|
145
|
-
|
|
189
|
+
postToolUseFailure is in the observed enum, camelCased. Unverified. See the note above
|
|
190
|
+
this block.
|
|
146
191
|
PreToolUse:
|
|
147
192
|
status: mapped
|
|
148
193
|
target_event: PreToolUse
|
|
@@ -150,21 +195,29 @@ targets:
|
|
|
150
195
|
status: mapped
|
|
151
196
|
target_event: PostToolUse
|
|
152
197
|
PreCompact:
|
|
153
|
-
status:
|
|
198
|
+
status: probe
|
|
154
199
|
severity: warning
|
|
155
|
-
reason:
|
|
200
|
+
reason: >-
|
|
201
|
+
preCompact is in the observed enum, camelCased. The previous entry here said there was
|
|
202
|
+
no documented equivalent, which the enum contradicts. See the note above this block.
|
|
156
203
|
SubagentStart:
|
|
157
|
-
status:
|
|
204
|
+
status: probe
|
|
158
205
|
severity: warning
|
|
159
|
-
reason:
|
|
206
|
+
reason: >-
|
|
207
|
+
subagentStart is in the observed enum, camelCased. The previous entry here said there was
|
|
208
|
+
no documented equivalent, which the enum contradicts. See the note above this block.
|
|
160
209
|
SubagentStop:
|
|
161
|
-
status:
|
|
210
|
+
status: probe
|
|
162
211
|
severity: warning
|
|
163
|
-
reason:
|
|
212
|
+
reason: >-
|
|
213
|
+
subagentStop is in the observed enum, camelCased. The previous entry here said there was
|
|
214
|
+
no documented equivalent, which the enum contradicts. See the note above this block.
|
|
164
215
|
Stop:
|
|
165
216
|
status: drop
|
|
166
217
|
severity: warning
|
|
167
|
-
reason:
|
|
218
|
+
reason: >-
|
|
219
|
+
Not in the observed enum. `stop` appears in that file but as an unrelated identifier, so
|
|
220
|
+
this stays a drop rather than becoming a guess. See the note above this block.
|
|
168
221
|
|
|
169
222
|
# OpenCode and Cline exchange no declarative hook file at all: hooks are
|
|
170
223
|
# plugin code (an OpenCode plugin, a @cline/sdk AgentPlugin), which a kit
|
|
@@ -28,6 +28,7 @@ targets:
|
|
|
28
28
|
settings_shared_file: ~/.claude/settings.json
|
|
29
29
|
mcp_shared_file: ~/.claude.json
|
|
30
30
|
hooks: ~/.agents/hooks
|
|
31
|
+
hook_scripts: ~/.agents/hooks
|
|
31
32
|
project:
|
|
32
33
|
instructions: AGENTS.md
|
|
33
34
|
instructions_shim: CLAUDE.md
|
|
@@ -40,6 +41,7 @@ targets:
|
|
|
40
41
|
settings_shared_file: .claude/settings.json
|
|
41
42
|
mcp_shared_file: .claude.json
|
|
42
43
|
hooks: .agents/hooks
|
|
44
|
+
hook_scripts: .agents/hooks
|
|
43
45
|
|
|
44
46
|
copilot:
|
|
45
47
|
global:
|
|
@@ -47,6 +49,7 @@ targets:
|
|
|
47
49
|
skills: ~/.copilot/skills
|
|
48
50
|
prompts: $VSCODE_USER_DATA/prompts
|
|
49
51
|
hooks: ~/.copilot/hooks
|
|
52
|
+
hook_scripts: ~/.agents/hooks
|
|
50
53
|
mcp_shared_file: ~/.copilot/mcp-config.json
|
|
51
54
|
instructions: null
|
|
52
55
|
project:
|
|
@@ -54,6 +57,7 @@ targets:
|
|
|
54
57
|
skills: .github/skills
|
|
55
58
|
prompts: .github/prompts
|
|
56
59
|
hooks: .github/hooks
|
|
60
|
+
hook_scripts: .agents/hooks
|
|
57
61
|
mcp_shared_file: .vscode/mcp.json
|
|
58
62
|
instructions: .github/copilot-instructions.md
|
|
59
63
|
agents_md: AGENTS.md
|
|
@@ -65,6 +69,7 @@ targets:
|
|
|
65
69
|
rules: ~/.codex/rules
|
|
66
70
|
skills: ~/.agents/skills
|
|
67
71
|
hooks_shared_file: ~/.codex/hooks.json
|
|
72
|
+
hook_scripts: ~/.agents/hooks
|
|
68
73
|
mcp_shared_file: ~/.codex/config.toml
|
|
69
74
|
project:
|
|
70
75
|
instructions: AGENTS.md
|
|
@@ -72,6 +77,7 @@ targets:
|
|
|
72
77
|
rules: .codex/rules
|
|
73
78
|
skills: .codex/skills
|
|
74
79
|
hooks_shared_file: .codex/hooks.json
|
|
80
|
+
hook_scripts: .agents/hooks
|
|
75
81
|
mcp_shared_file: .codex/config.toml
|
|
76
82
|
|
|
77
83
|
opencode:
|
|
@@ -98,6 +104,7 @@ targets:
|
|
|
98
104
|
skills: ~/.cursor/skills
|
|
99
105
|
skills_shared: ~/.agents/skills
|
|
100
106
|
hooks_file: ~/.cursor/hooks.json
|
|
107
|
+
hook_scripts: ~/.agents/hooks
|
|
101
108
|
mcp_file: ~/.cursor/mcp.json
|
|
102
109
|
permissions_file: ~/.cursor/permissions.json
|
|
103
110
|
project:
|
|
@@ -107,6 +114,7 @@ targets:
|
|
|
107
114
|
skills: .cursor/skills
|
|
108
115
|
skills_shared: .agents/skills
|
|
109
116
|
hooks_file: .cursor/hooks.json
|
|
117
|
+
hook_scripts: .agents/hooks
|
|
110
118
|
mcp_file: .cursor/mcp.json
|
|
111
119
|
permissions_file: .cursor/permissions.json
|
|
112
120
|
|