@qredence/fleet 0.5.11 → 0.6.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.
Files changed (57) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/web/client/assets/{artifacts-panel-CQmFEF_H.js → artifacts-panel-CJ75gQub.js} +1 -1
  3. package/dist/web/client/assets/chat-Ci2cEQrR.js +52 -0
  4. package/dist/web/client/assets/{chat-command-palette-CmHTS3rs.js → chat-command-palette-CkISHfKE.js} +1 -1
  5. package/dist/web/client/assets/{command-DPfiaYUL.js → command-_WjnervL.js} +1 -1
  6. package/dist/web/client/assets/fleet-message-queue-BCno4XP-.js +1 -0
  7. package/dist/web/client/assets/{horizontal-resize-qK6eRhIG.js → horizontal-resize-CwoDojST.js} +1 -1
  8. package/dist/web/client/assets/{index-C1zOjrMK.js → index-DJ1fFbQu.js} +2 -2
  9. package/dist/web/client/assets/input-group-Tb5TYbzi.js +1 -0
  10. package/dist/web/client/assets/{model-selector-list-DsKTuAgS.js → model-selector-list-Ch05B2nZ.js} +1 -1
  11. package/dist/web/client/assets/{openui-renderer-J3dhPpL4.js → openui-renderer-Bf60nxNi.js} +5 -5
  12. package/dist/web/client/assets/pencil-DcUwsKLn.js +1 -0
  13. package/dist/web/client/assets/{provider-label-Dpr7djG9.js → provider-label-DDLRnZyC.js} +1 -1
  14. package/dist/web/client/assets/{right-panel-registry-DewpBWHM.js → right-panel-registry-Dp8yX-oL.js} +2 -2
  15. package/dist/web/client/assets/routes-DpgMJZ5n.js +16 -0
  16. package/dist/web/client/assets/settings-dialog-YJkvt5EB.js +2 -0
  17. package/dist/web/client/assets/{subagent-chat-panel-DkVUumrP.js → subagent-chat-panel-Yujplxpb.js} +1 -1
  18. package/dist/web/client/assets/{subagent-transcript-D8wmQxXe.js → subagent-transcript-CnI-mqN0.js} +1 -1
  19. package/dist/web/client/assets/{subagents-panel-BMp2Ego0.js → subagents-panel-CjXEdimj.js} +1 -1
  20. package/dist/web/client/assets/{virtualized-turn-list-DMJENRY0.js → virtualized-turn-list--Vynre4D.js} +2 -2
  21. package/dist/web/client/assets/{workspace-panel-G6yMpKJ8.js → workspace-panel-CPPIznT9.js} +1 -1
  22. package/dist/web/client/bundle-budget.json +6 -6
  23. package/dist/web/server/{_tanstack-start-manifest_v-po4woX6g-AUGCOEZ2.js → _tanstack-start-manifest_v-DS_CSIFQ-WB3VTKF3.js} +10 -9
  24. package/dist/web/server/{artifacts-panel-8GGUCtOd-X5TNKTY2.js → artifacts-panel-CaKrX2XC-R37I4BHF.js} +5 -5
  25. package/dist/web/server/{chat-command-palette-Dgl5tqWn-72LLEWUD.js → chat-command-palette-7gbqEnm9-6XICQZN7.js} +4 -4
  26. package/dist/web/server/{chunk-WILCIZYU.js → chunk-BBBS5AS7.js} +2 -2
  27. package/dist/web/server/{chunk-O4OTWWPF.js → chunk-CNXJN5HN.js} +4 -4
  28. package/dist/web/server/{chunk-XKKXXG6N.js → chunk-DI7XRK2H.js} +2 -2
  29. package/dist/web/server/{chunk-BXWAUTTH.js → chunk-DZ2IC3FH.js} +2 -2
  30. package/dist/web/server/{chunk-7MDZVLIY.js → chunk-EAE2QXRK.js} +1 -1
  31. package/dist/web/server/{chunk-JUROEEWM.js → chunk-EH4BZ6QM.js} +82 -4
  32. package/dist/web/server/{chunk-ABBWBBSS.js → chunk-KELEYPVK.js} +4 -4
  33. package/dist/web/server/{chunk-RNOJACWQ.js → chunk-LXJD6IGW.js} +2 -2
  34. package/dist/web/server/chunk-M5RSPNYN.js +22 -0
  35. package/dist/web/server/{chunk-P7H2OPKF.js → chunk-PIOFZUOU.js} +9 -1
  36. package/dist/web/server/chunk-PTCKOR23.js +39 -0
  37. package/dist/web/server/{chunk-MIW4LJTV.js → chunk-TWYHHG5N.js} +1 -9
  38. package/dist/web/server/{chunk-WKV2Z4KO.js → chunk-WHBVQJ4K.js} +2 -2
  39. package/dist/web/server/{chunk-GGT2ZKDB.js → chunk-YNUWKMNQ.js} +11 -4
  40. package/dist/web/server/fleet-message-queue-BS-cZ56r-GLZXUKDF.js +152 -0
  41. package/dist/web/server/{model-selector-list-OYnzNbyu-HBGCNF2L.js → model-selector-list-jBTZc2Mu-OXJOS5NA.js} +3 -3
  42. package/dist/web/server/{openui-renderer-Cj7kfqyL-EKJ6JTTQ.js → openui-renderer-Biyyjhjn-SJOEKPTJ.js} +4 -4
  43. package/dist/web/server/{router-Ci1wxI7I-E2AYMNON.js → router-DWALoX_M-I5CBL7FQ.js} +1228 -459
  44. package/dist/web/server/{routes-CRpm9-Sa-IYK6MUJO.js → routes-BBVirYfL-5WXMOT7M.js} +223 -49
  45. package/dist/web/server/server.js +2 -2
  46. package/dist/web/server/{settings-dialog-BvkgNflv-GPJ6COQO.js → settings-dialog-DndPbM-v-RFNXXEAN.js} +890 -567
  47. package/dist/web/server/{subagent-chat-panel-CMuvW9Sd-M5TEEGQW.js → subagent-chat-panel-C0RpnXav-J7VYO7QY.js} +3 -3
  48. package/dist/web/server/{subagents-panel-DgfB6_Yy-4INEPE3Y.js → subagents-panel-jDqIn9Nh-YEV6QLUY.js} +3 -3
  49. package/dist/web/server/{workspace-panel-bpwj-Veu-Q2CEJMN4.js → workspace-panel-CX_Vo6As-EWO6AMPI.js} +3 -3
  50. package/package.json +1 -1
  51. package/dist/web/client/assets/chat-yh02zgA7.js +0 -52
  52. package/dist/web/client/assets/fleet-message-queue-DUz6Hfrf.js +0 -1
  53. package/dist/web/client/assets/input-group-BFDsCVS9.js +0 -1
  54. package/dist/web/client/assets/routes-vNkVToAF.js +0 -16
  55. package/dist/web/client/assets/settings-dialog-B-v4me3Y.js +0 -1
  56. package/dist/web/server/chunk-QK4CHLVV.js +0 -17
  57. package/dist/web/server/fleet-message-queue-j0DCU5Xy-5HKBHMPV.js +0 -75
