@h-ai/kit 0.1.0-alpha.67 → 0.1.0-alpha.69

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 (44) hide show
  1. package/README.en.md +67 -13
  2. package/README.ja.md +67 -13
  3. package/README.md +67 -13
  4. package/dist/adapter/index.d.ts +17 -2
  5. package/dist/adapter/index.js.map +1 -1
  6. package/dist/browser.d.ts +12 -6
  7. package/dist/browser.js +6 -7
  8. package/dist/browser.js.map +1 -1
  9. package/dist/{chunk-DVW7CQ3H.js → chunk-2PWGJCWX.js} +3 -3
  10. package/dist/chunk-2PWGJCWX.js.map +1 -0
  11. package/dist/chunk-OVRZIDCD.js +175 -0
  12. package/dist/chunk-OVRZIDCD.js.map +1 -0
  13. package/dist/{chunk-VOTDAVCB.js → chunk-QNLZLTVC.js} +29 -42
  14. package/dist/chunk-QNLZLTVC.js.map +1 -0
  15. package/dist/{chunk-MLSP67JF.js → chunk-UTCS6FR7.js} +67 -110
  16. package/dist/chunk-UTCS6FR7.js.map +1 -0
  17. package/dist/{chunk-NVYIUBU7.js → chunk-XC7I2L3G.js} +2 -2
  18. package/dist/chunk-XC7I2L3G.js.map +1 -0
  19. package/dist/{chunk-L7BTMAKX.js → chunk-Y2YUA3VR.js} +5 -6
  20. package/dist/chunk-Y2YUA3VR.js.map +1 -0
  21. package/dist/client/index.d.ts +47 -1
  22. package/dist/client/index.js +3 -3
  23. package/dist/client/index.js.map +1 -1
  24. package/dist/index.d.ts +251 -347
  25. package/dist/index.js +347 -171
  26. package/dist/index.js.map +1 -1
  27. package/dist/kit-a2a-types-DwcmE668.d.ts +136 -0
  28. package/dist/{index-B7s-0mZl.d.ts → kit-client-auth-B5y1g5_A.d.ts} +228 -102
  29. package/dist/kit-crypto-types-Cwj9bprV.d.ts +196 -0
  30. package/dist/{kit-i18n-D9Qqk-1k.d.ts → kit-i18n-DEzmzE5T.d.ts} +142 -29
  31. package/dist/{kit-types-ByWdbCeO.d.ts → kit-types-DQYqP1Cn.d.ts} +242 -162
  32. package/dist/modules/a2a/index.d.ts +13 -111
  33. package/dist/modules/a2a/index.js +2 -2
  34. package/dist/modules/crypto/index.d.ts +28 -195
  35. package/dist/modules/crypto/index.js +3 -3
  36. package/dist/modules/crypto/index.js.map +1 -1
  37. package/package.json +16 -11
  38. package/dist/chunk-DVW7CQ3H.js.map +0 -1
  39. package/dist/chunk-L7BTMAKX.js.map +0 -1
  40. package/dist/chunk-MLSP67JF.js.map +0 -1
  41. package/dist/chunk-NVYIUBU7.js.map +0 -1
  42. package/dist/chunk-QHYNL24G.js +0 -117
  43. package/dist/chunk-QHYNL24G.js.map +0 -1
  44. package/dist/chunk-VOTDAVCB.js.map +0 -1
@@ -13,14 +13,22 @@ import * as _sveltejs_kit from '@sveltejs/kit';
13
13
  *
14
14
  * export default {
15
15
  * kit: {
16
- * adapter: createAdapter(),
16
+ * adapter: await createAdapter(),
17
17
  * },
18
18
  * }
