@hachej/boring-agent 0.1.111 → 0.2.1

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.
Files changed (156) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +262 -51
  3. package/dist/agents.d.ts +75 -0
  4. package/dist/agents.js +91 -0
  5. package/dist/approval.d.ts +71 -0
  6. package/dist/approval.js +126 -0
  7. package/dist/artifacts.d.ts +53 -0
  8. package/dist/artifacts.js +129 -0
  9. package/dist/ask-user.d.ts +40 -0
  10. package/dist/ask-user.js +134 -0
  11. package/dist/attachment.d.ts +5 -0
  12. package/dist/attachment.js +4 -0
  13. package/dist/browser-task.d.ts +32 -0
  14. package/dist/browser-task.js +119 -0
  15. package/dist/chat-transport.d.ts +80 -0
  16. package/dist/chat-transport.js +306 -0
  17. package/dist/contracts.d.ts +40 -0
  18. package/dist/contracts.js +1 -0
  19. package/dist/conversations.d.ts +136 -0
  20. package/dist/conversations.js +366 -0
  21. package/dist/definitions.d.ts +37 -0
  22. package/dist/definitions.js +99 -0
  23. package/dist/delivery-input.d.ts +35 -0
  24. package/dist/delivery-input.js +56 -0
  25. package/dist/delivery.d.ts +33 -0
  26. package/dist/delivery.js +154 -0
  27. package/dist/durable-wait.d.ts +23 -0
  28. package/dist/durable-wait.js +79 -0
  29. package/dist/file-convert.d.ts +46 -0
  30. package/dist/file-convert.js +159 -0
  31. package/dist/file-guard.d.ts +50 -0
  32. package/dist/file-guard.js +177 -0
  33. package/dist/file-types.d.ts +17 -0
  34. package/dist/file-types.js +95 -0
  35. package/dist/gateway-provider.d.ts +24 -0
  36. package/dist/gateway-provider.js +42 -0
  37. package/dist/git.d.ts +34 -0
  38. package/dist/git.js +79 -0
  39. package/dist/harness-pool.d.ts +38 -0
  40. package/dist/harness-pool.js +134 -0
  41. package/dist/index.d.ts +4 -0
  42. package/dist/index.js +1 -0
  43. package/dist/json-schema-tool.d.ts +25 -0
  44. package/dist/json-schema-tool.js +19 -0
  45. package/dist/memory/optchat-core.d.ts +118 -0
  46. package/dist/memory/optchat-core.js +317 -0
  47. package/dist/memory/optchat.d.ts +156 -0
  48. package/dist/memory/optchat.js +432 -0
  49. package/dist/mentions.d.ts +56 -0
  50. package/dist/mentions.js +140 -0
  51. package/dist/metering.d.ts +183 -0
  52. package/dist/metering.js +443 -0
  53. package/dist/model-gateway.d.ts +86 -0
  54. package/dist/model-gateway.js +241 -0
  55. package/dist/native-version.d.ts +9 -0
  56. package/dist/native-version.js +7 -0
  57. package/dist/native.d.ts +4 -0
  58. package/dist/native.js +1 -0
  59. package/dist/presentation.d.ts +17 -0
  60. package/dist/presentation.js +39 -0
  61. package/dist/projection-format.d.ts +68 -0
  62. package/dist/projection-format.js +118 -0
  63. package/dist/projection-window.d.ts +9 -0
  64. package/dist/projection-window.js +93 -0
  65. package/dist/projection.d.ts +22 -0
  66. package/dist/projection.js +153 -0
  67. package/dist/question-response.d.ts +20 -0
  68. package/dist/question-response.js +75 -0
  69. package/dist/questions.d.ts +74 -0
  70. package/dist/questions.js +199 -0
  71. package/dist/self-evolving.d.ts +55 -0
  72. package/dist/self-evolving.js +239 -0
  73. package/dist/skills.d.ts +15 -0
  74. package/dist/skills.js +51 -0
  75. package/dist/tool-evidence.d.ts +14 -0
  76. package/dist/tool-evidence.js +54 -0
  77. package/dist/validation.d.ts +38 -0
  78. package/dist/validation.js +68 -0
  79. package/dist/workspaces.d.ts +107 -0
  80. package/dist/workspaces.js +212 -0
  81. package/package.json +145 -150
  82. package/dist/DebugDrawer-JNA43SVR.js +0 -8
  83. package/dist/admin-DORVQfLn.d.ts +0 -340
  84. package/dist/chunk-2BGLZZ7T.js +0 -10
  85. package/dist/chunk-42D6KAQV.js +0 -2882
  86. package/dist/chunk-4XOW57KJ.js +0 -343
  87. package/dist/chunk-72KT6VWV.js +0 -1338
  88. package/dist/chunk-7XAOVFSN.js +0 -28
  89. package/dist/chunk-KJIEMSQP.js +0 -198
  90. package/dist/chunk-KN72XWP7.js +0 -394
  91. package/dist/chunk-N6THTH7P.js +0 -110
  92. package/dist/chunk-V3H5A3BR.js +0 -22501
  93. package/dist/chunk-YGRQ4Q5P.js +0 -20
  94. package/dist/chunk-YTUZFKB3.js +0 -78
  95. package/dist/core/index.d.ts +0 -28
  96. package/dist/core/index.js +0 -617
  97. package/dist/createHarness-DOLOHA62.js +0 -18
  98. package/dist/eval/index.d.ts +0 -247
  99. package/dist/eval/index.js +0 -541
  100. package/dist/file-search-BUgMSKZE.d.ts +0 -289
  101. package/dist/front/artifacts.d.ts +0 -34
  102. package/dist/front/artifacts.js +0 -21
  103. package/dist/front/index.d.ts +0 -1082
  104. package/dist/front/index.js +0 -12912
  105. package/dist/front/styles.css +0 -5380
  106. package/dist/harness-qHlMJhZo.d.ts +0 -276
  107. package/dist/middleware-CaAEXpi5.d.ts +0 -115
  108. package/dist/piChatEvent-DpE0lIb9.d.ts +0 -450
  109. package/dist/piChatSessionService-CBct-hmz.d.ts +0 -86
  110. package/dist/sandbox-BMhut3kh.d.ts +0 -317
  111. package/dist/server/agent-host/testing/compositionRouteProof.d.ts +0 -8
  112. package/dist/server/agent-host/testing/compositionRouteProof.js +0 -78
  113. package/dist/server/agent-host/testing/gatewayConformance.d.ts +0 -43
  114. package/dist/server/agent-host/testing/gatewayConformance.js +0 -605
  115. package/dist/server/index.d.ts +0 -2278
  116. package/dist/server/index.js +0 -274
  117. package/dist/server/pi-session-readability.d.ts +0 -12
  118. package/dist/server/pi-session-readability.js +0 -23
  119. package/dist/server/worker/index.d.ts +0 -68
  120. package/dist/server/worker/index.js +0 -377
  121. package/dist/share-entry-CxS6UJ_L.d.ts +0 -330
  122. package/dist/shared/index.d.ts +0 -2111
  123. package/dist/shared/index.js +0 -262
  124. package/dist/types-DcWoQMn8.d.ts +0 -1377
  125. package/docs/ACCESSIBILITY.md +0 -52
  126. package/docs/AGENT_GATEWAY_V0.md +0 -212
  127. package/docs/AGENT_PACKAGES.md +0 -90
  128. package/docs/API.md +0 -123
  129. package/docs/AUTHORING.md +0 -68
  130. package/docs/CSP.md +0 -41
  131. package/docs/ERROR_CODES.md +0 -229
  132. package/docs/KNOWN_LIMITATIONS.md +0 -100
  133. package/docs/MIGRATION.md +0 -50
  134. package/docs/PERFORMANCE.md +0 -68
  135. package/docs/PLUGINS.md +0 -138
  136. package/docs/README.md +0 -98
  137. package/docs/RISKS-MULTI-TAB.md +0 -46
  138. package/docs/SESSION_IDENTITY.md +0 -91
  139. package/docs/STYLING.md +0 -73
  140. package/docs/UI-SHADCN.md +0 -56
  141. package/docs/VERCEL_COSTS.md +0 -103
  142. package/docs/plans/archive/AGENT_EVAL_FRAMEWORK.md +0 -466
  143. package/docs/plans/archive/agent-package-spec.md +0 -1777
  144. package/docs/plans/archive/harness-followup-capabilities.md +0 -440
  145. package/docs/plans/archive/harness-tool-ui-capabilities.md +0 -144
  146. package/docs/plans/archive/pi-followup-history-projection.md +0 -229
  147. package/docs/plans/archive/pi-tools-migration.md +0 -1061
  148. package/docs/plans/archive/reviews/pi-followup-history-codex-review.md +0 -11
  149. package/docs/plans/archive/reviews/pi-followup-history-gpt-review.md +0 -64
  150. package/docs/plans/archive/reviews/pi-followup-history-opus-review.md +0 -43
  151. package/docs/plans/archive/reviews/pi-followup-history-xai-review.md +0 -43
  152. package/docs/plans/archive/vercel-base-snapshot-template-plan.md +0 -527
  153. package/docs/plans/archive/vercel-persistent-sandbox-adapter.md +0 -553
  154. package/docs/runtime-provisioning.md +0 -157
  155. package/docs/runtime.md +0 -296
  156. package/docs/tools.md +0 -102
