@goodfoot/agent-hooks 1.0.2 → 1.0.4

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/README.md CHANGED
@@ -124,8 +124,8 @@ export default defineOpenCodePlugin({
124
124
  event: guardAdvisory('event', async ({ event }) => {
125
125
  if (event.type === 'session.created') {
126
126
  sessions.observe(event.properties.info.id, event.properties.info.parentID);
127
- } else {
128
- sessions.observeResumed(event.properties.info?.id ?? '');
127
+ } else if (event.type === 'session.updated') {
128
+ sessions.observeResumed(event.properties.info.id, event.properties.info.parentID);
129
129
  }
130
130
  }, 'continue'),
131
131
 
@@ -1,6 +1,7 @@
1
1
  import * as fs from "node:fs";
2
2
  import * as path from "node:path";
3
3
  import { HOOK_FACTORY_TO_EVENT, PACKAGE_NAME } from "./constants.js";
4
+ const CODEX_IMPORT_SPECIFIER = `${PACKAGE_NAME}/codex`;
4
5
  const VALID_HOOK_EVENT_NAMES = new Set(Object.values(HOOK_FACTORY_TO_EVENT));
5
6
  const EVENT_LOOKUP = new Map(Array.from(VALID_HOOK_EVENT_NAMES).map((value) => [value.toLowerCase(), value]));
6
7
  const EVENT_TO_FACTORY = Object.fromEntries(Object.entries(HOOK_FACTORY_TO_EVENT).map(([factory, eventName]) => [eventName, factory]));
@@ -54,7 +55,7 @@ function generatePackageJson(projectName, outputPath) {
54
55
  typecheck: "tsc --noEmit",
55
56
  },
56
57
  dependencies: {
57
- [PACKAGE_NAME]: "^1.0.2",
58
+ [PACKAGE_NAME]: "^1.0.4",
58
59
  },
59
60
  devDependencies: {
60
61
  "@biomejs/biome": "2.4.9",
@@ -95,6 +96,16 @@ function generateBiomeConfig() {
95
96
  "rules": {
96
97
  "recommended": true
97
98
  }
99
+ },
100
+ "assist": {
101
+ "actions": {
102
+ "source": {
103
+ "organizeImports": "on"
104
+ }
105
+ }
106
+ },
107
+ "files": {
108
+ "includes": ["src/**/*.ts", "test/**/*.ts", "*.ts"]
98
109
  }
99
110
  }
100
111
  `;
@@ -130,7 +141,7 @@ function generateHookSource(eventName) {
130
141
  const importItems = [factory, output].join(", ");
131
142
  switch (eventName) {
132
143
  case "PreToolUse":
133
- return `import { ${importItems} } from "${PACKAGE_NAME}";
144
+ return `import { ${importItems} } from "${CODEX_IMPORT_SPECIFIER}";
134
145
 
135
146
  export default ${factory}({ matcher: "Bash" }, (input) => {
136
147
  if (input.tool_input.command.includes("rm -rf")) {
@@ -143,7 +154,7 @@ export default ${factory}({ matcher: "Bash" }, (input) => {
143
154
  });
144
155
  `;
145
156
  case "PostToolUse":
146
- return `import { ${importItems} } from "${PACKAGE_NAME}";
157
+ return `import { ${importItems} } from "${CODEX_IMPORT_SPECIFIER}";
147
158
 
148
159
  export default ${factory}({ matcher: "Bash" }, (input) => {
149
160
  return ${output}({
@@ -152,7 +163,7 @@ export default ${factory}({ matcher: "Bash" }, (input) => {
152
163
  });
153
164
  `;
154
165
  case "SessionStart":
155
- return `import { ${importItems} } from "${PACKAGE_NAME}";
166
+ return `import { ${importItems} } from "${CODEX_IMPORT_SPECIFIER}";
156
167
 
157
168
  export default ${factory}({ matcher: "startup" }, () => {
158
169
  return ${output}({
@@ -161,7 +172,7 @@ export default ${factory}({ matcher: "startup" }, () => {
161
172
  });
162
173
  `;
163
174
  case "UserPromptSubmit":
164
- return `import { ${importItems} } from "${PACKAGE_NAME}";
175
+ return `import { ${importItems} } from "${CODEX_IMPORT_SPECIFIER}";
165
176
 
166
177
  export default ${factory}({}, (input) => {
167
178
  if (input.prompt.trim().length === 0) {
@@ -173,7 +184,7 @@ export default ${factory}({}, (input) => {
173
184
  });
174
185
  `;
175
186
  case "Stop":
176
- return `import { ${importItems} } from "${PACKAGE_NAME}";
187
+ return `import { ${importItems} } from "${CODEX_IMPORT_SPECIFIER}";
177
188
 
178
189
  export default ${factory}({}, (input) => {
179
190
  if (input.stop_hook_active && input.last_assistant_message === null) {
@@ -185,7 +196,7 @@ export default ${factory}({}, (input) => {
185
196
  });
186
197
  `;
187
198
  case "PermissionRequest":
188
- return `import { ${importItems} } from "${PACKAGE_NAME}";
199
+ return `import { ${importItems} } from "${CODEX_IMPORT_SPECIFIER}";
189
200
 
190
201
  export default ${factory}({ matcher: "Bash" }, (input) => {
191
202
  return ${output}({
@@ -195,7 +206,7 @@ export default ${factory}({ matcher: "Bash" }, (input) => {
195
206
  });
196
207
  `;
197
208
  case "SubagentStart":
198
- return `import { ${importItems} } from "${PACKAGE_NAME}";
209
+ return `import { ${importItems} } from "${CODEX_IMPORT_SPECIFIER}";
199
210
 
200
211
  export default ${factory}({ matcher: ".*" }, (input) => {
201
212
  return ${output}({
@@ -204,7 +215,7 @@ export default ${factory}({ matcher: ".*" }, (input) => {
204
215
  });
205
216
  `;
206
217
  case "SubagentStop":
207
- return `import { ${importItems} } from "${PACKAGE_NAME}";
218
+ return `import { ${importItems} } from "${CODEX_IMPORT_SPECIFIER}";
208
219
 
209
220
  export default ${factory}({ matcher: ".*" }, (input) => {
210
221
  if (input.last_assistant_message === null) {
@@ -216,7 +227,7 @@ export default ${factory}({ matcher: ".*" }, (input) => {
216
227
  });
217
228
  `;
218
229
  case "PreCompact":
219
- return `import { ${importItems} } from "${PACKAGE_NAME}";
230
+ return `import { ${importItems} } from "${CODEX_IMPORT_SPECIFIER}";
220
231
 
221
232
  export default ${factory}({ matcher: "manual" }, () => {
222
233
  return ${output}({
@@ -225,7 +236,7 @@ export default ${factory}({ matcher: "manual" }, () => {
225
236
  });
226
237
  `;
227
238
  case "PostCompact":
228
- return `import { ${importItems} } from "${PACKAGE_NAME}";
239
+ return `import { ${importItems} } from "${CODEX_IMPORT_SPECIFIER}";
229
240
 
230
241
  export default ${factory}({ matcher: "manual" }, () => {
231
242
  return ${output}({
@@ -237,8 +248,8 @@ export default ${factory}({ matcher: "manual" }, () => {
237
248
  }
238
249
  function generateHookTest(eventName) {
239
250
  const filename = toKebabCase(eventName);
240
- return `import hook from "../src/${filename}.js";
241
- import { describe, expect, it } from "vitest";
251
+ return `import { describe, expect, it } from "vitest";
252
+ import hook from "../src/${filename}.js";
242
253
 
243
254
  describe("${eventName} hook", () => {
244
255
  it("exports a ${eventName} hook", () => {
package/dist/cli.js CHANGED
@@ -26,7 +26,7 @@ import { scaffoldProject } from "./scaffold.js";
26
26
  // ============================================================================
27
27
  // Constants
28
28
  // ============================================================================
29
- const VERSION = "1.0.2";
29
+ const VERSION = "1.0.4";
30
30
  const DEFAULT_ESBUILD_LOADERS = {
31
31
  ".md": "text",
32
32
  };
package/dist/scaffold.js CHANGED
@@ -131,7 +131,7 @@ function generatePackageJson(projectName, outputPath) {
131
131
  typecheck: "tsc --noEmit",
132
132
  },
133
133
  dependencies: {
134
- "@goodfoot/agent-hooks": "^1.0.2",
134
+ "@goodfoot/agent-hooks": "^1.0.4",
135
135
  },
136
136
  devDependencies: {
137
137
  "@biomejs/biome": "2.4.16",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goodfoot/agent-hooks",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Unified agent hooks library: shared core runtime with per-agent entry points for Claude Code, Codex, and Antigravity",
5
5
  "homepage": "https://github.com/goodfoot-io/marketplace/tree/main/packages/agent-hooks",
6
6
  "repository": {