@qredence/fleet 0.5.10 → 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 (115) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/web/client/assets/agent-activity-CwMDU7aP.js +1 -0
  3. package/dist/web/client/assets/artifacts-panel-CJ75gQub.js +1 -0
  4. package/dist/web/client/assets/chat-Ci2cEQrR.js +52 -0
  5. package/dist/web/client/assets/{chat-command-palette-DfYSPPXI.js → chat-command-palette-CkISHfKE.js} +1 -1
  6. package/dist/web/client/assets/{citations-BQ_pr_9_.js → citations-C_tPOJE_.js} +1 -1
  7. package/dist/web/client/assets/{command-DPfiaYUL.js → command-_WjnervL.js} +1 -1
  8. package/dist/web/client/assets/fleet-message-queue-BCno4XP-.js +1 -0
  9. package/dist/web/client/assets/{fleet-pi-tool-renderer-AJoMbXBa.js → fleet-pi-tool-renderer-BEDIO3al.js} +4 -4
  10. package/dist/web/client/assets/fleet-reasoning-panel-CbkO7u-v.js +1 -0
  11. package/dist/web/client/assets/{fleet-subagent-list-BnRnrWKS.js → fleet-subagent-list-iKUtLJKZ.js} +1 -1
  12. package/dist/web/client/assets/fleet-tool-timeline-C8heL7ae.js +1 -0
  13. package/dist/web/client/assets/{fork-picker-dialog-CkcSekBl.js → fork-picker-dialog-ByBOGVsa.js} +1 -1
  14. package/dist/web/client/assets/globals-B_I1Eq1u.css +2 -0
  15. package/dist/web/client/assets/horizontal-resize-CwoDojST.js +1 -0
  16. package/dist/web/client/assets/{index-DlnHLDpx.js → index-DJ1fFbQu.js} +3 -3
  17. package/dist/web/client/assets/input-group-Tb5TYbzi.js +1 -0
  18. package/dist/web/client/assets/{ipython-tool-BrMePqD-.js → ipython-tool-ldJ9F1Cw.js} +1 -1
  19. package/dist/web/client/assets/model-selector-list-Ch05B2nZ.js +1 -0
  20. package/dist/web/client/assets/{openui-renderer-DwYFJdbe.js → openui-renderer-Bf60nxNi.js} +4 -4
  21. package/dist/web/client/assets/pencil-DcUwsKLn.js +1 -0
  22. package/dist/web/client/assets/prompt-input-qPIXZ-Rb.js +1 -0
  23. package/dist/web/client/assets/prompt-suggestions-Cc--lSNR.js +1 -0
  24. package/dist/web/client/assets/{provider-label-BCJh04J5.js → provider-label-DDLRnZyC.js} +1 -1
  25. package/dist/web/client/assets/repl-panel-DsPX04Xr.js +1 -0
  26. package/dist/web/client/assets/{resources-panel-Bo8dfUdm.js → resources-panel-D867-goy.js} +1 -1
  27. package/dist/web/client/assets/right-panel-registry-Dp8yX-oL.js +2 -0
  28. package/dist/web/client/assets/routes-DpgMJZ5n.js +16 -0
  29. package/dist/web/client/assets/safe-storage-s25GrfpH.js +1 -0
  30. package/dist/web/client/assets/session-insights-panel-YnaXvTpi.js +1 -0
  31. package/dist/web/client/assets/settings-dialog-YJkvt5EB.js +2 -0
  32. package/dist/web/client/assets/skeleton-loaders-C9vHwAYV.js +1 -0
  33. package/dist/web/client/assets/{subagent-chat-panel-DseoO31p.js → subagent-chat-panel-Yujplxpb.js} +1 -1
  34. package/dist/web/client/assets/subagent-transcript-CnI-mqN0.js +1 -0
  35. package/dist/web/client/assets/subagents-panel-CjXEdimj.js +1 -0
  36. package/dist/web/client/assets/{surfaces-cW-gp56p.js → surfaces-DI-U-_2a.js} +1 -1
  37. package/dist/web/client/assets/tool-result-DfnPN0FQ.js +4 -0
  38. package/dist/web/client/assets/ui-preferences-CImQGZm_.js +1 -0
  39. package/dist/web/client/assets/virtualized-turn-list--Vynre4D.js +6 -0
  40. package/dist/web/client/assets/{workspace-panel-DI1W3ce9.js → workspace-panel-CPPIznT9.js} +1 -1
  41. package/dist/web/client/bundle-budget.json +6 -6
  42. package/dist/web/server/{_tanstack-start-manifest_v-Cdx6hy2i-I7A5YJRU.js → _tanstack-start-manifest_v-DS_CSIFQ-WB3VTKF3.js} +15 -13
  43. package/dist/web/server/{agent-activity-B-JMvecd-SLE3GGY2.js → agent-activity-CS2rbF_C-A3R26CYH.js} +2 -2
  44. package/dist/web/server/{artifacts-panel-DLMK1O8P-42T45JMA.js → artifacts-panel-CaKrX2XC-R37I4BHF.js} +12 -12
  45. package/dist/web/server/{chat-command-palette-CdYwoTMe-4LBAZF7K.js → chat-command-palette-7gbqEnm9-6XICQZN7.js} +4 -4
  46. package/dist/web/server/{chunk-EBCYJSBR.js → chunk-7SD2ZSEA.js} +3 -3
  47. package/dist/web/server/{chunk-6AW2XFTZ.js → chunk-BBBS5AS7.js} +194 -10
  48. package/dist/web/server/{chunk-EOVMHQ2H.js → chunk-CNXJN5HN.js} +7 -7
  49. package/dist/web/server/{chunk-XKKXXG6N.js → chunk-DI7XRK2H.js} +2 -2
  50. package/dist/web/server/{chunk-KNJUSMBT.js → chunk-DZ2IC3FH.js} +2 -2
  51. package/dist/web/server/{chunk-K5ESTT4A.js → chunk-EAE2QXRK.js} +11 -3
  52. package/dist/web/server/{chunk-VHBFU4TG.js → chunk-EH4BZ6QM.js} +123 -16
  53. package/dist/web/server/{chunk-54II5QXQ.js → chunk-ETTDO4UO.js} +6 -3
  54. package/dist/web/server/{chunk-EHNIN245.js → chunk-GETSIVNU.js} +5 -5
  55. package/dist/web/server/{chunk-X2R5YPQZ.js → chunk-IJPCV6DH.js} +3 -2
  56. package/dist/web/server/{chunk-AJJ2S5FF.js → chunk-JQDLJ7KI.js} +20 -20
  57. package/dist/web/server/{chunk-M564UIEY.js → chunk-KELEYPVK.js} +8 -8
  58. package/dist/web/server/{chunk-OB5OSYJK.js → chunk-LXJD6IGW.js} +53 -29
  59. package/dist/web/server/chunk-M5RSPNYN.js +22 -0
  60. package/dist/web/server/{chunk-2TRF62K5.js → chunk-N6NOTURM.js} +3 -3
  61. package/dist/web/server/{chunk-5XX7RKJ6.js → chunk-NXJ32VFR.js} +5 -5
  62. package/dist/web/server/{chunk-P7H2OPKF.js → chunk-PIOFZUOU.js} +9 -1
  63. package/dist/web/server/chunk-PTCKOR23.js +39 -0
  64. package/dist/web/server/chunk-SZJUXVWG.js +40 -0
  65. package/dist/web/server/{chunk-TCH3U26B.js → chunk-TWYHHG5N.js} +2 -10
  66. package/dist/web/server/{chunk-FED63ZHU.js → chunk-WHBVQJ4K.js} +11 -6
  67. package/dist/web/server/{chunk-ANL4B775.js → chunk-XLNCWZMZ.js} +2 -2
  68. package/dist/web/server/{chunk-GM32R7JW.js → chunk-YKVGQBZA.js} +10 -8
  69. package/dist/web/server/{chunk-NRDG2ISJ.js → chunk-YNUWKMNQ.js} +59 -52
  70. package/dist/web/server/{chunk-3PIUR75R.js → chunk-YXXRP3NS.js} +9 -9
  71. package/dist/web/server/fleet-message-queue-BS-cZ56r-GLZXUKDF.js +152 -0
  72. package/dist/web/server/{fleet-pi-tool-renderer-RIeVlM9J-D6MISCQC.js → fleet-pi-tool-renderer-umKunT3K-O4GBH35V.js} +5 -5
  73. package/dist/web/server/{fleet-reasoning-panel-D_K48UOT-GN2PA6KT.js → fleet-reasoning-panel-BxC2COxi-GPLMQSTT.js} +9 -9
  74. package/dist/web/server/{fleet-subagent-list-5luKtpds-3OTVFHJQ.js → fleet-subagent-list-CpSYzCIq-JDH2LHSS.js} +1 -1
  75. package/dist/web/server/{fleet-tool-timeline-DwRqQgOj-HUFLGMDV.js → fleet-tool-timeline-IB36_PB2-XJENTO6I.js} +1 -1
  76. package/dist/web/server/{fork-picker-dialog-B9yGc8Au-IL63F2DN.js → fork-picker-dialog-DlINz9UQ-UWIXFDJX.js} +3 -3
  77. package/dist/web/server/{model-selector-list-cb2-ewoA-KIVU6LD3.js → model-selector-list-jBTZc2Mu-OXJOS5NA.js} +7 -7
  78. package/dist/web/server/{openui-renderer-Czy5Vo2L-BLXPJD65.js → openui-renderer-Biyyjhjn-SJOEKPTJ.js} +4 -4
  79. package/dist/web/server/{prompt-suggestions-BOmHi4-J-C563CHFU.js → prompt-suggestions-D4AEEY7K-RZSP7PWV.js} +3 -3
  80. package/dist/web/server/{repl-panel-yyxhwe4c-7U6HXYPS.js → repl-panel-D5KsoJik-BQKO53JO.js} +9 -9
  81. package/dist/web/server/{resources-panel-j4fAIi9g-5C267IXV.js → resources-panel-CE5pD4vy-V5FXBTYC.js} +2 -2
  82. package/dist/web/server/{router-CgSWrAYc-5UBYSZTJ.js → router-DWALoX_M-I5CBL7FQ.js} +1461 -515
  83. package/dist/web/server/{routes-CP_BBhD0-BAWQYGKY.js → routes-BBVirYfL-5WXMOT7M.js} +908 -566
  84. package/dist/web/server/server.js +2 -2
  85. package/dist/web/server/{session-insights-panel-BHZyKDTo-LRMAMA3O.js → session-insights-panel-CUhdgvRt-VB2HUCQP.js} +4 -4
  86. package/dist/web/server/{settings-dialog-CxHe8nym-KKXDPTIW.js → settings-dialog-DndPbM-v-RFNXXEAN.js} +902 -575
  87. package/dist/web/server/{subagent-chat-panel-DlSsM59d-DBW7DI3T.js → subagent-chat-panel-C0RpnXav-J7VYO7QY.js} +11 -11
  88. package/dist/web/server/{subagents-panel-Txzk8oDb-NRKLASYN.js → subagents-panel-jDqIn9Nh-YEV6QLUY.js} +13 -13
  89. package/dist/web/server/{workspace-panel-BOs-58Cv-SWQBMZSB.js → workspace-panel-CX_Vo6As-EWO6AMPI.js} +5 -4
  90. package/package.json +1 -1
  91. package/dist/web/client/assets/agent-activity-CDcDNVC6.js +0 -1
  92. package/dist/web/client/assets/artifacts-panel-CObI-DMt.js +0 -1
  93. package/dist/web/client/assets/chat-C8XDWWXz.js +0 -52
  94. package/dist/web/client/assets/fleet-message-queue-zWM5-y18.js +0 -1
  95. package/dist/web/client/assets/fleet-reasoning-panel-MtbSdoCv.js +0 -1
  96. package/dist/web/client/assets/fleet-tool-timeline-COzPrwr8.js +0 -1
  97. package/dist/web/client/assets/generative-text-renderer-CDKHv-v_.js +0 -6
  98. package/dist/web/client/assets/globals-DisQPFtV.css +0 -2
  99. package/dist/web/client/assets/horizontal-resize-Bl3AyBJg.js +0 -1
  100. package/dist/web/client/assets/input-group-BFDsCVS9.js +0 -1
  101. package/dist/web/client/assets/model-selector-list-DQaPFUYt.js +0 -1
  102. package/dist/web/client/assets/prompt-input-DZ4cho_e.js +0 -1
  103. package/dist/web/client/assets/prompt-suggestions-CXM6knMK.js +0 -1
  104. package/dist/web/client/assets/repl-panel-BDQ5MEgV.js +0 -1
  105. package/dist/web/client/assets/right-panel-registry-VVRPktV3.js +0 -2
  106. package/dist/web/client/assets/routes-DAikUNzO.js +0 -16
  107. package/dist/web/client/assets/session-insights-panel-CQdT90Op.js +0 -1
  108. package/dist/web/client/assets/settings-dialog-DS64KmwC.js +0 -1
  109. package/dist/web/client/assets/skeleton-loaders-DjGv9LLA.js +0 -1
  110. package/dist/web/client/assets/subagent-transcript-cxVKYnh9.js +0 -1
  111. package/dist/web/client/assets/subagents-panel-CHC96I68.js +0 -1
  112. package/dist/web/client/assets/tool-result-Baj3CdL_.js +0 -4
  113. package/dist/web/client/assets/ui-preferences-DUEFuJFj.js +0 -1
  114. package/dist/web/server/chunk-QK4CHLVV.js +0 -17
  115. package/dist/web/server/fleet-message-queue-BxycG26e-2XLOTCLP.js +0 -75
