@hachej/boring-workspace 0.1.61 → 0.1.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  import { PiPackageSource, PiExtensionFactory, CreateAgentAppOptions, ProvisionWorkspaceRuntimeOptions } from '@hachej/boring-agent/server';
2
2
  export { PiPackageSource as WorkspacePiPackageSource } from '@hachej/boring-agent/server';
3
3
  import { FastifyInstance } from 'fastify';
4
- import { W as WorkspaceServerPlugin, S as ServerBootstrapOptions, a as WorkspaceBridgeRegistry, B as BridgeAuthPolicy, b as WorkspaceBridgeHandler, c as WorkspaceBridgeRuntimeEnvOptions, d as BoringPluginSourceInput, e as BoringPluginFrontTargetResolver, f as WorkspaceProvisioningContribution, g as WorkspaceRouteContribution, h as createInMemoryBridge } from './runtimeEnv-XVFZ1OkV.js';
5
- export { i as ServerWorkspaceRuntimeProvisioningInput } from './runtimeEnv-XVFZ1OkV.js';
4
+ import { W as WorkspaceServerPlugin, S as ServerBootstrapOptions, a as WorkspaceBridgeRegistry, B as BridgeAuthPolicy, b as WorkspaceBridgeHandler, c as WorkspaceBridgeRuntimeEnvOptions, d as BoringPluginSourceInput, e as BoringPluginFrontTargetResolver, f as createInMemoryBridge, g as WorkspaceProvisioningContribution, h as WorkspaceRouteContribution } from './runtimeEnv-B8XJz-k4.js';
5
+ export { i as ServerWorkspaceRuntimeProvisioningInput } from './runtimeEnv-B8XJz-k4.js';
6
6
  import { W as WorkspaceBridgeOperationDefinition } from './workspace-bridge-rpc-A98RA5o6.js';
7
7
  import './manifest-C2vVgH_e.js';
8
8
  import './agent-tool-CB0RQyx9.js';
@@ -176,6 +176,7 @@ interface WorkspaceAgentServerPluginCollection {
176
176
  routeContributions: WorkspaceRouteContribution[];
177
177
  workspaceBridgeHandlers: WorkspaceServerPlugin["workspaceBridgeHandlers"];
178
178
  preservedUiStateKeys: string[];
179
+ defaultPluginPackagePaths: string[];
179
180
  agentOptions: Pick<WorkspaceAgentCreateOptions, "extraTools" | "systemPromptAppend" | "pi">;
180
181
  }
181
182
  interface CollectWorkspaceAgentServerPluginsOptions extends Pick<ServerBootstrapOptions, "plugins" | "defaults" | "excludeDefaults"> {
@@ -185,10 +186,18 @@ interface CollectWorkspaceAgentServerPluginsOptions extends Pick<ServerBootstrap
185
186
  /** Whether to include built-in boring plugin-authoring provisioning/prompt resources. */
186
187
  installPluginAuthoring?: boolean;
187
188
  }
189
+ interface ResolveWorkspaceAgentServerPluginCollectionOptions extends Omit<CollectWorkspaceAgentServerPluginsOptions, "plugins"> {
190
+ workspaceRoot: string;
191
+ bridge: ReturnType<typeof createInMemoryBridge>;
192
+ defaultPluginPackages?: string[];
193
+ appRoot?: string;
194
+ plugins?: WorkspacePluginEntry[];
195
+ }
188
196
  declare function buildWorkspaceContextPrompt(options?: {
189
197
  pluginAuthoringEnabled?: boolean;
190
198
  }): string;
191
199
  declare function collectWorkspaceAgentServerPlugins(opts?: CollectWorkspaceAgentServerPluginsOptions): WorkspaceAgentServerPluginCollection;