19
19
  * ```
20
20
  *
21
21
  * @module kit-adapter
22
22
  */
23
- /** 双构建适配器配置 */
23
+ /**
24
+ * 双构建适配器配置
25
+ * @example 模块内部上下文
26
+ * ```ts
27
+ * const options: AdapterOptions = {}
28
+ * const adapter = await createAdapter(options)
29
+ * void adapter
30
+ * ```
31
+ */
24
32
  interface AdapterOptions {
25
33
  /** adapter-node 输出目录,默认 `'build'` */
26
34
  nodeBuildDir?: string;
@@ -38,6 +46,13 @@ interface AdapterOptions {
38
46
  *
39
47
  * **注意**:adapter-node / adapter-static 仍然需要在应用的 devDependencies 中声明。
40
48
  * 本函数只做动态 import + 统一配置。
49
+ * @param options - Node/static 输出目录和 SPA fallback;应用仍需安装对应适配器。
50
+ * @returns 按 VITE_ADAPTER 选择的 SvelteKit adapter;缺失依赖时拒绝 Promise。
51
+ * @example 模块内部上下文
52
+ * ```ts
53
+ * const adapter = await createAdapter({})
54
+ * void adapter
55
+ * ```
41
56
  */
42
57
  declare function createAdapter(options?: AdapterOptions): Promise<_sveltejs_kit.Adapter>;
43
58
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/kit-adapter.ts"],"names":[],"mappings":";;;AA2CA,eAAsB,cAAc,OAAA,EAA0B;AAC5D,EAAA,MAAM;AAAA,IACJ,YAAA,GAAe,OAAA;AAAA,IACf,cAAA,GAAiB,cAAA;AAAA,IACjB,cAAA,GAAiB;AAAA,GACnB,GAAI,WAAW,EAAC;AAEhB,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,GAAA,CAAI,YAAA,IAAgB,MAAA;AAEzC,EAAA,IAAI,SAAS,QAAA,EAAU;AACrB,IAAA,MAAM,EAAE,OAAA,EAAS,aAAA,EAAc,GAAI,MAAM,OAAO,0BAA0B,CAAA;AAC1E,IAAA,OAAO,aAAA,CAAc;AAAA,MACnB,KAAA,EAAO,cAAA;AAAA,MACP,MAAA,EAAQ,cAAA;AAAA,MACR,QAAA,EAAU,cAAA;AAAA,MACV,WAAA,EAAa;AAAA,KACd,CAAA;AAAA,EACH;AAGA,EAAA,MAAM,EAAE,OAAA,EAAS,WAAA,EAAY,GAAI,MAAM,OAAO,wBAAwB,CAAA;AACtE,EAAA,OAAO,WAAA,CAAY;AAAA,IACjB,GAAA,EAAK;AAAA,GACN,CAAA;AACH","file":"index.js","sourcesContent":["/**\n * SvelteKit 双构建模式 — 适配器工厂\n *\n * 根据 `VITE_ADAPTER` 环境变量自动选择 adapter-node 或 adapter-static,\n * 使同一个 SvelteKit 应用能同时产出 SSR(Web + API)和 SPA(H5/App)两种构建产物。\n *\n * @example\n * ```js\n * // svelte.config.js\n * import { createAdapter } from '@h-ai/kit/adapter'\n *\n * export default {\n * kit: {\n * adapter: createAdapter(),\n * },\n * }\n * ```\n *\n * @module kit-adapter\n */\n\nimport process from 'node:process'\n\n/** 双构建适配器配置 */\nexport interface AdapterOptions {\n /** adapter-node 输出目录,默认 `'build'` */\n nodeBuildDir?: string\n /** adapter-static 输出目录,默认 `'build-static'` */\n staticBuildDir?: string\n /** adapter-static 的 SPA fallback 页面,默认 `'index.html'` */\n staticFallback?: string\n}\n\n/**\n * 根据环境变量 `VITE_ADAPTER` 选择 SvelteKit adapter\n *\n * - `VITE_ADAPTER=node` → `@sveltejs/adapter-node`(SSR + API)\n * - `VITE_ADAPTER=static` → `@sveltejs/adapter-static`(SPA,可被 Capacitor 包装)\n * - 未设置时默认使用 `node`\n *\n * **注意**:adapter-node / adapter-static 仍然需要在应用的 devDependencies 中声明。\n * 本函数只做动态 import + 统一配置。\n */\nexport async function createAdapter(options?: AdapterOptions) {\n const {\n nodeBuildDir = 'build',\n staticBuildDir = 'build-static',\n staticFallback = 'index.html',\n } = options ?? {}\n\n const mode = process.env.VITE_ADAPTER ?? 'node'\n\n if (mode === 'static') {\n const { default: adapterStatic } = await import('@sveltejs/adapter-static')\n return adapterStatic({\n pages: staticBuildDir,\n assets: staticBuildDir,\n fallback: staticFallback,\n precompress: false,\n })\n }\n\n // 默认 node\n const { default: adapterNode } = await import('@sveltejs/adapter-node')\n return adapterNode({\n out: nodeBuildDir,\n })\n}\n"]}
1
+ {"version":3,"sources":["../../src/kit-adapter.ts"],"names":[],"mappings":";;;AA0DA,eAAsB,cAAc,OAAA,EAA0B;AAC5D,EAAA,MAAM;AAAA,IACJ,YAAA,GAAe,OAAA;AAAA,IACf,cAAA,GAAiB,cAAA;AAAA,IACjB,cAAA,GAAiB;AAAA,GACnB,GAAI,WAAW,EAAC;AAEhB,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,GAAA,CAAI,YAAA,IAAgB,MAAA;AAEzC,EAAA,IAAI,SAAS,QAAA,EAAU;AACrB,IAAA,MAAM,EAAE,OAAA,EAAS,aAAA,EAAc,GAAI,MAAM,OAAO,0BAA0B,CAAA;AAC1E,IAAA,OAAO,aAAA,CAAc;AAAA,MACnB,KAAA,EAAO,cAAA;AAAA,MACP,MAAA,EAAQ,cAAA;AAAA,MACR,QAAA,EAAU,cAAA;AAAA,MACV,WAAA,EAAa;AAAA,KACd,CAAA;AAAA,EACH;AAGA,EAAA,MAAM,EAAE,OAAA,EAAS,WAAA,EAAY,GAAI,MAAM,OAAO,wBAAwB,CAAA;AACtE,EAAA,OAAO,WAAA,CAAY;AAAA,IACjB,GAAA,EAAK;AAAA,GACN,CAAA;AACH","file":"index.js","sourcesContent":["/**\n * SvelteKit 双构建模式 — 适配器工厂\n *\n * 根据 `VITE_ADAPTER` 环境变量自动选择 adapter-node 或 adapter-static,\n * 使同一个 SvelteKit 应用能同时产出 SSR(Web + API)和 SPA(H5/App)两种构建产物。\n *\n * @example\n * ```js\n * // svelte.config.js\n * import { createAdapter } from '@h-ai/kit/adapter'\n *\n * export default {\n * kit: {\n * adapter: await createAdapter(),\n * },\n * }\n * ```\n *\n * @module kit-adapter\n */\n\nimport process from 'node:process'\n\n/**\n * 双构建适配器配置\n * @example 模块内部上下文\n * ```ts\n * const options: AdapterOptions = {}\n * const adapter = await createAdapter(options)\n * void adapter\n * ```\n */\nexport interface AdapterOptions {\n /** adapter-node 输出目录,默认 `'build'` */\n nodeBuildDir?: string\n /** adapter-static 输出目录,默认 `'build-static'` */\n staticBuildDir?: string\n /** adapter-static 的 SPA fallback 页面,默认 `'index.html'` */\n staticFallback?: string\n}\n\n/**\n * 根据环境变量 `VITE_ADAPTER` 选择 SvelteKit adapter\n *\n * - `VITE_ADAPTER=node` → `@sveltejs/adapter-node`(SSR + API)\n * - `VITE_ADAPTER=static` → `@sveltejs/adapter-static`(SPA,可被 Capacitor 包装)\n * - 未设置时默认使用 `node`\n *\n * **注意**:adapter-node / adapter-static 仍然需要在应用的 devDependencies 中声明。\n * 本函数只做动态 import + 统一配置。\n * @param options - Node/static 输出目录和 SPA fallback;应用仍需安装对应适配器。\n * @returns 按 VITE_ADAPTER 选择的 SvelteKit adapter;缺失依赖时拒绝 Promise。\n * @example 模块内部上下文\n * ```ts\n * const adapter = await createAdapter({})\n * void adapter\n * ```\n */\nexport async function createAdapter(options?: AdapterOptions) {\n const {\n nodeBuildDir = 'build',\n staticBuildDir = 'build-static',\n staticFallback = 'index.html',\n } = options ?? {}\n\n const mode = process.env.VITE_ADAPTER ?? 'node'\n\n if (mode === 'static') {\n const { default: adapterStatic } = await import('@sveltejs/adapter-static')\n return adapterStatic({\n pages: staticBuildDir,\n assets: staticBuildDir,\n fallback: staticFallback,\n precompress: false,\n })\n }\n\n // 默认 node\n const { default: adapterNode } = await import('@sveltejs/adapter-node')\n return adapterNode({\n out: nodeBuildDir,\n })\n}\n"]}
package/dist/browser.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { c as createKitClient, a as createKitAuthActions, i as installBrowserTransport, b as installBrowserTransportFetch, s as setBrowserToken, d as clearBrowserToken, e as createTokenStore } from './index-B7s-0mZl.js';
2
- export { C as ClientTransportConfig, K as KitClient, f as KitClientConfig, g as KitConfig, h as KitConfigInput, j as KitConfigSchema, k as KitServerConfig, l as KitServerConfigInput, m as KitTransportConfig, n as KitTransportConfigInput, o as createSvelteKitNavAdapter, r as resolveKitConfig, p as resolveKitTransportConfig } from './index-B7s-0mZl.js';
3
- import { d as defineCrud, s as setAllModulesLocale } from './kit-i18n-D9Qqk-1k.js';
4
- export { A as ApiResponse, a as AuthOperations, b as AuthOperationsProvider, C as CorsConfig, F as FormError, c as FormValidationResult, G as GuardConfig, d as GuardResult, H as HaiRequestEvent, e as HandleA2AConfig, f as HandleA2AOperations, g as HandleAuthConfig, h as HandleConfig, i as HookCryptoConfig, M as Middleware, j as MiddlewareContext, R as RateLimitConfig, k as RouteGuard, S as SessionData, l as SessionLike, T as TransportEncryptionOptions } from './kit-types-ByWdbCeO.js';
1
+ import { c as createKitClient, a as createKitAuthActions, i as installBrowserTransport, b as installBrowserTransportFetch, s as setBrowserToken, d as clearBrowserToken } from './kit-client-auth-B5y1g5_A.js';
2
+ export { C as ClientTransportConfig, K as KitClient, e as KitClientConfig, f as KitConfig, g as KitConfigInput, h as KitConfigSchema, j as KitServerConfig, k as KitServerConfigInput, l as KitTransportConfig, m as KitTransportConfigInput, r as resolveKitConfig, n as resolveKitTransportConfig } from './kit-client-auth-B5y1g5_A.js';
3
+ import { d as defineCrud, s as setAllModulesLocale } from './kit-i18n-DEzmzE5T.js';
4
+ export { A as ApiResponse, a as AuthOperations, b as AuthOperationsProvider, C as CorsConfig, F as FormError, c as FormValidationResult, G as GuardConfig, d as GuardResult, H as HaiRequestEvent, e as HandleA2AConfig, f as HandleA2AOperations, g as HandleAuthConfig, h as HandleConfig, i as HookCryptoConfig, M as Middleware, j as MiddlewareContext, R as RateLimitConfig, k as RouteGuard, S as SessionData, l as SessionLike, T as TransportEncryptionOptions } from './kit-types-DQYqP1Cn.js';
5
5
  import '@h-ai/api-contract';
6
6
  import '@h-ai/core';
7
7
  import '@h-ai/crypto';
@@ -18,6 +18,13 @@ import '@sveltejs/kit';
18
18
 
19
19
  /**
20
20
  * 浏览器端 kit 对象(仅暴露 client-safe 能力)
21
+ * @example
22
+ * ```ts
23
+ * import { kit } from '@h-ai/kit'
24
+ *
25
+ * const client = kit.client.create({ auth: true })
26
+ * client.destroy()
27
+ * ```
21
28
  */
