getkova 2026.4.26 → 2026.4.28
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/.buildstamp +1 -1
- package/dist/{agents-B6Omt_HL.js → agents-C8WSP7ep.js} +1 -1
- package/dist/{agents-BDtcGXZZ.js → agents-Daie0zy-.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/{capability-cli-DQpANNgh.js → capability-cli-DGlH9TBA.js} +1 -1
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/cli-startup-metadata.json +1 -1
- package/dist/{command-registry-DRMTW0EJ.js → command-registry-C7apXeX-.js} +7 -7
- package/dist/{command-registry-DeDVjftE.js → command-registry-Cssz6XRI.js} +1 -1
- package/dist/{completion-cli-hrcKL6pu.js → completion-cli-OSV8Mxw6.js} +2 -2
- package/dist/{completion-cli-CEbp4GRL.js → completion-cli-y5W2jADD.js} +1 -1
- package/dist/{config-cli-light-BRIuSbv9.js → config-cli-light-CMPvO7j1.js} +1 -1
- package/dist/{configure-Bvhpv8U0.js → configure-CSra27E4.js} +1 -1
- package/dist/{configure-hihykYY9.js → configure-CiYDWuSq.js} +4 -4
- package/dist/control-ui/Sleepy kova.png +0 -0
- package/dist/control-ui/Sleepy kova.png:Zone.Identifier +0 -0
- package/dist/control-ui/apple-touch-icon.png +0 -0
- package/dist/control-ui/assets/{agents-zdoAQZWu.js → agents-BUzlQfGZ.js} +53 -53
- package/dist/control-ui/assets/{channel-config-extras-C9aXEmVr.js → channel-config-extras-DvRct64Y.js} +2 -2
- package/dist/control-ui/assets/{channels-BV410f1t.js → channels-DpgriRLB.js} +146 -164
- package/dist/control-ui/assets/{cron-Bmeg97Ol.js → cron-Svv9xHeH.js} +2 -2
- package/dist/control-ui/assets/{de-B9x7O_1g.js → de-COhQTI4G.js} +1 -1
- package/dist/control-ui/assets/{debug-CxzHk5v2.js → debug-Bn5kQ0jI.js} +4 -4
- package/dist/control-ui/assets/directive-C6NBp6xJ.js +2 -0
- package/dist/control-ui/assets/{dreaming-CY6__wce.js → dreaming-u4jVqApV.js} +31 -29
- package/dist/control-ui/assets/{es-BrVPfSUA.js → es-BSY8cLhL.js} +1 -1
- package/dist/control-ui/assets/format-B2PqtJus.js +8 -0
- package/dist/control-ui/assets/{fr-CHT6zza2.js → fr-DAdVaQz0.js} +1 -1
- package/dist/control-ui/assets/i18n-FIEmRdxD.js +3 -0
- package/dist/control-ui/assets/{id-Dm3VjGeP.js → id-DpciMeCz.js} +1 -1
- package/dist/control-ui/assets/{index-BTmGSFHO.js → index-BI0KknlA.js} +687 -653
- package/dist/control-ui/assets/index-BWqnG6g1.css +1 -0
- package/dist/control-ui/assets/{instances-DxMIVdY6.js → instances-C5sSAY0q.js} +2 -2
- package/dist/control-ui/assets/{ja-JP-DJrGt_uH.js → ja-JP-C4Ei8t6h.js} +1 -1
- package/dist/control-ui/assets/{ko-DLopXgi0.js → ko-C5gMotHG.js} +1 -1
- package/dist/control-ui/assets/{logs-tu24-pPx.js → logs-DCLpA9mp.js} +2 -2
- package/dist/control-ui/assets/{nodes-CRtLVrUZ.js → nodes-Dde02wWy.js} +16 -16
- package/dist/control-ui/assets/{pl-DnBYbWd4.js → pl-C04nmvrR.js} +1 -1
- package/dist/control-ui/assets/{preview-B6vi4el7.js → preview-C_oLeox-.js} +1 -1
- package/dist/control-ui/assets/{pt-BR-BqHI9IRW.js → pt-BR-Dt7WMNjw.js} +1 -1
- package/dist/control-ui/assets/{sessions-BYV6pxq5.js → sessions-CXi7robA.js} +23 -23
- package/dist/control-ui/assets/{skills-V7CRi2OR.js → skills-BTJhqwbx.js} +35 -35
- package/dist/control-ui/assets/{skills-shared-BG1O_pfK.js → skills-shared-BFYbaS-Q.js} +2 -2
- package/dist/control-ui/assets/string-coerce-LCfkQHEZ.js +2 -0
- package/dist/control-ui/assets/{tr-YfbUU-SH.js → tr-D4NBFKDY.js} +1 -1
- package/dist/control-ui/assets/{uk-7GtQ_7oc.js → uk-y1duvdFk.js} +1 -1
- package/dist/control-ui/assets/{zh-CN-Dr2JRNn1.js → zh-CN-DGY3datr.js} +1 -1
- package/dist/control-ui/assets/{zh-TW-BjIqp4kq.js → zh-TW-TNj10_DK.js} +1 -1
- package/dist/control-ui/favicon-32.png +0 -0
- package/dist/control-ui/favicon.ico +0 -0
- package/dist/control-ui/index.html +9 -4
- package/dist/{daemon-cli-Don16mf6.js → daemon-cli-u_BRVOI1.js} +12 -12
- package/dist/{daemon-install-C3EFB1sJ.js → daemon-install-BlgJTVIe.js} +1 -1
- package/dist/{doctor-completion-C8TBIixd.js → doctor-completion-JcZOn1m7.js} +1 -1
- package/dist/entry.js +3 -3
- package/dist/extensions/amazon-bedrock/.openclaw-runtime-deps-stamp.json +1 -1
- package/dist/extensions/amazon-bedrock-mantle/.openclaw-runtime-deps-stamp.json +1 -1
- package/dist/extensions/diffs/.openclaw-runtime-deps-stamp.json +1 -1
- package/dist/extensions/discord/.openclaw-runtime-deps-stamp.json +1 -1
- package/dist/extensions/feishu/.openclaw-runtime-deps-stamp.json +1 -1
- package/dist/extensions/qqbot/.openclaw-runtime-deps-stamp.json +1 -1
- package/dist/extensions/slack/.openclaw-runtime-deps-stamp.json +1 -1
- package/dist/extensions/telegram/.openclaw-runtime-deps-stamp.json +1 -1
- package/dist/extensions/webhooks/.openclaw-runtime-deps-stamp.json +1 -1
- package/dist/{gateway-cli-CY7o_hpA.js → gateway-cli-Bt5iJbdz.js} +7 -7
- package/dist/{gateway-install-token-DKuN93YK.js → gateway-install-token-DyQY5djj.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/{models-DbPT1fhL.js → models-BWG-btvZ.js} +1 -1
- package/dist/{models-cli-BBniFiba.js → models-cli--WgKVPYs.js} +1 -1
- package/dist/{models-hF4CK70I.js → models-iQ04olB-.js} +1 -1
- package/dist/{onboard-DX-Rk6RH.js → onboard-BLUvfVFp.js} +4 -4
- package/dist/{onboard-helpers-tosm3jFd.js → onboard-helpers-CDvUqLk8.js} +1 -1
- package/dist/{onboard-helpers-PGxR13Ax.js → onboard-helpers-DiwS29UK.js} +6 -5
- package/dist/{onboard-remote-BTILHwjK.js → onboard-remote-Bnf3YLD-.js} +1 -1
- package/dist/{onboard-remote-wQCAOGcK.js → onboard-remote-KRli0D80.js} +1 -1
- package/dist/{onboard-skills-D8smnmkL.js → onboard-skills-BmD8o6rS.js} +1 -1
- package/dist/onboard-skills-C9wZ6QtM.js +2 -0
- package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
- package/dist/{program-CBQKJlt0.js → program-OsrxaA4i.js} +1 -1
- package/dist/{prompt-select-styled-DSm5wkjr.js → prompt-select-styled-CVipx5OJ.js} +3 -3
- package/dist/{register-1nHrA0e5.js → register-CJydn45D.js} +2 -2
- package/dist/{register.agent-X1xkjblj.js → register.agent-CWl5KdpY.js} +1 -1
- package/dist/{register.configure-DXJrOvMQ.js → register.configure-D9DmBQr2.js} +1 -1
- package/dist/{register.maintenance-DRAoQQGk.js → register.maintenance-CfmlAjZv.js} +2 -2
- package/dist/{register.onboard-C9JJ4G7S.js → register.onboard-CNokKnkq.js} +1 -1
- package/dist/{register.setup-BdX5Xe0o.js → register.setup-C05tHwTx.js} +1 -1
- package/dist/{register.subclis-Dy0xWX6g.js → register.subclis-Bb6svFaM.js} +1 -1
- package/dist/{register.subclis-CZTgH7Ea.js → register.subclis-qiXxr9Wy.js} +5 -5
- package/dist/run-CScM0dw1.js +2 -0
- package/dist/{run-BX-7GYSj.js → run-DF-2iJa9.js} +2 -2
- package/dist/{run-help-CiamJ18e.js → run-help-CNUphfKy.js} +3 -3
- package/dist/{run-main-BMhFR8Jc.js → run-main-BDltZ_ur.js} +6 -6
- package/dist/{runners-RgFITWBL.js → runners-B2O-ME05.js} +1 -1
- package/dist/{server-Bz5dabjH.js → server-zJfBaGBg.js} +1 -1
- package/dist/{server.impl-KCuKukU3.js → server.impl-DO9_kk-G.js} +1 -1
- package/dist/{setup-D7mcxYan.js → setup-BBksoYQN.js} +5 -5
- package/dist/{setup.finalize-4roo9r5H.js → setup.finalize-CVPS-atg.js} +4 -4
- package/dist/{setup.gateway-config-Dk6gnaqs.js → setup.gateway-config-C_w_MSN-.js} +1 -1
- package/dist/{update-cli-Dg4LH9vh.js → update-cli-BbZs8CSN.js} +4 -4
- package/docs/reference/templates/AGENTS.dev.md +84 -0
- package/docs/reference/templates/AGENTS.md +219 -0
- package/docs/reference/templates/BOOT.md +12 -0
- package/docs/reference/templates/BOOTSTRAP.md +62 -0
- package/docs/reference/templates/HEARTBEAT.md +14 -0
- package/docs/reference/templates/IDENTITY.dev.md +48 -0
- package/docs/reference/templates/IDENTITY.md +48 -0
- package/docs/reference/templates/SOUL.dev.md +77 -0
- package/docs/reference/templates/SOUL.md +45 -0
- package/docs/reference/templates/TOOLS.dev.md +25 -0
- package/docs/reference/templates/TOOLS.md +47 -0
- package/docs/reference/templates/USER.dev.md +19 -0
- package/docs/reference/templates/USER.md +19 -0
- package/package.json +2 -1
- package/dist/control-ui/assets/format-3N0yjN3S.js +0 -8
- package/dist/control-ui/assets/i18n-CQvRr6_H.js +0 -3
- package/dist/control-ui/assets/index-CnlWaG5w.css +0 -1
- package/dist/onboard-skills-Bi1JktxA.js +0 -2
- package/dist/run-DNppJJaN.js +0 -2
package/dist/.buildstamp
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"builtAt":
|
|
1
|
+
{"builtAt":1776191324621,"head":"b584a1cd7ea55b3e6c271fa95127e7603c3a5d00"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./agent-scope-CLTdVQeU.js";
|
|
2
2
|
import "./config-validation-DvTJkQP1.js";
|
|
3
|
-
import { t as agentsListCommand } from "./agents-
|
|
3
|
+
import { t as agentsListCommand } from "./agents-Daie0zy-.js";
|
|
4
4
|
import "./agents.config-DKfPmKZY.js";
|
|
5
5
|
export { agentsListCommand };
|
|
@@ -20,7 +20,7 @@ import { t as WizardCancelledError } from "./prompts-BdskZ9m9.js";
|
|
|
20
20
|
import { n as logConfigUpdated } from "./logging-mpAFyGsW.js";
|
|
21
21
|
import { r as parseIdentityMarkdown, t as identityHasValues } from "./identity-file-zjQUdNWL.js";
|
|
22
22
|
import { t as createClackPrompter } from "./clack-prompter-C8Qz3bFd.js";
|
|
23
|
-
import { r as ensureWorkspaceAndSessions, s as moveToTrash } from "./onboard-helpers-
|
|
23
|
+
import { r as ensureWorkspaceAndSessions, s as moveToTrash } from "./onboard-helpers-DiwS29UK.js";
|
|
24
24
|
import { a as describeBinding, i as buildChannelBindings, n as requireValidConfigSnapshot, o as parseBindingSpecs, r as applyAgentBindings, s as removeAgentBindings, t as requireValidConfigFileSnapshot$1 } from "./config-validation-DvTJkQP1.js";
|
|
25
25
|
import { i as loadAgentIdentity, n as buildAgentSummaries, o as pruneAgentConfig, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DKfPmKZY.js";
|
|
26
26
|
import { t as promptAuthChoiceGrouped } from "./auth-choice-prompt-CG0ZsjLU.js";
|
package/dist/build-info.json
CHANGED
|
@@ -31,7 +31,7 @@ import { r as listSpeechProviders, t as canonicalizeSpeechProviderId } from "./p
|
|
|
31
31
|
import { a as transcribeAudioFile, r as describeVideoFile, t as describeImageFile } from "./runtime-CGS6sit3.js";
|
|
32
32
|
import { o as registerBuiltInMemoryEmbeddingProviders, r as createEmbeddingProvider } from "./manager-D1C25Tbr.js";
|
|
33
33
|
import "./runtime-api-0XQjYu-e.js";
|
|
34
|
-
import { i as modelsStatusCommand, v as modelsAuthLoginCommand } from "./models-
|
|
34
|
+
import { i as modelsStatusCommand, v as modelsAuthLoginCommand } from "./models-BWG-btvZ.js";
|
|
35
35
|
import { t as collectOption } from "./helpers-CS3r-PK3.js";
|
|
36
36
|
import path from "node:path";
|
|
37
37
|
import fs from "node:fs/promises";
|
package/dist/cli/daemon-cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Legacy shim for pre-tsdown update-cli imports.
|
|
2
|
-
import * as daemonCli from "../daemon-cli-
|
|
2
|
+
import * as daemonCli from "../daemon-cli-u_BRVOI1.js";
|
|
3
3
|
export const registerDaemonCli = daemonCli.s;
|
|
4
4
|
export const runDaemonInstall = daemonCli.t;
|
|
5
5
|
export const runDaemonRestart = daemonCli.n;
|
|
@@ -27,5 +27,5 @@
|
|
|
27
27
|
],
|
|
28
28
|
"channelCatalogSignature": "be1d54ba0ade082a8b5da53f555fc5607c5fffd2",
|
|
29
29
|
"rootHelpBundleSignature": "7930ed8ac6aa92f982cae016506f578eca5c01cd",
|
|
30
|
-
"rootHelpText": "\n🤖 Kova 2026.4.
|
|
30
|
+
"rootHelpText": "\n🤖 Kova 2026.4.27 (b584a1c) — I'm the reason your shell history looks like a hacker-movie montage.\n\nUsage: kova [options] [command]\n\nOptions:\n --container <name> Run the CLI inside a running Podman/Docker container\n named <name> (default: env KOVA_CONTAINER)\n --dev Dev profile: isolate state under ~/.kova-dev, default\n gateway port 19001, and shift derived ports\n (browser/canvas)\n -h, --help Display help for command\n --log-level <level> Global log level override for file + console\n (silent|fatal|error|warn|info|debug|trace)\n --no-color Disable ANSI colors\n --profile <name> Use a named profile (isolates\n KOVA_STATE_DIR/KOVA_STATE_DIR and\n KOVA_CONFIG_PATH/KOVA_CONFIG_PATH under ~/.kova-<name>)\n -V, --version output the version number\n\nCommands:\n Hint: commands suffixed with * have subcommands. Run <command> --help for details.\n acp * Agent Control Protocol tools\n agent Run one agent turn via the Gateway\n agents * Manage isolated agents (workspaces, auth, routing)\n approvals * Manage exec approvals (gateway or node host)\n backup * Create and verify local backup archives for Kova state\n capability * Run provider-backed inference commands (fallback alias:\n infer)\n channels * Manage connected chat channels (Telegram, Discord, etc.)\n clawbot * Legacy clawbot command aliases\n completion Generate shell completion script\n config * Non-interactive config helpers\n (get/set/unset/file/validate). Default: starts guided\n setup.\n configure Interactive configuration for credentials, channels,\n gateway, and agent defaults\n cron * Manage cron jobs via the Gateway scheduler\n daemon * Gateway service (legacy alias)\n dashboard Open the Control UI with your current token\n devices * Device pairing + token management\n directory * Lookup contact and group IDs (self, peers, groups) for\n supported chat channels\n dns * DNS helpers for wide-area discovery (Tailscale + CoreDNS)\n docs Search the live Kova docs\n doctor Health checks + quick fixes for the gateway and channels\n gateway * Run, inspect, and query the WebSocket Gateway\n health Fetch health from the running gateway\n help Display help for command\n hooks * Manage internal agent hooks\n infer * Run provider-backed inference commands\n logs Tail gateway file logs via RPC\n mcp * Manage Kova MCP config and channel bridge\n memory Search, inspect, and reindex memory files\n message * Send, read, and manage messages\n models * Discover, scan, and configure models\n node * Run and manage the headless node host service\n nodes * Manage gateway-owned node pairing and node commands\n onboard Interactive onboarding for gateway, workspace, and skills\n pairing * Secure DM pairing (approve inbound requests)\n plugins * Manage Kova plugins and extensions\n qa * Run QA scenarios and launch the private QA debugger UI\n qr Generate mobile pairing QR/setup code\n reset Reset local config/state (keeps the CLI installed)\n sandbox * Manage sandbox containers for agent isolation\n secrets * Secrets runtime reload controls\n security * Security tools and local config audits\n sessions * List stored conversation sessions\n setup Initialize local config and agent workspace\n skills * List and inspect available skills\n status Show channel health and recent session recipients\n system * System events, heartbeat, and presence\n tasks * Inspect durable background task state\n tui Open a terminal UI connected to the Gateway\n uninstall Uninstall the gateway service + local data (CLI remains)\n update * Update Kova and inspect update channel status\n webhooks * Webhook helpers and integrations\n\nExamples:\n kova models --help\n Show detailed help for the models command.\n kova channels login --verbose\n Link personal WhatsApp Web and show QR + connection logs.\n kova message send --target +15555550123 --message \"Hi\" --json\n Send via your web session and print JSON result.\n kova gateway --port 18790\n Run the WebSocket Gateway locally.\n kova --dev gateway\n Run a dev Gateway (isolated state/config) on ws://127.0.0.1:19001.\n kova gateway --force\n Kill anything bound to the default gateway port, then start it.\n kova gateway ...\n Gateway control via WebSocket.\n kova agent --to +15555550123 --message \"Run summary\" --deliver\n Talk directly to the agent using the Gateway; optionally send the WhatsApp reply.\n kova message send --channel telegram --target @mychat --message \"Hi\"\n Send via your Telegram bot.\n\nDocs: https://docs.kova.ai/cli\n\n"
|
|
31
31
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as resolveCliArgvInvocation } from "./argv-invocation-C2TcgE-H.js";
|
|
2
2
|
import { n as shouldRegisterPrimaryCommandOnly } from "./command-registration-policy-CWPiq4uz.js";
|
|
3
|
-
import { a as defineImportedCommandGroupSpec, i as buildCommandGroupEntries, o as defineImportedProgramCommandGroupSpecs, r as registerSubCliCommands } from "./register.subclis-
|
|
3
|
+
import { a as defineImportedCommandGroupSpec, i as buildCommandGroupEntries, o as defineImportedProgramCommandGroupSpecs, r as registerSubCliCommands } from "./register.subclis-qiXxr9Wy.js";
|
|
4
4
|
import { i as registerCommandGroups, r as registerCommandGroupByName } from "./register-command-groups-BzYwsB_9.js";
|
|
5
5
|
import { n as getCoreCliCommandNames$1, t as getCoreCliCommandDescriptors } from "./core-command-descriptors-CN0dyfav.js";
|
|
6
6
|
//#region src/cli/program/command-registry.ts
|
|
@@ -16,22 +16,22 @@ const coreEntrySpecs = [
|
|
|
16
16
|
...withProgramOnlySpecs(defineImportedProgramCommandGroupSpecs([
|
|
17
17
|
{
|
|
18
18
|
commandNames: ["setup"],
|
|
19
|
-
loadModule: () => import("./register.setup-
|
|
19
|
+
loadModule: () => import("./register.setup-C05tHwTx.js"),
|
|
20
20
|
exportName: "registerSetupCommand"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
commandNames: ["onboard"],
|
|
24
|
-
loadModule: () => import("./register.onboard-
|
|
24
|
+
loadModule: () => import("./register.onboard-CNokKnkq.js"),
|
|
25
25
|
exportName: "registerOnboardCommand"
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
commandNames: ["configure"],
|
|
29
|
-
loadModule: () => import("./register.configure-
|
|
29
|
+
loadModule: () => import("./register.configure-D9DmBQr2.js"),
|
|
30
30
|
exportName: "registerConfigureCommand"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
commandNames: ["config"],
|
|
34
|
-
loadModule: () => import("./config-cli-light-
|
|
34
|
+
loadModule: () => import("./config-cli-light-CMPvO7j1.js"),
|
|
35
35
|
exportName: "registerConfigCli"
|
|
36
36
|
},
|
|
37
37
|
{
|
|
@@ -46,7 +46,7 @@ const coreEntrySpecs = [
|
|
|
46
46
|
"reset",
|
|
47
47
|
"uninstall"
|
|
48
48
|
],
|
|
49
|
-
loadModule: () => import("./register.maintenance-
|
|
49
|
+
loadModule: () => import("./register.maintenance-CfmlAjZv.js"),
|
|
50
50
|
exportName: "registerMaintenanceCommands"
|
|
51
51
|
}
|
|
52
52
|
])),
|
|
@@ -58,7 +58,7 @@ const coreEntrySpecs = [
|
|
|
58
58
|
loadModule: () => import("./mcp-cli-y9K_Ayp3.js"),
|
|
59
59
|
exportName: "registerMcpCli"
|
|
60
60
|
}])),
|
|
61
|
-
defineImportedCommandGroupSpec(["agent", "agents"], () => import("./register.agent-
|
|
61
|
+
defineImportedCommandGroupSpec(["agent", "agents"], () => import("./register.agent-CWl5KdpY.js"), (mod, { program, ctx }) => {
|
|
62
62
|
mod.registerAgentCommands(program, { agentChannelOptions: ctx.agentChannelOptions });
|
|
63
63
|
}),
|
|
64
64
|
...withProgramOnlySpecs(defineImportedProgramCommandGroupSpecs([{
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { r as getCoreCliCommandsWithSubcommands, t as getCoreCliCommandDescriptors } from "./core-command-descriptors-CN0dyfav.js";
|
|
2
|
-
import { i as registerProgramCommands, n as registerCoreCliByName, r as registerCoreCliCommands, t as getCoreCliCommandNames } from "./command-registry-
|
|
2
|
+
import { i as registerProgramCommands, n as registerCoreCliByName, r as registerCoreCliCommands, t as getCoreCliCommandNames } from "./command-registry-C7apXeX-.js";
|
|
3
3
|
export { getCoreCliCommandDescriptors, getCoreCliCommandNames, getCoreCliCommandsWithSubcommands, registerCoreCliByName, registerCoreCliCommands, registerProgramCommands };
|
|
@@ -4,8 +4,8 @@ import { c as routeLogsToStderr } from "./subsystem-D2KpcrQo.js";
|
|
|
4
4
|
import { t as formatDocsLink } from "./links-CrmPTJ17.js";
|
|
5
5
|
import { r as theme } from "./theme-D_Sw7NXe.js";
|
|
6
6
|
import { _ as resolveStateDir } from "./paths-XU2auJ0t.js";
|
|
7
|
-
import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-
|
|
8
|
-
import { n as registerCoreCliByName, t as getCoreCliCommandNames } from "./command-registry-
|
|
7
|
+
import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-qiXxr9Wy.js";
|
|
8
|
+
import { n as registerCoreCliByName, t as getCoreCliCommandNames } from "./command-registry-C7apXeX-.js";
|
|
9
9
|
import { t as getProgramContext } from "./program-context-Ds_E1ej4.js";
|
|
10
10
|
import path from "node:path";
|
|
11
11
|
import os from "node:os";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as registerCompletionCli, c as usesSlowDynamicCompletion, i as isCompletionInstalled, n as getCompletionScript, o as resolveCompletionCachePath, r as installCompletion, s as resolveShellFromEnv, t as completionCacheExists } from "./completion-cli-
|
|
1
|
+
import { a as registerCompletionCli, c as usesSlowDynamicCompletion, i as isCompletionInstalled, n as getCompletionScript, o as resolveCompletionCachePath, r as installCompletion, s as resolveShellFromEnv, t as completionCacheExists } from "./completion-cli-OSV8Mxw6.js";
|
|
2
2
|
export { completionCacheExists, getCompletionScript, installCompletion, isCompletionInstalled, registerCompletionCli, resolveCompletionCachePath, resolveShellFromEnv, usesSlowDynamicCompletion };
|
|
@@ -13,7 +13,7 @@ const CONFIG_SET_DESCRIPTION = [
|
|
|
13
13
|
].join("\n");
|
|
14
14
|
function registerConfigCli(program) {
|
|
15
15
|
const cmd = program.command("config").description("Non-interactive config helpers (get/set/unset/file/schema/validate). Run without subcommand for guided setup.").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/config", "docs.kova.ai/cli/config")}\n`).option("--section <section>", "Configuration sections for guided setup (repeatable). Use with no subcommand.", (value, previous) => [...previous, value], []).action(async (opts) => {
|
|
16
|
-
const [{ configureCommandFromSectionsArg }, { defaultRuntime }] = await Promise.all([import("./configure-
|
|
16
|
+
const [{ configureCommandFromSectionsArg }, { defaultRuntime }] = await Promise.all([import("./configure-CSra27E4.js"), import("./runtime-DhrzeBuK.js")]);
|
|
17
17
|
await configureCommandFromSectionsArg(opts.section, defaultRuntime);
|
|
18
18
|
});
|
|
19
19
|
cmd.command("get").description("Get a config value by dot path").argument("<path>", "Config path (dot or bracket notation)").option("--json", "Output JSON", false).action(async (path, opts) => {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as buildGatewayAuthConfig, i as runConfigureWizard, n as configureCommandFromSectionsArg, o as CONFIGURE_WIZARD_SECTIONS, r as configureCommandWithSections, s as parseConfigureWizardSections, t as configureCommand } from "./configure-
|
|
1
|
+
import { a as buildGatewayAuthConfig, i as runConfigureWizard, n as configureCommandFromSectionsArg, o as CONFIGURE_WIZARD_SECTIONS, r as configureCommandWithSections, s as parseConfigureWizardSections, t as configureCommand } from "./configure-CiYDWuSq.js";
|
|
2
2
|
export { CONFIGURE_WIZARD_SECTIONS, buildGatewayAuthConfig, configureCommand, configureCommandFromSectionsArg, configureCommandWithSections, parseConfigureWizardSections, runConfigureWizard };
|
|
@@ -23,8 +23,8 @@ import { t as applyPrimaryModel } from "./provider-model-primary-vw-gYirQ.js";
|
|
|
23
23
|
import { n as withProgress } from "./progress-_WKcwShi.js";
|
|
24
24
|
import { t as createClackPrompter } from "./clack-prompter-C8Qz3bFd.js";
|
|
25
25
|
import { t as resolveControlUiLinks } from "./control-ui-links-CDfNNXC4.js";
|
|
26
|
-
import { a as guardCancel, c as normalizeGatewayTokenInput, d as randomToken, h as waitForGatewayReachable, m as validateGatewayPasswordInput, n as applyWizardMetadata, p as summarizeExistingConfig, r as ensureWorkspaceAndSessions, t as DEFAULT_WORKSPACE, u as probeGatewayReachable } from "./onboard-helpers-
|
|
27
|
-
import { n as buildGatewayInstallPlan, r as gatewayInstallErrorHint, t as resolveGatewayInstallToken } from "./gateway-install-token-
|
|
26
|
+
import { a as guardCancel, c as normalizeGatewayTokenInput, d as randomToken, h as waitForGatewayReachable, m as validateGatewayPasswordInput, n as applyWizardMetadata, p as summarizeExistingConfig, r as ensureWorkspaceAndSessions, t as DEFAULT_WORKSPACE, u as probeGatewayReachable } from "./onboard-helpers-DiwS29UK.js";
|
|
27
|
+
import { n as buildGatewayInstallPlan, r as gatewayInstallErrorHint, t as resolveGatewayInstallToken } from "./gateway-install-token-DyQY5djj.js";
|
|
28
28
|
import { n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-dAqErN6y.js";
|
|
29
29
|
import { n as isNonFatalSystemdInstallProbeError } from "./systemd-BZAfchG0.js";
|
|
30
30
|
import { r as resolveGatewayService, t as describeGatewayServiceRestart } from "./service-DScZ90Fz.js";
|
|
@@ -40,8 +40,8 @@ import { i as promptModelAllowlist, n as applyModelFallbacksFromSelection, r as
|
|
|
40
40
|
import { i as promptCustomApiConfig } from "./onboard-custom-28e1LtuI.js";
|
|
41
41
|
import { a as maybeAddTailnetOriginToControlUiAllowedOrigins, i as TAILSCALE_MISSING_BIN_NOTE_LINES, n as TAILSCALE_DOCS_LINES, r as TAILSCALE_EXPOSURE_OPTIONS, t as validateIPv4AddressInput } from "./ipv4-fuj3v9c_.js";
|
|
42
42
|
import { t as formatHealthCheckFailure } from "./health-format-BKL7ZWjS.js";
|
|
43
|
-
import { t as promptRemoteGatewayConfig } from "./onboard-remote-
|
|
44
|
-
import { t as setupSkills } from "./onboard-skills-
|
|
43
|
+
import { t as promptRemoteGatewayConfig } from "./onboard-remote-Bnf3YLD-.js";
|
|
44
|
+
import { t as setupSkills } from "./onboard-skills-BmD8o6rS.js";
|
|
45
45
|
import path from "node:path";
|
|
46
46
|
import fs from "node:fs/promises";
|
|
47
47
|
import { confirm, intro, outro, select, text } from "@clack/prompts";
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{f as e,o as t,r as n,u as r}from"./i18n-
|
|
1
|
+
import{f as e,o as t,r as n,u as r}from"./i18n-FIEmRdxD.js";import{t as i}from"./string-coerce-BfWUeqM-.js";import{u as a}from"./format-B2PqtJus.js";import{A as o,C as s,D as c,E as l,M as u,N as d,O as f,T as p,_ as m,a as h,b as g,d as _,f as v,j as y,k as b,m as x,n as S,p as C,r as w,t as T,v as E,w as D,x as O,y as k}from"./index-BI0KknlA.js";import{r as A}from"./channel-config-extras-DvRct64Y.js";import{i as j,n as M,r as N,t as P}from"./skills-shared-BFYbaS-Q.js";function F(t){let{agent:i,configForm:a,agentFilesList:o,configLoading:s,configSaving:u,configDirty:d,onConfigReload:m,onConfigSave:h,onModelChange:g,onModelFallbacksChange:_,onSelectPanel:v}=t,y=l(a,i.id),x=i.model,S=(o&&o.agentId===i.id?o.workspace:null)||y.entry?.workspace||y.defaults?.workspace||i.workspace||`default`,C=y.entry?.model?f(y.entry?.model):y.defaults?.model?f(y.defaults?.model):f(x),w=f(y.defaults?.model??x),T=b(y.entry?.model),E=b(y.defaults?.model)||(w===`-`?null:D(w))||(a?null:b(x)),O=T??E??null,A=c(y.entry?.model)??c(y.defaults?.model)??(a?null:c(x))??[],j=Array.isArray(y.entry?.skills)?y.entry?.skills:null,M=j?.length??null,N=!!(t.defaultId&&i.id===t.defaultId),P=!a||s||u,F=e=>{let t=A.filter((t,n)=>n!==e);_(i.id,t)};return e`
|
|
2
2
|
<section class="card">
|
|
3
3
|
<div class="card-title">Overview</div>
|
|
4
4
|
<div class="card-sub">Workspace paths and identity metadata.</div>
|
|
@@ -10,7 +10,7 @@ import{f as e,o as t,r as n,u as r}from"./i18n-CQvRr6_H.js";import{u as i}from".
|
|
|
10
10
|
<button
|
|
11
11
|
type="button"
|
|
12
12
|
class="workspace-link mono"
|
|
13
|
-
@click=${()=>
|
|
13
|
+
@click=${()=>v(`files`)}
|
|
14
14
|
title="Open Files tab"
|
|
15
15
|
>
|
|
16
16
|
${S}
|
|
@@ -27,7 +27,7 @@ import{f as e,o as t,r as n,u as r}from"./i18n-CQvRr6_H.js";import{u as i}from".
|
|
|
27
27
|
</div>
|
|
28
28
|
</div>
|
|
29
29
|
|
|
30
|
-
${
|
|
30
|
+
${d?e`
|
|
31
31
|
<div class="callout warn" style="margin-top: 16px">
|
|
32
32
|
You have unsaved config changes.
|
|
33
33
|
</div>
|
|
@@ -41,7 +41,7 @@ import{f as e,o as t,r as n,u as r}from"./i18n-CQvRr6_H.js";import{u as i}from".
|
|
|
41
41
|
<select
|
|
42
42
|
.value=${N?O??``:T??``}
|
|
43
43
|
?disabled=${P}
|
|
44
|
-
@change=${e=>
|
|
44
|
+
@change=${e=>g(i.id,e.target.value||null)}
|
|
45
45
|
>
|
|
46
46
|
${N?e` <option value="">Not set</option> `:e`
|
|
47
47
|
<option value="">
|
|
@@ -73,8 +73,8 @@ import{f as e,o as t,r as n,u as r}from"./i18n-CQvRr6_H.js";import{u as i}from".
|
|
|
73
73
|
<input
|
|
74
74
|
?disabled=${P}
|
|
75
75
|
placeholder=${A.length===0?`provider/model`:``}
|
|
76
|
-
@keydown=${e=>{let t=e.target;if(e.key===`Enter`||e.key===`,`){e.preventDefault();let n=
|
|
77
|
-
@blur=${e=>{let t=e.target,n=
|
|
76
|
+
@keydown=${e=>{let t=e.target;if(e.key===`Enter`||e.key===`,`){e.preventDefault();let n=p(t.value);n.length>0&&(_(i.id,[...A,...n]),t.value=``)}}}
|
|
77
|
+
@blur=${e=>{let t=e.target,n=p(t.value);n.length>0&&(_(i.id,[...A,...n]),t.value=``)}}
|
|
78
78
|
/>
|
|
79
79
|
</div>
|
|
80
80
|
</div>
|
|
@@ -83,18 +83,18 @@ import{f as e,o as t,r as n,u as r}from"./i18n-CQvRr6_H.js";import{u as i}from".
|
|
|
83
83
|
<button
|
|
84
84
|
type="button"
|
|
85
85
|
class="btn btn--sm"
|
|
86
|
-
?disabled=${
|
|
87
|
-
@click=${
|
|
86
|
+
?disabled=${s}
|
|
87
|
+
@click=${m}
|
|
88
88
|
>
|
|
89
89
|
${n(`common.reloadConfig`)}
|
|
90
90
|
</button>
|
|
91
91
|
<button
|
|
92
92
|
type="button"
|
|
93
93
|
class="btn btn--sm primary"
|
|
94
|
-
?disabled=${
|
|
95
|
-
@click=${
|
|
94
|
+
?disabled=${u||!d}
|
|
95
|
+
@click=${h}
|
|
96
96
|
>
|
|
97
|
-
${
|
|
97
|
+
${u?`Saving…`:`Save`}
|
|
98
98
|
</button>
|
|
99
99
|
</div>
|
|
100
100
|
</div>
|
|
@@ -120,7 +120,7 @@ ${i.map(e=>`<tr>${e.map((e,t)=>`<td${o(t)}>${Z(e)}</td>`).join(``)}</tr>`).join(
|
|
|
120
120
|
<div class="${n}callout ${n}callout-${r}" role="alert">
|
|
121
121
|
<strong class="${n}callout-title">${r}</strong>
|
|
122
122
|
<div class="${n}callout-content">${Y(e.content,t)}</div>
|
|
123
|
-
</div>`.trim()}function Y(e,t){return e.map(e=>X(e,t)).join(``)}function X(e,t){let n=Z(e.text),r=e.styles;if(r.code&&(n=`<code>${n}</code>`),r.highlight&&(n=`<mark>${n}</mark>`),r.strikethrough&&(n=`<del>${n}</del>`),r.underline&&(n=`<u>${n}</u>`),r.italic&&(n=`<em>${n}</em>`),r.bold&&(n=`<strong>${n}</strong>`),r.link){let e=t.linkTarget===`_blank`?` target="_blank" rel="noopener noreferrer"`:``,i=r.link.title?` title="${Z(r.link.title)}"`:``;n=`<a href="${Z(r.link.url)}"${i}${e}>${n}</a>`}return n}function Z(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function ie(e){return[...[1,2,3,4,5,6].map(t=>({tag:`h${t}`,classes:[`${e}heading`,`${e}h${t}`]})),{tag:`p`,classes:[`${e}paragraph`]},{tag:`ul`,classes:[`${e}bullet-list`]},{tag:`ol`,classes:[`${e}numbered-list`]},{tag:`pre`,classes:[`${e}code-block`]},{tag:`blockquote`,classes:[`${e}blockquote`]},{tag:`hr`,classes:[`${e}divider`]},{tag:`table`,classes:[`${e}table`]},{tag:`figure`,classes:[`${e}image`]}]}function ae(e,t){let n=t.join(` `),r=/\bclass\s*=\s*"([^"]*)"/i,i=e.match(r);return i?e.replace(r,`class="${n} ${i[1]}"`):e.endsWith(`/>`)?e.slice(0,-2)+` class="${n}" />`:e.slice(0,-1)+` class="${n}">`}function oe(e,t){return e.replace(/(?<!<figure[^>]*>\s*)(<img\s[^>]*\/?>)(?!\s*<\/figure>)/gi,`<figure class="${t}image">$1</figure>`)}function se(e,t){let n=t?.classPrefix??`cm-`,r=t?.wrapperClass??`${n}preview`,i=ie(n),a=e;for(let{tag:e,classes:t}of i){let n=RegExp(`<${e}(\\s[^>]*)?>|<${e}\\s*\\/?>`,`gi`);a=a.replace(n,e=>ae(e,t))}return a=oe(a,n),a=`<div class="${r}">${a}</div>`,typeof t?.sanitize==`function`&&(a=t.sanitize(a)),a}async function ce(e){try{return(await t(()=>import(`./preview-
|
|
123
|
+
</div>`.trim()}function Y(e,t){return e.map(e=>X(e,t)).join(``)}function X(e,t){let n=Z(e.text),r=e.styles;if(r.code&&(n=`<code>${n}</code>`),r.highlight&&(n=`<mark>${n}</mark>`),r.strikethrough&&(n=`<del>${n}</del>`),r.underline&&(n=`<u>${n}</u>`),r.italic&&(n=`<em>${n}</em>`),r.bold&&(n=`<strong>${n}</strong>`),r.link){let e=t.linkTarget===`_blank`?` target="_blank" rel="noopener noreferrer"`:``,i=r.link.title?` title="${Z(r.link.title)}"`:``;n=`<a href="${Z(r.link.url)}"${i}${e}>${n}</a>`}return n}function Z(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function ie(e){return[...[1,2,3,4,5,6].map(t=>({tag:`h${t}`,classes:[`${e}heading`,`${e}h${t}`]})),{tag:`p`,classes:[`${e}paragraph`]},{tag:`ul`,classes:[`${e}bullet-list`]},{tag:`ol`,classes:[`${e}numbered-list`]},{tag:`pre`,classes:[`${e}code-block`]},{tag:`blockquote`,classes:[`${e}blockquote`]},{tag:`hr`,classes:[`${e}divider`]},{tag:`table`,classes:[`${e}table`]},{tag:`figure`,classes:[`${e}image`]}]}function ae(e,t){let n=t.join(` `),r=/\bclass\s*=\s*"([^"]*)"/i,i=e.match(r);return i?e.replace(r,`class="${n} ${i[1]}"`):e.endsWith(`/>`)?e.slice(0,-2)+` class="${n}" />`:e.slice(0,-1)+` class="${n}">`}function oe(e,t){return e.replace(/(?<!<figure[^>]*>\s*)(<img\s[^>]*\/?>)(?!\s*<\/figure>)/gi,`<figure class="${t}image">$1</figure>`)}function se(e,t){let n=t?.classPrefix??`cm-`,r=t?.wrapperClass??`${n}preview`,i=ie(n),a=e;for(let{tag:e,classes:t}of i){let n=RegExp(`<${e}(\\s[^>]*)?>|<${e}\\s*\\/?>`,`gi`);a=a.replace(n,e=>ae(e,t))}return a=oe(a,n),a=`<div class="${r}">${a}</div>`,typeof t?.sanitize==`function`&&(a=t.sanitize(a)),a}async function ce(e){try{return(await t(()=>import(`./preview-C_oLeox-.js`),[],import.meta.url)).parse(e)}catch{throw Error(`@create-markdown/core is required to parse markdown in <markdown-preview>. Install it, or provide pre-parsed blocks via the blocks attribute / setBlocks().`)}}I(class extends HTMLElement{constructor(){super(),I(this,`_shadow`,null),I(this,`plugins`,[]),I(this,`defaultTheme`,`github`),I(this,`styleElement`),I(this,`contentElement`);let e=this.constructor._shadowMode;e!==`none`&&(this._shadow=this.attachShadow({mode:e})),this.styleElement=document.createElement(`style`),this.renderRoot.appendChild(this.styleElement),this.contentElement=document.createElement(`div`),this.contentElement.className=`markdown-preview-content`,this.renderRoot.appendChild(this.contentElement),this.updateStyles()}static get observedAttributes(){return[`theme`,`link-target`,`async`]}get renderRoot(){return this._shadow??this}connectedCallback(){this.render()}attributeChangedCallback(e,t,n){this.render()}setPlugins(e){this.plugins=e,this.render()}setDefaultTheme(e){this.defaultTheme=e,this.render()}getMarkdown(){let e=this.getAttribute(`blocks`);if(e)try{return JSON.parse(e).map(e=>e.content.map(e=>e.text).join(``)).join(`
|
|
124
124
|
|
|
125
125
|
`)}catch{return``}return this.textContent||``}setMarkdown(e){this.textContent=e,this.render()}setBlocks(e){this.setAttribute(`blocks`,JSON.stringify(e)),this.render()}getOptions(){return{theme:this.getAttribute(`theme`)||this.defaultTheme,linkTarget:this.getAttribute(`link-target`)||`_blank`,plugins:this.plugins}}async getBlocks(){let e=this.getAttribute(`blocks`);if(e)try{return JSON.parse(e)}catch{return console.warn(`Invalid blocks JSON in markdown-preview element`),[]}return ce(this.textContent||``)}async render(){let e=await this.getBlocks(),t=this.getOptions(),n=this.hasAttribute(`async`)||this.plugins.length>0;try{let r;r=n?await re(e,t):z(e,t),this.contentElement.innerHTML=r}catch(e){console.error(`Error rendering markdown preview:`,e),this.contentElement.innerHTML=`<div class="error">Error rendering content</div>`}}updateStyles(){let e=this.plugins.filter(e=>e.getCSS).map(e=>e.getCSS()).join(`
|
|
126
126
|
|
|
@@ -181,7 +181,7 @@ ${e}
|
|
|
181
181
|
</div>
|
|
182
182
|
</div>
|
|
183
183
|
</section>
|
|
184
|
-
`}function le(e,t){let n=e.channelMeta?.find(e=>e.id===t);return n?.label?n.label:e.channelLabels?.[t]??t}function ue(e){if(!e)return[];let t=new Set;for(let n of e.channelOrder??[])t.add(n);for(let n of e.channelMeta??[])t.add(n.id);for(let n of Object.keys(e.channelAccounts??{}))t.add(n);let n=[],r=e.channelOrder?.length?e.channelOrder:Array.from(t);for(let e of r)t.has(e)&&(n.push(e),t.delete(e));for(let e of t)n.push(e);return n.map(t=>({id:t,label:le(e,t),accounts:e.channelAccounts?.[t]??[]}))}var de=[`groupPolicy`,`streamMode`,`dmPolicy`];function fe(e){let t=0,n=0,r=0;for(let i of e){let e=i.probe&&typeof i.probe==`object`&&`ok`in i.probe?!!i.probe.ok:!1;(i.connected===!0||i.running===!0||e)&&(t+=1),i.configured&&(n+=1),i.enabled&&(r+=1)}return{total:e.length,connected:t,configured:n,enabled:r}}function pe(t){let
|
|
184
|
+
`}function le(e,t){let n=e.channelMeta?.find(e=>e.id===t);return n?.label?n.label:e.channelLabels?.[t]??t}function ue(e){if(!e)return[];let t=new Set;for(let n of e.channelOrder??[])t.add(n);for(let n of e.channelMeta??[])t.add(n.id);for(let n of Object.keys(e.channelAccounts??{}))t.add(n);let n=[],r=e.channelOrder?.length?e.channelOrder:Array.from(t);for(let e of r)t.has(e)&&(n.push(e),t.delete(e));for(let e of t)n.push(e);return n.map(t=>({id:t,label:le(e,t),accounts:e.channelAccounts?.[t]??[]}))}var de=[`groupPolicy`,`streamMode`,`dmPolicy`];function fe(e){let t=0,n=0,r=0;for(let i of e){let e=i.probe&&typeof i.probe==`object`&&`ok`in i.probe?!!i.probe.ok:!1;(i.connected===!0||i.running===!0||e)&&(t+=1),i.configured&&(n+=1),i.enabled&&(r+=1)}return{total:e.length,connected:t,configured:n,enabled:r}}function pe(t){let i=ue(t.snapshot),o=t.lastSuccess?a(t.lastSuccess):`never`;return e`
|
|
185
185
|
<section class="grid grid-cols-2">
|
|
186
186
|
${Q(t.context,`Workspace, identity, and model configuration.`,t.onSelectPanel)}
|
|
187
187
|
<section class="card">
|
|
@@ -201,9 +201,9 @@ ${e}
|
|
|
201
201
|
Load channels to see live status.
|
|
202
202
|
</div>
|
|
203
203
|
`}
|
|
204
|
-
${
|
|
204
|
+
${i.length===0?e` <div class="muted" style="margin-top: 16px">No channels found.</div> `:e`
|
|
205
205
|
<div class="list" style="margin-top: 16px;">
|
|
206
|
-
${
|
|
206
|
+
${i.map(n=>{let i=fe(n.accounts),a=i.total?`${i.connected}/${i.total} connected`:`no accounts`,o=i.configured?`${i.configured} configured`:`not configured`,s=i.total?`${i.enabled} enabled`:`disabled`,c=A({configForm:t.configForm,channelId:n.id,fields:de});return e`
|
|
207
207
|
<div class="list-item">
|
|
208
208
|
<div class="list-main">
|
|
209
209
|
<div class="list-title">${n.label}</div>
|
|
@@ -216,7 +216,7 @@ ${e}
|
|
|
216
216
|
${i.configured===0?e`
|
|
217
217
|
<div>
|
|
218
218
|
<a
|
|
219
|
-
href="https://docs.
|
|
219
|
+
href="https://docs.neuralstudio.in"
|
|
220
220
|
target="_blank"
|
|
221
221
|
rel="noopener"
|
|
222
222
|
style="color: var(--accent); font-size: 12px"
|
|
@@ -421,7 +421,7 @@ ${e}
|
|
|
421
421
|
<div style="display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px;">
|
|
422
422
|
${o.map(t=>e`<span class="agent-pill">${t}</span>`)}
|
|
423
423
|
</div>
|
|
424
|
-
`}function ge(e){return e.source===`plugin`?e.pluginId?n(`agentTools.connectedSource`,{id:e.pluginId}):n(`agentTools.connected`):e.source===`channel`?e.channelId?n(`agentTools.channelSource`,{id:e.channelId}):n(`agentTools.channel`):n(`agentTools.builtIn`)}function _e(t){let i=
|
|
424
|
+
`}function ge(e){return e.source===`plugin`?e.pluginId?n(`agentTools.connectedSource`,{id:e.pluginId}):n(`agentTools.connected`):e.source===`channel`?e.channelId?n(`agentTools.channelSource`,{id:e.channelId}):n(`agentTools.channel`):n(`agentTools.builtIn`)}function _e(t){let i=l(t.configForm,t.agentId),a=i.entry?.tools??{},s=i.globalTools??{},c=a.profile??s.profile??`full`,f=y(t.toolsCatalogResult),p=u(t.toolsCatalogResult),m=a.profile?`agent override`:s.profile?`global default`:`default`,h=Array.isArray(a.allow)&&a.allow.length>0,_=Array.isArray(s.allow)&&s.allow.length>0,v=!!t.configForm&&!t.configLoading&&!t.configSaving&&!h&&!(t.toolsCatalogLoading&&!t.toolsCatalogResult&&!t.toolsCatalogError),b=h?[]:Array.isArray(a.alsoAllow)?a.alsoAllow:[],x=h?[]:Array.isArray(a.deny)?a.deny:[],S=h?{allow:a.allow??[],deny:a.deny??[]}:o(c)??void 0,C=p.flatMap(e=>e.tools.map(e=>e.id)),w=e=>{let t=g(e,S),n=O(e,b),r=O(e,x);return{allowed:(t||n)&&!r,baseAllowed:t,denied:r}},T=C.filter(e=>w(e).allowed).length,E=(e,n)=>{let r=new Set(b.map(e=>d(e)).filter(e=>e.length>0)),i=new Set(x.map(e=>d(e)).filter(e=>e.length>0)),a=w(e).baseAllowed,o=d(e);n?(i.delete(o),a||r.add(o)):(r.delete(o),i.add(o)),t.onOverridesChange(t.agentId,[...r],[...i])},D=e=>{let n=new Set(b.map(e=>d(e)).filter(e=>e.length>0)),r=new Set(x.map(e=>d(e)).filter(e=>e.length>0));for(let t of C){let i=w(t).baseAllowed,a=d(t);e?(r.delete(a),i||n.add(a)):(n.delete(a),r.add(a))}t.onOverridesChange(t.agentId,[...n],[...r])};return e`
|
|
425
425
|
<section class="card">
|
|
426
426
|
<div class="row" style="justify-content: space-between; flex-wrap: wrap;">
|
|
427
427
|
<div style="min-width: 0;">
|
|
@@ -432,10 +432,10 @@ ${e}
|
|
|
432
432
|
</div>
|
|
433
433
|
</div>
|
|
434
434
|
<div class="row" style="gap: 8px; flex-wrap: wrap;">
|
|
435
|
-
<button class="btn btn--sm" ?disabled=${!
|
|
435
|
+
<button class="btn btn--sm" ?disabled=${!v} @click=${()=>D(!0)}>
|
|
436
436
|
Enable All
|
|
437
437
|
</button>
|
|
438
|
-
<button class="btn btn--sm" ?disabled=${!
|
|
438
|
+
<button class="btn btn--sm" ?disabled=${!v} @click=${()=>D(!1)}>
|
|
439
439
|
Disable All
|
|
440
440
|
</button>
|
|
441
441
|
<button
|
|
@@ -460,13 +460,13 @@ ${e}
|
|
|
460
460
|
Load the gateway config to adjust tool profiles.
|
|
461
461
|
</div>
|
|
462
462
|
`}
|
|
463
|
-
${
|
|
463
|
+
${h?e`
|
|
464
464
|
<div class="callout info" style="margin-top: 12px">
|
|
465
465
|
This agent is using an explicit allowlist in config. Tool overrides are managed in the
|
|
466
466
|
Config tab.
|
|
467
467
|
</div>
|
|
468
468
|
`:r}
|
|
469
|
-
${
|
|
469
|
+
${_?e`
|
|
470
470
|
<div class="callout info" style="margin-top: 12px">
|
|
471
471
|
Global tools.allow is set. Agent overrides cannot enable tools that are globally
|
|
472
472
|
blocked.
|
|
@@ -488,7 +488,7 @@ ${e}
|
|
|
488
488
|
</div>
|
|
489
489
|
<div class="agent-kv">
|
|
490
490
|
<div class="label">Source</div>
|
|
491
|
-
<div>${
|
|
491
|
+
<div>${m}</div>
|
|
492
492
|
</div>
|
|
493
493
|
${t.configDirty?e`
|
|
494
494
|
<div class="agent-kv">
|
|
@@ -549,10 +549,10 @@ ${e}
|
|
|
549
549
|
<div class="agent-tools-presets" style="margin-top: 16px;">
|
|
550
550
|
<div class="label">Quick Presets</div>
|
|
551
551
|
<div class="agent-tools-buttons">
|
|
552
|
-
${
|
|
552
|
+
${f.map(n=>e`
|
|
553
553
|
<button
|
|
554
554
|
class="btn btn--sm ${c===n.id?`active`:``}"
|
|
555
|
-
?disabled=${!
|
|
555
|
+
?disabled=${!v}
|
|
556
556
|
@click=${()=>t.onProfileChange(t.agentId,n.id,!0)}
|
|
557
557
|
>
|
|
558
558
|
${n.label}
|
|
@@ -560,7 +560,7 @@ ${e}
|
|
|
560
560
|
`)}
|
|
561
561
|
<button
|
|
562
562
|
class="btn btn--sm"
|
|
563
|
-
?disabled=${!
|
|
563
|
+
?disabled=${!v}
|
|
564
564
|
@click=${()=>t.onProfileChange(t.agentId,null,!1)}
|
|
565
565
|
>
|
|
566
566
|
Inherit
|
|
@@ -569,7 +569,7 @@ ${e}
|
|
|
569
569
|
</div>
|
|
570
570
|
|
|
571
571
|
<div class="agent-tools-grid" style="margin-top: 20px;">
|
|
572
|
-
${
|
|
572
|
+
${p.map(t=>e`
|
|
573
573
|
<div class="agent-tools-section">
|
|
574
574
|
<div class="agent-tools-header">
|
|
575
575
|
${t.label}
|
|
@@ -589,7 +589,7 @@ ${e}
|
|
|
589
589
|
<input
|
|
590
590
|
type="checkbox"
|
|
591
591
|
.checked=${r}
|
|
592
|
-
?disabled=${!
|
|
592
|
+
?disabled=${!v}
|
|
593
593
|
@change=${e=>E(n.id,e.target.checked)}
|
|
594
594
|
/>
|
|
595
595
|
<span class="cfg-toggle__track"></span>
|
|
@@ -601,7 +601,7 @@ ${e}
|
|
|
601
601
|
`)}
|
|
602
602
|
</div>
|
|
603
603
|
</section>
|
|
604
|
-
`}function ve(t){let
|
|
604
|
+
`}function ve(t){let a=!!t.configForm&&!t.configLoading&&!t.configSaving,o=l(t.configForm,t.agentId),s=Array.isArray(o.entry?.skills)?o.entry?.skills:void 0,c=new Set((s??[]).map(e=>e.trim()).filter(Boolean)),u=s!==void 0,d=!!(t.report&&t.activeAgentId===t.agentId),f=d?t.report?.skills??[]:[],p=i(t.filter),m=p?f.filter(e=>i([e.name,e.description,e.source].join(` `)).includes(p)):f,h=j(m),g=u?f.filter(e=>c.has(e.name)).length:f.length,_=f.length;return e`
|
|
605
605
|
<section class="card">
|
|
606
606
|
<div class="row" style="justify-content: space-between; flex-wrap: wrap;">
|
|
607
607
|
<div style="min-width: 0;">
|
|
@@ -618,21 +618,21 @@ ${e}
|
|
|
618
618
|
>
|
|
619
619
|
<button
|
|
620
620
|
class="btn btn--sm"
|
|
621
|
-
?disabled=${!
|
|
621
|
+
?disabled=${!a}
|
|
622
622
|
@click=${()=>t.onClear(t.agentId)}
|
|
623
623
|
>
|
|
624
624
|
Enable All
|
|
625
625
|
</button>
|
|
626
626
|
<button
|
|
627
627
|
class="btn btn--sm"
|
|
628
|
-
?disabled=${!
|
|
628
|
+
?disabled=${!a}
|
|
629
629
|
@click=${()=>t.onDisableAll(t.agentId)}
|
|
630
630
|
>
|
|
631
631
|
Disable All
|
|
632
632
|
</button>
|
|
633
633
|
<button
|
|
634
634
|
class="btn btn--sm"
|
|
635
|
-
?disabled=${!
|
|
635
|
+
?disabled=${!a||!u}
|
|
636
636
|
@click=${()=>t.onClear(t.agentId)}
|
|
637
637
|
title="Remove per-agent allowlist and use all skills"
|
|
638
638
|
>
|
|
@@ -664,7 +664,7 @@ ${e}
|
|
|
664
664
|
Load the gateway config to set per-agent skills.
|
|
665
665
|
</div>
|
|
666
666
|
`}
|
|
667
|
-
${
|
|
667
|
+
${u?e`
|
|
668
668
|
<div class="callout info" style="margin-top: 12px">
|
|
669
669
|
This agent uses a custom skill allowlist.
|
|
670
670
|
</div>
|
|
@@ -673,7 +673,7 @@ ${e}
|
|
|
673
673
|
All skills are enabled. Disabling any skill will create a per-agent allowlist.
|
|
674
674
|
</div>
|
|
675
675
|
`}
|
|
676
|
-
${!
|
|
676
|
+
${!d&&!t.loading?e`
|
|
677
677
|
<div class="callout info" style="margin-top: 12px">
|
|
678
678
|
Load skills for this agent to view workspace-specific entries.
|
|
679
679
|
</div>
|
|
@@ -696,7 +696,7 @@ ${e}
|
|
|
696
696
|
|
|
697
697
|
${m.length===0?e` <div class="muted" style="margin-top: 16px">No skills found.</div> `:e`
|
|
698
698
|
<div class="agent-skills-groups" style="margin-top: 16px;">
|
|
699
|
-
${h.map(e=>ye(e,{agentId:t.agentId,allowSet:c,usingAllowlist:
|
|
699
|
+
${h.map(e=>ye(e,{agentId:t.agentId,allowSet:c,usingAllowlist:u,editable:a,onToggle:t.onToggle}))}
|
|
700
700
|
</div>
|
|
701
701
|
`}
|
|
702
702
|
</section>
|
|
@@ -731,7 +731,7 @@ ${e}
|
|
|
731
731
|
</label>
|
|
732
732
|
</div>
|
|
733
733
|
</div>
|
|
734
|
-
`}function xe(t){let i=t.agentsList?.agents??[],a=t.agentsList?.defaultId??null,o=t.selectedAgentId??a??i[0]?.id??null,
|
|
734
|
+
`}function xe(t){let i=t.agentsList?.agents??[],a=t.agentsList?.defaultId??null,o=t.selectedAgentId??a??i[0]?.id??null,c=o?i.find(e=>e.id===o)??null:null,l=o&&t.agentSkills.agentId===o?t.agentSkills.report?.skills?.length??null:null,u=t.channels.snapshot?Object.keys(t.channels.snapshot.channelAccounts??{}).length:null,d=o?t.cron.jobs.filter(e=>e.agentId===o).length:null,f={files:t.agentFiles.list?.files?.length??null,skills:l,channels:u,cron:d||null};return e`
|
|
735
735
|
<div class="agents-layout">
|
|
736
736
|
<section class="agents-toolbar">
|
|
737
737
|
<div class="agents-toolbar-row">
|
|
@@ -744,17 +744,17 @@ ${e}
|
|
|
744
744
|
>
|
|
745
745
|
${i.length===0?e` <option value="">No agents</option> `:i.map(t=>e`
|
|
746
746
|
<option value=${t.id} ?selected=${t.id===o}>
|
|
747
|
-
${
|
|
747
|
+
${s(t)}${m(t.id,a)?` (${m(t.id,a)})`:``}
|
|
748
748
|
</option>
|
|
749
749
|
`)}
|
|
750
750
|
</select>
|
|
751
751
|
</div>
|
|
752
752
|
<div class="agents-toolbar-actions">
|
|
753
|
-
${
|
|
753
|
+
${c?e`
|
|
754
754
|
<button
|
|
755
755
|
type="button"
|
|
756
756
|
class="btn btn--sm btn--ghost"
|
|
757
|
-
@click=${()=>void navigator.clipboard.writeText(
|
|
757
|
+
@click=${()=>void navigator.clipboard.writeText(c.id)}
|
|
758
758
|
title="Copy agent ID to clipboard"
|
|
759
759
|
>
|
|
760
760
|
Copy ID
|
|
@@ -762,11 +762,11 @@ ${e}
|
|
|
762
762
|
<button
|
|
763
763
|
type="button"
|
|
764
764
|
class="btn btn--sm btn--ghost"
|
|
765
|
-
?disabled=${!!(a&&
|
|
766
|
-
@click=${()=>t.onSetDefault(
|
|
767
|
-
title=${a&&
|
|
765
|
+
?disabled=${!!(a&&c.id===a)}
|
|
766
|
+
@click=${()=>t.onSetDefault(c.id)}
|
|
767
|
+
title=${a&&c.id===a?`Already the default agent`:`Set as the default agent`}
|
|
768
768
|
>
|
|
769
|
-
${a&&
|
|
769
|
+
${a&&c.id===a?`Default`:`Set Default`}
|
|
770
770
|
</button>
|
|
771
771
|
`:r}
|
|
772
772
|
<button
|
|
@@ -788,14 +788,14 @@ ${e}
|
|
|
788
788
|
${t.error?e`<div class="callout danger" style="margin-top: 8px;">${t.error}</div>`:r}
|
|
789
789
|
</section>
|
|
790
790
|
<section class="agents-main">
|
|
791
|
-
${
|
|
792
|
-
${Se(t.activePanel,e=>t.onSelectPanel(e),
|
|
793
|
-
${t.activePanel===`overview`?F({agent:
|
|
794
|
-
${t.activePanel===`files`?me({agentId:
|
|
795
|
-
${t.activePanel===`tools`?_e({agentId:
|
|
796
|
-
${t.activePanel===`skills`?ve({agentId:
|
|
797
|
-
${t.activePanel===`channels`?pe({context:E(
|
|
798
|
-
${t.activePanel===`cron`?$({context:E(
|
|
791
|
+
${c?e`
|
|
792
|
+
${Se(t.activePanel,e=>t.onSelectPanel(e),f)}
|
|
793
|
+
${t.activePanel===`overview`?F({agent:c,basePath:t.basePath,defaultId:a,configForm:t.config.form,agentFilesList:t.agentFiles.list,agentIdentity:t.agentIdentityById[c.id]??null,agentIdentityError:t.agentIdentityError,agentIdentityLoading:t.agentIdentityLoading,configLoading:t.config.loading,configSaving:t.config.saving,configDirty:t.config.dirty,modelCatalog:t.modelCatalog,onConfigReload:t.onConfigReload,onConfigSave:t.onConfigSave,onModelChange:t.onModelChange,onModelFallbacksChange:t.onModelFallbacksChange,onSelectPanel:t.onSelectPanel}):r}
|
|
794
|
+
${t.activePanel===`files`?me({agentId:c.id,agentFilesList:t.agentFiles.list,agentFilesLoading:t.agentFiles.loading,agentFilesError:t.agentFiles.error,agentFileActive:t.agentFiles.active,agentFileContents:t.agentFiles.contents,agentFileDrafts:t.agentFiles.drafts,agentFileSaving:t.agentFiles.saving,onLoadFiles:t.onLoadFiles,onSelectFile:t.onSelectFile,onFileDraftChange:t.onFileDraftChange,onFileReset:t.onFileReset,onFileSave:t.onFileSave}):r}
|
|
795
|
+
${t.activePanel===`tools`?_e({agentId:c.id,configForm:t.config.form,configLoading:t.config.loading,configSaving:t.config.saving,configDirty:t.config.dirty,toolsCatalogLoading:t.toolsCatalog.loading,toolsCatalogError:t.toolsCatalog.error,toolsCatalogResult:t.toolsCatalog.result,toolsEffectiveLoading:t.toolsEffective.loading,toolsEffectiveError:t.toolsEffective.error,toolsEffectiveResult:t.toolsEffective.result,runtimeSessionKey:t.runtimeSessionKey,runtimeSessionMatchesSelectedAgent:t.runtimeSessionMatchesSelectedAgent,onProfileChange:t.onToolsProfileChange,onOverridesChange:t.onToolsOverridesChange,onConfigReload:t.onConfigReload,onConfigSave:t.onConfigSave}):r}
|
|
796
|
+
${t.activePanel===`skills`?ve({agentId:c.id,report:t.agentSkills.report,loading:t.agentSkills.loading,error:t.agentSkills.error,activeAgentId:t.agentSkills.agentId,configForm:t.config.form,configLoading:t.config.loading,configSaving:t.config.saving,configDirty:t.config.dirty,filter:t.agentSkills.filter,onFilterChange:t.onSkillsFilterChange,onRefresh:t.onSkillsRefresh,onToggle:t.onAgentSkillToggle,onClear:t.onAgentSkillsClear,onDisableAll:t.onAgentSkillsDisableAll,onConfigReload:t.onConfigReload,onConfigSave:t.onConfigSave}):r}
|
|
797
|
+
${t.activePanel===`channels`?pe({context:E(c,t.config.form,t.agentFiles.list,a,t.agentIdentityById[c.id]??null),configForm:t.config.form,snapshot:t.channels.snapshot,loading:t.channels.loading,error:t.channels.error,lastSuccess:t.channels.lastSuccess,onRefresh:t.onChannelsRefresh,onSelectPanel:t.onSelectPanel}):r}
|
|
798
|
+
${t.activePanel===`cron`?$({context:E(c,t.config.form,t.agentFiles.list,a,t.agentIdentityById[c.id]??null),agentId:c.id,jobs:t.cron.jobs,status:t.cron.status,loading:t.cron.loading,error:t.cron.error,onRefresh:t.onCronRefresh,onRunNow:t.onCronRunNow,onSelectPanel:t.onSelectPanel}):r}
|
|
799
799
|
`:e`
|
|
800
800
|
<div class="card">
|
|
801
801
|
<div class="card-title">Select an agent</div>
|
|
@@ -838,7 +838,7 @@ ${e}
|
|
|
838
838
|
type="text"
|
|
839
839
|
placeholder="e.g. work"
|
|
840
840
|
style="width:100%;box-sizing:border-box;"
|
|
841
|
-
@input=${e=>{let t=e.target.value.toLowerCase().replace(/[^a-z0-9-]/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``),n=document.getElementById(`kova-new-agent-ws`);n&&(n.value=t?`~/.
|
|
841
|
+
@input=${e=>{let t=e.target.value.toLowerCase().replace(/[^a-z0-9-]/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``),n=document.getElementById(`kova-new-agent-ws`);n&&(n.value=t?`~/.kova/workspace-${t}`:``)}}
|
|
842
842
|
/>
|
|
843
843
|
<div style="font-size:11px;color:var(--muted);margin-top:3px;">Unique slug. Auto-fills workspace.</div>
|
|
844
844
|
</div>
|
|
@@ -885,7 +885,7 @@ ${e}
|
|
|
885
885
|
<button
|
|
886
886
|
class="btn primary"
|
|
887
887
|
?disabled=${t.newAgentModalSubmitting}
|
|
888
|
-
@click=${async()=>{let e=(document.getElementById(`kova-new-agent-id`)?.value?.trim()??``).toLowerCase().replace(/[^a-z0-9-]/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``),n=document.getElementById(`kova-new-agent-name`)?.value?.trim()??``,r=document.getElementById(`kova-new-agent-model`)?.value?.trim()??``,i=document.getElementById(`kova-new-agent-ws`)?.value?.trim()||`~/.
|
|
888
|
+
@click=${async()=>{let e=(document.getElementById(`kova-new-agent-id`)?.value?.trim()??``).toLowerCase().replace(/[^a-z0-9-]/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``),n=document.getElementById(`kova-new-agent-name`)?.value?.trim()??``,r=document.getElementById(`kova-new-agent-model`)?.value?.trim()??``,i=document.getElementById(`kova-new-agent-ws`)?.value?.trim()||`~/.kova/workspace-${e}`;await t.onNewAgentModalSubmit({agentId:e,name:n,model:r,workspace:i})}}
|
|
889
889
|
>
|
|
890
890
|
${t.newAgentModalSubmitting?`Creating...`:`Create Agent`}
|
|
891
891
|
</button>
|
|
@@ -900,4 +900,4 @@ ${e}
|
|
|
900
900
|
</div>
|
|
901
901
|
</div>
|
|
902
902
|
`:r}export{xe as renderAgents};
|
|
903
|
-
//# sourceMappingURL=agents-
|
|
903
|
+
//# sourceMappingURL=agents-BUzlQfGZ.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e}from"./i18n-
|
|
2
|
-
//# sourceMappingURL=channel-config-extras-
|
|
1
|
+
import{r as e}from"./i18n-FIEmRdxD.js";function t(e,t){if(!e)return null;let n=(e.channels??{})[t];if(n&&typeof n==`object`)return n;let r=e[t];return r&&typeof r==`object`?r:null}function n(t){if(t==null)return e(`common.na`);if(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)return String(t);try{return JSON.stringify(t)}catch{return e(`common.na`)}}function r(e){let r=t(e.configForm,e.channelId);return r?e.fields.flatMap(e=>e in r?[{label:e,value:n(r[e])}]:[]):[]}export{t as n,r,n as t};
|
|
2
|
+
//# sourceMappingURL=channel-config-extras-DvRct64Y.js.map
|