@ottocode/web-sdk 0.1.299 → 0.1.301

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 (74) hide show
  1. package/dist/components/agents/AgentEditor.d.ts +9 -0
  2. package/dist/components/agents/AgentEditor.d.ts.map +1 -0
  3. package/dist/components/agents/AgentList.d.ts +10 -0
  4. package/dist/components/agents/AgentList.d.ts.map +1 -0
  5. package/dist/components/agents/AgentProviderModelFields.d.ts +10 -0
  6. package/dist/components/agents/AgentProviderModelFields.d.ts.map +1 -0
  7. package/dist/components/agents/AgentToolList.d.ts +14 -0
  8. package/dist/components/agents/AgentToolList.d.ts.map +1 -0
  9. package/dist/components/agents/AgentsManagerModal.d.ts +2 -0
  10. package/dist/components/agents/AgentsManagerModal.d.ts.map +1 -0
  11. package/dist/components/agents/AgentsSidebar.d.ts +3 -0
  12. package/dist/components/agents/AgentsSidebar.d.ts.map +1 -0
  13. package/dist/components/agents/AgentsSidebarToggle.d.ts +2 -0
  14. package/dist/components/agents/AgentsSidebarToggle.d.ts.map +1 -0
  15. package/dist/components/agents/CreateAgentModal.d.ts +8 -0
  16. package/dist/components/agents/CreateAgentModal.d.ts.map +1 -0
  17. package/dist/components/agents/agentConstants.d.ts +50 -0
  18. package/dist/components/agents/agentConstants.d.ts.map +1 -0
  19. package/dist/components/agents/index.d.ts +10 -0
  20. package/dist/components/agents/index.d.ts.map +1 -0
  21. package/dist/components/btw/BtwFloatingChat.d.ts +2 -0
  22. package/dist/components/btw/BtwFloatingChat.d.ts.map +1 -0
  23. package/dist/components/chat/ChatInput.d.ts +5 -0
  24. package/dist/components/chat/ChatInput.d.ts.map +1 -1
  25. package/dist/components/chat/ChatInputContainer.d.ts.map +1 -1
  26. package/dist/components/chat/NewSessionLanding.d.ts.map +1 -1
  27. package/dist/components/chat/UnifiedModelSelector.d.ts +2 -1
  28. package/dist/components/chat/UnifiedModelSelector.d.ts.map +1 -1
  29. package/dist/components/file-browser/FileViewerPanel.d.ts.map +1 -1
  30. package/dist/components/index.d.ts +5 -0
  31. package/dist/components/index.d.ts.map +1 -1
  32. package/dist/components/index.js +17348 -14788
  33. package/dist/components/index.js.map +33 -20
  34. package/dist/components/messages/ActionToolBox.d.ts.map +1 -1
  35. package/dist/components/messages/MessageThread.d.ts +1 -0
  36. package/dist/components/messages/MessageThread.d.ts.map +1 -1
  37. package/dist/components/messages/MessageThreadContainer.d.ts +1 -0
  38. package/dist/components/messages/MessageThreadContainer.d.ts.map +1 -1
  39. package/dist/components/messages/UserMessageGroup.d.ts.map +1 -1
  40. package/dist/components/ui/CodeMirrorViewer.d.ts +3 -1
  41. package/dist/components/ui/CodeMirrorViewer.d.ts.map +1 -1
  42. package/dist/components/ui/Modal.d.ts +1 -1
  43. package/dist/components/ui/Modal.d.ts.map +1 -1
  44. package/dist/hooks/index.d.ts +1 -0
  45. package/dist/hooks/index.d.ts.map +1 -1
  46. package/dist/hooks/index.js +236 -15
  47. package/dist/hooks/index.js.map +8 -6
  48. package/dist/hooks/useAgents.d.ts +156 -0
  49. package/dist/hooks/useAgents.d.ts.map +1 -0
  50. package/dist/hooks/useConfig.d.ts.map +1 -1
  51. package/dist/hooks/useSessionStream.d.ts.map +1 -1
  52. package/dist/index.js +17390 -14819
  53. package/dist/index.js.map +33 -20
  54. package/dist/lib/api-client/config.d.ts +14 -0
  55. package/dist/lib/api-client/config.d.ts.map +1 -1
  56. package/dist/lib/api-client/index.d.ts +5 -0
  57. package/dist/lib/api-client/index.d.ts.map +1 -1
  58. package/dist/lib/fileSelectionContext.d.ts +48 -0
  59. package/dist/lib/fileSelectionContext.d.ts.map +1 -0
  60. package/dist/lib/index.js +48 -2
  61. package/dist/lib/index.js.map +4 -4
  62. package/dist/stores/agentsStore.d.ts +28 -0
  63. package/dist/stores/agentsStore.d.ts.map +1 -0
  64. package/dist/stores/btwStore.d.ts +24 -0
  65. package/dist/stores/btwStore.d.ts.map +1 -0
  66. package/dist/stores/fileSelectionStore.d.ts +16 -0
  67. package/dist/stores/fileSelectionStore.d.ts.map +1 -0
  68. package/dist/stores/index.d.ts +3 -0
  69. package/dist/stores/index.d.ts.map +1 -1
  70. package/dist/stores/index.js +140 -8
  71. package/dist/stores/index.js.map +6 -3
  72. package/dist/types/api.d.ts +3 -1
  73. package/dist/types/api.d.ts.map +1 -1
  74. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ActionToolBox.d.ts","sourceRoot":"","sources":["../../../src/components/messages/ActionToolBox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAoLnD,UAAU,kBAAkB;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,kBAAkB,+BAsS5E"}
