agor-live 0.21.2 → 0.22.0
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/cli/commands/branch/env/restart.js +1 -1
- package/dist/cli/commands/branch/env/start.js +1 -1
- package/dist/cli/commands/branch/env/stop.js +1 -1
- package/dist/core/api/index.cjs +5 -1
- package/dist/core/api/index.d.ts +6 -1
- package/dist/core/api/index.d.ts.map +1 -1
- package/dist/core/api/index.js +5 -1
- package/dist/core/claude/index.cjs +162 -14
- package/dist/core/claude/index.js +166 -18
- package/dist/core/client/index.cjs +43 -3
- package/dist/core/client/index.js +37 -3
- package/dist/core/config/browser.cjs +2 -2
- package/dist/core/config/browser.js +2 -2
- package/dist/core/config/config-manager.d.ts.map +1 -1
- package/dist/core/config/constants.d.ts +1 -1
- package/dist/core/config/index.cjs +174 -20
- package/dist/core/config/index.js +178 -24
- package/dist/core/config/types.d.ts +8 -0
- package/dist/core/config/types.d.ts.map +1 -1
- package/dist/core/db/index.cjs +495 -86
- package/dist/core/db/index.js +482 -75
- package/dist/core/db/repositories/artifacts.d.ts.map +1 -1
- package/dist/core/db/repositories/branches.d.ts +13 -1
- package/dist/core/db/repositories/branches.d.ts.map +1 -1
- package/dist/core/db/repositories/gateway-channels.d.ts.map +1 -1
- package/dist/core/db/repositories/index.d.ts +1 -0
- package/dist/core/db/repositories/index.d.ts.map +1 -1
- package/dist/core/db/repositories/session-relationships.d.ts +30 -0
- package/dist/core/db/repositories/session-relationships.d.ts.map +1 -0
- package/dist/core/db/repositories/users.d.ts +11 -0
- package/dist/core/db/repositories/users.d.ts.map +1 -1
- package/dist/core/db/schema.d.ts +421 -4
- package/dist/core/db/schema.d.ts.map +1 -1
- package/dist/core/db/schema.postgres.d.ts +226 -2
- package/dist/core/db/schema.postgres.d.ts.map +1 -1
- package/dist/core/db/schema.sqlite.d.ts +228 -2
- package/dist/core/db/schema.sqlite.d.ts.map +1 -1
- package/dist/core/drizzle/postgres/0050_artifact_source_session.sql +3 -0
- package/dist/core/drizzle/postgres/0051_session_relationships.sql +26 -0
- package/dist/core/drizzle/postgres/meta/_journal.json +14 -0
- package/dist/core/drizzle/sqlite/0059_artifact_source_session.sql +2 -0
- package/dist/core/drizzle/sqlite/0060_session_relationships.sql +23 -0
- package/dist/core/drizzle/sqlite/meta/_journal.json +14 -0
- package/dist/core/gateway/connector-registry.d.ts.map +1 -1
- package/dist/core/gateway/connector.d.ts +22 -0
- package/dist/core/gateway/connector.d.ts.map +1 -1
- package/dist/core/gateway/connectors/slack.d.ts +35 -3
- package/dist/core/gateway/connectors/slack.d.ts.map +1 -1
- package/dist/core/gateway/connectors/teams.d.ts +107 -0
- package/dist/core/gateway/connectors/teams.d.ts.map +1 -0
- package/dist/core/gateway/context.d.ts.map +1 -1
- package/dist/core/gateway/index.cjs +552 -52
- package/dist/core/gateway/index.d.ts +3 -2
- package/dist/core/gateway/index.d.ts.map +1 -1
- package/dist/core/gateway/index.js +544 -52
- package/dist/core/gateway/system-message.d.ts +21 -0
- package/dist/core/gateway/system-message.d.ts.map +1 -1
- package/dist/core/index.cjs +616 -127
- package/dist/core/index.js +597 -116
- package/dist/core/mcp/index.cjs +146 -9
- package/dist/core/mcp/index.js +146 -9
- package/dist/core/mcp/template-resolver.d.ts.map +1 -1
- package/dist/core/seed/index.cjs +375 -59
- package/dist/core/seed/index.js +378 -62
- package/dist/core/sessions/index.cjs +19 -0
- package/dist/core/sessions/index.js +19 -0
- package/dist/core/templates/agor-system-prompt.md +21 -53
- package/dist/core/templates/session-context.cjs +2 -73
- package/dist/core/templates/session-context.d.ts +9 -53
- package/dist/core/templates/session-context.d.ts.map +1 -1
- package/dist/core/templates/session-context.js +2 -72
- package/dist/core/tools/mcp/jwt-auth.cjs +2 -20
- package/dist/core/tools/mcp/jwt-auth.d.ts.map +1 -1
- package/dist/core/tools/mcp/jwt-auth.js +2 -20
- package/dist/core/tools/mcp/oauth-mcp-transport.cjs +2 -15
- package/dist/core/tools/mcp/oauth-mcp-transport.d.ts.map +1 -1
- package/dist/core/tools/mcp/oauth-mcp-transport.js +2 -15
- package/dist/core/tools/mcp/oauth-refresh.cjs +167 -19
- package/dist/core/tools/mcp/oauth-refresh.js +167 -19
- package/dist/core/types/artifact.d.ts +5 -1
- package/dist/core/types/artifact.d.ts.map +1 -1
- package/dist/core/types/branch.d.ts +14 -0
- package/dist/core/types/branch.d.ts.map +1 -1
- package/dist/core/types/gateway.d.ts +1 -1
- package/dist/core/types/gateway.d.ts.map +1 -1
- package/dist/core/types/id.d.ts +1 -0
- package/dist/core/types/id.d.ts.map +1 -1
- package/dist/core/types/index.cjs +36 -0
- package/dist/core/types/index.js +30 -0
- package/dist/core/types/session.d.ts +65 -1
- package/dist/core/types/session.d.ts.map +1 -1
- package/dist/core/types/task.d.ts +9 -0
- package/dist/core/types/task.d.ts.map +1 -1
- package/dist/core/unix/index.cjs +371 -55
- package/dist/core/unix/index.js +374 -58
- package/dist/core/unix/unix-integration-service.d.ts +10 -7
- package/dist/core/unix/unix-integration-service.d.ts.map +1 -1
- package/dist/core/utils/permission-mode-mapper.cjs +19 -0
- package/dist/core/utils/permission-mode-mapper.js +19 -0
- package/dist/daemon/declarations.d.ts +7 -0
- package/dist/daemon/declarations.d.ts.map +1 -1
- package/dist/daemon/hooks/gateway-route.d.ts.map +1 -1
- package/dist/daemon/hooks/gateway-route.js +53 -1
- package/dist/daemon/index.js +3760 -2107
- package/dist/daemon/main.js +3760 -2107
- package/dist/daemon/mcp/server.js +155 -17
- package/dist/daemon/mcp/tools/analytics.js +6 -7
- package/dist/daemon/mcp/tools/artifacts.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/artifacts.js +7 -7
- package/dist/daemon/mcp/tools/boards.js +6 -7
- package/dist/daemon/mcp/tools/branches.js +6 -7
- package/dist/daemon/mcp/tools/card-types.js +6 -7
- package/dist/daemon/mcp/tools/cards.js +6 -7
- package/dist/daemon/mcp/tools/environment.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/environment.js +19 -12
- package/dist/daemon/mcp/tools/knowledge.js +6 -7
- package/dist/daemon/mcp/tools/mcp-servers.js +6 -7
- package/dist/daemon/mcp/tools/messages.js +6 -7
- package/dist/daemon/mcp/tools/proxies.js +6 -7
- package/dist/daemon/mcp/tools/repos.js +6 -7
- package/dist/daemon/mcp/tools/schedules.js +6 -7
- package/dist/daemon/mcp/tools/search.js +6 -7
- package/dist/daemon/mcp/tools/sessions.d.ts.map +1 -1
- package/dist/daemon/mcp/tools/sessions.js +140 -11
- package/dist/daemon/mcp/tools/tasks.js +6 -7
- package/dist/daemon/mcp/tools/users.js +6 -7
- package/dist/daemon/mcp/tools/widgets.js +7 -8
- package/dist/daemon/register-hooks.d.ts +5 -1
- package/dist/daemon/register-hooks.d.ts.map +1 -1
- package/dist/daemon/register-hooks.js +404 -179
- package/dist/daemon/register-routes.d.ts.map +1 -1
- package/dist/daemon/register-routes.js +360 -162
- package/dist/daemon/register-services.d.ts.map +1 -1
- package/dist/daemon/register-services.js +1928 -671
- package/dist/daemon/services/artifacts.d.ts +10 -1
- package/dist/daemon/services/artifacts.d.ts.map +1 -1
- package/dist/daemon/services/artifacts.js +25 -1
- package/dist/daemon/services/branches.d.ts +11 -1
- package/dist/daemon/services/branches.d.ts.map +1 -1
- package/dist/daemon/services/branches.js +470 -184
- package/dist/daemon/services/claude-models.js +879 -339
- package/dist/daemon/services/gateway.d.ts +58 -2
- package/dist/daemon/services/gateway.d.ts.map +1 -1
- package/dist/daemon/services/gateway.js +590 -47
- package/dist/daemon/services/groups.d.ts +2 -0
- package/dist/daemon/services/groups.d.ts.map +1 -1
- package/dist/daemon/services/groups.js +56 -0
- package/dist/daemon/services/mcp-servers.d.ts.map +1 -1
- package/dist/daemon/services/mcp-servers.js +0 -6
- package/dist/daemon/services/scheduler.d.ts.map +1 -1
- package/dist/daemon/services/scheduler.js +6 -2
- package/dist/daemon/services/sessions.d.ts +11 -3
- package/dist/daemon/services/sessions.d.ts.map +1 -1
- package/dist/daemon/services/sessions.js +68 -7
- package/dist/daemon/services/tasks.d.ts +13 -2
- package/dist/daemon/services/tasks.d.ts.map +1 -1
- package/dist/daemon/services/tasks.js +42 -26
- package/dist/daemon/startup.js +6 -2
- package/dist/daemon/utils/session-stop.d.ts +43 -0
- package/dist/daemon/utils/session-stop.d.ts.map +1 -0
- package/dist/daemon/utils/session-stop.js +102 -0
- package/dist/daemon/utils/session-task-state.d.ts +7 -2
- package/dist/daemon/utils/session-task-state.d.ts.map +1 -1
- package/dist/daemon/utils/session-task-state.js +9 -3
- package/dist/daemon/utils/session-tasks.d.ts +4 -4
- package/dist/daemon/utils/session-tasks.d.ts.map +1 -1
- package/dist/daemon/utils/session-tasks.js +4 -8
- package/dist/executor/commands/environment.d.ts +13 -0
- package/dist/executor/commands/environment.d.ts.map +1 -0
- package/dist/executor/commands/environment.js +287 -0
- package/dist/executor/commands/index.d.ts.map +1 -1
- package/dist/executor/commands/index.js +5 -1
- package/dist/executor/commands/unix.d.ts +8 -1
- package/dist/executor/commands/unix.d.ts.map +1 -1
- package/dist/executor/commands/unix.js +157 -2
- package/dist/executor/payload-types.d.ts +201 -5
- package/dist/executor/payload-types.d.ts.map +1 -1
- package/dist/executor/payload-types.js +98 -0
- package/dist/executor/sdk-handlers/base/mcp-scoping.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/base/mcp-scoping.js +14 -0
- package/dist/executor/sdk-handlers/claude/message-processor.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/claude/message-processor.js +0 -1
- package/dist/executor/sdk-handlers/claude/query-builder.d.ts +1 -0
- package/dist/executor/sdk-handlers/claude/query-builder.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/claude/query-builder.js +91 -39
- package/dist/executor/sdk-handlers/codex/prompt-service.d.ts +12 -5
- package/dist/executor/sdk-handlers/codex/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/codex/prompt-service.js +72 -30
- package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts +2 -4
- package/dist/executor/sdk-handlers/copilot/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/copilot/prompt-service.js +4 -13
- package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts +2 -4
- package/dist/executor/sdk-handlers/gemini/prompt-service.d.ts.map +1 -1
- package/dist/executor/sdk-handlers/gemini/prompt-service.js +4 -13
- package/dist/ui/assets/App-DcEY8Ota.js +3 -0
- package/dist/ui/assets/App-DcEY8Ota.js.gz +0 -0
- package/dist/ui/assets/{ArtifactConsentModal-ParNk5kW.js → ArtifactConsentModal-CiCbK9iv.js} +1 -1
- package/dist/ui/assets/ArtifactConsentModal-CiCbK9iv.js.gz +0 -0
- package/dist/ui/assets/ArtifactFullscreenPage-CfsTEGKd.js +9 -0
- package/dist/ui/assets/ArtifactFullscreenPage-CfsTEGKd.js.gz +0 -0
- package/dist/ui/assets/AutocompleteTextarea-BAFFH_5e.js +18 -0
- package/dist/ui/assets/AutocompleteTextarea-BAFFH_5e.js.gz +0 -0
- package/dist/ui/assets/BoardObjectNodes-D-O6bZIG.js +34 -0
- package/dist/ui/assets/BoardObjectNodes-D-O6bZIG.js.gz +0 -0
- package/dist/ui/assets/{CodeEditor.inner-D51Z_CLQ.js → CodeEditor.inner-DBgsP4tn.js} +2 -2
- package/dist/ui/assets/CodeEditor.inner-DBgsP4tn.js.gz +0 -0
- package/dist/ui/assets/ConversationView-CUWR0gR6.js +1 -0
- package/dist/ui/assets/ConversationView-CUWR0gR6.js.gz +0 -0
- package/dist/ui/assets/KnowledgePage-B2bzlXfn.js +24 -0
- package/dist/ui/assets/KnowledgePage-B2bzlXfn.js.gz +0 -0
- package/dist/ui/assets/MarketingScreenshotPage-9Qd7eZsm.css +1 -0
- package/dist/ui/assets/MarketingScreenshotPage-zv5RUCuV.js +143 -0
- package/dist/ui/assets/MarketingScreenshotPage-zv5RUCuV.js.gz +0 -0
- package/dist/ui/assets/MobileApp-VgVnsnsN.js +1 -0
- package/dist/ui/assets/MobileApp-VgVnsnsN.js.gz +0 -0
- package/dist/ui/assets/SessionCanvas-f1-1Gbcw.js +20 -0
- package/dist/ui/assets/SessionCanvas-f1-1Gbcw.js.gz +0 -0
- package/dist/ui/assets/{App-BAdBsEnV.css → SessionCanvas-mEmYGZhC.css} +1 -1
- package/dist/ui/assets/SessionCanvas-mEmYGZhC.css.gz +0 -0
- package/dist/ui/assets/{StreamdownDemoPage-B9wbgp2s.js → StreamdownDemoPage-wzWaqWwr.js} +1 -1
- package/dist/ui/assets/StreamdownDemoPage-wzWaqWwr.js.gz +0 -0
- package/dist/ui/assets/{ThemeSwitcher-ubn6IOz9.js → ThemeSwitcher-Dly2y9pi.js} +1 -1
- package/dist/ui/assets/ThemeSwitcher-Dly2y9pi.js.gz +0 -0
- package/dist/ui/assets/antd-CfbbHJOz.js +401 -0
- package/dist/ui/assets/antd-CfbbHJOz.js.gz +0 -0
- package/dist/ui/assets/architecture-U656AL7Q-CykGFbQU.js +1 -0
- package/dist/ui/assets/{architectureDiagram-VXUJARFQ-ChmZt3zk.js → architectureDiagram-VXUJARFQ-C8HXAenz.js} +1 -1
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-C8HXAenz.js.gz +0 -0
- package/dist/ui/assets/{blockDiagram-VD42YOAC-CzGHAHao.js → blockDiagram-VD42YOAC-BhZaEN19.js} +1 -1
- package/dist/ui/assets/blockDiagram-VD42YOAC-BhZaEN19.js.gz +0 -0
- package/dist/ui/assets/{c4Diagram-YG6GDRKO-DscJyaWN.js → c4Diagram-YG6GDRKO-Dk_UH-sY.js} +1 -1
- package/dist/ui/assets/c4Diagram-YG6GDRKO-Dk_UH-sY.js.gz +0 -0
- package/dist/ui/assets/channel-D6_nUWlW.js +1 -0
- package/dist/ui/assets/{chunk-4BX2VUAB-DoWpTvP8.js → chunk-4BX2VUAB-XprbG2TG.js} +1 -1
- package/dist/ui/assets/chunk-55IACEB6-ByzqIgSb.js +1 -0
- package/dist/ui/assets/{chunk-ABZYJK2D-RzDCrjE6.js → chunk-ABZYJK2D-BJcrryHK.js} +1 -1
- package/dist/ui/assets/chunk-ABZYJK2D-BJcrryHK.js.gz +0 -0
- package/dist/ui/assets/{chunk-AGHRB4JF-jidCS5Of.js → chunk-AGHRB4JF-DvxmfbM0.js} +1 -1
- package/dist/ui/assets/chunk-AGHRB4JF-DvxmfbM0.js.gz +0 -0
- package/dist/ui/assets/{chunk-ATLVNIR6-BEIIfJtC.js → chunk-ATLVNIR6-DbeJ0OrR.js} +1 -1
- package/dist/ui/assets/chunk-ATLVNIR6-DbeJ0OrR.js.gz +0 -0
- package/dist/ui/assets/{chunk-B4BG7PRW-B8b6dQQ2.js → chunk-B4BG7PRW-C53q2ggf.js} +1 -1
- package/dist/ui/assets/chunk-B4BG7PRW-C53q2ggf.js.gz +0 -0
- package/dist/ui/assets/{chunk-CVBHYZKI-D-mQAfrk.js → chunk-CVBHYZKI-B3EBSlb3.js} +1 -1
- package/dist/ui/assets/{chunk-DI55MBZ5-BfATX3V8.js → chunk-DI55MBZ5-vIyNEQN-.js} +1 -1
- package/dist/ui/assets/chunk-DI55MBZ5-vIyNEQN-.js.gz +0 -0
- package/dist/ui/assets/chunk-EXTU4WIE-B3ObkuOm.js +1 -0
- package/dist/ui/assets/{chunk-FMBD7UC4-fqXscNvc.js → chunk-FMBD7UC4-rddmfK-Z.js} +1 -1
- package/dist/ui/assets/{chunk-HN2XXSSU-BCHvD80g.js → chunk-HN2XXSSU-Dttqcg3b.js} +1 -1
- package/dist/ui/assets/chunk-HN2XXSSU-Dttqcg3b.js.gz +0 -0
- package/dist/ui/assets/{chunk-JA3XYJ7Z-Cp6dqHnY.js → chunk-JA3XYJ7Z-DbNDev3D.js} +1 -1
- package/dist/ui/assets/chunk-JA3XYJ7Z-DbNDev3D.js.gz +0 -0
- package/dist/ui/assets/{chunk-JZLCHNYA-cKMooY3y.js → chunk-JZLCHNYA-EUmx2y4H.js} +1 -1
- package/dist/ui/assets/chunk-JZLCHNYA-EUmx2y4H.js.gz +0 -0
- package/dist/ui/assets/{chunk-MI3HLSF2-BlzO5wOE.js → chunk-MI3HLSF2-65n9Mkyc.js} +1 -1
- package/dist/ui/assets/chunk-MI3HLSF2-65n9Mkyc.js.gz +0 -0
- package/dist/ui/assets/chunk-N4CR4FBY-mv5koXqW.js +2 -0
- package/dist/ui/assets/chunk-N4CR4FBY-mv5koXqW.js.gz +0 -0
- package/dist/ui/assets/{chunk-QN33PNHL-DIHGQ_pd.js → chunk-QN33PNHL-DsRKK6NR.js} +1 -1
- package/dist/ui/assets/{chunk-QXUST7PY-C9l0muI0.js → chunk-QXUST7PY-BCYnMiS3.js} +1 -1
- package/dist/ui/assets/chunk-QXUST7PY-BCYnMiS3.js.gz +0 -0
- package/dist/ui/assets/chunk-QZHKN3VN-HucAw4xW.js +1 -0
- package/dist/ui/assets/{chunk-S3R3BYOJ-VJiLzt2o.js → chunk-S3R3BYOJ-CWMEa9Dc.js} +1 -1
- package/dist/ui/assets/chunk-S3R3BYOJ-CWMEa9Dc.js.gz +0 -0
- package/dist/ui/assets/{chunk-TZMSLE5B-DZwI0C_2.js → chunk-TZMSLE5B-BuQUQcTr.js} +1 -1
- package/dist/ui/assets/chunk-TZMSLE5B-BuQUQcTr.js.gz +0 -0
- package/dist/ui/assets/classDiagram-2ON5EDUG-CUT3rPTB.js +1 -0
- package/dist/ui/assets/classDiagram-v2-WZHVMYZB-CUT3rPTB.js +1 -0
- package/dist/ui/assets/{cose-bilkent-S5V4N54A-Ipik-oSD.js → cose-bilkent-S5V4N54A-CnPB3ARO.js} +1 -1
- package/dist/ui/assets/cose-bilkent-S5V4N54A-CnPB3ARO.js.gz +0 -0
- package/dist/ui/assets/cursor-QEb7m-rN.png +0 -0
- package/dist/ui/assets/{dagre-6UL2VRFP-BDpyWQnh.js → dagre-6UL2VRFP-DhS-k_Se.js} +1 -1
- package/dist/ui/assets/dagre-6UL2VRFP-DhS-k_Se.js.gz +0 -0
- package/dist/ui/assets/{dagre-CgA4KhUX.js → dagre-KgLoHEuy.js} +1 -1
- package/dist/ui/assets/dagre-KgLoHEuy.js.gz +0 -0
- package/dist/ui/assets/{diagram-PSM6KHXK-B4GRzxLJ.js → diagram-PSM6KHXK-BZg3MJmb.js} +1 -1
- package/dist/ui/assets/diagram-PSM6KHXK-BZg3MJmb.js.gz +0 -0
- package/dist/ui/assets/{diagram-QEK2KX5R-BWPW28XI.js → diagram-QEK2KX5R-BPCitvbo.js} +1 -1
- package/dist/ui/assets/diagram-QEK2KX5R-BPCitvbo.js.gz +0 -0
- package/dist/ui/assets/{diagram-S2PKOQOG-BIHhcGoV.js → diagram-S2PKOQOG-NW4uK6sx.js} +1 -1
- package/dist/ui/assets/diagram-S2PKOQOG-NW4uK6sx.js.gz +0 -0
- package/dist/ui/assets/{editor-C-HJ7Yw0.js → editor-CzFWIUw2.js} +1 -1
- package/dist/ui/assets/editor-CzFWIUw2.js.gz +0 -0
- package/dist/ui/assets/{emoji-D8F6B62m.js → emoji-Dkz4Zzv_.js} +1 -1
- package/dist/ui/assets/emoji-Dkz4Zzv_.js.gz +0 -0
- package/dist/ui/assets/{erDiagram-Q2GNP2WA-ubTaAFcK.js → erDiagram-Q2GNP2WA-me1fboaf.js} +1 -1
- package/dist/ui/assets/erDiagram-Q2GNP2WA-me1fboaf.js.gz +0 -0
- package/dist/ui/assets/{flowDiagram-NV44I4VS-BHLCTYjI.js → flowDiagram-NV44I4VS-DzE8dGsh.js} +1 -1
- package/dist/ui/assets/flowDiagram-NV44I4VS-DzE8dGsh.js.gz +0 -0
- package/dist/ui/assets/{ganttDiagram-LVOFAZNH-ClC3pay1.js → ganttDiagram-LVOFAZNH-CFQD09Mi.js} +2 -2
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-CFQD09Mi.js.gz +0 -0
- package/dist/ui/assets/{gitGraph-F6HP7TQM-DghoobE6.js → gitGraph-F6HP7TQM-CfFE_uAC.js} +1 -1
- package/dist/ui/assets/{gitGraphDiagram-NY62KEGX-Clqpiswu.js → gitGraphDiagram-NY62KEGX-CaVoxU4C.js} +1 -1
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-CaVoxU4C.js.gz +0 -0
- package/dist/ui/assets/index-BN5_Qq7R.js +324 -0
- package/dist/ui/assets/index-BN5_Qq7R.js.gz +0 -0
- package/dist/ui/assets/index-DxuPq13l.css +1 -0
- package/dist/ui/assets/index-DxuPq13l.css.gz +0 -0
- package/dist/ui/assets/{info-NVLQJR56-0ZldEXPQ.js → info-NVLQJR56-i_xHYg3f.js} +1 -1
- package/dist/ui/assets/{infoDiagram-ER5ION4S-DMmPX-il.js → infoDiagram-ER5ION4S-2NL93b78.js} +1 -1
- package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-CrVickA2.js → journeyDiagram-XKPGCS4Q-CZF-2DHU.js} +1 -1
- package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CZF-2DHU.js.gz +0 -0
- package/dist/ui/assets/{kanban-definition-3W4ZIXB7-C_BsdHYL.js → kanban-definition-3W4ZIXB7-CfvJIOny.js} +1 -1
- package/dist/ui/assets/kanban-definition-3W4ZIXB7-CfvJIOny.js.gz +0 -0
- package/dist/ui/assets/{line-CfBP7Yic.js → line-DDv8kOJk.js} +1 -1
- package/dist/ui/assets/{linear-BsjageUB.js → linear-Daef-l29.js} +1 -1
- package/dist/ui/assets/linear-Daef-l29.js.gz +0 -0
- package/dist/ui/assets/{mermaid-parser.core-DZdP-NFq.js → mermaid-parser.core-CdK9QgYV.js} +2 -2
- package/dist/ui/assets/mermaid-parser.core-CdK9QgYV.js.gz +0 -0
- package/dist/ui/assets/{mermaid.core-TNrI0pHG.js → mermaid.core-D6GS9mU-.js} +3 -3
- package/dist/ui/assets/mermaid.core-D6GS9mU-.js.gz +0 -0
- package/dist/ui/assets/message-SqLqNYcv.js +36 -0
- package/dist/ui/assets/message-SqLqNYcv.js.gz +0 -0
- package/dist/ui/assets/{mindmap-definition-VGOIOE7T-BbmaUjMY.js → mindmap-definition-VGOIOE7T-Cb3QMflX.js} +1 -1
- package/dist/ui/assets/mindmap-definition-VGOIOE7T-Cb3QMflX.js.gz +0 -0
- package/dist/ui/assets/{packet-BFZMPI3H-D_ZhkXuT.js → packet-BFZMPI3H-Bm2uwz4i.js} +1 -1
- package/dist/ui/assets/{particles-Dv28pjOd.js → particles-DsJFOarW.js} +1 -1
- package/dist/ui/assets/particles-DsJFOarW.js.gz +0 -0
- package/dist/ui/assets/{pie-7BOR55EZ-Dn0Q3qNx.js → pie-7BOR55EZ-5i17tVnF.js} +1 -1
- package/dist/ui/assets/{pieDiagram-ADFJNKIX-BbyjfYu8.js → pieDiagram-ADFJNKIX-BxIwQWvw.js} +1 -1
- package/dist/ui/assets/pieDiagram-ADFJNKIX-BxIwQWvw.js.gz +0 -0
- package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-Bc3GqMKz.js → quadrantDiagram-AYHSOK5B-B5HPe4ga.js} +1 -1
- package/dist/ui/assets/quadrantDiagram-AYHSOK5B-B5HPe4ga.js.gz +0 -0
- package/dist/ui/assets/{radar-NHE76QYJ-BHwoAy1q.js → radar-NHE76QYJ-BTn-tq0k.js} +1 -1
- package/dist/ui/assets/{reactflow-BVYPxNhc.js → reactflow-Bf74ngoo.js} +2 -2
- package/dist/ui/assets/reactflow-Bf74ngoo.js.gz +0 -0
- package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-BQaKKL09.js → requirementDiagram-UZGBJVZJ-YfI6llkX.js} +1 -1
- package/dist/ui/assets/requirementDiagram-UZGBJVZJ-YfI6llkX.js.gz +0 -0
- package/dist/ui/assets/{sandpack-BQW_FQ7G.js → sandpack-D7koO5op.js} +1 -1
- package/dist/ui/assets/sandpack-D7koO5op.js.gz +0 -0
- package/dist/ui/assets/{sankeyDiagram-TZEHDZUN-DiJvDvhb.js → sankeyDiagram-TZEHDZUN-DOk_B10B.js} +1 -1
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DOk_B10B.js.gz +0 -0
- package/dist/ui/assets/{sequenceDiagram-WL72ISMW-Dw32824o.js → sequenceDiagram-WL72ISMW-DAe4Um17.js} +1 -1
- package/dist/ui/assets/sequenceDiagram-WL72ISMW-DAe4Um17.js.gz +0 -0
- package/dist/ui/assets/{stateDiagram-FKZM4ZOC-BCOpNdHV.js → stateDiagram-FKZM4ZOC-CCesDu_C.js} +1 -1
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-CCesDu_C.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-CMlIrsoO.js +1 -0
- package/dist/ui/assets/{syntax-VJrU5BEu.js → syntax-C-M-8jOU.js} +1 -1
- package/dist/ui/assets/syntax-C-M-8jOU.js.gz +0 -0
- package/dist/ui/assets/{theme-DZtFA8b4.js → theme-BQZdiqwv.js} +1 -1
- package/dist/ui/assets/{timeline-definition-IT6M3QCI-Jh_WZzXv.js → timeline-definition-IT6M3QCI-D6P5txjT.js} +1 -1
- package/dist/ui/assets/timeline-definition-IT6M3QCI-D6P5txjT.js.gz +0 -0
- package/dist/ui/assets/{treemap-KMMF4GRG-CPYIgjxE.js → treemap-KMMF4GRG-Bitm3gy4.js} +1 -1
- package/dist/ui/assets/{knowledgeRoutes-CivaUqha.js → useUserLocalStorage-Ckb8HsIw.js} +1 -1
- package/dist/ui/assets/useUserLocalStorage-Ckb8HsIw.js.gz +0 -0
- package/dist/ui/assets/{xychartDiagram-PRI3JC2R-CERc7Rdb.js → xychartDiagram-PRI3JC2R-CsybjUbd.js} +1 -1
- package/dist/ui/assets/xychartDiagram-PRI3JC2R-CsybjUbd.js.gz +0 -0
- package/dist/ui/index.html +13 -11
- package/dist/ui/index.html.gz +0 -0
- package/package.json +10 -9
- package/dist/ui/assets/App-9s2WHM6S.js +0 -22
- package/dist/ui/assets/App-9s2WHM6S.js.gz +0 -0
- package/dist/ui/assets/App-BAdBsEnV.css.gz +0 -0
- package/dist/ui/assets/ArtifactConsentModal-ParNk5kW.js.gz +0 -0
- package/dist/ui/assets/ArtifactFullscreenPage-VQxLMCiN.js +0 -9
- package/dist/ui/assets/ArtifactFullscreenPage-VQxLMCiN.js.gz +0 -0
- package/dist/ui/assets/AutocompleteTextarea-3RchrIgk.js +0 -18
- package/dist/ui/assets/AutocompleteTextarea-3RchrIgk.js.gz +0 -0
- package/dist/ui/assets/CodeEditor.inner-D51Z_CLQ.js.gz +0 -0
- package/dist/ui/assets/ConversationView-Dyddw2b1.js +0 -34
- package/dist/ui/assets/ConversationView-Dyddw2b1.js.gz +0 -0
- package/dist/ui/assets/KnowledgePage-CdftslnF.js +0 -24
- package/dist/ui/assets/KnowledgePage-CdftslnF.js.gz +0 -0
- package/dist/ui/assets/MobileApp-BdBMpnJ1.js +0 -1
- package/dist/ui/assets/MobileApp-BdBMpnJ1.js.gz +0 -0
- package/dist/ui/assets/StreamdownDemoPage-B9wbgp2s.js.gz +0 -0
- package/dist/ui/assets/ThemeSwitcher-ubn6IOz9.js.gz +0 -0
- package/dist/ui/assets/antd-C-HfEC4E.js +0 -400
- package/dist/ui/assets/antd-C-HfEC4E.js.gz +0 -0
- package/dist/ui/assets/architecture-U656AL7Q-dkBewUpN.js +0 -1
- package/dist/ui/assets/architectureDiagram-VXUJARFQ-ChmZt3zk.js.gz +0 -0
- package/dist/ui/assets/blockDiagram-VD42YOAC-CzGHAHao.js.gz +0 -0
- package/dist/ui/assets/c4Diagram-YG6GDRKO-DscJyaWN.js.gz +0 -0
- package/dist/ui/assets/channel-DvRQqEqC.js +0 -1
- package/dist/ui/assets/chunk-55IACEB6-DojF2pZN.js +0 -1
- package/dist/ui/assets/chunk-ABZYJK2D-RzDCrjE6.js.gz +0 -0
- package/dist/ui/assets/chunk-AGHRB4JF-jidCS5Of.js.gz +0 -0
- package/dist/ui/assets/chunk-ATLVNIR6-BEIIfJtC.js.gz +0 -0
- package/dist/ui/assets/chunk-B4BG7PRW-B8b6dQQ2.js.gz +0 -0
- package/dist/ui/assets/chunk-DI55MBZ5-BfATX3V8.js.gz +0 -0
- package/dist/ui/assets/chunk-EXTU4WIE-BKt6lPJM.js +0 -1
- package/dist/ui/assets/chunk-HN2XXSSU-BCHvD80g.js.gz +0 -0
- package/dist/ui/assets/chunk-JA3XYJ7Z-Cp6dqHnY.js.gz +0 -0
- package/dist/ui/assets/chunk-JZLCHNYA-cKMooY3y.js.gz +0 -0
- package/dist/ui/assets/chunk-MI3HLSF2-BlzO5wOE.js.gz +0 -0
- package/dist/ui/assets/chunk-N4CR4FBY-pASDorUx.js +0 -2
- package/dist/ui/assets/chunk-N4CR4FBY-pASDorUx.js.gz +0 -0
- package/dist/ui/assets/chunk-QXUST7PY-C9l0muI0.js.gz +0 -0
- package/dist/ui/assets/chunk-QZHKN3VN-CZskCFCf.js +0 -1
- package/dist/ui/assets/chunk-S3R3BYOJ-VJiLzt2o.js.gz +0 -0
- package/dist/ui/assets/chunk-TZMSLE5B-DZwI0C_2.js.gz +0 -0
- package/dist/ui/assets/classDiagram-2ON5EDUG-BFASUbmZ.js +0 -1
- package/dist/ui/assets/classDiagram-v2-WZHVMYZB-BFASUbmZ.js +0 -1
- package/dist/ui/assets/cose-bilkent-S5V4N54A-Ipik-oSD.js.gz +0 -0
- package/dist/ui/assets/dagre-6UL2VRFP-BDpyWQnh.js.gz +0 -0
- package/dist/ui/assets/dagre-CgA4KhUX.js.gz +0 -0
- package/dist/ui/assets/diagram-PSM6KHXK-B4GRzxLJ.js.gz +0 -0
- package/dist/ui/assets/diagram-QEK2KX5R-BWPW28XI.js.gz +0 -0
- package/dist/ui/assets/diagram-S2PKOQOG-BIHhcGoV.js.gz +0 -0
- package/dist/ui/assets/editor-C-HJ7Yw0.js.gz +0 -0
- package/dist/ui/assets/emoji-D8F6B62m.js.gz +0 -0
- package/dist/ui/assets/erDiagram-Q2GNP2WA-ubTaAFcK.js.gz +0 -0
- package/dist/ui/assets/flowDiagram-NV44I4VS-BHLCTYjI.js.gz +0 -0
- package/dist/ui/assets/ganttDiagram-LVOFAZNH-ClC3pay1.js.gz +0 -0
- package/dist/ui/assets/gitGraphDiagram-NY62KEGX-Clqpiswu.js.gz +0 -0
- package/dist/ui/assets/index-D9OElx9A.css +0 -1
- package/dist/ui/assets/index-D9OElx9A.css.gz +0 -0
- package/dist/ui/assets/index-DxPuzG7E.js +0 -350
- package/dist/ui/assets/index-DxPuzG7E.js.gz +0 -0
- package/dist/ui/assets/journeyDiagram-XKPGCS4Q-CrVickA2.js.gz +0 -0
- package/dist/ui/assets/kanban-definition-3W4ZIXB7-C_BsdHYL.js.gz +0 -0
- package/dist/ui/assets/knowledgeRoutes-CivaUqha.js.gz +0 -0
- package/dist/ui/assets/linear-BsjageUB.js.gz +0 -0
- package/dist/ui/assets/mermaid-parser.core-DZdP-NFq.js.gz +0 -0
- package/dist/ui/assets/mermaid.core-TNrI0pHG.js.gz +0 -0
- package/dist/ui/assets/message-BtWWJ9Af.js +0 -36
- package/dist/ui/assets/message-BtWWJ9Af.js.gz +0 -0
- package/dist/ui/assets/mindmap-definition-VGOIOE7T-BbmaUjMY.js.gz +0 -0
- package/dist/ui/assets/particles-Dv28pjOd.js.gz +0 -0
- package/dist/ui/assets/pieDiagram-ADFJNKIX-BbyjfYu8.js.gz +0 -0
- package/dist/ui/assets/quadrantDiagram-AYHSOK5B-Bc3GqMKz.js.gz +0 -0
- package/dist/ui/assets/reactflow-BVYPxNhc.js.gz +0 -0
- package/dist/ui/assets/requirementDiagram-UZGBJVZJ-BQaKKL09.js.gz +0 -0
- package/dist/ui/assets/sandpack-BQW_FQ7G.js.gz +0 -0
- package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DiJvDvhb.js.gz +0 -0
- package/dist/ui/assets/sequenceDiagram-WL72ISMW-Dw32824o.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-FKZM4ZOC-BCOpNdHV.js.gz +0 -0
- package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-Cuqwvgfg.js +0 -1
- package/dist/ui/assets/syntax-VJrU5BEu.js.gz +0 -0
- package/dist/ui/assets/timeline-definition-IT6M3QCI-Jh_WZzXv.js.gz +0 -0
- package/dist/ui/assets/xychartDiagram-PRI3JC2R-CERc7Rdb.js.gz +0 -0
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime--c01j_DQ.js";import{A as t,An as n,At as r,B as i,Bt as a,Cn as o,Ct as s,D as c,Dn as l,Dt as u,E as d,En as f,Et as p,Fn as m,Ft as h,Gn as g,Gt as _,H as v,Hn as y,I as b,In as x,Jt as S,Kt as C,Ln as w,Lt as T,Mn as E,Mt as D,N as O,Nn as k,Nt as A,On as j,Pn as M,Pt as N,Q as P,Qt as F,Rn as I,Rt as L,S as ee,Sn as R,Tt as z,U as B,Un as te,V,Vn as ne,Vt as re,Wn as H,X as U,Xn as ie,Xt as ae,Yt as oe,Z as se,Zt as ce,_ as le,_n as W,_t as ue,a as de,an as fe,b as pe,bn as me,ct as he,d as ge,en as _e,et as ve,fn as ye,ft as be,g as xe,gn as G,gt as Se,hn as Ce,it as we,j as Te,jt as Ee,k as De,kn as Oe,kt as ke,l as Ae,ln as je,m as Me,mt as Ne,n as Pe,nn as Fe,nt as Ie,o as Le,on as K,ot as Re,p as ze,pt as Be,q as Ve,qt as He,r as Ue,rn as We,st as Ge,tn as q,u as Ke,un as qe,ut as Je,vt as Ye,wn as J,wt as Xe,x as Ze,xn as Qe,yn as Y,yt as $e}from"./antd-C-HfEC4E.js";import{B as et,F as tt,G as nt,H as rt,J as it,K as at,P as ot,R as st,U as ct,V as lt,W as ut,a as dt,d as ft,dt as pt,f as mt,ft as ht,it as gt,k as _t,l as X,lt as vt,n as yt,pt as bt,t as xt,u as St}from"./message-BtWWJ9Af.js";import{a as Ct,n as wt,r as Tt,t as Et}from"./sandpack-BQW_FQ7G.js";import{N as Dt}from"./editor-C-HJ7Yw0.js";import{n as Ot,t as kt}from"./theme-DZtFA8b4.js";import{$ as At,$t as jt,A as Mt,At as Nt,Bt as Pt,C as Ft,Ct as It,D as Lt,Dt as Rt,E as zt,Et as Bt,F as Vt,G as Ht,Gt as Ut,Ht as Wt,I as Gt,It as Kt,J as qt,Jt,K as Yt,Kt as Xt,L as Zt,M as Qt,Nt as $t,O as en,Ot as tn,P as nn,Q as rn,Qt as an,R as on,Rt as sn,S as cn,St as ln,T as un,Tt as dn,U as fn,Ut as pn,Vt as mn,Wt as hn,X as Z,Xt as gn,Y as _n,Yt as vn,Z as yn,Zt as bn,_ as xn,_t as Sn,a as Cn,an as wn,at as Tn,b as En,bt as Dn,c as On,ct as kn,d as An,dt as jn,en as Mn,et as Nn,f as Pn,ft as Fn,g as In,gt as Ln,h as Rn,ht as zn,i as Bn,in as Vn,j as Hn,k as Un,kt as Wn,l as Gn,m as Kn,mt as qn,n as Jn,nn as Yn,nt as Xn,o as Zn,ot as Qn,p as $n,pt as er,q as tr,r as nr,rn as rr,rt as ir,t as ar,tn as or,tt as sr,u as cr,ut as lr,v as ur,vt as dr,w as fr,wt as pr,x as mr,xt as hr,y as gr,yt as _r,zt as vr}from"./index-DxPuzG7E.js";import{c as yr,i as br,l as xr,o as Sr,s as Cr,t as wr}from"./knowledgeRoutes-CivaUqha.js";import{n as Tr,t as Er}from"./ThemeSwitcher-ubn6IOz9.js";import{a as Dr,c as Or,i as kr,n as Ar,o as jr,r as Mr,s as Nr,t as Pr}from"./ConversationView-Dyddw2b1.js";import{a as Fr,d as Ir,f as Lr,i as Rr,l as zr,n as Br,r as Vr,t as Hr,u as Ur}from"./reactflow-BVYPxNhc.js";import{t as Wr}from"./AutocompleteTextarea-3RchrIgk.js";import{a as Gr,c as Kr,i as qr,n as Jr,o as Yr,r as Xr,s as Zr,t as Qr}from"./ArtifactConsentModal-ParNk5kW.js";import{n as $r,r as ei,t as ti}from"./xterm-BkujP7YO.js";var Q=e(ie(),1),$=Dt(),ni=(0,Q.createContext)(void 0),ri=({children:e,value:t})=>(0,$.jsx)(ni.Provider,{value:t,children:e}),ii=()=>{let e=(0,Q.useContext)(ni);if(!e)throw Error(`useAppActions must be used within an AppActionsProvider`);return e},ai=(0,Q.createContext)(void 0),oi=(0,Q.createContext)(void 0),si=(0,Q.createContext)(void 0),ci=(0,Q.createContext)(void 0),li=({children:e,value:t})=>(0,$.jsx)(ai.Provider,{value:t,children:e}),ui=({children:e,value:t})=>(0,$.jsx)(oi.Provider,{value:t,children:e}),di=({children:e,value:t})=>(0,$.jsx)(si.Provider,{value:t,children:e}),fi=({children:e,value:t})=>(0,$.jsx)(ci.Provider,{value:t,children:e}),pi=({children:e,value:t})=>(0,$.jsx)(li,{value:(0,Q.useMemo)(()=>({repoById:t.repoById}),[t.repoById]),children:(0,$.jsx)(ui,{value:(0,Q.useMemo)(()=>({userById:t.userById}),[t.userById]),children:(0,$.jsx)(di,{value:(0,Q.useMemo)(()=>({mcpServerById:t.mcpServerById,userAuthenticatedMcpServerIds:t.userAuthenticatedMcpServerIds}),[t.mcpServerById,t.userAuthenticatedMcpServerIds]),children:e})})}),mi=()=>{let e=(0,Q.useContext)(ai);if(!e)throw Error(`useAppRepoData must be used within an AppRepoDataProvider`);return e},hi=()=>{let e=(0,Q.useContext)(oi);if(!e)throw Error(`useAppUserData must be used within an AppUserDataProvider`);return e},gi=()=>{let e=(0,Q.useContext)(si);if(!e)throw Error(`useAppMcpData must be used within an AppMcpDataProvider`);return e},_i=()=>{let e=(0,Q.useContext)(ci);if(!e)throw Error(`useAppLiveData must be used within an AppLiveDataProvider`);return e},vi=`Agor`;function yi(e){(0,Q.useEffect)(()=>(e?.icon&&e?.name?document.title=`${e.icon} ${e.name}`:e?.name?document.title=e.name:document.title=vi,()=>{document.title=vi}),[e?.icon,e?.name])}function bi(e){let{client:t,enabled:n,maxEvents:r=500}=e,[i,a]=(0,Q.useState)([]),o=(0,Q.useCallback)(()=>{a([])},[]);return(0,Q.useEffect)(()=>{if(!n||!t?.io){a([]);return}let e=(e,...t)=>{if(e===`created`||e===`patched`||e===`updated`||e===`removed`)return;let n=`other`;if(e===`cursor-move`||e===`cursor-leave`||e===`cursor-moved`||e===`cursor-left`||e===`presence-updated`)n=`cursor`;else if(e.includes(`message`)||e===`thinking:chunk`){n=`message`;let e=t.length===1?t[0]:void 0;if(e&&typeof e==`object`&&`content`in e){let t=e.content;Array.isArray(t)&&t.some(e=>{if(typeof e==`object`&&e&&`type`in e){let t=e.type;return t===`tool_use`||t===`tool_result`}return!1})&&(n=`tool`)}}else e.includes(`created`)||e.includes(`patched`)||e.includes(`updated`)||e.includes(`removed`)?n=`crud`:(e===`connect`||e===`disconnect`||e.includes(`connect`))&&(n=`connection`);let i=t.length===0?void 0:t.length===1?t[0]:t,o={id:`${Date.now()}-${Math.random().toString(36).substr(2,9)}`,timestamp:new Date,type:n,eventName:e,data:i};a(e=>[o,...e].slice(0,r))};return t.io.onAny(e),()=>{t.io.offAny(e)}},[t,n,r]),{events:i,clearEvents:o}}function xi(e,t,n,r){return new Promise((i,a)=>{let o=document.createElement(`canvas`);o.width=32,o.height=32;let s=o.getContext(`2d`),c=new Image;c.onload=()=>{s.drawImage(c,0,0,32,32),t&&(s.beginPath(),s.arc(7,25,6,0,2*Math.PI),s.fillStyle=`#000000`,s.fill(),s.beginPath(),s.arc(7,25,10/2,0,2*Math.PI),s.fillStyle=`#ffffff`,s.fill()),n&&(s.beginPath(),s.arc(25,25,6,0,2*Math.PI),s.fillStyle=`#000000`,s.fill(),s.beginPath(),s.arc(25,25,10/2,0,2*Math.PI),s.fillStyle=r,s.fill()),i(o.toDataURL())},c.onerror=e=>{a(e)},c.src=e})}function Si(e,t,n){let[r]=(0,Q.useState)(`/ui/favicon.png`),{token:i}=N.useToken();(0,Q.useEffect)(()=>{if(!e){xi(r,!1,!1,i.colorSuccessText).then(e=>{let t=document.querySelector(`link[rel~='icon']`);t&&(t.href=e)});return}let a=new Set(n.filter(e=>e.branch_id).map(e=>e.branch_id)),o=Array.from(a).flatMap(e=>t.get(e)||[]).filter(e=>!e.archived);xi(r,o.some(e=>e.status===ct.RUNNING),o.some(e=>e.ready_for_prompt),i.colorSuccessText).then(e=>{let t=document.querySelector(`link[rel~='icon']`);t&&(t.href=e)})},[e,t,n,r,i.colorSuccessText])}function Ci(e,t,n){let r=(0,Q.useRef)(new Set),i=(0,Q.useRef)(n);(0,Q.useEffect)(()=>{i.current=n},[n]),(0,Q.useEffect)(()=>{if(!e||!t)return;let n=e.service(`tasks`),a=r.current,o=!1,s=e=>e?.created_by===t,c=e=>{if(!(!e?.task_id||!s(e))){if(e.status===lt.RUNNING){a.add(e.task_id);return}a.delete(e.task_id)&&rt(e.status)&&Cn(e,i.current)}},l=e=>{e?.task_id&&a.delete(e.task_id)};return n.on(`created`,c),n.on(`patched`,c),n.on(`updated`,c),n.on(`removed`,l),n.findAll({query:{status:lt.RUNNING,created_by:t}}).then(e=>{if(!o)for(let t of e)t?.task_id&&a.add(t.task_id)}).catch(()=>{}),()=>{o=!0,n.removeListener(`created`,c),n.removeListener(`patched`,c),n.removeListener(`updated`,c),n.removeListener(`removed`,l),a.clear()}},[e,t])}function wi(e){return!!(e.sessionShortId||e.branchShortId||e.artifactShortId)}var{Text:Ti}=r,{useToken:Ei}=N,Di=8,Oi=({boards:e,currentBoardId:t,onBoardChange:n,onHomeClick:r,branchById:i})=>{let{token:a}=Ei(),[o,s]=(0,Q.useState)(``),[c,l]=(0,Q.useState)(!1),u=e.find(e=>e.board_id===t),d=(0,Q.useMemo)(()=>{let t=new Map;e.forEach(e=>{t.set(e.board_id,0)});for(let e of i.values())e.board_id&&t.set(e.board_id,(t.get(e.board_id)||0)+1);return t},[e,i]),p=e.length>=Di,m=(0,Q.useCallback)(()=>{l(!1),s(``)},[]),h=(0,Q.useCallback)(()=>{r?.(),m()},[m,r]),g=(0,Q.useCallback)(e=>{n(e),m()},[n,m]),_=(0,Q.useMemo)(()=>{let n=e.filter(e=>!e.archived).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`})),r=o?n.filter(e=>e.name.toLowerCase().includes(o.toLowerCase())):n;return p&&r.length===0?[{key:`__empty__`,label:(0,$.jsx)(Ti,{type:`secondary`,style:{fontStyle:`italic`},children:`No boards found`}),disabled:!0}]:r.map(e=>{let n=d.get(e.board_id)||0,r=e.board_id===t;return{key:e.board_id,label:(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,minWidth:250,padding:`4px 0`},children:[(0,$.jsxs)(K,{size:8,children:[(0,$.jsx)(`span`,{style:{fontSize:18},children:e.icon||`📋`}),(0,$.jsx)(Ti,{strong:r,children:e.name})]}),(0,$.jsx)(f,{count:n,showZero:!0,style:{backgroundColor:r?a.colorPrimary:a.colorBgTextHover}})]}),onClick:()=>g(e.board_id)}})},[e,t,d,g,a,o,p]),v=(0,$.jsxs)(J,{type:`text`,onClick:h,style:{width:`100%`,height:38,padding:`4px 12px`,display:`flex`,alignItems:`center`,justifyContent:`space-between`,background:t?void 0:a.colorFillSecondary,borderRadius:a.borderRadiusSM},children:[(0,$.jsxs)(K,{size:8,children:[(0,$.jsx)(`span`,{style:{fontSize:18},children:`🏠`}),(0,$.jsx)(Ti,{strong:!t,children:`Home`})]}),(0,$.jsx)(Ve,{style:{color:a.colorTextTertiary}})]});return(0,$.jsx)(fe,{menu:{items:_},trigger:[`click`],placement:`bottomLeft`,open:c,onOpenChange:e=>{l(e),e||s(``)},popupRender:e=>(0,$.jsxs)(`div`,{style:{backgroundColor:a.colorBgElevated,borderRadius:a.borderRadiusLG,boxShadow:a.boxShadowSecondary,minWidth:290},children:[(0,$.jsxs)(`div`,{style:{position:`sticky`,top:0,zIndex:1,padding:`8px 8px 0`,background:a.colorBgElevated,borderTopLeftRadius:a.borderRadiusLG,borderTopRightRadius:a.borderRadiusLG},children:[v,(0,$.jsx)(W,{style:{margin:`8px 0 0`}})]}),p&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{style:{padding:`8px 12px`},children:(0,$.jsx)(ce,{placeholder:`Filter boards...`,prefix:(0,$.jsx)(k,{style:{color:a.colorTextQuaternary}}),value:o,onChange:e=>s(e.target.value),size:`small`,allowClear:!0,autoFocus:!0,"aria-label":`Filter boards`})}),(0,$.jsx)(W,{style:{margin:0}})]}),(0,$.jsx)(`div`,{style:{maxHeight:`calc(100vh - 240px)`,overflowY:`auto`},children:e})]}),children:(0,$.jsxs)(J,{type:`text`,style:{width:`100%`,height:`auto`,padding:`8px 12px`,textAlign:`left`,display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,$.jsxs)(K,{size:8,children:[(0,$.jsx)(`span`,{style:{fontSize:18},children:u?u.icon||`📋`:`🏠`}),(0,$.jsx)(Ti,{strong:!0,children:u?.name||`Home`})]}),(0,$.jsx)(M,{style:{fontSize:12,color:a.colorTextSecondary}})]})})},ki=2e4,Ai=1e4,ji=6e4,Mi=3e3,Ni=({tooltip:e,icon:t,color:r,onClick:i,children:a})=>(0,$.jsx)(n,{title:e,placement:`bottom`,children:(0,$.jsx)(Yn,{icon:t,color:r,onClick:i,style:{margin:0,display:`flex`,alignItems:`center`,cursor:i?`pointer`:`default`},children:(0,$.jsx)(K,{size:4,children:a})})}),Pi=({connected:e,connecting:t,onRetry:n})=>{let{outOfSync:r,capturedSha:i,currentSha:a}=mn(),o=(0,Q.useRef)(null),[s,c]=(0,Q.useState)(null),[l,u]=(0,Q.useState)(null),[d,f]=(0,Q.useState)(!1),[,p]=(0,Q.useState)(0);return(0,Q.useEffect)(()=>{if(!t)return;let e=setInterval(()=>p(e=>e+1),1e3);return()=>clearInterval(e)},[t]),(0,Q.useEffect)(()=>{if(t){if(o.current===null){let e=Date.now();o.current=e,c(e)}return}if(e&&o.current!==null){let e=Date.now()-o.current;o.current=null,c(null),e>=Ai?u(Date.now()):f(!0)}},[t,e]),(0,Q.useEffect)(()=>{if(!d)return;let e=setTimeout(()=>f(!1),Mi);return()=>clearTimeout(e)},[d]),(0,Q.useEffect)(()=>{if(l===null)return;let e=setTimeout(()=>u(null),ji);return()=>clearTimeout(e)},[l]),r?(0,$.jsx)(Ni,{tooltip:i&&a?`Daemon was upgraded from ${i} to ${a} since this tab loaded. Click to reload and pick up the latest UI. Anything unsaved (form text, etc.) will be lost.`:`Backend was updated — click to reload for the latest UI. Anything unsaved will be lost.`,icon:(0,$.jsx)(_,{}),color:`warning`,onClick:()=>window.location.reload(),children:(0,$.jsx)(`span`,{children:`Out of sync — refresh`})}):t&&s!==null&&Date.now()-s>=ki?(0,$.jsx)(Ni,{tooltip:`Can't reconnect to the daemon. Click to reload the page — anything unsaved will be lost.`,icon:(0,$.jsx)(_,{}),color:`error`,onClick:()=>window.location.reload(),children:(0,$.jsx)(`span`,{children:`Can't reconnect — reload`})}):!e&&!t?(0,$.jsx)(Ni,{tooltip:`Connection lost. Click to retry connection.`,icon:(0,$.jsx)(Pe,{}),color:`error`,onClick:n,children:(0,$.jsx)(`span`,{children:`Disconnected`})}):t?(0,$.jsx)(Ni,{tooltip:`Reconnecting to daemon… Click to retry immediately.`,icon:(0,$.jsx)(y,{spin:!0}),color:`warning`,onClick:n,children:(0,$.jsx)(`span`,{children:`Reconnecting`})}):l===null?d?(0,$.jsx)(Ni,{tooltip:`Connected to daemon`,icon:(0,$.jsx)(Se,{}),color:`success`,children:(0,$.jsx)(`span`,{children:`Connected`})}):null:(0,$.jsxs)(Ni,{tooltip:`You were disconnected long enough that some data may be stale. Click to reload, or × to dismiss.`,icon:(0,$.jsx)(_,{}),color:`warning`,onClick:()=>window.location.reload(),children:[(0,$.jsx)(`span`,{children:`Reconnected — refresh?`}),(0,$.jsx)(g,{"aria-label":`Dismiss`,onClick:e=>{e.stopPropagation(),u(null)},style:{fontSize:10,opacity:.7}})]})},{Text:Fi}=r,Ii=({result:e,selected:t,onClick:n,onHover:r,rowId:i,tokens:a=[]})=>{let{token:o}=N.useToken(),{title:s,tag:c,secondary:l,time:u,icon:d}=Li(e);return(0,$.jsxs)(`button`,{type:`button`,onClick:n,onMouseEnter:r,"aria-label":s,role:`option`,"aria-selected":t,id:i,style:{display:`flex`,alignItems:`flex-start`,gap:12,width:`100%`,padding:`4px 12px`,border:`none`,background:t?o.colorBgTextHover:`transparent`,cursor:`pointer`,textAlign:`left`,borderRadius:o.borderRadiusSM},children:[d&&(0,$.jsx)(`span`,{style:{fontSize:18,lineHeight:`20px`,flexShrink:0},children:d}),(0,$.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`baseline`,gap:8,width:`100%`},children:[(0,$.jsx)(Fi,{strong:!0,style:{flex:1,minWidth:0,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:(0,$.jsx)(ln,{text:s,terms:a})}),c&&(0,$.jsx)(Fi,{type:`secondary`,style:{fontSize:12,whiteSpace:`nowrap`,flexShrink:0},children:(0,$.jsx)(ln,{text:c,terms:a})}),u&&(0,$.jsx)(Fi,{type:`secondary`,style:{fontSize:12,whiteSpace:`nowrap`,flexShrink:0},children:u})]}),l&&(0,$.jsx)(Fi,{type:`secondary`,style:{display:`block`,fontSize:12,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:(0,$.jsx)(ln,{text:l,terms:a})})]})]})};function Li(e){switch(e.type){case`session`:return{title:Z(e.item,{includeAgentFallback:!0}),tag:e.item.agentic_tool,secondary:e.parentBranch?`in ${e.parentBranch.name}`:void 0,time:Dn(e.item.last_updated)};case`branch`:return{title:e.item.name,tag:e.item.ref,time:Dn(e.item.updated_at)};case`assistant`:{let t=ht(e.item);return{icon:t?.emoji,title:t?.displayName??e.item.name,time:Dn(e.item.updated_at)}}case`artifact`:return{title:e.item.name,tag:e.item.template,secondary:e.parentBranch?`in ${e.parentBranch.name}`:void 0,time:Dn(e.item.updated_at)};case`board`:return{icon:e.item.icon,title:e.item.name,time:Dn(e.item.last_updated)};case`mcp`:return{title:e.item.display_name||e.item.name,tag:e.item.transport,secondary:e.item.description}}}var Ri=[`session`,`branch`,`assistant`,`artifact`,`board`,`mcp`],zi=[`all`,`session`,`branch`,`assistant`,`artifact`,`board`,`mcp`],Bi={all:`All`,session:`Session`,branch:`Branch`,assistant:`Assistant`,artifact:`Artifact`,board:`Board`,mcp:`MCP`},Vi={session:`Sessions`,branch:`Branches`,assistant:`Assistants`,artifact:`Artifacts`,board:`Boards`,mcp:`MCP`},Hi={session:[],branch:[],assistant:[],artifact:[],board:[],mcp:[]},Ui={session:0,branch:0,assistant:0,artifact:0,board:0,mcp:0};function Wi(e){if(!e)return 0;if(e instanceof Date)return e.getTime();let t=Date.parse(e);return Number.isNaN(t)?0:t}function Gi(e){return(t,n)=>Wi(e(n))-Wi(e(t))}function Ki(e){return Ri.some(t=>e[t].length>0)}function qi(e){return Ri.flatMap(t=>e[t])}function Ji(e){return Ri.reduce((t,n)=>t+e[n],0)}function Yi(e){let t=new Map,n=0;for(let r of Ri)t.set(r,n),n+=e[r].length;return t}var{Text:Xi}=r,Zi={session:(0,$.jsx)(b,{}),branch:(0,$.jsx)(Ye,{}),assistant:(0,$.jsx)(d,{}),artifact:(0,$.jsx)(Ge,{}),board:(0,$.jsx)(s,{}),mcp:(0,$.jsx)(Xe,{})},Qi=({query:e,results:t,hasAnyResults:n,recents:r,hasAnyRecents:i,selectedIndex:a,onResultClick:o,onResultHover:s})=>{let{token:c}=N.useToken(),l=e.length===0,u=l?r:t,d=(0,Q.useMemo)(()=>l?[]:wn(e),[l,e]),f=(0,Q.useMemo)(()=>Yi(u),[u]);return(0,$.jsx)(`div`,{role:`listbox`,id:na,style:{flex:1,minHeight:0,overflowY:`auto`,padding:`2px 0`},children:l&&!i?(0,$.jsx)(ea,{text:`Recent items you've created will show up here.`,token:c}):!l&&!n?(0,$.jsx)(ea,{text:`No matches for "${e}"`,token:c}):Ri.map(e=>{let t=u[e];if(t.length===0)return null;let n=f.get(e)??0;return(0,$.jsx)($i,{title:Vi[e],icon:Zi[e],token:c,children:t.map((e,t)=>{let r=n+t;return(0,$.jsx)(Ii,{rowId:ra(e),result:e,selected:r===a,onClick:()=>o(e),onHover:()=>s(r),tokens:d},ta(e))})},e)})})},$i=({title:e,icon:t,token:n,children:r})=>(0,$.jsxs)(`div`,{style:{padding:`2px 0`},children:[(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:6,padding:`2px 16px 1px`,fontSize:11,textTransform:`uppercase`,letterSpacing:.5,color:n.colorTextTertiary},children:[t,e]}),r]}),ea=({text:e,token:t})=>(0,$.jsx)(`div`,{style:{padding:`24px 16px`,textAlign:`center`},children:(0,$.jsx)(Xi,{type:`secondary`,style:{fontSize:13,color:t.colorTextSecondary},children:e})});function ta(e){switch(e.type){case`session`:return`session-${e.item.session_id}`;case`branch`:case`assistant`:return`${e.type}-${e.item.branch_id}`;case`artifact`:return`artifact-${e.item.artifact_id}`;case`board`:return`board-${e.item.board_id}`;case`mcp`:return`mcp-${e.item.mcp_server_id}`}}var na=`global-search-listbox`;function ra(e){return`global-search-row-${ta(e)}`}var ia=({activeChip:e,onChipChange:t,ownedByMe:r,onOwnedByMeToggle:i,counts:a})=>{let{token:o}=N.useToken(),s=a?Ji(a):0,c=!!a&&s>0;return(0,$.jsxs)(`div`,{style:{padding:`6px 12px`,borderBottom:`1px solid ${o.colorBorderSecondary}`},children:[(0,$.jsx)(G,{size:`small`,value:e,onChange:e=>t(e),options:zi.map(t=>({label:(0,$.jsx)(aa,{label:Bi[t],count:c?t===`all`?s:a?.[t]??0:void 0,isActive:e===t,token:o}),value:t})),style:{marginBottom:4,fontSize:12},"aria-label":`Filter by entity type`}),(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:8},children:[(0,$.jsxs)(`label`,{htmlFor:`global-search-created-by-me`,style:{display:`inline-flex`,alignItems:`center`,gap:6,fontSize:12,cursor:`pointer`,userSelect:`none`},children:[(0,$.jsx)(re,{id:`global-search-created-by-me`,size:`small`,checked:r,onChange:i,"aria-label":`Created by me`}),`Created by me`]}),(0,$.jsx)(n,{title:`Global search is in beta — some click targets are still stubs (e.g. MCP opens Settings) and message-content search isn't wired up yet. Expect rough edges.`,placement:`bottom`,children:(0,$.jsx)(h,{color:`orange`,style:{fontSize:10,lineHeight:`16px`,padding:`0 6px`,margin:0,cursor:`help`,userSelect:`none`},children:`BETA`})})]})]})},aa=({label:e,count:t,isActive:n,token:r})=>(0,$.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:4},children:[e,t!==void 0&&(0,$.jsx)(h,{style:{margin:0,padding:`0 5px`,fontSize:10,lineHeight:`14px`,border:`none`,background:n?r.colorFillSecondary:r.colorFillTertiary,color:r.colorTextSecondary},children:t})]});function oa({query:e,ownedByMe:t,activeTypeChip:n,currentUserId:r,sessionById:i,branchById:a,artifactById:o,boardById:s,mcpServerById:c}){let[l,u]=(0,Q.useState)(e);(0,Q.useEffect)(()=>{let t=setTimeout(()=>u(e),220);return()=>clearTimeout(t)},[e]);let d=(0,Q.useCallback)(()=>u(e),[e]),{results:f,counts:p}=(0,Q.useMemo)(()=>{let e=l.trim();if(e.length<2)return{results:Hi,counts:Ui};let u=wn(e);if(u.length===0)return{results:Hi,counts:Ui};let d=e=>n===e?15:5,f=e=>n===`all`||n===e,p=Array.from(i.values()).filter(e=>!t||e.created_by===r).filter(e=>Vn(u,rr.session(e))).sort(Gi(e=>e.last_updated)),m=Array.from(a.values()).filter(e=>!t||e.created_by===r).filter(e=>Vn(u,rr.branch(e))).sort(Gi(e=>e.updated_at)),h=m.filter(e=>!bt(e)),g=m.filter(e=>bt(e)),_=Array.from(o.values()).filter(e=>!e.archived).filter(e=>!t||e.created_by===r).filter(e=>Vn(u,rr.artifact(e))).sort(Gi(e=>e.updated_at)),v=Array.from(s.values()).filter(e=>!e.archived).filter(e=>!t||e.created_by===r).filter(e=>Vn(u,rr.board(e))).sort(Gi(e=>e.last_updated)),y=Array.from(c.values()).filter(e=>!t||e.owner_user_id===r).filter(e=>Vn(u,rr.mcp(e))).sort(Gi(e=>e.updated_at)),b={session:p.length,branch:h.length,assistant:g.length,artifact:_.length,board:v.length,mcp:y.length};return{results:{session:f(`session`)?p.slice(0,d(`session`)).map(e=>({type:`session`,item:e,parentBranch:a.get(e.branch_id)})):[],branch:f(`branch`)?h.slice(0,d(`branch`)).map(e=>({type:`branch`,item:e})):[],assistant:f(`assistant`)?g.slice(0,d(`assistant`)).map(e=>({type:`assistant`,item:e})):[],artifact:f(`artifact`)?_.slice(0,d(`artifact`)).map(e=>({type:`artifact`,item:e,parentBranch:e.branch_id?a.get(e.branch_id):void 0})):[],board:f(`board`)?v.slice(0,d(`board`)).map(e=>({type:`board`,item:e})):[],mcp:f(`mcp`)?y.slice(0,d(`mcp`)).map(e=>({type:`mcp`,item:e})):[]},counts:b}},[l,t,n,r,i,a,o,s,c]);return{results:f,counts:p,hasAnyResults:Ki(f),debouncedQuery:l,flush:d}}function sa({currentUserId:e,sessionById:t,branchById:n,artifactById:r,boardById:i,mcpServerById:a}){return(0,Q.useMemo)(()=>{if(!e)return Hi;let o=Array.from(t.values()).filter(t=>t.created_by===e).sort(Gi(e=>e.last_updated)).slice(0,3),s=Array.from(n.values()).filter(t=>t.created_by===e).sort(Gi(e=>e.updated_at)),c=s.filter(e=>!bt(e)).slice(0,3),l=s.filter(e=>bt(e)).slice(0,3),u=Array.from(r.values()).filter(e=>!e.archived).filter(t=>t.created_by===e).sort(Gi(e=>e.updated_at)).slice(0,3),d=Array.from(i.values()).filter(e=>!e.archived).filter(t=>t.created_by===e).sort(Gi(e=>e.last_updated)).slice(0,3),f=Array.from(a.values()).filter(t=>t.owner_user_id===e).sort(Gi(e=>e.updated_at)).slice(0,3);return{session:o.map(e=>({type:`session`,item:e,parentBranch:n.get(e.branch_id)})),branch:c.map(e=>({type:`branch`,item:e})),assistant:l.map(e=>({type:`assistant`,item:e})),artifact:u.map(e=>({type:`artifact`,item:e,parentBranch:e.branch_id?n.get(e.branch_id):void 0})),board:d.map(e=>({type:`board`,item:e})),mcp:f.map(e=>({type:`mcp`,item:e}))}},[e,t,n,r,i,a])}var ca=260,la=({currentUserId:e,sessionById:t,branchById:n,artifactById:r,boardById:i,mcpServerById:a,onSettingsClick:o})=>{let{token:s}=N.useToken(),c=(0,Q.useRef)(null),l=(0,Q.useRef)(null),[u,d]=(0,Q.useState)(``),[f,p]=(0,Q.useState)(!1),[m,h]=(0,Q.useState)(`all`),[_,v]=(0,Q.useState)(!0),[y,b]=(0,Q.useState)(0),x=En({boardById:i,sessionById:t,branchById:n,artifactById:r}),{results:S,counts:C,hasAnyResults:w,debouncedQuery:T,flush:E}=oa({query:u,ownedByMe:_,activeTypeChip:m,currentUserId:e,sessionById:t,branchById:n,artifactById:r,boardById:i,mcpServerById:a}),D=sa({currentUserId:e,sessionById:t,branchById:n,artifactById:r,boardById:i,mcpServerById:a}),O=Ki(D),k=u.trim().length<2,A=k?``:T.trim(),j=(0,Q.useMemo)(()=>qi(k?D:S),[k,D,S]);(0,Q.useEffect)(()=>{b(e=>Math.min(Math.max(e,0),Math.max(j.length-1,0)))},[j.length]),(0,Q.useEffect)(()=>{if(!f)return;let e=j[y];e&&document.getElementById(ra(e))?.scrollIntoView({block:`nearest`})},[y,j,f]),(0,Q.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&(e.key===`k`||e.key===`K`)&&(e.preventDefault(),c.current?.focus(),p(!0))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),(0,Q.useEffect)(()=>{if(!f)return;let e=e=>{l.current?.contains(e.target)||p(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[f]);let M=(0,Q.useCallback)(e=>{switch(e.type){case`board`:x.goToBoard(e.item.board_id);break;case`branch`:case`assistant`:x.goToBranch(e.item.branch_id);break;case`session`:x.goToSession(e.item.session_id);break;case`artifact`:x.goToArtifact(e.item.artifact_id);break;case`mcp`:o?.();break}p(!1),d(``)},[x,o]),P=(0,Q.useCallback)(()=>{p(!1),d(``),c.current?.blur()},[]);return(0,$.jsxs)(`div`,{ref:l,style:{position:`relative`,width:ca},children:[(0,$.jsx)(ce.Search,{ref:c,placeholder:`Search… ⌘K`,value:u,onChange:e=>{d(e.target.value),p(!0),b(0)},onFocus:()=>p(!0),onKeyDown:e=>{if(e.key===`Escape`){e.preventDefault(),u?d(``):(p(!1),c.current?.blur());return}if(e.key===`ArrowDown`){e.preventDefault(),b(e=>Math.min(e+1,Math.max(j.length-1,0)));return}if(e.key===`ArrowUp`){e.preventDefault(),b(e=>Math.max(e-1,0));return}},onSearch:e=>{if(e.trim()!==T.trim()){E();return}let t=j[y];t&&M(t)},allowClear:!0,"aria-label":`Global search`,"aria-autocomplete":`list`,"aria-expanded":f,"aria-controls":na,"aria-activedescendant":f&&j[y]?ra(j[y]):void 0,role:`combobox`,style:{width:`100%`}}),f&&(0,$.jsxs)(`div`,{style:{position:`absolute`,top:`100%`,right:0,width:600,maxHeight:`85vh`,display:`flex`,flexDirection:`column`,marginTop:4,background:s.colorBgElevated,border:`1px solid ${s.colorBorderSecondary}`,borderRadius:s.borderRadiusLG,boxShadow:s.boxShadowSecondary,zIndex:1e3},children:[(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(g,{}),onClick:P,"aria-label":`Close search`,style:{position:`absolute`,top:4,right:4,width:24,height:24,minWidth:24,padding:0,color:s.colorTextTertiary,zIndex:1}}),(0,$.jsx)(ia,{activeChip:m,onChipChange:e=>{h(e),b(0)},ownedByMe:_,onOwnedByMeToggle:()=>{v(e=>!e),b(0)},counts:k?void 0:C}),(0,$.jsx)(Qi,{query:A,results:S,hasAnyResults:w,recents:D,hasAnyRecents:O,selectedIndex:y,onResultClick:M,onResultHover:b})]})]})},ua={CURSOR_EMIT_THROTTLE_MS:100,FACEPILE_REFRESH_MS:1e4,CURSOR_HIDE_AFTER_MS:5e3,ACTIVE_USER_TIMEOUT_MS:300*1e3,TYPING_TIMEOUT_MS:3e3};function da(e){let{client:t,boardId:n,users:r,enabled:i=!0,globalPresence:a=!1,presenceMinUpdateIntervalMs:o=0}=e,s=(0,Q.useRef)(r);s.current=r;let[c,l]=(0,Q.useState)(new Map),[u,d]=(0,Q.useState)(new Map);(0,Q.useEffect)(()=>{if(!i||!t?.io){l(new Map),d(new Map);return}if(!a&&!n){l(new Map),d(new Map);return}let e=e=>{if(n&&e.boardId===n){let t={x:e.x,y:e.y,timestamp:e.timestamp};l(n=>{let r=n.get(e.userId);if(r&&e.timestamp<r.timestamp||r&&r.x===t.x&&r.y===t.y&&r.timestamp===t.timestamp)return n;let i=new Map(n);return i.set(e.userId,t),i})}if(!a&&e.boardId===n){let t={boardId:e.boardId,x:e.x,y:e.y,timestamp:e.timestamp};d(n=>{let r=n.get(e.userId);if(r&&e.timestamp<r.timestamp||r&&r.boardId===t.boardId&&o>0&&e.timestamp-r.timestamp<o||r&&r.boardId===t.boardId&&r.x===t.x&&r.y===t.y&&r.timestamp===t.timestamp)return n;let i=new Map(n);return i.set(e.userId,t),i})}},r=e=>{if(!a)return;let t={boardId:e.boardId,timestamp:e.timestamp};d(n=>{let r=n.get(e.userId);if(r&&e.timestamp<r.timestamp||r&&r.boardId===t.boardId&&o>0&&e.timestamp-r.timestamp<o||r&&r.boardId===t.boardId&&r.timestamp===t.timestamp)return n;let i=new Map(n);return i.set(e.userId,t),i})},s=e=>{n&&e.boardId===n&&l(t=>{if(!t.has(e.userId))return t;let n=new Map(t);return n.delete(e.userId),n}),!a&&e.boardId===n&&d(t=>{if(!t.has(e.userId))return t;let n=new Map(t);return n.delete(e.userId),n})};t.io.on(`cursor-moved`,e),t.io.on(`presence-updated`,r),t.io.on(`cursor-left`,s);let c=setInterval(()=>{l(e=>{if(e.size===0)return e;let t=Date.now(),n=!1;for(let[r,i]of e.entries())if(t-i.timestamp>ua.CURSOR_HIDE_AFTER_MS){n=!0;break}if(!n)return e;let r=new Map(e);for(let[n,i]of e.entries())t-i.timestamp>ua.CURSOR_HIDE_AFTER_MS&&r.delete(n);return r})},5e3),u=setInterval(()=>{d(e=>{if(e.size===0)return e;let t=Date.now(),n=!1;for(let[r,i]of e.entries())if(t-i.timestamp>ua.ACTIVE_USER_TIMEOUT_MS){n=!0;break}if(!n)return e;let r=new Map(e);for(let[n,i]of e.entries())t-i.timestamp>ua.ACTIVE_USER_TIMEOUT_MS&&r.delete(n);return r})},3e4);return()=>{t.io.off(`cursor-moved`,e),t.io.off(`presence-updated`,r),t.io.off(`cursor-left`,s),clearInterval(c),clearInterval(u)}},[t,n,i,a,o]);let{activeUsers:f,remoteCursors:p}=(0,Q.useMemo)(()=>{let e=[],t=new Map;for(let[t,n]of u.entries()){let r=s.current.find(e=>e.user_id===t);r&&e.push({user:r,lastSeen:n.timestamp,boardId:n.boardId,cursor:typeof n.x==`number`&&typeof n.y==`number`?{x:n.x,y:n.y}:void 0})}for(let[e,n]of c.entries()){let r=s.current.find(t=>t.user_id===e);r&&t.set(e,{x:n.x,y:n.y,user:r,timestamp:n.timestamp})}return{activeUsers:e,remoteCursors:t}},[u,c]);return{activeUsers:f,remoteCursors:p}}var fa=({activeUsers:e,maxVisible:t=5,onUserClick:r,boardById:i,style:a})=>{let o=e.slice(0,t),s=e.slice(t),c=s.length;return e.length===0?null:(0,$.jsxs)(`div`,{className:`facepile`,style:a,children:[o.map(({user:e,cursor:t,boardId:a})=>{let o=a&&i?i.get(a):null,s=o?.name||`Unknown Board`,c=o?.icon||`📋`,l=r&&a;return(0,$.jsx)(n,{title:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`div`,{children:e.name||e.email}),a&&(0,$.jsxs)(`div`,{style:{fontSize:`11px`,opacity:.7,marginTop:`4px`},children:[c,` `,s]}),l&&(0,$.jsx)(`div`,{style:{fontSize:`11px`,opacity:.7,marginTop:`4px`},children:`Click to go to board`})]}),children:(0,$.jsx)(`span`,{children:(0,$.jsx)(Or,{style:{cursor:l?`pointer`:`default`},onClick:()=>{l&&r(e.user_id,a,t)},children:e.emoji||`👤`})})},e.user_id)}),c>0&&(0,$.jsx)(n,{title:(0,$.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:s.map(({user:e})=>(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:6},children:[(0,$.jsx)(`span`,{style:{fontSize:16},children:e.emoji||`👤`}),(0,$.jsx)(`span`,{children:e.name||e.email})]},e.user_id))}),children:(0,$.jsx)(`span`,{children:(0,$.jsxs)(Or,{fontSize:`12px`,style:{fontWeight:`bold`},children:[`+`,c]})})})]})},pa=({client:e,currentBoardId:t,users:n,currentUser:r,boardById:i,onUserClick:a})=>{let{activeUsers:o}=da({client:e,boardId:t??null,users:n,enabled:!!e,globalPresence:!0,presenceMinUpdateIntervalMs:ua.FACEPILE_REFRESH_MS}),s=(0,Q.useMemo)(()=>r?[{user:r,lastSeen:Date.now(),boardId:t??void 0,cursor:void 0},...o.filter(e=>e.user.user_id!==r.user_id)]:o,[o,t,r]);return s.length===0?null:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(fa,{activeUsers:s,currentUserId:r?.user_id,maxVisible:5,boardById:i,onUserClick:a,style:{marginRight:8}}),(0,$.jsx)(W,{orientation:`vertical`,style:{height:32,margin:`0 8px`}})]})},{Header:ma}=ae,ha=({recentBoards:e,onBoardChange:t,token:r})=>e.length===0?null:(0,$.jsx)(K,{size:4,children:e.map(e=>(0,$.jsx)(n,{title:e.name,placement:`bottom`,children:(0,$.jsx)(J,{type:`text`,size:`small`,"aria-label":`Switch to board ${e.name}`,onClick:()=>t(e.board_id),style:{width:30,height:30,minWidth:30,padding:0,borderRadius:`50%`,display:`flex`,alignItems:`center`,justifyContent:`center`,fontSize:16,border:`1px solid ${r.colorBorderSecondary}`,background:r.colorBgElevated},children:e.icon||`📋`})},e.board_id))}),ga=({user:e,presenceClient:t=null,presenceUsers:r=[],currentUserId:i,connected:a=!1,connecting:o=!1,onMenuClick:s,onCommentsClick:c,onEventStreamClick:l,onSettingsClick:u,onUserSettingsClick:d,onThemeEditorClick:p,onLogout:m,onRetryConnection:g,currentBoardName:_,currentBoardIcon:v,unreadCommentsCount:y=0,eventStreamEnabled:b=!1,hasUserMentions:x=!1,boards:S=[],currentBoardId:C,onBoardChange:w,onHomeClick:T,branchById:E,boardById:D,onUserClick:O,recentBoards:k=[],instanceLabel:A,instanceDescription:j,sessionById:M,artifactById:P,mcpServerById:F})=>{let{token:I}=N.useToken(),L=ft(),ee=X(`/knowledge`),R=Pt(),z={display:`flex`,alignItems:`center`,justifyContent:`center`};return(0,$.jsxs)(ma,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`0 24px`,background:I.colorBgContainer,borderBottom:`1px solid ${I.colorBorderSecondary}`},children:[(0,$.jsxs)(K,{size:16,align:`center`,children:[(0,$.jsxs)(`button`,{type:`button`,"aria-label":`Go to Home`,onClick:T,style:{height:54,padding:0,display:`flex`,alignItems:`center`,gap:10,background:`transparent`,border:0,cursor:`pointer`},children:[(0,$.jsx)(`img`,{src:`/ui/favicon.png`,alt:`Agor logo`,style:{height:50,borderRadius:`50%`,objectFit:`cover`,display:`block`}}),(0,$.jsx)(bn,{level:3,style:{marginTop:-6}})]}),A&&(j?(0,$.jsx)(Oe,{content:(0,$.jsx)(`div`,{style:{maxWidth:400},children:(0,$.jsx)(on,{content:j})}),title:A,trigger:`hover`,placement:`bottomLeft`,children:(0,$.jsx)(h,{color:`cyan`,style:{cursor:`help`,marginLeft:8},children:A})}):(0,$.jsx)(h,{color:`cyan`,style:{marginLeft:8},children:A})),(0,$.jsx)(W,{orientation:`vertical`,style:{height:32,margin:`0 8px`}}),_&&(0,$.jsx)(n,{title:`Toggle board panel`,placement:`bottom`,children:(0,$.jsx)(J,{type:`text`,icon:(0,$.jsx)(Le,{style:{fontSize:I.fontSizeLG}}),style:z,onClick:s,disabled:R})}),(0,$.jsx)(`div`,{style:{minWidth:200},children:(0,$.jsx)(Oi,{boards:S,currentBoardId:C,onBoardChange:w||(()=>{}),onHomeClick:T,branchById:E})}),S.length>0&&(0,$.jsx)(ha,{recentBoards:k,onBoardChange:w||(()=>{}),token:I}),_&&(0,$.jsx)(f,{count:y,offset:[-2,2],style:{backgroundColor:x?I.colorError:I.colorPrimaryBgHover},className:`app-header-icon-badge`,children:(0,$.jsx)(n,{title:`Show comments tab`,placement:`bottom`,children:(0,$.jsx)(J,{type:`text`,icon:(0,$.jsx)(be,{style:{fontSize:I.fontSizeLG}}),style:z,onClick:c,disabled:R})})})]}),(0,$.jsxs)(K,{children:[(0,$.jsx)(Pi,{connected:a,connecting:o,onRetry:g}),(0,$.jsx)(pa,{client:t,currentBoardId:C||null,users:r,currentUser:e,boardById:D,onUserClick:O}),(0,$.jsx)(la,{currentUserId:i,sessionById:M,branchById:E,artifactById:P,boardById:D,mcpServerById:F,onSettingsClick:u}),(0,$.jsx)(W,{orientation:`vertical`,style:{height:32,margin:`0 8px`}}),b&&(0,$.jsx)(n,{title:`Live Event Stream`,placement:`bottom`,children:(0,$.jsx)(J,{type:`text`,icon:(0,$.jsx)(Xe,{style:{fontSize:I.fontSizeLG}}),style:z,onClick:l,disabled:R})}),(0,$.jsx)(n,{title:`Knowledge`,placement:`bottom`,children:(0,$.jsx)(J,{type:`text`,icon:(0,$.jsx)(ue,{style:{fontSize:I.fontSizeLG}}),style:z,href:ee,"aria-label":`Knowledge`,onClick:e=>{e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),L(`/knowledge`))}})}),(0,$.jsx)(n,{title:`Documentation`,placement:`bottom`,children:(0,$.jsx)(J,{type:`text`,icon:(0,$.jsx)(Fe,{style:{fontSize:I.fontSizeLG}}),style:z,href:`https://agor.live/guide/getting-started`,target:`_blank`,rel:`noopener noreferrer`})}),(0,$.jsx)(Er,{onOpenThemeEditor:p}),(0,$.jsx)(n,{title:`Settings`,placement:`bottom`,children:(0,$.jsx)(J,{type:`text`,icon:(0,$.jsx)(pe,{style:{fontSize:I.fontSizeLG}}),style:z,onClick:u,disabled:R})}),(0,$.jsx)(Tr,{user:e,disabled:R,onUserSettingsClick:d,onLogout:m})]})]})};function _a({repo:e,branch:r,onEdit:i,onStartEnvironment:a,onStopEnvironment:o,onNukeEnvironment:s,onViewLogs:c,canControlEnvironment:l,connectionDisabled:u=!1,showNukeEnvironment:d=!0}){let{token:f}=N.useToken(),p=$t(),m=Gn(e),h=m.hasConfig,g=r.environment_instance,_=l??!0,v=_?void 0:`Requires branch 'all' permission or admin access`,y=r.app_url;if(!h)return(0,$.jsx)(n,{title:`Click to configure environment (optional)`,children:(0,$.jsx)(Yn,{color:`default`,style:{cursor:`pointer`,userSelect:`none`,opacity:.6},onClick:e=>{e.stopPropagation(),i?.()},children:(0,$.jsxs)(K,{size:4,children:[(0,$.jsx)(U,{style:{fontSize:12}}),(0,$.jsx)(`span`,{style:{fontFamily:f.fontFamilyCode},children:`env`}),(0,$.jsx)(D,{style:{fontSize:12}})]})})});let b=Ht(g),x=()=>{switch(b){case`stopped`:return(0,$.jsx)(Me,{style:{color:f.colorTextDisabled,fontSize:12}});case`starting`:case`stopping`:return(0,$.jsx)(oe,{size:`small`,style:{display:`inline-flex`,alignItems:`center`,fontSize:12}});case`healthy`:return(0,$.jsx)(Se,{style:{color:f.colorSuccess,fontSize:12}});case`unhealthy`:return(0,$.jsx)(Pe,{style:{color:f.colorWarning,fontSize:12}});case`running`:return(0,$.jsx)(Se,{style:{color:f.colorInfo,fontSize:12}});case`error`:return(0,$.jsx)(Ne,{style:{color:f.colorError,fontSize:12}});default:return(0,$.jsx)(Me,{style:{color:f.colorTextDisabled,fontSize:12}})}},S=e=>{e.stopPropagation(),i?.()},C=g?.status||`stopped`,w=C===`running`,T=C===`starting`,E=C===`stopping`,O=C===`running`||C===`starting`,k=u||!_||!h||!a||T||E||w,A=u||!_||!h||!o||E||!O;return(0,$.jsx)(Yn,{color:(()=>{switch(b){case`healthy`:return`green`;case`unhealthy`:return`orange`;case`running`:return`blue`;case`starting`:case`stopping`:return`blue`;case`error`:return`red`;default:return`default`}})(),style:{userSelect:`none`,padding:0,overflow:`hidden`,lineHeight:`20px`,display:`inline-flex`,alignItems:`stretch`},children:(0,$.jsxs)(K,{size:0,style:{width:`100%`,display:`inline-flex`,alignItems:`center`},orientation:`horizontal`,children:[g?.status===`running`&&y?(0,$.jsx)(n,{title:`Open environment - ${y}`,children:(0,$.jsx)(`a`,{href:y,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>e.stopPropagation(),style:{display:`inline-flex`,alignItems:`center`,color:`inherit`,padding:`0 7px`,textDecoration:`none`,height:`22px`},children:(0,$.jsxs)(K,{size:4,align:`center`,children:[x(),(0,$.jsx)(`span`,{style:{fontFamily:f.fontFamilyCode,lineHeight:1},children:`env`})]})})}):(0,$.jsx)(n,{title:(()=>{if(!h)return`Click to configure environment`;let e=g?.last_health_check,t=e?.message?` - ${e.message}`:``;switch(b){case`healthy`:return y?`Healthy - ${y}${t}`:`Healthy${t}`;case`unhealthy`:return y?`Unhealthy - ${y}${t}`:`Unhealthy - check failed${t}`;case`running`:return y?`Running - ${y} (health check not configured)`:`Running (health check not configured)`;case`starting`:return y?`Starting... - ${y}`:`Starting...`;case`stopping`:return`Stopping...`;case`error`:return`Failed to start - click to configure`;default:return`Stopped - click to configure`}})(),children:(0,$.jsx)(`div`,{style:{padding:`0 7px`,height:`22px`,display:`inline-flex`,alignItems:`center`},children:(0,$.jsxs)(K,{size:4,align:`center`,children:[x(),(0,$.jsx)(`span`,{style:{fontFamily:f.fontFamilyCode,lineHeight:1},children:`env`})]})})}),(a||o)&&h&&(0,$.jsxs)(K,{size:2,style:{padding:`0 6px`,borderLeft:`1px solid rgba(255, 255, 255, 0.2)`,height:`22px`,display:`inline-flex`,alignItems:`center`},children:[a&&(0,$.jsx)(n,{title:v??(C===`running`?`Environment running`:`Start environment`),children:(0,$.jsx)(J,{type:`text`,size:`small`,"aria-label":`Start environment`,icon:(0,$.jsx)(t,{}),onClick:e=>{e.stopPropagation(),k||a(r.branch_id)},disabled:k,style:{height:22,width:22,minWidth:22,padding:0}})}),o&&(0,$.jsx)(n,{title:v??(C===`running`?`Stop environment`:C===`starting`?`Stop environment (cancel startup)`:C===`stopping`?`Environment is stopping`:`Environment not running`),children:(0,$.jsx)(J,{type:`text`,size:`small`,"aria-label":`Stop environment`,icon:(0,$.jsx)(Me,{}),onClick:e=>{e.stopPropagation(),A||o(r.branch_id)},disabled:A,style:{height:22,width:22,minWidth:22,padding:0}})}),c&&(0,$.jsx)(n,{title:v??(m.logs?`View environment logs`:`Configure logs command to enable`),children:(0,$.jsx)(J,{type:`text`,size:`small`,"aria-label":`View environment logs`,icon:(0,$.jsx)(We,{}),onClick:e=>{e.stopPropagation(),_&&m.logs&&c(r.branch_id)},disabled:!_||!m.logs,style:{height:22,width:22,minWidth:22,padding:0}})}),d&&s&&r.nuke_command&&(0,$.jsx)(n,{title:v??`Nuke environment (destructive - removes all data and volumes)`,children:(0,$.jsx)(J,{type:`text`,size:`small`,danger:!0,"aria-label":`Nuke environment`,icon:(0,$.jsx)(Ie,{}),onClick:e=>{e.stopPropagation(),_&&!u&&p(()=>s(r.branch_id))},disabled:u||!_,style:{height:22,width:22,minWidth:22,padding:0}})})]}),(0,$.jsx)(n,{title:`Configure environment`,children:(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(D,{}),onClick:S,style:{padding:0,height:22,width:22,minWidth:22,borderLeft:`1px solid rgba(255, 255, 255, 0.2)`}})})]})})}var va=new Set([lt.CREATED,lt.RUNNING,lt.STOPPING,lt.AWAITING_PERMISSION,lt.AWAITING_INPUT]);function ya(e){if(!e)return 0;let t=Date.parse(e);return Number.isNaN(t)?0:t}function ba(e){return Math.max(ya(e.last_executor_heartbeat_at),ya(e.completed_at),ya(e.message_range?.end_timestamp),ya(e.started_at),ya(e.message_range?.start_timestamp),ya(e.created_at))}function xa(e,t){let n=va.has(e.status);if(n!==va.has(t.status))return n?1:-1;let r=e.status===lt.QUEUED;if(r!==(t.status===lt.QUEUED))return r?-1:1;let i=ba(e)-ba(t);return i===0?e.created_at.localeCompare(t.created_at):i}function Sa(e){let t=new Map;for(let n of e)t.set(n.task_id,n);return Array.from(t.values()).sort(xa).at(-1)||null}var Ca=[],wa=new Map;function Ta(e){return e instanceof Error&&e.message.includes(` is disposed`)}var Ea=Q.memo(({client:e,session:t,userById:n,currentUserId:r,branchName:i,enabled:a})=>{let{token:o}=N.useToken(),{onPermissionDecision:s,onSendPrompt:c}=ii(),l=Pt(),u=(0,Q.useRef)(null),d=(0,Q.useRef)(!1),f=(0,Q.useRef)(!1),p=(0,Q.useRef)(null),[m,h]=(0,Q.useState)(!1),[g,_]=(0,Q.useState)(``),v=t.session_id,{handle:y,state:b}=dn(e,v,{enabled:a,reactiveOptions:{taskHydration:`lazy`}}),S=b?.sessionId===v?b:null,C=S?.session||t,w=(0,Q.useMemo)(()=>S?Sa([...S.tasks,...S.queuedTasks]):null,[S]),T=S?.streamingMessages||wa,E=Nr(T),D=w?.task_id??null,O=!!D&&!!S?.loadedTaskIds.has(D),k=(0,Q.useCallback)(()=>{if(!u.current)return!0;let{scrollTop:e,scrollHeight:t,clientHeight:n}=u.current;return t-e-n<24},[]),A=(0,Q.useCallback)(()=>{u.current&&(u.current.scrollTop=u.current.scrollHeight)},[]),j=(0,Q.useCallback)(()=>{requestAnimationFrame(A)},[A]);(0,Q.useEffect)(()=>{d.current=!1,f.current=!1,p.current=null,j()},[j,D]),(0,Q.useEffect)(()=>{!a||d.current||j()},[T,a,j,w?.status]),(0,Q.useEffect)(()=>{!a||!D||!O||p.current!==D&&(p.current=D,d.current||j())},[a,j,D,O]),(0,Q.useEffect)(()=>{let e=u.current;if(!e||!a)return;let t=()=>{f.current=!0},n=()=>{if(k()){d.current=!1,f.current=!1;return}f.current&&(d.current=!0)};return e.addEventListener(`wheel`,t,{passive:!0}),e.addEventListener(`touchstart`,t,{passive:!0}),e.addEventListener(`pointerdown`,t),e.addEventListener(`scroll`,n,{passive:!0}),()=>{e.removeEventListener(`wheel`,t),e.removeEventListener(`touchstart`,t),e.removeEventListener(`pointerdown`,t),e.removeEventListener(`scroll`,n)}},[a,k]);let M=(0,Q.useCallback)(()=>{},[]),P=(0,Q.useCallback)(e=>{if(y)return y.loadTaskMessages(e).then(()=>void 0).catch(e=>{if(!Ta(e))throw e})},[y]),F=(0,Q.useCallback)(e=>{if(y)try{y.unloadTaskMessages(e)}catch(e){if(Ta(e))return;throw e}},[y]);(0,Q.useEffect)(()=>{if(D)return()=>{F(D)}},[F,D]);let I=a&&(!S||S.loading&&!w),L=S?.error||null,ee=!!S?.terminal,R=g.trim(),z=!!c&&!l,B=C.permission_config?.mode,te=C.status===`running`?`Queue a prompt for this session…`:`Prompt this session…`,V=(0,Q.useCallback)(()=>{!c||!R||l||(c(C.session_id,R,B),_(``))},[l,C.session_id,c,B,R]);return(0,$.jsxs)(`div`,{className:`nodrag`,children:[(0,$.jsx)(`div`,{ref:u,style:{height:360,overflowY:`auto`},children:L?(0,$.jsx)(H,{type:`error`,message:`Failed to load session task`,description:L,showIcon:!0,action:y&&S&&!ee?(0,$.jsx)(J,{size:`small`,loading:m,onClick:async()=>{h(!0);try{await y.resync()}finally{h(!1)}},children:`Reload`}):void 0}):I?(0,$.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:o.sizeXL},children:(0,$.jsx)(oe,{})}):w?w.status===lt.QUEUED?(0,$.jsx)(H,{type:`info`,showIcon:!0,message:`Latest task is queued`,description:w.full_prompt||`Waiting for the session to become available.`}):(0,$.jsx)(Dr,{task:w,agentic_tool:C.agentic_tool,sessionModel:C.model_config?.model,userById:n,currentUserId:r,isExpanded:!0,onExpandChange:M,sessionId:C.session_id,onPermissionDecision:s,branchName:i,scheduledFromBranch:C.scheduled_from_branch,scheduledRunAt:C.scheduled_run_at,streamingMessages:E.get(w.task_id),taskMessages:S?.messagesByTask.get(w.task_id)||Ca,taskMessagesLoaded:!!S?.loadedTaskIds.has(w.task_id),onLoadTaskMessages:P,onUnloadTaskMessages:F,assistantEmoji:void 0,isLatestTask:!0,client:e}):(0,$.jsx)(x,{image:x.PRESENTED_IMAGE_SIMPLE,description:`No task output yet for this session`,style:{marginTop:o.sizeXL}})}),(0,$.jsxs)(`div`,{className:`nodrag nopan nowheel`,style:{display:`flex`,gap:o.sizeUnit,alignItems:`flex-end`,marginTop:o.sizeUnit},children:[(0,$.jsx)(`div`,{style:{flex:1,minWidth:0},children:(0,$.jsx)(ce.TextArea,{value:g,onChange:e=>_(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),V())},disabled:!z,placeholder:z?te:`Session prompting is unavailable…`,autoSize:{minRows:1,maxRows:4}})}),(0,$.jsx)(J,{type:`primary`,onClick:V,disabled:!z||!R,children:`Prompt`})]})]})});Ea.displayName=`SessionLatestTaskPeek`;var Da=Q.memo(({client:e,sessions:t,userById:n,currentUserId:i,branchName:a,onCloseSession:o})=>{let{token:s}=N.useToken();return t.length===0?null:(0,$.jsxs)(`div`,{className:`nodrag`,style:{marginTop:s.sizeSM},children:[(0,$.jsxs)(K,{size:6,align:`baseline`,style:{marginBottom:s.sizeXS},children:[(0,$.jsx)(r.Text,{strong:!0,children:`Peek`}),(0,$.jsxs)(r.Text,{type:`secondary`,style:{fontSize:12},children:[t.length,` session`,t.length===1?``:`s`]})]}),(0,$.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:s.sizeSM},children:t.map(t=>(0,$.jsxs)(`section`,{style:{borderTop:`1px solid ${s.colorBorderSecondary}`,paddingTop:s.sizeSM},children:[(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:s.sizeSM,marginBottom:s.sizeXS},children:[(0,$.jsxs)(K,{size:6,align:`center`,style:{minWidth:0},children:[(0,$.jsx)(or,{tool:t.agentic_tool,size:16}),(0,$.jsx)(r.Text,{strong:!0,ellipsis:!0,style:{maxWidth:480,fontSize:12},children:Z(t,{includeAgentFallback:!0})})]}),(0,$.jsx)(J,{className:`nodrag nopan`,type:`text`,size:`small`,icon:(0,$.jsx)(g,{}),onClick:()=>o(t.session_id),title:`Stop peeking this session`})]}),(0,$.jsx)(Ea,{client:e,session:t,userById:n,currentUserId:i,branchName:a,enabled:!0})]},t.session_id))})]})});Da.displayName=`BranchSessionPeekSection`;var Oa=`agor:session-sort`,ka=[{value:`recent`,label:`Most recent`},{value:`oldest`,label:`Oldest first`},{value:`alpha`,label:`A–Z`}],Aa={TITLE_EXACT:1e3,TITLE_STARTS:800,TITLE_PHRASE:600,TITLE_ALL_WORDS:400,TITLE_PARTIAL_WORDS:200,DESC_PHRASE:120,DESC_ALL_WORDS:80,DESC_PARTIAL_WORDS:40,TOOL_MATCH:30,STATUS_ACTIVE:20,STATUS_AWAITING:15,RECENCY_MAX:50};function ja(e){return e.trim().toLowerCase()}function Ma(e,t=1){return Ha(wn(e).filter(e=>e.length>=t))}function Na(e,t,n=Date.now()){let r=ja(t);if(!r)return 0;let i=Ma(r),a=(e.title||e.description||``).toLowerCase(),o=(e.description??``).toLowerCase(),s=e.agentic_tool.toLowerCase(),c=0;if(a===r)c+=Aa.TITLE_EXACT;else if(a.startsWith(r))c+=Aa.TITLE_STARTS;else if(a.includes(r))c+=Aa.TITLE_PHRASE;else{let e=i.filter(e=>a.includes(e));e.length===i.length?c+=Aa.TITLE_ALL_WORDS:e.length>0&&(c+=Math.round(Aa.TITLE_PARTIAL_WORDS*(e.length/i.length)))}if(o&&o!==a)if(o.includes(r))c+=Aa.DESC_PHRASE;else{let e=i.filter(e=>o.includes(e));e.length===i.length?c+=Aa.DESC_ALL_WORDS:e.length>0&&(c+=Math.round(Aa.DESC_PARTIAL_WORDS*(e.length/i.length)))}if(i.some(e=>s.includes(e))&&(c+=Aa.TOOL_MATCH),c===0)return 0;let l=new Date(e.last_updated).getTime();if(Number.isFinite(l)){let e=Math.max(0,(n-l)/864e5);c+=Math.round(Aa.RECENCY_MAX*Math.exp(-e))}return e.status===`running`||e.status===`stopping`?c+=Aa.STATUS_ACTIVE:e.status===`awaiting_permission`&&(c+=Aa.STATUS_AWAITING),c}function Pa(e,t,n={}){let r=ja(t);if(!Fa(r))return[];let i=wn(r);return e.filter(e=>Vn(i,rr.session(e))).map(e=>({session:e,score:Na(e,r,n.now)})).filter(({score:e})=>e>0).sort((e,t)=>t.score-e.score||za(e.session,t.session))}function Fa(e){return ja(e).length>=2}function Ia(e,t){let n=Ma(t);if(n.length===0)return!1;let r=e.agentic_tool.toLowerCase();return n.some(e=>r.includes(e))}function La(e,t,n=60){if(!e||!t.trim())return null;let r=e.toLowerCase(),i=[ja(t),...Ma(t)].filter(Boolean),a=-1,o=0;for(let e of i.sort((e,t)=>t.length-e.length)){let t=r.indexOf(e);if(t!==-1){a=t,o=e.length;break}}if(a===-1)return null;let s=Math.max(0,a-n),c=Math.min(e.length,a+Math.max(o,10)+n),l=s>0?`…`:``,u=c<e.length?`…`:``;return`${l}${e.slice(s,c)}${u}`}function Ra(e,t){let n=[...e];switch(t){case`oldest`:return n.sort(Ba);case`alpha`:return n.sort(Va);default:return n.sort(za)}}function za(e,t){return new Date(t.last_updated).getTime()-new Date(e.last_updated).getTime()}function Ba(e,t){return new Date(e.last_updated).getTime()-new Date(t.last_updated).getTime()}function Va(e,t){return Z(e,{includeAgentFallback:!0}).localeCompare(Z(t,{includeAgentFallback:!0}),void 0,{sensitivity:`base`})}function Ha(e){let t=new Set,n=[];for(let r of e)t.has(r)||(t.add(r),n.push(r));return n}var{Text:Ua}=r,Wa=({ownerUserId:e,value:t,onChange:n,client:r,envVars:i,disabled:a,hideEmptyMessage:o})=>{let[s,c]=(0,Q.useState)(i),[l,u]=(0,Q.useState)(!1),[d,f]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{if(i){c(i);return}if(!r||!e)return;let t=!1;return u(!0),f(null),(async()=>{try{let n=await r.service(`users`).get(e);t||c(n.env_vars??{})}catch(e){t||f(e instanceof Error?e.message:`Failed to load env vars`)}finally{t||u(!1)}})(),()=>{t=!0}},[r,e,i]);let p=(0,Q.useMemo)(()=>s?Object.entries(s).filter(([,e])=>e.scope===`session`).map(([e])=>e).sort():[],[s]);return d?(0,$.jsx)(H,{type:`error`,title:d}):!l&&p.length===0?o?null:(0,$.jsxs)(Ua,{type:`secondary`,children:[`No session-scope environment variables. Add some under `,(0,$.jsx)(`b`,{children:`User Settings → Env vars`}),` with scope = `,(0,$.jsx)(`b`,{children:`Session`}),`, then select them here to expose to this session's executor.`]}):(0,$.jsxs)(K,{orientation:`vertical`,size:`small`,style:{width:`100%`},children:[(0,$.jsx)(E,{mode:`multiple`,value:t,onChange:n,loading:l,disabled:a,placeholder:`Select session-scope env vars to export to this session`,options:p.map(e=>({value:e,label:e})),style:{width:`100%`}}),(0,$.jsx)(Ua,{type:`secondary`,style:{fontSize:12},children:`Global-scope vars are exported automatically. Only vars listed here (scope = session, set by the session's creator) are added to this session's executor process.`})]})},Ga=({open:e,action:t,session:n,currentUser:i=null,mcpServerById:a=new Map,initialPrompt:s=``,onConfirm:c,onCancel:l,client:u,userById:d})=>{let[f]=q.useForm(),[p,m]=(0,Q.useState)(!1),[h,g]=(0,Q.useState)(`parent`),[_,v]=(0,Q.useState)(n?.agentic_tool||`claude-code`),[y,b]=(0,Q.useState)([]),x=(0,Q.useCallback)(e=>{let t=i?.default_agentic_config?.[e],r=e===n?.agentic_tool;return{agent:e,permissionMode:t?.permissionMode||(r?n?.permission_config?.mode:void 0)||ut(e),modelConfig:t?.modelConfig??(r?n?.model_config:void 0),codexSandboxMode:t?.codexSandboxMode,codexApprovalPolicy:t?.codexApprovalPolicy,codexNetworkAccess:t?.codexNetworkAccess,mcpServerIds:t?.mcpServerIds||[]}},[i,n]);(0,Q.useEffect)(()=>{if(e&&n){g(`parent`),b([]);let e=n.agentic_tool||`claude-code`;f.setFieldsValue({prompt:s,enableCallback:n.callback_config?.enabled,includeLastMessage:n.callback_config?.include_last_message,includeOriginalPrompt:n.callback_config?.include_original_prompt}),v(e)}},[e,n,f,s]),(0,Q.useEffect)(()=>{if(!e||!n||h!==`custom`)return;let t=n.agentic_tool||`claude-code`;f.setFieldsValue(x(t)),v(t)},[e,n,h,f,x]);let S=async()=>{try{await f.validateFields()}catch(e){console.error(`Form validation failed:`,e);return}let e=f.getFieldsValue(!0),n=e.prompt?.trim();if(n){m(!0);try{if(t===`fork`)await c(n);else{let t={prompt:n};h===`custom`&&(t.agent=e.agent||_,t.permissionMode=e.permissionMode,t.modelConfig=e.modelConfig,t.codexSandboxMode=e.codexSandboxMode,t.codexApprovalPolicy=e.codexApprovalPolicy,t.codexNetworkAccess=e.codexNetworkAccess,t.mcpServerIds=e.mcpServerIds,t.extraInstructions=e.extraInstructions,t.envVarNames=y),e.enableCallback!==void 0&&(t.enableCallback=e.enableCallback),e.includeLastMessage!==void 0&&(t.includeLastMessage=e.includeLastMessage),e.includeOriginalPrompt!==void 0&&(t.includeOriginalPrompt=e.includeOriginalPrompt),await c(t)}f.resetFields(),l()}catch(e){console.error(`Failed to ${t} session — keeping modal open so prompt is preserved:`,e)}finally{m(!1)}}},C=()=>{f.resetFields(),l()},w=t===`fork`?`Fork`:`Spawn`,T=t===`fork`?`Create a sibling session to explore an alternative approach`:`Create a child session to work on a focused subsession`;return(0,$.jsxs)(He,{title:(0,$.jsx)(`div`,{children:(0,$.jsxs)(r.Text,{strong:!0,children:[w,` Session: `,n?.title||n?.description||`Untitled`]})}),open:e,onOk:S,onCancel:C,okText:`${w} Session`,confirmLoading:p,width:700,forceRender:!0,children:[(0,$.jsx)(`div`,{style:{marginBottom:16},children:(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:13},children:T})}),(0,$.jsxs)(q,{form:f,layout:`vertical`,children:[(0,$.jsx)(q.Item,{name:`prompt`,label:`Prompt for ${t===`fork`?`forked`:`spawned`} session`,rules:[{required:!0,message:`Please enter a prompt`}],children:(0,$.jsx)(Wr,{value:f.getFieldValue(`prompt`)||``,onChange:e=>f.setFieldValue(`prompt`,e),placeholder:t===`fork`?`Try a different approach by... (type @ for autocomplete)`:`Work on this subsession... (type @ for autocomplete)`,autoSize:{minRows:3,maxRows:8},client:u,sessionId:n?.session_id||null,userById:d})}),t===`spawn`&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(q.Item,{label:`Configuration`,children:(0,$.jsxs)(o.Group,{value:h,onChange:e=>g(e.target.value),buttonStyle:`solid`,children:[(0,$.jsx)(o.Button,{value:`parent`,children:`Same as parent`}),(0,$.jsx)(o.Button,{value:`custom`,children:`Custom config`})]})}),h===`custom`&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(q.Item,{name:`agent`,label:`Agent`,children:(0,$.jsx)(Mn,{agents:jt,selectedAgentId:_,onSelect:e=>{let t=e;v(t),f.setFieldsValue(x(t))},columns:2})}),(0,$.jsx)(I,{ghost:!0,destroyOnHidden:!1,expandIcon:({isActive:e})=>(0,$.jsx)(M,{rotate:e?180:0}),items:[{key:`agentic-tool-config`,label:(0,$.jsx)(r.Text,{strong:!0,children:`Agentic Tool Configuration`}),children:(0,$.jsx)(zt,{agenticTool:_,mcpServerById:a,showHelpText:!1})}]}),i&&u&&(0,$.jsx)(q.Item,{label:`Environment Variables`,style:{marginTop:16},children:(0,$.jsx)(Wa,{ownerUserId:i.user_id,client:u,value:y,onChange:b,hideEmptyMessage:!0})}),(0,$.jsx)(q.Item,{name:`extraInstructions`,label:`Extra Instructions (optional)`,help:`Append additional context or constraints to the spawn prompt`,style:{marginTop:16},children:(0,$.jsx)(Wr,{value:f.getFieldValue(`extraInstructions`)||``,onChange:e=>f.setFieldValue(`extraInstructions`,e),placeholder:`e.g., "Only use safe operations", "Prioritize performance" (type @ for autocomplete)`,autoSize:{minRows:2,maxRows:4},client:u,sessionId:n?.session_id||null,userById:d})})]}),(0,$.jsxs)(`div`,{style:{marginTop:16,marginBottom:16},children:[(0,$.jsx)(r.Text,{strong:!0,children:`Callback Options`}),(0,$.jsx)(q.Item,{name:`enableCallback`,valuePropName:`checked`,style:{marginTop:8},children:(0,$.jsx)(Y,{children:`Notify parent on completion`})}),(0,$.jsx)(q.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.enableCallback!==t.enableCallback,children:({getFieldValue:e})=>e(`enableCallback`)&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(q.Item,{name:`includeLastMessage`,valuePropName:`checked`,style:{marginLeft:24},children:(0,$.jsx)(Y,{children:`Include child's final result`})}),(0,$.jsx)(q.Item,{name:`includeOriginalPrompt`,valuePropName:`checked`,style:{marginLeft:24},children:(0,$.jsx)(Y,{children:`Include original prompt`})})]})})]})]})]})]})},Ka=({session:e,size:t=11})=>{let{token:i}=N.useToken(),a=e.genealogy?.parent_session_id,o=e.genealogy?.forked_from_session_id;return o&&e.fork_origin===`btw`?(0,$.jsx)(n,{title:`Forked (btw) from ${gt(o)}`,children:(0,$.jsx)(r.Text,{style:{fontSize:Math.round(t*.85),color:i.colorWarning,fontWeight:`bold`,whiteSpace:`nowrap`,flexShrink:0},children:`btw`})}):a?(0,$.jsx)(n,{title:`Spawned from ${gt(a)}`,children:(0,$.jsx)(ze,{style:{fontSize:t,color:i.colorInfo,flexShrink:0}})}):o?(0,$.jsx)(n,{title:`Forked from ${gt(o)}`,children:(0,$.jsx)(ve,{style:{fontSize:t,color:i.colorWarning,flexShrink:0}})}):null},qa=`Matched by title, description, and agent. Active and recently updated sessions rank higher within matches.`,Ja=({sort:e,onSortChange:t,compact:n=!1,stopPropagation:r=!1})=>{let{token:i}=N.useToken();return(0,$.jsx)(fe,{menu:{items:ka.map(t=>({key:t.value,label:t.label,icon:e===t.value?(0,$.jsx)(m,{}):(0,$.jsx)(`span`,{style:{width:12,display:`inline-block`}})})),onClick:({key:e})=>t(e),selectedKeys:[e]},trigger:[`click`],children:(0,$.jsx)(J,{type:`text`,size:`small`,icon:e===`oldest`?(0,$.jsx)(le,{}):(0,$.jsx)(xe,{}),style:{flexShrink:0,padding:`0 6px`,color:i.colorTextSecondary,background:e===`recent`?void 0:i.colorFillSecondary,borderRadius:i.borderRadiusSM},onClick:e=>{r&&e.stopPropagation()},children:n?Za(e):Qa(e)})})},Ya=({value:e,onChange:t,sort:r,onSortChange:i,searching:a=!1,placeholder:o=`Search sessions...`})=>{let{token:s}=N.useToken();return(0,$.jsxs)(`div`,{style:{display:`flex`,gap:6,alignItems:`center`},children:[(0,$.jsx)(ce,{style:{flex:1},placeholder:o,prefix:(0,$.jsx)(k,{}),value:e,onChange:e=>t(e.target.value),allowClear:!0}),(0,$.jsx)(`div`,{style:{flexShrink:0,minWidth:96,display:`flex`,justifyContent:`flex-end`},children:a?(0,$.jsx)(n,{title:qa,placement:`topRight`,children:(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(B,{style:{color:s.colorTextTertiary}}),style:{padding:`0 6px`,color:s.colorTextTertiary},children:`Relevance`})}):(0,$.jsx)(Ja,{sort:r,onSortChange:i,compact:!0})})]})},Xa=()=>{let{token:e}=N.useToken();return(0,$.jsx)(n,{title:qa,children:(0,$.jsx)(`span`,{style:{borderBottom:`1px dashed ${e.colorTextTertiary}`,cursor:`help`},children:`by relevance`})})};function Za(e){return e===`alpha`?`A–Z`:e===`oldest`?`Oldest`:`Recent`}function Qa(e){return e===`alpha`?`A–Z`:e===`oldest`?`Oldest first`:`Most recent`}function $a(e){let t=new Map,n=new Map,r=[];for(let n of e)t.set(n.session_id,n);for(let i of e){let e=i.genealogy?.parent_session_id||i.genealogy?.forked_from_session_id;if(e&&t.has(e)){let t=n.get(e)||[];t.push(i),n.set(e,t)}else r.push(i)}function i(e,t=!1){let r=n.get(e.session_id)||[],a=`root`;t||(e.genealogy?.parent_session_id?a=`spawn`:e.genealogy?.forked_from_session_id&&(a=`fork`));let o={key:e.session_id,title:``,session:e,relationshipType:a};return r.length>0&&(o.children=r.map(e=>i(e,!1))),o}return r.map(e=>i(e,!0))}var eo=({sessionId:e,isArchiving:t,isPeeked:r=!1,onArchive:i,onSettings:a,onTogglePeek:o,children:s})=>{let[c,l]=(0,Q.useState)(!1),{token:u}=N.useToken(),d={background:`${u.colorBgContainer}cc`,borderRadius:4,width:24,height:24,minWidth:24,display:`flex`,alignItems:`center`,justifyContent:`center`},f=r?{...d,color:u.colorPrimary,background:u.colorPrimaryBg}:d;return(0,$.jsxs)(`div`,{style:{position:`relative`,minWidth:120},onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),children:[s,(0,$.jsxs)(`div`,{style:{position:`absolute`,right:4,top:`50%`,transform:`translateY(-50%)`,opacity:+!!c,transition:`opacity 0.15s ease-in-out`,pointerEvents:c?`auto`:`none`,display:`flex`,gap:2,width:`fit-content`},children:[a&&(0,$.jsx)(n,{title:`Session settings`,children:(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(pe,{}),onClick:t=>a(e,t),style:d})}),o&&(0,$.jsx)(n,{title:r?`Stop peeking at latest prompt`:`Peek at latest prompt`,children:(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(F,{}),onClick:t=>o(e,t),style:f})}),(0,$.jsx)(Zt,{tooltip:`Archive session`,loading:t,onClick:t=>i(e,t),style:d})]})]})},to=({branch:e,sessions:t,userById:i,currentUserId:a,selectedSessionId:o,onSessionClick:s,onCreateSession:c,onForkSession:l,onSpawnSession:u,onOpenSessionSettings:d,peekedSessionIds:p,onTogglePeekSession:m,defaultExpanded:h=!0,mode:g=`card`,client:_})=>{let{token:v}=N.useToken(),{modal:y}=w.useApp(),{showSuccess:x,showError:S}=xt(),C=Pt(),E=tn(`scheduler`),D=tn(`gateway`),{archiveSession:O}=Rt(_),[k,A]=(0,Q.useState)({open:!1,action:`fork`,session:null}),[j,M]=(0,Q.useState)([]),[P,F]=(0,Q.useState)(new Set),[L,ee]=(0,Q.useState)(``),[z,B]=Nt(Oa,`recent`),V=g===`panel`,ne=p??new Set,re=L.trim(),H=Fa(re),U=(0,Q.useCallback)((e,t)=>{t.stopPropagation(),m?.(e)},[m]),ie=async e=>{if(k.session)if(k.action===`fork`){let t=typeof e==`string`?e:e.prompt||``;await l?.(k.session.session_id,t)}else await u?.(k.session.session_id,e)},ae=(0,Q.useCallback)((e,t)=>{t.stopPropagation(),y.confirm({title:`Archive session?`,content:`Are you sure you want to archive this session?`,okText:`Archive`,cancelText:`Cancel`,onOk:async()=>{F(t=>new Set(t).add(e));try{await O(e)?x(`Session archived`):S(`Failed to archive session`)}finally{F(t=>{let n=new Set(t);return n.delete(e),n})}}})},[O,y,x,S]),se=(0,Q.useCallback)(e=>nt(e)??void 0,[]),ce=(0,Q.useCallback)(e=>at(e),[]),le=(0,Q.useMemo)(()=>t.filter(e=>!e.archived),[t]),W=(0,Q.useMemo)(()=>le.filter(e=>!e.scheduled_from_branch&&!ce(e)),[le,ce]),ue=(0,Q.useMemo)(()=>le.filter(e=>e.scheduled_from_branch).sort((e,t)=>(t.scheduled_run_at||0)-(e.scheduled_run_at||0)),[le]),de=(0,Q.useMemo)(()=>le.filter(e=>ce(e)),[le,ce]),fe=(0,Q.useMemo)(()=>[...W,...E?ue:[],...D?de:[]],[D,de,W,ue,E]),pe=(0,Q.useMemo)(()=>Ra(W,z),[W,z]),me=(0,Q.useMemo)(()=>$a(pe),[pe]),he=(0,Q.useMemo)(()=>V&&H?Pa(fe,re).map(({session:e})=>e):[],[V,H,fe,re]),ge=(0,Q.useMemo)(()=>ue.some(e=>e.status===`running`||e.status===`stopping`),[ue]),_e=(0,Q.useMemo)(()=>de.some(e=>e.status===`running`||e.status===`stopping`),[de]),ve=e.filesystem_status===`creating`,ye=e.filesystem_status===`failed`;(0,Q.useEffect)(()=>{let e=t=>{let n=[];for(let r of t)r.children&&r.children.length>0&&(n.push(r.key),n.push(...e(r.children)));return n};M(e(me))},[me]);let be=e=>{let t=e.session_id===o;return{border:e.ready_for_prompt?`1px solid ${v.colorPrimary}`:`1px solid ${V?v.colorBorderSecondary:`rgba(255, 255, 255, 0.1)`}`,borderRadius:V?6:4,padding:V?10:8,background:V?v.colorBgContainer:`transparent`,display:`flex`,alignItems:`center`,cursor:`pointer`,marginBottom:4,boxShadow:e.ready_for_prompt?`0 0 12px ${v.colorPrimary}30`:void 0,...t?{outline:`1px dashed ${v.colorTextBase}`,outlineOffset:-2}:{}}},xe=(e,t={})=>{let n=Z(e,{includeAgentFallback:!0});return(0,$.jsx)(r.Text,{strong:t.strong,type:t.secondary?`secondary`:void 0,style:{fontSize:V?13:12,flex:1,minWidth:0,...yn(2)},children:(0,$.jsx)(ln,{text:n,query:t.query??``})})},G=(e,t=``)=>{let n=e.status===`running`||e.status===`stopping`,i=Z(e,{includeAgentFallback:!0}),a=t&&e.title&&e.description?La(e.description,t):null,o=t?Ia(e,t):!1,c=e.scheduled_from_branch?`Scheduled`:ce(e)?`Gateway`:null;return(0,$.jsx)(eo,{sessionId:e.session_id,isArchiving:P.has(e.session_id),onArchive:ae,onSettings:d?(e,t)=>{t.stopPropagation(),d(e)}:void 0,children:(0,$.jsx)(`div`,{style:be(e),onClick:()=>s?.(e.session_id),children:(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`flex-start`,gap:4,flex:1,minWidth:0},children:[n?(0,$.jsx)(oe,{size:`small`}):(0,$.jsx)(or,{tool:e.agentic_tool,size:20}),(0,$.jsx)(Ka,{session:e,size:10}),(0,$.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[xe(e,{strong:!0,query:t}),(c||o)&&(0,$.jsxs)(r.Text,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:2},children:[c,c&&o?` · `:``,o&&(0,$.jsxs)($.Fragment,{children:[`Agent: `,(0,$.jsx)(ln,{text:e.agentic_tool,query:t})]})]}),a&&a!==i&&(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:11,fontStyle:`italic`,lineHeight:1.4,display:`block`,marginTop:2},children:(0,$.jsx)(ln,{text:a,query:t})})]})]})})},e.session_id)},Se=(0,$.jsx)(te,{theme:{components:{Tree:{colorBgContainer:`transparent`}}},children:(0,$.jsx)(T,{className:`agor-flat-tree`,treeData:me,expandedKeys:j,onExpand:e=>M(e),showLine:!0,showIcon:!1,selectable:!1,style:{background:`transparent`,borderRadius:0,padding:0},titleRender:e=>{let t=e.session,n=t.status===`running`||t.status===`stopping`;return(0,$.jsx)(eo,{sessionId:t.session_id,isArchiving:P.has(t.session_id),isPeeked:ne.has(t.session_id),onArchive:ae,onTogglePeek:m?U:void 0,onSettings:d?(e,t)=>{t.stopPropagation(),d(e)}:void 0,children:(0,$.jsx)(`div`,{style:be(t),onClick:()=>s?.(t.session_id),onContextMenu:e=>{(l||u)&&e.preventDefault()},children:(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4,flex:1,minWidth:0},children:[n?(0,$.jsx)(oe,{size:`small`}):(0,$.jsx)(or,{tool:t.agentic_tool,size:20}),(0,$.jsx)(Ka,{session:t,size:10}),xe(t,{strong:!0})]})})})}})}),Ce=(0,$.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,width:`100%`},children:[(0,$.jsxs)(K,{size:4,align:`center`,children:[(0,$.jsx)(r.Text,{strong:!0,children:`Sessions`}),(0,$.jsx)(f,{count:W.length,showZero:!0,style:{backgroundColor:v.colorPrimaryBgHover}}),!V&&(0,$.jsx)(Ja,{sort:z,onSortChange:B,compact:!0,stopPropagation:!0})]}),c&&(0,$.jsx)(`div`,{className:`nodrag`,children:(0,$.jsx)(J,{type:`default`,size:`small`,icon:(0,$.jsx)(R,{}),disabled:C||ve,onClick:t=>{t.stopPropagation(),c(e.branch_id)},title:ve?`Branch is being created...`:void 0,children:`New Session`})})]}),we=(0,$.jsx)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,width:`100%`},children:(0,$.jsxs)(K,{size:4,align:`center`,children:[(0,$.jsx)(je,{style:{color:v.colorInfo}}),(0,$.jsx)(r.Text,{strong:!0,children:`Scheduled Runs`}),(0,$.jsx)(f,{count:ue.length,showZero:!0,style:{backgroundColor:v.colorInfoBgHover}}),ge&&(0,$.jsx)(oe,{size:`small`})]})}),Te=(0,$.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:4},children:ue.map(e=>{let t=e.status===`running`||e.status===`stopping`;return(0,$.jsx)(eo,{sessionId:e.session_id,isArchiving:P.has(e.session_id),isPeeked:ne.has(e.session_id),onArchive:ae,onTogglePeek:m?U:void 0,onSettings:d?(e,t)=>{t.stopPropagation(),d(e)}:void 0,children:(0,$.jsx)(`div`,{style:be(e),onClick:()=>s?.(e.session_id),children:(0,$.jsxs)(K,{size:4,align:`center`,style:{flex:1,minWidth:0},children:[t?(0,$.jsx)(oe,{size:`small`}):(0,$.jsx)(or,{tool:e.agentic_tool,size:20}),xe(e,{secondary:!0})]})})},e.session_id)})}),Ee=(0,$.jsx)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,width:`100%`},children:(0,$.jsxs)(K,{size:4,align:`center`,children:[(0,$.jsx)(b,{style:{color:v.colorSuccess}}),(0,$.jsx)(r.Text,{strong:!0,children:`Gateway Sessions`}),(0,$.jsx)(f,{count:de.length,showZero:!0,style:{backgroundColor:v.colorSuccessBgHover}}),_e&&(0,$.jsx)(oe,{size:`small`})]})}),De=(0,$.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:4},children:de.map(e=>{let t=se(e),n=e.status===`running`||e.status===`stopping`;return(0,$.jsx)(eo,{sessionId:e.session_id,isArchiving:P.has(e.session_id),isPeeked:ne.has(e.session_id),onArchive:ae,onTogglePeek:m?U:void 0,onSettings:d?(e,t)=>{t.stopPropagation(),d(e)}:void 0,children:(0,$.jsx)(`div`,{style:be(e),onClick:()=>s?.(e.session_id),children:(0,$.jsxs)(K,{size:4,align:`center`,style:{flex:1,minWidth:0},children:[n?(0,$.jsx)(oe,{size:`small`}):(0,$.jsx)(or,{tool:e.agentic_tool,size:20}),(0,$.jsxs)(`div`,{style:{flex:1,minWidth:0,display:`flex`,flexDirection:`column`,gap:4},children:[xe(e),(0,$.jsx)(`div`,{style:{alignSelf:`flex-start`},children:t?(0,$.jsx)(sr,{channelType:t.channel_type,channelName:t.channel_name}):(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:11,fontStyle:`italic`},children:`(Gateway - metadata unavailable)`})})]})]})})},e.session_id)})}),Oe=V&&le.length>0?(0,$.jsx)(`div`,{style:{paddingBottom:12,paddingTop:4},children:(0,$.jsx)(Ya,{value:L,onChange:ee,sort:z,onSortChange:B,searching:H})}):null;return V&&H&&fe.length>0?(0,$.jsxs)($.Fragment,{children:[Oe,he.length>0&&(0,$.jsxs)(r.Text,{type:`secondary`,style:{fontSize:11,padding:`2px 8px 4px`,display:`block`},children:[he.length,` of `,fe.length,` · `,(0,$.jsx)(Xa,{})]}),he.length===0?(0,$.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,alignItems:`center`,padding:`24px 16px`,gap:6},children:[(0,$.jsx)(r.Text,{strong:!0,style:{fontSize:13},children:`No results`}),(0,$.jsxs)(r.Text,{type:`secondary`,style:{fontSize:12,textAlign:`center`,lineHeight:1.5,maxWidth:180},children:[`Nothing matched `,(0,$.jsx)(r.Text,{code:!0,children:re})]})]}):(0,$.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:4},children:he.map(e=>G(e,re))}),(0,$.jsx)(Ga,{open:k.open,action:k.action,session:k.session,currentUser:a?i.get(a):void 0,onConfirm:ie,onCancel:()=>A({open:!1,action:`fork`,session:null}),client:_,userById:i})]}):(0,$.jsxs)($.Fragment,{children:[Oe,le.length===0?(0,$.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8,alignItems:`center`,padding:V?`24px 0`:`16px 0`,marginTop:8},children:ve?(0,$.jsx)(r.Text,{type:`secondary`,children:`Creating branch on filesystem...`}):ye?(0,$.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8,textAlign:`center`},children:[(0,$.jsx)(r.Text,{type:`danger`,strong:!0,children:`Branch creation failed`}),e.error_message&&(0,$.jsx)(n,{title:e.error_message,placement:`bottom`,children:(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:12,maxWidth:220,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,cursor:`help`},children:e.error_message})})]}):c?(0,$.jsx)(J,{type:`primary`,icon:(0,$.jsx)(R,{}),disabled:C,onClick:t=>{t.stopPropagation(),c(e.branch_id)},size:`middle`,children:`Create Session`}):null}):(0,$.jsxs)($.Fragment,{children:[W.length>0?(0,$.jsx)(I,{defaultActiveKey:h?[`sessions`]:[],items:[{key:`sessions`,label:Ce,children:Se,styles:{body:{background:`transparent`,paddingInline:V?0:void 0}}}],ghost:!0,style:{marginTop:8}}):c?(0,$.jsx)(`div`,{style:{marginTop:8},children:Ce}):null,E&&ue.length>0&&(0,$.jsx)(I,{defaultActiveKey:[],items:[{key:`scheduled-runs`,label:we,children:Te,styles:{body:{background:`transparent`,paddingInline:V?0:void 0}}}],ghost:!0,style:{marginTop:W.length>0?0:8}}),D&&de.length>0&&(0,$.jsx)(I,{defaultActiveKey:[],items:[{key:`gateway-sessions`,label:Ee,children:De,styles:{body:{background:`transparent`,paddingInline:V?0:void 0}}}],ghost:!0,style:{marginTop:W.length>0||ue.length>0?0:8}})]}),(0,$.jsx)(Ga,{open:k.open,action:k.action,session:k.session,currentUser:a?i.get(a):void 0,onConfirm:ie,onCancel:()=>A({open:!1,action:`fork`,session:null}),client:_,userById:i})]})},no=200,ro=`agor:branch-card:peeked-session-ids:`,io=Q.memo(({branch:e,repo:t,sessions:i,userById:a,currentUserId:o,selectedSessionId:s,onSessionClick:l,onCreateSession:u,onForkSession:f,onSpawnSession:p,onArchiveOrDelete:m,onOpenSettings:h,onOpenSessionSettings:g,onOpenTerminal:_,onStartEnvironment:v,onStopEnvironment:y,onViewLogs:b,onNukeEnvironment:x,onUnpin:S,isPinned:C=!1,zoneName:w,zoneColor:T,defaultExpanded:E=!0,inPopover:O=!1,panelMode:k=!1,isActiveUrlTarget:A=!1,client:j})=>{let{token:M}=N.useToken(),P=Pt(),[F,I]=(0,Q.useState)(!1),[L,ee]=(0,Q.useState)(!1),[R,z]=Nt(`${ro}${e.branch_id}`,[]),B=(0,Q.useMemo)(()=>i.filter(e=>!e.archived),[i]),te=(0,Q.useMemo)(()=>new Map(B.map(e=>[e.session_id,e])),[B]),V=(0,Q.useMemo)(()=>{if(O||k)return[];let e=[],t=new Set;for(let n of R){let r=n.trim();if(!r)continue;let i=B.find(e=>e.session_id===r);i&&!t.has(i.session_id)&&(e.push(i.session_id),t.add(i.session_id))}return e},[O,k,B,R]),re=(0,Q.useMemo)(()=>new Set(V),[V]),H=(0,Q.useMemo)(()=>V.map(e=>te.get(e)).filter(e=>!!e),[te,V]),U=(0,Q.useCallback)(e=>z(e),[z]);(0,Q.useEffect)(()=>{O||k||R.join(`|`)!==V.join(`|`)&&z(V)},[O,k,V,z,R]);let ie=(0,Q.useCallback)(e=>{U(re.has(e)?V.filter(t=>t!==e):[...V,e])},[re,V,U]),ae=B,se=(0,Q.useMemo)(()=>ae.some(e=>e.status===`running`||e.status===`stopping`),[ae]),ce=e.filesystem_status===`creating`,le=e.filesystem_status===`failed`,W=(0,Q.useMemo)(()=>ht(e),[e]),ue=bt(e),de=(0,Q.useMemo)(()=>ae.some(e=>e.session_id===s),[ae,s]),fe=(0,Q.useMemo)(()=>{let t=ae.some(e=>e.ready_for_prompt===!0);return(e.needs_attention||t)&&!de},[ae,e.needs_attention,de]),pe=Ot(M),he=(0,Q.useMemo)(()=>{let e=M.colorTextBase||(pe?`#ffffff`:`#000000`),t;try{t=new ne(e).toHexString()}catch{t=pe?`#ffffff`:`#000000`}return`0 0 0 3px ${t}, 0 0 24px 6px ${t}99`},[M.colorTextBase,pe]),ge=de||A,_e=`2px dashed ${M.colorTextBase}`,ve=(0,Q.useMemo)(()=>{if(T)return kt(T,pe,50,50)},[T,pe]),ye=e.notes&&e.notes.length>no,be=(0,Q.useMemo)(()=>{if(!e.notes)return``;if(!ye||L)return e.notes;let t=e.notes.slice(0,no),n=t.lastIndexOf(` `);return n>no*.8?`${t.slice(0,n)}...`:`${t}...`},[e.notes,ye,L]),xe=(()=>{if(O)return{};let e={};return fe&&(e.boxShadow=he),ge&&(e.outline=_e,e.outlineOffset=-3),C&&T&&(e.borderColor=T,e.borderWidth=1),ue&&(e.borderLeft=`4px solid ${M.colorInfo}`),e})();return(0,$.jsxs)(me,{style:{width:k?`100%`:H.length>0?880:500,cursor:`default`,transition:`box-shadow 0.6s ease-in-out, outline 0.2s ease-in-out, border 0.6s ease-in-out, opacity 0.2s ease-in-out`,willChange:fe&&!O?`box-shadow`:`auto`,...xe,...ue?{backgroundColor:M.colorInfoBg}:{},...P&&!O?{pointerEvents:`none`,opacity:.55}:{}},styles:{body:{padding:16}},children:[(0,$.jsxs)(`div`,{className:!O&&!k?`drag-handle`:void 0,style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:12,gap:8},children:[(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flex:1,minWidth:0},children:[!O&&(0,$.jsx)(`div`,{className:`drag-handle`,style:{display:`flex`,alignItems:`center`,cursor:k?`default`:`grab`,width:32,height:32,justifyContent:`center`,flexShrink:0},children:ce||se?(0,$.jsx)(oe,{size:`large`}):ue&&W?.emoji?(0,$.jsx)(`span`,{style:{fontSize:32},children:W.emoji}):ue?(0,$.jsx)(d,{style:{fontSize:32,color:le?M.colorError:M.colorInfo}}):(0,$.jsx)(Ye,{style:{fontSize:32,color:le?M.colorError:M.colorPrimary}})}),(0,$.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,flex:1,minWidth:0},children:ue?(0,$.jsx)(r.Title,{level:4,className:`nodrag`,style:{margin:0,fontWeight:600},ellipsis:{tooltip:W?.displayName??e.name},children:W?.displayName??e.name}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(r.Text,{strong:!0,className:`nodrag`,ellipsis:{tooltip:e.name},children:e.name}),(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:12},ellipsis:{tooltip:t.slug},children:t.slug})]})})]}),(0,$.jsxs)(K,{size:4,style:{flexShrink:0},children:[!O&&!k&&C&&(0,$.jsx)(n,{title:w?`Pinned to [${w}] zone (click to unpin)`:`Pinned (click to unpin)`,children:(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(c,{style:{color:ve}}),onClick:t=>{t.stopPropagation(),S?.(e.branch_id)},className:`nodrag`})}),!O&&!k&&(0,$.jsx)(J,{type:`text`,icon:(0,$.jsx)(Je,{style:{fontSize:16}}),className:`drag-handle`,title:`Drag to reposition`,style:{cursor:`grab`,padding:`4px 8px`}}),(0,$.jsxs)(`div`,{className:`nodrag`,children:[_&&(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(Be,{}),onClick:t=>{t.stopPropagation(),_([`cd ${e.path}`],e.branch_id)},title:`Open terminal in branch directory`}),h&&(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(D,{}),onClick:t=>{t.stopPropagation(),h(e.branch_id)},title:`Edit branch`}),!O&&!k&&m&&(0,$.jsx)(Zt,{tooltip:`Archive or delete branch`,disabled:P,onClick:()=>I(!0)})]})]})]}),(0,$.jsx)(`div`,{className:`nodrag`,style:{marginBottom:8},children:(0,$.jsxs)(K,{size:4,wrap:!0,children:[e.created_by&&(0,$.jsx)(_n,{createdBy:e.created_by,currentUserId:o,userById:a,prefix:`Created by`}),e.issue_url&&(0,$.jsx)(Tn,{issueUrl:e.issue_url,currentRepo:t}),e.pull_request_url&&(0,$.jsx)(kn,{prUrl:e.pull_request_url,currentRepo:t}),(0,$.jsx)(_a,{repo:t,branch:e,onEdit:()=>h?.(e.branch_id),onStartEnvironment:v,onStopEnvironment:y,onViewLogs:b,onNukeEnvironment:x,connectionDisabled:P,showNukeEnvironment:!1})]})}),e.notes&&(0,$.jsxs)(`div`,{className:`nodrag`,style:{marginBottom:8},children:[(0,$.jsx)(`div`,{className:`markdown-compact`,style:{maxHeight:L?`none`:`120px`,overflow:`hidden`,transition:`max-height 0.3s ease`},children:(0,$.jsx)(on,{content:be,style:{fontSize:12,color:M.colorTextSecondary,lineHeight:`1.5`},compact:!1,showControls:!1})}),ye&&(0,$.jsx)(J,{type:`link`,size:`small`,onClick:e=>{e.stopPropagation(),ee(!L)},style:{padding:0,height:`auto`,fontSize:12,color:M.colorLink},children:L?`See less`:`See more`})]}),(0,$.jsx)(`div`,{className:`nodrag`,children:(0,$.jsx)(to,{branch:e,sessions:i,userById:a,currentUserId:o,selectedSessionId:s,onSessionClick:l,onCreateSession:u,onForkSession:f,onSpawnSession:p,onOpenSessionSettings:g,peekedSessionIds:re,onTogglePeekSession:!O&&!k?ie:void 0,defaultExpanded:E,mode:`card`,client:j})}),!O&&!k&&H.length>0&&(0,$.jsx)(Da,{client:j,sessions:H,userById:a,currentUserId:o,branchName:e.name,onCloseSession:ie}),(0,$.jsx)(Gt,{open:F,branch:e,sessionCount:i.length,environmentRunning:e.environment_instance?.status===`running`,onConfirm:t=>{m?.(e.branch_id,t),I(!1)},onCancel:()=>I(!1)})]})}),ao=22,oo={height:ao,width:ao,minWidth:ao,padding:0};function so({repo:e,branch:r,sessionCount:i,onOpenBranch:a,onStartEnvironment:o,onStopEnvironment:s,onNukeEnvironment:c,onViewLogs:l,canControlEnvironment:u,connectionDisabled:d=!1,showEnvButtons:f=!0,showNukeEnvironment:p=!0,identityLink:m,compact:h=!1}){let{token:g}=N.useToken(),_=$t(),v=Gn(e),y=v.hasConfig,b=r.environment_instance,x=Ht(b),S=r.app_url,C=u??!0,w=C?void 0:`Requires branch 'all' permission or admin access`,T=b?.status||`stopped`,E=T===`running`,O=T===`starting`,k=T===`stopping`,A=T===`running`||T===`starting`,j=d||!C||!y||!o||O||k||E,M=d||!C||!y||!s||k||!A,P=e=>t=>{t.stopPropagation(),a?.(r.branch_id,e)},F=()=>{a?.(r.branch_id)},I=(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Ye,{style:{fontSize:12}}),!h&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{style:{fontFamily:g.fontFamilyCode,fontSize:g.fontSizeSM},children:e.slug}),(0,$.jsx)(z,{style:{fontSize:10,opacity:.6}})]}),(0,$.jsx)(`span`,{style:{fontFamily:g.fontFamilyCode,fontSize:g.fontSizeSM,maxWidth:h?220:180,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:r.name})]}),ee=()=>{switch(x){case`stopped`:return(0,$.jsx)(Me,{style:{color:g.colorTextDisabled,fontSize:11}});case`starting`:case`stopping`:return(0,$.jsx)(oe,{size:`small`,style:{fontSize:11}});case`healthy`:return(0,$.jsx)(Se,{style:{color:g.colorSuccess,fontSize:11}});case`unhealthy`:return(0,$.jsx)(Pe,{style:{color:g.colorWarning,fontSize:11}});case`running`:return(0,$.jsx)(Se,{style:{color:g.colorInfo,fontSize:11}});case`error`:return(0,$.jsx)(Ne,{style:{color:g.colorError,fontSize:11}});default:return(0,$.jsx)(Me,{style:{color:g.colorTextDisabled,fontSize:11}})}},R=()=>{if(!y)return`Click to configure environment`;let e=b?.last_health_check,t=e?.message?` - ${e.message}`:``;switch(x){case`healthy`:return S?`Healthy - ${S}${t}`:`Healthy${t}`;case`unhealthy`:return S?`Unhealthy - ${S}${t}`:`Unhealthy${t}`;case`running`:return S?`Running - ${S}`:`Running (no health check)`;case`starting`:return`Starting...`;case`stopping`:return`Stopping...`;case`error`:return`Failed to start`;default:return`Stopped`}},B=m?`${e.slug} / ${r.name} · Open session`:h?`${e.slug} / ${r.name} · Open branch settings`:`Open branch settings`,te={display:`inline-flex`,alignItems:`center`,gap:4,padding:h?`0 6px`:`0 8px`,cursor:`pointer`,height:ao,color:`inherit`,textDecoration:`none`},V=m?.startsWith(`/`);return(0,$.jsxs)(Yn,{color:ir.branch,style:{userSelect:`none`,padding:0,overflow:`hidden`,lineHeight:`${ao}px`,display:`inline-flex`,alignItems:`stretch`,cursor:`default`},children:[(0,$.jsx)(n,{title:B,children:m&&V?(0,$.jsx)(dt,{to:m,onClick:e=>e.stopPropagation(),style:te,children:I}):m?(0,$.jsx)(`a`,{href:m,onClick:e=>e.stopPropagation(),style:te,children:I}):(0,$.jsx)(`button`,{type:`button`,onClick:F,style:{display:`inline-flex`,alignItems:`center`,gap:4,padding:h?`0 6px`:`0 8px`,cursor:`pointer`,height:ao,background:`none`,border:`none`,color:`inherit`,font:`inherit`},children:I})}),f&&(0,$.jsx)(`div`,{style:{display:`inline-flex`,alignItems:`center`,gap:2,padding:`0 4px`,height:ao,borderLeft:`1px solid ${g.colorBorderSecondary}`},children:y?(0,$.jsxs)($.Fragment,{children:[E&&S?(0,$.jsx)(n,{title:`Open ${S}`,children:(0,$.jsxs)(`a`,{href:S,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>e.stopPropagation(),style:{display:`inline-flex`,alignItems:`center`,gap:3,color:`inherit`,textDecoration:`none`,padding:`0 2px`},children:[ee(),(0,$.jsx)(`span`,{style:{fontFamily:g.fontFamilyCode,fontSize:11},children:`env`})]})}):(0,$.jsx)(n,{title:R(),children:(0,$.jsxs)(`button`,{type:`button`,onClick:P(`environment`),style:{display:`inline-flex`,alignItems:`center`,gap:3,cursor:`pointer`,padding:`0 2px`,background:`none`,border:`none`,color:`inherit`,font:`inherit`},children:[ee(),(0,$.jsx)(`span`,{style:{fontFamily:g.fontFamilyCode,fontSize:11},children:`env`})]})}),o&&(0,$.jsx)(n,{title:w??(E?`Environment running`:`Start environment`),children:(0,$.jsx)(J,{type:`text`,size:`small`,"aria-label":`Start environment`,icon:(0,$.jsx)(t,{}),onClick:e=>{e.stopPropagation(),j||o(r.branch_id)},disabled:j,style:oo})}),s&&(0,$.jsx)(n,{title:w??(E?`Stop environment`:O?`Cancel startup`:k?`Stopping...`:`Not running`),children:(0,$.jsx)(J,{type:`text`,size:`small`,"aria-label":`Stop environment`,icon:(0,$.jsx)(Me,{}),onClick:e=>{e.stopPropagation(),M||s(r.branch_id)},disabled:M,style:oo})}),l&&v.logs&&(0,$.jsx)(n,{title:w??`View logs`,children:(0,$.jsx)(J,{type:`text`,size:`small`,"aria-label":`View environment logs`,icon:(0,$.jsx)(We,{}),onClick:e=>{e.stopPropagation(),C&&l(r.branch_id)},disabled:!C,style:oo})}),p&&!h&&c&&r.nuke_command&&(0,$.jsx)(n,{title:w??`Nuke environment (destructive)`,children:(0,$.jsx)(J,{type:`text`,size:`small`,danger:!0,"aria-label":`Nuke environment`,icon:(0,$.jsx)(Ie,{}),onClick:e=>{e.stopPropagation(),C&&!d&&_(()=>c(r.branch_id))},disabled:d||!C,style:oo})})]}):(0,$.jsx)(n,{title:`Configure environment`,children:(0,$.jsxs)(`button`,{type:`button`,onClick:P(`environment`),style:{display:`inline-flex`,alignItems:`center`,gap:3,cursor:`pointer`,opacity:.5,padding:`0 2px`,background:`none`,border:`none`,color:`inherit`,font:`inherit`},children:[(0,$.jsx)(U,{style:{fontSize:11}}),(0,$.jsx)(`span`,{style:{fontFamily:g.fontFamilyCode,fontSize:11},children:`env`})]})})}),(0,$.jsxs)(`div`,{style:{display:`inline-flex`,alignItems:`center`,gap:1,padding:`0 3px`,height:ao,borderLeft:`1px solid ${g.colorBorderSecondary}`},children:[(0,$.jsx)(n,{title:`Sessions${i==null?``:` (${i})`}`,children:(0,$.jsx)(J,{type:`text`,size:`small`,"aria-label":`Sessions`,icon:(0,$.jsx)(ge,{}),onClick:P(`sessions`),style:oo})}),(0,$.jsx)(n,{title:`Files`,children:(0,$.jsx)(J,{type:`text`,size:`small`,"aria-label":`Files`,icon:(0,$.jsx)(L,{}),onClick:P(`files`),style:oo})}),(0,$.jsx)(n,{title:`Schedule`,children:(0,$.jsx)(J,{type:`text`,size:`small`,"aria-label":`Schedule`,icon:(0,$.jsx)(qe,{}),onClick:P(`schedule`),style:oo})}),(0,$.jsx)(n,{title:`Edit branch`,children:(0,$.jsx)(J,{type:`text`,size:`small`,"aria-label":`Edit branch`,icon:(0,$.jsx)(D,{}),onClick:e=>{e.stopPropagation(),F()},style:oo})})]})]})}var co=e=>{let t=fr(e);return t===`success`||t==="default"?null:t},lo=({board:e,currentBoardId:t,branchById:i,repoById:a,sessionsByBranch:o,onSessionClick:s,onAfterSessionClick:c})=>{let{token:l}=N.useToken(),[u,d]=(0,Q.useState)(``),[p,m]=Nt(Oa,`recent`),h=(0,Q.useMemo)(()=>{let e=[];for(let n of i.values())n.board_id===t&&e.push(n.branch_id);return e.flatMap(e=>o.get(e)||[])},[o,i,t]),g=u.trim(),_=Fa(g),v=(0,Q.useMemo)(()=>_?Pa(h,g).map(({session:e})=>e):Ra(h,p),[h,_,g,p]);return(0,$.jsxs)(`div`,{style:{height:`100%`,position:`relative`,overflow:`hidden`},children:[(0,$.jsx)(`div`,{style:{padding:`16px 24px`,borderBottom:`1px solid ${l.colorBorder}`},children:(0,$.jsx)(Ya,{value:u,onChange:d,sort:p,onSortChange:m,searching:_})}),(0,$.jsx)(`div`,{style:{padding:`8px 0`},children:v.length===0?_?(0,$.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,alignItems:`center`,padding:`28px 16px`,gap:6},children:[(0,$.jsx)(`div`,{style:{width:36,height:36,borderRadius:`50%`,background:l.colorFillTertiary,display:`flex`,alignItems:`center`,justifyContent:`center`,marginBottom:2},children:(0,$.jsx)(k,{style:{fontSize:16,color:l.colorTextTertiary}})}),(0,$.jsx)(r.Text,{strong:!0,style:{fontSize:13},children:`No results`}),(0,$.jsxs)(r.Text,{type:`secondary`,style:{fontSize:12,textAlign:`center`,lineHeight:1.5,maxWidth:200},children:[`Nothing matched `,(0,$.jsx)(r.Text,{code:!0,children:g})]})]}):(0,$.jsx)(r.Text,{type:`secondary`,style:{display:`block`,textAlign:`center`,padding:`24px 0`,fontSize:12},children:`No sessions in this board`}):v.map(e=>{let t=e.branch_id?i.get(e.branch_id):void 0,o=t?a.get(t.repo_id):void 0,u=Z(e,{includeAgentFallback:!0}),d=_&&e.title&&e.description?La(e.description,g):null,p=_&&Ia(e,g);return(0,$.jsxs)(`div`,{style:{cursor:`pointer`,padding:`10px 24px`,transition:`background 0.2s`},onMouseEnter:e=>{e.currentTarget.style.background=l.colorBgTextHover},onMouseLeave:e=>{e.currentTarget.style.background=`transparent`},onClick:()=>{s(e.session_id),c?.()},children:[(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`flex-start`,gap:8,minWidth:0},children:[(0,$.jsx)(`span`,{style:{flexShrink:0,display:`inline-flex`},children:(()=>{let t=co(e.status),n=(0,$.jsx)(or,{tool:e.agentic_tool,size:18});return t?(0,$.jsx)(f,{dot:!0,status:t,offset:[-3,3],children:n}):n})()}),(0,$.jsx)(r.Text,{ellipsis:{tooltip:u},style:{flex:1,minWidth:0},children:(0,$.jsx)(ln,{text:u,query:g})}),(0,$.jsx)(Ka,{session:e})]}),p&&(0,$.jsxs)(r.Text,{type:`secondary`,style:{display:`block`,fontSize:11,marginTop:3,marginLeft:26},children:[`Agent: `,(0,$.jsx)(ln,{text:e.agentic_tool,query:g})]}),d&&d!==u&&(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:3,marginLeft:26,lineHeight:1.4,fontStyle:`italic`},children:(0,$.jsx)(ln,{text:d,query:g})}),(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:8,marginTop:6,marginLeft:26,minWidth:0},children:[(0,$.jsx)(`div`,{style:{minWidth:0,overflow:`hidden`},children:t?(0,$.jsx)(Nn,{branch:t.name,compact:!0,title:o?`${o.slug} / ${t.name}`:t.name}):(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:12},children:`No branch`})}),(0,$.jsx)(n,{title:hr(e.last_updated),children:(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:11,whiteSpace:`nowrap`,flexShrink:0},children:_r(e.last_updated)})})]})]},e.session_id)})}),e&&(0,$.jsx)(`div`,{style:{position:`absolute`,bottom:0,left:0,right:0,padding:`16px 24px`,borderTop:`1px solid ${l.colorBorder}`,background:l.colorBgContainer},children:(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:12},children:_?(0,$.jsxs)($.Fragment,{children:[v.length,` of `,h.length,` · `,(0,$.jsx)(Xa,{}),e.description&&` • ${e.description}`]}):`${h.length} session${h.length===1?``:`s`}${e.description?` • ${e.description}`:``}`})})]})},uo=({board:e,activeTab:t,onTabChange:n,primaryAssistantBranch:i,primaryAssistantRepo:a,primaryAssistantInaccessible:o,sessionsByBranch:s,branchById:c,repoById:l,userById:u,currentUserId:f,selectedSessionId:p,onSessionClick:m,onCreateSession:h,onForkSession:g,onSpawnSession:_,onOpenSettings:v,onOpenSessionSettings:y,comments:b=[],boardObjects:S,onSendComment:C,onReplyComment:T,onResolveComment:D,onToggleReaction:O,onDeleteComment:k,hoveredCommentId:A,selectedCommentId:j,client:M})=>{let{token:P}=N.useToken(),{message:F}=w.useApp(),I=o?`all-sessions`:`assistant`,[L,ee]=(0,Q.useState)(I),R=t!==void 0,z=t??L,B=e=>{ee(e),n?.(e)};(0,Q.useEffect)(()=>{ee(I),R||n?.(I)},[I,e?.board_id,R,n]);let te=(0,Q.useMemo)(()=>Array.from(c.values()).filter(e=>bt(e)&&!e.archived).sort((e,t)=>{let n=ht(e),r=ht(t);return(n?.displayName??e.name).localeCompare(r?.displayName??t.name)}).map(e=>{let t=ht(e),n=l.get(e.repo_id),r=t?.displayName??e.name;return{value:e.branch_id,label:r,searchText:`${r} ${e.name} ${n?.slug??``}`,branch:e,repo:n}}),[c,l]),[V,ne]=(0,Q.useState)(),[re,U]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{V&&te.some(e=>e.value===V)||ne(te[0]?.value)},[te,V]);let ie=async()=>{if(!e||!M||!V)return;let t=c.get(V);if(t){U(!0);try{t.board_id!==e.board_id&&await M.service(`branches`).patch(V,{board_id:e.board_id}),await M.service(`boards`).setPrimaryAssistant({boardId:e.board_id,branchId:V}),F.success(`Assistant assigned`)}catch(e){F.error(`Failed to assign assistant: ${e instanceof Error?e.message:String(e)}`)}finally{U(!1)}}},ae=(0,Q.useMemo)(()=>i&&s.get(i.branch_id)||[],[i,s]),se=(()=>{if(i&&a){let e=ht(i),t=i.notes?.trim(),n=i.filesystem_status===`creating`;return(0,$.jsxs)(`div`,{style:{padding:16},children:[(0,$.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:10,paddingBottom:12,marginBottom:4,borderBottom:`1px solid ${P.colorBorderSecondary}`},children:[(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10,minWidth:0},children:[(0,$.jsx)(`div`,{style:{width:36,height:36,display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0},children:n?(0,$.jsx)(oe,{}):e?.emoji?(0,$.jsx)(`span`,{style:{fontSize:30},children:e.emoji}):(0,$.jsx)(d,{style:{fontSize:30,color:P.colorInfo}})}),(0,$.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,minWidth:0},children:[(0,$.jsx)(r.Title,{level:4,style:{margin:0,fontWeight:600},ellipsis:{tooltip:e?.displayName??i.name},children:e?.displayName??i.name}),(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:12},children:`Primary assistant`})]})]}),(0,$.jsxs)(K,{size:4,wrap:!0,children:[(0,$.jsx)(so,{repo:a,branch:i,sessionCount:ae.length,onOpenBranch:v,showEnvButtons:!1,compact:!0}),i.created_by&&(0,$.jsx)(_n,{createdBy:i.created_by,currentUserId:f,userById:u,prefix:`Created by`}),i.issue_url&&(0,$.jsx)(Tn,{issueUrl:i.issue_url,currentRepo:a}),i.pull_request_url&&(0,$.jsx)(kn,{prUrl:i.pull_request_url,currentRepo:a})]}),t&&(0,$.jsx)(`div`,{className:`markdown-compact`,style:{color:P.colorTextSecondary},children:(0,$.jsx)(on,{content:t,compact:!0,showControls:!1})})]}),(0,$.jsx)(to,{branch:i,sessions:ae,userById:u,currentUserId:f,selectedSessionId:p,onSessionClick:m,onCreateSession:h,onForkSession:g,onSpawnSession:_,onOpenSessionSettings:y,mode:`panel`,client:M})]})}return o?(0,$.jsx)(`div`,{style:{padding:16},children:(0,$.jsx)(H,{type:`info`,showIcon:!0,message:`Assistant unavailable`,description:`This board has a primary assistant, but you do not have access to that assistant branch.`})}):(0,$.jsxs)(`div`,{style:{padding:16},children:[(0,$.jsx)(x,{image:x.PRESENTED_IMAGE_SIMPLE,description:(0,$.jsx)(r.Text,{type:`secondary`,children:`This board does not have a primary assistant yet.`}),style:{padding:`24px 0 16px`}}),(0,$.jsxs)(K,{orientation:`vertical`,size:12,style:{width:`100%`},children:[(0,$.jsx)(r.Text,{strong:!0,children:`Assign an existing assistant`}),(0,$.jsx)(E,{showSearch:!0,placeholder:`Select an assistant`,value:V,onChange:ne,options:te,optionFilterProp:`searchText`,disabled:re||te.length===0,style:{width:`100%`}}),te.length===0&&(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:12},children:`No existing assistants are available to assign.`}),(0,$.jsx)(J,{type:`primary`,onClick:ie,loading:re,disabled:!V||!e||!M,children:`Assign`})]})]})})();return(0,$.jsx)(`div`,{style:{height:`100%`,background:P.colorBgContainer,borderRight:`1px solid ${P.colorBorderSecondary}`,overflow:`hidden`},children:(0,$.jsx)(Qe,{activeKey:z,onChange:e=>B(e),items:[{key:`assistant`,label:`Assistant`,children:(0,$.jsx)(`div`,{style:{height:`calc(100vh - 112px)`,overflow:`auto`},children:se})},{key:`all-sessions`,label:`All sessions`,children:e?(0,$.jsx)(`div`,{style:{height:`calc(100vh - 112px)`,overflow:`auto`},children:(0,$.jsx)(lo,{board:e,currentBoardId:e.board_id,branchById:c,repoById:l,sessionsByBranch:s,onSessionClick:m})}):(0,$.jsx)(x,{image:x.PRESENTED_IMAGE_SIMPLE,description:`No board selected`})},{key:`comments`,label:`Comments`,children:e?(0,$.jsx)(`div`,{style:{height:`calc(100vh - 112px)`},children:(0,$.jsx)(Ar,{client:M,boardId:e.board_id,comments:b,userById:u,currentUserId:f||`unknown`,boardObjects:S,branchById:c,onSendComment:e=>C?.(e),onReplyComment:T,onResolveComment:D,onToggleReaction:O,onDeleteComment:k,hoveredCommentId:A,selectedCommentId:j})}):(0,$.jsx)(x,{image:x.PRESENTED_IMAGE_SIMPLE,description:`No board selected`})}],style:{height:`100%`},tabBarStyle:{margin:0,padding:`0 12px`}})})},fo=({repoById:e,onValidityChange:t,formRef:n,onCreateRepo:i,availableAgents:a,mcpServerById:o=new Map,currentUser:s,client:c})=>{let l=Array.from(e.values()),{frameworkRepo:u,isCloning:d}=ur(l,i),[f,p]=(0,Q.useState)(`claude-code`),{form:m,isFormValid:h,customRepoSelected:g,setCustomRepoSelected:_,validateForm:v,handleDisplayNameChange:y}=gr(u);return(0,Q.useEffect)(()=>{!a.some(e=>e.id===f)&&a[0]?.id&&p(a[0].id)},[a,f]),(0,Q.useEffect)(()=>{let e=s?.default_agentic_config?.[f];m.setFieldsValue({...un(f,e),...f!==`codex`&&{codexSandboxMode:void 0,codexApprovalPolicy:void 0,codexNetworkAccess:void 0}})},[f,s,m]),(0,Q.useEffect)(()=>{t(h)},[h,t]),n.current=async()=>{try{let e=await m.validateFields(),t=s?.default_agentic_config?.[f],n=e.permissionMode??t?.permissionMode??ut(f),r={displayName:e.displayName.trim(),description:e.description||void 0,emoji:e.emoji||void 0,repoId:e.repoId||u?.repo_id,branchName:e.name||`private-${vn(e.displayName)}`,sourceBranch:e.sourceBranch||`main`,agent:f,modelConfig:e.modelConfig??t?.modelConfig,effort:e.effort??t?.modelConfig?.effort,mcpServerIds:e.mcpServerIds??t?.mcpServerIds,permissionMode:n};if(f===`codex`){let i=tt(n);r.codexSandboxMode=e.codexSandboxMode??t?.codexSandboxMode??i.sandboxMode,r.codexApprovalPolicy=e.codexApprovalPolicy??t?.codexApprovalPolicy??i.approvalPolicy,r.codexNetworkAccess=e.codexNetworkAccess??t?.codexNetworkAccess??i.networkAccess}return r}catch{return null}},(0,$.jsx)(q,{form:m,layout:`vertical`,onFieldsChange:v,initialValues:{sourceBranch:`main`},children:(0,$.jsx)(In,{form:m,repos:l,frameworkRepo:u,isCloning:d,onDisplayNameChange:y,customRepoSelected:g,onCustomRepoChange:_,extraBeforeAdvanced:(0,$.jsx)(I,{ghost:!0,size:`small`,defaultActiveKey:[`first-session`],destroyOnHidden:!1,expandIcon:({isActive:e})=>(0,$.jsx)(M,{rotate:e?180:0}),items:[{key:`first-session`,label:(0,$.jsx)(r.Text,{strong:!0,children:`First Session Configuration`}),children:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(q.Item,{label:`Agentic Tool`,required:!0,children:(0,$.jsx)(Mn,{agents:a,selectedAgentId:f,onSelect:e=>p(e),variant:`select`,showComparisonLink:!0})}),(0,$.jsx)(I,{ghost:!0,size:`small`,destroyOnHidden:!1,expandIcon:({isActive:e})=>(0,$.jsx)(M,{rotate:e?180:0}),items:[{key:`session-config`,label:(0,$.jsx)(r.Text,{type:`secondary`,children:`Session Configuration`}),children:(0,$.jsx)(zt,{agenticTool:f,mcpServerById:o,showHelpText:!1,client:c})}]})]})}],style:{marginBottom:8}})})})},po=({onValidityChange:e,formRef:t})=>{let[n]=q.useForm(),r=(0,Q.useCallback)(()=>{setTimeout(()=>{e(!!n.getFieldsValue().name?.trim())},0)},[n,e]);return t.current=async()=>{try{return await n.validateFields(),Rn(n)}catch{return null}},(0,$.jsx)(q,{form:n,layout:`vertical`,preserve:!0,onValuesChange:r,children:(0,$.jsx)(Kn,{form:n,autoFocus:!0})})},mo=({repoById:e,boardById:t=new Map,currentBoardId:n,defaultPosition:r,onValidityChange:i,formRef:a,branchStorageConfig:o})=>{let[s]=q.useForm(),[c,l]=(0,Q.useState)(null),u=c?e.get(c):void 0,d=(0,Q.useCallback)(()=>{setTimeout(()=>{let e=s.getFieldsValue();i(!!(e.repoId&&e.sourceBranch&&e.name&&e.boardId))},0)},[s,i]),f=(0,Q.useRef)(!1);return(0,Q.useEffect)(()=>{if(f.current||e.size===0)return;let t=localStorage.getItem(`agor-last-repo-id`);if(t&&e.has(t))f.current=!0,s.setFieldsValue({repoId:t,sourceBranch:e.get(t)?.default_branch,...n?{boardId:n}:{}}),l(t),d();else if(e.size>0){f.current=!0;let t=It(e)[0];s.setFieldsValue({repoId:t.repo_id,sourceBranch:t.default_branch,...n?{boardId:n}:{}}),l(t.repo_id),d()}},[e,n,s,d]),a.current=async()=>{try{let e=await s.validateFields(),t=e.refType||`branch`,n=An(e.storage_mode,o),i=n===`clone`&&typeof e.clone_depth==`number`&&e.clone_depth>0?e.clone_depth:void 0,a={repoId:e.repoId,name:e.name,ref:e.name,refType:t,createBranch:!0,sourceBranch:e.sourceBranch||u?.default_branch||`main`,pullLatest:!0,issue_url:e.issue_url,pull_request_url:e.pull_request_url,board_id:e.boardId,position:r,storage_mode:n,...i===void 0?{}:{clone_depth:i}};return e.repoId&&localStorage.setItem(`agor-last-repo-id`,e.repoId),a}catch{return null}},(0,$.jsx)(q,{form:s,layout:`vertical`,onValuesChange:d,children:(0,$.jsx)(cr,{repoById:e,boardById:t,selectedRepoId:c,onRepoChange:t=>{l(t);let n=e.get(t);n?.default_branch&&s.setFieldValue(`sourceBranch`,n.default_branch)},defaultBranch:u?.default_branch||`main`,showUrlFields:!0,showBoardSelector:!0,requireBoard:!0,onFormChange:d,branchStorageConfig:o})})},ho=({onValidityChange:e,formRef:t})=>{let[n]=q.useForm(),[r,i]=(0,Q.useState)(`remote`),a=(0,Q.useCallback)(()=>{setTimeout(()=>{let t=n.getFieldsValue();e(r===`local`?!!t.path?.trim():!!(t.url?.trim()&&t.slug?.trim()))},0)},[n,e,r]);return t.current=async()=>{try{let e=await n.validateFields();return r===`local`?{mode:`local`,local:{path:e.path,slug:e.slug||void 0}}:{mode:`remote`,remote:{url:e.url,slug:e.slug,default_branch:e.default_branch||`main`}}}catch{return null}},(0,$.jsx)(q,{form:n,layout:`vertical`,onValuesChange:a,initialValues:{default_branch:`main`},children:(0,$.jsx)(Zn,{form:n,mode:`create`,repoMode:r,onRepoModeChange:t=>{let r=t.target.value;i(r),n.resetFields(),n.setFieldsValue({default_branch:r===`remote`?`main`:void 0}),e(!1)}})})},go={branch:!1,assistant:!1,board:!1,repository:!1},_o={branch:(0,$.jsxs)($.Fragment,{children:[`A branch (built on`,` `,(0,$.jsx)(`a`,{href:`https://git-scm.com/docs/git-branch`,target:`_blank`,rel:`noopener noreferrer`,children:`git branches`}),`) is essentially a place in the filesystem representing an isolated development branch. This is where one or more coding sessions take place. In Agor, they're generally ephemeral and follow the lifecycle of a given feature.`]}),assistant:`Assistants are long-lived agents with an identity, purpose, and goals. Think of them like employees. They have memory, can build their own skills, coordinate multiple coding agents, typically operate on their own Agor board, and can act proactively.`,board:`Boards are spatial canvases for organizing work. They contain branches, zones, cards, and other visual elements. Use boards to create workspaces for teams, projects, or assistants.`,repository:`Repositories connect your code to Agor. They can be cloned from GitHub or registered from a local path. Once connected, you can create branches for coding tasks.`},vo={branch:`Create Branch`,assistant:`Create Assistant`,board:`Create Board`,repository:`Add Repository`};function yo(e){Promise.resolve(e).catch(()=>{})}var bo=({open:e,onClose:t,repoById:n,boardById:r,currentBoardId:i,defaultPosition:a,availableAgents:o,mcpServerById:c,currentUser:l,client:u,defaultTab:f=`assistant`,onCreateBranch:p,onCreateBoard:m,onCreateRepo:h,onCreateLocalRepo:g,onCreateAssistant:_,branchStorageConfig:v})=>{let[y,b]=(0,Q.useState)(f),[x,S]=(0,Q.useState)(go),C=x[y],[w,T]=(0,Q.useState)(!1),[E,D]=(0,Q.useState)(null),[O,k]=(0,Q.useState)(null),A=(0,Q.useRef)(null),j=(0,Q.useRef)(null),M=(0,Q.useRef)(null),N=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{e||(S(go),b(f),T(!1),D(null),k(null))},[e,f]);let P=(0,Q.useCallback)((e,t)=>{S(n=>n[e]===t?n:{...n,[e]:t})},[]),F=(0,Q.useCallback)(e=>P(`branch`,e),[P]),I=(0,Q.useCallback)(e=>P(`assistant`,e),[P]),ee=(0,Q.useCallback)(e=>P(`board`,e),[P]),R=(0,Q.useCallback)(e=>P(`repository`,e),[P]),z=e=>{b(e),k(null),D(null)},B=async()=>{T(!0),k(null),D(null);try{switch(y){case`branch`:{let e=await A.current?.();e&&(yo(p(e)),t());break}case`board`:{let e=await j.current?.();e&&(yo(m(e)),t());break}case`repository`:{let e=await M.current?.();e&&(e.mode===`local`&&e.local?yo(g(e.local)):e.remote&&yo(h(e.remote)),t());break}case`assistant`:{let e=await N.current?.();e&&(D(`Creating assistant…`),await _(e,{onStatusChange:D}),t());break}}}catch(e){k(e instanceof Error?e.message:String(e))}finally{T(!1)}},te=()=>{w||t()},V=[{key:`assistant`,label:(0,$.jsxs)(`span`,{children:[(0,$.jsx)(d,{style:{marginRight:8}}),`Assistant`]}),children:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(H,{type:`info`,showIcon:!0,description:_o.assistant,style:{marginBottom:16}}),(0,$.jsx)(fo,{repoById:n,onValidityChange:I,formRef:N,onCreateRepo:h,availableAgents:o,mcpServerById:c,currentUser:l,client:u})]})},{key:`branch`,label:(0,$.jsxs)(`span`,{children:[(0,$.jsx)(Ye,{style:{marginRight:8}}),`Branch`]}),children:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(H,{type:`info`,showIcon:!0,description:_o.branch,style:{marginBottom:16}}),(0,$.jsx)(mo,{repoById:n,boardById:r,currentBoardId:i,defaultPosition:a,onValidityChange:F,formRef:A,branchStorageConfig:v})]})},{key:`board`,label:(0,$.jsxs)(`span`,{children:[(0,$.jsx)(s,{style:{marginRight:8}}),`Board`]}),children:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(H,{type:`info`,showIcon:!0,description:_o.board,style:{marginBottom:16}}),(0,$.jsx)(po,{onValidityChange:ee,formRef:j})]})},{key:`repository`,label:(0,$.jsxs)(`span`,{children:[(0,$.jsx)(L,{style:{marginRight:8}}),`Repository`]}),children:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(H,{type:`info`,showIcon:!0,description:_o.repository,style:{marginBottom:16}}),(0,$.jsx)(ho,{onValidityChange:R,formRef:M})]})}];return(0,$.jsxs)(He,{title:`Create New...`,open:e,onCancel:te,destroyOnHidden:!0,width:720,closable:!w,maskClosable:!w,keyboard:!w,footer:[(0,$.jsx)(J,{onClick:te,disabled:w,children:`Cancel`},`cancel`),(0,$.jsx)(J,{type:`primary`,onClick:B,disabled:!C,loading:w,children:w&&E?E:vo[y]},`create`)],styles:{body:{padding:`8px 0 0`}},children:[(0,$.jsx)(Qe,{activeKey:y,onChange:z,items:V,style:{minHeight:360}}),O&&(0,$.jsx)(H,{type:`error`,showIcon:!0,message:`Couldn't finish creating this item`,description:O,style:{marginTop:16}})]})},{Text:xo}=r,So=Q.memo(({event:e,branchById:t,sessionById:n,sessionsByBranch:r,repos:i,userById:a,currentUserId:o,selectedSessionId:s,branchActions:c,client:l})=>{let{token:u}=N.useToken(),d=()=>{switch(e.type){case`cursor`:return(0,$.jsx)(p,{style:{color:u.colorInfo}});case`message`:return(0,$.jsx)(b,{style:{color:u.colorSuccess}});case`tool`:return(0,$.jsx)(Ae,{style:{color:u.colorPrimary}});case`crud`:return(0,$.jsx)(Ke,{style:{color:u.colorWarning}});case`connection`:return(0,$.jsx)(Xe,{style:{color:u.colorError}});default:return(0,$.jsx)(Ae,{style:{color:u.colorTextSecondary}})}},f=()=>{switch(e.type){case`cursor`:return`blue`;case`message`:return`green`;case`tool`:return`purple`;case`crud`:return`orange`;case`connection`:return`red`;default:return`default`}},m=e=>e.toLocaleTimeString(`en-US`,{hour12:!1,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,fractionalSecondDigits:3}),h=e=>{if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}},g=e=>{let t=[`created`,`patched`,`updated`,`removed`].find(t=>e.includes(t));return t?{entity:e.replace(t,``).trim(),action:t}:{entity:e}},_=e.data&&typeof e.data==`object`&&`session_id`in e.data?e.data.session_id:void 0,v=e.data&&typeof e.data==`object`&&`branch_id`in e.data?e.data.branch_id:void 0,y=e.data&&typeof e.data==`object`&&`created_by`in e.data?e.data.created_by:void 0,x=_?n.get(_):void 0,S=v||x?.branch_id,C=S?t.get(S):void 0,w=C?i.find(e=>e.repo_id===C.repo_id):void 0,T=C&&r.get(C.branch_id)||[],E=y?a.get(y):void 0,{entity:D,action:O}=g(e.eventName),k=e.data?(0,$.jsx)(`div`,{style:{maxWidth:400,maxHeight:400,overflow:`auto`},children:(0,$.jsx)(`pre`,{style:{margin:0,padding:12,background:u.colorBgLayout,borderRadius:u.borderRadiusSM,fontSize:11,wordBreak:`break-all`,whiteSpace:`pre-wrap`},children:h(e.data)})}):(0,$.jsx)(xo,{type:`secondary`,children:`No data`});return(0,$.jsxs)(`div`,{style:{padding:`6px 12px`,borderLeft:`3px solid ${u.colorPrimary}`,borderBottom:`1px solid ${u.colorBorderSecondary}`,background:u.colorBgContainer,display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:4,fontSize:12},children:[d(),(0,$.jsx)(xo,{code:!0,style:{fontSize:11,color:u.colorTextSecondary,minWidth:85},children:m(e.timestamp)}),(0,$.jsx)(Yn,{color:f(),style:{margin:0,fontSize:11,minWidth:70,textAlign:`center`},children:e.type}),D&&(0,$.jsx)(Yn,{style:{margin:0,fontSize:11,backgroundColor:u.colorBgContainer,borderColor:u.colorBorder,color:u.colorText},children:D}),O&&(0,$.jsx)(Yn,{color:O===`created`?`green`:O===`removed`?`red`:O===`patched`||O===`updated`?`orange`:`default`,style:{margin:0,fontSize:11},children:O}),!D&&!O&&(0,$.jsx)(xo,{strong:!0,style:{fontSize:12,flex:1,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e.eventName}),(0,$.jsx)(`div`,{style:{flex:1}}),_&&(0,$.jsx)(dr,{id:_,icon:Be,color:ir.session,copyLabel:`Session ID`,metadataCard:x?(0,$.jsx)(qt,{session:x,branch:C,repo:w,userById:a,currentUserId:o,compact:!0}):void 0}),S&&C&&w&&(0,$.jsx)(dr,{id:S,label:C.name,icon:L,color:ir.branch,copyLabel:`Branch ID`,metadataCard:(0,$.jsx)(io,{branch:C,repo:w,sessions:T,userById:a,currentUserId:o,selectedSessionId:s,inPopover:!0,client:l,...c})}),E&&(0,$.jsx)(Fn,{user:E,compact:!0,style:{margin:0,fontSize:11}}),e.data?(0,$.jsx)(Oe,{content:k,title:`Event Data`,trigger:`click`,placement:`left`,children:(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(B,{}),style:{padding:`0 4px`}})}):null]})}),{Text:Co,Title:wo}=r,To=({collapsed:e,onToggleCollapse:n,events:r,onClear:i,width:a=700,currentUserId:o,selectedSessionId:s,branchActions:c,currentBoard:l,client:u})=>{let{token:d}=N.useToken(),{branchById:p,sessionById:m,sessionsByBranch:h}=_i(),{repoById:_}=mi(),{userById:v}=hi(),y=(0,Q.useMemo)(()=>Array.from(_.values()),[_]),{onFork:b,onSubsession:S,onOpenTerminal:C,onStartEnvironment:w,onStopEnvironment:T,onViewLogs:D}=ii(),k=(0,Q.useMemo)(()=>({...c,onForkSession:b,onSpawnSession:S,onOpenTerminal:C,onStartEnvironment:w,onStopEnvironment:T,onViewLogs:D}),[c,b,S,C,w,T,D]),[j,M]=(0,Q.useState)(!1),[P,F]=(0,Q.useState)(!1),[I,L]=(0,Q.useState)(!1),[ee,R]=(0,Q.useState)(!1),[z,B]=(0,Q.useState)(new Set),[te,V]=(0,Q.useState)(new Set),[ne,re]=(0,Q.useState)([]),H=()=>{ee||re(r),R(!ee)},U=ee?ne:r,ie=(0,Q.useMemo)(()=>U.filter(e=>{if(!j&&e.type===`cursor`||!P&&e.type===`message`||!I&&e.eventName.includes(`terminals`)||z.size>0&&!z.has(e.type))return!1;if(te.size>0&&e.type===`crud`){let t=[`created`,`patched`,`updated`,`removed`].find(t=>e.eventName.includes(t));if(!t||!te.has(t))return!1}return!0}),[U,j,P,I,z,te]),ae=U.length,oe=ie.length,se=ee?r.length-ne.length:0;return e?null:(0,$.jsxs)(`div`,{style:{width:`100%`,height:`100%`,backgroundColor:d.colorBgContainer,borderLeft:`1px solid ${d.colorBorder}`,display:`flex`,flexDirection:`column`},children:[(0,$.jsxs)(`div`,{style:{padding:12,borderBottom:`1px solid ${d.colorBorder}`,display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,$.jsxs)(K,{children:[(0,$.jsx)(Xe,{}),(0,$.jsx)(wo,{level:5,style:{margin:0},children:`Live Event Stream`}),(0,$.jsx)(Yn,{color:`blue`,style:{fontSize:10,marginLeft:4},children:`BETA`}),l&&(0,$.jsx)(Yn,{icon:l.icon?(0,$.jsx)(`span`,{children:l.icon}):void 0,style:{fontSize:11,marginLeft:4},children:l.name})]}),n&&(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(g,{}),onClick:n,danger:!0})]}),(0,$.jsx)(`div`,{style:{padding:`12px 12px 8px`,borderBottom:`1px solid ${d.colorBorder}`,backgroundColor:d.colorBgContainer},children:(0,$.jsxs)(K,{size:`small`,children:[(0,$.jsx)(J,{icon:ee?(0,$.jsx)(t,{}):(0,$.jsx)(O,{}),onClick:H,type:ee?`primary`:`default`,size:`small`,children:ee?`Resume`:`Pause`}),(0,$.jsx)(J,{icon:(0,$.jsx)(A,{}),onClick:i,disabled:ae===0,type:`text`,size:`small`,danger:!0,children:`Clear`})]})}),(0,$.jsxs)(`div`,{style:{padding:12,borderBottom:`1px solid ${d.colorBorder}`,backgroundColor:d.colorBgContainer},children:[(0,$.jsxs)(`div`,{style:{marginBottom:12,display:`flex`,alignItems:`center`,gap:4},children:[(0,$.jsx)(Co,{type:`secondary`,style:{fontSize:12},children:`Showing`}),(0,$.jsx)(f,{count:oe,showZero:!0,style:{backgroundColor:d.colorPrimaryBgHover,color:d.colorText}}),(0,$.jsx)(Co,{type:`secondary`,style:{fontSize:12},children:`out of`}),(0,$.jsx)(f,{count:ae,showZero:!0,style:{backgroundColor:d.colorPrimaryBgHover,color:d.colorText}}),(0,$.jsx)(Co,{type:`secondary`,style:{fontSize:12},children:`events`}),ee&&se>0&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Co,{type:`secondary`,style:{fontSize:12,marginLeft:8},children:`•`}),(0,$.jsx)(f,{count:se,style:{backgroundColor:d.colorWarningBg,color:d.colorWarning}}),(0,$.jsx)(Co,{type:`warning`,style:{fontSize:11},children:`new while paused`})]})]}),(0,$.jsx)(Co,{type:`secondary`,style:{display:`block`,marginBottom:8,fontSize:12},children:`Quick Filters:`}),(0,$.jsxs)(K,{wrap:!0,size:`middle`,style:{width:`100%`},children:[(0,$.jsx)(Y,{checked:j,onChange:e=>M(e.target.checked),children:(0,$.jsx)(Co,{style:{fontSize:12},children:`Cursor movement`})}),(0,$.jsx)(Y,{checked:P,onChange:e=>F(e.target.checked),children:(0,$.jsx)(Co,{style:{fontSize:12},children:`Message streams`})}),(0,$.jsx)(Y,{checked:I,onChange:e=>L(e.target.checked),children:(0,$.jsx)(Co,{style:{fontSize:12},children:`Terminal data`})})]}),(0,$.jsxs)(K,{orientation:`horizontal`,size:`small`,style:{width:`100%`,marginTop:12},wrap:!0,children:[(0,$.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,flex:1,minWidth:200},children:[(0,$.jsx)(Co,{type:`secondary`,style:{marginBottom:4,fontSize:11},children:`Event Types:`}),(0,$.jsx)(E,{mode:`multiple`,placeholder:`Filter by type`,value:Array.from(z),onChange:e=>B(new Set(e)),style:{width:`100%`},size:`small`,allowClear:!0,maxTagCount:`responsive`,children:[`cursor`,`message`,`tool`,`crud`,`connection`,`other`].map(e=>(0,$.jsx)(E.Option,{value:e,children:e},e))})]}),(0,$.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,flex:1,minWidth:200},children:[(0,$.jsx)(Co,{type:`secondary`,style:{marginBottom:4,fontSize:11},children:`CRUD Operations:`}),(0,$.jsx)(E,{mode:`multiple`,placeholder:`Filter by operation`,value:Array.from(te),onChange:e=>V(new Set(e)),style:{width:`100%`},size:`small`,allowClear:!0,maxTagCount:`responsive`,children:[`created`,`patched`,`updated`,`removed`].map(e=>(0,$.jsx)(E.Option,{value:e,children:e},e))})]})]})]}),(0,$.jsx)(`div`,{style:{flex:1,overflow:`auto`},children:ie.length===0?(0,$.jsx)(x,{description:ae===0?`No events captured yet`:`No events match current filters`,style:{marginTop:60}}):(0,$.jsx)(`div`,{style:{border:`1px solid ${d.colorBorderSecondary}`,borderRadius:d.borderRadius,overflow:`hidden`,margin:12},children:ie.map(e=>(0,$.jsx)(So,{event:e,branchById:p,sessionById:m,sessionsByBranch:h,repos:y,userById:v,currentUserId:o,selectedSessionId:s,branchActions:k,client:u},e.id))})})]})},{Title:Eo}=r,Do=({title:e,icon:t,info:n,extra:r})=>{let{token:i}=N.useToken();return(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:12,marginBottom:12},children:[(0,$.jsxs)(K,{size:8,children:[t,(0,$.jsx)(Eo,{level:4,style:{margin:0},children:e}),n&&(0,$.jsx)(Oe,{content:(0,$.jsx)(`div`,{style:{maxWidth:320},children:n}),trigger:`hover`,placement:`rightTop`,children:(0,$.jsx)(B,{style:{color:i.colorTextTertiary,cursor:`help`}})})]}),r]})},Oo=(e,t)=>{if(e.startsWith(`#`)){let n=e.slice(1),r=n.length===3?n.split(``).map(e=>`${e}${e}`).join(``):n;if(r.length===6){let e=Number.parseInt(r,16);return`rgba(${e>>16&255}, ${e>>8&255}, ${e&255}, ${t})`}}let n=e.match(/^rgba?\(([^)]+)\)$/);if(n){let[e,r,i]=n[1].split(`,`).map(e=>e.trim()).slice(0,3);return`rgba(${e}, ${r}, ${i}, ${t})`}return e},ko=(e,t=.5)=>({background:Oo(e.colorBgContainer,t),backgroundColor:Oo(e.colorBgContainer,t),backdropFilter:`blur(12px)`,WebkitBackdropFilter:`blur(12px)`}),{Text:Ao}=r,jo=100,Mo=({icon:e,message:t,time:n})=>{let{token:r}=N.useToken();return(0,$.jsx)(S.Item,{style:{padding:`10px 0`},children:(0,$.jsxs)(K,{align:`start`,children:[(0,$.jsx)(j,{size:`small`,style:{background:r.colorFillSecondary,color:r.colorText},children:e}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`div`,{children:t}),n&&(0,$.jsx)(Ao,{type:`secondary`,style:{fontSize:12},children:_r(n)})]})]})})},No=({branchById:e,boardById:t,sessionById:r,userById:i,onBoardClick:a,onBranchClick:o,onSessionClick:s})=>{let{token:c}=N.useToken(),l=ko(c),[u,f]=(0,Q.useState)(`all`),p=(0,Q.useMemo)(()=>({cursor:`pointer`,marginInlineEnd:0}),[]),m=(0,Q.useCallback)((e,n)=>{let r=e.board_id?t.get(e.board_id):void 0,s=i.get(e.created_by),c=ht(e),l=c?.displayName??e.name;return(0,$.jsxs)(K,{size:4,wrap:!0,children:[s?(0,$.jsx)(Fn,{user:s,compact:!0}):(0,$.jsx)(Ao,{strong:!0,children:`Someone`}),(0,$.jsx)(Ao,{type:`secondary`,children:`created`}),n?(0,$.jsx)(rn,{name:l,emoji:c?.emoji,compact:!0,title:e.name,onClick:()=>o(e.branch_id),style:p}):(0,$.jsx)(Nn,{branch:l,compact:!0,title:e.name,onClick:()=>o(e.branch_id)}),r&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Ao,{type:`secondary`,children:`on`}),(0,$.jsx)(At,{board:r,compact:!0,onClick:()=>a(r.board_id),style:p})]})]})},[t,p,a,o,i]),h=(0,Q.useCallback)(n=>{let r=e.get(n.branch_id),c=r?.board_id?t.get(r.board_id):void 0,l=i.get(n.created_by),u=Z(n,{includeAgentFallback:!0,includeIdFallback:!0}),d=new Date(n.created_at).getTime(),f=new Date(n.last_updated).getTime(),m=Math.abs(f-d)<1e3?`started`:`updated`;return(0,$.jsxs)(K,{size:4,wrap:!0,children:[l?(0,$.jsx)(Fn,{user:l,compact:!0}):(0,$.jsx)(Ao,{strong:!0,children:`Someone`}),(0,$.jsx)(Ao,{type:`secondary`,children:m}),(0,$.jsx)(Oe,{trigger:`hover`,title:(0,$.jsx)(Ao,{style:{maxWidth:320,display:`block`},children:u}),content:(0,$.jsxs)(Ao,{type:`secondary`,style:{fontSize:12},children:[n.agentic_tool,` · `,n.status.replaceAll(`_`,` `)]}),children:(0,$.jsx)(lr,{ariaLabel:u,title:u,onClick:()=>s(n.session_id),style:{...p,display:`inline-flex`,alignItems:`center`,paddingInline:6}})}),r&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Ao,{type:`secondary`,children:`in`}),(0,$.jsx)(Nn,{branch:r.name,compact:!0,onClick:()=>o(r.branch_id)})]}),c&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Ao,{type:`secondary`,children:`on`}),(0,$.jsx)(At,{board:c,compact:!0,onClick:()=>a(c.board_id),style:p})]})]})},[t,e,a,o,s,p,i]),g=(0,Q.useMemo)(()=>[...Array.from(e.values()).filter(e=>!e.archived).map(e=>{let t=bt(e);return{id:`branch:${e.branch_id}`,type:t?`assistants`:`branches`,dttm:e.created_at,entityId:e.branch_id}}),...Array.from(r.values()).filter(e=>!e.archived).map(e=>({id:`session:${e.session_id}`,type:`sessions`,dttm:e.last_updated,entityId:e.session_id}))].filter(e=>u===`all`||e.type===u).sort((e,t)=>new Date(t.dttm).getTime()-new Date(e.dttm).getTime()).slice(0,jo),[e,r,u]),_=(0,Q.useCallback)(e=>e.type===`sessions`?(0,$.jsx)(Le,{}):e.type===`assistants`?(0,$.jsx)(d,{}):(0,$.jsx)(Ye,{}),[]),v=(0,Q.useCallback)(t=>{if(t.type===`sessions`){let e=r.get(t.entityId);return e?h(e):null}let n=e.get(t.entityId);return n?m(n,t.type===`assistants`):null},[e,m,r,h]);return(0,$.jsxs)(me,{style:{minHeight:0,flex:1,...l},styles:{body:{height:`100%`,display:`flex`,flexDirection:`column`,background:`transparent`}},children:[(0,$.jsx)(Do,{title:`Team activity`,icon:(0,$.jsx)(ge,{}),info:`Up to ${jo} recent branch, assistant, and session events derived from local state and sorted together by event time. A persisted activity summary endpoint can replace this later for comments, artifacts, and prompt events.`,extra:(0,$.jsx)(G,{size:`small`,value:u,onChange:f,options:[{label:(0,$.jsx)(n,{title:`All activity`,children:`All`}),value:`all`},{label:(0,$.jsx)(n,{title:`Branches`,children:(0,$.jsx)(Ye,{})}),value:`branches`},{label:(0,$.jsx)(n,{title:`Sessions`,children:(0,$.jsx)(Le,{})}),value:`sessions`},{label:(0,$.jsx)(n,{title:`Assistants`,children:(0,$.jsx)(d,{})}),value:`assistants`}]})}),(0,$.jsx)(`div`,{style:{overflow:`auto`,minHeight:0},children:g.length===0?(0,$.jsx)(x,{image:x.PRESENTED_IMAGE_SIMPLE,description:`No recent activity`}):(0,$.jsx)(S,{rowKey:`id`,dataSource:g,renderItem:e=>{let t=v(e);return t?(0,$.jsx)(Mo,{icon:_(e),message:t,time:e.dttm}):null}})})]})},{Text:Po}=r,Fo=50,Io=new Set([`running`,`stopping`,`awaiting_permission`,`awaiting_input`]),Lo=e=>{let t=new Map;for(let n of e.values()){if(n.archived||!n.board_id)continue;let e=t.get(n.board_id)??[];e.push(n),t.set(n.board_id,e)}return t},Ro=e=>{let t=new Map;for(let[n,r]of e){let e=r.filter(e=>!e.archived);e.length>0&&t.set(n,e)}return t},zo=({boardById:e,recentBoardIds:t,branchById:n,sessionsByBranch:r})=>{let i=new Map((t??[]).map((e,t)=>[e,t])),a=Lo(n),o=Ro(r);return Array.from(e.values()).filter(e=>!e.archived).map(e=>{let t=a.get(e.board_id)??[],r=t.flatMap(e=>o.get(e.branch_id)??[]),s=e.primary_assistant_id?n.get(e.primary_assistant_id):void 0,c=Math.max(new Date(e.last_updated).getTime(),...t.map(e=>new Date(e.updated_at||e.created_at).getTime()),...r.map(e=>new Date(e.last_updated).getTime()));return{board:e,branches:t,sessions:r,primaryAssistant:s,latest:Number.isFinite(c)?c:0,visitRank:i.get(e.board_id)??1/0}}).sort((e,t)=>e.visitRank-t.visitRank||t.latest-e.latest||e.board.name.localeCompare(t.board.name)).slice(0,Fo)},Bo=({board:e,branches:t,sessions:r,primaryAssistant:i,onClick:a})=>{let{token:o}=N.useToken(),s=ko(o),c=i?ht(i):null,[l,u]=(0,Q.useState)(!1),f=r.filter(e=>Io.has(e.status)).length,p=[...r].sort((e,t)=>new Date(t.last_updated).getTime()-new Date(e.last_updated).getTime())[0],m=e.description?.trim()??``,g=m.split(/\r?\n/)[0]?.trim()??``;return(0,$.jsx)(me,{hoverable:!0,onClick:a,onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),style:{width:320,flex:`0 0 320px`,borderColor:l?o.colorPrimaryBorderHover:o.colorBorderSecondary,...s,background:l?Oo(o.colorBgElevated,.65):s.background,backgroundColor:l?Oo(o.colorBgElevated,.65):s.backgroundColor,boxShadow:l?o.boxShadowSecondary:void 0,transition:`border-color 0.2s, background 0.2s, box-shadow 0.2s`},styles:{body:{minHeight:136,background:`transparent`}},children:(0,$.jsxs)(K,{direction:`vertical`,size:12,style:{width:`100%`},children:[(0,$.jsx)(K,{align:`start`,style:{width:`100%`,justifyContent:`space-between`},children:(0,$.jsxs)(K,{size:10,style:{minWidth:0},children:[(0,$.jsx)(j,{style:{background:o.colorFillSecondary,color:o.colorText,flexShrink:0},children:e.icon||`📋`}),(0,$.jsxs)(`div`,{style:{minWidth:0},children:[(0,$.jsxs)(K,{size:6,style:{maxWidth:230},children:[(0,$.jsx)(Po,{strong:!0,ellipsis:{tooltip:e.name},style:{display:`block`,maxWidth:i?190:220},children:e.name}),i&&(0,$.jsx)(n,{title:`Primary assistant: ${c?.displayName??i.name}`,children:(0,$.jsx)(d,{"aria-label":`Primary assistant`,style:{color:o.colorPrimary,fontSize:13,flexShrink:0}})})]}),(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:6,maxWidth:220,minHeight:20},children:[(0,$.jsx)(Po,{type:`secondary`,ellipsis:m?{tooltip:g}:!1,style:{display:`block`,fontSize:12,flex:1,minWidth:0,whiteSpace:`nowrap`},children:g||`\xA0`}),m&&(0,$.jsx)(Oe,{content:(0,$.jsx)(`div`,{style:{maxWidth:360,maxHeight:320,overflow:`auto`},children:(0,$.jsx)(on,{content:m,compact:!0,showControls:!1})}),title:`Board description`,trigger:`hover`,placement:`rightTop`,children:(0,$.jsx)(B,{style:{color:o.colorTextTertiary,cursor:`help`,flexShrink:0,fontSize:12}})})]})]})]})}),(0,$.jsxs)(K,{wrap:!0,size:[6,6],children:[(0,$.jsxs)(h,{icon:(0,$.jsx)(Ye,{}),children:[t.length,` branch`,t.length===1?``:`es`]}),(0,$.jsxs)(h,{children:[r.length,` session`,r.length===1?``:`s`]}),f>0&&(0,$.jsxs)(h,{color:`processing`,children:[f,` active`]})]}),(0,$.jsx)(Po,{type:`secondary`,style:{fontSize:12},children:p?(0,$.jsxs)($.Fragment,{children:[`Last session `,_r(p.last_updated)]}):`No sessions yet`})]})})},Vo=({boardById:e,recentBoardIds:t=[],branchById:n,sessionsByBranch:r,onBoardClick:i})=>{let{token:a}=N.useToken(),o=(0,Q.useMemo)(()=>zo({boardById:e,recentBoardIds:t,branchById:n,sessionsByBranch:r}),[e,t,n,r]);return(0,$.jsxs)(`section`,{children:[(0,$.jsx)(Do,{title:`Boards`,icon:(0,$.jsx)(z,{}),info:`Up to ${Fo} accessible boards, sorted by this browser’s last-visited board order when available, then by recent board, branch, or session activity.`}),o.length===0?(0,$.jsx)(me,{style:ko(a),children:(0,$.jsx)(x,{image:x.PRESENTED_IMAGE_SIMPLE,description:`No boards yet. Use the create button to make your first board, assistant, repo, or branch.`})}):(0,$.jsx)(`div`,{style:{display:`flex`,gap:16,overflowX:`auto`,paddingTop:2,paddingBottom:10,scrollbarColor:`${a.colorFill} transparent`},children:o.map(({board:e,branches:t,sessions:n,primaryAssistant:r})=>(0,$.jsx)(Bo,{board:e,branches:t,sessions:n,primaryAssistant:r,onClick:()=>i(e.board_id)},e.board_id))})]})},{Text:Ho}=r,Uo=50,Wo=e=>Array.isArray(e)?e:e.data??[],Go=({doc:e})=>{let{token:t}=N.useToken(),n=ft(),r=br(e.uri),i=wr(`/knowledge`,r,e.path);return(0,$.jsx)(S.Item,{onClick:()=>n(i),style:{cursor:`pointer`,padding:`10px 0`},children:(0,$.jsx)(S.Item.Meta,{avatar:e.icon_emoji?(0,$.jsx)(`span`,{style:{fontSize:18,lineHeight:`22px`},children:e.icon_emoji}):(0,$.jsx)(a,{style:{color:t.colorTextTertiary}}),title:(0,$.jsxs)(K,{size:6,style:{maxWidth:`100%`},children:[(0,$.jsx)(Ho,{ellipsis:{tooltip:e.title||e.path},style:{minWidth:0},children:e.title||e.path}),(0,$.jsx)(Qn,{namespace:r||`Knowledge`,style:{marginInlineEnd:0}})]}),description:(0,$.jsxs)(K,{size:6,wrap:!0,children:[(0,$.jsx)(Ho,{type:`secondary`,style:{fontSize:12},children:e.path}),e.updated_at&&(0,$.jsxs)(Ho,{type:`secondary`,style:{fontSize:12},children:[`· `,_r(e.updated_at)]})]})})})},Ko=({client:e,connected:t})=>{let{token:n}=N.useToken(),r=ko(n),[i,a]=(0,Q.useState)([]),[o,s]=(0,Q.useState)(!1);return(0,Q.useEffect)(()=>{let t=!1;if(e)return s(!0),e.service(`kb/documents`).find({query:{archived:!1,$limit:Uo,$sort:{updated_at:-1}}}).then(e=>{t||a(Wo(e).sort((e,t)=>new Date(t.updated_at||t.created_at||0).getTime()-new Date(e.updated_at||e.created_at||0).getTime()).slice(0,Uo))}).catch(e=>{t||console.error(`Failed to load recent Knowledge:`,e)}).finally(()=>{t||s(!1)}),()=>{t=!0}},[e]),(0,$.jsxs)(me,{loading:o,style:{minHeight:0,flex:1,...r},styles:{body:{height:`100%`,display:`flex`,flexDirection:`column`,background:`transparent`}},children:[(0,$.jsx)(Do,{title:`Recent Knowledge`,icon:(0,$.jsx)(ue,{}),info:`Up to ${Uo} recently updated readable Knowledge documents from kb/documents. Access checks remain server-side through the existing Knowledge service.`}),(0,$.jsx)(`div`,{style:{overflow:`auto`,minHeight:0},children:t?i.length===0?(0,$.jsx)(x,{image:x.PRESENTED_IMAGE_SIMPLE,description:`No Knowledge docs yet`}):(0,$.jsx)(S,{rowKey:`document_id`,dataSource:i,renderItem:e=>(0,$.jsx)(Go,{doc:e})}):(0,$.jsx)(x,{image:x.PRESENTED_IMAGE_SIMPLE,description:`Reconnect to refresh Knowledge`})})]})},{Text:qo}=r,Jo=100,Yo=new Set([`awaiting_permission`,`awaiting_input`,`failed`,`timed_out`]),Xo=({session:e,branch:t,board:r,repo:i,searchQuery:a,searchActive:o,onClick:s})=>{let{token:c}=N.useToken(),l=Z(e,{includeAgentFallback:!0}),u=fr(e.status),d=o&&e.title&&e.description?La(e.description,a):null,p=o&&Ia(e,a);return(0,$.jsx)(S.Item,{onClick:s,style:{cursor:`pointer`,padding:`10px 16px`,borderBlockEnd:`1px solid ${c.colorBorderSecondary}`},children:(0,$.jsx)(S.Item.Meta,{avatar:(0,$.jsx)(f,{dot:u!==`success`&&u!=="default",status:u===`success`||u==="default"?void 0:u,children:(0,$.jsx)(Le,{style:{fontSize:20,color:c.colorTextSecondary}})}),title:(0,$.jsxs)(K,{size:8,style:{width:`100%`},children:[(0,$.jsx)(qo,{ellipsis:{tooltip:l},style:{maxWidth:420},children:(0,$.jsx)(ln,{text:l,query:a})}),e.ready_for_prompt&&(0,$.jsx)(h,{color:`cyan`,children:`ready`}),Yo.has(e.status)&&(0,$.jsx)(h,{color:`warning`,children:e.status.replaceAll(`_`,` `)})]}),description:(0,$.jsxs)(K,{direction:`vertical`,size:4,style:{width:`100%`},children:[p&&(0,$.jsxs)(qo,{type:`secondary`,style:{fontSize:11},children:[`Agent: `,(0,$.jsx)(ln,{text:e.agentic_tool,query:a})]}),d&&d!==l&&(0,$.jsx)(qo,{type:`secondary`,italic:!0,style:{fontSize:11,lineHeight:1.4},children:(0,$.jsx)(ln,{text:d,query:a})}),(0,$.jsxs)(K,{size:8,wrap:!0,children:[(0,$.jsx)(n,{title:hr(e.last_updated),children:(0,$.jsx)(qo,{type:`secondary`,style:{fontSize:12},children:_r(e.last_updated)})}),r&&(0,$.jsx)(At,{board:r,compact:!0}),t&&(0,$.jsx)(Nn,{branch:t.name,compact:!0,title:i?`${i.slug} / ${t.name}`:t.name})]})]})})})},Zo=({sessionById:e,branchById:t,boardById:n,repoById:r,currentUserId:i,onSessionClick:a})=>{let{token:o}=N.useToken(),s=ko(o),[c,l]=(0,Q.useState)(``),[u,d]=Nt(Oa,`recent`),f=(0,Q.useMemo)(()=>Array.from(e.values()).filter(e=>!e.archived&&(!i||e.created_by===i)),[i,e]),p=c.trim(),m=Fa(p),h=(0,Q.useMemo)(()=>(m?Pa(f,p).map(({session:e})=>e):Ra(f,u)).slice(0,Jo),[f,m,p,u]);return(0,$.jsxs)(`section`,{style:{minHeight:0,flex:1,display:`flex`,flexDirection:`column`},children:[(0,$.jsx)(Do,{title:i?`My Sessions`:`Sessions`,icon:(0,$.jsx)(Le,{}),info:`Up to ${Jo} ${i?`of your`:`cross-board`} sessions using the same local session state as the board left panel. Board and branch pills are included because this list is not filtered to one board.`}),(0,$.jsxs)(me,{styles:{body:{padding:0,display:`flex`,flexDirection:`column`,height:`100%`,background:`transparent`}},style:{minHeight:0,flex:1,...s},children:[(0,$.jsx)(`div`,{style:{padding:16},children:(0,$.jsx)(Ya,{value:c,onChange:l,sort:u,onSortChange:d,searching:m,placeholder:`Search sessions...`})}),(0,$.jsx)(`div`,{style:{overflow:`auto`,minHeight:0,flex:1},children:h.length===0?(0,$.jsx)(x,{image:x.PRESENTED_IMAGE_SIMPLE,description:m?`No matching sessions`:`No sessions yet`,style:{padding:`28px 0`}}):(0,$.jsx)(S,{rowKey:`session_id`,dataSource:h,renderItem:e=>{let i=t.get(e.branch_id);return(0,$.jsx)(Xo,{session:e,branch:i,board:i?.board_id?n.get(i.board_id):void 0,repo:i?r.get(i.repo_id):void 0,searchQuery:p,searchActive:m,onClick:()=>a(e.session_id)})}})})]})]})},{Text:Qo,Title:$o}=r,es=e=>{let{token:t}=N.useToken(),n=jr[Ot(t)?`dark`:`light`];return(0,$.jsx)(`div`,{style:{height:`100%`,width:`100%`,overflow:`hidden`,background:n},children:(0,$.jsxs)(`div`,{style:{height:`100%`,minHeight:0,padding:`32px clamp(32px, 5vw, 80px) 28px`,display:`grid`,gridTemplateColumns:`minmax(0, 1fr) minmax(380px, 540px)`,gap:24},children:[(0,$.jsxs)(`main`,{style:{minWidth:0,minHeight:0,display:`flex`,flexDirection:`column`,gap:24},children:[(0,$.jsx)(`div`,{children:(0,$.jsxs)(K,{direction:`vertical`,size:4,children:[(0,$.jsx)($o,{level:2,style:{margin:0},children:`Home`}),(0,$.jsx)(Qo,{type:`secondary`,children:`Jump into boards, resume your sessions, and see recent team context.`})]})}),(0,$.jsx)(Vo,{boardById:e.boardById,recentBoardIds:e.recentBoardIds,branchById:e.branchById,sessionsByBranch:e.sessionsByBranch,onBoardClick:e.onBoardClick}),(0,$.jsx)(Zo,{sessionById:e.sessionById,branchById:e.branchById,boardById:e.boardById,repoById:e.repoById,currentUserId:e.currentUserId,onSessionClick:e.onSessionClick})]}),(0,$.jsxs)(`aside`,{style:{minHeight:0,display:`flex`,flexDirection:`column`,gap:16},children:[(0,$.jsx)(No,{branchById:e.branchById,boardById:e.boardById,sessionById:e.sessionById,userById:e.userById,onBoardClick:e.onBoardClick,onBranchClick:e.onBranchClick,onSessionClick:e.onSessionClick}),(0,$.jsx)(Ko,{client:e.client,connected:e.connected})]})]})})},ts=({onClick:e})=>{let t=Pt();return(0,$.jsx)(n,{title:t?`Disconnected from daemon`:`Create new...`,placement:`left`,children:(0,$.jsx)(J,{type:`primary`,shape:`circle`,size:`large`,icon:(0,$.jsx)(R,{style:{fontSize:20}}),onClick:e,disabled:t,style:{position:`absolute`,right:24,top:24,width:56,height:56,boxShadow:`0 4px 12px rgba(0, 0, 0, 0.15)`,zIndex:100}})})},ns=({open:e,onClose:t,onCreate:n,availableAgents:i,branchId:a,branch:o,mcpServerById:s=new Map,currentUser:c,client:l,userById:u})=>{let[d]=q.useForm(),[f,p]=(0,Q.useState)(`claude-code`),[m,h]=(0,Q.useState)(!1),[g,_]=(0,Q.useState)([]),v=!!f;return(0,Q.useEffect)(()=>{if(!e)return;p(`claude-code`),h(!1),_([]);let t=c?.default_agentic_config?.[`claude-code`],n=un(`claude-code`,t),r=o?.mcp_server_ids;d.setFieldsValue({title:``,initialPrompt:``,...n,mcpServerIds:r&&r.length>0?r:n.mcpServerIds})},[e,d]),(0,Q.useEffect)(()=>{if(f){let e=f,t=c?.default_agentic_config?.[e],n=un(e,t);d.setFieldsValue({...n,mcpServerIds:o?.mcp_server_ids&&o.mcp_server_ids.length>0?o.mcp_server_ids:n.mcpServerIds,...e!==`codex`&&{codexSandboxMode:void 0,codexApprovalPolicy:void 0,codexNetworkAccess:void 0}})}},[f,d,c,o?.mcp_server_ids]),(0,$.jsx)(He,{title:`Create New Session`,open:e,onOk:()=>{d.validateFields().then(()=>{let e=d.getFieldsValue(!0);h(!0);let t=c?.default_agentic_config?.[f],r=o?.mcp_server_ids,i=r&&r.length>0?r:t?.mcpServerIds,s=e.permissionMode??t?.permissionMode??ut(f),l={branch_id:a,agent:f,title:e.title,initialPrompt:e.initialPrompt,modelConfig:e.modelConfig??t?.modelConfig,effort:e.effort??t?.modelConfig?.effort,mcpServerIds:e.mcpServerIds??i,permissionMode:s,envVarNames:g.length>0?g:void 0};if(f===`codex`){let n=tt(s);l.codexSandboxMode=e.codexSandboxMode??t?.codexSandboxMode??n.sandboxMode,l.codexApprovalPolicy=e.codexApprovalPolicy??t?.codexApprovalPolicy??n.approvalPolicy,l.codexNetworkAccess=e.codexNetworkAccess??t?.codexNetworkAccess??n.networkAccess}n(l)})},onCancel:()=>{d.resetFields(),t()},okText:`Create Session`,cancelText:`Cancel`,width:700,okButtonProps:{disabled:!v||m,loading:m},children:(0,$.jsxs)(q,{form:d,layout:`vertical`,style:{marginTop:16},preserve:!1,children:[o&&(0,$.jsx)(H,{title:(0,$.jsxs)($.Fragment,{children:[`Creating session in branch: `,(0,$.jsx)(`strong`,{children:o.name}),` (`,o.ref,`)`]}),type:`info`,showIcon:!0,style:{marginBottom:16}}),(0,$.jsx)(q.Item,{label:`Select Coding Agent`,required:!0,children:(0,$.jsx)(Mn,{agents:i,selectedAgentId:f,onSelect:p,columns:2,showHelperText:!0,showComparisonLink:!0})}),(0,$.jsx)(q.Item,{name:`title`,label:`Title (optional)`,children:(0,$.jsx)(ce,{placeholder:`e.g., Add authentication system`})}),(0,$.jsx)(q.Item,{name:`initialPrompt`,label:`Initial Prompt (optional)`,help:`First message to send to the agent when session starts`,children:(0,$.jsx)(Wr,{value:d.getFieldValue(`initialPrompt`)||``,onChange:e=>d.setFieldValue(`initialPrompt`,e),placeholder:`e.g., Build a JWT authentication system with secure password storage... (type @ for autocomplete)`,autoSize:{minRows:4,maxRows:8},client:l,sessionId:null,userById:u})}),(0,$.jsx)(nn,{mcpServerById:s}),(0,$.jsx)(I,{ghost:!0,destroyOnHidden:!1,expandIcon:({isActive:e})=>(0,$.jsx)(M,{rotate:e?180:0}),items:[{key:`agentic-tool-config`,label:(0,$.jsx)(r.Text,{strong:!0,children:`Agentic Tool Configuration`}),children:(0,$.jsx)(zt,{agenticTool:f||`claude-code`,mcpServerById:s,showHelpText:!0,hideMcpServers:!0,client:l})},...c&&l?[{key:`env-vars`,label:(0,$.jsx)(r.Text,{strong:!0,children:`Environment Variables`}),children:(0,$.jsx)(Wa,{ownerUserId:c.user_id,client:l,value:g,onChange:_})}]:[]],style:{marginTop:16}})]})})};function rs(e){let{client:t,boardId:n,reactFlowInstance:r,enabled:i=!0}=e,[a,o]=(0,Q.useState)(typeof document<`u`?!document.hidden:!0);(0,Q.useEffect)(()=>{if(typeof document>`u`)return;let e=()=>o(!document.hidden);return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[]);let s=(0,Q.useRef)(a);s.current=a;let c=(0,Q.useRef)(0),l=(0,Q.useRef)(null),u=(0,Q.useRef)(null),d=(0,Q.useCallback)((e,r)=>{if(!t?.io||!n||!i||!s.current)return;u.current={x:e,y:r};let a=Date.now(),o=a-c.current;if(o<ua.CURSOR_EMIT_THROTTLE_MS){l.current||=setTimeout(()=>{if(l.current=null,u.current){let e=u.current,r={boardId:n,x:e.x,y:e.y,timestamp:Date.now()};t.io.emit(`cursor-move`,r),c.current=Date.now()}},ua.CURSOR_EMIT_THROTTLE_MS-o);return}let d={boardId:n,x:e,y:r,timestamp:a};t.io.emit(`cursor-move`,d),c.current=a},[t,n,i]);return(0,Q.useEffect)(()=>{if(!i||!a||!t?.io||!n||!r)return;let e=e=>{let t=r.screenToFlowPosition({x:e.clientX,y:e.clientY});d(t.x,t.y)},o=()=>{t?.io&&n&&t.io.emit(`cursor-leave`,{boardId:n})};return window.addEventListener(`mousemove`,e),()=>{window.removeEventListener(`mousemove`,e),o(),l.current&&=(clearTimeout(l.current),null)}},[t,n,r,i,a,d]),{emitCursorPosition:d}}var is=[/url\s*\(/gi,/expression\s*\(/gi,/javascript\s*:/gi,/behavior\s*:/gi,/-moz-binding\s*:/gi,/@import/gi,/@charset/gi,/@font-face/gi,/@namespace/gi,/\\00/gi];function as(e){for(let t of is)if(t.lastIndex=0,t.test(e))return t.source;return null}function os(e,t){if(!e?.trim())return``;let n=e;for(let e of is)e.lastIndex=0,n=n.replace(e,`/* blocked */`);let r=[],i=n.replace(/@keyframes\s+[\w-]+\s*\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\}/gi,e=>(as(e)||r.push(e),``)).trim(),a=[];i&&(/[^{}]+\{/.test(i)?a.push(`${t} { }\n${i.replace(/([^{}]+)\{/g,`${t} $1{`)}`):a.push(`${t} {\n${i}\n}`));for(let e of r)a.push(e);return a.join(`
|
|
2
|
-
|
|
3
|
-
`)}function ss(e){try{let t=new URL(e);return[`http:`,`https:`,`mailto:`].includes(t.protocol)}catch{return!1}}var cs=100,ls=380,us=Q.memo(({data:e})=>{let{token:t}=N.useToken(),{card:i,isPinned:a,zoneName:o,zoneColor:s,onClick:l,onUnpin:u}=e,[d,f]=(0,Q.useState)(!1),p=i.effective_color||t.colorBorder,m=i.effective_emoji,h=t.colorBgContainer!==`#ffffff`,g=(0,Q.useMemo)(()=>{if(s)return kt(s,h,50,50)},[s,h]),_=(0,Q.useMemo)(()=>{if(!i.description)return``;if(i.description.length<=cs||d)return i.description;let e=i.description.slice(0,cs),t=e.lastIndexOf(` `);return`${t>cs*.7?e.slice(0,t):e}...`},[i.description,d]),v=(i.description?.length??0)>cs;return(0,$.jsxs)(`div`,{onClick:()=>l?.(i.card_id),style:{width:ls,background:t.colorBgContainer,border:a&&s?`1px solid ${s}`:`1px solid ${t.colorBorderSecondary}`,borderLeft:`4px solid ${a&&s?s:p}`,borderRadius:t.borderRadiusLG,cursor:`pointer`,overflow:`hidden`,boxShadow:t.boxShadowTertiary,transition:`box-shadow 0.2s, border-color 0.3s`},children:[(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,padding:`10px 12px`,borderBottom:i.description||i.note?`1px solid ${t.colorBorderSecondary}`:`none`},children:[m&&(0,$.jsx)(`span`,{style:{fontSize:16,flexShrink:0},children:m}),(0,$.jsx)(r.Text,{strong:!0,style:{flex:1,fontSize:13,lineHeight:`1.3`,overflow:`hidden`,textOverflow:`ellipsis`,display:`-webkit-box`,WebkitLineClamp:2,WebkitBoxOrient:`vertical`},children:i.title}),i.url&&ss(i.url)&&(0,$.jsx)(`a`,{href:i.url,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>e.stopPropagation(),className:`nodrag`,style:{color:t.colorTextSecondary,flexShrink:0},children:(0,$.jsx)(V,{style:{fontSize:12}})}),a&&(0,$.jsx)(n,{title:o?`Pinned to [${o}] zone (click to unpin)`:`Pinned (click to unpin)`,children:(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(c,{style:{color:g}}),onClick:e=>{e.stopPropagation(),u?.(i.card_id)},className:`nodrag`,style:{flexShrink:0,width:24,height:24,padding:0}})}),(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(Je,{}),className:`drag-handle`,style:{cursor:`grab`,flexShrink:0,width:24,height:24,padding:0}})]}),i.description&&(0,$.jsxs)(`div`,{className:`nodrag`,style:{padding:`8px 12px`,borderBottom:i.note?`1px solid ${t.colorBorderSecondary}`:`none`},children:[(0,$.jsx)(r.Text,{style:{fontSize:12,color:t.colorTextSecondary,lineHeight:`1.5`,whiteSpace:`pre-wrap`,wordBreak:`break-word`},children:_}),v&&(0,$.jsx)(J,{type:`link`,size:`small`,onClick:e=>{e.stopPropagation(),f(!d)},style:{padding:0,height:`auto`,fontSize:11,color:t.colorLink,marginLeft:4},children:d?`less`:`more`})]}),i.note&&(0,$.jsx)(`div`,{style:{padding:`8px 12px`,background:t.colorFillQuaternary,borderTop:i.description?`none`:`1px solid ${t.colorBorderSecondary}`},children:(0,$.jsx)(r.Text,{style:{fontSize:12,color:t.colorText,lineHeight:`1.5`,whiteSpace:`pre-wrap`,wordBreak:`break-word`},children:i.note})})]})}),{useToken:ds}=N,fs=120,ps=({task:e,onClick:t,compact:i=!1})=>{let{token:a}=ds(),o=e.message_range.end_index-e.message_range.start_index+1,s=!!e.report,c=e.git_state.sha_at_start,l=e.git_state.sha_at_end,u=l&&l!==`unknown`&&l!==c,{cleanSha:d,isDirty:f}=Ln(l&&l!==`unknown`?l:c),p=e.full_prompt||`Untitled task`,m=p.length>fs?`${p.substring(0,fs)}...`:p;return(0,$.jsx)(`div`,{onClick:t,style:{cursor:`pointer`,padding:i?`4px 8px`:`8px 12px`,borderRadius:a.borderRadius},children:(0,$.jsxs)(`div`,{style:{width:`100%`},children:[(0,$.jsx)(`div`,{style:{marginBottom:4},children:(0,$.jsxs)(K,{size:8,children:[(0,$.jsx)(n,{title:(0,$.jsx)(`div`,{style:{whiteSpace:`pre-wrap`},children:e.full_prompt}),children:(0,$.jsx)(`span`,{children:(0,$.jsx)(Ft,{status:e.status,size:16})})}),(0,$.jsx)(r.Text,{style:{fontSize:i?13:14,fontWeight:500},children:m})]})}),(0,$.jsx)(`div`,{style:{marginLeft:i?20:24},children:(0,$.jsxs)(K,{size:4,wrap:!0,children:[(0,$.jsx)(Yn,{icon:(0,$.jsx)(b,{}),color:`default`,children:o}),(0,$.jsx)(Yn,{icon:(0,$.jsx)(Ae,{}),color:`default`,children:e.tool_use_count}),s&&(0,$.jsx)(Yn,{icon:(0,$.jsx)(We,{}),color:`blue`,children:`report`}),!i&&d&&(0,$.jsx)(n,{title:u?`Git state changed during task`:f?`Uncommitted changes`:`Clean git state`,children:(0,$.jsx)(`span`,{children:(0,$.jsx)(Yn,{icon:(0,$.jsx)(se,{}),color:f?`orange`:`purple`,children:(0,$.jsxs)(K,{size:4,children:[(0,$.jsxs)(r.Text,{style:{fontSize:11,fontFamily:`monospace`},children:[u&&`→ `,d.substring(0,7)]}),f&&(0,$.jsx)(D,{style:{fontSize:10}})]})})})})]})})]})})},ms=560,hs=({session:e,tasks:t=[],userById:n,currentUserId:i,onTaskClick:a,onSessionClick:o,onDelete:s,onOpenSettings:l,onUnpin:u,isPinned:d=!1,zoneName:f,zoneColor:p,defaultExpanded:m=!0})=>{let{modal:h}=w.useApp(),_=Pt(),v=()=>{h.confirm({title:`Delete Session`,content:`Are you sure you want to delete this session? This action cannot be undone.`,okText:`Delete`,okType:`danger`,cancelText:`Cancel`,onOk:()=>{s?.(e.session_id)}})},y=t.slice(-5),b=t.length-y.length,x=!!e.genealogy.forked_from_session_id,S=!!e.genealogy.parent_session_id,{cleanSha:C,isDirty:T}=Ln(e.git_state.current_sha),E=(0,$.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,width:`100%`},children:[(0,$.jsx)(r.Text,{strong:!0,children:`Tasks`}),t.length>5&&(0,$.jsxs)(r.Text,{type:`secondary`,style:{fontSize:12},children:[`(showing latest 5 of `,t.length,`)`]})]}),O=(0,$.jsxs)(`div`,{children:[b>0&&(0,$.jsx)(`div`,{style:{marginBottom:8},children:(0,$.jsxs)(J,{type:`text`,icon:(0,$.jsx)(De,{}),size:`small`,onClick:e=>{e.stopPropagation(),o?.()},children:[`See `,b,` more `,b===1?`task`:`tasks`]})}),y.map(e=>(0,$.jsx)(ps,{task:e,onClick:()=>a?.(e.task_id)},e.task_id))]});return(0,$.jsxs)(me,{style:{maxWidth:ms,...d&&p?{borderColor:p,borderWidth:1}:{}},styles:{body:{padding:16}},children:[(0,$.jsxs)(`div`,{className:`drag-handle`,style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:12},children:[(0,$.jsxs)(K,{size:8,align:`center`,children:[(0,$.jsx)(`div`,{className:`drag-handle`,style:{display:`flex`,alignItems:`center`},children:(0,$.jsx)(or,{tool:e.agentic_tool,size:32})}),(0,$.jsx)(r.Text,{strong:!0,className:`nodrag`,children:e.agentic_tool}),(0,$.jsx)(Ft,{status:e.status,size:16})]}),(0,$.jsxs)(K,{size:4,children:[(0,$.jsxs)(`div`,{className:`nodrag`,children:[x&&e.fork_origin===`btw`?(0,$.jsx)(Yn,{icon:(0,$.jsx)(ve,{}),color:`orange`,children:`BTW`}):x?(0,$.jsx)(Yn,{icon:(0,$.jsx)(ve,{}),color:`cyan`,children:`FORK`}):null,S&&(0,$.jsx)(Yn,{icon:(0,$.jsx)(Ye,{}),color:`purple`,children:`SPAWN`}),d&&f&&(0,$.jsx)(Yn,{icon:(0,$.jsx)(c,{}),color:`blue`,onClick:t=>{t.stopPropagation(),u?.(e.session_id)},style:{cursor:`pointer`},title:`Pinned to ${f} (click to unpin)`,children:f})]}),(0,$.jsx)(J,{type:`text`,icon:(0,$.jsx)(Je,{style:{fontSize:16}}),className:`drag-handle`,title:`Drag to reposition`,style:{cursor:`grab`,padding:`4px 8px`}}),(0,$.jsxs)(`div`,{className:`nodrag`,children:[o&&(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(he,{}),onClick:e=>{e.stopPropagation(),o()},title:`Open in drawer`}),l&&(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(pe,{}),onClick:t=>{t.stopPropagation(),l(e.session_id)},title:`Session settings`}),s&&(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(g,{}),disabled:_,onClick:e=>{e.stopPropagation(),v()},title:`Delete session`,danger:!0})]})]})]}),(0,$.jsxs)(`div`,{className:`nodrag`,children:[(e.title||e.description)&&(0,$.jsx)(r.Text,{strong:!0,style:{fontSize:16,marginBottom:8,...yn(2)},children:Z(e)}),e.created_by&&(0,$.jsx)(`div`,{style:{marginBottom:8},children:(0,$.jsx)(_n,{createdBy:e.created_by,currentUserId:i,userById:n,prefix:`Created by`})}),(0,$.jsx)(`div`,{style:{marginBottom:8},children:(0,$.jsxs)(K,{size:4,children:[(0,$.jsxs)(r.Text,{type:`secondary`,children:[`📍 `,e.git_state.ref,` @ `,C.substring(0,7)]}),T&&(0,$.jsx)(Yn,{icon:(0,$.jsx)(D,{}),color:`orange`,style:{fontSize:11},children:`uncommitted`})]})})]}),(0,$.jsxs)(`div`,{className:`nodrag`,children:[(0,$.jsx)(I,{defaultActiveKey:m?[`tasks`]:[],items:[{key:`tasks`,label:E,children:O}],ghost:!0,style:{marginTop:8}}),(0,$.jsx)(`div`,{style:{marginTop:12}})]})]})},gs=300,_s=200,vs=({data:e,selected:t})=>{let{token:i}=N.useToken(),[a,o]=(0,Q.useState)(!1),s=(0,Q.useRef)(null),c=(0,Q.useCallback)((t,n)=>{let r={type:`app`,x:0,y:0,width:Math.max(n.width,gs),height:Math.max(n.height,_s),title:e.title,description:e.description,template:e.template,files:e.files,dependencies:e.dependencies,entryFile:e.entryFile,showEditor:e.showEditor,showConsole:e.showConsole};e.onUpdate(e.objectId,r)},[e]),l=(0,Q.useCallback)(()=>{o(e=>!e)},[]),u=e.height-40-16;return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Hr,{isVisible:t,minWidth:gs,minHeight:_s,onResize:c,lineStyle:{borderColor:i.colorPrimary},handleStyle:{backgroundColor:i.colorPrimary,width:8,height:8}}),(0,$.jsx)(me,{style:{width:e.width,height:e.height,background:i.colorBgContainer,border:`2px solid ${t?i.colorPrimary:i.colorBorder}`,borderRadius:8,boxShadow:i.boxShadowSecondary,overflow:`hidden`,display:`flex`,flexDirection:`column`},styles:{body:{padding:0,flex:1,display:`flex`,flexDirection:`column`,overflow:`hidden`}},size:`small`,title:(0,$.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,$.jsx)(r.Text,{style:{fontSize:12,fontWeight:600,maxWidth:e.width-120},ellipsis:!0,children:e.title}),(0,$.jsxs)(`div`,{style:{display:`flex`,gap:2},children:[(0,$.jsx)(n,{title:a?`Exit interact mode`:`Interact with app`,children:(0,$.jsx)(J,{type:a?`primary`:`text`,size:`small`,icon:a?(0,$.jsx)(F,{}):(0,$.jsx)(Be,{}),onClick:e=>{e.stopPropagation(),l()}})}),e.onDelete&&(0,$.jsx)(J,{type:`text`,size:`small`,danger:!0,icon:(0,$.jsx)(A,{}),onClick:t=>{t.stopPropagation(),e.onDelete?.(e.objectId)}})]})]}),children:(0,$.jsx)(`div`,{ref:s,className:a?`nodrag nopan nowheel`:void 0,style:{flex:1,position:`relative`,pointerEvents:a?`auto`:`none`},children:(0,$.jsx)(wt,{template:e.template,files:Kr(e.files),customSetup:e.dependencies?{dependencies:e.dependencies}:void 0,options:{initMode:`user-visible`,...e.entryFile?{activeFile:e.entryFile}:{}},children:(0,$.jsx)(Et,{style:{height:u>0?u:200,border:`none`},showNavigator:!1,showOpenInCodeSandbox:!1,showRefreshButton:a})})})})]})},ys=e(Ct(),1);Jr();var bs=300,xs=200,Ss=new Set([`agor.config.js`,`agor.artifact.json`,`.env`]);function Cs({artifactId:e}){let{sandpack:t}=Tt(),{showError:n}=xt(),r=(0,Q.useRef)(t);return r.current=t,(0,Q.useEffect)(()=>{let t=()=>{let e=r.current,t={};for(let[n,r]of Object.entries(e.files)){let e=n.startsWith(`/`)?n.slice(1):n;Ss.has(e)||(t[e]={content:r.code,isBinary:!1})}let i={files:t};e.environment&&(i.template=e.environment);let a=(0,ys.compressToBase64)(JSON.stringify(i)).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``),o=document.createElement(`form`);o.method=`POST`,o.action=`https://codesandbox.io/api/v1/sandboxes/define`,o.target=`_blank`;let s=document.createElement(`input`);if(s.type=`hidden`,s.name=`parameters`,s.value=a,o.appendChild(s),e.environment){let t=document.createElement(`input`);t.type=`hidden`,t.name=`environment`,t.value=e.environment,o.appendChild(t)}document.body.appendChild(o);try{o.submit()}catch(e){n(`Open in CodeSandbox failed: ${e instanceof Error?e.message:String(e)}`)}finally{o.remove()}},i=`agor:export-codesandbox-${e}`;return window.addEventListener(i,t),()=>window.removeEventListener(i,t)},[e,n]),null}var ws=({data:e,selected:t})=>{let{token:a}=N.useToken(),[o,s]=(0,Q.useState)(!1),[c,l]=(0,Q.useState)(null),[u,d]=(0,Q.useState)(!0),[p,m]=(0,Q.useState)(null),[h,g]=(0,Q.useState)(!1),v=(0,Q.useRef)(null),b=(0,Q.useCallback)(async()=>{try{d(!0),m(null);let t=await fetch(`${sn()}/artifacts/${e.artifactId}/payload`,{headers:Zr()});if(!t.ok)throw Error(`Failed to load artifact: ${t.statusText}`);let n=await t.json();v.current=n.content_hash,l(n)}catch(e){m(e instanceof Error?e.message:String(e))}finally{d(!1)}},[e.artifactId]);(0,Q.useEffect)(()=>{b()},[b]),(0,Q.useEffect)(()=>{let t=t=>{let{artifactId:n,contentHash:r}=t.detail;n===e.artifactId&&r!==v.current&&b()};return window.addEventListener(`agor:artifact-patched`,t),()=>window.removeEventListener(`agor:artifact-patched`,t)},[e.artifactId,b]);let x=(0,Q.useCallback)((t,n)=>{let r={type:`artifact`,x:0,y:0,width:Math.max(n.width,bs),height:Math.max(n.height,xs),artifact_id:e.artifactId};e.onUpdate(e.objectId,r)},[e]),S=(0,Q.useCallback)(()=>{window.dispatchEvent(new CustomEvent(`agor:export-codesandbox-${e.artifactId}`))},[e.artifactId]),w=(0,Q.useCallback)(()=>{window.open(mr(_t(e.artifactId)),`_blank`,`noopener,noreferrer`)},[e.artifactId]),T=`Artifact ${gt(e.artifactId)}`,E=p?`error`:u?`processing`:`success`,D=p?`Failed to load`:u?`Reloading...`:`Live`,O=c?Yr(c,()=>g(!0),{className:`nodrag nopan`}):null,k=!!c&&!p,j=(c?.required_env_vars?.length??0)>0,M=Object.keys(c?.agor_grants??{}).length>0,I=k&&c?.trust_state===`untrusted`&&(j||M),L=(0,$.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:6,minWidth:0},children:[(0,$.jsx)(f,{status:E,title:D}),(0,$.jsx)(r.Text,{style:{fontSize:12,fontWeight:600,maxWidth:e.width-200},ellipsis:!0,children:c?.name??T}),O]}),(0,$.jsxs)(`div`,{className:`nodrag nopan`,style:{display:`flex`,gap:2},children:[I&&(0,$.jsx)(n,{title:`Trust this artifact to inject secrets`,children:(0,$.jsx)(J,{type:`text`,size:`small`,danger:!0,icon:(0,$.jsx)(i,{}),onClick:e=>{e.stopPropagation(),g(!0)}})}),(0,$.jsx)(n,{title:`Open fullscreen`,children:(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(P,{}),onClick:e=>{e.stopPropagation(),w()}})}),k&&(0,$.jsx)(n,{title:`Open in CodeSandbox (eject — daemon-injected env vars/AGOR_TOKEN won't carry over)`,children:(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(Re,{}),onClick:e=>{e.stopPropagation(),S()}})}),(0,$.jsx)(n,{title:`Reload`,children:(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(_,{spin:u}),onClick:e=>{e.stopPropagation(),b()}})}),k&&(0,$.jsx)(n,{title:o?`Exit interact mode`:`Interact with app`,children:(0,$.jsx)(J,{type:o?`primary`:`text`,size:`small`,icon:o?(0,$.jsx)(Se,{}):(0,$.jsx)(F,{}),onClick:e=>{e.stopPropagation(),s(e=>!e)}})}),e.onDeleteArtifact&&(0,$.jsx)(C,{title:`Delete artifact?`,description:`This will delete "${c?.name??T}" and its files.`,onConfirm:t=>{t?.stopPropagation(),e.onDeleteArtifact?.(e.objectId,e.artifactId)},onCancel:e=>e?.stopPropagation(),okText:`Delete`,cancelText:`Cancel`,okButtonProps:{danger:!0},children:(0,$.jsx)(n,{title:`Delete artifact`,children:(0,$.jsx)(J,{type:`text`,size:`small`,danger:!0,icon:(0,$.jsx)(A,{}),onClick:e=>e.stopPropagation()})})})]})]}),ee=p?a.colorErrorBorder:t?a.colorPrimary:a.colorBorder,R={width:e.width,height:e.height,background:a.colorBgContainer,border:`2px solid ${ee}`,borderRadius:8,boxShadow:a.boxShadowSecondary,overflow:`hidden`,display:`flex`,flexDirection:`column`,...e.isActiveUrlTarget?{outline:`2px dashed ${a.colorTextBase}`,outlineOffset:-3}:{}},z=(0,$.jsx)(Hr,{isVisible:t,minWidth:bs,minHeight:xs,onResize:x,lineStyle:{borderColor:a.colorPrimary},handleStyle:{backgroundColor:a.colorPrimary,width:8,height:8}});if(u&&!c)return(0,$.jsxs)($.Fragment,{children:[z,(0,$.jsx)(me,{style:R,styles:{body:{padding:0,flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`}},size:`small`,title:L,children:(0,$.jsx)(oe,{indicator:(0,$.jsx)(y,{}),description:`Loading artifact...`})})]});if(p)return(0,$.jsxs)($.Fragment,{children:[z,(0,$.jsxs)(me,{style:R,styles:{body:{padding:0,flex:1,display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,gap:8}},size:`small`,title:L,children:[(0,$.jsx)(Ne,{style:{fontSize:24,color:a.colorError}}),(0,$.jsx)(r.Text,{type:`danger`,style:{fontSize:12,textAlign:`center`,padding:`0 16px`},children:p}),(0,$.jsx)(J,{className:`nodrag nopan`,size:`small`,icon:(0,$.jsx)(_,{}),onClick:e=>{e.stopPropagation(),b()},children:`Retry`})]})]});if(!c)return null;let B=c.sandpack_config??{},te=B.options??{},V={...B.customSetup??{},...c.dependencies&&!B.customSetup?.dependencies?{dependencies:c.dependencies}:{}},ne=B.template??c.template,re=c.legacy?.is_legacy?(0,$.jsx)(Ts,{upgradeInstructions:c.legacy.upgrade_instructions}):null;return(0,$.jsxs)($.Fragment,{children:[z,(0,$.jsxs)(me,{style:R,styles:{body:{padding:0,flex:1,display:`flex`,flexDirection:`column`,overflow:`hidden`}},size:`small`,title:L,children:[(0,$.jsx)(`style`,{children:`
|
|
4
|
-
.artifact-sandpack-wrapper .sp-wrapper,
|
|
5
|
-
.artifact-sandpack-wrapper .sp-layout,
|
|
6
|
-
.artifact-sandpack-wrapper .sp-stack,
|
|
7
|
-
.artifact-sandpack-wrapper .sp-preview,
|
|
8
|
-
.artifact-sandpack-wrapper .sp-preview-container {
|
|
9
|
-
height: 100% !important;
|
|
10
|
-
}
|
|
11
|
-
`}),(0,$.jsxs)(`div`,{className:`artifact-sandpack-wrapper${o?` nodrag nopan nowheel`:``}`,style:{flex:1,position:`relative`,display:`flex`,flexDirection:`column`},children:[re,!o&&(0,$.jsx)(`div`,{style:{position:`absolute`,inset:0,zIndex:1}}),(0,$.jsxs)(wt,{template:ne,files:Kr(c.files),customSetup:Object.keys(V).length>0?V:void 0,theme:B.theme,options:{initMode:`user-visible`,...te,...c.entry&&!te.activeFile?{activeFile:c.entry}:{}},children:[(0,$.jsx)(Et,{style:{height:`100%`,border:`none`},showNavigator:!1,showOpenInCodeSandbox:!1,showRefreshButton:o}),(0,$.jsx)(Xr,{artifactId:e.artifactId,contentHash:c.runtime_report_hash??c.content_hash}),(0,$.jsx)(Gr,{artifactId:e.artifactId,contentHash:c.runtime_report_hash??c.content_hash}),(0,$.jsx)(qr,{artifactId:e.artifactId}),(0,$.jsx)(Cs,{artifactId:e.artifactId})]},c.content_hash)]})]}),h&&(0,$.jsx)(Qr,{open:h,artifactId:c.artifact_id,name:c.name,files:c.files,requiredEnvVars:c.required_env_vars??[],grants:c.agor_grants??{},onClose:()=>g(!1),onGranted:()=>{g(!1),b()}})]})};function Ts({upgradeInstructions:e}){let{token:t}=N.useToken(),{showSuccess:n,showError:r}=xt();return(0,$.jsx)(H,{type:`warning`,showIcon:!0,icon:(0,$.jsx)(Pe,{}),className:`nodrag nopan`,style:{borderRadius:0,fontSize:11,padding:`10px 14px`},title:`Legacy artifact — won't render correctly`,description:(0,$.jsxs)(`details`,{style:{marginTop:4},children:[(0,$.jsx)(`summary`,{style:{cursor:`pointer`,color:t.colorTextSecondary},children:`Show upgrade prompt for an agent`}),(0,$.jsxs)(`div`,{style:{position:`relative`,marginTop:6},children:[(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(Ee,{}),onClick:async()=>{await yt(e)?n(`Upgrade prompt copied — paste it to an agent`):r(`Failed to copy — select the text manually and copy with the keyboard`)},style:{position:`absolute`,top:4,right:4,zIndex:1,fontSize:11},children:`Copy`}),(0,$.jsx)(`pre`,{style:{whiteSpace:`pre-wrap`,fontSize:10,margin:0,padding:8,paddingRight:64,background:t.colorFillTertiary,borderRadius:4,maxHeight:180,overflow:`auto`,userSelect:`text`,cursor:`text`},children:e})]})]})})}var Es=({data:e})=>{let{token:t}=N.useToken(),{modal:n}=w.useApp(),i=!Wt().canMutate,a=()=>{i||e.onEdit&&e.onEdit(e.objectId,e.content,e.width)},o=()=>{i||!e.onDelete||n.confirm({title:`Delete note?`,content:`This note will be removed from the board.`,okText:`Delete`,okButtonProps:{danger:!0},cancelText:`Cancel`,onOk:()=>e.onDelete?.(e.objectId)})};return(0,$.jsx)(me,{style:{width:e.width,minHeight:100,background:t.colorBgContainer,border:`2px solid ${t.colorBorder}`,borderRadius:8,boxShadow:t.boxShadowSecondary,cursor:`move`},size:`small`,title:(0,$.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:12},children:`Markdown Note`}),(0,$.jsxs)(K,{size:2,children:[(0,$.jsx)(J,{className:`nodrag nopan`,type:`text`,size:`small`,icon:(0,$.jsx)(D,{}),onClick:e=>{e.stopPropagation(),a()},disabled:i,title:`Edit note`}),(0,$.jsx)(J,{className:`nodrag nopan`,type:`text`,size:`small`,danger:!0,icon:(0,$.jsx)(A,{}),onClick:e=>{e.stopPropagation(),o()},disabled:i,title:`Delete note`})]})]}),styles:{body:{padding:t.sizeUnit*8}},children:(0,$.jsx)(`div`,{className:`markdown-content`,style:{fontSize:t.fontSize,color:t.colorText,lineHeight:1.6},children:(0,$.jsx)(on,{content:e.content})})})};function Ds(e){let{client:t,boardId:n,enabled:r=!0}=e;(0,Q.useEffect)(()=>{if(!r||!t?.io||!n)return;let e=()=>{t.io.emit(`presence:watch-board`,n)};return e(),t.io.on(`connect`,e),t.on(`authenticated`,e),()=>{t.io.off(`connect`,e),t.off(`authenticated`,e),t.io.emit(`presence:unwatch-board`,n)}},[n,t,r])}var Os=({client:e,boardId:t,users:n,enabled:r=!0})=>{let{token:i}=N.useToken(),a=Lr();Ds({client:e,boardId:t,enabled:r});let{remoteCursors:o}=da({client:e,boardId:t,users:n,enabled:r}),s=(0,Q.useMemo)(()=>Array.from(o.entries()),[o]);return s.length===0?null:(0,$.jsx)(`div`,{style:{position:`absolute`,inset:0,pointerEvents:`none`,zIndex:2e3},children:s.map(([e,{x:t,y:n,user:r}])=>(0,$.jsx)(`div`,{style:{position:`absolute`,transform:`translate3d(${t*a.zoom+a.x}px, ${n*a.zoom+a.y}px, 0)`,willChange:`transform`},children:(0,$.jsxs)(`div`,{style:{pointerEvents:`none`,position:`relative`,width:`24px`,height:`24px`},children:[(0,$.jsxs)(`svg`,{width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,style:{color:i.colorPrimary,filter:`drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3))`},children:[(0,$.jsx)(`title`,{children:`${r.name||r.email}'s cursor`}),(0,$.jsx)(`path`,{d:`M5.5 3.5L18.5 12L11 14L8 20.5L5.5 3.5Z`,fill:`currentColor`,stroke:i.colorBgElevated,strokeWidth:`1.5`,strokeLinejoin:`round`})]}),(0,$.jsxs)(`div`,{style:{position:`absolute`,top:`24px`,left:`12px`,display:`flex`,alignItems:`center`,gap:`4px`,padding:`4px 8px`,borderRadius:`4px`,fontSize:`12px`,whiteSpace:`nowrap`,background:i.colorBgElevated,color:i.colorText,boxShadow:i.boxShadowSecondary},children:[(0,$.jsx)(`span`,{style:{fontSize:`14px`},children:r.emoji||`👤`}),(0,$.jsx)(`span`,{style:{fontWeight:500},children:r.name||r.email})]})]})},e))})},ks=({board:e,client:t,sessionsByBranch:n,branches:r,boardObjectsForBoard:i,setNodes:a,deletedObjectsRef:o,eraserMode:s=!1,selectedSessionId:c,activeUrlTargetArtifactId:l,onEditMarkdown:u})=>{let d=(0,Q.useRef)(e);d.current=e;let f=(0,Q.useMemo)(()=>e?.objects,[e?.objects?JSON.stringify(e.objects):null]);(0,Q.useMemo)(()=>e?r.filter(t=>t.board_id===e.board_id).map(e=>e.branch_id).flatMap(e=>n.get(e)||[]).map(e=>e.session_id):[],[e,r,n]);let p=(0,Q.useCallback)(async(e,n)=>{let r=d.current;if(!(!r||!t))try{await t.service(`boards`).patch(r.board_id,{_action:`upsertObject`,objectId:e,objectData:n})}catch(e){console.error(`Failed to update object:`,e)}},[t]),m=(0,Q.useCallback)(async(n,r)=>{if(!(!e||!t)){o.current.add(n),a(e=>e.filter(e=>e.id!==n));try{await t.service(`boards`).patch(e.board_id,{_action:`deleteZone`,objectId:n}),setTimeout(()=>{o.current.delete(n)},1e3)}catch(e){console.error(`Failed to delete zone:`,e),o.current.delete(n)}}},[e,t,a,o]),h=(0,Q.useCallback)(async e=>{let n=d.current;if(!(!n||!t)){o.current.add(e),a(t=>t.filter(t=>t.id!==e));try{await t.service(`boards`).patch(n.board_id,{_action:`removeObject`,objectId:e}),setTimeout(()=>{o.current.delete(e)},1e3)}catch(t){console.error(`Failed to delete object:`,t),o.current.delete(e)}}},[t,a,o]),g=(0,Q.useCallback)(async(e,n)=>{if(t){o.current.add(e),a(t=>t.filter(t=>t.id!==e));try{await t.service(`artifacts`).remove(n),setTimeout(()=>{o.current.delete(e)},1e3)}catch(t){console.error(`Failed to delete artifact:`,t),o.current.delete(e)}}},[t,a,o]);return{getBoardObjectNodes:(0,Q.useCallback)(()=>f?Object.entries(f).filter(([,e])=>{let t=typeof e.x==`number`&&typeof e.y==`number`&&!Number.isNaN(e.x)&&!Number.isNaN(e.y);return t||console.warn(`Skipping board object with invalid position:`,e),t}).map(([e,t])=>{if(t.type===`app`)return{id:e,type:`appNode`,position:{x:t.x,y:t.y},selectable:!0,zIndex:400,className:s?`eraser-mode`:void 0,data:{objectId:e,title:t.title,description:t.description,template:t.template,files:t.files,dependencies:t.dependencies,entryFile:t.entryFile,showEditor:t.showEditor,showConsole:t.showConsole,width:t.width,height:t.height,onUpdate:p,onDelete:h}};if(t.type===`artifact`)return{id:e,type:`artifactNode`,position:{x:t.x,y:t.y},selectable:!0,zIndex:400,className:s?`eraser-mode`:void 0,data:{objectId:e,artifactId:t.artifact_id,width:t.width,height:t.height,isActiveUrlTarget:t.artifact_id===l,onUpdate:p,onDeleteArtifact:g}};if(t.type===`markdown`)return{id:e,type:`markdown`,position:{x:t.x,y:t.y},selectable:!0,zIndex:300,className:s?`eraser-mode`:void 0,data:{objectId:e,content:t.content,width:t.width,onUpdate:p,onEdit:u,onDelete:h}};let r=0;if(t.type===`zone`){for(let t of i)if(t.zone_id===e){let e=t.branch_id&&n.get(t.branch_id)||[];r+=e.length}}let a=t.type===`zone`?t.locked:!1;return{id:e,type:`zone`,position:{x:t.x,y:t.y},...a?{draggable:!1}:{},zIndex:100,className:s?`eraser-mode`:void 0,width:t.width,height:t.height,style:{width:t.width,height:t.height},data:{objectId:e,label:t.type===`zone`?t.label:``,width:t.width,height:t.height,borderColor:t.type===`zone`?t.borderColor:void 0,backgroundColor:t.type===`zone`?t.backgroundColor:void 0,color:t.color,status:t.type===`zone`?t.status:void 0,locked:a,x:t.x,y:t.y,trigger:t.type===`zone`?t.trigger:void 0,sessionCount:r,onUpdate:p,onDelete:m}}}):[],[f,i,n,p,m,h,g,s,l,u]),addZoneNode:(0,Q.useCallback)(async(e,n)=>{let r=d.current;if(!r||!t)return;let i=`zone-${Date.now()}`;a(t=>[...t,{id:i,type:`zone`,position:{x:e,y:n},zIndex:100,style:{width:400,height:600},data:{objectId:i,label:`New Zone`,width:400,height:600,color:void 0,onUpdate:p}}]);try{await t.service(`boards`).patch(r.board_id,{_action:`upsertObject`,objectId:i,objectData:{type:`zone`,x:e,y:n,width:400,height:600,label:`New Zone`}})}catch(e){console.error(`Failed to add zone node:`,e),a(e=>e.filter(e=>e.id!==i))}},[t,a,p]),deleteObject:h,deleteZone:m,batchUpdateObjectPositions:(0,Q.useCallback)(async e=>{let n=d.current;if(!(!n||!t||Object.keys(e).length===0))try{let r={};for(let[t,i]of Object.entries(e)){if(o.current.has(t))continue;let e=n.objects?.[t];e&&(r[t]={...e,x:i.x,y:i.y})}if(Object.keys(r).length===0)return;await t.service(`boards`).patch(n.board_id,{_action:`batchUpsertObjects`,objects:r})}catch(e){console.error(`Failed to persist object positions:`,e)}},[t,o])}};function As(e,t){if(e.positionAbsolute)return{x:e.positionAbsolute.x,y:e.positionAbsolute.y};if(e.parentId){let n=t.find(t=>t.id===e.parentId);if(n){let r=As(n,t);return{x:r.x+e.position.x,y:r.y+e.position.y}}}return{x:e.position.x,y:e.position.y}}function js(e,t){return e.positionAbsolute?{x:e.positionAbsolute.x,y:e.positionAbsolute.y}:As(e,t)}function Ms(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Ns(e,t){return{x:e.x+t.x,y:e.y+t.y}}function Ps(e,t){return t?Ms(e,t.position):e}function Fs(e,t){let n=t.filter(n=>{if(n.type!==`zone`&&n.type!==`branchNode`)return!1;let r=n,i=r.measured?.width||n.width||(typeof n.style?.width==`number`?n.style.width:0),a=r.measured?.height||n.height||(typeof n.style?.height==`number`?n.style.height:0),{x:o,y:s}=As(n,t);return e.x>=o&&e.x<=o+i&&e.y>=s&&e.y<=s+a});return{branchNode:n.find(e=>e.type===`branchNode`),zoneNode:n.find(e=>e.type===`zone`)}}function Is(e,t){if(!t)return null;for(let[n,r]of Object.entries(t))if(r.type===`zone`&&e.x>=r.x&&e.x<=r.x+r.width&&e.y>=r.y&&e.y<=r.y+r.height)return{zoneId:n,zoneData:r};return null}function Ls(e,t){let n=t?.objects?.[e];return{parentId:`zone-${e}`,parentLabel:n?.type===`zone`?`📍 ${n.label}`:void 0,parentColor:n?.type===`zone`?n.color:void 0}}function Rs(e,t){let n=t.find(t=>t.branch_id===e);return{parentId:e,parentLabel:n?`🌳 ${n.name}`:void 0,parentColor:void 0}}function zs(e,t){let n=new Set(e.map(e=>e.id)),r=!1,i=e.map(e=>e.parentId&&!n.has(e.parentId)?(r=!0,t?.onOrphan?.(e,e.parentId),{...e,parentId:void 0}):e);return r?i:e}function Bs(e){return e?.type===`zone`&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.width)&&Number.isFinite(e.height)}function Vs(e,t,n){if(!e)return;let r=t?.[e];if(!r){n?.onInvalid?.(n.entityId,e,`missing zone object`);return}if(!Bs(r)){n?.onInvalid?.(n.entityId,e,`zone object is not renderable`);return}return e}async function Hs(e,t,n={},r=`empty`){if(!t||typeof t!=`string`)return``;try{return(await e.service(`templates`).create({template:t,context:n,onError:r})).rendered}catch(e){return console.error(`Template render failed:`,e),r===`raw`?t:``}}var Us=({open:e,onCancel:t,client:n,branchId:i,branch:a,sessionsByBranch:s,zoneName:c,trigger:l,boardName:u,boardDescription:d,boardCustomContext:f,availableAgents:p,mcpServerById:m,currentUser:h,onExecute:g})=>{let[_]=q.useForm(),[v,y]=(0,Q.useState)(`create_new`),[b,x]=(0,Q.useState)(`claude-code`),[S,C]=(0,Q.useState)(``),[w,T]=(0,Q.useState)(`prompt`),[D,O]=(0,Q.useState)(``),[k,A]=(0,Q.useState)(!0),[j,N]=(0,Q.useState)({}),P=(0,Q.useMemo)(()=>s.get(i)||[],[s,i]),F=(0,Q.useMemo)(()=>{if(P.length===0)return``;let e=P.filter(e=>e.status===`running`);return e.length>0?e.sort((e,t)=>new Date(t.last_updated||t.created_at).getTime()-new Date(e.last_updated||e.created_at).getTime())[0].session_id:P.sort((e,t)=>new Date(t.last_updated||t.created_at).getTime()-new Date(e.last_updated||e.created_at).getTime())[0].session_id},[P]),L=(0,Q.useMemo)(()=>P.find(e=>e.session_id===S),[S,P]);return(0,Q.useEffect)(()=>{e&&(y(P.length>0?`reuse_existing`:`create_new`),C(F),T(`prompt`),_.resetFields(),N({}))},[e,F,_,P.length]),(0,Q.useEffect)(()=>{if(v===`create_new`&&b){let e=P.length>0?[...P].sort((e,t)=>new Date(t.last_updated||t.created_at).getTime()-new Date(e.last_updated||e.created_at).getTime())[0]:null,t=h?.default_agentic_config?.[b],n=a?.mcp_server_ids&&a.mcp_server_ids.length>0?a.mcp_server_ids:t?.mcpServerIds||[],r={permissionMode:e?.permission_config?.mode||t?.permissionMode,modelConfig:e?.model_config||t?.modelConfig,mcpServerIds:n};_.setFieldsValue(r),N(r)}},[v,b,h,P,_,a?.mcp_server_ids]),(0,Q.useEffect)(()=>{v===`reuse_existing`&&L&&_.setFieldsValue({agent:L.agentic_tool,permissionMode:L.permission_config?.mode,modelConfig:L.model_config})},[v,L,_]),(0,Q.useEffect)(()=>{let e=!1;if(!n){O(l.template),A(!1);return}let t=v===`reuse_existing`&&S?P.find(e=>e.session_id===S):void 0,r=pt({branch:a,board:{name:u,description:d,custom_context:f},zone:{label:c},session:t?{description:t.description,custom_context:t.custom_context}:void 0});return A(!0),Hs(n,l.template,r,`raw`).then(t=>{e||(O(t),A(!1))}),()=>{e=!0}},[n,l.template,a,u,d,f,c,v,S,P]),(0,$.jsx)(He,{title:`Zone Trigger: ${c}`,open:e,onCancel:t,onOk:async()=>{if(v===`create_new`)await g({sessionId:`new`,action:`prompt`,renderedTemplate:D,agent:b,modelConfig:j.modelConfig,permissionMode:j.permissionMode,mcpServerIds:j.mcpServerIds});else{let e=_.getFieldsValue(!0),t={sessionId:S,action:w,renderedTemplate:D,permissionMode:e.permissionMode||L?.permission_config?.mode};(w===`fork`||w===`spawn`)&&(t.agent=e.agent||L?.agentic_tool,t.modelConfig=e.modelConfig,t.mcpServerIds=e.mcpServerIds),await g(t)}},okText:`Execute Trigger`,okButtonProps:{disabled:k},cancelText:`Cancel`,width:700,children:(0,$.jsxs)(K,{orientation:`vertical`,size:`large`,style:{width:`100%`},children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(o.Group,{value:v,onChange:e=>y(e.target.value),style:{width:`100%`},children:(0,$.jsxs)(K,{orientation:`vertical`,size:`middle`,style:{width:`100%`},children:[(0,$.jsx)(o,{value:`create_new`,children:`Create a new session`}),(0,$.jsx)(o,{value:`reuse_existing`,disabled:P.length===0,children:`Reuse a session`})]})}),P.length===0&&(0,$.jsx)(H,{title:`No existing sessions in this branch`,type:`info`,showIcon:!0,style:{marginTop:12}})]}),v===`reuse_existing`&&(0,$.jsxs)(q,{form:_,layout:`vertical`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(r.Text,{strong:!0,style:{display:`block`,marginBottom:8},children:`Select Session`}),(0,$.jsx)(E,{value:S,onChange:C,style:{width:`100%`},size:`large`,options:P.map(e=>({value:e.session_id,label:(0,$.jsxs)(`span`,{children:[Z(e,{fallbackChars:50,includeIdFallback:!0}),` `,`(`,e.status,`)`]})}))})]}),(0,$.jsxs)(`div`,{style:{marginTop:24},children:[(0,$.jsx)(r.Text,{strong:!0,style:{display:`block`,marginBottom:8},children:`Choose Action`}),(0,$.jsx)(o.Group,{value:w,onChange:e=>T(e.target.value),style:{width:`100%`},children:(0,$.jsxs)(K,{orientation:`vertical`,style:{width:`100%`},children:[(0,$.jsx)(o,{value:`prompt`,children:`Prompt - Send message to selected session`}),(0,$.jsx)(o,{value:`fork`,children:`Fork - Fork selected session and send message`}),(0,$.jsx)(o,{value:`spawn`,children:`Spawn - Spawn child session and send message`})]})})]})]}),(0,$.jsxs)(q,{form:_,layout:`vertical`,onValuesChange:e=>{v===`create_new`&&N(t=>({...t,...e}))},children:[v===`create_new`&&(0,$.jsxs)(`div`,{children:[(0,$.jsx)(r.Text,{strong:!0,style:{display:`block`,marginBottom:8},children:`Select Agent`}),(0,$.jsx)(Mn,{agents:p,selectedAgentId:b,onSelect:x,columns:2,showHelperText:!1,showComparisonLink:!1})]}),(0,$.jsx)(I,{ghost:!0,destroyOnHidden:!1,defaultActiveKey:[],expandIcon:({isActive:e})=>(0,$.jsx)(M,{rotate:e?180:0}),items:[{key:`agentic-tool-config`,label:(0,$.jsx)(r.Text,{strong:!0,children:v===`create_new`?`Agentic Tool Configuration (optional)`:`Session Configuration (${L?.agentic_tool||`unknown`})`}),children:(0,$.jsxs)(K,{orientation:`vertical`,size:`middle`,style:{width:`100%`},children:[v===`reuse_existing`&&(0,$.jsx)(H,{title:`Showing current configuration. These settings are for reference.`,type:`info`,showIcon:!0}),(0,$.jsx)(zt,{agenticTool:(v===`create_new`?b:L?.agentic_tool)||`claude-code`,mcpServerById:m,showHelpText:!0})]})}],style:{marginTop:16}})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(r.Text,{strong:!0,style:{display:`block`,marginBottom:8},children:`Prompt (editable)`}),(0,$.jsx)(oe,{spinning:k,delay:200,description:`Rendering template…`,children:(0,$.jsx)(ce.TextArea,{value:D,onChange:e=>O(e.target.value),rows:8,style:{fontFamily:`monospace`,fontSize:`13px`,lineHeight:`1.5`},placeholder:`Edit the rendered prompt before executing...`})})]})]})})},Ws=[],Gs=Q.memo(({data:e})=>(0,$.jsx)(`div`,{className:`session-node`,children:(0,$.jsx)(hs,{session:e.session,userById:e.userById,currentUserId:e.currentUserId,onTaskClick:e.onTaskClick,onSessionClick:e.onSessionClick,onDelete:e.onDelete,onOpenSettings:e.onOpenSettings,onUnpin:e.onUnpin,isPinned:e.isPinned,zoneName:e.zoneName,zoneColor:e.zoneColor,defaultExpanded:!e.compact})})),Ks=Q.memo(({data:e})=>(0,$.jsx)(`div`,{className:`card-node`,children:(0,$.jsx)(us,{data:e})})),qs={sessionNode:Gs,branchNode:Q.memo(({data:e})=>(0,$.jsx)(`div`,{className:`branch-node`,children:(0,$.jsx)(io,{branch:e.branch,repo:e.repo,sessions:e.sessions,userById:e.userById,currentUserId:e.currentUserId,selectedSessionId:e.selectedSessionId,isActiveUrlTarget:e.isActiveUrlTarget,onTaskClick:e.onTaskClick,onSessionClick:e.onSessionClick,onCreateSession:e.onCreateSession,onForkSession:e.onForkSession,onSpawnSession:e.onSpawnSession,onArchiveOrDelete:e.onArchiveOrDelete,onOpenSettings:e.onOpenSettings,onOpenSessionSettings:e.onOpenSessionSettings,onOpenTerminal:e.onOpenTerminal,onStartEnvironment:e.onStartEnvironment,onStopEnvironment:e.onStopEnvironment,onViewLogs:e.onViewLogs,onNukeEnvironment:e.onNukeEnvironment,onExecuteScheduleNow:e.onExecuteScheduleNow,onUnpin:e.onUnpin,isPinned:e.isPinned,zoneName:e.zoneName,client:e.client,zoneColor:e.zoneColor,defaultExpanded:!e.compact})}),(e,t)=>{let n=e.data,r=t.data;return n.branch===r.branch&&n.repo===r.repo&&n.sessions===r.sessions&&n.userById===r.userById&&n.currentUserId===r.currentUserId&&n.selectedSessionId===r.selectedSessionId&&n.isActiveUrlTarget===r.isActiveUrlTarget&&n.isPinned===r.isPinned&&n.zoneName===r.zoneName&&n.zoneColor===r.zoneColor&&n.compact===r.compact&&n.client===r.client&&n.onTaskClick===r.onTaskClick&&n.onSessionClick===r.onSessionClick&&n.onCreateSession===r.onCreateSession&&n.onForkSession===r.onForkSession&&n.onSpawnSession===r.onSpawnSession&&n.onArchiveOrDelete===r.onArchiveOrDelete&&n.onOpenSettings===r.onOpenSettings&&n.onOpenSessionSettings===r.onOpenSessionSettings&&n.onOpenTerminal===r.onOpenTerminal&&n.onStartEnvironment===r.onStartEnvironment&&n.onStopEnvironment===r.onStopEnvironment&&n.onViewLogs===r.onViewLogs&&n.onNukeEnvironment===r.onNukeEnvironment&&n.onExecuteScheduleNow===r.onExecuteScheduleNow&&n.onUnpin===r.onUnpin}),cardNode:Ks,zone:kr,comment:Mr,markdown:Es,appNode:vs,artifactNode:ws},Js=Object.freeze([]),Ys=(0,Q.forwardRef)(({board:e,client:t,sessionById:i,sessionsByBranch:a,repoById:o,branches:s,primaryAssistantId:c,branchById:l,boardObjectsByBoardId:u,commentById:d,cardById:f,userById:p,currentUserId:m,selectedSessionId:h,activeUrlTargetBranchId:g,activeUrlTargetArtifactId:_,availableAgents:v=[],mcpServerById:y=new Map,sessionMcpServerIds:b=new Map,onSessionClick:x,onTaskClick:S,onSessionUpdate:C,onSessionDelete:w,onForkSession:T,onSpawnSession:E,onUpdateSessionMcpServers:D,onOpenSettings:O,onCreateSessionForBranch:k,onOpenBranch:j,onArchiveOrDeleteBranch:M,onOpenTerminal:P,onStartEnvironment:F,onStopEnvironment:I,onViewLogs:L,onNukeEnvironment:z,onExecuteScheduleNow:B,onOpenCommentsPanel:te,onCommentHover:V,onCommentSelect:ne},re)=>{let{token:H}=N.useToken(),U=Wt(),ie=jr[Ot(H)?`dark`:`light`],ae=!!e?.custom_css?.trim(),oe=!!e?.background_color?.trim(),se=ae||oe,le=se?void 0:ie,W=e?.board_id?`board-css-${gt(e.board_id)}`:``,ue=(0,Q.useMemo)(()=>se?os((oe?`background: ${e?.background_color};\n`:``)+(e?.custom_css||``),`.${W}`):``,[e?.custom_css,e?.background_color,W,se,oe]),de=e?.board_id,fe=(0,Q.useMemo)(()=>de&&u.get(de)||Js,[de,u]),pe=(0,Q.useMemo)(()=>{let e=new Map;for(let t of fe)t.branch_id&&e.set(t.branch_id,t);return e},[fe]),me=(0,Q.useMemo)(()=>{let e=new Map;for(let t of fe)t.card_id&&e.set(t.card_id,t);return e},[fe]),[he,ge]=(0,Q.useState)(null),[ve,xe]=(0,Q.useState)(!1),[G,Se]=(0,Q.useState)(`select`),[Te,Ee]=(0,Q.useState)(null),[De,ke]=(0,Q.useState)(null),[Ae,je]=(0,Q.useState)(``),[Me,Ne]=(0,Q.useState)(null),[Pe,Fe]=(0,Q.useState)(``),[Ie,Le]=(0,Q.useState)(500),[K,Re]=(0,Q.useState)(null),ze=(0,Q.useRef)(null),Be=(0,Q.useRef)({}),Ve=(0,Q.useRef)(!1);(0,Q.useCallback)((t,n=400,r=200)=>{if(!e?.objects)return null;for(let[i,a]of Object.entries(e.objects)){if(a.type!==`zone`)continue;let e=t.x+n/2,o=t.y+r/2;if(e>=a.x&&e<=a.x+a.width&&o>=a.y&&o<=a.y+a.height)return{zoneId:i,zoneData:a}}return null},[e?.objects]);let Ue=(0,Q.useRef)({}),We=(0,Q.useRef)(new Set),[Ge,q,Ke]=Ir([]),[qe,Je,Ye]=Ur([]),Xe=(0,Q.useRef)(new Set),Ze=(0,Q.useCallback)((e,t)=>{let n=`${e.id}:${t}`;Xe.current.has(n)||(Xe.current.add(n),console.warn(`Ignoring stale React Flow parentId on board node`,{nodeId:e.id,nodeType:e.type,missingParentId:t}))},[]),Qe=(0,Q.useCallback)(e=>{q(t=>zs(typeof e==`function`?e(t):e,{onOrphan:Ze}))},[q,Ze]),Y=(0,Q.useRef)(null),et=(0,Q.useRef)({}),tt=(0,Q.useCallback)((e,t,n)=>{let r=mt.current?.getNode(e);r&&(Fe(t),Le(n),Ne({position:r.position,objectId:e}),Se(`markdown`))},[]),{getBoardObjectNodes:nt,batchUpdateObjectPositions:rt,deleteObject:it}=ks({board:e,client:t,sessionsByBranch:a,branches:s,boardObjectsForBoard:fe,setNodes:Qe,deletedObjectsRef:We,eraserMode:G===`eraser`,selectedSessionId:h,activeUrlTargetArtifactId:_,onEditMarkdown:tt}),at=(0,Q.useMemo)(()=>{if(!e?.objects)return{};let t={};return Object.entries(e.objects).forEach(([e,n])=>{n.type===`zone`&&(t[e]=n.label)}),t},[e]),ot=(0,Q.useRef)(new Set),st=(0,Q.useCallback)((e,t,n,r)=>{let i=`${e}:${t??`unknown`}:${n}`;ot.current.has(i)||(ot.current.add(i),console.warn(`Ignoring stale board zone reference for ${e} node`,{entityId:t,zoneId:n,reason:r}))},[]),ct=(0,Q.useCallback)(async n=>{if(!e||!t)return;let r=pe.get(n);if(!r?.zone_id)return;let i=e.objects?.[r.zone_id];if(!i){console.error(`Cannot unpin: zone not found`,{zoneId:r.zone_id});return}let a=r.position.x+i.x,o=r.position.y+i.y;Ue.current[n]={x:a,y:o},Qe(e=>e.map(e=>e.id===n?{...e,position:{x:a,y:o},parentId:void 0}:e)),await t.service(`board-objects`).patch(r.object_id,{position:{x:a,y:o},zone_id:null})},[e,t,pe,Qe]),lt=(0,Q.useMemo)(()=>{let n=[];return s.forEach((r,i)=>{if(c&&r.branch_id===c)return;let s=pe.get(r.branch_id),l=s?{x:s.position.x,y:s.position.y}:{x:100,y:100+i*500},u=s?.zone_id,d=u?at[u]||`Unknown Zone`:void 0,f=Vs(u,e?.objects,{entityId:r.branch_id,onInvalid:(e,t,n)=>st(`branch`,e,t,n)}),_=f?e?.objects?.[f]:void 0,v=_&&_.type===`zone`?_.borderColor||_.color:void 0,y=a.get(r.branch_id)||Ws,b=o.get(r.repo_id);if(!b){console.error(`Repo not found for branch ${r.branch_id}`);return}n.push({id:r.branch_id,type:`branchNode`,dragHandle:`.drag-handle`,position:l,zIndex:500,width:500,height:200,parentId:f,extent:void 0,data:{branch:r,repo:b,sessions:y,userById:p,currentUserId:m,selectedSessionId:h,isActiveUrlTarget:r.branch_id===g,onTaskClick:S,onSessionClick:x,onCreateSession:k,onForkSession:T,onSpawnSession:E,onArchiveOrDelete:M,onOpenSettings:j,onOpenSessionSettings:O,onOpenTerminal:P,onStartEnvironment:F,onStopEnvironment:I,onViewLogs:L,onNukeEnvironment:z,onExecuteScheduleNow:B,onUnpin:ct,compact:!1,isPinned:!!f,zoneName:d,zoneColor:v,client:t}})}),n},[e,s,c,pe,o,a,m,h,g,x,S,k,T,E,M,j,O,P,F,I,L,z,B,ct,at,st,p,t]),ut=(0,Q.useCallback)(e=>{let t=f.get(e);t&&(ge(t),xe(!0))},[f]),dt=(0,Q.useCallback)(async n=>{if(!e||!t)return;let r=me.get(n);if(!r?.zone_id)return;let i=e.objects?.[r.zone_id];if(!i)return;let a=r.position.x+i.x,o=r.position.y+i.y;Ue.current[`card-${n}`]={x:a,y:o},Qe(e=>e.map(e=>e.id===`card-${n}`?{...e,position:{x:a,y:o},parentId:void 0}:e)),await t.service(`board-objects`).patch(r.object_id,{position:{x:a,y:o},zone_id:null})},[e,t,me,Qe]),ft=(0,Q.useMemo)(()=>{let t=[];for(let[n,r]of me.entries()){let i=f.get(n);if(!i||i.archived)continue;let a={x:r.position.x,y:r.position.y},o=r.zone_id,s=o?at[o]||`Unknown Zone`:void 0,c=Vs(o,e?.objects,{entityId:n,onInvalid:(e,t,n)=>st(`card`,e,t,n)}),l=c?e?.objects?.[c]:void 0,u=l&&l.type===`zone`?l.borderColor||l.color:void 0;t.push({id:`card-${n}`,type:`cardNode`,dragHandle:`.drag-handle`,position:a,zIndex:500,width:380,height:120,parentId:c,extent:void 0,data:{card:i,isPinned:!!c,zoneName:s,zoneColor:u,onClick:ut,onUnpin:dt}})}return t},[e,me,f,at,ut,dt,st]),pt=(0,Q.useMemo)(()=>[],[]),mt=(0,Q.useRef)(null),ht=(0,Q.useRef)(null),[_t,X]=(0,Q.useState)(!1),vt=(0,Q.useRef)(null);(0,Q.useImperativeHandle)(re,()=>({getViewportCenter:()=>{if(!mt.current||!ht.current)return null;let e=ht.current.getBoundingClientRect(),t=e.left+e.width/2,n=e.top+e.height/2;return mt.current.screenToFlowPosition({x:t,y:n})}}),[]);let yt=(0,Q.useCallback)(e=>{let t=mt.current;if(!t)return!1;let n=t.getNodes(),r=t.getNode(e);if(r||=n.find(t=>t.data?.artifactId===e),!r)return!1;let i=js(r,n),a=r.width??500,o=r.height??200;return t.setCenter(i.x+a/2,i.y+o/2,{zoom:t.getZoom(),duration:400}),!0},[]);Xt(yt);let bt=pn();rs({client:t,boardId:e?.board_id,reactFlowInstance:mt.current,enabled:!!e&&!!t});let xt=(0,Q.useMemo)(()=>{let t=[],n=It(d),r=n.filter(t=>(t.position?.absolute||t.position?.relative)&&t.board_id===e?.board_id&&!t.resolved),i=new Map;for(let e of n)e.parent_comment_id&&i.set(e.parent_comment_id,(i.get(e.parent_comment_id)||0)+1);for(let n of r){let r=n.created_by?p.get(n.created_by):void 0,a,o,c,u;if(n.position?.relative){let t=n.position.relative;if(a={x:t.offset_x,y:t.offset_y},t.parent_type===`zone`){let n=`zone-${t.parent_id}`;if(e?.objects?.[n]?.type===`zone`){let n=Ls(t.parent_id,e??void 0);o=n.parentId,c=n.parentLabel,u=n.parentColor}else continue}else if(t.parent_type===`branch`)if(l.get(t.parent_id)){let e=Rs(t.parent_id,s);o=e.parentId,c=e.parentLabel,u=e.parentColor}else continue}else if(n.position?.absolute)a=n.position.absolute,o=void 0,c=void 0,u=void 0;else continue;t.push({id:`comment-${n.comment_id}`,type:`comment`,position:a,parentId:o,selectable:!0,zIndex:1e3,data:{comment:n,replyCount:i.get(n.comment_id)||0,user:r,parentLabel:c,parentColor:u,onClick:e=>{ne?.(e),te?.()},onHover:e=>{V?.(e)},onLeave:()=>{V?.(null)}}})}return t},[d,e,s,p,l,te,V,ne]),St=(0,Q.useCallback)((e,t,n)=>e.map(r=>{let i=t.find(e=>e.id===r.id),a=Ue.current[r.id];if(a){let t=r.position;if(r.parentId){let i=[...e,...n].find(e=>e.id===r.parentId);i&&(t=Ns(r.position,i.position))}if(Math.abs(a.x-t.x)<=1&&Math.abs(a.y-t.y)<=1)return delete Ue.current[r.id],{...r,selected:i?.selected,zIndex:i?.zIndex??r.zIndex};let o=a;if(r.parentId){let t=[...e,...n].find(e=>e.id===r.parentId);t&&(o=Ms(a,t.position))}return{...r,position:o,selected:i?.selected,zIndex:i?.zIndex??r.zIndex}}return{...r,selected:i?.selected,zIndex:i?.zIndex??r.zIndex}}),[]),Ct=(0,Q.useCallback)(e=>{if(e.type===`comment`)return H.colorText;if(e.type===`markdown`)return`${H.colorText}B3`;if(e.type===`zone`)return`${H.colorText}66`;if(e.type===`cardNode`)return e.data.card?.effective_color||H.colorPrimaryBorder;let t=e.data.session;if(!t)return H.colorPrimaryBorder;switch(t.status){case`running`:return H.colorPrimary;case`completed`:return H.colorSuccess;case`failed`:return H.colorError;default:return H.colorPrimaryBorder}},[H.colorText,H.colorPrimaryBorder,H.colorPrimary,H.colorSuccess,H.colorError]),wt=(0,Q.useCallback)(e=>({zones:e.filter(e=>e.type===`zone`),markdown:e.filter(e=>e.type===`markdown`),branches:e.filter(e=>e.type===`branchNode`),cards:e.filter(e=>e.type===`cardNode`),apps:e.filter(e=>e.type===`appNode`||e.type===`artifactNode`),comments:e.filter(e=>e.type===`comment`)}),[]),Tt=(0,Q.useCallback)((e,t,n,r,i,a=[])=>zs([...e,...n,...r,...a,...t,...i],{onOrphan:Ze}),[Ze]);(0,Q.useEffect)(()=>{if(Ve.current)return;let e=nt();Qe(t=>{let{comments:n}=wt(t),r=e.filter(e=>e.type===`zone`&&!We.current.has(e.id)).map(e=>{let n=t.find(t=>t.id===e.id);return{...e,selected:n?.selected}}),i=e.filter(e=>e.type===`markdown`&&!We.current.has(e.id)).map(e=>{let n=t.find(t=>t.id===e.id);return{...e,selected:n?.selected}}),a=e.filter(e=>(e.type===`appNode`||e.type===`artifactNode`)&&!We.current.has(e.id)).map(e=>{let n=t.find(t=>t.id===e.id);return{...e,selected:n?.selected}});return Tt(r,i,St(lt,t,r),St(ft,t,r),n,a)})},[lt,ft,nt,Qe,Tt,St,wt]),(0,Q.useEffect)(()=>{Ve.current||Qe(e=>{let{zones:t,markdown:n,branches:r,cards:i,apps:a}=wt(e);return Tt(t,n,r,i,xt.map(e=>{let n=Ue.current[e.id];if(n){let i=e.position;if(e.parentId){let n=[...r,...t].find(t=>t.id===e.parentId);n&&(i=Ns(e.position,n.position))}if(Math.abs(n.x-i.x)<=1&&Math.abs(n.y-i.y)<=1)return delete Ue.current[e.id],e;let a=n;if(e.parentId){let i=[...r,...t].find(t=>t.id===e.parentId);i&&(a=Ms(n,i.position))}return{...e,position:a}}return e}),a)})},[xt,Qe,Tt,wt]),(0,Q.useEffect)(()=>{Je(pt)},[pt,Je]),(0,Q.useEffect)(()=>{if(!_t||!mt.current||Ge.length===0||e?.board_id===vt.current)return;let t=setTimeout(()=>{let t=bt();if(t&&yt(t)){vt.current=e?.board_id??null;return}mt.current?.fitView({padding:.2,minZoom:.1,maxZoom:1,duration:200}),vt.current=e?.board_id??null},100);return()=>clearTimeout(t)},[_t,Ge.length,e?.board_id,bt,yt]);let Et=(0,Q.useCallback)(n=>{n.forEach(n=>{if(n.type===`dimensions`&&n.dimensions){let r=Ge.find(e=>e.id===n.id);if(r?.type===`zone`){let i=r.style?.width,a=r.style?.height,o=n.dimensions.width,s=n.dimensions.height;if(i&&a&&Math.abs(Number(i)-o)<1&&Math.abs(Number(a)-s)<1)return;et.current[n.id]={width:o,height:s},Y.current&&clearTimeout(Y.current),Y.current=setTimeout(async()=>{let n=et.current;if(et.current={},!(!e||!t))for(let[r,i]of Object.entries(n)){let n=e.objects?.[r];if(n&&n.type===`zone`){let a={...n,width:i.width,height:i.height};try{await t.service(`boards`).patch(e.board_id,{_action:`upsertObject`,objectId:r,objectData:a})}catch(e){console.error(`Failed to persist zone resize:`,e)}}}},500)}}}),Ke(n)},[Ge,e,t,Ke]),Dt=(0,Q.useCallback)(()=>{Ve.current=!0},[]),kt=(0,Q.useCallback)((e,t)=>{let n=t.positionAbsolute||t.position;Ue.current[t.id]={x:n.x,y:n.y}},[]),At=(0,Q.useCallback)((n,r)=>{if(!e||!t||!mt.current)return;Ve.current=!1;let i=r.positionAbsolute||r.position;Ue.current[r.id]={x:i.x,y:i.y},Be.current[r.id]={x:i.x,y:i.y},ze.current&&clearTimeout(ze.current),ze.current=setTimeout(async()=>{let n=Be.current;Be.current={};try{let r=[],i={},a={},o={},s=[],c=Ge;for(let[l,u]of Object.entries(n)){let n=c.find(e=>e.id===l);if(n?.type===`zone`)i[l]=u;else if(n?.type===`markdown`)a[l]=u;else if(n?.type===`artifactNode`)o[l]=u;else if(n?.type===`comment`){let e=l.replace(`comment-`,``),t=u,{branchNode:n,zoneNode:r}=Fs(t,c),i,a,o;n?(i=n.id,a=`branch`,o=n.id):r&&(i=r.id.replace(`zone-`,``),a=`zone`,o=r.id),s.push({comment_id:e,position:t,parentId:i,parentType:a,newReactFlowParentId:o})}else if(n?.type===`cardNode`){let r=l.replace(`card-`,``),i=u,a=n.width||380,o=n.height||120,s=Is({x:i.x+a/2,y:i.y+o/2},e.objects),d=s?.zoneId,f=s?{x:s.zoneData.x,y:s.zoneData.y}:null;if(d){let e=c.find(e=>e.id===d);e&&(f={x:e.position.x,y:e.position.y})}let p=Ps(i,d&&f?{id:d,position:f}:null),m=me.get(r);if(m){let e={position:p,zone_id:d??null};await t.service(`board-objects`).patch(m.object_id,e)}}else if(n?.type===`branchNode`){let i=u,a=n.width||500,o=n.height||200,s=Is({x:i.x+a/2,y:i.y+o/2},e.objects),d=s?.zoneId,f=s?{x:s.zoneData.x,y:s.zoneData.y}:null;if(d){let e=c.find(e=>e.id===d);e&&(f={x:e.position.x,y:e.position.y})}let p=pe.get(l)?.zone_id,m=Ps(i,d&&f?{id:d,position:f}:null);if(r.push({branch_id:l,position:m,zone_id:d??null}),s){let{zoneId:e,zoneData:n}=s,r=p!==e,i=n.trigger;i&&r&&(i.behavior===`always_new`?(async()=>{try{await t.service(`branches/${l}/fire-zone-trigger`).create({zoneId:e})}catch(e){console.error(`❌ Failed to execute always_new trigger:`,e)}})():Re({branchId:l,zoneName:n.label,zoneId:e,trigger:i}))}}}if(r.length>0)for(let{branch_id:n,position:i,zone_id:a}of r){let r=pe.get(n);if(r){let e={position:i,zone_id:a};await t.service(`board-objects`).patch(r.object_id,e)}else await t.service(`board-objects`).create({board_id:e.board_id,branch_id:n,position:i,...a?{zone_id:a}:{}})}Object.keys(i).length>0&&await rt(i),Object.keys(a).length>0&&await rt(a),Object.keys(o).length>0&&await rt(o);for(let{comment_id:e,position:n,parentId:r,parentType:i,newReactFlowParentId:a}of s){let o={};if(r&&i===`zone`){let e=c.find(e=>e.id===`zone-${r}`);if(e){let t=Ps(n,{id:r,position:js(e,c)});o.position={relative:{parent_id:r,parent_type:`zone`,offset_x:t.x,offset_y:t.y}}}else o.position={absolute:n},o.branch_id=null}else if(r&&i===`branch`){let e=c.find(e=>e.id===r);if(e){let t=Ps(n,{id:r,position:js(e,c)});o.branch_id=r,o.position={relative:{parent_id:r,parent_type:`branch`,offset_x:t.x,offset_y:t.y}}}else o.position={absolute:n},o.branch_id=null}else o.position={absolute:n},o.branch_id=null;await t.service(`board-comments`).patch(e,o),delete Ue.current[`comment-${e}`],Qe(t=>t.map(r=>{if(r.id===`comment-${e}`){let e={parentId:a};if(a!==r.parentId)if(a){let r=t.find(e=>e.id===a);r&&(e.position=Ps(n,{id:a,position:js(r,t)}))}else e.position=n;return{...r,...e}}return r}))}}catch(e){console.error(`Failed to persist layout:`,e)}},500)},[e,t,rt,Ge,pe,me,Qe]);(0,Q.useEffect)(()=>()=>{ze.current&&clearTimeout(ze.current),Y.current&&clearTimeout(Y.current)},[]);let jt=(0,Q.useCallback)(e=>{mt.current&&G===`zone`&&Ee({start:{x:e.clientX,y:e.clientY},end:{x:e.clientX,y:e.clientY}})},[G]),Mt=(0,Q.useCallback)(e=>{G===`zone`&&Te&&e.buttons===1&&Ee({start:Te.start,end:{x:e.clientX,y:e.clientY}})},[G,Te]),Nt=(0,Q.useCallback)(()=>{if(G===`zone`&&Te&&mt.current){if(!U.canMutate){Ee(null),Se(`select`);return}let{start:n,end:r}=Te,i=Math.min(n.x,r.x),a=Math.min(n.y,r.y),o=Math.abs(r.x-n.x),s=Math.abs(r.y-n.y);if(o>50&&s>50){let n=mt.current.screenToFlowPosition({x:i,y:a}),r=mt.current.getViewport(),c=o/r.zoom,l=s/r.zoom,u=`zone-${Date.now()}`,d=`#d9d9d9`,f=`#d9d9d91a`;Qe(r=>[...r,{id:u,type:`zone`,position:n,zIndex:100,style:{width:c,height:l},data:{objectId:u,label:`New Zone`,width:c,height:l,borderColor:d,backgroundColor:f,onUpdate:(n,r)=>{e&&t&&t.service(`boards`).patch(e.board_id,{_action:`upsertObject`,objectId:n,objectData:r}).catch(console.error)}}}]),e&&t&&t.service(`boards`).patch(e.board_id,{_action:`upsertObject`,objectId:u,objectData:{type:`zone`,x:n.x,y:n.y,width:c,height:l,label:`New Zone`,borderColor:d,backgroundColor:f}}).catch(e=>{console.error(`Failed to add zone:`,e),Qe(e=>e.filter(e=>e.id!==u))})}Ee(null),Se(`select`)}},[G,Te,e,t,Qe,U.canMutate]),Pt=(0,Q.useCallback)(e=>{G===`comment`&&mt.current&&ke({position:mt.current.screenToFlowPosition({x:e.clientX,y:e.clientY}),screenPosition:{x:e.clientX,y:e.clientY}}),G===`markdown`&&mt.current&&Ne({position:mt.current.screenToFlowPosition({x:e.clientX,y:e.clientY})})},[G]),Ft=(0,Q.useCallback)(async()=>{if(!(!De||!e||!t||!m||!Ae.trim())&&U.canMutate)try{let n=De.position,{branchNode:r,zoneNode:i}=Fs(n,mt.current?.getNodes()||[]),a={board_id:e.board_id,created_by:m,content:Ae.trim(),resolved:!1,edited:!1,reactions:[]};if(r){let e=r.id;a.branch_id=e,a.position={relative:{parent_id:e,parent_type:`branch`,offset_x:n.x-r.position.x,offset_y:n.y-r.position.y}}}else i?a.position={relative:{parent_id:i.id.replace(`zone-`,``),parent_type:`zone`,offset_x:n.x-i.position.x,offset_y:n.y-i.position.y}}:a.position={absolute:n};await t.service(`board-comments`).create(a),ke(null),je(``),Se(`select`)}catch(e){console.error(`Failed to create spatial comment:`,e)}},[De,e,t,m,Ae,U.canMutate]),Lt=(0,Q.useCallback)(async()=>{if(!Me||!e||!t||!Pe.trim()||!U.canMutate)return;let n=Me.objectId||`markdown-${Date.now()}`,r=Me.position;Qe(i=>Me.objectId?i.map(e=>e.id===n?{...e,data:{...e.data,content:Pe,width:Ie}}:e):[...i,{id:n,type:`markdown`,position:r,zIndex:300,data:{objectId:n,content:Pe,width:Ie,onUpdate:(n,r)=>{e&&t&&t.service(`boards`).patch(e.board_id,{_action:`upsertObject`,objectId:n,objectData:r}).catch(console.error)},onEdit:tt,onDelete:it}}]);try{await t.service(`boards`).patch(e.board_id,{_action:`upsertObject`,objectId:n,objectData:{type:`markdown`,x:r.x,y:r.y,width:Ie,content:Pe}})}catch(e){console.error(`Failed to save markdown note:`,e),Me.objectId||Qe(e=>e.filter(e=>e.id!==n))}Ne(null),Fe(``),Le(500),Se(`select`)},[Me,e,t,Pe,Ie,Qe,tt,it,U.canMutate]),Rt=(0,Q.useCallback)((e,t)=>{if(G===`eraser`){if(!U.canMutate)return;(t.type===`zone`||t.type===`markdown`)&&it(t.id);return}if(G===`comment`&&mt.current){(t.type===`branchNode`||t.type===`zone`)&&ke({position:mt.current.screenToFlowPosition({x:e.clientX,y:e.clientY}),screenPosition:{x:e.clientX,y:e.clientY}});return}t.type!==`zone`&&t.type!==`comment`&&Qe(e=>{let n=e.filter(e=>e.type!==`zone`&&e.type!==`comment`),r=e.find(e=>e.id===t.id)?.zIndex??0;if(n.every(e=>e.id===t.id||(e.zIndex??0)<r))return e;let i=Math.max(0,...n.map(e=>e.zIndex??0));return e.map(e=>e.id===t.id?{...e,zIndex:i+1}:e)})},[G,it,U.canMutate,Qe]);return(0,Q.useEffect)(()=>{G!==`comment`&&De&&(ke(null),je(``))},[G,De]),(0,Q.useEffect)(()=>{!U.canMutate&&G!==`select`&&(Se(`select`),Ee(null),ke(null),je(``),Ne(null))},[U.canMutate,G]),(0,$.jsxs)(`div`,{style:{width:`100%`,height:`100vh`,position:`relative`},onPointerDown:jt,onPointerMove:Mt,onPointerUp:Nt,children:[Te&&(0,$.jsx)(`div`,{style:{position:`fixed`,left:Math.min(Te.start.x,Te.end.x),top:Math.min(Te.start.y,Te.end.y),width:Math.abs(Te.end.x-Te.start.x),height:Math.abs(Te.end.y-Te.start.y),border:`2px dashed #1677ff`,background:`rgba(22, 119, 255, 0.1)`,pointerEvents:`none`,zIndex:1e3}}),ue&&(0,$.jsx)(`style`,{children:ue}),(0,$.jsx)(`div`,{ref:ht,className:W||void 0,style:{width:`100%`,height:`100%`,background:le},children:(0,$.jsxs)(zr,{nodes:Ge,edges:qe,onNodesChange:Et,onEdgesChange:Ye,onNodeDragStart:Dt,onNodeDrag:kt,onNodeDragStop:At,onNodeClick:Rt,onPaneClick:Pt,onInit:e=>{mt.current=e,X(!0)},nodeTypes:qs,snapToGrid:!0,snapGrid:[20,20],minZoom:.1,maxZoom:1.5,nodesDraggable:U.canMutate,nodesConnectable:!1,elementsSelectable:!0,elevateNodesOnSelect:!1,panOnScroll:G===`select`&&!Te,panOnDrag:!Te,selectionOnDrag:!1,className:`tool-mode-${G}`,deleteKeyCode:null,selectionKeyCode:null,multiSelectionKeyCode:null,panActivationKeyCode:null,zoomActivationKeyCode:[`Meta`,`Control`],disableKeyboardA11y:!0,style:{background:`transparent`},children:[!le&&(0,$.jsx)(Br,{}),(0,$.jsxs)(Rr,{position:`top-left`,showZoom:!1,showFitView:!1,showInteractive:!1,children:[(0,$.jsx)(n,{title:`Zoom In`,placement:`right`,mouseEnterDelay:.3,children:(0,$.jsx)(`span`,{children:(0,$.jsx)(Vr,{onClick:e=>{e.stopPropagation(),mt.current?.zoomIn()},children:(0,$.jsx)(R,{style:{fontSize:`16px`}})})})}),(0,$.jsx)(n,{title:`Zoom Out`,placement:`right`,mouseEnterDelay:.3,children:(0,$.jsx)(`span`,{children:(0,$.jsx)(Vr,{onClick:e=>{e.stopPropagation(),mt.current?.zoomOut()},children:(0,$.jsx)(Ce,{style:{fontSize:`16px`}})})})}),(0,$.jsx)(n,{title:`Fit View`,placement:`right`,mouseEnterDelay:.3,children:(0,$.jsx)(`span`,{children:(0,$.jsx)(Vr,{onClick:e=>{e.stopPropagation(),mt.current?.fitView()},children:(0,$.jsx)(_e,{style:{fontSize:`16px`}})})})}),(0,$.jsx)(n,{title:`Select`,placement:`right`,mouseEnterDelay:.3,children:(0,$.jsx)(`span`,{children:(0,$.jsx)(Vr,{onClick:e=>{e.stopPropagation(),Se(`select`)},style:{borderLeft:G===`select`?`3px solid #1677ff`:`none`},children:(0,$.jsx)(ee,{style:{fontSize:`16px`}})})})}),(0,$.jsx)(n,{title:U.canMutate?`Add Zone`:U.message??`Add Zone`,placement:`right`,mouseEnterDelay:.3,children:(0,$.jsx)(`span`,{children:(0,$.jsx)(Vr,{disabled:!U.canMutate,onClick:e=>{e.stopPropagation(),Se(`zone`)},style:{borderLeft:G===`zone`?`3px solid #1677ff`:`none`,opacity:U.canMutate?1:.4,cursor:U.canMutate?`pointer`:`not-allowed`},children:(0,$.jsx)($e,{style:{fontSize:`16px`}})})})}),(0,$.jsx)(n,{title:U.canMutate?`Add Comment`:U.message??`Add Comment`,placement:`right`,mouseEnterDelay:.3,children:(0,$.jsx)(`span`,{children:(0,$.jsx)(Vr,{disabled:!U.canMutate,onClick:e=>{e.stopPropagation(),Se(`comment`)},style:{borderLeft:G===`comment`?`3px solid #1677ff`:`none`,opacity:U.canMutate?1:.4,cursor:U.canMutate?`pointer`:`not-allowed`},children:(0,$.jsx)(be,{style:{fontSize:`16px`}})})})}),(0,$.jsx)(n,{title:U.canMutate?`Add Markdown Note`:U.message??`Add Markdown Note`,placement:`right`,mouseEnterDelay:.3,children:(0,$.jsx)(`span`,{children:(0,$.jsx)(Vr,{disabled:!U.canMutate,onClick:e=>{e.stopPropagation(),Se(`markdown`)},style:{borderLeft:G===`markdown`?`3px solid #1677ff`:`none`,opacity:U.canMutate?1:.4,cursor:U.canMutate?`pointer`:`not-allowed`},children:(0,$.jsx)(we,{style:{fontSize:`16px`}})})})}),(0,$.jsx)(n,{title:U.canMutate?`Eraser - Click to toggle`:U.message??`Eraser`,placement:`right`,mouseEnterDelay:.3,children:(0,$.jsx)(`span`,{children:(0,$.jsx)(Vr,{disabled:!U.canMutate,onClick:e=>{e.stopPropagation(),Se(G===`eraser`?`select`:`eraser`)},style:{borderLeft:G===`eraser`?`3px solid ${H.colorError}`:`none`,color:G===`eraser`?H.colorError:`inherit`,backgroundColor:G===`eraser`?`${H.colorError}15`:`transparent`,opacity:U.canMutate?1:.4,cursor:U.canMutate?`pointer`:`not-allowed`},children:(0,$.jsx)(A,{style:{fontSize:`16px`}})})})})]}),(0,$.jsx)(Fr,{nodeColor:Ct,pannable:!0,zoomable:!0,style:{backgroundColor:H.colorBgElevated,border:`1px solid ${H.colorBorder}`},maskColor:`rgba(0, 0, 0, 0.5)`,maskStrokeColor:H.colorPrimary,maskStrokeWidth:2}),(0,$.jsx)(Os,{client:t,boardId:e?.board_id??null,users:It(p),enabled:!!e&&!!t})]})}),De&&(0,$.jsx)(Oe,{open:!0,content:(0,$.jsxs)(`div`,{style:{width:300},children:[(0,$.jsx)(`div`,{style:{marginBottom:8},children:(0,$.jsx)(Wr,{placeholder:`Add a comment... (type @ for users, : for emojis)`,value:Ae,onChange:je,onKeyPress:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Ae.trim()&&Ft())},autoSize:{minRows:3,maxRows:6},client:t,sessionId:null,userById:p})}),(0,$.jsxs)(`div`,{style:{display:`flex`,justifyContent:`flex-end`,gap:8},children:[(0,$.jsx)(J,{onClick:()=>{ke(null),je(``),Se(`select`)},children:`Cancel`}),(0,$.jsx)(J,{type:`primary`,onClick:Ft,disabled:!Ae.trim(),children:`Comment`})]})]}),getPopupContainer:()=>document.body,children:(0,$.jsx)(`div`,{style:{position:`fixed`,left:De.screenPosition.x,top:De.screenPosition.y,width:1,height:1,pointerEvents:`none`}})}),Me&&(0,$.jsxs)(He,{open:!0,title:Me.objectId?`Edit Markdown Note`:`Add Markdown Note`,onCancel:()=>{Ne(null),Fe(``),Le(500),Se(`select`)},onOk:Lt,okText:Me.objectId?`Save`:`Create`,okButtonProps:{disabled:!Pe.trim()},width:1e3,children:[(0,$.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16,marginBottom:16},children:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(r.Text,{strong:!0,children:`Width:`}),(0,$.jsx)(ye,{min:200,max:2e3,step:100,value:Ie,onChange:Le,marks:{200:`200px`,500:`500px`,1e3:`1000px`,1500:`1500px`,2e3:`2000px`},style:{marginTop:8}})]})}),(0,$.jsxs)(`div`,{style:{display:`flex`,gap:16},children:[(0,$.jsxs)(`div`,{style:{flex:1},children:[(0,$.jsx)(r.Text,{strong:!0,children:`Content (Markdown supported):`}),(0,$.jsx)(ce.TextArea,{value:Pe,onChange:e=>Fe(e.target.value),placeholder:`# Title
|
|
12
|
-
|
|
13
|
-
- Bullet point
|
|
14
|
-
- Another point
|
|
15
|
-
|
|
16
|
-
**Bold** and *italic*
|
|
17
|
-
|
|
18
|
-
\`\`\`javascript
|
|
19
|
-
const code = "example";
|
|
20
|
-
\`\`\``,autoFocus:!0,rows:20,style:{fontFamily:`monospace`,marginTop:8,height:`500px`}})]}),(0,$.jsxs)(`div`,{style:{flex:1},children:[(0,$.jsx)(r.Text,{strong:!0,children:`Preview:`}),(0,$.jsx)(`div`,{style:{marginTop:8,padding:12,border:`1px solid ${H.colorBorder}`,borderRadius:4,height:`500px`,overflow:`auto`,background:H.colorBgContainer},children:Pe.trim()?(0,$.jsx)(on,{content:Pe}):(0,$.jsx)(r.Text,{type:`secondary`,children:`Preview will appear here...`})})]})]})]}),K&&(0,$.jsx)(Us,{open:!0,onCancel:()=>Re(null),client:t,branchId:K.branchId,branch:s.find(e=>e.branch_id===K.branchId),sessionsByBranch:a,zoneName:K.zoneName,trigger:K.trigger,boardName:e?.name,boardDescription:e?.description,boardCustomContext:e?.custom_context,availableAgents:v,mcpServerById:y,currentUser:m&&p.get(m)||null,onExecute:async({sessionId:e,action:n,renderedTemplate:r,agent:i,modelConfig:a,permissionMode:o,mcpServerIds:s})=>{if(!t){console.error(`❌ Cannot execute trigger: client not available`),Re(null);return}try{let c=e;if(e===`new`&&(c=(await t.service(`sessions`).create({branch_id:K.branchId,agentic_tool:i||`claude-code`,description:`Session from zone "${K.zoneName}"`,status:`idle`,model_config:a?{...a,updated_at:new Date().toISOString()}:void 0,permission_config:o?{mode:o}:void 0})).session_id,s&&s.length>0))for(let e of s)await t.service(`sessions/${c}/mcp-servers`).create({mcpServerId:e});let l;switch(n){case`prompt`:await t.sessions.prompt(c,r,{permissionMode:o,messageSource:`agor`}),l=c;break;case`fork`:{let e=await t.service(`sessions/${c}/fork`).create({});await t.sessions.prompt(e.session_id,r,{permissionMode:o,messageSource:`agor`}),l=e.session_id;break}case`spawn`:{let e=await t.service(`sessions/${c}/spawn`).create({});await t.sessions.prompt(e.session_id,r,{permissionMode:o,messageSource:`agor`}),l=e.session_id;break}}l&&x?.(l)}catch(e){console.error(`❌ Failed to execute zone trigger:`,e)}finally{Re(null)}}}),(0,$.jsx)(On,{open:ve,card:he,board:e,zoneName:he?(()=>{let e=me.get(he.card_id);return e?.zone_id&&at[e.zone_id]||void 0})():void 0,zoneColor:he?(()=>{let t=me.get(he.card_id);if(!t?.zone_id)return;let n=e?.objects?.[t.zone_id];return n&&n.type===`zone`?n.borderColor||n.color:void 0})():void 0,client:t,onClose:()=>{xe(!1),ge(null)},onCardUpdated:e=>{ge(e)},onCardDeleted:()=>{xe(!1),ge(null)}})]})});Ys.displayName=`SessionCanvas`;function Xs(e,t){if(e?.auth?.type!==`oauth`)return!1;let n=e.auth.oauth_token_expires_at,r=!!(n&&n<=Date.now());return!(e.auth.oauth_access_token&&!r||t.has(e.mcp_server_id)&&!r)}function Zs(e){switch(e){case`running`:return`processing`;case`completed`:return`success`;case`failed`:return`error`;case`timed_out`:return`warning`;default:return`default`}}var Qs=({session:e,onNavigate:t})=>{let{token:n}=N.useToken(),{onSessionClick:i}=ii(),{sessionById:a}=_i(),o=e.callback_config?.callback_session_id??e.genealogy?.parent_session_id;if(!o)return null;let s=a.get(o),c=e.callback_config?.enabled!==!1,l=s?.archived===!0,u=s?Z(s,{includeAgentFallback:!0,includeIdFallback:!0}):`${gt(o)} (not loaded)`,d=i?(0,$.jsxs)(r.Link,{onClick:e=>{e.preventDefault(),i&&(i(o),t?.())},children:[(0,$.jsx)(V,{style:{marginRight:4}}),(0,$.jsx)(`strong`,{children:u})]}):(0,$.jsx)(`strong`,{children:u}),p=l?`archived`:s?.status,m=c?n.colorPrimaryBorder:n.colorBorder,h=c?n.colorPrimaryBg:n.colorFillTertiary,g=c?n.colorPrimary:n.colorTextSecondary;return(0,$.jsx)(`div`,{style:{marginBottom:12,padding:`${n.sizeUnit*2}px ${n.sizeUnit*3}px`,border:`1px solid ${m}`,background:h,borderRadius:n.borderRadius},children:(0,$.jsxs)(K,{size:6,wrap:!0,children:[(0,$.jsx)(Te,{style:{color:g}}),(0,$.jsxs)(r.Text,{strong:!0,style:{color:g},children:[`Callbacks `,c?`ON`:`OFF`]}),(0,$.jsxs)(r.Text,{type:`secondary`,children:[` — `,c?`notifying`:`would notify`]}),d,s&&(0,$.jsxs)(K,{size:4,children:[(0,$.jsx)(f,{status:Zs(s.status)}),(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:12},children:p})]})]})})},$s=({session:e})=>{let{token:t}=N.useToken(),{onUpdateSession:i,onSessionClick:a}=ii(),{sessionById:o}=_i(),s=e.callback_config?.callback_session_id??e.genealogy?.parent_session_id;if(!(e.callback_config?.enabled!==!1&&s))return null;let c=o.get(s),l=c?Z(c,{includeAgentFallback:!0,includeIdFallback:!0}):`${gt(s)}`,u=(()=>{if(!c)return null;switch(c.status){case`running`:return(0,$.jsx)(f,{status:`processing`});case`completed`:return(0,$.jsx)(f,{status:`success`});case`failed`:return(0,$.jsx)(f,{status:`error`});case`timed_out`:return(0,$.jsx)(f,{status:`warning`});default:return(0,$.jsx)(f,{status:`default`})}})();return(0,$.jsx)(n,{title:(0,$.jsxs)(`span`,{children:[`Callbacks on — will notify`,` `,a&&c?(0,$.jsx)(r.Link,{onClick:e=>{e.preventDefault(),e.stopPropagation(),a?.(s)},style:{color:t.colorTextLightSolid,textDecoration:`underline`},children:(0,$.jsx)(`strong`,{children:l})}):(0,$.jsx)(`strong`,{children:l}),` `,u,` on completion. Click to disable. Also accessible in session settings.`]}),mouseLeaveDelay:.2,children:(0,$.jsx)(J,{size:`small`,type:`text`,icon:(0,$.jsx)(Te,{style:{color:t.colorPrimary}}),onClick:t=>{t.stopPropagation(),i?.(e.session_id,{callback_config:{...e.callback_config,enabled:!1}})},"aria-label":`Callbacks on — click to disable`})})},{TextArea:ec}=ce,{Text:tc}=r,nc=({sessionId:e,daemonUrl:t,open:n,onClose:r,onUploadComplete:i,onInsertMention:a,initialFiles:s})=>{let{showSuccess:c,showWarning:l,showError:d}=xt(),[f,p]=(0,Q.useState)([]),[m,h]=(0,Q.useState)(`branch`),[g,_]=(0,Q.useState)(!0),[v,y]=(0,Q.useState)(`Please review this file: {filepath}`),[b,x]=(0,Q.useState)(!1),S=(0,Q.useRef)([]);S.current=f;let C=(0,Q.useCallback)(e=>{let t=e,n=e.type.startsWith(`image/`);return{uid:t.uid||`${Date.now()}-${e.name}`,name:e.name,status:`done`,originFileObj:t,thumbUrl:n?URL.createObjectURL(e):void 0}},[]),w=(0,Q.useCallback)(e=>{e.thumbUrl?.startsWith(`blob:`)&&URL.revokeObjectURL(e.thumbUrl)},[]),T=(0,Q.useCallback)(()=>{S.current.forEach(w),p([])},[w]);return(0,Q.useEffect)(()=>()=>S.current.forEach(w),[w]),(0,Q.useEffect)(()=>{s&&s.length>0&&n&&(S.current.forEach(w),p(s.map(C)))},[s,n,C,w]),(0,$.jsx)(He,{title:`Upload File(s)`,open:n,onCancel:()=>{T(),_(!1),y(`Please review this file: {filepath}`),r()},onOk:async()=>{if(f.length===0){l(`Please select at least one file`);return}x(!0);try{let n=new FormData;f.forEach(e=>{e.originFileObj?n.append(`files`,e.originFileObj):console.warn(`[FileUpload] File missing originFileObj:`,e.name)}),n.append(`notifyAgent`,String(g)),n.append(`message`,v);let o=`${t}/sessions/${e}/upload?destination=${encodeURIComponent(m)}`,s=localStorage.getItem(Kt),l={};s?l.Authorization=`Bearer ${s}`:console.warn(`[FileUpload] No access token found in localStorage`);let u=await fetch(o,{method:`POST`,headers:l,body:n});if(!u.ok){let e=await u.text(),t={};try{t=JSON.parse(e)}catch{t={error:e||`Upload failed`}}throw Error(t.error||`Upload failed`)}let d=await u.json();if(d.files.length===1?c(`Uploaded as: ${d.files[0].filename}`):c(`Uploaded ${d.files.length} files successfully`),i&&i(d.files),!g&&a&&d.files.length>0){let e=d.files[0];a(e.path.includes(` `)?`"${e.path}"`:e.path)}T(),_(!1),y(`Please review this file: {filepath}`),r()}catch(e){console.error(`Upload error:`,e),d(e instanceof Error?e.message:`Failed to upload files`)}finally{x(!1)}},confirmLoading:b,okText:`Upload`,cancelText:`Cancel`,width:600,children:(0,$.jsxs)(K,{orientation:`vertical`,style:{width:`100%`},size:`large`,children:[(0,$.jsx)(u,{multiple:!0,listType:`picture`,fileList:f,beforeUpload:e=>(p(t=>[...t,C(e)]),!1),onRemove:e=>{w(e),p(t=>t.filter(t=>t.uid!==e.uid))},children:(0,$.jsx)(J,{icon:(0,$.jsx)(de,{}),children:`Select Files`})}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(tc,{strong:!0,children:`Destination:`}),(0,$.jsx)(o.Group,{value:m,onChange:e=>h(e.target.value),style:{marginTop:8,display:`block`},children:(0,$.jsxs)(K,{orientation:`vertical`,children:[(0,$.jsx)(o,{value:`branch`,children:(0,$.jsxs)(K,{orientation:`vertical`,size:0,children:[(0,$.jsx)(tc,{children:`Branch (.agor/uploads/)`}),(0,$.jsx)(tc,{type:`secondary`,style:{fontSize:`12px`},children:`Default - Agent-accessible, can be committed`})]})}),(0,$.jsx)(o,{value:`temp`,children:(0,$.jsxs)(K,{orientation:`vertical`,size:0,children:[(0,$.jsx)(tc,{children:`Temp folder`}),(0,$.jsx)(tc,{type:`secondary`,style:{fontSize:`12px`},children:`Ephemeral, auto-cleanup`})]})}),(0,$.jsx)(o,{value:`global`,children:(0,$.jsxs)(K,{orientation:`vertical`,size:0,children:[(0,$.jsx)(tc,{children:`Global (~/.agor/uploads/)`}),(0,$.jsx)(tc,{type:`secondary`,style:{fontSize:`12px`},children:`Shared across sessions`})]})})]})})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(Y,{checked:g,onChange:e=>_(e.target.checked),children:`Notify the agent about this file`}),g&&(0,$.jsxs)(`div`,{style:{marginTop:8},children:[(0,$.jsx)(ec,{value:v,onChange:e=>y(e.target.value),placeholder:`Message to agent (use {filepath} for file path)`,autoSize:{minRows:2,maxRows:4}}),(0,$.jsxs)(tc,{type:`secondary`,style:{fontSize:`12px`,marginTop:4},children:[`Use `,`{filepath}`,` to reference the uploaded file path`]})]})]})]})})},rc=(0,Q.forwardRef)(({onClick:e,disabled:t,size:n=`middle`},r)=>(0,$.jsx)(J,{ref:r,icon:(0,$.jsx)(ke,{}),onClick:e,disabled:t,size:n,title:`Upload files`}));function ic(e,t,n){let r=0,i=0;for(let a of e){let e=t.get(a);if(!e){r+=1;continue}Xs(e,n)&&(i+=1)}let a=e.length,o=Math.max(0,a-r-i),s=r+i;return{attachedCount:a,missingCount:r,needsAuthCount:i,healthyCount:o,tone:r>0?`error`:i>0?`warning`:`default`,label:`MCP (${a})`,tooltip:s>0?`${s} MCP server${s===1?``:`s`} need attention`:a>0?`${a} MCP server${a===1?``:`s`} attached`:`No MCP servers attached`}}var ac=({client:e,sessionId:t,sessionMcpServerIds:n,mcpServerById:i,userAuthenticatedMcpServerIds:a,onOpenSessionSettings:o})=>{let{token:s}=N.useToken(),{showSuccess:c,showError:l}=xt(),[u,d]=Q.useState(!1),[f,p]=Q.useState(!1),m=Q.useMemo(()=>ic(n,i,a),[n,i,a]),g=Q.useMemo(()=>n.map(e=>i.get(e)).filter(e=>!!e),[n,i]);return(0,$.jsx)(Oe,{open:u,onOpenChange:d,trigger:`click`,placement:`top`,getPopupContainer:e=>e.parentElement??document.body,title:null,content:(0,$.jsx)(`div`,{style:{width:340,maxWidth:`min(340px, 80vw)`},children:(0,$.jsxs)(K,{direction:`vertical`,size:10,style:{width:`100%`},children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(r.Text,{strong:!0,children:`Session MCP servers`}),(0,$.jsx)(r.Paragraph,{type:`secondary`,style:{margin:`${s.sizeUnit}px 0 0`},children:`Attach tools/connectors that the agent can use in this conversation.`})]}),g.length>0&&(0,$.jsx)(K,{size:6,wrap:!0,children:g.map(t=>(0,$.jsx)(Yt,{server:t,needsAuth:Xs(t,a),client:e},t.mcp_server_id))}),(0,$.jsx)(Vt,{mcpServers:Array.from(i.values()),placeholder:`Attach MCP servers…`,value:n,onChange:async r=>{if(e){p(!0);try{await ar(e,t,n,r),c(`Session MCP servers updated`)}catch(e){l(`Failed to update MCP servers: ${e instanceof Error?e.message:String(e)}`)}finally{p(!1)}}},loading:f,disabled:!e,style:{width:`100%`}}),(0,$.jsx)(W,{style:{margin:`${s.sizeUnit}px 0`}}),(0,$.jsx)(J,{block:!0,icon:(0,$.jsx)(pe,{}),onClick:()=>{d(!1),o?.(t)},children:`Open session settings`})]})}),children:(0,$.jsxs)(Yn,{icon:(0,$.jsx)(Xe,{}),color:`default`,title:`${m.tooltip}. Click to add or change MCP servers.`,style:{cursor:`pointer`,height:22,display:`inline-flex`,alignItems:`center`},children:[(0,$.jsx)(`span`,{children:`MCP`}),(0,$.jsx)(h,{color:m.tone===`error`?`error`:m.tone===`warning`?`warning`:void 0,style:{marginInlineStart:s.sizeUnit,marginInlineEnd:0,minWidth:16,height:14,paddingInline:4,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,lineHeight:`12px`,fontSize:10,textAlign:`center`,fontVariantNumeric:`tabular-nums`,verticalAlign:`middle`},children:m.attachedCount}),(0,$.jsx)(R,{style:{marginLeft:s.sizeUnit*1.5}})]})})},oc=({client:e,userId:t,branchId:n,focusTabName:r,ensureCliSessionId:i,height:a=480,fill:o=!1,visible:s=!0})=>{let c=(0,Q.useRef)(null),l=(0,Q.useRef)(null),[u,d]=(0,Q.useState)(null),[f,p]=(0,Q.useState)(!1);return(0,Q.useEffect)(()=>{if(!e||!t||!c.current)return;let a=!0,o=null,s=e.io,u=e=>{e.userId===t&&l.current&&l.current.write(e.data)},f=e=>{e.userId===t&&l.current&&(l.current.writeln(`\r\n\r\n[Terminal exited with code ${e.exitCode}]`),p(!1))},m=new ti({allowProposedApi:!0,fontSize:13,fontFamily:`Menlo, Monaco, "Courier New", monospace`,cursorBlink:!0,scrollback:1e3,rows:24,cols:80,theme:{background:`#141414`,foreground:`#ffffff`,cursor:`#2e9a92`,cursorAccent:`#141414`}});m.open(c.current),m.loadAddon(new ei),m.loadAddon(new $r((e,t)=>{window.open(t,`_blank`,`noopener,noreferrer`)})),l.current=m;let h=c.current.querySelector(`.xterm`);h&&(h.style.width=`100%`,h.style.height=`100%`);let g=()=>{if(!l.current||!c.current)return;let e=l.current._core,t=e?._renderService?.dimensions?.css?.cell?.width,n=e?._renderService?.dimensions?.css?.cell?.height;if(!t||!n||t<=0||n<=0)return;let r=c.current.getBoundingClientRect();if(r.width<=0||r.height<=0)return;let i=Math.max(20,Math.floor(r.width/t)),a=Math.max(5,Math.floor(r.height/n));if(i!==l.current.cols||a!==l.current.rows)try{l.current.resize(i,a)}catch{}},_=null;try{_=m.onRender(()=>g())}catch{}requestAnimationFrame(()=>{g(),requestAnimationFrame(g)});let v=setInterval(g,100),y=setTimeout(()=>clearInterval(v),1500);typeof document<`u`&&`fonts`in document&&document.fonts.ready.then(()=>g()).catch(()=>{});let b=new ResizeObserver(()=>g());return b.observe(c.current),(async()=>{try{let c=await e.service(`terminals`).create({rows:m.rows,cols:m.cols,branchId:n,focusTabName:r,ensureCliSessionId:i});if(!a)return;o=c.channel,s.emit(`join`,c.channel),s.on(`terminal:output`,u),s.on(`terminal:exit`,f),m.onData(e=>{s.emit(`terminal:input`,{userId:t,input:e})}),m.onResize(({cols:e,rows:n})=>{s.emit(`terminal:resize`,{userId:t,cols:e,rows:n})}),s.emit(`terminal:resize`,{userId:t,cols:m.cols,rows:m.rows}),p(!0)}catch(e){let t=e instanceof Error?e.message:String(e);d(t),l.current&&(l.current.writeln(`\r
|
|
21
|
-
[Failed to attach to terminal]`),l.current.writeln(`[Error: ${t}]`))}})(),()=>{a=!1,b.disconnect(),clearInterval(v),clearTimeout(y);try{_?.dispose()}catch{}l.current&&=(l.current.dispose(),null),s&&(s.off(`terminal:output`,u),s.off(`terminal:exit`,f),o&&s.emit(`leave`,o)),p(!1)}},[e,t,n,r,i]),(0,Q.useEffect)(()=>{if(!s||!e||!t||!r)return;let a=!1;return(async()=>{try{await e.service(`terminals`).create({rows:l.current?.rows??30,cols:l.current?.cols??140,branchId:n,focusTabName:r,ensureCliSessionId:i})}catch(e){if(a)return;console.warn(`[EmbeddedTerminal] refocus failed`,e)}})(),()=>{a=!0}},[s,e,t,n,r,i]),(0,$.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:4,background:`#000`,padding:8,borderRadius:4,...o?{flex:1,minHeight:0,height:`100%`}:{minHeight:a}},children:[(0,$.jsx)(`div`,{ref:c,style:o?{flex:1,minHeight:0}:{flex:1,minHeight:a-24}}),u&&(0,$.jsxs)(`div`,{style:{color:`#ff7875`,fontSize:12,padding:4},children:[`Terminal error: `,u]}),!f&&!u&&(0,$.jsx)(`div`,{style:{color:`#bfbfbf`,fontSize:12,padding:4},children:`Connecting to terminal…`})]})},sc=Q.memo(({client:e,session:t,branch:i=null,currentUserId:a,scrollToBottom:o,scrollToTop:s,setScrollToBottom:c,setScrollToTop:u,queuedTasks:d,setQueuedTasks:f,spawnModalOpen:p,setSpawnModalOpen:m,onSpawnModalConfirm:h,inputValueRef:g,isOpen:v,cliViewMode:y=`terminal`,setCliViewMode:b})=>{let{token:x}=N.useToken(),{showSuccess:S,showError:C}=xt(),{userById:w}=hi(),{repoById:T}=mi(),{mcpServerById:E}=gi(),{onOpenBranch:D,onStartEnvironment:O,onStopEnvironment:k,onNukeEnvironment:j,onViewLogs:M,onPermissionDecision:P}=ii(),F=i&&T.get(i.repo_id)||null,I=Q.useCallback((e,t)=>{c(()=>e),u(()=>t)},[c,u]);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{style:{marginBottom:x.sizeUnit,display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:x.sizeUnit*2},children:[i&&(0,$.jsxs)(K,{size:8,wrap:!0,style:{flex:1},children:[i&&F&&(0,$.jsx)(so,{repo:F,branch:i,onOpenBranch:D,onStartEnvironment:O,onStopEnvironment:k,onNukeEnvironment:j,onViewLogs:M,identityLink:ot(t.session_id)}),i?.issue_url&&(0,$.jsx)(Tn,{issueUrl:i.issue_url,currentRepo:F??void 0}),i?.pull_request_url&&(0,$.jsx)(kn,{prUrl:i.pull_request_url,currentRepo:F??void 0})]}),!i&&(0,$.jsx)(`div`,{style:{flex:1}}),(0,$.jsxs)(K,{size:4,children:[(0,$.jsx)(n,{title:`Scroll to top of conversation`,children:(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(l,{}),onClick:()=>s?.(),disabled:!s})}),(0,$.jsx)(n,{title:`Scroll to bottom of conversation`,children:(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(Ue,{}),onClick:()=>o?.(),disabled:!o})})]})]}),t.agentic_tool===`claude-code-cli`&&b?(0,$.jsxs)(`div`,{style:{display:`flex`,alignItems:`flex-end`,justifyContent:`space-between`,gap:x.sizeUnit*2,marginTop:x.sizeUnit*2},children:[(0,$.jsx)(Qe,{activeKey:y,onChange:e=>b(e),size:`small`,style:{flex:1,marginBottom:-1},items:[{key:`terminal`,label:(0,$.jsxs)(`span`,{children:[(0,$.jsx)(Be,{style:{marginRight:6}}),`CLI terminal`]})},{key:`conversation`,label:(0,$.jsxs)(`span`,{children:[(0,$.jsx)(be,{style:{marginRight:6}}),`Agor conversation`]})}]}),y===`terminal`&&e&&(0,$.jsx)(n,{title:`Restart claude REPL in this tab (closes the Zellij tab and re-spawns claude — JSONL transcript preserved, watcher resumes from offset)`,children:(0,$.jsx)(J,{size:`small`,icon:(0,$.jsx)(_,{}),onClick:async()=>{try{await e.service(`sessions/${t.session_id}/restart-cli`).create({}),S(`Restarting claude…`)}catch(e){C(`Failed to restart: ${e instanceof Error?e.message:String(e)}`)}},style:{marginBottom:x.sizeUnit},children:`Restart`})})]}):(0,$.jsx)(W,{style:{margin:`${x.sizeUnit*2}px 0`}}),t.agentic_tool===`claude-code-cli`&&(0,$.jsx)(`div`,{style:{display:y===`terminal`?`flex`:`none`,flex:1,minHeight:0,flexDirection:`column`},children:(0,$.jsx)(oc,{client:e,userId:a,branchId:t.branch_id,focusTabName:`cli-${gt(t.session_id)}`,ensureCliSessionId:t.session_id,fill:!0,visible:y===`terminal`})}),(0,$.jsx)(`div`,{style:{display:t.agentic_tool===`claude-code-cli`&&y===`terminal`?`none`:`contents`},children:(0,$.jsx)(Pr,{client:e,sessionId:t.session_id,agentic_tool:t.agentic_tool,sessionModel:t.model_config?.model,userById:w,currentUserId:a,onScrollRef:I,onPermissionDecision:P,branchName:i?.name,scheduledFromBranch:t.scheduled_from_branch,scheduledRunAt:t.scheduled_run_at,isActive:v,genealogy:t.genealogy,assistantEmoji:i&&bt(i)?ht(i)?.emoji:void 0})}),d.length>0&&(0,$.jsxs)(`div`,{style:{flexShrink:0,background:x.colorBgElevated,borderTop:`1px solid ${x.colorBorderSecondary}`,borderTopLeftRadius:x.borderRadiusLG,borderTopRightRadius:x.borderRadiusLG,padding:`${x.sizeUnit*3}px ${x.sizeUnit*6}px`,marginLeft:-x.sizeUnit*6+x.sizeUnit*2,marginRight:-x.sizeUnit*6+x.sizeUnit*2,marginTop:x.sizeUnit*2,boxShadow:`0 -2px 8px ${x.colorBgMask}`},children:[(0,$.jsxs)(r.Text,{type:`secondary`,style:{fontSize:x.fontSizeSM,display:`block`,marginBottom:x.sizeUnit*2,fontWeight:500,textTransform:`uppercase`,letterSpacing:`0.5px`},children:[`Queued Tasks (`,d.length,`)`]}),(0,$.jsx)(K,{orientation:`vertical`,size:8,style:{width:`100%`},children:d.map((n,i)=>(0,$.jsxs)(`div`,{style:{background:x.colorBgContainer,padding:`${x.sizeUnit*2}px ${x.sizeUnit*3}px`,borderRadius:x.borderRadius,border:`1px solid ${x.colorBorder}`,display:`flex`,justifyContent:`space-between`,alignItems:`center`,gap:x.sizeUnit*2},children:[(0,$.jsxs)(r.Text,{ellipsis:!0,style:{flex:1},children:[(0,$.jsxs)(`span`,{style:{color:x.colorTextSecondary,marginRight:x.sizeUnit},children:[i+1,`.`]}),n.full_prompt]}),(0,$.jsxs)(K,{size:4,children:[(0,$.jsx)(J,{type:`text`,size:`small`,icon:(0,$.jsx)(Ee,{}),onClick:async()=>{await yt(n.full_prompt),S(`Message copied to clipboard`)}}),(0,$.jsx)(J,{type:`text`,size:`small`,danger:!0,icon:(0,$.jsx)(A,{}),onClick:async()=>{if(e)try{f(e=>e.filter(e=>e.task_id!==n.task_id)),await e.service(`tasks`).remove(n.task_id)}catch(n){C(`Failed to remove queued task: ${n instanceof Error?n.message:String(n)}`),f((await e.service(`sessions/${t.session_id}/tasks/queue`).find()).data||[])}}})]})]},n.task_id))})]}),(0,$.jsx)(Ga,{open:p,action:`spawn`,session:t,currentUser:a&&w.get(a)||null,mcpServerById:E,initialPrompt:g.current??``,onConfirm:h,onCancel:()=>m(!1),client:e,userById:w})]})}),cc=({client:e,session:t,modelLabel:n,modelConfig:i,onModelConfigChange:a,effortLevel:o,onEffortChange:s,permissionMode:c,onPermissionModeChange:l,codexSandboxMode:u,codexApprovalPolicy:f,onCodexPermissionChange:p})=>{let{token:m}=N.useToken();return(0,$.jsx)(Oe,{trigger:`click`,placement:`top`,getPopupContainer:e=>e.parentElement??document.body,content:(0,$.jsx)(`div`,{style:{width:320,maxWidth:`min(320px, 80vw)`},children:(0,$.jsxs)(K,{direction:`vertical`,size:12,style:{width:`100%`},children:[(0,$.jsx)(`div`,{children:(0,$.jsx)(r.Text,{strong:!0,children:`Quick session settings`})}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:12},children:`Model`}),(0,$.jsx)(`div`,{style:{marginTop:m.sizeUnit},children:(0,$.jsx)(Mt,{value:i,onChange:a,agentic_tool:t.agentic_tool,client:e,compact:!0})})]}),t.agentic_tool===`claude-code`&&(0,$.jsxs)(`div`,{children:[(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:12},children:`Reasoning effort`}),(0,$.jsx)(`div`,{style:{marginTop:m.sizeUnit},children:(0,$.jsx)(Hn,{value:o,onChange:s,size:`small`,compact:!0,plain:!0,fullWidth:!0})})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(r.Text,{type:`secondary`,style:{fontSize:12},children:`Permissions`}),(0,$.jsx)(`div`,{style:{marginTop:m.sizeUnit},children:(0,$.jsx)(Un,{value:c,onChange:l,agentic_tool:t.agentic_tool,codexSandboxMode:u,codexApprovalPolicy:f,onCodexChange:p,compact:!0,iconOnly:!1,plain:!0,fullWidth:!0,size:`small`})})]})]})}),title:null,children:n?(0,$.jsxs)(Yn,{icon:(0,$.jsx)(d,{}),color:`default`,title:`Model and run settings`,style:{cursor:`pointer`,height:22,display:`inline-flex`,alignItems:`center`},children:[(0,$.jsx)(`span`,{children:er(n)}),(0,$.jsx)(pe,{style:{marginLeft:m.sizeUnit*1.5}})]}):(0,$.jsx)(Yn,{icon:(0,$.jsx)(pe,{}),color:`default`,style:{cursor:`pointer`,height:22,display:`inline-flex`,alignItems:`center`},children:`Run`})})},lc=Q.forwardRef(({sessionId:e,getDraft:t,saveDraft:n,deleteDraft:r,onHasInputChange:i,inputValueRef:a,onSubmit:o,placeholder:s,autoSize:c,client:l,userById:u,onFilesDrop:d,slashCommands:f,skills:p},m)=>{let[h,g]=Q.useState(()=>t(e)),_=Q.useRef(h);_.current=h,a.current=h;let v=Q.useRef(!!h.trim());Q.useEffect(()=>{let e=!!h.trim();e!==v.current&&(v.current=e,i(e))},[h,i]),Q.useImperativeHandle(m,()=>({getValue:()=>_.current,clear:()=>{g(``),r(e)},insertText:e=>{g(t=>{let n=t.trim();return`${n}${n?` `:``}${e}`})}}),[e,r]);let y=Q.useRef(e);Q.useEffect(()=>{y.current!==e&&(n(y.current,_.current),g(t(e)),y.current=e)},[e,n,t]),Q.useEffect(()=>{let t=setTimeout(()=>n(e,h),300);return()=>clearTimeout(t)},[h,e,n]);let b=Q.useRef(n);b.current=n;let x=Q.useRef(e);return x.current=e,Q.useEffect(()=>()=>b.current(x.current,_.current),[]),(0,$.jsx)(Wr,{value:h,onChange:g,placeholder:s,autoSize:c,onKeyPress:Q.useCallback(e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),_.current.trim()&&o())},[o]),client:l,sessionId:e,userById:u,onFilesDrop:d,slashCommands:f,skills:p,highlightWhenEmpty:!0})});lc.displayName=`PromptInput`;var uc=Q.memo(({client:e,session:t,branch:i=null,currentUserId:a,sessionMcpServerIds:o=[],open:s,onClose:c})=>{let{token:l}=N.useToken(),{modal:u}=w.useApp(),{showSuccess:d,showInfo:m,showError:h}=xt(),_=Pt(),v=hn(),{userById:y}=hi(),{mcpServerById:b,userAuthenticatedMcpServerIds:x}=gi(),{onSendPrompt:S,onFork:C,onBtwFork:T,onOpenSettings:E,onUpdateSession:D,onOpenTerminal:O}=ii(),{archiveSession:k}=Rt(e),A=t?.agentic_tool?vt[t.agentic_tool]:void 0,j=Q.useMemo(()=>o.map(e=>b.get(e)).filter(e=>Xs(e,x)).map(e=>e),[o,b,x]),M=`agor-draft-`,P=Q.useCallback(e=>{try{return localStorage.getItem(`${M}${e}`)||``}catch{return``}},[]),F=Q.useCallback((e,t)=>{try{t.trim()?localStorage.setItem(`${M}${e}`,t):localStorage.removeItem(`${M}${e}`)}catch{}},[]),I=Q.useCallback(e=>{try{localStorage.removeItem(`${M}${e}`)}catch{}},[]),L=Q.useRef(null),ee=Q.useRef(t?P(t.session_id):``),[R,z]=Q.useState(()=>!!ee.current.trim()),B=Q.useCallback(e=>z(e),[]),te=t?.permission_config?.mode??(t?.agentic_tool?ut(t.agentic_tool):ut(`claude-code`)),V=tt(te),[ne,re]=Q.useState(te),[U,ie]=Q.useState(t?.permission_config?.codex?.sandboxMode??V.sandboxMode),[ae,se]=Q.useState(t?.permission_config?.codex?.approvalPolicy??V.approvalPolicy),[ce,le]=Q.useState(t?.model_config?.effort||`high`),[W,ue]=Q.useState(`terminal`),[de,fe]=Q.useState(null),[me,he]=Q.useState(null),[ge,_e]=Q.useState([]),[ye,be]=Q.useState(!1),[xe,G]=Q.useState(!1),[Se,Ce]=Q.useState([]),[we,Te]=Q.useState(!1),{state:Ee}=dn(e,t?.session_id??null,{enabled:s,reactiveOptions:{taskHydration:`none`}}),De=Ee?.tasks||[];Q.useEffect(()=>{if(!e||!t)return;(async()=>{try{_e((await e.service(`/sessions/${t.session_id}/tasks/queue`).find()).data||[])}catch(e){console.error(`[SessionPanel] Failed to fetch queue:`,e)}})();let n=e.service(`tasks`),r=e=>{e.session_id===t.session_id&&_e(t=>t.some(t=>t.task_id===e.task_id)?t:[...t,e].sort((e,t)=>(e.queue_position??0)-(t.queue_position??0)))},i=e=>{e.session_id===t.session_id&&e.status!==lt.QUEUED&&_e(t=>t.filter(t=>t.task_id!==e.task_id))},a=e=>{e.session_id===t.session_id&&_e(t=>t.filter(t=>t.task_id!==e.task_id))};return n.on(`queued`,r),n.on(`patched`,i),n.on(`updated`,i),n.on(`removed`,a),()=>{n.off(`queued`,r),n.off(`patched`,i),n.off(`updated`,i),n.off(`removed`,a)}},[e,t]);let Oe=Q.useMemo(()=>t?.agentic_tool?De.reduce((e,t)=>{if(!t.normalized_sdk_response)return e;let{tokenUsage:n,costUsd:r}=t.normalized_sdk_response;return{total:e.total+n.totalTokens,input:e.input+n.inputTokens,output:e.output+n.outputTokens,cacheRead:e.cacheRead+(n.cacheReadTokens||0),cacheCreation:e.cacheCreation+(n.cacheCreationTokens||0),cost:e.cost+(r||0)}},{total:0,input:0,output:0,cacheRead:0,cacheCreation:0,cost:0}):{total:0,input:0,output:0,cacheRead:0,cacheCreation:0,cost:0},[De,t?.agentic_tool]),ke=Q.useMemo(()=>{if(!t?.agentic_tool)return null;for(let e=De.length-1;e>=0;e--){let n=De[e];if(n.computed_context_window!==void 0&&n.normalized_sdk_response){let{contextWindowLimit:e}=n.normalized_sdk_response;if(n.computed_context_window>0)return{used:n.computed_context_window,limit:e||0,taskMetadata:{model:n.model,duration_ms:n.duration_ms,agentic_tool:t.agentic_tool,raw_sdk_response:n.raw_sdk_response,normalized_sdk_response:n.normalized_sdk_response}}}}return null},[De,t?.agentic_tool]),Ae=Q.useMemo(()=>{if(ke)return Sn(ke.used,ke.limit,ke.taskMetadata.normalized_sdk_response?.contextUsageSnapshot)},[ke]),je=Q.useMemo(()=>{if(De.length===0)return null;for(let e=De.length-1;e>=0;--e){let t=De[e];if(t.status===lt.RUNNING||t.status===lt.STOPPING||t.status===lt.AWAITING_PERMISSION||t.status===lt.AWAITING_INPUT)return t}return De[De.length-1]},[De]);if(Q.useEffect(()=>{t?.permission_config?.mode?re(t.permission_config.mode):t?.agentic_tool&&re(ut(t.agentic_tool)),t?.agentic_tool===`codex`&&t?.permission_config?.codex&&(ie(t.permission_config.codex.sandboxMode),se(t.permission_config.codex.approvalPolicy))},[t?.permission_config?.mode,t?.permission_config?.codex,t?.agentic_tool]),Q.useEffect(()=>{le(t?.model_config?.effort||`high`)},[t?.model_config?.effort]),!t)return null;let Ne=()=>{if(!e||_){h(`Cannot archive while disconnected from the daemon.`);return}u.confirm({title:`Archive session?`,content:`Are you sure you want to archive this session?`,okText:`Archive`,cancelText:`Cancel`,onOk:async()=>{await k(t.session_id)?(d(`Session archived`),c()):h(`Failed to archive session`)}})},Pe=t.status===ct.RUNNING||t.status===ct.STOPPING,Ie=t.status===ct.STOPPING,Le=async()=>{let e=L.current?.getValue()??``;if(!e.trim()||_)return;let n=e.trim();L.current?.clear(),S?.(t.session_id,n,ne)},Re=async()=>{if(!(!t||!e||we)){Ie&&m(`Retrying stop request...`),Te(!0);try{await e.service(`sessions/${t.session_id}/stop`).create({})}catch(e){console.error(`Failed to stop execution:`,e),h(`Failed to stop execution. You can try again.`)}finally{Te(!1)}}},ze=async()=>{if(!t)return;let e=(L.current?.getValue()??``).trim();if(e)try{await C?.(t.session_id,e),L.current?.clear()}catch(e){console.error(`Fork failed — keeping prompt in compose box:`,e)}},Ve=async()=>{let e=L.current?.getValue()??``;if(!e.trim()||_)return;let n=e.trim();try{await T?.(t.session_id,n),L.current?.clear()}catch(e){console.error(`BTW fork failed — keeping prompt in compose box:`,e)}},He=async n=>{if(!t||!e)return;let r=typeof n==`string`?{userPrompt:n}:{userPrompt:n.prompt||``,agenticTool:n.agent,permissionMode:n.permissionMode,modelConfig:n.modelConfig,codexSandboxMode:n.codexSandboxMode,codexApprovalPolicy:n.codexApprovalPolicy,codexNetworkAccess:n.codexNetworkAccess,mcpServerIds:n.mcpServerIds,callbackConfig:{enableCallback:n.enableCallback,includeLastMessage:n.includeLastMessage,includeOriginalPrompt:n.includeOriginalPrompt},extraInstructions:n.extraInstructions};await e.service(`sessions/${t.session_id}/spawn-prompt`).create({...r,parentPermissionMode:ne}),be(!1),L.current?.clear()},Ue=e=>{re(e),t&&D&&D(t.session_id,{permission_config:{...t.permission_config,mode:e}})},We=(e,n)=>{ie(e),se(n),t&&D&&D(t.session_id,{permission_config:{...t.permission_config,codex:{...t.permission_config?.codex,sandboxMode:e,approvalPolicy:n}}})},Ge=e=>{le(e),t&&D&&t.model_config&&D(t.session_id,{model_config:{...t.model_config,effort:e}})},q=e=>{t&&D&&D(t.session_id,{model_config:{...t.model_config,mode:e.mode,model:e.model,...e.provider?{provider:e.provider}:{},updated_at:new Date().toISOString()}})},Ke=()=>{switch(t.status){case`running`:return`processing`;case`completed`:return`success`;case`failed`:return`error`;case`timed_out`:return`warning`;default:return`default`}},qe=t.model_config?.model&&t.agentic_tool===`opencode`&&t.model_config.provider?`${t.model_config.provider}/${t.model_config.model}`:t.model_config?.model,Je=t.model_config?.model?{mode:t.model_config.mode||`alias`,model:t.model_config.model,provider:t.model_config.provider}:void 0,Xe=(0,$.jsxs)(`div`,{style:{position:`relative`,flexShrink:0,background:l.colorBgContainer,borderTop:`1px solid ${l.colorBorder}`,padding:`${l.sizeUnit*2}px ${l.sizeUnit*6}px ${l.sizeUnit*3}px`,marginLeft:-l.sizeUnit*6,marginRight:-l.sizeUnit*6},children:[Ae&&(0,$.jsx)(`div`,{style:{position:`absolute`,top:0,left:0,right:0,bottom:0,background:Ae,pointerEvents:`none`,zIndex:0}}),(0,$.jsxs)(K,{orientation:`vertical`,style:{width:`100%`,position:`relative`,zIndex:1},size:8,children:[j.length>0&&(0,$.jsx)(H,{type:`warning`,showIcon:!0,title:(0,$.jsxs)(`span`,{children:[j.map(t=>(0,$.jsx)(Yt,{server:t,needsAuth:!0,client:e},t.mcp_server_id)),` `,`not authenticated — click to sign in.`]}),style:{marginBottom:0,borderRadius:l.borderRadius},banner:!0}),(0,$.jsx)(lc,{ref:L,sessionId:t.session_id,getDraft:P,saveDraft:F,deleteDraft:I,onHasInputChange:B,inputValueRef:ee,onSubmit:Le,placeholder:Pe?`Session is working... Type here to queue, or use "btw" for a side question`:`Send a prompt, fork, or use "btw" for a side question... (type @ for autocomplete)`,autoSize:{minRows:1,maxRows:10},client:e,userById:y,onFilesDrop:e=>{Ce(e),G(!0)},slashCommands:(()=>{let e=t?.custom_context;return Array.isArray(e?.slash_commands)?e.slash_commands:void 0})(),skills:(()=>{let e=t?.custom_context;return Array.isArray(e?.skills)?e.skills:void 0})()}),(0,$.jsxs)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:`${l.sizeUnit}px`,alignItems:`center`,justifyContent:`space-between`},children:[(0,$.jsxs)(K,{size:4,wrap:!0,children:[(0,$.jsx)(ac,{client:e,sessionId:t.session_id,sessionMcpServerIds:o,mcpServerById:b,userAuthenticatedMcpServerIds:x,onOpenSessionSettings:E}),je&&(0,$.jsx)(tr,{status:je.status,startedAt:je.message_range?.start_timestamp||je.created_at,endedAt:je.message_range?.end_timestamp||je.completed_at,durationMs:je.duration_ms,lastExecutorHeartbeatAt:je.last_executor_heartbeat_at}),(0,$.jsx)(qn,{session:t}),Oe.total>0&&(0,$.jsx)(jn,{count:Oe.total,estimatedCost:Oe.cost,inputTokens:Oe.input,outputTokens:Oe.output,cacheReadTokens:Oe.cacheRead,cacheCreationTokens:Oe.cacheCreation}),ke&&(0,$.jsx)(Xn,{used:ke.used,limit:ke.limit,taskMetadata:ke.taskMetadata})]}),(0,$.jsxs)(K,{size:4,wrap:!0,style:{marginLeft:`auto`},children:[Pe&&(0,$.jsx)(oe,{size:`small`}),(0,$.jsx)($s,{session:t}),(0,$.jsx)(cc,{client:e,session:t,modelLabel:qe,modelConfig:Je,onModelConfigChange:q,effortLevel:ce,onEffortChange:Ge,permissionMode:ne,onPermissionModeChange:Ue,codexSandboxMode:U,codexApprovalPolicy:ae,onCodexPermissionChange:We}),(0,$.jsxs)(K.Compact,{children:[(0,$.jsx)(n,{title:we?`Sending stop request...`:Ie?`Stopping... (Click again to retry if stuck)`:Pe?`Stop Execution`:`No active execution`,children:(0,$.jsx)(J,{danger:!0,icon:(0,$.jsx)(Me,{}),onClick:Re,disabled:!Pe||we,loading:Ie&&!we})}),A?.supportsSessionFork!==!1&&(0,$.jsx)(n,{title:_?`Disconnected from daemon`:`Fork Session`,children:(0,$.jsx)(J,{icon:(0,$.jsx)(ve,{}),onClick:ze,disabled:_})}),A?.supportsChildSpawn!==!1&&(0,$.jsx)(n,{title:_?`Disconnected from daemon`:Pe?`Session is running...`:`Spawn Subsession`,children:(0,$.jsx)(J,{icon:(0,$.jsx)(Ye,{}),onClick:()=>be(!0),disabled:_||Pe})}),A?.supportsSessionFork!==!1&&(0,$.jsx)(n,{title:`Ask a side question via ephemeral fork (btw)`,children:(0,$.jsx)(J,{icon:(0,$.jsx)(Fe,{}),onClick:Ve,disabled:_})}),(0,$.jsx)(n,{title:_?`Disconnected from daemon`:`Upload Files`,children:(0,$.jsx)(rc,{onClick:()=>G(!0),disabled:_})}),(0,$.jsx)(n,{title:_?`Disconnected from daemon`:Pe?`Queue Message`:`Send Prompt`,children:(0,$.jsx)(J,{type:`primary`,icon:(0,$.jsx)(Ze,{}),onClick:Le,disabled:_||!R})})]})]})]})]})]});return(0,$.jsxs)(`div`,{style:{width:`100%`,height:`100%`,display:s?`flex`:`none`,flexDirection:`column`,background:l.colorBgElevated,borderLeft:`1px solid ${l.colorBorder}`},children:[(0,$.jsx)(`div`,{style:{flexShrink:0,padding:`${l.sizeUnit*3}px ${l.sizeUnit*6}px`,borderBottom:`1px solid ${l.colorBorder}`,background:l.colorBgContainer},children:(0,$.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`},children:[(0,$.jsxs)(K,{size:12,align:`start`,style:{flex:1},children:[(0,$.jsx)(or,{tool:t.agentic_tool,size:40}),(0,$.jsxs)(`div`,{style:{flex:1},children:[(0,$.jsxs)(`div`,{style:{marginBottom:4},children:[(0,$.jsx)(r.Text,{strong:!0,style:{fontSize:18,...yn(2)},children:Z(t,{includeAgentFallback:!0})}),(0,$.jsx)(f,{status:Ke(),text:t.status.toUpperCase(),style:{marginLeft:12}})]}),t.created_by&&(0,$.jsx)(`div`,{children:(0,$.jsx)(_n,{createdBy:t.created_by,currentUserId:a,userById:y,prefix:`Created by`})})]})]}),(0,$.jsxs)(K,{size:4,children:[i&&(0,$.jsx)(n,{title:`Center map on branch`,children:(0,$.jsx)(J,{type:`text`,icon:(0,$.jsx)(p,{}),onClick:()=>v(i.branch_id,{boardId:i.board_id??void 0})})}),O&&i&&(0,$.jsx)(n,{title:`Open terminal in branch directory`,children:(0,$.jsx)(J,{type:`text`,icon:(0,$.jsx)(Be,{}),onClick:()=>O([`cd ${i.path}`],i.branch_id)})}),E&&(0,$.jsx)(n,{title:`Session Settings`,children:(0,$.jsx)(J,{type:`text`,icon:(0,$.jsx)(pe,{}),onClick:()=>E(t.session_id)})}),(0,$.jsx)(Zt,{tooltip:_?`Disconnected from daemon`:`Archive session`,size:`middle`,disabled:_||!e,onClick:Ne}),(0,$.jsx)(n,{title:`Close Panel`,children:(0,$.jsx)(J,{type:`text`,icon:(0,$.jsx)(g,{}),onClick:c,style:{marginLeft:l.sizeUnit}})})]})]})}),(0,$.jsxs)(`div`,{style:{flex:1,overflow:`hidden`,display:`flex`,flexDirection:`column`,padding:`${l.sizeUnit*3}px ${l.sizeUnit*6}px 0`},children:[(0,$.jsx)(sc,{client:e,session:t,branch:i,currentUserId:a,sessionMcpServerIds:o,scrollToBottom:de,scrollToTop:me,setScrollToBottom:fe,setScrollToTop:he,queuedTasks:ge,setQueuedTasks:_e,spawnModalOpen:ye,setSpawnModalOpen:be,onSpawnModalConfirm:He,inputValueRef:ee,isOpen:s,cliViewMode:W,setCliViewMode:ue}),!(t.agentic_tool===`claude-code-cli`&&W===`terminal`)&&Xe,t&&(0,$.jsx)(nc,{sessionId:t.session_id,daemonUrl:sn(),open:xe,onClose:()=>{G(!1),Ce([])},initialFiles:Se,onUploadComplete:e=>{d(`Uploaded ${e.length} file(s)`)},onInsertMention:e=>{L.current?.insertText(`@${e}`)}})]})]})}),dc=({showHelpText:e=!0})=>(0,$.jsx)(q.Item,{name:`custom_context`,label:`Custom Context (JSON)`,help:e?`Add custom fields for use in zone trigger templates (e.g., {{ session.context.yourField }})`:void 0,rules:[{validator:$n}],children:(0,$.jsx)(Pn,{placeholder:`{"teamName": "Backend", "sprintNumber": 42}`,rows:4})}),{Text:fc,Paragraph:pc}=r,{TextArea:mc}=ce,hc=({showHelpText:e=!1})=>(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(q.Item,{name:[`callbackConfig`,`enabled`],label:`Enable Child Completion Callbacks`,valuePropName:`checked`,children:(0,$.jsx)(re,{})}),e&&(0,$.jsx)(pc,{type:`secondary`,style:{fontSize:12,marginTop:-16,marginBottom:16},children:`When enabled, this session will receive notifications when spawned child sessions complete their tasks. The callback message includes the child's final result inline.`}),(0,$.jsx)(q.Item,{name:[`callbackConfig`,`includeLastMessage`],label:`Include Child's Final Answer`,valuePropName:`checked`,children:(0,$.jsx)(re,{defaultChecked:!0})}),e&&(0,$.jsx)(pc,{type:`secondary`,style:{fontSize:12,marginTop:-16,marginBottom:16},children:`Include the child session's last assistant message in the callback. Disable if you only want task status and statistics.`}),(0,$.jsx)(q.Item,{name:[`callbackConfig`,`template`],label:(0,$.jsxs)($.Fragment,{children:[`Custom Template `,(0,$.jsx)(fc,{type:`secondary`,children:`(Optional)`})]}),children:(0,$.jsx)(mc,{placeholder:`Leave empty to use default template...`,autoSize:{minRows:4,maxRows:12},style:{fontFamily:`monospace`,fontSize:12}})}),e&&(0,$.jsxs)(pc,{type:`secondary`,style:{fontSize:12,marginTop:-16},children:[`Advanced: Customize the callback message template using Handlebars syntax. Available variables: `,(0,$.jsx)(fc,{code:!0,children:`childSessionId`}),`, `,(0,$.jsx)(fc,{code:!0,children:`spawnPrompt`}),`,`,` `,(0,$.jsx)(fc,{code:!0,children:`status`}),`, `,(0,$.jsx)(fc,{code:!0,children:`messageCount`}),`, `,(0,$.jsx)(fc,{code:!0,children:`toolUseCount`}),`,`,` `,(0,$.jsx)(fc,{code:!0,children:`lastAssistantMessage`})]})]}),gc=({showHelpText:e=!0})=>(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(q.Item,{name:`codexSandboxMode`,label:`Sandbox Mode`,help:e?`Controls where Codex can write files (workspace vs. full access)`:void 0,children:(0,$.jsx)(E,{placeholder:`Select sandbox mode`,options:en.map(({value:e,label:t,description:n})=>({value:e,label:`${t} · ${n}`}))})}),(0,$.jsx)(q.Item,{name:`codexApprovalPolicy`,label:`Approval Policy`,help:e?`Controls whether Codex must ask before executing commands`:void 0,children:(0,$.jsx)(E,{placeholder:`Select approval policy`,options:Lt.map(({value:e,label:t,description:n})=>({value:e,label:`${t} · ${n}`}))})}),(0,$.jsx)(q.Item,{name:`codexNetworkAccess`,label:`Network Access`,help:e?`Allow outbound HTTP/HTTPS requests (workspace-write sandbox only)`:void 0,valuePropName:`checked`,children:(0,$.jsx)(Qt,{showWarning:e})})]}),_c=({showHelpText:e=!0,titleRequired:t=!1,titleLabel:n=`Session Title`})=>(0,$.jsx)(q.Item,{name:`title`,label:n,rules:[{required:t,message:`Please enter a session title`}],help:e&&!t?`A short descriptive name for this session`:void 0,children:(0,$.jsx)(ce,{placeholder:`e.g., Auth System Implementation`})});function vc(e,t){let n=e.permission_config?.mode??ut(e.agentic_tool),r=tt(n);return{title:e.title||``,mcpServerIds:t,modelConfig:e.model_config,permissionMode:n,codexSandboxMode:e.permission_config?.codex?.sandboxMode??r.sandboxMode,codexApprovalPolicy:e.permission_config?.codex?.approvalPolicy??r.approvalPolicy,codexNetworkAccess:e.permission_config?.codex?.networkAccess??r.networkAccess,custom_context:e.custom_context?JSON.stringify(e.custom_context,null,2):``,callbackConfig:{enabled:e.callback_config?.enabled??!0,includeLastMessage:e.callback_config?.include_last_message??!0,template:e.callback_config?.template}}}function yc(e,t){let n={};if(e.title!==t.title&&(n.title=e.title),e.modelConfig&&(n.model_config={...e.modelConfig,updated_at:new Date().toISOString()}),e.permissionMode&&(n.permission_config={...t.permission_config,mode:e.permissionMode}),t.agentic_tool===`codex`&&(n.permission_config={...t.permission_config,...n.permission_config,codex:{sandboxMode:e.codexSandboxMode||t.permission_config?.codex?.sandboxMode||`workspace-write`,approvalPolicy:e.codexApprovalPolicy||t.permission_config?.codex?.approvalPolicy||`on-request`,networkAccess:e.codexNetworkAccess??t.permission_config?.codex?.networkAccess??!1}}),e.custom_context)try{n.custom_context=JSON.parse(e.custom_context)}catch{}else e.custom_context===``&&(n.custom_context=void 0);return e.callbackConfig&&(n.callback_config={enabled:e.callbackConfig.enabled??!0,include_last_message:e.callbackConfig.includeLastMessage??!0,template:e.callbackConfig.template||void 0}),n}var bc=({open:e,onClose:t,session:n,mcpServerById:i,sessionMcpServerIds:a,onUpdate:o,onUpdateSessionMcpServers:s,onUpdateSessionEnvSelections:c,client:l,currentUser:u})=>{let[d]=q.useForm(),[f,p]=Q.useState(()=>vc(n,a)),[m,h]=Q.useState([]),[g,_]=Q.useState([]),y=Q.useRef(!1),b=Q.useRef(n.session_id),x=Q.useMemo(()=>{if(!u)return!1;if(u.user_id===n.created_by)return!0;let e=u.role;return e===`admin`||e===`superadmin`},[u,n.created_by]);Q.useEffect(()=>{let t=y.current,r=n.session_id!==b.current;if(y.current=e,b.current=n.session_id,e&&!t||e&&r){let e=vc(n,a);p(e),d.setFieldsValue(e)}},[e,n,a,d]),Q.useEffect(()=>{if(!e||!l||!x)return;let t=!1;return(async()=>{try{let e=await l.service(`sessions/${n.session_id}/env-selections`).find();t||(h(e),_(e))}catch{t||(h([]),_([]))}})(),()=>{t=!0}},[e,l,x,n.session_id]);let S=()=>{d.validateFields().then(()=>{let e=d.getFieldsValue(!0),r=yc(e,n);Object.keys(r).length>0&&o&&o(n.session_id,r),s&&s(n.session_id,e.mcpServerIds||[]),x&&c&&(m.length!==g.length||m.some(e=>!g.includes(e)))&&c(n.session_id,m),t()})},C=()=>{d.resetFields(),t()},w=n.agentic_tool===`codex`,T=[];return w&&T.push({key:`codex-settings`,label:(0,$.jsxs)(r.Text,{strong:!0,children:[(0,$.jsx)(pe,{style:{marginRight:8}}),`Codex Sandbox & Policies`]}),children:(0,$.jsx)(gc,{showHelpText:!0})}),x&&l&&T.push({key:`env-selections`,label:(0,$.jsxs)(r.Text,{strong:!0,children:[(0,$.jsx)(v,{style:{marginRight:8}}),`Environment Variables`]}),children:(0,$.jsx)(Wa,{ownerUserId:n.created_by,client:l,value:m,onChange:h})}),T.push({key:`callback-config`,label:(0,$.jsxs)(r.Text,{strong:!0,children:[(0,$.jsx)(Ke,{style:{marginRight:8}}),`Callbacks`]}),children:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Qs,{session:n,onNavigate:t}),(0,$.jsx)(hc,{showHelpText:!0})]})}),T.push({key:`advanced`,label:(0,$.jsxs)(r.Text,{strong:!0,children:[(0,$.jsx)(pe,{style:{marginRight:8}}),`Advanced`]}),children:(0,$.jsx)(an,{fallbackTitle:`Failed to load Advanced settings.`,resetKey:n.session_id,children:(0,$.jsx)(dc,{showHelpText:!0})})}),(0,$.jsx)(He,{title:`Session Settings`,open:e,onOk:S,onCancel:C,okText:`Save`,cancelText:`Cancel`,width:600,children:(0,$.jsxs)(q,{form:d,layout:`vertical`,initialValues:f,children:[(0,$.jsx)(_c,{showHelpText:!1,titleRequired:!1,titleLabel:`Title`}),(0,$.jsx)(q.Item,{label:`Session IDs`,children:(0,$.jsx)(zn,{session:n})}),(0,$.jsx)(zt,{agenticTool:n.agentic_tool,mcpServerById:i,showHelpText:!1,compact:!0,client:l}),(0,$.jsx)(W,{dashed:!0,style:{margin:`8px 0 16px`}}),(0,$.jsx)(I,{ghost:!0,destroyOnHidden:!1,expandIcon:({isActive:e})=>(0,$.jsx)(M,{rotate:e?180:0}),items:T})]})})},xc=st.MEMBER,Sc=`\x1B]8;`,Cc=`\x1B]8;;\x07`,wc=`\x07`,Tc=e=>{let t=``,n=0;for(;n<e.length;){let r=e.indexOf(Sc,n);if(r===-1){t+=e.slice(n);break}t+=e.slice(n,r);let i=r+4,a=e.indexOf(wc,i);if(a===-1){t+=e.slice(r);break}let o=e.slice(i,a),s=o.lastIndexOf(`;`),c=(s===-1?o:o.slice(s+1)).trim(),l=a+1,u=e.indexOf(Cc,l);if(u===-1){t+=e.slice(l);break}let d=e.slice(l,u);if(!c)t+=d;else if(d.includes(c))t+=d;else{let e=d.trim(),n=e.length>0?e:c;t+=`${n} (${c})`}n=u+6}return t},Ec=({open:e,onClose:t,client:n,user:r,branchId:i,initialCommands:a=[]})=>{let{modal:o}=w.useApp(),s=(0,Q.useRef)(null),c=(0,Q.useRef)(null),[l,u]=(0,Q.useState)(!1),[d,f]=(0,Q.useState)(!1),[p,m]=(0,Q.useState)(!1),[h,g]=(0,Q.useState)({}),_=et(r?.role,xc);return(0,Q.useEffect)(()=>{if(!e||!d||!s.current||!n||!_)return;if(!r?.user_id){console.error(`[Terminal] Terminal requires authenticated user`);return}let t=!0,o=null,l=e=>e,f=n.io,p=()=>{f&&(f.off(`terminal:output`,h),f.off(`terminal:exit`,v),o&&f.emit(`leave`,o))},h=e=>{c.current&&e.userId===r?.user_id&&c.current.write(l(e.data))},v=e=>{c.current&&e.userId===r?.user_id&&(c.current.writeln(`\r\n\r\n[Terminal exited with code ${e.exitCode}]`),c.current.writeln(`[Close and reopen terminal to start a new session]`),u(!1))},y=()=>{let e=new ti({allowProposedApi:!0,fontSize:14,fontFamily:`Menlo, Monaco, "Courier New", monospace`,cursorBlink:!0,scrollback:1e3,rows:40,cols:160,linkHandler:{activate:(e,t)=>{window.open(t,`_blank`,`noopener,noreferrer`)},hover:()=>{}},theme:{background:`#141414`,foreground:`#ffffff`,cursor:`#2e9a92`,cursorAccent:`#141414`,black:`#000000`,red:`#ff4d4f`,green:`#52c41a`,yellow:`#faad14`,blue:`#1890ff`,magenta:`#eb2f96`,cyan:`#2e9a92`,white:`#f0f0f0`,brightBlack:`#8c8c8c`,brightRed:`#ff7875`,brightGreen:`#95de64`,brightYellow:`#ffc53d`,brightBlue:`#40a9ff`,brightMagenta:`#f759ab`,brightCyan:`#3db5ab`,brightWhite:`#ffffff`}});e.open(s.current),c.current=e;let t=new ei;e.loadAddon(t);let n=new $r((e,t)=>{window.open(t,`_blank`,`noopener,noreferrer`)});return e.loadAddon(n),e};return(async()=>{let e=y();try{let s=await n.service(`terminals`).create({rows:40,cols:160,branchId:i});if(!t)return;if(o=s.channel,u(!0),l=Tc,g({zellijSession:s.sessionName,zellijReused:!s.isNew,branchName:s.branchName}),s.isNew&&e.clear(),f.emit(`join`,s.channel),f.on(`terminal:output`,h),f.on(`terminal:exit`,v),e.onData(e=>{f.emit(`terminal:input`,{userId:r?.user_id,input:e})}),e.onResize(({cols:e,rows:t})=>{f.emit(`terminal:resize`,{userId:r?.user_id,cols:e,rows:t})}),f.emit(`terminal:resize`,{userId:r?.user_id,cols:e.cols,rows:e.rows}),a.length>0)for(let e of a)f.emit(`terminal:input`,{userId:r?.user_id,input:`${e}\r`})}catch(e){console.error(`[Terminal] Failed to create terminal:`,e);let t=e instanceof Error?e.message:String(e);if(/zellij is not installed/i.test(t)){m(!0),c.current&&=(c.current.dispose(),null);return}c.current&&(c.current.writeln(`\r
|
|
22
|
-
Failed to connect to terminal`),c.current.writeln(`Error: ${t}`))}})(),()=>{t=!1,c.current&&=(c.current.dispose(),null),p(),u(!1),g({}),m(!1)}},[e,d,n,a,_,i,r?.user_id]),(0,$.jsx)(He,{title:`Terminal${h.branchName?` - ${h.branchName}`:``}`,open:e,onCancel:()=>{l?o.confirm({title:`Close Terminal?`,content:`The Zellij session will continue running in the background. You can reconnect by reopening the terminal.`,okText:`Close`,okType:`primary`,cancelText:`Cancel`,onOk:()=>{t()}}):t()},afterOpenChange:f,footer:null,width:`auto`,styles:{body:{padding:`16px`,background:`#000`}},centered:!0,children:_?p?(0,$.jsxs)(`div`,{style:{padding:`24px`,color:`#fff`,maxWidth:560},children:[(0,$.jsx)(`p`,{style:{marginTop:0},children:(0,$.jsx)(`strong`,{children:`Zellij isn't installed on the daemon host.`})}),(0,$.jsxs)(`p`,{children:[`The web terminal uses`,` `,(0,$.jsx)(`a`,{href:`https://zellij.dev/`,target:`_blank`,rel:`noopener noreferrer`,style:{color:`#3db5ab`},children:`Zellij`}),` `,`for persistent, multiplexed sessions. Install it to enable terminals — everything else in Agor works without it.`]}),(0,$.jsx)(`p`,{style:{marginBottom:0},children:(0,$.jsx)(`a`,{href:`https://agor.live/guide/extended-install#optional-zellij-for-the-web-terminal`,target:`_blank`,rel:`noopener noreferrer`,style:{color:`#3db5ab`},children:`Extended install guide →`})})]}):(0,$.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:12,color:`#fff`},children:(0,$.jsx)(`div`,{ref:s})}):(0,$.jsxs)(`div`,{style:{padding:`24px`,color:`#fff`},children:[(0,$.jsxs)(`p`,{children:[`Terminal access requires at least `,(0,$.jsx)(`strong`,{children:xc}),` role.`]}),(0,$.jsx)(`p`,{style:{marginBottom:0},children:`Contact your Agor administrator to request elevated permissions.`})]})})},{Text:Dc,Link:Oc}=r,kc=({open:e,onClose:t})=>{let{customTheme:n,setCustomTheme:r,setThemeMode:i}=vr(),[a]=q.useForm();(0,Q.useEffect)(()=>{if(e){let e=n?JSON.stringify(n,null,2):Ac();a.setFieldsValue({themeConfig:e})}},[e,n,a]);let o=async()=>{try{let e=await a.validateFields();r(JSON.parse(e.themeConfig)),i(`custom`),t()}catch(e){console.error(`Theme validation failed:`,e)}},s=()=>{a.setFieldsValue({themeConfig:Ac()})},c=()=>{a.resetFields(),t()};return(0,$.jsxs)(He,{title:`Custom Theme Editor`,open:e,onCancel:c,width:700,footer:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(J,{onClick:s,children:`Reset to Default`}),(0,$.jsx)(J,{onClick:c,children:`Cancel`}),(0,$.jsx)(J,{type:`primary`,onClick:o,children:`Save & Apply`})]}),children:[(0,$.jsx)(H,{title:`Edit your custom theme configuration`,description:(0,$.jsxs)(Dc,{children:[`Modify the JSON below to customize your Ant Design theme. See the`,` `,(0,$.jsx)(Oc,{href:`https://ant.design/docs/react/customize-theme`,target:`_blank`,rel:`noopener noreferrer`,children:`Ant Design theme documentation`}),` `,`for available options.`]}),type:`info`,showIcon:!0,style:{marginBottom:16}}),(0,$.jsx)(q,{form:a,layout:`vertical`,children:(0,$.jsx)(q.Item,{name:`themeConfig`,rules:[{required:!0,message:`Please enter theme configuration`},{validator:$n}],children:(0,$.jsx)(Pn,{placeholder:`Enter your custom theme JSON configuration...`,rows:16})})})]})};function Ac(){return JSON.stringify({token:{colorPrimary:`#2e9a92`,colorSuccess:`#52c41a`,colorWarning:`#faad14`,colorError:`#ff4d4f`,colorInfo:`#2e9a92`,colorLink:`#2e9a92`,borderRadius:8}},null,2)}var jc=e=>({...e,collapsed:!1,activeTab:`comments`}),Mc=e=>e.collapsed?{collapsed:!1,activeTab:`assistant`}:{...e,collapsed:!0};function Nc({currentBoardId:e,primaryAssistantBranchId:t,effectiveSelectedSessionId:n,autoOpenedAssistantBoardId:r,restoreAllowed:i,sessions:a}){return!i||!e||!t||n||r===e?null:a.filter(e=>!e.archived).sort((e,t)=>new Date(t.last_updated).getTime()-new Date(e.last_updated).getTime())[0]?.session_id??null}var{Content:Pc}=ae,Fc=({setCurrentBoardId:e})=>(Ut(e),null),Ic=Object.freeze([]),Lc=Object.freeze([]),Rc=320,zc=45,Bc=e=>Math.min(zc,Rc/e*100),Vc=(e,t,n)=>Math.min(n,Math.max(t,e)),Hc=({client:e,user:t,connected:n=!1,connecting:r=!1,sessionById:i,sessionsByBranch:a,availableAgents:o,boardById:s,boardObjectById:c,boardObjectsByBoardId:l,commentById:d,cardById:f,cardTypeById:p,repoById:m,branchById:h,userById:g,mcpServerById:_,sessionMcpServerIds:v,userAuthenticatedMcpServerIds:y,initialBoardId:b,openSettingsTab:x,onSettingsClose:S,openUserSettings:C,onUserSettingsClose:w,openNewBranchModal:T,onNewBranchModalClose:E,suppressLeftPanel:D=!1,onCreateSession:O,onForkSession:k,onBtwForkSession:A,onSpawnSession:j,onSendPrompt:M,onUpdateSession:N,onDeleteSession:P,onCreateBoard:F,onUpdateBoard:I,onDeleteBoard:L,onArchiveBoard:ee,onUnarchiveBoard:R,onCreateRepo:z,onCreateLocalRepo:B,onUpdateRepo:te,onDeleteRepo:V,onArchiveOrDeleteBranch:ne,onUnarchiveBranch:re,onUpdateBranch:H,onCreateBranch:U,onStartEnvironment:ie,onStopEnvironment:oe,onNukeEnvironment:se,onExecuteScheduleNow:ce,onCreateUser:le,onUpdateUser:W,onDeleteUser:ue,onCreateMCPServer:de,onDeleteMCPServer:fe,gatewayChannelById:pe,onCreateGatewayChannel:me,onUpdateGatewayChannel:he,onDeleteGatewayChannel:ge,artifactById:_e,onUpdateArtifact:ve,onDeleteArtifact:ye,onUpdateSessionMcpServers:be,onUpdateSessionEnvSelections:xe,onSendComment:G,onReplyComment:Se,onResolveComment:Ce,onToggleReaction:we,onDeleteComment:Te,onLogout:Ee,onRetryConnection:De,onRestartOnboarding:Oe,instanceLabel:ke,instanceDescription:Ae,webTerminalEnabled:je=!1,branchStorageConfig:Me})=>{let{showWarning:Ne}=xt(),Pe=St(),Fe=mt(),Ie=Pe.pathname===`/`,Le=wi(Fe),[K,Re]=(0,Q.useState)(!1),ze=(0,Q.useRef)(null),[Be,Ve]=(0,Q.useState)(null),[He,Ue]=(0,Q.useState)(!1),[We,Ge]=(0,Q.useState)(`assistant`),[q,Ke]=(0,Q.useState)(null),[qe,Je]=(0,Q.useState)(null),Ye=(0,Q.useRef)(null),[J,Xe]=(0,Q.useState)(null),Ze=J?.kind===`branch`?J.id:null,Qe=J?.kind===`artifact`?J.id:null,Y=(0,Q.useMemo)(()=>!Ie&&!K&&qe&&i.has(qe)?qe:null,[Ie,K,qe,i]),[$e,tt]=(0,Q.useState)(`assistant`),[nt,rt]=(0,Q.useState)(!1),[at,ot]=(0,Q.useState)(()=>typeof window>`u`?1440:window.innerWidth);(0,Q.useEffect)(()=>{if(typeof window>`u`)return;let e=()=>ot(window.innerWidth);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let st=(0,Q.useMemo)(()=>Bc(at),[at]),{isOpen:ct,section:lt,openSettings:ut,closeSettings:dt,setSection:ft}=Bt(),pt=ct||!!x,ht=x||lt,gt=!ct&&!Le,_t=nt||!!C,[X,vt]=(0,Q.useState)(()=>b||``),[yt,bt]=Nt(`agor:commentsPanelCollapsed`,!1),[Ct,wt]=Sr(t?.user_id,`panel:left:size`,24),Tt=s.get(X),Et=(Ie||K)&&!Le,Dt=Et?``:X,Ot=Et?void 0:Tt;(0,Q.useLayoutEffect)(()=>{!Ie||Le||(X&&vt(``),qe&&Je(null),J&&Xe(null),K&&Re(!1))},[J,X,Le,Ie,K,qe]);let kt=yt||D||Et,At=(0,Q.useRef)(null),jt=Vc(Ct,st,zc),[Mt,Pt]=Sr(t?.user_id,`panel:right:size`,50),Ft=Vc(Mt,15,75),Lt=(0,Q.useRef)(null),Rt=(0,Q.useRef)(!1),zt=(0,Q.useRef)(!1),[Vt,Ht]=(0,Q.useState)(null),[Ut,Wt]=(0,Q.useState)(null),[Gt,Kt]=(0,Q.useState)(!1),[qt,Yt]=(0,Q.useState)([]),[Xt,Zt]=(0,Q.useState)(void 0),[Qt,$t]=(0,Q.useState)(null),[en,tn]=(0,Q.useState)(null),[nn,rn]=(0,Q.useState)(void 0),[an,on]=(0,Q.useState)(null),[sn,ln]=(0,Q.useState)(!1),[un,dn]=Nt(`agor:eventStreamPanelCollapsed`,!0),{recentBoards:pn,recentBoardIds:mn,trackBoardVisit:hn}=Wn(It(s),X);(0,Q.useEffect)(()=>{X&&(localStorage.setItem(`agor:currentBoardId`,X),hn(X))},[X,hn]),(0,Q.useEffect)(()=>{Bn()},[]),Ci(e,t?.user_id,t?.preferences?.audio),(0,Q.useEffect)(()=>{At.current&&(kt?At.current.collapse():(At.current.expand(),At.current.resize(jt)))},[jt,kt]),(0,Q.useEffect)(()=>{Lt.current&&(Y||!un)&&Lt.current.resize(Ft)},[Y,Ft,un]),pr({currentBoardId:X,currentSessionId:Y,boardById:s,sessionById:i,branchById:h,artifactById:_e,onBoardChange:e=>{vt(e)},onSessionChange:e=>{Je(e)},onActiveUrlTargetChange:Xe});let Z=En({boardById:s,sessionById:i,branchById:h,artifactById:_e}),_n=(0,Q.useCallback)(e=>{e!==X&&Je(null),vt(e)},[X]);(0,Q.useEffect)(()=>{if(s.size===0){if(!n)return;X&&_n(``);return}X&&!s.has(X)&&_n(It(s)[0]?.board_id||``)},[s,X,_n,n]),(0,Q.useEffect)(()=>{if(He){let e=ze.current?.getViewportCenter();Ke(e||null)}},[X,He]);let vn=(0,Q.useMemo)(()=>X&&l.get(X)||Lc,[l,X]);Si(X,a,vn);let yn=t?.preferences?.eventStream?.enabled??!0,{events:bn,clearEvents:Sn}=bi({client:e,enabled:!un}),Cn=(0,Q.useCallback)((e=[],t)=>{Yt(e),Zt(t),Kt(!0)},[]),wn=(0,Q.useCallback)(e=>{tt(e.activeTab),bt(e.collapsed)},[bt]),Tn=(0,Q.useCallback)(()=>{wn(Mc({collapsed:kt,activeTab:$e}))},[wn,kt,$e]),Dn=(0,Q.useCallback)(()=>{wn(jc({collapsed:!0,activeTab:`assistant`}))},[wn]),On=(0,Q.useCallback)(e=>{Wt(t=>t===e?null:e)},[]),kn=(0,Q.useCallback)(()=>{X&&Z.goToBoard(X)},[Z,X]),An=()=>{Kt(!1),Yt([]),Zt(void 0)},jn=async e=>{let t=await O?.(e,X);Ve(null),t&&Z.goToSession(t)},Mn=async e=>{let t=await U?.(e.repoId,{name:e.name,ref:e.ref,refType:e.refType,createBranch:e.createBranch,sourceBranch:e.sourceBranch,pullLatest:e.pullLatest,issue_url:e.issue_url,pull_request_url:e.pull_request_url,...e.board_id?{boardId:e.board_id}:{},...e.position?{position:e.position}:{},...e.storage_mode?{storage_mode:e.storage_mode}:{},...e.clone_depth===void 0?{}:{clone_depth:e.clone_depth}});Ue(!1),t&&Z.goToBranch(t.branch_id)},Nn=async e=>{if(!F)return;let t=await F(e);t?.board_id&&Z.goToBoard(t.board_id)},Pn=async(n,r)=>{let i=n.repoId;if(!i||!U||!H)throw Error(`Missing repository or branch creation handler for assistant creation.`);r?.onStatusChange?.(`Creating assistant branch…`);let a=await xn({displayName:n.displayName,description:n.description,emoji:n.emoji,repoId:i,branchName:n.branchName,sourceBranch:n.sourceBranch},{client:e,repoById:m,onCreateBranch:U,onUpdateBranch:H});if(!a)throw Error(`Assistant branch could not be created. Please check the branch details and try again.`);let o={branch_id:a.branch_id,agent:n.agent,title:`${n.emoji?`${n.emoji} `:``}${n.displayName} bootstrap`,initialPrompt:gn({displayName:n.displayName,emoji:n.emoji,description:n.description,userName:t?.name,userEmail:t?.email}),modelConfig:n.modelConfig,effort:n.effort,mcpServerIds:n.mcpServerIds,permissionMode:n.permissionMode,codexSandboxMode:n.codexSandboxMode,codexApprovalPolicy:n.codexApprovalPolicy,codexNetworkAccess:n.codexNetworkAccess};try{if(!O)throw Error(`Missing session creation handler.`);let t=await Jt({client:e,branchId:a.branch_id,boardId:a.board_id||X,sessionConfig:o,onCreateSession:O,onStatusChange:r?.onStatusChange});Z.goToSession(t);return}catch(e){console.error(`Assistant session bootstrap failed:`,e),Ne(`Assistant branch was created, but the first session could not start: ${e instanceof Error?e.message:String(e)}. Opening the branch instead.`,{key:`assistant-bootstrap-session`,duration:8})}r?.onStatusChange?.(`Opening assistant branch…`),Z.goToBranch(a.branch_id)},Fn=(0,Q.useRef)(i);Fn.current=i;let In=(0,Q.useRef)(h);In.current=h;let Ln=(0,Q.useCallback)(t=>{let n=Fn.current.get(t);e&&n?.ready_for_prompt&&e.service(`sessions`).patch(t,{ready_for_prompt:!1}).catch(()=>{});let r=n?.branch_id?In.current.get(n.branch_id):void 0;e&&r?.needs_attention&&e.service(`branches`).patch(r.branch_id,{needs_attention:!1}).catch(()=>{}),Z.goToSession(t)},[e,Z]),Rn=(0,Q.useCallback)(async(n,r,i,a,o)=>{if(e)try{await e.service(`sessions/${n}/permission-decision`).create({requestId:r,taskId:i,allow:a,reason:a?`Approved by user`:`Denied by user`,remember:o!==it.ONCE,scope:o,decidedBy:t?.user_id||`unknown`})}catch(e){console.error(`❌ Failed to send permission decision:`,e)}},[e,t?.user_id]),zn=Y&&i.get(Y)||null,Vn=zn?h.get(zn.branch_id):null;(0,Q.useEffect)(()=>{qe&&!i.has(qe)&&Je(null)},[qe,i]);let Hn=Qt?i.get(Qt):null,Un=Tt?.primary_assistant_id??null,Gn=Un?h.get(Un):void 0,Kn=Gn?m.get(Gn.repo_id):void 0,qn=!!(Un&&!Gn);(0,Q.useEffect)(()=>{tt(qn?`all-sessions`:`assistant`)},[Tt?.board_id,qn]),(0,Q.useEffect)(()=>{let e=Nc({currentBoardId:Tt?.board_id,primaryAssistantBranchId:Gn?.branch_id,effectiveSelectedSessionId:Y,autoOpenedAssistantBoardId:Ye.current,restoreAllowed:gt,sessions:Gn&&a.get(Gn.branch_id)||[]});e&&Tt&&(Ye.current=Tt.board_id,Z.goToSession(e))},[Tt,Gn,a,Y,gt,Z]),yi(Tt);let Yn=en?h.get(en):null,Xn=Yn?m.get(Yn.repo_id):null,Zn=Yn&&a.get(Yn.branch_id)||[],Qn=Be?h.get(Be):null,$n=(0,Q.useMemo)(()=>vn.filter(e=>e.branch_id).map(e=>h.get(e.branch_id)).filter(e=>e!==void 0),[vn,h]),er=It(d).filter(e=>e.board_id===X&&!e.resolved),tr=t?.name||t?.email?.split(`@`)[0]||``,rr=!!tr&&er.some(e=>[`@${tr}`,`@"${tr}"`,`@${t?.email}`,`@"${t?.email}"`].some(t=>e.content.includes(t))),ir=(0,Q.useMemo)(()=>({repoById:m,userById:g,mcpServerById:_,userAuthenticatedMcpServerIds:y}),[m,g,_,y]),ar=(0,Q.useMemo)(()=>({sessionById:i,branchById:h,sessionsByBranch:a}),[i,h,a]),or=je&&et(t?.role,xc);return(0,$.jsx)(pi,{value:ir,children:(0,$.jsx)(fi,{value:ar,children:(0,$.jsxs)(ri,{value:(0,Q.useMemo)(()=>({onSendPrompt:M,onFork:k,onBtwFork:A,onSubsession:j,onUpdateSession:N,onDeleteSession:P,onPermissionDecision:Rn,onStartEnvironment:ie,onStopEnvironment:oe,onNukeEnvironment:se,onViewLogs:e=>on(e),onOpenSettings:e=>$t(e),onSessionClick:Ln,onOpenBranch:(e,t)=>{tn(e),rn(t)},onOpenTerminal:or?Cn:void 0}),[M,k,A,j,N,P,Rn,ie,oe,se,Ln,Cn,or]),children:[(0,$.jsx)(Fc,{setCurrentBoardId:_n}),(0,$.jsxs)(ae,{style:{height:`100vh`},children:[(0,$.jsx)(ga,{user:t,presenceClient:e,presenceUsers:It(g),currentUserId:t?.user_id,connected:n,connecting:r,onMenuClick:Tn,onCommentsClick:Dn,onEventStreamClick:()=>{Y?(X&&Z.goToBoard(X),dn(!1)):dn(!un)},onSettingsClick:()=>ut(),onUserSettingsClick:()=>rt(!0),onThemeEditorClick:()=>ln(!0),onLogout:Ee,onRetryConnection:De,currentBoardName:Ot?.name,currentBoardIcon:Ot?.icon,unreadCommentsCount:er.filter(e=>!e.parent_comment_id).length,eventStreamEnabled:yn,hasUserMentions:rr,boards:It(s),currentBoardId:Dt,onBoardChange:Z.goToBoard,onHomeClick:()=>{Re(!0),Z.goHome()},branchById:h,boardById:s,onUserClick:(e,t,n)=>{t&&Z.goToBoard(t)},instanceLabel:ke,recentBoards:pn,instanceDescription:Ae,sessionById:i,artifactById:_e,mcpServerById:_}),(0,$.jsx)(Pc,{style:{position:`relative`,overflow:`hidden`,display:`flex`},children:(0,$.jsxs)(yr,{id:`main-layout`,direction:`horizontal`,style:{flex:1},onLayout:e=>{!kt&&Rt.current&&e.length>=2&&wt(Vc(e[0],st,zc))},children:[(0,$.jsx)(Cr,{id:`assistant-panel`,order:1,ref:At,collapsible:!0,defaultSize:kt?0:jt,collapsedSize:0,minSize:kt?0:st,maxSize:zc,style:{minWidth:kt?0:Rc},children:!kt&&(0,$.jsx)(uo,{client:e,board:Tt||null,activeTab:$e,onTabChange:tt,primaryAssistantBranch:Gn,primaryAssistantRepo:Kn,primaryAssistantInaccessible:qn,sessionsByBranch:a,branchById:h,repoById:m,userById:g,currentUserId:t?.user_id,selectedSessionId:Y,onSessionClick:Ln,onCreateSession:Ve,onForkSession:k,onSpawnSession:j,onArchiveOrDelete:ne,onOpenSettings:(e,t)=>{tn(e),rn(t)},onOpenSessionSettings:$t,onOpenTerminal:or?Cn:void 0,onStartEnvironment:ie,onStopEnvironment:oe,onViewLogs:on,onNukeEnvironment:se,onExecuteScheduleNow:ce,comments:It(d).filter(e=>e.board_id===X),boardObjects:Tt?.objects,onSendComment:e=>G?.(X||``,e),onReplyComment:Se,onResolveComment:Ce,onToggleReaction:we,onDeleteComment:Te,hoveredCommentId:Vt,selectedCommentId:Ut})}),(0,$.jsx)(xr,{style:{width:kt?`0px`:`4px`,background:`var(--ant-color-border-secondary)`,cursor:kt?`default`:`col-resize`,transition:`background 0.2s`,pointerEvents:kt?`none`:`auto`},onDragging:e=>{Rt.current=e},onMouseEnter:e=>{kt||(e.currentTarget.style.background=`var(--ant-color-primary)`)},onMouseLeave:e=>{kt||(e.currentTarget.style.background=`var(--ant-color-border-secondary)`)}}),(0,$.jsx)(Cr,{id:`content-panel`,order:2,defaultSize:kt?100:100-jt,minSize:40,children:(0,$.jsxs)(yr,{id:`canvas-session`,direction:`horizontal`,style:{flex:1},onLayout:e=>{Y&&zt.current&&e.length===2&&Pt(Vc(e[1],15,75))},children:[(0,$.jsx)(Cr,{id:`canvas-panel`,order:1,defaultSize:Y?100-Ft:100,minSize:20,children:(0,$.jsxs)(`div`,{style:{position:`relative`,overflow:`hidden`,height:`100%`},children:[Et?(0,$.jsx)(es,{client:e,connected:n,boardById:s,recentBoardIds:mn,branchById:h,repoById:m,sessionById:i,sessionsByBranch:a,userById:g,currentUserId:t?.user_id,onBoardClick:Z.goToBoard,onBranchClick:Z.goToBranch,onSessionClick:Ln}):(0,$.jsx)(Ys,{ref:ze,board:Tt||null,client:e,sessionById:i,sessionsByBranch:a,userById:g,repoById:m,branches:$n,primaryAssistantId:Un,branchById:h,boardObjectById:c,boardObjectsByBoardId:l,commentById:d,cardById:f,currentUserId:t?.user_id,selectedSessionId:Y,activeUrlTargetBranchId:Ze,activeUrlTargetArtifactId:Qe,availableAgents:o,mcpServerById:_,sessionMcpServerIds:v,onSessionClick:Ln,onSessionUpdate:N,onSessionDelete:P,onForkSession:k,onSpawnSession:j,onUpdateSessionMcpServers:be,onOpenSettings:$t,onCreateSessionForBranch:Ve,onOpenBranch:tn,onArchiveOrDeleteBranch:ne,onOpenTerminal:or?Cn:void 0,onStartEnvironment:ie,onStopEnvironment:oe,onViewLogs:on,onNukeEnvironment:se,onOpenCommentsPanel:Dn,onCommentHover:Ht,onCommentSelect:On}),(0,$.jsx)(ts,{onClick:()=>{Ke((Et?null:ze.current?.getViewportCenter())||null),Ge(`assistant`),Ue(!0)}})]})}),(Y||!un)&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(xr,{style:{width:`4px`,background:`var(--ant-color-border-secondary)`,cursor:`col-resize`,transition:`background 0.2s`},onDragging:e=>{zt.current=e},onMouseEnter:e=>{e.currentTarget.style.background=`var(--ant-color-primary)`},onMouseLeave:e=>{e.currentTarget.style.background=`var(--ant-color-border-secondary)`}}),(0,$.jsx)(Cr,{id:`session-panel`,order:2,ref:Lt,defaultSize:Ft,minSize:15,maxSize:75,children:Y?(0,$.jsx)(uc,{client:e,session:zn,branch:Vn,currentUserId:t?.user_id,sessionMcpServerIds:v.get(Y)??Ic,open:!!Y,onClose:kn}):(0,$.jsx)(To,{collapsed:!1,onToggleCollapse:()=>dn(!0),events:bn,onClear:Sn,currentUserId:t?.user_id,selectedSessionId:Y,currentBoard:Tt,client:e,branchActions:{onSessionClick:Ln,onCreateSession:e=>Ve(e),onOpenSettings:e=>tn(e),onNukeEnvironment:se}})})]})]})})]})}),(0,$.jsx)(u,{style:{display:`none`},openFileDialogOnClick:!1,showUploadList:!1}),Be&&(0,$.jsx)(ns,{open:!0,onClose:()=>Ve(null),onCreate:jn,availableAgents:o,branchId:Be,branch:Qn||void 0,mcpServerById:_,currentUser:t,client:e,userById:g}),(0,$.jsx)(Jn,{open:pt,onClose:()=>{dt(),S?.()},client:e,currentUser:t,boardById:s,boardObjects:It(c),repoById:m,branchById:h,sessionById:i,sessionsByBranch:a,userById:g,mcpServerById:_,cardById:f,cardTypeById:p,activeTab:ht,onTabChange:e=>{ft(e),x&&S?.()},onCreateBoard:F,onUpdateBoard:I,onDeleteBoard:L,onArchiveBoard:ee,onUnarchiveBoard:R,onCreateRepo:z,onCreateLocalRepo:B,onUpdateRepo:te,onDeleteRepo:V,onArchiveOrDeleteBranch:ne,onUnarchiveBranch:re,onUpdateBranch:H,onCreateBranch:U,onStartEnvironment:ie,onStopEnvironment:oe,onCreateUser:le,onUpdateUser:W,onDeleteUser:ue,onCreateMCPServer:de,onDeleteMCPServer:fe,gatewayChannelById:pe,onCreateGatewayChannel:me,onUpdateGatewayChannel:he,onDeleteGatewayChannel:ge,artifactById:_e,onUpdateArtifact:ve,onDeleteArtifact:ye,branchStorageConfig:Me}),Hn&&(0,$.jsx)(bc,{open:!!Qt,onClose:()=>$t(null),session:Hn,mcpServerById:_,sessionMcpServerIds:Qt&&v.get(Qt)||[],onUpdate:N,onUpdateSessionMcpServers:be,onUpdateSessionEnvSelections:xe,client:e,currentUser:t}),(0,$.jsx)(cn,{open:!!en,onClose:()=>{tn(null),rn(void 0)},defaultTab:nn,branch:Yn||null,repo:Xn||null,sessions:Zn,boardById:s,mcpServerById:_,client:e,currentUser:t,onUpdateBranch:H,onUpdateRepo:te,onArchiveOrDelete:ne,onOpenSettings:()=>{tn(null),ut()},onSessionClick:Ln,onExecuteScheduleNow:ce}),(0,$.jsx)(Ec,{open:Gt,onClose:An,client:e,user:t,branchId:Xt,initialCommands:qt}),(0,$.jsx)(bo,{open:He,onClose:()=>{Ue(!1),Ge(`assistant`),Ke(null)},defaultTab:We,repoById:m,boardById:s,currentBoardId:X,defaultPosition:q||void 0,onCreateBranch:Mn,onCreateBoard:Nn,onCreateRepo:e=>z?.(e),onCreateLocalRepo:e=>B?.(e),onCreateAssistant:Pn,availableAgents:o,mcpServerById:_,currentUser:t,client:e,branchStorageConfig:Me}),an&&(0,$.jsx)(fn,{open:!!an,onClose:()=>on(null),branch:h.get(an),client:e}),(0,$.jsx)(kc,{open:sn,onClose:()=>ln(!1)}),(0,$.jsx)(nr,{open:_t,onClose:()=>{rt(!1),w?.()},user:t||null,currentUser:t||null,mcpServerById:_,client:e,onUpdate:W,onRestartOnboarding:async()=>{rt(!1),w?.(),await Oe?.()}})]})]})})})};export{Hc as App};
|