opencode-command-hooks 0.3.0 → 0.5.1

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.
@@ -22,8 +22,8 @@ export interface AgentHooks {
22
22
  }
23
23
  /** Single hook entry in the simplified agent hooks format */
24
24
  export interface AgentHookEntry {
25
- /** Command(s) to execute. Array runs sequentially. */
26
- run: string | string[];
25
+ /** Optional command(s) to execute. Array runs sequentially. */
26
+ run?: string | string[];
27
27
  /** Optional template for injecting hook results into the session. Supports placeholder substitution. */
28
28
  inject?: string;
29
29
  /** Optional toast notification. Supports placeholder substitution. */
@@ -50,8 +50,8 @@ export interface ToolHook {
50
50
  id: string;
51
51
  /** Matching conditions that determine when this hook should run. */
52
52
  when: ToolHookWhen;
53
- /** Command(s) to execute. Array runs sequentially; failures don't block. */
54
- run: string | string[];
53
+ /** Optional command(s) to execute. Array runs sequentially; failures don't block. */
54
+ run?: string | string[];
55
55
  /**
56
56
  * Optional template for injecting hook results into the session.
57
57
  * Supports placeholders: {id}, {agent}, {tool}, {cmd}, {stdout}, {stderr}, {exitCode}
@@ -69,6 +69,11 @@ export interface ToolHook {
69
69
  /** Duration in milliseconds. */
70
70
  duration?: number;
71
71
  };
72
+ /**
73
+ * When true, prevents global hooks with matching phase+tool from running.
74
+ * If tool is "*", overrides ALL global hooks for that phase.
75
+ */
76
+ overrideGlobal?: boolean;
72
77
  }
73
78
  /**
74
79
  * Matching conditions for tool hooks
@@ -103,8 +108,8 @@ export interface SessionHook {
103
108
  id: string;
104
109
  /** Matching conditions that determine when this hook should run. */
105
110
  when: SessionHookWhen;
106
- /** Command(s) to execute. Array runs sequentially; failures don't block. */
107
- run: string | string[];
111
+ /** Optional command(s) to execute. Array runs sequentially; failures don't block. */
112
+ run?: string | string[];
108
113
  /**
109
114
  * Optional template for injecting hook results into the session.
110
115
  * Supports placeholders: {id}, {agent}, {cmd}, {stdout}, {stderr}, {exitCode}
@@ -122,6 +127,10 @@ export interface SessionHook {
122
127
  /** Duration in milliseconds. */
123
128
  duration?: number;
124
129
  };
130
+ /**
131
+ * When true, prevents global hooks with matching event from running.
132
+ */
133
+ overrideGlobal?: boolean;
125
134
  }
126
135
  /**
127
136
  * Matching conditions for session hooks
@@ -150,6 +159,8 @@ export interface SessionHookWhen {
150
159
  export interface CommandHooksConfig {
151
160
  /** Truncation limit for command output in characters. Defaults to 30,000. */
152
161
  truncationLimit?: number;
162
+ /** When true, ignore ~/.config/opencode/command-hooks.jsonc entirely. */
163
+ ignoreGlobalConfig?: boolean;
153
164
  /** Array of tool execution hooks. */
154
165
  tool?: ToolHook[];
155
166
  /** Array of session lifecycle hooks. */
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-command-hooks",
3
- "version": "0.3.0",
3
+ "version": "0.5.1",
4
4
  "description": "OpenCode plugin for declaratively attaching shell commands to agent/tool/slash-command lifecycle events",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -18,8 +18,9 @@
18
18
  "scripts": {
19
19
  "build": "tsc",
20
20
  "test": "bun test",
21
- "lint": "eslint src --ext .ts",
21
+ "lint": "eslint src tests --ext .ts",
22
22
  "typecheck": "tsc --noEmit",
23
+ "ci:check": "npm run lint && npm run typecheck && (command -v bun >/dev/null 2>&1 && bun test || echo \"bun not found; skipping tests\")",
23
24
  "typecheck:bun": "bun --bun tsc --noEmit",
24
25
  "typecheck:bun-build": "bun build src/index.ts --target=bun",
25
26
  "typecheck:bun-run": "bun run src/index.ts",