@ottocode/web-sdk 0.1.268 → 0.1.270

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 (51) hide show
  1. package/dist/components/file-browser/FileViewerPanel.d.ts +5 -1
  2. package/dist/components/file-browser/FileViewerPanel.d.ts.map +1 -1
  3. package/dist/components/git/GitDiffPanel.d.ts +5 -1
  4. package/dist/components/git/GitDiffPanel.d.ts.map +1 -1
  5. package/dist/components/git/GitDiffViewer.d.ts.map +1 -1
  6. package/dist/components/index.js +2306 -1899
  7. package/dist/components/index.js.map +63 -61
  8. package/dist/components/mcp/MCPSidebar.d.ts.map +1 -1
  9. package/dist/components/messages/ActionToolBox.d.ts.map +1 -1
  10. package/dist/components/messages/CompactActivityGroup.d.ts.map +1 -1
  11. package/dist/components/messages/MessagePartItem.d.ts.map +1 -1
  12. package/dist/components/messages/MessageThread.d.ts.map +1 -1
  13. package/dist/components/messages/UserMessageGroup.d.ts.map +1 -1
  14. package/dist/components/messages/renderers/DiffView.d.ts.map +1 -1
  15. package/dist/components/messages/threadDensity.d.ts +9 -0
  16. package/dist/components/messages/threadDensity.d.ts.map +1 -0
  17. package/dist/components/onboarding/OnboardingModal.d.ts +2 -0
  18. package/dist/components/onboarding/OnboardingModal.d.ts.map +1 -1
  19. package/dist/components/onboarding/steps/ProviderSetupStep.d.ts.map +1 -1
  20. package/dist/components/session-files/SessionFilesDiffPanel.d.ts +5 -1
  21. package/dist/components/session-files/SessionFilesDiffPanel.d.ts.map +1 -1
  22. package/dist/components/sessions/LeanHeader.d.ts.map +1 -1
  23. package/dist/components/sessions/SessionHeader.d.ts.map +1 -1
  24. package/dist/components/settings/SettingsSidebar.d.ts.map +1 -1
  25. package/dist/components/skills/SkillViewerPanel.d.ts +5 -1
  26. package/dist/components/skills/SkillViewerPanel.d.ts.map +1 -1
  27. package/dist/components/skills/SkillsSidebar.d.ts.map +1 -1
  28. package/dist/components/ui/Modal.d.ts.map +1 -1
  29. package/dist/components/ui/Toaster.d.ts.map +1 -1
  30. package/dist/hooks/index.d.ts +1 -0
  31. package/dist/hooks/index.d.ts.map +1 -1
  32. package/dist/hooks/index.js +209 -28
  33. package/dist/hooks/index.js.map +11 -8
  34. package/dist/hooks/useAuthStatus.d.ts.map +1 -1
  35. package/dist/hooks/useClientEvents.d.ts.map +1 -1
  36. package/dist/hooks/useContainerWidth.d.ts +7 -0
  37. package/dist/hooks/useContainerWidth.d.ts.map +1 -0
  38. package/dist/hooks/usePreferences.d.ts.map +1 -1
  39. package/dist/index.js +2468 -1950
  40. package/dist/index.js.map +65 -62
  41. package/dist/lib/index.d.ts +1 -0
  42. package/dist/lib/index.d.ts.map +1 -1
  43. package/dist/lib/index.js +54 -1
  44. package/dist/lib/index.js.map +5 -4
  45. package/dist/lib/open-url.d.ts.map +1 -1
  46. package/dist/lib/platform.d.ts +14 -0
  47. package/dist/lib/platform.d.ts.map +1 -0
  48. package/dist/stores/index.js.map +2 -2
  49. package/dist/stores/toastStore.d.ts +1 -0
  50. package/dist/stores/toastStore.d.ts.map +1 -1
  51. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"MCPSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/mcp/MCPSidebar.tsx"],"names":[],"mappings":"AAqQA,eAAO,MAAM,UAAU,8CA0PrB,CAAC"}
