nextclaw 0.17.9 → 0.17.11

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 (72) hide show
  1. package/dist/cli/index.js +167 -91
  2. package/package.json +12 -12
  3. package/ui-dist/assets/{ChannelsList-D8p4OlM6.js → ChannelsList-KIQIxluX.js} +1 -1
  4. package/ui-dist/assets/{DocBrowser-Cse_F8Nn.js → DocBrowser-BMxf9CIK.js} +1 -1
  5. package/ui-dist/assets/DocBrowser-CyDgAtO9.js +1 -0
  6. package/ui-dist/assets/{DocBrowserContext-Bai1WU2H.js → DocBrowserContext-Ce28gRXt.js} +1 -1
  7. package/ui-dist/assets/{LogoBadge-BdxMPc9v.js → LogoBadge-o92MOA2L.js} +1 -1
  8. package/ui-dist/assets/{MarketplacePage-BbpAkllU.js → MarketplacePage-BySqkYDh.js} +1 -1
  9. package/ui-dist/assets/MarketplacePage-C0olZaek.js +1 -0
  10. package/ui-dist/assets/{McpMarketplacePage-CxPFOgxv.js → McpMarketplacePage-DqKaiXO9.js} +1 -1
  11. package/ui-dist/assets/{ModelConfig-3GLqQ5GY.js → ModelConfig-IrmzoslW.js} +1 -1
  12. package/ui-dist/assets/{ProviderScopedModelInput-BYNouw-i.js → ProviderScopedModelInput-CmTIzgI7.js} +1 -1
  13. package/ui-dist/assets/{ProvidersList-BR1gJ4Dm.js → ProvidersList-8_Kalfwl.js} +1 -1
  14. package/ui-dist/assets/{RemoteAccessPage-DyYVWsyK.js → RemoteAccessPage-CyQlSjPf.js} +1 -1
  15. package/ui-dist/assets/RuntimeConfig-Bk0uYBhf.js +1 -0
  16. package/ui-dist/assets/{SearchConfig-DTeJvp8m.js → SearchConfig-DNBR-UbE.js} +1 -1
  17. package/ui-dist/assets/{SecretsConfig-CCYO6NcV.js → SecretsConfig-Ba1RPJaG.js} +1 -1
  18. package/ui-dist/assets/{SessionsConfig-Du39vDgt.js → SessionsConfig-Doqp5ghH.js} +1 -1
  19. package/ui-dist/assets/{app-query-client-Dr5d-K8d.js → app-query-client-DniXoIN5.js} +1 -1
  20. package/ui-dist/assets/{book-open-Da4OEPqB.js → book-open-DocgeQtR.js} +1 -1
  21. package/ui-dist/assets/chat-page-Bph8M5zo.js +58 -0
  22. package/ui-dist/assets/chat-session-display-CoN3Wmn-.js +1 -0
  23. package/ui-dist/assets/{chunk-JZWAC4HX-CoFVxHXV.js → chunk-JZWAC4HX-BvKvh1R8.js} +1 -1
  24. package/ui-dist/assets/{client-CSk58DcF.js → client-CVqPF5ie.js} +1 -1
  25. package/ui-dist/assets/{config-D8KzikVB.js → config-Bop2oB18.js} +1 -1
  26. package/ui-dist/assets/{createLucideIcon-83gaZMtv.js → createLucideIcon-DVv8taGY.js} +1 -1
  27. package/ui-dist/assets/desktop-update-config-1KBrqLBC.js +1 -0
  28. package/ui-dist/assets/{dist-toEYs-MZ.js → dist-Da5Gm_pO.js} +1 -1
  29. package/ui-dist/assets/{dist-aTmhMDVh.js → dist-DmAlInRu.js} +1 -1
  30. package/ui-dist/assets/{external-link-QQ0TC6X4.js → external-link-DFjw3x1B.js} +1 -1
  31. package/ui-dist/assets/{hash-DaFBEkmi.js → hash-DJtaCejM.js} +1 -1
  32. package/ui-dist/assets/i18n-CwHZ-9vt.js +1 -0
  33. package/ui-dist/assets/{index-CE4N7ItL.css → index-DafCdM4F.css} +1 -1
  34. package/ui-dist/assets/{index-riX7Sg0_.js → index-DdksE6U3.js} +3 -3
  35. package/ui-dist/assets/{infiniteQueryBehavior-BmHX_ayZ.js → infiniteQueryBehavior-DHSEQ3OH.js} +1 -1
  36. package/ui-dist/assets/loader-circle-PsSP0H9n.js +1 -0
  37. package/ui-dist/assets/{logos-Dzlz30M3.js → logos-DEFUIR12.js} +1 -1
  38. package/ui-dist/assets/{page-layout-D2eRufRQ.js → page-layout-Da3i3r6G.js} +1 -1
  39. package/ui-dist/assets/play-DBQbBxTA.js +1 -0
  40. package/ui-dist/assets/plus-DUOVbsyQ.js +1 -0
  41. package/ui-dist/assets/{popover-BSXxm5bj.js → popover-C_mWOFzI.js} +1 -1
  42. package/ui-dist/assets/{refresh-ccw-B3zMtN-_.js → refresh-ccw-D6HkNtfz.js} +1 -1
  43. package/ui-dist/assets/{refresh-cw-DlZkIHnJ.js → refresh-cw-DRcvRrnc.js} +1 -1
  44. package/ui-dist/assets/rotate-cw-BmDKfXtH.js +1 -0
  45. package/ui-dist/assets/{save-Us9fg4Sj.js → save-DHGmi2e9.js} +1 -1
  46. package/ui-dist/assets/search-MChQRYR1.js +1 -0
  47. package/ui-dist/assets/{security-config-BGWYwxNr.js → security-config-CbXfPZzr.js} +1 -1
  48. package/ui-dist/assets/{select-DLYqySQK.js → select-Caud8QvU.js} +1 -1
  49. package/ui-dist/assets/skeleton-B-4vRq_Z.js +1 -0
  50. package/ui-dist/assets/{status-dot-DGayudyB.js → status-dot-DurKKSwA.js} +1 -1
  51. package/ui-dist/assets/{switch-Dz2ScsKx.js → switch-0rmPBRKI.js} +1 -1
  52. package/ui-dist/assets/{tabs-custom-CdKyjiGk.js → tabs-custom-5JLVL6v8.js} +1 -1
  53. package/ui-dist/assets/{trash-2-Db-mZOZs.js → trash-2-C6caKPoz.js} +1 -1
  54. package/ui-dist/assets/{use-infinite-scroll-loader-DBJX5hj0.js → use-infinite-scroll-loader-dwnaa_qi.js} +1 -1
  55. package/ui-dist/assets/{useConfirmDialog-DL0a-oGC.js → useConfirmDialog-mMeWD_yo.js} +1 -1
  56. package/ui-dist/assets/{useMutation-BdZm-9PL.js → useMutation-BmxxvCNf.js} +1 -1
  57. package/ui-dist/assets/x-DuMhMATD.js +1 -0
  58. package/ui-dist/index.html +20 -20
  59. package/ui-dist/assets/ChatPage-A45t1Rmf.js +0 -58
  60. package/ui-dist/assets/DocBrowser-B2MpsnU9.js +0 -1
  61. package/ui-dist/assets/MarketplacePage-BNZ3Jx5d.js +0 -1
  62. package/ui-dist/assets/RuntimeConfig-ChdfK4Y_.js +0 -1
  63. package/ui-dist/assets/chat-session-display-CAlPrnlV.js +0 -1
  64. package/ui-dist/assets/desktop-update-config-CfoVwf-w.js +0 -1
  65. package/ui-dist/assets/i18n-C3jb83S6.js +0 -1
  66. package/ui-dist/assets/loader-circle-BjMg63eu.js +0 -1
  67. package/ui-dist/assets/plus-CIXME2pD.js +0 -1
  68. package/ui-dist/assets/search-B_Qr0f6C.js +0 -1
  69. package/ui-dist/assets/skeleton-CYQJazv6.js +0 -1
  70. package/ui-dist/assets/x-B8Tho_xC.js +0 -1
  71. /package/ui-dist/assets/{config-hints-GSUMvmSo.js → config-hints-BZoDjXye.js} +0 -0
  72. /package/ui-dist/assets/{config-layout-CgBMG7OL.js → config-layout-DmlGaay2.js} +0 -0
package/dist/cli/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from "node:module";
3
3
  import * as NextclawCore from "@nextclaw/core";
4
- import { APP_NAME, APP_TAGLINE, AgentRouteResolver, BUILTIN_MAIN_AGENT_ID, ChannelManager, CommandRegistry, ConfigSchema, ContextBuilder, CronService, CronTool, DEFAULT_WORKSPACE_DIR, DEFAULT_WORKSPACE_PATH, DisposableStore, EditFileTool, ExecTool, ExtensionToolAdapter, FileLogSink, GatewayTool, InputBudgetPruner, LLMProvider, ListDirTool, MemoryGetTool, MemorySearchTool, MessageBus, MessageTool, ProviderManager, ReadFileTool, SessionManager, SessionsHistoryTool, SessionsListTool, SkillsLoader, Tool, ToolRegistry, WebFetchTool, WebSearchTool, WriteFileTool, buildConfigSchema, buildMinimalSystemExecutionPrompt, buildReloadPlan, buildToolCatalogEntries, createAgentProfile, createAssistantStreamDeltaControlMessage, createAssistantStreamResetControlMessage, createExternalCommandEnv, createTypingStopControlMessage, diffConfigPaths, expandHome, findEffectiveAgentProfile, getAppLogger, getConfigPath, getDataDir, getLoggingRuntime, getLogsPath, getPackageVersion, getWorkspacePath, hasSecretRef, loadConfig, normalizeInlineSecretRefs, parseAgentScopedSessionKey, parseThinkingLevel, readSessionProjectRoot, redactConfigObject, removeAgentProfile, resolveAppLogPath, resolveConfigSecrets, resolveDefaultAgentProfileId, resolveEffectiveAgentProfiles, resolveLocalUiBaseUrl, resolveSessionWorkspacePath, resolveThinkingLevel, saveConfig, toDisposable, updateAgentProfile } from "@nextclaw/core";
4
+ import { APP_NAME, APP_TAGLINE, AgentRouteResolver, BUILTIN_MAIN_AGENT_ID, ChannelManager, CommandRegistry, ConfigSchema, ContextBuilder, CronService, CronTool, DEFAULT_WORKSPACE_DIR, DEFAULT_WORKSPACE_PATH, DisposableStore, EditFileTool, ExecTool, ExtensionToolAdapter, FileLogSink, GatewayTool, InputBudgetPruner, LLMProvider, ListDirTool, MemoryGetTool, MemorySearchTool, MessageBus, MessageTool, ProviderManager, ReadFileTool, RequestedSkillsMetadataReader, SessionManager, SessionsHistoryTool, SessionsListTool, SkillsLoader, Tool, ToolRegistry, WebFetchTool, WebSearchTool, WriteFileTool, buildConfigSchema, buildMinimalSystemExecutionPrompt, buildReloadPlan, buildToolCatalogEntries, createAgentProfile, createAssistantStreamDeltaControlMessage, createAssistantStreamResetControlMessage, createExternalCommandEnv, createTypingStopControlMessage, diffConfigPaths, expandHome, findEffectiveAgentProfile, getAppLogger, getConfigPath, getDataDir, getLoggingRuntime, getLogsPath, getPackageVersion, getWorkspacePath, hasSecretRef, loadConfig, normalizeInlineSecretRefs, parseAgentScopedSessionKey, parseThinkingLevel, readSessionProjectRoot, redactConfigObject, removeAgentProfile, resolveAppLogPath, resolveConfigSecrets, resolveDefaultAgentProfileId, resolveEffectiveAgentProfiles, resolveLocalUiBaseUrl, resolveSessionWorkspacePath, resolveThinkingLevel, saveConfig, toDisposable, updateAgentProfile } from "@nextclaw/core";
5
5
  import { Command } from "commander";
