@a5c-ai/agent-comm-mux 5.0.1-staging.04ca6ab00d21
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/LICENSE +21 -0
- package/README.md +99 -0
- package/dist/adapter-registry.d.ts +51 -0
- package/dist/adapter-registry.d.ts.map +1 -0
- package/dist/adapter-registry.js +208 -0
- package/dist/adapter-registry.js.map +1 -0
- package/dist/adapter-types.d.ts +164 -0
- package/dist/adapter-types.d.ts.map +1 -0
- package/dist/adapter-types.js +27 -0
- package/dist/adapter-types.js.map +1 -0
- package/dist/adapter.d.ts +248 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +18 -0
- package/dist/adapter.js.map +1 -0
- package/dist/atomic-fs.d.ts +33 -0
- package/dist/atomic-fs.d.ts.map +1 -0
- package/dist/atomic-fs.js +190 -0
- package/dist/atomic-fs.js.map +1 -0
- package/dist/auth-manager.d.ts +37 -0
- package/dist/auth-manager.d.ts.map +1 -0
- package/dist/auth-manager.js +94 -0
- package/dist/auth-manager.js.map +1 -0
- package/dist/auth-types.d.ts +83 -0
- package/dist/auth-types.d.ts.map +1 -0
- package/dist/auth-types.js +10 -0
- package/dist/auth-types.js.map +1 -0
- package/dist/automation.d.ts +104 -0
- package/dist/automation.d.ts.map +1 -0
- package/dist/automation.js +2 -0
- package/dist/automation.js.map +1 -0
- package/dist/browser.d.ts +5 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +2 -0
- package/dist/browser.js.map +1 -0
- package/dist/builtin-hooks.d.ts +24 -0
- package/dist/builtin-hooks.d.ts.map +1 -0
- package/dist/builtin-hooks.js +80 -0
- package/dist/builtin-hooks.js.map +1 -0
- package/dist/capabilities.d.ts +251 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +7 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/client.d.ts +118 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +316 -0
- package/dist/client.js.map +1 -0
- package/dist/config-manager.d.ts +85 -0
- package/dist/config-manager.d.ts.map +1 -0
- package/dist/config-manager.js +202 -0
- package/dist/config-manager.js.map +1 -0
- package/dist/config-types.d.ts +134 -0
- package/dist/config-types.d.ts.map +1 -0
- package/dist/config-types.js +10 -0
- package/dist/config-types.js.map +1 -0
- package/dist/cost-utils.d.ts +31 -0
- package/dist/cost-utils.d.ts.map +1 -0
- package/dist/cost-utils.js +69 -0
- package/dist/cost-utils.js.map +1 -0
- package/dist/errors.d.ts +50 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +85 -0
- package/dist/errors.js.map +1 -0
- package/dist/events-control.d.ts +91 -0
- package/dist/events-control.d.ts.map +1 -0
- package/dist/events-control.js +8 -0
- package/dist/events-control.js.map +1 -0
- package/dist/events.d.ts +285 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +8 -0
- package/dist/events.js.map +1 -0
- package/dist/hook-catalog.d.ts +20 -0
- package/dist/hook-catalog.d.ts.map +1 -0
- package/dist/hook-catalog.js +63 -0
- package/dist/hook-catalog.js.map +1 -0
- package/dist/hook-dispatcher.d.ts +24 -0
- package/dist/hook-dispatcher.d.ts.map +1 -0
- package/dist/hook-dispatcher.js +91 -0
- package/dist/hook-dispatcher.js.map +1 -0
- package/dist/hook-payload.d.ts +24 -0
- package/dist/hook-payload.d.ts.map +1 -0
- package/dist/hook-payload.js +62 -0
- package/dist/hook-payload.js.map +1 -0
- package/dist/hooks.d.ts +59 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +118 -0
- package/dist/hooks.js.map +1 -0
- package/dist/host-detection.d.ts +67 -0
- package/dist/host-detection.d.ts.map +1 -0
- package/dist/host-detection.js +147 -0
- package/dist/host-detection.js.map +1 -0
- package/dist/index.d.ts +88 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction-channel-impl.d.ts +56 -0
- package/dist/interaction-channel-impl.d.ts.map +1 -0
- package/dist/interaction-channel-impl.js +159 -0
- package/dist/interaction-channel-impl.js.map +1 -0
- package/dist/interaction.d.ts +93 -0
- package/dist/interaction.d.ts.map +1 -0
- package/dist/interaction.js +8 -0
- package/dist/interaction.js.map +1 -0
- package/dist/invocation.d.ts +100 -0
- package/dist/invocation.d.ts.map +1 -0
- package/dist/invocation.js +17 -0
- package/dist/invocation.js.map +1 -0
- package/dist/kanban.d.ts +894 -0
- package/dist/kanban.d.ts.map +1 -0
- package/dist/kanban.js +1155 -0
- package/dist/kanban.js.map +1 -0
- package/dist/merge.d.ts +37 -0
- package/dist/merge.d.ts.map +1 -0
- package/dist/merge.js +102 -0
- package/dist/merge.js.map +1 -0
- package/dist/model-registry.d.ts +61 -0
- package/dist/model-registry.d.ts.map +1 -0
- package/dist/model-registry.js +198 -0
- package/dist/model-registry.js.map +1 -0
- package/dist/plugin-manager-impl.d.ts +48 -0
- package/dist/plugin-manager-impl.d.ts.map +1 -0
- package/dist/plugin-manager-impl.js +343 -0
- package/dist/plugin-manager-impl.js.map +1 -0
- package/dist/plugin-manager.d.ts +81 -0
- package/dist/plugin-manager.d.ts.map +1 -0
- package/dist/plugin-manager.js +7 -0
- package/dist/plugin-manager.js.map +1 -0
- package/dist/plugin-types.d.ts +114 -0
- package/dist/plugin-types.d.ts.map +1 -0
- package/dist/plugin-types.js +7 -0
- package/dist/plugin-types.js.map +1 -0
- package/dist/process-tracker.d.ts +20 -0
- package/dist/process-tracker.d.ts.map +1 -0
- package/dist/process-tracker.js +96 -0
- package/dist/process-tracker.js.map +1 -0
- package/dist/profiles.d.ts +99 -0
- package/dist/profiles.d.ts.map +1 -0
- package/dist/profiles.js +231 -0
- package/dist/profiles.js.map +1 -0
- package/dist/programmatic-runner.d.ts +4 -0
- package/dist/programmatic-runner.d.ts.map +1 -0
- package/dist/programmatic-runner.js +110 -0
- package/dist/programmatic-runner.js.map +1 -0
- package/dist/provider-config.d.ts +40 -0
- package/dist/provider-config.d.ts.map +1 -0
- package/dist/provider-config.js +67 -0
- package/dist/provider-config.js.map +1 -0
- package/dist/provider-profiles.d.ts +47 -0
- package/dist/provider-profiles.d.ts.map +1 -0
- package/dist/provider-profiles.js +117 -0
- package/dist/provider-profiles.js.map +1 -0
- package/dist/provider-resolver.d.ts +15 -0
- package/dist/provider-resolver.d.ts.map +1 -0
- package/dist/provider-resolver.js +114 -0
- package/dist/provider-resolver.js.map +1 -0
- package/dist/provider-support-matrix.d.ts +12 -0
- package/dist/provider-support-matrix.d.ts.map +1 -0
- package/dist/provider-support-matrix.js +88 -0
- package/dist/provider-support-matrix.js.map +1 -0
- package/dist/remote-runner.d.ts +4 -0
- package/dist/remote-runner.d.ts.map +1 -0
- package/dist/remote-runner.js +114 -0
- package/dist/remote-runner.js.map +1 -0
- package/dist/retry.d.ts +13 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +17 -0
- package/dist/retry.js.map +1 -0
- package/dist/run-handle-cost.d.ts +36 -0
- package/dist/run-handle-cost.d.ts.map +1 -0
- package/dist/run-handle-cost.js +62 -0
- package/dist/run-handle-cost.js.map +1 -0
- package/dist/run-handle-impl.d.ts +144 -0
- package/dist/run-handle-impl.d.ts.map +1 -0
- package/dist/run-handle-impl.js +695 -0
- package/dist/run-handle-impl.js.map +1 -0
- package/dist/run-handle.d.ts +222 -0
- package/dist/run-handle.d.ts.map +1 -0
- package/dist/run-handle.js +9 -0
- package/dist/run-handle.js.map +1 -0
- package/dist/run-options-validation.d.ts +23 -0
- package/dist/run-options-validation.d.ts.map +1 -0
- package/dist/run-options-validation.js +234 -0
- package/dist/run-options-validation.js.map +1 -0
- package/dist/run-options.d.ts +128 -0
- package/dist/run-options.d.ts.map +1 -0
- package/dist/run-options.js +329 -0
- package/dist/run-options.js.map +1 -0
- package/dist/runtime-hook-dispatcher.d.ts +19 -0
- package/dist/runtime-hook-dispatcher.d.ts.map +1 -0
- package/dist/runtime-hook-dispatcher.js +50 -0
- package/dist/runtime-hook-dispatcher.js.map +1 -0
- package/dist/runtime-hooks.d.ts +47 -0
- package/dist/runtime-hooks.d.ts.map +1 -0
- package/dist/runtime-hooks.js +2 -0
- package/dist/runtime-hooks.js.map +1 -0
- package/dist/schema/__tests__/event-schema.test.d.ts +1 -0
- package/dist/schema/__tests__/event-schema.test.d.ts.map +1 -0
- package/dist/schema/__tests__/event-schema.test.js +480 -0
- package/dist/schema/__tests__/event-schema.test.js.map +1 -0
- package/dist/schema/event-schema.d.ts +120 -0
- package/dist/schema/event-schema.d.ts.map +1 -0
- package/dist/schema/event-schema.js +546 -0
- package/dist/schema/event-schema.js.map +1 -0
- package/dist/schema/index.d.ts +7 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +49 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/session-manager-helpers.d.ts +33 -0
- package/dist/session-manager-helpers.d.ts.map +1 -0
- package/dist/session-manager-helpers.js +66 -0
- package/dist/session-manager-helpers.js.map +1 -0
- package/dist/session-manager.d.ts +70 -0
- package/dist/session-manager.d.ts.map +1 -0
- package/dist/session-manager.js +343 -0
- package/dist/session-manager.js.map +1 -0
- package/dist/session-types.d.ts +358 -0
- package/dist/session-types.d.ts.map +1 -0
- package/dist/session-types.js +10 -0
- package/dist/session-types.js.map +1 -0
- package/dist/spawn-invocation.d.ts +52 -0
- package/dist/spawn-invocation.d.ts.map +1 -0
- package/dist/spawn-invocation.js +218 -0
- package/dist/spawn-invocation.js.map +1 -0
- package/dist/spawn-runner-utils.d.ts +21 -0
- package/dist/spawn-runner-utils.d.ts.map +1 -0
- package/dist/spawn-runner-utils.js +102 -0
- package/dist/spawn-runner-utils.js.map +1 -0
- package/dist/spawn-runner.d.ts +21 -0
- package/dist/spawn-runner.d.ts.map +1 -0
- package/dist/spawn-runner.js +576 -0
- package/dist/spawn-runner.js.map +1 -0
- package/dist/spawn-runtime-hooks.d.ts +15 -0
- package/dist/spawn-runtime-hooks.d.ts.map +1 -0
- package/dist/spawn-runtime-hooks.js +136 -0
- package/dist/spawn-runtime-hooks.js.map +1 -0
- package/dist/state-machine.d.ts +33 -0
- package/dist/state-machine.d.ts.map +1 -0
- package/dist/state-machine.js +61 -0
- package/dist/state-machine.js.map +1 -0
- package/dist/storage.d.ts +47 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +90 -0
- package/dist/storage.js.map +1 -0
- package/dist/stream-assembler.d.ts +51 -0
- package/dist/stream-assembler.d.ts.map +1 -0
- package/dist/stream-assembler.js +86 -0
- package/dist/stream-assembler.js.map +1 -0
- package/dist/tools/classify.d.ts +9 -0
- package/dist/tools/classify.d.ts.map +1 -0
- package/dist/tools/classify.js +77 -0
- package/dist/tools/classify.js.map +1 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types.d.ts +288 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/workspaces.d.ts +142 -0
- package/dist/workspaces.d.ts.map +1 -0
- package/dist/workspaces.js +515 -0
- package/dist/workspaces.js.map +1 -0
- package/package.json +107 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate limits, run lifecycle / control, error, and debug events.
|
|
3
|
+
*
|
|
4
|
+
* Split out of events.ts for file-size hygiene; re-exported from events.ts
|
|
5
|
+
* so the public surface `import { ... } from './events.js'` is unchanged.
|
|
6
|
+
*/
|
|
7
|
+
import type { ErrorCode } from './types.js';
|
|
8
|
+
import type { BaseEvent } from './types.js';
|
|
9
|
+
export interface RateLimitedEvent extends BaseEvent {
|
|
10
|
+
type: 'rate_limited';
|
|
11
|
+
retryAfterMs?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface ContextLimitWarningEvent extends BaseEvent {
|
|
14
|
+
type: 'context_limit_warning';
|
|
15
|
+
usedTokens: number;
|
|
16
|
+
maxTokens: number;
|
|
17
|
+
pctUsed: number;
|
|
18
|
+
}
|
|
19
|
+
export interface ContextCompactedEvent extends BaseEvent {
|
|
20
|
+
type: 'context_compacted';
|
|
21
|
+
summary: string;
|
|
22
|
+
tokensSaved: number;
|
|
23
|
+
}
|
|
24
|
+
export interface RetryEvent extends BaseEvent {
|
|
25
|
+
type: 'retry';
|
|
26
|
+
attempt: number;
|
|
27
|
+
maxAttempts: number;
|
|
28
|
+
reason: string;
|
|
29
|
+
delayMs: number;
|
|
30
|
+
}
|
|
31
|
+
export interface InterruptedEvent extends BaseEvent {
|
|
32
|
+
type: 'interrupted';
|
|
33
|
+
}
|
|
34
|
+
export interface AbortedEvent extends BaseEvent {
|
|
35
|
+
type: 'aborted';
|
|
36
|
+
}
|
|
37
|
+
export interface PausedEvent extends BaseEvent {
|
|
38
|
+
type: 'paused';
|
|
39
|
+
}
|
|
40
|
+
export interface ResumedEvent extends BaseEvent {
|
|
41
|
+
type: 'resumed';
|
|
42
|
+
}
|
|
43
|
+
export interface TimeoutEvent extends BaseEvent {
|
|
44
|
+
type: 'timeout';
|
|
45
|
+
kind: 'run' | 'inactivity';
|
|
46
|
+
}
|
|
47
|
+
export interface TurnLimitEvent extends BaseEvent {
|
|
48
|
+
type: 'turn_limit';
|
|
49
|
+
maxTurns: number;
|
|
50
|
+
}
|
|
51
|
+
export interface StreamFallbackEvent extends BaseEvent {
|
|
52
|
+
type: 'stream_fallback';
|
|
53
|
+
capability: 'text' | 'tool_calls' | 'thinking';
|
|
54
|
+
reason: string;
|
|
55
|
+
}
|
|
56
|
+
export interface AuthErrorEvent extends BaseEvent {
|
|
57
|
+
type: 'auth_error';
|
|
58
|
+
message: string;
|
|
59
|
+
guidance: string;
|
|
60
|
+
}
|
|
61
|
+
export interface RateLimitErrorEvent extends BaseEvent {
|
|
62
|
+
type: 'rate_limit_error';
|
|
63
|
+
message: string;
|
|
64
|
+
retryAfterMs?: number;
|
|
65
|
+
}
|
|
66
|
+
export interface ContextExceededEvent extends BaseEvent {
|
|
67
|
+
type: 'context_exceeded';
|
|
68
|
+
usedTokens: number;
|
|
69
|
+
maxTokens: number;
|
|
70
|
+
}
|
|
71
|
+
export interface CrashEvent extends BaseEvent {
|
|
72
|
+
type: 'crash';
|
|
73
|
+
exitCode: number;
|
|
74
|
+
stderr: string;
|
|
75
|
+
}
|
|
76
|
+
export interface ErrorEvent extends BaseEvent {
|
|
77
|
+
type: 'error';
|
|
78
|
+
code: ErrorCode;
|
|
79
|
+
message: string;
|
|
80
|
+
recoverable: boolean;
|
|
81
|
+
}
|
|
82
|
+
export interface DebugEvent extends BaseEvent {
|
|
83
|
+
type: 'debug';
|
|
84
|
+
level: 'verbose' | 'info' | 'warn';
|
|
85
|
+
message: string;
|
|
86
|
+
}
|
|
87
|
+
export interface LogEvent extends BaseEvent {
|
|
88
|
+
type: 'log';
|
|
89
|
+
source: 'stdout' | 'stderr';
|
|
90
|
+
line: string;
|
|
91
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-control.d.ts","sourceRoot":"","sources":["../src/events-control.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate limits, run lifecycle / control, error, and debug events.
|
|
3
|
+
*
|
|
4
|
+
* Split out of events.ts for file-size hygiene; re-exported from events.ts
|
|
5
|
+
* so the public surface `import { ... } from './events.js'` is unchanged.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=events-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-control.js","sourceRoot":"","sources":["../src/events-control.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentEvent union type and all event discriminants for @a5c-ai/agent-mux.
|
|
3
|
+
*
|
|
4
|
+
* 67 event types across 18 categories. All extend BaseEvent with a `type`
|
|
5
|
+
* discriminant, `runId`, `agent`, and `timestamp`.
|
|
6
|
+
*/
|
|
7
|
+
import type { CostRecord } from './types.js';
|
|
8
|
+
export type { BaseEvent } from './types.js';
|
|
9
|
+
import type { BaseEvent } from './types.js';
|
|
10
|
+
export interface SessionStartEvent extends BaseEvent {
|
|
11
|
+
type: 'session_start';
|
|
12
|
+
sessionId: string;
|
|
13
|
+
resumed: boolean;
|
|
14
|
+
forkedFrom?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface SessionResumeEvent extends BaseEvent {
|
|
17
|
+
type: 'session_resume';
|
|
18
|
+
sessionId: string;
|
|
19
|
+
priorTurnCount: number;
|
|
20
|
+
}
|
|
21
|
+
export interface SessionForkEvent extends BaseEvent {
|
|
22
|
+
type: 'session_fork';
|
|
23
|
+
sessionId: string;
|
|
24
|
+
forkedFrom: string;
|
|
25
|
+
}
|
|
26
|
+
export interface SessionCheckpointEvent extends BaseEvent {
|
|
27
|
+
type: 'session_checkpoint';
|
|
28
|
+
sessionId: string;
|
|
29
|
+
checkpointId: string;
|
|
30
|
+
}
|
|
31
|
+
export interface SessionEndEvent extends BaseEvent {
|
|
32
|
+
type: 'session_end';
|
|
33
|
+
sessionId: string;
|
|
34
|
+
turnCount: number;
|
|
35
|
+
cost?: CostRecord;
|
|
36
|
+
}
|
|
37
|
+
export interface TurnStartEvent extends BaseEvent {
|
|
38
|
+
type: 'turn_start';
|
|
39
|
+
turnIndex: number;
|
|
40
|
+
}
|
|
41
|
+
export interface TurnEndEvent extends BaseEvent {
|
|
42
|
+
type: 'turn_end';
|
|
43
|
+
turnIndex: number;
|
|
44
|
+
cost?: CostRecord;
|
|
45
|
+
}
|
|
46
|
+
export interface StepStartEvent extends BaseEvent {
|
|
47
|
+
type: 'step_start';
|
|
48
|
+
turnIndex: number;
|
|
49
|
+
stepIndex: number;
|
|
50
|
+
stepType: string;
|
|
51
|
+
}
|
|
52
|
+
export interface StepEndEvent extends BaseEvent {
|
|
53
|
+
type: 'step_end';
|
|
54
|
+
turnIndex: number;
|
|
55
|
+
stepIndex: number;
|
|
56
|
+
}
|
|
57
|
+
export interface MessageStartEvent extends BaseEvent {
|
|
58
|
+
type: 'message_start';
|
|
59
|
+
}
|
|
60
|
+
export interface TextDeltaEvent extends BaseEvent {
|
|
61
|
+
type: 'text_delta';
|
|
62
|
+
delta: string;
|
|
63
|
+
accumulated: string;
|
|
64
|
+
}
|
|
65
|
+
export interface MessageStopEvent extends BaseEvent {
|
|
66
|
+
type: 'message_stop';
|
|
67
|
+
text: string;
|
|
68
|
+
}
|
|
69
|
+
export interface ThinkingStartEvent extends BaseEvent {
|
|
70
|
+
type: 'thinking_start';
|
|
71
|
+
effort?: string;
|
|
72
|
+
}
|
|
73
|
+
export interface ThinkingDeltaEvent extends BaseEvent {
|
|
74
|
+
type: 'thinking_delta';
|
|
75
|
+
delta: string;
|
|
76
|
+
accumulated: string;
|
|
77
|
+
}
|
|
78
|
+
export interface ThinkingStopEvent extends BaseEvent {
|
|
79
|
+
type: 'thinking_stop';
|
|
80
|
+
thinking: string;
|
|
81
|
+
}
|
|
82
|
+
export interface ToolCallStartEvent extends BaseEvent {
|
|
83
|
+
type: 'tool_call_start';
|
|
84
|
+
toolCallId: string;
|
|
85
|
+
toolName: string;
|
|
86
|
+
inputAccumulated: string;
|
|
87
|
+
}
|
|
88
|
+
export interface ToolInputDeltaEvent extends BaseEvent {
|
|
89
|
+
type: 'tool_input_delta';
|
|
90
|
+
toolCallId: string;
|
|
91
|
+
delta: string;
|
|
92
|
+
inputAccumulated: string;
|
|
93
|
+
}
|
|
94
|
+
export interface ToolCallReadyEvent extends BaseEvent {
|
|
95
|
+
type: 'tool_call_ready';
|
|
96
|
+
toolCallId: string;
|
|
97
|
+
toolName: string;
|
|
98
|
+
input: unknown;
|
|
99
|
+
}
|
|
100
|
+
export interface ToolResultEvent extends BaseEvent {
|
|
101
|
+
type: 'tool_result';
|
|
102
|
+
toolCallId: string;
|
|
103
|
+
toolName: string;
|
|
104
|
+
output: unknown;
|
|
105
|
+
durationMs: number;
|
|
106
|
+
}
|
|
107
|
+
export interface ToolErrorEvent extends BaseEvent {
|
|
108
|
+
type: 'tool_error';
|
|
109
|
+
toolCallId: string;
|
|
110
|
+
toolName: string;
|
|
111
|
+
error: string;
|
|
112
|
+
}
|
|
113
|
+
export interface FileReadEvent extends BaseEvent {
|
|
114
|
+
type: 'file_read';
|
|
115
|
+
path: string;
|
|
116
|
+
}
|
|
117
|
+
export interface FileWriteEvent extends BaseEvent {
|
|
118
|
+
type: 'file_write';
|
|
119
|
+
path: string;
|
|
120
|
+
byteCount: number;
|
|
121
|
+
}
|
|
122
|
+
export interface FileCreateEvent extends BaseEvent {
|
|
123
|
+
type: 'file_create';
|
|
124
|
+
path: string;
|
|
125
|
+
byteCount: number;
|
|
126
|
+
}
|
|
127
|
+
export interface FileDeleteEvent extends BaseEvent {
|
|
128
|
+
type: 'file_delete';
|
|
129
|
+
path: string;
|
|
130
|
+
}
|
|
131
|
+
export interface FilePatchEvent extends BaseEvent {
|
|
132
|
+
type: 'file_patch';
|
|
133
|
+
path: string;
|
|
134
|
+
diff: string;
|
|
135
|
+
}
|
|
136
|
+
export interface ShellStartEvent extends BaseEvent {
|
|
137
|
+
type: 'shell_start';
|
|
138
|
+
command: string;
|
|
139
|
+
cwd: string;
|
|
140
|
+
}
|
|
141
|
+
export interface ShellStdoutDeltaEvent extends BaseEvent {
|
|
142
|
+
type: 'shell_stdout_delta';
|
|
143
|
+
delta: string;
|
|
144
|
+
}
|
|
145
|
+
export interface ShellStderrDeltaEvent extends BaseEvent {
|
|
146
|
+
type: 'shell_stderr_delta';
|
|
147
|
+
delta: string;
|
|
148
|
+
}
|
|
149
|
+
export interface ShellExitEvent extends BaseEvent {
|
|
150
|
+
type: 'shell_exit';
|
|
151
|
+
exitCode: number;
|
|
152
|
+
durationMs: number;
|
|
153
|
+
}
|
|
154
|
+
export interface McpToolCallStartEvent extends BaseEvent {
|
|
155
|
+
type: 'mcp_tool_call_start';
|
|
156
|
+
toolCallId: string;
|
|
157
|
+
server: string;
|
|
158
|
+
toolName: string;
|
|
159
|
+
input: unknown;
|
|
160
|
+
}
|
|
161
|
+
export interface McpToolResultEvent extends BaseEvent {
|
|
162
|
+
type: 'mcp_tool_result';
|
|
163
|
+
toolCallId: string;
|
|
164
|
+
server: string;
|
|
165
|
+
toolName: string;
|
|
166
|
+
output: unknown;
|
|
167
|
+
}
|
|
168
|
+
export interface McpToolErrorEvent extends BaseEvent {
|
|
169
|
+
type: 'mcp_tool_error';
|
|
170
|
+
toolCallId: string;
|
|
171
|
+
server: string;
|
|
172
|
+
toolName: string;
|
|
173
|
+
error: string;
|
|
174
|
+
}
|
|
175
|
+
export interface SubagentSpawnEvent extends BaseEvent {
|
|
176
|
+
type: 'subagent_spawn';
|
|
177
|
+
subagentId: string;
|
|
178
|
+
agentName: string;
|
|
179
|
+
prompt: string;
|
|
180
|
+
}
|
|
181
|
+
export interface SubagentResultEvent extends BaseEvent {
|
|
182
|
+
type: 'subagent_result';
|
|
183
|
+
subagentId: string;
|
|
184
|
+
agentName: string;
|
|
185
|
+
summary: string;
|
|
186
|
+
cost?: CostRecord;
|
|
187
|
+
}
|
|
188
|
+
export interface SubagentErrorEvent extends BaseEvent {
|
|
189
|
+
type: 'subagent_error';
|
|
190
|
+
subagentId: string;
|
|
191
|
+
agentName: string;
|
|
192
|
+
error: string;
|
|
193
|
+
}
|
|
194
|
+
export interface PluginLoadedEvent extends BaseEvent {
|
|
195
|
+
type: 'plugin_loaded';
|
|
196
|
+
pluginId: string;
|
|
197
|
+
pluginName: string;
|
|
198
|
+
version: string;
|
|
199
|
+
}
|
|
200
|
+
export interface PluginInvokedEvent extends BaseEvent {
|
|
201
|
+
type: 'plugin_invoked';
|
|
202
|
+
pluginId: string;
|
|
203
|
+
pluginName: string;
|
|
204
|
+
}
|
|
205
|
+
export interface PluginErrorEvent extends BaseEvent {
|
|
206
|
+
type: 'plugin_error';
|
|
207
|
+
pluginId: string;
|
|
208
|
+
pluginName: string;
|
|
209
|
+
error: string;
|
|
210
|
+
}
|
|
211
|
+
export interface SkillLoadedEvent extends BaseEvent {
|
|
212
|
+
type: 'skill_loaded';
|
|
213
|
+
skillName: string;
|
|
214
|
+
source: string;
|
|
215
|
+
}
|
|
216
|
+
export interface SkillInvokedEvent extends BaseEvent {
|
|
217
|
+
type: 'skill_invoked';
|
|
218
|
+
skillName: string;
|
|
219
|
+
}
|
|
220
|
+
export interface AgentdocReadEvent extends BaseEvent {
|
|
221
|
+
type: 'agentdoc_read';
|
|
222
|
+
path: string;
|
|
223
|
+
}
|
|
224
|
+
export interface ImageOutputEvent extends BaseEvent {
|
|
225
|
+
type: 'image_output';
|
|
226
|
+
mimeType: string;
|
|
227
|
+
base64?: string;
|
|
228
|
+
filePath?: string;
|
|
229
|
+
}
|
|
230
|
+
export interface ImageInputAckEvent extends BaseEvent {
|
|
231
|
+
type: 'image_input_ack';
|
|
232
|
+
mimeType: string;
|
|
233
|
+
}
|
|
234
|
+
export interface CostEvent extends BaseEvent {
|
|
235
|
+
type: 'cost';
|
|
236
|
+
cost: CostRecord;
|
|
237
|
+
}
|
|
238
|
+
export interface TokenUsageEvent extends BaseEvent {
|
|
239
|
+
type: 'token_usage';
|
|
240
|
+
inputTokens: number;
|
|
241
|
+
outputTokens: number;
|
|
242
|
+
thinkingTokens?: number;
|
|
243
|
+
cachedTokens?: number;
|
|
244
|
+
}
|
|
245
|
+
export interface InputRequiredEvent extends BaseEvent {
|
|
246
|
+
type: 'input_required';
|
|
247
|
+
interactionId: string;
|
|
248
|
+
question: string;
|
|
249
|
+
context?: string;
|
|
250
|
+
source: 'agent' | 'tool';
|
|
251
|
+
}
|
|
252
|
+
export interface ApprovalRequestEvent extends BaseEvent {
|
|
253
|
+
type: 'approval_request';
|
|
254
|
+
interactionId: string;
|
|
255
|
+
action: string;
|
|
256
|
+
detail: string;
|
|
257
|
+
toolName?: string;
|
|
258
|
+
riskLevel: 'low' | 'medium' | 'high';
|
|
259
|
+
}
|
|
260
|
+
export interface ApprovalGrantedEvent extends BaseEvent {
|
|
261
|
+
type: 'approval_granted';
|
|
262
|
+
interactionId: string;
|
|
263
|
+
}
|
|
264
|
+
export interface ApprovalDeniedEvent extends BaseEvent {
|
|
265
|
+
type: 'approval_denied';
|
|
266
|
+
interactionId: string;
|
|
267
|
+
reason?: string;
|
|
268
|
+
}
|
|
269
|
+
export type { RateLimitedEvent, ContextLimitWarningEvent, ContextCompactedEvent, RetryEvent, InterruptedEvent, AbortedEvent, PausedEvent, ResumedEvent, TimeoutEvent, TurnLimitEvent, StreamFallbackEvent, AuthErrorEvent, RateLimitErrorEvent, ContextExceededEvent, CrashEvent, ErrorEvent, DebugEvent, LogEvent, } from './events-control.js';
|
|
270
|
+
import type { RateLimitedEvent, ContextLimitWarningEvent, ContextCompactedEvent, RetryEvent, InterruptedEvent, AbortedEvent, PausedEvent, ResumedEvent, TimeoutEvent, TurnLimitEvent, StreamFallbackEvent, AuthErrorEvent, RateLimitErrorEvent, ContextExceededEvent, CrashEvent, ErrorEvent, DebugEvent, LogEvent } from './events-control.js';
|
|
271
|
+
/**
|
|
272
|
+
* The complete discriminated union of all 67 event types emitted by agent-mux.
|
|
273
|
+
*
|
|
274
|
+
* The `type` field is the discriminant. TypeScript narrowing works out of
|
|
275
|
+
* the box: `if (event.type === 'text_delta') { event.delta; /* TextDeltaEvent *\/ }`
|
|
276
|
+
*/
|
|
277
|
+
export type AgentEvent = SessionStartEvent | SessionResumeEvent | SessionForkEvent | SessionCheckpointEvent | SessionEndEvent | TurnStartEvent | TurnEndEvent | StepStartEvent | StepEndEvent | MessageStartEvent | TextDeltaEvent | MessageStopEvent | ThinkingStartEvent | ThinkingDeltaEvent | ThinkingStopEvent | ToolCallStartEvent | ToolInputDeltaEvent | ToolCallReadyEvent | ToolResultEvent | ToolErrorEvent | FileReadEvent | FileWriteEvent | FileCreateEvent | FileDeleteEvent | FilePatchEvent | ShellStartEvent | ShellStdoutDeltaEvent | ShellStderrDeltaEvent | ShellExitEvent | McpToolCallStartEvent | McpToolResultEvent | McpToolErrorEvent | SubagentSpawnEvent | SubagentResultEvent | SubagentErrorEvent | PluginLoadedEvent | PluginInvokedEvent | PluginErrorEvent | SkillLoadedEvent | SkillInvokedEvent | AgentdocReadEvent | ImageOutputEvent | ImageInputAckEvent | CostEvent | TokenUsageEvent | InputRequiredEvent | ApprovalRequestEvent | ApprovalGrantedEvent | ApprovalDeniedEvent | RateLimitedEvent | ContextLimitWarningEvent | ContextCompactedEvent | RetryEvent | InterruptedEvent | AbortedEvent | PausedEvent | ResumedEvent | TimeoutEvent | TurnLimitEvent | StreamFallbackEvent | AuthErrorEvent | RateLimitErrorEvent | ContextExceededEvent | CrashEvent | ErrorEvent | DebugEvent | LogEvent;
|
|
278
|
+
/** Extract the event type for a given discriminant string. */
|
|
279
|
+
export type EventOfType<T extends AgentEvent['type']> = Extract<AgentEvent, {
|
|
280
|
+
type: T;
|
|
281
|
+
}>;
|
|
282
|
+
/** All valid event type discriminant strings. */
|
|
283
|
+
export type AgentEventType = AgentEvent['type'];
|
|
284
|
+
/** Handler function type for a given event type. */
|
|
285
|
+
export type AgentEventHandler<T extends AgentEventType> = (event: EventOfType<T>) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/events.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentEvent union type and all event discriminants for @a5c-ai/agent-mux.
|
|
3
|
+
*
|
|
4
|
+
* 67 event types across 18 categories. All extend BaseEvent with a `type`
|
|
5
|
+
* discriminant, `runId`, `agent`, and `timestamp`.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-harness hook type catalog.
|
|
3
|
+
*
|
|
4
|
+
* Lists the hook types each harness natively supports. Used by
|
|
5
|
+
* `amux hooks <agent> discover` and to validate `add` / `set` operations.
|
|
6
|
+
*
|
|
7
|
+
* The catalog is conservative: it reflects documented, stable hook names
|
|
8
|
+
* at the time of writing. Unknown hook types are still accepted (marked
|
|
9
|
+
* "custom") so plugin adapters can register their own.
|
|
10
|
+
*/
|
|
11
|
+
import type { AgentName } from './types.js';
|
|
12
|
+
export interface HookTypeEntry {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
/** Direction of the hook: 'pre' blocks/modifies, 'post' observes. */
|
|
16
|
+
direction: 'pre' | 'post' | 'event';
|
|
17
|
+
}
|
|
18
|
+
export declare const HOOK_CATALOG: Record<string, HookTypeEntry[]>;
|
|
19
|
+
export declare function getHookCatalog(agent: AgentName | string): HookTypeEntry[];
|
|
20
|
+
export declare function isKnownHookType(agent: AgentName | string, hookType: string): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-catalog.d.ts","sourceRoot":"","sources":["../src/hook-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;CACrC;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CA0CxD,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,aAAa,EAAE,CAEzE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAIpF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-harness hook type catalog.
|
|
3
|
+
*
|
|
4
|
+
* Lists the hook types each harness natively supports. Used by
|
|
5
|
+
* `amux hooks <agent> discover` and to validate `add` / `set` operations.
|
|
6
|
+
*
|
|
7
|
+
* The catalog is conservative: it reflects documented, stable hook names
|
|
8
|
+
* at the time of writing. Unknown hook types are still accepted (marked
|
|
9
|
+
* "custom") so plugin adapters can register their own.
|
|
10
|
+
*/
|
|
11
|
+
export const HOOK_CATALOG = {
|
|
12
|
+
claude: [
|
|
13
|
+
{ name: 'PreToolUse', description: 'Before a tool is invoked.', direction: 'pre' },
|
|
14
|
+
{ name: 'PostToolUse', description: 'After a tool returns.', direction: 'post' },
|
|
15
|
+
{ name: 'UserPromptSubmit', description: 'When the user submits a prompt.', direction: 'pre' },
|
|
16
|
+
{ name: 'Notification', description: 'Claude emits a notification.', direction: 'event' },
|
|
17
|
+
{ name: 'Stop', description: 'Main agent stops.', direction: 'event' },
|
|
18
|
+
{ name: 'SubagentStop', description: 'Subagent stops.', direction: 'event' },
|
|
19
|
+
{ name: 'SessionStart', description: 'Session starts.', direction: 'event' },
|
|
20
|
+
{ name: 'SessionEnd', description: 'Session ends.', direction: 'event' },
|
|
21
|
+
],
|
|
22
|
+
codex: [
|
|
23
|
+
{ name: 'OnToolCall', description: 'Around tool calls.', direction: 'pre' },
|
|
24
|
+
{ name: 'OnStop', description: 'Codex run stops.', direction: 'event' },
|
|
25
|
+
],
|
|
26
|
+
gemini: [
|
|
27
|
+
{ name: 'pre_prompt', description: 'Before prompt submission.', direction: 'pre' },
|
|
28
|
+
{ name: 'post_response', description: 'After model response.', direction: 'post' },
|
|
29
|
+
],
|
|
30
|
+
copilot: [
|
|
31
|
+
{ name: 'preTool', description: 'Before tool use.', direction: 'pre' },
|
|
32
|
+
{ name: 'postTool', description: 'After tool use.', direction: 'post' },
|
|
33
|
+
],
|
|
34
|
+
cursor: [
|
|
35
|
+
{ name: 'pre_tool', description: 'Before tool use.', direction: 'pre' },
|
|
36
|
+
{ name: 'post_tool', description: 'After tool use.', direction: 'post' },
|
|
37
|
+
],
|
|
38
|
+
opencode: [
|
|
39
|
+
{ name: 'on_step', description: 'Per-step hook.', direction: 'event' },
|
|
40
|
+
],
|
|
41
|
+
pi: [
|
|
42
|
+
{ name: 'onEvent', description: 'Generic event hook.', direction: 'event' },
|
|
43
|
+
],
|
|
44
|
+
omp: [
|
|
45
|
+
{ name: 'onEvent', description: 'Generic event hook.', direction: 'event' },
|
|
46
|
+
],
|
|
47
|
+
openclaw: [
|
|
48
|
+
{ name: 'onEvent', description: 'Generic event hook.', direction: 'event' },
|
|
49
|
+
],
|
|
50
|
+
hermes: [
|
|
51
|
+
{ name: 'onEvent', description: 'Generic event hook.', direction: 'event' },
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
export function getHookCatalog(agent) {
|
|
55
|
+
return HOOK_CATALOG[agent] ?? [];
|
|
56
|
+
}
|
|
57
|
+
export function isKnownHookType(agent, hookType) {
|
|
58
|
+
const entries = HOOK_CATALOG[agent];
|
|
59
|
+
if (!entries)
|
|
60
|
+
return false;
|
|
61
|
+
return entries.some((e) => e.name === hookType);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=hook-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-catalog.js","sourceRoot":"","sources":["../src/hook-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HookDispatcher — runs registered hooks for a payload and aggregates results.
|
|
3
|
+
*
|
|
4
|
+
* Deny wins over allow; modifiedInput is merged in priority order; stdout
|
|
5
|
+
* fragments are concatenated. exitCode follows the first non-zero.
|
|
6
|
+
*/
|
|
7
|
+
import type { HookConfigManager, HookRegistration, UnifiedHookPayload, UnifiedHookResult } from './hooks.js';
|
|
8
|
+
import type { BuiltInHooksRegistry } from './builtin-hooks.js';
|
|
9
|
+
export interface DispatchOptions {
|
|
10
|
+
/** Override env passed to command/script hooks. */
|
|
11
|
+
env?: NodeJS.ProcessEnv;
|
|
12
|
+
/** Working directory for command/script hooks. */
|
|
13
|
+
cwd?: string;
|
|
14
|
+
/** Timeout per external hook (ms). */
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
}
|
|
17
|
+
export declare class HookDispatcher {
|
|
18
|
+
private readonly config;
|
|
19
|
+
private readonly builtins;
|
|
20
|
+
constructor(config: HookConfigManager, builtins: BuiltInHooksRegistry);
|
|
21
|
+
dispatch(payload: UnifiedHookPayload, opts?: DispatchOptions): Promise<UnifiedHookResult>;
|
|
22
|
+
runAll(regs: HookRegistration[], payload: UnifiedHookPayload, opts: DispatchOptions): Promise<UnifiedHookResult>;
|
|
23
|
+
private runOne;
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-dispatcher.d.ts","sourceRoot":"","sources":["../src/hook-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,oBAAoB;IAG3C,QAAQ,CACZ,OAAO,EAAE,kBAAkB,EAC3B,IAAI,GAAE,eAAoB,GACzB,OAAO,CAAC,iBAAiB,CAAC;IAKvB,MAAM,CACV,IAAI,EAAE,gBAAgB,EAAE,EACxB,OAAO,EAAE,kBAAkB,EAC3B,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC;YAYf,MAAM;CAUrB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HookDispatcher — runs registered hooks for a payload and aggregates results.
|
|
3
|
+
*
|
|
4
|
+
* Deny wins over allow; modifiedInput is merged in priority order; stdout
|
|
5
|
+
* fragments are concatenated. exitCode follows the first non-zero.
|
|
6
|
+
*/
|
|
7
|
+
import { spawn } from 'node:child_process';
|
|
8
|
+
export class HookDispatcher {
|
|
9
|
+
config;
|
|
10
|
+
builtins;
|
|
11
|
+
constructor(config, builtins) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
this.builtins = builtins;
|
|
14
|
+
}
|
|
15
|
+
async dispatch(payload, opts = {}) {
|
|
16
|
+
const matches = await this.config.getForAgent(payload.agent, payload.hookType);
|
|
17
|
+
return await this.runAll(matches, payload, opts);
|
|
18
|
+
}
|
|
19
|
+
async runAll(regs, payload, opts) {
|
|
20
|
+
let aggregate = { decision: 'allow', stdout: '', exitCode: 0 };
|
|
21
|
+
for (const reg of regs) {
|
|
22
|
+
const result = await this.runOne(reg, payload, opts);
|
|
23
|
+
aggregate = mergeResults(aggregate, result);
|
|
24
|
+
if (aggregate.decision === 'deny')
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
if (!aggregate.stdout)
|
|
28
|
+
delete aggregate.stdout;
|
|
29
|
+
if (aggregate.exitCode === 0)
|
|
30
|
+
delete aggregate.exitCode;
|
|
31
|
+
return aggregate;
|
|
32
|
+
}
|
|
33
|
+
async runOne(reg, payload, opts) {
|
|
34
|
+
if (reg.handler === 'builtin') {
|
|
35
|
+
return this.builtins.run(reg.target, payload);
|
|
36
|
+
}
|
|
37
|
+
return await runExternal(reg, payload, opts);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function mergeResults(a, b) {
|
|
41
|
+
const decision = a.decision === 'deny' || b.decision === 'deny'
|
|
42
|
+
? 'deny'
|
|
43
|
+
: a.decision === 'modify' || b.decision === 'modify'
|
|
44
|
+
? 'modify'
|
|
45
|
+
: 'allow';
|
|
46
|
+
const modifiedInput = a.modifiedInput || b.modifiedInput
|
|
47
|
+
? { ...(a.modifiedInput ?? {}), ...(b.modifiedInput ?? {}) }
|
|
48
|
+
: undefined;
|
|
49
|
+
return {
|
|
50
|
+
decision,
|
|
51
|
+
message: b.message ?? a.message,
|
|
52
|
+
modifiedInput,
|
|
53
|
+
stdout: (a.stdout ?? '') + (b.stdout ?? ''),
|
|
54
|
+
exitCode: (a.exitCode && a.exitCode !== 0) ? a.exitCode : (b.exitCode ?? 0),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function runExternal(reg, payload, opts) {
|
|
58
|
+
return new Promise((resolve) => {
|
|
59
|
+
const child = spawn(reg.target, [], {
|
|
60
|
+
shell: reg.handler === 'command',
|
|
61
|
+
cwd: opts.cwd,
|
|
62
|
+
env: { ...process.env, ...opts.env },
|
|
63
|
+
});
|
|
64
|
+
let stdout = '';
|
|
65
|
+
let stderr = '';
|
|
66
|
+
const t = opts.timeoutMs
|
|
67
|
+
? setTimeout(() => child.kill('SIGTERM'), opts.timeoutMs)
|
|
68
|
+
: null;
|
|
69
|
+
child.stdout.on('data', (d) => (stdout += d.toString()));
|
|
70
|
+
child.stderr.on('data', (d) => (stderr += d.toString()));
|
|
71
|
+
child.on('close', (code) => {
|
|
72
|
+
if (t)
|
|
73
|
+
clearTimeout(t);
|
|
74
|
+
const exit = code ?? 0;
|
|
75
|
+
resolve({
|
|
76
|
+
decision: exit === 0 ? 'allow' : 'deny',
|
|
77
|
+
stdout,
|
|
78
|
+
exitCode: exit,
|
|
79
|
+
message: stderr || undefined,
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
child.on('error', (err) => {
|
|
83
|
+
if (t)
|
|
84
|
+
clearTimeout(t);
|
|
85
|
+
resolve({ decision: 'deny', message: err.message, exitCode: 1 });
|
|
86
|
+
});
|
|
87
|
+
child.stdin.on('error', () => { });
|
|
88
|
+
child.stdin.end(JSON.stringify(payload));
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=hook-dispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-dispatcher.js","sourceRoot":"","sources":["../src/hook-dispatcher.ts"],"names":[],"mappings":"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"}
|