@ottocode/web-sdk 0.1.311 → 0.1.313

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.
@@ -1 +1 @@
1
- {"version":3,"file":"useAgents.d.ts","sourceRoot":"","sources":["../../src/hooks/useAgents.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG9E,YAAY,EACX,WAAW,EACX,UAAU,EACV,gBAAgB,GAChB,MAAM,0BAA0B,CAAC;AAElC,UAAU,gBAAgB;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB;;;;;;;;mBAqIm2qC,CAAC;0BAAwC,CAAC;;sBAA8D,CAAC;oBAAyC,CAAC;;;sBAA2F,CAAC;oBAAyC,CAAC;;;sBAA0F,CAAC;oBAAyC,CAAC;;gBAAoD,CAAC;aAA2B,CAAC;;;;;;UA1G/4rC;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;;;;;;;;mBAwGgwwC,CAAC;0BAAwC,CAAC;;sBAA8D,CAAC;oBAAyC,CAAC;;;sBAA2F,CAAC;oBAAyC,CAAC;;;sBAA0F,CAAC;oBAAyC,CAAC;;gBAAoD,CAAC;aAA2B,CAAC;;;;;UA9F/xxC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB;;;;;;;;mBAwFk2qC,CAAC;0BAAwC,CAAC;;sBAA8D,CAAC;oBAAyC,CAAC;;;sBAA2F,CAAC;oBAAyC,CAAC;;;sBAA0F,CAAC;oBAAyC,CAAC;;gBAAoD,CAAC;aAA2B,CAAC;;;;;;UAjF/4rC;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,gBAAqB;;;mBA+Eyl2C,CAAC;;;kBAA6R,CAAC;gBAA0D,CAAC;aAA4B,CAAC;;;UArE5g3C;AAED,wBAAgB,cAAc;;;;;;;;mBAmE2h0C,CAAC;0BAAwC,CAAC;;sBAA8D,CAAC;oBAAyC,CAAC;;;sBAA2F,CAAC;oBAAyC,CAAC;;;sBAA0F,CAAC;oBAAyC,CAAC;;gBAAoD,CAAC;aAA2B,CAAC;;;;;;UAhEhg1C,MAAM;WAAS,gBAAgB;YAQtE;AAED,wBAAgB,cAAc;;;;;;;;;;mBAsDm7tC,CAAC;0BAAwC,CAAC;;sBAA8D,CAAC;oBAAyC,CAAC;;;sBAA2F,CAAC;oBAAyC,CAAC;;;sBAA0F,CAAC;oBAAyC,CAAC;;gBAAoD,CAAC;aAA2B,CAAC;;;;;;UA7Cv7uC,MAAM;YACJ,OAAO,GAAG,QAAQ;YAmB5B;AAED,wBAAgB,kBAAkB;;;;;;oBAuBo8E,CAAC;kBAAsD,CAAC;qBAA2B,CAAC;sBAA4B,CAAC;aAAmE,CAAC;eAA8B,CAAC;qBAA2B,CAAC;kBAAwB,CAAC;kBAAuB,CAAC;qBAA2B,CAAC;wBAA8B,CAAC;kCAAwC,CAAC;mBAA+B,CAAC;;2BAb14F;AAED,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACnC,MAAM,CAQR"}
1
+ {"version":3,"file":"useAgents.d.ts","sourceRoot":"","sources":["../../src/hooks/useAgents.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG9E,YAAY,EACX,WAAW,EACX,UAAU,EACV,gBAAgB,GAChB,MAAM,0BAA0B,CAAC;AAElC,UAAU,gBAAgB;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB;;;;;;;;mBAqI0qrC,CAAC;0BAAwC,CAAC;;sBAA8D,CAAC;oBAAyC,CAAC;;;sBAA2F,CAAC;oBAAyC,CAAC;;;sBAA0F,CAAC;oBAAyC,CAAC;;gBAAoD,CAAC;aAA2B,CAAC;;;;;;UA1GttsC;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;;;;;;;;mBAwGukxC,CAAC;0BAAwC,CAAC;;sBAA8D,CAAC;oBAAyC,CAAC;;;sBAA2F,CAAC;oBAAyC,CAAC;;;sBAA0F,CAAC;oBAAyC,CAAC;;gBAAoD,CAAC;aAA2B,CAAC;;;;;UA9FtmyC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB;;;;;;;;mBAwFyqrC,CAAC;0BAAwC,CAAC;;sBAA8D,CAAC;oBAAyC,CAAC;;;sBAA2F,CAAC;oBAAyC,CAAC;;;sBAA0F,CAAC;oBAAyC,CAAC;;gBAAoD,CAAC;aAA2B,CAAC;;;;;;UAjFttsC;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,gBAAqB;;;mBA+Eg62C,CAAC;;;kBAA6R,CAAC;gBAA0D,CAAC;aAA4B,CAAC;;;UArEn13C;AAED,wBAAgB,cAAc;;;;;;;;mBAmEk20C,CAAC;0BAAwC,CAAC;;sBAA8D,CAAC;oBAAyC,CAAC;;;sBAA2F,CAAC;oBAAyC,CAAC;;;sBAA0F,CAAC;oBAAyC,CAAC;;gBAAoD,CAAC;aAA2B,CAAC;;;;;;UAhEv01C,MAAM;WAAS,gBAAgB;YAQtE;AAED,wBAAgB,cAAc;;;;;;;;;;mBAsD0vuC,CAAC;0BAAwC,CAAC;;sBAA8D,CAAC;oBAAyC,CAAC;;;sBAA2F,CAAC;oBAAyC,CAAC;;;sBAA0F,CAAC;oBAAyC,CAAC;;gBAAoD,CAAC;aAA2B,CAAC;;;;;;UA7C9vvC,MAAM;YACJ,OAAO,GAAG,QAAQ;YAmB5B;AAED,wBAAgB,kBAAkB;;;;;;oBAuBo8E,CAAC;kBAAsD,CAAC;qBAA2B,CAAC;sBAA4B,CAAC;aAAmE,CAAC;eAA8B,CAAC;qBAA2B,CAAC;kBAAwB,CAAC;kBAAuB,CAAC;qBAA2B,CAAC;wBAA8B,CAAC;kCAAwC,CAAC;mBAA+B,CAAC;;2BAb14F;AAED,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACnC,MAAM,CAQR"}
@@ -76,6 +76,11 @@ export declare function useAuthStatus(): {
76
76
  status: "complete" | "pending" | "error";
77
77
  error?: string;
78
78
  }>;
79
+ startKimiDeviceFlow: any;
80
+ pollKimiDeviceFlow: (sessionId: string) => Promise<{
81
+ status: "complete" | "pending" | "error";
82
+ error?: string;
83
+ }>;
79
84
  getCopilotAuthMethods: any;
80
85
  saveCopilotToken: (token: string) => Promise<{
81
86
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"useAuthStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useAuthStatus.ts"],"names":[],"mappings":"AAQA,wBAAgB,aAAa;;;;;;;;qBAkB1B,CAAD;;;;gBAEK,CAAC;;;yBACkC,CAAC;4BAC7B,CAAC;kBAEZ,CAAF;;qBAAgD,CAAC;;;;;;;;;wBAMxB,CAAC;;;;;;;;;+BAoCN,MAAM;;;;4BAmBR,MAAM,UAAU,MAAM;;;;8BAoB1B;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,EACV,mBAAmB,GACnB,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,QAAQ,CAAC;QACZ,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,aAAa,EAAE,OAAO,CAAC;KACvB;;;;+BA6BgB,MAAM;;;;;2BAoDZ,MAAM,SAAS,MAAM;iCA4Bf,MAAM,SAAS,MAAM;;;;kCA+BrB,MAAM,QAAQ,MAAM,aAAa,MAAM;;sCAqEtC,MAAM;;;;;uCAXN,MAAM;;;;;8BAsBV,MAAM;;;;;;;;;;;;;;;;;EA8DrB"}
1
+ {"version":3,"file":"useAuthStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useAuthStatus.ts"],"names":[],"mappings":"AAQA,wBAAgB,aAAa;;;;;;;;qBAoBX,CAAC;;;;gBACsB,CAAC;;;yBAGF,CAAC;4BAA+B,CAAC;kBACrD,CAAC;;qBAGJ,CAAC;;;;;;;;;wBAKP,CAAC;;;;;;;;;+BAiCS,MAAM;;;;4BAmBR,MAAM,UAAU,MAAM;;;;8BAoB1B;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,EACV,mBAAmB,GACnB,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,QAAQ,CAAC;QACZ,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,aAAa,EAAE,OAAO,CAAC;KACvB;;;;+BA6BgB,MAAM;;;;;2BAoDZ,MAAM,SAAS,MAAM;iCA4Bf,MAAM,SAAS,MAAM;;;;kCA+BrB,MAAM,QAAQ,MAAM,aAAa,MAAM;;sCAqEtC,MAAM;;;;;uCAXN,MAAM;;;;;oCAsBN,MAAM;;;;;8BAWV,MAAM;;;;;;;;;;;;;;;;;EAgErB"}
@@ -77,7 +77,7 @@ export declare function useUpdateDefaults(): import("@tanstack/react-query").Use
77
77
  fullWidthContent?: boolean;