6
6
  import fs, { appendFileSync, closeSync, cpSync, existsSync, mkdirSync, openSync, readFileSync, readdirSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
7
7
  import path, { basename, dirname, extname, isAbsolute, join, relative, resolve } from "node:path";
@@ -19,7 +19,7 @@ import { request } from "node:http";
19
19
  import { request as request$1 } from "node:https";
20
20
  import { setImmediate as setImmediate$1, setTimeout as setTimeout$1 } from "node:timers/promises";
21
21
  import chokidar from "chokidar";
22
- import { DefaultNcpAgentRuntime, LocalAssetStore, buildAssetContentPath, buildNcpUserContent } from "@nextclaw/ncp-agent-runtime";
22
+ import { DefaultNcpAgentRuntime, LocalAssetStore, buildAssetContentPath, buildNcpUserContent, buildOpenAiFunctionTool } from "@nextclaw/ncp-agent-runtime";
23
23
  import { McpNcpToolRegistryAdapter } from "@nextclaw/ncp-mcp";
24
24
  import { NCP_INTERNAL_VISIBILITY_METADATA_KEY, NcpEventType, readAssistantReasoningNormalizationMode, readAssistantReasoningNormalizationModeFromMetadata, sanitizeAssistantReplyTags, writeAssistantReasoningNormalizationModeToMetadata } from "@nextclaw/ncp";
25
25
  import { DefaultNcpAgentBackend, createAgentClientFromServer } from "@nextclaw/ncp-toolkit";
@@ -10343,7 +10343,7 @@ var RemoteAccessHost = class {
10343
10343
  };
10344
10344
  };
10345
10345
  //#endregion
