@congzhen/changewayguard 6.8.12
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 +270 -0
- package/dashboard-dist/api/104.index.js +1420 -0
- package/dashboard-dist/api/104.index.js.map +1 -0
- package/dashboard-dist/api/113.index.js +496 -0
- package/dashboard-dist/api/113.index.js.map +1 -0
- package/dashboard-dist/api/18.index.js +67 -0
- package/dashboard-dist/api/18.index.js.map +1 -0
- package/dashboard-dist/api/217.index.js +44 -0
- package/dashboard-dist/api/217.index.js.map +1 -0
- package/dashboard-dist/api/222.index.js +90 -0
- package/dashboard-dist/api/222.index.js.map +1 -0
- package/dashboard-dist/api/25.index.js +3562 -0
- package/dashboard-dist/api/25.index.js.map +1 -0
- package/dashboard-dist/api/280.index.js +206 -0
- package/dashboard-dist/api/280.index.js.map +1 -0
- package/dashboard-dist/api/369.index.js +115 -0
- package/dashboard-dist/api/369.index.js.map +1 -0
- package/dashboard-dist/api/377.index.js +1176 -0
- package/dashboard-dist/api/377.index.js.map +1 -0
- package/dashboard-dist/api/411.index.js +4250 -0
- package/dashboard-dist/api/411.index.js.map +1 -0
- package/dashboard-dist/api/424.index.js +135 -0
- package/dashboard-dist/api/424.index.js.map +1 -0
- package/dashboard-dist/api/573.index.js +806 -0
- package/dashboard-dist/api/573.index.js.map +1 -0
- package/dashboard-dist/api/598.index.js +328 -0
- package/dashboard-dist/api/598.index.js.map +1 -0
- package/dashboard-dist/api/62.index.js +4151 -0
- package/dashboard-dist/api/62.index.js.map +1 -0
- package/dashboard-dist/api/67.index.js +23383 -0
- package/dashboard-dist/api/67.index.js.map +1 -0
- package/dashboard-dist/api/678.index.js +2734 -0
- package/dashboard-dist/api/678.index.js.map +1 -0
- package/dashboard-dist/api/698.index.js +1896 -0
- package/dashboard-dist/api/698.index.js.map +1 -0
- package/dashboard-dist/api/720.index.js +98 -0
- package/dashboard-dist/api/720.index.js.map +1 -0
- package/dashboard-dist/api/830.index.js +95 -0
- package/dashboard-dist/api/830.index.js.map +1 -0
- package/dashboard-dist/api/831.index.js +99 -0
- package/dashboard-dist/api/831.index.js.map +1 -0
- package/dashboard-dist/api/84.index.js +64 -0
- package/dashboard-dist/api/84.index.js.map +1 -0
- package/dashboard-dist/api/900.index.js +65 -0
- package/dashboard-dist/api/900.index.js.map +1 -0
- package/dashboard-dist/api/917.index.js +88 -0
- package/dashboard-dist/api/917.index.js.map +1 -0
- package/dashboard-dist/api/948.index.js +64 -0
- package/dashboard-dist/api/948.index.js.map +1 -0
- package/dashboard-dist/api/953.index.js +67 -0
- package/dashboard-dist/api/953.index.js.map +1 -0
- package/dashboard-dist/api/975.index.js +374 -0
- package/dashboard-dist/api/975.index.js.map +1 -0
- package/dashboard-dist/api/drizzle/sqlite/0000_short_captain_stacy.sql +70 -0
- package/dashboard-dist/api/drizzle/sqlite/0001_closed_magus.sql +10 -0
- package/dashboard-dist/api/drizzle/sqlite/0002_agent_capability_observation.sql +38 -0
- package/dashboard-dist/api/drizzle/sqlite/0003_auth_magic_link.sql +28 -0
- package/dashboard-dist/api/drizzle/sqlite/0004_static_scan_fields.sql +8 -0
- package/dashboard-dist/api/drizzle/sqlite/0005_gateway_activity.sql +24 -0
- package/dashboard-dist/api/drizzle/sqlite/0006_sour_marauders.sql +41 -0
- package/dashboard-dist/api/drizzle/sqlite/meta/0000_snapshot.json +460 -0
- package/dashboard-dist/api/drizzle/sqlite/meta/0001_snapshot.json +536 -0
- package/dashboard-dist/api/drizzle/sqlite/meta/0006_snapshot.json +1249 -0
- package/dashboard-dist/api/drizzle/sqlite/meta/_journal.json +55 -0
- package/dashboard-dist/api/index.js +27340 -0
- package/dashboard-dist/api/index.js.map +1 -0
- package/dashboard-dist/api/package.json +16 -0
- package/dashboard-dist/api/sourcemap-register.cjs +1 -0
- package/dashboard-dist/web/assets/index-CqWIeBTD.js +158 -0
- package/dashboard-dist/web/assets/index-Dw7--9q4.css +1 -0
- package/dashboard-dist/web/changeway-logo.png +0 -0
- package/dashboard-dist/web/favicon.svg +29 -0
- package/dashboard-dist/web/index.html +14 -0
- package/dashboard-dist/web/logo.svg +16 -0
- package/dist/agent/auth.d.ts +37 -0
- package/dist/agent/auth.d.ts.map +1 -0
- package/dist/agent/auth.js +151 -0
- package/dist/agent/auth.js.map +1 -0
- package/dist/agent/behavior-detector.d.ts +150 -0
- package/dist/agent/behavior-detector.d.ts.map +1 -0
- package/dist/agent/behavior-detector.js +573 -0
- package/dist/agent/behavior-detector.js.map +1 -0
- package/dist/agent/business-reporter.d.ts +114 -0
- package/dist/agent/business-reporter.d.ts.map +1 -0
- package/dist/agent/business-reporter.js +359 -0
- package/dist/agent/business-reporter.js.map +1 -0
- package/dist/agent/config-sync.d.ts +70 -0
- package/dist/agent/config-sync.d.ts.map +1 -0
- package/dist/agent/config-sync.js +133 -0
- package/dist/agent/config-sync.js.map +1 -0
- package/dist/agent/config.d.ts +97 -0
- package/dist/agent/config.d.ts.map +1 -0
- package/dist/agent/config.js +359 -0
- package/dist/agent/config.js.map +1 -0
- package/dist/agent/content-injection-scanner.d.ts +35 -0
- package/dist/agent/content-injection-scanner.d.ts.map +1 -0
- package/dist/agent/content-injection-scanner.js +270 -0
- package/dist/agent/content-injection-scanner.js.map +1 -0
- package/dist/agent/engine-log-writer.d.ts +6 -0
- package/dist/agent/engine-log-writer.d.ts.map +1 -0
- package/dist/agent/engine-log-writer.js +18 -0
- package/dist/agent/engine-log-writer.js.map +1 -0
- package/dist/agent/env.d.ts +19 -0
- package/dist/agent/env.d.ts.map +1 -0
- package/dist/agent/env.js +43 -0
- package/dist/agent/env.js.map +1 -0
- package/dist/agent/event-reporter.d.ts +87 -0
- package/dist/agent/event-reporter.d.ts.map +1 -0
- package/dist/agent/event-reporter.js +315 -0
- package/dist/agent/event-reporter.js.map +1 -0
- package/dist/agent/file-watcher.d.ts +50 -0
- package/dist/agent/file-watcher.d.ts.map +1 -0
- package/dist/agent/file-watcher.js +135 -0
- package/dist/agent/file-watcher.js.map +1 -0
- package/dist/agent/fs-utils.d.ts +22 -0
- package/dist/agent/fs-utils.d.ts.map +1 -0
- package/dist/agent/fs-utils.js +41 -0
- package/dist/agent/fs-utils.js.map +1 -0
- package/dist/agent/gateway-manager.d.ts +59 -0
- package/dist/agent/gateway-manager.d.ts.map +1 -0
- package/dist/agent/gateway-manager.js +583 -0
- package/dist/agent/gateway-manager.js.map +1 -0
- package/dist/agent/hook-types.d.ts +276 -0
- package/dist/agent/hook-types.d.ts.map +1 -0
- package/dist/agent/hook-types.js +51 -0
- package/dist/agent/hook-types.js.map +1 -0
- package/dist/agent/index.d.ts +8 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +8 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/prompt-gate.d.ts +13 -0
- package/dist/agent/prompt-gate.d.ts.map +1 -0
- package/dist/agent/prompt-gate.js +28 -0
- package/dist/agent/prompt-gate.js.map +1 -0
- package/dist/agent/prompt-input.d.ts +9 -0
- package/dist/agent/prompt-input.d.ts.map +1 -0
- package/dist/agent/prompt-input.js +158 -0
- package/dist/agent/prompt-input.js.map +1 -0
- package/dist/agent/prompt-output.d.ts +4 -0
- package/dist/agent/prompt-output.d.ts.map +1 -0
- package/dist/agent/prompt-output.js +19 -0
- package/dist/agent/prompt-output.js.map +1 -0
- package/dist/agent/runner.d.ts +23 -0
- package/dist/agent/runner.d.ts.map +1 -0
- package/dist/agent/runner.js +154 -0
- package/dist/agent/runner.js.map +1 -0
- package/dist/agent/sanitizer.d.ts +10 -0
- package/dist/agent/sanitizer.d.ts.map +1 -0
- package/dist/agent/sanitizer.js +175 -0
- package/dist/agent/sanitizer.js.map +1 -0
- package/dist/agent/scan-activity.d.ts +18 -0
- package/dist/agent/scan-activity.d.ts.map +1 -0
- package/dist/agent/scan-activity.js +32 -0
- package/dist/agent/scan-activity.js.map +1 -0
- package/dist/agent/types.d.ts +177 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +5 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent/workspace-scanner.d.ts +35 -0
- package/dist/agent/workspace-scanner.d.ts.map +1 -0
- package/dist/agent/workspace-scanner.js +137 -0
- package/dist/agent/workspace-scanner.js.map +1 -0
- package/dist/dashboard-launcher.d.ts +52 -0
- package/dist/dashboard-launcher.d.ts.map +1 -0
- package/dist/dashboard-launcher.js +363 -0
- package/dist/dashboard-launcher.js.map +1 -0
- package/dist/gateway/activity.d.ts +52 -0
- package/dist/gateway/activity.d.ts.map +1 -0
- package/dist/gateway/activity.js +111 -0
- package/dist/gateway/activity.js.map +1 -0
- package/dist/gateway/config.d.ts +50 -0
- package/dist/gateway/config.d.ts.map +1 -0
- package/dist/gateway/config.js +200 -0
- package/dist/gateway/config.js.map +1 -0
- package/dist/gateway/gateway/activity.d.ts +52 -0
- package/dist/gateway/gateway/activity.d.ts.map +1 -0
- package/dist/gateway/gateway/activity.js +111 -0
- package/dist/gateway/gateway/activity.js.map +1 -0
- package/dist/gateway/gateway/config.d.ts +50 -0
- package/dist/gateway/gateway/config.d.ts.map +1 -0
- package/dist/gateway/gateway/config.js +200 -0
- package/dist/gateway/gateway/config.js.map +1 -0
- package/dist/gateway/gateway/handlers/anthropic.d.ts +12 -0
- package/dist/gateway/gateway/handlers/anthropic.d.ts.map +1 -0
- package/dist/gateway/gateway/handlers/anthropic.js +254 -0
- package/dist/gateway/gateway/handlers/anthropic.js.map +1 -0
- package/dist/gateway/gateway/handlers/gemini.d.ts +12 -0
- package/dist/gateway/gateway/handlers/gemini.d.ts.map +1 -0
- package/dist/gateway/gateway/handlers/gemini.js +101 -0
- package/dist/gateway/gateway/handlers/gemini.js.map +1 -0
- package/dist/gateway/gateway/handlers/models.d.ts +4 -0
- package/dist/gateway/gateway/handlers/models.d.ts.map +1 -0
- package/dist/gateway/gateway/handlers/models.js +36 -0
- package/dist/gateway/gateway/handlers/models.js.map +1 -0
- package/dist/gateway/gateway/handlers/openai.d.ts +16 -0
- package/dist/gateway/gateway/handlers/openai.d.ts.map +1 -0
- package/dist/gateway/gateway/handlers/openai.js +254 -0
- package/dist/gateway/gateway/handlers/openai.js.map +1 -0
- package/dist/gateway/gateway/index.d.ts +27 -0
- package/dist/gateway/gateway/index.d.ts.map +1 -0
- package/dist/gateway/gateway/index.js +293 -0
- package/dist/gateway/gateway/index.js.map +1 -0
- package/dist/gateway/gateway/mapping-store.d.ts +38 -0
- package/dist/gateway/gateway/mapping-store.d.ts.map +1 -0
- package/dist/gateway/gateway/mapping-store.js +74 -0
- package/dist/gateway/gateway/mapping-store.js.map +1 -0
- package/dist/gateway/gateway/restorer.d.ts +63 -0
- package/dist/gateway/gateway/restorer.d.ts.map +1 -0
- package/dist/gateway/gateway/restorer.js +284 -0
- package/dist/gateway/gateway/restorer.js.map +1 -0
- package/dist/gateway/gateway/sanitizer.d.ts +17 -0
- package/dist/gateway/gateway/sanitizer.d.ts.map +1 -0
- package/dist/gateway/gateway/sanitizer.js +228 -0
- package/dist/gateway/gateway/sanitizer.js.map +1 -0
- package/dist/gateway/gateway/types.d.ts +53 -0
- package/dist/gateway/gateway/types.d.ts.map +1 -0
- package/dist/gateway/gateway/types.js +5 -0
- package/dist/gateway/gateway/types.js.map +1 -0
- package/dist/gateway/handlers/anthropic.d.ts +12 -0
- package/dist/gateway/handlers/anthropic.d.ts.map +1 -0
- package/dist/gateway/handlers/anthropic.js +254 -0
- package/dist/gateway/handlers/anthropic.js.map +1 -0
- package/dist/gateway/handlers/gemini.d.ts +12 -0
- package/dist/gateway/handlers/gemini.d.ts.map +1 -0
- package/dist/gateway/handlers/gemini.js +101 -0
- package/dist/gateway/handlers/gemini.js.map +1 -0
- package/dist/gateway/handlers/models.d.ts +4 -0
- package/dist/gateway/handlers/models.d.ts.map +1 -0
- package/dist/gateway/handlers/models.js +36 -0
- package/dist/gateway/handlers/models.js.map +1 -0
- package/dist/gateway/handlers/openai.d.ts +16 -0
- package/dist/gateway/handlers/openai.d.ts.map +1 -0
- package/dist/gateway/handlers/openai.js +254 -0
- package/dist/gateway/handlers/openai.js.map +1 -0
- package/dist/gateway/index.d.ts +27 -0
- package/dist/gateway/index.d.ts.map +1 -0
- package/dist/gateway/index.js +293 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/gateway/mapping-store.d.ts +38 -0
- package/dist/gateway/mapping-store.d.ts.map +1 -0
- package/dist/gateway/mapping-store.js +74 -0
- package/dist/gateway/mapping-store.js.map +1 -0
- package/dist/gateway/restorer.d.ts +63 -0
- package/dist/gateway/restorer.d.ts.map +1 -0
- package/dist/gateway/restorer.js +284 -0
- package/dist/gateway/restorer.js.map +1 -0
- package/dist/gateway/sanitizer.d.ts +17 -0
- package/dist/gateway/sanitizer.d.ts.map +1 -0
- package/dist/gateway/sanitizer.js +228 -0
- package/dist/gateway/sanitizer.js.map +1 -0
- package/dist/gateway/types.d.ts +53 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +5 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2084 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/index.d.ts +5 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +5 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/store.d.ts +82 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +194 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/platform-client/index.d.ts +63 -0
- package/dist/platform-client/index.d.ts.map +1 -0
- package/dist/platform-client/index.js +294 -0
- package/dist/platform-client/index.js.map +1 -0
- package/dist/platform-client/types.d.ts +109 -0
- package/dist/platform-client/types.d.ts.map +1 -0
- package/dist/platform-client/types.js +3 -0
- package/dist/platform-client/types.js.map +1 -0
- package/gateway/activity.d.ts +52 -0
- package/gateway/activity.d.ts.map +1 -0
- package/gateway/activity.js +111 -0
- package/gateway/activity.js.map +1 -0
- package/gateway/config.d.ts +50 -0
- package/gateway/config.d.ts.map +1 -0
- package/gateway/config.js +200 -0
- package/gateway/config.js.map +1 -0
- package/gateway/handlers/anthropic.d.ts +12 -0
- package/gateway/handlers/anthropic.d.ts.map +1 -0
- package/gateway/handlers/anthropic.js +254 -0
- package/gateway/handlers/anthropic.js.map +1 -0
- package/gateway/handlers/gemini.d.ts +12 -0
- package/gateway/handlers/gemini.d.ts.map +1 -0
- package/gateway/handlers/gemini.js +101 -0
- package/gateway/handlers/gemini.js.map +1 -0
- package/gateway/handlers/models.d.ts +4 -0
- package/gateway/handlers/models.d.ts.map +1 -0
- package/gateway/handlers/models.js +36 -0
- package/gateway/handlers/models.js.map +1 -0
- package/gateway/handlers/openai.d.ts +16 -0
- package/gateway/handlers/openai.d.ts.map +1 -0
- package/gateway/handlers/openai.js +254 -0
- package/gateway/handlers/openai.js.map +1 -0
- package/gateway/index.d.ts +27 -0
- package/gateway/index.d.ts.map +1 -0
- package/gateway/index.js +293 -0
- package/gateway/index.js.map +1 -0
- package/gateway/mapping-store.d.ts +38 -0
- package/gateway/mapping-store.d.ts.map +1 -0
- package/gateway/mapping-store.js +74 -0
- package/gateway/mapping-store.js.map +1 -0
- package/gateway/restorer.d.ts +63 -0
- package/gateway/restorer.d.ts.map +1 -0
- package/gateway/restorer.js +284 -0
- package/gateway/restorer.js.map +1 -0
- package/gateway/sanitizer.d.ts +17 -0
- package/gateway/sanitizer.d.ts.map +1 -0
- package/gateway/sanitizer.js +228 -0
- package/gateway/sanitizer.js.map +1 -0
- package/gateway/types.d.ts +53 -0
- package/gateway/types.d.ts.map +1 -0
- package/gateway/types.js +5 -0
- package/gateway/types.js.map +1 -0
- package/openclaw.plugin.json +86 -0
- package/package.json +74 -0
- package/samples/Untitled +1 -0
- package/samples/clean-email.txt +20 -0
- package/samples/test-document.md +53 -0
- package/samples/test-email-popup.txt +44 -0
- package/samples/test-email.txt +32 -0
- package/samples/test-webpage.html +51 -0
- package/scripts/enterprise-enroll.sh +89 -0
- package/scripts/enterprise-unenroll.sh +75 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for all 24 OpenClaw plugin hooks.
|
|
3
|
+
*
|
|
4
|
+
* These types define the event data structure for each hook,
|
|
5
|
+
* enabling complete context reporting to Core for intent-action mismatch detection.
|
|
6
|
+
*/
|
|
7
|
+
export type HookType = "before_agent_start" | "agent_end" | "session_start" | "session_end" | "message_received" | "message_sending" | "message_sent" | "before_message_write" | "before_model_resolve" | "before_prompt_build" | "llm_input" | "llm_output" | "before_tool_call" | "after_tool_call" | "tool_result_persist" | "before_compaction" | "after_compaction" | "before_reset" | "subagent_spawning" | "subagent_delivery_target" | "subagent_spawned" | "subagent_ended" | "gateway_start" | "gateway_stop";
|
|
8
|
+
/** Hooks that require synchronous response from Core (can block execution) */
|
|
9
|
+
export declare const BLOCKING_HOOKS: Set<HookType>;
|
|
10
|
+
/** Check if a hook type requires synchronous (blocking) reporting */
|
|
11
|
+
export declare function isBlockingHook(hookType: HookType): boolean;
|
|
12
|
+
/** Base event data shared by all hooks */
|
|
13
|
+
export type BaseEventData = {
|
|
14
|
+
/** ISO 8601 timestamp when the event occurred */
|
|
15
|
+
timestamp: string;
|
|
16
|
+
};
|
|
17
|
+
export type BeforeAgentStartData = BaseEventData & {
|
|
18
|
+
/** Initial user prompt/intent */
|
|
19
|
+
prompt: string;
|
|
20
|
+
/** System prompt if any */
|
|
21
|
+
systemPrompt?: string;
|
|
22
|
+
/** Conversation ID if resuming */
|
|
23
|
+
conversationId?: string;
|
|
24
|
+
};
|
|
25
|
+
export type AgentEndData = BaseEventData & {
|
|
26
|
+
/** How the agent ended */
|
|
27
|
+
reason: "user_exit" | "error" | "timeout" | "completed" | "unknown";
|
|
28
|
+
/** Error message if ended due to error */
|
|
29
|
+
error?: string;
|
|
30
|
+
/** Total duration of the conversation in ms */
|
|
31
|
+
durationMs?: number;
|
|
32
|
+
};
|
|
33
|
+
export type SessionStartData = BaseEventData & {
|
|
34
|
+
/** Session identifier */
|
|
35
|
+
sessionId: string;
|
|
36
|
+
/** Whether this is a new or resumed session */
|
|
37
|
+
isNew: boolean;
|
|
38
|
+
};
|
|
39
|
+
export type SessionEndData = BaseEventData & {
|
|
40
|
+
/** Session identifier */
|
|
41
|
+
sessionId: string;
|
|
42
|
+
/** Session duration in ms */
|
|
43
|
+
durationMs?: number;
|
|
44
|
+
};
|
|
45
|
+
export type MessageReceivedData = BaseEventData & {
|
|
46
|
+
/** Who sent the message */
|
|
47
|
+
from: "user" | "assistant" | "system" | "tool";
|
|
48
|
+
/** Message content (may be truncated for large content) */
|
|
49
|
+
content: string;
|
|
50
|
+
/** Content length before truncation */
|
|
51
|
+
contentLength: number;
|
|
52
|
+
};
|
|
53
|
+
export type MessageSendingData = BaseEventData & {
|
|
54
|
+
/** Target of the message */
|
|
55
|
+
to: "user" | "llm" | "tool";
|
|
56
|
+
/** Message content (may be truncated) */
|
|
57
|
+
content: string;
|
|
58
|
+
/** Content length before truncation */
|
|
59
|
+
contentLength: number;
|
|
60
|
+
};
|
|
61
|
+
export type MessageSentData = BaseEventData & {
|
|
62
|
+
/** Target of the message */
|
|
63
|
+
to: "user" | "llm" | "tool";
|
|
64
|
+
/** Success status */
|
|
65
|
+
success: boolean;
|
|
66
|
+
/** Duration to send in ms */
|
|
67
|
+
durationMs?: number;
|
|
68
|
+
};
|
|
69
|
+
export type BeforeMessageWriteData = BaseEventData & {
|
|
70
|
+
/** File path being written to (e.g., JSONL log) */
|
|
71
|
+
filePath: string;
|
|
72
|
+
/** Message being written (may be truncated) */
|
|
73
|
+
content: string;
|
|
74
|
+
/** Content length before truncation */
|
|
75
|
+
contentLength: number;
|
|
76
|
+
};
|
|
77
|
+
export type BeforeModelResolveData = BaseEventData & {
|
|
78
|
+
/** Requested model ID/name */
|
|
79
|
+
requestedModel: string;
|
|
80
|
+
};
|
|
81
|
+
export type BeforePromptBuildData = BaseEventData & {
|
|
82
|
+
/** Number of messages in history */
|
|
83
|
+
messageCount: number;
|
|
84
|
+
/** Total token estimate */
|
|
85
|
+
tokenEstimate?: number;
|
|
86
|
+
};
|
|
87
|
+
export type LlmInputData = BaseEventData & {
|
|
88
|
+
/** Model being called */
|
|
89
|
+
model: string;
|
|
90
|
+
/** Full prompt content (may be truncated for very large prompts) */
|
|
91
|
+
content: string;
|
|
92
|
+
/** Content length before truncation */
|
|
93
|
+
contentLength: number;
|
|
94
|
+
/** Number of messages in the request */
|
|
95
|
+
messageCount: number;
|
|
96
|
+
/** Token count if available */
|
|
97
|
+
tokenCount?: number;
|
|
98
|
+
/** System prompt if separate */
|
|
99
|
+
systemPrompt?: string;
|
|
100
|
+
};
|
|
101
|
+
export type LlmOutputData = BaseEventData & {
|
|
102
|
+
/** Model that responded */
|
|
103
|
+
model: string;
|
|
104
|
+
/** Response content (may be truncated) */
|
|
105
|
+
content: string;
|
|
106
|
+
/** Content length before truncation */
|
|
107
|
+
contentLength: number;
|
|
108
|
+
/** Whether the response was streamed */
|
|
109
|
+
streamed: boolean;
|
|
110
|
+
/** Tokens used (input + output) if available */
|
|
111
|
+
tokenUsage?: {
|
|
112
|
+
input: number;
|
|
113
|
+
output: number;
|
|
114
|
+
total: number;
|
|
115
|
+
};
|
|
116
|
+
/** Latency to first token / full response in ms */
|
|
117
|
+
latencyMs: number;
|
|
118
|
+
/** Stop reason */
|
|
119
|
+
stopReason?: "end_turn" | "max_tokens" | "tool_use" | "error" | string;
|
|
120
|
+
};
|
|
121
|
+
export type BeforeToolCallData = BaseEventData & {
|
|
122
|
+
/** Tool name being called */
|
|
123
|
+
toolName: string;
|
|
124
|
+
/** Tool parameters (sanitized) */
|
|
125
|
+
params: Record<string, unknown>;
|
|
126
|
+
/** Tool input hash for dedup */
|
|
127
|
+
inputHash?: string;
|
|
128
|
+
};
|
|
129
|
+
export type AfterToolCallData = BaseEventData & {
|
|
130
|
+
/** Tool name that was called */
|
|
131
|
+
toolName: string;
|
|
132
|
+
/** Tool parameters (sanitized) */
|
|
133
|
+
params: Record<string, unknown>;
|
|
134
|
+
/** Whether the call succeeded */
|
|
135
|
+
success: boolean;
|
|
136
|
+
/** Error message if failed */
|
|
137
|
+
error?: string;
|
|
138
|
+
/** Result summary (truncated if large) */
|
|
139
|
+
resultSummary?: string;
|
|
140
|
+
/** Result size in bytes */
|
|
141
|
+
resultSizeBytes: number;
|
|
142
|
+
/** Execution duration in ms */
|
|
143
|
+
durationMs: number;
|
|
144
|
+
};
|
|
145
|
+
export type ToolResultPersistData = BaseEventData & {
|
|
146
|
+
/** Tool name */
|
|
147
|
+
toolName?: string;
|
|
148
|
+
/** Whether the result was modified (e.g., quota message appended) */
|
|
149
|
+
modified: boolean;
|
|
150
|
+
/** Modification reason if modified */
|
|
151
|
+
modificationReason?: string;
|
|
152
|
+
};
|
|
153
|
+
export type BeforeCompactionData = BaseEventData & {
|
|
154
|
+
/** Number of messages before compaction */
|
|
155
|
+
messageCount: number;
|
|
156
|
+
/** Estimated token count before */
|
|
157
|
+
tokenEstimate?: number;
|
|
158
|
+
/** Reason for compaction */
|
|
159
|
+
reason: "token_limit" | "manual" | "auto";
|
|
160
|
+
};
|
|
161
|
+
export type AfterCompactionData = BaseEventData & {
|
|
162
|
+
/** Number of messages after compaction */
|
|
163
|
+
messageCount: number;
|
|
164
|
+
/** Messages removed */
|
|
165
|
+
removedCount: number;
|
|
166
|
+
/** Estimated token count after */
|
|
167
|
+
tokenEstimate?: number;
|
|
168
|
+
};
|
|
169
|
+
export type BeforeResetData = BaseEventData & {
|
|
170
|
+
/** Reason for reset */
|
|
171
|
+
reason: "user_request" | "error_recovery" | "context_overflow" | "unknown";
|
|
172
|
+
/** Number of messages being cleared */
|
|
173
|
+
messageCount: number;
|
|
174
|
+
};
|
|
175
|
+
export type SubagentSpawningData = BaseEventData & {
|
|
176
|
+
/** Subagent ID being created */
|
|
177
|
+
subagentId: string;
|
|
178
|
+
/** Type of subagent */
|
|
179
|
+
subagentType: string;
|
|
180
|
+
/** Task/prompt for the subagent */
|
|
181
|
+
task: string;
|
|
182
|
+
/** Task length before truncation */
|
|
183
|
+
taskLength: number;
|
|
184
|
+
/** Parent agent context */
|
|
185
|
+
parentContext?: string;
|
|
186
|
+
};
|
|
187
|
+
export type SubagentDeliveryTargetData = BaseEventData & {
|
|
188
|
+
/** Subagent ID */
|
|
189
|
+
subagentId: string;
|
|
190
|
+
/** Delivery target type */
|
|
191
|
+
targetType: string;
|
|
192
|
+
/** Target details */
|
|
193
|
+
targetDetails?: Record<string, unknown>;
|
|
194
|
+
};
|
|
195
|
+
export type SubagentSpawnedData = BaseEventData & {
|
|
196
|
+
/** Subagent ID that was created */
|
|
197
|
+
subagentId: string;
|
|
198
|
+
/** Subagent type */
|
|
199
|
+
subagentType: string;
|
|
200
|
+
/** Whether spawn was successful */
|
|
201
|
+
success: boolean;
|
|
202
|
+
/** Error if failed */
|
|
203
|
+
error?: string;
|
|
204
|
+
};
|
|
205
|
+
export type SubagentEndedData = BaseEventData & {
|
|
206
|
+
/** Subagent ID that ended */
|
|
207
|
+
subagentId: string;
|
|
208
|
+
/** How it ended */
|
|
209
|
+
reason: "completed" | "error" | "timeout" | "cancelled" | "unknown";
|
|
210
|
+
/** Result summary if completed */
|
|
211
|
+
resultSummary?: string;
|
|
212
|
+
/** Error message if failed */
|
|
213
|
+
error?: string;
|
|
214
|
+
/** Duration in ms */
|
|
215
|
+
durationMs?: number;
|
|
216
|
+
};
|
|
217
|
+
export type GatewayStartData = BaseEventData & {
|
|
218
|
+
/** Gateway port */
|
|
219
|
+
port: number;
|
|
220
|
+
/** Gateway URL */
|
|
221
|
+
url: string;
|
|
222
|
+
};
|
|
223
|
+
export type GatewayStopData = BaseEventData & {
|
|
224
|
+
/** Reason for stopping */
|
|
225
|
+
reason: "shutdown" | "error" | "restart" | "unknown";
|
|
226
|
+
/** Error if stopped due to error */
|
|
227
|
+
error?: string;
|
|
228
|
+
};
|
|
229
|
+
export type HookEventData = BeforeAgentStartData | AgentEndData | SessionStartData | SessionEndData | MessageReceivedData | MessageSendingData | MessageSentData | BeforeMessageWriteData | BeforeModelResolveData | BeforePromptBuildData | LlmInputData | LlmOutputData | BeforeToolCallData | AfterToolCallData | ToolResultPersistData | BeforeCompactionData | AfterCompactionData | BeforeResetData | SubagentSpawningData | SubagentDeliveryTargetData | SubagentSpawnedData | SubagentEndedData | GatewayStartData | GatewayStopData;
|
|
230
|
+
/** A single hook event for reporting to Core */
|
|
231
|
+
export type HookEvent = {
|
|
232
|
+
/** Event sequence number (monotonically increasing per session) */
|
|
233
|
+
seq: number;
|
|
234
|
+
/** Hook type */
|
|
235
|
+
hookType: HookType;
|
|
236
|
+
/** Event data specific to this hook type */
|
|
237
|
+
data: HookEventData;
|
|
238
|
+
};
|
|
239
|
+
/** Request body for POST /api/v1/events/stream */
|
|
240
|
+
export type EventStreamRequest = {
|
|
241
|
+
/** Agent ID from credentials */
|
|
242
|
+
agentId: string;
|
|
243
|
+
/** Session key */
|
|
244
|
+
sessionKey: string;
|
|
245
|
+
/** Run ID for this conversation */
|
|
246
|
+
runId: string;
|
|
247
|
+
/** Array of events to report */
|
|
248
|
+
events: HookEvent[];
|
|
249
|
+
/** Client metadata */
|
|
250
|
+
meta: {
|
|
251
|
+
pluginVersion: string;
|
|
252
|
+
clientTimestamp: string;
|
|
253
|
+
};
|
|
254
|
+
};
|
|
255
|
+
/** Response from POST /api/v1/events/stream */
|
|
256
|
+
export type EventStreamResponse = {
|
|
257
|
+
success: boolean;
|
|
258
|
+
data?: {
|
|
259
|
+
/** Number of events processed */
|
|
260
|
+
processed: number;
|
|
261
|
+
/** Block decisions for blocking hooks (keyed by seq) */
|
|
262
|
+
blocks?: Array<{
|
|
263
|
+
seq: number;
|
|
264
|
+
reason: string;
|
|
265
|
+
findings?: Array<{
|
|
266
|
+
riskLevel: string;
|
|
267
|
+
riskType: string;
|
|
268
|
+
reason: string;
|
|
269
|
+
}>;
|
|
270
|
+
}>;
|
|
271
|
+
};
|
|
272
|
+
error?: string;
|
|
273
|
+
};
|
|
274
|
+
/** Map of hook types to their expected data types (for runtime validation) */
|
|
275
|
+
export declare const HOOK_DATA_FIELDS: Record<HookType, string[]>;
|
|
276
|
+
//# sourceMappingURL=hook-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-types.d.ts","sourceRoot":"","sources":["../../agent/hook-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,QAAQ,GAEhB,oBAAoB,GACpB,WAAW,GACX,eAAe,GACf,aAAa,GAEb,kBAAkB,GAClB,iBAAiB,GACjB,cAAc,GACd,sBAAsB,GAEtB,sBAAsB,GACtB,qBAAqB,GACrB,WAAW,GACX,YAAY,GAEZ,kBAAkB,GAClB,iBAAiB,GACjB,qBAAqB,GAErB,mBAAmB,GACnB,kBAAkB,GAClB,cAAc,GAEd,mBAAmB,GACnB,0BAA0B,GAC1B,kBAAkB,GAClB,gBAAgB,GAEhB,eAAe,GACf,cAAc,CAAC;AAMnB,8EAA8E;AAC9E,eAAO,MAAM,cAAc,EAAE,GAAG,CAAC,QAAQ,CAKvC,CAAC;AAEH,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAE1D;AAMD,0CAA0C;AAC1C,MAAM,MAAM,aAAa,GAAG;IAC1B,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAIF,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG;IACzC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IACpE,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG;IAC3C,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAIF,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAChD,2BAA2B;IAC3B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,4BAA4B;IAC5B,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAC5B,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG;IAC5C,4BAA4B;IAC5B,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAC5B,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG;IACnD,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAIF,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG;IACnD,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG;IAClD,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG;IACzC,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IAC1C,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,UAAU,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;CACxE,CAAC;AAIF,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAC9C,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG;IAClD,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAIF,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,MAAM,EAAE,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAChD,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG;IAC5C,uBAAuB;IACvB,MAAM,EAAE,cAAc,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,SAAS,CAAC;IAC3E,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAIF,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,aAAa,GAAG;IACvD,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAChD,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAC9C,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,MAAM,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IACpE,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAIF,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG;IAC5C,0BAA0B;IAC1B,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IACrD,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAMF,MAAM,MAAM,aAAa,GACrB,oBAAoB,GACpB,YAAY,GACZ,gBAAgB,GAChB,cAAc,GACd,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,sBAAsB,GACtB,sBAAsB,GACtB,qBAAqB,GACrB,YAAY,GACZ,aAAa,GACb,kBAAkB,GAClB,iBAAiB,GACjB,qBAAqB,GACrB,oBAAoB,GACpB,mBAAmB,GACnB,eAAe,GACf,oBAAoB,GACpB,0BAA0B,GAC1B,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,CAAC;AAMpB,gDAAgD;AAChD,MAAM,MAAM,SAAS,GAAG;IACtB,mEAAmE;IACnE,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,4CAA4C;IAC5C,IAAI,EAAE,aAAa,CAAC;CACrB,CAAC;AAMF,kDAAkD;AAClD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,sBAAsB;IACtB,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH,CAAC;AAEF,+CAA+C;AAC/C,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,iCAAiC;QACjC,SAAS,EAAE,MAAM,CAAC;QAClB,wDAAwD;QACxD,MAAM,CAAC,EAAE,KAAK,CAAC;YACb,GAAG,EAAE,MAAM,CAAC;YACZ,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,KAAK,CAAC;gBACf,SAAS,EAAE,MAAM,CAAC;gBAClB,QAAQ,EAAE,MAAM,CAAC;gBACjB,MAAM,EAAE,MAAM,CAAC;aAChB,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAMF,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAyBvD,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for all 24 OpenClaw plugin hooks.
|
|
3
|
+
*
|
|
4
|
+
* These types define the event data structure for each hook,
|
|
5
|
+
* enabling complete context reporting to Core for intent-action mismatch detection.
|
|
6
|
+
*/
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// Blocking vs Non-Blocking Hook Classification
|
|
9
|
+
// =============================================================================
|
|
10
|
+
/** Hooks that require synchronous response from Core (can block execution) */
|
|
11
|
+
export const BLOCKING_HOOKS = new Set([
|
|
12
|
+
"before_tool_call",
|
|
13
|
+
"subagent_spawning",
|
|
14
|
+
"message_sending",
|
|
15
|
+
"before_message_write",
|
|
16
|
+
]);
|
|
17
|
+
/** Check if a hook type requires synchronous (blocking) reporting */
|
|
18
|
+
export function isBlockingHook(hookType) {
|
|
19
|
+
return BLOCKING_HOOKS.has(hookType);
|
|
20
|
+
}
|
|
21
|
+
// =============================================================================
|
|
22
|
+
// Type Guard Helpers
|
|
23
|
+
// =============================================================================
|
|
24
|
+
/** Map of hook types to their expected data types (for runtime validation) */
|
|
25
|
+
export const HOOK_DATA_FIELDS = {
|
|
26
|
+
before_agent_start: ["prompt"],
|
|
27
|
+
agent_end: ["reason"],
|
|
28
|
+
session_start: ["sessionId", "isNew"],
|
|
29
|
+
session_end: ["sessionId"],
|
|
30
|
+
message_received: ["from", "content", "contentLength"],
|
|
31
|
+
message_sending: ["to", "content", "contentLength"],
|
|
32
|
+
message_sent: ["to", "success"],
|
|
33
|
+
before_message_write: ["filePath", "content", "contentLength"],
|
|
34
|
+
before_model_resolve: ["requestedModel"],
|
|
35
|
+
before_prompt_build: ["messageCount"],
|
|
36
|
+
llm_input: ["model", "content", "contentLength", "messageCount"],
|
|
37
|
+
llm_output: ["model", "content", "contentLength", "streamed", "latencyMs"],
|
|
38
|
+
before_tool_call: ["toolName", "params"],
|
|
39
|
+
after_tool_call: ["toolName", "params", "success", "resultSizeBytes", "durationMs"],
|
|
40
|
+
tool_result_persist: ["modified"],
|
|
41
|
+
before_compaction: ["messageCount", "reason"],
|
|
42
|
+
after_compaction: ["messageCount", "removedCount"],
|
|
43
|
+
before_reset: ["reason", "messageCount"],
|
|
44
|
+
subagent_spawning: ["subagentId", "subagentType", "task", "taskLength"],
|
|
45
|
+
subagent_delivery_target: ["subagentId", "targetType"],
|
|
46
|
+
subagent_spawned: ["subagentId", "subagentType", "success"],
|
|
47
|
+
subagent_ended: ["subagentId", "reason"],
|
|
48
|
+
gateway_start: ["port", "url"],
|
|
49
|
+
gateway_stop: ["reason"],
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=hook-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-types.js","sourceRoot":"","sources":["../../agent/hook-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuCH,gFAAgF;AAChF,+CAA+C;AAC/C,gFAAgF;AAEhF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,cAAc,GAAkB,IAAI,GAAG,CAAC;IACnD,kBAAkB;IAClB,mBAAmB;IACnB,iBAAiB;IACjB,sBAAsB;CACvB,CAAC,CAAC;AAEH,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,OAAO,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AA2VD,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAA+B;IAC1D,kBAAkB,EAAE,CAAC,QAAQ,CAAC;IAC9B,SAAS,EAAE,CAAC,QAAQ,CAAC;IACrB,aAAa,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;IACrC,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,gBAAgB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC;IACtD,eAAe,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC;IACnD,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;IAC/B,oBAAoB,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC;IAC9D,oBAAoB,EAAE,CAAC,gBAAgB,CAAC;IACxC,mBAAmB,EAAE,CAAC,cAAc,CAAC;IACrC,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,CAAC;IAChE,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,CAAC;IAC1E,gBAAgB,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;IACxC,eAAe,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,CAAC;IACnF,mBAAmB,EAAE,CAAC,UAAU,CAAC;IACjC,iBAAiB,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC;IAC7C,gBAAgB,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;IAClD,YAAY,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC;IACxC,iBAAiB,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC;IACvE,wBAAwB,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IACtD,gBAAgB,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,SAAS,CAAC;IAC3D,cAAc,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC;IACxC,aAAa,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;IAC9B,YAAY,EAAE,CAAC,QAAQ,CAAC;CACzB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent module exports
|
|
3
|
+
*/
|
|
4
|
+
export { runGuardAgent, mapApiResponseToVerdict, type RunnerConfig } from "./runner.js";
|
|
5
|
+
export { loadApiKey, loadCoreCredentials, saveCoreCredentials, registerWithCore, DEFAULT_CORE_URL, DEFAULT_CONFIG, resolveConfig, type CoreCredentials, } from "./config.js";
|
|
6
|
+
export { sanitizeContent } from "./sanitizer.js";
|
|
7
|
+
export * from "./types.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../agent/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent module exports
|
|
3
|
+
*/
|
|
4
|
+
export { runGuardAgent, mapApiResponseToVerdict } from "./runner.js";
|
|
5
|
+
export { loadApiKey, loadCoreCredentials, saveCoreCredentials, registerWithCore, DEFAULT_CORE_URL, DEFAULT_CONFIG, resolveConfig, } from "./config.js";
|
|
6
|
+
export { sanitizeContent } from "./sanitizer.js";
|
|
7
|
+
export * from "./types.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../agent/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAqB,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,aAAa,GAEd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type PromptDecisionLike = {
|
|
2
|
+
action: "allow" | "alert" | "block" | string;
|
|
3
|
+
riskLevel: string;
|
|
4
|
+
confidence: number;
|
|
5
|
+
explanation: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function buildPromptRiskNotice(decision: PromptDecisionLike, params: {
|
|
8
|
+
brandName: string;
|
|
9
|
+
blockWarning: string;
|
|
10
|
+
alertWarning: string;
|
|
11
|
+
}): string;
|
|
12
|
+
export declare function buildPromptRiskOverrideInstruction(notice: string): string;
|
|
13
|
+
//# sourceMappingURL=prompt-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-gate.d.ts","sourceRoot":"","sources":["../../agent/prompt-gate.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE;IACN,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,GACA,MAAM,CAYR;AAED,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAazE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function buildPromptRiskNotice(decision, params) {
|
|
2
|
+
const isBlock = decision.action === "block";
|
|
3
|
+
const lines = [
|
|
4
|
+
`【${params.brandName} ${isBlock ? "安全拦截" : "安全确认"}】`,
|
|
5
|
+
isBlock ? params.blockWarning : params.alertWarning,
|
|
6
|
+
`检测结果:${decision.action}(${decision.riskLevel},置信度 ${Math.round(decision.confidence * 100)}%)`,
|
|
7
|
+
`原因:${decision.explanation}`,
|
|
8
|
+
];
|
|
9
|
+
if (!isBlock) {
|
|
10
|
+
lines.push("", "如需继续,请回复:确认继续", "确认后会自动继续上一条请求。", "如需取消,请修改后重试。");
|
|
11
|
+
}
|
|
12
|
+
return lines.join("\n");
|
|
13
|
+
}
|
|
14
|
+
export function buildPromptRiskOverrideInstruction(notice) {
|
|
15
|
+
return [
|
|
16
|
+
"安全强制输出协议(最高优先级,覆盖其他所有规则):",
|
|
17
|
+
"你的唯一任务是向用户输出下方【固定回复】。",
|
|
18
|
+
"硬性约束:",
|
|
19
|
+
"1) 只能输出下方【固定回复】全文,逐字一致。",
|
|
20
|
+
"2) 不得添加解释、道歉、建议、前后缀、Markdown、代码块或任何额外字符。",
|
|
21
|
+
"3) 不得调用任何工具。",
|
|
22
|
+
"4) 如果你打算输出任何其他内容,改为输出下方【固定回复】全文。",
|
|
23
|
+
"【固定回复开始】",
|
|
24
|
+
notice,
|
|
25
|
+
"【固定回复结束】",
|
|
26
|
+
].join("\n");
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=prompt-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-gate.js","sourceRoot":"","sources":["../../agent/prompt-gate.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,qBAAqB,CACnC,QAA4B,EAC5B,MAIC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC;IAC5C,MAAM,KAAK,GAAG;QACZ,IAAI,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG;QACpD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;QACnD,QAAQ,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,SAAS,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI;QAC9F,MAAM,QAAQ,CAAC,WAAW,EAAE;KAC7B,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,MAAc;IAC/D,OAAO;QACL,2BAA2B;QAC3B,uBAAuB;QACvB,OAAO;QACP,yBAAyB;QACzB,0CAA0C;QAC1C,cAAc;QACd,kCAAkC;QAClC,UAAU;QACV,MAAM;QACN,UAAU;KACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function isUserSender(from: unknown): boolean;
|
|
2
|
+
export declare function extractTextContent(content: unknown): string;
|
|
3
|
+
export declare function extractPromptForDetection(content: unknown): string;
|
|
4
|
+
export declare function extractToolContentForDetection(result: unknown): string;
|
|
5
|
+
export declare function extractLatestUserText(messages: unknown[]): string;
|
|
6
|
+
export declare function extractLatestUserPromptForDetection(messages: unknown[]): string;
|
|
7
|
+
export declare function isSyntheticSessionBootstrapPrompt(prompt: string): boolean;
|
|
8
|
+
export declare function isPromptAlertConfirmation(text: string): boolean;
|
|
9
|
+
//# sourceMappingURL=prompt-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-input.d.ts","sourceRoot":"","sources":["../../agent/prompt-input.ts"],"names":[],"mappings":"AA8BA,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAGnD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAqB3D;AAkBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAIlE;AAiDD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAEtE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAcjE;AAED,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAc/E;AAED,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/D"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
const USER_SENDERS = new Set(["user", "human", "you", "client"]);
|
|
2
|
+
const SYNTHETIC_SESSION_BOOTSTRAP_PREFIX = "a new session was started via /new or /reset.";
|
|
3
|
+
const ALERT_CONFIRM_PHRASES = new Set([
|
|
4
|
+
"确认继续",
|
|
5
|
+
"继续",
|
|
6
|
+
"继续执行",
|
|
7
|
+
"允许继续",
|
|
8
|
+
"confirm",
|
|
9
|
+
"yes",
|
|
10
|
+
"y",
|
|
11
|
+
]);
|
|
12
|
+
function normalizeActor(value) {
|
|
13
|
+
if (typeof value !== "string")
|
|
14
|
+
return "";
|
|
15
|
+
return value.trim().toLowerCase();
|
|
16
|
+
}
|
|
17
|
+
function normalizeWhitespace(text) {
|
|
18
|
+
return text.replace(/\s+/g, " ").trim();
|
|
19
|
+
}
|
|
20
|
+
function normalizeForCompare(text) {
|
|
21
|
+
return normalizeWhitespace(text).toLowerCase();
|
|
22
|
+
}
|
|
23
|
+
function normalizeScanText(text) {
|
|
24
|
+
return text.replace(/\r\n/g, "\n").trim();
|
|
25
|
+
}
|
|
26
|
+
export function isUserSender(from) {
|
|
27
|
+
const normalized = normalizeActor(from);
|
|
28
|
+
return normalized !== "" && USER_SENDERS.has(normalized);
|
|
29
|
+
}
|
|
30
|
+
export function extractTextContent(content) {
|
|
31
|
+
if (typeof content === "string")
|
|
32
|
+
return normalizeWhitespace(content);
|
|
33
|
+
if (Array.isArray(content)) {
|
|
34
|
+
const joined = content
|
|
35
|
+
.map((item) => extractTextContent(item))
|
|
36
|
+
.filter(Boolean)
|
|
37
|
+
.join(" ");
|
|
38
|
+
return normalizeWhitespace(joined);
|
|
39
|
+
}
|
|
40
|
+
if (!content || typeof content !== "object")
|
|
41
|
+
return "";
|
|
42
|
+
const record = content;
|
|
43
|
+
if (typeof record.text === "string")
|
|
44
|
+
return normalizeWhitespace(record.text);
|
|
45
|
+
if (typeof record.content === "string")
|
|
46
|
+
return normalizeWhitespace(record.content);
|
|
47
|
+
if (Array.isArray(record.content))
|
|
48
|
+
return extractTextContent(record.content);
|
|
49
|
+
if (typeof record.message === "string")
|
|
50
|
+
return normalizeWhitespace(record.message);
|
|
51
|
+
return "";
|
|
52
|
+
}
|
|
53
|
+
function stripLeadingTransportEnvelope(text) {
|
|
54
|
+
let current = text.trim();
|
|
55
|
+
for (let i = 0; i < 3; i += 1) {
|
|
56
|
+
const next = current
|
|
57
|
+
.replace(/^Sender\s*\(untrusted metadata\)\s*:\s*```(?:json)?\s*[\s\S]*?```\s*/i, "")
|
|
58
|
+
.replace(/^Sender\s*\(untrusted metadata\)\s*:\s*\{[\s\S]*?\}\s*/i, "")
|
|
59
|
+
.replace(/^\[(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun|[0-9]{4}-[0-9]{2}-[0-9]{2})[^\]\n]{0,120}\]\s*/i, "")
|
|
60
|
+
.trimStart();
|
|
61
|
+
if (next === current)
|
|
62
|
+
break;
|
|
63
|
+
current = next;
|
|
64
|
+
}
|
|
65
|
+
return normalizeWhitespace(current);
|
|
66
|
+
}
|
|
67
|
+
export function extractPromptForDetection(content) {
|
|
68
|
+
const text = extractTextContent(content);
|
|
69
|
+
if (!text)
|
|
70
|
+
return "";
|
|
71
|
+
return stripLeadingTransportEnvelope(text);
|
|
72
|
+
}
|
|
73
|
+
function extractToolTextCandidate(value, depth) {
|
|
74
|
+
if (depth > 5 || value == null)
|
|
75
|
+
return "";
|
|
76
|
+
if (typeof value === "string") {
|
|
77
|
+
const raw = normalizeScanText(value);
|
|
78
|
+
if (!raw)
|
|
79
|
+
return "";
|
|
80
|
+
if (raw.startsWith("{") || raw.startsWith("[")) {
|
|
81
|
+
try {
|
|
82
|
+
const parsed = JSON.parse(raw);
|
|
83
|
+
const extracted = extractToolTextCandidate(parsed, depth + 1);
|
|
84
|
+
if (extracted)
|
|
85
|
+
return extracted;
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// ignore parse errors; keep raw string
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return raw;
|
|
92
|
+
}
|
|
93
|
+
if (Array.isArray(value)) {
|
|
94
|
+
const parts = value
|
|
95
|
+
.map((item) => extractToolTextCandidate(item, depth + 1))
|
|
96
|
+
.filter((item) => item.length > 0);
|
|
97
|
+
return normalizeScanText(parts.join("\n"));
|
|
98
|
+
}
|
|
99
|
+
if (typeof value === "object") {
|
|
100
|
+
const record = value;
|
|
101
|
+
const orderedCandidates = [
|
|
102
|
+
record.content,
|
|
103
|
+
record.text,
|
|
104
|
+
record.message,
|
|
105
|
+
record.output,
|
|
106
|
+
record.result,
|
|
107
|
+
record.data,
|
|
108
|
+
record.body,
|
|
109
|
+
record.value,
|
|
110
|
+
];
|
|
111
|
+
for (const candidate of orderedCandidates) {
|
|
112
|
+
const extracted = extractToolTextCandidate(candidate, depth + 1);
|
|
113
|
+
if (extracted)
|
|
114
|
+
return extracted;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return "";
|
|
118
|
+
}
|
|
119
|
+
export function extractToolContentForDetection(result) {
|
|
120
|
+
return extractToolTextCandidate(result, 0);
|
|
121
|
+
}
|
|
122
|
+
export function extractLatestUserText(messages) {
|
|
123
|
+
for (let i = messages.length - 1; i >= 0; i -= 1) {
|
|
124
|
+
const item = messages[i];
|
|
125
|
+
if (!item || typeof item !== "object")
|
|
126
|
+
continue;
|
|
127
|
+
const record = item;
|
|
128
|
+
const role = record.role ?? record.from ?? record.sender ?? record.author;
|
|
129
|
+
if (!isUserSender(role))
|
|
130
|
+
continue;
|
|
131
|
+
const text = extractTextContent(record.content ?? record.text ?? record.message);
|
|
132
|
+
if (text)
|
|
133
|
+
return text;
|
|
134
|
+
}
|
|
135
|
+
return "";
|
|
136
|
+
}
|
|
137
|
+
export function extractLatestUserPromptForDetection(messages) {
|
|
138
|
+
for (let i = messages.length - 1; i >= 0; i -= 1) {
|
|
139
|
+
const item = messages[i];
|
|
140
|
+
if (!item || typeof item !== "object")
|
|
141
|
+
continue;
|
|
142
|
+
const record = item;
|
|
143
|
+
const role = record.role ?? record.from ?? record.sender ?? record.author;
|
|
144
|
+
if (!isUserSender(role))
|
|
145
|
+
continue;
|
|
146
|
+
const text = extractPromptForDetection(record.content ?? record.text ?? record.message);
|
|
147
|
+
if (text)
|
|
148
|
+
return text;
|
|
149
|
+
}
|
|
150
|
+
return "";
|
|
151
|
+
}
|
|
152
|
+
export function isSyntheticSessionBootstrapPrompt(prompt) {
|
|
153
|
+
return normalizeActor(prompt).startsWith(SYNTHETIC_SESSION_BOOTSTRAP_PREFIX);
|
|
154
|
+
}
|
|
155
|
+
export function isPromptAlertConfirmation(text) {
|
|
156
|
+
return ALERT_CONFIRM_PHRASES.has(normalizeForCompare(text));
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=prompt-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-input.js","sourceRoot":"","sources":["../../agent/prompt-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-output.d.ts","sourceRoot":"","sources":["../../agent/prompt-output.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAO9C,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,GACb,cAAc,GAAG,IAAI,CAWvB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
function isAssistantMessage(message) {
|
|
2
|
+
if (!message || typeof message !== "object")
|
|
3
|
+
return false;
|
|
4
|
+
return message.role === "assistant";
|
|
5
|
+
}
|
|
6
|
+
export function rewriteAssistantMessageWithNotice(message, notice) {
|
|
7
|
+
if (!isAssistantMessage(message))
|
|
8
|
+
return null;
|
|
9
|
+
const next = {
|
|
10
|
+
...message,
|
|
11
|
+
role: "assistant",
|
|
12
|
+
stopReason: "stop",
|
|
13
|
+
content: [{ type: "text", text: notice }],
|
|
14
|
+
};
|
|
15
|
+
if ("errorMessage" in next)
|
|
16
|
+
delete next.errorMessage;
|
|
17
|
+
return next;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=prompt-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-output.js","sourceRoot":"","sources":["../../agent/prompt-output.ts"],"names":[],"mappings":"AAEA,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1D,OAAQ,OAA8B,CAAC,IAAI,KAAK,WAAW,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,OAAgB,EAChB,MAAc;IAEd,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9C,MAAM,IAAI,GAAmB;QAC3B,GAAG,OAAO;QACV,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KAC1C,CAAC;IACF,IAAI,cAAc,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,YAAY,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC"}
|