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.
- package/dist/cli/index.js +167 -91
- package/package.json +12 -12
- package/ui-dist/assets/{ChannelsList-D8p4OlM6.js → ChannelsList-KIQIxluX.js} +1 -1
- package/ui-dist/assets/{DocBrowser-Cse_F8Nn.js → DocBrowser-BMxf9CIK.js} +1 -1
- package/ui-dist/assets/DocBrowser-CyDgAtO9.js +1 -0
- package/ui-dist/assets/{DocBrowserContext-Bai1WU2H.js → DocBrowserContext-Ce28gRXt.js} +1 -1
- package/ui-dist/assets/{LogoBadge-BdxMPc9v.js → LogoBadge-o92MOA2L.js} +1 -1
- package/ui-dist/assets/{MarketplacePage-BbpAkllU.js → MarketplacePage-BySqkYDh.js} +1 -1
- package/ui-dist/assets/MarketplacePage-C0olZaek.js +1 -0
- package/ui-dist/assets/{McpMarketplacePage-CxPFOgxv.js → McpMarketplacePage-DqKaiXO9.js} +1 -1
- package/ui-dist/assets/{ModelConfig-3GLqQ5GY.js → ModelConfig-IrmzoslW.js} +1 -1
- package/ui-dist/assets/{ProviderScopedModelInput-BYNouw-i.js → ProviderScopedModelInput-CmTIzgI7.js} +1 -1
- package/ui-dist/assets/{ProvidersList-BR1gJ4Dm.js → ProvidersList-8_Kalfwl.js} +1 -1
- package/ui-dist/assets/{RemoteAccessPage-DyYVWsyK.js → RemoteAccessPage-CyQlSjPf.js} +1 -1
- package/ui-dist/assets/RuntimeConfig-Bk0uYBhf.js +1 -0
- package/ui-dist/assets/{SearchConfig-DTeJvp8m.js → SearchConfig-DNBR-UbE.js} +1 -1
- package/ui-dist/assets/{SecretsConfig-CCYO6NcV.js → SecretsConfig-Ba1RPJaG.js} +1 -1
- package/ui-dist/assets/{SessionsConfig-Du39vDgt.js → SessionsConfig-Doqp5ghH.js} +1 -1
- package/ui-dist/assets/{app-query-client-Dr5d-K8d.js → app-query-client-DniXoIN5.js} +1 -1
- package/ui-dist/assets/{book-open-Da4OEPqB.js → book-open-DocgeQtR.js} +1 -1
- package/ui-dist/assets/chat-page-Bph8M5zo.js +58 -0
- package/ui-dist/assets/chat-session-display-CoN3Wmn-.js +1 -0
- package/ui-dist/assets/{chunk-JZWAC4HX-CoFVxHXV.js → chunk-JZWAC4HX-BvKvh1R8.js} +1 -1
- package/ui-dist/assets/{client-CSk58DcF.js → client-CVqPF5ie.js} +1 -1
- package/ui-dist/assets/{config-D8KzikVB.js → config-Bop2oB18.js} +1 -1
- package/ui-dist/assets/{createLucideIcon-83gaZMtv.js → createLucideIcon-DVv8taGY.js} +1 -1
- package/ui-dist/assets/desktop-update-config-1KBrqLBC.js +1 -0
- package/ui-dist/assets/{dist-toEYs-MZ.js → dist-Da5Gm_pO.js} +1 -1
- package/ui-dist/assets/{dist-aTmhMDVh.js → dist-DmAlInRu.js} +1 -1
- package/ui-dist/assets/{external-link-QQ0TC6X4.js → external-link-DFjw3x1B.js} +1 -1
- package/ui-dist/assets/{hash-DaFBEkmi.js → hash-DJtaCejM.js} +1 -1
- package/ui-dist/assets/i18n-CwHZ-9vt.js +1 -0
- package/ui-dist/assets/{index-CE4N7ItL.css → index-DafCdM4F.css} +1 -1
- package/ui-dist/assets/{index-riX7Sg0_.js → index-DdksE6U3.js} +3 -3
- package/ui-dist/assets/{infiniteQueryBehavior-BmHX_ayZ.js → infiniteQueryBehavior-DHSEQ3OH.js} +1 -1
- package/ui-dist/assets/loader-circle-PsSP0H9n.js +1 -0
- package/ui-dist/assets/{logos-Dzlz30M3.js → logos-DEFUIR12.js} +1 -1
- package/ui-dist/assets/{page-layout-D2eRufRQ.js → page-layout-Da3i3r6G.js} +1 -1
- package/ui-dist/assets/play-DBQbBxTA.js +1 -0
- package/ui-dist/assets/plus-DUOVbsyQ.js +1 -0
- package/ui-dist/assets/{popover-BSXxm5bj.js → popover-C_mWOFzI.js} +1 -1
- package/ui-dist/assets/{refresh-ccw-B3zMtN-_.js → refresh-ccw-D6HkNtfz.js} +1 -1
- package/ui-dist/assets/{refresh-cw-DlZkIHnJ.js → refresh-cw-DRcvRrnc.js} +1 -1
- package/ui-dist/assets/rotate-cw-BmDKfXtH.js +1 -0
- package/ui-dist/assets/{save-Us9fg4Sj.js → save-DHGmi2e9.js} +1 -1
- package/ui-dist/assets/search-MChQRYR1.js +1 -0
- package/ui-dist/assets/{security-config-BGWYwxNr.js → security-config-CbXfPZzr.js} +1 -1
- package/ui-dist/assets/{select-DLYqySQK.js → select-Caud8QvU.js} +1 -1
- package/ui-dist/assets/skeleton-B-4vRq_Z.js +1 -0
- package/ui-dist/assets/{status-dot-DGayudyB.js → status-dot-DurKKSwA.js} +1 -1
- package/ui-dist/assets/{switch-Dz2ScsKx.js → switch-0rmPBRKI.js} +1 -1
- package/ui-dist/assets/{tabs-custom-CdKyjiGk.js → tabs-custom-5JLVL6v8.js} +1 -1
- package/ui-dist/assets/{trash-2-Db-mZOZs.js → trash-2-C6caKPoz.js} +1 -1
- package/ui-dist/assets/{use-infinite-scroll-loader-DBJX5hj0.js → use-infinite-scroll-loader-dwnaa_qi.js} +1 -1
- package/ui-dist/assets/{useConfirmDialog-DL0a-oGC.js → useConfirmDialog-mMeWD_yo.js} +1 -1
- package/ui-dist/assets/{useMutation-BdZm-9PL.js → useMutation-BmxxvCNf.js} +1 -1
- package/ui-dist/assets/x-DuMhMATD.js +1 -0
- package/ui-dist/index.html +20 -20
- package/ui-dist/assets/ChatPage-A45t1Rmf.js +0 -58
- package/ui-dist/assets/DocBrowser-B2MpsnU9.js +0 -1
- package/ui-dist/assets/MarketplacePage-BNZ3Jx5d.js +0 -1
- package/ui-dist/assets/RuntimeConfig-ChdfK4Y_.js +0 -1
- package/ui-dist/assets/chat-session-display-CAlPrnlV.js +0 -1
- package/ui-dist/assets/desktop-update-config-CfoVwf-w.js +0 -1
- package/ui-dist/assets/i18n-C3jb83S6.js +0 -1
- package/ui-dist/assets/loader-circle-BjMg63eu.js +0 -1
- package/ui-dist/assets/plus-CIXME2pD.js +0 -1
- package/ui-dist/assets/search-B_Qr0f6C.js +0 -1
- package/ui-dist/assets/skeleton-CYQJazv6.js +0 -1
- package/ui-dist/assets/x-B8Tho_xC.js +0 -1
- /package/ui-dist/assets/{config-hints-GSUMvmSo.js → config-hints-BZoDjXye.js} +0 -0
- /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/
|
|
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
|
|
10358
|
+
const { remoteModule, requestRestart, serviceCommands, uiConfig } = params;
|
|
10359
10359
|
return new RemoteAccessHost({
|
|
10360
|
-
serviceCommands
|
|
10361
|
-
requestManagedServiceRestart: (options) => requestManagedServiceRestart(
|
|
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:
|
|
10365
|
-
remoteRuntimeController:
|
|
10364
|
+
currentUi: uiConfig,
|
|
10365
|
+
remoteRuntimeController: remoteModule ? {
|
|
10366
10366
|
start: async () => {
|
|
10367
|
-
|
|
10367
|
+
remoteModule?.start();
|
|
10368
10368
|
},
|
|
10369
10369
|
stop: async () => {
|
|
10370
|
-
await
|
|
10370
|
+
await remoteModule?.stop();
|
|
10371
10371
|
},
|
|
10372
10372
|
restart: async () => {
|
|
10373
|
-
await
|
|
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
|
-
|
|
10413
|
-
|
|
10414
|
-
|
|
10415
|
-
|
|
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
|
-
|
|
10429
|
-
|
|
10430
|
-
|
|
10431
|
-
|
|
10432
|
-
|
|
10433
|
-
|
|
10434
|
-
|
|
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
|
-
|
|
10447
|
-
|
|
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(
|
|
10547
|
-
new AssetExportTool(
|
|
10548
|
-
new AssetStatTool(
|
|
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
|
-
|
|
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
|
|
11251
|
-
const
|
|
11252
|
-
const
|
|
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 ??
|
|
11257
|
-
model: profile.model ??
|
|
11258
|
-
maxIterations: profile.maxToolIterations ??
|
|
11259
|
-
contextTokens: profile.contextTokens ??
|
|
11260
|
-
restrictToWorkspace
|
|
11261
|
-
searchConfig
|
|
11262
|
-
execTimeoutSeconds
|
|
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,
|
|
11286
|
-
if (
|
|
11287
|
-
return `[Requested skills for this turn: ${
|
|
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(
|
|
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
|
|
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,
|
|
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:
|
|
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
|
|
13988
|
-
...
|
|
13989
|
-
messageCount:
|
|
13990
|
-
updatedAt
|
|
13991
|
-
|
|
13992
|
-
|
|
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 =
|
|
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.
|
|
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/
|
|
44
|
-
"@nextclaw/ncp
|
|
45
|
-
"@nextclaw/
|
|
46
|
-
"@nextclaw/ncp-
|
|
47
|
-
"@nextclaw/ncp-
|
|
48
|
-
"@nextclaw/
|
|
49
|
-
"@nextclaw/
|
|
50
|
-
"@nextclaw/
|
|
51
|
-
"@nextclaw/
|
|
52
|
-
"@nextclaw/
|
|
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.
|
|
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-
|
|
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};
|