1
+ {"version":3,"file":"ActionToolBox.d.ts","sourceRoot":"","sources":["../../../src/components/messages/ActionToolBox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAqLnD,UAAU,kBAAkB;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,kBAAkB,+BAyS5E"}
@@ -7,6 +7,7 @@ interface MessageThreadProps {
7
7
  compact?: boolean;
8
8
  disableAutoScroll?: boolean;
9
9
  onSelectSession?: (sessionId: string) => void;
10
+ footerBottomPaddingClass?: string;
10
11
  }
11
12
  export declare const MessageThread: import("react").NamedExoticComponent<MessageThreadProps>;
12
13
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"MessageThread.d.ts","sourceRoot":"","sources":["../../../src/components/messages/MessageThread.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAe,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmBrE,UAAU,kBAAkB;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AA6YD,eAAO,MAAM,aAAa,0DAqZxB,CAAC"}
1
+ {"version":3,"file":"MessageThread.d.ts","sourceRoot":"","sources":["../../../src/components/messages/MessageThread.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAe,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAmBrE,UAAU,kBAAkB;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,wBAAwB,CAAC,EAAE,MAAM,CAAC;CAClC;AA6YD,eAAO,MAAM,aAAa,0DAuZxB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  interface MessageThreadContainerProps {
2
2
  sessionId: string;
3
3
  onSelectSession?: (sessionId: string) => void;
4
+ footerBottomPaddingClass?: string;
4
5
  }
5
6
  export declare const MessageThreadContainer: import("react").NamedExoticComponent<MessageThreadContainerProps>;
6
7
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"MessageThreadContainer.d.ts","sourceRoot":"","sources":["../../../src/components/messages/MessageThreadContainer.tsx"],"names":[],"mappings":"AAUA,UAAU,2BAA2B;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED,eAAO,MAAM,sBAAsB,mEAejC,CAAC"}
1
+ {"version":3,"file":"MessageThreadContainer.d.ts","sourceRoot":"","sources":["../../../src/components/messages/MessageThreadContainer.tsx"],"names":[],"mappings":"AAUA,UAAU,2BAA2B;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,wBAAwB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,eAAO,MAAM,sBAAsB,mEAiBjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserMessageGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/UserMessageGroup.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAS/C,UAAU,qBAAqB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAChC;AAkBD,eAAO,MAAM,gBAAgB,6DAsV5B,CAAC"}
1
+ {"version":3,"file":"UserMessageGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/UserMessageGroup.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAU/C,UAAU,qBAAqB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAChC;AAkBD,eAAO,MAAM,gBAAgB,6DAiX5B,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { CodeMirrorTextSelection } from '../../lib/fileSelectionContext';
1
2
  export type CodeMirrorLineTone = 'add' | 'remove' | 'primary';
2
3
  type CodeMirrorLineNumberFormatter = (lineNumber: number) => string;
3
4
  interface CodeMirrorViewerProps {
@@ -11,7 +12,8 @@ interface CodeMirrorViewerProps {
11
12
  scrollToEndSignal?: string | number;
12
13
  disableMarkdownSyntax?: boolean;
13
14
  lineNumberFormatter?: CodeMirrorLineNumberFormatter;
15
+ onSelectionChange?: (selection: CodeMirrorTextSelection | null) => void;
14
16
  }
15
- export declare function CodeMirrorViewer({ content, path, className, highlightedLines, highlightTone, lineTones, scrollToLine, scrollToEndSignal, disableMarkdownSyntax, lineNumberFormatter, }: CodeMirrorViewerProps): import("react").JSX.Element;
17
+ export declare function CodeMirrorViewer({ content, path, className, highlightedLines, highlightTone, lineTones, scrollToLine, scrollToEndSignal, disableMarkdownSyntax, lineNumberFormatter, onSelectionChange, }: CodeMirrorViewerProps): import("react").JSX.Element;
16
18
  export {};
17
19
  //# sourceMappingURL=CodeMirrorViewer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodeMirrorViewer.d.ts","sourceRoot":"","sources":["../../../src/components/ui/CodeMirrorViewer.tsx"],"names":[],"mappings":"AAmCA,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC9D,KAAK,6BAA6B,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;AAEpE,UAAU,qBAAqB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,6BAA6B,CAAC;CACpD;AA2PD,wBAAgB,gBAAgB,CAAC,EAChC,OAAO,EACP,IAAI,EACJ,SAAS,EACT,gBAAgB,EAChB,aAAyB,EACzB,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,qBAA6B,EAC7B,mBAAmB,GACnB,EAAE,qBAAqB,+BA6JvB"}
1
+ {"version":3,"file":"CodeMirrorViewer.d.ts","sourceRoot":"","sources":["../../../src/components/ui/CodeMirrorViewer.tsx"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE9E,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC9D,KAAK,6BAA6B,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;AAEpE,UAAU,qBAAqB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,6BAA6B,CAAC;IACpD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI,KAAK,IAAI,CAAC;CACxE;AA0SD,wBAAgB,gBAAgB,CAAC,EAChC,OAAO,EACP,IAAI,EACJ,SAAS,EACT,gBAAgB,EAChB,aAAyB,EACzB,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,qBAA6B,EAC7B,mBAAmB,EACnB,iBAAiB,GACjB,EAAE,qBAAqB,+BAoLvB"}
@@ -7,7 +7,7 @@ interface ModalProps {
7
7
  showCloseButton?: boolean;
8
8
  closeOnBackdropClick?: boolean;
9
9
  closeOnEscape?: boolean;
10
- maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '4xl';
10
+ maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '4xl' | '5xl';
11
11
  position?: 'fixed' | 'absolute';
12
12
  }
13
13
  export declare function Modal({ isOpen, onClose, title, children, showCloseButton, closeOnBackdropClick, closeOnEscape, maxWidth, position, }: ModalProps): import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlD,UAAU,UAAU;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;IACrD,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAChC;AAWD,wBAAgB,KAAK,CAAC,EACrB,MAAM,EACN,OAAO,EACP,KAAK,EACL,QAAQ,EACR,eAAsB,EACtB,oBAA2B,EAC3B,aAAoB,EACpB,QAAe,EACf,QAAkB,GAClB,EAAE,UAAU,+BA4GZ"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlD,UAAU,UAAU;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC7D,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAChC;AAYD,wBAAgB,KAAK,CAAC,EACrB,MAAM,EACN,OAAO,EACP,KAAK,EACL,QAAQ,EACR,eAAsB,EACtB,oBAA2B,EAC3B,aAAoB,EACpB,QAAe,EACf,QAAkB,GAClB,EAAE,UAAU,+BA4GZ"}
@@ -26,6 +26,7 @@ export * from './useProviderUsage';
26
26
  export * from './useFileBrowser';
27
27
  export * from './useMCP';
28
28
  export * from './useSkills';
29
+ export * from './useAgents';
29
30
  export * from './useContainerWidth';
30
31
  export * from './useVoiceInput';
31
32
  export * from './useDictationModels';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
@@ -560,6 +560,11 @@ import {
560
560
  getConfig as apiGetConfig,
561
561
  getProviderModels as apiGetProviderModels,
562
562
  getAllModels as apiGetAllModels,
563
+ getAgentDetails as apiGetAgentDetails,
564
+ getAgent as apiGetAgent,
565
+ getConfigTools as apiGetConfigTools,
566
+ upsertAgent as apiUpsertAgent,
567
+ deleteAgent as apiDeleteAgent,
563
568
  discoverProviderModels as apiDiscoverProviderModels,
564
569
  updateDefaults as apiUpdateDefaults,
565
570
  updateProviderSettings as apiUpdateProviderSettings,
@@ -572,6 +577,42 @@ var configMixin = {
572
577
  throw new Error(extractErrorMessage(response.error));
573
578
  return response.data;
574
579
  },
580
+ async getAgentDetails() {
581
+ const response = await apiGetAgentDetails();
582
+ if (response.error)
583
+ throw new Error(extractErrorMessage(response.error));
584
+ return response.data;
585
+ },
586
+ async getAgent(name) {
587
+ const response = await apiGetAgent({ path: { agent: name } });
588
+ if (response.error)
589
+ throw new Error(extractErrorMessage(response.error));
590
+ return response.data;
591
+ },
592
+ async getConfigTools() {
593
+ const response = await apiGetConfigTools();
594
+ if (response.error)
595
+ throw new Error(extractErrorMessage(response.error));
596
+ return response.data;
597
+ },
598
+ async updateAgent(name, input) {
599
+ const response = await apiUpsertAgent({
600
+ path: { agent: name },
601
+ body: input
602
+ });
603
+ if (response.error)
604
+ throw new Error(extractErrorMessage(response.error));
605
+ return response.data;
606
+ },
607
+ async deleteAgent(name, scope = "local") {
608
+ const response = await apiDeleteAgent({
609
+ path: { agent: name },
610
+ query: { scope }
611
+ });
612
+ if (response.error)
613
+ throw new Error(extractErrorMessage(response.error));
614
+ return response.data;
615
+ },
575
616
  async getModels(providerId) {
576
617
  const response = await apiGetProviderModels({
577
618
  path: { provider: providerId }
@@ -613,7 +654,7 @@ var configMixin = {
613
654
  },
614
655
  async updateDefaults(data) {
615
656
  const response = await apiUpdateDefaults({
616
- body: data
657
+ body: { scope: "global", ...data }
617
658
  });
618
659
  if (response.error)
619
660
  throw new Error(extractErrorMessage(response.error));
@@ -1250,6 +1291,11 @@ class ApiClient {
1250
1291
  checkoutBranch = gitMixin.checkoutBranch;
1251
1292
  createGitBranch = gitMixin.createGitBranch;
1252
1293
  getConfig = configMixin.getConfig;
1294
+ getAgentDetails = configMixin.getAgentDetails;
1295
+ getAgent = configMixin.getAgent;
1296
+ getConfigTools = configMixin.getConfigTools;
1297
+ updateAgent = configMixin.updateAgent;
1298
+ deleteAgent = configMixin.deleteAgent;
1253
1299
  getModels = configMixin.getModels;
1254
1300
  getAllModels = configMixin.getAllModels;
1255
1301
  discoverProviderModels = configMixin.discoverProviderModels;
@@ -4035,6 +4081,7 @@ ${bestEffortUnescapeJsonString(rawTail)}`;
4035
4081
  if (!callId)
4036
4082
  return;
4037
4083
  const payloadName = getToolEventName(payload);
4084
+ const payloadMessageId = typeof payload?.messageId === "string" ? payload.messageId : null;
4038
4085
  const payloadStepIndex = typeof payload?.stepIndex === "number" ? payload.stepIndex : null;
4039
4086
  const payloadResult = payload?.result;
4040
4087
  const payloadArtifact = payload?.artifact;
@@ -4045,6 +4092,9 @@ ${bestEffortUnescapeJsonString(rawTail)}`;
4045
4092
  let changed = false;
4046
4093
  const now = Date.now();
4047
4094
  const nextMessages = oldMessages.map((message) => {
4095
+ if (payloadMessageId && message.id !== payloadMessageId) {
4096
+ return message;
4097
+ }
4048
4098
  if (!message.parts?.length)
4049
4099
  return message;
4050
4100
  let messageChanged = false;
@@ -7248,11 +7298,175 @@ function useSkillFileContent(name, filePath) {
7248
7298
  enabled: !!name && !!filePath
7249
7299
  });
7250
7300
  }
7301
+ // src/hooks/useAgents.ts
7302
+ import { useEffect as useEffect18 } from "react";
7303
+ import { useMutation as useMutation10, useQuery as useQuery14, useQueryClient as useQueryClient13 } from "@tanstack/react-query";
7304
+
7305
+ // src/stores/agentsStore.ts
7306
+ import { create as create22 } from "zustand";
7307
+ function collapseOtherRightPanels() {
7308
+ useGitStore.getState().collapseSidebar();
7309
+ useSessionFilesStore.getState().collapseSidebar();
7310
+ useResearchStore.getState().collapseSidebar();
7311
+ useSettingsStore.getState().collapseSidebar();
7312
+ useTunnelStore.getState().collapseSidebar();
7313
+ useFileBrowserStore.getState().collapseSidebar();
7314
+ useMCPStore.getState().collapseSidebar();
7315
+ useSkillsStore.getState().collapseSidebar();
7316
+ }
7317
+ var useAgentsStore = create22((set) => ({
7318
+ isExpanded: false,
7319
+ isManagerOpen: false,
7320
+ managerMode: "library",
7321
+ editorPage: "overview",
7322
+ agents: [],
7323
+ defaultAgent: null,
7324
+ selectedAgent: null,
7325
+ isCreateModalOpen: false,
7326
+ setManagerMode: (mode) => set({ managerMode: mode }),
7327
+ openManager: () => {
7328
+ collapseOtherRightPanels();
7329
+ set({ isManagerOpen: true, isExpanded: true, managerMode: "library" });
7330
+ },
7331
+ closeManager: () => set({
7332
+ isManagerOpen: false,
7333
+ isExpanded: false,
7334
+ isCreateModalOpen: false,
7335
+ managerMode: "library",
7336
+ editorPage: "overview"
7337
+ }),
7338
+ toggleManager: () => {
7339
+ const open = useAgentsStore.getState().isManagerOpen;
7340
+ if (open) {
7341
+ useAgentsStore.getState().closeManager();
7342
+ } else {
7343
+ useAgentsStore.getState().openManager();
7344
+ }
7345
+ },
7346
+ setAgents: (agents, defaultAgent) => set((state) => ({
7347
+ agents,
7348
+ defaultAgent,
7349
+ selectedAgent: state.selectedAgent && agents.some((a) => a.name === state.selectedAgent) ? state.selectedAgent : agents.find((a) => a.name === defaultAgent)?.name ?? agents[0]?.name ?? null
7350
+ })),
7351
+ selectAgent: (agent) => set({ selectedAgent: agent }),
7352
+ backToList: () => set({ selectedAgent: null, editorPage: "overview" }),
7353
+ openAgentInManager: (agent) => set({
7354
+ isManagerOpen: true,
7355
+ isExpanded: true,
7356
+ managerMode: "workspace",
7357
+ selectedAgent: agent,
7358
+ editorPage: "overview",
7359
+ isCreateModalOpen: false
7360
+ }),
7361
+ setEditorPage: (page) => set({ editorPage: page }),
7362
+ openCreateModal: () => set({ isManagerOpen: true, isExpanded: true, isCreateModalOpen: true }),
7363
+ closeCreateModal: () => set({ isCreateModalOpen: false })
7364
+ }));
7365
+
7366
+ // src/hooks/useAgents.ts
7367
+ function useAgentDetails(options = {}) {
7368
+ const managerOpen = useAgentsStore((s) => s.isManagerOpen);
7369
+ const createOpen = useAgentsStore((s) => s.isCreateModalOpen);
7370
+ const enabled = options.enabled ?? (managerOpen || createOpen);
7371
+ const setAgents = useAgentsStore((s) => s.setAgents);
7372
+ const selectedAgent = useAgentsStore((s) => s.selectedAgent);
7373
+ const selectAgent = useAgentsStore((s) => s.selectAgent);
7374
+ const query = useQuery14({
7375
+ queryKey: ["config", "agents"],
7376
+ queryFn: () => apiClient.getAgentDetails(),
7377
+ enabled,
7378
+ staleTime: 15000
7379
+ });
7380
+ useEffect18(() => {
7381
+ if (!query.data)
7382
+ return;
7383
+ setAgents(query.data.agents, query.data.default);
7384
+ if (!selectedAgent && query.data.agents.length > 0) {
7385
+ const defaultAgent = query.data.agents.find((agent) => agent.name === query.data.default);
7386
+ selectAgent(defaultAgent?.name ?? query.data.agents[0].name);
7387
+ }
7388
+ }, [query.data, selectAgent, selectedAgent, setAgents]);
7389
+ return query;
7390
+ }
7391
+ function useAgent(agentName) {
7392
+ return useQuery14({
7393
+ queryKey: ["config", "agents", agentName],
7394
+ queryFn: async () => {
7395
+ if (!agentName)
7396
+ return null;
7397
+ return apiClient.getAgent(agentName);
7398
+ },
7399
+ enabled: Boolean(agentName),
7400
+ staleTime: 15000
7401
+ });
7402
+ }
7403
+ function useConfigTools(options = {}) {
7404
+ const managerOpen = useAgentsStore((s) => s.isManagerOpen);
7405
+ const createOpen = useAgentsStore((s) => s.isCreateModalOpen);
7406
+ const enabled = options.enabled ?? (managerOpen || createOpen);
7407
+ return useQuery14({
7408
+ queryKey: ["config", "tools"],
7409
+ queryFn: () => apiClient.getConfigTools(),
7410
+ enabled,
7411
+ staleTime: 30000
7412
+ });
7413
+ }
7414
+ function useUpdateAgent() {
7415
+ const queryClient = useQueryClient13();
7416
+ return useMutation10({
7417
+ mutationFn: ({ name, input }) => apiClient.updateAgent(name, input),
7418
+ onSuccess: (data, variables) => {
7419
+ queryClient.setQueryData(["config", "agents", variables.name], data);
7420
+ queryClient.invalidateQueries({ queryKey: ["config", "agents"] });
7421
+ }
7422
+ });
7423
+ }
7424
+ function useDeleteAgent() {
7425
+ const queryClient = useQueryClient13();
7426
+ const setAgents = useAgentsStore((s) => s.setAgents);
7427
+ const selectAgent = useAgentsStore((s) => s.selectAgent);
7428
+ return useMutation10({
7429
+ mutationFn: ({
7430
+ name,
7431
+ scope = "local"
7432
+ }) => apiClient.deleteAgent(name, scope),
7433
+ onSuccess: async (_data, variables) => {
7434
+ await queryClient.invalidateQueries({ queryKey: ["config", "agents"] });
7435
+ const refreshed = await queryClient.fetchQuery({
7436
+ queryKey: ["config", "agents"],
7437
+ queryFn: () => apiClient.getAgentDetails()
7438
+ });
7439
+ setAgents(refreshed.agents, refreshed.default);
7440
+ if (variables.name === useAgentsStore.getState().selectedAgent) {
7441
+ const next = refreshed.agents.find((a) => a.name === refreshed.default)?.name ?? refreshed.agents[0]?.name ?? null;
7442
+ selectAgent(next);
7443
+ }
7444
+ }
7445
+ });
7446
+ }
7447
+ function useSetDefaultAgent() {
7448
+ const queryClient = useQueryClient13();
7449
+ return useMutation10({
7450
+ mutationFn: (name) => apiClient.updateDefaults({ agent: name, scope: "global" }),
7451
+ onSuccess: () => {
7452
+ queryClient.invalidateQueries({ queryKey: ["config", "agents"] });
7453
+ queryClient.invalidateQueries({ queryKey: ["config"] });
7454
+ }
7455
+ });
7456
+ }
7457
+ function getAgentToolCount(agent) {
7458
+ if (!agent)
7459
+ return 0;
7460
+ return Array.from(new Set([
7461
+ ...agent.toolConfig.firstClass ?? [],
7462
+ ...agent.toolConfig.loadable ?? []
7463
+ ])).length;
7464
+ }
7251
7465
  // src/hooks/useContainerWidth.ts
7252
- import { useEffect as useEffect18, useState as useState6 } from "react";
7466
+ import { useEffect as useEffect19, useState as useState6 } from "react";
7253
7467
  function useContainerWidth(ref) {
7254
7468
  const [width, setWidth] = useState6(0);
7255
- useEffect18(() => {
7469
+ useEffect19(() => {
7256
7470
  const el = ref.current;
7257
7471
  if (!el)
7258
7472
  return;
@@ -7265,7 +7479,7 @@ function useContainerWidth(ref) {
7265
7479
  return width;
7266
7480
  }
7267
7481
  // src/hooks/useVoiceInput.ts
7268
- import { useCallback as useCallback12, useEffect as useEffect19, useRef as useRef9, useState as useState7 } from "react";
7482
+ import { useCallback as useCallback12, useEffect as useEffect20, useRef as useRef9, useState as useState7 } from "react";
7269
7483
  var TARGET_SAMPLE_RATE = 16000;
7270
7484
  var PCM_FRAME_BYTES = 3200;
7271
7485
  function getAudioContextConstructor() {
@@ -7337,7 +7551,7 @@ function useVoiceInput({
7337
7551
  const onTranscriptRef = useRef9(onTranscript);
7338
7552
  const onErrorRef = useRef9(onError);
7339
7553
  const onNeedsInstallRef = useRef9(onNeedsInstall);
7340
- useEffect19(() => {
7554
+ useEffect20(() => {
7341
7555
  onTranscriptRef.current = onTranscript;
7342
7556
  onErrorRef.current = onError;
7343
7557
  onNeedsInstallRef.current = onNeedsInstall;
@@ -7548,7 +7762,7 @@ function useVoiceInput({
7548
7762
  isSupported,
7549
7763
  lang
7550
7764
  ]);
7551
- useEffect19(() => cleanup, [cleanup]);
7765
+ useEffect20(() => cleanup, [cleanup]);
7552
7766
  return {
7553
7767
  isListening,
7554
7768
  isTranscribing,
@@ -7560,8 +7774,8 @@ function useVoiceInput({
7560
7774
  };
7561
7775
  }
7562
7776
  // src/hooks/useDictationModels.ts
7563
- import { useCallback as useCallback13, useEffect as useEffect20, useRef as useRef10, useState as useState8 } from "react";
7564
- import { useMutation as useMutation10, useQuery as useQuery14, useQueryClient as useQueryClient13 } from "@tanstack/react-query";
7777
+ import { useCallback as useCallback13, useEffect as useEffect21, useRef as useRef10, useState as useState8 } from "react";
7778
+ import { useMutation as useMutation11, useQuery as useQuery15, useQueryClient as useQueryClient14 } from "@tanstack/react-query";
7565
7779
  var DICTATION_STATUS_QUERY_KEY = ["dictation", "status"];
7566
7780
  function mergeModelState(current, model) {
7567
7781
  if (!current)
@@ -7582,12 +7796,12 @@ function parseInstallEvent(raw) {
7582
7796
  }
7583
7797
  }
7584
7798
  function useDictationModels() {
7585
- const queryClient = useQueryClient13();
7799
+ const queryClient = useQueryClient14();
7586
7800
  const eventSourceRef = useRef10(null);
7587
7801
  const [activeInstallModelId, setActiveInstallModelId] = useState8(null);
7588
7802
  const [installProgress, setInstallProgress] = useState8(null);
7589
7803
  const [installStreamError, setInstallStreamError] = useState8(null);
7590
- const statusQuery = useQuery14({
7804
+ const statusQuery = useQuery15({
7591
7805
  queryKey: DICTATION_STATUS_QUERY_KEY,
7592
7806
  queryFn: () => apiClient.getDictationStatus(),
7593
7807
  refetchInterval: (query) => query.state.data?.models.some((model) => model.installing) ? 1000 : 30000
@@ -7629,8 +7843,8 @@ function useDictationModels() {
7629
7843
  });
7630
7844
  };
7631
7845
  }, [closeInstallStream, queryClient]);
7632
- useEffect20(() => closeInstallStream, [closeInstallStream]);
7633
- const installMutation = useMutation10({
7846
+ useEffect21(() => closeInstallStream, [closeInstallStream]);
7847
+ const installMutation = useMutation11({
7634
7848
  mutationFn: (input) => apiClient.installDictationModel(input),
7635
7849
  onSuccess: (data) => {
7636
7850
  setInstallProgress(data.model);
@@ -7646,7 +7860,7 @@ function useDictationModels() {
7646
7860
  }
7647
7861
  }
7648
7862
  });
7649
- const removeMutation = useMutation10({
7863
+ const removeMutation = useMutation11({
7650
7864
  mutationFn: (model) => apiClient.removeDictationModel(model),
7651
7865
  onSuccess: (data) => {
7652
7866
  queryClient.setQueryData(DICTATION_STATUS_QUERY_KEY, (current) => mergeModelState(current, data.model));
@@ -7680,6 +7894,7 @@ export {
7680
7894
  useUpdateSkillsConfig,
7681
7895
  useUpdateSession,
7682
7896
  useUpdateDefaults,
7897
+ useUpdateAgent,
7683
7898
  useUnstageFiles,
7684
7899
  useTunnelStream,
7685
7900
  useTunnelStatus,
@@ -7698,6 +7913,7 @@ export {
7698
7913
  useSkillDetail,
7699
7914
  useShareStatus,
7700
7915
  useSetSessionPinned,
7916
+ useSetDefaultAgent,
7701
7917
  useSessionsInfinite,
7702
7918
  useSessions,
7703
7919
  useSessionStream,
@@ -7744,12 +7960,14 @@ export {
7744
7960
  useDeleteSession,
7745
7961
  useDeleteResearchSession,
7746
7962
  useDeleteFiles,
7963
+ useDeleteAgent,
7747
7964
  useCreateSession,
7748
7965
  useCreateResearchSession,
7749
7966
  useCreateGitBranch,
7750
7967
  useCreateBranch,
7751
7968
  useCopilotDevicePoller,
7752
7969
  useContainerWidth,
7970
+ useConfigTools,
7753
7971
  useConfig,
7754
7972
  useCommitChanges,
7755
7973
  useClientEvents,
@@ -7758,11 +7976,14 @@ export {
7758
7976
  useAuthenticateMCPServer,
7759
7977
  useAuthStatus,
7760
7978
  useAllModels,
7979
+ useAgentDetails,
7980
+ useAgent,
7761
7981
  useAddRemote,
7762
7982
  useAddMCPServer,
7763
7983
  sessionsQueryKey,
7764
7984
  optimisticallyQueueMessage,
7765
- normalizeQueueState
7985
+ normalizeQueueState,
7986
+ getAgentToolCount
7766
7987
  };
7767
7988
 
7768
- //# debugId=0B45BD1AEF54C11064756E2164756E21
7989
+ //# debugId=7F6554123FAE14B564756E2164756E21