@sideboard-ai/core 0.1.327 → 0.1.329
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/{abletime-OW7LTFQD.js → abletime-5FBKBO3R.js} +4 -4
- package/dist/{abletime-NW4PJGHN.js → abletime-SO2YHMEI.js} +4 -4
- package/dist/{abletime-oauth-TPR2QDRI.js → abletime-oauth-EUC5FFMD.js} +5 -5
- package/dist/{abletime-oauth-KWQQRHOQ.js → abletime-oauth-I34WZZZL.js} +3 -3
- package/dist/{abletime-rest-5DCWN3P4.js → abletime-rest-EI5ZJ72Z.js} +3 -3
- package/dist/{abletime-rest-UJ6SXDBN.js → abletime-rest-HEQXSZAQ.js} +3 -3
- package/dist/agents/claude-runner.js +1 -1
- package/dist/{agents-XWIPONJR.js → agents-JH4WV2ZH.js} +7 -7
- package/dist/{agents-IYBY3JT5.js → agents-JXQKHY7Q.js} +7 -7
- package/dist/{app-settings-A5D364JD.js → app-settings-JAEV53LB.js} +1 -1
- package/dist/{app-settings-SA4HX3ZQ.js → app-settings-SHZWNJBV.js} +1 -1
- package/dist/{chunk-TUH4ICHQ.js → chunk-277I5IBI.js} +1 -1
- package/dist/{chunk-QMLDR63X.js → chunk-3DJQLQWU.js} +2 -2
- package/dist/{chunk-EJRCHCXM.js → chunk-7BAS6DF7.js} +2 -1
- package/dist/{chunk-ECY7WL6T.js → chunk-7L36GZA4.js} +2 -2
- package/dist/{chunk-SFXGD5KJ.js → chunk-7MPRTC6X.js} +1 -1
- package/dist/{chunk-ZPBOWO64.js → chunk-BAIPCN34.js} +2 -2
- package/dist/{chunk-SB5ADEZZ.js → chunk-D6V6F74A.js} +5 -5
- package/dist/{chunk-MO46K6WK.js → chunk-DBRQ5NNB.js} +8 -8
- package/dist/{chunk-NQGLDQYB.js → chunk-DFKLWWLY.js} +7 -7
- package/dist/{chunk-YUHZEIVG.js → chunk-E6LONPQH.js} +78 -24
- package/dist/{chunk-5Y2C7Q55.js → chunk-EW5D53VB.js} +1 -1
- package/dist/{chunk-D446IWPP.js → chunk-EY5BJAPV.js} +2 -1
- package/dist/{chunk-XBBZZHJY.js → chunk-F4OUZDIB.js} +5 -5
- package/dist/{chunk-Q4UPRQOS.js → chunk-G45SGI57.js} +3 -3
- package/dist/{chunk-DEB47BII.js → chunk-HCK3UCBJ.js} +80 -26
- package/dist/{chunk-EUIVQAPK.js → chunk-HJIA4X3L.js} +2 -2
- package/dist/{chunk-4F7THWIO.js → chunk-JQWCZGSO.js} +2 -2
- package/dist/{chunk-IXWPCOLQ.js → chunk-KUD24QYI.js} +37 -7
- package/dist/{chunk-4G3W23X3.js → chunk-MXQ66CLO.js} +3 -3
- package/dist/{chunk-UMXBH344.js → chunk-NCFYUUSC.js} +1 -1
- package/dist/{chunk-ULWPSBAB.js → chunk-NJV5YEKI.js} +13 -11
- package/dist/{chunk-2GEUFPQQ.js → chunk-NQHTYX35.js} +1 -1
- package/dist/{chunk-RDXODLEN.js → chunk-O7JSWISN.js} +3 -3
- package/dist/{chunk-R2C45NHT.js → chunk-P4QRDXRY.js} +2 -2
- package/dist/{chunk-RZJ3QJZT.js → chunk-PZ5MVD27.js} +34 -19
- package/dist/{chunk-Y6OHM672.js → chunk-QVLDZWHZ.js} +1 -1
- package/dist/{chunk-DACWFN4O.js → chunk-SKPX66MO.js} +5 -5
- package/dist/{chunk-JKHCADKB.js → chunk-U7EANR52.js} +2 -2
- package/dist/{chunk-KLVW3J2B.js → chunk-XOIJJRAQ.js} +2 -2
- package/dist/{chunk-CHYUUETG.js → chunk-YMV5O7KY.js} +3 -3
- package/dist/{chunk-ATQLP22S.js → chunk-ZT5YPYZE.js} +1 -1
- package/dist/{conductor-D62Q2XJC.js → conductor-6DIR7A4N.js} +5 -5
- package/dist/{conductor-CP7TW6TN.js → conductor-FA27ZGCV.js} +6 -6
- package/dist/{coordinator-prompt-J7O7JB26.js → coordinator-prompt-B6RHGEJK.js} +4 -4
- package/dist/{coordinator-prompt-3PJLU3UH.js → coordinator-prompt-KAZXK5FZ.js} +4 -4
- package/dist/{global-workspace-Y3UDZYJX.js → global-workspace-IOKHZCXD.js} +4 -4
- package/dist/{global-workspace-4CTLU2BV.js → global-workspace-JKINHUY3.js} +4 -4
- package/dist/index.cjs +107 -22
- package/dist/index.d.cts +30 -18
- package/dist/index.d.ts +30 -18
- package/dist/index.js +27 -25
- package/dist/{linear-CXWGH2TW.js → linear-7HSIGV5S.js} +2 -2
- package/dist/{linear-WLDCJ3AF.js → linear-FRJRK6KI.js} +2 -2
- package/dist/{linear-list-52LEDEWO.js → linear-list-I6DNJC6V.js} +1 -1
- package/dist/{linear-list-FGVN65JU.js → linear-list-LDMBSKYI.js} +1 -1
- package/dist/mcp/run-stdio.cjs +89 -21
- package/dist/mcp/run-stdio.js +16 -16
- package/dist/{optional-cli-INRVBBBG.js → optional-cli-FOSC4NVE.js} +3 -3
- package/dist/{optional-cli-FN4MGB6W.js → optional-cli-NSQZ2DYK.js} +4 -4
- package/dist/{orchestrator-EN3ZKD73.js → orchestrator-LI6EBD2Y.js} +11 -11
- package/dist/{orchestrator-W4TZBBDO.js → orchestrator-V35TLMXB.js} +10 -10
- package/dist/{thread-store-K2ZNGUSM.js → thread-store-NVFWKJFH.js} +2 -2
- package/dist/{thread-store-4WE24XA2.js → thread-store-PCIMS6RA.js} +2 -2
- package/dist/{workspaces-MM7CQYR6.js → workspaces-FJL3TL3K.js} +4 -4
- package/dist/{workspaces-WYCVZ6XH.js → workspaces-OLONQF2C.js} +4 -4
- package/dist/{worktree-JBNEMJ5Z.js → worktree-QSQJ2POO.js} +3 -3
- package/dist/{worktree-NNVRGPP4.js → worktree-TX4WXQZV.js} +3 -3
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -8,8 +8,9 @@ import { EventEmitter } from 'node:events';
|
|
|
8
8
|
* Why an agent is waiting on a person. Process liveness stays on
|
|
9
9
|
* `ThreadStatus`; this is the attention flag (Herdr `blocked`).
|
|
10
10
|
* Cleared when the next user message starts a turn. An ask_user highlight
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* stays until the user answers or skips. A later tool in the same turn
|
|
12
|
+
* does not remove it — the tool returns immediately, and the model often
|
|
13
|
+
* keeps going before the person can answer.
|
|
13
14
|
*/
|
|
14
15
|
type AgentBlockSource = 'ask_user' | 'plan' | 'reported' | 'permission';
|
|
15
16
|
/** Composer Allow / Deny while a tool waits on the user. */
|
|
@@ -47,9 +48,9 @@ interface AgentBlock {
|
|
|
47
48
|
}>;
|
|
48
49
|
}>;
|
|
49
50
|
/**
|
|
50
|
-
* True once ask_user is
|
|
51
|
-
*
|
|
52
|
-
*
|
|
51
|
+
* True once ask_user is in the live stream or the finished turn.
|
|
52
|
+
* A mid-turn stamp without this stays off the sidebar / board / phone
|
|
53
|
+
* until the picker is actually on screen. A later tool does not clear it.
|
|
53
54
|
*/
|
|
54
55
|
onScreen?: boolean;
|
|
55
56
|
permission?: AgentPermissionPrompt;
|
|
@@ -3522,7 +3523,7 @@ declare const ABLETIME_OAUTH_PORT = 19849;
|
|
|
3522
3523
|
/** Local listener the marketing-site bounce sends the browser to. */
|
|
3523
3524
|
declare const ABLETIME_OAUTH_LOCAL_CALLBACK = "http://127.0.0.1:19849/callback";
|
|
3524
3525
|
/** Registered redirect — must match `site/oauth/abletime-client.json` redirect_uris. */
|
|
3525
|
-
declare const ABLETIME_OAUTH_REDIRECT = "https://www.sideboard.
|
|
3526
|
+
declare const ABLETIME_OAUTH_REDIRECT = "https://www.sideboard.build/oauth/abletime/callback";
|
|
3526
3527
|
declare function ableTimeOAuthRedirectUri(): string;
|
|
3527
3528
|
declare function parseAbleTimeOAuthCallbackUrl(reqUrl: string): URL | null;
|
|
3528
3529
|
/** Map the hosted callback onto the desktop listener (query: code / state / error). */
|
|
@@ -3530,7 +3531,7 @@ declare function ableTimeOAuthLocalBounceUrl(reqUrl: string): string | null;
|
|
|
3530
3531
|
/** Marketing-site page that immediately opens the desktop listener. */
|
|
3531
3532
|
declare function ableTimeOAuthBouncePage(localUrl: string): string;
|
|
3532
3533
|
/** Client ID Metadata Document (AbleTime advertises CIMD, not DCR). */
|
|
3533
|
-
declare const BAKED_ABLETIME_OAUTH_CLIENT_ID = "https://www.sideboard.
|
|
3534
|
+
declare const BAKED_ABLETIME_OAUTH_CLIENT_ID = "https://www.sideboard.build/oauth/abletime-client.json";
|
|
3534
3535
|
declare const ABLETIME_OAUTH_RESOURCE = "https://track.abletime.com/api/public/v2/mcp";
|
|
3535
3536
|
declare function hasBakedAbleTimeOAuth(): boolean;
|
|
3536
3537
|
declare function ableTimeOAuthClientId(): string;
|
|
@@ -5833,7 +5834,7 @@ declare function applyThreadIntoMain(thread: Pick<Thread, 'repoPath' | 'worktree
|
|
|
5833
5834
|
* |------------------|-----------------------------------------------------------|
|
|
5834
5835
|
* | submitted | queued — waiting for a concurrency slot, not started |
|
|
5835
5836
|
* | working | the agent is running this turn |
|
|
5836
|
-
* | input-required |
|
|
5837
|
+
* | input-required | unanswered `ask_user`, even if a later tool ran |
|
|
5837
5838
|
* | completed | turn ended with an answer |
|
|
5838
5839
|
* | failed | runner / agent error, or worktree missing (`broken`) |
|
|
5839
5840
|
* | canceled | force-stopped before finishing |
|
|
@@ -5855,6 +5856,9 @@ declare function deriveTaskState(input: {
|
|
|
5855
5856
|
stillRunning: boolean;
|
|
5856
5857
|
/** Parts of the last agent reply (not an injected notice). */
|
|
5857
5858
|
lastAgentParts?: MessagePart[];
|
|
5859
|
+
dismissedQuestionSignature?: string | null;
|
|
5860
|
+
/** A real user message landed after the agent reply that asked. */
|
|
5861
|
+
userAnswered?: boolean;
|
|
5858
5862
|
}): TaskState;
|
|
5859
5863
|
/** Snapshot returned by `getTurnResult`. Block fields are optional so older test doubles typecheck. */
|
|
5860
5864
|
type TurnResult = {
|
|
@@ -6636,7 +6640,7 @@ type ToolPartLike = {
|
|
|
6636
6640
|
};
|
|
6637
6641
|
/** True when the last top-level tool (not a nested child) is ask_user. */
|
|
6638
6642
|
declare function lastTopLevelToolIsAskUser(parts: ToolPartLike[] | undefined | null): boolean;
|
|
6639
|
-
/** Newest ask-user tool
|
|
6643
|
+
/** Newest top-level ask-user tool with parseable questions. Nested calls do not count. */
|
|
6640
6644
|
declare function extractPendingPlanQuestions(parts: ToolPartLike[] | undefined | null): PendingPlanQuestions | null;
|
|
6641
6645
|
/** Sidebar ask_user highlight, including questions stamped at call time. */
|
|
6642
6646
|
interface AskBlockSnapshot {
|
|
@@ -6644,6 +6648,8 @@ interface AskBlockSnapshot {
|
|
|
6644
6648
|
at?: string;
|
|
6645
6649
|
questionSignature?: string;
|
|
6646
6650
|
questions?: PlanQuestion[];
|
|
6651
|
+
/** Set once the picker is in the live stream. A mid-turn stamp omits it. */
|
|
6652
|
+
onScreen?: boolean;
|
|
6647
6653
|
}
|
|
6648
6654
|
/**
|
|
6649
6655
|
* True when no later user reply has landed after this ask.
|
|
@@ -6675,7 +6681,10 @@ declare function latestPendingPlanQuestions(input: {
|
|
|
6675
6681
|
*/
|
|
6676
6682
|
agentBlock?: AskBlockSnapshot | null;
|
|
6677
6683
|
dismissedQuestionSignature?: string | null;
|
|
6678
|
-
/**
|
|
6684
|
+
/**
|
|
6685
|
+
* Hide a mid-turn stamp until the ask is in the stream (or the turn
|
|
6686
|
+
* ends). Once the picker is on screen, a later tool must not hide it.
|
|
6687
|
+
*/
|
|
6679
6688
|
status?: string;
|
|
6680
6689
|
}): PendingPlanQuestions | null;
|
|
6681
6690
|
interface PlanQuestionAnswer {
|
|
@@ -6994,7 +7003,7 @@ declare function worktreeBoardStatus(group: Array<Pick<Thread, 'status'>>): Thre
|
|
|
6994
7003
|
* Blocked highlight. Errors and archived chats keep their own status.
|
|
6995
7004
|
* An ask_user stamp lands when the tool is called — before the picker is on
|
|
6996
7005
|
* screen — so hide it while the turn is in flight unless `onScreen` (the
|
|
6997
|
-
*
|
|
7006
|
+
* ask is in the live stream). Drop it once the user answers or skips.
|
|
6998
7007
|
*/
|
|
6999
7008
|
declare function visibleAgentBlock(thread: AgentBlockThread): AgentBlock | null;
|
|
7000
7009
|
/**
|
|
@@ -8331,7 +8340,7 @@ declare function closeMcpUiHost(): void;
|
|
|
8331
8340
|
declare function stashMcpAppModelContext(threadId: string, text: string): void;
|
|
8332
8341
|
|
|
8333
8342
|
/** Public WebSocket URL for Slack desktops on the hosted relay (path included). */
|
|
8334
|
-
declare const BAKED_SLACK_RELAY_URL = "wss://relay.sideboard.
|
|
8343
|
+
declare const BAKED_SLACK_RELAY_URL = "wss://relay.sideboard.build/slack/desktop";
|
|
8335
8344
|
declare function hasBakedSlackOAuth(): boolean;
|
|
8336
8345
|
/**
|
|
8337
8346
|
* WebSocket URL for this Mac's Slack desktop session on the relay.
|
|
@@ -8339,7 +8348,7 @@ declare function hasBakedSlackOAuth(): boolean;
|
|
|
8339
8348
|
*/
|
|
8340
8349
|
declare function slackRelayUrl(): string;
|
|
8341
8350
|
|
|
8342
|
-
declare const SLACK_OAUTH_REDIRECT = "https://relay.sideboard.
|
|
8351
|
+
declare const SLACK_OAUTH_REDIRECT = "https://relay.sideboard.build/slack/callback";
|
|
8343
8352
|
|
|
8344
8353
|
declare function slackOAuthResultUrl(state: string, relayWsUrl?: string): string;
|
|
8345
8354
|
|
|
@@ -8603,7 +8612,7 @@ declare function runRemoteHost(opts: RemoteHostClientOptions): RemoteHostHandle;
|
|
|
8603
8612
|
|
|
8604
8613
|
/** Phone ↔ relay ↔ Mac. Message text only. The Mac runs the orchestrator. */
|
|
8605
8614
|
declare const REMOTE_RELAY_PATH = "/remote";
|
|
8606
|
-
declare const BAKED_REMOTE_RELAY_URL = "wss://relay.sideboard.
|
|
8615
|
+
declare const BAKED_REMOTE_RELAY_URL = "wss://relay.sideboard.build/remote";
|
|
8607
8616
|
/**
|
|
8608
8617
|
* `wss://host/remote`, or `ws://` for a local relay.
|
|
8609
8618
|
* `https://host` and a host with no path become that WebSocket URL.
|
|
@@ -8709,7 +8718,7 @@ declare function handleRemoteInbound(text: string, opts: {
|
|
|
8709
8718
|
}): void;
|
|
8710
8719
|
|
|
8711
8720
|
declare function isRemoteAccountLoginCancelled(err: unknown): boolean;
|
|
8712
|
-
/** `wss://relay.sideboard.
|
|
8721
|
+
/** `wss://relay.sideboard.build/remote` → `https://relay.sideboard.build`. */
|
|
8713
8722
|
declare function remoteAccountHttpOrigin(wsUrl?: string): string;
|
|
8714
8723
|
type RemoteAccountSession = {
|
|
8715
8724
|
credential: string;
|
|
@@ -8872,7 +8881,10 @@ interface RelayServerOptions {
|
|
|
8872
8881
|
staticRoot?: string;
|
|
8873
8882
|
/** Hostnames that get the marketing site (e.g. `www.sideboard.cloud`). Empty = any host. */
|
|
8874
8883
|
staticHosts?: string[];
|
|
8875
|
-
/**
|
|
8884
|
+
/**
|
|
8885
|
+
* Apex (or aliases) that 301 to `canonicalSiteHost`.
|
|
8886
|
+
* A host listed in `staticHosts` is served instead, so both names can stay up.
|
|
8887
|
+
*/
|
|
8876
8888
|
redirectHosts?: string[];
|
|
8877
8889
|
/** Canonical public site host (default `www.sideboard.cloud`). */
|
|
8878
8890
|
canonicalSiteHost?: string;
|
|
@@ -8883,7 +8895,7 @@ interface RelayServerOptions {
|
|
|
8883
8895
|
accountsPath?: string;
|
|
8884
8896
|
/** Git-host OAuth clients. Secrets stay on the relay. */
|
|
8885
8897
|
relayOAuth?: RelayOAuthConfig;
|
|
8886
|
-
/** Public origin for OAuth redirects, e.g. `https://relay.sideboard.
|
|
8898
|
+
/** Public origin for OAuth redirects, e.g. `https://relay.sideboard.build`. */
|
|
8887
8899
|
relayPublicOrigin?: string;
|
|
8888
8900
|
}
|
|
8889
8901
|
interface RelayServerHandle {
|
|
@@ -8908,7 +8920,7 @@ interface SlackRelayRegisterWorkspace {
|
|
|
8908
8920
|
userToken: string;
|
|
8909
8921
|
}
|
|
8910
8922
|
interface SlackRelayClientOptions {
|
|
8911
|
-
/** Full WebSocket URL including path, e.g. wss://relay.sideboard.
|
|
8923
|
+
/** Full WebSocket URL including path, e.g. wss://relay.sideboard.build/slack/desktop */
|
|
8912
8924
|
url: string;
|
|
8913
8925
|
workspaces: SlackRelayRegisterWorkspace[];
|
|
8914
8926
|
/** Stable per-Mac destination id. */
|
package/dist/index.d.ts
CHANGED
|
@@ -8,8 +8,9 @@ import { EventEmitter } from 'node:events';
|
|
|
8
8
|
* Why an agent is waiting on a person. Process liveness stays on
|
|
9
9
|
* `ThreadStatus`; this is the attention flag (Herdr `blocked`).
|
|
10
10
|
* Cleared when the next user message starts a turn. An ask_user highlight
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* stays until the user answers or skips. A later tool in the same turn
|
|
12
|
+
* does not remove it — the tool returns immediately, and the model often
|
|
13
|
+
* keeps going before the person can answer.
|
|
13
14
|
*/
|
|
14
15
|
type AgentBlockSource = 'ask_user' | 'plan' | 'reported' | 'permission';
|
|
15
16
|
/** Composer Allow / Deny while a tool waits on the user. */
|
|
@@ -47,9 +48,9 @@ interface AgentBlock {
|
|
|
47
48
|
}>;
|
|
48
49
|
}>;
|
|
49
50
|
/**
|
|
50
|
-
* True once ask_user is
|
|
51
|
-
*
|
|
52
|
-
*
|
|
51
|
+
* True once ask_user is in the live stream or the finished turn.
|
|
52
|
+
* A mid-turn stamp without this stays off the sidebar / board / phone
|
|
53
|
+
* until the picker is actually on screen. A later tool does not clear it.
|
|
53
54
|
*/
|
|
54
55
|
onScreen?: boolean;
|
|
55
56
|
permission?: AgentPermissionPrompt;
|
|
@@ -3522,7 +3523,7 @@ declare const ABLETIME_OAUTH_PORT = 19849;
|
|
|
3522
3523
|
/** Local listener the marketing-site bounce sends the browser to. */
|
|
3523
3524
|
declare const ABLETIME_OAUTH_LOCAL_CALLBACK = "http://127.0.0.1:19849/callback";
|
|
3524
3525
|
/** Registered redirect — must match `site/oauth/abletime-client.json` redirect_uris. */
|
|
3525
|
-
declare const ABLETIME_OAUTH_REDIRECT = "https://www.sideboard.
|
|
3526
|
+
declare const ABLETIME_OAUTH_REDIRECT = "https://www.sideboard.build/oauth/abletime/callback";
|
|
3526
3527
|
declare function ableTimeOAuthRedirectUri(): string;
|
|
3527
3528
|
declare function parseAbleTimeOAuthCallbackUrl(reqUrl: string): URL | null;
|
|
3528
3529
|
/** Map the hosted callback onto the desktop listener (query: code / state / error). */
|
|
@@ -3530,7 +3531,7 @@ declare function ableTimeOAuthLocalBounceUrl(reqUrl: string): string | null;
|
|
|
3530
3531
|
/** Marketing-site page that immediately opens the desktop listener. */
|
|
3531
3532
|
declare function ableTimeOAuthBouncePage(localUrl: string): string;
|
|
3532
3533
|
/** Client ID Metadata Document (AbleTime advertises CIMD, not DCR). */
|
|
3533
|
-
declare const BAKED_ABLETIME_OAUTH_CLIENT_ID = "https://www.sideboard.
|
|
3534
|
+
declare const BAKED_ABLETIME_OAUTH_CLIENT_ID = "https://www.sideboard.build/oauth/abletime-client.json";
|
|
3534
3535
|
declare const ABLETIME_OAUTH_RESOURCE = "https://track.abletime.com/api/public/v2/mcp";
|
|
3535
3536
|
declare function hasBakedAbleTimeOAuth(): boolean;
|
|
3536
3537
|
declare function ableTimeOAuthClientId(): string;
|
|
@@ -5833,7 +5834,7 @@ declare function applyThreadIntoMain(thread: Pick<Thread, 'repoPath' | 'worktree
|
|
|
5833
5834
|
* |------------------|-----------------------------------------------------------|
|
|
5834
5835
|
* | submitted | queued — waiting for a concurrency slot, not started |
|
|
5835
5836
|
* | working | the agent is running this turn |
|
|
5836
|
-
* | input-required |
|
|
5837
|
+
* | input-required | unanswered `ask_user`, even if a later tool ran |
|
|
5837
5838
|
* | completed | turn ended with an answer |
|
|
5838
5839
|
* | failed | runner / agent error, or worktree missing (`broken`) |
|
|
5839
5840
|
* | canceled | force-stopped before finishing |
|
|
@@ -5855,6 +5856,9 @@ declare function deriveTaskState(input: {
|
|
|
5855
5856
|
stillRunning: boolean;
|
|
5856
5857
|
/** Parts of the last agent reply (not an injected notice). */
|
|
5857
5858
|
lastAgentParts?: MessagePart[];
|
|
5859
|
+
dismissedQuestionSignature?: string | null;
|
|
5860
|
+
/** A real user message landed after the agent reply that asked. */
|
|
5861
|
+
userAnswered?: boolean;
|
|
5858
5862
|
}): TaskState;
|
|
5859
5863
|
/** Snapshot returned by `getTurnResult`. Block fields are optional so older test doubles typecheck. */
|
|
5860
5864
|
type TurnResult = {
|
|
@@ -6636,7 +6640,7 @@ type ToolPartLike = {
|
|
|
6636
6640
|
};
|
|
6637
6641
|
/** True when the last top-level tool (not a nested child) is ask_user. */
|
|
6638
6642
|
declare function lastTopLevelToolIsAskUser(parts: ToolPartLike[] | undefined | null): boolean;
|
|
6639
|
-
/** Newest ask-user tool
|
|
6643
|
+
/** Newest top-level ask-user tool with parseable questions. Nested calls do not count. */
|
|
6640
6644
|
declare function extractPendingPlanQuestions(parts: ToolPartLike[] | undefined | null): PendingPlanQuestions | null;
|
|
6641
6645
|
/** Sidebar ask_user highlight, including questions stamped at call time. */
|
|
6642
6646
|
interface AskBlockSnapshot {
|
|
@@ -6644,6 +6648,8 @@ interface AskBlockSnapshot {
|
|
|
6644
6648
|
at?: string;
|
|
6645
6649
|
questionSignature?: string;
|
|
6646
6650
|
questions?: PlanQuestion[];
|
|
6651
|
+
/** Set once the picker is in the live stream. A mid-turn stamp omits it. */
|
|
6652
|
+
onScreen?: boolean;
|
|
6647
6653
|
}
|
|
6648
6654
|
/**
|
|
6649
6655
|
* True when no later user reply has landed after this ask.
|
|
@@ -6675,7 +6681,10 @@ declare function latestPendingPlanQuestions(input: {
|
|
|
6675
6681
|
*/
|
|
6676
6682
|
agentBlock?: AskBlockSnapshot | null;
|
|
6677
6683
|
dismissedQuestionSignature?: string | null;
|
|
6678
|
-
/**
|
|
6684
|
+
/**
|
|
6685
|
+
* Hide a mid-turn stamp until the ask is in the stream (or the turn
|
|
6686
|
+
* ends). Once the picker is on screen, a later tool must not hide it.
|
|
6687
|
+
*/
|
|
6679
6688
|
status?: string;
|
|
6680
6689
|
}): PendingPlanQuestions | null;
|
|
6681
6690
|
interface PlanQuestionAnswer {
|
|
@@ -6994,7 +7003,7 @@ declare function worktreeBoardStatus(group: Array<Pick<Thread, 'status'>>): Thre
|
|
|
6994
7003
|
* Blocked highlight. Errors and archived chats keep their own status.
|
|
6995
7004
|
* An ask_user stamp lands when the tool is called — before the picker is on
|
|
6996
7005
|
* screen — so hide it while the turn is in flight unless `onScreen` (the
|
|
6997
|
-
*
|
|
7006
|
+
* ask is in the live stream). Drop it once the user answers or skips.
|
|
6998
7007
|
*/
|
|
6999
7008
|
declare function visibleAgentBlock(thread: AgentBlockThread): AgentBlock | null;
|
|
7000
7009
|
/**
|
|
@@ -8331,7 +8340,7 @@ declare function closeMcpUiHost(): void;
|
|
|
8331
8340
|
declare function stashMcpAppModelContext(threadId: string, text: string): void;
|
|
8332
8341
|
|
|
8333
8342
|
/** Public WebSocket URL for Slack desktops on the hosted relay (path included). */
|
|
8334
|
-
declare const BAKED_SLACK_RELAY_URL = "wss://relay.sideboard.
|
|
8343
|
+
declare const BAKED_SLACK_RELAY_URL = "wss://relay.sideboard.build/slack/desktop";
|
|
8335
8344
|
declare function hasBakedSlackOAuth(): boolean;
|
|
8336
8345
|
/**
|
|
8337
8346
|
* WebSocket URL for this Mac's Slack desktop session on the relay.
|
|
@@ -8339,7 +8348,7 @@ declare function hasBakedSlackOAuth(): boolean;
|
|
|
8339
8348
|
*/
|
|
8340
8349
|
declare function slackRelayUrl(): string;
|
|
8341
8350
|
|
|
8342
|
-
declare const SLACK_OAUTH_REDIRECT = "https://relay.sideboard.
|
|
8351
|
+
declare const SLACK_OAUTH_REDIRECT = "https://relay.sideboard.build/slack/callback";
|
|
8343
8352
|
|
|
8344
8353
|
declare function slackOAuthResultUrl(state: string, relayWsUrl?: string): string;
|
|
8345
8354
|
|
|
@@ -8603,7 +8612,7 @@ declare function runRemoteHost(opts: RemoteHostClientOptions): RemoteHostHandle;
|
|
|
8603
8612
|
|
|
8604
8613
|
/** Phone ↔ relay ↔ Mac. Message text only. The Mac runs the orchestrator. */
|
|
8605
8614
|
declare const REMOTE_RELAY_PATH = "/remote";
|
|
8606
|
-
declare const BAKED_REMOTE_RELAY_URL = "wss://relay.sideboard.
|
|
8615
|
+
declare const BAKED_REMOTE_RELAY_URL = "wss://relay.sideboard.build/remote";
|
|
8607
8616
|
/**
|
|
8608
8617
|
* `wss://host/remote`, or `ws://` for a local relay.
|
|
8609
8618
|
* `https://host` and a host with no path become that WebSocket URL.
|
|
@@ -8709,7 +8718,7 @@ declare function handleRemoteInbound(text: string, opts: {
|
|
|
8709
8718
|
}): void;
|
|
8710
8719
|
|
|
8711
8720
|
declare function isRemoteAccountLoginCancelled(err: unknown): boolean;
|
|
8712
|
-
/** `wss://relay.sideboard.
|
|
8721
|
+
/** `wss://relay.sideboard.build/remote` → `https://relay.sideboard.build`. */
|
|
8713
8722
|
declare function remoteAccountHttpOrigin(wsUrl?: string): string;
|
|
8714
8723
|
type RemoteAccountSession = {
|
|
8715
8724
|
credential: string;
|
|
@@ -8872,7 +8881,10 @@ interface RelayServerOptions {
|
|
|
8872
8881
|
staticRoot?: string;
|
|
8873
8882
|
/** Hostnames that get the marketing site (e.g. `www.sideboard.cloud`). Empty = any host. */
|
|
8874
8883
|
staticHosts?: string[];
|
|
8875
|
-
/**
|
|
8884
|
+
/**
|
|
8885
|
+
* Apex (or aliases) that 301 to `canonicalSiteHost`.
|
|
8886
|
+
* A host listed in `staticHosts` is served instead, so both names can stay up.
|
|
8887
|
+
*/
|
|
8876
8888
|
redirectHosts?: string[];
|
|
8877
8889
|
/** Canonical public site host (default `www.sideboard.cloud`). */
|
|
8878
8890
|
canonicalSiteHost?: string;
|
|
@@ -8883,7 +8895,7 @@ interface RelayServerOptions {
|
|
|
8883
8895
|
accountsPath?: string;
|
|
8884
8896
|
/** Git-host OAuth clients. Secrets stay on the relay. */
|
|
8885
8897
|
relayOAuth?: RelayOAuthConfig;
|
|
8886
|
-
/** Public origin for OAuth redirects, e.g. `https://relay.sideboard.
|
|
8898
|
+
/** Public origin for OAuth redirects, e.g. `https://relay.sideboard.build`. */
|
|
8887
8899
|
relayPublicOrigin?: string;
|
|
8888
8900
|
}
|
|
8889
8901
|
interface RelayServerHandle {
|
|
@@ -8908,7 +8920,7 @@ interface SlackRelayRegisterWorkspace {
|
|
|
8908
8920
|
userToken: string;
|
|
8909
8921
|
}
|
|
8910
8922
|
interface SlackRelayClientOptions {
|
|
8911
|
-
/** Full WebSocket URL including path, e.g. wss://relay.sideboard.
|
|
8923
|
+
/** Full WebSocket URL including path, e.g. wss://relay.sideboard.build/slack/desktop */
|
|
8912
8924
|
url: string;
|
|
8913
8925
|
workspaces: SlackRelayRegisterWorkspace[];
|
|
8914
8926
|
/** Stable per-Mac destination id. */
|
package/dist/index.js
CHANGED
|
@@ -17,13 +17,13 @@ import {
|
|
|
17
17
|
toAbleTimeIssueInfo,
|
|
18
18
|
updateAbleTimeTask,
|
|
19
19
|
verifyAbleTimeConnection
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-YMV5O7KY.js";
|
|
21
21
|
import {
|
|
22
22
|
clearOptionalCliPresenceCache,
|
|
23
23
|
detectOptionalServiceClis,
|
|
24
24
|
installOptionalServiceCli,
|
|
25
25
|
optionalCliPresence
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-3DJQLQWU.js";
|
|
27
27
|
import {
|
|
28
28
|
AGENT_GIT_ACTIONS,
|
|
29
29
|
BOARD_COLUMN_DEFS,
|
|
@@ -218,7 +218,7 @@ import {
|
|
|
218
218
|
worktreeCleanupSettings,
|
|
219
219
|
writeAgentBlock,
|
|
220
220
|
writeWorktreeFile
|
|
221
|
-
} from "./chunk-
|
|
221
|
+
} from "./chunk-HCK3UCBJ.js";
|
|
222
222
|
import {
|
|
223
223
|
OPTIONAL_SERVICES,
|
|
224
224
|
OPTIONAL_SERVICE_IDS,
|
|
@@ -234,7 +234,7 @@ import {
|
|
|
234
234
|
optionalServiceConnected,
|
|
235
235
|
optionalServiceSpec,
|
|
236
236
|
verifyOptionalService
|
|
237
|
-
} from "./chunk-
|
|
237
|
+
} from "./chunk-7L36GZA4.js";
|
|
238
238
|
import {
|
|
239
239
|
LEGACY_PLAN_FILE_REL,
|
|
240
240
|
PLAN_FILE_NAME,
|
|
@@ -291,7 +291,7 @@ import {
|
|
|
291
291
|
startLinearOAuth,
|
|
292
292
|
updateLinearIssue,
|
|
293
293
|
validateLinearApiKey
|
|
294
|
-
} from "./chunk-
|
|
294
|
+
} from "./chunk-7MPRTC6X.js";
|
|
295
295
|
import {
|
|
296
296
|
downloadAuthenticatedFile,
|
|
297
297
|
extractHttpUrls,
|
|
@@ -379,7 +379,7 @@ import {
|
|
|
379
379
|
userMcpNamesToDisable,
|
|
380
380
|
worktreeMcpToolNames,
|
|
381
381
|
writeInjectedMcpConfig
|
|
382
|
-
} from "./chunk-
|
|
382
|
+
} from "./chunk-DFKLWWLY.js";
|
|
383
383
|
import {
|
|
384
384
|
getAgentSetupInfo,
|
|
385
385
|
installAgent,
|
|
@@ -391,7 +391,7 @@ import {
|
|
|
391
391
|
prepareTerminalCommand,
|
|
392
392
|
resolveLoginCommand,
|
|
393
393
|
whichOnPath
|
|
394
|
-
} from "./chunk-
|
|
394
|
+
} from "./chunk-XOIJJRAQ.js";
|
|
395
395
|
import {
|
|
396
396
|
brightsyMcpServerName,
|
|
397
397
|
connectBrightsyTeam,
|
|
@@ -402,7 +402,7 @@ import {
|
|
|
402
402
|
listConnectedBrightsyTeams,
|
|
403
403
|
switchBrightsyAccount
|
|
404
404
|
} from "./chunk-S5CJUIPY.js";
|
|
405
|
-
import "./chunk-
|
|
405
|
+
import "./chunk-ZT5YPYZE.js";
|
|
406
406
|
import {
|
|
407
407
|
BRIGHTSY_SUMMARIZE_CONTEXT_TOOL,
|
|
408
408
|
CHARS_PER_CONTEXT_TOKEN,
|
|
@@ -512,7 +512,7 @@ import {
|
|
|
512
512
|
workspaceAgentChatSummaries,
|
|
513
513
|
worktreeRunPortsPath,
|
|
514
514
|
wrapReviewSkillMarkdown
|
|
515
|
-
} from "./chunk-
|
|
515
|
+
} from "./chunk-KUD24QYI.js";
|
|
516
516
|
import {
|
|
517
517
|
STDERR_EVENT_MAX_CHARS,
|
|
518
518
|
STDOUT_EVENT_MAX_CHARS,
|
|
@@ -578,10 +578,10 @@ import {
|
|
|
578
578
|
parseAbleTimeOAuthCallbackUrl,
|
|
579
579
|
resolveAbleTimeOAuthHost,
|
|
580
580
|
startAbleTimeOAuth
|
|
581
|
-
} from "./chunk-
|
|
581
|
+
} from "./chunk-F4OUZDIB.js";
|
|
582
582
|
import {
|
|
583
583
|
looksLikeAbleTimeUlid
|
|
584
|
-
} from "./chunk-
|
|
584
|
+
} from "./chunk-HJIA4X3L.js";
|
|
585
585
|
import {
|
|
586
586
|
ABLETIME_MCP_PATH,
|
|
587
587
|
ABLETIME_MCP_PM_PATH,
|
|
@@ -602,7 +602,7 @@ import {
|
|
|
602
602
|
normalizeAbleTimeCredential,
|
|
603
603
|
normalizeAbleTimeHost,
|
|
604
604
|
rewriteAbleTimeError
|
|
605
|
-
} from "./chunk-
|
|
605
|
+
} from "./chunk-SKPX66MO.js";
|
|
606
606
|
import {
|
|
607
607
|
CLOUD_COORDINATOR_BUSY_REPLY,
|
|
608
608
|
CLOUD_COORDINATOR_CANCELED_REPLY,
|
|
@@ -655,7 +655,7 @@ import {
|
|
|
655
655
|
stageBuffersAsAttachments,
|
|
656
656
|
syncWorkspacesFromThreads,
|
|
657
657
|
takenTeamSlugsForOrchestration
|
|
658
|
-
} from "./chunk-
|
|
658
|
+
} from "./chunk-O7JSWISN.js";
|
|
659
659
|
import {
|
|
660
660
|
GITHUB_PR_BODY_MAX_CHARS,
|
|
661
661
|
GITHUB_PR_BODY_SAFE_CHARS,
|
|
@@ -744,7 +744,7 @@ import {
|
|
|
744
744
|
suggestSlug,
|
|
745
745
|
switchWorktreeBranch,
|
|
746
746
|
warmGithubAgentAuth
|
|
747
|
-
} from "./chunk-
|
|
747
|
+
} from "./chunk-P4QRDXRY.js";
|
|
748
748
|
import {
|
|
749
749
|
FAMOUS_SOCCER_TEAMS,
|
|
750
750
|
WEEKDAY_LABELS,
|
|
@@ -800,7 +800,7 @@ import {
|
|
|
800
800
|
worktreeNameFromPath,
|
|
801
801
|
worktreeSlugForTicket,
|
|
802
802
|
writeThread
|
|
803
|
-
} from "./chunk-
|
|
803
|
+
} from "./chunk-QVLDZWHZ.js";
|
|
804
804
|
import "./chunk-QKHEVSB5.js";
|
|
805
805
|
import {
|
|
806
806
|
BRIGHTSY_OAUTH_CLIENT_ID,
|
|
@@ -833,7 +833,7 @@ import {
|
|
|
833
833
|
latestPendingPlanQuestions,
|
|
834
834
|
parsePlanQuestionsInput,
|
|
835
835
|
planQuestionsSignature
|
|
836
|
-
} from "./chunk-
|
|
836
|
+
} from "./chunk-NJV5YEKI.js";
|
|
837
837
|
import {
|
|
838
838
|
BASE_ALLOWED_TOOLS,
|
|
839
839
|
CLAUDE_CHROME_ALLOWED_TOOLS,
|
|
@@ -1086,7 +1086,7 @@ import {
|
|
|
1086
1086
|
withTurnScopedCost,
|
|
1087
1087
|
writeSecureJson,
|
|
1088
1088
|
writeViewerContext
|
|
1089
|
-
} from "./chunk-
|
|
1089
|
+
} from "./chunk-EY5BJAPV.js";
|
|
1090
1090
|
import {
|
|
1091
1091
|
stripNestedElectronEnv
|
|
1092
1092
|
} from "./chunk-4TR3HZFT.js";
|
|
@@ -5198,7 +5198,7 @@ var SLACK_OAUTH_RESULT_PATH = "/slack/oauth/result";
|
|
|
5198
5198
|
var SLACK_RELAY_DESKTOP_PATH = "/slack/desktop";
|
|
5199
5199
|
var SLACK_OAUTH_LOCAL_PORT = 19847;
|
|
5200
5200
|
var SLACK_OAUTH_LOCAL_CALLBACK = `http://127.0.0.1:${SLACK_OAUTH_LOCAL_PORT}${SLACK_OAUTH_CALLBACK_PATH}`;
|
|
5201
|
-
var SLACK_OAUTH_REDIRECT = `https://relay.sideboard.
|
|
5201
|
+
var SLACK_OAUTH_REDIRECT = `https://relay.sideboard.build${SLACK_OAUTH_CALLBACK_PATH}`;
|
|
5202
5202
|
function slackOAuthRedirectUri() {
|
|
5203
5203
|
return process.env.SIDEBOARD_SLACK_OAUTH_REDIRECT?.trim() || SLACK_OAUTH_REDIRECT;
|
|
5204
5204
|
}
|
|
@@ -5233,7 +5233,7 @@ function parseSlackOAuthResultUrl(reqUrl) {
|
|
|
5233
5233
|
|
|
5234
5234
|
// src/slack/baked-app.ts
|
|
5235
5235
|
var BAKED_SLACK_CLIENT_ID = "7592788819232.11813536272562";
|
|
5236
|
-
var BAKED_SLACK_RELAY_URL = "wss://relay.sideboard.
|
|
5236
|
+
var BAKED_SLACK_RELAY_URL = "wss://relay.sideboard.build/slack/desktop";
|
|
5237
5237
|
function hasBakedSlackOAuth() {
|
|
5238
5238
|
return Boolean(BAKED_SLACK_CLIENT_ID.trim());
|
|
5239
5239
|
}
|
|
@@ -7456,7 +7456,9 @@ async function startRelayServer(opts) {
|
|
|
7456
7456
|
}
|
|
7457
7457
|
const hostname2 = requestHostname(req);
|
|
7458
7458
|
const canonical = (opts.canonicalSiteHost ?? "www.sideboard.cloud").toLowerCase();
|
|
7459
|
-
|
|
7459
|
+
const staticHosts = opts.staticHosts ?? [];
|
|
7460
|
+
const servesSite = staticHosts.length > 0 && staticHosts.includes(hostname2);
|
|
7461
|
+
if (opts.redirectHosts?.includes(hostname2) && hostname2 !== canonical && !servesSite) {
|
|
7460
7462
|
res.writeHead(301, { Location: `https://${canonical}${reqUrl}` });
|
|
7461
7463
|
res.end();
|
|
7462
7464
|
return;
|
|
@@ -7685,7 +7687,7 @@ async function startHeadlessHost(opts) {
|
|
|
7685
7687
|
};
|
|
7686
7688
|
const refreshRunning = async () => {
|
|
7687
7689
|
try {
|
|
7688
|
-
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-
|
|
7690
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-LI6EBD2Y.js");
|
|
7689
7691
|
agentsRunning = getOrchestrator2().getRuntime().running;
|
|
7690
7692
|
} catch {
|
|
7691
7693
|
agentsRunning = 0;
|
|
@@ -9828,7 +9830,7 @@ async function handleJobStop(params, _ctx) {
|
|
|
9828
9830
|
return stopDetachedJob(jobCwd(rec), id, reason ? { reason } : void 0);
|
|
9829
9831
|
}
|
|
9830
9832
|
async function defaultTurnWait(ref, timeoutMs) {
|
|
9831
|
-
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-
|
|
9833
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-LI6EBD2Y.js");
|
|
9832
9834
|
const orch = getOrchestrator2();
|
|
9833
9835
|
const thread = await orch.waitForTurn(ref, timeoutMs, {
|
|
9834
9836
|
resolveIfStillRunning: true
|
|
@@ -10181,7 +10183,7 @@ async function startMcpServer() {
|
|
|
10181
10183
|
);
|
|
10182
10184
|
}
|
|
10183
10185
|
try {
|
|
10184
|
-
const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-
|
|
10186
|
+
const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-JAEV53LB.js");
|
|
10185
10187
|
orch.setMaxConcurrent(maxConcurrentAgents2());
|
|
10186
10188
|
} catch {
|
|
10187
10189
|
}
|
|
@@ -10729,7 +10731,7 @@ async function startMcpServer() {
|
|
|
10729
10731
|
if (!worktreeProfile) {
|
|
10730
10732
|
registerConnectedIssueVendorTools(server);
|
|
10731
10733
|
const { getCaffeinateHold: getCaffeinateHold2, setCaffeinateHold: setCaffeinateHold2 } = await import("./caffeinate-hold-ZNUEZGHB.js");
|
|
10732
|
-
const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-
|
|
10734
|
+
const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-JAEV53LB.js");
|
|
10733
10735
|
const accountDefaults = resolveThreadDefaults2();
|
|
10734
10736
|
const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
|
|
10735
10737
|
server.tool(
|
|
@@ -13496,7 +13498,7 @@ async function continueSourceThread(threadId, prompt) {
|
|
|
13496
13498
|
await continueOnReply(threadId, prompt);
|
|
13497
13499
|
return;
|
|
13498
13500
|
}
|
|
13499
|
-
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-
|
|
13501
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-LI6EBD2Y.js");
|
|
13500
13502
|
await getOrchestrator2().send(threadId, prompt);
|
|
13501
13503
|
} catch {
|
|
13502
13504
|
}
|
|
@@ -27,12 +27,12 @@ import {
|
|
|
27
27
|
rewriteLinearError,
|
|
28
28
|
updateLinearIssue,
|
|
29
29
|
validateLinearApiKey
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-277I5IBI.js";
|
|
31
31
|
import "./chunk-OYRN356W.js";
|
|
32
32
|
import "./chunk-F6GE7V3Q.js";
|
|
33
33
|
import "./chunk-N2WW62LF.js";
|
|
34
34
|
import "./chunk-2GPQZZLY.js";
|
|
35
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-7BAS6DF7.js";
|
|
36
36
|
import "./chunk-NSTQ6QKD.js";
|
|
37
37
|
import "./chunk-WWUABK6B.js";
|
|
38
38
|
import "./chunk-FJZWM2ON.js";
|
|
@@ -25,12 +25,12 @@ import {
|
|
|
25
25
|
rewriteLinearError,
|
|
26
26
|
updateLinearIssue,
|
|
27
27
|
validateLinearApiKey
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-7MPRTC6X.js";
|
|
29
29
|
import "./chunk-DBKHL7NC.js";
|
|
30
30
|
import "./chunk-W3ZLE4PO.js";
|
|
31
31
|
import "./chunk-JAT3JFOS.js";
|
|
32
32
|
import "./chunk-6K64FJDD.js";
|
|
33
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-EY5BJAPV.js";
|
|
34
34
|
import "./chunk-4TR3HZFT.js";
|
|
35
35
|
import "./chunk-WDRMZKVB.js";
|
|
36
36
|
import "./chunk-KI45T4DI.js";
|