200
+ declare function resolveWorkspaceAgentServerPluginCollection(opts: ResolveWorkspaceAgentServerPluginCollectionOptions): Promise<WorkspaceAgentServerPluginCollection>;
192
201
  declare function provisionWorkspaceAgentServer(opts: {
193
202
  workspaceRoot: string;
194
203
  provisioningContributions?: WorkspaceProvisioningContribution[];
@@ -230,4 +239,4 @@ interface ResolveDefaultWorkspacePluginPackagePathsOptions {
230
239
  */
231
240
  declare function resolveDefaultWorkspacePluginPackagePaths({ workspaceRoot, defaultPluginPackages, anchorDir, }?: ResolveDefaultWorkspacePluginPackagePathsOptions): string[];
232
241
 
233
- export { type CollectWorkspaceAgentServerPluginsOptions, type CreateWorkspaceAgentServerOptions, type DirPluginEntry, PLUGIN_AUTHORING_PROVISIONING_IDS, type PluginResolveContext, type ResolveDefaultWorkspacePluginPackagePathsOptions, type WorkspaceAgentPiOptions, type WorkspaceAgentServerPluginCollection, type WorkspaceAgentServerPluginContext, type WorkspacePluginEntry, type WorkspacePluginPackagePiSnapshot, WorkspaceProvisioningContribution, WorkspaceRouteContribution, type WorkspaceRuntimeProvisioningInput, assertWorkspaceBridgeHandlersTrusted, buildWorkspaceContextPrompt, collectWorkspaceAgentServerPlugins, createWorkspaceAgentServer, hasDirServerPlugin, isTrustedWorkspaceBridgeHandlerEntry, omitPluginAuthoringProvisioning, provisionWorkspaceAgentServer, readWorkspacePluginPackagePiSnapshot, readWorkspacePluginPackageRuntimePlugins, resolveDefaultWorkspacePluginPackagePaths, resolveOnePluginEntry };
242
+ export { type CollectWorkspaceAgentServerPluginsOptions, type CreateWorkspaceAgentServerOptions, type DirPluginEntry, PLUGIN_AUTHORING_PROVISIONING_IDS, type PluginResolveContext, type ResolveDefaultWorkspacePluginPackagePathsOptions, type ResolveWorkspaceAgentServerPluginCollectionOptions, type WorkspaceAgentPiOptions, type WorkspaceAgentServerPluginCollection, type WorkspaceAgentServerPluginContext, type WorkspacePluginEntry, type WorkspacePluginPackagePiSnapshot, WorkspaceProvisioningContribution, WorkspaceRouteContribution, type WorkspaceRuntimeProvisioningInput, assertWorkspaceBridgeHandlersTrusted, buildWorkspaceContextPrompt, collectWorkspaceAgentServerPlugins, createWorkspaceAgentServer, hasDirServerPlugin, isTrustedWorkspaceBridgeHandlerEntry, omitPluginAuthoringProvisioning, provisionWorkspaceAgentServer, readWorkspacePluginPackagePiSnapshot, readWorkspacePluginPackageRuntimePlugins, resolveDefaultWorkspacePluginPackagePaths, resolveOnePluginEntry, resolveWorkspaceAgentServerPluginCollection };
@@ -2979,8 +2979,9 @@ function uiRoutes(app, opts, done) {
2979
2979
  const body = request.body;
2980
2980
  const bridge = await resolveBridge(request);
2981
2981
  const current = await bridge.getState() ?? {};
2982
+ const preserveStateKeys = opts.getPreserveStateKeys ? await opts.getPreserveStateKeys(request) : opts.preserveStateKeys ?? [];
2982
2983
  const preserved = Object.fromEntries(
2983
- (opts.preserveStateKeys ?? []).filter((key) => !(key in body.state) && key in current).map((key) => [key, current[key]])
2984
+ preserveStateKeys.filter((key) => !(key in body.state) && key in current).map((key) => [key, current[key]])
2984
2985
  );
2985
2986
  await bridge.setState({ ...body.state, ...preserved });
2986
2987
  return reply.code(204).send();
@@ -3928,6 +3929,7 @@ function collectWorkspaceAgentServerPlugins(opts = {}) {
3928
3929
  routeContributions: result.routeContributions,
3929
3930
  workspaceBridgeHandlers: result.workspaceBridgeHandlers,
3930
3931
  preservedUiStateKeys: result.preservedUiStateKeys,
3932
+ defaultPluginPackagePaths: [],
3931
3933
  agentOptions: {
3932
3934
  extraTools: result.agentTools,
3933
3935
  systemPromptAppend: [opts.systemPromptAppend, result.systemPromptAppend].filter(Boolean).join("\n\n") || void 0,
@@ -3944,6 +3946,31 @@ function collectWorkspaceAgentServerPlugins(opts = {}) {
3944
3946
  }
3945
3947
  };
3946
3948
  }
3949
+ async function resolveWorkspaceAgentServerPluginCollection(opts) {
3950
+ const ctx = { workspaceRoot: opts.workspaceRoot, bridge: opts.bridge };
3951
+ const defaultPluginPackagePaths = resolveDefaultWorkspacePluginPackagePaths({
3952
+ workspaceRoot: opts.workspaceRoot,
3953
+ defaultPluginPackages: opts.defaultPluginPackages,
3954
+ anchorDir: opts.appRoot
3955
+ });
3956
+ const defaultPluginDirEntries = defaultPluginPackagePaths.map((dir) => ({ dir, hotReload: true, trust: "internal" })).filter((entry) => hasDirServerPlugin(entry));
3957
+ const allPluginEntries = [
3958
+ ...defaultPluginDirEntries,
3959
+ ...opts.plugins ?? []
3960
+ ];
3961
+ const resolvedPlugins = await Promise.all(
3962
+ allPluginEntries.map(async (entry) => {
3963
+ const plugin = await resolveOnePluginEntry(entry, ctx);
3964
+ assertWorkspaceBridgeHandlersTrusted(plugin, entry);
3965
+ return plugin;
3966
+ })
3967
+ );
3968
+ const collection = collectWorkspaceAgentServerPlugins({
3969
+ ...opts,
3970
+ plugins: resolvedPlugins
3971
+ });
3972
+ return { ...collection, defaultPluginPackagePaths };
3973
+ }
3947
3974
  async function provisionWorkspaceAgentServer(opts) {
3948
3975
  if (!opts.provisioningContributions?.length) return;
3949
3976
  await provisionRuntimeWorkspace({
@@ -4117,30 +4144,19 @@ async function createWorkspaceAgentServer(opts = {}) {
4117
4144
  const uiTools = createWorkspaceUiTools(bridge, {
4118
4145
  workspaceRoot: validateUiPaths ? workspaceRoot : void 0
4119
4146
  });
4120
- const ctx = { workspaceRoot, bridge };
4121
- const defaultPluginPackagePaths = resolveDefaultWorkspacePluginPackagePaths({
4147
+ const pluginAuthoringEnabled = externalPluginsEnabled && (opts.installPluginAuthoring ?? workspaceFsCapability === "strong") && !(opts.excludeDefaults ?? []).includes("boring-ui-plugin-cli-package");
4148
+ const pluginCollection = await resolveWorkspaceAgentServerPluginCollection({
4149
+ ...opts,
4122
4150
  workspaceRoot,
4123
- defaultPluginPackages: opts.defaultPluginPackages,
4124
- anchorDir: opts.appRoot
4151
+ bridge,
4152
+ installPluginAuthoring: pluginAuthoringEnabled
4125
4153
  });
4126
- const defaultPluginDirEntries = defaultPluginPackagePaths.map((dir) => ({ dir, hotReload: true, trust: "internal" })).filter((entry) => hasDirServerPlugin(entry));
4154
+ const defaultPluginPackagePaths = pluginCollection.defaultPluginPackagePaths;
4155
+ const ctx = { workspaceRoot, bridge };
4127
4156
  const allPluginEntries = [
4128
- ...defaultPluginDirEntries,
4157
+ ...defaultPluginPackagePaths.map((dir) => ({ dir, hotReload: true, trust: "internal" })).filter((entry) => hasDirServerPlugin(entry)),
4129
4158
  ...opts.plugins ?? []
4130
4159
  ];
4131
- const resolvedPlugins = await Promise.all(
4132
- allPluginEntries.map(async (entry) => {
4133
- const plugin = await resolveOnePluginEntry(entry, ctx);
4134
- assertWorkspaceBridgeHandlersTrusted(plugin, entry);
4135
- return plugin;
4136
- })
4137
- );
4138
- const pluginAuthoringEnabled = externalPluginsEnabled && (opts.installPluginAuthoring ?? workspaceFsCapability === "strong") && !(opts.excludeDefaults ?? []).includes("boring-ui-plugin-cli-package");
4139
- const pluginCollection = collectWorkspaceAgentServerPlugins({
4140
- ...opts,
4141
- plugins: resolvedPlugins,
4142
- installPluginAuthoring: pluginAuthoringEnabled
4143
- });
4144
4160
  const { registry: workspaceBridgeRegistry } = createWorkspaceBridgeRuntimeCore({
4145
4161
  registry: opts.workspaceBridge?.registry,
4146
4162
  ownerWorkspaceId: "default",
@@ -4364,5 +4380,6 @@ export {
4364
4380
  readWorkspacePluginPackagePiSnapshot,
4365
4381
  readWorkspacePluginPackageRuntimePlugins,
4366
4382
  resolveDefaultWorkspacePluginPackagePaths,
4367
- resolveOnePluginEntry
4383
+ resolveOnePluginEntry,
4384
+ resolveWorkspaceAgentServerPluginCollection
4368
4385
  };
@@ -350,4 +350,4 @@ declare function createWorkspaceBridgeRuntimeEnvContribution(options: CreateWork
350
350
  declare function resolveBridgeCallUrl(value: string | undefined): string | undefined;
351
351
  declare function resolveBridgeTokenUrl(value: string | undefined): string | undefined;
352
352
 
353
- export { type WorkspaceBridgeCallContext as A, type BridgeAuthPolicy as B, type CreateWorkspaceBridgeRuntimeEnvContributionOptions as C, type WorkspaceBridgeHandlerArgs as D, type WorkspaceBridgeHandlerContribution as E, type WorkspaceBridgeRegistryCallOptions as F, type WorkspaceBridgeRegistryLogger as G, type WorkspaceBridgeRegistryOptions as H, type WorkspaceBridgeRuntimeEnvDisabledReason as I, type WorkspaceBridgeRuntimePlacement as J, bootstrapServer as K, type LocalCliBridgeAuthPolicyOptions as L, createBrowserBridgeAuthPolicy as M, createLocalCliBridgeAuthPolicy as N, createWorkspaceBridgeRegistry as O, type PluginRestartSurface as P, createWorkspaceBridgeRuntimeEnvContribution as Q, type RegisterWorkspaceBridgeHandlerOptions as R, type ServerBootstrapOptions as S, defineServerPlugin as T, resolveBridgeCallUrl as U, resolveBridgeTokenUrl as V, type WorkspaceServerPlugin as W, validateServerPlugin as X, validateWorkspaceBridgeOperationDefinition as Y, WorkspaceBridgeRegistry as a, type WorkspaceBridgeHandler as b, type WorkspaceBridgeRuntimeEnvOptions as c, type BoringPluginSourceInput as d, type BoringPluginFrontTargetResolver as e, type WorkspaceProvisioningContribution as f, type WorkspaceRouteContribution as g, createInMemoryBridge as h, type WorkspaceRuntimeProvisioningInput as i, type WorkspaceServerPluginAsset as j, type BoringServerPluginManifest as k, type BoringPluginListEntry as l, type BoringPluginFrontTarget as m, type BoringPluginSource as n, type BoringPluginEvent as o, type BoringPluginFrontTargetResolverContext as p, type BoringPluginNativeFrontTarget as q, type BoringPluginNativeFrontTargetTrust as r, type BoringPluginSourceKind as s, type BridgeAuthPolicyInput as t, type BridgeAuthPolicyRequestLike as u, type BridgeAuthResolution as v, type BridgePrincipal as w, type BridgeWorkspaceGrant as x, type BrowserBridgeAuthPolicyOptions as y, type ServerBootstrapResult as z };
353
+ export { type WorkspaceBridgeCallContext as A, type BridgeAuthPolicy as B, type CreateWorkspaceBridgeRuntimeEnvContributionOptions as C, type WorkspaceBridgeHandlerArgs as D, type WorkspaceBridgeHandlerContribution as E, type WorkspaceBridgeRegistryCallOptions as F, type WorkspaceBridgeRegistryLogger as G, type WorkspaceBridgeRegistryOptions as H, type WorkspaceBridgeRuntimeEnvDisabledReason as I, type WorkspaceBridgeRuntimePlacement as J, bootstrapServer as K, type LocalCliBridgeAuthPolicyOptions as L, createBrowserBridgeAuthPolicy as M, createLocalCliBridgeAuthPolicy as N, createWorkspaceBridgeRegistry as O, type PluginRestartSurface as P, createWorkspaceBridgeRuntimeEnvContribution as Q, type RegisterWorkspaceBridgeHandlerOptions as R, type ServerBootstrapOptions as S, defineServerPlugin as T, resolveBridgeCallUrl as U, resolveBridgeTokenUrl as V, type WorkspaceServerPlugin as W, validateServerPlugin as X, validateWorkspaceBridgeOperationDefinition as Y, WorkspaceBridgeRegistry as a, type WorkspaceBridgeHandler as b, type WorkspaceBridgeRuntimeEnvOptions as c, type BoringPluginSourceInput as d, type BoringPluginFrontTargetResolver as e, createInMemoryBridge as f, type WorkspaceProvisioningContribution as g, type WorkspaceRouteContribution as h, type WorkspaceRuntimeProvisioningInput as i, type WorkspaceServerPluginAsset as j, type BoringServerPluginManifest as k, type BoringPluginListEntry as l, type BoringPluginFrontTarget as m, type BoringPluginSource as n, type BoringPluginEvent as o, type BoringPluginFrontTargetResolverContext as p, type BoringPluginNativeFrontTarget as q, type BoringPluginNativeFrontTargetTrust as r, type BoringPluginSourceKind as s, type BridgeAuthPolicyInput as t, type BridgeAuthPolicyRequestLike as u, type BridgeAuthResolution as v, type BridgePrincipal as w, type BridgeWorkspaceGrant as x, type BrowserBridgeAuthPolicyOptions as y, type ServerBootstrapResult as z };
package/dist/server.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { j as WorkspaceServerPluginAsset, a as WorkspaceBridgeRegistry, B as BridgeAuthPolicy, b as WorkspaceBridgeHandler, k as BoringServerPluginManifest, d as BoringPluginSourceInput, e as BoringPluginFrontTargetResolver, l as BoringPluginListEntry, m as BoringPluginFrontTarget, n as BoringPluginSource, o as BoringPluginEvent, P as PluginRestartSurface } from './runtimeEnv-XVFZ1OkV.js';
2
- export { p as BoringPluginFrontTargetResolverContext, q as BoringPluginNativeFrontTarget, r as BoringPluginNativeFrontTargetTrust, s as BoringPluginSourceKind, t as BridgeAuthPolicyInput, u as BridgeAuthPolicyRequestLike, v as BridgeAuthResolution, w as BridgePrincipal, x as BridgeWorkspaceGrant, y as BrowserBridgeAuthPolicyOptions, C as CreateWorkspaceBridgeRuntimeEnvContributionOptions, L as LocalCliBridgeAuthPolicyOptions, R as RegisterWorkspaceBridgeHandlerOptions, S as ServerBootstrapOptions, z as ServerBootstrapResult, A as WorkspaceBridgeCallContext, D as WorkspaceBridgeHandlerArgs, E as WorkspaceBridgeHandlerContribution, F as WorkspaceBridgeRegistryCallOptions, G as WorkspaceBridgeRegistryLogger, H as WorkspaceBridgeRegistryOptions, I as WorkspaceBridgeRuntimeEnvDisabledReason, c as WorkspaceBridgeRuntimeEnvOptions, J as WorkspaceBridgeRuntimePlacement, f as WorkspaceProvisioningContribution, g as WorkspaceRouteContribution, W as WorkspaceServerPlugin, K as bootstrapServer, M as createBrowserBridgeAuthPolicy, h as createInMemoryBridge, N as createLocalCliBridgeAuthPolicy, O as createWorkspaceBridgeRegistry, Q as createWorkspaceBridgeRuntimeEnvContribution, T as defineServerPlugin, U as resolveBridgeCallUrl, V as resolveBridgeTokenUrl, X as validateServerPlugin, Y as validateWorkspaceBridgeOperationDefinition } from './runtimeEnv-XVFZ1OkV.js';
1
+ import { j as WorkspaceServerPluginAsset, a as WorkspaceBridgeRegistry, B as BridgeAuthPolicy, b as WorkspaceBridgeHandler, k as BoringServerPluginManifest, d as BoringPluginSourceInput, e as BoringPluginFrontTargetResolver, l as BoringPluginListEntry, m as BoringPluginFrontTarget, n as BoringPluginSource, o as BoringPluginEvent, P as PluginRestartSurface } from './runtimeEnv-B8XJz-k4.js';
2
+ export { p as BoringPluginFrontTargetResolverContext, q as BoringPluginNativeFrontTarget, r as BoringPluginNativeFrontTargetTrust, s as BoringPluginSourceKind, t as BridgeAuthPolicyInput, u as BridgeAuthPolicyRequestLike, v as BridgeAuthResolution, w as BridgePrincipal, x as BridgeWorkspaceGrant, y as BrowserBridgeAuthPolicyOptions, C as CreateWorkspaceBridgeRuntimeEnvContributionOptions, L as LocalCliBridgeAuthPolicyOptions, R as RegisterWorkspaceBridgeHandlerOptions, S as ServerBootstrapOptions, z as ServerBootstrapResult, A as WorkspaceBridgeCallContext, D as WorkspaceBridgeHandlerArgs, E as WorkspaceBridgeHandlerContribution, F as WorkspaceBridgeRegistryCallOptions, G as WorkspaceBridgeRegistryLogger, H as WorkspaceBridgeRegistryOptions, I as WorkspaceBridgeRuntimeEnvDisabledReason, c as WorkspaceBridgeRuntimeEnvOptions, J as WorkspaceBridgeRuntimePlacement, g as WorkspaceProvisioningContribution, h as WorkspaceRouteContribution, W as WorkspaceServerPlugin, K as bootstrapServer, M as createBrowserBridgeAuthPolicy, f as createInMemoryBridge, N as createLocalCliBridgeAuthPolicy, O as createWorkspaceBridgeRegistry, Q as createWorkspaceBridgeRuntimeEnvContribution, T as defineServerPlugin, U as resolveBridgeCallUrl, V as resolveBridgeTokenUrl, X as validateServerPlugin, Y as validateWorkspaceBridgeOperationDefinition } from './runtimeEnv-B8XJz-k4.js';
3
3
  import { FastifyRequest, FastifyInstance } from 'fastify';
4
4
  import { U as UiBridge, W as WorkspaceBridge } from './ui-bridge-BbuUZ5iC.js';
5
5
  export { C as CommandResult, a as UiCommand, b as UiState } from './ui-bridge-BbuUZ5iC.js';
@@ -74,6 +74,7 @@ interface UiRoutesOptions {
74
74
  * these slots are published out-of-band by server plugins.
75
75
  */
76
76
  preserveStateKeys?: string[];
77
+ getPreserveStateKeys?: (request: FastifyRequest) => string[] | Promise<string[]>;
77
78
  paneStatusStore?: PaneRenderStatusStore;
78
79
  }
79
80
  declare function uiRoutes(app: FastifyInstance, opts: UiRoutesOptions, done: (err?: Error) => void): void;
package/dist/server.js CHANGED
@@ -262,8 +262,9 @@ function uiRoutes(app, opts, done) {
262
262
  const body = request.body;
263
263
  const bridge = await resolveBridge(request);
264
264
  const current = await bridge.getState() ?? {};
265
+ const preserveStateKeys = opts.getPreserveStateKeys ? await opts.getPreserveStateKeys(request) : opts.preserveStateKeys ?? [];
265
266
  const preserved = Object.fromEntries(
266
- (opts.preserveStateKeys ?? []).filter((key) => !(key in body.state) && key in current).map((key) => [key, current[key]])
267
+ preserveStateKeys.filter((key) => !(key in body.state) && key in current).map((key) => [key, current[key]])
267
268
  );
268
269
  await bridge.setState({ ...body.state, ...preserved });
269
270
  return reply.code(204).send();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hachej/boring-workspace",
3
- "version": "0.1.61",
3
+ "version": "0.1.62",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Workspace UI, plugin, and bridge package for composing chat, files, catalogs, editors, and app-specific panes.",
@@ -139,9 +139,9 @@
139
139
  "tailwind-merge": "^2.0.0",
140
140
  "zod": "^3.23.0",
141
141
  "zustand": "^5.0.0",
142
- "@hachej/boring-agent": "0.1.61",
143
- "@hachej/boring-ui-kit": "0.1.61",
144
- "@hachej/boring-ui-plugin-cli": "0.1.61"
142
+ "@hachej/boring-agent": "0.1.62",
143
+ "@hachej/boring-ui-kit": "0.1.62",
144
+ "@hachej/boring-ui-plugin-cli": "0.1.62"
145
145
  },
146
146
  "devDependencies": {
147
147
  "@tailwindcss/postcss": "^4.0.0",