@goodfoot/claude-code-hooks 1.0.19 → 1.0.20
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/cli.js +11 -6
- package/dist/constants.js +2 -0
- package/dist/hooks.js +70 -0
- package/dist/index.js +4 -4
- package/dist/outputs.js +20 -0
- package/dist/scaffold.js +2 -0
- package/dist/types.js +2 -0
- package/package.json +2 -2
- package/types/hooks.d.ts +62 -2
- package/types/index.d.ts +4 -4
- package/types/outputs.d.ts +45 -1
- package/types/types.d.ts +44 -4
package/dist/cli.js
CHANGED
|
@@ -387,17 +387,22 @@ async function discoverHookFiles(pattern, cwd) {
|
|
|
387
387
|
*/
|
|
388
388
|
async function compileHook(options) {
|
|
389
389
|
const { sourcePath, logFilePath } = options;
|
|
390
|
-
// Get the path to the runtime module (
|
|
391
|
-
const
|
|
390
|
+
// Get the path to the runtime module (absolute, then converted to relative)
|
|
391
|
+
const runtimePathAbsolute = path.resolve(path.dirname(new URL(import.meta.url).pathname), "./runtime.js");
|
|
392
392
|
// Build log file injection code if specified
|
|
393
393
|
const logFileInjection = logFilePath !== undefined
|
|
394
394
|
? `process.env['CLAUDE_CODE_HOOKS_CLI_LOG_FILE'] = ${JSON.stringify(logFilePath)};\n`
|
|
395
395
|
: "";
|
|
396
|
+
// Compute relative paths from resolveDir to avoid absolute paths in source maps.
|
|
397
|
+
// This ensures reproducible builds regardless of checkout directory.
|
|
398
|
+
const resolveDir = path.dirname(sourcePath);
|
|
399
|
+
const relativeSourcePath = `./${path.basename(sourcePath)}`;
|
|
400
|
+
const relativeRuntimePath = path.relative(resolveDir, runtimePathAbsolute);
|
|
396
401
|
// Create wrapper content that imports the hook and calls execute
|
|
397
|
-
// Uses
|
|
402
|
+
// Uses relative paths to produce reproducible builds
|
|
398
403
|
const wrapperContent = `${logFileInjection}
|
|
399
|
-
import hook from '${
|
|
400
|
-
import { execute } from '${
|
|
404
|
+
import hook from '${relativeSourcePath.replace(/\\/g, "/")}';
|
|
405
|
+
import { execute } from '${relativeRuntimePath.replace(/\\/g, "/")}';
|
|
401
406
|
|
|
402
407
|
execute(hook);
|
|
403
408
|
`;
|
|
@@ -407,7 +412,7 @@ execute(hook);
|
|
|
407
412
|
const baseName = path.basename(sourcePath, path.extname(sourcePath));
|
|
408
413
|
const stdinOptions = {
|
|
409
414
|
contents: wrapperContent,
|
|
410
|
-
resolveDir
|
|
415
|
+
resolveDir,
|
|
411
416
|
sourcefile: `${baseName}-entry.ts`,
|
|
412
417
|
loader: "ts",
|
|
413
418
|
};
|
package/dist/constants.js
CHANGED
package/dist/hooks.js
CHANGED
|
@@ -429,3 +429,73 @@ export function permissionRequestHook(config, handler) {
|
|
|
429
429
|
export function setupHook(config, handler) {
|
|
430
430
|
return createHookFunction("Setup", config, handler);
|
|
431
431
|
}
|
|
432
|
+
// ============================================================================
|
|
433
|
+
// TeammateIdle Hook Factory
|
|
434
|
+
// ============================================================================
|
|
435
|
+
/**
|
|
436
|
+
* Creates a TeammateIdle hook handler.
|
|
437
|
+
*
|
|
438
|
+
* TeammateIdle hooks fire when a teammate in a team is about to go idle,
|
|
439
|
+
* allowing you to:
|
|
440
|
+
* - Assign work to idle teammates
|
|
441
|
+
* - Log team activity
|
|
442
|
+
* - Coordinate multi-agent workflows
|
|
443
|
+
*
|
|
444
|
+
* **Matcher**: No matcher support - fires on all teammate idle events
|
|
445
|
+
* @param config - Hook configuration with optional timeout (matcher is ignored)
|
|
446
|
+
* @param handler - The handler function to execute
|
|
447
|
+
* @returns A hook function that can be exported as the default export
|
|
448
|
+
* @example
|
|
449
|
+
* ```typescript
|
|
450
|
+
* import { teammateIdleHook, teammateIdleOutput } from '@goodfoot/claude-code-hooks';
|
|
451
|
+
*
|
|
452
|
+
* // Log when teammates go idle
|
|
453
|
+
* export default teammateIdleHook({}, async (input, { logger }) => {
|
|
454
|
+
* logger.info('Teammate going idle', {
|
|
455
|
+
* teammateName: input.teammate_name,
|
|
456
|
+
* teamName: input.team_name
|
|
457
|
+
* });
|
|
458
|
+
*
|
|
459
|
+
* return teammateIdleOutput({});
|
|
460
|
+
* });
|
|
461
|
+
* ```
|
|
462
|
+
* @see https://code.claude.com/docs/en/hooks#teammateidle
|
|
463
|
+
*/
|
|
464
|
+
export function teammateIdleHook(config, handler) {
|
|
465
|
+
return createHookFunction("TeammateIdle", config, handler);
|
|
466
|
+
}
|
|
467
|
+
// ============================================================================
|
|
468
|
+
// TaskCompleted Hook Factory
|
|
469
|
+
// ============================================================================
|
|
470
|
+
/**
|
|
471
|
+
* Creates a TaskCompleted hook handler.
|
|
472
|
+
*
|
|
473
|
+
* TaskCompleted hooks fire when a task is being marked as completed,
|
|
474
|
+
* allowing you to:
|
|
475
|
+
* - Verify task completion
|
|
476
|
+
* - Log task metrics
|
|
477
|
+
* - Trigger follow-up actions
|
|
478
|
+
*
|
|
479
|
+
* **Matcher**: No matcher support - fires on all task completion events
|
|
480
|
+
* @param config - Hook configuration with optional timeout (matcher is ignored)
|
|
481
|
+
* @param handler - The handler function to execute
|
|
482
|
+
* @returns A hook function that can be exported as the default export
|
|
483
|
+
* @example
|
|
484
|
+
* ```typescript
|
|
485
|
+
* import { taskCompletedHook, taskCompletedOutput } from '@goodfoot/claude-code-hooks';
|
|
486
|
+
*
|
|
487
|
+
* // Log task completion
|
|
488
|
+
* export default taskCompletedHook({}, async (input, { logger }) => {
|
|
489
|
+
* logger.info('Task completed', {
|
|
490
|
+
* taskId: input.task_id,
|
|
491
|
+
* taskSubject: input.task_subject
|
|
492
|
+
* });
|
|
493
|
+
*
|
|
494
|
+
* return taskCompletedOutput({});
|
|
495
|
+
* });
|
|
496
|
+
* ```
|
|
497
|
+
* @see https://code.claude.com/docs/en/hooks#taskcompleted
|
|
498
|
+
*/
|
|
499
|
+
export function taskCompletedHook(config, handler) {
|
|
500
|
+
return createHookFunction("TaskCompleted", config, handler);
|
|
501
|
+
}
|
package/dist/index.js
CHANGED
|
@@ -11,16 +11,16 @@ export {
|
|
|
11
11
|
CLAUDE_ENV_VARS, getEnvFilePath,
|
|
12
12
|
// Getters
|
|
13
13
|
getProjectDir, isRemoteEnvironment, } from "./env.js";
|
|
14
|
-
// Hook factory functions - all
|
|
15
|
-
export { notificationHook, permissionRequestHook, postToolUseFailureHook, postToolUseHook, preCompactHook, preToolUseHook, sessionEndHook, sessionStartHook, setupHook, stopHook, subagentStartHook, subagentStopHook, userPromptSubmitHook, } from "./hooks.js";
|
|
14
|
+
// Hook factory functions - all 15 hook types
|
|
15
|
+
export { notificationHook, permissionRequestHook, postToolUseFailureHook, postToolUseHook, preCompactHook, preToolUseHook, sessionEndHook, sessionStartHook, setupHook, stopHook, subagentStartHook, subagentStopHook, taskCompletedHook, teammateIdleHook, userPromptSubmitHook, } from "./hooks.js";
|
|
16
16
|
// Logger exports
|
|
17
17
|
export { LOG_LEVELS, Logger, logger } from "./logger.js";
|
|
18
18
|
// Output builder functions
|
|
19
19
|
export {
|
|
20
20
|
// Exit codes
|
|
21
21
|
EXIT_CODES, notificationOutput, permissionRequestOutput, postToolUseFailureOutput, postToolUseOutput, preCompactOutput,
|
|
22
|
-
// All
|
|
23
|
-
preToolUseOutput, sessionEndOutput, sessionStartOutput, setupOutput, stopOutput, subagentStartOutput, subagentStopOutput, userPromptSubmitOutput, } from "./outputs.js";
|
|
22
|
+
// All 15 output builder functions
|
|
23
|
+
preToolUseOutput, sessionEndOutput, sessionStartOutput, setupOutput, stopOutput, subagentStartOutput, subagentStopOutput, taskCompletedOutput, teammateIdleOutput, userPromptSubmitOutput, } from "./outputs.js";
|
|
24
24
|
// Runtime exports - execute function
|
|
25
25
|
export {
|
|
26
26
|
// Main execute function for compiled hooks
|
package/dist/outputs.js
CHANGED
|
@@ -297,3 +297,23 @@ export const permissionRequestOutput = /* @__PURE__ */ createHookSpecificOutputB
|
|
|
297
297
|
* ```
|
|
298
298
|
*/
|
|
299
299
|
export const setupOutput = /* @__PURE__ */ createHookSpecificOutputBuilder("Setup");
|
|
300
|
+
/**
|
|
301
|
+
* Creates an output for TeammateIdle hooks.
|
|
302
|
+
* @param options - Configuration options for the hook output
|
|
303
|
+
* @returns A TeammateIdleOutput object ready for the runtime
|
|
304
|
+
* @example
|
|
305
|
+
* ```typescript
|
|
306
|
+
* teammateIdleOutput({});
|
|
307
|
+
* ```
|
|
308
|
+
*/
|
|
309
|
+
export const teammateIdleOutput = /* @__PURE__ */ createSimpleOutputBuilder("TeammateIdle");
|
|
310
|
+
/**
|
|
311
|
+
* Creates an output for TaskCompleted hooks.
|
|
312
|
+
* @param options - Configuration options for the hook output
|
|
313
|
+
* @returns A TaskCompletedOutput object ready for the runtime
|
|
314
|
+
* @example
|
|
315
|
+
* ```typescript
|
|
316
|
+
* taskCompletedOutput({});
|
|
317
|
+
* ```
|
|
318
|
+
*/
|
|
319
|
+
export const taskCompletedOutput = /* @__PURE__ */ createSimpleOutputBuilder("TaskCompleted");
|
package/dist/scaffold.js
CHANGED
|
@@ -50,6 +50,8 @@ const EVENT_TO_OUTPUT_FUNCTION = {
|
|
|
50
50
|
PreCompact: "preCompactOutput",
|
|
51
51
|
PermissionRequest: "permissionRequestOutput",
|
|
52
52
|
Setup: "setupOutput",
|
|
53
|
+
TeammateIdle: "teammateIdleOutput",
|
|
54
|
+
TaskCompleted: "taskCompletedOutput",
|
|
53
55
|
};
|
|
54
56
|
// ============================================================================
|
|
55
57
|
// Validation
|
package/dist/types.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goodfoot/claude-code-hooks",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.20",
|
|
4
4
|
"description": "Type-safe Claude Code hooks library with camelCase types and output builders",
|
|
5
5
|
"homepage": "https://github.com/goodfoot-io/marketplace/tree/main/packages/claude-code-hooks",
|
|
6
6
|
"repository": {
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"typescript": "^5.9.3"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
-
"@anthropic-ai/claude-agent-sdk": "^0.2.
|
|
56
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.37",
|
|
57
57
|
"@biomejs/biome": "2.3.14",
|
|
58
58
|
"@types/node": "^24",
|
|
59
59
|
"ts-morph": "^25.0.0",
|
package/types/hooks.d.ts
CHANGED
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
* @see https://code.claude.com/docs/en/hooks
|
|
23
23
|
*/
|
|
24
24
|
import type { Logger } from "./logger.js";
|
|
25
|
-
import type { NotificationOutput, PermissionRequestOutput, PostToolUseFailureOutput, PostToolUseOutput, PreCompactOutput, PreToolUseOutput, SessionEndOutput, SessionStartOutput, SetupOutput, SpecificHookOutput, StopOutput, SubagentStartOutput, SubagentStopOutput, UserPromptSubmitOutput } from "./outputs.js";
|
|
26
|
-
import type { HookEventName, KnownToolName, NotificationInput, PermissionRequestInput, PostToolUseFailureInput, PostToolUseInput, PreCompactInput, PreToolUseInput, SessionEndInput, SessionStartInput, SetupInput, StopInput, SubagentStartInput, SubagentStopInput, ToolInputMap, UserPromptSubmitInput } from "./types.js";
|
|
25
|
+
import type { NotificationOutput, PermissionRequestOutput, PostToolUseFailureOutput, PostToolUseOutput, PreCompactOutput, PreToolUseOutput, SessionEndOutput, SessionStartOutput, SetupOutput, SpecificHookOutput, StopOutput, SubagentStartOutput, SubagentStopOutput, TaskCompletedOutput, TeammateIdleOutput, UserPromptSubmitOutput } from "./outputs.js";
|
|
26
|
+
import type { HookEventName, KnownToolName, NotificationInput, PermissionRequestInput, PostToolUseFailureInput, PostToolUseInput, PreCompactInput, PreToolUseInput, SessionEndInput, SessionStartInput, SetupInput, StopInput, SubagentStartInput, SubagentStopInput, TaskCompletedInput, TeammateIdleInput, ToolInputMap, UserPromptSubmitInput } from "./types.js";
|
|
27
27
|
/**
|
|
28
28
|
* Configuration options for hook factories.
|
|
29
29
|
*
|
|
@@ -798,3 +798,63 @@ export declare function permissionRequestHook(config: HookConfig, handler: HookH
|
|
|
798
798
|
* @see https://code.claude.com/docs/en/hooks#setup
|
|
799
799
|
*/
|
|
800
800
|
export declare function setupHook(config: HookConfig, handler: HookHandler<SetupInput, SetupOutput>): HookFunction<SetupInput, SetupOutput>;
|
|
801
|
+
/**
|
|
802
|
+
* Creates a TeammateIdle hook handler.
|
|
803
|
+
*
|
|
804
|
+
* TeammateIdle hooks fire when a teammate in a team is about to go idle,
|
|
805
|
+
* allowing you to:
|
|
806
|
+
* - Assign work to idle teammates
|
|
807
|
+
* - Log team activity
|
|
808
|
+
* - Coordinate multi-agent workflows
|
|
809
|
+
*
|
|
810
|
+
* **Matcher**: No matcher support - fires on all teammate idle events
|
|
811
|
+
* @param config - Hook configuration with optional timeout (matcher is ignored)
|
|
812
|
+
* @param handler - The handler function to execute
|
|
813
|
+
* @returns A hook function that can be exported as the default export
|
|
814
|
+
* @example
|
|
815
|
+
* ```typescript
|
|
816
|
+
* import { teammateIdleHook, teammateIdleOutput } from '@goodfoot/claude-code-hooks';
|
|
817
|
+
*
|
|
818
|
+
* // Log when teammates go idle
|
|
819
|
+
* export default teammateIdleHook({}, async (input, { logger }) => {
|
|
820
|
+
* logger.info('Teammate going idle', {
|
|
821
|
+
* teammateName: input.teammate_name,
|
|
822
|
+
* teamName: input.team_name
|
|
823
|
+
* });
|
|
824
|
+
*
|
|
825
|
+
* return teammateIdleOutput({});
|
|
826
|
+
* });
|
|
827
|
+
* ```
|
|
828
|
+
* @see https://code.claude.com/docs/en/hooks#teammateidle
|
|
829
|
+
*/
|
|
830
|
+
export declare function teammateIdleHook(config: HookConfig, handler: HookHandler<TeammateIdleInput, TeammateIdleOutput>): HookFunction<TeammateIdleInput, TeammateIdleOutput>;
|
|
831
|
+
/**
|
|
832
|
+
* Creates a TaskCompleted hook handler.
|
|
833
|
+
*
|
|
834
|
+
* TaskCompleted hooks fire when a task is being marked as completed,
|
|
835
|
+
* allowing you to:
|
|
836
|
+
* - Verify task completion
|
|
837
|
+
* - Log task metrics
|
|
838
|
+
* - Trigger follow-up actions
|
|
839
|
+
*
|
|
840
|
+
* **Matcher**: No matcher support - fires on all task completion events
|
|
841
|
+
* @param config - Hook configuration with optional timeout (matcher is ignored)
|
|
842
|
+
* @param handler - The handler function to execute
|
|
843
|
+
* @returns A hook function that can be exported as the default export
|
|
844
|
+
* @example
|
|
845
|
+
* ```typescript
|
|
846
|
+
* import { taskCompletedHook, taskCompletedOutput } from '@goodfoot/claude-code-hooks';
|
|
847
|
+
*
|
|
848
|
+
* // Log task completion
|
|
849
|
+
* export default taskCompletedHook({}, async (input, { logger }) => {
|
|
850
|
+
* logger.info('Task completed', {
|
|
851
|
+
* taskId: input.task_id,
|
|
852
|
+
* taskSubject: input.task_subject
|
|
853
|
+
* });
|
|
854
|
+
*
|
|
855
|
+
* return taskCompletedOutput({});
|
|
856
|
+
* });
|
|
857
|
+
* ```
|
|
858
|
+
* @see https://code.claude.com/docs/en/hooks#taskcompleted
|
|
859
|
+
*/
|
|
860
|
+
export declare function taskCompletedHook(config: HookConfig, handler: HookHandler<TaskCompletedInput, TaskCompletedOutput>): HookFunction<TaskCompletedInput, TaskCompletedOutput>;
|
package/types/index.d.ts
CHANGED
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
export type * from "@anthropic-ai/claude-agent-sdk/sdk-tools.js";
|
|
9
9
|
export { CLAUDE_ENV_VARS, getEnvFilePath, getProjectDir, isRemoteEnvironment, } from "./env.js";
|
|
10
10
|
export type { HookConfig, HookContext, HookFunction, HookHandler, SessionStartContext, TypedHookConfig, TypedPermissionRequestInput, TypedPostToolUseFailureInput, TypedPostToolUseInput, TypedPreToolUseInput, } from "./hooks.js";
|
|
11
|
-
export { notificationHook, permissionRequestHook, postToolUseFailureHook, postToolUseHook, preCompactHook, preToolUseHook, sessionEndHook, sessionStartHook, setupHook, stopHook, subagentStartHook, subagentStopHook, userPromptSubmitHook, } from "./hooks.js";
|
|
11
|
+
export { notificationHook, permissionRequestHook, postToolUseFailureHook, postToolUseHook, preCompactHook, preToolUseHook, sessionEndHook, sessionStartHook, setupHook, stopHook, subagentStartHook, subagentStopHook, taskCompletedHook, teammateIdleHook, userPromptSubmitHook, } from "./hooks.js";
|
|
12
12
|
export type { LogEvent, LogEventError, LogEventHandler, LoggerConfig, LogLevel, Unsubscribe } from "./logger.js";
|
|
13
13
|
export { LOG_LEVELS, Logger, logger } from "./logger.js";
|
|
14
14
|
export type {
|
|
15
15
|
/** @deprecated Use CommonOptions instead */
|
|
16
|
-
BaseOptions, CommonOptions, ExitCode, HookOutput, HookSpecificOutput, NotificationOptions, PermissionRequestAllowDecision, PermissionRequestDecision, PermissionRequestDenyDecision, PermissionRequestHookSpecificOutput, PermissionRequestOptions, PostToolUseFailureHookSpecificOutput, PostToolUseFailureOptions, PostToolUseHookSpecificOutput, PostToolUseOptions, PreCompactOptions, PreToolUseHookSpecificOutput, PreToolUseOptions, SessionEndOptions, SessionStartHookSpecificOutput, SessionStartOptions, SetupHookSpecificOutput, SetupOptions, StopOptions, SubagentStartHookSpecificOutput, SubagentStartOptions, SubagentStopOptions, SyncHookJSONOutput, UserPromptSubmitHookSpecificOutput, UserPromptSubmitOptions, } from "./outputs.js";
|
|
17
|
-
export { EXIT_CODES, notificationOutput, permissionRequestOutput, postToolUseFailureOutput, postToolUseOutput, preCompactOutput, preToolUseOutput, sessionEndOutput, sessionStartOutput, setupOutput, stopOutput, subagentStartOutput, subagentStopOutput, userPromptSubmitOutput, } from "./outputs.js";
|
|
16
|
+
BaseOptions, CommonOptions, ExitCode, HookOutput, HookSpecificOutput, NotificationOptions, PermissionRequestAllowDecision, PermissionRequestDecision, PermissionRequestDenyDecision, PermissionRequestHookSpecificOutput, PermissionRequestOptions, PostToolUseFailureHookSpecificOutput, PostToolUseFailureOptions, PostToolUseHookSpecificOutput, PostToolUseOptions, PreCompactOptions, PreToolUseHookSpecificOutput, PreToolUseOptions, SessionEndOptions, SessionStartHookSpecificOutput, SessionStartOptions, SetupHookSpecificOutput, SetupOptions, StopOptions, SubagentStartHookSpecificOutput, SubagentStartOptions, SubagentStopOptions, SyncHookJSONOutput, TaskCompletedOptions, TeammateIdleOptions, UserPromptSubmitHookSpecificOutput, UserPromptSubmitOptions, } from "./outputs.js";
|
|
17
|
+
export { EXIT_CODES, notificationOutput, permissionRequestOutput, postToolUseFailureOutput, postToolUseOutput, preCompactOutput, preToolUseOutput, sessionEndOutput, sessionStartOutput, setupOutput, stopOutput, subagentStartOutput, subagentStopOutput, taskCompletedOutput, teammateIdleOutput, userPromptSubmitOutput, } from "./outputs.js";
|
|
18
18
|
export { execute, } from "./runtime.js";
|
|
19
19
|
export type { ContentContext, PatternCheckResult, ToolUseInput } from "./tool-helpers.js";
|
|
20
20
|
export { checkContentForPattern, forEachContent, getFilePath, isAskUserQuestionTool, isBashTool, isEditTool, isExitPlanModeTool, isFileModifyingTool, isGlobTool, isGrepTool, isJsTsFile, isKillShellTool, isMultiEditTool, isNotebookEditTool, isReadTool, isTaskOutputTool, isTaskTool, isTodoWriteTool, isTsFile, isWebFetchTool, isWebSearchTool, isWriteTool, } from "./tool-helpers.js";
|
|
21
|
-
export type { BaseHookInput, FileModifyingToolInput, FileModifyingToolName, HookEventName, HookInput, KnownToolInput, KnownToolName, MultiEditEntry, MultiEditToolInput, NotificationInput, PermissionMode, PermissionRequestInput, PermissionUpdate, PostToolUseFailureInput, PostToolUseInput, PreCompactInput, PreCompactTrigger, PreToolUseInput, SessionEndInput, SessionEndReason, SessionStartInput, SessionStartSource, SetupInput, SetupTrigger, StopInput, SubagentStartInput, SubagentStopInput, ToolInputMap, UserPromptSubmitInput, } from "./types.js";
|
|
21
|
+
export type { BaseHookInput, FileModifyingToolInput, FileModifyingToolName, HookEventName, HookInput, KnownToolInput, KnownToolName, MultiEditEntry, MultiEditToolInput, NotificationInput, PermissionMode, PermissionRequestInput, PermissionUpdate, PostToolUseFailureInput, PostToolUseInput, PreCompactInput, PreCompactTrigger, PreToolUseInput, SessionEndInput, SessionEndReason, SessionStartInput, SessionStartSource, SetupInput, SetupTrigger, StopInput, SubagentStartInput, SubagentStopInput, TaskCompletedInput, TeammateIdleInput, ToolInputMap, UserPromptSubmitInput, } from "./types.js";
|
|
22
22
|
export { HOOK_EVENT_NAMES } from "./types.js";
|
package/types/outputs.d.ts
CHANGED
|
@@ -211,10 +211,18 @@ export type PermissionRequestOutput = BaseSpecificOutput<"PermissionRequest">;
|
|
|
211
211
|
*
|
|
212
212
|
*/
|
|
213
213
|
export type SetupOutput = BaseSpecificOutput<"Setup">;
|
|
214
|
+
/**
|
|
215
|
+
*
|
|
216
|
+
*/
|
|
217
|
+
export type TeammateIdleOutput = BaseSpecificOutput<"TeammateIdle">;
|
|
218
|
+
/**
|
|
219
|
+
*
|
|
220
|
+
*/
|
|
221
|
+
export type TaskCompletedOutput = BaseSpecificOutput<"TaskCompleted">;
|
|
214
222
|
/**
|
|
215
223
|
* Union of all specific output types.
|
|
216
224
|
*/
|
|
217
|
-
export type SpecificHookOutput = PreToolUseOutput | PostToolUseOutput | PostToolUseFailureOutput | NotificationOutput | UserPromptSubmitOutput | SessionStartOutput | SessionEndOutput | StopOutput | SubagentStartOutput | SubagentStopOutput | PreCompactOutput | PermissionRequestOutput | SetupOutput;
|
|
225
|
+
export type SpecificHookOutput = PreToolUseOutput | PostToolUseOutput | PostToolUseFailureOutput | NotificationOutput | UserPromptSubmitOutput | SessionStartOutput | SessionEndOutput | StopOutput | SubagentStartOutput | SubagentStopOutput | PreCompactOutput | PermissionRequestOutput | SetupOutput | TeammateIdleOutput | TaskCompletedOutput;
|
|
218
226
|
/**
|
|
219
227
|
* Options for decision-based hooks (Stop, SubagentStop).
|
|
220
228
|
*/
|
|
@@ -601,6 +609,42 @@ export declare const setupOutput: (options?: CommonOptions & {
|
|
|
601
609
|
readonly _type: "Setup";
|
|
602
610
|
stdout: SyncHookJSONOutput;
|
|
603
611
|
};
|
|
612
|
+
/**
|
|
613
|
+
* Options for the TeammateIdle output builder.
|
|
614
|
+
* TeammateIdle hooks only support common options.
|
|
615
|
+
*/
|
|
616
|
+
export type TeammateIdleOptions = CommonOptions;
|
|
617
|
+
/**
|
|
618
|
+
* Creates an output for TeammateIdle hooks.
|
|
619
|
+
* @param options - Configuration options for the hook output
|
|
620
|
+
* @returns A TeammateIdleOutput object ready for the runtime
|
|
621
|
+
* @example
|
|
622
|
+
* ```typescript
|
|
623
|
+
* teammateIdleOutput({});
|
|
624
|
+
* ```
|
|
625
|
+
*/
|
|
626
|
+
export declare const teammateIdleOutput: (options?: CommonOptions) => {
|
|
627
|
+
readonly _type: "TeammateIdle";
|
|
628
|
+
stdout: SyncHookJSONOutput;
|
|
629
|
+
};
|
|
630
|
+
/**
|
|
631
|
+
* Options for the TaskCompleted output builder.
|
|
632
|
+
* TaskCompleted hooks only support common options.
|
|
633
|
+
*/
|
|
634
|
+
export type TaskCompletedOptions = CommonOptions;
|
|
635
|
+
/**
|
|
636
|
+
* Creates an output for TaskCompleted hooks.
|
|
637
|
+
* @param options - Configuration options for the hook output
|
|
638
|
+
* @returns A TaskCompletedOutput object ready for the runtime
|
|
639
|
+
* @example
|
|
640
|
+
* ```typescript
|
|
641
|
+
* taskCompletedOutput({});
|
|
642
|
+
* ```
|
|
643
|
+
*/
|
|
644
|
+
export declare const taskCompletedOutput: (options?: CommonOptions) => {
|
|
645
|
+
readonly _type: "TaskCompleted";
|
|
646
|
+
stdout: SyncHookJSONOutput;
|
|
647
|
+
};
|
|
604
648
|
/**
|
|
605
649
|
* @deprecated Use CommonOptions instead
|
|
606
650
|
*/
|
package/types/types.d.ts
CHANGED
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
* Re-exports types from @anthropic-ai/claude-agent-sdk with "SDK" prefix.
|
|
13
13
|
* These are used as base types for extension, ensuring synchronization with the SDK.
|
|
14
14
|
*/
|
|
15
|
-
export type { BaseHookInput as SDKBaseHookInput, HookEvent as SDKHookEvent, HookInput as SDKHookInput, NotificationHookInput as SDKNotificationHookInput, PermissionMode as SDKPermissionMode, PermissionRequestHookInput as SDKPermissionRequestHookInput, PermissionUpdate as SDKPermissionUpdate, PostToolUseFailureHookInput as SDKPostToolUseFailureHookInput, PostToolUseHookInput as SDKPostToolUseHookInput, PreCompactHookInput as SDKPreCompactHookInput, PreToolUseHookInput as SDKPreToolUseHookInput, SessionEndHookInput as SDKSessionEndHookInput, SessionStartHookInput as SDKSessionStartHookInput, SetupHookInput as SDKSetupHookInput, StopHookInput as SDKStopHookInput, SubagentStartHookInput as SDKSubagentStartHookInput, SubagentStopHookInput as SDKSubagentStopHookInput, UserPromptSubmitHookInput as SDKUserPromptSubmitHookInput, } from "@anthropic-ai/claude-agent-sdk";
|
|
16
|
-
import type { BaseHookInput as SDKBaseHookInput, NotificationHookInput as SDKNotificationHookInput, PermissionMode as SDKPermissionMode, PermissionRequestHookInput as SDKPermissionRequestHookInput, PermissionUpdate as SDKPermissionUpdate, PostToolUseFailureHookInput as SDKPostToolUseFailureHookInput, PostToolUseHookInput as SDKPostToolUseHookInput, PreCompactHookInput as SDKPreCompactHookInput, PreToolUseHookInput as SDKPreToolUseHookInput, SessionEndHookInput as SDKSessionEndHookInput, SessionStartHookInput as SDKSessionStartHookInput, SetupHookInput as SDKSetupHookInput, StopHookInput as SDKStopHookInput, SubagentStartHookInput as SDKSubagentStartHookInput, SubagentStopHookInput as SDKSubagentStopHookInput, UserPromptSubmitHookInput as SDKUserPromptSubmitHookInput } from "@anthropic-ai/claude-agent-sdk";
|
|
15
|
+
export type { BaseHookInput as SDKBaseHookInput, HookEvent as SDKHookEvent, HookInput as SDKHookInput, NotificationHookInput as SDKNotificationHookInput, PermissionMode as SDKPermissionMode, PermissionRequestHookInput as SDKPermissionRequestHookInput, PermissionUpdate as SDKPermissionUpdate, PostToolUseFailureHookInput as SDKPostToolUseFailureHookInput, PostToolUseHookInput as SDKPostToolUseHookInput, PreCompactHookInput as SDKPreCompactHookInput, PreToolUseHookInput as SDKPreToolUseHookInput, SessionEndHookInput as SDKSessionEndHookInput, SessionStartHookInput as SDKSessionStartHookInput, SetupHookInput as SDKSetupHookInput, StopHookInput as SDKStopHookInput, SubagentStartHookInput as SDKSubagentStartHookInput, SubagentStopHookInput as SDKSubagentStopHookInput, TaskCompletedHookInput as SDKTaskCompletedHookInput, TeammateIdleHookInput as SDKTeammateIdleHookInput, UserPromptSubmitHookInput as SDKUserPromptSubmitHookInput, } from "@anthropic-ai/claude-agent-sdk";
|
|
16
|
+
import type { BaseHookInput as SDKBaseHookInput, NotificationHookInput as SDKNotificationHookInput, PermissionMode as SDKPermissionMode, PermissionRequestHookInput as SDKPermissionRequestHookInput, PermissionUpdate as SDKPermissionUpdate, PostToolUseFailureHookInput as SDKPostToolUseFailureHookInput, PostToolUseHookInput as SDKPostToolUseHookInput, PreCompactHookInput as SDKPreCompactHookInput, PreToolUseHookInput as SDKPreToolUseHookInput, SessionEndHookInput as SDKSessionEndHookInput, SessionStartHookInput as SDKSessionStartHookInput, SetupHookInput as SDKSetupHookInput, StopHookInput as SDKStopHookInput, SubagentStartHookInput as SDKSubagentStartHookInput, SubagentStopHookInput as SDKSubagentStopHookInput, TaskCompletedHookInput as SDKTaskCompletedHookInput, TeammateIdleHookInput as SDKTeammateIdleHookInput, UserPromptSubmitHookInput as SDKUserPromptSubmitHookInput } from "@anthropic-ai/claude-agent-sdk";
|
|
17
17
|
import type { AgentInput, AskUserQuestionInput, BashInput, ExitPlanModeInput, FileEditInput, FileReadInput, FileWriteInput, GlobInput, GrepInput, TaskStopInput as KillShellInput, NotebookEditInput, TaskOutputInput, TodoWriteInput, WebFetchInput, WebSearchInput } from "@anthropic-ai/claude-agent-sdk/sdk-tools.js";
|
|
18
18
|
/**
|
|
19
19
|
* Permission mode for controlling how tool executions are handled.
|
|
@@ -358,6 +358,46 @@ export interface PermissionRequestInput extends SDKPermissionRequestHookInput {
|
|
|
358
358
|
*/
|
|
359
359
|
tool_use_id: string;
|
|
360
360
|
}
|
|
361
|
+
/**
|
|
362
|
+
* Input for TeammateIdle hooks.
|
|
363
|
+
*
|
|
364
|
+
* Fires when a teammate in a team is about to go idle, allowing you to:
|
|
365
|
+
* - Assign work to idle teammates
|
|
366
|
+
* - Log team activity
|
|
367
|
+
* - Coordinate multi-agent workflows
|
|
368
|
+
*
|
|
369
|
+
* This hook does not support matchers; it fires on all teammate idle events.
|
|
370
|
+
* @example
|
|
371
|
+
* ```typescript
|
|
372
|
+
* // Assign work to an idle teammate
|
|
373
|
+
* teammateIdleHook({}, async (input: TeammateIdleInput) => {
|
|
374
|
+
* console.log(`${input.teammate_name} is idle in team ${input.team_name}`);
|
|
375
|
+
* return teammateIdleOutput({});
|
|
376
|
+
* });
|
|
377
|
+
* ```
|
|
378
|
+
* @see https://code.claude.com/docs/en/hooks#teammateidle
|
|
379
|
+
*/
|
|
380
|
+
export type TeammateIdleInput = SDKTeammateIdleHookInput;
|
|
381
|
+
/**
|
|
382
|
+
* Input for TaskCompleted hooks.
|
|
383
|
+
*
|
|
384
|
+
* Fires when a task is being marked as completed, allowing you to:
|
|
385
|
+
* - Verify task completion
|
|
386
|
+
* - Log task metrics
|
|
387
|
+
* - Trigger follow-up actions
|
|
388
|
+
*
|
|
389
|
+
* This hook does not support matchers; it fires on all task completion events.
|
|
390
|
+
* @example
|
|
391
|
+
* ```typescript
|
|
392
|
+
* // Log task completion
|
|
393
|
+
* taskCompletedHook({}, async (input: TaskCompletedInput) => {
|
|
394
|
+
* console.log(`Task ${input.task_id}: ${input.task_subject} completed`);
|
|
395
|
+
* return taskCompletedOutput({});
|
|
396
|
+
* });
|
|
397
|
+
* ```
|
|
398
|
+
* @see https://code.claude.com/docs/en/hooks#taskcompleted
|
|
399
|
+
*/
|
|
400
|
+
export type TaskCompletedInput = SDKTaskCompletedHookInput;
|
|
361
401
|
/**
|
|
362
402
|
* Trigger type for Setup hooks.
|
|
363
403
|
*/
|
|
@@ -415,7 +455,7 @@ export type SetupInput = SDKSetupHookInput;
|
|
|
415
455
|
* ```
|
|
416
456
|
* @see https://code.claude.com/docs/en/hooks
|
|
417
457
|
*/
|
|
418
|
-
export type HookInput = PreToolUseInput | PostToolUseInput | PostToolUseFailureInput | NotificationInput | UserPromptSubmitInput | SessionStartInput | SessionEndInput | StopInput | SubagentStartInput | SubagentStopInput | PreCompactInput | PermissionRequestInput | SetupInput;
|
|
458
|
+
export type HookInput = PreToolUseInput | PostToolUseInput | PostToolUseFailureInput | NotificationInput | UserPromptSubmitInput | SessionStartInput | SessionEndInput | StopInput | SubagentStartInput | SubagentStopInput | PreCompactInput | PermissionRequestInput | SetupInput | TeammateIdleInput | TaskCompletedInput;
|
|
419
459
|
/**
|
|
420
460
|
* Hook event name literal union.
|
|
421
461
|
*
|
|
@@ -433,7 +473,7 @@ export type HookEventName = HookInput["hook_event_name"];
|
|
|
433
473
|
* }
|
|
434
474
|
* ```
|
|
435
475
|
*/
|
|
436
|
-
export declare const HOOK_EVENT_NAMES: readonly ["PreToolUse", "PostToolUse", "PostToolUseFailure", "Notification", "UserPromptSubmit", "SessionStart", "SessionEnd", "Stop", "SubagentStart", "SubagentStop", "PreCompact", "PermissionRequest", "Setup"];
|
|
476
|
+
export declare const HOOK_EVENT_NAMES: readonly ["PreToolUse", "PostToolUse", "PostToolUseFailure", "Notification", "UserPromptSubmit", "SessionStart", "SessionEnd", "Stop", "SubagentStart", "SubagentStop", "PreCompact", "PermissionRequest", "Setup", "TeammateIdle", "TaskCompleted"];
|
|
437
477
|
export type { SDKPermissionUpdate as PermissionUpdate };
|
|
438
478
|
/**
|
|
439
479
|
* Re-export all tool input types from the official Claude Agent SDK.
|