@@ -7,16 +7,15 @@ import {
7
7
  } from "./chunk-FAGDMGLK.js";
8
8
  import {
9
9
  ChatDeliveryModeSchema,
10
- ChatPackageSourceSchema,
11
10
  ChatThinkingLevelSchema,
12
11
  ChatTransportSchema,
13
12
  external_exports,
14
13
  nonEmptyStringSchema,
15
14
  nonNegativeIntSchema,
16
15
  positiveIntSchema
17
- } from "./chunk-NRDG2ISJ.js";
16
+ } from "./chunk-YNUWKMNQ.js";
18
17
 
19
- // web/app/dist/server/assets/chat-protocol.zod-BfIk7Wuj.js
18
+ // web/app/dist/server/assets/chat-protocol.zod-CeUk7tIu.js
20
19
  import { useEffect, useRef, useState } from "react";
21
20
  import { jsx } from "react/jsx-runtime";
22
21
  function LazyMotion({ children, features, strict = false }) {
@@ -196,8 +195,8 @@ function initAnalytics() {
196
195
  var NETWORK_DISCONNECTED_MESSAGE = "Fleet Prime is not connected to the Prime Agent runtime. Start or reconnect the runtime, then try again.";
197
196
  var FLEET_ADAPTER_CAPABILITIES = {
198
197
  protocolVersion: 1,
199
- schemaRevision: 1,
200
- features: ["reasoning-summary-v1"]
198
+ schemaRevision: 2,
199
+ features: ["reasoning-summary-v1", "mcp-connections-v1"]
201
200
  };
202
201
  var ChatModelInfoSchema = external_exports.object({
203
202
  key: external_exports.string(),
@@ -369,8 +368,94 @@ var ChatCommandsResponseSchema = external_exports.object({
369
368
  commands: external_exports.array(ChatSlashCommandInfoSchema),
370
369
  diagnostics: external_exports.array(external_exports.string())
371
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" });
372
444
  external_exports.object({ message: external_exports.string() }).openapi({ description: "Error response" });
373
445
  external_exports.object({ status: external_exports.literal("ok") }).openapi({ description: "Health check response" });
446
+ var chatResourcePathSchema = nonEmptyStringSchema.max(1024);
447
+ var chatResourcePathArraySchema = external_exports.array(chatResourcePathSchema);
448
+ var chatResourcePathUpdateArraySchema = chatResourcePathArraySchema.max(100);
449
+ var ChatPackageSourceObjectSchema = external_exports.object({
450
+ source: nonEmptyStringSchema,
451
+ extensions: external_exports.array(nonEmptyStringSchema).optional(),
452
+ skills: external_exports.array(nonEmptyStringSchema).optional(),
453
+ prompts: external_exports.array(nonEmptyStringSchema).optional(),
454
+ themes: external_exports.array(nonEmptyStringSchema).optional()
455
+ });
456
+ var ChatPackageSourceSettingsSchema = external_exports.union([nonEmptyStringSchema, ChatPackageSourceObjectSchema]);
457
+ var chatPackageSourceArraySchema = external_exports.array(ChatPackageSourceSettingsSchema);
458
+ var chatPackageSourceUpdateArraySchema = chatPackageSourceArraySchema.max(100);
374
459
  var ChatPiSettingsSchema = external_exports.object({
375
460
  compaction: external_exports.object({
376
461
  enabled: external_exports.boolean(),
@@ -382,18 +467,18 @@ var ChatPiSettingsSchema = external_exports.object({
382
467
  defaultThinkingLevel: ChatThinkingLevelSchema.optional(),
383
468
  enableSkillCommands: external_exports.boolean(),
384
469
  enabledModels: external_exports.array(nonEmptyStringSchema).optional(),
385
- extensions: external_exports.array(nonEmptyStringSchema),
470
+ extensions: chatResourcePathArraySchema,
386
471
  followUpMode: ChatDeliveryModeSchema,
387
- packages: external_exports.array(ChatPackageSourceSchema),
388
- prompts: external_exports.array(nonEmptyStringSchema),
472
+ packages: chatPackageSourceArraySchema,
473
+ prompts: chatResourcePathArraySchema,
389
474
  retry: external_exports.object({
390
475
  enabled: external_exports.boolean(),
391
476
  maxRetries: nonNegativeIntSchema,
392
477
  baseDelayMs: nonNegativeIntSchema
393
478
  }),
394
- skills: external_exports.array(nonEmptyStringSchema),
479
+ skills: chatResourcePathArraySchema,
395
480
  steeringMode: ChatDeliveryModeSchema,
396
- themes: external_exports.array(nonEmptyStringSchema),
481
+ themes: chatResourcePathArraySchema,
397
482
  transport: ChatTransportSchema
398
483
  }).openapi({ description: "Editable Pi settings" });
399
484
  var ChatPiSettingsUpdateSchema = external_exports.object({
@@ -403,21 +488,38 @@ var ChatPiSettingsUpdateSchema = external_exports.object({
403
488
  defaultThinkingLevel: ChatThinkingLevelSchema.optional(),
404
489
  enableSkillCommands: external_exports.boolean().optional(),
405
490
  enabledModels: external_exports.array(nonEmptyStringSchema).nullable().optional(),
406
- extensions: external_exports.array(nonEmptyStringSchema).optional(),
491
+ extensions: chatResourcePathUpdateArraySchema.optional(),
407
492
  followUpMode: ChatDeliveryModeSchema.optional(),
408
- packages: external_exports.array(ChatPackageSourceSchema).optional(),
409
- prompts: external_exports.array(nonEmptyStringSchema).optional(),
493
+ packages: chatPackageSourceUpdateArraySchema.optional(),
494
+ prompts: chatResourcePathUpdateArraySchema.optional(),
410
495
  retry: ChatPiSettingsSchema.shape.retry.partial().optional(),
411
- skills: external_exports.array(nonEmptyStringSchema).optional(),
496
+ skills: chatResourcePathUpdateArraySchema.optional(),
412
497
  steeringMode: ChatDeliveryModeSchema.optional(),
413
- themes: external_exports.array(nonEmptyStringSchema).optional(),
498
+ themes: chatResourcePathUpdateArraySchema.optional(),
414
499
  transport: ChatTransportSchema.optional()
415
500
  }).strict().openapi({ description: "Pi settings update" });
501
+ var chatPiSettingsProjectResponseSchema = external_exports.object({
502
+ compaction: ChatPiSettingsSchema.shape.compaction.partial().optional(),
503
+ defaultModel: external_exports.string().optional(),
504
+ defaultProvider: external_exports.string().optional(),
505
+ defaultThinkingLevel: ChatThinkingLevelSchema.optional(),
506
+ enableSkillCommands: external_exports.boolean().optional(),
507
+ enabledModels: external_exports.array(nonEmptyStringSchema).nullable().optional(),
508
+ extensions: chatResourcePathArraySchema.optional(),
509
+ followUpMode: ChatDeliveryModeSchema.optional(),
510
+ packages: chatPackageSourceArraySchema.optional(),
511
+ prompts: chatResourcePathArraySchema.optional(),
512
+ retry: ChatPiSettingsSchema.shape.retry.partial().optional(),
513
+ skills: chatResourcePathArraySchema.optional(),
514
+ steeringMode: ChatDeliveryModeSchema.optional(),
515
+ themes: chatResourcePathArraySchema.optional(),
516
+ transport: ChatTransportSchema.optional()
517
+ }).strict();
416
518
  var ChatSettingsUpdateRequestSchema = external_exports.object({ settings: ChatPiSettingsUpdateSchema }).openapi({ description: "Pi settings update request" });
417
519
  var ChatSettingsResponseSchema = external_exports.object({
418
520
  diagnostics: external_exports.array(external_exports.string()),
419
521
  effective: ChatPiSettingsSchema,
420
- project: ChatPiSettingsUpdateSchema,
522
+ project: chatPiSettingsProjectResponseSchema,
421
523
  projectPath: external_exports.string(),
422
524
  updateImpact: external_exports.object({
423
525
  newSessionRecommended: external_exports.boolean(),
@@ -2746,6 +2848,11 @@ export {
2746
2848
  ChatProviderOAuthLoginRequestSchema,
2747
2849
  ChatProviderOAuthLoginResponseSchema,
2748
2850
  ChatCommandsResponseSchema,
2851
+ ChatMcpListResponseSchema,
2852
+ ChatMcpUpsertRequestSchema,
2853
+ ChatMcpDeleteRequestSchema,
2854
+ ChatMcpOAuthLoginRequestSchema,
2855
+ ChatMcpOAuthLoginResponseSchema,
2749
2856
  ChatSettingsUpdateRequestSchema,
2750
2857
  ChatSettingsResponseSchema,
2751
2858
  useQueryClient,
@@ -1,4 +1,8 @@
1
- // web/app/dist/server/assets/model-patterns-BueP0n_O.js
1
+ import {
2
+ readStoredValue
3
+ } from "./chunk-SZJUXVWG.js";
4
+
5
+ // web/app/dist/server/assets/model-patterns-RCfrtqAy.js
2
6
  var UI_PREFERENCES_KEY = "fleet-prime:v1:ui-preferences";
3
7
  var DEFAULT_UI_PREFERENCES = {
4
8
  density: "comfortable",
@@ -7,9 +11,8 @@ var DEFAULT_UI_PREFERENCES = {
7
11
  confirmSessionDelete: true
8
12
  };
9
13
  function readUiPreferences() {
10
- if (typeof window === "undefined") return DEFAULT_UI_PREFERENCES;
11
14
  try {
12
- const parsed = JSON.parse(window.localStorage.getItem("fleet-prime:v1:ui-preferences") ?? "null");
15
+ const parsed = JSON.parse(readStoredValue("fleet-prime:v1:ui-preferences") ?? "null");
13
16
  return {
14
17
  ...DEFAULT_UI_PREFERENCES,
15
18
  ...parsed
@@ -6,7 +6,7 @@ import {
6
6
  Skeleton
7
7
  } from "./chunk-EAJTWMK5.js";
8
8
 
9
- // web/app/dist/server/assets/skeleton-loaders-CMFI5UTA.js
9
+ // web/app/dist/server/assets/skeleton-loaders-BrGae_Zw.js
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
11
11
  function ResourceNotice({ description, icon: Icon, title }) {
12
12
  return /* @__PURE__ */ jsxs("div", {
@@ -15,7 +15,7 @@ function ResourceNotice({ description, icon: Icon, title }) {
15
15
  className: "flex items-center gap-2 text-label font-medium text-foreground/65",
16
16
  children: [/* @__PURE__ */ jsx(Icon, { className: "size-3.5" }), /* @__PURE__ */ jsx("span", { children: title })]
17
17
  }), /* @__PURE__ */ jsx("p", {
18
- className: "mt-1 text-[11px] leading-4 text-foreground/40",
18
+ className: "mt-1 text-[0.6875rem] leading-4 text-foreground/40",
19
19
  children: description
20
20
  })]
21
21
  });
@@ -31,7 +31,7 @@ function ResourceChipSection({ id, icon: Icon, items, label }) {
31
31
  className: "truncate underline decoration-foreground/25 underline-offset-2",
32
32
  children: label
33
33
  }), /* @__PURE__ */ jsx("span", {
34
- className: "ml-1 shrink-0 text-[11px] leading-4 text-foreground/30 tabular-nums no-underline",
34
+ className: "ml-1 shrink-0 text-[0.6875rem] leading-4 text-foreground/30 tabular-nums no-underline",
35
35
  children: items.length
36
36
  })]
37
37
  }), /* @__PURE__ */ jsx("ul", {
@@ -64,11 +64,11 @@ function ResourceChip({ icon, item, stacked = false }) {
64
64
  })]
65
65
  }),
66
66
  item.source && /* @__PURE__ */ jsx("span", {
67
- className: "max-w-20 shrink-0 truncate rounded-[5px] bg-foreground/5 px-1.5 py-0.5 text-[10px] leading-3 text-foreground/35",
67
+ className: "max-w-20 shrink-0 truncate rounded-[5px] bg-foreground/5 px-1.5 py-0.5 text-[0.625rem] leading-3 text-foreground/35",
68
68
  children: item.source
69
69
  }),
70
70
  item.activationStatus && /* @__PURE__ */ jsx("span", {
71
- className: "max-w-24 shrink-0 truncate rounded-[5px] bg-foreground/5 px-1.5 py-0.5 text-[10px] leading-3 text-foreground/35",
71
+ className: "max-w-24 shrink-0 truncate rounded-[5px] bg-foreground/5 px-1.5 py-0.5 text-[0.625rem] leading-3 text-foreground/35",
72
72
  children: item.activationStatus
73
73
  })
74
74
  ]
@@ -17,7 +17,7 @@ import {
17
17
  __exportAll
18
18
  } from "./chunk-L547YHC4.js";
19
19
 
20
- // web/app/dist/server/assets/fleet-tool-timeline-DwRqQgOj.js
20
+ // web/app/dist/server/assets/fleet-tool-timeline-IB36_PB2.js
21
21
  import { useMemo, useState } from "react";
22
22
  import { jsx, jsxs } from "react/jsx-runtime";
23
23
  var FilePenLine = createLucideIcon("file-pen-line", [
@@ -59,6 +59,7 @@ var FileSearch = createLucideIcon("file-search", [
59
59
  }]
60
60
  ]);
61
61
  var fleet_tool_timeline_exports = /* @__PURE__ */ __exportAll({ FleetToolTimeline: () => FleetToolTimeline });
62
+ var NO_ARTIFACTS = [];
62
63
  function record(value) {
63
64
  return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
64
65
  }
@@ -113,7 +114,7 @@ function statusClass(status2) {
113
114
  if (status2 === "cancelled") return "text-muted-foreground";
114
115
  return "text-emerald-600 dark:text-emerald-400";
115
116
  }
116
- function FleetToolTimeline({ messages, artifacts = [], streaming, className }) {
117
+ function FleetToolTimeline({ messages, artifacts = NO_ARTIFACTS, streaming, className }) {
117
118
  const steps = useMemo(() => {
118
119
  const seen = /* @__PURE__ */ new Set();
119
120
  const fromMessages = messages.flatMap((message) => message.parts.flatMap((part, index) => {
@@ -6,14 +6,14 @@ import {
6
6
  MessageCircleQuestionMark,
7
7
  PI_TOOL_RENDERERS,
8
8
  useHoverCapable
9
- } from "./chunk-2TRF62K5.js";
9
+ } from "./chunk-N6NOTURM.js";
10
10
  import {
11
11
  pct,
12
12
  progressOf
13
13
  } from "./chunk-V3S6BVXO.js";
14
14
  import {
15
15
  mono
16
- } from "./chunk-ANL4B775.js";
16
+ } from "./chunk-XLNCWZMZ.js";
17
17
  import {
18
18
  Eye
19
19
  } from "./chunk-2ST2ULW7.js";
@@ -47,7 +47,7 @@ import {
47
47
  FileDiff,
48
48
  ToolResult,
49
49
  ToolResultOutput
50
- } from "./chunk-3PIUR75R.js";
50
+ } from "./chunk-YXXRP3NS.js";
51
51
  import {
52
52
  ActionSwapRollText,
53
53
  FileCodeCorner
@@ -115,7 +115,7 @@ import {
115
115
  ToolTextShimmer,
116
116
  adaptToolPart,
117
117
  useToolComplete
118
- } from "./chunk-5XX7RKJ6.js";
118
+ } from "./chunk-NXJ32VFR.js";
119
119
  import {
120
120
  createLucideIcon
121
121
  } from "./chunk-4ZIEVI5O.js";
@@ -126,7 +126,7 @@ import {
126
126
  __exportAll
127
127
  } from "./chunk-L547YHC4.js";
128
128
 
129
- // web/app/dist/server/assets/fleet-pi-tool-renderer-RIeVlM9J.js
129
+ // web/app/dist/server/assets/fleet-pi-tool-renderer-umKunT3K.js
130
130
  import React, { createContext, memo, useCallback, useContext, useEffect, useId, useInsertionEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
131
131
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
132
132
  var ChevronsDown = createLucideIcon("chevrons-down", [["path", {
@@ -503,7 +503,7 @@ function QuestionTool({ part }) {
503
503
  className: "flex h-7 items-center justify-between border-b border-border px-3 text-xs text-an-tool-color-muted",
504
504
  children: [/* @__PURE__ */ jsxs("div", {
505
505
  className: "inline-flex items-center gap-1.5",
506
- children: [/* @__PURE__ */ jsx(MessageCircleQuestionMark, { className: "h-3.5 w-3.5" }), "Question"]
506
+ children: [/* @__PURE__ */ jsx(MessageCircleQuestionMark, { className: "size-3.5" }), "Question"]
507
507
  }), showNavigation && /* @__PURE__ */ jsxs("div", {
508
508
  className: "inline-flex items-center gap-1",
509
509
  children: [
@@ -513,7 +513,7 @@ function QuestionTool({ part }) {
513
513
  disabled: !canGoPrev,
514
514
  className: "inline-flex size-5 items-center justify-center rounded-[4px] hover:bg-an-background-secondary disabled:opacity-40",
515
515
  "aria-label": "Previous question",
516
- children: /* @__PURE__ */ jsx(ChevronUp, { className: "h-3.5 w-3.5" })
516
+ children: /* @__PURE__ */ jsx(ChevronUp, { className: "size-3.5" })
517
517
  }),
518
518
  /* @__PURE__ */ jsxs("span", { children: [
519
519
  clampedIndex,
@@ -526,7 +526,7 @@ function QuestionTool({ part }) {
526
526
  disabled: !canGoNext,
527
527
  className: "inline-flex size-5 items-center justify-center rounded-[4px] hover:bg-an-background-secondary disabled:opacity-40",
528
528
  "aria-label": "Next question",
529
- children: /* @__PURE__ */ jsx(ChevronDown, { className: "h-3.5 w-3.5" })
529
+ children: /* @__PURE__ */ jsx(ChevronDown, { className: "size-3.5" })
530
530
  })
531
531
  ]
532
532
  })]
@@ -994,7 +994,7 @@ function BashToolTerminalCard({ step, state, onComplete, approval }) {
994
994
  })]
995
995
  }),
996
996
  /* @__PURE__ */ jsxs("div", {
997
- className: "overflow-hidden border-t border-border bg-background px-2.5 py-1.5 font-mono text-[12px] leading-[16px]",
997
+ className: "overflow-hidden border-t border-border bg-background px-2.5 py-1.5 font-mono text-[0.75rem] leading-[16px]",
998
998
  children: [/* @__PURE__ */ jsxs("div", {
999
999
  className: "break-all",
1000
1000
  children: [/* @__PURE__ */ jsxs("span", {
@@ -11944,7 +11944,7 @@ function EditToolDiffCard({ step, state, onComplete, input, output, isCollapsibl
11944
11944
  ]
11945
11945
  })]
11946
11946
  }), step.diffStats && !isPending && /* @__PURE__ */ jsx("span", {
11947
- className: "inline-flex gap-2 font-mono text-[11px] text-an-tool-color-muted",
11947
+ className: "inline-flex gap-2 font-mono text-[0.6875rem] text-an-tool-color-muted",
11948
11948
  children: step.diffStats.split(" ").map((token) => /* @__PURE__ */ jsx("span", {
11949
11949
  className: token.startsWith("+") ? "text-an-diff-added-text" : token.startsWith("-") ? "text-an-diff-removed-text" : void 0,
11950
11950
  children: token
@@ -11952,7 +11952,7 @@ function EditToolDiffCard({ step, state, onComplete, input, output, isCollapsibl
11952
11952
  })]
11953
11953
  }),
11954
11954
  diffFiles ? /* @__PURE__ */ jsx("div", {
11955
- className: `${diffClassName} text-[12px]`,
11955
+ className: `${diffClassName} text-[0.75rem]`,
11956
11956
  style: diffCssVars,
11957
11957
  children: /* @__PURE__ */ jsxs("div", {
11958
11958
  className: isCollapsible ? "group/edit-diff relative" : "relative",
@@ -12239,7 +12239,7 @@ var PlanTool = memo(function PlanTool2({ part, chatStatus }) {
12239
12239
  className: "text-sm text-an-tool-color",
12240
12240
  children: plan.title
12241
12241
  }), actionLabel ? /* @__PURE__ */ jsx("div", {
12242
- className: "rounded-full border border-border px-2 py-0.5 text-[11px] text-an-tool-color-muted",
12242
+ className: "rounded-full border border-border px-2 py-0.5 text-[0.6875rem] text-an-tool-color-muted",
12243
12243
  children: actionLabel
12244
12244
  }) : null]
12245
12245
  }), hasSummary ? /* @__PURE__ */ jsxs("div", {
@@ -12275,10 +12275,10 @@ var PlanTool = memo(function PlanTool2({ part, chatStatus }) {
12275
12275
  className: "-mx-2 h-5 rounded-[4px] px-1.5 text-xs text-muted-foreground hover:text-an-tool-color",
12276
12276
  children: isExpanded ? "Hide detailed plan" : "Read detailed plan"
12277
12277
  }), canAct ? /* @__PURE__ */ jsx("div", {
12278
- className: "text-[11px] text-an-tool-color-muted",
12278
+ className: "text-[0.6875rem] text-an-tool-color-muted",
12279
12279
  children: "Choose what to do with this plan."
12280
12280
  }) : isAlreadyApproved ? /* @__PURE__ */ jsx("div", {
12281
- className: "text-[11px] text-an-tool-color-muted",
12281
+ className: "text-[0.6875rem] text-an-tool-color-muted",
12282
12282
  children: "Approved"
12283
12283
  }) : null]
12284
12284
  }),
@@ -12711,7 +12711,7 @@ ${displayOutput}
12711
12711
  expandable: hasExpandableContent,
12712
12712
  defaultOpen,
12713
12713
  children: codeBlock && /* @__PURE__ */ jsx(LazyMarkdown, {
12714
- className: "text-[12px]",
12714
+ className: "text-[0.75rem]",
12715
12715
  codeControls: false,
12716
12716
  content: codeBlock
12717
12717
  })
@@ -13183,7 +13183,7 @@ function ImageGeneration({ children, status = "generating", label, prompt, resol
13183
13183
  }, "dither-field") : null
13184
13184
  }),
13185
13185
  resolution ? /* @__PURE__ */ jsx("span", {
13186
- className: "absolute top-2 right-2 z-10 rounded-full bg-background/75 px-2 py-0.5 font-mono text-[10px] tabular-nums text-muted-foreground",
13186
+ className: "absolute top-2 right-2 z-10 rounded-full bg-background/75 px-2 py-0.5 font-mono text-[0.625rem] tabular-nums text-muted-foreground",
13187
13187
  children: resolution
13188
13188
  }) : null
13189
13189
  ]
@@ -13492,7 +13492,7 @@ function TodoList({ items, title = "To-dos", open, defaultOpen = true, onOpenCha
13492
13492
  className: "scrollbar-hide overflow-y-auto px-2 pb-2",
13493
13493
  style: { maxHeight },
13494
13494
  children: [/* @__PURE__ */ jsx("ol", {
13495
- "aria-live": "polite",
13495
+ "aria-live": allComplete ? "polite" : "off",
13496
13496
  className: "space-y-0",
13497
13497
  children: /* @__PURE__ */ jsx(AnimatePresence, {
13498
13498
  initial: false,
@@ -13580,7 +13580,7 @@ function AgentPlan({ steps, activeIndex, className, ...props }) {
13580
13580
  /* @__PURE__ */ jsxs("div", {
13581
13581
  className: "flex items-center justify-between",
13582
13582
  children: [/* @__PURE__ */ jsx("span", {
13583
- className: "text-[13.5px] font-medium",
13583
+ className: "text-[0.84375rem] font-medium",
13584
13584
  children: "Plan"
13585
13585
  }), /* @__PURE__ */ jsxs("span", {
13586
13586
  className: cn(mono, "text-foreground/35 tabular-nums"),
@@ -13604,7 +13604,7 @@ function AgentPlan({ steps, activeIndex, className, ...props }) {
13604
13604
  const done = allDone || i < completed;
13605
13605
  const active = !allDone && i === completed;
13606
13606
  return /* @__PURE__ */ jsxs("li", {
13607
- className: "flex items-center gap-2.5 text-[13.5px]",
13607
+ className: "flex items-center gap-2.5 text-[0.84375rem]",
13608
13608
  children: [/* @__PURE__ */ jsx("span", {
13609
13609
  className: "flex size-4 shrink-0 items-center justify-center",
13610
13610
  children: done ? /* @__PURE__ */ jsx(Check, { className: "text-foreground/35 size-3.5" }) : active ? /* @__PURE__ */ jsx(LoaderCircle, { className: "text-foreground/90 size-3.5 animate-spin motion-reduce:animate-none" }) : /* @__PURE__ */ jsx("span", {
@@ -13702,7 +13702,7 @@ function ToolApproval({ tool, title = "Allow this tool to run?", description, pa
13702
13702
  children: tool
13703
13703
  })]
13704
13704
  }), /* @__PURE__ */ jsx("span", {
13705
- className: cn("shrink-0 rounded-full border px-2 py-0.5 text-[11px] font-medium transition-colors", getStatusBadgeClass(status)),
13705
+ className: cn("shrink-0 rounded-full border px-2 py-0.5 text-[0.6875rem] font-medium transition-colors", getStatusBadgeClass(status)),
13706
13706
  children: getStatusCopy(status)
13707
13707
  })]
13708
13708
  }),
@@ -2,7 +2,7 @@ import {
2
2
  Badge,
3
3
  UiErrorBoundary,
4
4
  encodeOpenPanelActionMessage
5
- } from "./chunk-KNJUSMBT.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-K5ESTT4A.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-NRDG2ISJ.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-Czy5Vo2L.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";
@@ -47092,7 +47092,7 @@ function buildChartConfig(series) {
47092
47092
  }
47093
47093
  function EmptyChartNotice() {
47094
47094
  return /* @__PURE__ */ jsx("div", {
47095
- className: "flex min-h-[120px] w-full items-center justify-center rounded-md border border-border/50 text-[12px] text-foreground/40",
47095
+ className: "flex min-h-[120px] w-full items-center justify-center rounded-md border border-border/50 text-[0.75rem] text-foreground/40",
47096
47096
  children: "No data"
47097
47097
  });
47098
47098
  }
@@ -47345,7 +47345,7 @@ function MetricGroupComponent({ props: { metrics } }) {
47345
47345
  className: "flex flex-col gap-1 px-3",
47346
47346
  children: [
47347
47347
  /* @__PURE__ */ jsx("span", {
47348
- className: "text-[11px] font-medium text-foreground/50",
47348
+ className: "text-[0.6875rem] font-medium text-foreground/50",
47349
47349
  children: metric.label
47350
47350
  }),
47351
47351
  /* @__PURE__ */ jsxs("div", {
@@ -47354,7 +47354,7 @@ function MetricGroupComponent({ props: { metrics } }) {
47354
47354
  className: "text-lg font-semibold text-foreground",
47355
47355
  children: metric.value
47356
47356
  }), metric.delta ? /* @__PURE__ */ jsx("span", {
47357
- className: cn("rounded px-1.5 py-0.5 text-[10px] font-medium", deltaToneClasses[metric.deltaTone ?? "neutral"]),
47357
+ className: cn("rounded px-1.5 py-0.5 text-[0.625rem] font-medium", deltaToneClasses[metric.deltaTone ?? "neutral"]),
47358
47358
  children: metric.delta
47359
47359
  }) : null]
47360
47360
  }),
@@ -100517,7 +100517,7 @@ var CodeBlockDef = defineComponent$1({
100517
100517
  return /* @__PURE__ */ jsxs("pre", {
100518
100518
  className: "w-full overflow-x-auto rounded-lg bg-muted p-3 text-xs",
100519
100519
  children: [language && /* @__PURE__ */ jsx("div", {
100520
- className: "mb-2 text-[10px] text-muted-foreground uppercase",
100520
+ className: "mb-2 text-[0.625rem] text-muted-foreground uppercase",
100521
100521
  children: language
100522
100522
  }), /* @__PURE__ */ jsx("code", { children: code })]
100523
100523
  });