@hachej/boring-agent 0.1.83 → 0.1.84
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.
- package/dist/{chunk-TNN3LPXE.js → chunk-2XADUCX7.js} +67 -2
- package/dist/{chunk-7V3E6KHX.js → chunk-5IRFVKV7.js} +27 -15
- package/dist/core/index.d.ts +7 -51
- package/dist/core/index.js +9 -3
- package/dist/front/index.d.ts +1 -1
- package/dist/{harness-C53mjCcq.d.ts → harness-Dtu-WAXy.d.ts} +1 -1
- package/dist/{piChatEvent-3pFPXYPx.d.ts → piChatEvent-DLa8CgFa.d.ts} +1 -1
- package/dist/piChatSessionService-BuPaMB7k.d.ts +67 -0
- package/dist/server/index.d.ts +7 -4
- package/dist/server/index.js +2 -2
- package/dist/server/worker/index.js +2 -2
- package/dist/shared/index.d.ts +6 -6
- package/dist/{workspaceAgentDispatcher-p4tlVvbM.d.ts → workspaceAgentDispatcher-CBN2xxaH.d.ts} +2 -2
- package/package.json +2 -2
|
@@ -5,13 +5,74 @@ import {
|
|
|
5
5
|
ErrorCode
|
|
6
6
|
} from "./chunk-PG2WOJ22.js";
|
|
7
7
|
|
|
8
|
+
// src/core/piChatSessionService.ts
|
|
9
|
+
var AgentEffectAdmissionError = class extends Error {
|
|
10
|
+
constructor(code, details) {
|
|
11
|
+
super(code);
|
|
12
|
+
this.code = code;
|
|
13
|
+
this.details = details;
|
|
14
|
+
this.name = "AgentEffectAdmissionError";
|
|
15
|
+
}
|
|
16
|
+
code;
|
|
17
|
+
details;
|
|
18
|
+
statusCode = 500;
|
|
19
|
+
};
|
|
20
|
+
var AGENT_EFFECT_METHODS = {
|
|
21
|
+
createSession: true,
|
|
22
|
+
deleteSession: true,
|
|
23
|
+
prompt: true,
|
|
24
|
+
followUp: true,
|
|
25
|
+
clearQueue: true,
|
|
26
|
+
interrupt: true,
|
|
27
|
+
stop: true
|
|
28
|
+
};
|
|
29
|
+
function withAgentEffectAdmission(service, admit) {
|
|
30
|
+
return {
|
|
31
|
+
...service.listSessions ? { listSessions: (ctx, options) => service.listSessions(ctx, options) } : {},
|
|
32
|
+
async createSession(ctx, init) {
|
|
33
|
+
await admit(ctx);
|
|
34
|
+
return service.createSession(ctx, init);
|
|
35
|
+
},
|
|
36
|
+
async deleteSession(ctx, sessionId) {
|
|
37
|
+
await admit(ctx);
|
|
38
|
+
return service.deleteSession(ctx, sessionId);
|
|
39
|
+
},
|
|
40
|
+
readState: (ctx, sessionId) => service.readState(ctx, sessionId),
|
|
41
|
+
subscribe: (ctx, sessionId, cursor, subscriber) => service.subscribe(ctx, sessionId, cursor, subscriber),
|
|
42
|
+
async prompt(ctx, sessionId, payload) {
|
|
43
|
+
await admit(ctx);
|
|
44
|
+
return service.prompt(ctx, sessionId, payload);
|
|
45
|
+
},
|
|
46
|
+
async followUp(ctx, sessionId, payload) {
|
|
47
|
+
await admit(ctx);
|
|
48
|
+
return service.followUp(ctx, sessionId, payload);
|
|
49
|
+
},
|
|
50
|
+
async clearQueue(ctx, sessionId, payload) {
|
|
51
|
+
await admit(ctx);
|
|
52
|
+
return service.clearQueue(ctx, sessionId, payload);
|
|
53
|
+
},
|
|
54
|
+
async interrupt(ctx, sessionId, payload) {
|
|
55
|
+
await admit(ctx);
|
|
56
|
+
return service.interrupt(ctx, sessionId, payload);
|
|
57
|
+
},
|
|
58
|
+
async stop(ctx, sessionId, payload) {
|
|
59
|
+
await admit(ctx);
|
|
60
|
+
return service.stop(ctx, sessionId, payload);
|
|
61
|
+
},
|
|
62
|
+
...service.dispose ? { dispose: () => service.dispose() } : {}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
|
|
8
66
|
// src/core/createAgent.ts
|
|
9
67
|
var DEFAULT_LIVE_BUFFER_SIZE = 1e3;
|
|
10
68
|
function createAgent(config) {
|
|
11
69
|
return createAgentRuntimeBridge(config).agent;
|
|
12
70
|
}
|
|
13
71
|
function createAgentRuntimeBridge(config) {
|
|
14
|
-
const runtimeLoader = createRuntimeLoader(
|
|
72
|
+
const runtimeLoader = createRuntimeLoader(async () => {
|
|
73
|
+
const runtime = await config.runtimeFactory();
|
|
74
|
+
return config.admitEffect ? { ...runtime, service: withAgentEffectAdmission(runtime.service, config.admitEffect) } : runtime;
|
|
75
|
+
});
|
|
15
76
|
const live = new AgentLiveEventBuffer(DEFAULT_LIVE_BUFFER_SIZE);
|
|
16
77
|
const sessionContexts = /* @__PURE__ */ new Map();
|
|
17
78
|
const startedSessions = /* @__PURE__ */ new Map();
|
|
@@ -255,7 +316,8 @@ function createFacadeSessionStore(getRuntime, assertActive, live, sessionContext
|
|
|
255
316
|
},
|
|
256
317
|
async create(ctx, init) {
|
|
257
318
|
assertActive();
|
|
258
|
-
const
|
|
319
|
+
const runtime = await getRuntime();
|
|
320
|
+
const created = await runtime.service.createSession(toPiRequestContext(ctx), init);
|
|
259
321
|
assertActive();
|
|
260
322
|
rememberSessionCtx(sessionContexts, created.id, ctx);
|
|
261
323
|
return created;
|
|
@@ -532,6 +594,9 @@ function createLiveIterator(state, startIndex) {
|
|
|
532
594
|
}
|
|
533
595
|
|
|
534
596
|
export {
|
|
597
|
+
AgentEffectAdmissionError,
|
|
598
|
+
AGENT_EFFECT_METHODS,
|
|
599
|
+
withAgentEffectAdmission,
|
|
535
600
|
createAgent,
|
|
536
601
|
createAgentRuntimeBridge
|
|
537
602
|
};
|
|
@@ -13,8 +13,9 @@ import {
|
|
|
13
13
|
validateTool
|
|
14
14
|
} from "./chunk-WODTQBXR.js";
|
|
15
15
|
import {
|
|
16
|
+
AgentEffectAdmissionError,
|
|
16
17
|
createAgentRuntimeBridge
|
|
17
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-2XADUCX7.js";
|
|
18
19
|
import {
|
|
19
20
|
sessionStreamPath
|
|
20
21
|
} from "./chunk-WSQ5QNIY.js";
|
|
@@ -8479,6 +8480,7 @@ function createAgentRuntimeBridge2(config, options = {}) {
|
|
|
8479
8480
|
}
|
|
8480
8481
|
return createAgentRuntimeBridge({
|
|
8481
8482
|
runtimeFactory: () => createRuntime(config, options),
|
|
8483
|
+
admitEffect: options.service?.admitEffect,
|
|
8482
8484
|
readiness: config.readiness,
|
|
8483
8485
|
readinessRequirements: config.readinessRequirements
|
|
8484
8486
|
});
|
|
@@ -11874,7 +11876,7 @@ function piChatRoutes(app, opts, done) {
|
|
|
11874
11876
|
if (!service.createSession) throw unsupportedServiceMethod("create Pi chat session");
|
|
11875
11877
|
return reply.code(201).send(await service.createSession(getRequestContext(request), body));
|
|
11876
11878
|
} catch (err) {
|
|
11877
|
-
return sendRouteError(reply, err, "create pi chat session failed");
|
|
11879
|
+
return sendRouteError(reply, err, "create pi chat session failed", true);
|
|
11878
11880
|
}
|
|
11879
11881
|
});
|
|
11880
11882
|
app.delete("/api/v1/agent/pi-chat/sessions/:sessionId", async (request, reply) => {
|
|
@@ -11886,7 +11888,7 @@ function piChatRoutes(app, opts, done) {
|
|
|
11886
11888
|
await service.deleteSession(getRequestContext(request), params.sessionId);
|
|
11887
11889
|
return reply.code(204).send();
|
|
11888
11890
|
} catch (err) {
|
|
11889
|
-
return sendRouteError(reply, err, "delete pi chat session failed");
|
|
11891
|
+
return sendRouteError(reply, err, "delete pi chat session failed", true);
|
|
11890
11892
|
}
|
|
11891
11893
|
});
|
|
11892
11894
|
app.get("/api/v1/agent/pi-chat/:sessionId/state", async (request, reply) => {
|
|
@@ -11977,7 +11979,7 @@ function piChatRoutes(app, opts, done) {
|
|
|
11977
11979
|
const receipt = await service.prompt(getRequestContext(request), params.sessionId, body);
|
|
11978
11980
|
return reply.code(202).send(receipt);
|
|
11979
11981
|
} catch (err) {
|
|
11980
|
-
return sendRouteError(reply, err, "prompt rejected");
|
|
11982
|
+
return sendRouteError(reply, err, "prompt rejected", true);
|
|
11981
11983
|
}
|
|
11982
11984
|
});
|
|
11983
11985
|
app.post("/api/v1/agent/pi-chat/:sessionId/followup", async (request, reply) => {
|
|
@@ -11990,7 +11992,7 @@ function piChatRoutes(app, opts, done) {
|
|
|
11990
11992
|
const receipt = await service.followUp(getRequestContext(request), params.sessionId, body);
|
|
11991
11993
|
return reply.code(202).send(receipt);
|
|
11992
11994
|
} catch (err) {
|
|
11993
|
-
return sendRouteError(reply, err, "follow-up rejected");
|
|
11995
|
+
return sendRouteError(reply, err, "follow-up rejected", true);
|
|
11994
11996
|
}
|
|
11995
11997
|
});
|
|
11996
11998
|
app.post("/api/v1/agent/pi-chat/:sessionId/queue/clear", async (request, reply) => {
|
|
@@ -12003,7 +12005,7 @@ function piChatRoutes(app, opts, done) {
|
|
|
12003
12005
|
const receipt = await service.clearQueue(getRequestContext(request), params.sessionId, body);
|
|
12004
12006
|
return reply.code(202).send(receipt);
|
|
12005
12007
|
} catch (err) {
|
|
12006
|
-
return sendRouteError(reply, err, "queue clear rejected");
|
|
12008
|
+
return sendRouteError(reply, err, "queue clear rejected", true);
|
|
12007
12009
|
}
|
|
12008
12010
|
});
|
|
12009
12011
|
app.post("/api/v1/agent/pi-chat/:sessionId/interrupt", async (request, reply) => {
|
|
@@ -12016,7 +12018,7 @@ function piChatRoutes(app, opts, done) {
|
|
|
12016
12018
|
const receipt = await service.interrupt(getRequestContext(request), params.sessionId, body);
|
|
12017
12019
|
return reply.code(202).send(receipt);
|
|
12018
12020
|
} catch (err) {
|
|
12019
|
-
return sendRouteError(reply, err, "interrupt rejected");
|
|
12021
|
+
return sendRouteError(reply, err, "interrupt rejected", true);
|
|
12020
12022
|
}
|
|
12021
12023
|
});
|
|
12022
12024
|
app.post("/api/v1/agent/pi-chat/:sessionId/stop", async (request, reply) => {
|
|
@@ -12029,7 +12031,7 @@ function piChatRoutes(app, opts, done) {
|
|
|
12029
12031
|
const receipt = await service.stop(getRequestContext(request), params.sessionId, body);
|
|
12030
12032
|
return reply.code(202).send(receipt);
|
|
12031
12033
|
} catch (err) {
|
|
12032
|
-
return sendRouteError(reply, err, "stop rejected");
|
|
12034
|
+
return sendRouteError(reply, err, "stop rejected", true);
|
|
12033
12035
|
}
|
|
12034
12036
|
});
|
|
12035
12037
|
done();
|
|
@@ -12115,17 +12117,19 @@ function sendReplayRangeError(reply, error) {
|
|
|
12115
12117
|
}
|
|
12116
12118
|
});
|
|
12117
12119
|
}
|
|
12118
|
-
function sendRouteError(reply, err, fallbackMessage) {
|
|
12120
|
+
function sendRouteError(reply, err, fallbackMessage, preserveAdmissionError = false) {
|
|
12119
12121
|
const statusCode = statusCodeFromError(err);
|
|
12120
12122
|
const parsedCode = ErrorCode.safeParse(err?.code);
|
|
12121
|
-
const
|
|
12122
|
-
const
|
|
12123
|
+
const admissionError = preserveAdmissionError && err instanceof AgentEffectAdmissionError;
|
|
12124
|
+
const rejectedAdmissionError = !preserveAdmissionError && err instanceof AgentEffectAdmissionError;
|
|
12125
|
+
const code = admissionError ? err.code : parsedCode.success ? parsedCode.data : ErrorCode.enum.INTERNAL_ERROR;
|
|
12126
|
+
const message = !rejectedAdmissionError && err instanceof Error ? err.message : fallbackMessage;
|
|
12123
12127
|
return reply.code(statusCode).send({
|
|
12124
12128
|
error: {
|
|
12125
12129
|
code,
|
|
12126
12130
|
message,
|
|
12127
12131
|
retryable: err?.retryable === true ? true : void 0,
|
|
12128
|
-
details: err?.details
|
|
12132
|
+
details: rejectedAdmissionError ? void 0 : err?.details
|
|
12129
12133
|
}
|
|
12130
12134
|
});
|
|
12131
12135
|
}
|
|
@@ -12364,7 +12368,7 @@ function meteredCommandBlocked(command) {
|
|
|
12364
12368
|
}
|
|
12365
12369
|
function stableErrorPayload(error, message) {
|
|
12366
12370
|
const code = error?.code;
|
|
12367
|
-
if (!isErrorCode(code)) return void 0;
|
|
12371
|
+
if (!isErrorCode(code) && !(error instanceof AgentEffectAdmissionError)) return void 0;
|
|
12368
12372
|
const details = error?.details;
|
|
12369
12373
|
return {
|
|
12370
12374
|
error: {
|
|
@@ -12412,6 +12416,7 @@ function commandsRoutes(app, opts, done) {
|
|
|
12412
12416
|
if (meteringActive) {
|
|
12413
12417
|
return reply.code(409).send(meteredCommandBlocked(name));
|
|
12414
12418
|
}
|
|
12419
|
+
await opts.admitEffect?.({ workspaceId: getRequestWorkspaceId(request), requestId: request.id });
|
|
12415
12420
|
await harness.executeSlashCommand(sessionId, name, args, runContext);
|
|
12416
12421
|
return reply.code(200).send({ ok: true });
|
|
12417
12422
|
} catch (error) {
|
|
@@ -14039,6 +14044,7 @@ var registerAgentRoutes = async (app, opts) => {
|
|
|
14039
14044
|
workdir: root
|
|
14040
14045
|
}, {
|
|
14041
14046
|
service: {
|
|
14047
|
+
admitEffect: opts.admitEffect,
|
|
14042
14048
|
workdir: runtimeBundle.workspace.root,
|
|
14043
14049
|
workspace: runtimeBundle.workspace
|
|
14044
14050
|
}
|
|
@@ -14427,6 +14433,7 @@ var registerAgentRoutes = async (app, opts) => {
|
|
|
14427
14433
|
return reply.status(501).send({ ok: false, error: "Agent harness does not support reload" });
|
|
14428
14434
|
}
|
|
14429
14435
|
try {
|
|
14436
|
+
await opts.admitEffect?.({ workspaceId, requestId: request.id });
|
|
14430
14437
|
await binding.reprovision(request);
|
|
14431
14438
|
binding.assertActive();
|
|
14432
14439
|
const hookResult = await opts.beforeReload?.({
|
|
@@ -14464,6 +14471,9 @@ var registerAgentRoutes = async (app, opts) => {
|
|
|
14464
14471
|
};
|
|
14465
14472
|
} catch (error) {
|
|
14466
14473
|
const message = error instanceof Error ? error.message : String(error);
|
|
14474
|
+
if (error instanceof AgentEffectAdmissionError) {
|
|
14475
|
+
return reply.status(error.statusCode).send({ ok: false, error: { code: error.code, message } });
|
|
14476
|
+
}
|
|
14467
14477
|
return reply.status(422).send({ ok: false, error: message });
|
|
14468
14478
|
}
|
|
14469
14479
|
});
|
|
@@ -14477,12 +14487,14 @@ var registerAgentRoutes = async (app, opts) => {
|
|
|
14477
14487
|
harness: staticBinding.harness,
|
|
14478
14488
|
defaultSessionId: sessionId,
|
|
14479
14489
|
workdir: staticBinding.runtimeBundle.workspace.root,
|
|
14480
|
-
metering: opts.metering
|
|
14490
|
+
metering: opts.metering,
|
|
14491
|
+
admitEffect: opts.admitEffect
|
|
14481
14492
|
} : {
|
|
14482
14493
|
defaultSessionId: sessionId,
|
|
14483
14494
|
getHarness: async (request) => (await getBindingForRequest(request)).harness,
|
|
14484
14495
|
getWorkdir: async (request) => (await getBindingForRequest(request)).runtimeBundle.workspace.root,
|
|
14485
|
-
metering: opts.metering
|
|
14496
|
+
metering: opts.metering,
|
|
14497
|
+
admitEffect: opts.admitEffect
|
|
14486
14498
|
}
|
|
14487
14499
|
);
|
|
14488
14500
|
await app.register(
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,56 +1,11 @@
|
|
|
1
|
-
import { A as AgentHarness, a as AgentReadiness, b as Agent } from '../harness-
|
|
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-
|
|
3
|
-
import { S as
|
|
1
|
+
import { A as AgentHarness, a as AgentReadiness, b as Agent } from '../harness-Dtu-WAXy.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-Dtu-WAXy.js';
|
|
3
|
+
import { S as SessionStore } from '../piChatEvent-DLa8CgFa.js';
|
|
4
|
+
import { A as AgentCoreSessionService, a as AgentEffectAdmission } from '../piChatSessionService-BuPaMB7k.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-BuPaMB7k.js';
|
|
4
6
|
import '@mariozechner/pi-coding-agent';
|
|
5
7
|
import 'zod';
|
|
6
8
|
|
|
7
|
-
interface PiSessionRequestContext {
|
|
8
|
-
workspaceId?: string;
|
|
9
|
-
storageScope?: string;
|
|
10
|
-
authSubject?: string;
|
|
11
|
-
authEmail?: string;
|
|
12
|
-
authEmailVerified?: boolean;
|
|
13
|
-
requestId: string;
|
|
14
|
-
}
|
|
15
|
-
interface PiSessionCreateInit {
|
|
16
|
-
title?: string;
|
|
17
|
-
modelDefault?: ChatModelSelection;
|
|
18
|
-
}
|
|
19
|
-
type PiChatReplayRangeError = {
|
|
20
|
-
type: 'replay_gap';
|
|
21
|
-
latestSeq: number;
|
|
22
|
-
minReplaySeq: number;
|
|
23
|
-
} | {
|
|
24
|
-
type: 'cursor_ahead';
|
|
25
|
-
latestSeq: number;
|
|
26
|
-
minReplaySeq: number;
|
|
27
|
-
};
|
|
28
|
-
interface PiChatEventStreamSubscription {
|
|
29
|
-
type: 'ok';
|
|
30
|
-
unsubscribe: () => void;
|
|
31
|
-
/** Optional test/service completion hook. Real live streams normally omit it. */
|
|
32
|
-
closed?: Promise<void>;
|
|
33
|
-
}
|
|
34
|
-
type PiChatEventStreamResult = PiChatEventStreamSubscription | PiChatReplayRangeError;
|
|
35
|
-
type PiChatEventSubscriber = (event: PiChatEvent) => void;
|
|
36
|
-
interface PiChatSessionService {
|
|
37
|
-
listSessions?(ctx: PiSessionRequestContext, options?: SessionListOptions): Promise<SessionSummary[]>;
|
|
38
|
-
createSession?(ctx: PiSessionRequestContext, init?: PiSessionCreateInit): Promise<SessionSummary>;
|
|
39
|
-
deleteSession?(ctx: PiSessionRequestContext, sessionId: string): Promise<void>;
|
|
40
|
-
readState(ctx: PiSessionRequestContext, sessionId: string): Promise<PiChatSnapshot>;
|
|
41
|
-
subscribe(ctx: PiSessionRequestContext, sessionId: string, cursor: number, subscriber: PiChatEventSubscriber): Promise<PiChatEventStreamResult>;
|
|
42
|
-
prompt(ctx: PiSessionRequestContext, sessionId: string, payload: PromptPayload): Promise<PromptReceipt>;
|
|
43
|
-
followUp(ctx: PiSessionRequestContext, sessionId: string, payload: FollowUpPayload): Promise<FollowUpReceipt>;
|
|
44
|
-
clearQueue(ctx: PiSessionRequestContext, sessionId: string, payload: QueueClearPayload): Promise<QueueClearReceipt>;
|
|
45
|
-
interrupt(ctx: PiSessionRequestContext, sessionId: string, payload: InterruptPayload): Promise<CommandReceipt>;
|
|
46
|
-
stop(ctx: PiSessionRequestContext, sessionId: string, payload: StopPayload): Promise<StopReceipt>;
|
|
47
|
-
}
|
|
48
|
-
interface AgentCoreSessionService extends PiChatSessionService {
|
|
49
|
-
createSession(ctx: PiSessionRequestContext, init?: PiSessionCreateInit): Promise<SessionSummary>;
|
|
50
|
-
deleteSession(ctx: PiSessionRequestContext, sessionId: string): Promise<void>;
|
|
51
|
-
dispose?(): Promise<void>;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
9
|
interface AgentCoreRuntime {
|
|
55
10
|
harness: AgentHarness;
|
|
56
11
|
sessionStore: SessionStore;
|
|
@@ -59,6 +14,7 @@ interface AgentCoreRuntime {
|
|
|
59
14
|
type AgentCoreRuntimeFactory = () => AgentCoreRuntime | Promise<AgentCoreRuntime>;
|
|
60
15
|
interface AgentCoreConfig {
|
|
61
16
|
runtimeFactory: AgentCoreRuntimeFactory;
|
|
17
|
+
admitEffect?: AgentEffectAdmission;
|
|
62
18
|
readiness?: AgentReadiness;
|
|
63
19
|
readinessRequirements?: string[];
|
|
64
20
|
}
|
|
@@ -69,4 +25,4 @@ interface AgentCoreRuntimeView {
|
|
|
69
25
|
}
|
|
70
26
|
declare function createAgent(config: AgentCoreConfig): Agent;
|
|
71
27
|
|
|
72
|
-
export { Agent, type AgentCoreConfig, type AgentCoreRuntime, type AgentCoreRuntimeFactory, type AgentCoreRuntimeView,
|
|
28
|
+
export { Agent, type AgentCoreConfig, type AgentCoreRuntime, type AgentCoreRuntimeFactory, type AgentCoreRuntimeView, AgentCoreSessionService, AgentEffectAdmission, AgentReadiness, createAgent };
|
package/dist/core/index.js
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
AGENT_EFFECT_METHODS,
|
|
3
|
+
AgentEffectAdmissionError,
|
|
4
|
+
createAgent,
|
|
5
|
+
withAgentEffectAdmission
|
|
6
|
+
} from "../chunk-2XADUCX7.js";
|
|
4
7
|
import {
|
|
5
8
|
AGENT_NOT_IMPLEMENTED_UNTIL_T1,
|
|
6
9
|
AgentNotImplementedError
|
|
7
10
|
} from "../chunk-WSQ5QNIY.js";
|
|
8
11
|
import "../chunk-PG2WOJ22.js";
|
|
9
12
|
export {
|
|
13
|
+
AGENT_EFFECT_METHODS,
|
|
10
14
|
AGENT_NOT_IMPLEMENTED_UNTIL_T1,
|
|
15
|
+
AgentEffectAdmissionError,
|
|
11
16
|
AgentNotImplementedError,
|
|
12
|
-
createAgent
|
|
17
|
+
createAgent,
|
|
18
|
+
withAgentEffectAdmission
|
|
13
19
|
};
|
package/dist/front/index.d.ts
CHANGED
|
@@ -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,
|
|
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-DLa8CgFa.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';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { l as SessionCtx, b as PiChatEvent, S as SessionStore } from './piChatEvent-DLa8CgFa.js';
|
|
2
2
|
import { AgentSessionEvent, PromptOptions } from '@mariozechner/pi-coding-agent';
|
|
3
3
|
|
|
4
4
|
interface TelemetrySink {
|
|
@@ -364,4 +364,4 @@ interface PiChatHeartbeatFrame {
|
|
|
364
364
|
}
|
|
365
365
|
type PiChatStreamFrame = PiChatEvent | PiChatHeartbeatFrame;
|
|
366
366
|
|
|
367
|
-
export { AgentConsumptionErrorCode as A, type BoringChatPart as B, type
|
|
367
|
+
export { AgentConsumptionErrorCode as A, type BoringChatPart as B, type ChatError as C, type InterruptReceipt as D, ErrorCode as E, type FollowUpPayload as F, type PiChatHeartbeatFrame as G, type PiChatStreamFrame as H, type InterruptPayload as I, type SessionDetail as J, type ThinkingLevel as K, extractToolUiMetadata as L, isToolUiMetadata as M, type PiChatStatus as P, type QueuedUserMessage as Q, type SessionStore as S, type ToolUiMetadata as T, type BoringChatMessage as a, type PiChatEvent as b, type PromptPayload as c, type PromptReceipt as d, type FollowUpReceipt as e, type QueueClearPayload as f, type QueueClearReceipt as g, type CommandReceipt as h, type StopPayload as i, type StopReceipt as j, type SessionSummary as k, type SessionCtx as l, type ChatModelSelection as m, type SessionListOptions as n, type PiChatSnapshot as o, AgentDefinitionErrorCode as p, AgentDeploymentErrorCode as q, type ApiErrorPayload as r, ApiErrorPayloadSchema as s, type ApiErrorResponse as t, ApiErrorResponseSchema as u, type ChatAttachmentPayload as v, type ChatSubmitPayload as w, ERROR_CODES as x, type ErrorLogFields as y, ErrorLogFieldsSchema as z };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { n as SessionListOptions, k as SessionSummary, m as ChatModelSelection, o 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-DLa8CgFa.js';
|
|
2
|
+
|
|
3
|
+
interface PiSessionRequestContext {
|
|
4
|
+
workspaceId?: string;
|
|
5
|
+
storageScope?: string;
|
|
6
|
+
authSubject?: string;
|
|
7
|
+
authEmail?: string;
|
|
8
|
+
authEmailVerified?: boolean;
|
|
9
|
+
requestId: string;
|
|
10
|
+
}
|
|
11
|
+
interface PiSessionCreateInit {
|
|
12
|
+
title?: string;
|
|
13
|
+
modelDefault?: ChatModelSelection;
|
|
14
|
+
}
|
|
15
|
+
type PiChatReplayRangeError = {
|
|
16
|
+
type: 'replay_gap';
|
|
17
|
+
latestSeq: number;
|
|
18
|
+
minReplaySeq: number;
|
|
19
|
+
} | {
|
|
20
|
+
type: 'cursor_ahead';
|
|
21
|
+
latestSeq: number;
|
|
22
|
+
minReplaySeq: number;
|
|
23
|
+
};
|
|
24
|
+
interface PiChatEventStreamSubscription {
|
|
25
|
+
type: 'ok';
|
|
26
|
+
unsubscribe: () => void;
|
|
27
|
+
/** Optional test/service completion hook. Real live streams normally omit it. */
|
|
28
|
+
closed?: Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
type PiChatEventStreamResult = PiChatEventStreamSubscription | PiChatReplayRangeError;
|
|
31
|
+
type PiChatEventSubscriber = (event: PiChatEvent) => void;
|
|
32
|
+
interface PiChatSessionService {
|
|
33
|
+
listSessions?(ctx: PiSessionRequestContext, options?: SessionListOptions): Promise<SessionSummary[]>;
|
|
34
|
+
createSession?(ctx: PiSessionRequestContext, init?: PiSessionCreateInit): Promise<SessionSummary>;
|
|
35
|
+
deleteSession?(ctx: PiSessionRequestContext, sessionId: string): Promise<void>;
|
|
36
|
+
readState(ctx: PiSessionRequestContext, sessionId: string): Promise<PiChatSnapshot>;
|
|
37
|
+
subscribe(ctx: PiSessionRequestContext, sessionId: string, cursor: number, subscriber: PiChatEventSubscriber): Promise<PiChatEventStreamResult>;
|
|
38
|
+
prompt(ctx: PiSessionRequestContext, sessionId: string, payload: PromptPayload): Promise<PromptReceipt>;
|
|
39
|
+
followUp(ctx: PiSessionRequestContext, sessionId: string, payload: FollowUpPayload): Promise<FollowUpReceipt>;
|
|
40
|
+
clearQueue(ctx: PiSessionRequestContext, sessionId: string, payload: QueueClearPayload): Promise<QueueClearReceipt>;
|
|
41
|
+
interrupt(ctx: PiSessionRequestContext, sessionId: string, payload: InterruptPayload): Promise<CommandReceipt>;
|
|
42
|
+
stop(ctx: PiSessionRequestContext, sessionId: string, payload: StopPayload): Promise<StopReceipt>;
|
|
43
|
+
}
|
|
44
|
+
interface AgentCoreSessionService extends PiChatSessionService {
|
|
45
|
+
createSession(ctx: PiSessionRequestContext, init?: PiSessionCreateInit): Promise<SessionSummary>;
|
|
46
|
+
deleteSession(ctx: PiSessionRequestContext, sessionId: string): Promise<void>;
|
|
47
|
+
dispose?(): Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
type AgentEffectAdmission = (ctx: Pick<PiSessionRequestContext, 'workspaceId' | 'requestId'>) => Promise<void>;
|
|
50
|
+
declare class AgentEffectAdmissionError extends Error {
|
|
51
|
+
readonly code: string;
|
|
52
|
+
readonly details?: unknown | undefined;
|
|
53
|
+
readonly statusCode = 500;
|
|
54
|
+
constructor(code: string, details?: unknown | undefined);
|
|
55
|
+
}
|
|
56
|
+
declare const AGENT_EFFECT_METHODS: {
|
|
57
|
+
readonly createSession: true;
|
|
58
|
+
readonly deleteSession: true;
|
|
59
|
+
readonly prompt: true;
|
|
60
|
+
readonly followUp: true;
|
|
61
|
+
readonly clearQueue: true;
|
|
62
|
+
readonly interrupt: true;
|
|
63
|
+
readonly stop: true;
|
|
64
|
+
};
|
|
65
|
+
declare function withAgentEffectAdmission(service: AgentCoreSessionService, admit: AgentEffectAdmission): AgentCoreSessionService;
|
|
66
|
+
|
|
67
|
+
export { type AgentCoreSessionService as A, type PiChatEventStreamResult as P, type AgentEffectAdmission as a, AGENT_EFFECT_METHODS as b, AgentEffectAdmissionError as c, type PiChatEventStreamSubscription as d, type PiChatEventSubscriber as e, type PiChatReplayRangeError as f, type PiChatSessionService as g, type PiSessionCreateInit as h, type PiSessionRequestContext as i, withAgentEffectAdmission as w };
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { W as WorkspaceRuntimeContext, S as Sandbox, a as Workspace, E as ExecOptions, b as ExecResult, c as WorkspaceChangeEvent } from '../sandbox-DthfJaOB.js';
|
|
2
2
|
import { R as RemoteWorkerWorkspaceOp, a as RemoteWorkerWorkspaceResult, b as RemoteWorkerExecRequest } from '../protocol-B_OQKfbI.js';
|
|
3
3
|
export { B as BwrapResourceLimits, C as CreateBwrapSandboxOptions, 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 createBwrapSandbox } from '../protocol-B_OQKfbI.js';
|
|
4
|
-
import { S as SandboxHandleStore, a as SandboxHandleRecord, F as FileSearch, C as CompiledAgentBundle, b as Sha256Digest, A as AgentDeployment, P as PluginRestartWarning, W as WorkspaceAgentDispatcherContext, c as WorkspaceAgentDispatcher } from '../workspaceAgentDispatcher-
|
|
4
|
+
import { S as SandboxHandleStore, a as SandboxHandleRecord, F as FileSearch, C as CompiledAgentBundle, b as Sha256Digest, A as AgentDeployment, P as PluginRestartWarning, W as WorkspaceAgentDispatcherContext, c as WorkspaceAgentDispatcher } from '../workspaceAgentDispatcher-CBN2xxaH.js';
|
|
5
5
|
import { Sandbox as Sandbox$1 } from '@vercel/sandbox';
|
|
6
|
-
import { T as TelemetrySink, s as ToolReadinessRequirement, t as AgentConfig, b as Agent, d as AgentActor, j as AgentEvent, u as AgentTool, v as AgentHarnessFactory } from '../harness-
|
|
7
|
-
export { w as AgentHarnessFactoryInput } from '../harness-
|
|
6
|
+
import { T as TelemetrySink, s as ToolReadinessRequirement, t as AgentConfig, b as Agent, d as AgentActor, j as AgentEvent, u as AgentTool, v as AgentHarnessFactory } from '../harness-Dtu-WAXy.js';
|
|
7
|
+
export { w as AgentHarnessFactoryInput } from '../harness-Dtu-WAXy.js';
|
|
8
8
|
import { FastifyInstance, FastifyRequest, FastifyPluginAsync } from 'fastify';
|
|
9
|
-
import { E as ErrorCode,
|
|
9
|
+
import { E as ErrorCode, l as SessionCtx, m as ChatModelSelection } from '../piChatEvent-DLa8CgFa.js';
|
|
10
10
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
11
11
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
12
12
|
import { PackageSource, ExtensionFactory, SettingsManager } from '@mariozechner/pi-coding-agent';
|
|
13
|
+
import { a as AgentEffectAdmission } from '../piChatSessionService-BuPaMB7k.js';
|
|
13
14
|
import 'zod';
|
|
14
15
|
|
|
15
16
|
interface CreateDirectSandboxOptions {
|
|
@@ -1282,6 +1283,8 @@ interface RegisterAgentRoutesOptions {
|
|
|
1282
1283
|
sessionRoot?: string;
|
|
1283
1284
|
/** Optional best-effort telemetry sink supplied by an embedding host. */
|
|
1284
1285
|
telemetry?: TelemetrySink;
|
|
1286
|
+
/** Optional host admission called immediately before each agent effect. */
|
|
1287
|
+
admitEffect?: AgentEffectAdmission;
|
|
1285
1288
|
/** Generic request-aware model filtering seam. Hosts may filter per user/workspace. */
|
|
1286
1289
|
filterModels?: ModelsRoutesOptions['filterModels'];
|
|
1287
1290
|
/** Generic per-request/per-run filesystem binding seam. Hosts may return user/session-filtered bindings. */
|
package/dist/server/index.js
CHANGED
|
@@ -54,9 +54,9 @@ import {
|
|
|
54
54
|
resolveAgentDeployment,
|
|
55
55
|
resolveMode,
|
|
56
56
|
resolveSandboxHandle
|
|
57
|
-
} from "../chunk-
|
|
57
|
+
} from "../chunk-5IRFVKV7.js";
|
|
58
58
|
import "../chunk-WODTQBXR.js";
|
|
59
|
-
import "../chunk-
|
|
59
|
+
import "../chunk-2XADUCX7.js";
|
|
60
60
|
import "../chunk-WSQ5QNIY.js";
|
|
61
61
|
import "../chunk-DC3S7SZG.js";
|
|
62
62
|
import {
|
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
constantTimeTokenEqual,
|
|
5
5
|
createBwrapSandbox,
|
|
6
6
|
createNodeWorkspace
|
|
7
|
-
} from "../../chunk-
|
|
7
|
+
} from "../../chunk-5IRFVKV7.js";
|
|
8
8
|
import "../../chunk-WODTQBXR.js";
|
|
9
|
-
import "../../chunk-
|
|
9
|
+
import "../../chunk-2XADUCX7.js";
|
|
10
10
|
import "../../chunk-WSQ5QNIY.js";
|
|
11
11
|
import "../../chunk-DC3S7SZG.js";
|
|
12
12
|
import "../../chunk-5NAN3TAR.js";
|
package/dist/shared/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { u as AgentTool } from '../harness-
|
|
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, t 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-
|
|
3
|
-
import { F as FileSearch, d as SchemaValidationError, e as AgentSchemaIssue, f as AgentSchemaValidationResult } from '../workspaceAgentDispatcher-
|
|
4
|
-
export { g as AgentDefinition, h as AgentDefinitionDigestAsset, i as AgentDefinitionReference, j as AgentDefinitionValidationError, A as AgentDeployment, k as AgentDeploymentValidationError, l as CommandNotifyPayload, C as CompiledAgentBundle, m as CompiledAgentDefinition, O as OpaqueRefSchema, a as SandboxHandleRecord, S as SandboxHandleStore, b as Sha256Digest, n as Sha256DigestSchema, o as WORKSPACE_AGENT_PLUGINS_RELOADED_EVENT, p as WORKSPACE_COMMAND_NOTIFY_EVENT, c as WorkspaceAgentDispatcher, W as WorkspaceAgentDispatcherContext, q as WorkspaceAgentDispatcherSendInput, r as createAgentAssetDigest, s as createAgentDefinitionDigest, t as createAgentDeploymentDigest, v as validateAgentDefinition, u as validateAgentDeployment } from '../workspaceAgentDispatcher-
|
|
1
|
+
import { u as AgentTool } from '../harness-Dtu-WAXy.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, t 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-Dtu-WAXy.js';
|
|
3
|
+
import { F as FileSearch, d as SchemaValidationError, e as AgentSchemaIssue, f as AgentSchemaValidationResult } from '../workspaceAgentDispatcher-CBN2xxaH.js';
|
|
4
|
+
export { g as AgentDefinition, h as AgentDefinitionDigestAsset, i as AgentDefinitionReference, j as AgentDefinitionValidationError, A as AgentDeployment, k as AgentDeploymentValidationError, l as CommandNotifyPayload, C as CompiledAgentBundle, m as CompiledAgentDefinition, O as OpaqueRefSchema, a as SandboxHandleRecord, S as SandboxHandleStore, b as Sha256Digest, n as Sha256DigestSchema, o as WORKSPACE_AGENT_PLUGINS_RELOADED_EVENT, p as WORKSPACE_COMMAND_NOTIFY_EVENT, c as WorkspaceAgentDispatcher, W as WorkspaceAgentDispatcherContext, q as WorkspaceAgentDispatcherSendInput, r as createAgentAssetDigest, s as createAgentDefinitionDigest, t as createAgentDeploymentDigest, v as validateAgentDefinition, u as validateAgentDeployment } from '../workspaceAgentDispatcher-CBN2xxaH.js';
|
|
5
5
|
import { a as Workspace, S as Sandbox } from '../sandbox-DthfJaOB.js';
|
|
6
6
|
export { e as Entry, E as ExecOptions, b as ExecResult, I as IsolatedCodeInput, f as IsolatedCodeOutput, g as SandboxCapability, d as Stat, W as WorkspaceRuntimeContext } from '../sandbox-DthfJaOB.js';
|
|
7
|
-
import { B as BoringChatPart, T as ToolUiMetadata, A as AgentConsumptionErrorCode } from '../piChatEvent-
|
|
8
|
-
export { p as AgentDefinitionErrorCode, q as AgentDeploymentErrorCode, r as ApiErrorPayload, s as ApiErrorPayloadSchema, t as ApiErrorResponse, u as ApiErrorResponseSchema,
|
|
7
|
+
import { B as BoringChatPart, T as ToolUiMetadata, A as AgentConsumptionErrorCode } from '../piChatEvent-DLa8CgFa.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, m 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, o 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-DLa8CgFa.js';
|
|
9
9
|
import { z } from 'zod';
|
|
10
10
|
import '@mariozechner/pi-coding-agent';
|
|
11
11
|
|
package/dist/{workspaceAgentDispatcher-p4tlVvbM.d.ts → workspaceAgentDispatcher-CBN2xxaH.d.ts}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { p as AgentDefinitionErrorCode, q as AgentDeploymentErrorCode, D as InterruptReceipt,
|
|
3
|
-
import { p as AgentSendInput, j as AgentEvent } from './harness-
|
|
2
|
+
import { p as AgentDefinitionErrorCode, q as AgentDeploymentErrorCode, D as InterruptReceipt, j as StopReceipt } from './piChatEvent-DLa8CgFa.js';
|
|
3
|
+
import { p as AgentSendInput, j as AgentEvent } from './harness-Dtu-WAXy.js';
|
|
4
4
|
|
|
5
5
|
interface SandboxHandleRecord {
|
|
6
6
|
workspaceId: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hachej/boring-agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.84",
|
|
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.",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"use-stick-to-bottom": "^1.1.6",
|
|
85
85
|
"yaml": "^2.9.0",
|
|
86
86
|
"zod": "^3.25.76",
|
|
87
|
-
"@hachej/boring-ui-kit": "0.1.
|
|
87
|
+
"@hachej/boring-ui-kit": "0.1.84"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
90
|
"@antithesishq/bombadil": "0.6.1",
|