@hachej/boring-agent 0.1.78 → 0.1.80

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.
@@ -1,85 +0,0 @@
1
- // src/server/logging.ts
2
- var SENSITIVE_KEYS = new Set([
3
- "apiKey",
4
- "api_key",
5
- "token",
6
- "secret",
7
- "password",
8
- "authorization",
9
- "cookie",
10
- "oidcToken",
11
- "accessToken",
12
- "refreshToken",
13
- "ANTHROPIC_API_KEY",
14
- "OPENAI_API_KEY",
15
- "VERCEL_OIDC_TOKEN",
16
- "VERCEL_TEAM_ID"
17
- ].map((key) => key.toLowerCase()));
18
- function isSensitiveKey(key) {
19
- return SENSITIVE_KEYS.has(key.toLowerCase());
20
- }
21
- function redactValue(key, value, seen) {
22
- if (key && isSensitiveKey(key) && value != null) return "***";
23
- if (value == null || typeof value !== "object") return value;
24
- if (value instanceof Date) return value;
25
- if (seen.has(value)) return "[Circular]";
26
- seen.add(value);
27
- if (Array.isArray(value)) {
28
- const out2 = value.map((item) => redactValue(void 0, item, seen));
29
- seen.delete(value);
30
- return out2;
31
- }
32
- const out = {};
33
- for (const [childKey, childValue] of Object.entries(value)) {
34
- out[childKey] = redactValue(childKey, childValue, seen);
35
- }
36
- seen.delete(value);
37
- return out;
38
- }
39
- function redact(fields) {
40
- const out = {};
41
- const seen = /* @__PURE__ */ new WeakSet();
42
- for (const [k, v] of Object.entries(fields)) {
43
- out[k] = redactValue(k, v, seen);
44
- }
45
- return out;
46
- }
47
- function isVerbose() {
48
- return typeof process !== "undefined" && process.env?.BORING_AGENT_VERBOSE === "1";
49
- }
50
- function createLogger(prefix) {
51
- function emit(level, msg, fields) {
52
- const entry = {
53
- level,
54
- prefix,
55
- msg,
56
- ...fields ? redact(fields) : {},
57
- t: (/* @__PURE__ */ new Date()).toISOString()
58
- };
59
- if (level === "error") {
60
- console.error(JSON.stringify(entry));
61
- } else if (level === "warn") {
62
- console.warn(JSON.stringify(entry));
63
- } else {
64
- console.log(JSON.stringify(entry));
65
- }
66
- }
67
- return {
68
- debug(msg, fields) {
69
- if (isVerbose()) emit("debug", msg, fields);
70
- },
71
- info(msg, fields) {
72
- emit("info", msg, fields);
73
- },
74
- warn(msg, fields) {
75
- emit("warn", msg, fields);
76
- },
77
- error(msg, fields) {
78
- emit("error", msg, fields);
79
- }
80
- };
81
- }
82
-
83
- export {
84
- createLogger
85
- };
@@ -1,14 +0,0 @@
1
- // src/shared/validateTool.ts
2
- function validateTool(tool) {
3
- if (typeof tool !== "object" || tool === null) return null;
4
- const t = tool;
5
- if (typeof t.name !== "string" || t.name.length === 0) return null;
6
- if (typeof t.description !== "string") return null;
7
- if (typeof t.parameters !== "object" || t.parameters === null) return null;
8
- if (typeof t.execute !== "function") return null;
9
- return t;
10
- }
11
-
12
- export {
13
- validateTool
14
- };
@@ -1,60 +0,0 @@
1
- import { Q as QueuedUserMessage } from './session-FUiMWsyX.js';
2
-
3
- type ThinkingLevel = 'off' | 'low' | 'medium' | 'high';
4
- interface ChatModelSelection {
5
- provider: string;
6
- id: string;
7
- }
8
- interface ChatAttachmentPayload {
9
- filename?: string;
10
- mediaType?: string;
11
- url: string;
12
- /** Workspace-relative path when the browser upload endpoint persisted the attachment. */
13
- path?: string;
14
- }
15
- interface ChatSubmitPayload {
16
- message: string;
17
- displayMessage?: string;
18
- clientNonce: string;
19
- model?: ChatModelSelection;
20
- thinkingLevel?: ThinkingLevel;
21
- attachments?: ChatAttachmentPayload[];
22
- }
23
-
24
- type PromptPayload = ChatSubmitPayload;
25
- interface FollowUpPayload {
26
- message: string;
27
- displayMessage?: string;
28
- clientNonce: string;
29
- clientSeq: number;
30
- }
31
- interface QueueClearPayload {
32
- clientNonce?: string;
33
- clientSeq?: number;
34
- }
35
- type InterruptPayload = Record<string, never>;
36
- type StopPayload = Record<string, never>;
37
- interface CommandReceipt {
38
- accepted: true;
39
- cursor: number;
40
- }
41
- type PromptReceipt = CommandReceipt & {
42
- clientNonce: string;
43
- duplicate?: boolean;
44
- };
45
- type FollowUpReceipt = CommandReceipt & {
46
- clientNonce: string;
47
- clientSeq: number;
48
- queued: true;
49
- duplicate?: boolean;
50
- };
51
- type QueueClearReceipt = CommandReceipt & {
52
- cleared: number;
53
- };
54
- type InterruptReceipt = CommandReceipt;
55
- type StopReceipt = CommandReceipt & {
56
- stopped: boolean;
57
- clearedQueue: QueuedUserMessage[];
58
- };
59
-
60
- export type { ChatAttachmentPayload as C, FollowUpPayload as F, InterruptPayload as I, PromptPayload as P, QueueClearPayload as Q, StopPayload as S, ThinkingLevel as T, ChatModelSelection as a, ChatSubmitPayload as b, CommandReceipt as c, FollowUpReceipt as d, InterruptReceipt as e, PromptReceipt as f, QueueClearReceipt as g, StopReceipt as h };
@@ -1,297 +0,0 @@
1
- import { z } from 'zod';
2
-
3
- interface ToolUiMetadata {
4
- /** Renderer key registered by the app shell, e.g. `pi-subagent`. */
5
- rendererId?: string;
6
- /** Optional grouping label for future tool timelines/summaries. */
7
- displayGroup?: string;
8
- /** Optional icon hint. Frontends decide whether/how to honor it. */
9
- icon?: string;
10
- /** Renderer-specific structured data. */
11
- details?: unknown;
12
- }
13
- declare function isToolUiMetadata(value: unknown): value is ToolUiMetadata;
14
- /**
15
- * Extract structured UI metadata from a ToolResult-like output.
16
- *
17
- * Shape:
18
- * output.details.ui = { rendererId, displayGroup, icon, details }
19
- */
20
- declare function extractToolUiMetadata(output: unknown): ToolUiMetadata | undefined;
21
-
22
- type BoringChatMessageRole = 'user' | 'assistant' | 'system';
23
- type BoringChatMessageStatus = 'pending' | 'streaming' | 'done' | 'aborted' | 'error';
24
- type BoringChatReasoningState = 'streaming' | 'done';
25
- type BoringChatToolState = 'input-streaming' | 'input-available' | 'output-available' | 'output-error' | 'aborted';
26
- type BoringChatPart = {
27
- type: 'text';
28
- id?: string;
29
- text: string;
30
- } | {
31
- type: 'reasoning';
32
- id: string;
33
- text: string;
34
- state?: BoringChatReasoningState;
35
- } | {
36
- type: 'tool-call';
37
- id: string;
38
- toolName: string;
39
- input?: unknown;
40
- state: BoringChatToolState;
41
- output?: unknown;
42
- errorText?: string;
43
- ui?: ToolUiMetadata;
44
- } | {
45
- type: 'file';
46
- id?: string;
47
- filename?: string;
48
- mediaType?: string;
49
- url?: string;
50
- path?: string;
51
- filesystem?: string;
52
- } | {
53
- type: 'notice';
54
- id?: string;
55
- level: 'info' | 'warning' | 'error';
56
- text: string;
57
- };
58
- interface BoringChatMessage {
59
- id: string;
60
- role: BoringChatMessageRole;
61
- status?: BoringChatMessageStatus;
62
- parts: BoringChatPart[];
63
- createdAt?: string;
64
- clientNonce?: string;
65
- clientSeq?: number;
66
- piEntryId?: string;
67
- turnId?: string;
68
- }
69
-
70
- declare const ErrorCode: z.ZodEnum<["UNAUTHORIZED", "MISSING_API_KEY", "INVALID_API_KEY", "OIDC_REFRESH_FAILED", "VERCEL_AUTH_FAILED", "CONFIG_INVALID", "PATH_ESCAPE", "PATH_ABSOLUTE", "PATH_NULL_BYTE", "PATH_SYMLINK_ESCAPE", "PATH_NOT_FOUND", "PATH_NOT_WRITABLE", "WORKSPACE_UNINITIALIZED", "WORKSPACE_NOT_READY", "AGENT_RUNTIME_NOT_READY", "AGENT_CONTROL_RECEIPT_INVALID", "RUNTIME_PROVISIONING_FAILED", "RUNTIME_PROVISIONING_LOCKED", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "REMOTE_WORKER_TIMEOUT", "REMOTE_WORKER_STREAM_CLOSED", "CIRCUIT_OPEN", "ABORTED", "PAYMENT_REQUIRED", "MODEL_BUDGET_EXCEEDED", "METERING_UNSUPPORTED_COMMAND", "SESSION_NOT_FOUND", "SESSION_LOCKED", "STREAM_BUFFER_EVICTED", "CURSOR_OUT_OF_RANGE", "BRIDGE_COMMAND_INVALID", "TOOL_NOT_FOUND", "TOOL_INVALID_INPUT", "TOOL_EXECUTION_ERROR", "PLUGIN_LOAD_FAILED", "PLUGIN_NAME_COLLISION", "PLUGIN_RUNTIME_REVISION_MISMATCH", "PLUGIN_RUNTIME_PRIVATE_FILE", "PLUGIN_RUNTIME_UNSAFE_IMPORT", "PLUGIN_RUNTIME_TRANSFORM_FAILED", "RUNTIME_PLUGIN_NOT_FOUND", "RUNTIME_PLUGIN_ROUTE_NOT_FOUND", "RUNTIME_PLUGIN_HANDLER_FAILED", "RUNTIME_PLUGIN_LOAD_FAILED", "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED", "PROVISIONING_LAYOUT_FAILED", "PROVISIONING_SKILLS_FAILED", "PROVISIONING_TEMPLATES_FAILED", "PROVISIONING_NODE_PREFLIGHT_FAILED", "PROVISIONING_NPM_INSTALL_FAILED", "PROVISIONING_UV_BOOTSTRAP_FAILED", "PROVISIONING_UV_INSTALL_FAILED", "PROVISIONING_ARTIFACT_FAILED", "ERR_NOT_IMPLEMENTED_UNTIL_T1", "ERR_NO_FILESYSTEM_FOR_ATTACHMENTS", "INTERNAL_ERROR"]>;
71
- type ErrorCode = z.infer<typeof ErrorCode>;
72
- declare const ERROR_CODES: ["UNAUTHORIZED", "MISSING_API_KEY", "INVALID_API_KEY", "OIDC_REFRESH_FAILED", "VERCEL_AUTH_FAILED", "CONFIG_INVALID", "PATH_ESCAPE", "PATH_ABSOLUTE", "PATH_NULL_BYTE", "PATH_SYMLINK_ESCAPE", "PATH_NOT_FOUND", "PATH_NOT_WRITABLE", "WORKSPACE_UNINITIALIZED", "WORKSPACE_NOT_READY", "AGENT_RUNTIME_NOT_READY", "AGENT_CONTROL_RECEIPT_INVALID", "RUNTIME_PROVISIONING_FAILED", "RUNTIME_PROVISIONING_LOCKED", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "REMOTE_WORKER_TIMEOUT", "REMOTE_WORKER_STREAM_CLOSED", "CIRCUIT_OPEN", "ABORTED", "PAYMENT_REQUIRED", "MODEL_BUDGET_EXCEEDED", "METERING_UNSUPPORTED_COMMAND", "SESSION_NOT_FOUND", "SESSION_LOCKED", "STREAM_BUFFER_EVICTED", "CURSOR_OUT_OF_RANGE", "BRIDGE_COMMAND_INVALID", "TOOL_NOT_FOUND", "TOOL_INVALID_INPUT", "TOOL_EXECUTION_ERROR", "PLUGIN_LOAD_FAILED", "PLUGIN_NAME_COLLISION", "PLUGIN_RUNTIME_REVISION_MISMATCH", "PLUGIN_RUNTIME_PRIVATE_FILE", "PLUGIN_RUNTIME_UNSAFE_IMPORT", "PLUGIN_RUNTIME_TRANSFORM_FAILED", "RUNTIME_PLUGIN_NOT_FOUND", "RUNTIME_PLUGIN_ROUTE_NOT_FOUND", "RUNTIME_PLUGIN_HANDLER_FAILED", "RUNTIME_PLUGIN_LOAD_FAILED", "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED", "PROVISIONING_LAYOUT_FAILED", "PROVISIONING_SKILLS_FAILED", "PROVISIONING_TEMPLATES_FAILED", "PROVISIONING_NODE_PREFLIGHT_FAILED", "PROVISIONING_NPM_INSTALL_FAILED", "PROVISIONING_UV_BOOTSTRAP_FAILED", "PROVISIONING_UV_INSTALL_FAILED", "PROVISIONING_ARTIFACT_FAILED", "ERR_NOT_IMPLEMENTED_UNTIL_T1", "ERR_NO_FILESYSTEM_FOR_ATTACHMENTS", "INTERNAL_ERROR"];
73
- declare const ApiErrorPayloadSchema: z.ZodObject<{
74
- code: z.ZodEnum<["UNAUTHORIZED", "MISSING_API_KEY", "INVALID_API_KEY", "OIDC_REFRESH_FAILED", "VERCEL_AUTH_FAILED", "CONFIG_INVALID", "PATH_ESCAPE", "PATH_ABSOLUTE", "PATH_NULL_BYTE", "PATH_SYMLINK_ESCAPE", "PATH_NOT_FOUND", "PATH_NOT_WRITABLE", "WORKSPACE_UNINITIALIZED", "WORKSPACE_NOT_READY", "AGENT_RUNTIME_NOT_READY", "AGENT_CONTROL_RECEIPT_INVALID", "RUNTIME_PROVISIONING_FAILED", "RUNTIME_PROVISIONING_LOCKED", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "REMOTE_WORKER_TIMEOUT", "REMOTE_WORKER_STREAM_CLOSED", "CIRCUIT_OPEN", "ABORTED", "PAYMENT_REQUIRED", "MODEL_BUDGET_EXCEEDED", "METERING_UNSUPPORTED_COMMAND", "SESSION_NOT_FOUND", "SESSION_LOCKED", "STREAM_BUFFER_EVICTED", "CURSOR_OUT_OF_RANGE", "BRIDGE_COMMAND_INVALID", "TOOL_NOT_FOUND", "TOOL_INVALID_INPUT", "TOOL_EXECUTION_ERROR", "PLUGIN_LOAD_FAILED", "PLUGIN_NAME_COLLISION", "PLUGIN_RUNTIME_REVISION_MISMATCH", "PLUGIN_RUNTIME_PRIVATE_FILE", "PLUGIN_RUNTIME_UNSAFE_IMPORT", "PLUGIN_RUNTIME_TRANSFORM_FAILED", "RUNTIME_PLUGIN_NOT_FOUND", "RUNTIME_PLUGIN_ROUTE_NOT_FOUND", "RUNTIME_PLUGIN_HANDLER_FAILED", "RUNTIME_PLUGIN_LOAD_FAILED", "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED", "PROVISIONING_LAYOUT_FAILED", "PROVISIONING_SKILLS_FAILED", "PROVISIONING_TEMPLATES_FAILED", "PROVISIONING_NODE_PREFLIGHT_FAILED", "PROVISIONING_NPM_INSTALL_FAILED", "PROVISIONING_UV_BOOTSTRAP_FAILED", "PROVISIONING_UV_INSTALL_FAILED", "PROVISIONING_ARTIFACT_FAILED", "ERR_NOT_IMPLEMENTED_UNTIL_T1", "ERR_NO_FILESYSTEM_FOR_ATTACHMENTS", "INTERNAL_ERROR"]>;
75
- message: z.ZodString;
76
- details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
77
- }, "strip", z.ZodTypeAny, {
78
- code: "UNAUTHORIZED" | "MISSING_API_KEY" | "INVALID_API_KEY" | "OIDC_REFRESH_FAILED" | "VERCEL_AUTH_FAILED" | "CONFIG_INVALID" | "PATH_ESCAPE" | "PATH_ABSOLUTE" | "PATH_NULL_BYTE" | "PATH_SYMLINK_ESCAPE" | "PATH_NOT_FOUND" | "PATH_NOT_WRITABLE" | "WORKSPACE_UNINITIALIZED" | "WORKSPACE_NOT_READY" | "AGENT_RUNTIME_NOT_READY" | "AGENT_CONTROL_RECEIPT_INVALID" | "RUNTIME_PROVISIONING_FAILED" | "RUNTIME_PROVISIONING_LOCKED" | "BWRAP_UNAVAILABLE" | "BWRAP_TIMEOUT" | "OUTPUT_TRUNCATED" | "SANDBOX_NOT_READY" | "SANDBOX_EXPIRED" | "VERCEL_API_ERROR" | "REMOTE_WORKER_TIMEOUT" | "REMOTE_WORKER_STREAM_CLOSED" | "CIRCUIT_OPEN" | "ABORTED" | "PAYMENT_REQUIRED" | "MODEL_BUDGET_EXCEEDED" | "METERING_UNSUPPORTED_COMMAND" | "SESSION_NOT_FOUND" | "SESSION_LOCKED" | "STREAM_BUFFER_EVICTED" | "CURSOR_OUT_OF_RANGE" | "BRIDGE_COMMAND_INVALID" | "TOOL_NOT_FOUND" | "TOOL_INVALID_INPUT" | "TOOL_EXECUTION_ERROR" | "PLUGIN_LOAD_FAILED" | "PLUGIN_NAME_COLLISION" | "PLUGIN_RUNTIME_REVISION_MISMATCH" | "PLUGIN_RUNTIME_PRIVATE_FILE" | "PLUGIN_RUNTIME_UNSAFE_IMPORT" | "PLUGIN_RUNTIME_TRANSFORM_FAILED" | "RUNTIME_PLUGIN_NOT_FOUND" | "RUNTIME_PLUGIN_ROUTE_NOT_FOUND" | "RUNTIME_PLUGIN_HANDLER_FAILED" | "RUNTIME_PLUGIN_LOAD_FAILED" | "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED" | "PROVISIONING_LAYOUT_FAILED" | "PROVISIONING_SKILLS_FAILED" | "PROVISIONING_TEMPLATES_FAILED" | "PROVISIONING_NODE_PREFLIGHT_FAILED" | "PROVISIONING_NPM_INSTALL_FAILED" | "PROVISIONING_UV_BOOTSTRAP_FAILED" | "PROVISIONING_UV_INSTALL_FAILED" | "PROVISIONING_ARTIFACT_FAILED" | "ERR_NOT_IMPLEMENTED_UNTIL_T1" | "ERR_NO_FILESYSTEM_FOR_ATTACHMENTS" | "INTERNAL_ERROR";
79
- message: string;
80
- details?: Record<string, unknown> | undefined;
81
- }, {
82
- code: "UNAUTHORIZED" | "MISSING_API_KEY" | "INVALID_API_KEY" | "OIDC_REFRESH_FAILED" | "VERCEL_AUTH_FAILED" | "CONFIG_INVALID" | "PATH_ESCAPE" | "PATH_ABSOLUTE" | "PATH_NULL_BYTE" | "PATH_SYMLINK_ESCAPE" | "PATH_NOT_FOUND" | "PATH_NOT_WRITABLE" | "WORKSPACE_UNINITIALIZED" | "WORKSPACE_NOT_READY" | "AGENT_RUNTIME_NOT_READY" | "AGENT_CONTROL_RECEIPT_INVALID" | "RUNTIME_PROVISIONING_FAILED" | "RUNTIME_PROVISIONING_LOCKED" | "BWRAP_UNAVAILABLE" | "BWRAP_TIMEOUT" | "OUTPUT_TRUNCATED" | "SANDBOX_NOT_READY" | "SANDBOX_EXPIRED" | "VERCEL_API_ERROR" | "REMOTE_WORKER_TIMEOUT" | "REMOTE_WORKER_STREAM_CLOSED" | "CIRCUIT_OPEN" | "ABORTED" | "PAYMENT_REQUIRED" | "MODEL_BUDGET_EXCEEDED" | "METERING_UNSUPPORTED_COMMAND" | "SESSION_NOT_FOUND" | "SESSION_LOCKED" | "STREAM_BUFFER_EVICTED" | "CURSOR_OUT_OF_RANGE" | "BRIDGE_COMMAND_INVALID" | "TOOL_NOT_FOUND" | "TOOL_INVALID_INPUT" | "TOOL_EXECUTION_ERROR" | "PLUGIN_LOAD_FAILED" | "PLUGIN_NAME_COLLISION" | "PLUGIN_RUNTIME_REVISION_MISMATCH" | "PLUGIN_RUNTIME_PRIVATE_FILE" | "PLUGIN_RUNTIME_UNSAFE_IMPORT" | "PLUGIN_RUNTIME_TRANSFORM_FAILED" | "RUNTIME_PLUGIN_NOT_FOUND" | "RUNTIME_PLUGIN_ROUTE_NOT_FOUND" | "RUNTIME_PLUGIN_HANDLER_FAILED" | "RUNTIME_PLUGIN_LOAD_FAILED" | "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED" | "PROVISIONING_LAYOUT_FAILED" | "PROVISIONING_SKILLS_FAILED" | "PROVISIONING_TEMPLATES_FAILED" | "PROVISIONING_NODE_PREFLIGHT_FAILED" | "PROVISIONING_NPM_INSTALL_FAILED" | "PROVISIONING_UV_BOOTSTRAP_FAILED" | "PROVISIONING_UV_INSTALL_FAILED" | "PROVISIONING_ARTIFACT_FAILED" | "ERR_NOT_IMPLEMENTED_UNTIL_T1" | "ERR_NO_FILESYSTEM_FOR_ATTACHMENTS" | "INTERNAL_ERROR";
83
- message: string;
84
- details?: Record<string, unknown> | undefined;
85
- }>;
86
- type ApiErrorPayload = z.infer<typeof ApiErrorPayloadSchema>;
87
- declare const ApiErrorResponseSchema: z.ZodObject<{
88
- error: z.ZodObject<{
89
- code: z.ZodEnum<["UNAUTHORIZED", "MISSING_API_KEY", "INVALID_API_KEY", "OIDC_REFRESH_FAILED", "VERCEL_AUTH_FAILED", "CONFIG_INVALID", "PATH_ESCAPE", "PATH_ABSOLUTE", "PATH_NULL_BYTE", "PATH_SYMLINK_ESCAPE", "PATH_NOT_FOUND", "PATH_NOT_WRITABLE", "WORKSPACE_UNINITIALIZED", "WORKSPACE_NOT_READY", "AGENT_RUNTIME_NOT_READY", "AGENT_CONTROL_RECEIPT_INVALID", "RUNTIME_PROVISIONING_FAILED", "RUNTIME_PROVISIONING_LOCKED", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "REMOTE_WORKER_TIMEOUT", "REMOTE_WORKER_STREAM_CLOSED", "CIRCUIT_OPEN", "ABORTED", "PAYMENT_REQUIRED", "MODEL_BUDGET_EXCEEDED", "METERING_UNSUPPORTED_COMMAND", "SESSION_NOT_FOUND", "SESSION_LOCKED", "STREAM_BUFFER_EVICTED", "CURSOR_OUT_OF_RANGE", "BRIDGE_COMMAND_INVALID", "TOOL_NOT_FOUND", "TOOL_INVALID_INPUT", "TOOL_EXECUTION_ERROR", "PLUGIN_LOAD_FAILED", "PLUGIN_NAME_COLLISION", "PLUGIN_RUNTIME_REVISION_MISMATCH", "PLUGIN_RUNTIME_PRIVATE_FILE", "PLUGIN_RUNTIME_UNSAFE_IMPORT", "PLUGIN_RUNTIME_TRANSFORM_FAILED", "RUNTIME_PLUGIN_NOT_FOUND", "RUNTIME_PLUGIN_ROUTE_NOT_FOUND", "RUNTIME_PLUGIN_HANDLER_FAILED", "RUNTIME_PLUGIN_LOAD_FAILED", "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED", "PROVISIONING_LAYOUT_FAILED", "PROVISIONING_SKILLS_FAILED", "PROVISIONING_TEMPLATES_FAILED", "PROVISIONING_NODE_PREFLIGHT_FAILED", "PROVISIONING_NPM_INSTALL_FAILED", "PROVISIONING_UV_BOOTSTRAP_FAILED", "PROVISIONING_UV_INSTALL_FAILED", "PROVISIONING_ARTIFACT_FAILED", "ERR_NOT_IMPLEMENTED_UNTIL_T1", "ERR_NO_FILESYSTEM_FOR_ATTACHMENTS", "INTERNAL_ERROR"]>;
90
- message: z.ZodString;
91
- details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
92
- }, "strip", z.ZodTypeAny, {
93
- code: "UNAUTHORIZED" | "MISSING_API_KEY" | "INVALID_API_KEY" | "OIDC_REFRESH_FAILED" | "VERCEL_AUTH_FAILED" | "CONFIG_INVALID" | "PATH_ESCAPE" | "PATH_ABSOLUTE" | "PATH_NULL_BYTE" | "PATH_SYMLINK_ESCAPE" | "PATH_NOT_FOUND" | "PATH_NOT_WRITABLE" | "WORKSPACE_UNINITIALIZED" | "WORKSPACE_NOT_READY" | "AGENT_RUNTIME_NOT_READY" | "AGENT_CONTROL_RECEIPT_INVALID" | "RUNTIME_PROVISIONING_FAILED" | "RUNTIME_PROVISIONING_LOCKED" | "BWRAP_UNAVAILABLE" | "BWRAP_TIMEOUT" | "OUTPUT_TRUNCATED" | "SANDBOX_NOT_READY" | "SANDBOX_EXPIRED" | "VERCEL_API_ERROR" | "REMOTE_WORKER_TIMEOUT" | "REMOTE_WORKER_STREAM_CLOSED" | "CIRCUIT_OPEN" | "ABORTED" | "PAYMENT_REQUIRED" | "MODEL_BUDGET_EXCEEDED" | "METERING_UNSUPPORTED_COMMAND" | "SESSION_NOT_FOUND" | "SESSION_LOCKED" | "STREAM_BUFFER_EVICTED" | "CURSOR_OUT_OF_RANGE" | "BRIDGE_COMMAND_INVALID" | "TOOL_NOT_FOUND" | "TOOL_INVALID_INPUT" | "TOOL_EXECUTION_ERROR" | "PLUGIN_LOAD_FAILED" | "PLUGIN_NAME_COLLISION" | "PLUGIN_RUNTIME_REVISION_MISMATCH" | "PLUGIN_RUNTIME_PRIVATE_FILE" | "PLUGIN_RUNTIME_UNSAFE_IMPORT" | "PLUGIN_RUNTIME_TRANSFORM_FAILED" | "RUNTIME_PLUGIN_NOT_FOUND" | "RUNTIME_PLUGIN_ROUTE_NOT_FOUND" | "RUNTIME_PLUGIN_HANDLER_FAILED" | "RUNTIME_PLUGIN_LOAD_FAILED" | "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED" | "PROVISIONING_LAYOUT_FAILED" | "PROVISIONING_SKILLS_FAILED" | "PROVISIONING_TEMPLATES_FAILED" | "PROVISIONING_NODE_PREFLIGHT_FAILED" | "PROVISIONING_NPM_INSTALL_FAILED" | "PROVISIONING_UV_BOOTSTRAP_FAILED" | "PROVISIONING_UV_INSTALL_FAILED" | "PROVISIONING_ARTIFACT_FAILED" | "ERR_NOT_IMPLEMENTED_UNTIL_T1" | "ERR_NO_FILESYSTEM_FOR_ATTACHMENTS" | "INTERNAL_ERROR";
94
- message: string;
95
- details?: Record<string, unknown> | undefined;
96
- }, {
97
- code: "UNAUTHORIZED" | "MISSING_API_KEY" | "INVALID_API_KEY" | "OIDC_REFRESH_FAILED" | "VERCEL_AUTH_FAILED" | "CONFIG_INVALID" | "PATH_ESCAPE" | "PATH_ABSOLUTE" | "PATH_NULL_BYTE" | "PATH_SYMLINK_ESCAPE" | "PATH_NOT_FOUND" | "PATH_NOT_WRITABLE" | "WORKSPACE_UNINITIALIZED" | "WORKSPACE_NOT_READY" | "AGENT_RUNTIME_NOT_READY" | "AGENT_CONTROL_RECEIPT_INVALID" | "RUNTIME_PROVISIONING_FAILED" | "RUNTIME_PROVISIONING_LOCKED" | "BWRAP_UNAVAILABLE" | "BWRAP_TIMEOUT" | "OUTPUT_TRUNCATED" | "SANDBOX_NOT_READY" | "SANDBOX_EXPIRED" | "VERCEL_API_ERROR" | "REMOTE_WORKER_TIMEOUT" | "REMOTE_WORKER_STREAM_CLOSED" | "CIRCUIT_OPEN" | "ABORTED" | "PAYMENT_REQUIRED" | "MODEL_BUDGET_EXCEEDED" | "METERING_UNSUPPORTED_COMMAND" | "SESSION_NOT_FOUND" | "SESSION_LOCKED" | "STREAM_BUFFER_EVICTED" | "CURSOR_OUT_OF_RANGE" | "BRIDGE_COMMAND_INVALID" | "TOOL_NOT_FOUND" | "TOOL_INVALID_INPUT" | "TOOL_EXECUTION_ERROR" | "PLUGIN_LOAD_FAILED" | "PLUGIN_NAME_COLLISION" | "PLUGIN_RUNTIME_REVISION_MISMATCH" | "PLUGIN_RUNTIME_PRIVATE_FILE" | "PLUGIN_RUNTIME_UNSAFE_IMPORT" | "PLUGIN_RUNTIME_TRANSFORM_FAILED" | "RUNTIME_PLUGIN_NOT_FOUND" | "RUNTIME_PLUGIN_ROUTE_NOT_FOUND" | "RUNTIME_PLUGIN_HANDLER_FAILED" | "RUNTIME_PLUGIN_LOAD_FAILED" | "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED" | "PROVISIONING_LAYOUT_FAILED" | "PROVISIONING_SKILLS_FAILED" | "PROVISIONING_TEMPLATES_FAILED" | "PROVISIONING_NODE_PREFLIGHT_FAILED" | "PROVISIONING_NPM_INSTALL_FAILED" | "PROVISIONING_UV_BOOTSTRAP_FAILED" | "PROVISIONING_UV_INSTALL_FAILED" | "PROVISIONING_ARTIFACT_FAILED" | "ERR_NOT_IMPLEMENTED_UNTIL_T1" | "ERR_NO_FILESYSTEM_FOR_ATTACHMENTS" | "INTERNAL_ERROR";
98
- message: string;
99
- details?: Record<string, unknown> | undefined;
100
- }>;
101
- }, "strip", z.ZodTypeAny, {
102
- error: {
103
- code: "UNAUTHORIZED" | "MISSING_API_KEY" | "INVALID_API_KEY" | "OIDC_REFRESH_FAILED" | "VERCEL_AUTH_FAILED" | "CONFIG_INVALID" | "PATH_ESCAPE" | "PATH_ABSOLUTE" | "PATH_NULL_BYTE" | "PATH_SYMLINK_ESCAPE" | "PATH_NOT_FOUND" | "PATH_NOT_WRITABLE" | "WORKSPACE_UNINITIALIZED" | "WORKSPACE_NOT_READY" | "AGENT_RUNTIME_NOT_READY" | "AGENT_CONTROL_RECEIPT_INVALID" | "RUNTIME_PROVISIONING_FAILED" | "RUNTIME_PROVISIONING_LOCKED" | "BWRAP_UNAVAILABLE" | "BWRAP_TIMEOUT" | "OUTPUT_TRUNCATED" | "SANDBOX_NOT_READY" | "SANDBOX_EXPIRED" | "VERCEL_API_ERROR" | "REMOTE_WORKER_TIMEOUT" | "REMOTE_WORKER_STREAM_CLOSED" | "CIRCUIT_OPEN" | "ABORTED" | "PAYMENT_REQUIRED" | "MODEL_BUDGET_EXCEEDED" | "METERING_UNSUPPORTED_COMMAND" | "SESSION_NOT_FOUND" | "SESSION_LOCKED" | "STREAM_BUFFER_EVICTED" | "CURSOR_OUT_OF_RANGE" | "BRIDGE_COMMAND_INVALID" | "TOOL_NOT_FOUND" | "TOOL_INVALID_INPUT" | "TOOL_EXECUTION_ERROR" | "PLUGIN_LOAD_FAILED" | "PLUGIN_NAME_COLLISION" | "PLUGIN_RUNTIME_REVISION_MISMATCH" | "PLUGIN_RUNTIME_PRIVATE_FILE" | "PLUGIN_RUNTIME_UNSAFE_IMPORT" | "PLUGIN_RUNTIME_TRANSFORM_FAILED" | "RUNTIME_PLUGIN_NOT_FOUND" | "RUNTIME_PLUGIN_ROUTE_NOT_FOUND" | "RUNTIME_PLUGIN_HANDLER_FAILED" | "RUNTIME_PLUGIN_LOAD_FAILED" | "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED" | "PROVISIONING_LAYOUT_FAILED" | "PROVISIONING_SKILLS_FAILED" | "PROVISIONING_TEMPLATES_FAILED" | "PROVISIONING_NODE_PREFLIGHT_FAILED" | "PROVISIONING_NPM_INSTALL_FAILED" | "PROVISIONING_UV_BOOTSTRAP_FAILED" | "PROVISIONING_UV_INSTALL_FAILED" | "PROVISIONING_ARTIFACT_FAILED" | "ERR_NOT_IMPLEMENTED_UNTIL_T1" | "ERR_NO_FILESYSTEM_FOR_ATTACHMENTS" | "INTERNAL_ERROR";
104
- message: string;
105
- details?: Record<string, unknown> | undefined;
106
- };
107
- }, {
108
- error: {
109
- code: "UNAUTHORIZED" | "MISSING_API_KEY" | "INVALID_API_KEY" | "OIDC_REFRESH_FAILED" | "VERCEL_AUTH_FAILED" | "CONFIG_INVALID" | "PATH_ESCAPE" | "PATH_ABSOLUTE" | "PATH_NULL_BYTE" | "PATH_SYMLINK_ESCAPE" | "PATH_NOT_FOUND" | "PATH_NOT_WRITABLE" | "WORKSPACE_UNINITIALIZED" | "WORKSPACE_NOT_READY" | "AGENT_RUNTIME_NOT_READY" | "AGENT_CONTROL_RECEIPT_INVALID" | "RUNTIME_PROVISIONING_FAILED" | "RUNTIME_PROVISIONING_LOCKED" | "BWRAP_UNAVAILABLE" | "BWRAP_TIMEOUT" | "OUTPUT_TRUNCATED" | "SANDBOX_NOT_READY" | "SANDBOX_EXPIRED" | "VERCEL_API_ERROR" | "REMOTE_WORKER_TIMEOUT" | "REMOTE_WORKER_STREAM_CLOSED" | "CIRCUIT_OPEN" | "ABORTED" | "PAYMENT_REQUIRED" | "MODEL_BUDGET_EXCEEDED" | "METERING_UNSUPPORTED_COMMAND" | "SESSION_NOT_FOUND" | "SESSION_LOCKED" | "STREAM_BUFFER_EVICTED" | "CURSOR_OUT_OF_RANGE" | "BRIDGE_COMMAND_INVALID" | "TOOL_NOT_FOUND" | "TOOL_INVALID_INPUT" | "TOOL_EXECUTION_ERROR" | "PLUGIN_LOAD_FAILED" | "PLUGIN_NAME_COLLISION" | "PLUGIN_RUNTIME_REVISION_MISMATCH" | "PLUGIN_RUNTIME_PRIVATE_FILE" | "PLUGIN_RUNTIME_UNSAFE_IMPORT" | "PLUGIN_RUNTIME_TRANSFORM_FAILED" | "RUNTIME_PLUGIN_NOT_FOUND" | "RUNTIME_PLUGIN_ROUTE_NOT_FOUND" | "RUNTIME_PLUGIN_HANDLER_FAILED" | "RUNTIME_PLUGIN_LOAD_FAILED" | "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED" | "PROVISIONING_LAYOUT_FAILED" | "PROVISIONING_SKILLS_FAILED" | "PROVISIONING_TEMPLATES_FAILED" | "PROVISIONING_NODE_PREFLIGHT_FAILED" | "PROVISIONING_NPM_INSTALL_FAILED" | "PROVISIONING_UV_BOOTSTRAP_FAILED" | "PROVISIONING_UV_INSTALL_FAILED" | "PROVISIONING_ARTIFACT_FAILED" | "ERR_NOT_IMPLEMENTED_UNTIL_T1" | "ERR_NO_FILESYSTEM_FOR_ATTACHMENTS" | "INTERNAL_ERROR";
110
- message: string;
111
- details?: Record<string, unknown> | undefined;
112
- };
113
- }>;
114
- type ApiErrorResponse = z.infer<typeof ApiErrorResponseSchema>;
115
- declare const ErrorLogFieldsSchema: z.ZodObject<{
116
- level: z.ZodEnum<["warn", "error"]>;
117
- code: z.ZodEnum<["UNAUTHORIZED", "MISSING_API_KEY", "INVALID_API_KEY", "OIDC_REFRESH_FAILED", "VERCEL_AUTH_FAILED", "CONFIG_INVALID", "PATH_ESCAPE", "PATH_ABSOLUTE", "PATH_NULL_BYTE", "PATH_SYMLINK_ESCAPE", "PATH_NOT_FOUND", "PATH_NOT_WRITABLE", "WORKSPACE_UNINITIALIZED", "WORKSPACE_NOT_READY", "AGENT_RUNTIME_NOT_READY", "AGENT_CONTROL_RECEIPT_INVALID", "RUNTIME_PROVISIONING_FAILED", "RUNTIME_PROVISIONING_LOCKED", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "REMOTE_WORKER_TIMEOUT", "REMOTE_WORKER_STREAM_CLOSED", "CIRCUIT_OPEN", "ABORTED", "PAYMENT_REQUIRED", "MODEL_BUDGET_EXCEEDED", "METERING_UNSUPPORTED_COMMAND", "SESSION_NOT_FOUND", "SESSION_LOCKED", "STREAM_BUFFER_EVICTED", "CURSOR_OUT_OF_RANGE", "BRIDGE_COMMAND_INVALID", "TOOL_NOT_FOUND", "TOOL_INVALID_INPUT", "TOOL_EXECUTION_ERROR", "PLUGIN_LOAD_FAILED", "PLUGIN_NAME_COLLISION", "PLUGIN_RUNTIME_REVISION_MISMATCH", "PLUGIN_RUNTIME_PRIVATE_FILE", "PLUGIN_RUNTIME_UNSAFE_IMPORT", "PLUGIN_RUNTIME_TRANSFORM_FAILED", "RUNTIME_PLUGIN_NOT_FOUND", "RUNTIME_PLUGIN_ROUTE_NOT_FOUND", "RUNTIME_PLUGIN_HANDLER_FAILED", "RUNTIME_PLUGIN_LOAD_FAILED", "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED", "PROVISIONING_LAYOUT_FAILED", "PROVISIONING_SKILLS_FAILED", "PROVISIONING_TEMPLATES_FAILED", "PROVISIONING_NODE_PREFLIGHT_FAILED", "PROVISIONING_NPM_INSTALL_FAILED", "PROVISIONING_UV_BOOTSTRAP_FAILED", "PROVISIONING_UV_INSTALL_FAILED", "PROVISIONING_ARTIFACT_FAILED", "ERR_NOT_IMPLEMENTED_UNTIL_T1", "ERR_NO_FILESYSTEM_FOR_ATTACHMENTS", "INTERNAL_ERROR"]>;
118
- prefix: z.ZodString;
119
- msg: z.ZodString;
120
- }, "strip", z.ZodUnknown, z.objectOutputType<{
121
- level: z.ZodEnum<["warn", "error"]>;
122
- code: z.ZodEnum<["UNAUTHORIZED", "MISSING_API_KEY", "INVALID_API_KEY", "OIDC_REFRESH_FAILED", "VERCEL_AUTH_FAILED", "CONFIG_INVALID", "PATH_ESCAPE", "PATH_ABSOLUTE", "PATH_NULL_BYTE", "PATH_SYMLINK_ESCAPE", "PATH_NOT_FOUND", "PATH_NOT_WRITABLE", "WORKSPACE_UNINITIALIZED", "WORKSPACE_NOT_READY", "AGENT_RUNTIME_NOT_READY", "AGENT_CONTROL_RECEIPT_INVALID", "RUNTIME_PROVISIONING_FAILED", "RUNTIME_PROVISIONING_LOCKED", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "REMOTE_WORKER_TIMEOUT", "REMOTE_WORKER_STREAM_CLOSED", "CIRCUIT_OPEN", "ABORTED", "PAYMENT_REQUIRED", "MODEL_BUDGET_EXCEEDED", "METERING_UNSUPPORTED_COMMAND", "SESSION_NOT_FOUND", "SESSION_LOCKED", "STREAM_BUFFER_EVICTED", "CURSOR_OUT_OF_RANGE", "BRIDGE_COMMAND_INVALID", "TOOL_NOT_FOUND", "TOOL_INVALID_INPUT", "TOOL_EXECUTION_ERROR", "PLUGIN_LOAD_FAILED", "PLUGIN_NAME_COLLISION", "PLUGIN_RUNTIME_REVISION_MISMATCH", "PLUGIN_RUNTIME_PRIVATE_FILE", "PLUGIN_RUNTIME_UNSAFE_IMPORT", "PLUGIN_RUNTIME_TRANSFORM_FAILED", "RUNTIME_PLUGIN_NOT_FOUND", "RUNTIME_PLUGIN_ROUTE_NOT_FOUND", "RUNTIME_PLUGIN_HANDLER_FAILED", "RUNTIME_PLUGIN_LOAD_FAILED", "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED", "PROVISIONING_LAYOUT_FAILED", "PROVISIONING_SKILLS_FAILED", "PROVISIONING_TEMPLATES_FAILED", "PROVISIONING_NODE_PREFLIGHT_FAILED", "PROVISIONING_NPM_INSTALL_FAILED", "PROVISIONING_UV_BOOTSTRAP_FAILED", "PROVISIONING_UV_INSTALL_FAILED", "PROVISIONING_ARTIFACT_FAILED", "ERR_NOT_IMPLEMENTED_UNTIL_T1", "ERR_NO_FILESYSTEM_FOR_ATTACHMENTS", "INTERNAL_ERROR"]>;
123
- prefix: z.ZodString;
124
- msg: z.ZodString;
125
- }, z.ZodUnknown, "strip">, z.objectInputType<{
126
- level: z.ZodEnum<["warn", "error"]>;
127
- code: z.ZodEnum<["UNAUTHORIZED", "MISSING_API_KEY", "INVALID_API_KEY", "OIDC_REFRESH_FAILED", "VERCEL_AUTH_FAILED", "CONFIG_INVALID", "PATH_ESCAPE", "PATH_ABSOLUTE", "PATH_NULL_BYTE", "PATH_SYMLINK_ESCAPE", "PATH_NOT_FOUND", "PATH_NOT_WRITABLE", "WORKSPACE_UNINITIALIZED", "WORKSPACE_NOT_READY", "AGENT_RUNTIME_NOT_READY", "AGENT_CONTROL_RECEIPT_INVALID", "RUNTIME_PROVISIONING_FAILED", "RUNTIME_PROVISIONING_LOCKED", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "REMOTE_WORKER_TIMEOUT", "REMOTE_WORKER_STREAM_CLOSED", "CIRCUIT_OPEN", "ABORTED", "PAYMENT_REQUIRED", "MODEL_BUDGET_EXCEEDED", "METERING_UNSUPPORTED_COMMAND", "SESSION_NOT_FOUND", "SESSION_LOCKED", "STREAM_BUFFER_EVICTED", "CURSOR_OUT_OF_RANGE", "BRIDGE_COMMAND_INVALID", "TOOL_NOT_FOUND", "TOOL_INVALID_INPUT", "TOOL_EXECUTION_ERROR", "PLUGIN_LOAD_FAILED", "PLUGIN_NAME_COLLISION", "PLUGIN_RUNTIME_REVISION_MISMATCH", "PLUGIN_RUNTIME_PRIVATE_FILE", "PLUGIN_RUNTIME_UNSAFE_IMPORT", "PLUGIN_RUNTIME_TRANSFORM_FAILED", "RUNTIME_PLUGIN_NOT_FOUND", "RUNTIME_PLUGIN_ROUTE_NOT_FOUND", "RUNTIME_PLUGIN_HANDLER_FAILED", "RUNTIME_PLUGIN_LOAD_FAILED", "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED", "PROVISIONING_LAYOUT_FAILED", "PROVISIONING_SKILLS_FAILED", "PROVISIONING_TEMPLATES_FAILED", "PROVISIONING_NODE_PREFLIGHT_FAILED", "PROVISIONING_NPM_INSTALL_FAILED", "PROVISIONING_UV_BOOTSTRAP_FAILED", "PROVISIONING_UV_INSTALL_FAILED", "PROVISIONING_ARTIFACT_FAILED", "ERR_NOT_IMPLEMENTED_UNTIL_T1", "ERR_NO_FILESYSTEM_FOR_ATTACHMENTS", "INTERNAL_ERROR"]>;
128
- prefix: z.ZodString;
129
- msg: z.ZodString;
130
- }, z.ZodUnknown, "strip">>;
131
- type ErrorLogFields = z.infer<typeof ErrorLogFieldsSchema>;
132
-
133
- interface ChatError {
134
- code: ErrorCode;
135
- message: string;
136
- retryable?: boolean;
137
- details?: unknown;
138
- }
139
-
140
- type PiChatStatus = 'idle' | 'hydrating' | 'submitted' | 'streaming' | 'aborting' | 'error';
141
- interface QueuedUserMessage {
142
- id: string;
143
- kind: 'followup';
144
- clientNonce?: string;
145
- clientSeq?: number;
146
- displayText: string;
147
- createdAt?: string;
148
- }
149
- interface PiChatSnapshot {
150
- protocolVersion: 1;
151
- sessionId: string;
152
- seq: number;
153
- status: PiChatStatus;
154
- activeTurnId?: string;
155
- messages: BoringChatMessage[];
156
- queue: {
157
- followUps: QueuedUserMessage[];
158
- };
159
- followUpMode: 'one-at-a-time';
160
- error?: ChatError;
161
- }
162
-
163
- type PiChatEvent = {
164
- type: 'agent-start';
165
- seq: number;
166
- turnId: string;
167
- } | {
168
- type: 'agent-end';
169
- seq: number;
170
- turnId: string;
171
- status: 'ok' | 'aborted' | 'error';
172
- willRetry?: boolean;
173
- } | {
174
- type: 'message-start';
175
- seq: number;
176
- messageId: string;
177
- role: 'user' | 'assistant';
178
- clientNonce?: string;
179
- clientSeq?: number;
180
- createdAt?: string;
181
- text?: string;
182
- files?: BoringChatPart[];
183
- } | {
184
- type: 'message-delta';
185
- seq: number;
186
- messageId: string;
187
- partId: string;
188
- kind: 'text' | 'reasoning';
189
- delta: string;
190
- } | {
191
- type: 'message-part-end';
192
- seq: number;
193
- messageId: string;
194
- partId: string;
195
- kind: 'text' | 'reasoning';
196
- text: string;
197
- } | {
198
- type: 'message-end';
199
- seq: number;
200
- messageId: string;
201
- final: BoringChatMessage;
202
- } | {
203
- type: 'tool-call';
204
- seq: number;
205
- messageId: string;
206
- toolCallId: string;
207
- toolName: string;
208
- input: unknown;
209
- ui?: ToolUiMetadata;
210
- } | {
211
- type: 'tool-result';
212
- seq: number;
213
- messageId: string;
214
- toolCallId: string;
215
- output: unknown;
216
- isError?: boolean;
217
- errorText?: string;
218
- ui?: ToolUiMetadata;
219
- } | {
220
- type: 'queue-updated';
221
- seq: number;
222
- queue: {
223
- followUps: QueuedUserMessage[];
224
- };
225
- } | {
226
- type: 'followup-consumed';
227
- seq: number;
228
- clientNonce?: string;
229
- clientSeq?: number;
230
- messageId: string;
231
- } | {
232
- type: 'file-changed';
233
- seq: number;
234
- path: string;
235
- changeType: string;
236
- } | {
237
- type: 'ui-command';
238
- seq: number;
239
- command: unknown;
240
- displayOnly: true;
241
- } | {
242
- type: 'usage';
243
- seq: number;
244
- usage: unknown;
245
- } | {
246
- type: 'auto-retry-start';
247
- seq: number;
248
- attempt: number;
249
- maxAttempts: number;
250
- delayMs: number;
251
- errorMessage: string;
252
- } | {
253
- type: 'auto-retry-end';
254
- seq: number;
255
- success: boolean;
256
- attempt: number;
257
- finalError?: string;
258
- } | {
259
- type: 'error';
260
- seq: number;
261
- turnId?: string;
262
- retryable?: boolean;
263
- error: ChatError;
264
- };
265
- interface PiChatHeartbeatFrame {
266
- type: 'heartbeat';
267
- now: string;
268
- }
269
- type PiChatStreamFrame = PiChatEvent | PiChatHeartbeatFrame;
270
-
271
- interface SessionStore {
272
- list(ctx: SessionCtx, options?: SessionListOptions): Promise<SessionSummary[]>;
273
- create(ctx: SessionCtx, init?: {
274
- title?: string;
275
- }): Promise<SessionSummary>;
276
- load(ctx: SessionCtx, sessionId: string): Promise<SessionDetail>;
277
- delete(ctx: SessionCtx, sessionId: string): Promise<void>;
278
- }
279
- interface SessionCtx {
280
- workspaceId?: string;
281
- userId?: string;
282
- }
283
- interface SessionListOptions {
284
- limit?: number;
285
- offset?: number;
286
- includeId?: string;
287
- }
288
- interface SessionSummary {
289
- id: string;
290
- title: string;
291
- createdAt: string;
292
- updatedAt: string;
293
- turnCount: number;
294
- }
295
- type SessionDetail = SessionSummary;
296
-
297
- export { type ApiErrorPayload as A, type BoringChatPart as B, type ChatError as C, ERROR_CODES as E, type PiChatEvent as P, type QueuedUserMessage as Q, type SessionCtx as S, type ToolUiMetadata as T, type SessionStore as a, ApiErrorPayloadSchema as b, type ApiErrorResponse as c, ApiErrorResponseSchema as d, type BoringChatMessage as e, ErrorCode as f, type ErrorLogFields as g, ErrorLogFieldsSchema as h, type PiChatHeartbeatFrame as i, type PiChatSnapshot as j, type PiChatStatus as k, type PiChatStreamFrame as l, type SessionDetail as m, type SessionSummary as n, extractToolUiMetadata as o, isToolUiMetadata as p };