1
+ {"version":3,"file":"MCPSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/mcp/MCPSidebar.tsx"],"names":[],"mappings":"AAuQA,eAAO,MAAM,UAAU,8CAmSrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActionToolBox.d.ts","sourceRoot":"","sources":["../../../src/components/messages/ActionToolBox.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA8JnD,UAAU,kBAAkB;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CA4PnE"}
1
+ {"version":3,"file":"ActionToolBox.d.ts","sourceRoot":"","sources":["../../../src/components/messages/ActionToolBox.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA+JnD,UAAU,kBAAkB;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CAqQnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"CompactActivityGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/CompactActivityGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,oBAAoB,EAEzB,MAAM,mBAAmB,CAAC;AAM3B,UAAU,yBAAyB;IAClC,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,EACpC,OAAO,EACP,aAAa,EACb,QAAQ,EACR,SAAS,GACT,EAAE,yBAAyB,2CAiP3B"}
1
+ {"version":3,"file":"CompactActivityGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/CompactActivityGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,oBAAoB,EAEzB,MAAM,mBAAmB,CAAC;AAO3B,UAAU,yBAAyB;IAClC,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,EACpC,OAAO,EACP,aAAa,EACb,QAAQ,EACR,SAAS,GACT,EAAE,yBAAyB,2CA0P3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessagePartItem.d.ts","sourceRoot":"","sources":["../../../src/components/messages/MessagePartItem.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAI1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA6HnD,UAAU,oBAAoB;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,4DAke3B,CAAC"}
1
+ {"version":3,"file":"MessagePartItem.d.ts","sourceRoot":"","sources":["../../../src/components/messages/MessagePartItem.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAI1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA8HnD,UAAU,oBAAoB;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,4DA8e3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageThread.d.ts","sourceRoot":"","sources":["../../../src/components/messages/MessageThread.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAWxD,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;AAED,eAAO,MAAM,aAAa,0DA+WxB,CAAC"}
1
+ {"version":3,"file":"MessageThread.d.ts","sourceRoot":"","sources":["../../../src/components/messages/MessageThread.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAaxD,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;AAED,eAAO,MAAM,aAAa,0DA+XxB,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;AAM/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;AAeD,eAAO,MAAM,gBAAgB,6DA6S5B,CAAC"}
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;AAM/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;AAeD,eAAO,MAAM,gBAAgB,6DA8S5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DiffView.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/DiffView.tsx"],"names":[],"mappings":"AAMA,UAAU,aAAa;IACtB,KAAK,EAAE,MAAM,CAAC;CACd;AAgKD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,aAAa,2CAuHhD"}
1
+ {"version":3,"file":"DiffView.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/renderers/DiffView.tsx"],"names":[],"mappings":"AAMA,UAAU,aAAa;IACtB,KAAK,EAAE,MAAM,CAAC;CACd;AAgKD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,aAAa,2CAyHhD"}
@@ -0,0 +1,9 @@
1
+ import { type ReactNode } from 'react';
2
+ export type ThreadDensity = 'normal' | 'compact';
3
+ export declare function ThreadDensityProvider({ density, children, }: {
4
+ density: ThreadDensity;
5
+ children: ReactNode;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ export declare function useThreadDensity(): ThreadDensity;
8
+ export declare function useIsCompactThread(): boolean;
9
+ //# sourceMappingURL=threadDensity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threadDensity.d.ts","sourceRoot":"","sources":["../../../src/components/messages/threadDensity.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAIjD,wBAAgB,qBAAqB,CAAC,EACrC,OAAO,EACP,QAAQ,GACR,EAAE;IACF,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACpB,2CAMA;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C"}
@@ -1,5 +1,7 @@
1
+ import { type CSSProperties } from 'react';
1
2
  interface OnboardingModalProps {
2
3
  hideHeader?: boolean;
4
+ style?: CSSProperties;
3
5
  }
4
6
  export declare const OnboardingModal: import("react").NamedExoticComponent<OnboardingModalProps>;
5
7
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"OnboardingModal.d.ts","sourceRoot":"","sources":["../../../src/components/onboarding/OnboardingModal.tsx"],"names":[],"mappings":"AAOA,UAAU,oBAAoB;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,eAAe,4DAqE1B,CAAC"}
1
+ {"version":3,"file":"OnboardingModal.d.ts","sourceRoot":"","sources":["../../../src/components/onboarding/OnboardingModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAO5D,UAAU,oBAAoB;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,4DA2F1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderSetupStep.d.ts","sourceRoot":"","sources":["../../../../src/components/onboarding/steps/ProviderSetupStep.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProviderSetupStep.d.ts","sourceRoot":"","sources":["../../../../src/components/onboarding/steps/ProviderSetupStep.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,6 @@
1
- export declare const SessionFilesDiffPanel: import("react").NamedExoticComponent<object>;
1
+ interface SessionFilesDiffPanelProps {
2
+ mode?: 'overlay' | 'pane';
3
+ }
4
+ export declare const SessionFilesDiffPanel: import("react").NamedExoticComponent<SessionFilesDiffPanelProps>;
5
+ export {};
2
6
  //# sourceMappingURL=SessionFilesDiffPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionFilesDiffPanel.d.ts","sourceRoot":"","sources":["../../../src/components/session-files/SessionFilesDiffPanel.tsx"],"names":[],"mappings":"AA2VA,eAAO,MAAM,qBAAqB,8CAgNhC,CAAC"}
1
+ {"version":3,"file":"SessionFilesDiffPanel.d.ts","sourceRoot":"","sources":["../../../src/components/session-files/SessionFilesDiffPanel.tsx"],"names":[],"mappings":"AA0VA,UAAU,0BAA0B;IACnC,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,qBAAqB,kEAsMhC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"LeanHeader.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/LeanHeader.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAuB/C,UAAU,eAAe;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,UAAU,CAAC,EAC1B,OAAO,EACP,SAAS,EACT,YAAY,EACZ,mBAAmB,GACnB,EAAE,eAAe,2CA0KjB"}
1
+ {"version":3,"file":"LeanHeader.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/LeanHeader.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAuB/C,UAAU,eAAe;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,UAAU,CAAC,EAC1B,OAAO,EACP,SAAS,EACT,YAAY,EACZ,mBAAmB,GACnB,EAAE,eAAe,2CA+KjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionHeader.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/SessionHeader.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAiB/C,UAAU,kBAAkB;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,aAAa,CAAC,EAC7B,OAAO,EACP,mBAAmB,GACnB,EAAE,kBAAkB,2CAkLpB"}
1
+ {"version":3,"file":"SessionHeader.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/SessionHeader.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAkB/C,UAAU,kBAAkB;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,aAAa,CAAC,EAC7B,OAAO,EACP,mBAAmB,GACnB,EAAE,kBAAkB,2CAgMpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/settings/SettingsSidebar.tsx"],"names":[],"mappings":"AA4pBA,eAAO,MAAM,eAAe,8CA+L1B,CAAC"}
1
+ {"version":3,"file":"SettingsSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/settings/SettingsSidebar.tsx"],"names":[],"mappings":"AAoqBA,eAAO,MAAM,eAAe,8CA+L1B,CAAC"}
@@ -1,2 +1,6 @@
1
- export declare const SkillViewerPanel: import("react").NamedExoticComponent<object>;
1
+ interface SkillViewerPanelProps {
2
+ mode?: 'overlay' | 'pane';
3
+ }
4
+ export declare const SkillViewerPanel: import("react").NamedExoticComponent<SkillViewerPanelProps>;
5
+ export {};
2
6
  //# sourceMappingURL=SkillViewerPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SkillViewerPanel.d.ts","sourceRoot":"","sources":["../../../src/components/skills/SkillViewerPanel.tsx"],"names":[],"mappings":"AAgDA,eAAO,MAAM,gBAAgB,8CA4G3B,CAAC"}
1
+ {"version":3,"file":"SkillViewerPanel.d.ts","sourceRoot":"","sources":["../../../src/components/skills/SkillViewerPanel.tsx"],"names":[],"mappings":"AAgDA,UAAU,qBAAqB;IAC9B,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,gBAAgB,6DAuH3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SkillsSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/skills/SkillsSidebar.tsx"],"names":[],"mappings":"AA4CA,eAAO,MAAM,aAAa,8CAsOxB,CAAC"}
1
+ {"version":3,"file":"SkillsSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/skills/SkillsSidebar.tsx"],"names":[],"mappings":"AA8CA,eAAO,MAAM,aAAa,8CAkRxB,CAAC"}
@@ -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,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAChC;AAUD,wBAAgB,KAAK,CAAC,EACrB,MAAM,EACN,OAAO,EACP,KAAK,EACL,QAAQ,EACR,eAAsB,EACtB,oBAA2B,EAC3B,aAAoB,EACpB,QAAe,EACf,QAAkB,GAClB,EAAE,UAAU,2CA4FZ"}
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,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAChC;AAUD,wBAAgB,KAAK,CAAC,EACrB,MAAM,EACN,OAAO,EACP,KAAK,EACL,QAAQ,EACR,eAAsB,EACtB,oBAA2B,EAC3B,aAAoB,EACpB,QAAe,EACf,QAAkB,GAClB,EAAE,UAAU,2CA4GZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Toaster.tsx"],"names":[],"mappings":"AAwEA,wBAAgB,OAAO,4CAYtB"}
1
+ {"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Toaster.tsx"],"names":[],"mappings":"AAyKA,wBAAgB,OAAO,4CAYtB"}
@@ -26,4 +26,5 @@ export * from './useProviderUsage';
26
26
  export * from './useFileBrowser';
27
27
  export * from './useMCP';
28
28
  export * from './useSkills';
29
+ export * from './useContainerWidth';
29
30
  //# sourceMappingURL=index.d.ts.map
@@ -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,mBAAmB,CAAC;AAClC,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"}
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,mBAAmB,CAAC;AAClC,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"}
@@ -1007,6 +1007,55 @@ function useUpdateDefaults() {
1007
1007
  }
1008
1008
  // src/hooks/usePreferences.ts
1009
1009
  import { useCallback, useMemo, useSyncExternalStore } from "react";
1010
+
1011
+ // src/lib/platform.ts
1012
+ function getPlatformWindow() {
1013
+ if (typeof window === "undefined")
1014
+ return null;
1015
+ return window;
1016
+ }
1017
+ function openPlatformUrl(url) {
1018
+ const win = getPlatformWindow();
1019
+ if (!win?.OTTO_OPEN_URL)
1020
+ return false;
1021
+ win.OTTO_OPEN_URL(url);
1022
+ return true;
1023
+ }
1024
+ function showPlatformNotification(notification) {
1025
+ const win = getPlatformWindow();
1026
+ if (!win?.OTTO_SHOW_NOTIFICATION)
1027
+ return false;
1028
+ win.OTTO_SHOW_NOTIFICATION(notification);
1029
+ return true;
1030
+ }
1031
+ function listPlatformSystemFonts() {
1032
+ const win = getPlatformWindow();
1033
+ if (!win?.OTTO_LIST_SYSTEM_FONTS)
1034
+ return null;
1035
+ return win.OTTO_LIST_SYSTEM_FONTS();
1036
+ }
1037
+ function notifyPlatformFontFamilyChanged(fontFamily) {
1038
+ const win = getPlatformWindow();
1039
+ if (!win?.OTTO_SET_DESKTOP_FONT)
1040
+ return false;
1041
+ win.OTTO_SET_DESKTOP_FONT(fontFamily);
1042
+ return true;
1043
+ }
1044
+ function openPlatformSession(sessionId) {
1045
+ const win = getPlatformWindow();
1046
+ if (!win?.OTTO_OPEN_SESSION)
1047
+ return false;
1048
+ win.OTTO_OPEN_SESSION(sessionId);
1049
+ return true;
1050
+ }
1051
+ function hasPlatformOpenUrl() {
1052
+ return !!getPlatformWindow()?.OTTO_OPEN_URL;
1053
+ }
1054
+ function hasPlatformSystemFonts() {
1055
+ return !!getPlatformWindow()?.OTTO_LIST_SYSTEM_FONTS;
1056
+ }
1057
+
1058
+ // src/hooks/usePreferences.ts
1010
1059
  var STORAGE_KEY = "otto-preferences";
1011
1060
  var DEFAULT_FONT_FAMILY = "IBM Plex Mono";
1012
1061
  var DEFAULT_STORED_PREFERENCES = {
@@ -1027,6 +1076,9 @@ function applyFontFamily(fontFamily) {
1027
1076
  }
1028
1077
  document.documentElement.style.setProperty("--otto-font-family", cssFontFamily(fontFamily));
1029
1078
  document.documentElement.dataset.ottoFontFamily = fontFamily;
1079
+ if (notifyPlatformFontFamilyChanged(fontFamily)) {
1080
+ return;
1081
+ }
1030
1082
  if (window.self !== window.top) {
1031
1083
  window.parent.postMessage({ type: "otto-font-family-changed", fontFamily }, "*");
1032
1084
  }
@@ -2712,6 +2764,18 @@ toast.successWithAction = (message, action, duration = 6000) => {
2712
2764
  return id;
2713
2765
  };
2714
2766
 
2767
+ // src/lib/open-url.ts
2768
+ function openUrl(url) {
2769
+ if (openPlatformUrl(url)) {
2770
+ return;
2771
+ }
2772
+ if (window.self !== window.top) {
2773
+ window.parent.postMessage({ type: "otto-open-url", url }, "*");
2774
+ } else {
2775
+ window.open(url, "_blank", "noopener,noreferrer");
2776
+ }
2777
+ }
2778
+
2715
2779
  // src/hooks/useClientEvents.ts
2716
2780
  function toastTypeForLevel(level) {
2717
2781
  if (level === "success")
@@ -2720,39 +2784,87 @@ function toastTypeForLevel(level) {
2720
2784
  return "error";
2721
2785
  return "default";
2722
2786
  }
2787
+ function notificationTargetHref(notification) {
2788
+ return notification.action?.href ?? (notification.sessionId ? `/sessions/${encodeURIComponent(notification.sessionId)}` : undefined);
2789
+ }
2790
+ function openNotificationTarget(notification) {
2791
+ const href = notificationTargetHref(notification);
2792
+ if (!href || typeof window === "undefined")
2793
+ return;
2794
+ if (notification.sessionId && openPlatformSession(notification.sessionId)) {
2795
+ return;
2796
+ }
2797
+ if (href.startsWith("/")) {
2798
+ window.location.href = href;
2799
+ return;
2800
+ }
2801
+ openUrl(href);
2802
+ }
2803
+ function requestNotificationPermission() {
2804
+ return new Promise((resolve) => {
2805
+ let settled = false;
2806
+ const finish = (permission) => {
2807
+ if (settled)
2808
+ return;
2809
+ settled = true;
2810
+ setTimeout(() => resolve(permission ?? Notification.permission), 100);
2811
+ };
2812
+ try {
2813
+ const result = Notification.requestPermission(finish);
2814
+ if (result && typeof result.then === "function") {
2815
+ result.then(finish).catch(() => finish());
2816
+ }
2817
+ } catch {
2818
+ finish();
2819
+ }
2820
+ setTimeout(() => finish(), 1500);
2821
+ });
2822
+ }
2723
2823
  function showInAppNotification(notification) {
2724
2824
  const message = notification.body ? `${notification.title}: ${notification.body}` : notification.title;
2725
- if (notification.action) {
2825
+ const targetHref = notificationTargetHref(notification);
2826
+ if (targetHref) {
2726
2827
  const id = toast(message, toastTypeForLevel(notification.level), 6000);
2727
- useToastStore.getState().updateToast(id, { action: notification.action });
2828
+ useToastStore.getState().updateToast(id, {
2829
+ activateActionOnClick: true,
2830
+ action: notification.action ? {
2831
+ ...notification.action,
2832
+ onClick: () => openNotificationTarget(notification)
2833
+ } : {
2834
+ label: "Open session",
2835
+ onClick: () => openNotificationTarget(notification)
2836
+ }
2837
+ });
2728
2838
  return;
2729
2839
  }
2730
2840
  toast(message, toastTypeForLevel(notification.level), 5000);
2731
2841
  }
2732
2842
  function sendBrowserNotification(notification) {
2733
2843
  if (typeof window === "undefined")
2734
- return;
2844
+ return false;
2845
+ if (showPlatformNotification(notification))
2846
+ return true;
2735
2847
  if (window.parent && window.parent !== window) {
2736
2848
  const message = {
2737
2849
  type: "otto-notification",
2738
2850
  notification
2739
2851
  };
2740
2852
  window.parent.postMessage(message, "*");
2741
- return;
2853
+ return true;
2742
2854
  }
2743
2855
  if (!("Notification" in window) || Notification.permission !== "granted")
2744
- return;
2856
+ return false;
2745
2857
  const browserNotification = new Notification(notification.title, {
2746
2858
  body: notification.body,
2747
- tag: notification.id
2859
+ tag: notification.id,
2860
+ data: { href: notificationTargetHref(notification) }
2748
2861
  });
2749
2862
  browserNotification.onclick = () => {
2750
2863
  window.focus();
2751
- if (notification.sessionId) {
2752
- window.location.href = `/sessions/${notification.sessionId}`;
2753
- }
2864
+ openNotificationTarget(notification);
2754
2865
  browserNotification.close();
2755
2866
  };
2867
+ return true;
2756
2868
  }
2757
2869
  function updateSessionStatusInCache(queryClient, status) {
2758
2870
  queryClient.setQueryData(sessionsQueryKey, (old) => {
@@ -2787,6 +2899,56 @@ async function requestLocalhostAccess(baseUrl) {
2787
2899
  throw new Error(`Local API returned ${response.status}`);
2788
2900
  }
2789
2901
  }
2902
+ var localAccessToastIds = new Map;
2903
+ var localAccessChecksInFlight = new Set;
2904
+ function localAccessStorageKey(baseUrl) {
2905
+ return `otto-local-access-confirmed:${baseUrl}`;
2906
+ }
2907
+ function hasConfirmedLocalAccess(baseUrl) {
2908
+ try {
2909
+ return window.localStorage.getItem(localAccessStorageKey(baseUrl)) === "1";
2910
+ } catch {
2911
+ return false;
2912
+ }
2913
+ }
2914
+ function markLocalAccessConfirmed(baseUrl) {
2915
+ try {
2916
+ window.localStorage.setItem(localAccessStorageKey(baseUrl), "1");
2917
+ } catch {}
2918
+ }
2919
+ async function maybeShowLocalAccessToast(baseUrl) {
2920
+ if (hasPlatformOpenUrl())
2921
+ return;
2922
+ if (!isLocalApiUrl(baseUrl) || hasConfirmedLocalAccess(baseUrl))
2923
+ return;
2924
+ if (localAccessToastIds.has(baseUrl) || localAccessChecksInFlight.has(baseUrl)) {
2925
+ return;
2926
+ }
2927
+ localAccessChecksInFlight.add(baseUrl);
2928
+ try {
2929
+ await requestLocalhostAccess(baseUrl);
2930
+ markLocalAccessConfirmed(baseUrl);
2931
+ return;
2932
+ } catch {} finally {
2933
+ localAccessChecksInFlight.delete(baseUrl);
2934
+ }
2935
+ if (localAccessToastIds.has(baseUrl))
2936
+ return;
2937
+ const id = toast("Safari may need permission to access the local otto server.", "default", 0);
2938
+ localAccessToastIds.set(baseUrl, id);
2939
+ useToastStore.getState().updateToast(id, {
2940
+ action: {
2941
+ label: "Allow access",
2942
+ onClick: async () => {
2943
+ await requestLocalhostAccess(baseUrl);
2944
+ markLocalAccessConfirmed(baseUrl);
2945
+ useToastStore.getState().removeToast(id);
2946
+ localAccessToastIds.delete(baseUrl);
2947
+ toast.success("Local otto server access confirmed.");
2948
+ }
2949
+ }
2950
+ });
2951
+ }
2790
2952
  function useClientEvents(activeSessionId) {
2791
2953
  const queryClient = useQueryClient6();
2792
2954
  const activeSessionIdRef = useRef2(activeSessionId);
@@ -2809,8 +2971,9 @@ function useClientEvents(activeSessionId) {
2809
2971
  action: {
2810
2972
  label: "Enable",
2811
2973
  onClick: async () => {
2812
- const permission = await Notification.requestPermission();
2813
- if (permission === "granted") {
2974
+ const permission = await requestNotificationPermission();
2975
+ const currentPermission = Notification.permission;
2976
+ if (permission === "granted" || currentPermission === "granted") {
2814
2977
  toast.success("Browser notifications enabled.");
2815
2978
  } else {
2816
2979
  toast.info("Browser notifications were not enabled.");
@@ -2821,7 +2984,6 @@ function useClientEvents(activeSessionId) {
2821
2984
  }, []);
2822
2985
  useEffect2(() => {
2823
2986
  const controller = new AbortController;
2824
- let hasShownLocalAccessToast = false;
2825
2987
  const baseUrl = getBaseUrl();
2826
2988
  createClientEventsStream({
2827
2989
  baseUrl,
@@ -2847,29 +3009,21 @@ function useClientEvents(activeSessionId) {
2847
3009
  }
2848
3010
  if (event.event === "notification") {
2849
3011
  const notification = payload;
2850
- showInAppNotification(notification);
2851
3012
  const isActiveVisibleSession = notification.sessionId === activeSessionIdRef.current && document.visibilityState === "visible";
3013
+ const isSessionNotification = notification.source === "session" || !!notification.sessionId;
3014
+ let sentSystemNotification = false;
2852
3015
  if (!isActiveVisibleSession) {
2853
- sendBrowserNotification(notification);
3016
+ sentSystemNotification = sendBrowserNotification(notification);
3017
+ }
3018
+ if (!isSessionNotification || !sentSystemNotification && !isActiveVisibleSession) {
3019
+ showInAppNotification(notification);
2854
3020
  }
2855
3021
  }
2856
3022
  },
2857
3023
  onError: (error) => {
2858
3024
  if (!controller.signal.aborted) {
2859
3025
  console.error("[client-events] Stream error:", error);
2860
- if (!hasShownLocalAccessToast && isLocalApiUrl(baseUrl)) {
2861
- hasShownLocalAccessToast = true;
2862
- const id = toast("Safari may need permission to access the local otto server.", "default", 0);
2863
- useToastStore.getState().updateToast(id, {
2864
- action: {
2865
- label: "Allow access",
2866
- onClick: async () => {
2867
- await requestLocalhostAccess(baseUrl);
2868
- toast.success("Local otto server access confirmed.");
2869
- }
2870
- }
2871
- });
2872
- }
3026
+ maybeShowLocalAccessToast(baseUrl);
2873
3027
  }
2874
3028
  }
2875
3029
  }, controller.signal);
@@ -4626,6 +4780,11 @@ function useAuthStatus() {
4626
4780
  }, []);
4627
4781
  const startOAuth = useCallback8((provider, mode) => {
4628
4782
  const url = apiClient.getOAuthStartUrl(provider, mode);
4783
+ if (openPlatformUrl(url)) {
4784
+ snapshotConfiguredProviders();
4785
+ setOauthPolling(true);
4786
+ return null;
4787
+ }
4629
4788
  if (isInIframe) {
4630
4789
  snapshotConfiguredProviders();
4631
4790
  window.parent.postMessage({ type: "otto-open-url", url }, "*");
@@ -4641,6 +4800,11 @@ function useAuthStatus() {
4641
4800
  }, [snapshotConfiguredProviders]);
4642
4801
  const startOAuthManual = useCallback8(async (provider, mode) => {
4643
4802
  const { url, sessionId } = await apiClient.getOAuthUrl(provider, mode);
4803
+ if (openPlatformUrl(url)) {
4804
+ snapshotConfiguredProviders();
4805
+ setOauthPolling(true);
4806
+ return { popup: null, sessionId };
4807
+ }
4644
4808
  if (isInIframe) {
4645
4809
  snapshotConfiguredProviders();
4646
4810
  window.parent.postMessage({ type: "otto-open-url", url }, "*");
@@ -5276,6 +5440,22 @@ function useSkillFileContent(name, filePath) {
5276
5440
  enabled: !!name && !!filePath
5277
5441
  });
5278
5442
  }
5443
+ // src/hooks/useContainerWidth.ts
5444
+ import { useEffect as useEffect17, useState as useState6 } from "react";
5445
+ function useContainerWidth(ref) {
5446
+ const [width, setWidth] = useState6(0);
5447
+ useEffect17(() => {
5448
+ const el = ref.current;
5449
+ if (!el)
5450
+ return;
5451
+ const update = () => setWidth(el.clientWidth);
5452
+ update();
5453
+ const observer = new ResizeObserver(() => update());
5454
+ observer.observe(el);
5455
+ return () => observer.disconnect();
5456
+ }, [ref]);
5457
+ return width;
5458
+ }
5279
5459
  export {
5280
5460
  useWorkingDirectory,
5281
5461
  useUpdateSkillsConfig,
@@ -5344,6 +5524,7 @@ export {
5344
5524
  useCreateResearchSession,
5345
5525
  useCreateBranch,
5346
5526
  useCopilotDevicePoller,
5527
+ useContainerWidth,
5347
5528
  useConfig,
5348
5529
  useCommitChanges,
5349
5530
  useClientEvents,
@@ -5356,4 +5537,4 @@ export {
5356
5537
  sessionsQueryKey
5357
5538
  };
5358
5539
 
5359
- //# debugId=45CFEFDB9295F3FD64756E2164756E21
5540
+ //# debugId=8234074EBB3B7D1264756E2164756E21