@hachej/boring-agent 0.1.91 → 0.1.92

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.
@@ -187,7 +187,7 @@ var PiChatEventSchema = z.discriminatedUnion("type", [
187
187
  clientSeq: z.number().int().nonnegative().optional(),
188
188
  messageId: nonEmptyString
189
189
  }),
190
- baseEvent.extend({ type: z.literal("file-changed"), path: nonEmptyString, changeType: nonEmptyString }),
190
+ baseEvent.extend({ type: z.literal("file-changed"), path: nonEmptyString, changeType: nonEmptyString, filesystem: nonEmptyString.optional() }),
191
191
  baseEvent.extend({ type: z.literal("ui-command"), command: ShallowPayloadSchema, displayOnly: z.literal(true) }),
192
192
  baseEvent.extend({ type: z.literal("usage"), usage: ShallowPayloadSchema }),
193
193
  baseEvent.extend({
@@ -48,7 +48,7 @@ import {
48
48
  StopPayloadSchema,
49
49
  extractToolUiMetadata,
50
50
  sanitizeToolUiMetadata2 as sanitizeToolUiMetadata
51
- } from "./chunk-PZC76CIA.js";
51
+ } from "./chunk-OFQ7J6SI.js";
52
52
  import {
53
53
  AgentDefinitionErrorCode,
54
54
  AgentDeploymentErrorCode,
@@ -2478,6 +2478,7 @@ var PiChatEventMapper = class {
2478
2478
  activeAssistantMessageId;
2479
2479
  pendingUserStarts = [];
2480
2480
  toolCallMessageIds = /* @__PURE__ */ new Map();
2481
+ toolCallInputs = /* @__PURE__ */ new Map();
2481
2482
  endedMessageIds = /* @__PURE__ */ new Set();
2482
2483
  endedAssistantTurnIds = /* @__PURE__ */ new Set();
2483
2484
  errorEmittedTurnIds = /* @__PURE__ */ new Set();
@@ -2515,6 +2516,7 @@ var PiChatEventMapper = class {
2515
2516
  ];
2516
2517
  this.activeAssistantMessageId = void 0;
2517
2518
  this.toolCallMessageIds.clear();
2519
+ this.toolCallInputs.clear();
2518
2520
  if (status !== "error") this.activeTurnId = void 0;
2519
2521
  return mapped;
2520
2522
  }
@@ -2654,6 +2656,7 @@ var PiChatEventMapper = class {
2654
2656
  const toolCall = assistantEvent.toolCall;
2655
2657
  const toolCallId = optionalString2(toolCall.id) ?? `${messageId}:tool:${partIdFromAssistantEvent(assistantEvent)}`;
2656
2658
  this.toolCallMessageIds.set(toolCallId, messageId);
2659
+ this.toolCallInputs.set(toolCallId, toolCall.arguments);
2657
2660
  return [
2658
2661
  this.event({
2659
2662
  type: "tool-call",
@@ -2747,9 +2750,17 @@ var PiChatEventMapper = class {
2747
2750
  const messageId = this.toolCallMessageIds.get(toolCallId) ?? this.activeAssistantMessageId ?? fallbackMessageId(this.sessionId, "assistant", this.seq + 1);
2748
2751
  const result = event.result;
2749
2752
  const mapped = [];
2753
+ const toolFilesystem = filesystemFromToolInput(this.toolCallInputs.get(toolCallId));
2750
2754
  for (const fileChange of extractFileChanges(isRecord2(result) ? result.details : void 0)) {
2751
- mapped.push(this.event({ type: "file-changed", path: fileChange.path, changeType: fileChange.op }));
2755
+ const filesystem = fileChange.filesystem ?? toolFilesystem;
2756
+ mapped.push(this.event({
2757
+ type: "file-changed",
2758
+ path: fileChange.path,
2759
+ changeType: fileChange.op,
2760
+ ...filesystem ? { filesystem } : {}
2761
+ }));
2752
2762
  }
2763
+ this.toolCallInputs.delete(toolCallId);
2753
2764
  mapped.push(
2754
2765
  this.event({
2755
2766
  type: "tool-result",
@@ -2896,13 +2907,21 @@ function errorMessageFromAssistantError(assistantEvent) {
2896
2907
  if (isRecord2(assistantEvent.error) && typeof assistantEvent.error.errorMessage === "string") return assistantEvent.error.errorMessage;
2897
2908
  return assistantEvent.reason === "aborted" ? "Aborted" : "Unknown error";
2898
2909
  }
2910
+ function filesystemFromToolInput(input) {
2911
+ return isRecord2(input) ? optionalString2(input.filesystem) : void 0;
2912
+ }
2899
2913
  function normalizeFileChangeEntry(value) {
2900
2914
  if (!isRecord2(value)) return null;
2901
2915
  const op = value.op;
2902
2916
  const path = value.path;
2903
2917
  if (typeof op !== "string" || !FILE_CHANGE_OPS.has(op)) return null;
2904
2918
  if (typeof path !== "string" || path.length === 0) return null;
2905
- return { op, path };
2919
+ const filesystem = optionalString2(value.filesystem);
2920
+ return {
2921
+ op,
2922
+ path,
2923
+ ...filesystem ? { filesystem } : {}
2924
+ };
2906
2925
  }
2907
2926
  function extractFileChanges(details) {
2908
2927
  if (!isRecord2(details)) return [];
@@ -1,8 +1,8 @@
1
- import { A as AgentHarness, a as AgentReadiness, b as Agent } from '../harness-Bt_GMNYR.js';
2
- export { c as AGENT_NOT_IMPLEMENTED_UNTIL_T1, d as AgentActor, e as AgentCoreHarness, f as AgentCoreHarnessFactory, g as AgentCorePromptInput, h as AgentCoreSessionAdapter, i as AgentCoreSessionSnapshot, j as AgentEvent, k as AgentMessageContent, l as AgentMessagePart, m as AgentNotImplementedError, n as AgentReadinessStatus, o as AgentResolveInputResponse, p as AgentSendInput, q as AgentStartReceipt, r as AgentStreamOptions } from '../harness-Bt_GMNYR.js';
3
- import { S as SessionStore } from '../piChatEvent-DBO3M5lu.js';
4
- import { A as AgentCoreSessionService, a as AgentEffectAdmission } from '../piChatSessionService-BaaVWke7.js';
5
- export { b as AGENT_EFFECT_METHODS, c as AgentEffectAdmissionError, P as PiChatEventStreamResult, d as PiChatEventStreamSubscription, e as PiChatEventSubscriber, f as PiChatReplayRangeError, g as PiChatSessionService, h as PiSessionCreateInit, i as PiSessionRequestContext, w as withAgentEffectAdmission } from '../piChatSessionService-BaaVWke7.js';
1
+ import { A as AgentHarness, a as AgentReadiness, b as Agent } from '../harness-Cc48o6uS.js';
2
+ export { c as AGENT_NOT_IMPLEMENTED_UNTIL_T1, d as AgentActor, e as AgentCoreHarness, f as AgentCoreHarnessFactory, g as AgentCorePromptInput, h as AgentCoreSessionAdapter, i as AgentCoreSessionSnapshot, j as AgentEvent, k as AgentMessageContent, l as AgentMessagePart, m as AgentNotImplementedError, n as AgentReadinessStatus, o as AgentResolveInputResponse, p as AgentSendInput, q as AgentStartReceipt, r as AgentStreamOptions } from '../harness-Cc48o6uS.js';
3
+ import { S as SessionStore } from '../piChatEvent-BsMp3MSo.js';
4
+ import { A as AgentCoreSessionService, a as AgentEffectAdmission } from '../piChatSessionService-BrPqKrpY.js';
5
+ export { b as AGENT_EFFECT_METHODS, c as AgentEffectAdmissionError, P as PiChatEventStreamResult, d as PiChatEventStreamSubscription, e as PiChatEventSubscriber, f as PiChatReplayRangeError, g as PiChatSessionService, h as PiSessionCreateInit, i as PiSessionRequestContext, w as withAgentEffectAdmission } from '../piChatSessionService-BrPqKrpY.js';
6
6
  import '@mariozechner/pi-coding-agent';
7
7
  import 'zod';
8
8
 
@@ -1,4 +1,4 @@
1
- import { b as PiChatEvent, o as ChatModelSelection, K as ThinkingLevel, v as ChatAttachmentPayload, Q as QueuedUserMessage, n as PiChatSnapshot } from './piChatEvent-DBO3M5lu.js';
1
+ import { b as PiChatEvent, o as ChatModelSelection, K as ThinkingLevel, v as ChatAttachmentPayload, Q as QueuedUserMessage, n as PiChatSnapshot } from './piChatEvent-BsMp3MSo.js';
2
2
 
3
3
  /** Placement-independent event envelope. `seq` is the only replay cursor. */
4
4
  interface AgentSessionEvent {
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ComponentProps, HTMLAttributes, FormEvent, ReactNode, ComponentType } from 'react';
3
3
  import { FileUIPart, ChatStatus, UIMessage } from 'ai';
4
- import { T as ToolUiMetadata, B as BoringChatPart, a as BoringChatMessage, P as PiChatStatus, Q as QueuedUserMessage, C as ChatError, b as PiChatEvent, c as PromptPayload, d as PromptReceipt, F as FollowUpPayload, e as FollowUpReceipt, f as QueueClearPayload, g as QueueClearReceipt, I as InterruptPayload, h as CommandReceipt, i as StopPayload, j as StopReceipt, k as SessionSummary } from '../piChatEvent-DBO3M5lu.js';
4
+ import { T as ToolUiMetadata, B as BoringChatPart, a as BoringChatMessage, P as PiChatStatus, Q as QueuedUserMessage, C as ChatError, b as PiChatEvent, c as PromptPayload, d as PromptReceipt, F as FollowUpPayload, e as FollowUpReceipt, f as QueueClearPayload, g as QueueClearReceipt, I as InterruptPayload, h as CommandReceipt, i as StopPayload, j as StopReceipt, k as SessionSummary } from '../piChatEvent-BsMp3MSo.js';
5
5
  import { InputGroupAddon, InputGroupButton, InputGroupTextarea, Button, Collapsible, CollapsibleContent, CollapsibleTrigger } from '@hachej/boring-ui-kit';
6
6
  import { Streamdown } from 'streamdown';
7
7
  import { StickToBottom } from 'use-stick-to-bottom';
@@ -15,7 +15,7 @@ import {
15
15
  WORKSPACE_COMMAND_NOTIFY_EVENT,
16
16
  extractToolUiMetadata,
17
17
  sanitizeToolUiMetadata
18
- } from "../chunk-PZC76CIA.js";
18
+ } from "../chunk-OFQ7J6SI.js";
19
19
  import {
20
20
  ErrorCode
21
21
  } from "../chunk-2GBHYJVC.js";
@@ -1,4 +1,4 @@
1
- import { l as SessionCtx, b as PiChatEvent, S as SessionStore } from './piChatEvent-DBO3M5lu.js';
1
+ import { l as SessionCtx, b as PiChatEvent, S as SessionStore } from './piChatEvent-BsMp3MSo.js';
2
2
  import { AgentSessionEvent, PromptOptions } from '@mariozechner/pi-coding-agent';
3
3
 
4
4
  interface TelemetrySink {
@@ -1,6 +1,6 @@
1
- import { D as InterruptReceipt, j as StopReceipt, p as AgentDefinitionErrorCode, q as AgentDeploymentErrorCode } from './piChatEvent-DBO3M5lu.js';
2
- import { p as AgentSendInput, j as AgentEvent } from './harness-Bt_GMNYR.js';
3
- import { b as AgentSessionRef, n as AgentSendReceipt, A as AgentGateway, a as AuthorizedAgentScope } from './errors-BEmw9HMp.js';
1
+ import { D as InterruptReceipt, j as StopReceipt, p as AgentDefinitionErrorCode, q as AgentDeploymentErrorCode } from './piChatEvent-BsMp3MSo.js';
2
+ import { p as AgentSendInput, j as AgentEvent } from './harness-Cc48o6uS.js';
3
+ import { b as AgentSessionRef, n as AgentSendReceipt, A as AgentGateway, a as AuthorizedAgentScope } from './errors-C38f6pol.js';
4
4
  import { z } from 'zod';
5
5
  import { b as Workspace } from './sandbox-DAD8cWQR.js';
6
6
 
@@ -329,6 +329,7 @@ type PiChatEvent = {
329
329
  seq: number;
330
330
  path: string;
331
331
  changeType: string;
332
+ filesystem?: string;
332
333
  } | {
333
334
  type: 'ui-command';
334
335
  seq: number;
@@ -1,4 +1,4 @@
1
- import { m as SessionListOptions, k as SessionSummary, o as ChatModelSelection, n as PiChatSnapshot, b as PiChatEvent, c as PromptPayload, d as PromptReceipt, F as FollowUpPayload, e as FollowUpReceipt, f as QueueClearPayload, g as QueueClearReceipt, I as InterruptPayload, h as CommandReceipt, i as StopPayload, j as StopReceipt } from './piChatEvent-DBO3M5lu.js';
1
+ import { m as SessionListOptions, k as SessionSummary, o as ChatModelSelection, n as PiChatSnapshot, b as PiChatEvent, c as PromptPayload, d as PromptReceipt, F as FollowUpPayload, e as FollowUpReceipt, f as QueueClearPayload, g as QueueClearReceipt, I as InterruptPayload, h as CommandReceipt, i as StopPayload, j as StopReceipt } from './piChatEvent-BsMp3MSo.js';
2
2
 
3
3
  interface PiSessionRequestContext {
4
4
  workspaceId?: string;
@@ -1,14 +1,14 @@
1
- import { A as AgentGateway, a as AuthorizedAgentScope, b as AgentSessionRef, c as AgentSessionActivity } from '../../../errors-BEmw9HMp.js';
2
- import { A as AgentGatewayEffect } from '../../../types-jcMapYr9.js';
3
- import '../../../piChatEvent-DBO3M5lu.js';
1
+ import { A as AgentGateway, a as AuthorizedAgentScope, b as AgentSessionRef, c as AgentSessionActivity } from '../../../errors-C38f6pol.js';
2
+ import { A as AgentGatewayEffect } from '../../../types-uQozUhGt.js';
3
+ import '../../../piChatEvent-BsMp3MSo.js';
4
4
  import 'zod';
5
5
  import 'fastify';
6
- import '../../../harness-Bt_GMNYR.js';
6
+ import '../../../harness-Cc48o6uS.js';
7
7
  import '@mariozechner/pi-coding-agent';
8
8
  import '../../../sandbox-DAD8cWQR.js';
9
9
  import '@hachej/boring-bash/agent';
10
10
  import '@hachej/boring-sandbox/providers/node-workspace';
11
- import '../../../piChatSessionService-BaaVWke7.js';
11
+ import '../../../piChatSessionService-BrPqKrpY.js';
12
12
 
13
13
  /** G1 ships only the embedded bounded-replay contract. */
14
14
  type GatewayReplayConformanceLevel = 'B';
@@ -5,7 +5,7 @@ import {
5
5
  } from "../../../chunk-NITBKFG6.js";
6
6
  import "../../../chunk-AQBXNPMD.js";
7
7
  import "../../../chunk-WSQ5QNIY.js";
8
- import "../../../chunk-PZC76CIA.js";
8
+ import "../../../chunk-OFQ7J6SI.js";
9
9
  import "../../../chunk-2GBHYJVC.js";
10
10
 
11
11
  // src/server/agent-host/testing/gatewayConformance.ts
@@ -1,18 +1,18 @@
1
- import { P as ProvisionWorkspaceRuntimeOptions, W as WorkspaceProvisioningResult, R as RuntimeModeAdapter, a as RuntimeModeId, B as BuiltinRuntimeModeId, b as AgentRuntimeHostOperations, c as RuntimeBashStrategy, d as RuntimeFilesystemStrategy, M as ModeContext, e as WorkspaceProvisioningAdapter, f as RuntimeBundle, g as PiHarnessOptions, h as AgentMeteringSink, i as RuntimeFilesystemBinding, j as MeteringErrorLogger, k as ReadyStatusTracker, l as ResolvedAgentRuntimeScope, C as CreateAgentHostOptions, m as CompiledAgentHostAgentSpec, n as AgentRequestLedger, o as AgentEffectAdmission, p as AgentRequestKey, q as CreatedAgentHost, r as AgentFleetCompiler, A as AgentGatewayEffect, s as AgentRequestTarget, t as AgentRequestLedgerRecord, u as AgentRequestFailure, v as AgentHostLegacyRoutePolicy } from '../types-jcMapYr9.js';
2
- export { w as AgentHostAddressedHttpProjectionOptions, x as AgentHostAgentSpec, y as AgentHostDescription, z as AgentHostHandle, D as AgentHostHttpProjectionOptions, E as AgentHostLegacyHttpProjectionOptions, F as AgentHostLegacyProjectionComposition, G as AgentHostLegacyProjectionLifecycle, H as AgentHostLegacyProjectionRuntime, I as AgentHostLegacyRoutePolicyMountInput, J as ConfiguredAgentHostAgentSpec, L as LegacyDefaultAgentHostSpec, K as MeteringReleaseInput, N as MeteringReleaseReason, O as MeteringReservationResult, Q as MeteringReserveInput, S as MeteringRunKind, T as MeteringRunScope, U as MeteringRunStatus, V as MeteringSettleInput, X as MeteringUsage, Y as MeteringUsageInput, Z as PI_PACKAGE_RESOURCE_FILTERS, _ as PiExtensionFactory, $ as PiPackageSource, a0 as PluginSkillSource, a1 as ResolvedEnvironmentScope, a2 as RuntimeFilesystemBindingOperations, a3 as RuntimeNodePackageSpec, a4 as RuntimeProvisioningContribution, a5 as RuntimePythonSpec, a6 as RuntimeTemplateContribution, a7 as WorkspaceProvisioningExecResult, a8 as compactPiPackages, a9 as createResourceSettingsManager, aa as mergePiPackageSources, ab as normalizeMeteringUsage, ac as piPackageSourceKey } from '../types-jcMapYr9.js';
1
+ import { P as ProvisionWorkspaceRuntimeOptions, W as WorkspaceProvisioningResult, R as RuntimeModeAdapter, a as RuntimeModeId, B as BuiltinRuntimeModeId, b as AgentRuntimeHostOperations, c as RuntimeBashStrategy, d as RuntimeFilesystemStrategy, M as ModeContext, e as WorkspaceProvisioningAdapter, f as RuntimeBundle, g as PiHarnessOptions, h as AgentMeteringSink, i as RuntimeFilesystemBinding, j as MeteringErrorLogger, k as ReadyStatusTracker, l as ResolvedAgentRuntimeScope, C as CreateAgentHostOptions, m as CompiledAgentHostAgentSpec, n as AgentRequestLedger, o as AgentEffectAdmission, p as AgentRequestKey, q as CreatedAgentHost, r as AgentFleetCompiler, A as AgentGatewayEffect, s as AgentRequestTarget, t as AgentRequestLedgerRecord, u as AgentRequestFailure, v as AgentHostLegacyRoutePolicy } from '../types-uQozUhGt.js';
2
+ export { w as AgentHostAddressedHttpProjectionOptions, x as AgentHostAgentSpec, y as AgentHostDescription, z as AgentHostHandle, D as AgentHostHttpProjectionOptions, E as AgentHostLegacyHttpProjectionOptions, F as AgentHostLegacyProjectionComposition, G as AgentHostLegacyProjectionLifecycle, H as AgentHostLegacyProjectionRuntime, I as AgentHostLegacyRoutePolicyMountInput, J as ConfiguredAgentHostAgentSpec, L as LegacyDefaultAgentHostSpec, K as MeteringReleaseInput, N as MeteringReleaseReason, O as MeteringReservationResult, Q as MeteringReserveInput, S as MeteringRunKind, T as MeteringRunScope, U as MeteringRunStatus, V as MeteringSettleInput, X as MeteringUsage, Y as MeteringUsageInput, Z as PI_PACKAGE_RESOURCE_FILTERS, _ as PiExtensionFactory, $ as PiPackageSource, a0 as PluginSkillSource, a1 as ResolvedEnvironmentScope, a2 as RuntimeFilesystemBindingOperations, a3 as RuntimeNodePackageSpec, a4 as RuntimeProvisioningContribution, a5 as RuntimePythonSpec, a6 as RuntimeTemplateContribution, a7 as WorkspaceProvisioningExecResult, a8 as compactPiPackages, a9 as createResourceSettingsManager, aa as mergePiPackageSources, ab as normalizeMeteringUsage, ac as piPackageSourceKey } from '../types-uQozUhGt.js';
3
3
  import { E as ExecOptions, a as ExecResult, W as WorkspaceChangeEvent, b as Workspace, S as Sandbox } from '../sandbox-DAD8cWQR.js';
4
4
  import { R as RemoteWorkerWorkspaceOp, a as RemoteWorkerWorkspaceResult, b as RemoteWorkerExecRequest } from '../middleware-CzW8n7B7.js';
5
5
  export { c as REMOTE_WORKER_PROVIDER, d as REMOTE_WORKER_RUNTIME_CWD, e as RemoteWorkerErrorPayload, f as RemoteWorkerExecResponse, g as RemoteWorkerFsEventEnvelope, W as WORKER_INTERNAL_TOKEN_HEADER, h as WORKER_REQUEST_ID_HEADER, i as WORKER_WORKSPACE_ID_HEADER, j as createAgentAuthMiddleware } from '../middleware-CzW8n7B7.js';
6
6
  import { SandboxProviderV1, WorkspaceSandboxPairV1 } from '@hachej/boring-sandbox/shared';
7
- import { S as SandboxHandleStore, C as CompiledAgentBundle, a as Sha256Digest, A as AgentDeployment, b as ShareEntryStore, P as PluginRestartWarning, W as WorkspaceAgentDispatcherContext, c as WorkspaceAgentDispatcher, d as ProviderId, e as CredentialFieldId, R as ResolvedCredentialMaterialV1, f as AuthorizedWorkspaceCredentialScopeV1, V as VerifiedWorkspaceCredentialAuthorityV1, g as WorkspaceCredentialAuthorityVerifierV1, h as CredentialConsumerBindingRegistryV1, i as ProviderRegistryV1, j as WorkspaceCredentialResolverV1, k as ProviderCredentialRefV1, l as ResolvedCredentialLeaseV1 } from '../lease-2aXepSBL.js';
8
- import { s as AgentConfig, b as Agent, d as AgentActor, j as AgentEvent, t as AgentTool, u as AgentHarnessFactory, T as TelemetrySink, A as AgentHarness } from '../harness-Bt_GMNYR.js';
9
- export { v as AgentHarnessFactoryInput } from '../harness-Bt_GMNYR.js';
10
- import { b as PiChatEvent, E as ErrorCode, l as SessionCtx, S as SessionStore, m as SessionListOptions, k as SessionSummary, n as PiChatSnapshot, c as PromptPayload, d as PromptReceipt, F as FollowUpPayload, e as FollowUpReceipt, f as QueueClearPayload, g as QueueClearReceipt, I as InterruptPayload, i as StopPayload, j as StopReceipt } from '../piChatEvent-DBO3M5lu.js';
11
- import { A as AgentGateway, a as AuthorizedAgentScope, b as AgentSessionRef, c as AgentSessionActivity, V as VerifiedAgentScopeClaim, d as AgentSessionSummary, e as AgentSessionStateSnapshot, f as AgentSessionConnection, J as JsonValue, g as AgentGatewayErrorDTO } from '../errors-BEmw9HMp.js';
7
+ import { S as SandboxHandleStore, C as CompiledAgentBundle, a as Sha256Digest, A as AgentDeployment, b as ShareEntryStore, P as PluginRestartWarning, W as WorkspaceAgentDispatcherContext, c as WorkspaceAgentDispatcher, d as ProviderId, e as CredentialFieldId, R as ResolvedCredentialMaterialV1, f as AuthorizedWorkspaceCredentialScopeV1, V as VerifiedWorkspaceCredentialAuthorityV1, g as WorkspaceCredentialAuthorityVerifierV1, h as CredentialConsumerBindingRegistryV1, i as ProviderRegistryV1, j as WorkspaceCredentialResolverV1, k as ProviderCredentialRefV1, l as ResolvedCredentialLeaseV1 } from '../lease-BqeCLGPL.js';
8
+ import { s as AgentConfig, b as Agent, d as AgentActor, j as AgentEvent, t as AgentTool, u as AgentHarnessFactory, T as TelemetrySink, A as AgentHarness } from '../harness-Cc48o6uS.js';
9
+ export { v as AgentHarnessFactoryInput } from '../harness-Cc48o6uS.js';
10
+ import { b as PiChatEvent, E as ErrorCode, l as SessionCtx, S as SessionStore, m as SessionListOptions, k as SessionSummary, n as PiChatSnapshot, c as PromptPayload, d as PromptReceipt, F as FollowUpPayload, e as FollowUpReceipt, f as QueueClearPayload, g as QueueClearReceipt, I as InterruptPayload, i as StopPayload, j as StopReceipt } from '../piChatEvent-BsMp3MSo.js';
11
+ import { A as AgentGateway, a as AuthorizedAgentScope, b as AgentSessionRef, c as AgentSessionActivity, V as VerifiedAgentScopeClaim, d as AgentSessionSummary, e as AgentSessionStateSnapshot, f as AgentSessionConnection, J as JsonValue, g as AgentGatewayErrorDTO } from '../errors-C38f6pol.js';
12
12
  import { IncomingMessage, ServerResponse } from 'node:http';
13
13
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
14
14
  import { FastifyRequest, FastifyInstance, FastifyPluginAsync } from 'fastify';
15
- import { i as PiSessionRequestContext, g as PiChatSessionService, h as PiSessionCreateInit, e as PiChatEventSubscriber, P as PiChatEventStreamResult, a as AgentEffectAdmission$1 } from '../piChatSessionService-BaaVWke7.js';
15
+ import { i as PiSessionRequestContext, g as PiChatSessionService, h as PiSessionCreateInit, e as PiChatEventSubscriber, P as PiChatEventStreamResult, a as AgentEffectAdmission$1 } from '../piChatSessionService-BrPqKrpY.js';
16
16
  import { BoringAgentRuntimePaths } from '@hachej/boring-sandbox/providers/node-workspace';
17
17
  import '@hachej/boring-bash/agent';
18
18
  import '@mariozechner/pi-coding-agent';
@@ -62,7 +62,7 @@ import {
62
62
  sandboxRuntimeHostOperations,
63
63
  shareResourceUri,
64
64
  withResolvedCredential
65
- } from "../chunk-BHH5NH7P.js";
65
+ } from "../chunk-V3ZD3T3G.js";
66
66
  import {
67
67
  PI_PACKAGE_RESOURCE_FILTERS,
68
68
  compactPiPackages,
@@ -74,7 +74,7 @@ import "../chunk-CJ2BW2W2.js";
74
74
  import "../chunk-NITBKFG6.js";
75
75
  import "../chunk-AQBXNPMD.js";
76
76
  import "../chunk-WSQ5QNIY.js";
77
- import "../chunk-PZC76CIA.js";
77
+ import "../chunk-OFQ7J6SI.js";
78
78
  import "../chunk-2GBHYJVC.js";
79
79
  export {
80
80
  AgentDirectoryCompilerError,
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  WORKER_INTERNAL_TOKEN_HEADER,
3
3
  constantTimeTokenEqual
4
- } from "../../chunk-BHH5NH7P.js";
4
+ } from "../../chunk-V3ZD3T3G.js";
5
5
  import "../../chunk-IWBC6SF7.js";
6
6
  import "../../chunk-CJ2BW2W2.js";
7
7
  import "../../chunk-NITBKFG6.js";
8
8
  import "../../chunk-AQBXNPMD.js";
9
9
  import "../../chunk-WSQ5QNIY.js";
10
- import "../../chunk-PZC76CIA.js";
10
+ import "../../chunk-OFQ7J6SI.js";
11
11
  import "../../chunk-2GBHYJVC.js";
12
12
 
13
13
  // src/server/worker/index.ts
@@ -1,13 +1,13 @@
1
- import { t as AgentTool } from '../harness-Bt_GMNYR.js';
2
- export { c as AGENT_NOT_IMPLEMENTED_UNTIL_T1, b as Agent, d as AgentActor, e as AgentCoreHarness, f as AgentCoreHarnessFactory, g as AgentCorePromptInput, h as AgentCoreSessionAdapter, i as AgentCoreSessionSnapshot, j as AgentEvent, A as AgentHarness, k as AgentMessageContent, l as AgentMessagePart, m as AgentNotImplementedError, a as AgentReadiness, n as AgentReadinessStatus, o as AgentResolveInputResponse, x as AgentRuntimeAdapter, p as AgentSendInput, q as AgentStartReceipt, r as AgentStreamOptions, s as CoreAgentConfig, J as JSONSchema, M as MessageAttachment, R as RunContext, S as SendMessageInput, y as TelemetryEvent, T as TelemetrySink, z as ToolExecContext, B as ToolResult, C as noopTelemetry, D as safeCapture, E as sessionStreamPath } from '../harness-Bt_GMNYR.js';
3
- import { m as SchemaValidationError, n as AgentSchemaIssue, a as Sha256Digest, o as AgentSchemaValidationResult, p as CredentialConsumerBindingId, e as CredentialFieldId, k as ProviderCredentialRefV1, f as AuthorizedWorkspaceCredentialScopeV1 } from '../lease-2aXepSBL.js';
4
- export { q as AgentDefinition, r as AgentDefinitionDigestAsset, s as AgentDefinitionReference, t as AgentDefinitionValidationError, A as AgentDeployment, u as AgentDeploymentValidationError, v as CommandNotifyPayload, C as CompiledAgentBundle, w as CompiledAgentDefinition, x as CreateShareEntryInput, h as CredentialConsumerBindingRegistryV1, y as CredentialConsumerBindingV1, z as CredentialConsumerKindV1, B as CredentialDeliveryV1, D as CredentialFieldDefinitionV1, E as ExternalManagedAccountReferenceDefinitionV1, I as InMemoryShareEntryStore, O as OpaqueRefSchema, F as OpaqueShareLocatorIdSchema, G as PROVIDER_CREDENTIAL_REF_VERSION, H as ProviderCategoryV1, J as ProviderCredentialDefinitionV1, K as ProviderCredentialRefFactoryV1, L as ProviderDefinitionV1, d as ProviderId, i as ProviderRegistryV1, l as ResolvedCredentialLeaseV1, R as ResolvedCredentialMaterialV1, M as SandboxHandleRecord, S as SandboxHandleStore, N as Sha256DigestSchema, Q as ShareEntryErrorCode, T as ShareEntryProvenance, U as ShareEntryProvenanceSchema, X as ShareEntryResolution, b as ShareEntryStore, Y as ShareEntryTombstone, Z as ShareEntryV1, _ as ShareEntryV1Schema, $ as ShareEntryValidationError, V as VerifiedWorkspaceCredentialAuthorityV1, a0 as VerifiedWorkspaceCredentialPrincipalV1, a1 as WORKSPACE_AGENT_PLUGINS_RELOADED_EVENT, a2 as WORKSPACE_COMMAND_NOTIFY_EVENT, a3 as WorkspaceAgentDispatch, c as WorkspaceAgentDispatcher, W as WorkspaceAgentDispatcherContext, a4 as WorkspaceAgentDispatcherDispatchInput, a5 as WorkspaceAgentDispatcherSendInput, a6 as WorkspaceAgentGatewayBinding, g as WorkspaceCredentialAuthorityVerifierV1, j as WorkspaceCredentialResolverV1, a7 as createAgentAssetDigest, a8 as createAgentDefinitionDigest, a9 as createAgentDeploymentDigest, aa as createCredentialConsumerBindingRegistryV1, ab as createProviderCredentialRefFactoryV1, ac as createProviderRegistryV1, ad as resolveShareEntry, ae as validateAgentDefinition, af as validateAgentDeployment } from '../lease-2aXepSBL.js';
1
+ import { t as AgentTool } from '../harness-Cc48o6uS.js';
2
+ export { c as AGENT_NOT_IMPLEMENTED_UNTIL_T1, b as Agent, d as AgentActor, e as AgentCoreHarness, f as AgentCoreHarnessFactory, g as AgentCorePromptInput, h as AgentCoreSessionAdapter, i as AgentCoreSessionSnapshot, j as AgentEvent, A as AgentHarness, k as AgentMessageContent, l as AgentMessagePart, m as AgentNotImplementedError, a as AgentReadiness, n as AgentReadinessStatus, o as AgentResolveInputResponse, x as AgentRuntimeAdapter, p as AgentSendInput, q as AgentStartReceipt, r as AgentStreamOptions, s as CoreAgentConfig, J as JSONSchema, M as MessageAttachment, R as RunContext, S as SendMessageInput, y as TelemetryEvent, T as TelemetrySink, z as ToolExecContext, B as ToolResult, C as noopTelemetry, D as safeCapture, E as sessionStreamPath } from '../harness-Cc48o6uS.js';
3
+ import { m as SchemaValidationError, n as AgentSchemaIssue, a as Sha256Digest, o as AgentSchemaValidationResult, p as CredentialConsumerBindingId, e as CredentialFieldId, k as ProviderCredentialRefV1, f as AuthorizedWorkspaceCredentialScopeV1 } from '../lease-BqeCLGPL.js';
4
+ export { q as AgentDefinition, r as AgentDefinitionDigestAsset, s as AgentDefinitionReference, t as AgentDefinitionValidationError, A as AgentDeployment, u as AgentDeploymentValidationError, v as CommandNotifyPayload, C as CompiledAgentBundle, w as CompiledAgentDefinition, x as CreateShareEntryInput, h as CredentialConsumerBindingRegistryV1, y as CredentialConsumerBindingV1, z as CredentialConsumerKindV1, B as CredentialDeliveryV1, D as CredentialFieldDefinitionV1, E as ExternalManagedAccountReferenceDefinitionV1, I as InMemoryShareEntryStore, O as OpaqueRefSchema, F as OpaqueShareLocatorIdSchema, G as PROVIDER_CREDENTIAL_REF_VERSION, H as ProviderCategoryV1, J as ProviderCredentialDefinitionV1, K as ProviderCredentialRefFactoryV1, L as ProviderDefinitionV1, d as ProviderId, i as ProviderRegistryV1, l as ResolvedCredentialLeaseV1, R as ResolvedCredentialMaterialV1, M as SandboxHandleRecord, S as SandboxHandleStore, N as Sha256DigestSchema, Q as ShareEntryErrorCode, T as ShareEntryProvenance, U as ShareEntryProvenanceSchema, X as ShareEntryResolution, b as ShareEntryStore, Y as ShareEntryTombstone, Z as ShareEntryV1, _ as ShareEntryV1Schema, $ as ShareEntryValidationError, V as VerifiedWorkspaceCredentialAuthorityV1, a0 as VerifiedWorkspaceCredentialPrincipalV1, a1 as WORKSPACE_AGENT_PLUGINS_RELOADED_EVENT, a2 as WORKSPACE_COMMAND_NOTIFY_EVENT, a3 as WorkspaceAgentDispatch, c as WorkspaceAgentDispatcher, W as WorkspaceAgentDispatcherContext, a4 as WorkspaceAgentDispatcherDispatchInput, a5 as WorkspaceAgentDispatcherSendInput, a6 as WorkspaceAgentGatewayBinding, g as WorkspaceCredentialAuthorityVerifierV1, j as WorkspaceCredentialResolverV1, a7 as createAgentAssetDigest, a8 as createAgentDefinitionDigest, a9 as createAgentDeploymentDigest, aa as createCredentialConsumerBindingRegistryV1, ab as createProviderCredentialRefFactoryV1, ac as createProviderRegistryV1, ad as resolveShareEntry, ae as validateAgentDefinition, af as validateAgentDeployment } from '../lease-BqeCLGPL.js';
5
5
  import { b as Workspace, S as Sandbox } from '../sandbox-DAD8cWQR.js';
6
6
  export { e as Entry, E as ExecOptions, a as ExecResult, I as IsolatedCodeInput, f as IsolatedCodeOutput, g as SandboxCapability, d as Stat, c as WorkspaceRuntimeContext, h as WorkspaceWatchControlEvent } from '../sandbox-DAD8cWQR.js';
7
- import { B as BoringChatPart, T as ToolUiMetadata, A as AgentConsumptionErrorCode } from '../piChatEvent-DBO3M5lu.js';
8
- export { p as AgentDefinitionErrorCode, q as AgentDeploymentErrorCode, r as ApiErrorPayload, s as ApiErrorPayloadSchema, t as ApiErrorResponse, u as ApiErrorResponseSchema, a as BoringChatMessage, v as ChatAttachmentPayload, C as ChatError, o as ChatModelSelection, w as ChatSubmitPayload, h as CommandReceipt, x as ERROR_CODES, E as ErrorCode, y as ErrorLogFields, z as ErrorLogFieldsSchema, F as FollowUpPayload, e as FollowUpReceipt, I as InterruptPayload, D as InterruptReceipt, b as PiChatEvent, G as PiChatHeartbeatFrame, n as PiChatSnapshot, P as PiChatStatus, H as PiChatStreamFrame, c as PromptPayload, d as PromptReceipt, f as QueueClearPayload, g as QueueClearReceipt, Q as QueuedUserMessage, l as SessionCtx, J as SessionDetail, S as SessionStore, k as SessionSummary, i as StopPayload, j as StopReceipt, K as ThinkingLevel, L as extractToolUiMetadata, M as isToolUiMetadata } from '../piChatEvent-DBO3M5lu.js';
9
- import { F as FileSearch } from '../errors-BEmw9HMp.js';
10
- export { i as AGENT_GATEWAY_ERROR_CODES, j as AgentFollowUpCommand, A as AgentGateway, k as AgentGatewayError, l as AgentGatewayErrorCode, g as AgentGatewayErrorDTO, m as AgentPromptCommand, h as AgentScopeVerifier, n as AgentSendReceipt, c as AgentSessionActivity, f as AgentSessionConnection, o as AgentSessionEvent, p as AgentSessionPage, b as AgentSessionRef, e as AgentSessionStateSnapshot, d as AgentSessionSummary, q as AgentSummary, r as AuthSubjectId, a as AuthorizedAgentScope, s as AuthorizedAgentSessionQuery, C as ConnectAgentSessionInput, t as CreateAgentSessionInput, D as DeleteAgentSessionInput, I as IdempotentAgentControl, u as IdempotentAgentSend, v as IdempotentQueueClear, w as JsonPrimitive, x as JsonSafe, J as JsonValue, L as ListAgentsInput, R as ReadAgentSessionStateInput, y as RenameAgentSessionInput, V as VerifiedAgentScopeClaim, W as WorkspaceScopeId } from '../errors-BEmw9HMp.js';
7
+ import { B as BoringChatPart, T as ToolUiMetadata, A as AgentConsumptionErrorCode } from '../piChatEvent-BsMp3MSo.js';
8
+ export { p as AgentDefinitionErrorCode, q as AgentDeploymentErrorCode, r as ApiErrorPayload, s as ApiErrorPayloadSchema, t as ApiErrorResponse, u as ApiErrorResponseSchema, a as BoringChatMessage, v as ChatAttachmentPayload, C as ChatError, o as ChatModelSelection, w as ChatSubmitPayload, h as CommandReceipt, x as ERROR_CODES, E as ErrorCode, y as ErrorLogFields, z as ErrorLogFieldsSchema, F as FollowUpPayload, e as FollowUpReceipt, I as InterruptPayload, D as InterruptReceipt, b as PiChatEvent, G as PiChatHeartbeatFrame, n as PiChatSnapshot, P as PiChatStatus, H as PiChatStreamFrame, c as PromptPayload, d as PromptReceipt, f as QueueClearPayload, g as QueueClearReceipt, Q as QueuedUserMessage, l as SessionCtx, J as SessionDetail, S as SessionStore, k as SessionSummary, i as StopPayload, j as StopReceipt, K as ThinkingLevel, L as extractToolUiMetadata, M as isToolUiMetadata } from '../piChatEvent-BsMp3MSo.js';
9
+ import { F as FileSearch } from '../errors-C38f6pol.js';
10
+ export { i as AGENT_GATEWAY_ERROR_CODES, j as AgentFollowUpCommand, A as AgentGateway, k as AgentGatewayError, l as AgentGatewayErrorCode, g as AgentGatewayErrorDTO, m as AgentPromptCommand, h as AgentScopeVerifier, n as AgentSendReceipt, c as AgentSessionActivity, f as AgentSessionConnection, o as AgentSessionEvent, p as AgentSessionPage, b as AgentSessionRef, e as AgentSessionStateSnapshot, d as AgentSessionSummary, q as AgentSummary, r as AuthSubjectId, a as AuthorizedAgentScope, s as AuthorizedAgentSessionQuery, C as ConnectAgentSessionInput, t as CreateAgentSessionInput, D as DeleteAgentSessionInput, I as IdempotentAgentControl, u as IdempotentAgentSend, v as IdempotentQueueClear, w as JsonPrimitive, x as JsonSafe, J as JsonValue, L as ListAgentsInput, R as ReadAgentSessionStateInput, y as RenameAgentSessionInput, V as VerifiedAgentScopeClaim, W as WorkspaceScopeId } from '../errors-C38f6pol.js';
11
11
  import { z } from 'zod';
12
12
  import '@mariozechner/pi-coding-agent';
13
13
 
@@ -587,16 +587,19 @@ declare const PiChatEventSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
587
587
  type: z.ZodLiteral<"file-changed">;
588
588
  path: z.ZodString;
589
589
  changeType: z.ZodString;
590
+ filesystem: z.ZodOptional<z.ZodString>;
590
591
  }, "strip", z.ZodTypeAny, {
591
592
  path: string;
592
593
  type: "file-changed";
593
594
  seq: number;
594
595
  changeType: string;
596
+ filesystem?: string | undefined;
595
597
  }, {
596
598
  path: string;
597
599
  type: "file-changed";
598
600
  seq: number;
599
601
  changeType: string;
602
+ filesystem?: string | undefined;
600
603
  }>, z.ZodObject<{
601
604
  seq: z.ZodNumber;
602
605
  } & {
@@ -1045,16 +1048,19 @@ declare const PiChatStreamFrameSchema: z.ZodUnion<[z.ZodDiscriminatedUnion<"type
1045
1048
  type: z.ZodLiteral<"file-changed">;
1046
1049
  path: z.ZodString;
1047
1050
  changeType: z.ZodString;
1051
+ filesystem: z.ZodOptional<z.ZodString>;
1048
1052
  }, "strip", z.ZodTypeAny, {
1049
1053
  path: string;
1050
1054
  type: "file-changed";
1051
1055
  seq: number;
1052
1056
  changeType: string;
1057
+ filesystem?: string | undefined;
1053
1058
  }, {
1054
1059
  path: string;
1055
1060
  type: "file-changed";
1056
1061
  seq: number;
1057
1062
  changeType: string;
1063
+ filesystem?: string | undefined;
1058
1064
  }>, z.ZodObject<{
1059
1065
  seq: z.ZodNumber;
1060
1066
  } & {
@@ -98,7 +98,7 @@ import {
98
98
  extractToolUiMetadata,
99
99
  isToolUiMetadata,
100
100
  sanitizeToolUiMetadata2 as sanitizeToolUiMetadata
101
- } from "../chunk-PZC76CIA.js";
101
+ } from "../chunk-OFQ7J6SI.js";
102
102
  import {
103
103
  AgentConsumptionErrorCode,
104
104
  AgentDefinitionErrorCode,
@@ -1,13 +1,13 @@
1
1
  import * as fastify from 'fastify';
2
2
  import { FastifyRequest, FastifyPluginAsync } from 'fastify';
3
- import { w as ToolReadinessRequirement, T as TelemetrySink, b as Agent, A as AgentHarness, t as AgentTool, u as AgentHarnessFactory } from './harness-Bt_GMNYR.js';
4
- import { F as FileSearch, b as AgentSessionRef, V as VerifiedAgentScopeClaim, g as AgentGatewayErrorDTO, J as JsonValue, a as AuthorizedAgentScope, A as AgentGateway, h as AgentScopeVerifier } from './errors-BEmw9HMp.js';
5
- import { o as ChatModelSelection } from './piChatEvent-DBO3M5lu.js';
3
+ import { w as ToolReadinessRequirement, T as TelemetrySink, b as Agent, A as AgentHarness, t as AgentTool, u as AgentHarnessFactory } from './harness-Cc48o6uS.js';
4
+ import { F as FileSearch, b as AgentSessionRef, V as VerifiedAgentScopeClaim, g as AgentGatewayErrorDTO, J as JsonValue, a as AuthorizedAgentScope, A as AgentGateway, h as AgentScopeVerifier } from './errors-C38f6pol.js';
5
+ import { o as ChatModelSelection } from './piChatEvent-BsMp3MSo.js';
6
6
  import { b as Workspace, c as WorkspaceRuntimeContext, S as Sandbox } from './sandbox-DAD8cWQR.js';
7
7
  import { RuntimeHostOperations } from '@hachej/boring-bash/agent';
8
8
  import { CreateNodeWorkspaceOptions, BoringAgentRuntimePaths } from '@hachej/boring-sandbox/providers/node-workspace';
9
9
  import { PackageSource, ExtensionFactory, SettingsManager } from '@mariozechner/pi-coding-agent';
10
- import { A as AgentCoreSessionService, g as PiChatSessionService } from './piChatSessionService-BaaVWke7.js';
10
+ import { A as AgentCoreSessionService, g as PiChatSessionService } from './piChatSessionService-BrPqKrpY.js';
11
11
 
12
12
  /**
13
13
  * Generic metering seam for hosts that bill native Pi usage.
package/docs/runtime.md CHANGED
@@ -204,11 +204,11 @@ modes, the adapter maps that host path into the public runtime namespace
204
204
 
205
205
  ### Production storage roots in `vercel-sandbox` mode
206
206
 
207
- In a Fly-hosted app using `BORING_AGENT_MODE=vercel-sandbox`, there are two
207
+ In a hosted app using `BORING_AGENT_MODE=vercel-sandbox`, there are two
208
208
  filesystems with different jobs:
209
209
 
210
210
  ```txt
211
- Fly app container / mounted volume:
211
+ App container / mounted volume:
212
212
  /data/workspaces/<workspaceId> host/control-plane workspace anchor
213
213
  /data/pi-sessions/<workspaceId> durable chat transcript storage
214
214
 
@@ -225,7 +225,7 @@ Those belong to the sandbox runtime root, `/workspace`.
225
225
 
226
226
  Production chat history also must not use the container root filesystem. Set
227
227
  `BORING_AGENT_SESSION_ROOT` to a mounted-volume path such as `/data/pi-sessions`
228
- so Pi wrapper/native transcripts survive Fly deploys and restarts. Core-hosted
228
+ so Pi wrapper/native transcripts survive host deploys and restarts. Core-hosted
229
229
  apps that run `vercel-sandbox` with `BORING_AGENT_WORKSPACE_ROOT=/data/workspaces`
230
230
  default this to the sibling `/data/pi-sessions` path when the env var is absent.
231
231
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hachej/boring-agent",
3
- "version": "0.1.91",
3
+ "version": "0.1.92",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Pane-embeddable coding agent. Ships direct/local/vercel-sandbox execution modes behind one interface.",
@@ -76,27 +76,27 @@
76
76
  "@streamdown/math": "^1.0.2",
77
77
  "@streamdown/mermaid": "^1.0.2",
78
78
  "@tanstack/react-query": "^5.101.1",
79
- "ai": "^7.0.9",
79
+ "ai": "^7.0.31",
80
80
  "class-variance-authority": "^0.7.1",
81
81
  "clsx": "^2.1.1",
82
82
  "cmdk": "^1.1.1",
83
83
  "diff": "^9.0.0",
84
84
  "fastify": "^5.9.0",
85
- "lucide-react": "^1.21.0",
85
+ "lucide-react": "^1.25.0",
86
86
  "motion": "^12.42.0",
87
- "nanoid": "^5.1.16",
87
+ "nanoid": "^6.0.0",
88
88
  "shiki": "^4.3.0",
89
89
  "streamdown": "^2.5.0",
90
90
  "tailwind-merge": "^3.5.0",
91
91
  "use-stick-to-bottom": "^1.1.6",
92
92
  "yaml": "^2.9.0",
93
93
  "zod": "^3.25.76",
94
- "@hachej/boring-sandbox": "0.1.91",
95
- "@hachej/boring-ui-kit": "0.1.91",
96
- "@hachej/boring-bash": "0.1.91"
94
+ "@hachej/boring-bash": "0.1.92",
95
+ "@hachej/boring-sandbox": "0.1.92",
96
+ "@hachej/boring-ui-kit": "0.1.92"
97
97
  },
98
98
  "devDependencies": {
99
- "@vercel/sandbox": "2.3.0",
99
+ "@vercel/sandbox": "2.7.1",
100
100
  "@antithesishq/bombadil": "0.6.1",
101
101
  "@opentelemetry/api": "^1.9.1",
102
102
  "@tailwindcss/postcss": "^4.3.1",
@@ -112,7 +112,7 @@
112
112
  "tsup": "^8.4.0",
113
113
  "tsx": "^4.23.1",
114
114
  "typescript": "^6.0.3",
115
- "vite": "^8.1.2",
115
+ "vite": "^8.1.5",
116
116
  "vitest": "^4.1.9"
117
117
  },
118
118
  "peerDependencies": {