@openhands/agent-canvas 1.0.0-beta.9 → 1.0.0-rc.1

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 (31) hide show
  1. package/README.md +2 -2
  2. package/README.windows.md +2 -2
  3. package/build/assets/{analytics-consent-form-modal-CmWcFlc6.js → analytics-consent-form-modal-DxkThW4K.js} +1 -1
  4. package/build/assets/{home-TrU0fLgG.js → home-CWw845Rz.js} +1 -1
  5. package/build/assets/llm-settings-CAnFYAEG.js +1 -0
  6. package/build/assets/{llm-settings-C4R4HMUO.js → llm-settings-DotqpmCF.js} +1 -1
  7. package/build/assets/{manifest-8c2efa8a.js → manifest-61ec2d68.js} +1 -1
  8. package/build/assets/model-selector-CZOi4V7r.js +1 -0
  9. package/build/assets/{onboarding-DLr9jbKH.js → onboarding-CPCKYvFh.js} +1 -1
  10. package/build/assets/{root-BietmyRa.js → root-CklXEh3W.js} +1 -1
  11. package/build/assets/{root-layout-BgPi-t57.js → root-layout-BCA_X8XL.js} +2 -2
  12. package/build/assets/{settings-modal-nJYxCsyp.js → settings-modal-DdntdOGP.js} +1 -1
  13. package/build/assets/telemetry-fQFd-8V3.js +2 -0
  14. package/build/index.html +3 -3
  15. package/dist/api/config-service/config-service.api.cjs +1 -1
  16. package/dist/api/config-service/config-service.api.cjs.map +1 -1
  17. package/dist/api/config-service/config-service.api.d.ts +12 -0
  18. package/dist/api/config-service/config-service.api.js +55 -18
  19. package/dist/api/config-service/config-service.api.js.map +1 -1
  20. package/dist/hooks/query/use-verified-models.cjs +1 -1
  21. package/dist/hooks/query/use-verified-models.cjs.map +1 -1
  22. package/dist/hooks/query/use-verified-models.js +7 -6
  23. package/dist/hooks/query/use-verified-models.js.map +1 -1
  24. package/dist/package.cjs +1 -1
  25. package/dist/package.cjs.map +1 -1
  26. package/dist/package.js +1 -1
  27. package/dist/package.js.map +1 -1
  28. package/package.json +1 -1
  29. package/build/assets/llm-settings-Dq3w2cob.js +0 -1
  30. package/build/assets/model-selector-DoL0CL0_.js +0 -1
  31. package/build/assets/telemetry-3piyXm5H.js +0 -2
@@ -1,45 +1,82 @@
1
- import { LLMMetadataClient as e } from "../../node_modules/@openhands/typescript-client/dist/client/llm-client.js";
2
- import { getAgentServerClientOptions as t } from "../agent-server-client-options.js";
1
+ import { getActiveBackend as e } from "../backend-registry/active-store.js";
2
+ import { LLMMetadataClient as t } from "../../node_modules/@openhands/typescript-client/dist/client/llm-client.js";
3
+ import { getAgentServerClientOptions as n } from "../agent-server-client-options.js";
4
+ import { callCloudProxy as r } from "../cloud/proxy.js";
3
5
  //#region src/api/config-service/config-service.api.ts