78
78
  autoCompactThresholdTokens?: number | null;
79
79
  ottoEnabled?: boolean;
80
- scope?: "global" | "local";
80
+ scope?: "global";
81
81
  }, {
82
82
  previousConfig: {
83
83
  agents: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"useConfig.d.ts","sourceRoot":"","sources":["../../src/hooks/useConfig.ts"],"names":[],"mappings":"AAKA,wBAAgB,SAAS;;;;;;;oBAoDpB,CAAD;kBACoB,CAAC;qBAA4B,CAAA;sBAE5C,CAAC;aAEwB,CAAC;eACzB,CAAC;qBACI,CAAA;kBACO,CAAC;kBACX,CAAC;qBAGV,CAAH;wBAEwB,CAAC;kCAEK,CAAC;mBACV,CAAC;;UA/DrB;AAED,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM;;;;gBAsEm+C,CAAC;qBAA2B,CAAC;cAAoB,CAAC;kBAAwB,CAAC;YAAkB,CAAC;qBAA2B,CAAC;uBAA4B,CAAC;iBAAsB,CAAC;yBAA+B,CAAC;;;;;;UAhE3tD;AAED,wBAAgB,YAAY,0FAK3B;AAED,wBAAgB,iBAAiB;;;;;;oBAuDquJ,CAAC;kBAAsD,CAAC;qBAA2B,CAAC;sBAA4B,CAAC;aAAmE,CAAC;eAA8B,CAAC;qBAA2B,CAAC;kBAAwB,CAAC;kBAAuB,CAAC;qBAA2B,CAAC;wBAA8B,CAAC;kCAAwC,CAAC;mBAA+B,CAAC;;;YAlDhqK,MAAM;eACH,MAAM;YACT,MAAM;mBACC,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,MAAM;iBACvC,OAAO;oBACJ,OAAO;qBACN,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO;YAChE,OAAO,GAAG,MAAM;cACd,OAAO;oBACD,OAAO;iBACV,MAAM;iBACN,OAAO;oBACJ,OAAO;uBACJ,OAAO;iCACG,MAAM,GAAG,IAAI;kBAC5B,OAAO;YACb,QAAQ,GAAG,OAAO;;;;;;;;;wBAQxB,CAAD;sBACoB,CAAC;yBAA4B,CAAA;0BAE5C,CAAC;iBAEwB,CAAC;mBACzB,CAAC;yBACI,CAAA;sBACO,CAAC;sBACX,CAAC;yBAGV,CAAH;4BAEwB,CAAC;sCAEK,CAAC;uBACV,CAAC;;;GAQrB"}
1
+ {"version":3,"file":"useConfig.d.ts","sourceRoot":"","sources":["../../src/hooks/useConfig.ts"],"names":[],"mappings":"AAKA,wBAAgB,SAAS;;;;;;;oBAoDZ,CAAC;kBACoB,CAAC;qBAA2B,CAAC;sBAE5C,CAAC;aAEwB,CAAC;eACzB,CAAC;qBAEd,CAAC;kBAAwB,CAAC;kBACX,CAAC;qBAKpB,CAAC;wBAEF,CAAF;kCACG,CAAH;mBAAgC,CAAA;;UA/D/B;AAED,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM;;;;gBAsE6+C,CAAC;qBAA2B,CAAC;cAAoB,CAAC;kBAAwB,CAAC;YAAkB,CAAC;qBAA2B,CAAC;uBAA4B,CAAC;iBAAsB,CAAC;yBAA+B,CAAC;;;;;;UAhEruD;AAED,wBAAgB,YAAY,0FAK3B;AAED,wBAAgB,iBAAiB;;;;;;oBAuD+uJ,CAAC;kBAAsD,CAAC;qBAA2B,CAAC;sBAA4B,CAAC;aAAmE,CAAC;eAA8B,CAAC;qBAA2B,CAAC;kBAAwB,CAAC;kBAAuB,CAAC;qBAA2B,CAAC;wBAA8B,CAAC;kCAAwC,CAAC;mBAA+B,CAAC;;;YAlD1qK,MAAM;eACH,MAAM;YACT,MAAM;mBACC,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,MAAM;iBACvC,OAAO;oBACJ,OAAO;qBACN,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO;YAChE,OAAO,GAAG,MAAM;cACd,OAAO;oBACD,OAAO;iBACV,MAAM;iBACN,OAAO;oBACJ,OAAO;uBACJ,OAAO;iCACG,MAAM,GAAG,IAAI;kBAC5B,OAAO;YACb,QAAQ;;;;;;;;;wBAQN,CAAC;sBACoB,CAAC;yBAA2B,CAAC;0BAE5C,CAAC;iBAEwB,CAAC;mBACzB,CAAC;yBAEd,CAAC;sBAAwB,CAAC;sBACX,CAAC;yBAKpB,CAAC;4BAEF,CAAF;sCACG,CAAH;uBAAgC,CAAA;;;GAQ/B"}
@@ -7,7 +7,6 @@ export declare function useUpdateSkillsConfig(): import("@tanstack/react-query")
7
7
  items?: Record<string, {
8
8
  enabled?: boolean;
9
9
  }>;
10
- scope?: "global" | "local";
11
10
  }, unknown>;
