Expose prompt hooks to clients

This commit is contained in:
Abhinav Vedmala
2026-07-09 18:35:42 -07:00
parent 9d14b483ec
commit 4bd15dec58
15 changed files with 369 additions and 32 deletions
@@ -8609,6 +8609,32 @@
},
{
"properties": {
"continueOnBlock": {
"type": "boolean"
},
"model": {
"type": [
"string",
"null"
]
},
"prompt": {
"type": "string"
},
"statusMessage": {
"type": [
"string",
"null"
]
},
"timeoutSec": {
"format": "uint64",
"minimum": 0.0,
"type": [
"integer",
"null"
]
},
"type": {
"enum": [
"prompt"
@@ -8618,6 +8644,8 @@
}
},
"required": [
"continueOnBlock",
"prompt",
"type"
],
"title": "PromptConfiguredHookHandler",
@@ -10836,6 +10864,12 @@
"null"
]
},
"continueOnBlock": {
"type": [
"boolean",
"null"
]
},
"currentHash": {
"type": "string"
},
@@ -10864,12 +10898,24 @@
"null"
]
},
"model": {
"type": [
"string",
"null"
]
},
"pluginId": {
"type": [
"string",
"null"
]
},
"prompt": {
"type": [
"string",
"null"
]
},
"source": {
"$ref": "#/definitions/v2/HookSource"
},
@@ -4849,6 +4849,32 @@
},
{
"properties": {
"continueOnBlock": {
"type": "boolean"
},
"model": {
"type": [
"string",
"null"
]
},
"prompt": {
"type": "string"
},
"statusMessage": {
"type": [
"string",
"null"
]
},
"timeoutSec": {
"format": "uint64",
"minimum": 0.0,
"type": [
"integer",
"null"
]
},
"type": {
"enum": [
"prompt"
@@ -4858,6 +4884,8 @@
}
},
"required": [
"continueOnBlock",
"prompt",
"type"
],
"title": "PromptConfiguredHookHandler",
@@ -7187,6 +7215,12 @@
"null"
]
},
"continueOnBlock": {
"type": [
"boolean",
"null"
]
},
"currentHash": {
"type": "string"
},
@@ -7215,12 +7249,24 @@
"null"
]
},
"model": {
"type": [
"string",
"null"
]
},
"pluginId": {
"type": [
"string",
"null"
]
},
"prompt": {
"type": [
"string",
"null"
]
},
"source": {
"$ref": "#/definitions/HookSource"
},
@@ -231,6 +231,32 @@
},
{
"properties": {
"continueOnBlock": {
"type": "boolean"
},
"model": {
"type": [
"string",
"null"
]
},
"prompt": {
"type": "string"
},
"statusMessage": {
"type": [
"string",
"null"
]
},
"timeoutSec": {
"format": "uint64",
"minimum": 0.0,
"type": [
"integer",
"null"
]
},
"type": {
"enum": [
"prompt"
@@ -240,6 +266,8 @@
}
},
"required": [
"continueOnBlock",
"prompt",
"type"
],
"title": "PromptConfiguredHookHandler",
@@ -51,6 +51,12 @@
"null"
]
},
"continueOnBlock": {
"type": [
"boolean",
"null"
]
},
"currentHash": {
"type": "string"
},
@@ -79,12 +85,24 @@
"null"
]
},
"model": {
"type": [
"string",
"null"
]
},
"pluginId": {
"type": [
"string",
"null"
]
},
"prompt": {
"type": [
"string",
"null"
]
},
"source": {
"$ref": "#/definitions/HookSource"
},
@@ -2,4 +2,4 @@
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
export type ConfiguredHookHandler = { "type": "command", command: string, commandWindows: string | null, timeoutSec: bigint | null, async: boolean, statusMessage: string | null, } | { "type": "prompt", } | { "type": "agent", };
export type ConfiguredHookHandler = { "type": "command", command: string, commandWindows: string | null, timeoutSec: bigint | null, async: boolean, statusMessage: string | null, } | { "type": "prompt", prompt: string, model: string | null, timeoutSec: bigint | null, statusMessage: string | null, continueOnBlock: boolean, } | { "type": "agent", };
@@ -7,4 +7,4 @@ import type { HookHandlerType } from "./HookHandlerType";
import type { HookSource } from "./HookSource";
import type { HookTrustStatus } from "./HookTrustStatus";
export type HookMetadata = { key: string, eventName: HookEventName, handlerType: HookHandlerType, matcher: string | null, command: string | null, timeoutSec: bigint, statusMessage: string | null, sourcePath: AbsolutePathBuf, source: HookSource, pluginId: string | null, displayOrder: bigint, enabled: boolean, isManaged: boolean, currentHash: string, trustStatus: HookTrustStatus, };
export type HookMetadata = { key: string, eventName: HookEventName, handlerType: HookHandlerType, matcher: string | null, command: string | null, prompt: string | null, model: string | null, continueOnBlock: boolean | null, timeoutSec: bigint, statusMessage: string | null, sourcePath: AbsolutePathBuf, source: HookSource, pluginId: string | null, displayOrder: bigint, enabled: boolean, isManaged: boolean, currentHash: string, trustStatus: HookTrustStatus, };
@@ -484,7 +484,19 @@ pub enum ConfiguredHookHandler {
},
#[serde(rename = "prompt")]
#[ts(rename = "prompt")]
Prompt {},
Prompt {
prompt: String,
model: Option<String>,
#[serde(rename = "timeoutSec")]
#[ts(rename = "timeoutSec")]
timeout_sec: Option<u64>,
#[serde(rename = "statusMessage")]
#[ts(rename = "statusMessage")]
status_message: Option<String>,
#[serde(rename = "continueOnBlock")]
#[ts(rename = "continueOnBlock")]
continue_on_block: bool,
},
#[serde(rename = "agent")]
#[ts(rename = "agent")]
Agent {},
@@ -514,6 +514,9 @@ pub struct HookMetadata {
pub handler_type: HookHandlerType,
pub matcher: Option<String>,
pub command: Option<String>,
pub prompt: Option<String>,
pub model: Option<String>,
pub continue_on_block: Option<bool>,
pub timeout_sec: u64,
pub status_message: Option<String>,
pub source_path: AbsolutePathBuf,