10346
- //#region src/cli/commands/service-support/runtime/service-remote-access.ts
10346
+ //#region src/cli/commands/service-support/ui/service-remote-access.service.ts
10347
10347
  function requestManagedServiceRestart(requestRestart, options = {}) {
10348
10348
  const uiPort = typeof options.uiPort === "number" && Number.isFinite(options.uiPort) ? Math.floor(options.uiPort) : void 0;
10349
10349
  return requestRestart({
@@ -10355,27 +10355,122 @@ function requestManagedServiceRestart(requestRestart, options = {}) {
10355
10355
  });
10356
10356
  }
10357
10357
  function createRemoteAccessHost(params) {
10358
- const currentLocalOrigin = `http://127.0.0.1:${params.uiConfig.port}`;
10358
+ const { remoteModule, requestRestart, serviceCommands, uiConfig } = params;
10359
10359
  return new RemoteAccessHost({
10360
- serviceCommands: params.serviceCommands,
10361
- requestManagedServiceRestart: (options) => requestManagedServiceRestart(params.requestRestart, options),
10362
- remoteCommands: new RemoteCommands({ currentLocalOrigin }),
10360
+ serviceCommands,
10361
+ requestManagedServiceRestart: (options) => requestManagedServiceRestart(requestRestart, options),
10362
+ remoteCommands: new RemoteCommands({ currentLocalOrigin: `http://127.0.0.1:${uiConfig.port}` }),
10363
10363
  platformAuthCommands: new PlatformAuthCommands(),
10364
- currentUi: params.uiConfig,
10365
- remoteRuntimeController: params.remoteModule ? {
10364
+ currentUi: uiConfig,
10365
+ remoteRuntimeController: remoteModule ? {
10366
10366
  start: async () => {
10367
- params.remoteModule?.start();
10367
+ remoteModule?.start();
10368
10368
  },
10369
10369
  stop: async () => {
10370
- await params.remoteModule?.stop();
10370
+ await remoteModule?.stop();
10371
10371
  },
10372
10372
  restart: async () => {
10373
- await params.remoteModule?.restart();
10373
+ await remoteModule?.restart();
10374
10374
  }
10375
10375
  } : null
10376
10376
  });
10377
10377
  }
10378
10378
  //#endregion
10379
+ //#region src/cli/commands/service-support/ui/runtime-control-host.service.ts
10380
+ const MANAGED_SERVICE_OWNER_LABEL = "Managed local service";
10381
+ const DESKTOP_APP_ONLY_REASON = "App restart is only available in the desktop shell.";
10382
+ const RUNNING_PAGE_START_REASON = "This page is already hosted by the running local service.";
10383
+ var RuntimeControlHost = class {
10384
+ constructor(deps) {
10385
+ this.deps = deps;
10386
+ }
10387
+ getControl = () => {
10388
+ const service = resolveRemoteServiceView(this.deps.uiConfig);
10389
+ const serviceRunning = service.running;
10390
+ return {
10391
+ environment: "managed-local-service",
10392
+ lifecycle: serviceRunning ? "healthy" : "unavailable",
10393
+ serviceState: serviceRunning ? "running" : "stopped",
10394
+ canStartService: {
10395
+ available: !serviceRunning,
10396
+ requiresConfirmation: false,
10397
+ impact: "brief-ui-disconnect",
10398
+ ...serviceRunning ? { reasonIfUnavailable: RUNNING_PAGE_START_REASON } : {}
10399
+ },
10400
+ canRestartService: {
10401
+ available: serviceRunning,
10402
+ requiresConfirmation: false,
10403
+ impact: "brief-ui-disconnect",
10404
+ ...!serviceRunning ? { reasonIfUnavailable: "The local service is not running." } : {}
10405
+ },
10406
+ canStopService: {
10407
+ available: serviceRunning,
10408
+ requiresConfirmation: true,
10409
+ impact: "brief-ui-disconnect",
10410
+ ...!serviceRunning ? { reasonIfUnavailable: "The local service is already stopped." } : {}
10411
+ },
10412
+ canRestartApp: {
10413
+ available: false,
10414
+ requiresConfirmation: true,
10415
+ impact: "full-app-relaunch",
10416
+ reasonIfUnavailable: DESKTOP_APP_ONLY_REASON
10417
+ },
10418
+ ownerLabel: MANAGED_SERVICE_OWNER_LABEL,
10419
+ managementHint: service.currentProcess ? "This page is served by the running local service. Closing the browser does not stop it." : "Manage the local NextClaw service from this page without tying service lifecycle to the browser tab.",
10420
+ message: "Use this page to manage the local NextClaw service. Closing the browser does not stop the service."
10421
+ };
10422
+ };
10423
+ startService = async () => {
10424
+ const result = await controlRemoteService("start", this.createServiceControlDeps());
10425
+ return {
10426
+ accepted: result.accepted,
10427
+ action: "start-service",
10428
+ lifecycle: "starting-service",
10429
+ message: result.message
10430
+ };
10431
+ };
10432
+ restartService = async () => {
10433
+ const result = await controlRemoteService("restart", this.createServiceControlDeps());
10434
+ return {
10435
+ accepted: result.accepted,
10436
+ action: "restart-service",
10437
+ lifecycle: "restarting-service",
10438
+ message: result.message
10439
+ };
10440
+ };
10441
+ stopService = async () => {
10442
+ const result = await controlRemoteService("stop", this.createServiceControlDeps());
10443
+ return {
10444
+ accepted: result.accepted,
10445
+ action: "stop-service",
10446
+ lifecycle: "stopping-service",
10447
+ message: result.message
10448
+ };
10449
+ };
10450
+ createServiceControlDeps = () => {
10451
+ return {
10452
+ serviceCommands: this.deps.serviceCommands,
10453
+ requestManagedServiceRestart: () => requestManagedServiceRestart(this.deps.requestRestart, { uiPort: this.deps.uiConfig.port }),
10454
+ currentUi: this.deps.uiConfig
10455
+ };
10456
+ };
10457
+ };
10458
+ function createRuntimeControlHost(params) {
10459
+ return new RuntimeControlHost(params);
10460
+ }
10461
+ //#endregion
10462
+ //#region src/cli/commands/service-support/ui/service-ui-hosts.service.ts
10463
+ function createServiceUiHosts(params) {
10464
+ return {
10465
+ remoteAccess: createRemoteAccessHost(params),
10466
+ runtimeControl: createRuntimeControlHost({
10467
+ serviceCommands: params.serviceCommands,
10468
+ requestRestart: params.requestRestart,
10469
+ uiConfig: params.uiConfig
10470
+ })
10471
+ };
10472
+ }
10473
+ //#endregion
10379
10474
  //#region src/cli/commands/ncp/runtime/ncp-asset-tools.ts
10380
10475
  function readOptionalString$5(value) {
10381
10476
  if (typeof value !== "string") return null;
@@ -10409,48 +10504,39 @@ var AssetPutTool = class {
10409
10504
  description = "Put a normal file path or base64 bytes into the managed asset store.";
10410
10505
  parameters = {
10411
10506
  type: "object",
10412
- oneOf: [{
10413
- type: "object",
10414
- properties: {
10415
- path: {
10416
- type: "string",
10417
- description: "Existing local file path to put into the asset store."
10418
- },
10419
- fileName: {
10420
- type: "string",
10421
- description: "Optional asset file name override."
10422
- },
10423
- mimeType: {
10424
- type: "string",
10425
- description: "Optional mime type override."
10426
- }
10507
+ properties: {
10508
+ path: {
10509
+ type: "string",
10510
+ description: "Existing local file path to put into the asset store."
10427
10511
  },
10428
- required: ["path"],
10429
- additionalProperties: false
10430
- }, {
10431
- type: "object",
10432
- properties: {
10433
- bytesBase64: {
10434
- type: "string",
10435
- description: "Base64 file bytes. Use together with fileName when no source path exists."
10436
- },
10437
- fileName: {
10438
- type: "string",
10439
- description: "Asset file name. Required when using bytesBase64."
10440
- },
10441
- mimeType: {
10442
- type: "string",
10443
- description: "Optional mime type override."
10444
- }
10512
+ bytesBase64: {
10513
+ type: "string",
10514
+ description: "Base64 file bytes. Use together with fileName when no source path exists."
10515
+ },
10516
+ fileName: {
10517
+ type: "string",
10518
+ description: "Optional asset file name override. Required when using bytesBase64."
10445
10519
  },
10446
- required: ["bytesBase64", "fileName"],
10447
- additionalProperties: false
10448
- }]
10520
+ mimeType: {
10521
+ type: "string",
10522
+ description: "Optional mime type override."
10523
+ }
10524
+ },
10525
+ additionalProperties: false
10449
10526
  };
10450
10527
  constructor(assetStore, contentBasePath) {
10451
10528
  this.assetStore = assetStore;
10452
10529
  this.contentBasePath = contentBasePath;
10453
10530
  }
10531
+ validateArgs = (args) => {
10532
+ const path = readOptionalString$5(args.path);
10533
+ const bytesBase64 = readOptionalString$5(args.bytesBase64);
10534
+ const fileName = readOptionalString$5(args.fileName);
10535
+ if (path && bytesBase64) return ["Provide either path, or bytesBase64 + fileName, not both."];
10536
+ if (path) return [];
10537
+ if (bytesBase64) return fileName ? [] : ["fileName is required when using bytesBase64."];
10538
+ return ["Provide either path, or bytesBase64 + fileName."];
10539
+ };
10454
10540
  execute = async (args) => {
10455
10541
  const path = readOptionalString$5(args?.path);
10456
10542
  const fileName = readOptionalString$5(args?.fileName);
@@ -10541,11 +10627,12 @@ var AssetStatTool = class {
10541
10627
  };
10542
10628
  };
10543
10629
  function createAssetTools(params) {
10630
+ const { assetStore } = params;
10544
10631
  const contentBasePath = params.contentBasePath ?? "/api/ncp/assets/content";
10545
10632
  return [
10546
- new AssetPutTool(params.assetStore, contentBasePath),
10547
- new AssetExportTool(params.assetStore),
10548
- new AssetStatTool(params.assetStore, contentBasePath)
10633
+ new AssetPutTool(assetStore, contentBasePath),
10634
+ new AssetExportTool(assetStore),
10635
+ new AssetStatTool(assetStore, contentBasePath)
10549
10636
  ];
10550
10637
  }
10551
10638
  //#endregion
@@ -11228,16 +11315,7 @@ function mergeInputMetadata(input) {
11228
11315
  ...isRecord$1(input.metadata) ? structuredClone(input.metadata) : {}
11229
11316
  };
11230
11317
  }
11231
- function resolveRequestedSkillNames(metadata) {
11232
- const rawValue = metadata.requested_skills ?? metadata.requestedSkills;
11233
- const values = [];
11234
- if (Array.isArray(rawValue)) for (const item of rawValue) {
11235
- const normalized = normalizeString(item);
11236
- if (normalized) values.push(normalized);
11237
- }
11238
- else if (typeof rawValue === "string") values.push(...rawValue.split(/[,\s]+/g).map((item) => item.trim()).filter(Boolean));
11239
- return Array.from(new Set(values)).slice(0, 8);
11240
- }
11318
+ const REQUESTED_SKILLS_METADATA_READER = new RequestedSkillsMetadataReader();
11241
11319
  function resolveRequestedToolNames(metadata) {
11242
11320
  const rawValue = metadata.requested_tools ?? metadata.requestedTools;
11243
11321
  if (!Array.isArray(rawValue)) return [];
@@ -11247,19 +11325,20 @@ function readRequestedAgentId(metadata) {
11247
11325
  return normalizeString(metadata.agent_id)?.toLowerCase() ?? normalizeString(metadata.agentId)?.toLowerCase() ?? null;
11248
11326
  }
11249
11327
  function resolveAgentProfile(params) {
11250
- const defaultAgentId = resolveDefaultAgentProfileId(params.config);
11251
- const candidateAgentId = normalizeString(params.storedAgentId)?.toLowerCase() ?? readRequestedAgentId(params.requestMetadata) ?? defaultAgentId;
11252
- const profile = findEffectiveAgentProfile(params.config, candidateAgentId) ?? findEffectiveAgentProfile(params.config, defaultAgentId);
11328
+ const { config, requestMetadata, storedAgentId } = params;
11329
+ const { agents: { defaults }, search: searchConfig, tools: { restrictToWorkspace, exec: { timeout: execTimeoutSeconds } } } = config;
11330
+ const defaultAgentId = resolveDefaultAgentProfileId(config);
11331
+ const profile = findEffectiveAgentProfile(config, normalizeString(storedAgentId)?.toLowerCase() ?? readRequestedAgentId(requestMetadata) ?? defaultAgentId) ?? findEffectiveAgentProfile(config, defaultAgentId);
11253
11332
  if (!profile) throw new Error(`default agent profile not found: ${defaultAgentId}`);
11254
11333
  return {
11255
11334
  agentId: profile.id,
11256
- workspace: getWorkspacePath(profile.workspace ?? params.config.agents.defaults.workspace),
11257
- model: profile.model ?? params.config.agents.defaults.model,
11258
- maxIterations: profile.maxToolIterations ?? params.config.agents.defaults.maxToolIterations,
11259
- contextTokens: profile.contextTokens ?? params.config.agents.defaults.contextTokens,
11260
- restrictToWorkspace: params.config.tools.restrictToWorkspace,
11261
- searchConfig: params.config.search,
11262
- execTimeoutSeconds: params.config.tools.exec.timeout
11335
+ workspace: getWorkspacePath(profile.workspace ?? defaults.workspace),
11336
+ model: profile.model ?? defaults.model,
11337
+ maxIterations: profile.maxToolIterations ?? defaults.maxToolIterations,
11338
+ contextTokens: profile.contextTokens ?? defaults.contextTokens,
11339
+ restrictToWorkspace,
11340
+ searchConfig,
11341
+ execTimeoutSeconds
11263
11342
  };
11264
11343
  }
11265
11344
  function shouldAppendTimeHint(content) {
@@ -11282,9 +11361,9 @@ function appendTimeHintForPrompt(content, timestamp) {
11282
11361
  if (!shouldAppendTimeHint(content)) return content;
11283
11362
  return `${content}\n\n[time_hint_local_minute] ${buildMinutePrecisionTimeHint(Number.isNaN(timestamp.getTime()) ? /* @__PURE__ */ new Date() : timestamp)}`;
11284
11363
  }
11285
- function prependRequestedSkills(content, requestedSkillNames) {
11286
- if (requestedSkillNames.length === 0) return content;
11287
- return `[Requested skills for this turn: ${requestedSkillNames.join(", ")}]\n\n${content}`;
11364
+ function prependRequestedSkills(content, requestedSkillSelectors) {
11365
+ if (requestedSkillSelectors.length === 0) return content;
11366
+ return `[Requested skills for this turn: ${requestedSkillSelectors.join(", ")}]\n\n${content}`;
11288
11367
  }
11289
11368
  function buildSessionOrchestrationSection() {
11290
11369
  return [
@@ -11307,14 +11386,7 @@ function filterTools(toolDefinitions, requestedToolNames) {
11307
11386
  return filtered.length > 0 ? filtered : void 0;
11308
11387
  }
11309
11388
  function buildRequestedOpenAiTools(toolDefinitions, requestedToolNames) {
11310
- return filterTools(toolDefinitions.map((tool) => ({
11311
- type: "function",
11312
- function: {
11313
- name: tool.name,
11314
- description: tool.description,
11315
- parameters: tool.parameters
11316
- }
11317
- })), requestedToolNames);
11389
+ return filterTools(toolDefinitions.map(buildOpenAiFunctionTool), requestedToolNames);
11318
11390
  }
11319
11391
  var NextclawNcpContextBuilder = class {
11320
11392
  inputBudgetPruner = new InputBudgetPruner();
@@ -11347,12 +11419,12 @@ var NextclawNcpContextBuilder = class {
11347
11419
  session,
11348
11420
  requestMetadata
11349
11421
  });
11350
- const requestedSkillNames = resolveRequestedSkillNames(requestMetadata);
11422
+ const requestedSkills = REQUESTED_SKILLS_METADATA_READER.readSelection(requestMetadata);
11351
11423
  const requestedToolNames = resolveRequestedToolNames(requestMetadata);
11352
11424
  const currentTurn = buildCurrentTurnState({
11353
11425
  input,
11354
11426
  currentModel: effectiveModel,
11355
- formatPrompt: ({ text, timestamp }) => appendTimeHintForPrompt(prependRequestedSkills(text, requestedSkillNames), timestamp),
11427
+ formatPrompt: ({ text, timestamp }) => appendTimeHintForPrompt(prependRequestedSkills(text, requestedSkills.selectors), timestamp),
11356
11428
  assetStore: this.options.assetStore
11357
11429
  });
11358
11430
  effectiveModel = currentTurn.effectiveModel;
@@ -11400,7 +11472,7 @@ var NextclawNcpContextBuilder = class {
11400
11472
  chatId,
11401
11473
  sessionKey: input.sessionId,
11402
11474
  thinkingLevel: runtimeThinking,
11403
- skillNames: requestedSkillNames,
11475
+ skillNames: requestedSkills.selectors,
11404
11476
  messageToolHints,
11405
11477
  availableTools: buildToolCatalogEntries(toolDefinitions),
11406
11478
  additionalSystemSections
@@ -13847,6 +13919,7 @@ async function startUiShell(params) {
13847
13919
  cronService: params.cronService,
13848
13920
  marketplace: params.marketplace,
13849
13921
  remoteAccess: params.remoteAccess,
13922
+ runtimeControl: params.runtimeControl,
13850
13923
  getBootstrapStatus: params.getBootstrapStatus,
13851
13924
  getPluginChannelBindings: params.getPluginChannelBindings,
13852
13925
  getPluginUiMetadata: params.getPluginUiMetadata,
@@ -13983,13 +14056,15 @@ function createNcpSessionRealtimeChangePublisher(params) {
13983
14056
  //#endregion
13984
14057
  //#region src/cli/commands/ncp/session/ncp-session-summary.ts
13985
14058
  function createNcpSessionSummary(params) {
14059
+ const { sessionId, agentId, messages, updatedAt, status, metadata } = params;
13986
14060
  return {
13987
- sessionId: params.sessionId,
13988
- ...params.agentId ? { agentId: params.agentId } : {},
13989
- messageCount: params.messages.length,
13990
- updatedAt: params.updatedAt,
13991
- status: params.status,
13992
- ...params.metadata ? { metadata: structuredClone(params.metadata) } : {}
14061
+ sessionId,
14062
+ ...agentId ? { agentId } : {},
14063
+ messageCount: messages.length,
14064
+ updatedAt,
14065
+ ...messages.length > 0 ? { lastMessageAt: messages[messages.length - 1]?.timestamp ?? updatedAt } : {},
14066
+ status,
14067
+ ...metadata ? { metadata: structuredClone(metadata) } : {}
13993
14068
  };
13994
14069
  }
13995
14070
  //#endregion
@@ -14687,7 +14762,7 @@ var ServiceCommands = class {
14687
14762
  runCliSubcommand: (args) => this.runCliSubcommand(args),
14688
14763
  installBuiltinSkill: (slug, force) => this.installBuiltinMarketplaceSkill(slug, force)
14689
14764
  }).createInstaller();
14690
- const remoteAccess = createRemoteAccessHost({
14765
+ const { remoteAccess, runtimeControl } = createServiceUiHosts({
14691
14766
  serviceCommands: this,
14692
14767
  requestRestart: this.deps.requestRestart,
14693
14768
  uiConfig: shellContext.uiConfig,
@@ -14707,6 +14782,7 @@ var ServiceCommands = class {
14707
14782
  installer: marketplaceInstaller
14708
14783
  },
14709
14784
  remoteAccess,
14785
+ runtimeControl,
14710
14786
  getBootstrapStatus: () => bootstrapStatus.getStatus(),
14711
14787
  openBrowserWindow: shellContext.uiConfig.open,
14712
14788
  applyLiveConfigReload,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nextclaw",
3
- "version": "0.17.9",
3
+ "version": "0.17.11",
4
4
  "description": "Lightweight personal AI assistant with CLI, multi-provider routing, and channel integrations.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -40,16 +40,16 @@
40
40
  "chokidar": "^3.6.0",
41
41
  "commander": "^12.1.0",
42
42
  "yaml": "^2.8.1",
43
- "@nextclaw/ncp": "0.5.0",
44
- "@nextclaw/ncp-agent-runtime": "0.3.9",
45
- "@nextclaw/core": "0.12.4",
46
- "@nextclaw/ncp-mcp": "0.1.71",
47
- "@nextclaw/ncp-toolkit": "0.5.4",
48
- "@nextclaw/mcp": "0.1.69",
49
- "@nextclaw/openclaw-compat": "1.0.4",
50
- "@nextclaw/server": "0.12.4",
51
- "@nextclaw/remote": "0.1.81",
52
- "@nextclaw/runtime": "0.2.36"
43
+ "@nextclaw/core": "0.12.6",
44
+ "@nextclaw/ncp": "0.5.1",
45
+ "@nextclaw/ncp-agent-runtime": "0.3.11",
46
+ "@nextclaw/ncp-toolkit": "0.5.6",
47
+ "@nextclaw/ncp-mcp": "0.1.73",
48
+ "@nextclaw/server": "0.12.6",
49
+ "@nextclaw/mcp": "0.1.71",
50
+ "@nextclaw/runtime": "0.2.38",
51
+ "@nextclaw/openclaw-compat": "1.0.6",
52
+ "@nextclaw/remote": "0.1.83"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@types/node": "^20.17.6",
@@ -57,7 +57,7 @@
57
57
  "tsx": "^4.19.2",
58
58
  "typescript": "^5.6.3",
59
59
  "vitest": "^4.1.2",
60
- "@nextclaw/ui": "0.12.6"
60
+ "@nextclaw/ui": "0.12.8"
61
61
  },
62
62
  "scripts": {
63
63
  "dev": "tsx watch --tsconfig tsconfig.json src/cli/index.ts",
@@ -1,4 +1,4 @@
1
- import{_ as e,h as t,i as n,m as r,n as i,o as a,p as o,u as s}from"./i18n-C3jb83S6.js";import{n as c,r as l}from"./dist-aTmhMDVh.js";import{s as u,t as d}from"./client-CSk58DcF.js";import{t as f}from"./useMutation-BdZm-9PL.js";import{O as p,a as m,i as h,n as g,r as _,t as v}from"./select-DLYqySQK.js";import{t as y}from"./createLucideIcon-83gaZMtv.js";import{t as b}from"./book-open-Da4OEPqB.js";import{t as x}from"./external-link-QQ0TC6X4.js";import{n as S,t as C}from"./logos-Dzlz30M3.js";import{t as w}from"./hash-DaFBEkmi.js";import{t as T}from"./loader-circle-BjMg63eu.js";import{t as E}from"./search-B_Qr0f6C.js";import{t as D}from"./x-B8Tho_xC.js";import{E as ee,c as O,dt as k,et as A,g as te,gt as j,l as M,pt as N,tt as P,u as ne}from"./index-riX7Sg0_.js";import{t as re}from"./LogoBadge-BdxMPc9v.js";import{n as ie,t as F}from"./page-layout-D2eRufRQ.js";import{t as I}from"./tabs-custom-CdKyjiGk.js";import{t as L}from"./status-dot-DGayudyB.js";import{t as R}from"./config-hints-GSUMvmSo.js";import{i as z,n as ae,r as oe,t as se}from"./config-layout-CgBMG7OL.js";import{t as ce}from"./switch-Dz2ScsKx.js";var le=y(`Mail`,[[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`,key:`18n3k1`}],[`path`,{d:`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,key:`1ocrg3`}]]),ue=y(`MessageCircleMore`,[[`path`,{d:`M7.9 20A9 9 0 1 0 4 16.1L2 22Z`,key:`vv11sd`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}],[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}]]),B=y(`QrCode`,[[`rect`,{width:`5`,height:`5`,x:`3`,y:`3`,rx:`1`,key:`1tu5fj`}],[`rect`,{width:`5`,height:`5`,x:`16`,y:`3`,rx:`1`,key:`1v8r4q`}],[`rect`,{width:`5`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`1x03jg`}],[`path`,{d:`M21 16h-3a2 2 0 0 0-2 2v3`,key:`177gqh`}],[`path`,{d:`M21 21v.01`,key:`ents32`}],[`path`,{d:`M12 7v3a2 2 0 0 1-2 2H7`,key:`8crl2c`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M12 3h.01`,key:`n36tog`}],[`path`,{d:`M12 16v.01`,key:`133mhm`}],[`path`,{d:`M16 12h1`,key:`1slzba`}],[`path`,{d:`M21 12v.01`,key:`1lwtk9`}],[`path`,{d:`M12 21v-1`,key:`1880an`}]]),de=y(`ToggleLeft`,[[`rect`,{width:`20`,height:`12`,x:`2`,y:`6`,rx:`6`,ry:`6`,key:`f2vt7d`}],[`circle`,{cx:`8`,cy:`12`,r:`2`,key:`1nvbw3`}]]),V=e(r(),1);function H(e){let t=a();return e.tutorialUrls?.[t]||e.tutorialUrls?.default||e.tutorialUrl}var U=o();function fe({value:e,onChange:t,className:r,placeholder:i=``}){let[a,o]=(0,V.useState)(``),c=n=>{n.key===`Enter`&&a.trim()?(n.preventDefault(),t([...e,a.trim()]),o(``)):n.key===`Backspace`&&!a&&e.length>0&&t(e.slice(0,-1))},l=n=>{t(e.filter((e,t)=>t!==n))};return(0,U.jsxs)(`div`,{className:s(`flex flex-wrap gap-2 p-2 border rounded-md min-h-[42px]`,r),children:[e.map((e,t)=>(0,U.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-1 bg-primary text-primary-foreground rounded text-sm`,children:[e,(0,U.jsx)(`button`,{type:`button`,onClick:()=>l(t),className:`hover:text-red-300 transition-colors`,children:(0,U.jsx)(D,{className:`h-3 w-3`})})]},t)),(0,U.jsx)(`input`,{type:`text`,value:a,onChange:e=>o(e.target.value),onKeyDown:c,className:`flex-1 outline-none min-w-[100px] bg-transparent text-sm`,placeholder:i||n(`enterTag`)})]})}function pe(e){return e.includes(`token`)||e.includes(`secret`)||e.includes(`password`)?(0,U.jsx)(j,{className:`h-3.5 w-3.5 text-gray-500`}):e.includes(`url`)||e.includes(`host`)?(0,U.jsx)(S,{className:`h-3.5 w-3.5 text-gray-500`}):e.includes(`email`)||e.includes(`mail`)?(0,U.jsx)(le,{className:`h-3.5 w-3.5 text-gray-500`}):e.includes(`id`)||e.includes(`from`)?(0,U.jsx)(w,{className:`h-3.5 w-3.5 text-gray-500`}):e===`enabled`||e===`consentGranted`?(0,U.jsx)(de,{className:`h-3.5 w-3.5 text-gray-500`}):(0,U.jsx)(k,{className:`h-3.5 w-3.5 text-gray-500`})}function W({channelName:e,fields:t,formData:r,jsonDrafts:i,setJsonDrafts:a,updateField:o,uiHints:s}){return(0,U.jsx)(U.Fragment,{children:t.map(t=>{let c=R(`channels.${e}.${t.name}`,s),l=c?.label??t.label,u=c?.placeholder;return(0,U.jsxs)(`div`,{className:`space-y-2.5`,children:[(0,U.jsxs)(A,{htmlFor:t.name,className:`flex items-center gap-2 text-sm font-medium text-gray-900`,children:[pe(t.name),l]}),t.type===`boolean`&&(0,U.jsxs)(`div`,{className:`flex items-center justify-between rounded-xl bg-gray-50 p-3`,children:[(0,U.jsx)(`span`,{className:`text-sm text-gray-500`,children:r[t.name]?n(`enabled`):n(`disabled`)}),(0,U.jsx)(ce,{id:t.name,checked:r[t.name]||!1,onCheckedChange:e=>o(t.name,e),className:`data-[state=checked]:bg-emerald-500`})]}),(t.type===`text`||t.type===`email`)&&(0,U.jsx)(P,{id:t.name,type:t.type,value:r[t.name]||``,onChange:e=>o(t.name,e.target.value),placeholder:u,className:`rounded-xl`}),t.type===`password`&&(0,U.jsx)(P,{id:t.name,type:`password`,value:r[t.name]||``,onChange:e=>o(t.name,e.target.value),placeholder:u??n(`leaveBlankToKeepUnchanged`),className:`rounded-xl`}),t.type===`number`&&(0,U.jsx)(P,{id:t.name,type:`number`,value:r[t.name]||0,onChange:e=>o(t.name,parseInt(e.target.value,10)||0),placeholder:u,className:`rounded-xl`}),t.type===`tags`&&(0,U.jsx)(fe,{value:r[t.name]||[],onChange:e=>o(t.name,e)}),t.type===`select`&&(0,U.jsxs)(v,{value:r[t.name]||``,onValueChange:e=>o(t.name,e),children:[(0,U.jsx)(h,{className:`rounded-xl`,children:(0,U.jsx)(m,{})}),(0,U.jsx)(g,{children:(t.options??[]).map(e=>(0,U.jsx)(_,{value:e.value,children:e.label},e.value))})]}),t.type===`json`&&(0,U.jsx)(`textarea`,{id:t.name,value:i[t.name]??`{}`,onChange:e=>a(n=>({...n,[t.name]:e.target.value})),className:`min-h-[120px] w-full resize-none rounded-lg border border-gray-200 bg-white px-3 py-2 text-xs font-mono`})]},t.name)})})}var G=[{value:`pairing`,label:`pairing`},{value:`allowlist`,label:`allowlist`},{value:`open`,label:`open`},{value:`disabled`,label:`disabled`}],K=[{value:`open`,label:`open`},{value:`allowlist`,label:`allowlist`},{value:`disabled`,label:`disabled`}],me=[{value:`off`,label:`off`},{value:`partial`,label:`partial`},{value:`block`,label:`block`},{value:`progress`,label:`progress`}];function he(){return{telegram:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`token`,type:`password`,label:n(`botToken`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)},{name:`proxy`,type:`text`,label:n(`proxy`)},{name:`accountId`,type:`text`,label:n(`accountId`)},{name:`dmPolicy`,type:`select`,label:n(`dmPolicy`),options:G},{name:`groupPolicy`,type:`select`,label:n(`groupPolicy`),options:K},{name:`groupAllowFrom`,type:`tags`,label:n(`groupAllowFrom`)},{name:`requireMention`,type:`boolean`,label:n(`requireMention`)},{name:`mentionPatterns`,type:`tags`,label:n(`mentionPatterns`)},{name:`groups`,type:`json`,label:n(`groupRulesJson`)}]},discord:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`token`,type:`password`,label:n(`botToken`)},{name:`allowBots`,type:`boolean`,label:n(`allowBotMessages`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)},{name:`gatewayUrl`,type:`text`,label:n(`gatewayUrl`)},{name:`intents`,type:`number`,label:n(`intents`)},{name:`proxy`,type:`text`,label:n(`proxy`)},{name:`mediaMaxMb`,type:`number`,label:n(`attachmentMaxSizeMb`)},{name:`streaming`,type:`select`,label:n(`streamingMode`),options:me},{name:`draftChunk`,type:`json`,label:n(`draftChunkingJson`)},{name:`textChunkLimit`,type:`number`,label:n(`textChunkLimit`)},{name:`accountId`,type:`text`,label:n(`accountId`)},{name:`dmPolicy`,type:`select`,label:n(`dmPolicy`),options:G},{name:`groupPolicy`,type:`select`,label:n(`groupPolicy`),options:K},{name:`groupAllowFrom`,type:`tags`,label:n(`groupAllowFrom`)},{name:`requireMention`,type:`boolean`,label:n(`requireMention`)},{name:`mentionPatterns`,type:`tags`,label:n(`mentionPatterns`)},{name:`groups`,type:`json`,label:n(`groupRulesJson`)}]},whatsapp:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`bridgeUrl`,type:`text`,label:n(`bridgeUrl`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]},feishu:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`appId`,type:`text`,label:n(`appId`)},{name:`appSecret`,type:`password`,label:n(`appSecret`)},{name:`encryptKey`,type:`password`,label:n(`encryptKey`)},{name:`verificationToken`,type:`password`,label:n(`verificationToken`)},{name:`domain`,type:`text`,label:`Domain`},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)},{name:`dmPolicy`,type:`select`,label:n(`dmPolicy`),options:G},{name:`groupPolicy`,type:`select`,label:n(`groupPolicy`),options:K},{name:`groupAllowFrom`,type:`tags`,label:n(`groupAllowFrom`)},{name:`requireMention`,type:`boolean`,label:n(`requireMention`)},{name:`mentionPatterns`,type:`tags`,label:n(`mentionPatterns`)},{name:`groups`,type:`json`,label:n(`groupRulesJson`)},{name:`accounts`,type:`json`,label:n(`accountsJson`)}]},dingtalk:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`clientId`,type:`text`,label:n(`clientId`)},{name:`clientSecret`,type:`password`,label:n(`clientSecret`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]},wecom:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`corpId`,type:`text`,label:n(`corpId`)},{name:`agentId`,type:`text`,label:n(`agentId`)},{name:`secret`,type:`password`,label:n(`secret`)},{name:`token`,type:`password`,label:n(`token`)},{name:`callbackPort`,type:`number`,label:n(`callbackPort`)},{name:`callbackPath`,type:`text`,label:n(`callbackPath`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]},weixin:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`),section:`primary`},{name:`defaultAccountId`,type:`text`,label:n(`defaultAccountId`)},{name:`baseUrl`,type:`text`,label:n(`baseUrl`)},{name:`pollTimeoutMs`,type:`number`,label:n(`pollTimeoutMs`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)},{name:`accounts`,type:`json`,label:n(`accountsJson`)}],layout:[{type:`fields`,section:`primary`},{type:`custom`,sectionId:`weixin-auth`},{type:`fields`,section:`advanced`,collapsible:{title:n(`weixinAuthAdvancedTitle`),description:n(`weixinAuthAdvancedDescription`)}}]},slack:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`mode`,type:`text`,label:n(`mode`)},{name:`webhookPath`,type:`text`,label:n(`webhookPath`)},{name:`allowBots`,type:`boolean`,label:n(`allowBotMessages`)},{name:`botToken`,type:`password`,label:n(`botToken`)},{name:`appToken`,type:`password`,label:n(`appToken`)}]},email:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`consentGranted`,type:`boolean`,label:n(`consentGranted`)},{name:`imapHost`,type:`text`,label:n(`imapHost`)},{name:`imapPort`,type:`number`,label:n(`imapPort`)},{name:`imapUsername`,type:`text`,label:n(`imapUsername`)},{name:`imapPassword`,type:`password`,label:n(`imapPassword`)},{name:`fromAddress`,type:`email`,label:n(`fromAddress`)}]},mochat:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`baseUrl`,type:`text`,label:n(`baseUrl`)},{name:`clawToken`,type:`password`,label:n(`clawToken`)},{name:`agentUserId`,type:`text`,label:n(`agentUserId`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]},qq:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`appId`,type:`text`,label:n(`appId`)},{name:`secret`,type:`password`,label:n(`appSecret`)},{name:`markdownSupport`,type:`boolean`,label:n(`markdownSupport`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]}}}var ge=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),q=t((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),J=t((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),_e=t(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),ve=t(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),ye=t((e=>{var t=q().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),be=t((e=>{var t=q().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),xe=t((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),Y=t((e=>{var t=J(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),Se=t((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),Ce=t((e=>{var t=Se();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),we=t(((e,t)=>{var n=Ce();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),X=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),Z=t((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r
1
+ import{_ as e,h as t,i as n,m as r,n as i,o as a,p as o,u as s}from"./i18n-CwHZ-9vt.js";import{n as c,r as l}from"./dist-DmAlInRu.js";import{s as u,t as d}from"./client-CVqPF5ie.js";import{t as f}from"./useMutation-BmxxvCNf.js";import{O as p,a as m,i as h,n as g,r as _,t as v}from"./select-Caud8QvU.js";import{t as y}from"./createLucideIcon-DVv8taGY.js";import{t as b}from"./book-open-DocgeQtR.js";import{t as x}from"./external-link-DFjw3x1B.js";import{n as S,t as C}from"./logos-DEFUIR12.js";import{t as w}from"./hash-DJtaCejM.js";import{t as T}from"./loader-circle-PsSP0H9n.js";import{t as E}from"./search-MChQRYR1.js";import{t as D}from"./x-DuMhMATD.js";import{E as ee,c as O,dt as k,et as A,g as te,gt as j,l as M,pt as N,tt as P,u as ne}from"./index-DdksE6U3.js";import{t as re}from"./LogoBadge-o92MOA2L.js";import{n as ie,t as F}from"./page-layout-Da3i3r6G.js";import{t as I}from"./tabs-custom-5JLVL6v8.js";import{t as L}from"./status-dot-DurKKSwA.js";import{t as R}from"./config-hints-BZoDjXye.js";import{i as z,n as ae,r as oe,t as se}from"./config-layout-DmlGaay2.js";import{t as ce}from"./switch-0rmPBRKI.js";var le=y(`Mail`,[[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`,key:`18n3k1`}],[`path`,{d:`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,key:`1ocrg3`}]]),ue=y(`MessageCircleMore`,[[`path`,{d:`M7.9 20A9 9 0 1 0 4 16.1L2 22Z`,key:`vv11sd`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}],[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}]]),B=y(`QrCode`,[[`rect`,{width:`5`,height:`5`,x:`3`,y:`3`,rx:`1`,key:`1tu5fj`}],[`rect`,{width:`5`,height:`5`,x:`16`,y:`3`,rx:`1`,key:`1v8r4q`}],[`rect`,{width:`5`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`1x03jg`}],[`path`,{d:`M21 16h-3a2 2 0 0 0-2 2v3`,key:`177gqh`}],[`path`,{d:`M21 21v.01`,key:`ents32`}],[`path`,{d:`M12 7v3a2 2 0 0 1-2 2H7`,key:`8crl2c`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M12 3h.01`,key:`n36tog`}],[`path`,{d:`M12 16v.01`,key:`133mhm`}],[`path`,{d:`M16 12h1`,key:`1slzba`}],[`path`,{d:`M21 12v.01`,key:`1lwtk9`}],[`path`,{d:`M12 21v-1`,key:`1880an`}]]),de=y(`ToggleLeft`,[[`rect`,{width:`20`,height:`12`,x:`2`,y:`6`,rx:`6`,ry:`6`,key:`f2vt7d`}],[`circle`,{cx:`8`,cy:`12`,r:`2`,key:`1nvbw3`}]]),V=e(r(),1);function H(e){let t=a();return e.tutorialUrls?.[t]||e.tutorialUrls?.default||e.tutorialUrl}var U=o();function fe({value:e,onChange:t,className:r,placeholder:i=``}){let[a,o]=(0,V.useState)(``),c=n=>{n.key===`Enter`&&a.trim()?(n.preventDefault(),t([...e,a.trim()]),o(``)):n.key===`Backspace`&&!a&&e.length>0&&t(e.slice(0,-1))},l=n=>{t(e.filter((e,t)=>t!==n))};return(0,U.jsxs)(`div`,{className:s(`flex flex-wrap gap-2 p-2 border rounded-md min-h-[42px]`,r),children:[e.map((e,t)=>(0,U.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-1 bg-primary text-primary-foreground rounded text-sm`,children:[e,(0,U.jsx)(`button`,{type:`button`,onClick:()=>l(t),className:`hover:text-red-300 transition-colors`,children:(0,U.jsx)(D,{className:`h-3 w-3`})})]},t)),(0,U.jsx)(`input`,{type:`text`,value:a,onChange:e=>o(e.target.value),onKeyDown:c,className:`flex-1 outline-none min-w-[100px] bg-transparent text-sm`,placeholder:i||n(`enterTag`)})]})}function pe(e){return e.includes(`token`)||e.includes(`secret`)||e.includes(`password`)?(0,U.jsx)(j,{className:`h-3.5 w-3.5 text-gray-500`}):e.includes(`url`)||e.includes(`host`)?(0,U.jsx)(S,{className:`h-3.5 w-3.5 text-gray-500`}):e.includes(`email`)||e.includes(`mail`)?(0,U.jsx)(le,{className:`h-3.5 w-3.5 text-gray-500`}):e.includes(`id`)||e.includes(`from`)?(0,U.jsx)(w,{className:`h-3.5 w-3.5 text-gray-500`}):e===`enabled`||e===`consentGranted`?(0,U.jsx)(de,{className:`h-3.5 w-3.5 text-gray-500`}):(0,U.jsx)(k,{className:`h-3.5 w-3.5 text-gray-500`})}function W({channelName:e,fields:t,formData:r,jsonDrafts:i,setJsonDrafts:a,updateField:o,uiHints:s}){return(0,U.jsx)(U.Fragment,{children:t.map(t=>{let c=R(`channels.${e}.${t.name}`,s),l=c?.label??t.label,u=c?.placeholder;return(0,U.jsxs)(`div`,{className:`space-y-2.5`,children:[(0,U.jsxs)(A,{htmlFor:t.name,className:`flex items-center gap-2 text-sm font-medium text-gray-900`,children:[pe(t.name),l]}),t.type===`boolean`&&(0,U.jsxs)(`div`,{className:`flex items-center justify-between rounded-xl bg-gray-50 p-3`,children:[(0,U.jsx)(`span`,{className:`text-sm text-gray-500`,children:r[t.name]?n(`enabled`):n(`disabled`)}),(0,U.jsx)(ce,{id:t.name,checked:r[t.name]||!1,onCheckedChange:e=>o(t.name,e),className:`data-[state=checked]:bg-emerald-500`})]}),(t.type===`text`||t.type===`email`)&&(0,U.jsx)(P,{id:t.name,type:t.type,value:r[t.name]||``,onChange:e=>o(t.name,e.target.value),placeholder:u,className:`rounded-xl`}),t.type===`password`&&(0,U.jsx)(P,{id:t.name,type:`password`,value:r[t.name]||``,onChange:e=>o(t.name,e.target.value),placeholder:u??n(`leaveBlankToKeepUnchanged`),className:`rounded-xl`}),t.type===`number`&&(0,U.jsx)(P,{id:t.name,type:`number`,value:r[t.name]||0,onChange:e=>o(t.name,parseInt(e.target.value,10)||0),placeholder:u,className:`rounded-xl`}),t.type===`tags`&&(0,U.jsx)(fe,{value:r[t.name]||[],onChange:e=>o(t.name,e)}),t.type===`select`&&(0,U.jsxs)(v,{value:r[t.name]||``,onValueChange:e=>o(t.name,e),children:[(0,U.jsx)(h,{className:`rounded-xl`,children:(0,U.jsx)(m,{})}),(0,U.jsx)(g,{children:(t.options??[]).map(e=>(0,U.jsx)(_,{value:e.value,children:e.label},e.value))})]}),t.type===`json`&&(0,U.jsx)(`textarea`,{id:t.name,value:i[t.name]??`{}`,onChange:e=>a(n=>({...n,[t.name]:e.target.value})),className:`min-h-[120px] w-full resize-none rounded-lg border border-gray-200 bg-white px-3 py-2 text-xs font-mono`})]},t.name)})})}var G=[{value:`pairing`,label:`pairing`},{value:`allowlist`,label:`allowlist`},{value:`open`,label:`open`},{value:`disabled`,label:`disabled`}],K=[{value:`open`,label:`open`},{value:`allowlist`,label:`allowlist`},{value:`disabled`,label:`disabled`}],me=[{value:`off`,label:`off`},{value:`partial`,label:`partial`},{value:`block`,label:`block`},{value:`progress`,label:`progress`}];function he(){return{telegram:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`token`,type:`password`,label:n(`botToken`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)},{name:`proxy`,type:`text`,label:n(`proxy`)},{name:`accountId`,type:`text`,label:n(`accountId`)},{name:`dmPolicy`,type:`select`,label:n(`dmPolicy`),options:G},{name:`groupPolicy`,type:`select`,label:n(`groupPolicy`),options:K},{name:`groupAllowFrom`,type:`tags`,label:n(`groupAllowFrom`)},{name:`requireMention`,type:`boolean`,label:n(`requireMention`)},{name:`mentionPatterns`,type:`tags`,label:n(`mentionPatterns`)},{name:`groups`,type:`json`,label:n(`groupRulesJson`)}]},discord:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`token`,type:`password`,label:n(`botToken`)},{name:`allowBots`,type:`boolean`,label:n(`allowBotMessages`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)},{name:`gatewayUrl`,type:`text`,label:n(`gatewayUrl`)},{name:`intents`,type:`number`,label:n(`intents`)},{name:`proxy`,type:`text`,label:n(`proxy`)},{name:`mediaMaxMb`,type:`number`,label:n(`attachmentMaxSizeMb`)},{name:`streaming`,type:`select`,label:n(`streamingMode`),options:me},{name:`draftChunk`,type:`json`,label:n(`draftChunkingJson`)},{name:`textChunkLimit`,type:`number`,label:n(`textChunkLimit`)},{name:`accountId`,type:`text`,label:n(`accountId`)},{name:`dmPolicy`,type:`select`,label:n(`dmPolicy`),options:G},{name:`groupPolicy`,type:`select`,label:n(`groupPolicy`),options:K},{name:`groupAllowFrom`,type:`tags`,label:n(`groupAllowFrom`)},{name:`requireMention`,type:`boolean`,label:n(`requireMention`)},{name:`mentionPatterns`,type:`tags`,label:n(`mentionPatterns`)},{name:`groups`,type:`json`,label:n(`groupRulesJson`)}]},whatsapp:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`bridgeUrl`,type:`text`,label:n(`bridgeUrl`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]},feishu:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`appId`,type:`text`,label:n(`appId`)},{name:`appSecret`,type:`password`,label:n(`appSecret`)},{name:`encryptKey`,type:`password`,label:n(`encryptKey`)},{name:`verificationToken`,type:`password`,label:n(`verificationToken`)},{name:`domain`,type:`text`,label:`Domain`},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)},{name:`dmPolicy`,type:`select`,label:n(`dmPolicy`),options:G},{name:`groupPolicy`,type:`select`,label:n(`groupPolicy`),options:K},{name:`groupAllowFrom`,type:`tags`,label:n(`groupAllowFrom`)},{name:`requireMention`,type:`boolean`,label:n(`requireMention`)},{name:`mentionPatterns`,type:`tags`,label:n(`mentionPatterns`)},{name:`groups`,type:`json`,label:n(`groupRulesJson`)},{name:`accounts`,type:`json`,label:n(`accountsJson`)}]},dingtalk:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`clientId`,type:`text`,label:n(`clientId`)},{name:`clientSecret`,type:`password`,label:n(`clientSecret`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]},wecom:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`corpId`,type:`text`,label:n(`corpId`)},{name:`agentId`,type:`text`,label:n(`agentId`)},{name:`secret`,type:`password`,label:n(`secret`)},{name:`token`,type:`password`,label:n(`token`)},{name:`callbackPort`,type:`number`,label:n(`callbackPort`)},{name:`callbackPath`,type:`text`,label:n(`callbackPath`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]},weixin:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`),section:`primary`},{name:`defaultAccountId`,type:`text`,label:n(`defaultAccountId`)},{name:`baseUrl`,type:`text`,label:n(`baseUrl`)},{name:`pollTimeoutMs`,type:`number`,label:n(`pollTimeoutMs`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)},{name:`accounts`,type:`json`,label:n(`accountsJson`)}],layout:[{type:`fields`,section:`primary`},{type:`custom`,sectionId:`weixin-auth`},{type:`fields`,section:`advanced`,collapsible:{title:n(`weixinAuthAdvancedTitle`),description:n(`weixinAuthAdvancedDescription`)}}]},slack:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`mode`,type:`text`,label:n(`mode`)},{name:`webhookPath`,type:`text`,label:n(`webhookPath`)},{name:`allowBots`,type:`boolean`,label:n(`allowBotMessages`)},{name:`botToken`,type:`password`,label:n(`botToken`)},{name:`appToken`,type:`password`,label:n(`appToken`)}]},email:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`consentGranted`,type:`boolean`,label:n(`consentGranted`)},{name:`imapHost`,type:`text`,label:n(`imapHost`)},{name:`imapPort`,type:`number`,label:n(`imapPort`)},{name:`imapUsername`,type:`text`,label:n(`imapUsername`)},{name:`imapPassword`,type:`password`,label:n(`imapPassword`)},{name:`fromAddress`,type:`email`,label:n(`fromAddress`)}]},mochat:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`baseUrl`,type:`text`,label:n(`baseUrl`)},{name:`clawToken`,type:`password`,label:n(`clawToken`)},{name:`agentUserId`,type:`text`,label:n(`agentUserId`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]},qq:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`appId`,type:`text`,label:n(`appId`)},{name:`secret`,type:`password`,label:n(`appSecret`)},{name:`markdownSupport`,type:`boolean`,label:n(`markdownSupport`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]}}}var ge=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),q=t((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),J=t((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),_e=t(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),ve=t(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),ye=t((e=>{var t=q().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),be=t((e=>{var t=q().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),xe=t((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),Y=t((e=>{var t=J(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),Se=t((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),Ce=t((e=>{var t=Se();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),we=t(((e,t)=>{var n=Ce();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),X=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),Z=t((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r
2
2
  ]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^`+t+`$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),Q=t((e=>{var t=X(),n=Z();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),Te=t((e=>{var t=q(),n=Y(),r=J(),i=Q(),a=X(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<<t.getBCHDigit(n)-s;return e<<12|n}})),Ee=t((e=>{var t=q(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<<t.getBCHDigit(s)-i;return(o<<10|s)^r}})),De=t(((e,t)=>{var n=Q();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),Oe=t(((e,t)=>{var n=Q(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),ke=t(((e,t)=>{var n=Q();function r(e){this.mode=n.BYTE,typeof e==`string`?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t<n;t++)e.put(this.data[t],8)},t.exports=r})),Ae=t(((e,t)=>{var n=Q(),r=q();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let n=r.toSJIS(this.data[t]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+`
3
3
  Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.exports=i})),je=t(((e,t)=>{var n={single_source_shortest_paths:function(e,t,r){var i={},a={};a[t]=0;var o=n.PriorityQueue.make();o.push(t,0);for(var s,c,l,u,d,f,p,m,h;!o.empty();)for(l in s=o.pop(),c=s.value,u=s.cost,d=e[c]||{},d)d.hasOwnProperty(l)&&(f=d[l],p=u+f,m=a[l],h=a[l]===void 0,(h||m>p)&&(a[l]=p,o.push(l,p),i[l]=c));if(r!==void 0&&a[r]===void 0){var g=[`Could not find a path from `,t,` to `,r,`.`].join(``);throw Error(g)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,t,r){var i=n.single_source_shortest_paths(e,t,r);return n.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var t=n.PriorityQueue,r={},i;for(i in e||={},t)t.hasOwnProperty(i)&&(r[i]=t[i]);return r.queue=[],r.sorter=e.sorter||t.default_sorter,r},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t!==void 0&&(t.exports=n)})),Me=t((e=>{var t=Q(),n=De(),r=Oe(),i=ke(),a=Ae(),o=Z(),s=q(),c=je();function l(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){let r=[],i;for(;(i=e.exec(n))!==null;)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){let n=u(o.NUMERIC,t.NUMERIC,e),r=u(o.ALPHANUMERIC,t.ALPHANUMERIC,e),i,a;return s.isKanjiModeEnabled()?(i=u(o.BYTE,t.BYTE,e),a=u(o.KANJI,t.KANJI,e)):(i=u(o.BYTE_KANJI,t.BYTE,e),a=[]),n.concat(r,i,a).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,o){switch(o){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return a.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function p(e){return e.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function m(e){let n=[];for(let r=0;r<e.length;r++){let i=e[r];switch(i.mode){case t.NUMERIC:n.push([i,{data:i.data,mode:t.ALPHANUMERIC,length:i.length},{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.ALPHANUMERIC:n.push([i,{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.KANJI:n.push([i,{data:i.data,mode:t.BYTE,length:l(i.data)}]);break;case t.BYTE:n.push([{data:i.data,mode:t.BYTE,length:l(i.data)}])}}return n}function h(e,n){let r={},i={start:{}},a=[`start`];for(let o=0;o<e.length;o++){let s=e[o],c=[];for(let e=0;e<s.length;e++){let l=s[e],u=``+o+e;c.push(u),r[u]={node:l,lastCount:0},i[u]={};for(let e=0;e<a.length;e++){let o=a[e];r[o]&&r[o].node.mode===l.mode?(i[o][u]=f(r[o].lastCount+l.length,l.mode)-f(r[o].lastCount,l.mode),r[o].lastCount+=l.length):(r[o]&&(r[o].lastCount=l.length),i[o][u]=f(l.length,l.mode)+4+t.getCharCountIndicator(l.mode,n))}}a=c}for(let e=0;e<a.length;e++)i[a[e]].end=0;return{map:i,table:r}}function g(e,o){let c,l=t.getBestModeForData(e);if(c=t.from(o,l),c!==t.BYTE&&c.bit<l.bit)throw Error(`"`+e+`" cannot be encoded with mode `+t.toString(c)+`.
4
4
  Suggested mode is: `+t.toString(l));switch(c===t.KANJI&&!s.isKanjiModeEnabled()&&(c=t.BYTE),c){case t.NUMERIC:return new n(e);case t.ALPHANUMERIC:return new r(e);case t.KANJI:return new a(e);case t.BYTE:return new i(e)}}e.fromArray=function(e){return e.reduce(function(e,t){return typeof t==`string`?e.push(g(t,null)):t.data&&e.push(g(t.data,t.mode)),e},[])},e.fromString=function(t,n){let r=h(m(d(t,s.isKanjiModeEnabled())),n),i=c.find_path(r.map,`start`,`end`),a=[];for(let e=1;e<i.length-1;e++)a.push(r.table[i[e]].node);return e.fromArray(p(a))},e.rawSplit=function(t){return e.fromArray(d(t,s.isKanjiModeEnabled()))}})),Ne=t((e=>{var t=q(),n=J(),r=_e(),i=ve(),a=ye(),o=be(),s=xe(),c=Y(),l=we(),u=Te(),d=Ee(),f=Q(),p=Me();function m(e,t){let n=e.size,r=o.getPositions(t);for(let t=0;t<r.length;t++){let i=r[t][0],a=r[t][1];for(let t=-1;t<=7;t++)if(!(i+t<=-1||n<=i+t))for(let r=-1;r<=7;r++)a+r<=-1||n<=a+r||(t>=0&&t<=6&&(r===0||r===6)||r>=0&&r<=6&&(t===0||t===6)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,a+r,!0,!0):e.set(i+t,a+r,!1,!0))}}function h(e){let t=e.size;for(let n=8;n<t-8;n++){let t=n%2==0;e.set(n,6,t,!0),e.set(6,n,t,!0)}}function g(e,t){let n=a.getPositions(t);for(let t=0;t<n.length;t++){let r=n[t][0],i=n[t][1];for(let t=-2;t<=2;t++)for(let n=-2;n<=2;n++)t===-2||t===2||n===-2||n===2||t===0&&n===0?e.set(r+t,i+n,!0,!0):e.set(r+t,i+n,!1,!0)}}function _(e,t){let n=e.size,r=u.getEncodedBits(t),i,a,o;for(let t=0;t<18;t++)i=Math.floor(t/3),a=t%3+n-8-3,o=(r>>t&1)==1,e.set(i,a,o,!0),e.set(a,i,o,!0)}function v(e,t,n){let r=e.size,i=d.getEncodedBits(t,n),a,o;for(a=0;a<15;a++)o=(i>>a&1)==1,a<6?e.set(a,8,o,!0):a<8?e.set(a+1,8,o,!0):e.set(r-15+a,8,o,!0),a<8?e.set(8,r-a-1,o,!0):a<9?e.set(8,15-a-1+1,o,!0):e.set(8,15-a-1,o,!0);e.set(r-8,8,1,!0)}function y(e,t){let n=e.size,r=-1,i=n-1,a=7,o=0;for(let s=n-1;s>0;s-=2)for(s===6&&s--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,s-n)){let r=!1;o<t.length&&(r=(t[o]>>>a&1)==1),e.set(i,s-n,r),a--,a===-1&&(o++,a=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}function b(e,n,i){let a=new r;i.forEach(function(t){a.put(t.mode.bit,4),a.put(t.getLength(),f.getCharCountIndicator(t.mode,e)),t.write(a)});let o=(t.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,n))*8;for(a.getLengthInBits()+4<=o&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(0);let s=(o-a.getLengthInBits())/8;for(let e=0;e<s;e++)a.put(e%2?17:236,8);return x(a,e,n)}function x(e,n,r){let i=t.getSymbolTotalCodewords(n),a=i-c.getTotalCodewordsCount(n,r),o=c.getBlocksCount(n,r),s=o-i%o,u=Math.floor(i/o),d=Math.floor(a/o),f=d+1,p=u-d,m=new l(p),h=0,g=Array(o),_=Array(o),v=0,y=new Uint8Array(e.buffer);for(let e=0;e<o;e++){let t=e<s?d:f;g[e]=y.slice(h,h+t),_[e]=m.encode(g[e]),h+=t,v=Math.max(v,t)}let b=new Uint8Array(i),x=0,S,C;for(S=0;S<v;S++)for(C=0;C<o;C++)S<g[C].length&&(b[x++]=g[C][S]);for(S=0;S<p;S++)for(C=0;C<o;C++)b[x++]=_[C][S];return b}function S(e,n,r,a){let o;if(Array.isArray(e))o=p.fromArray(e);else if(typeof e==`string`){let t=n;if(!t){let n=p.rawSplit(e);t=u.getBestVersionForData(n,r)}o=p.fromString(e,t||40)}else throw Error(`Invalid data`);let c=u.getBestVersionForData(o,r);if(!c)throw Error(`The amount of data is too big to be stored in a QR Code`);if(!n)n=c;else if(n<c)throw Error(`
@@ -1 +1 @@
1
- import{_ as e,i as t,m as n,p as r,u as i}from"./i18n-C3jb83S6.js";import{t as a}from"./createLucideIcon-83gaZMtv.js";import{t as o}from"./book-open-Da4OEPqB.js";import{t as s}from"./external-link-QQ0TC6X4.js";import{t as c}from"./plus-CIXME2pD.js";import{t as l}from"./search-B_Qr0f6C.js";import{t as u}from"./x-B8Tho_xC.js";import{i as d,r as f,t as p}from"./DocBrowserContext-Bai1WU2H.js";var m=a(`ArrowLeft`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),ee=a(`ArrowRight`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),h=a(`GripVertical`,[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]),g=a(`Maximize2`,[[`polyline`,{points:`15 3 21 3 21 9`,key:`mznyad`}],[`polyline`,{points:`9 21 3 21 3 15`,key:`1avn1i`}],[`line`,{x1:`21`,x2:`14`,y1:`3`,y2:`10`,key:`ota7mn`}],[`line`,{x1:`3`,x2:`10`,y1:`21`,y2:`14`,key:`1atl0r`}]]),_=a(`PanelRightOpen`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}],[`path`,{d:`m10 15-3-3 3-3`,key:`1pgupc`}]]),v=e(n(),1),y=r();function b(){let{isOpen:e,mode:n,tabs:r,activeTabId:a,currentTab:b,currentUrl:x,navVersion:S,close:C,toggleMode:w,goBack:T,goForward:E,canGoBack:te,canGoForward:D,navigate:O,syncUrl:k,setActiveTab:A,closeTab:j,openNewTab:M}=d(),[N,P]=(0,v.useState)(``),[F,I]=(0,v.useState)(!1),[L,R]=(0,v.useState)(!1),[z,B]=(0,v.useState)(()=>({x:Math.max(40,window.innerWidth-520),y:80})),[V,H]=(0,v.useState)({w:480,h:600}),[U,W]=(0,v.useState)(420),G=(0,v.useRef)(null),K=(0,v.useRef)(null),q=(0,v.useRef)(null),J=(0,v.useRef)(null),Y=(0,v.useRef)(S),X=b?.kind===`docs`;(0,v.useEffect)(()=>{if(!X){P(``);return}try{P(new URL(x).pathname)}catch{P(x)}},[x,a,X]),(0,v.useEffect)(()=>{if(X){if(S!==Y.current){Y.current=S;return}if(J.current?.contentWindow)try{let e=new URL(x).pathname;J.current.contentWindow.postMessage({type:`docs-navigate`,path:e},`*`)}catch{}}},[x,S,X]),(0,v.useEffect)(()=>{n===`floating`&&B(e=>({x:Math.max(40,window.innerWidth-V.w-40),y:e.y}))},[n,V.w]),(0,v.useEffect)(()=>{let e=e=>{X&&e.data?.type===`docs-route-change`&&typeof e.data.url==`string`&&k(e.data.url)};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[k,X]);let Z=(0,v.useCallback)(e=>{if(e.preventDefault(),!X)return;let t=N.trim();t&&(t.startsWith(`/`)?O(`${p}${t}`):t.startsWith(`http`)?O(t):O(`${p}/${t}`))},[N,O,X]),ne=(0,v.useCallback)(e=>{n===`floating`&&(I(!0),G.current={startX:e.clientX,startY:e.clientY,startPosX:z.x,startPosY:z.y})},[n,z]);(0,v.useEffect)(()=>{if(!F)return;let e=e=>{G.current&&B({x:G.current.startPosX+(e.clientX-G.current.startX),y:G.current.startPosY+(e.clientY-G.current.startY)})},t=()=>{I(!1),G.current=null};return window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,t),()=>{window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,t)}},[F]);let Q=(0,v.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),R(!0);let t=e.currentTarget.dataset.axis;K.current={startX:e.clientX,startY:e.clientY,startW:V.w,startH:V.h};let n=e=>{K.current&&H(n=>({w:t===`y`?n.w:Math.max(360,K.current.startW+(e.clientX-K.current.startX)),h:t===`x`?n.h:Math.max(400,K.current.startH+(e.clientY-K.current.startY))}))},r=()=>{R(!1),K.current=null,window.removeEventListener(`mousemove`,n),window.removeEventListener(`mouseup`,r)};window.addEventListener(`mousemove`,n),window.addEventListener(`mouseup`,r)},[V]),re=(0,v.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),R(!0),q.current={startX:e.clientX,startW:U};let t=e=>{if(!q.current)return;let t=q.current.startX-e.clientX;W(Math.max(320,Math.min(860,q.current.startW+t)))},n=()=>{R(!1),q.current=null,window.removeEventListener(`mousemove`,t),window.removeEventListener(`mouseup`,n)};window.addEventListener(`mousemove`,t),window.addEventListener(`mouseup`,n)},[U]),ie=(0,v.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),R(!0);let t=e.clientX,n=V.w,r=z.x,i=e=>{let i=t-e.clientX,a=Math.max(360,n+i);H(e=>({...e,w:a})),B(e=>({...e,x:r-(a-n)}))},a=()=>{R(!1),window.removeEventListener(`mousemove`,i),window.removeEventListener(`mouseup`,a)};window.addEventListener(`mousemove`,i),window.addEventListener(`mouseup`,a)},[V.w,z.x]);if(!e)return null;let $=n===`docked`;return(0,y.jsxs)(`div`,{className:i(`flex flex-col bg-white overflow-hidden relative`,$?`h-full border-l border-gray-200 shrink-0`:`rounded-2xl shadow-2xl border border-gray-200`),style:$?{width:U}:{position:`fixed`,left:z.x,top:z.y,width:V.w,height:V.h,zIndex:9999},children:[$&&(0,y.jsx)(`div`,{className:`absolute top-0 left-0 w-1.5 h-full cursor-ew-resize z-20 hover:bg-primary/10 transition-colors`,onMouseDown:re}),(0,y.jsxs)(`div`,{className:i(`flex items-center justify-between px-4 py-2.5 bg-gray-50 border-b border-gray-200 shrink-0 select-none`,!$&&`cursor-grab active:cursor-grabbing`),onMouseDown:$?void 0:ne,children:[(0,y.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[(0,y.jsx)(o,{className:`w-4 h-4 text-primary shrink-0`}),(0,y.jsx)(`span`,{className:`text-sm font-semibold text-gray-900 truncate`,children:t(`docBrowserTitle`)})]}),(0,y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,y.jsx)(`button`,{onClick:w,className:`hover:bg-gray-200 rounded-md p-1.5 text-gray-500 hover:text-gray-700 transition-colors`,title:t($?`docBrowserFloatMode`:`docBrowserDockMode`),children:$?(0,y.jsx)(g,{className:`w-3.5 h-3.5`}):(0,y.jsx)(_,{className:`w-3.5 h-3.5`})}),(0,y.jsx)(`button`,{onClick:C,className:`hover:bg-gray-200 rounded-md p-1.5 text-gray-500 hover:text-gray-700 transition-colors`,title:t(`docBrowserClose`),children:(0,y.jsx)(u,{className:`w-3.5 h-3.5`})})]})]}),(0,y.jsxs)(`div`,{className:`flex items-center gap-1.5 px-2.5 py-2 bg-white border-b border-gray-100 overflow-x-auto custom-scrollbar`,children:[r.map(e=>(0,y.jsxs)(`div`,{className:i(`inline-flex items-center gap-1 h-7 px-1.5 rounded-lg text-xs border max-w-[220px] shrink-0 transition-colors`,e.id===a?`bg-blue-50 border-blue-300 text-blue-700`:`bg-gray-50 border-gray-200 text-gray-600 hover:bg-gray-100`),children:[(0,y.jsx)(`button`,{type:`button`,onClick:()=>A(e.id),className:`truncate text-left px-1`,title:e.title,children:e.title||t(`docBrowserTabUntitled`)}),(0,y.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),j(e.id)},className:`rounded p-0.5 hover:bg-black/10`,"aria-label":t(`docBrowserCloseTab`),children:(0,y.jsx)(u,{className:`w-3 h-3`})})]},e.id)),(0,y.jsx)(`button`,{onClick:()=>M(void 0,{kind:`docs`,title:`Docs`}),className:`inline-flex items-center justify-center w-7 h-7 rounded-lg border border-gray-200 bg-white text-gray-600 hover:bg-gray-100 shrink-0`,title:t(`docBrowserNewTab`),children:(0,y.jsx)(c,{className:`w-3.5 h-3.5`})})]}),X&&(0,y.jsxs)(`div`,{className:`flex items-center gap-2 px-3.5 py-2 bg-white border-b border-gray-100 shrink-0`,children:[(0,y.jsx)(`button`,{onClick:T,disabled:!te,className:`p-1.5 rounded-md hover:bg-gray-100 disabled:opacity-30 disabled:cursor-not-allowed text-gray-600 transition-colors`,children:(0,y.jsx)(m,{className:`w-4 h-4`})}),(0,y.jsx)(`button`,{onClick:E,disabled:!D,className:`p-1.5 rounded-md hover:bg-gray-100 disabled:opacity-30 disabled:cursor-not-allowed text-gray-600 transition-colors`,children:(0,y.jsx)(ee,{className:`w-4 h-4`})}),(0,y.jsxs)(`form`,{onSubmit:Z,className:`flex-1 relative`,children:[(0,y.jsx)(l,{className:`w-3.5 h-3.5 absolute left-3 top-1/2 -translate-y-1/2 text-gray-400`}),(0,y.jsx)(`input`,{type:`text`,value:N,onChange:e=>P(e.target.value),placeholder:t(`docBrowserSearchPlaceholder`),className:`w-full h-8 pl-8 pr-3 rounded-lg bg-gray-50 border border-gray-200 text-xs text-gray-700 focus:outline-none focus:ring-1 focus:ring-primary/30 focus:border-primary/40 transition-colors placeholder:text-gray-400`})]})]}),(0,y.jsxs)(`div`,{className:`flex-1 relative overflow-hidden`,children:[(0,y.jsx)(`iframe`,{ref:J,src:x,className:`absolute inset-0 w-full h-full border-0`,title:b?.title||`NextClaw Docs`,sandbox:`allow-same-origin allow-scripts allow-popups allow-forms`,allow:`clipboard-read; clipboard-write`},`${a}:${S}`),(L||F)&&(0,y.jsx)(`div`,{className:`absolute inset-0 z-10`})]}),X&&f(x)&&(0,y.jsx)(`div`,{className:`flex items-center justify-between px-4 py-2 bg-gray-50 border-t border-gray-200 shrink-0`,children:(0,y.jsxs)(`a`,{href:x,target:`_blank`,rel:`noopener noreferrer`,"data-doc-external":!0,className:`flex items-center gap-1.5 text-xs text-primary hover:text-primary-hover font-medium transition-colors`,children:[t(`docBrowserOpenExternal`),(0,y.jsx)(s,{className:`w-3 h-3`})]})}),!$&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`div`,{className:`absolute top-0 left-0 w-1.5 h-full cursor-ew-resize z-20 hover:bg-primary/10 transition-colors`,onMouseDown:ie}),(0,y.jsx)(`div`,{className:`absolute top-0 right-0 w-1.5 h-full cursor-ew-resize z-20 hover:bg-primary/10 transition-colors`,onMouseDown:Q,"data-axis":`x`}),(0,y.jsx)(`div`,{className:`absolute bottom-0 left-0 h-1.5 w-full cursor-ns-resize z-20 hover:bg-primary/10 transition-colors`,onMouseDown:Q,"data-axis":`y`}),(0,y.jsx)(`div`,{className:`absolute bottom-0 right-0 w-4 h-4 cursor-se-resize z-30 flex items-center justify-center text-gray-300 hover:text-gray-500 transition-colors`,onMouseDown:Q,children:(0,y.jsx)(h,{className:`w-3 h-3 rotate-[-45deg]`})})]})]})}export{m as n,b as t};
1
+ import{_ as e,i as t,m as n,p as r,u as i}from"./i18n-CwHZ-9vt.js";import{t as a}from"./createLucideIcon-DVv8taGY.js";import{t as o}from"./book-open-DocgeQtR.js";import{t as s}from"./external-link-DFjw3x1B.js";import{t as c}from"./plus-DUOVbsyQ.js";import{t as l}from"./search-MChQRYR1.js";import{t as u}from"./x-DuMhMATD.js";import{i as d,r as f,t as p}from"./DocBrowserContext-Ce28gRXt.js";var m=a(`ArrowLeft`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),ee=a(`ArrowRight`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),h=a(`GripVertical`,[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]),g=a(`Maximize2`,[[`polyline`,{points:`15 3 21 3 21 9`,key:`mznyad`}],[`polyline`,{points:`9 21 3 21 3 15`,key:`1avn1i`}],[`line`,{x1:`21`,x2:`14`,y1:`3`,y2:`10`,key:`ota7mn`}],[`line`,{x1:`3`,x2:`10`,y1:`21`,y2:`14`,key:`1atl0r`}]]),_=a(`PanelRightOpen`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}],[`path`,{d:`m10 15-3-3 3-3`,key:`1pgupc`}]]),v=e(n(),1),y=r();function b(){let{isOpen:e,mode:n,tabs:r,activeTabId:a,currentTab:b,currentUrl:x,navVersion:S,close:C,toggleMode:w,goBack:T,goForward:E,canGoBack:te,canGoForward:D,navigate:O,syncUrl:k,setActiveTab:A,closeTab:j,openNewTab:M}=d(),[N,P]=(0,v.useState)(``),[F,I]=(0,v.useState)(!1),[L,R]=(0,v.useState)(!1),[z,B]=(0,v.useState)(()=>({x:Math.max(40,window.innerWidth-520),y:80})),[V,H]=(0,v.useState)({w:480,h:600}),[U,W]=(0,v.useState)(420),G=(0,v.useRef)(null),K=(0,v.useRef)(null),q=(0,v.useRef)(null),J=(0,v.useRef)(null),Y=(0,v.useRef)(S),X=b?.kind===`docs`;(0,v.useEffect)(()=>{if(!X){P(``);return}try{P(new URL(x).pathname)}catch{P(x)}},[x,a,X]),(0,v.useEffect)(()=>{if(X){if(S!==Y.current){Y.current=S;return}if(J.current?.contentWindow)try{let e=new URL(x).pathname;J.current.contentWindow.postMessage({type:`docs-navigate`,path:e},`*`)}catch{}}},[x,S,X]),(0,v.useEffect)(()=>{n===`floating`&&B(e=>({x:Math.max(40,window.innerWidth-V.w-40),y:e.y}))},[n,V.w]),(0,v.useEffect)(()=>{let e=e=>{X&&e.data?.type===`docs-route-change`&&typeof e.data.url==`string`&&k(e.data.url)};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[k,X]);let Z=(0,v.useCallback)(e=>{if(e.preventDefault(),!X)return;let t=N.trim();t&&(t.startsWith(`/`)?O(`${p}${t}`):t.startsWith(`http`)?O(t):O(`${p}/${t}`))},[N,O,X]),ne=(0,v.useCallback)(e=>{n===`floating`&&(I(!0),G.current={startX:e.clientX,startY:e.clientY,startPosX:z.x,startPosY:z.y})},[n,z]);(0,v.useEffect)(()=>{if(!F)return;let e=e=>{G.current&&B({x:G.current.startPosX+(e.clientX-G.current.startX),y:G.current.startPosY+(e.clientY-G.current.startY)})},t=()=>{I(!1),G.current=null};return window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,t),()=>{window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,t)}},[F]);let Q=(0,v.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),R(!0);let t=e.currentTarget.dataset.axis;K.current={startX:e.clientX,startY:e.clientY,startW:V.w,startH:V.h};let n=e=>{K.current&&H(n=>({w:t===`y`?n.w:Math.max(360,K.current.startW+(e.clientX-K.current.startX)),h:t===`x`?n.h:Math.max(400,K.current.startH+(e.clientY-K.current.startY))}))},r=()=>{R(!1),K.current=null,window.removeEventListener(`mousemove`,n),window.removeEventListener(`mouseup`,r)};window.addEventListener(`mousemove`,n),window.addEventListener(`mouseup`,r)},[V]),re=(0,v.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),R(!0),q.current={startX:e.clientX,startW:U};let t=e=>{if(!q.current)return;let t=q.current.startX-e.clientX;W(Math.max(320,Math.min(860,q.current.startW+t)))},n=()=>{R(!1),q.current=null,window.removeEventListener(`mousemove`,t),window.removeEventListener(`mouseup`,n)};window.addEventListener(`mousemove`,t),window.addEventListener(`mouseup`,n)},[U]),ie=(0,v.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),R(!0);let t=e.clientX,n=V.w,r=z.x,i=e=>{let i=t-e.clientX,a=Math.max(360,n+i);H(e=>({...e,w:a})),B(e=>({...e,x:r-(a-n)}))},a=()=>{R(!1),window.removeEventListener(`mousemove`,i),window.removeEventListener(`mouseup`,a)};window.addEventListener(`mousemove`,i),window.addEventListener(`mouseup`,a)},[V.w,z.x]);if(!e)return null;let $=n===`docked`;return(0,y.jsxs)(`div`,{className:i(`flex flex-col bg-white overflow-hidden relative`,$?`h-full border-l border-gray-200 shrink-0`:`rounded-2xl shadow-2xl border border-gray-200`),style:$?{width:U}:{position:`fixed`,left:z.x,top:z.y,width:V.w,height:V.h,zIndex:9999},children:[$&&(0,y.jsx)(`div`,{className:`absolute top-0 left-0 w-1.5 h-full cursor-ew-resize z-20 hover:bg-primary/10 transition-colors`,onMouseDown:re}),(0,y.jsxs)(`div`,{className:i(`flex items-center justify-between px-4 py-2.5 bg-gray-50 border-b border-gray-200 shrink-0 select-none`,!$&&`cursor-grab active:cursor-grabbing`),onMouseDown:$?void 0:ne,children:[(0,y.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0`,children:[(0,y.jsx)(o,{className:`w-4 h-4 text-primary shrink-0`}),(0,y.jsx)(`span`,{className:`text-sm font-semibold text-gray-900 truncate`,children:t(`docBrowserTitle`)})]}),(0,y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,y.jsx)(`button`,{onClick:w,className:`hover:bg-gray-200 rounded-md p-1.5 text-gray-500 hover:text-gray-700 transition-colors`,title:t($?`docBrowserFloatMode`:`docBrowserDockMode`),children:$?(0,y.jsx)(g,{className:`w-3.5 h-3.5`}):(0,y.jsx)(_,{className:`w-3.5 h-3.5`})}),(0,y.jsx)(`button`,{onClick:C,className:`hover:bg-gray-200 rounded-md p-1.5 text-gray-500 hover:text-gray-700 transition-colors`,title:t(`docBrowserClose`),children:(0,y.jsx)(u,{className:`w-3.5 h-3.5`})})]})]}),(0,y.jsxs)(`div`,{className:`flex items-center gap-1.5 px-2.5 py-2 bg-white border-b border-gray-100 overflow-x-auto custom-scrollbar`,children:[r.map(e=>(0,y.jsxs)(`div`,{className:i(`inline-flex items-center gap-1 h-7 px-1.5 rounded-lg text-xs border max-w-[220px] shrink-0 transition-colors`,e.id===a?`bg-blue-50 border-blue-300 text-blue-700`:`bg-gray-50 border-gray-200 text-gray-600 hover:bg-gray-100`),children:[(0,y.jsx)(`button`,{type:`button`,onClick:()=>A(e.id),className:`truncate text-left px-1`,title:e.title,children:e.title||t(`docBrowserTabUntitled`)}),(0,y.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),j(e.id)},className:`rounded p-0.5 hover:bg-black/10`,"aria-label":t(`docBrowserCloseTab`),children:(0,y.jsx)(u,{className:`w-3 h-3`})})]},e.id)),(0,y.jsx)(`button`,{onClick:()=>M(void 0,{kind:`docs`,title:`Docs`}),className:`inline-flex items-center justify-center w-7 h-7 rounded-lg border border-gray-200 bg-white text-gray-600 hover:bg-gray-100 shrink-0`,title:t(`docBrowserNewTab`),children:(0,y.jsx)(c,{className:`w-3.5 h-3.5`})})]}),X&&(0,y.jsxs)(`div`,{className:`flex items-center gap-2 px-3.5 py-2 bg-white border-b border-gray-100 shrink-0`,children:[(0,y.jsx)(`button`,{onClick:T,disabled:!te,className:`p-1.5 rounded-md hover:bg-gray-100 disabled:opacity-30 disabled:cursor-not-allowed text-gray-600 transition-colors`,children:(0,y.jsx)(m,{className:`w-4 h-4`})}),(0,y.jsx)(`button`,{onClick:E,disabled:!D,className:`p-1.5 rounded-md hover:bg-gray-100 disabled:opacity-30 disabled:cursor-not-allowed text-gray-600 transition-colors`,children:(0,y.jsx)(ee,{className:`w-4 h-4`})}),(0,y.jsxs)(`form`,{onSubmit:Z,className:`flex-1 relative`,children:[(0,y.jsx)(l,{className:`w-3.5 h-3.5 absolute left-3 top-1/2 -translate-y-1/2 text-gray-400`}),(0,y.jsx)(`input`,{type:`text`,value:N,onChange:e=>P(e.target.value),placeholder:t(`docBrowserSearchPlaceholder`),className:`w-full h-8 pl-8 pr-3 rounded-lg bg-gray-50 border border-gray-200 text-xs text-gray-700 focus:outline-none focus:ring-1 focus:ring-primary/30 focus:border-primary/40 transition-colors placeholder:text-gray-400`})]})]}),(0,y.jsxs)(`div`,{className:`flex-1 relative overflow-hidden`,children:[(0,y.jsx)(`iframe`,{ref:J,src:x,className:`absolute inset-0 w-full h-full border-0`,title:b?.title||`NextClaw Docs`,sandbox:`allow-same-origin allow-scripts allow-popups allow-forms`,allow:`clipboard-read; clipboard-write`},`${a}:${S}`),(L||F)&&(0,y.jsx)(`div`,{className:`absolute inset-0 z-10`})]}),X&&f(x)&&(0,y.jsx)(`div`,{className:`flex items-center justify-between px-4 py-2 bg-gray-50 border-t border-gray-200 shrink-0`,children:(0,y.jsxs)(`a`,{href:x,target:`_blank`,rel:`noopener noreferrer`,"data-doc-external":!0,className:`flex items-center gap-1.5 text-xs text-primary hover:text-primary-hover font-medium transition-colors`,children:[t(`docBrowserOpenExternal`),(0,y.jsx)(s,{className:`w-3 h-3`})]})}),!$&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`div`,{className:`absolute top-0 left-0 w-1.5 h-full cursor-ew-resize z-20 hover:bg-primary/10 transition-colors`,onMouseDown:ie}),(0,y.jsx)(`div`,{className:`absolute top-0 right-0 w-1.5 h-full cursor-ew-resize z-20 hover:bg-primary/10 transition-colors`,onMouseDown:Q,"data-axis":`x`}),(0,y.jsx)(`div`,{className:`absolute bottom-0 left-0 h-1.5 w-full cursor-ns-resize z-20 hover:bg-primary/10 transition-colors`,onMouseDown:Q,"data-axis":`y`}),(0,y.jsx)(`div`,{className:`absolute bottom-0 right-0 w-4 h-4 cursor-se-resize z-30 flex items-center justify-center text-gray-300 hover:text-gray-500 transition-colors`,onMouseDown:Q,children:(0,y.jsx)(h,{className:`w-3 h-3 rotate-[-45deg]`})})]})]})}export{m as n,b as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./DocBrowser-BMxf9CIK.js";export{e as DocBrowser};