@@ -1,6 +1,6 @@
1
1
  import "./chunk-MLKGABMK.js";
2
2
 
3
- // web/app/dist/server/assets/_tanstack-start-manifest_v-po4woX6g.js
3
+ // web/app/dist/server/assets/_tanstack-start-manifest_v-DS_CSIFQ.js
4
4
  var tsrStartManifest = () => ({ routes: {
5
5
  __root__: {
6
6
  filePath: "/home/circleci/prime-agent/web/app/src/routes/__root.tsx",
@@ -15,7 +15,7 @@ var tsrStartManifest = () => ({ routes: {
15
15
  "/api/workspace/tree"
16
16
  ],
17
17
  preloads: [
18
- "/assets/index-C1zOjrMK.js",
18
+ "/assets/index-DJ1fFbQu.js",
19
19
  "/assets/rolldown-runtime-hePW80VL.js",
20
20
  "/assets/bundle-mjs-DKHVkVWu.js",
21
21
  "/assets/react-dom-Bwxum3ti.js",
@@ -31,14 +31,14 @@ var tsrStartManifest = () => ({ routes: {
31
31
  scripts: [{ attrs: {
32
32
  type: "module",
33
33
  async: true,
34
- src: "/assets/index-C1zOjrMK.js"
34
+ src: "/assets/index-DJ1fFbQu.js"
35
35
  } }]
36
36
  },
37
37
  "/": {
38
38
  filePath: "/home/circleci/prime-agent/web/app/src/routes/index.tsx",
39
39
  children: void 0,
40
40
  preloads: [
41
- "/assets/routes-vNkVToAF.js",
41
+ "/assets/routes-DpgMJZ5n.js",
42
42
  "/assets/ease-u56MhKYS.js",
43
43
  "/assets/prompt-input-qPIXZ-Rb.js",
44
44
  "/assets/use-reduced-motion-eORd7fqW.js",
@@ -46,26 +46,27 @@ var tsrStartManifest = () => ({ routes: {
46
46
  "/assets/dialog-BEZuZhzk.js",
47
47
  "/assets/provider-catalog-D8G66gwc.js",
48
48
  "/assets/useBaseUiId-CHqXB2UQ.js",
49
- "/assets/provider-label-Dpr7djG9.js",
49
+ "/assets/provider-label-DDLRnZyC.js",
50
50
  "/assets/utils-Eg7xtNmV.js",
51
51
  "/assets/createLucideIcon-DwxZHm0M.js",
52
- "/assets/right-panel-registry-DewpBWHM.js",
52
+ "/assets/right-panel-registry-Dp8yX-oL.js",
53
53
  "/assets/citations-C_tPOJE_.js",
54
54
  "/assets/resource-helpers-Q2T0YCMO.js",
55
55
  "/assets/bot-Bs7QWJ2q.js",
56
56
  "/assets/check-JjHKAZas.js",
57
57
  "/assets/chevron-down-BEVGmnSb.js",
58
- "/assets/virtualized-turn-list-DMJENRY0.js",
58
+ "/assets/virtualized-turn-list--Vynre4D.js",
59
59
  "/assets/chevron-right-DrJxToLs.js",
60
60
  "/assets/chevron-up-CnSvySGH.js",
61
61
  "/assets/circle-alert-CONlFReH.js",
62
62
  "/assets/loader-circle-DjfHXUPB.js",
63
63
  "/assets/action-swap-roll-BB8DFMuf.js",
64
64
  "/assets/file-text-T-NcAlZs.js",
65
- "/assets/horizontal-resize-qK6eRhIG.js",
65
+ "/assets/horizontal-resize-CwoDojST.js",
66
66
  "/assets/folder-BC5p7qK7.js",
67
67
  "/assets/gauge-DNpstbBn.js",
68
68
  "/assets/package-CdcJFPf2.js",
69
+ "/assets/pencil-DcUwsKLn.js",
69
70
  "/assets/plus-DXN1Bg_z.js",
70
71
  "/assets/refresh-cw-IThTJ3j-.js",
71
72
  "/assets/rotate-ccw-WNFNkKQD.js",
@@ -82,7 +83,7 @@ var tsrStartManifest = () => ({ routes: {
82
83
  "/assets/agent-disclosure-B8SnhQXL.js",
83
84
  "/assets/surfaces-DI-U-_2a.js",
84
85
  "/assets/prime-agent-artifacts-C-g1VPiW.js",
85
- "/assets/chat-yh02zgA7.js",
86
+ "/assets/chat-Ci2cEQrR.js",
86
87
  "/assets/right-panel-context-DHlNWJsF.js",
87
88
  "/assets/input-0wwjWjKq.js",
88
89
  "/assets/artifacts-utils-N_kUFbz2.js"
@@ -30,12 +30,12 @@ import "./chunk-FAGDMGLK.js";
30
30
  import {
31
31
  GenerativeTextRenderer,
32
32
  OpenUIHtmlArtifactView
33
- } from "./chunk-ABBWBBSS.js";
33
+ } from "./chunk-KELEYPVK.js";
34
34
  import {
35
35
  UiErrorBoundary
36
- } from "./chunk-BXWAUTTH.js";
37
- import "./chunk-7MDZVLIY.js";
38
- import "./chunk-GGT2ZKDB.js";
36
+ } from "./chunk-DZ2IC3FH.js";
37
+ import "./chunk-EAE2QXRK.js";
38
+ import "./chunk-YNUWKMNQ.js";
39
39
  import "./chunk-UAPNEWCA.js";
40
40
  import "./chunk-WM4PUT6M.js";
41
41
  import "./chunk-RJOANOT4.js";
@@ -71,7 +71,7 @@ import "./chunk-JDCCC7A7.js";
71
71
  import "./chunk-L547YHC4.js";
72
72
  import "./chunk-MLKGABMK.js";
73
73
 
74
- // web/app/dist/server/assets/artifacts-panel-8GGUCtOd.js
74
+ // web/app/dist/server/assets/artifacts-panel-CaKrX2XC.js
75
75
  import { useEffect, useMemo, useRef, useState } from "react";
76
76
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
77
77
  var LayoutTemplate = createLucideIcon("layout-template", [
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RIGHT_PANEL_LAUNCHER_DEFINITIONS
3
- } from "./chunk-O4OTWWPF.js";
3
+ } from "./chunk-CNXJN5HN.js";
4
4
  import {
5
5
  Keyboard,
6
6
  Monitor,
@@ -24,8 +24,8 @@ import {
24
24
  CommandItem,
25
25
  CommandList,
26
26
  CommandSeparator
27
- } from "./chunk-XKKXXG6N.js";
28
- import "./chunk-P7H2OPKF.js";
27
+ } from "./chunk-DI7XRK2H.js";
28
+ import "./chunk-PIOFZUOU.js";
29
29
  import "./chunk-JIULUYHT.js";
30
30
  import "./chunk-7PQTPSEE.js";
31
31
  import "./chunk-P6UMR32I.js";
@@ -47,7 +47,7 @@ import "./chunk-JDCCC7A7.js";
47
47
  import "./chunk-L547YHC4.js";
48
48
  import "./chunk-MLKGABMK.js";
49
49
 
50
- // web/app/dist/server/assets/chat-command-palette-Dgl5tqWn.js
50
+ // web/app/dist/server/assets/chat-command-palette-7gbqEnm9.js
51
51
  import { useState } from "react";
52
52
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
53
53
  var RotateCcwClock = createLucideIcon("rotate-ccw-clock", [
@@ -42,7 +42,7 @@ import {
42
42
  cn
43
43
  } from "./chunk-DJMHPJBP.js";
44
44
 
45
- // web/app/dist/server/assets/virtualized-turn-list-CVAfBX0T.js
45
+ // web/app/dist/server/assets/virtualized-turn-list-atr4a0d6.js
46
46
  import { Fragment, Suspense, cloneElement, createContext, lazy, memo, useCallback, useContext, useEffect, useEffectEvent, useId, useLayoutEffect, useMemo, useRef, useState } from "react";
47
47
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
48
48
  import { createPortal } from "react-dom";
@@ -1487,7 +1487,7 @@ function groupMessages(messages) {
1487
1487
  if (current) turns.push(current);
1488
1488
  return turns;
1489
1489
  }
1490
- var LazyGenerativeTextRenderer = lazy(() => import("./openui-renderer-Cj7kfqyL-EKJ6JTTQ.js").then((n) => n.n).then(({ GenerativeTextRenderer }) => ({ default: GenerativeTextRenderer })));
1490
+ var LazyGenerativeTextRenderer = lazy(() => import("./openui-renderer-Biyyjhjn-SJOEKPTJ.js").then((n) => n.n).then(({ GenerativeTextRenderer }) => ({ default: GenerativeTextRenderer })));
1491
1491
  function PlainTextFallback({ className, content }) {
1492
1492
  return /* @__PURE__ */ jsx("div", {
1493
1493
  className: className ? `${className} whitespace-pre-wrap` : "whitespace-pre-wrap",
@@ -21,7 +21,7 @@ import {
21
21
  createLucideIcon
22
22
  } from "./chunk-4ZIEVI5O.js";
23
23
 
24
- // web/app/dist/server/assets/right-panel-registry-BSPaXYPC.js
24
+ // web/app/dist/server/assets/right-panel-registry-DWzWGCd2.js
25
25
  import { Suspense, lazy } from "react";
26
26
  import { jsx, jsxs } from "react/jsx-runtime";
27
27
  var Activity = createLucideIcon("activity", [["path", {
@@ -46,12 +46,12 @@ var Library = createLucideIcon("library", [
46
46
  key: "6qkkli"
47
47
  }]
48
48
  ]);
49
- var LazyArtifactsPanel = lazy(() => import("./artifacts-panel-8GGUCtOd-X5TNKTY2.js").then(({ ArtifactsPanelContent }) => ({ default: ArtifactsPanelContent })));
49
+ var LazyArtifactsPanel = lazy(() => import("./artifacts-panel-CaKrX2XC-R37I4BHF.js").then(({ ArtifactsPanelContent }) => ({ default: ArtifactsPanelContent })));
50
50
  var LazyResourcesPanel = lazy(() => import("./resources-panel-CE5pD4vy-V5FXBTYC.js").then(({ ResourcesPanelContent }) => ({ default: ResourcesPanelContent })));
51
51
  var LazySessionInsightsPanel = lazy(() => import("./session-insights-panel-CUhdgvRt-VB2HUCQP.js").then(({ SessionInsightsPanel }) => ({ default: SessionInsightsPanel })));
52
52
  var LazyReplPanel = lazy(() => import("./repl-panel-D5KsoJik-BQKO53JO.js").then(({ ReplPanelContent }) => ({ default: ReplPanelContent })));
53
- var LazySubagentsPanel = lazy(() => import("./subagents-panel-DgfB6_Yy-4INEPE3Y.js").then(({ SubagentsPanelContent }) => ({ default: SubagentsPanelContent })));
54
- var LazyWorkspacePanel = lazy(() => import("./workspace-panel-bpwj-Veu-Q2CEJMN4.js").then(({ WorkspacePanelContent }) => ({ default: WorkspacePanelContent })));
53
+ var LazySubagentsPanel = lazy(() => import("./subagents-panel-jDqIn9Nh-YEV6QLUY.js").then(({ SubagentsPanelContent }) => ({ default: SubagentsPanelContent })));
54
+ var LazyWorkspacePanel = lazy(() => import("./workspace-panel-CX_Vo6As-EWO6AMPI.js").then(({ WorkspacePanelContent }) => ({ default: WorkspacePanelContent })));
55
55
  function PanelFallback() {
56
56
  return /* @__PURE__ */ jsxs("div", {
57
57
  className: "flex min-h-32 flex-col gap-3 p-4",
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  InputGroup,
3
3
  InputGroupAddon
4
- } from "./chunk-P7H2OPKF.js";
4
+ } from "./chunk-PIOFZUOU.js";
5
5
  import {
6
6
  Search
7
7
  } from "./chunk-JIULUYHT.js";
@@ -28,7 +28,7 @@ import {
28
28
  cn
29
29
  } from "./chunk-DJMHPJBP.js";
30
30
 
31
- // web/app/dist/server/assets/command-C5wJdLIS.js
31
+ // web/app/dist/server/assets/command-CMjQxFsV.js
32
32
  import * as t from "react";
33
33
  import { jsx, jsxs } from "react/jsx-runtime";
34
34
  var U = 1;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  OpenPanelActionSchema
3
- } from "./chunk-GGT2ZKDB.js";
3
+ } from "./chunk-YNUWKMNQ.js";
4
4
  import {
5
5
  useRender
6
6
  } from "./chunk-WM4PUT6M.js";
@@ -14,7 +14,7 @@ import {
14
14
  cn
15
15
  } from "./chunk-DJMHPJBP.js";
16
16
 
17
- // web/app/dist/server/assets/open-panel-action-message-BGJXYToi.js
17
+ // web/app/dist/server/assets/open-panel-action-message-DsPUT3yZ.js
18
18
  import { Component, createContext, createElement } from "react";
19
19
  import { jsx, jsxs } from "react/jsx-runtime";
20
20
  var h = createContext(null);
@@ -2,7 +2,7 @@ import {
2
2
  cn
3
3
  } from "./chunk-DJMHPJBP.js";
4
4
 
5
- // web/app/dist/server/assets/src-V85fwVzf.js
5
+ // web/app/dist/server/assets/src-CynIHTTU.js
6
6
  import "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  function Card({ className, size = "default", ...props }) {
@@ -13,9 +13,9 @@ import {
13
13
  nonEmptyStringSchema,
14
14
  nonNegativeIntSchema,
15
15
  positiveIntSchema
16
- } from "./chunk-GGT2ZKDB.js";
16
+ } from "./chunk-YNUWKMNQ.js";
17
17
 
18
- // web/app/dist/server/assets/chat-protocol.zod-B9cCCMrC.js
18
+ // web/app/dist/server/assets/chat-protocol.zod-CeUk7tIu.js
19
19
  import { useEffect, useRef, useState } from "react";
20
20
  import { jsx } from "react/jsx-runtime";
21
21
  function LazyMotion({ children, features, strict = false }) {
@@ -195,8 +195,8 @@ function initAnalytics() {
195
195
  var NETWORK_DISCONNECTED_MESSAGE = "Fleet Prime is not connected to the Prime Agent runtime. Start or reconnect the runtime, then try again.";
196
196
  var FLEET_ADAPTER_CAPABILITIES = {
197
197
  protocolVersion: 1,
198
- schemaRevision: 1,
199
- features: ["reasoning-summary-v1"]
198
+ schemaRevision: 2,
199
+ features: ["reasoning-summary-v1", "mcp-connections-v1"]
200
200
  };
201
201
  var ChatModelInfoSchema = external_exports.object({
202
202
  key: external_exports.string(),
@@ -368,6 +368,79 @@ var ChatCommandsResponseSchema = external_exports.object({
368
368
  commands: external_exports.array(ChatSlashCommandInfoSchema),
369
369
  diagnostics: external_exports.array(external_exports.string())
370
370
  }).openapi({ description: "Chat slash commands response" });
371
+ var MCP_SERVER_NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/;
372
+ var MCP_ENV_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
373
+ var mcpServerNameSchema = external_exports.string().regex(MCP_SERVER_NAME_PATTERN, "MCP server names must be 1-64 letters, numbers, underscores, or hyphens and start with a letter or number.");
374
+ var mcpEnvNameSchema = external_exports.string().regex(MCP_ENV_NAME_PATTERN, "Environment variable names must be letters, digits, or underscores.");
375
+ var McpConnectionSourceSchema = external_exports.enum(["builtin", "user"]);
376
+ var McpConnectionTransportSchema = external_exports.enum(["http", "stdio"]);
377
+ var McpConnectionStatusSchema = external_exports.enum([
378
+ "connected",
379
+ "needs_auth",
380
+ "disabled",
381
+ "anonymous"
382
+ ]);
383
+ var McpEnvBindingSchema = external_exports.object({
384
+ child: mcpEnvNameSchema,
385
+ source: mcpEnvNameSchema
386
+ }).openapi({ description: "Stdio env mapping as CHILD=SOURCE variable names only" });
387
+ var McpConnectionInfoSchema = external_exports.object({
388
+ name: mcpServerNameSchema,
389
+ label: nonEmptyStringSchema,
390
+ source: McpConnectionSourceSchema,
391
+ transport: McpConnectionTransportSchema,
392
+ url: external_exports.string().optional(),
393
+ commandPreview: external_exports.string().optional(),
394
+ cwdPreview: external_exports.string().optional(),
395
+ usesOAuth: external_exports.boolean(),
396
+ enabled: external_exports.boolean(),
397
+ status: McpConnectionStatusSchema,
398
+ bearerTokenEnvVar: external_exports.string().optional(),
399
+ envBindings: external_exports.array(McpEnvBindingSchema).optional(),
400
+ error: external_exports.string().optional()
401
+ }).openapi({ description: "Browser-safe MCP connection row; never includes tokens or env values" });
402
+ var ChatMcpListResponseSchema = external_exports.object({ connections: external_exports.array(McpConnectionInfoSchema) }).openapi({ description: "MCP connection list" });
403
+ var ChatMcpHttpUpsertRequestSchema = external_exports.object({
404
+ name: mcpServerNameSchema,
405
+ transport: external_exports.literal("http"),
406
+ url: nonEmptyStringSchema,
407
+ oauth: external_exports.boolean().optional(),
408
+ bearerTokenEnvVar: mcpEnvNameSchema.optional(),
409
+ force: external_exports.boolean().optional()
410
+ });
411
+ var ChatMcpStdioUpsertRequestSchema = external_exports.object({
412
+ name: mcpServerNameSchema,
413
+ transport: external_exports.literal("stdio"),
414
+ command: nonEmptyStringSchema,
415
+ args: external_exports.array(external_exports.string().min(1).max(1024)).max(32).optional(),
416
+ cwd: external_exports.string().min(1).max(1024).optional(),
417
+ env: external_exports.array(McpEnvBindingSchema).max(32).optional(),
418
+ force: external_exports.boolean().optional()
419
+ });
420
+ var ChatMcpUpsertRequestSchema = external_exports.discriminatedUnion("transport", [ChatMcpHttpUpsertRequestSchema, ChatMcpStdioUpsertRequestSchema]).openapi({ description: "Add or replace a user MCP server" });
421
+ var ChatMcpDeleteRequestSchema = external_exports.object({ name: mcpServerNameSchema }).openapi({ description: "Remove a user MCP server" });
422
+ var ChatMcpOAuthActionSchema = external_exports.enum([
423
+ "login",
424
+ "logout",
425
+ "reconnect"
426
+ ]);
427
+ var ChatMcpOAuthLoginRequestSchema = external_exports.object({
428
+ name: mcpServerNameSchema,
429
+ action: ChatMcpOAuthActionSchema.optional(),
430
+ loginId: external_exports.string().min(1).optional(),
431
+ promptAnswer: external_exports.string().max(8192).optional(),
432
+ cancel: external_exports.boolean().optional()
433
+ }).openapi({ description: "MCP OAuth login, logout, or reconnect" });
434
+ var ChatMcpOAuthLoginResponseSchema = external_exports.object({
435
+ status: ChatProviderOAuthLoginStatusSchema,
436
+ loginId: external_exports.string().optional(),
437
+ authUrl: external_exports.string().optional(),
438
+ userCode: external_exports.string().optional(),
439
+ instructions: external_exports.string().optional(),
440
+ prompt: ChatProviderOAuthPromptSchema.optional(),
441
+ error: external_exports.string().optional(),
442
+ connections: external_exports.array(McpConnectionInfoSchema).optional()
443
+ }).openapi({ description: "MCP OAuth login snapshot" });
371
444
  external_exports.object({ message: external_exports.string() }).openapi({ description: "Error response" });
372
445
  external_exports.object({ status: external_exports.literal("ok") }).openapi({ description: "Health check response" });
373
446
  var chatResourcePathSchema = nonEmptyStringSchema.max(1024);
@@ -2775,6 +2848,11 @@ export {
2775
2848
  ChatProviderOAuthLoginRequestSchema,
2776
2849
  ChatProviderOAuthLoginResponseSchema,
2777
2850
  ChatCommandsResponseSchema,
2851
+ ChatMcpListResponseSchema,
2852
+ ChatMcpUpsertRequestSchema,
2853
+ ChatMcpDeleteRequestSchema,
2854
+ ChatMcpOAuthLoginRequestSchema,
2855
+ ChatMcpOAuthLoginResponseSchema,
2778
2856
  ChatSettingsUpdateRequestSchema,
2779
2857
  ChatSettingsResponseSchema,
2780
2858
  useQueryClient,
@@ -2,7 +2,7 @@ import {
2
2
  Badge,
3
3
  UiErrorBoundary,
4
4
  encodeOpenPanelActionMessage
5
- } from "./chunk-BXWAUTTH.js";
5
+ } from "./chunk-DZ2IC3FH.js";
6
6
  import {
7
7
  Card,
8
8
  CardContent,
@@ -10,7 +10,7 @@ import {
10
10
  CardHeader,
11
11
  CardTitle,
12
12
  validateAndNormalizeOpenUIHtmlArtifact
13
- } from "./chunk-7MDZVLIY.js";
13
+ } from "./chunk-EAE2QXRK.js";
14
14
  import {
15
15
  OpenPanelActionSchema,
16
16
  RightPanelIdSchema,
@@ -19,7 +19,7 @@ import {
19
19
  object,
20
20
  registry,
21
21
  toJSONSchema
22
- } from "./chunk-GGT2ZKDB.js";
22
+ } from "./chunk-YNUWKMNQ.js";
23
23
  import {
24
24
  Alert,
25
25
  AlertDescription,
@@ -134,7 +134,7 @@ import {
134
134
  __toESM
135
135
  } from "./chunk-L547YHC4.js";
136
136
 
137
- // web/app/dist/server/assets/openui-renderer-Cj7kfqyL.js
137
+ // web/app/dist/server/assets/openui-renderer-Biyyjhjn.js
138
138
  import * as React$2 from "react";
139
139
  import React, { Children, Component as Component2, Fragment as Fragment2, PureComponent, cloneElement as cloneElement2, createContext as createContext2, createElement as createElement2, forwardRef as forwardRef2, isValidElement as isValidElement2, memo as memo2, useCallback as useCallback2, useContext as useContext2, useEffect as useEffect2, useId as useId2, useImperativeHandle, useInsertionEffect, useLayoutEffect as useLayoutEffect3, useMemo as useMemo2, useRef as useRef2, useState as useState2, useSyncExternalStore } from "react";
140
140
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -10,7 +10,7 @@ import {
10
10
  buildAssistantElements,
11
11
  groupMessages,
12
12
  normalizeAssistantToolParts
13
- } from "./chunk-WILCIZYU.js";
13
+ } from "./chunk-BBBS5AS7.js";
14
14
  import {
15
15
  RefreshCw
16
16
  } from "./chunk-OKL5ZRVB.js";
@@ -42,7 +42,7 @@ import {
42
42
  cn
43
43
  } from "./chunk-DJMHPJBP.js";
44
44
 
45
- // web/app/dist/server/assets/subagent-transcript-CMFc5Jn2.js
45
+ // web/app/dist/server/assets/subagent-transcript-D4VGGQxn.js
46
46
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
47
47
  import { jsx, jsxs } from "react/jsx-runtime";
48
48
  function transcriptStatus(child) {
@@ -0,0 +1,22 @@
1
+ import {
2
+ createLucideIcon
3
+ } from "./chunk-4ZIEVI5O.js";
4
+
5
+ // web/app/dist/server/assets/pencil-BbtQVrFg.js
6
+ var Pencil = createLucideIcon("pencil", [["path", {
7
+ d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
8
+ key: "1a8usu"
9
+ }], ["path", {
10
+ d: "m15 5 4 4",
11
+ key: "1mk7zo"
12
+ }]]);
13
+
14
+ export {
15
+ Pencil
16
+ };
17
+ /**
18
+ * @license lucide-react v1.38.0 - ISC
19
+ *
20
+ * This source code is licensed under the ISC license.
21
+ * See the LICENSE file in the root directory of this source tree.
22
+ */
@@ -9,9 +9,16 @@ import {
9
9
  cn
10
10
  } from "./chunk-DJMHPJBP.js";
11
11
 
12
- // web/app/dist/server/assets/input-group-BcYuKbrc.js
12
+ // web/app/dist/server/assets/input-group-TQw1asH2.js
13
13
  import "react";
14
14
  import { jsx } from "react/jsx-runtime";
15
+ function Textarea({ className, ...props }) {
16
+ return /* @__PURE__ */ jsx("textarea", {
17
+ "data-slot": "textarea",
18
+ className: cn("flex field-sizing-content min-h-16 w-full rounded-lg border border-input bg-transparent px-2.5 py-2 text-base transition-colors outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40", className),
19
+ ...props
20
+ });
21
+ }
15
22
  function InputGroup({ className, ...props }) {
16
23
  return /* @__PURE__ */ jsx("div", {
17
24
  "data-slot": "input-group",
@@ -69,6 +76,7 @@ function InputGroupInput({ className, ...props }) {
69
76
  }
70
77
 
71
78
  export {
79
+ Textarea,
72
80
  InputGroup,
73
81
  InputGroupAddon,
74
82
  InputGroupButton,
@@ -0,0 +1,39 @@
1
+ // web/app/dist/server/assets/session-label-DAwGAfxA.js
2
+ var SECRET_VALUE_PATTERNS = [
3
+ /\bsk-[A-Za-z0-9._-]{8,}\b/g,
4
+ /\b(?:github_pat_|gh[pousr]_)[A-Za-z0-9_]{8,}\b/g,
5
+ /\bxox[baprs]-[A-Za-z0-9-]{8,}\b/g,
6
+ /\bAIza[A-Za-z0-9_-]{20,}\b/g
7
+ ];
8
+ var NAMED_SECRET_PATTERN = /\b(api[ _-]?key|access[ _-]?token|auth[ _-]?token|bearer|password|secret)\s*([:=])\s*(?:"[^"]*"|'[^']*'|[^\s,;]+)/gi;
9
+ function redactSessionLabelSecrets(label) {
10
+ let redacted = label.replace(NAMED_SECRET_PATTERN, (_match, name, separator) => `${name}${separator} [redacted]`);
11
+ for (const pattern of SECRET_VALUE_PATTERNS) redacted = redacted.replace(pattern, "[redacted]");
12
+ return redacted;
13
+ }
14
+ function meaningfulSessionLabel(value) {
15
+ const trimmed = value?.trim();
16
+ if (!trimmed || trimmed === "(no messages)") return void 0;
17
+ const redacted = redactSessionLabelSecrets(trimmed).trim();
18
+ return redacted.length > 0 ? redacted : void 0;
19
+ }
20
+ function fallbackSessionLabel(sessionId) {
21
+ return sessionId.slice(0, 8);
22
+ }
23
+ function sessionListTitle(input) {
24
+ return meaningfulSessionLabel(input.title) ?? meaningfulSessionLabel(input.firstMessage) ?? fallbackSessionLabel(input.sessionId);
25
+ }
26
+ function disambiguateSessionLabel(base, sessionId, collidingCount) {
27
+ if (collidingCount <= 1) return base;
28
+ const suffix = sessionId.slice(-4);
29
+ if (base.endsWith(suffix)) return base;
30
+ return `${base} \xB7 ${suffix}`;
31
+ }
32
+
33
+ export {
34
+ redactSessionLabelSecrets,
35
+ meaningfulSessionLabel,
36
+ fallbackSessionLabel,
37
+ sessionListTitle,
38
+ disambiguateSessionLabel
39
+ };
@@ -70,7 +70,7 @@ import {
70
70
  cn
71
71
  } from "./chunk-DJMHPJBP.js";
72
72
 
73
- // web/app/dist/server/assets/provider-label-CnEydH8K.js
73
+ // web/app/dist/server/assets/provider-label-Bp5Y1v8Y.js
74
74
  import * as React$1 from "react";
75
75
  import { jsx, jsxs } from "react/jsx-runtime";
76
76
  import * as ReactDOM from "react-dom";
@@ -181,13 +181,6 @@ var Cpu = createLucideIcon("cpu", [
181
181
  key: "z9xiuo"
182
182
  }]
183
183
  ]);
184
- var Pencil = createLucideIcon("pencil", [["path", {
185
- d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
186
- key: "1a8usu"
187
- }], ["path", {
188
- d: "m15 5 4 4",
189
- key: "1mk7zo"
190
- }]]);
191
184
  var Server = createLucideIcon("server", [
192
185
  ["rect", {
193
186
  width: "20",
@@ -1166,7 +1159,6 @@ function formatProviderLabel(provider) {
1166
1159
  export {
1167
1160
  ArrowLeft,
1168
1161
  Cpu,
1169
- Pencil,
1170
1162
  Settings,
1171
1163
  Trash2,
1172
1164
  getDelay,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  redactSessionLabelSecrets
3
- } from "./chunk-QK4CHLVV.js";
3
+ } from "./chunk-PTCKOR23.js";
4
4
  import {
5
5
  readStoredValue,
6
6
  writeStoredValue
@@ -20,7 +20,7 @@ import {
20
20
  cn
21
21
  } from "./chunk-DJMHPJBP.js";
22
22
 
23
- // web/app/dist/server/assets/horizontal-resize-2lm4rtju.js
23
+ // web/app/dist/server/assets/horizontal-resize-By86nXcf.js
24
24
  import { Children, cloneElement, forwardRef, isValidElement, useId, useState } from "react";
25
25
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
26
26
  var File = createLucideIcon("file", [["path", {
@@ -18872,7 +18872,7 @@ function date4(params) {
18872
18872
  return _coercedDate(ZodDate, params);
18873
18873
  }
18874
18874
 
18875
- // web/app/dist/server/assets/chat--ayYRpEM.js
18875
+ // web/app/dist/server/assets/chat-NHkOyaFk.js
18876
18876
  var MAX_ATTACHMENT_BYTES = 26214400;
18877
18877
  var RightPanelIdSchema = external_exports.enum([
18878
18878
  "resources",
@@ -19676,7 +19676,7 @@ var ChatMessageSchema = external_exports.object({
19676
19676
  url: external_exports.string().optional()
19677
19677
  })).optional()
19678
19678
  }).passthrough().openapi({ description: "Chat message" });
19679
- external_exports.enum(["reasoning-summary-v1"]);
19679
+ external_exports.enum(["reasoning-summary-v1", "mcp-connections-v1"]);
19680
19680
  var FleetAdapterCapabilitiesSchema = external_exports.object({
19681
19681
  protocolVersion: external_exports.number().int().positive(),
19682
19682
  schemaRevision: external_exports.number().int().positive(),
@@ -19756,12 +19756,19 @@ var ChatQueueEventSchema = external_exports.object({
19756
19756
  steering: external_exports.array(external_exports.string()),
19757
19757
  followUp: external_exports.array(external_exports.string())
19758
19758
  }).openapi({ description: "Stream queue event" });
19759
+ var ChatQueueReplaceMutationSchema = external_exports.object({
19760
+ type: external_exports.literal("replace"),
19761
+ text: external_exports.string().min(1),
19762
+ lane: external_exports.enum(["steering", "followUp"]).optional()
19763
+ }).openapi({ description: "Replace one queued message after verifying its expected text" });
19764
+ var ChatQueueMutationKindSchema = external_exports.discriminatedUnion("type", [external_exports.object({ type: external_exports.literal("delete") }), ChatQueueReplaceMutationSchema]).openapi({ description: "Queued-message mutation to apply after verifying expected text" });
19759
19765
  var ChatQueueMutationRequestSchema = external_exports.object({
19760
19766
  sessionId: SessionIdSchema,
19761
19767
  lane: external_exports.enum(["steering", "followUp"]),
19762
19768
  index: external_exports.number().int().nonnegative(),
19763
- expectedText: external_exports.string().min(1)
19764
- }).openapi({ description: "Delete one queued message after verifying its expected text" });
19769
+ expectedText: external_exports.string().min(1),
19770
+ mutation: ChatQueueMutationKindSchema.optional()
19771
+ }).openapi({ description: "Mutate one queued message after verifying its expected text; omit mutation to delete for backward compatibility" });
19765
19772
  var ChatQueueMutationResponseSchema = external_exports.object({
19766
19773
  status: external_exports.enum([
19767
19774
  "applied",