@@ -1,28 +0,0 @@
1
- // src/shared/session.ts
2
- var SAFE_NATIVE_SESSION_ID = /^[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*$/;
3
- function compareSessionOrder(left, right) {
4
- return right[0] - left[0] || compareSessionIdentity(left[1], right[1]) || compareSessionIdentity(left[2], right[2]);
5
- }
6
- function compareSessionIdentity(left, right) {
7
- return left < right ? -1 : left > right ? 1 : 0;
8
- }
9
-
10
- // src/shared/telemetry.ts
11
- var noopTelemetry = {
12
- capture() {
13
- }
14
- };
15
- function safeCapture(telemetry, event) {
16
- try {
17
- void Promise.resolve(telemetry.capture(event)).catch(() => {
18
- });
19
- } catch {
20
- }
21
- }
22
-
23
- export {
24
- SAFE_NATIVE_SESSION_ID,
25
- compareSessionOrder,
26
- noopTelemetry,
27
- safeCapture
28
- };
@@ -1,198 +0,0 @@
1
- // src/shared/error-codes.ts
2
- import { z } from "zod";
3
- var ErrorCode = z.enum([
4
- // Auth / config
5
- "UNAUTHORIZED",
6
- "MISSING_API_KEY",
7
- "INVALID_API_KEY",
8
- "OIDC_REFRESH_FAILED",
9
- "VERCEL_AUTH_FAILED",
10
- "BLAXEL_AUTH_FAILED",
11
- "CONFIG_INVALID",
12
- // Workspace / path
13
- "PATH_ESCAPE",
14
- "PATH_ABSOLUTE",
15
- "PATH_NULL_BYTE",
16
- "PATH_SYMLINK_ESCAPE",
17
- "PATH_NOT_FOUND",
18
- "PATH_NOT_WRITABLE",
19
- "WORKSPACE_UNINITIALIZED",
20
- "WORKSPACE_NOT_READY",
21
- "AGENT_HOST_SCOPE_VIOLATION",
22
- // Agent runtime / provisioning
23
- "AGENT_RUNTIME_NOT_READY",
24
- "AGENT_BINDING_DISPOSED",
25
- "AGENT_CONTROL_RECEIPT_INVALID",
26
- "AGENT_FLEET_PLUGIN_UNKNOWN",
27
- "AGENT_FLEET_CONFIG_BINDING_UNKNOWN",
28
- "AGENT_FLEET_MODEL_POLICY_UNCOMPILED",
29
- "AGENT_FLEET_SEAT_PERSONA_INVALID",
30
- "AGENT_FLEET_SEAT_SKILL_DIGEST_MISMATCH",
31
- "AGENT_FLEET_SEAT_INSTRUCTIONS_PATH_UNPUBLISHABLE",
32
- "AGENT_FLEET_CONFIG_FILE_INVALID",
33
- "AGENT_DEFINITION_ID_CONFLICT",
34
- "AGENT_DEFINITION_UNSEATED",
35
- "RUNTIME_PROVISIONING_FAILED",
36
- "RUNTIME_PROVISIONING_LOCKED",
37
- // Sandbox / exec
38
- "BWRAP_UNAVAILABLE",
39
- "BWRAP_TIMEOUT",
40
- "OUTPUT_TRUNCATED",
41
- "SANDBOX_NOT_READY",
42
- "SANDBOX_EXPIRED",
43
- "VERCEL_API_ERROR",
44
- "BLAXEL_API_ERROR",
45
- "BLAXEL_CONFIG_DRIFT",
46
- "BLAXEL_RUNTIME_UNQUALIFIED",
47
- "BLAXEL_VOLUME_BUSY",
48
- "REMOTE_WORKER_CONFIG_INVALID",
49
- "REMOTE_WORKER_PROTOCOL_MISMATCH",
50
- "REMOTE_WORKER_UNAUTHENTICATED",
51
- "REMOTE_WORKER_UNAVAILABLE",
52
- "REMOTE_WORKER_UNQUALIFIED",
53
- "REMOTE_WORKER_REQUEST_INVALID",
54
- "REMOTE_WORKER_RESPONSE_INVALID",
55
- "REMOTE_WORKER_CAPABILITY_EXPIRED",
56
- "REMOTE_WORKER_CAPABILITY_REPLAY",
57
- "REMOTE_WORKER_CAPABILITY_NONCE_STORE_EXHAUSTED",
58
- "REMOTE_WORKER_AUTHORIZED_WORKSPACE_REQUIRED",
59
- "REMOTE_WORKER_BINDING_RECEIPT_INVALID",
60
- "REMOTE_WORKER_SANDBOX_WORKSPACE_MISMATCH",
61
- "REMOTE_WORKER_SANDBOX_NOT_FOUND",
62
- "REMOTE_WORKER_SANDBOX_EXPIRED",
63
- "REMOTE_WORKER_SANDBOX_DISPOSED",
64
- "REMOTE_WORKER_CREATE_CONCURRENCY_EXHAUSTED",
65
- "REMOTE_WORKER_EXEC_CONCURRENCY_EXHAUSTED",
66
- "REMOTE_WORKER_IDEMPOTENCY_CONFLICT",
67
- "REMOTE_WORKER_EXEC_IN_PROGRESS",
68
- "REMOTE_WORKER_SECRET_INVOCATION_NOT_REPLAYABLE",
69
- "REMOTE_WORKER_OUTCOME_UNKNOWN",
70
- "REMOTE_WORKER_INCOMPLETE_CLEANUP",
71
- "REMOTE_WORKER_DOCKER_COMMAND_FAILED",
72
- "REMOTE_WORKER_PATH_UNSAFE",
73
- "REMOTE_WORKER_ALREADY_EXISTS",
74
- "REMOTE_WORKER_PATH_PRIMITIVE_UNAVAILABLE",
75
- "REMOTE_WORKER_QUOTA_EXCEEDED",
76
- "REMOTE_WORKER_SECRET_REFERENCE_REJECTED",
77
- "REMOTE_WORKER_EXEC_ABORTED",
78
- "REMOTE_WORKER_OUTPUT_LIMIT",
79
- "REMOTE_WORKER_TIMEOUT",
80
- "REMOTE_WORKER_STREAM_CLOSED",
81
- "CIRCUIT_OPEN",
82
- "ABORTED",
83
- // Billing / metering
84
- "PAYMENT_REQUIRED",
85
- "MODEL_BUDGET_EXCEEDED",
86
- "MODEL_CONTEXT_WINDOW_EXCEEDED",
87
- "METERING_UNSUPPORTED_COMMAND",
88
- // Session / bridge
89
- "SESSION_NOT_FOUND",
90
- "SESSION_LOCKED",
91
- "SESSION_TRANSCRIPT_UNREADABLE",
92
- "STREAM_BUFFER_EVICTED",
93
- "CURSOR_OUT_OF_RANGE",
94
- "BRIDGE_COMMAND_INVALID",
95
- // Tool
96
- "TOOL_NOT_FOUND",
97
- "TOOL_INVALID_INPUT",
98
- "TOOL_EXECUTION_ERROR",
99
- "AUTHORED_AGENT_ID_INVALID",
100
- "AUTHORED_AGENT_TYPE_MISMATCH",
101
- "AUTHORED_AGENT_REFERENCE_UNSUPPORTED",
102
- "AUTHORED_AGENT_TOOL_COLLISION",
103
- "MCP_AGENT_ARTIFACT_INVALID",
104
- "MCP_AGENT_ARTIFACT_TOO_LARGE",
105
- "MCP_AGENT_ARTIFACT_UNAVAILABLE",
106
- "AGENT_MCP_GRANT_REF_UNGRANTED",
107
- "AGENT_MCP_GRANT_TOOL_NOT_ALLOWED",
108
- "AGENT_MCP_GRANT_RECORD_MALFORMED",
109
- "AGENT_MCP_GRANT_CONNECTOR_UNKNOWN",
110
- "AGENT_MCP_GRANT_TOOL_NAME_INVALID",
111
- // Plugin
112
- "PLUGIN_LOAD_FAILED",
113
- "PLUGIN_NAME_COLLISION",
114
- "PLUGIN_RUNTIME_REVISION_MISMATCH",
115
- "PLUGIN_RUNTIME_PRIVATE_FILE",
116
- "PLUGIN_RUNTIME_UNSAFE_IMPORT",
117
- "PLUGIN_RUNTIME_TRANSFORM_FAILED",
118
- "RUNTIME_PLUGIN_NOT_FOUND",
119
- "RUNTIME_PLUGIN_ROUTE_NOT_FOUND",
120
- "RUNTIME_PLUGIN_HANDLER_FAILED",
121
- "RUNTIME_PLUGIN_LOAD_FAILED",
122
- "RUNTIME_PLUGIN_RESPONSE_UNSUPPORTED",
123
- // Runtime provisioning
124
- "PROVISIONING_LAYOUT_FAILED",
125
- "PROVISIONING_SKILLS_FAILED",
126
- "PROVISIONING_TEMPLATES_FAILED",
127
- "PROVISIONING_NODE_PREFLIGHT_FAILED",
128
- "PROVISIONING_NPM_INSTALL_FAILED",
129
- "PROVISIONING_UV_BOOTSTRAP_FAILED",
130
- "PROVISIONING_UV_INSTALL_FAILED",
131
- "PROVISIONING_ARTIFACT_FAILED",
132
- // Skill resources
133
- "SKILL_DISCOVERY_FAILED",
134
- "PACKAGE_RESOURCE_INVALID",
135
- "PACKAGE_RESOURCE_CONFLICT",
136
- "RUNTIME_FILESYSTEM_BINDING_DUPLICATE",
137
- "RUNTIME_READONLY_FILESYSTEM_POLICY_INVALID",
138
- // Lane W same-workspace share deep-link (AR1-003)
139
- "AR1_SHARE_NOT_FOUND",
140
- "AR1_SHARE_TOMBSTONED",
141
- // Event stream durability / external channels
142
- "EVENT_STORE_OPEN_FAILED",
143
- "DURABLE_STREAM_UNAVAILABLE",
144
- "CHANNEL_DURABLE_STREAM_REQUIRED",
145
- "CHANNEL_INBOUND_ACCEPTED",
146
- "CHANNEL_UNKNOWN_BINDING",
147
- "CHANNEL_INBOUND_PARKED",
148
- "CHANNEL_OUTBOUND_PARKED",
149
- "CHANNEL_TURN_STALLED",
150
- "CHANNEL_BINDING_BUSY",
151
- "CHANNEL_BINDING_REVOKED",
152
- "SESSION_CREATE_TIMEOUT",
153
- // Internal
154
- "ERR_NOT_IMPLEMENTED_UNTIL_T1",
155
- "INTERNAL_ERROR"
156
- ]);
157
- var ERROR_CODES = ErrorCode.options;
158
- var AgentDefinitionErrorCode = z.enum([
159
- "AGENT_DEFINITION_INVALID",
160
- "AGENT_DEFINITION_UNSUPPORTED_FIELD",
161
- "AUTHORED_AGENT_REFERENCE_UNSUPPORTED"
162
- ]);
163
- var AgentDeploymentErrorCode = z.enum([
164
- "AGENT_DEPLOYMENT_INVALID",
165
- "AGENT_DEPLOYMENT_UNSUPPORTED_FIELD"
166
- ]);
167
- var AgentConsumptionErrorCode = z.enum([
168
- "AGENT_CONSUMPTION_INVALID_TRANSITION",
169
- "AGENT_CONSUMPTION_CYCLE_DETECTED",
170
- "AGENT_CONSUMPTION_DEPTH_EXCEEDED",
171
- "AGENT_CONSUMPTION_SCHEMA_MISMATCH",
172
- "AGENT_CONSUMPTION_LEGACY_ARTIFACT_REJECTED"
173
- ]);
174
- var ApiErrorPayloadSchema = z.object({
175
- code: ErrorCode,
176
- message: z.string().min(1),
177
- details: z.record(z.unknown()).optional()
178
- });
179
- var ApiErrorResponseSchema = z.object({
180
- error: ApiErrorPayloadSchema
181
- });
182
- var ErrorLogFieldsSchema = z.object({
183
- level: z.enum(["warn", "error"]),
184
- code: ErrorCode,
185
- prefix: z.string().min(1),
186
- msg: z.string().min(1)
187
- }).catchall(z.unknown());
188
-
189
- export {
190
- ErrorCode,
191
- ERROR_CODES,
192
- AgentDefinitionErrorCode,
193
- AgentDeploymentErrorCode,
194
- AgentConsumptionErrorCode,
195
- ApiErrorPayloadSchema,
196
- ApiErrorResponseSchema,
197
- ErrorLogFieldsSchema
198
- };
@@ -1,394 +0,0 @@
1
- import {
2
- ErrorCode
3
- } from "./chunk-KJIEMSQP.js";
4
-
5
- // src/shared/tool-ui.ts
6
- function isRecord(value) {
7
- return typeof value === "object" && value !== null && !Array.isArray(value);
8
- }
9
- function isToolUiMetadata(value) {
10
- if (!isRecord(value)) return false;
11
- return (value.rendererId === void 0 || typeof value.rendererId === "string") && (value.displayGroup === void 0 || typeof value.displayGroup === "string") && (value.icon === void 0 || typeof value.icon === "string");
12
- }
13
- function sanitizeToolUiMetadata(value) {
14
- if (!isToolUiMetadata(value)) return void 0;
15
- const rendererId = value.rendererId?.trim();
16
- const displayGroup = value.displayGroup?.trim();
17
- const icon = value.icon?.trim();
18
- return {
19
- ...rendererId ? { rendererId } : {},
20
- ...displayGroup ? { displayGroup } : {},
21
- ...icon ? { icon } : {},
22
- ...value.details !== void 0 ? { details: value.details } : {}
23
- };
24
- }
25
- function extractToolUiMetadata(output) {
26
- if (!isRecord(output)) return void 0;
27
- const details = output.details;
28
- if (!isRecord(details)) return void 0;
29
- return sanitizeToolUiMetadata(details.ui);
30
- }
31
-
32
- // src/shared/agentPluginEvents.ts
33
- var WORKSPACE_AGENT_PLUGINS_RELOADED_EVENT = "boring-ui:agent-plugins-reloaded";
34
- var WORKSPACE_COMMAND_NOTIFY_EVENT = "boring-ui:command-notify";
35
-
36
- // src/shared/gateway/errors.ts
37
- var AgentGatewayErrorCode = {
38
- AGENT_TYPE_UNKNOWN: "AGENT_TYPE_UNKNOWN",
39
- AGENT_SESSION_NOT_FOUND: "AGENT_SESSION_NOT_FOUND",
40
- AGENT_SCOPE_DENIED: "AGENT_SCOPE_DENIED",
41
- AGENT_ENTITLEMENT_REQUIRED: "AGENT_ENTITLEMENT_REQUIRED",
42
- AGENT_ACCESS_FORBIDDEN: "AGENT_ACCESS_FORBIDDEN",
43
- AGENT_ACCESS_POLICY_UNAVAILABLE: "AGENT_ACCESS_POLICY_UNAVAILABLE",
44
- AGENT_SESSION_REPLAY_GAP: "AGENT_SESSION_REPLAY_GAP",
45
- AGENT_SESSION_CURSOR_AHEAD: "AGENT_SESSION_CURSOR_AHEAD",
46
- AGENT_SESSION_CURSOR_EXPIRED: "AGENT_SESSION_CURSOR_EXPIRED",
47
- AGENT_SESSION_CURSOR_INVALID: "AGENT_SESSION_CURSOR_INVALID",
48
- AGENT_REQUEST_CONFLICT: "AGENT_REQUEST_CONFLICT",
49
- AGENT_REQUEST_IN_PROGRESS: "AGENT_REQUEST_IN_PROGRESS",
50
- AGENT_REQUEST_OUTCOME_UNKNOWN: "AGENT_REQUEST_OUTCOME_UNKNOWN",
51
- AGENT_RUNTIME_RESTART_REQUIRED: "AGENT_RUNTIME_RESTART_REQUIRED",
52
- AGENT_COMMAND_INVALID_STATE: "AGENT_COMMAND_INVALID_STATE",
53
- AGENT_SHARED_ENVIRONMENT_UNAVAILABLE: "AGENT_SHARED_ENVIRONMENT_UNAVAILABLE",
54
- AGENT_GATEWAY_CLOSED: "AGENT_GATEWAY_CLOSED"
55
- };
56
- var AGENT_GATEWAY_ERROR_CODES = [
57
- AgentGatewayErrorCode.AGENT_TYPE_UNKNOWN,
58
- AgentGatewayErrorCode.AGENT_SESSION_NOT_FOUND,
59
- AgentGatewayErrorCode.AGENT_SCOPE_DENIED,
60
- AgentGatewayErrorCode.AGENT_ENTITLEMENT_REQUIRED,
61
- AgentGatewayErrorCode.AGENT_ACCESS_FORBIDDEN,
62
- AgentGatewayErrorCode.AGENT_ACCESS_POLICY_UNAVAILABLE,
63
- AgentGatewayErrorCode.AGENT_SESSION_REPLAY_GAP,
64
- AgentGatewayErrorCode.AGENT_SESSION_CURSOR_AHEAD,
65
- AgentGatewayErrorCode.AGENT_SESSION_CURSOR_EXPIRED,
66
- AgentGatewayErrorCode.AGENT_SESSION_CURSOR_INVALID,
67
- AgentGatewayErrorCode.AGENT_REQUEST_CONFLICT,
68
- AgentGatewayErrorCode.AGENT_REQUEST_IN_PROGRESS,
69
- AgentGatewayErrorCode.AGENT_REQUEST_OUTCOME_UNKNOWN,
70
- AgentGatewayErrorCode.AGENT_RUNTIME_RESTART_REQUIRED,
71
- AgentGatewayErrorCode.AGENT_COMMAND_INVALID_STATE,
72
- AgentGatewayErrorCode.AGENT_SHARED_ENVIRONMENT_UNAVAILABLE,
73
- AgentGatewayErrorCode.AGENT_GATEWAY_CLOSED
74
- ];
75
- var AgentGatewayError = class extends Error {
76
- code;
77
- details;
78
- constructor(code, message, details) {
79
- super(message);
80
- this.name = "AgentGatewayError";
81
- this.code = code;
82
- this.details = details;
83
- }
84
- toJSON() {
85
- return {
86
- code: this.code,
87
- message: this.message,
88
- ...this.details === void 0 ? {} : { details: this.details }
89
- };
90
- }
91
- };
92
-
93
- // src/shared/chat/piChatSchemas.ts
94
- import { z } from "zod";
95
- var nonEmptyString = z.string().min(1);
96
- var seqNumber = z.number().int().nonnegative();
97
- var ShallowPayloadSchema = z.union([
98
- z.string(),
99
- z.number(),
100
- z.boolean(),
101
- z.null(),
102
- z.array(z.unknown()),
103
- z.record(z.unknown())
104
- ]);
105
- function isRecord2(value) {
106
- return typeof value === "object" && value !== null && !Array.isArray(value);
107
- }
108
- var ToolUiMetadataSchema = z.object({
109
- rendererId: z.string().optional(),
110
- displayGroup: z.string().optional(),
111
- icon: z.string().optional(),
112
- details: z.unknown().optional()
113
- });
114
- function sanitizeToolUiMetadata2(value) {
115
- if (!isRecord2(value)) return void 0;
116
- const parsed = ToolUiMetadataSchema.safeParse(value);
117
- return parsed.success ? parsed.data : void 0;
118
- }
119
- var OptionalToolUiMetadataSchema = z.preprocess(
120
- (value) => sanitizeToolUiMetadata2(value),
121
- ToolUiMetadataSchema.optional()
122
- );
123
- var ChatErrorSchema = z.object({
124
- code: ErrorCode,
125
- message: nonEmptyString,
126
- retryable: z.boolean().optional(),
127
- details: z.unknown().optional()
128
- });
129
- var BoringChatPartSchema = z.discriminatedUnion("type", [
130
- z.object({ type: z.literal("text"), id: z.string().optional(), text: z.string() }),
131
- z.object({
132
- type: z.literal("reasoning"),
133
- id: nonEmptyString,
134
- text: z.string(),
135
- state: z.enum(["streaming", "done"]).optional()
136
- }),
137
- z.object({
138
- type: z.literal("tool-call"),
139
- id: nonEmptyString,
140
- toolName: nonEmptyString,
141
- input: z.unknown().optional(),
142
- state: z.enum(["input-streaming", "input-available", "output-available", "output-error", "aborted"]),
143
- output: z.unknown().optional(),
144
- errorText: z.string().optional(),
145
- ui: OptionalToolUiMetadataSchema
146
- }),
147
- z.object({
148
- type: z.literal("file"),
149
- id: z.string().optional(),
150
- filename: z.string().optional(),
151
- mediaType: z.string().optional(),
152
- url: z.string().optional(),
153
- path: z.string().optional(),
154
- filesystem: z.string().optional()
155
- }),
156
- z.object({
157
- type: z.literal("notice"),
158
- id: z.string().optional(),
159
- level: z.enum(["info", "warning", "error"]),
160
- text: z.string()
161
- })
162
- ]);
163
- var BoringChatMessageSchema = z.object({
164
- id: nonEmptyString,
165
- role: z.enum(["user", "assistant", "system"]),
166
- status: z.enum(["pending", "streaming", "done", "aborted", "error"]).optional(),
167
- parts: z.array(BoringChatPartSchema),
168
- createdAt: z.string().optional(),
169
- clientNonce: z.string().optional(),
170
- clientSeq: z.number().int().nonnegative().optional(),
171
- piEntryId: z.string().optional(),
172
- turnId: z.string().optional()
173
- });
174
- var QueuedUserMessageSchema = z.object({
175
- id: nonEmptyString,
176
- kind: z.literal("followup"),
177
- clientNonce: z.string().optional(),
178
- clientSeq: z.number().int().nonnegative().optional(),
179
- displayText: z.string(),
180
- createdAt: z.string().optional()
181
- });
182
- var PiChatStatusSchema = z.enum(["idle", "hydrating", "submitted", "streaming", "aborting", "error"]);
183
- var ChatModelSelectionSchema = z.object({
184
- provider: nonEmptyString,
185
- id: nonEmptyString
186
- });
187
- var PiChatSnapshotSchema = z.object({
188
- protocolVersion: z.literal(1),
189
- sessionId: nonEmptyString,
190
- seq: seqNumber,
191
- status: PiChatStatusSchema,
192
- activeTurnId: z.string().optional(),
193
- currentModel: ChatModelSelectionSchema.optional(),
194
- messages: z.array(BoringChatMessageSchema),
195
- queue: z.object({ followUps: z.array(QueuedUserMessageSchema) }),
196
- followUpMode: z.literal("one-at-a-time"),
197
- error: ChatErrorSchema.optional()
198
- });
199
- var baseEvent = z.object({ seq: seqNumber });
200
- var PiChatEventSchema = z.discriminatedUnion("type", [
201
- baseEvent.extend({ type: z.literal("agent-start"), turnId: nonEmptyString }),
202
- baseEvent.extend({ type: z.literal("model-changed"), currentModel: ChatModelSelectionSchema }),
203
- baseEvent.extend({ type: z.literal("agent-end"), turnId: nonEmptyString, status: z.enum(["ok", "aborted", "error"]), willRetry: z.boolean().optional() }),
204
- baseEvent.extend({
205
- type: z.literal("message-start"),
206
- messageId: nonEmptyString,
207
- role: z.enum(["user", "assistant"]),
208
- clientNonce: z.string().optional(),
209
- clientSeq: z.number().int().nonnegative().optional(),
210
- createdAt: z.string().optional(),
211
- text: z.string().optional(),
212
- files: z.array(BoringChatPartSchema).optional()
213
- }),
214
- baseEvent.extend({
215
- type: z.literal("message-delta"),
216
- messageId: nonEmptyString,
217
- partId: nonEmptyString,
218
- kind: z.enum(["text", "reasoning"]),
219
- delta: z.string()
220
- }),
221
- baseEvent.extend({
222
- type: z.literal("message-part-end"),
223
- messageId: nonEmptyString,
224
- partId: nonEmptyString,
225
- kind: z.enum(["text", "reasoning"]),
226
- text: z.string()
227
- }),
228
- baseEvent.extend({ type: z.literal("message-end"), messageId: nonEmptyString, final: BoringChatMessageSchema }),
229
- baseEvent.extend({
230
- type: z.literal("tool-call"),
231
- messageId: nonEmptyString,
232
- toolCallId: nonEmptyString,
233
- toolName: nonEmptyString,
234
- input: ShallowPayloadSchema,
235
- ui: OptionalToolUiMetadataSchema
236
- }),
237
- baseEvent.extend({
238
- type: z.literal("tool-result"),
239
- messageId: nonEmptyString,
240
- toolCallId: nonEmptyString,
241
- output: ShallowPayloadSchema,
242
- isError: z.boolean().optional(),
243
- errorText: z.string().optional(),
244
- ui: OptionalToolUiMetadataSchema
245
- }),
246
- baseEvent.extend({ type: z.literal("queue-updated"), queue: z.object({ followUps: z.array(QueuedUserMessageSchema) }) }),
247
- baseEvent.extend({
248
- type: z.literal("followup-consumed"),
249
- clientNonce: z.string().optional(),
250
- clientSeq: z.number().int().nonnegative().optional(),
251
- messageId: nonEmptyString
252
- }),
253
- baseEvent.extend({ type: z.literal("file-changed"), path: nonEmptyString, changeType: nonEmptyString, filesystem: nonEmptyString.optional() }),
254
- baseEvent.extend({ type: z.literal("ui-command"), command: ShallowPayloadSchema, displayOnly: z.literal(true) }),
255
- baseEvent.extend({ type: z.literal("usage"), usage: ShallowPayloadSchema }),
256
- baseEvent.extend({
257
- type: z.literal("auto-retry-start"),
258
- attempt: z.number().int().nonnegative(),
259
- maxAttempts: z.number().int().nonnegative(),
260
- delayMs: z.number().int().nonnegative(),
261
- errorMessage: z.string()
262
- }),
263
- baseEvent.extend({
264
- type: z.literal("auto-retry-end"),
265
- success: z.boolean(),
266
- attempt: z.number().int().nonnegative(),
267
- finalError: z.string().optional()
268
- }),
269
- baseEvent.extend({ type: z.literal("error"), turnId: z.string().optional(), retryable: z.boolean().optional(), error: ChatErrorSchema })
270
- ]);
271
- var PiChatHeartbeatFrameSchema = z.object({ type: z.literal("heartbeat"), now: z.string() });
272
- var PiChatStreamFrameSchema = z.union([PiChatEventSchema, PiChatHeartbeatFrameSchema]);
273
- var ThinkingLevelSchema = z.enum(["off", "low", "medium", "high"]);
274
- var ChatAttachmentPayloadSchema = z.object({
275
- filename: z.string().optional(),
276
- mediaType: z.string().optional(),
277
- url: nonEmptyString,
278
- path: z.string().optional()
279
- });
280
- var PromptPayloadSchema = z.object({
281
- message: z.string().min(1).max(1e6),
282
- displayMessage: z.string().min(1).max(1e6).optional(),
283
- clientNonce: nonEmptyString.max(128),
284
- model: ChatModelSelectionSchema.optional(),
285
- thinkingLevel: ThinkingLevelSchema.optional(),
286
- attachments: z.array(ChatAttachmentPayloadSchema).max(20).optional()
287
- });
288
- var FollowUpPayloadSchema = z.object({
289
- message: z.string().min(1).max(1e6),
290
- displayMessage: z.string().min(1).max(1e6).optional(),
291
- clientNonce: nonEmptyString.max(128),
292
- clientSeq: z.number().int().nonnegative()
293
- });
294
- var QueueClearPayloadSchema = z.preprocess(
295
- (value) => value ?? {},
296
- z.object({
297
- clientNonce: nonEmptyString.max(128).optional(),
298
- clientSeq: z.number().int().nonnegative().optional()
299
- }).strict()
300
- );
301
- var InterruptPayloadSchema = z.object({
302
- queueAction: z.enum(["hold", "resume"]).optional()
303
- }).strict();
304
- var StopPayloadSchema = z.object({}).strict();
305
- var CommandReceiptSchema = z.object({
306
- accepted: z.literal(true),
307
- cursor: seqNumber
308
- });
309
- var PromptReceiptSchema = CommandReceiptSchema.extend({
310
- clientNonce: nonEmptyString,
311
- duplicate: z.boolean().optional()
312
- });
313
- var FollowUpReceiptSchema = CommandReceiptSchema.extend({
314
- clientNonce: nonEmptyString,
315
- clientSeq: z.number().int().nonnegative(),
316
- queued: z.literal(true),
317
- duplicate: z.boolean().optional()
318
- });
319
- var QueueClearReceiptSchema = CommandReceiptSchema.extend({
320
- cleared: z.number().int().nonnegative()
321
- });
322
- var StopReceiptSchema = CommandReceiptSchema.extend({
323
- stopped: z.boolean(),
324
- clearedQueue: z.array(QueuedUserMessageSchema)
325
- });
326
-
327
- // src/shared/chat/modelContextError.ts
328
- var MODEL_CONTEXT_RECOVERY_MESSAGE = "This conversation exceeded the model context window. Compact the conversation and retry, or start a new chat with less context.";
329
- var CONTEXT_WINDOW_ERROR_PATTERN = /context[_ ]length[_ ]exceeded|exceeds the context window|input exceeds the context window/i;
330
- function errorMessage(value) {
331
- if (value instanceof Error) return value.message;
332
- if (typeof value === "string") return value;
333
- if (typeof value !== "object" || value === null) return void 0;
334
- const record = value;
335
- if (typeof record.code === "string" && CONTEXT_WINDOW_ERROR_PATTERN.test(record.code)) return record.code;
336
- if (typeof record.message === "string") return record.message;
337
- return errorMessage(record.error);
338
- }
339
- function isModelContextWindowError(value) {
340
- const message = errorMessage(value);
341
- return message !== void 0 && CONTEXT_WINDOW_ERROR_PATTERN.test(message);
342
- }
343
- function chatErrorFromUnknown(value, fallbackMessage) {
344
- if (isModelContextWindowError(value)) {
345
- return {
346
- code: ErrorCode.enum.MODEL_CONTEXT_WINDOW_EXCEEDED,
347
- message: MODEL_CONTEXT_RECOVERY_MESSAGE,
348
- retryable: true
349
- };
350
- }
351
- const message = errorMessage(value);
352
- return {
353
- code: ErrorCode.enum.INTERNAL_ERROR,
354
- message: message || fallbackMessage,
355
- retryable: false
356
- };
357
- }
358
-
359
- export {
360
- isToolUiMetadata,
361
- sanitizeToolUiMetadata,
362
- extractToolUiMetadata,
363
- WORKSPACE_AGENT_PLUGINS_RELOADED_EVENT,
364
- WORKSPACE_COMMAND_NOTIFY_EVENT,
365
- AgentGatewayErrorCode,
366
- AGENT_GATEWAY_ERROR_CODES,
367
- AgentGatewayError,
368
- isModelContextWindowError,
369
- chatErrorFromUnknown,
370
- ToolUiMetadataSchema,
371
- sanitizeToolUiMetadata2,
372
- ChatErrorSchema,
373
- BoringChatPartSchema,
374
- BoringChatMessageSchema,
375
- QueuedUserMessageSchema,
376
- PiChatStatusSchema,
377
- ChatModelSelectionSchema,
378
- PiChatSnapshotSchema,
379
- PiChatEventSchema,
380
- PiChatHeartbeatFrameSchema,
381
- PiChatStreamFrameSchema,
382
- ThinkingLevelSchema,
383
- ChatAttachmentPayloadSchema,
384
- PromptPayloadSchema,
385
- FollowUpPayloadSchema,
386
- QueueClearPayloadSchema,
387
- InterruptPayloadSchema,
388
- StopPayloadSchema,
389
- CommandReceiptSchema,
390
- PromptReceiptSchema,
391
- FollowUpReceiptSchema,
392
- QueueClearReceiptSchema,
393
- StopReceiptSchema
394
- };