@hachej/boring-agent 0.1.0

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.
@@ -0,0 +1,225 @@
1
+ export { A as AgentHarness, R as RunContext, S as SendMessageInput, a as SessionCtx, b as SessionDetail, c as SessionStore, d as SessionSummary } from '../harness-CMiJ4kok.js';
2
+ import { W as Workspace, S as Sandbox, F as FileSearch, A as AgentTool } from '../sandbox-handle-store-OPdvRwie.js';
3
+ export { E as Entry, a as ExecOptions, b as ExecResult, I as IsolatedCodeInput, c as IsolatedCodeOutput, J as JSONSchema, d as SandboxCapability, e as SandboxHandleRecord, f as SandboxHandleStore, g as Stat, T as ToolExecContext, h as ToolResult } from '../sandbox-handle-store-OPdvRwie.js';
4
+ export { UIMessage, UIMessageChunk } from 'ai';
5
+ import { z } from 'zod';
6
+
7
+ interface CatalogDeps {
8
+ workspace: Workspace;
9
+ sandbox: Sandbox;
10
+ fileSearch?: FileSearch;
11
+ }
12
+ type ToolCatalog = (deps: CatalogDeps) => AgentTool[];
13
+
14
+ declare const RuntimeModeSchema: z.ZodEnum<["direct", "local", "vercel-sandbox"]>;
15
+ type RuntimeModeId = z.infer<typeof RuntimeModeSchema>;
16
+ declare const ConfigSchema: z.ZodObject<{
17
+ workspaceRoot: z.ZodString;
18
+ workspaceId: z.ZodString;
19
+ port: z.ZodNumber;
20
+ mode: z.ZodEnum<["direct", "local", "vercel-sandbox"]>;
21
+ model: z.ZodOptional<z.ZodString>;
22
+ noOpen: z.ZodBoolean;
23
+ noGitignore: z.ZodBoolean;
24
+ dev: z.ZodBoolean;
25
+ verbose: z.ZodBoolean;
26
+ }, "strip", z.ZodTypeAny, {
27
+ workspaceRoot: string;
28
+ workspaceId: string;
29
+ port: number;
30
+ mode: "direct" | "local" | "vercel-sandbox";
31
+ noOpen: boolean;
32
+ noGitignore: boolean;
33
+ dev: boolean;
34
+ verbose: boolean;
35
+ model?: string | undefined;
36
+ }, {
37
+ workspaceRoot: string;
38
+ workspaceId: string;
39
+ port: number;
40
+ mode: "direct" | "local" | "vercel-sandbox";
41
+ noOpen: boolean;
42
+ noGitignore: boolean;
43
+ dev: boolean;
44
+ verbose: boolean;
45
+ model?: string | undefined;
46
+ }>;
47
+ type AgentConfig = z.infer<typeof ConfigSchema>;
48
+ declare const EnvSchema: z.ZodObject<{
49
+ ANTHROPIC_API_KEY: z.ZodString;
50
+ BORING_AGENT_MODE: z.ZodOptional<z.ZodEnum<["direct", "local", "vercel-sandbox"]>>;
51
+ BORING_AGENT_WORKSPACE_ROOT: z.ZodOptional<z.ZodString>;
52
+ BORING_AGENT_PORT: z.ZodOptional<z.ZodNumber>;
53
+ BORING_AGENT_TEMPLATE_PATH: z.ZodOptional<z.ZodString>;
54
+ BORING_AGENT_VERBOSE: z.ZodOptional<z.ZodEnum<["0", "1"]>>;
55
+ BORING_AGENT_MODEL: z.ZodOptional<z.ZodString>;
56
+ BORING_AGENT_DEFAULT_MODEL: z.ZodOptional<z.ZodString>;
57
+ BORING_AGENT_DEFAULT_MODEL_PROVIDER: z.ZodOptional<z.ZodString>;
58
+ BORING_AGENT_DEFAULT_MODEL_ID: z.ZodOptional<z.ZodString>;
59
+ BORING_AGENT_INFOMANIAK_PROVIDER: z.ZodOptional<z.ZodString>;
60
+ BORING_AGENT_INFOMANIAK_PRODUCT_ID: z.ZodOptional<z.ZodString>;
61
+ BORING_AGENT_INFOMANIAK_BASE_URL: z.ZodOptional<z.ZodString>;
62
+ BORING_AGENT_INFOMANIAK_MODEL: z.ZodOptional<z.ZodString>;
63
+ BORING_AGENT_INFOMANIAK_MODEL_NAME: z.ZodOptional<z.ZodString>;
64
+ BORING_AGENT_INFOMANIAK_API_KEY_ENV: z.ZodOptional<z.ZodString>;
65
+ BORING_AGENT_INFOMANIAK_API_KEY: z.ZodOptional<z.ZodString>;
66
+ BORING_AGENT_CUSTOM_MODEL_PROVIDER: z.ZodOptional<z.ZodString>;
67
+ BORING_AGENT_CUSTOM_MODEL_ID: z.ZodOptional<z.ZodString>;
68
+ BORING_AGENT_CUSTOM_MODEL_NAME: z.ZodOptional<z.ZodString>;
69
+ BORING_AGENT_CUSTOM_MODEL_BASE_URL: z.ZodOptional<z.ZodString>;
70
+ BORING_AGENT_CUSTOM_MODEL_API_KEY_ENV: z.ZodOptional<z.ZodString>;
71
+ BORING_AGENT_CUSTOM_MODEL_API_KEY: z.ZodOptional<z.ZodString>;
72
+ BORING_AGENT_CONFIG: z.ZodOptional<z.ZodString>;
73
+ BORING_AGENT_DEV: z.ZodOptional<z.ZodEnum<["0", "1"]>>;
74
+ BORING_AGENT_NO_OPEN: z.ZodOptional<z.ZodEnum<["0", "1"]>>;
75
+ BORING_AGENT_NO_GITIGNORE: z.ZodOptional<z.ZodEnum<["0", "1"]>>;
76
+ BORING_AGENT_SNAPSHOT_KEEP: z.ZodOptional<z.ZodNumber>;
77
+ BORING_AGENT_PYTHON_PACKAGES: z.ZodOptional<z.ZodString>;
78
+ VERCEL_OIDC_TOKEN: z.ZodOptional<z.ZodString>;
79
+ VERCEL_ACCESS_TOKEN: z.ZodOptional<z.ZodString>;
80
+ VERCEL_TOKEN: z.ZodOptional<z.ZodString>;
81
+ VERCEL_TEAM_ID: z.ZodOptional<z.ZodString>;
82
+ VERCEL_PROJECT_ID: z.ZodOptional<z.ZodString>;
83
+ BORING_AGENT_VERCEL_SANDBOX_TIMEOUT_MS: z.ZodOptional<z.ZodNumber>;
84
+ }, "strip", z.ZodTypeAny, {
85
+ ANTHROPIC_API_KEY: string;
86
+ BORING_AGENT_MODE?: "direct" | "local" | "vercel-sandbox" | undefined;
87
+ BORING_AGENT_WORKSPACE_ROOT?: string | undefined;
88
+ BORING_AGENT_PORT?: number | undefined;
89
+ BORING_AGENT_TEMPLATE_PATH?: string | undefined;
90
+ BORING_AGENT_VERBOSE?: "0" | "1" | undefined;
91
+ BORING_AGENT_MODEL?: string | undefined;
92
+ BORING_AGENT_DEFAULT_MODEL?: string | undefined;
93
+ BORING_AGENT_DEFAULT_MODEL_PROVIDER?: string | undefined;
94
+ BORING_AGENT_DEFAULT_MODEL_ID?: string | undefined;
95
+ BORING_AGENT_INFOMANIAK_PROVIDER?: string | undefined;
96
+ BORING_AGENT_INFOMANIAK_PRODUCT_ID?: string | undefined;
97
+ BORING_AGENT_INFOMANIAK_BASE_URL?: string | undefined;
98
+ BORING_AGENT_INFOMANIAK_MODEL?: string | undefined;
99
+ BORING_AGENT_INFOMANIAK_MODEL_NAME?: string | undefined;
100
+ BORING_AGENT_INFOMANIAK_API_KEY_ENV?: string | undefined;
101
+ BORING_AGENT_INFOMANIAK_API_KEY?: string | undefined;
102
+ BORING_AGENT_CUSTOM_MODEL_PROVIDER?: string | undefined;
103
+ BORING_AGENT_CUSTOM_MODEL_ID?: string | undefined;
104
+ BORING_AGENT_CUSTOM_MODEL_NAME?: string | undefined;
105
+ BORING_AGENT_CUSTOM_MODEL_BASE_URL?: string | undefined;
106
+ BORING_AGENT_CUSTOM_MODEL_API_KEY_ENV?: string | undefined;
107
+ BORING_AGENT_CUSTOM_MODEL_API_KEY?: string | undefined;
108
+ BORING_AGENT_CONFIG?: string | undefined;
109
+ BORING_AGENT_DEV?: "0" | "1" | undefined;
110
+ BORING_AGENT_NO_OPEN?: "0" | "1" | undefined;
111
+ BORING_AGENT_NO_GITIGNORE?: "0" | "1" | undefined;
112
+ BORING_AGENT_SNAPSHOT_KEEP?: number | undefined;
113
+ BORING_AGENT_PYTHON_PACKAGES?: string | undefined;
114
+ VERCEL_OIDC_TOKEN?: string | undefined;
115
+ VERCEL_ACCESS_TOKEN?: string | undefined;
116
+ VERCEL_TOKEN?: string | undefined;
117
+ VERCEL_TEAM_ID?: string | undefined;
118
+ VERCEL_PROJECT_ID?: string | undefined;
119
+ BORING_AGENT_VERCEL_SANDBOX_TIMEOUT_MS?: number | undefined;
120
+ }, {
121
+ ANTHROPIC_API_KEY: string;
122
+ BORING_AGENT_MODE?: "direct" | "local" | "vercel-sandbox" | undefined;
123
+ BORING_AGENT_WORKSPACE_ROOT?: string | undefined;
124
+ BORING_AGENT_PORT?: number | undefined;
125
+ BORING_AGENT_TEMPLATE_PATH?: string | undefined;
126
+ BORING_AGENT_VERBOSE?: "0" | "1" | undefined;
127
+ BORING_AGENT_MODEL?: string | undefined;
128
+ BORING_AGENT_DEFAULT_MODEL?: string | undefined;
129
+ BORING_AGENT_DEFAULT_MODEL_PROVIDER?: string | undefined;
130
+ BORING_AGENT_DEFAULT_MODEL_ID?: string | undefined;
131
+ BORING_AGENT_INFOMANIAK_PROVIDER?: string | undefined;
132
+ BORING_AGENT_INFOMANIAK_PRODUCT_ID?: string | undefined;
133
+ BORING_AGENT_INFOMANIAK_BASE_URL?: string | undefined;
134
+ BORING_AGENT_INFOMANIAK_MODEL?: string | undefined;
135
+ BORING_AGENT_INFOMANIAK_MODEL_NAME?: string | undefined;
136
+ BORING_AGENT_INFOMANIAK_API_KEY_ENV?: string | undefined;
137
+ BORING_AGENT_INFOMANIAK_API_KEY?: string | undefined;
138
+ BORING_AGENT_CUSTOM_MODEL_PROVIDER?: string | undefined;
139
+ BORING_AGENT_CUSTOM_MODEL_ID?: string | undefined;
140
+ BORING_AGENT_CUSTOM_MODEL_NAME?: string | undefined;
141
+ BORING_AGENT_CUSTOM_MODEL_BASE_URL?: string | undefined;
142
+ BORING_AGENT_CUSTOM_MODEL_API_KEY_ENV?: string | undefined;
143
+ BORING_AGENT_CUSTOM_MODEL_API_KEY?: string | undefined;
144
+ BORING_AGENT_CONFIG?: string | undefined;
145
+ BORING_AGENT_DEV?: "0" | "1" | undefined;
146
+ BORING_AGENT_NO_OPEN?: "0" | "1" | undefined;
147
+ BORING_AGENT_NO_GITIGNORE?: "0" | "1" | undefined;
148
+ BORING_AGENT_SNAPSHOT_KEEP?: number | undefined;
149
+ BORING_AGENT_PYTHON_PACKAGES?: string | undefined;
150
+ VERCEL_OIDC_TOKEN?: string | undefined;
151
+ VERCEL_ACCESS_TOKEN?: string | undefined;
152
+ VERCEL_TOKEN?: string | undefined;
153
+ VERCEL_TEAM_ID?: string | undefined;
154
+ VERCEL_PROJECT_ID?: string | undefined;
155
+ BORING_AGENT_VERCEL_SANDBOX_TIMEOUT_MS?: number | undefined;
156
+ }>;
157
+ type AgentEnv = z.infer<typeof EnvSchema>;
158
+ declare function validateConfig(config: unknown): AgentConfig;
159
+
160
+ declare const ErrorCode: z.ZodEnum<["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", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "CIRCUIT_OPEN", "ABORTED", "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", "INTERNAL_ERROR"]>;
161
+ type ErrorCode = z.infer<typeof ErrorCode>;
162
+ declare const ERROR_CODES: ["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", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "CIRCUIT_OPEN", "ABORTED", "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", "INTERNAL_ERROR"];
163
+ declare const ApiErrorPayloadSchema: z.ZodObject<{
164
+ code: z.ZodEnum<["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", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "CIRCUIT_OPEN", "ABORTED", "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", "INTERNAL_ERROR"]>;
165
+ message: z.ZodString;
166
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
167
+ }, "strip", z.ZodTypeAny, {
168
+ code: "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" | "BWRAP_UNAVAILABLE" | "BWRAP_TIMEOUT" | "OUTPUT_TRUNCATED" | "SANDBOX_NOT_READY" | "SANDBOX_EXPIRED" | "VERCEL_API_ERROR" | "CIRCUIT_OPEN" | "ABORTED" | "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" | "INTERNAL_ERROR";
169
+ message: string;
170
+ details?: Record<string, unknown> | undefined;
171
+ }, {
172
+ code: "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" | "BWRAP_UNAVAILABLE" | "BWRAP_TIMEOUT" | "OUTPUT_TRUNCATED" | "SANDBOX_NOT_READY" | "SANDBOX_EXPIRED" | "VERCEL_API_ERROR" | "CIRCUIT_OPEN" | "ABORTED" | "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" | "INTERNAL_ERROR";
173
+ message: string;
174
+ details?: Record<string, unknown> | undefined;
175
+ }>;
176
+ type ApiErrorPayload = z.infer<typeof ApiErrorPayloadSchema>;
177
+ declare const ApiErrorResponseSchema: z.ZodObject<{
178
+ error: z.ZodObject<{
179
+ code: z.ZodEnum<["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", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "CIRCUIT_OPEN", "ABORTED", "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", "INTERNAL_ERROR"]>;
180
+ message: z.ZodString;
181
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
182
+ }, "strip", z.ZodTypeAny, {
183
+ code: "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" | "BWRAP_UNAVAILABLE" | "BWRAP_TIMEOUT" | "OUTPUT_TRUNCATED" | "SANDBOX_NOT_READY" | "SANDBOX_EXPIRED" | "VERCEL_API_ERROR" | "CIRCUIT_OPEN" | "ABORTED" | "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" | "INTERNAL_ERROR";
184
+ message: string;
185
+ details?: Record<string, unknown> | undefined;
186
+ }, {
187
+ code: "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" | "BWRAP_UNAVAILABLE" | "BWRAP_TIMEOUT" | "OUTPUT_TRUNCATED" | "SANDBOX_NOT_READY" | "SANDBOX_EXPIRED" | "VERCEL_API_ERROR" | "CIRCUIT_OPEN" | "ABORTED" | "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" | "INTERNAL_ERROR";
188
+ message: string;
189
+ details?: Record<string, unknown> | undefined;
190
+ }>;
191
+ }, "strip", z.ZodTypeAny, {
192
+ error: {
193
+ code: "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" | "BWRAP_UNAVAILABLE" | "BWRAP_TIMEOUT" | "OUTPUT_TRUNCATED" | "SANDBOX_NOT_READY" | "SANDBOX_EXPIRED" | "VERCEL_API_ERROR" | "CIRCUIT_OPEN" | "ABORTED" | "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" | "INTERNAL_ERROR";
194
+ message: string;
195
+ details?: Record<string, unknown> | undefined;
196
+ };
197
+ }, {
198
+ error: {
199
+ code: "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" | "BWRAP_UNAVAILABLE" | "BWRAP_TIMEOUT" | "OUTPUT_TRUNCATED" | "SANDBOX_NOT_READY" | "SANDBOX_EXPIRED" | "VERCEL_API_ERROR" | "CIRCUIT_OPEN" | "ABORTED" | "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" | "INTERNAL_ERROR";
200
+ message: string;
201
+ details?: Record<string, unknown> | undefined;
202
+ };
203
+ }>;
204
+ type ApiErrorResponse = z.infer<typeof ApiErrorResponseSchema>;
205
+ declare const ErrorLogFieldsSchema: z.ZodObject<{
206
+ level: z.ZodEnum<["warn", "error"]>;
207
+ code: z.ZodEnum<["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", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "CIRCUIT_OPEN", "ABORTED", "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", "INTERNAL_ERROR"]>;
208
+ prefix: z.ZodString;
209
+ msg: z.ZodString;
210
+ }, "strip", z.ZodUnknown, z.objectOutputType<{
211
+ level: z.ZodEnum<["warn", "error"]>;
212
+ code: z.ZodEnum<["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", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "CIRCUIT_OPEN", "ABORTED", "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", "INTERNAL_ERROR"]>;
213
+ prefix: z.ZodString;
214
+ msg: z.ZodString;
215
+ }, z.ZodUnknown, "strip">, z.objectInputType<{
216
+ level: z.ZodEnum<["warn", "error"]>;
217
+ code: z.ZodEnum<["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", "BWRAP_UNAVAILABLE", "BWRAP_TIMEOUT", "OUTPUT_TRUNCATED", "SANDBOX_NOT_READY", "SANDBOX_EXPIRED", "VERCEL_API_ERROR", "CIRCUIT_OPEN", "ABORTED", "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", "INTERNAL_ERROR"]>;
218
+ prefix: z.ZodString;
219
+ msg: z.ZodString;
220
+ }, z.ZodUnknown, "strip">>;
221
+ type ErrorLogFields = z.infer<typeof ErrorLogFieldsSchema>;
222
+
223
+ declare function validateTool(tool: unknown): AgentTool | null;
224
+
225
+ export { type AgentConfig, type AgentEnv, AgentTool, type ApiErrorPayload, ApiErrorPayloadSchema, type ApiErrorResponse, ApiErrorResponseSchema, type CatalogDeps, ConfigSchema, ERROR_CODES, EnvSchema, ErrorCode, type ErrorLogFields, ErrorLogFieldsSchema, FileSearch, type RuntimeModeId, RuntimeModeSchema, Sandbox, type ToolCatalog, Workspace, validateConfig, validateTool };
@@ -0,0 +1,75 @@
1
+ import {
2
+ ApiErrorPayloadSchema,
3
+ ApiErrorResponseSchema,
4
+ ERROR_CODES,
5
+ ErrorCode,
6
+ ErrorLogFieldsSchema,
7
+ validateTool
8
+ } from "../chunk-W73RUHY3.js";
9
+
10
+ // src/shared/config-schema.ts
11
+ import { z } from "zod";
12
+ var RuntimeModeSchema = z.enum(["direct", "local", "vercel-sandbox"]);
13
+ var ConfigSchema = z.object({
14
+ workspaceRoot: z.string(),
15
+ workspaceId: z.string(),
16
+ port: z.number().int().positive(),
17
+ mode: RuntimeModeSchema,
18
+ model: z.string().optional(),
19
+ noOpen: z.boolean(),
20
+ noGitignore: z.boolean(),
21
+ dev: z.boolean(),
22
+ verbose: z.boolean()
23
+ });
24
+ var EnvSchema = z.object({
25
+ ANTHROPIC_API_KEY: z.string().min(1, "ANTHROPIC_API_KEY is required"),
26
+ BORING_AGENT_MODE: RuntimeModeSchema.optional(),
27
+ BORING_AGENT_WORKSPACE_ROOT: z.string().optional(),
28
+ BORING_AGENT_PORT: z.coerce.number().int().positive().optional(),
29
+ BORING_AGENT_TEMPLATE_PATH: z.string().optional(),
30
+ BORING_AGENT_VERBOSE: z.enum(["0", "1"]).optional(),
31
+ BORING_AGENT_MODEL: z.string().optional(),
32
+ BORING_AGENT_DEFAULT_MODEL: z.string().optional(),
33
+ BORING_AGENT_DEFAULT_MODEL_PROVIDER: z.string().optional(),
34
+ BORING_AGENT_DEFAULT_MODEL_ID: z.string().optional(),
35
+ BORING_AGENT_INFOMANIAK_PROVIDER: z.string().optional(),
36
+ BORING_AGENT_INFOMANIAK_PRODUCT_ID: z.string().optional(),
37
+ BORING_AGENT_INFOMANIAK_BASE_URL: z.string().url().optional(),
38
+ BORING_AGENT_INFOMANIAK_MODEL: z.string().optional(),
39
+ BORING_AGENT_INFOMANIAK_MODEL_NAME: z.string().optional(),
40
+ BORING_AGENT_INFOMANIAK_API_KEY_ENV: z.string().optional(),
41
+ BORING_AGENT_INFOMANIAK_API_KEY: z.string().optional(),
42
+ BORING_AGENT_CUSTOM_MODEL_PROVIDER: z.string().optional(),
43
+ BORING_AGENT_CUSTOM_MODEL_ID: z.string().optional(),
44
+ BORING_AGENT_CUSTOM_MODEL_NAME: z.string().optional(),
45
+ BORING_AGENT_CUSTOM_MODEL_BASE_URL: z.string().url().optional(),
46
+ BORING_AGENT_CUSTOM_MODEL_API_KEY_ENV: z.string().optional(),
47
+ BORING_AGENT_CUSTOM_MODEL_API_KEY: z.string().optional(),
48
+ BORING_AGENT_CONFIG: z.string().optional(),
49
+ BORING_AGENT_DEV: z.enum(["0", "1"]).optional(),
50
+ BORING_AGENT_NO_OPEN: z.enum(["0", "1"]).optional(),
51
+ BORING_AGENT_NO_GITIGNORE: z.enum(["0", "1"]).optional(),
52
+ BORING_AGENT_SNAPSHOT_KEEP: z.coerce.number().int().nonnegative().optional(),
53
+ BORING_AGENT_PYTHON_PACKAGES: z.string().optional(),
54
+ VERCEL_OIDC_TOKEN: z.string().optional(),
55
+ VERCEL_ACCESS_TOKEN: z.string().optional(),
56
+ VERCEL_TOKEN: z.string().optional(),
57
+ VERCEL_TEAM_ID: z.string().optional(),
58
+ VERCEL_PROJECT_ID: z.string().optional(),
59
+ BORING_AGENT_VERCEL_SANDBOX_TIMEOUT_MS: z.coerce.number().int().positive().optional()
60
+ });
61
+ function validateConfig(config) {
62
+ return ConfigSchema.parse(config);
63
+ }
64
+ export {
65
+ ApiErrorPayloadSchema,
66
+ ApiErrorResponseSchema,
67
+ ConfigSchema,
68
+ ERROR_CODES,
69
+ EnvSchema,
70
+ ErrorCode,
71
+ ErrorLogFieldsSchema,
72
+ RuntimeModeSchema,
73
+ validateConfig,
74
+ validateTool
75
+ };
package/package.json ADDED
@@ -0,0 +1,132 @@
1
+ {
2
+ "name": "@hachej/boring-agent",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "license": "MIT",
6
+ "description": "Pane-embeddable coding agent. Ships direct/local/vercel-sandbox execution modes behind one interface.",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/hachej/boring-ui.git"
10
+ },
11
+ "homepage": "https://github.com/hachej/boring-ui",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/front/index.d.ts",
15
+ "import": "./dist/front/index.js"
16
+ },
17
+ "./shared": {
18
+ "types": "./dist/shared/index.d.ts",
19
+ "import": "./dist/shared/index.js"
20
+ },
21
+ "./server": {
22
+ "types": "./dist/server/index.d.ts",
23
+ "import": "./dist/server/index.js",
24
+ "default": "./dist/server/index.js"
25
+ },
26
+ "./front": {
27
+ "types": "./dist/front/index.d.ts",
28
+ "import": "./dist/front/index.js"
29
+ },
30
+ "./front/styles.css": "./dist/front/styles.css",
31
+ "./eval": {
32
+ "types": "./dist/eval/index.d.ts",
33
+ "import": "./dist/eval/index.js"
34
+ }
35
+ },
36
+ "sideEffects": [
37
+ "**/*.css"
38
+ ],
39
+ "files": [
40
+ "dist"
41
+ ],
42
+ "dependencies": {
43
+ "@ai-sdk/react": "^3.0.170",
44
+ "@mariozechner/pi-coding-agent": "0.67.68",
45
+ "@radix-ui/react-collapsible": "^1.1.12",
46
+ "@radix-ui/react-dialog": "^1.1.15",
47
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
48
+ "@radix-ui/react-hover-card": "^1.1.15",
49
+ "@radix-ui/react-select": "^2.2.6",
50
+ "@radix-ui/react-separator": "^1.1.8",
51
+ "@radix-ui/react-slot": "^1.2.4",
52
+ "@radix-ui/react-tooltip": "^1.2.8",
53
+ "@radix-ui/react-use-controllable-state": "^1.2.2",
54
+ "@streamdown/cjk": "^1.0.3",
55
+ "@streamdown/code": "^1.1.1",
56
+ "@streamdown/math": "^1.0.2",
57
+ "@streamdown/mermaid": "^1.0.2",
58
+ "@tanstack/react-query": "^5.0.0",
59
+ "@vercel/blob": "^2.3.3",
60
+ "@vercel/sandbox": "2.0.0-beta.14",
61
+ "ai": "^6.0.168",
62
+ "chokidar": "^4.0.3",
63
+ "class-variance-authority": "^0.7.1",
64
+ "clsx": "^2.1.1",
65
+ "cmdk": "^1.1.1",
66
+ "diff": "^9.0.0",
67
+ "fastify": "^5.3.3",
68
+ "lucide-react": "^1.8.0",
69
+ "motion": "^12.38.0",
70
+ "nanoid": "^5.1.9",
71
+ "shiki": "^4.0.2",
72
+ "streamdown": "^2.5.0",
73
+ "tailwind-merge": "^3.5.0",
74
+ "use-stick-to-bottom": "^1.1.3",
75
+ "yaml": "^2.8.3",
76
+ "zod": "^3.25.76",
77
+ "@hachej/boring-ui-kit": "0.1.0"
78
+ },
79
+ "devDependencies": {
80
+ "@opentelemetry/api": "^1.9.1",
81
+ "@tailwindcss/postcss": "^4.2.4",
82
+ "@types/node": "^22.15.3",
83
+ "@types/react": "^19.1.2",
84
+ "@types/react-dom": "^19.1.3",
85
+ "@vitejs/plugin-react": "^4.7.0",
86
+ "ajv": "^8.18.0",
87
+ "postcss": "^8.5.13",
88
+ "react": "^19.1.0",
89
+ "react-dom": "^19.1.0",
90
+ "tsup": "^8.4.0",
91
+ "tsx": "^4.19.4",
92
+ "typescript": "^5.8.3",
93
+ "vite": "^6.3.3",
94
+ "vitest": "^3.1.3"
95
+ },
96
+ "peerDependencies": {
97
+ "react": "^18.0.0 || ^19.0.0",
98
+ "react-dom": "^18.0.0 || ^19.0.0",
99
+ "tailwindcss": ">=3.4.0 || >=4.0.0"
100
+ },
101
+ "peerDependenciesMeta": {
102
+ "react": {
103
+ "optional": true
104
+ },
105
+ "react-dom": {
106
+ "optional": true
107
+ },
108
+ "tailwindcss": {
109
+ "optional": true
110
+ }
111
+ },
112
+ "scripts": {
113
+ "build": "pnpm --filter @hachej/boring-ui-kit build && tsup && node ./scripts/build-front-css.mjs && pnpm run build:assert",
114
+ "build:dev": "{ [ -d '../ui/dist' ] || pnpm --filter @hachej/boring-ui-kit build; } && tsup --config tsup.dev.config.ts && node ./scripts/build-front-css.mjs",
115
+ "build:assert": "node ./scripts/assert-build-artifacts.mjs",
116
+ "dev": "tsx src/server/dev.ts",
117
+ "test": "vitest run",
118
+ "test:e2e": "playwright test -c e2e/playwright.config.ts",
119
+ "test:regression": "vitest run src/server/__tests__/system-prompt-size.regression.test.ts",
120
+ "test:watch": "vitest",
121
+ "eval": "tsx ./scripts/eval.ts",
122
+ "eval:provisioning": "tsx ./scripts/eval-provisioning-sdk.mts",
123
+ "eval:provisioning:agent": "tsx ./scripts/eval-provisioning-agent.mts",
124
+ "eval:provisioning:agent:vercel": "tsx ./scripts/eval-provisioning-agent-vercel.mts",
125
+ "check:isolation": "tsx ./scripts/check-agent-isolation.ts",
126
+ "pi-sdk:canary": "./scripts/pi-sdk-canary.sh",
127
+ "typecheck": "pnpm --filter @hachej/boring-ui-kit build && tsc --noEmit",
128
+ "lint": "pnpm run typecheck && pnpm run lint:invariants",
129
+ "lint:invariants": "bash ../../scripts/check-invariants.sh .",
130
+ "clean": "rm -rf dist .tsbuildinfo"
131
+ }
132
+ }