4
- function n(e, t) {
6
+ function i(e, t) {
5
7
  if (!t) return e;
6
8
  let n = t.toLowerCase();
7
9
  return e.filter((e) => e.name.toLowerCase().includes(n));
8
10
  }
9
- function r(e, t) {
11
+ function a(e, t) {
10
12
  return t === void 0 ? e : e.filter((e) => e.verified === t);
11
13
  }
12
- function i(e, t) {
14
+ function o(e, t) {
13
15
  return !t || t <= 0 ? e : e.slice(0, t);
14
16
  }
15
- var a = class {
16
- static async searchModels(a = {}, o) {
17
- let s = new e(t()), c = o === void 0 ? s.getVerifiedModels() : Promise.resolve(o), [l, u] = await Promise.all([s.getModels(), c]), d = a.provider__eq ?? null, f = new Set(d ? u?.[d] ?? [] : []), p = [...f].map((e) => ({
18
- provider: d,
17
+ function s(e) {
18
+ let t = new URLSearchParams();
19
+ for (let [n, r] of Object.entries(e)) r !== void 0 && t.set(n, String(r));
20
+ let n = t.toString();
21
+ return n ? `?${n}` : "";
22
+ }
23
+ var c = class {
24
+ static async searchModels(c = {}, l) {
25
+ let u = e();
26
+ if (u.backend.kind === "cloud") {
27
+ let e = s({
28
+ page_id: c.page_id,
29
+ limit: c.limit,
30
+ query: c.query,
31
+ verified__eq: c.verified__eq,
32
+ provider__eq: c.provider__eq
33
+ });
34
+ return r({
35
+ backend: u.backend,
36
+ method: "GET",
37
+ path: `/api/v1/config/models/search${e}`
38
+ });
39
+ }
40
+ let d = new t(n()), f = l === void 0 ? d.getVerifiedModels() : Promise.resolve(l), [p, m] = await Promise.all([d.getModels(), f]), h = c.provider__eq ?? null, g = new Set(h ? m?.[h] ?? [] : []), _ = [...g].map((e) => ({
41
+ provider: h,
19
42
  name: e,
20
43
  verified: !0
21
- })), m = d ? (l ?? []).filter((e) => e.startsWith(`${d}/`)).map((e) => e.slice(d.length + 1)).filter((e) => e.length > 0 && !f.has(e)).map((e) => ({
22
- provider: d,
44
+ })), v = h ? (p ?? []).filter((e) => e.startsWith(`${h}/`)).map((e) => e.slice(h.length + 1)).filter((e) => e.length > 0 && !g.has(e)).map((e) => ({
45
+ provider: h,
23
46
  name: e,
24
47
  verified: !1
25
48
  })) : [];
26
49
  return {
27
- items: i(r(n([...p, ...m], a.query), a.verified__eq), a.limit),
50
+ items: o(a(i([..._, ...v], c.query), c.verified__eq), c.limit),
28
51
  next_page_id: null
29
52
  };
30
53
  }
31
- static async searchProviders(a = {}, o) {
32
- let s = new e(t()), c = o === void 0 ? s.getVerifiedModels() : Promise.resolve(o), [l, u] = await Promise.all([s.getProviders(), c]), d = new Set(Object.keys(u ?? {}));
54
+ static async searchProviders(c = {}, l) {
55
+ let u = e();
56
+ if (u.backend.kind === "cloud") {
57
+ let e = s({
58
+ page_id: c.page_id,
59
+ limit: c.limit,
60
+ query: c.query,
61
+ verified__eq: c.verified__eq
62
+ });
63
+ return r({
64
+ backend: u.backend,
65
+ method: "GET",
66
+ path: `/api/v1/config/providers/search${e}`
67
+ });
68
+ }
69
+ let d = new t(n()), f = l === void 0 ? d.getVerifiedModels() : Promise.resolve(l), [p, m] = await Promise.all([d.getProviders(), f]), h = new Set(Object.keys(m ?? {}));
33
70
  return {
34
- items: i(r(n([...new Set([...d, ...l ?? []])].map((e) => ({
71
+ items: o(a(i([...new Set([...h, ...p ?? []])].map((e) => ({
35
72
  name: e,
36
- verified: d.has(e)
37
- })), a.query), a.verified__eq), a.limit),
73
+ verified: h.has(e)
74
+ })), c.query), c.verified__eq), c.limit),
38
75
  next_page_id: null
39
76
  };
40
77
  }
41
78
  };
42
79
  //#endregion
43
- export { a as default };
80
+ export { c as default };
44
81
 
45
82
  //# sourceMappingURL=config-service.api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-service.api.js","names":[],"sources":["../../../src/api/config-service/config-service.api.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"../agent-server-client-options\";\nimport type {\n LLMModel,\n LLMModelPage,\n LLMProvider,\n ProviderPage,\n SearchModelsParams,\n SearchProvidersParams,\n} from \"./config-service.types\";\n\nfunction filterByQuery<T extends { name: string }>(\n items: T[],\n query?: string,\n): T[] {\n if (!query) {\n return items;\n }\n\n const normalizedQuery = query.toLowerCase();\n return items.filter((item) =>\n item.name.toLowerCase().includes(normalizedQuery),\n );\n}\n\nfunction filterByVerified<T extends { verified: boolean }>(\n items: T[],\n verified?: boolean,\n): T[] {\n if (verified === undefined) {\n return items;\n }\n\n return items.filter((item) => item.verified === verified);\n}\n\nfunction limitItems<T>(items: T[], limit?: number): T[] {\n if (!limit || limit <= 0) {\n return items;\n }\n\n return items.slice(0, limit);\n}\n\nclass ConfigService {\n static async searchModels(\n params: SearchModelsParams = {},\n verifiedByProvider?: Record<string, string[]>,\n ): Promise<LLMModelPage> {\n const llmClient = new LLMMetadataClient(getAgentServerClientOptions());\n const verifiedFetch =\n verifiedByProvider !== undefined\n ? Promise.resolve(verifiedByProvider)\n : llmClient.getVerifiedModels();\n const [models, verifiedMap] = await Promise.all([\n llmClient.getModels(),\n verifiedFetch,\n ]);\n\n const provider = params.provider__eq ?? null;\n const verifiedNames = new Set(\n provider ? (verifiedMap?.[provider] ?? []) : [],\n );\n const verifiedItems: LLMModel[] = [...verifiedNames].map((name) => ({\n provider,\n name,\n verified: true,\n }));\n\n const prefixedItems: LLMModel[] = provider\n ? (models ?? [])\n .filter((model) => model.startsWith(`${provider}/`))\n .map((model) => model.slice(provider.length + 1))\n .filter((name) => name.length > 0 && !verifiedNames.has(name))\n .map((name) => ({\n provider,\n name,\n verified: false,\n }))\n : [];\n\n const items = limitItems(\n filterByVerified(\n filterByQuery([...verifiedItems, ...prefixedItems], params.query),\n params.verified__eq,\n ),\n params.limit,\n );\n\n return {\n items,\n next_page_id: null,\n };\n }\n\n static async searchProviders(\n params: SearchProvidersParams = {},\n verifiedByProvider?: Record<string, string[]>,\n ): Promise<ProviderPage> {\n const llmClient = new LLMMetadataClient(getAgentServerClientOptions());\n const verifiedFetch =\n verifiedByProvider !== undefined\n ? Promise.resolve(verifiedByProvider)\n : llmClient.getVerifiedModels();\n const [providers, verifiedMap] = await Promise.all([\n llmClient.getProviders(),\n verifiedFetch,\n ]);\n\n const verifiedProviders = new Set(Object.keys(verifiedMap ?? {}));\n const names = new Set<string>([...verifiedProviders, ...(providers ?? [])]);\n const providerItems: LLMProvider[] = [...names].map((name) => ({\n name,\n verified: verifiedProviders.has(name),\n }));\n\n const items = limitItems(\n filterByVerified(\n filterByQuery(providerItems, params.query),\n params.verified__eq,\n ),\n params.limit,\n );\n\n return {\n items,\n next_page_id: null,\n };\n }\n}\n\nexport default ConfigService;\n"],"mappings":";;;AAWA,SAAS,EACP,GACA,GACK;AACL,KAAI,CAAC,EACH,QAAO;CAGT,IAAM,IAAkB,EAAM,aAAa;AAC3C,QAAO,EAAM,QAAQ,MACnB,EAAK,KAAK,aAAa,CAAC,SAAS,EAAgB,CAClD;;AAGH,SAAS,EACP,GACA,GACK;AAKL,QAJI,MAAa,KAAA,IACR,IAGF,EAAM,QAAQ,MAAS,EAAK,aAAa,EAAS;;AAG3D,SAAS,EAAc,GAAY,GAAqB;AAKtD,QAJI,CAAC,KAAS,KAAS,IACd,IAGF,EAAM,MAAM,GAAG,EAAM;;AAG9B,IAAM,IAAN,MAAoB;CAClB,aAAa,aACX,IAA6B,EAAE,EAC/B,GACuB;EACvB,IAAM,IAAY,IAAI,EAAkB,GAA6B,CAAC,EAChE,IACJ,MAAuB,KAAA,IAEnB,EAAU,mBAAmB,GAD7B,QAAQ,QAAQ,EAAmB,EAEnC,CAAC,GAAQ,KAAe,MAAM,QAAQ,IAAI,CAC9C,EAAU,WAAW,EACrB,EACD,CAAC,EAEI,IAAW,EAAO,gBAAgB,MAClC,IAAgB,IAAI,IACxB,IAAY,IAAc,MAAa,EAAE,GAAI,EAAE,CAChD,EACK,IAA4B,CAAC,GAAG,EAAc,CAAC,KAAK,OAAU;GAClE;GACA;GACA,UAAU;GACX,EAAE,EAEG,IAA4B,KAC7B,KAAU,EAAE,EACV,QAAQ,MAAU,EAAM,WAAW,GAAG,EAAS,GAAG,CAAC,CACnD,KAAK,MAAU,EAAM,MAAM,EAAS,SAAS,EAAE,CAAC,CAChD,QAAQ,MAAS,EAAK,SAAS,KAAK,CAAC,EAAc,IAAI,EAAK,CAAC,CAC7D,KAAK,OAAU;GACd;GACA;GACA,UAAU;GACX,EAAE,GACL,EAAE;AAUN,SAAO;GACL,OATY,EACZ,EACE,EAAc,CAAC,GAAG,GAAe,GAAG,EAAc,EAAE,EAAO,MAAM,EACjE,EAAO,aACR,EACD,EAAO,MAIP;GACA,cAAc;GACf;;CAGH,aAAa,gBACX,IAAgC,EAAE,EAClC,GACuB;EACvB,IAAM,IAAY,IAAI,EAAkB,GAA6B,CAAC,EAChE,IACJ,MAAuB,KAAA,IAEnB,EAAU,mBAAmB,GAD7B,QAAQ,QAAQ,EAAmB,EAEnC,CAAC,GAAW,KAAe,MAAM,QAAQ,IAAI,CACjD,EAAU,cAAc,EACxB,EACD,CAAC,EAEI,IAAoB,IAAI,IAAI,OAAO,KAAK,KAAe,EAAE,CAAC,CAAC;AAejE,SAAO;GACL,OATY,EACZ,EACE,EAPiC,CAAC,GAAG,IADvB,IAAY,CAAC,GAAG,GAAmB,GAAI,KAAa,EAAE,CAAE,CACjC,CAAM,CAAC,KAAK,OAAU;IAC7D;IACA,UAAU,EAAkB,IAAI,EAAK;IACtC,EAIiB,EAAe,EAAO,MAAM,EAC1C,EAAO,aACR,EACD,EAAO,MAIP;GACA,cAAc;GACf"}
1
+ {"version":3,"file":"config-service.api.js","names":[],"sources":["../../../src/api/config-service/config-service.api.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"../agent-server-client-options\";\nimport { getActiveBackend } from \"../backend-registry/active-store\";\nimport { callCloudProxy } from \"../cloud/proxy\";\nimport type {\n LLMModel,\n LLMModelPage,\n LLMProvider,\n ProviderPage,\n SearchModelsParams,\n SearchProvidersParams,\n} from \"./config-service.types\";\n\nfunction filterByQuery<T extends { name: string }>(\n items: T[],\n query?: string,\n): T[] {\n if (!query) {\n return items;\n }\n\n const normalizedQuery = query.toLowerCase();\n return items.filter((item) =>\n item.name.toLowerCase().includes(normalizedQuery),\n );\n}\n\nfunction filterByVerified<T extends { verified: boolean }>(\n items: T[],\n verified?: boolean,\n): T[] {\n if (verified === undefined) {\n return items;\n }\n\n return items.filter((item) => item.verified === verified);\n}\n\nfunction limitItems<T>(items: T[], limit?: number): T[] {\n if (!limit || limit <= 0) {\n return items;\n }\n\n return items.slice(0, limit);\n}\n\nfunction buildCloudQueryString(\n params: Record<string, string | number | boolean | undefined>,\n): string {\n const qs = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined) qs.set(key, String(value));\n }\n const str = qs.toString();\n return str ? `?${str}` : \"\";\n}\n\nclass ConfigService {\n /**\n * @param verifiedByProvider - Pre-fetched verified-models map used by the\n * local reconstruction path. Ignored for cloud backends, which call\n * `/api/v1/config/models/search` directly (verified status is embedded in\n * each returned item).\n */\n static async searchModels(\n params: SearchModelsParams = {},\n verifiedByProvider?: Record<string, string[]>,\n ): Promise<LLMModelPage> {\n const active = getActiveBackend();\n\n if (active.backend.kind === \"cloud\") {\n // Cloud exposes /api/v1/config/models/search which returns LLMModelPage directly.\n // verifiedByProvider is not needed — the cloud API embeds verified status natively.\n const qs = buildCloudQueryString({\n page_id: params.page_id,\n limit: params.limit,\n query: params.query,\n verified__eq: params.verified__eq,\n provider__eq: params.provider__eq,\n });\n return callCloudProxy<LLMModelPage>({\n backend: active.backend,\n method: \"GET\",\n path: `/api/v1/config/models/search${qs}`,\n });\n }\n\n const llmClient = new LLMMetadataClient(getAgentServerClientOptions());\n const verifiedFetch =\n verifiedByProvider !== undefined\n ? Promise.resolve(verifiedByProvider)\n : llmClient.getVerifiedModels();\n const [models, verifiedMap] = await Promise.all([\n llmClient.getModels(),\n verifiedFetch,\n ]);\n\n const provider = params.provider__eq ?? null;\n const verifiedNames = new Set(\n provider ? (verifiedMap?.[provider] ?? []) : [],\n );\n const verifiedItems: LLMModel[] = [...verifiedNames].map((name) => ({\n provider,\n name,\n verified: true,\n }));\n\n const prefixedItems: LLMModel[] = provider\n ? (models ?? [])\n .filter((model) => model.startsWith(`${provider}/`))\n .map((model) => model.slice(provider.length + 1))\n .filter((name) => name.length > 0 && !verifiedNames.has(name))\n .map((name) => ({\n provider,\n name,\n verified: false,\n }))\n : [];\n\n const items = limitItems(\n filterByVerified(\n filterByQuery([...verifiedItems, ...prefixedItems], params.query),\n params.verified__eq,\n ),\n params.limit,\n );\n\n return { items, next_page_id: null };\n }\n\n /**\n * @param verifiedByProvider - Pre-fetched verified-models map used by the\n * local reconstruction path. Ignored for cloud backends, which call\n * `/api/v1/config/providers/search` directly (verified status is embedded in\n * each returned item).\n */\n static async searchProviders(\n params: SearchProvidersParams = {},\n verifiedByProvider?: Record<string, string[]>,\n ): Promise<ProviderPage> {\n const active = getActiveBackend();\n\n if (active.backend.kind === \"cloud\") {\n // Cloud exposes /api/v1/config/providers/search which returns ProviderPage directly.\n // verifiedByProvider is not needed — the cloud API embeds verified status natively.\n const qs = buildCloudQueryString({\n page_id: params.page_id,\n limit: params.limit,\n query: params.query,\n verified__eq: params.verified__eq,\n });\n return callCloudProxy<ProviderPage>({\n backend: active.backend,\n method: \"GET\",\n path: `/api/v1/config/providers/search${qs}`,\n });\n }\n\n const llmClient = new LLMMetadataClient(getAgentServerClientOptions());\n const verifiedFetch =\n verifiedByProvider !== undefined\n ? Promise.resolve(verifiedByProvider)\n : llmClient.getVerifiedModels();\n const [providers, verifiedMap] = await Promise.all([\n llmClient.getProviders(),\n verifiedFetch,\n ]);\n\n const verifiedProviders = new Set(Object.keys(verifiedMap ?? {}));\n const names = new Set<string>([...verifiedProviders, ...(providers ?? [])]);\n const providerItems: LLMProvider[] = [...names].map((name) => ({\n name,\n verified: verifiedProviders.has(name),\n }));\n\n const items = limitItems(\n filterByVerified(\n filterByQuery(providerItems, params.query),\n params.verified__eq,\n ),\n params.limit,\n );\n\n return { items, next_page_id: null };\n }\n}\n\nexport default ConfigService;\n"],"mappings":";;;;;AAaA,SAAS,EACP,GACA,GACK;AACL,KAAI,CAAC,EACH,QAAO;CAGT,IAAM,IAAkB,EAAM,aAAa;AAC3C,QAAO,EAAM,QAAQ,MACnB,EAAK,KAAK,aAAa,CAAC,SAAS,EAAgB,CAClD;;AAGH,SAAS,EACP,GACA,GACK;AAKL,QAJI,MAAa,KAAA,IACR,IAGF,EAAM,QAAQ,MAAS,EAAK,aAAa,EAAS;;AAG3D,SAAS,EAAc,GAAY,GAAqB;AAKtD,QAJI,CAAC,KAAS,KAAS,IACd,IAGF,EAAM,MAAM,GAAG,EAAM;;AAG9B,SAAS,EACP,GACQ;CACR,IAAM,IAAK,IAAI,iBAAiB;AAChC,MAAK,IAAM,CAAC,GAAK,MAAU,OAAO,QAAQ,EAAO,CAC/C,CAAI,MAAU,KAAA,KAAW,EAAG,IAAI,GAAK,OAAO,EAAM,CAAC;CAErD,IAAM,IAAM,EAAG,UAAU;AACzB,QAAO,IAAM,IAAI,MAAQ;;AAG3B,IAAM,IAAN,MAAoB;CAOlB,aAAa,aACX,IAA6B,EAAE,EAC/B,GACuB;EACvB,IAAM,IAAS,GAAkB;AAEjC,MAAI,EAAO,QAAQ,SAAS,SAAS;GAGnC,IAAM,IAAK,EAAsB;IAC/B,SAAS,EAAO;IAChB,OAAO,EAAO;IACd,OAAO,EAAO;IACd,cAAc,EAAO;IACrB,cAAc,EAAO;IACtB,CAAC;AACF,UAAO,EAA6B;IAClC,SAAS,EAAO;IAChB,QAAQ;IACR,MAAM,+BAA+B;IACtC,CAAC;;EAGJ,IAAM,IAAY,IAAI,EAAkB,GAA6B,CAAC,EAChE,IACJ,MAAuB,KAAA,IAEnB,EAAU,mBAAmB,GAD7B,QAAQ,QAAQ,EAAmB,EAEnC,CAAC,GAAQ,KAAe,MAAM,QAAQ,IAAI,CAC9C,EAAU,WAAW,EACrB,EACD,CAAC,EAEI,IAAW,EAAO,gBAAgB,MAClC,IAAgB,IAAI,IACxB,IAAY,IAAc,MAAa,EAAE,GAAI,EAAE,CAChD,EACK,IAA4B,CAAC,GAAG,EAAc,CAAC,KAAK,OAAU;GAClE;GACA;GACA,UAAU;GACX,EAAE,EAEG,IAA4B,KAC7B,KAAU,EAAE,EACV,QAAQ,MAAU,EAAM,WAAW,GAAG,EAAS,GAAG,CAAC,CACnD,KAAK,MAAU,EAAM,MAAM,EAAS,SAAS,EAAE,CAAC,CAChD,QAAQ,MAAS,EAAK,SAAS,KAAK,CAAC,EAAc,IAAI,EAAK,CAAC,CAC7D,KAAK,OAAU;GACd;GACA;GACA,UAAU;GACX,EAAE,GACL,EAAE;AAUN,SAAO;GAAE,OARK,EACZ,EACE,EAAc,CAAC,GAAG,GAAe,GAAG,EAAc,EAAE,EAAO,MAAM,EACjE,EAAO,aACR,EACD,EAAO,MAGA;GAAO,cAAc;GAAM;;CAStC,aAAa,gBACX,IAAgC,EAAE,EAClC,GACuB;EACvB,IAAM,IAAS,GAAkB;AAEjC,MAAI,EAAO,QAAQ,SAAS,SAAS;GAGnC,IAAM,IAAK,EAAsB;IAC/B,SAAS,EAAO;IAChB,OAAO,EAAO;IACd,OAAO,EAAO;IACd,cAAc,EAAO;IACtB,CAAC;AACF,UAAO,EAA6B;IAClC,SAAS,EAAO;IAChB,QAAQ;IACR,MAAM,kCAAkC;IACzC,CAAC;;EAGJ,IAAM,IAAY,IAAI,EAAkB,GAA6B,CAAC,EAChE,IACJ,MAAuB,KAAA,IAEnB,EAAU,mBAAmB,GAD7B,QAAQ,QAAQ,EAAmB,EAEnC,CAAC,GAAW,KAAe,MAAM,QAAQ,IAAI,CACjD,EAAU,cAAc,EACxB,EACD,CAAC,EAEI,IAAoB,IAAI,IAAI,OAAO,KAAK,KAAe,EAAE,CAAC,CAAC;AAejE,SAAO;GAAE,OARK,EACZ,EACE,EAPiC,CAAC,GAAG,IADvB,IAAY,CAAC,GAAG,GAAmB,GAAI,KAAa,EAAE,CAAE,CACjC,CAAM,CAAC,KAAK,OAAU;IAC7D;IACA,UAAU,EAAkB,IAAI,EAAK;IACtC,EAIiB,EAAe,EAAO,MAAM,EAC1C,EAAO,aACR,EACD,EAAO,MAGA;GAAO,cAAc;GAAM"}
@@ -1,2 +1,2 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../node_modules/@openhands/typescript-client/dist/client/llm-client.cjs`),t=require(`../../api/agent-server-client-options.cjs`);var n=[`config`,`verified-models`],r=1e3*60*5,i=1e3*60*15;async function a(){return await new e.LLMMetadataClient(t.getAgentServerClientOptions()).getVerifiedModels()??{}}exports.VERIFIED_MODELS_GC_TIME=i,exports.VERIFIED_MODELS_QUERY_KEY=n,exports.VERIFIED_MODELS_STALE_TIME=r,exports.fetchVerifiedModelsByProvider=a;
1
+ require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../api/backend-registry/active-store.cjs`),t=require(`../../node_modules/@openhands/typescript-client/dist/client/llm-client.cjs`),n=require(`../../api/agent-server-client-options.cjs`);var r=[`config`,`verified-models`],i=1e3*60*5,a=1e3*60*15;async function o(){return e.getActiveBackend().backend.kind===`cloud`?{}:await new t.LLMMetadataClient(n.getAgentServerClientOptions()).getVerifiedModels()??{}}exports.VERIFIED_MODELS_GC_TIME=a,exports.VERIFIED_MODELS_QUERY_KEY=r,exports.VERIFIED_MODELS_STALE_TIME=i,exports.fetchVerifiedModelsByProvider=o;
2
2
  //# sourceMappingURL=use-verified-models.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-verified-models.cjs","names":[],"sources":["../../../src/hooks/query/use-verified-models.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"#/api/agent-server-client-options\";\n\nexport const VERIFIED_MODELS_QUERY_KEY = [\"config\", \"verified-models\"] as const;\nexport const VERIFIED_MODELS_STALE_TIME = 1000 * 60 * 5;\nexport const VERIFIED_MODELS_GC_TIME = 1000 * 60 * 15;\n\nexport async function fetchVerifiedModelsByProvider(): Promise<\n Record<string, string[]>\n> {\n const client = new LLMMetadataClient(getAgentServerClientOptions());\n return (await client.getVerifiedModels()) ?? {};\n}\n"],"mappings":"qMAGA,IAAa,EAA4B,CAAC,SAAU,kBAAkB,CACzD,EAA6B,IAAO,GAAK,EACzC,EAA0B,IAAO,GAAK,GAEnD,eAAsB,GAEpB,CAEA,OAAQ,MAAM,IADK,EAAA,kBAAkB,EAAA,6BAA6B,CACpD,CAAO,mBAAmB,EAAK,EAAE"}
1
+ {"version":3,"file":"use-verified-models.cjs","names":[],"sources":["../../../src/hooks/query/use-verified-models.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"#/api/agent-server-client-options\";\nimport { getActiveBackend } from \"#/api/backend-registry/active-store\";\n\nexport const VERIFIED_MODELS_QUERY_KEY = [\"config\", \"verified-models\"] as const;\nexport const VERIFIED_MODELS_STALE_TIME = 1000 * 60 * 5;\nexport const VERIFIED_MODELS_GC_TIME = 1000 * 60 * 15;\n\nexport async function fetchVerifiedModelsByProvider(): Promise<\n Record<string, string[]>\n> {\n const active = getActiveBackend();\n if (active.backend.kind === \"cloud\") {\n // Cloud backends use /api/v1/config/providers/search and /api/v1/config/models/search,\n // which return verified status directly on each item. The intermediate\n // verifiedByProvider map is only used by the local ConfigService reconstruction\n // logic, so callers can safely treat this empty object as a no-op for cloud.\n return {};\n }\n const client = new LLMMetadataClient(getAgentServerClientOptions());\n return (await client.getVerifiedModels()) ?? {};\n}\n"],"mappings":"8PAIA,IAAa,EAA4B,CAAC,SAAU,kBAAkB,CACzD,EAA6B,IAAO,GAAK,EACzC,EAA0B,IAAO,GAAK,GAEnD,eAAsB,GAEpB,CAUA,OATe,EAAA,kBACX,CAAO,QAAQ,OAAS,QAKnB,EAAE,CAGH,MAAM,IADK,EAAA,kBAAkB,EAAA,6BAA6B,CACpD,CAAO,mBAAmB,EAAK,EAAE"}
@@ -1,11 +1,12 @@
1
- import { LLMMetadataClient as e } from "../../node_modules/@openhands/typescript-client/dist/client/llm-client.js";
2
- import { getAgentServerClientOptions as t } from "../../api/agent-server-client-options.js";
1
+ import { getActiveBackend as e } from "../../api/backend-registry/active-store.js";
2
+ import { LLMMetadataClient as t } from "../../node_modules/@openhands/typescript-client/dist/client/llm-client.js";
3
+ import { getAgentServerClientOptions as n } from "../../api/agent-server-client-options.js";
3
4
  //#region src/hooks/query/use-verified-models.ts
4
- var n = ["config", "verified-models"], r = 1e3 * 60 * 5, i = 1e3 * 60 * 15;
5
- async function a() {
6
- return await new e(t()).getVerifiedModels() ?? {};
5
+ var r = ["config", "verified-models"], i = 1e3 * 60 * 5, a = 1e3 * 60 * 15;
6
+ async function o() {
7
+ return e().backend.kind === "cloud" ? {} : await new t(n()).getVerifiedModels() ?? {};
7
8
  }
8
9
  //#endregion
9
- export { i as VERIFIED_MODELS_GC_TIME, n as VERIFIED_MODELS_QUERY_KEY, r as VERIFIED_MODELS_STALE_TIME, a as fetchVerifiedModelsByProvider };
10
+ export { a as VERIFIED_MODELS_GC_TIME, r as VERIFIED_MODELS_QUERY_KEY, i as VERIFIED_MODELS_STALE_TIME, o as fetchVerifiedModelsByProvider };
10
11
 
11
12
  //# sourceMappingURL=use-verified-models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-verified-models.js","names":[],"sources":["../../../src/hooks/query/use-verified-models.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"#/api/agent-server-client-options\";\n\nexport const VERIFIED_MODELS_QUERY_KEY = [\"config\", \"verified-models\"] as const;\nexport const VERIFIED_MODELS_STALE_TIME = 1000 * 60 * 5;\nexport const VERIFIED_MODELS_GC_TIME = 1000 * 60 * 15;\n\nexport async function fetchVerifiedModelsByProvider(): Promise<\n Record<string, string[]>\n> {\n const client = new LLMMetadataClient(getAgentServerClientOptions());\n return (await client.getVerifiedModels()) ?? {};\n}\n"],"mappings":";;;AAGA,IAAa,IAA4B,CAAC,UAAU,kBAAkB,EACzD,IAA6B,MAAO,KAAK,GACzC,IAA0B,MAAO,KAAK;AAEnD,eAAsB,IAEpB;AAEA,QAAQ,MAAM,IADK,EAAkB,GAA6B,CACpD,CAAO,mBAAmB,IAAK,EAAE"}
1
+ {"version":3,"file":"use-verified-models.js","names":[],"sources":["../../../src/hooks/query/use-verified-models.ts"],"sourcesContent":["import { LLMMetadataClient } from \"@openhands/typescript-client/clients\";\nimport { getAgentServerClientOptions } from \"#/api/agent-server-client-options\";\nimport { getActiveBackend } from \"#/api/backend-registry/active-store\";\n\nexport const VERIFIED_MODELS_QUERY_KEY = [\"config\", \"verified-models\"] as const;\nexport const VERIFIED_MODELS_STALE_TIME = 1000 * 60 * 5;\nexport const VERIFIED_MODELS_GC_TIME = 1000 * 60 * 15;\n\nexport async function fetchVerifiedModelsByProvider(): Promise<\n Record<string, string[]>\n> {\n const active = getActiveBackend();\n if (active.backend.kind === \"cloud\") {\n // Cloud backends use /api/v1/config/providers/search and /api/v1/config/models/search,\n // which return verified status directly on each item. The intermediate\n // verifiedByProvider map is only used by the local ConfigService reconstruction\n // logic, so callers can safely treat this empty object as a no-op for cloud.\n return {};\n }\n const client = new LLMMetadataClient(getAgentServerClientOptions());\n return (await client.getVerifiedModels()) ?? {};\n}\n"],"mappings":";;;;AAIA,IAAa,IAA4B,CAAC,UAAU,kBAAkB,EACzD,IAA6B,MAAO,KAAK,GACzC,IAA0B,MAAO,KAAK;AAEnD,eAAsB,IAEpB;AAUA,QATe,GACX,CAAO,QAAQ,SAAS,UAKnB,EAAE,GAGH,MAAM,IADK,EAAkB,GAA6B,CACpD,CAAO,mBAAmB,IAAK,EAAE"}
package/dist/package.cjs CHANGED
@@ -1,2 +1,2 @@
1
- require(`./_virtual/_rolldown/runtime.cjs`);var e={name:`@openhands/agent-canvas`,version:`1.0.0-beta.9`,description:`Agent Canvas UI for OpenHands - run AI coding agents with a visual interface`,license:`MIT`,private:!1,type:`module`,repository:{type:`git`,url:`https://github.com/OpenHands/agent-canvas`},homepage:`https://github.com/OpenHands/agent-canvas#readme`,bugs:{url:`https://github.com/OpenHands/agent-canvas/issues`},bin:{"agent-canvas":`bin/agent-canvas.mjs`},engines:{node:`>=22.12.0`},dependencies:{"@heroui/react":`2.8.10`,"@microlink/react-json-view":`1.31.20`,"@monaco-editor/react":`4.7.0`,"@openhands/extensions":`git+https://github.com/OpenHands/extensions.git#62594156a187722344736bc2ff5edfb12c0cc75c`,"@openhands/typescript-client":`1.24.3`,"@react-router/node":`7.14.2`,"@react-router/serve":`7.14.2`,"@tailwindcss/vite":`4.2.4`,"@tanstack/react-query":`5.100.9`,"@types/shell-quote":`^1.7.5`,"@uidotdev/usehooks":`2.4.1`,"@xterm/addon-fit":`0.11.0`,"@xterm/xterm":`6.0.0`,axios:`1.16.0`,"class-variance-authority":`0.7.1`,clsx:`2.1.1`,downshift:`9.3.2`,"framer-motion":`12.38.0`,i18next:`26.0.8`,"i18next-browser-languagedetector":`8.2.1`,"i18next-http-backend":`4.0.0`,isbot:`5.1.39`,"lucide-react":`1.14.0`,"monaco-editor":`0.55.1`,"posthog-js":`1.372.6`,react:`19.2.5`,"react-dom":`19.2.5`,"react-hot-toast":`2.6.0`,"react-i18next":`17.0.6`,"react-icons":`5.6.0`,"react-markdown":`10.1.0`,"react-router":`7.14.2`,"react-syntax-highlighter":`16.1.1`,"rehype-raw":`7.0.0`,"rehype-sanitize":`6.0.0`,"remark-breaks":`4.0.0`,"remark-gfm":`4.0.1`,"shell-quote":`^1.8.3`,"sirv-cli":`3.0.1`,"socket.io-client":`4.8.3`,"tailwind-merge":`3.5.0`,"tailwind-scrollbar":`4.0.2`,"unist-util-visit":`5.1.0`,uuid:`14.0.0`,vite:`8.0.10`,zustand:`5.0.12`},scripts:{dev:`node --env-file-if-exists=.env scripts/dev-with-automation.mjs`,"dev:static":`node --env-file-if-exists=.env scripts/dev-static.mjs`,"dev:extra-backend":`node --env-file-if-exists=.env scripts/dev-extra-backend.mjs`,"dev:minimal":`node --env-file-if-exists=.env scripts/dev-safe.mjs`,"dev:frontend":`npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev`,"dev:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev`,build:`npm run build:app`,"build:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router build`,start:`npx sirv-cli build/ --single`,test:`npm run make-i18n && vitest run`,"test:e2e":`playwright test --pass-with-no-tests`,"test:e2e:live":`node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs`,"test:e2e:mock-llm":`playwright test --config=playwright.mock-llm.config.ts`,"test:e2e:mock-llm:docker":`playwright test --config=playwright.mock-llm-docker.config.ts`,"test:e2e:snapshots":`playwright test tests/e2e/snapshots --project=chromium --retries=0`,"test:e2e:snapshots:update":`playwright test tests/e2e/snapshots --project=chromium --update-snapshots`,"test:coverage":`npm run make-i18n && vitest run --coverage`,dev_wsl:`VITE_WATCH_USE_POLLING=true vite`,preview:`vite preview`,"make-i18n":`node scripts/make-i18n-translations.cjs`,prelint:`npm run make-i18n`,lint:`npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}`,"lint:fix":`eslint src --fix && prettier --write src/**/*.{ts,tsx}`,prepare:`husky`,typecheck:`react-router typegen && tsc`,"typecheck:staged":`react-router typegen && npx tsc --noEmit --skipLibCheck`,"check-translation-completeness":`node scripts/check-translation-completeness.cjs`,"build:app":`npm run make-i18n && react-router build`,"build:lib":`npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true VITE_APP_ENV=production vite build && tsc -p tsconfig.lib.json`,"build:docker":`node scripts/docker-build.mjs`},"lint-staged":{"src/**/*.{ts,tsx,js}":[`eslint --fix`,`prettier --write`],"src/**/*.{ts,tsx}":[`bash -c 'npm run typecheck:staged'`],"src/**/*":[`npm run check-translation-completeness`]},devDependencies:{"@eslint/eslintrc":`3.3.1`,"@eslint/js":`9.39.4`,"@mswjs/socket.io-binding":`0.2.0`,"@playwright/test":`1.59.1`,"@react-router/dev":`7.14.2`,"@tailwindcss/typography":`0.5.19`,"@tanstack/eslint-plugin-query":`5.100.9`,"@testing-library/dom":`10.4.1`,"@testing-library/jest-dom":`6.9.1`,"@testing-library/react":`16.3.2`,"@testing-library/user-event":`14.6.1`,"@types/mdast":`4.0.4`,"@types/node":`25.6.0`,"@types/react":`19.2.14`,"@types/react-dom":`19.2.3`,"@types/react-syntax-highlighter":`15.5.13`,"@typescript-eslint/eslint-plugin":`8.59.2`,"@typescript-eslint/parser":`8.59.2`,"@vercel/react-router":`1.3.0`,"@vitest/coverage-v8":`4.1.5`,"cross-env":`10.1.0`,eslint:`9.39.4`,"eslint-config-prettier":`10.1.8`,"eslint-import-resolver-typescript":`4.4.4`,"eslint-plugin-i18next":`6.1.4`,"eslint-plugin-import-x":`4.16.2`,"eslint-plugin-jsx-a11y":`6.10.2`,"eslint-plugin-prettier":`5.5.5`,"eslint-plugin-react":`7.37.5`,"eslint-plugin-react-hooks":`7.1.1`,"eslint-plugin-unused-imports":`4.4.1`,globals:`16.5.0`,husky:`9.1.7`,jsdom:`29.1.1`,"lint-staged":`16.4.0`,msw:`2.14.2`,"postcss-prefix-selector":`2.1.1`,prettier:`3.8.3`,tailwindcss:`4.2.4`,typescript:`6.0.3`,"vite-plugin-svgr":`5.2.0`,vitest:`4.1.5`},packageManager:`npm@10.5.0`,volta:{node:`22.12.0`},msw:{workerDirectory:[`public`]},overrides:{dompurify:`3.3.2`},main:`./dist/index.cjs`,module:`./dist/index.js`,types:`./dist/index.d.ts`,files:[`dist`,`bin`,`build`,`config`,`scripts`,`tools`],exports:{".":{types:`./dist/index.d.ts`,import:`./dist/index.js`,require:`./dist/index.cjs`},"./browser":{types:`./dist/components/browser/index.d.ts`,import:`./dist/components/browser/index.js`,require:`./dist/components/browser/index.cjs`},"./conversation":{types:`./dist/components/conversation/index.d.ts`,import:`./dist/components/conversation/index.js`,require:`./dist/components/conversation/index.cjs`},"./files":{types:`./dist/components/files/index.d.ts`,import:`./dist/components/files/index.js`,require:`./dist/components/files/index.cjs`},"./settings":{types:`./dist/components/settings/index.d.ts`,import:`./dist/components/settings/index.js`,require:`./dist/components/settings/index.cjs`},"./sidebar":{types:`./dist/components/sidebar/index.d.ts`,import:`./dist/components/sidebar/index.js`,require:`./dist/components/sidebar/index.cjs`},"./terminal":{types:`./dist/components/terminal/index.d.ts`,import:`./dist/components/terminal/index.js`,require:`./dist/components/terminal/index.cjs`},"./i18n":{types:`./dist/i18n/index.d.ts`,import:`./dist/i18n/index.js`,require:`./dist/i18n/index.cjs`},"./package.json":`./package.json`},peerDependencies:{react:`19.2.5`,"react-dom":`19.2.5`,"react-router":`7.14.2`}};exports.default=e;
1
+ require(`./_virtual/_rolldown/runtime.cjs`);var e={name:`@openhands/agent-canvas`,version:`1.0.0-rc.1`,description:`Agent Canvas UI for OpenHands - run AI coding agents with a visual interface`,license:`MIT`,private:!1,type:`module`,repository:{type:`git`,url:`https://github.com/OpenHands/agent-canvas`},homepage:`https://github.com/OpenHands/agent-canvas#readme`,bugs:{url:`https://github.com/OpenHands/agent-canvas/issues`},bin:{"agent-canvas":`bin/agent-canvas.mjs`},engines:{node:`>=22.12.0`},dependencies:{"@heroui/react":`2.8.10`,"@microlink/react-json-view":`1.31.20`,"@monaco-editor/react":`4.7.0`,"@openhands/extensions":`git+https://github.com/OpenHands/extensions.git#62594156a187722344736bc2ff5edfb12c0cc75c`,"@openhands/typescript-client":`1.24.3`,"@react-router/node":`7.14.2`,"@react-router/serve":`7.14.2`,"@tailwindcss/vite":`4.2.4`,"@tanstack/react-query":`5.100.9`,"@types/shell-quote":`^1.7.5`,"@uidotdev/usehooks":`2.4.1`,"@xterm/addon-fit":`0.11.0`,"@xterm/xterm":`6.0.0`,axios:`1.16.0`,"class-variance-authority":`0.7.1`,clsx:`2.1.1`,downshift:`9.3.2`,"framer-motion":`12.38.0`,i18next:`26.0.8`,"i18next-browser-languagedetector":`8.2.1`,"i18next-http-backend":`4.0.0`,isbot:`5.1.39`,"lucide-react":`1.14.0`,"monaco-editor":`0.55.1`,"posthog-js":`1.372.6`,react:`19.2.5`,"react-dom":`19.2.5`,"react-hot-toast":`2.6.0`,"react-i18next":`17.0.6`,"react-icons":`5.6.0`,"react-markdown":`10.1.0`,"react-router":`7.14.2`,"react-syntax-highlighter":`16.1.1`,"rehype-raw":`7.0.0`,"rehype-sanitize":`6.0.0`,"remark-breaks":`4.0.0`,"remark-gfm":`4.0.1`,"shell-quote":`^1.8.3`,"sirv-cli":`3.0.1`,"socket.io-client":`4.8.3`,"tailwind-merge":`3.5.0`,"tailwind-scrollbar":`4.0.2`,"unist-util-visit":`5.1.0`,uuid:`14.0.0`,vite:`8.0.10`,zustand:`5.0.12`},scripts:{dev:`node --env-file-if-exists=.env scripts/dev-with-automation.mjs`,"dev:static":`node --env-file-if-exists=.env scripts/dev-static.mjs`,"dev:extra-backend":`node --env-file-if-exists=.env scripts/dev-extra-backend.mjs`,"dev:minimal":`node --env-file-if-exists=.env scripts/dev-safe.mjs`,"dev:frontend":`npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev`,"dev:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev`,build:`npm run build:app`,"build:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router build`,start:`npx sirv-cli build/ --single`,test:`npm run make-i18n && vitest run`,"test:e2e":`playwright test --pass-with-no-tests`,"test:e2e:live":`node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs`,"test:e2e:mock-llm":`playwright test --config=playwright.mock-llm.config.ts`,"test:e2e:mock-llm:docker":`playwright test --config=playwright.mock-llm-docker.config.ts`,"test:e2e:snapshots":`playwright test tests/e2e/snapshots --project=chromium --retries=0`,"test:e2e:snapshots:update":`playwright test tests/e2e/snapshots --project=chromium --update-snapshots`,"test:coverage":`npm run make-i18n && vitest run --coverage`,dev_wsl:`VITE_WATCH_USE_POLLING=true vite`,preview:`vite preview`,"make-i18n":`node scripts/make-i18n-translations.cjs`,prelint:`npm run make-i18n`,lint:`npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}`,"lint:fix":`eslint src --fix && prettier --write src/**/*.{ts,tsx}`,prepare:`husky`,typecheck:`react-router typegen && tsc`,"typecheck:staged":`react-router typegen && npx tsc --noEmit --skipLibCheck`,"check-translation-completeness":`node scripts/check-translation-completeness.cjs`,"build:app":`npm run make-i18n && react-router build`,"build:lib":`npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true VITE_APP_ENV=production vite build && tsc -p tsconfig.lib.json`,"build:docker":`node scripts/docker-build.mjs`},"lint-staged":{"src/**/*.{ts,tsx,js}":[`eslint --fix`,`prettier --write`],"src/**/*.{ts,tsx}":[`bash -c 'npm run typecheck:staged'`],"src/**/*":[`npm run check-translation-completeness`]},devDependencies:{"@eslint/eslintrc":`3.3.1`,"@eslint/js":`9.39.4`,"@mswjs/socket.io-binding":`0.2.0`,"@playwright/test":`1.59.1`,"@react-router/dev":`7.14.2`,"@tailwindcss/typography":`0.5.19`,"@tanstack/eslint-plugin-query":`5.100.9`,"@testing-library/dom":`10.4.1`,"@testing-library/jest-dom":`6.9.1`,"@testing-library/react":`16.3.2`,"@testing-library/user-event":`14.6.1`,"@types/mdast":`4.0.4`,"@types/node":`25.6.0`,"@types/react":`19.2.14`,"@types/react-dom":`19.2.3`,"@types/react-syntax-highlighter":`15.5.13`,"@typescript-eslint/eslint-plugin":`8.59.2`,"@typescript-eslint/parser":`8.59.2`,"@vercel/react-router":`1.3.0`,"@vitest/coverage-v8":`4.1.5`,"cross-env":`10.1.0`,eslint:`9.39.4`,"eslint-config-prettier":`10.1.8`,"eslint-import-resolver-typescript":`4.4.4`,"eslint-plugin-i18next":`6.1.4`,"eslint-plugin-import-x":`4.16.2`,"eslint-plugin-jsx-a11y":`6.10.2`,"eslint-plugin-prettier":`5.5.5`,"eslint-plugin-react":`7.37.5`,"eslint-plugin-react-hooks":`7.1.1`,"eslint-plugin-unused-imports":`4.4.1`,globals:`16.5.0`,husky:`9.1.7`,jsdom:`29.1.1`,"lint-staged":`16.4.0`,msw:`2.14.2`,"postcss-prefix-selector":`2.1.1`,prettier:`3.8.3`,tailwindcss:`4.2.4`,typescript:`6.0.3`,"vite-plugin-svgr":`5.2.0`,vitest:`4.1.5`},packageManager:`npm@10.5.0`,volta:{node:`22.12.0`},msw:{workerDirectory:[`public`]},overrides:{dompurify:`3.3.2`},main:`./dist/index.cjs`,module:`./dist/index.js`,types:`./dist/index.d.ts`,files:[`dist`,`bin`,`build`,`config`,`scripts`,`tools`],exports:{".":{types:`./dist/index.d.ts`,import:`./dist/index.js`,require:`./dist/index.cjs`},"./browser":{types:`./dist/components/browser/index.d.ts`,import:`./dist/components/browser/index.js`,require:`./dist/components/browser/index.cjs`},"./conversation":{types:`./dist/components/conversation/index.d.ts`,import:`./dist/components/conversation/index.js`,require:`./dist/components/conversation/index.cjs`},"./files":{types:`./dist/components/files/index.d.ts`,import:`./dist/components/files/index.js`,require:`./dist/components/files/index.cjs`},"./settings":{types:`./dist/components/settings/index.d.ts`,import:`./dist/components/settings/index.js`,require:`./dist/components/settings/index.cjs`},"./sidebar":{types:`./dist/components/sidebar/index.d.ts`,import:`./dist/components/sidebar/index.js`,require:`./dist/components/sidebar/index.cjs`},"./terminal":{types:`./dist/components/terminal/index.d.ts`,import:`./dist/components/terminal/index.js`,require:`./dist/components/terminal/index.cjs`},"./i18n":{types:`./dist/i18n/index.d.ts`,import:`./dist/i18n/index.js`,require:`./dist/i18n/index.cjs`},"./package.json":`./package.json`},peerDependencies:{react:`19.2.5`,"react-dom":`19.2.5`,"react-router":`7.14.2`}};exports.default=e;
2
2
  //# sourceMappingURL=package.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"package.cjs","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.0.0-beta.9\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/agent-canvas\"\n },\n \"homepage\": \"https://github.com/OpenHands/agent-canvas#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/agent-canvas/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.20\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"git+https://github.com/OpenHands/extensions.git#62594156a187722344736bc2ff5edfb12c0cc75c\",\n \"@openhands/typescript-client\": \"1.24.3\",\n \"@react-router/node\": \"7.14.2\",\n \"@react-router/serve\": \"7.14.2\",\n \"@tailwindcss/vite\": \"4.2.4\",\n \"@tanstack/react-query\": \"5.100.9\",\n \"@types/shell-quote\": \"^1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.16.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"i18next\": \"26.0.8\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.0\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.14.0\",\n \"monaco-editor\": \"0.55.1\",\n \"posthog-js\": \"1.372.6\",\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.6\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.14.2\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"^1.8.3\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.5.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.10\",\n \"zustand\": \"5.0.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:e2e:snapshots\": \"playwright test tests/e2e/snapshots --project=chromium --retries=0\",\n \"test:e2e:snapshots:update\": \"playwright test tests/e2e/snapshots --project=chromium --update-snapshots\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true VITE_APP_ENV=production vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"bash -c 'npm run typecheck:staged'\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.1\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.59.1\",\n \"@react-router/dev\": \"7.14.2\",\n \"@tailwindcss/typography\": \"0.5.19\",\n \"@tanstack/eslint-plugin-query\": \"5.100.9\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"6.9.1\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"25.6.0\",\n \"@types/react\": \"19.2.14\",\n \"@types/react-dom\": \"19.2.3\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.59.2\",\n \"@typescript-eslint/parser\": \"8.59.2\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.5\",\n \"cross-env\": \"10.1.0\",\n \"eslint\": \"9.39.4\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.4\",\n \"eslint-plugin-i18next\": \"6.1.4\",\n \"eslint-plugin-import-x\": \"4.16.2\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.5\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"29.1.1\",\n \"lint-staged\": \"16.4.0\",\n \"msw\": \"2.14.2\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.2.4\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.5\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"dompurify\": \"3.3.2\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-router\": \"7.14.2\"\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"package.cjs","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.0.0-rc.1\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/agent-canvas\"\n },\n \"homepage\": \"https://github.com/OpenHands/agent-canvas#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/agent-canvas/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.20\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"git+https://github.com/OpenHands/extensions.git#62594156a187722344736bc2ff5edfb12c0cc75c\",\n \"@openhands/typescript-client\": \"1.24.3\",\n \"@react-router/node\": \"7.14.2\",\n \"@react-router/serve\": \"7.14.2\",\n \"@tailwindcss/vite\": \"4.2.4\",\n \"@tanstack/react-query\": \"5.100.9\",\n \"@types/shell-quote\": \"^1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.16.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"i18next\": \"26.0.8\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.0\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.14.0\",\n \"monaco-editor\": \"0.55.1\",\n \"posthog-js\": \"1.372.6\",\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.6\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.14.2\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"^1.8.3\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.5.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.10\",\n \"zustand\": \"5.0.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:e2e:snapshots\": \"playwright test tests/e2e/snapshots --project=chromium --retries=0\",\n \"test:e2e:snapshots:update\": \"playwright test tests/e2e/snapshots --project=chromium --update-snapshots\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true VITE_APP_ENV=production vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"bash -c 'npm run typecheck:staged'\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.1\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.59.1\",\n \"@react-router/dev\": \"7.14.2\",\n \"@tailwindcss/typography\": \"0.5.19\",\n \"@tanstack/eslint-plugin-query\": \"5.100.9\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"6.9.1\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"25.6.0\",\n \"@types/react\": \"19.2.14\",\n \"@types/react-dom\": \"19.2.3\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.59.2\",\n \"@typescript-eslint/parser\": \"8.59.2\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.5\",\n \"cross-env\": \"10.1.0\",\n \"eslint\": \"9.39.4\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.4\",\n \"eslint-plugin-i18next\": \"6.1.4\",\n \"eslint-plugin-import-x\": \"4.16.2\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.5\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"29.1.1\",\n \"lint-staged\": \"16.4.0\",\n \"msw\": \"2.14.2\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.2.4\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.5\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"dompurify\": \"3.3.2\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-router\": \"7.14.2\"\n }\n}\n"],"mappings":""}
package/dist/package.js CHANGED
@@ -1,6 +1,6 @@
1
1
  var e = {
2
2
  name: "@openhands/agent-canvas",
3
- version: "1.0.0-beta.9",
3
+ version: "1.0.0-rc.1",
4
4
  description: "Agent Canvas UI for OpenHands - run AI coding agents with a visual interface",
5
5
  license: "MIT",
6
6
  private: !1,
@@ -1 +1 @@
1
- {"version":3,"file":"package.js","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.0.0-beta.9\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/agent-canvas\"\n },\n \"homepage\": \"https://github.com/OpenHands/agent-canvas#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/agent-canvas/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.20\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"git+https://github.com/OpenHands/extensions.git#62594156a187722344736bc2ff5edfb12c0cc75c\",\n \"@openhands/typescript-client\": \"1.24.3\",\n \"@react-router/node\": \"7.14.2\",\n \"@react-router/serve\": \"7.14.2\",\n \"@tailwindcss/vite\": \"4.2.4\",\n \"@tanstack/react-query\": \"5.100.9\",\n \"@types/shell-quote\": \"^1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.16.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"i18next\": \"26.0.8\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.0\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.14.0\",\n \"monaco-editor\": \"0.55.1\",\n \"posthog-js\": \"1.372.6\",\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.6\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.14.2\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"^1.8.3\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.5.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.10\",\n \"zustand\": \"5.0.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:e2e:snapshots\": \"playwright test tests/e2e/snapshots --project=chromium --retries=0\",\n \"test:e2e:snapshots:update\": \"playwright test tests/e2e/snapshots --project=chromium --update-snapshots\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true VITE_APP_ENV=production vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"bash -c 'npm run typecheck:staged'\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.1\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.59.1\",\n \"@react-router/dev\": \"7.14.2\",\n \"@tailwindcss/typography\": \"0.5.19\",\n \"@tanstack/eslint-plugin-query\": \"5.100.9\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"6.9.1\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"25.6.0\",\n \"@types/react\": \"19.2.14\",\n \"@types/react-dom\": \"19.2.3\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.59.2\",\n \"@typescript-eslint/parser\": \"8.59.2\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.5\",\n \"cross-env\": \"10.1.0\",\n \"eslint\": \"9.39.4\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.4\",\n \"eslint-plugin-i18next\": \"6.1.4\",\n \"eslint-plugin-import-x\": \"4.16.2\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.5\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"29.1.1\",\n \"lint-staged\": \"16.4.0\",\n \"msw\": \"2.14.2\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.2.4\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.5\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"dompurify\": \"3.3.2\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-router\": \"7.14.2\"\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"package.js","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.0.0-rc.1\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/agent-canvas\"\n },\n \"homepage\": \"https://github.com/OpenHands/agent-canvas#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/agent-canvas/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.20\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"git+https://github.com/OpenHands/extensions.git#62594156a187722344736bc2ff5edfb12c0cc75c\",\n \"@openhands/typescript-client\": \"1.24.3\",\n \"@react-router/node\": \"7.14.2\",\n \"@react-router/serve\": \"7.14.2\",\n \"@tailwindcss/vite\": \"4.2.4\",\n \"@tanstack/react-query\": \"5.100.9\",\n \"@types/shell-quote\": \"^1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.16.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"i18next\": \"26.0.8\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.0\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.14.0\",\n \"monaco-editor\": \"0.55.1\",\n \"posthog-js\": \"1.372.6\",\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.6\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.14.2\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"^1.8.3\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.5.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.10\",\n \"zustand\": \"5.0.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:e2e:snapshots\": \"playwright test tests/e2e/snapshots --project=chromium --retries=0\",\n \"test:e2e:snapshots:update\": \"playwright test tests/e2e/snapshots --project=chromium --update-snapshots\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true VITE_APP_ENV=production vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"bash -c 'npm run typecheck:staged'\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.1\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.59.1\",\n \"@react-router/dev\": \"7.14.2\",\n \"@tailwindcss/typography\": \"0.5.19\",\n \"@tanstack/eslint-plugin-query\": \"5.100.9\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"6.9.1\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"25.6.0\",\n \"@types/react\": \"19.2.14\",\n \"@types/react-dom\": \"19.2.3\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.59.2\",\n \"@typescript-eslint/parser\": \"8.59.2\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.5\",\n \"cross-env\": \"10.1.0\",\n \"eslint\": \"9.39.4\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.4\",\n \"eslint-plugin-i18next\": \"6.1.4\",\n \"eslint-plugin-import-x\": \"4.16.2\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.5\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"29.1.1\",\n \"lint-staged\": \"16.4.0\",\n \"msw\": \"2.14.2\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.2.4\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.5\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"dompurify\": \"3.3.2\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-router\": \"7.14.2\"\n }\n}\n"],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openhands/agent-canvas",
3
- "version": "1.0.0-beta.9",
3
+ "version": "1.0.0-rc.1",
4
4
  "description": "Agent Canvas UI for OpenHands - run AI coding agents with a visual interface",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -1 +0,0 @@
1
- import{n as e}from"./llm-settings-C4R4HMUO.js";export{e as default};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-BFRubm34.js";import{t}from"./react-CM_dJw1Z.js";import{t as n}from"./vendor~root~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-s~jaomi49z-Cw89stA6.js";import{o as r,t as i}from"./declaration-DaUdB2Wg.js";import{t as a}from"./useTranslation-CEcjrme-.js";import{M as o,t as s}from"./utils-CdgBzLA7.js";import{n as c}from"./agent-server-client-options-9agOSarV.js";import{t as l}from"./llm-client-BqyLKgUN.js";import{d as u}from"./brand-button-LBFNic99.js";import{n as d,t as f}from"./vendor~root-layout~home~mcp~llm-settings~agent-settings~condenser-settings~verification-set~o7tv66sg-BuCSnjsW.js";import{i as p}from"./combobox-caret-CO7eozIY.js";import{n as m}from"./map-provider-C3Z5Dx2J.js";import{d as h}from"./sdk-settings-schema-DFievvEK.js";var g=e(t(),1);function _(e){return null}_.getCollectionNode=function*(e){let{children:t,title:n,items:r}=e;yield{type:`section`,props:e,hasChildNodes:!0,rendered:n,"aria-label":e[`aria-label`],*childNodes(){if(typeof t==`function`){if(!r)throw Error(`props.children was a function but props.items is missing`);for(let e of r)yield{type:`item`,value:e,renderer:t}}else{let e=[];g.Children.forEach(t,t=>{e.push({type:`item`,element:t})}),yield*e}}}};var v=_,y=e=>{let[t,...n]=e.split(`/`);return!t||n.length===0?{provider:``,model:e,separator:``}:{provider:t,model:n.join(`/`),separator:`/`}};function b(e,t){if(!t)return e;let n=t.toLowerCase();return e.filter(e=>e.name.toLowerCase().includes(n))}function x(e,t){return t===void 0?e:e.filter(e=>e.verified===t)}function S(e,t){return!t||t<=0?e:e.slice(0,t)}var C=class{static async searchModels(e={},t){let n=new l(c()),r=t===void 0?n.getVerifiedModels():Promise.resolve(t),[i,a]=await Promise.all([n.getModels(),r]),o=e.provider__eq??null,s=new Set(o?a?.[o]??[]:[]),u=[...s].map(e=>({provider:o,name:e,verified:!0})),d=o?(i??[]).filter(e=>e.startsWith(`${o}/`)).map(e=>e.slice(o.length+1)).filter(e=>e.length>0&&!s.has(e)).map(e=>({provider:o,name:e,verified:!1})):[];return{items:S(x(b([...u,...d],e.query),e.verified__eq),e.limit),next_page_id:null}}static async searchProviders(e={},t){let n=new l(c()),r=t===void 0?n.getVerifiedModels():Promise.resolve(t),[i,a]=await Promise.all([n.getProviders(),r]),o=new Set(Object.keys(a??{}));return{items:S(x(b([...new Set([...o,...i??[]])].map(e=>({name:e,verified:o.has(e)})),e.query),e.verified__eq),e.limit),next_page_id:null}}},w=[`config`,`verified-models`],T=1e3*60*5,E=1e3*60*15;async function D(){return await new l(c()).getVerifiedModels()??{}}var O=()=>n({queryKey:[`config`,`providers`],queryFn:async({client:e})=>{let t=await e.fetchQuery({queryKey:w,queryFn:D,staleTime:T});return(await C.searchProviders({limit:100},t)).items},staleTime:T,gcTime:E}),k=10;async function A(e,t,n,r=0){if(r>=k)throw Error(`Too many pagination requests for provider ${e}`);let i=await C.searchModels({provider__eq:e,limit:100,page_id:n},t);if(i.next_page_id){let n=await A(e,t,i.next_page_id,r+1);return[...i.items,...n]}return i.items}var j=e=>n({queryKey:[`config`,`models`,e],queryFn:async({client:t})=>A(e,await t.fetchQuery({queryKey:w,queryFn:D,staleTime:T})),enabled:!!e,staleTime:T,gcTime:E}),M=()=>n({queryKey:w,queryFn:D,select:e=>e?.openhands??[],staleTime:T,gcTime:E}),N=new Set([`https://llm-proxy.app.all-hands.dev`,`https://llm-proxy.app.all-hands.dev/v1`]),P=`litellm_proxy/`,F=e=>e.trim().replace(/\/+$/,``);function I(e,t,n){if(!e)return``;if(!e.startsWith(P)||!t||!N.has(F(t)))return e;let r=e.slice(14);return n.includes(r)?`openhands/${r}`:e}var L=r();function R({isDisabled:e,currentModel:t,currentBaseUrl:n,onChange:r,onDefaultValuesChanged:c,wrapperClassName:l,labelClassName:_}){let[,b]=g.useState(null),[x,S]=g.useState(null),[C,w]=g.useState(null),{data:T=[]}=O(),{data:E}=M(),{data:D=[],isLoading:k,error:A}=j(x),N=g.useMemo(()=>T.filter(e=>e.verified),[T]),P=g.useMemo(()=>T.filter(e=>!e.verified),[T]),F=g.useMemo(()=>D.filter(e=>e.verified),[D]),R=g.useMemo(()=>D.filter(e=>!e.verified),[D]);g.useEffect(()=>{if(t&&E!==void 0){let e=I(t,n,E),{provider:r,model:i}=y(e);b(e),S(r||null),w(i),c?.(r||null,i)}},[t,n,E]);let z=e=>{S(e),w(null),b(`${e}/`),r?.(e,null)},B=e=>{let t=`${x}/${e}`;x===`openai`&&(t=e),b(t),w(e),r?.(x,e)},V=()=>{S(null),b(null)},{t:H}=a(`openhands`);return(0,L.jsxs)(`div`,{className:s(`flex flex-col md:flex-row w-full min-w-0 justify-between gap-4 md:gap-[46px]`,l),children:[(0,L.jsxs)(`fieldset`,{className:`flex flex-col gap-2.5 w-full`,children:[(0,L.jsx)(`label`,{className:s(`text-sm`,_),children:H(i.LLM$PROVIDER)}),(0,L.jsxs)(f,{"data-testid":`llm-provider-input`,isRequired:!0,isVirtualized:!1,name:`llm-provider-input`,isDisabled:e,"aria-label":H(i.LLM$PROVIDER),isClearable:!1,onSelectionChange:e=>{e?.toString()&&z(e.toString())},onInputChange:e=>!e&&V(),defaultSelectedKey:x??void 0,selectedKey:x,classNames:{popoverContent:`bg-content1 rounded-xl border border-[var(--oh-border)]`,selectorButton:p},selectorButtonProps:{disableRipple:!0},inputProps:{classNames:{inputWrapper:u}},children:[(0,L.jsx)(v,{title:H(i.MODEL_SELECTOR$VERIFIED),classNames:{heading:`text-[var(--oh-muted)]`},children:N.map(e=>(0,L.jsx)(d,{"data-testid":`provider-item-${e.name}`,children:m(e.name)},e.name))}),P.length>0?(0,L.jsx)(v,{title:H(i.MODEL_SELECTOR$OTHERS),classNames:{heading:`text-[var(--oh-muted)]`},children:P.map(e=>(0,L.jsx)(d,{children:m(e.name)},e.name))}):null]})]}),x===`openhands`&&(0,L.jsx)(h,{testId:`openhands-account-help`,text:H(i.SETTINGS$NEED_OPENHANDS_ACCOUNT),linkText:H(i.SETTINGS$CLICK_HERE),href:o.PRODUCTION,size:`settings`,linkColor:`white`}),(0,L.jsxs)(`fieldset`,{className:`flex flex-col gap-2.5 w-full`,children:[(0,L.jsx)(`label`,{className:s(`text-sm`,_),children:H(i.LLM$MODEL)}),(0,L.jsxs)(f,{"data-testid":`llm-model-input`,isRequired:!0,isVirtualized:!1,isLoading:k,name:`llm-model-input`,"aria-label":H(i.LLM$MODEL),isClearable:!1,onSelectionChange:e=>{e?.toString()&&B(e.toString())},isDisabled:e||!x,selectedKey:C,defaultSelectedKey:C??void 0,classNames:{popoverContent:`bg-content1 rounded-xl border border-[var(--oh-border)]`,selectorButton:p},selectorButtonProps:{disableRipple:!0},inputProps:{classNames:{inputWrapper:u}},children:[(0,L.jsx)(v,{title:H(i.MODEL_SELECTOR$VERIFIED),classNames:{heading:`text-[var(--oh-muted)]`},children:F.map(e=>(0,L.jsx)(d,{children:e.name},e.name))}),R.length>0?(0,L.jsx)(v,{title:H(i.MODEL_SELECTOR$OTHERS),classNames:{heading:`text-[var(--oh-muted)]`},children:R.map(e=>(0,L.jsx)(d,{"data-testid":`model-item-${e.name}`,children:e.name},e.name))}):null]}),A&&(0,L.jsx)(`p`,{"data-testid":`models-error`,className:`text-danger text-xs`,children:H(i.CONFIGURATION$ERROR_FETCH_MODELS)})]})]})}export{y as n,R as t};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~lpdshwee-BPuuVEqr.js","assets/rolldown-runtime-BFRubm34.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-CT1Z6Pdu.js";var t={name:`@openhands/agent-canvas`,version:`1.0.0-beta.9`,description:`Agent Canvas UI for OpenHands - run AI coding agents with a visual interface`,license:`MIT`,private:!1,type:`module`,repository:{type:`git`,url:`https://github.com/OpenHands/agent-canvas`},homepage:`https://github.com/OpenHands/agent-canvas#readme`,bugs:{url:`https://github.com/OpenHands/agent-canvas/issues`},bin:{"agent-canvas":`bin/agent-canvas.mjs`},engines:{node:`>=22.12.0`},dependencies:{"@heroui/react":`2.8.10`,"@microlink/react-json-view":`1.31.20`,"@monaco-editor/react":`4.7.0`,"@openhands/extensions":`git+https://github.com/OpenHands/extensions.git#62594156a187722344736bc2ff5edfb12c0cc75c`,"@openhands/typescript-client":`1.24.3`,"@react-router/node":`7.14.2`,"@react-router/serve":`7.14.2`,"@tailwindcss/vite":`4.2.4`,"@tanstack/react-query":`5.100.9`,"@types/shell-quote":`^1.7.5`,"@uidotdev/usehooks":`2.4.1`,"@xterm/addon-fit":`0.11.0`,"@xterm/xterm":`6.0.0`,axios:`1.16.0`,"class-variance-authority":`0.7.1`,clsx:`2.1.1`,downshift:`9.3.2`,"framer-motion":`12.38.0`,i18next:`26.0.8`,"i18next-browser-languagedetector":`8.2.1`,"i18next-http-backend":`4.0.0`,isbot:`5.1.39`,"lucide-react":`1.14.0`,"monaco-editor":`0.55.1`,"posthog-js":`1.372.6`,react:`19.2.5`,"react-dom":`19.2.5`,"react-hot-toast":`2.6.0`,"react-i18next":`17.0.6`,"react-icons":`5.6.0`,"react-markdown":`10.1.0`,"react-router":`7.14.2`,"react-syntax-highlighter":`16.1.1`,"rehype-raw":`7.0.0`,"rehype-sanitize":`6.0.0`,"remark-breaks":`4.0.0`,"remark-gfm":`4.0.1`,"shell-quote":`^1.8.3`,"sirv-cli":`3.0.1`,"socket.io-client":`4.8.3`,"tailwind-merge":`3.5.0`,"tailwind-scrollbar":`4.0.2`,"unist-util-visit":`5.1.0`,uuid:`14.0.0`,vite:`8.0.10`,zustand:`5.0.12`},scripts:{dev:`node --env-file-if-exists=.env scripts/dev-with-automation.mjs`,"dev:static":`node --env-file-if-exists=.env scripts/dev-static.mjs`,"dev:extra-backend":`node --env-file-if-exists=.env scripts/dev-extra-backend.mjs`,"dev:minimal":`node --env-file-if-exists=.env scripts/dev-safe.mjs`,"dev:frontend":`npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev`,"dev:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev`,build:`npm run build:app`,"build:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router build`,start:`npx sirv-cli build/ --single`,test:`npm run make-i18n && vitest run`,"test:e2e":`playwright test --pass-with-no-tests`,"test:e2e:live":`node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs`,"test:e2e:mock-llm":`playwright test --config=playwright.mock-llm.config.ts`,"test:e2e:mock-llm:docker":`playwright test --config=playwright.mock-llm-docker.config.ts`,"test:e2e:snapshots":`playwright test tests/e2e/snapshots --project=chromium --retries=0`,"test:e2e:snapshots:update":`playwright test tests/e2e/snapshots --project=chromium --update-snapshots`,"test:coverage":`npm run make-i18n && vitest run --coverage`,dev_wsl:`VITE_WATCH_USE_POLLING=true vite`,preview:`vite preview`,"make-i18n":`node scripts/make-i18n-translations.cjs`,prelint:`npm run make-i18n`,lint:`npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}`,"lint:fix":`eslint src --fix && prettier --write src/**/*.{ts,tsx}`,prepare:`husky`,typecheck:`react-router typegen && tsc`,"typecheck:staged":`react-router typegen && npx tsc --noEmit --skipLibCheck`,"check-translation-completeness":`node scripts/check-translation-completeness.cjs`,"build:app":`npm run make-i18n && react-router build`,"build:lib":`npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true VITE_APP_ENV=production vite build && tsc -p tsconfig.lib.json`,"build:docker":`node scripts/docker-build.mjs`},"lint-staged":{"src/**/*.{ts,tsx,js}":[`eslint --fix`,`prettier --write`],"src/**/*.{ts,tsx}":[`bash -c 'npm run typecheck:staged'`],"src/**/*":[`npm run check-translation-completeness`]},devDependencies:{"@eslint/eslintrc":`3.3.1`,"@eslint/js":`9.39.4`,"@mswjs/socket.io-binding":`0.2.0`,"@playwright/test":`1.59.1`,"@react-router/dev":`7.14.2`,"@tailwindcss/typography":`0.5.19`,"@tanstack/eslint-plugin-query":`5.100.9`,"@testing-library/dom":`10.4.1`,"@testing-library/jest-dom":`6.9.1`,"@testing-library/react":`16.3.2`,"@testing-library/user-event":`14.6.1`,"@types/mdast":`4.0.4`,"@types/node":`25.6.0`,"@types/react":`19.2.14`,"@types/react-dom":`19.2.3`,"@types/react-syntax-highlighter":`15.5.13`,"@typescript-eslint/eslint-plugin":`8.59.2`,"@typescript-eslint/parser":`8.59.2`,"@vercel/react-router":`1.3.0`,"@vitest/coverage-v8":`4.1.5`,"cross-env":`10.1.0`,eslint:`9.39.4`,"eslint-config-prettier":`10.1.8`,"eslint-import-resolver-typescript":`4.4.4`,"eslint-plugin-i18next":`6.1.4`,"eslint-plugin-import-x":`4.16.2`,"eslint-plugin-jsx-a11y":`6.10.2`,"eslint-plugin-prettier":`5.5.5`,"eslint-plugin-react":`7.37.5`,"eslint-plugin-react-hooks":`7.1.1`,"eslint-plugin-unused-imports":`4.4.1`,globals:`16.5.0`,husky:`9.1.7`,jsdom:`29.1.1`,"lint-staged":`16.4.0`,msw:`2.14.2`,"postcss-prefix-selector":`2.1.1`,prettier:`3.8.3`,tailwindcss:`4.2.4`,typescript:`6.0.3`,"vite-plugin-svgr":`5.2.0`,vitest:`4.1.5`},packageManager:`npm@10.5.0`,volta:{node:`22.12.0`},msw:{workerDirectory:[`public`]},overrides:{dompurify:`3.3.2`},main:`./dist/index.cjs`,module:`./dist/index.js`,types:`./dist/index.d.ts`,files:[`dist`,`bin`,`build`,`config`,`scripts`,`tools`],exports:{".":{types:`./dist/index.d.ts`,import:`./dist/index.js`,require:`./dist/index.cjs`},"./browser":{types:`./dist/components/browser/index.d.ts`,import:`./dist/components/browser/index.js`,require:`./dist/components/browser/index.cjs`},"./conversation":{types:`./dist/components/conversation/index.d.ts`,import:`./dist/components/conversation/index.js`,require:`./dist/components/conversation/index.cjs`},"./files":{types:`./dist/components/files/index.d.ts`,import:`./dist/components/files/index.js`,require:`./dist/components/files/index.cjs`},"./settings":{types:`./dist/components/settings/index.d.ts`,import:`./dist/components/settings/index.js`,require:`./dist/components/settings/index.cjs`},"./sidebar":{types:`./dist/components/sidebar/index.d.ts`,import:`./dist/components/sidebar/index.js`,require:`./dist/components/sidebar/index.cjs`},"./terminal":{types:`./dist/components/terminal/index.d.ts`,import:`./dist/components/terminal/index.js`,require:`./dist/components/terminal/index.cjs`},"./i18n":{types:`./dist/i18n/index.d.ts`,import:`./dist/i18n/index.js`,require:`./dist/i18n/index.cjs`},"./package.json":`./package.json`},peerDependencies:{react:`19.2.5`,"react-dom":`19.2.5`,"react-router":`7.14.2`}},n=`openhands-telemetry-consent`,r=`openhands-telemetry-first-use`,i=`openhands-telemetry-session`,a=`phc_kBtz5nKmxVRRQ7HtPwr2QX9eMC5j65zE86QKocVNwb4U`,o=`https://z.openhands.dev`,s=`https://us.posthog.com`,c=!1,l=null;function u(){return typeof window<`u`&&typeof localStorage<`u`}async function d(){if(!u())return null;if(l)return l;try{let{default:t}=await e(async()=>{let{default:e}=await import(`./vendor~entry.client~root~root-layout~home~conversation-panel~conversation~launch~skills-set~lpdshwee-BPuuVEqr.js`).then(e=>e.n);return{default:e}},__vite__mapDeps([0,1]));return l=t,t}catch{return null}}function f(){return typeof process<`u`&&{}?.DO_NOT_TRACK===`1`||typeof navigator<`u`&&(navigator.doNotTrack===`1`||typeof window<`u`&&window.doNotTrack===`1`)}async function p(e=!1){if(c)return l;let n=await d();return n?(n.init(a,{api_host:o,ui_host:s,opt_out_capturing_by_default:!e,capture_pageview:!1,autocapture:!1,persistence:`localStorage`,disable_session_recording:!0,loaded:e=>{e.register({package_name:t.name,package_version:t.version})}}),c=!0,n):null}function m(){if(!u())return`pending`;if(f())return`denied`;try{let e=localStorage.getItem(n);if(e===`granted`||e===`denied`)return e}catch{}return`pending`}async function h(e){if(u())try{localStorage.setItem(n,e);let t=await p();if(!t)return;e===`granted`?t.opt_in_capturing():t.opt_out_capturing()}catch{}}function g(){return m()===`granted`}function _(){if(!u())return!1;try{return localStorage.getItem(r)===`true`}catch{return!1}}function v(){if(u())try{localStorage.setItem(r,`true`)}catch{}}async function y(){if(f()||_())return;let e=await p(!0);e&&((e.has_opted_out_capturing?.()??!1)&&e.opt_in_capturing(),e.capture(`canvas_install`,{platform:typeof navigator<`u`?navigator.platform:`unknown`,user_agent:typeof navigator<`u`?navigator.userAgent:`unknown`,referrer:typeof document<`u`?document.referrer:``,url_origin:typeof window<`u`?window.location.origin:``,embedded:typeof window<`u`&&window.self!==window.top}),v(),m()!==`granted`&&e.opt_out_capturing())}function b(){if(!u())return!1;try{return sessionStorage.getItem(i)===`true`}catch{return!1}}function x(){if(u())try{sessionStorage.setItem(i,`true`)}catch{}}async function S(){if(!g()||b())return;let e=await p();e&&(e.capture(`canvas_new_session`,{is_first_use:!_()}),x())}async function C(e,t={}){if(!g())return;let n=await p();n&&n.capture(e,t)}async function w(){if(u())try{localStorage.removeItem(n),localStorage.removeItem(r),sessionStorage.removeItem(i),c&&l&&l.reset()}catch{}}export{y as a,C as i,m as n,S as o,h as r,w as t};