22
29
  declare const kit: {
23
30
  client: {
@@ -32,11 +39,10 @@ declare const kit: {
32
39
  auth: {
33
40
  setBrowserToken: typeof setBrowserToken;
34
41
  clearBrowserToken: typeof clearBrowserToken;
35
- createTokenStore: typeof createTokenStore;
36
42
  };
37
43
  i18n: {
38
44
  setLocale: typeof setAllModulesLocale;
39
45
  };
40
46
  };
41
47
 
42
- export { createKitAuthActions, createKitClient, installBrowserTransport, installBrowserTransportFetch, kit };
48
+ export { kit };
package/dist/browser.js CHANGED
@@ -1,8 +1,8 @@
1
- import { defineCrud } from './chunk-L7BTMAKX.js';
2
- export { KitConfigSchema, resolveKitConfig, resolveKitTransportConfig } from './chunk-L7BTMAKX.js';
3
- import { createTokenStore, clearBrowserToken, setBrowserToken, installBrowserTransportFetch, installBrowserTransport, createKitAuthActions, createKitClient } from './chunk-VOTDAVCB.js';
4
- import './chunk-NVYIUBU7.js';
5
- import { setAllModulesLocale } from './chunk-QHYNL24G.js';
1
+ import { defineCrud } from './chunk-Y2YUA3VR.js';
2
+ export { KitConfigSchema, resolveKitConfig, resolveKitTransportConfig } from './chunk-Y2YUA3VR.js';
3
+ import { clearBrowserToken, setBrowserToken, installBrowserTransportFetch, installBrowserTransport, createKitAuthActions, createKitClient } from './chunk-QNLZLTVC.js';
4
+ import './chunk-XC7I2L3G.js';
5
+ import { setAllModulesLocale } from './chunk-OVRZIDCD.js';
6
6
 
7
7
  // src/browser.ts
8
8
  var kit = {
@@ -17,8 +17,7 @@ var kit = {
17
17
  },
18
18
  auth: {
19
19
  setBrowserToken,
20
- clearBrowserToken,
21
- createTokenStore
20
+ clearBrowserToken
22
21
  },
23
22
  i18n: {
24
23
  setLocale: setAllModulesLocale
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/browser.ts"],"names":[],"mappings":";;;;;;;AAiBO,IAAM,GAAA,GAAM;AAAA,EACjB,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,eAAA;AAAA,IACR,iBAAA,EAAmB,oBAAA;AAAA,IACnB,uBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,eAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,SAAA,EAAW;AAAA;AAEf","file":"browser.js","sourcesContent":["/**\n * @h-ai/kit — 浏览器入口\n *\n * 为客户端提供精简且安全的运行时导出,避免将服务端 Hook/A2A/IAM 运行时代码打入浏览器包。\n * @module browser\n */\n\nimport { createKitAuthActions } from './client/kit-client-auth.js'\nimport { createKitClient, installBrowserTransport, installBrowserTransportFetch } from './client/kit-client.js'\nimport { defineCrud } from './crud/kit-crud.js'\nimport { clearBrowserToken, createTokenStore, setBrowserToken } from './kit-auth.js'\nimport { KitConfigSchema, resolveKitConfig, resolveKitTransportConfig } from './kit-config.js'\nimport { setAllModulesLocale } from './kit-i18n.js'\n\n/**\n * 浏览器端 kit 对象(仅暴露 client-safe 能力)\n */\nexport const kit = {\n client: {\n create: createKitClient,\n createAuthActions: createKitAuthActions,\n installBrowserTransport,\n installBrowserTransportFetch,\n },\n crud: {\n define: defineCrud,\n },\n auth: {\n setBrowserToken,\n clearBrowserToken,\n createTokenStore,\n },\n i18n: {\n setLocale: setAllModulesLocale,\n },\n}\n\nexport { KitConfigSchema, resolveKitConfig, resolveKitTransportConfig }\n\nexport type * from './client/index.js'\nexport type * from './kit-types.js'\n"]}
1
+ {"version":3,"sources":["../src/browser.ts"],"names":[],"mappings":";;;;;;;AAwBO,IAAM,GAAA,GAAM;AAAA,EACjB,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,eAAA;AAAA,IACR,iBAAA,EAAmB,oBAAA;AAAA,IACnB,uBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,eAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,SAAA,EAAW;AAAA;AAEf","file":"browser.js","sourcesContent":["/**\n * @h-ai/kit — 浏览器入口\n *\n * 为客户端提供精简且安全的运行时导出,避免将服务端 Hook/A2A/IAM 运行时代码打入浏览器包。\n * @module browser\n */\n\nimport { createKitAuthActions } from './client/kit-client-auth.js'\nimport { createKitClient, installBrowserTransport, installBrowserTransportFetch } from './client/kit-client.js'\nimport { defineCrud } from './crud/kit-crud.js'\nimport { clearBrowserToken, setBrowserToken } from './kit-auth.js'\nimport { KitConfigSchema, resolveKitConfig, resolveKitTransportConfig } from './kit-config.js'\nimport { setAllModulesLocale } from './kit-i18n.js'\n\n/**\n * 浏览器端 kit 对象(仅暴露 client-safe 能力)\n * @example\n * ```ts\n * import { kit } from '@h-ai/kit'\n *\n * const client = kit.client.create({ auth: true })\n * client.destroy()\n * ```\n */\nexport const kit = {\n client: {\n create: createKitClient,\n createAuthActions: createKitAuthActions,\n installBrowserTransport,\n installBrowserTransportFetch,\n },\n crud: {\n define: defineCrud,\n },\n auth: {\n setBrowserToken,\n clearBrowserToken,\n },\n i18n: {\n setLocale: setAllModulesLocale,\n },\n}\n\nexport { KitConfigSchema, resolveKitConfig, resolveKitTransportConfig }\n\nexport type {\n ClientTransportConfig,\n KitClient,\n KitClientConfig,\n} from './client/index.js'\nexport type {\n ApiResponse,\n AuthOperations,\n AuthOperationsProvider,\n CorsConfig,\n FormError,\n FormValidationResult,\n GuardConfig,\n GuardResult,\n HaiRequestEvent,\n HandleA2AConfig,\n HandleA2AOperations,\n HandleAuthConfig,\n HandleConfig,\n HookCryptoConfig,\n KitConfig,\n KitConfigInput,\n KitServerConfig,\n KitServerConfigInput,\n KitTransportConfig,\n KitTransportConfigInput,\n Middleware,\n MiddlewareContext,\n RateLimitConfig,\n RouteGuard,\n SessionData,\n SessionLike,\n TransportEncryptionOptions,\n} from './kit-types.js'\n"]}
@@ -1,4 +1,4 @@
1
- import { kitM } from './chunk-QHYNL24G.js';
1
+ import { kitM } from './chunk-OVRZIDCD.js';
2
2
  import { iam } from '@h-ai/iam';
3
3
 
4
4
  function createA2AApiKeyAuthenticator(config) {
@@ -137,5 +137,5 @@ async function handleA2ARequest(event, requestId, config) {
137
137
  }
138
138
 
139
139
  export { createA2AApiKeyAuthenticator, createA2AHandler, createAgentCardHandler, handleA2ARequest, resolveA2AConfig };
140
- //# sourceMappingURL=chunk-DVW7CQ3H.js.map
141
- //# sourceMappingURL=chunk-DVW7CQ3H.js.map
140
+ //# sourceMappingURL=chunk-2PWGJCWX.js.map
141
+ //# sourceMappingURL=chunk-2PWGJCWX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/modules/a2a/kit-a2a-auth.ts","../src/modules/a2a/kit-a2a-helpers.ts","../src/modules/a2a/kit-a2a-handle.ts"],"names":[],"mappings":"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","file":"chunk-2PWGJCWX.js","sourcesContent":["/**\n * @h-ai/kit — A2A API Key 认证器\n *\n * 从请求头或 query 参数中提取 API Key,调用 IAM apiKey.verifyApiKey 验证。\n * @module kit-a2a-auth\n */\n\nimport type { RequestEvent } from '@sveltejs/kit'\nimport { iam } from '@h-ai/iam'\n\n/**\n * A2A API Key 认证器配置\n * @example\n * ```ts\n * import type { A2AApiKeyAuthConfig } from '@h-ai/kit'\n *\n * const value: A2AApiKeyAuthConfig = { in: 'header', name: 'X-Agent-Key' }\n * void value\n * ```\n */\nexport interface A2AApiKeyAuthConfig {\n /** API Key 的传递位置 */\n in: 'header' | 'query'\n /** 参数名 */\n name: string\n}\n\n/**\n * 创建 A2A API Key 认证函数\n *\n * 根据配置从请求头或 query 参数中提取 API Key,\n * 通过 `iam.apiKey.verifyApiKey()` 验证后返回调用方上下文。\n *\n * - 无 API Key → 返回 `null`(由调用方拒绝请求)\n * - 验证失败 → 返回 `null`(拒绝)\n * - 验证成功 → 返回 `{ agentId, apiKeyId, scopes }`\n *\n * @param config - API Key 提取配置\n * @returns authenticate 函数,可直接赋给 HandleA2AConfig.authenticate\n * @example 模块内部上下文\n * ```ts\n * const authenticate = createA2AApiKeyAuthenticator({ in: 'header', name: 'X-Agent-Key' })\n * // 应用先初始化 IAM;拒绝返回 null,交给路由转为 401。\n * void authenticate\n * ```\n */\nexport function createA2AApiKeyAuthenticator(\n config: A2AApiKeyAuthConfig,\n): (event: RequestEvent) => Promise<Record<string, unknown> | null> {\n return async (event: RequestEvent) => {\n const rawKey = config.in === 'header'\n ? event.request.headers.get(config.name)\n : event.url.searchParams.get(config.name)\n\n if (!rawKey)\n return null\n\n const result = await iam.apiKey.verifyApiKey(rawKey)\n if (!result.success)\n return null\n\n return {\n agentId: result.data.userId,\n apiKeyId: result.data.id,\n scopes: result.data.scopes,\n }\n }\n}\n","/**\n * @h-ai/kit — A2A 路由处理器\n *\n * 提供 SvelteKit 路由工厂:Agent Card 端点和 JSON-RPC 处理端点。\n * @module kit-a2a-helpers\n */\n\nimport type { RequestEvent, RequestHandler } from '@sveltejs/kit'\n\nimport type { KitA2AHandlerConfig } from './kit-a2a-types.js'\nimport { kitM } from '../../kit-i18n.js'\nimport { createA2AApiKeyAuthenticator } from './kit-a2a-auth.js'\n\n/**\n * 创建 Agent Card GET 处理器\n *\n * 返回当前 Agent 的 Agent Card(JSON),通常挂载在 `/.well-known/agent-card.json`。\n *\n * @param getAgentCard - 获取 Agent Card 的回调(通常调用 `ai.a2a.getAgentCard()`)\n * @returns SvelteKit GET 处理器\n * @example 模块内部上下文\n * ```ts\n * const handler = createAgentCardHandler(() => ({ name: 'Example agent', url: 'https://agent.example.com/a2a' }))\n * void handler\n * ```\n */\nexport function createAgentCardHandler(\n getAgentCard: () => object,\n): RequestHandler {\n return async () => {\n const card = getAgentCard()\n return new Response(JSON.stringify(card), {\n headers: { 'Content-Type': 'application/json' },\n })\n }\n}\n\n/**\n * 创建 A2A JSON-RPC POST 处理器\n *\n * 将 SvelteKit Request 转换为 JSON-RPC body,委托给 `handleRequest` 回调处理。\n * 支持单条响应和流式(SSE)响应。\n *\n * @param handleRequest - JSON-RPC 请求处理回调(通常调用 `ai.a2a.handleRequest()`)\n * @param config - 可选配置(认证等)\n * @returns SvelteKit POST 处理器\n * @example 模块内部上下文\n * ```ts\n * function build(operations: Parameters<typeof createA2AHandler>[0]) {\n * return createA2AHandler(operations, { authenticate: async () => null })\n * }\n * ```\n */\nexport function createA2AHandler(\n handleRequest: (body: unknown, context?: Record<string, unknown>) => Promise<{\n streaming: boolean\n body?: unknown\n stream?: AsyncGenerator<unknown, void, undefined>\n }>,\n config?: KitA2AHandlerConfig,\n): RequestHandler {\n return async (event: RequestEvent) => {\n // 可选认证\n let context: Record<string, unknown> | undefined\n if (config?.authenticate) {\n const authFn = typeof config.authenticate === 'function'\n ? config.authenticate\n : createA2AApiKeyAuthenticator({ in: 'header', name: 'x-api-key' })\n const authResult = await authFn(event)\n if (!authResult)\n return Response.json({ error: { code: 'A2A_AUTH_FAILED', message: kitM('kit_a2aAuthFailed') } }, { status: 401 })\n context = authResult\n }\n\n // 解析 JSON-RPC 请求体\n let requestBody: unknown\n try {\n requestBody = await event.request.json()\n }\n catch {\n return Response.json({ jsonrpc: '2.0', id: null, error: { code: -32700, message: kitM('kit_a2aParseError') } }, { status: 400 })\n }\n const result = await handleRequest(requestBody, context)\n\n if (result.streaming && result.stream) {\n // 流式响应:SSE 格式\n const stream = result.stream\n const readableStream = new ReadableStream({\n // 按下游拉取推进迭代,避免 start 中无界预读;断开时释放生成器。\n async pull(controller) {\n try {\n const chunk = await stream.next()\n if (chunk.done)\n controller.close()\n else\n controller.enqueue(new TextEncoder().encode(`data: ${JSON.stringify(chunk.value)}\\n\\n`))\n }\n catch (error) {\n controller.error(error)\n }\n },\n async cancel() {\n await stream.return()\n },\n })\n\n return new Response(readableStream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n 'Connection': 'keep-alive',\n },\n })\n }\n\n // 单条响应\n return new Response(JSON.stringify(result.body), {\n headers: { 'Content-Type': 'application/json' },\n })\n }\n}\n","/**\n * @h-ai/kit — A2A Handle 拦截器\n *\n * 在 SvelteKit Handle Hook 中拦截 A2A 端点(Agent Card 发现 + JSON-RPC 处理),\n * 自动处理请求并返回 Response,不匹配时返回 null 由 Handle 继续后续流程。\n * @module kit-a2a-handle\n */\n\nimport type { RequestEvent } from '@sveltejs/kit'\nimport type { HandleA2AConfig, HandleA2AOperations, HandleConfig } from '../../kit-types.js'\nimport { kitM } from '../../kit-i18n.js'\nimport { createA2AApiKeyAuthenticator } from './kit-a2a-auth.js'\nimport { createA2AHandler } from './kit-a2a-helpers.js'\n\n// ─── 解析后的 A2A 内部配置 ───\n\n/**\n * A2A 解析后的内部配置\n * @example\n * ```ts\n * import type { ResolvedA2AConfig } from '@h-ai/kit'\n *\n * function paths(config: ResolvedA2AConfig) { return [config.cardPath, config.rpcPath] }\n * ```\n */\nexport interface ResolvedA2AConfig {\n operations: HandleA2AOperations\n cardPath: string\n rpcPath: string\n authenticate?: (event: RequestEvent) => Promise<Record<string, unknown> | null | undefined>\n}\n\n// ─── A2A 配置解析 ───\n\n/**\n * 解析 A2A 配置(简单模式 / 配置模式)\n *\n * - 简单模式:直接传入 `ai.a2a` 操作对象,使用默认路径\n * - 配置模式:传入 `{ operations, rpcPath?, cardPath?, authenticate? }`\n *\n * @param input - HandleConfig.a2a 配置\n * @returns 解析后的配置,或 `null` 表示未配置\n * @example 模块内部上下文\n * ```ts\n * function resolve(operations: HandleA2AOperations) {\n * return resolveA2AConfig({ operations, rpcPath: '/a2a', authenticate: async () => null })\n * }\n * ```\n */\nexport function resolveA2AConfig(\n input: HandleConfig['a2a'],\n): ResolvedA2AConfig | null {\n if (!input)\n return null\n\n // 简单模式:直接传入操作对象\n if ('getAgentCard' in input && 'handleRequest' in input) {\n return {\n operations: input as HandleA2AOperations,\n cardPath: '/.well-known/agent-card.json',\n rpcPath: '/a2a',\n }\n }\n\n // 配置模式:带 operations 字段\n const cfg = input as HandleA2AConfig\n return {\n operations: cfg.operations,\n cardPath: cfg.cardPath ?? '/.well-known/agent-card.json',\n rpcPath: cfg.rpcPath ?? '/a2a',\n authenticate: resolveAuthenticate(cfg.authenticate, cfg.operations),\n }\n}\n\n/**\n * 解析 authenticate 配置\n *\n * - `undefined` → 无认证\n * - `'apiKey'` → 从 Agent Card security 配置创建 API Key 认证器\n * - 函数 → 直接使用\n */\nfunction resolveAuthenticate(\n authenticate: HandleA2AConfig['authenticate'],\n operations: HandleA2AOperations,\n): ResolvedA2AConfig['authenticate'] {\n if (!authenticate)\n return undefined\n\n if (typeof authenticate === 'function')\n return authenticate\n\n // 'apiKey' 快捷方式:从 Agent Card 获取 security 配置\n const cardResult = operations.getAgentCard()\n const securitySchemes = cardResult.success && cardResult.data\n ? (cardResult.data as { securitySchemes?: Record<string, { type: string, in?: string, name?: string }> }).securitySchemes\n : undefined\n const apiKeyCfg = securitySchemes?.apiKey\n\n return createA2AApiKeyAuthenticator({\n in: apiKeyCfg?.in === 'query' ? 'query' : 'header',\n name: apiKeyCfg?.name ?? 'x-api-key',\n })\n}\n\n// ─── A2A 请求处理 ───\n\n/**\n * 处理 A2A 端点请求\n *\n * 匹配 Agent Card GET 和 JSON-RPC POST 端点,返回 Response。\n * 不匹配时返回 `null`,由 Handle 继续后续流程。\n *\n * @param event - SvelteKit RequestEvent\n * @param requestId - 当前请求 ID(用于响应头)\n * @param config - 解析后的 A2A 配置\n * @returns 匹配时返回 Response,不匹配返回 null\n * @example 模块内部上下文\n * ```ts\n * async function handle(event: RequestEvent, config: ResolvedA2AConfig) {\n * return handleA2ARequest(event, 'req_1', config) // null 表示路径未匹配,交给后续 handle。\n * }\n * ```\n */\nexport async function handleA2ARequest(\n event: RequestEvent,\n requestId: string,\n config: ResolvedA2AConfig,\n): Promise<Response | null> {\n const { pathname } = event.url\n\n // Agent Card 发现端点\n if (pathname === config.cardPath && event.request.method === 'GET') {\n const result = config.operations.getAgentCard()\n if (result.success) {\n return new Response(JSON.stringify(result.data), {\n headers: { 'Content-Type': 'application/json', 'X-Request-Id': requestId },\n })\n }\n return new Response(\n JSON.stringify({ error: { code: 'A2A_NOT_CONFIGURED', message: kitM('kit_a2aCardUnavailable') } }),\n { status: 503, headers: { 'Content-Type': 'application/json', 'X-Request-Id': requestId } },\n )\n }\n\n // A2A JSON-RPC 端点\n if (pathname === config.rpcPath && event.request.method === 'POST') {\n // Hook 与显式路由共享认证、JSON-RPC 错误和流式生命周期逻辑。\n const handler = createA2AHandler(\n (body, context) => config.operations.handleRequest(body, context),\n { authenticate: config.authenticate },\n )\n const response = await handler(event)\n response.headers.set('X-Request-Id', requestId)\n return response\n }\n\n return null\n}\n"]}
@@ -0,0 +1,175 @@
1
+ import { core } from '@h-ai/core';
2
+
3
+ // src/kit-i18n.ts
4
+
5
+ // messages/en-US.json
6
+ var en_US_default = {
7
+ kit_a2aAuthFailed: "A2A authentication failed",
8
+ kit_a2aParseError: "Invalid JSON request body",
9
+ kit_a2aCardUnavailable: "Agent card not available",
10
+ $schema: "https://inlang.com/schema/inlang-message-format",
11
+ kit_unauthorized: "Unauthorized",
12
+ kit_forbidden: "Forbidden: missing {permission} permission",
13
+ kit_authNotConfigured: "kit.auth is not configured: pass auth.operations in kit.createHandle()",
14
+ kit_csrfTokenFailed: "Failed to generate CSRF token",
15
+ kit_csrfVerifyFailed: "CSRF token verification failed",
16
+ kit_csrfValidationFailed: "Invalid CSRF token",
17
+ kit_rateLimitExceeded: "Too many requests, please try again later",
18
+ kit_unsupportedContentType: "Unsupported content type",
19
+ kit_parseBodyFailed: "Failed to parse request body",
20
+ kit_encryptFailed: "Encryption failed",
21
+ kit_transportKeyGenerationFailed: "Transport encryption key generation failed",
22
+ kit_transportClientKeyNotFound: "Client key not found",
23
+ kit_transportEncryptFailed: "Transport encryption failed",
24
+ kit_transportEncryptKeyFailed: "Symmetric key encryption failed",
25
+ kit_transportDecryptKeyFailed: "Symmetric key decryption failed",
26
+ kit_transportDecryptFailed: "Transport decryption failed",
27
+ kit_transportInvalidPayload: "Invalid encrypted payload",
28
+ kit_transportKeyExchangeFailed: "Key exchange failed",
29
+ kit_transportClientIdRequired: "Missing X-Client-Id header, key exchange is required for transport encryption",
30
+ kit_signFailed: "Request signing failed",
31
+ kit_authRequired: "Authentication required",
32
+ kit_accessDenied: "Access denied",
33
+ kit_resourceNotFound: "Resource not found",
34
+ kit_internalError: "Internal server error",
35
+ kit_validationFailed: "Validation failed",
36
+ kit_validationRequired: "This field is required",
37
+ kit_validationInvalid: "Invalid input format",
38
+ kit_validationInvalidType: "Invalid field type",
39
+ kit_validationStringMin: "Enter at least {min} characters",
40
+ kit_validationStringMax: "Enter at most {max} characters",
41
+ kit_validationNumberMin: "Value must be at least {min}",
42
+ kit_validationNumberMax: "Value must be at most {max}",
43
+ kit_validationArrayMin: "Select at least {min} item(s)",
44
+ kit_validationArrayMax: "Select at most {max} item(s)",
45
+ kit_validationTooSmall: "Value must be at least {min}",
46
+ kit_validationTooBig: "Value must be at most {max}",
47
+ kit_validationEmail: "Enter a valid email address",
48
+ kit_validationUrl: "Enter a valid URL",
49
+ kit_validationUuid: "Enter a valid UUID",
50
+ kit_validationEnum: "Select a valid option",
51
+ kit_noGuardsPassed: "No guards passed",
52
+ kit_requiredRoles: "Required roles: {roles}",
53
+ kit_requiredPermissions: "Required permissions: {permissions}",
54
+ kit_idRequired: "ID is required",
55
+ kit_rateLimitWindowInvalid: "The rate limit window must be an integer from 1 to 2147483647 milliseconds",
56
+ kit_rateLimitMemoryCapacity: "The development memory rate limit store is full; use a shared backend"
57
+ };
58
+
59
+ // messages/ja-JP.json
60
+ var ja_JP_default = {
61
+ kit_a2aAuthFailed: "A2A\u8A8D\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
62
+ kit_a2aParseError: "\u30EA\u30AF\u30A8\u30B9\u30C8\u672C\u6587\u304C\u6709\u52B9\u306AJSON\u3067\u306F\u3042\u308A\u307E\u305B\u3093",
63
+ kit_a2aCardUnavailable: "\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30AB\u30FC\u30C9\u3092\u5229\u7528\u3067\u304D\u307E\u305B\u3093",
64
+ $schema: "https://inlang.com/schema/inlang-message-format",
65
+ kit_unauthorized: "\u8A8D\u8A3C\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
66
+ kit_forbidden: "\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F: {permission}\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093",
67
+ kit_authNotConfigured: "kit.auth\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002kit.createHandle()\u306Bauth.operations\u3092\u6E21\u3057\u3066\u304F\u3060\u3055\u3044",
68
+ kit_csrfTokenFailed: "CSRF\u30C8\u30FC\u30AF\u30F3\u306E\u751F\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
69
+ kit_csrfVerifyFailed: "CSRF\u30C8\u30FC\u30AF\u30F3\u306E\u691C\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
70
+ kit_csrfValidationFailed: "CSRF\u30C8\u30FC\u30AF\u30F3\u304C\u7121\u52B9\u3067\u3059",
71
+ kit_rateLimitExceeded: "\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u591A\u3059\u304E\u307E\u3059\u3002\u3057\u3070\u3089\u304F\u3057\u3066\u304B\u3089\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044",
72
+ kit_unsupportedContentType: "\u672A\u5BFE\u5FDC\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u30BF\u30A4\u30D7\u3067\u3059",
73
+ kit_parseBodyFailed: "\u30EA\u30AF\u30A8\u30B9\u30C8\u672C\u6587\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
74
+ kit_encryptFailed: "\u6697\u53F7\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
75
+ kit_transportKeyGenerationFailed: "\u901A\u4FE1\u6697\u53F7\u5316\u9375\u306E\u751F\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
76
+ kit_transportClientKeyNotFound: "\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u9375\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
77
+ kit_transportEncryptFailed: "\u901A\u4FE1\u306E\u6697\u53F7\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
78
+ kit_transportEncryptKeyFailed: "\u5BFE\u79F0\u9375\u306E\u6697\u53F7\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
79
+ kit_transportDecryptKeyFailed: "\u5BFE\u79F0\u9375\u306E\u5FA9\u53F7\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
80
+ kit_transportDecryptFailed: "\u901A\u4FE1\u306E\u5FA9\u53F7\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
81
+ kit_transportInvalidPayload: "\u6697\u53F7\u5316\u30DA\u30A4\u30ED\u30FC\u30C9\u304C\u7121\u52B9\u3067\u3059",
82
+ kit_transportKeyExchangeFailed: "\u9375\u4EA4\u63DB\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
83
+ kit_transportClientIdRequired: "X-Client-Id\u30D8\u30C3\u30C0\u30FC\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u901A\u4FE1\u6697\u53F7\u5316\u306B\u306F\u9375\u4EA4\u63DB\u304C\u5FC5\u8981\u3067\u3059",
84
+ kit_signFailed: "\u30EA\u30AF\u30A8\u30B9\u30C8\u306E\u7F72\u540D\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
85
+ kit_authRequired: "\u8A8D\u8A3C\u304C\u5FC5\u8981\u3067\u3059",
86
+ kit_accessDenied: "\u30A2\u30AF\u30BB\u30B9\u304C\u62D2\u5426\u3055\u308C\u307E\u3057\u305F",
87
+ kit_resourceNotFound: "\u30EA\u30BD\u30FC\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
88
+ kit_internalError: "\u30B5\u30FC\u30D0\u30FC\u5185\u90E8\u30A8\u30E9\u30FC",
89
+ kit_validationFailed: "\u5165\u529B\u5185\u5BB9\u306E\u691C\u8A3C\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
90
+ kit_validationRequired: "\u3053\u306E\u9805\u76EE\u306F\u5FC5\u9808\u3067\u3059",
91
+ kit_validationInvalid: "\u5165\u529B\u5F62\u5F0F\u304C\u7121\u52B9\u3067\u3059",
92
+ kit_validationInvalidType: "\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u578B\u304C\u7121\u52B9\u3067\u3059",
93
+ kit_validationStringMin: "{min}\u6587\u5B57\u4EE5\u4E0A\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
94
+ kit_validationStringMax: "{max}\u6587\u5B57\u4EE5\u5185\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
95
+ kit_validationNumberMin: "{min}\u4EE5\u4E0A\u306E\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
96
+ kit_validationNumberMax: "{max}\u4EE5\u4E0B\u306E\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
97
+ kit_validationArrayMin: "{min}\u4EF6\u4EE5\u4E0A\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",
98
+ kit_validationArrayMax: "{max}\u4EF6\u4EE5\u5185\u3067\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",
99
+ kit_validationTooSmall: "{min}\u4EE5\u4E0A\u306E\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
100
+ kit_validationTooBig: "{max}\u4EE5\u4E0B\u306E\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
101
+ kit_validationEmail: "\u6709\u52B9\u306A\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
102
+ kit_validationUrl: "\u6709\u52B9\u306AURL\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
103
+ kit_validationUuid: "\u6709\u52B9\u306AUUID\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
104
+ kit_validationEnum: "\u6709\u52B9\u306A\u9078\u629E\u80A2\u3092\u9078\u3093\u3067\u304F\u3060\u3055\u3044",
105
+ kit_noGuardsPassed: "\u3069\u306E\u30AC\u30FC\u30C9\u3082\u901A\u904E\u3057\u307E\u305B\u3093\u3067\u3057\u305F",
106
+ kit_requiredRoles: "\u5FC5\u8981\u306A\u30ED\u30FC\u30EB: {roles}",
107
+ kit_requiredPermissions: "\u5FC5\u8981\u306A\u6A29\u9650: {permissions}",
108
+ kit_idRequired: "ID\u306F\u5FC5\u9808\u3067\u3059",
109
+ kit_rateLimitWindowInvalid: "\u30EC\u30FC\u30C8\u5236\u9650\u306E\u671F\u9593\u306F1\u301C2147483647\u30DF\u30EA\u79D2\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
110
+ kit_rateLimitMemoryCapacity: "\u958B\u767A\u7528\u30E1\u30E2\u30EA\u30FC\u30EC\u30FC\u30C8\u5236\u9650\u30B9\u30C8\u30A2\u304C\u6E80\u676F\u3067\u3059\u3002\u5171\u6709\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044"
111
+ };
112
+
113
+ // messages/zh-CN.json
114
+ var zh_CN_default = {
115
+ kit_a2aAuthFailed: "A2A \u8EAB\u4EFD\u8BA4\u8BC1\u5931\u8D25",
116
+ kit_a2aParseError: "\u8BF7\u6C42\u4F53\u4E0D\u662F\u6709\u6548\u7684 JSON",
117
+ kit_a2aCardUnavailable: "Agent Card \u4E0D\u53EF\u7528",
118
+ $schema: "https://inlang.com/schema/inlang-message-format",
119
+ kit_unauthorized: "\u672A\u6388\u6743",
120
+ kit_forbidden: "\u6743\u9650\u4E0D\u8DB3\uFF1A\u7F3A\u5C11 {permission} \u6743\u9650",
121
+ kit_authNotConfigured: "kit.auth \u672A\u914D\u7F6E\uFF1A\u8BF7\u5728 kit.createHandle() \u4E2D\u4F20\u5165 auth.operations",
122
+ kit_csrfTokenFailed: "\u751F\u6210 CSRF Token \u5931\u8D25",
123
+ kit_csrfVerifyFailed: "CSRF Token \u9A8C\u8BC1\u5931\u8D25",
124
+ kit_csrfValidationFailed: "CSRF Token \u65E0\u6548",
125
+ kit_rateLimitExceeded: "\u8BF7\u6C42\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5",
126
+ kit_unsupportedContentType: "\u4E0D\u652F\u6301\u7684\u5185\u5BB9\u7C7B\u578B",
127
+ kit_parseBodyFailed: "\u8BF7\u6C42\u4F53\u89E3\u6790\u5931\u8D25",
128
+ kit_encryptFailed: "\u52A0\u5BC6\u5931\u8D25",
129
+ kit_transportKeyGenerationFailed: "\u4F20\u8F93\u52A0\u5BC6\u5BC6\u94A5\u5BF9\u751F\u6210\u5931\u8D25",
130
+ kit_transportClientKeyNotFound: "\u5BA2\u6237\u7AEF\u5BC6\u94A5\u672A\u627E\u5230",
131
+ kit_transportEncryptFailed: "\u4F20\u8F93\u52A0\u5BC6\u5931\u8D25",
132
+ kit_transportEncryptKeyFailed: "\u5BF9\u79F0\u5BC6\u94A5\u52A0\u5BC6\u5931\u8D25",
133
+ kit_transportDecryptKeyFailed: "\u5BF9\u79F0\u5BC6\u94A5\u89E3\u5BC6\u5931\u8D25",
134
+ kit_transportDecryptFailed: "\u4F20\u8F93\u89E3\u5BC6\u5931\u8D25",
135
+ kit_transportInvalidPayload: "\u65E0\u6548\u7684\u52A0\u5BC6\u8F7D\u8377",
136
+ kit_transportKeyExchangeFailed: "\u5BC6\u94A5\u4EA4\u6362\u5931\u8D25",
137
+ kit_transportClientIdRequired: "\u7F3A\u5C11 X-Client-Id \u8BF7\u6C42\u5934\uFF0C\u4F20\u8F93\u52A0\u5BC6\u5FC5\u987B\u5148\u5B8C\u6210\u5BC6\u94A5\u4EA4\u6362",
138
+ kit_signFailed: "\u8BF7\u6C42\u7B7E\u540D\u5931\u8D25",
139
+ kit_authRequired: "\u9700\u8981\u8EAB\u4EFD\u8BA4\u8BC1",
140
+ kit_accessDenied: "\u62D2\u7EDD\u8BBF\u95EE",
141
+ kit_resourceNotFound: "\u8D44\u6E90\u672A\u627E\u5230",
142
+ kit_internalError: "\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF",
143
+ kit_validationFailed: "\u6570\u636E\u9A8C\u8BC1\u5931\u8D25",
144
+ kit_validationRequired: "\u6B64\u5B57\u6BB5\u5FC5\u586B",
145
+ kit_validationInvalid: "\u8F93\u5165\u683C\u5F0F\u65E0\u6548",
146
+ kit_validationInvalidType: "\u5B57\u6BB5\u7C7B\u578B\u4E0D\u6B63\u786E",
147
+ kit_validationStringMin: "\u81F3\u5C11\u8F93\u5165 {min} \u4E2A\u5B57\u7B26",
148
+ kit_validationStringMax: "\u6700\u591A\u8F93\u5165 {max} \u4E2A\u5B57\u7B26",
149
+ kit_validationNumberMin: "\u6570\u503C\u4E0D\u80FD\u5C0F\u4E8E {min}",
150
+ kit_validationNumberMax: "\u6570\u503C\u4E0D\u80FD\u5927\u4E8E {max}",
151
+ kit_validationArrayMin: "\u81F3\u5C11\u9009\u62E9 {min} \u9879",
152
+ kit_validationArrayMax: "\u6700\u591A\u9009\u62E9 {max} \u9879",
153
+ kit_validationTooSmall: "\u4E0D\u80FD\u5C0F\u4E8E {min}",
154
+ kit_validationTooBig: "\u4E0D\u80FD\u5927\u4E8E {max}",
155
+ kit_validationEmail: "\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740",
156
+ kit_validationUrl: "\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7F51\u5740",
157
+ kit_validationUuid: "\u8BF7\u8F93\u5165\u6709\u6548\u7684 UUID",
158
+ kit_validationEnum: "\u8BF7\u9009\u62E9\u6709\u6548\u9009\u9879",
159
+ kit_noGuardsPassed: "\u6CA1\u6709\u5B88\u536B\u901A\u8FC7",
160
+ kit_requiredRoles: "\u9700\u8981\u89D2\u8272\uFF1A{roles}",
161
+ kit_requiredPermissions: "\u9700\u8981\u6743\u9650\uFF1A{permissions}",
162
+ kit_idRequired: "ID \u4E0D\u80FD\u4E3A\u7A7A",
163
+ kit_rateLimitWindowInvalid: "\u9650\u6D41\u7A97\u53E3\u5FC5\u987B\u4E3A 1 \u81F3 2147483647 \u7684\u6574\u6570\u6BEB\u79D2",
164
+ kit_rateLimitMemoryCapacity: "\u5F00\u53D1\u5185\u5B58\u9650\u6D41\u5BB9\u91CF\u5DF2\u6EE1\uFF0C\u8BF7\u4F7F\u7528\u5171\u4EAB\u540E\u7AEF"
165
+ };
166
+
167
+ // src/kit-i18n.ts
168
+ var kitM = core.i18n.createMessageGetter({ "zh-CN": zh_CN_default, "en-US": en_US_default, "ja-JP": ja_JP_default });
169
+ function setAllModulesLocale(locale) {
170
+ core.i18n.setGlobalLocale(locale);
171
+ }
172
+
173
+ export { kitM, setAllModulesLocale };
174
+ //# sourceMappingURL=chunk-OVRZIDCD.js.map
175
+ //# sourceMappingURL=chunk-OVRZIDCD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../messages/en-US.json","../messages/ja-JP.json","../messages/zh-CN.json","../src/kit-i18n.ts"],"names":[],"mappings":"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","file":"chunk-OVRZIDCD.js","sourcesContent":["{\n \"kit_a2aAuthFailed\": \"A2A authentication failed\",\n \"kit_a2aParseError\": \"Invalid JSON request body\",\n \"kit_a2aCardUnavailable\": \"Agent card not available\",\n \"$schema\": \"https://inlang.com/schema/inlang-message-format\",\n \"kit_unauthorized\": \"Unauthorized\",\n \"kit_forbidden\": \"Forbidden: missing {permission} permission\",\n \"kit_authNotConfigured\": \"kit.auth is not configured: pass auth.operations in kit.createHandle()\",\n \"kit_csrfTokenFailed\": \"Failed to generate CSRF token\",\n \"kit_csrfVerifyFailed\": \"CSRF token verification failed\",\n \"kit_csrfValidationFailed\": \"Invalid CSRF token\",\n \"kit_rateLimitExceeded\": \"Too many requests, please try again later\",\n \"kit_unsupportedContentType\": \"Unsupported content type\",\n \"kit_parseBodyFailed\": \"Failed to parse request body\",\n \"kit_encryptFailed\": \"Encryption failed\",\n \"kit_transportKeyGenerationFailed\": \"Transport encryption key generation failed\",\n \"kit_transportClientKeyNotFound\": \"Client key not found\",\n \"kit_transportEncryptFailed\": \"Transport encryption failed\",\n \"kit_transportEncryptKeyFailed\": \"Symmetric key encryption failed\",\n \"kit_transportDecryptKeyFailed\": \"Symmetric key decryption failed\",\n \"kit_transportDecryptFailed\": \"Transport decryption failed\",\n \"kit_transportInvalidPayload\": \"Invalid encrypted payload\",\n \"kit_transportKeyExchangeFailed\": \"Key exchange failed\",\n \"kit_transportClientIdRequired\": \"Missing X-Client-Id header, key exchange is required for transport encryption\",\n \"kit_signFailed\": \"Request signing failed\",\n \"kit_authRequired\": \"Authentication required\",\n \"kit_accessDenied\": \"Access denied\",\n \"kit_resourceNotFound\": \"Resource not found\",\n \"kit_internalError\": \"Internal server error\",\n \"kit_validationFailed\": \"Validation failed\",\n \"kit_validationRequired\": \"This field is required\",\n \"kit_validationInvalid\": \"Invalid input format\",\n \"kit_validationInvalidType\": \"Invalid field type\",\n \"kit_validationStringMin\": \"Enter at least {min} characters\",\n \"kit_validationStringMax\": \"Enter at most {max} characters\",\n \"kit_validationNumberMin\": \"Value must be at least {min}\",\n \"kit_validationNumberMax\": \"Value must be at most {max}\",\n \"kit_validationArrayMin\": \"Select at least {min} item(s)\",\n \"kit_validationArrayMax\": \"Select at most {max} item(s)\",\n \"kit_validationTooSmall\": \"Value must be at least {min}\",\n \"kit_validationTooBig\": \"Value must be at most {max}\",\n \"kit_validationEmail\": \"Enter a valid email address\",\n \"kit_validationUrl\": \"Enter a valid URL\",\n \"kit_validationUuid\": \"Enter a valid UUID\",\n \"kit_validationEnum\": \"Select a valid option\",\n \"kit_noGuardsPassed\": \"No guards passed\",\n \"kit_requiredRoles\": \"Required roles: {roles}\",\n \"kit_requiredPermissions\": \"Required permissions: {permissions}\",\n \"kit_idRequired\": \"ID is required\",\n \"kit_rateLimitWindowInvalid\": \"The rate limit window must be an integer from 1 to 2147483647 milliseconds\",\n \"kit_rateLimitMemoryCapacity\": \"The development memory rate limit store is full; use a shared backend\"\n}\n","{\n \"kit_a2aAuthFailed\": \"A2A認証に失敗しました\",\n \"kit_a2aParseError\": \"リクエスト本文が有効なJSONではありません\",\n \"kit_a2aCardUnavailable\": \"エージェントカードを利用できません\",\n \"$schema\": \"https://inlang.com/schema/inlang-message-format\",\n \"kit_unauthorized\": \"認証されていません\",\n \"kit_forbidden\": \"アクセスが拒否されました: {permission}権限がありません\",\n \"kit_authNotConfigured\": \"kit.authが設定されていません。kit.createHandle()にauth.operationsを渡してください\",\n \"kit_csrfTokenFailed\": \"CSRFトークンの生成に失敗しました\",\n \"kit_csrfVerifyFailed\": \"CSRFトークンの検証に失敗しました\",\n \"kit_csrfValidationFailed\": \"CSRFトークンが無効です\",\n \"kit_rateLimitExceeded\": \"リクエストが多すぎます。しばらくしてから再試行してください\",\n \"kit_unsupportedContentType\": \"未対応のコンテンツタイプです\",\n \"kit_parseBodyFailed\": \"リクエスト本文の解析に失敗しました\",\n \"kit_encryptFailed\": \"暗号化に失敗しました\",\n \"kit_transportKeyGenerationFailed\": \"通信暗号化鍵の生成に失敗しました\",\n \"kit_transportClientKeyNotFound\": \"クライアント鍵が見つかりません\",\n \"kit_transportEncryptFailed\": \"通信の暗号化に失敗しました\",\n \"kit_transportEncryptKeyFailed\": \"対称鍵の暗号化に失敗しました\",\n \"kit_transportDecryptKeyFailed\": \"対称鍵の復号に失敗しました\",\n \"kit_transportDecryptFailed\": \"通信の復号に失敗しました\",\n \"kit_transportInvalidPayload\": \"暗号化ペイロードが無効です\",\n \"kit_transportKeyExchangeFailed\": \"鍵交換に失敗しました\",\n \"kit_transportClientIdRequired\": \"X-Client-Idヘッダーがありません。通信暗号化には鍵交換が必要です\",\n \"kit_signFailed\": \"リクエストの署名に失敗しました\",\n \"kit_authRequired\": \"認証が必要です\",\n \"kit_accessDenied\": \"アクセスが拒否されました\",\n \"kit_resourceNotFound\": \"リソースが見つかりません\",\n \"kit_internalError\": \"サーバー内部エラー\",\n \"kit_validationFailed\": \"入力内容の検証に失敗しました\",\n \"kit_validationRequired\": \"この項目は必須です\",\n \"kit_validationInvalid\": \"入力形式が無効です\",\n \"kit_validationInvalidType\": \"フィールドの型が無効です\",\n \"kit_validationStringMin\": \"{min}文字以上で入力してください\",\n \"kit_validationStringMax\": \"{max}文字以内で入力してください\",\n \"kit_validationNumberMin\": \"{min}以上の値を入力してください\",\n \"kit_validationNumberMax\": \"{max}以下の値を入力してください\",\n \"kit_validationArrayMin\": \"{min}件以上選択してください\",\n \"kit_validationArrayMax\": \"{max}件以内で選択してください\",\n \"kit_validationTooSmall\": \"{min}以上の値を入力してください\",\n \"kit_validationTooBig\": \"{max}以下の値を入力してください\",\n \"kit_validationEmail\": \"有効なメールアドレスを入力してください\",\n \"kit_validationUrl\": \"有効なURLを入力してください\",\n \"kit_validationUuid\": \"有効なUUIDを入力してください\",\n \"kit_validationEnum\": \"有効な選択肢を選んでください\",\n \"kit_noGuardsPassed\": \"どのガードも通過しませんでした\",\n \"kit_requiredRoles\": \"必要なロール: {roles}\",\n \"kit_requiredPermissions\": \"必要な権限: {permissions}\",\n \"kit_idRequired\": \"IDは必須です\",\n \"kit_rateLimitWindowInvalid\": \"レート制限の期間は1〜2147483647ミリ秒の整数で指定してください\",\n \"kit_rateLimitMemoryCapacity\": \"開発用メモリーレート制限ストアが満杯です。共有バックエンドを使用してください\"\n}\n","{\n \"kit_a2aAuthFailed\": \"A2A 身份认证失败\",\n \"kit_a2aParseError\": \"请求体不是有效的 JSON\",\n \"kit_a2aCardUnavailable\": \"Agent Card 不可用\",\n \"$schema\": \"https://inlang.com/schema/inlang-message-format\",\n \"kit_unauthorized\": \"未授权\",\n \"kit_forbidden\": \"权限不足:缺少 {permission} 权限\",\n \"kit_authNotConfigured\": \"kit.auth 未配置:请在 kit.createHandle() 中传入 auth.operations\",\n \"kit_csrfTokenFailed\": \"生成 CSRF Token 失败\",\n \"kit_csrfVerifyFailed\": \"CSRF Token 验证失败\",\n \"kit_csrfValidationFailed\": \"CSRF Token 无效\",\n \"kit_rateLimitExceeded\": \"请求过于频繁,请稍后再试\",\n \"kit_unsupportedContentType\": \"不支持的内容类型\",\n \"kit_parseBodyFailed\": \"请求体解析失败\",\n \"kit_encryptFailed\": \"加密失败\",\n \"kit_transportKeyGenerationFailed\": \"传输加密密钥对生成失败\",\n \"kit_transportClientKeyNotFound\": \"客户端密钥未找到\",\n \"kit_transportEncryptFailed\": \"传输加密失败\",\n \"kit_transportEncryptKeyFailed\": \"对称密钥加密失败\",\n \"kit_transportDecryptKeyFailed\": \"对称密钥解密失败\",\n \"kit_transportDecryptFailed\": \"传输解密失败\",\n \"kit_transportInvalidPayload\": \"无效的加密载荷\",\n \"kit_transportKeyExchangeFailed\": \"密钥交换失败\",\n \"kit_transportClientIdRequired\": \"缺少 X-Client-Id 请求头,传输加密必须先完成密钥交换\",\n \"kit_signFailed\": \"请求签名失败\",\n \"kit_authRequired\": \"需要身份认证\",\n \"kit_accessDenied\": \"拒绝访问\",\n \"kit_resourceNotFound\": \"资源未找到\",\n \"kit_internalError\": \"内部服务器错误\",\n \"kit_validationFailed\": \"数据验证失败\",\n \"kit_validationRequired\": \"此字段必填\",\n \"kit_validationInvalid\": \"输入格式无效\",\n \"kit_validationInvalidType\": \"字段类型不正确\",\n \"kit_validationStringMin\": \"至少输入 {min} 个字符\",\n \"kit_validationStringMax\": \"最多输入 {max} 个字符\",\n \"kit_validationNumberMin\": \"数值不能小于 {min}\",\n \"kit_validationNumberMax\": \"数值不能大于 {max}\",\n \"kit_validationArrayMin\": \"至少选择 {min} 项\",\n \"kit_validationArrayMax\": \"最多选择 {max} 项\",\n \"kit_validationTooSmall\": \"不能小于 {min}\",\n \"kit_validationTooBig\": \"不能大于 {max}\",\n \"kit_validationEmail\": \"请输入有效的邮箱地址\",\n \"kit_validationUrl\": \"请输入有效的网址\",\n \"kit_validationUuid\": \"请输入有效的 UUID\",\n \"kit_validationEnum\": \"请选择有效选项\",\n \"kit_noGuardsPassed\": \"没有守卫通过\",\n \"kit_requiredRoles\": \"需要角色:{roles}\",\n \"kit_requiredPermissions\": \"需要权限:{permissions}\",\n \"kit_idRequired\": \"ID 不能为空\",\n \"kit_rateLimitWindowInvalid\": \"限流窗口必须为 1 至 2147483647 的整数毫秒\",\n \"kit_rateLimitMemoryCapacity\": \"开发内存限流容量已满,请使用共享后端\"\n}\n","/**\n * @h-ai/kit — i18n 工具\n *\n * Kit 模块的国际化消息工具,从 @h-ai/core 调用 i18n API。\n * @module kit-i18n\n */\n\nimport { core } from '@h-ai/core'\nimport messagesEnUS from '../messages/en-US.json'\nimport messagesJaJP from '../messages/ja-JP.json'\nimport messagesZhCN from '../messages/zh-CN.json'\n\n/**\n * Kit 中英日消息字典的合法 key 联合。\n * @example 模块内部上下文\n * ```ts\n * const key: KitMessageKey = 'kit_accessDenied'\n * const message = kitM(key)\n * void message\n * ```\n */\ntype KitMessageKey = keyof typeof messagesZhCN\n\n/**\n * 获取 Kit 模块的 i18n 消息\n * @example 模块内部上下文\n * ```ts\n * const message = kitM('kit_accessDenied', { locale: 'en-US' })\n * void message\n * ```\n */\nexport const kitM\n = core.i18n.createMessageGetter<KitMessageKey>({ 'zh-CN': messagesZhCN, 'en-US': messagesEnUS, 'ja-JP': messagesJaJP })\n\n/**\n * 设置浏览器应用语言或 Node 启动默认语言;请求中只更新当前 runWithLocale 上下文。\n *\n * 通过 @h-ai/core 的集中式 locale 管理器,一次调用即可同步所有模块。\n * 各模块的 createMessageGetter 优先读取当前 Node 请求上下文;SSR 必须包裹实际 resolve。\n * @param locale - 支持的应用默认语言;请求中应使用上下文隔离。\n * @example\n * ```ts\n * import { kit } from '@h-ai/kit'\n *\n * // 应用启动时设置默认语言;请求内使用 runWithLocale。\n * kit.i18n.setLocale('en-US')\n * ```\n */\nexport function setAllModulesLocale(locale: string): void {\n core.i18n.setGlobalLocale(locale)\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { resolveTransportPath, DEFAULT_TRANSPORT_KEY_EXCHANGE_PATH, shouldUseTransportForUrl } from './chunk-NVYIUBU7.js';
2
- import { kitM } from './chunk-QHYNL24G.js';
1
+ import { resolveTransportPath, DEFAULT_TRANSPORT_KEY_EXCHANGE_PATH, shouldUseTransportForUrl } from './chunk-XC7I2L3G.js';
2
+ import { kitM } from './chunk-OVRZIDCD.js';
3
3
  import process from 'process';
4
4
  import { ok, err } from '@h-ai/core';
5
5
  import { TRANSPORT_PROTOCOL } from '@h-ai/crypto';
@@ -53,7 +53,8 @@ function setToken(cookies, token, maxAge) {
53
53
  path: "/",
54
54
  httpOnly: true,
55
55
  sameSite: "lax",
56
- secure: process.env.NODE_ENV === "production",
56
+ // 测试开关仅放宽共享状态要求,不降低生产凭证 Cookie 的传输安全。
57
+ secure: process.env.NODE_ENV === "production" || process.env.HAI_CORE_ENV === "production",
57
58
  maxAge
58
59
  });
59
60
  }
@@ -97,33 +98,16 @@ async function registerAndLogin(cookies, options) {
97
98
  return runAuthLogin(cookies, options, (ops, input) => ops.registerAndLogin(input));
98
99
  }
99
100
  async function logout(cookies, accessToken) {
100
- const ops = getAuthOperations();
101
- if (accessToken && ops) {
102
- await ops.logout(accessToken);
101
+ try {
102
+ if (!accessToken)
103
+ return ok(void 0);
104
+ const ops = getAuthOperations();
105
+ if (!ops)
106
+ return authNotConfiguredError();
107
+ return await ops.logout(accessToken);
108
+ } finally {
109
+ clearToken(cookies);
103
110
  }
104
- clearToken(cookies);
105
- }
106
- function createTokenStore(key = DEFAULT_TOKEN_COOKIE_NAME) {
107
- return {
108
- get() {
109
- if (typeof window === "undefined") {
110
- return null;
111
- }
112
- return window.localStorage.getItem(key);
113
- },
114
- set(token) {
115
- if (typeof window === "undefined") {
116
- return;
117
- }
118
- window.localStorage.setItem(key, token);
119
- },
120
- clear() {
121
- if (typeof window === "undefined") {
122
- return;
123
- }
124
- window.localStorage.removeItem(key);
125
- }
126
- };
127
111
  }
128
112
  function setBrowserToken(token) {
129
113
  defaultBrowserTokenStore.set(token);
@@ -177,7 +161,8 @@ function installBrowserTransportFetch(transportConfig) {
177
161
  const keyExchangePath = resolveTransportPath(keyExchangeUrl, origin);
178
162
  const transportClient = transportConfig.crypto.transport.createClient({
179
163
  keyExchangeUrl,
180
- fetch: originalFetch
164
+ fetch: originalFetch,
165
+ maxPlaintextBytes: transportConfig.maxPlaintextBytes
181
166
  });
182
167
  const wrappedFetch = async (input, init) => {
183
168
  const request = toRequest(input, init);
@@ -223,13 +208,15 @@ function createKitClient(config = {}) {
223
208
  const transportKeyExchangePath = transportConfig ? resolveTransportPath(transportKeyExchangeUrl, transportOrigin) : DEFAULT_TRANSPORT_KEY_EXCHANGE_PATH;
224
209
  const transportClient = transportConfig ? transportConfig.crypto.transport.createClient({
225
210
  keyExchangeUrl: transportKeyExchangeUrl,
226
- fetch
211
+ fetch,
212
+ maxPlaintextBytes: transportConfig.maxPlaintextBytes
227
213
  }) : null;
228
- async function apiFetch(url, init = {}) {
229
- const method = (init.method ?? "GET").toUpperCase();
214
+ async function apiFetch(input, init = {}) {
215
+ const request = input instanceof Request ? input : void 0;
216
+ const method = (init.method ?? request?.method ?? "GET").toUpperCase();
230
217
  const isWriteMethod = !["GET", "HEAD", "OPTIONS"].includes(method);
231
- const canUseTransport = canEncryptRequestBody(init.body);
232
- const headers = new Headers(init.headers);
218
+ const headers = new Headers(init.headers ?? request?.headers);
219
+ const canUseTransport = request && init.body === void 0 ? canUseTransportForRequest({ method, headers, body: request.body }) : canEncryptRequestBody(init.body);
233
220
  if (authStore) {
234
221
  const token = authStore.get();
235
222
  if (token) {
@@ -242,14 +229,14 @@ function createKitClient(config = {}) {
242
229
  headers.set(csrfHeaderName, csrfToken);
243
230
  }
244
231
  }
245
- if (transportClient && canUseTransport && shouldUseTransportForUrl(url, {
232
+ if (transportClient && canUseTransport && shouldUseTransportForUrl(request?.url ?? (input instanceof URL ? input : String(input)), {
246
233
  origin: transportOrigin,
247
234
  keyExchangePath: transportKeyExchangePath,
248
235
  excludePaths: transportConfig?.excludePaths
249
236
  })) {
250
- return transportClient.encryptedFetch(url, { ...init, headers });
237
+ return transportClient.encryptedFetch(input, { ...init, headers });
251
238
  }
252
- return fetch(url, { ...init, headers });
239
+ return fetch(input, { ...init, headers });
253
240
  }
254
241
  return {
255
242
  apiFetch,
@@ -286,7 +273,7 @@ function createKitAuthActions(options = {}) {
286
273
  return post("login/ldap", { username: input.identifier, password: input.password });
287
274
  if (input.method === "email" || input.method === "sms")
288
275
  return post("login/otp", { identifier: input.identifier, code: input.code });
289
- return post("login", { identifier: input.identifier, password: input.password, rememberMe: input.rememberMe });
276
+ return post("login", { identifier: input.identifier, password: input.password });
290
277
  },
291
278
  register: (input) => post("register", { ...input, confirmPassword: input.password }),
292
279
  sendOtp: (identifier) => post("otp/send", { identifier }),
@@ -295,6 +282,6 @@ function createKitAuthActions(options = {}) {
295
282
  };
296
283
  }
297
284
 
298
- export { clearBrowserToken, configureAuth, createKitAuthActions, createKitClient, createTokenStore, getAccessToken, installBrowserTransport, installBrowserTransportFetch, login, loginWithApiKey, loginWithLdap, loginWithOtp, logout, registerAndLogin, setBrowserToken };
299
- //# sourceMappingURL=chunk-VOTDAVCB.js.map
300
- //# sourceMappingURL=chunk-VOTDAVCB.js.map
285
+ export { clearBrowserToken, configureAuth, createKitAuthActions, createKitClient, getAccessToken, installBrowserTransport, installBrowserTransportFetch, login, loginWithApiKey, loginWithLdap, loginWithOtp, logout, registerAndLogin, setBrowserToken };
286
+ //# sourceMappingURL=chunk-QNLZLTVC.js.map
287
+ //# sourceMappingURL=chunk-QNLZLTVC.js.map