12
11
  export declare function useSkillDetail(name: string | null): import("@tanstack/react-query").UseQueryResult<import("../lib/api-client/skills").SkillDetail, Error>;
13
12
  export declare function useSkillFiles(name: string | null): import("@tanstack/react-query").UseQueryResult<{
@@ -1 +1 @@
1
- {"version":3,"file":"useSkills.d.ts","sourceRoot":"","sources":["../../src/hooks/useSkills.ts"],"names":[],"mappings":"AAKA,UAAU,gBAAgB;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,kHAyBvD;AAED,wBAAgB,qBAAqB;cAMxB,OAAO;YACT,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;YACrC,QAAQ,GAAG,OAAO;YAY5B;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,yGASjD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;;UAShD;AAED,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,QAAQ,EAAE,MAAM,GAAG,IAAI;;;UAUvB"}
1
+ {"version":3,"file":"useSkills.d.ts","sourceRoot":"","sources":["../../src/hooks/useSkills.ts"],"names":[],"mappings":"AAKA,UAAU,gBAAgB;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,kHAyBvD;AAED,wBAAgB,qBAAqB;cAMxB,OAAO;YACT,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;YAY/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,yGASjD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;;UAShD;AAED,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,QAAQ,EAAE,MAAM,GAAG,IAAI;;;UAUvB"}
package/dist/index.js CHANGED
@@ -2520,6 +2520,8 @@ import {
2520
2520
  pollOpenAiDeviceFlow as apiPollOpenAiDeviceFlow,
2521
2521
  startCopilotDeviceFlow as apiStartCopilotDeviceFlow,
2522
2522
  pollCopilotDeviceFlow as apiPollCopilotDeviceFlow,
2523
+ startKimiDeviceFlow as apiStartKimiDeviceFlow,
2524
+ pollKimiDeviceFlow as apiPollKimiDeviceFlow,
2523
2525
  getCopilotAuthMethods as apiGetCopilotAuthMethods,
2524
2526
  saveCopilotToken as apiSaveCopilotToken,
2525
2527
  importCopilotTokenFromGh as apiImportCopilotTokenFromGh,
@@ -2626,6 +2628,20 @@ var authMixin = {
2626
2628
  throw new Error(extractErrorMessage(response.error));
2627
2629
  return response.data;
2628
2630
  },
2631
+ async startKimiDeviceFlow() {
2632
+ const response = await apiStartKimiDeviceFlow();
2633
+ if (response.error)
2634
+ throw new Error(extractErrorMessage(response.error));
2635
+ return response.data;
2636
+ },
2637
+ async pollKimiDeviceFlow(sessionId) {
2638
+ const response = await apiPollKimiDeviceFlow({
2639
+ body: { sessionId }
2640
+ });
2641
+ if (response.error)
2642
+ throw new Error(extractErrorMessage(response.error));
2643
+ return response.data;
2644
+ },
2629
2645
  async getCopilotAuthMethods() {
2630
2646
  const response = await apiGetCopilotAuthMethods();
2631
2647
  if (response.error)
@@ -2938,6 +2954,8 @@ class ApiClient {
2938
2954
  pollOpenAIDeviceFlow = authMixin.pollOpenAIDeviceFlow;
2939
2955
  startCopilotDeviceFlow = authMixin.startCopilotDeviceFlow;
2940
2956
  pollCopilotDeviceFlow = authMixin.pollCopilotDeviceFlow;
2957
+ startKimiDeviceFlow = authMixin.startKimiDeviceFlow;
2958
+ pollKimiDeviceFlow = authMixin.pollKimiDeviceFlow;
2941
2959
  getCopilotAuthMethods = authMixin.getCopilotAuthMethods;
2942
2960
  saveCopilotToken = authMixin.saveCopilotToken;
2943
2961
  importCopilotTokenFromGh = authMixin.importCopilotTokenFromGh;
@@ -3924,6 +3942,10 @@ var ottorouterLogo = `<svg width="24" height="24" viewBox="0 0 100 100" fill="no
3924
3942
  var minimaxLogo = `<svg width="24" height="24" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
3925
3943
  <path d="M6 32V12L13 22L20 12V32H17V20L13 26L9 20V32H6ZM22 32V12L29 22L36 12V32H33V20L29 26L25 20V32H22Z" fill="currentColor"/>
3926
3944
  </svg>`;
3945
+ var kimiLogo = `<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
3946
+ <path d="M21.846 0a1.923 1.923 0 110 3.846H20.15a.226.226 0 01-.227-.226V1.923C19.923.861 20.784 0 21.846 0z" fill="currentColor"/>
3947
+ <path d="M11.065 11.199l7.257-7.2c.137-.136.06-.41-.116-.41H14.3a.164.164 0 00-.117.051l-7.82 7.756c-.122.12-.302.013-.302-.179V3.82c0-.127-.083-.23-.185-.23H3.186c-.103 0-.186.103-.186.23V19.77c0 .128.083.23.186.23h2.69c.103 0 .186-.102.186-.23v-3.25c0-.069.025-.135.069-.178l2.424-2.406a.158.158 0 01.205-.023l6.484 4.772a7.677 7.677 0 003.453 1.283c.108.012.2-.095.2-.23v-3.06c0-.117-.07-.212-.164-.227a5.028 5.028 0 01-2.027-.807l-5.613-4.064c-.117-.078-.132-.279-.028-.381z" fill="currentColor"/>
3948
+ </svg>`;
3927
3949
  var opencodeLogo = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
3928
3950
  <path opacity="0.2" d="M19.2002 17.4H8.40017V13.8H15.6002V10.2H19.2002V17.4ZM8.40017 13.8H4.80017V10.2H8.40017V13.8Z" fill="currentColor"/>
3929
3951
  <path d="M8.40005 17.4H19.2001V21H4.80005V13.8H8.40005V17.4ZM15.6001 10.2V13.8H8.40005V10.2H15.6001ZM19.2001 10.2H15.6001V6.6H4.80005V3H19.2001V10.2Z" fill="currentColor"/>
@@ -3948,6 +3970,8 @@ var providerLogos = {
3948
3970
  "zai-coding": zaiLogo,
3949
3971
  ottorouter: ottorouterLogo,
3950
3972
  minimax: minimaxLogo,
3973
+ moonshot: kimiLogo,
3974
+ kimi: kimiLogo,
3951
3975
  opencode: opencodeLogo,
3952
3976
  copilot: copilotLogo
3953
3977
  };
@@ -24654,6 +24678,7 @@ var MessageThread = memo25(function MessageThread2({
24654
24678
  sessionId,
24655
24679
  isGenerating,
24656
24680
  compact = false,
24681
+ responsiveCompact = true,
24657
24682
  disableAutoScroll = false,
24658
24683
  onSelectSession,
24659
24684
  footerBottomPaddingClass: footerBottomPaddingClassOverride
@@ -24665,7 +24690,7 @@ var MessageThread = memo25(function MessageThread2({
24665
24690
  const sessionHeaderRef = useRef23(null);
24666
24691
  const threadRootRef = useRef23(null);
24667
24692
  const threadWidth = useContainerWidth(threadRootRef);
24668
- const density = threadWidth > 0 && threadWidth < 640 ? "compact" : "normal";
24693
+ const density = compact || responsiveCompact && threadWidth > 0 && threadWidth < 640 ? "compact" : "normal";
24669
24694
  const [autoScroll, setAutoScroll] = useState44(true);
24670
24695
  const [isThreadScrolling, setIsThreadScrolling] = useState44(false);
24671
24696
  const autoScrollRef = useRef23(true);
@@ -25943,6 +25968,7 @@ var MessageThreadData = memo28(function MessageThreadData2({
25943
25968
  session,
25944
25969
  isGenerating,
25945
25970
  compact: isOttoThread || preferences.compactThread,
25971
+ responsiveCompact: preferences.compactThread,
25946
25972
  onSelectSession,
25947
25973
  footerBottomPaddingClass
25948
25974
  });
@@ -32613,6 +32639,13 @@ function useAuthStatus() {
32613
32639
  }
32614
32640
  return result;
32615
32641
  }, [fetchAuthStatus]);
32642
+ const pollKimiDeviceFlow = useCallback42(async (sessionId) => {
32643
+ const result = await apiClient.pollKimiDeviceFlow(sessionId);
32644
+ if (result.status === "complete") {
32645
+ await fetchAuthStatus();
32646
+ }
32647
+ return result;
32648
+ }, [fetchAuthStatus]);
32616
32649
  const saveCopilotToken = useCallback42(async (token) => {
32617
32650
  setLoading(true);
32618
32651
  setError(null);
@@ -32662,6 +32695,8 @@ function useAuthStatus() {
32662
32695
  pollOpenAIDeviceFlow,
32663
32696
  startCopilotDeviceFlow: apiClient.startCopilotDeviceFlow.bind(apiClient),
32664
32697
  pollCopilotDeviceFlow,
32698
+ startKimiDeviceFlow: apiClient.startKimiDeviceFlow.bind(apiClient),
32699
+ pollKimiDeviceFlow,
32665
32700
  getCopilotAuthMethods: apiClient.getCopilotAuthMethods.bind(apiClient),
32666
32701
  saveCopilotToken,
32667
32702
  importCopilotTokenFromGh,
@@ -41329,6 +41364,8 @@ var ProviderSetupStep = memo75(function ProviderSetupStep2({
41329
41364
  hideHeader = false,
41330
41365
  onStartCopilotDeviceFlow,
41331
41366
  onPollCopilotDeviceFlow,
41367
+ onStartKimiDeviceFlow,
41368
+ onPollKimiDeviceFlow,
41332
41369
  onGetCopilotAuthMethods,
41333
41370
  onSaveCopilotToken,
41334
41371
  onImportCopilotTokenFromGh,
@@ -41380,6 +41417,12 @@ var ProviderSetupStep = memo75(function ProviderSetupStep2({
41380
41417
  const [copilotCodeCopied, setCopilotCodeCopied] = useState69(false);
41381
41418
  const [copilotModalOpen, setCopilotModalOpen] = useState69(false);
41382
41419
  const [copilotLoading, setCopilotLoading] = useState69(false);
41420
+ const [kimiDevice, setKimiDevice] = useState69(null);
41421
+ const [kimiPolling, setKimiPolling] = useState69(false);
41422
+ const [kimiError, setKimiError] = useState69(null);
41423
+ const [kimiCodeCopied, setKimiCodeCopied] = useState69(false);
41424
+ const [kimiModalOpen, setKimiModalOpen] = useState69(false);
41425
+ const [kimiLoading, setKimiLoading] = useState69(false);
41383
41426
  const copilotPollRef = useRef49(undefined);
41384
41427
  const copilotCancelledRef = useRef49(false);
41385
41428
  const copilotPollFnRef = useRef49(onPollCopilotDeviceFlow);
@@ -41388,6 +41431,10 @@ var ProviderSetupStep = memo75(function ProviderSetupStep2({
41388
41431
  const openAICancelledRef = useRef49(false);
41389
41432
  const openAIPollFnRef = useRef49(onPollOpenAIDeviceFlow);
41390
41433
  openAIPollFnRef.current = onPollOpenAIDeviceFlow;
41434
+ const kimiPollRef = useRef49(undefined);
41435
+ const kimiCancelledRef = useRef49(false);
41436
+ const kimiPollFnRef = useRef49(onPollKimiDeviceFlow);
41437
+ kimiPollFnRef.current = onPollKimiDeviceFlow;
41391
41438
  const balance = useOttoRouterStore((s) => s.balance);
41392
41439
  const usdcBalance = useOttoRouterStore((s) => s.usdcBalance);
41393
41440
  const payg = useOttoRouterStore((s) => s.payg);
@@ -41518,6 +41565,51 @@ var ProviderSetupStep = memo75(function ProviderSetupStep2({
41518
41565
  clearTimeout(timeout);
41519
41566
  };
41520
41567
  }, [openAIPolling, openAIDevice]);
41568
+ useEffect71(() => {
41569
+ if (!kimiPolling || !kimiDevice || !kimiPollFnRef.current)
41570
+ return;
41571
+ kimiCancelledRef.current = false;
41572
+ const pollIntervalMs = Math.max((kimiDevice.interval || 5) * 1000 + 2000, 7000);
41573
+ const schedulePoll = () => {
41574
+ kimiPollRef.current = setTimeout(async () => {
41575
+ if (kimiCancelledRef.current)
41576
+ return;
41577
+ try {
41578
+ const pollFn = kimiPollFnRef.current;
41579
+ if (!pollFn)
41580
+ return;
41581
+ const result = await pollFn(kimiDevice.sessionId);
41582
+ if (kimiCancelledRef.current)
41583
+ return;
41584
+ if (result.status === "complete") {
41585
+ setKimiDevice(null);
41586
+ setKimiPolling(false);
41587
+ setKimiError(null);
41588
+ setKimiModalOpen(false);
41589
+ } else if (result.status === "error") {
41590
+ setKimiError(result.error || "Authorization failed");
41591
+ setKimiPolling(false);
41592
+ } else {
41593
+ schedulePoll();
41594
+ }
41595
+ } catch {
41596
+ if (!kimiCancelledRef.current)
41597
+ schedulePoll();
41598
+ }
41599
+ }, pollIntervalMs);
41600
+ };
41601
+ schedulePoll();
41602
+ const timeout = setTimeout(() => {
41603
+ setKimiPolling(false);
41604
+ setKimiError("Authorization timed out. Please try again.");
41605
+ }, 15 * 60 * 1000);
41606
+ return () => {
41607
+ kimiCancelledRef.current = true;
41608
+ if (kimiPollRef.current)
41609
+ clearTimeout(kimiPollRef.current);
41610
+ clearTimeout(timeout);
41611
+ };
41612
+ }, [kimiPolling, kimiDevice]);
41521
41613
  const handleCopy = async () => {
41522
41614
  if (authStatus.ottorouter.publicKey) {
41523
41615
  await navigator.clipboard.writeText(authStatus.ottorouter.publicKey);
@@ -41654,6 +41746,19 @@ var ProviderSetupStep = memo75(function ProviderSetupStep2({
41654
41746
  setOpenAILoading(false);
41655
41747
  });
41656
41748
  };
41749
+ const startKimiDeviceAuthorization = () => {
41750
+ if (!onStartKimiDeviceFlow)
41751
+ return;
41752
+ setKimiLoading(true);
41753
+ setKimiError(null);
41754
+ onStartKimiDeviceFlow().then((data) => {
41755
+ setKimiDevice(data);
41756
+ setKimiLoading(false);
41757
+ }).catch((err) => {
41758
+ setKimiError(err instanceof Error ? err.message : "Failed to start device flow");
41759
+ setKimiLoading(false);
41760
+ });
41761
+ };
41657
41762
  const handleStartOAuth = async (providerId, mode) => {
41658
41763
  if (providerId === "anthropic") {
41659
41764
  setOauthSession({ provider: providerId, sessionId: null, mode });
@@ -41664,6 +41769,13 @@ var ProviderSetupStep = memo75(function ProviderSetupStep2({
41664
41769
  setOpenAICodeCopied(false);
41665
41770
  setOpenAIAuthMode("choice");
41666
41771
  setOpenAIModalOpen(true);
41772
+ } else if (providerId === "moonshot" && onStartKimiDeviceFlow) {
41773
+ setKimiPolling(false);
41774
+ setKimiDevice(null);
41775
+ setKimiError(null);
41776
+ setKimiCodeCopied(false);
41777
+ setKimiModalOpen(true);
41778
+ startKimiDeviceAuthorization();
41667
41779
  } else if (providerId === "copilot") {
41668
41780
  setCopilotAuthMode("oauth");
41669
41781
  setCopilotTokenInput("");
@@ -41746,6 +41858,32 @@ var ProviderSetupStep = memo75(function ProviderSetupStep2({
41746
41858
  openAIPollRef.current = undefined;
41747
41859
  }
41748
41860
  };
41861
+ const handleKimiOpenAuth = () => {
41862
+ if (!kimiDevice)
41863
+ return;
41864
+ openUrl(kimiDevice.verificationUri);
41865
+ setKimiPolling(true);
41866
+ };
41867
+ const handleKimiCopyCode = async () => {
41868
+ if (!kimiDevice)
41869
+ return;
41870
+ await navigator.clipboard.writeText(kimiDevice.userCode);
41871
+ setKimiCodeCopied(true);
41872
+ setTimeout(() => setKimiCodeCopied(false), 2000);
41873
+ };
41874
+ const handleCancelKimi = () => {
41875
+ setKimiDevice(null);
41876
+ setKimiPolling(false);
41877
+ setKimiError(null);
41878
+ setKimiCodeCopied(false);
41879
+ setKimiModalOpen(false);
41880
+ setKimiLoading(false);
41881
+ kimiCancelledRef.current = true;
41882
+ if (kimiPollRef.current) {
41883
+ clearTimeout(kimiPollRef.current);
41884
+ kimiPollRef.current = undefined;
41885
+ }
41886
+ };
41749
41887
  const handleCopilotOpenGithub = () => {
41750
41888
  if (!copilotDevice)
41751
41889
  return;
@@ -41890,6 +42028,23 @@ var ProviderSetupStep = memo75(function ProviderSetupStep2({
41890
42028
  }
41891
42029
  return;
41892
42030
  }
42031
+ if (kimiModalOpen) {
42032
+ markHandled();
42033
+ if (!kimiLoading) {
42034
+ setKimiDevice(null);
42035
+ setKimiPolling(false);
42036
+ setKimiError(null);
42037
+ setKimiCodeCopied(false);
42038
+ setKimiModalOpen(false);
42039
+ setKimiLoading(false);
42040
+ kimiCancelledRef.current = true;
42041
+ if (kimiPollRef.current) {
42042
+ clearTimeout(kimiPollRef.current);
42043
+ kimiPollRef.current = undefined;
42044
+ }
42045
+ }
42046
+ return;
42047
+ }
41893
42048
  if (addingProvider) {
41894
42049
  markHandled();
41895
42050
  setAddingProvider(null);
@@ -41916,6 +42071,8 @@ var ProviderSetupStep = memo75(function ProviderSetupStep2({
41916
42071
  isImportingWallet,
41917
42072
  isImportModalOpen,
41918
42073
  isOpeningPopup,
42074
+ kimiLoading,
42075
+ kimiModalOpen,
41919
42076
  oauthSession
41920
42077
  ]);
41921
42078
  const handleImportWallet = async () => {
@@ -43007,6 +43164,103 @@ var ProviderSetupStep = memo75(function ProviderSetupStep2({
43007
43164
  ]
43008
43165
  })
43009
43166
  }),
43167
+ kimiModalOpen && /* @__PURE__ */ jsx154("div", {
43168
+ "data-otto-nested-modal": "true",
43169
+ className: "fixed inset-0 z-[9999] flex items-center justify-center bg-black/60 backdrop-blur-sm",
43170
+ children: /* @__PURE__ */ jsxs134("div", {
43171
+ className: "bg-background border border-border rounded-xl w-full max-w-lg mx-6 shadow-2xl",
43172
+ children: [
43173
+ /* @__PURE__ */ jsxs134("div", {
43174
+ className: "flex items-center gap-3 p-6 border-b border-border",
43175
+ children: [
43176
+ /* @__PURE__ */ jsx154(ProviderLogo, {
43177
+ provider: "moonshot",
43178
+ size: 24
43179
+ }),
43180
+ /* @__PURE__ */ jsx154("h3", {
43181
+ className: "text-lg font-semibold",
43182
+ children: "Connect Kimi"
43183
+ })
43184
+ ]
43185
+ }),
43186
+ /* @__PURE__ */ jsxs134("div", {
43187
+ className: "p-6 space-y-4",
43188
+ children: [
43189
+ /* @__PURE__ */ jsx154("p", {
43190
+ className: "text-sm text-muted-foreground",
43191
+ children: "Open the Kimi sign-in page, then enter this one-time code. This works from remote browsers, tunnels, and SSH sessions."
43192
+ }),
43193
+ /* @__PURE__ */ jsx154("div", {
43194
+ className: "flex items-center justify-center gap-3",
43195
+ children: kimiLoading ? /* @__PURE__ */ jsx154("div", {
43196
+ className: "bg-muted px-6 py-3 rounded-lg animate-pulse",
43197
+ children: /* @__PURE__ */ jsx154("div", {
43198
+ className: "h-9 w-48 bg-muted-foreground/20 rounded"
43199
+ })
43200
+ }) : kimiDevice ? /* @__PURE__ */ jsxs134(Fragment60, {
43201
+ children: [
43202
+ /* @__PURE__ */ jsx154("code", {
43203
+ className: "text-3xl font-mono font-bold tracking-widest text-foreground bg-muted px-6 py-3 rounded-lg select-all",
43204
+ children: kimiDevice.userCode
43205
+ }),
43206
+ /* @__PURE__ */ jsx154("button", {
43207
+ type: "button",
43208
+ onClick: handleKimiCopyCode,
43209
+ className: "p-2 text-muted-foreground hover:text-foreground transition-colors",
43210
+ children: kimiCodeCopied ? /* @__PURE__ */ jsx154(Check17, {
43211
+ className: "w-5 h-5 text-green-500"
43212
+ }) : /* @__PURE__ */ jsx154(Copy5, {
43213
+ className: "w-5 h-5"
43214
+ })
43215
+ })
43216
+ ]
43217
+ }) : null
43218
+ }),
43219
+ kimiError && /* @__PURE__ */ jsx154("p", {
43220
+ className: "text-sm text-red-500 text-center",
43221
+ children: kimiError
43222
+ }),
43223
+ kimiPolling && /* @__PURE__ */ jsxs134("div", {
43224
+ className: "flex items-center justify-center gap-2 text-sm text-muted-foreground",
43225
+ children: [
43226
+ /* @__PURE__ */ jsx154(StableSpinner, {
43227
+ title: "Waiting for Kimi authorization"
43228
+ }),
43229
+ "Waiting for authorization..."
43230
+ ]
43231
+ }),
43232
+ /* @__PURE__ */ jsxs134("div", {
43233
+ className: "flex gap-3",
43234
+ children: [
43235
+ /* @__PURE__ */ jsx154("button", {
43236
+ type: "button",
43237
+ onClick: handleCancelKimi,
43238
+ className: "flex-1 h-11 px-4 bg-transparent border border-border text-foreground rounded-lg font-medium hover:bg-muted/50 transition-colors",
43239
+ children: "Cancel"
43240
+ }),
43241
+ /* @__PURE__ */ jsx154("button", {
43242
+ type: "button",
43243
+ onClick: handleKimiOpenAuth,
43244
+ disabled: kimiPolling || kimiLoading,
43245
+ className: "flex-1 h-11 px-4 bg-foreground text-background rounded-lg font-medium hover:bg-foreground/90 transition-colors disabled:opacity-50 flex items-center justify-center gap-2",
43246
+ children: kimiPolling || kimiLoading ? /* @__PURE__ */ jsx154(StableSpinner, {
43247
+ title: "Opening Kimi"
43248
+ }) : /* @__PURE__ */ jsxs134(Fragment60, {
43249
+ children: [
43250
+ "Open Kimi",
43251
+ /* @__PURE__ */ jsx154(ExternalLink13, {
43252
+ className: "w-4 h-4"
43253
+ })
43254
+ ]
43255
+ })
43256
+ })
43257
+ ]
43258
+ })
43259
+ ]
43260
+ })
43261
+ ]
43262
+ })
43263
+ }),
43010
43264
  copilotModalOpen && /* @__PURE__ */ jsx154("div", {
43011
43265
  "data-otto-nested-modal": "true",
43012
43266
  className: "fixed inset-0 z-[9999] flex items-center justify-center bg-black/60 backdrop-blur-sm",
@@ -43571,6 +43825,8 @@ var OnboardingModal = memo77(function OnboardingModal2({
43571
43825
  pollOpenAIDeviceFlow,
43572
43826
  startCopilotDeviceFlow,
43573
43827
  pollCopilotDeviceFlow,
43828
+ startKimiDeviceFlow,
43829
+ pollKimiDeviceFlow,
43574
43830
  getCopilotAuthMethods,
43575
43831
  saveCopilotToken,
43576
43832
  importCopilotTokenFromGh,
@@ -43644,6 +43900,8 @@ var OnboardingModal = memo77(function OnboardingModal2({
43644
43900
  hideHeader,
43645
43901
  onStartCopilotDeviceFlow: startCopilotDeviceFlow,
43646
43902
  onPollCopilotDeviceFlow: pollCopilotDeviceFlow,
43903
+ onStartKimiDeviceFlow: startKimiDeviceFlow,
43904
+ onPollKimiDeviceFlow: pollKimiDeviceFlow,
43647
43905
  onGetCopilotAuthMethods: getCopilotAuthMethods,
43648
43906
  onSaveCopilotToken: saveCopilotToken,
43649
43907
  onImportCopilotTokenFromGh: importCopilotTokenFromGh,
@@ -45986,4 +46244,4 @@ export {
45986
46244
  API_BASE_URL
45987
46245
  };
45988
46246
 
45989
- //# debugId=B8EC32AE2B38DC2A64756E2164756E21
46247
+ //# debugId=6E2D30DF16FF7E9C64756E2164756E21