kaijibot 2026.8.11 → 2026.8.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/.buildstamp +1 -1
  2. package/dist/build-info.json +3 -3
  3. package/dist/cli-startup-metadata.json +1 -1
  4. package/dist/{command-auth-C8xfXAwi.js → command-auth-D7-j2tSx.js} +1 -1
  5. package/dist/{command-registry-DD-16qcg.js → command-registry-Dm-NOKfF.js} +1 -1
  6. package/dist/{command-registry-DThrYT3V.js → command-registry-zmPW46lk.js} +4 -4
  7. package/dist/{completion-cli-ab1EFitV.js → completion-cli-DU4XCxns.js} +2 -2
  8. package/dist/{completion-cli-CTYDQtia.js → completion-cli-xTD0LI-c.js} +1 -1
  9. package/dist/{direct-dm-BPTrryBJ.js → direct-dm-TNmWyNGN.js} +1 -1
  10. package/dist/{dispatch-40RST5UR.js → dispatch-DaEgOdy0.js} +1 -1
  11. package/dist/{doctor-completion-C1D4uof8.js → doctor-completion-4NAVzgO_.js} +1 -1
  12. package/dist/entry.js +1 -1
  13. package/dist/extensions/diffs/.kaijibot-runtime-deps-stamp.json +1 -1
  14. package/dist/extensions/feishu/.kaijibot-runtime-deps-stamp.json +1 -1
  15. package/dist/extensions/kindle-portal/.kaijibot-runtime-deps-stamp.json +1 -1
  16. package/dist/extensions/webhooks/.kaijibot-runtime-deps-stamp.json +1 -1
  17. package/dist/extensions/wechat/api.js +1 -1
  18. package/dist/{gateway-cli-BI3izYgO.js → gateway-cli-BxtWDdYA.js} +1 -1
  19. package/dist/get-reply-from-config.runtime-wzXZ5OEZ.js +2 -0
  20. package/dist/get-reply-from-config.runtime.js +1 -1
  21. package/dist/{heartbeat-runner-Bb1oS1HX.js → heartbeat-runner-Ces2AlGD.js} +1 -1
  22. package/dist/{heartbeat-runner-DVCZo_p8.js → heartbeat-runner-DB6S945Q.js} +13 -9
  23. package/dist/heartbeat-runner.runtime-CbfsDotY.js +2 -0
  24. package/dist/heartbeat-runner.runtime.js +1 -1
  25. package/dist/{inbound-reply-dispatch-BR6iVDxR.js → inbound-reply-dispatch-DNndPYTq.js} +1 -1
  26. package/dist/index.js +2 -2
  27. package/dist/{library-D_0L9sLB.js → library-BIRRbPIz.js} +1 -1
  28. package/dist/{monitor-BmzgkQNs.js → monitor-CMd-yJ-l.js} +1 -1
  29. package/dist/{onboard-D8J6f3uD.js → onboard-DfRxIzGa.js} +1 -1
  30. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  31. package/dist/plugin-sdk/channel-inbound.js +1 -1
  32. package/dist/plugin-sdk/command-auth.js +2 -2
  33. package/dist/plugin-sdk/direct-dm.js +1 -1
  34. package/dist/plugin-sdk/gateway-method-runtime.js +1 -1
  35. package/dist/plugin-sdk/inbound-reply-dispatch.js +1 -1
  36. package/dist/plugin-sdk/reply-dispatch-runtime.js +1 -1
  37. package/dist/plugin-sdk/reply-runtime.js +3 -3
  38. package/dist/plugins/runtime/index.js +1 -1
  39. package/dist/{program-B1izWkZf.js → program-BJNGJQ7i.js} +1 -1
  40. package/dist/{prompt-select-styled-B_6aP_-o.js → prompt-select-styled-Cp-y9M9U.js} +1 -1
  41. package/dist/{provider-dispatcher-BSDq2LAE.js → provider-dispatcher-CPH2FILd.js} +1 -1
  42. package/dist/{register.maintenance-D8WwCE89.js → register.maintenance-ZR_WPsUf.js} +1 -1
  43. package/dist/{register.onboard-lbe-G-Jf.js → register.onboard-CrWkd5Es.js} +1 -1
  44. package/dist/{register.setup-deQVOet1.js → register.setup-DK9QFaqV.js} +1 -1
  45. package/dist/{register.subclis-DWhYkywo.js → register.subclis-BxAr9pE8.js} +1 -1
  46. package/dist/{register.subclis-CUCnb2lb.js → register.subclis-MieKlAhq.js} +3 -3
  47. package/dist/{reply-eJBJEh0K.js → reply-BaegiDBV.js} +4 -0
  48. package/dist/reply.runtime-DUZDvEhP.js +2 -0
  49. package/dist/reply.runtime.js +1 -1
  50. package/dist/{run-main-BNSAZ4r6.js → run-main-Wh7L3IyR.js} +3 -3
  51. package/dist/{runtime-D_fahGJu.js → runtime-qfkievnT.js} +3 -3
  52. package/dist/{server-qmq0F63N.js → server-BZq5P06_.js} +1 -1
  53. package/dist/{server-methods-DNoc3PAG.js → server-methods-CX1CDzcQ.js} +2 -2
  54. package/dist/{server.impl-Bxb_XPH4.js → server.impl-nRWhR63b.js} +11 -5
  55. package/dist/{setup-CvyG8TIm.js → setup-BbKIF81A.js} +1 -1
  56. package/dist/{setup.finalize-GTY5aeuq.js → setup.finalize-Cq3eih-P.js} +2 -2
  57. package/dist/{update-cli-BJKzlzyq.js → update-cli-D2FXMVpk.js} +3 -3
  58. package/package.json +1 -1
  59. package/dist/get-reply-from-config.runtime-CKcaa781.js +0 -2
  60. package/dist/heartbeat-runner.runtime-BLUpBRgJ.js +0 -2
  61. package/dist/reply.runtime-DDJIqjKb.js +0 -2
package/dist/.buildstamp CHANGED
@@ -1 +1 @@
1
- {"builtAt":1786453236725,"head":"fe8395bccea0f5ec6680a48bf6f47d511d0468bf"}
1
+ {"builtAt":1786504688353,"head":"f282d96d5831f96e552b6cac353133be15737c08"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2026.8.11",
3
- "commit": "fe8395bccea0f5ec6680a48bf6f47d511d0468bf",
4
- "builtAt": "2026-08-11T13:01:23.848Z"
2
+ "version": "2026.8.12",
3
+ "commit": "f282d96d5831f96e552b6cac353133be15737c08",
4
+ "builtAt": "2026-08-12T03:19:09.646Z"
5
5
  }
@@ -14,5 +14,5 @@
14
14
  ],
15
15
  "channelCatalogSignature": "a99b78ac99491ac5c8d64c4a6973088cc21688cb",
16
16
  "rootHelpBundleSignature": "8520d7aba9638401504ce3128c98e059de7ceb60",
17
- "rootHelpText": "\n👾 KaijiBot 2026.8.11 (fe8395b) — What you see isn't the world itself, but the projection of your mental models onto it.\n\nUsage: kaijibot [options] [command]\n\nOptions:\n --container <name> Run the CLI inside a running Podman/Docker container\n named <name> (default: env KAIJIBOT_CONTAINER)\n --dev Dev profile: isolate state under ~/.kaijibot-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 KAIJIBOT_STATE_DIR/KAIJIBOT_CONFIG_PATH under\n ~/.kaijibot-<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 android-install Set up KaijiBot on Android/Termux (auto-installs\n packages, boot script, battery settings)\n approvals * Manage exec approvals (gateway or node host)\n backup * Create and verify local backup archives for KaijiBot\n 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 KaijiBot 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 KaijiBot MCP config and channel bridge\n memory Search, inspect, and reindex memory files\n message * Send, read, and manage messages\n migrate Migrate data from OpenClaw or legacy installations to\n KaijiBot\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 the gateway, workspace, and\n skills\n pairing * Secure DM pairing (approve inbound requests)\n plugins * Manage KaijiBot 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 soul * Manage soul presets (MBTI-based personality profiles)\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 KaijiBot and inspect update channel status\n webhooks * Webhook helpers and integrations\n\nExamples:\n kaijibot models --help\n Show detailed help for the models command.\n kaijibot channels login --verbose\n Link personal WhatsApp Web and show QR + connection logs.\n kaijibot message send --target +15555550123 --message \"Hi\" --json\n Send via your web session and print JSON result.\n kaijibot gateway --port 18789\n Run the WebSocket Gateway locally.\n kaijibot --dev gateway\n Run a dev Gateway (isolated state/config) on ws://127.0.0.1:19001.\n kaijibot gateway --force\n Kill anything bound to the default gateway port, then start it.\n kaijibot gateway ...\n Gateway control via WebSocket.\n kaijibot agent --to +15555550123 --message \"Run summary\" --deliver\n Talk directly to the agent using the Gateway; optionally send the WhatsApp reply.\n kaijibot message send --channel feishu --target ou_xxx --message \"Hi\"\n Send via your Telegram bot.\n\nDocs: https://gitee.com/kaiji1126/kaijibot/blob/main/docs/cli.md\n\n"
17
+ "rootHelpText": "\n👾 KaijiBot 2026.8.12 (f282d96)\n Compound interest of knowledge is the most powerful force — a little daily progress compounds beyond imagination over a decade.\n\nUsage: kaijibot [options] [command]\n\nOptions:\n --container <name> Run the CLI inside a running Podman/Docker container\n named <name> (default: env KAIJIBOT_CONTAINER)\n --dev Dev profile: isolate state under ~/.kaijibot-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 KAIJIBOT_STATE_DIR/KAIJIBOT_CONFIG_PATH under\n ~/.kaijibot-<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 android-install Set up KaijiBot on Android/Termux (auto-installs\n packages, boot script, battery settings)\n approvals * Manage exec approvals (gateway or node host)\n backup * Create and verify local backup archives for KaijiBot\n 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 KaijiBot 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 KaijiBot MCP config and channel bridge\n memory Search, inspect, and reindex memory files\n message * Send, read, and manage messages\n migrate Migrate data from OpenClaw or legacy installations to\n KaijiBot\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 the gateway, workspace, and\n skills\n pairing * Secure DM pairing (approve inbound requests)\n plugins * Manage KaijiBot 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 soul * Manage soul presets (MBTI-based personality profiles)\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 KaijiBot and inspect update channel status\n webhooks * Webhook helpers and integrations\n\nExamples:\n kaijibot models --help\n Show detailed help for the models command.\n kaijibot channels login --verbose\n Link personal WhatsApp Web and show QR + connection logs.\n kaijibot message send --target +15555550123 --message \"Hi\" --json\n Send via your web session and print JSON result.\n kaijibot gateway --port 18789\n Run the WebSocket Gateway locally.\n kaijibot --dev gateway\n Run a dev Gateway (isolated state/config) on ws://127.0.0.1:19001.\n kaijibot gateway --force\n Kill anything bound to the default gateway port, then start it.\n kaijibot gateway ...\n Gateway control via WebSocket.\n kaijibot agent --to +15555550123 --message \"Run summary\" --deliver\n Talk directly to the agent using the Gateway; optionally send the WhatsApp reply.\n kaijibot message send --channel feishu --target ou_xxx --message \"Hi\"\n Send via your Telegram bot.\n\nDocs: https://gitee.com/kaiji1126/kaijibot/blob/main/docs/cli.md\n\n"
18
18
  }
@@ -5,7 +5,7 @@ import "./command-auth-XGJw9qMC.js";
5
5
  import "./stored-model-override-B_Pfo0rs.js";
6
6
  import "./commands-models-B7UPtUbJ.js";
7
7
  import { n as buildCommandsMessagePaginated$1, r as buildHelpMessage$1, t as buildCommandsMessage$1 } from "./command-status-builders-C3CnFOP2.js";
8
- import "./direct-dm-BPTrryBJ.js";
8
+ import "./direct-dm-TNmWyNGN.js";
9
9
  import "./skill-commands-BRwGzS_r.js";
10
10
  //#region src/plugin-sdk/command-auth.ts
11
11
  /** Fast-path DM command authorization when only policy and sender allowlist state matter. */
@@ -1,3 +1,3 @@
1
1
  import "./core-command-descriptors-C6sYXgBr.js";
2
- import { n as registerCoreCliByName } from "./command-registry-DThrYT3V.js";
2
+ import { n as registerCoreCliByName } from "./command-registry-zmPW46lk.js";
3
3
  export { registerCoreCliByName };
@@ -1,6 +1,6 @@
1
1
  import { t as resolveCliArgvInvocation } from "./argv-invocation-CagzCjnZ.js";
2
2
  import { n as shouldRegisterPrimaryCommandOnly } from "./command-registration-policy-BMA0d51Q.js";
3
- import { a as defineImportedCommandGroupSpec, i as buildCommandGroupEntries, o as defineImportedProgramCommandGroupSpecs, r as registerSubCliCommands } from "./register.subclis-CUCnb2lb.js";
3
+ import { a as defineImportedCommandGroupSpec, i as buildCommandGroupEntries, o as defineImportedProgramCommandGroupSpecs, r as registerSubCliCommands } from "./register.subclis-MieKlAhq.js";
4
4
  import { i as registerCommandGroups, r as registerCommandGroupByName } from "./register-command-groups-EWuTSFO0.js";
5
5
  import { n as getCoreCliCommandNames$1, t as getCoreCliCommandDescriptors } from "./core-command-descriptors-C6sYXgBr.js";
6
6
  //#region src/cli/program/command-registry.ts
@@ -16,12 +16,12 @@ const coreEntrySpecs = [
16
16
  ...withProgramOnlySpecs(defineImportedProgramCommandGroupSpecs([
17
17
  {
18
18
  commandNames: ["setup"],
19
- loadModule: () => import("./register.setup-deQVOet1.js"),
19
+ loadModule: () => import("./register.setup-DK9QFaqV.js"),
20
20
  exportName: "registerSetupCommand"
21
21
  },
22
22
  {
23
23
  commandNames: ["onboard"],
24
- loadModule: () => import("./register.onboard-lbe-G-Jf.js"),
24
+ loadModule: () => import("./register.onboard-CrWkd5Es.js"),
25
25
  exportName: "registerOnboardCommand"
26
26
  },
27
27
  {
@@ -46,7 +46,7 @@ const coreEntrySpecs = [
46
46
  "reset",
47
47
  "uninstall"
48
48
  ],
49
- loadModule: () => import("./register.maintenance-D8WwCE89.js"),
49
+ loadModule: () => import("./register.maintenance-ZR_WPsUf.js"),
50
50
  exportName: "registerMaintenanceCommands"
51
51
  },
52
52
  {
@@ -5,8 +5,8 @@ import { t as formatDocsLink } from "./links-DG6HlfoL.js";
5
5
  import { r as theme } from "./theme-BtqB6Mz_.js";
6
6
  import { _ as resolveStateDir } from "./paths-BzRif4MR.js";
7
7
  import { r as t } from "./translate-CZMssHoF.js";
8
- import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-CUCnb2lb.js";
9
- import { n as registerCoreCliByName, t as getCoreCliCommandNames } from "./command-registry-DThrYT3V.js";
8
+ import { n as registerSubCliByName, t as getSubCliEntries } from "./register.subclis-MieKlAhq.js";
9
+ import { n as registerCoreCliByName, t as getCoreCliCommandNames } from "./command-registry-zmPW46lk.js";
10
10
  import { t as getProgramContext } from "./program-context-beQs52o_.js";
11
11
  import path from "node:path";
12
12
  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-ab1EFitV.js";
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-DU4XCxns.js";
2
2
  export { completionCacheExists, getCompletionScript, installCompletion, isCompletionInstalled, registerCompletionCli, resolveCompletionCachePath, resolveShellFromEnv, usesSlowDynamicCompletion };
@@ -1,5 +1,5 @@
1
1
  import { n as readStoreAllowFromForDmPolicy, o as resolveDmGroupAccessWithLists } from "./dm-policy-shared-CCEaN5_W.js";
2
- import { i as recordInboundSessionAndDispatchReply } from "./inbound-reply-dispatch-BR6iVDxR.js";
2
+ import { i as recordInboundSessionAndDispatchReply } from "./inbound-reply-dispatch-DNndPYTq.js";
3
3
  import { r as resolveInboundRouteEnvelopeBuilderWithRuntime } from "./inbound-envelope-CA8EoFYk.js";
4
4
  //#region src/plugin-sdk/direct-dm.ts
5
5
  /** Resolve direct-DM policy, effective allowlists, and optional command auth in one place. */
@@ -122,7 +122,7 @@ function loadRouteReplyRuntime() {
122
122
  return routeReplyRuntimePromise;
123
123
  }
124
124
  function loadGetReplyFromConfigRuntime() {
125
- getReplyFromConfigRuntimePromise ??= import("./get-reply-from-config.runtime-CKcaa781.js");
125
+ getReplyFromConfigRuntimePromise ??= import("./get-reply-from-config.runtime-wzXZ5OEZ.js");
126
126
  return getReplyFromConfigRuntimePromise;
127
127
  }
128
128
  function loadAbortRuntime() {
@@ -1,7 +1,7 @@
1
1
  import { t as resolveKaijiBotPackageRoot } from "./kaijibot-root-BjhI7uOk.js";
2
2
  import { n as resolveCliName } from "./cli-name-mbXbS_Xz.js";
3
3
  import { t as note } from "./note-o9JlpIK2.js";
4
- import { c as usesSlowDynamicCompletion, i as isCompletionInstalled, o as resolveCompletionCachePath, r as installCompletion, s as resolveShellFromEnv, t as completionCacheExists } from "./completion-cli-ab1EFitV.js";
4
+ import { c as usesSlowDynamicCompletion, i as isCompletionInstalled, o as resolveCompletionCachePath, r as installCompletion, s as resolveShellFromEnv, t as completionCacheExists } from "./completion-cli-DU4XCxns.js";
5
5
  import path from "node:path";
6
6
  import { spawnSync } from "node:child_process";
7
7
  //#region src/commands/doctor-completion.ts
package/dist/entry.js CHANGED
@@ -203,7 +203,7 @@ function tryHandleRootHelpFastPath(argv, deps = {}) {
203
203
  }
204
204
  function runMainOrRootHelp(argv) {
205
205
  if (tryHandleRootHelpFastPath(argv)) return;
206
- import("./run-main-BNSAZ4r6.js").then(({ runCli }) => runCli(argv)).catch((error) => {
206
+ import("./run-main-Wh7L3IyR.js").then(({ runCli }) => runCli(argv)).catch((error) => {
207
207
  console.error("[kaijibot] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
208
208
  process$1.exitCode = 1;
209
209
  });
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "fingerprint": "7f9a14455059d2608f7b54d385279434b5706b102c321092d95562543bbefe89",
3
- "generatedAt": "2026-08-11T13:00:19.425Z"
3
+ "generatedAt": "2026-08-12T03:18:02.540Z"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "fingerprint": "0e863d9e866384b501fe67a8493a59d491638c0b14dbd959b9a842c395597683",
3
- "generatedAt": "2026-08-11T13:00:29.105Z"
3
+ "generatedAt": "2026-08-12T03:18:05.412Z"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "fingerprint": "f6b459898ce2a3c3ffaab0a08be3597be3c465e286ddf8b3b439b3cc96a48291",
3
- "generatedAt": "2026-08-11T13:00:36.402Z"
3
+ "generatedAt": "2026-08-12T03:18:08.060Z"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "fingerprint": "e14e27d86a5c2cd6c7799ab20222469b1730dec59a22bdb6fdc2634a5d690d4f",
3
- "generatedAt": "2026-08-11T13:00:36.498Z"
3
+ "generatedAt": "2026-08-12T03:18:08.122Z"
4
4
  }
@@ -744,7 +744,7 @@ const weixinPlugin = {
744
744
  });
745
745
  throw new Error(msg);
746
746
  }
747
- const { monitorWeixinProvider } = await import("../../monitor-BmzgkQNs.js");
747
+ const { monitorWeixinProvider } = await import("../../monitor-CMd-yJ-l.js");
748
748
  return monitorWeixinProvider({
749
749
  baseUrl: account.baseUrl,
750
750
  cdnBaseUrl: account.cdnBaseUrl,
@@ -1181,7 +1181,7 @@ async function runGatewayCommand$1(opts) {
1181
1181
  const { startGatewayServer } = await withProgress({
1182
1182
  label: t("cli.gateway.run.loadingModules"),
1183
1183
  indeterminate: true
1184
- }, async () => import("./server-qmq0F63N.js"));
1184
+ }, async () => import("./server-BZq5P06_.js"));
1185
1185
  setConsoleTimestampPrefix(true);
1186
1186
  if (devMode) await ensureDevGatewayConfig({ reset: Boolean(opts.reset) });
1187
1187
  gatewayLog.info("loading configuration…");
@@ -0,0 +1,2 @@
1
+ import { t as getReplyFromConfig } from "./reply-BaegiDBV.js";
2
+ export { getReplyFromConfig };
@@ -1 +1 @@
1
- export * from "./get-reply-from-config.runtime-CKcaa781.js";
1
+ export * from "./get-reply-from-config.runtime-wzXZ5OEZ.js";
@@ -1,4 +1,4 @@
1
1
  import { n as resolveHeartbeatIntervalMs, r as resolveHeartbeatSummaryForAgent, t as isHeartbeatEnabledForAgent } from "./heartbeat-summary-DUIjehAy.js";
2
2
  import { i as setHeartbeatsEnabled, t as areHeartbeatsEnabled } from "./heartbeat-wake-Dq7RT9AC.js";
3
- import { i as isCronSystemEvent, n as runHeartbeatOnce, r as startHeartbeatRunner, t as resolveHeartbeatPrompt } from "./heartbeat-runner-DVCZo_p8.js";
3
+ import { i as isCronSystemEvent, n as runHeartbeatOnce, r as startHeartbeatRunner, t as resolveHeartbeatPrompt } from "./heartbeat-runner-DB6S945Q.js";
4
4
  export { areHeartbeatsEnabled, isCronSystemEvent, isHeartbeatEnabledForAgent, resolveHeartbeatIntervalMs, resolveHeartbeatPrompt, resolveHeartbeatSummaryForAgent, runHeartbeatOnce, setHeartbeatsEnabled, startHeartbeatRunner };
@@ -238,7 +238,7 @@ function resolveNextHeartbeatDueMs(params) {
238
238
  const log = createSubsystemLogger("gateway/heartbeat");
239
239
  let heartbeatRunnerRuntimePromise = null;
240
240
  function loadHeartbeatRunnerRuntime() {
241
- heartbeatRunnerRuntimePromise ??= import("./heartbeat-runner.runtime-BLUpBRgJ.js");
241
+ heartbeatRunnerRuntimePromise ??= import("./heartbeat-runner.runtime-CbfsDotY.js");
242
242
  return heartbeatRunnerRuntimePromise;
243
243
  }
244
244
  function resolveHeartbeatSchedulerSeed(explicitSeed) {
@@ -413,16 +413,15 @@ async function restoreHeartbeatUpdatedAt(params) {
413
413
  if (typeof updatedAt !== "number") return;
414
414
  const entry = loadSessionStore(storePath)[sessionKey];
415
415
  if (!entry) return;
416
- const nextUpdatedAt = Math.max(entry.updatedAt ?? 0, updatedAt);
417
- if (entry.updatedAt === nextUpdatedAt) return;
418
- await updateSessionStore(storePath, (nextStore) => {
419
- const nextEntry = nextStore[sessionKey] ?? entry;
416
+ const now = Date.now();
417
+ const currentUpdatedAt = entry.updatedAt ?? 0;
418
+ if (currentUpdatedAt !== updatedAt && now - currentUpdatedAt < 5e3) await updateSessionStore(storePath, (nextStore) => {
419
+ const nextEntry = nextStore[sessionKey];
420
420
  if (!nextEntry) return;
421
- const resolvedUpdatedAt = Math.max(nextEntry.updatedAt ?? 0, updatedAt);
422
- if (nextEntry.updatedAt === resolvedUpdatedAt) return;
423
- nextStore[sessionKey] = {
421
+ const liveUpdatedAt = nextEntry.updatedAt ?? 0;
422
+ if (Date.now() - liveUpdatedAt < 5e3) nextStore[sessionKey] = {
424
423
  ...nextEntry,
425
- updatedAt: resolvedUpdatedAt
424
+ updatedAt
426
425
  };
427
426
  });
428
427
  }
@@ -1029,6 +1028,11 @@ async function runHeartbeatOnce(opts) {
1029
1028
  await updateTaskTimestamps();
1030
1029
  consumeInspectedSystemEvents();
1031
1030
  await reportInsightOutcome(true);
1031
+ await restoreHeartbeatUpdatedAt({
1032
+ storePath,
1033
+ sessionKey,
1034
+ updatedAt: previousUpdatedAt
1035
+ });
1032
1036
  return {
1033
1037
  status: "ran",
1034
1038
  durationMs: Date.now() - startedAt
@@ -0,0 +1,2 @@
1
+ import { t as getReplyFromConfig } from "./reply-BaegiDBV.js";
2
+ export { getReplyFromConfig };
@@ -1 +1 @@
1
- export * from "./heartbeat-runner.runtime-BLUpBRgJ.js";
1
+ export * from "./heartbeat-runner.runtime-CbfsDotY.js";
@@ -1,5 +1,5 @@
1
1
  import { n as createNormalizedOutboundDeliverer } from "./reply-payload-DchHby3G.js";
2
- import { c as dispatchReplyFromConfig, i as withReplyDispatcher } from "./dispatch-40RST5UR.js";
2
+ import { c as dispatchReplyFromConfig, i as withReplyDispatcher } from "./dispatch-DaEgOdy0.js";
3
3
  import { t as createChannelReplyPipeline } from "./channel-reply-pipeline-pwTGYUNQ.js";
4
4
  //#region src/plugin-sdk/inbound-reply-dispatch.ts
5
5
  /** Run `dispatchReplyFromConfig` with a dispatcher that always gets its settled callback. */
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@ let runExec;
26
26
  let saveSessionStore;
27
27
  let waitForever;
28
28
  async function loadLegacyCliDeps() {
29
- const [{ installGaxiosFetchCompat }, { runCli }] = await Promise.all([import("./gaxios-fetch-compat-C7uLN0yt.js"), import("./run-main-BNSAZ4r6.js")]);
29
+ const [{ installGaxiosFetchCompat }, { runCli }] = await Promise.all([import("./gaxios-fetch-compat-C7uLN0yt.js"), import("./run-main-Wh7L3IyR.js")]);
30
30
  return {
31
31
  installGaxiosFetchCompat,
32
32
  runCli
@@ -38,7 +38,7 @@ async function runLegacyCliEntry(argv = process.argv, deps) {
38
38
  await runCli(argv);
39
39
  }
40
40
  const isMain = isMainModule({ currentFile: fileURLToPath(import.meta.url) });
41
- if (!isMain) ({applyTemplate, createDefaultDeps, deriveSessionKey, describePortOwner, ensureBinary, ensurePortAvailable, getReplyFromConfig, handlePortError, loadConfig, loadSessionStore, monitorWebChannel, normalizeE164, PortInUseError, promptYesNo, resolveSessionKey, resolveStorePath, runCommandWithTimeout, runExec, saveSessionStore, waitForever} = await import("./library-D_0L9sLB.js"));
41
+ if (!isMain) ({applyTemplate, createDefaultDeps, deriveSessionKey, describePortOwner, ensureBinary, ensurePortAvailable, getReplyFromConfig, handlePortError, loadConfig, loadSessionStore, monitorWebChannel, normalizeE164, PortInUseError, promptYesNo, resolveSessionKey, resolveStorePath, runCommandWithTimeout, runExec, saveSessionStore, waitForever} = await import("./library-BIRRbPIz.js"));
42
42
  if (isMain) {
43
43
  const { restoreTerminalState } = await import("./restore-ADlpnb-M.js");
44
44
  installUnhandledRejectionHandler();
@@ -16,7 +16,7 @@ let binariesRuntimePromise = null;
16
16
  let execRuntimePromise = null;
17
17
  let webChannelRuntimePromise = null;
18
18
  function loadReplyRuntime() {
19
- replyRuntimePromise ??= import("./reply.runtime-DDJIqjKb.js");
19
+ replyRuntimePromise ??= import("./reply.runtime-DUZDvEhP.js");
20
20
  return replyRuntimePromise;
21
21
  }
22
22
  function loadPromptRuntime() {
@@ -3,7 +3,7 @@ import { n as resolvePreferredKaijiBotTmpDir } from "./tmp-kaijibot-dir-DReZNN28
3
3
  import { t as createTypingCallbacks } from "./typing-DQC5rX66.js";
4
4
  import "./channel-runtime-99WLZInM.js";
5
5
  import "./infra-runtime-Bkj-kkXZ.js";
6
- import { i as resolveDirectDmAuthorizationOutcome, o as resolveSenderCommandAuthorizationWithRuntime } from "./command-auth-C8xfXAwi.js";
6
+ import { i as resolveDirectDmAuthorizationOutcome, o as resolveSenderCommandAuthorizationWithRuntime } from "./command-auth-D7-j2tSx.js";
7
7
  import { C as pauseSession, D as getConfig, E as classifyFetchError, G as logger, I as deriveRawAccountId, K as resolveStateDir, M as redactBody, N as redactToken, O as getUpdates, S as getRemainingPauseMs, W as readFrameworkAllowFromList, _ as decryptAesEcb, a as applyWeixinMessageSendingHook, b as TypingStatus, d as isMediaItem, g as buildCdnDownloadUrl, h as downloadRemoteImageToTemp, i as StreamingMarkdownFilter, j as sendTyping, m as weixinMessageToMsgContext, n as sendMessageItemWeixin, o as emitWeixinMessageSent, p as setContextToken, r as sendMessageWeixin, t as sendWeixinMediaFile, u as getContextTokenFromMsgContext, v as getMimeFromFilename, y as MessageItemType, z as loadWeixinAccount } from "./send-media-C3qhcyH9.js";
8
8
  import fs from "node:fs";
9
9
  import path from "node:path";
@@ -16,7 +16,7 @@ import { t as WizardCancelledError } from "./prompts-BxqZMpRa.js";
16
16
  import { n as logConfigUpdated } from "./logging-Cfo_m4oX.js";
17
17
  import { t as createClackPrompter } from "./clack-prompter-Dt70PlIh.js";
18
18
  import { c as resolveManifestProviderOnboardAuthFlags, i as resolveDeprecatedAuthChoiceReplacement, n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice, t as formatDeprecatedNonInteractiveAuthChoiceError } from "./auth-choice-legacy-B36i1CbP.js";
19
- import { t as runSetupWizard } from "./setup-CvyG8TIm.js";
19
+ import { t as runSetupWizard } from "./setup-BbKIF81A.js";
20
20
  import { r as applyLocalSetupWorkspaceConfig } from "./onboard-config-D6HSppfR.js";
21
21
  //#region src/commands/onboard-core-auth-flags.ts
22
22
  const CORE_ONBOARD_AUTH_FLAGS = [];
@@ -1 +1 @@
1
- 2026-08-11T13:01:22.574Z
1
+ 2026-08-12T03:19:08.080Z
@@ -7,7 +7,7 @@ import { a as resolveEnvelopeFormatOptions, i as formatInboundFromLabel, r as fo
7
7
  import { n as resolveInboundDebounceMs, t as createInboundDebouncer } from "../inbound-debounce-BwpaLd0T.js";
8
8
  import { a as normalizeMentionText, i as matchesMentionWithExplicit, n as buildMentionRegexes, r as matchesMentionPatterns } from "../mentions-EL98on4E.js";
9
9
  import { i as resolveMentionGatingWithBypass, n as resolveInboundMentionDecision, r as resolveMentionGating, t as implicitMentionKindWhen } from "../mention-gating-D7mirAsn.js";
10
- import { r as dispatchInboundDirectDmWithRuntime, t as createDirectDmPreCryptoGuardPolicy } from "../direct-dm-BPTrryBJ.js";
10
+ import { r as dispatchInboundDirectDmWithRuntime, t as createDirectDmPreCryptoGuardPolicy } from "../direct-dm-TNmWyNGN.js";
11
11
  import { n as logInboundDrop } from "../logging-_lps4QsK.js";
12
12
  //#region src/channels/inbound-debounce-policy.ts
13
13
  function shouldDebounceTextInbound(params) {
@@ -5,8 +5,8 @@ import { t as resolveCommandAuthorization } from "../command-auth-XGJw9qMC.js";
5
5
  import { t as resolveStoredModelOverride } from "../stored-model-override-B_Pfo0rs.js";
6
6
  import { n as resolveSkillCommandInvocation, t as listReservedChatSlashCommandNames } from "../skill-commands-base-BhSbjIF5.js";
7
7
  import { i as resolveModelsCommandReply, n as formatModelsAvailableHeader, t as buildModelsProviderData } from "../commands-models-B7UPtUbJ.js";
8
- import { i as resolveInboundDirectDmAccessWithRuntime, n as createPreCryptoDirectDmAuthorizer } from "../direct-dm-BPTrryBJ.js";
8
+ import { i as resolveInboundDirectDmAccessWithRuntime, n as createPreCryptoDirectDmAuthorizer } from "../direct-dm-TNmWyNGN.js";
9
9
  import { t as resolveNativeCommandSessionTargets } from "../native-command-session-targets-DvXRRtVt.js";
10
10
  import { n as listSkillCommandsForWorkspace, t as listSkillCommandsForAgents } from "../skill-commands-BRwGzS_r.js";
11
- import { a as resolveSenderCommandAuthorization, i as resolveDirectDmAuthorizationOutcome, n as buildCommandsMessagePaginated, o as resolveSenderCommandAuthorizationWithRuntime, r as buildHelpMessage, t as buildCommandsMessage } from "../command-auth-C8xfXAwi.js";
11
+ import { a as resolveSenderCommandAuthorization, i as resolveDirectDmAuthorizationOutcome, n as buildCommandsMessagePaginated, o as resolveSenderCommandAuthorizationWithRuntime, r as buildHelpMessage, t as buildCommandsMessage } from "../command-auth-D7-j2tSx.js";
12
12
  export { buildCommandText, buildCommandTextFromArgs, buildCommandsMessage, buildCommandsMessagePaginated, buildHelpMessage, buildModelsProviderData, createPreCryptoDirectDmAuthorizer, findCommandByNativeName, formatModelsAvailableHeader, getCommandDetection, hasControlCommand, hasInlineCommandTokens, isCommandEnabled, isCommandMessage, isControlCommandMessage, isNativeCommandSurface, listChatCommands, listChatCommandsForConfig, listNativeCommandSpecs, listNativeCommandSpecsForConfig, listReservedChatSlashCommandNames, listSkillCommandsForAgents, listSkillCommandsForWorkspace, maybeResolveTextAlias, normalizeCommandBody, parseCommandArgs, resolveCommandArgChoices, resolveCommandArgMenu, resolveCommandAuthorization, resolveCommandAuthorizedFromAuthorizers, resolveControlCommandGate, resolveDirectDmAuthorizationOutcome, resolveDualTextControlCommandGate, resolveInboundDirectDmAccessWithRuntime, resolveModelsCommandReply, resolveNativeCommandSessionTargets, resolveSenderCommandAuthorization, resolveSenderCommandAuthorizationWithRuntime, resolveSkillCommandInvocation, resolveStoredModelOverride, resolveTextCommand, serializeCommandArgs, shouldComputeCommandAuthorized, shouldHandleTextCommands };
@@ -1,2 +1,2 @@
1
- import { i as resolveInboundDirectDmAccessWithRuntime, n as createPreCryptoDirectDmAuthorizer, r as dispatchInboundDirectDmWithRuntime, t as createDirectDmPreCryptoGuardPolicy } from "../direct-dm-BPTrryBJ.js";
1
+ import { i as resolveInboundDirectDmAccessWithRuntime, n as createPreCryptoDirectDmAuthorizer, r as dispatchInboundDirectDmWithRuntime, t as createDirectDmPreCryptoGuardPolicy } from "../direct-dm-TNmWyNGN.js";
2
2
  export { createDirectDmPreCryptoGuardPolicy, createPreCryptoDirectDmAuthorizer, dispatchInboundDirectDmWithRuntime, resolveInboundDirectDmAccessWithRuntime };
@@ -1,5 +1,5 @@
1
1
  import { n as getPluginRuntimeGatewayRequestScope } from "../registry-DLm2u-Uf.js";
2
- import { n as handleGatewayRequest } from "../server-methods-DNoc3PAG.js";
2
+ import { n as handleGatewayRequest } from "../server-methods-CX1CDzcQ.js";
3
3
  //#region src/plugin-sdk/gateway-method-runtime.ts
4
4
  /**
5
5
  * Dispatch a Gateway control-plane method from an authenticated plugin request scope.
@@ -1,2 +1,2 @@
1
- import { i as recordInboundSessionAndDispatchReply, n as dispatchInboundReplyWithBase, r as dispatchReplyFromConfigWithSettledDispatcher, t as buildInboundReplyDispatchBase } from "../inbound-reply-dispatch-BR6iVDxR.js";
1
+ import { i as recordInboundSessionAndDispatchReply, n as dispatchInboundReplyWithBase, r as dispatchReplyFromConfigWithSettledDispatcher, t as buildInboundReplyDispatchBase } from "../inbound-reply-dispatch-DNndPYTq.js";
2
2
  export { buildInboundReplyDispatchBase, dispatchInboundReplyWithBase, dispatchReplyFromConfigWithSettledDispatcher, recordInboundSessionAndDispatchReply };
@@ -1,4 +1,4 @@
1
1
  import { s as resolveChunkMode } from "../chunk-FzWJ2y1r.js";
2
2
  import { t as finalizeInboundContext } from "../inbound-context-bhGbq3l8.js";
3
- import { n as dispatchReplyWithDispatcher, t as dispatchReplyWithBufferedBlockDispatcher } from "../provider-dispatcher-BSDq2LAE.js";
3
+ import { n as dispatchReplyWithDispatcher, t as dispatchReplyWithBufferedBlockDispatcher } from "../provider-dispatcher-CPH2FILd.js";
4
4
  export { dispatchReplyWithBufferedBlockDispatcher, dispatchReplyWithDispatcher, finalizeInboundContext, resolveChunkMode };
@@ -8,13 +8,13 @@ import { a as chunkText, c as resolveTextChunkLimit, i as chunkMarkdownTextWithM
8
8
  import { a as createReplyReferencePlanner } from "../reply-threading-COkM27Vc.js";
9
9
  import { n as resolveModelAsync } from "../model-to2Jvg2K.js";
10
10
  import { n as isAbortRequestText } from "../abort-primitives-y8CC2aTw.js";
11
- import { a as createReplyDispatcher, l as resetInboundDedupe, n as dispatchInboundMessageWithBufferedDispatcher, o as createReplyDispatcherWithTyping, r as dispatchInboundMessageWithDispatcher, t as dispatchInboundMessage } from "../dispatch-40RST5UR.js";
11
+ import { a as createReplyDispatcher, l as resetInboundDedupe, n as dispatchInboundMessageWithBufferedDispatcher, o as createReplyDispatcherWithTyping, r as dispatchInboundMessageWithDispatcher, t as dispatchInboundMessage } from "../dispatch-DaEgOdy0.js";
12
12
  import { t as finalizeInboundContext } from "../inbound-context-bhGbq3l8.js";
13
13
  import { n as resolveInboundDebounceMs, t as createInboundDebouncer } from "../inbound-debounce-BwpaLd0T.js";
14
- import { n as dispatchReplyWithDispatcher, t as dispatchReplyWithBufferedBlockDispatcher } from "../provider-dispatcher-BSDq2LAE.js";
14
+ import { n as dispatchReplyWithDispatcher, t as dispatchReplyWithBufferedBlockDispatcher } from "../provider-dispatcher-CPH2FILd.js";
15
15
  import { n as parseActivationCommand, t as normalizeGroupActivation } from "../group-activation-BSNTwZ1-.js";
16
16
  import { t as resolveHeartbeatReplyPayload } from "../heartbeat-reply-payload-CZpRIF_C.js";
17
- import { t as getReplyFromConfig } from "../reply-eJBJEh0K.js";
17
+ import { t as getReplyFromConfig } from "../reply-BaegiDBV.js";
18
18
  import "../abort-CZPYU_yK.js";
19
19
  import { n as isBtwRequestText } from "../btw-command-Ceh5j8Wd.js";
20
20
  import { t as prepareModelForSimpleCompletion } from "../simple-completion-transport-Cfgzjke9.js";
@@ -1,2 +1,2 @@
1
- import { n as createPluginRuntime, r as setGatewaySubagentRuntime, t as clearGatewaySubagentRuntime } from "../../runtime-D_fahGJu.js";
1
+ import { n as createPluginRuntime, r as setGatewaySubagentRuntime, t as clearGatewaySubagentRuntime } from "../../runtime-qfkievnT.js";
2
2
  export { clearGatewaySubagentRuntime, createPluginRuntime, setGatewaySubagentRuntime };
@@ -4,7 +4,7 @@ import { n as VERSION } from "./version-Bhg28AYn.js";
4
4
  import "./globals-BZWRdOIN.js";
5
5
  import { n as resolveCliName } from "./cli-name-mbXbS_Xz.js";
6
6
  import { n as resolveCliChannelOptions } from "./channel-options-B7HU3KNx.js";
7
- import { i as registerProgramCommands } from "./command-registry-DThrYT3V.js";
7
+ import { i as registerProgramCommands } from "./command-registry-zmPW46lk.js";
8
8
  import { n as setProgramContext } from "./program-context-beQs52o_.js";
9
9
  import { t as isCommandJsonOutputMode } from "./json-mode-DqdU2QKj.js";
10
10
  import { t as forceFreePort } from "./ports-Dkq3wtgj.js";
@@ -112,7 +112,7 @@ import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-PPA7ao
112
112
  import { t as formatHealthCheckFailure } from "./health-format-Ce_JDIhc.js";
113
113
  import { a as stripUnknownConfigKeys, i as resolveConfigPathTarget, n as formatConfigPath, r as noteOpencodeProviderOverrides, t as runDoctorConfigPreflight } from "./doctor-config-preflight-Btf1cOWg.js";
114
114
  import { a as runChannelPluginStartupMaintenance, i as normalizeCronJobIdentityFields, t as coerceFiniteScheduleNumber } from "./schedule-CwecsZBq.js";
115
- import { n as doctorShellCompletion } from "./doctor-completion-C1D4uof8.js";
115
+ import { n as doctorShellCompletion } from "./doctor-completion-4NAVzgO_.js";
116
116
  import { t as collectChannelStatusIssues } from "./channels-status-issues-D2AdlEnC.js";
117
117
  import { t as resolveDefaultChannelAccountContext } from "./channel-account-context-ANQKjlHX.js";
118
118
  import { a as runLegacyStateMigrations, n as detectLegacyStateMigrations } from "./state-migrations-Cbd6TTGf.js";
@@ -1,4 +1,4 @@
1
- import { n as dispatchInboundMessageWithBufferedDispatcher, r as dispatchInboundMessageWithDispatcher } from "./dispatch-40RST5UR.js";
1
+ import { n as dispatchInboundMessageWithBufferedDispatcher, r as dispatchInboundMessageWithDispatcher } from "./dispatch-DaEgOdy0.js";
2
2
  //#region src/auto-reply/reply/provider-dispatcher.ts
3
3
  async function dispatchReplyWithBufferedBlockDispatcher(params) {
4
4
  return await dispatchInboundMessageWithBufferedDispatcher({
@@ -15,7 +15,7 @@ import { i as formatControlUiSshHint } from "./onboard-helpers-BdaHbjnc.js";
15
15
  import { a as tryResolveGatewayService } from "./service-Dh0bwr9G.js";
16
16
  import { a as removeStateAndLinkedPaths, i as removePath, o as removeWorkspaceDirs, r as listAgentSessionDirs, t as buildCleanupPlan } from "./cleanup-utils-Bd_rHZ0n.js";
17
17
  import { n as runCommandWithRuntime } from "./cli-utils-IZWWFneu.js";
18
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-B_6aP_-o.js";
18
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-Cp-y9M9U.js";
19
19
  import path from "node:path";
20
20
  import { cancel, confirm, isCancel, multiselect } from "@clack/prompts";
21
21
  //#region src/infra/clipboard.ts
@@ -5,7 +5,7 @@ import { i as resolveCliLocale, n as initCliI18n, r as t } from "./translate-CZM
5
5
  import { n as runCommandWithRuntime } from "./cli-utils-IZWWFneu.js";
6
6
  import { c as resolveManifestProviderOnboardAuthFlags } from "./auth-choice-legacy-B36i1CbP.js";
7
7
  import { n as formatAuthChoiceChoicesForCli } from "./auth-choice-options-0pERI0ul.js";
8
- import { n as CORE_ONBOARD_AUTH_FLAGS, t as setupWizardCommand } from "./onboard-D8J6f3uD.js";
8
+ import { n as CORE_ONBOARD_AUTH_FLAGS, t as setupWizardCommand } from "./onboard-DfRxIzGa.js";
9
9
  //#region src/cli/program/register.onboard.ts
10
10
  function resolveInstallDaemonFlag(command, opts) {
11
11
  if (!command || typeof command !== "object") return;
@@ -11,7 +11,7 @@ import { s as resolveSessionTranscriptsDir } from "./paths-DSl3hU-R.js";
11
11
  import { n as safeParseWithSchema } from "./zod-parse-Cu9hgbVC.js";
12
12
  import { n as logConfigUpdated, t as formatConfigPath } from "./logging-Cfo_m4oX.js";
13
13
  import { n as runCommandWithRuntime } from "./cli-utils-IZWWFneu.js";
14
- import { t as setupWizardCommand } from "./onboard-D8J6f3uD.js";
14
+ import { t as setupWizardCommand } from "./onboard-DfRxIzGa.js";
15
15
  import fs from "node:fs/promises";
16
16
  import JSON5 from "json5";
17
17
  import { z } from "zod";
@@ -1,3 +1,3 @@
1
- import { n as registerSubCliByName } from "./register.subclis-CUCnb2lb.js";
1
+ import { n as registerSubCliByName } from "./register.subclis-MieKlAhq.js";
2
2
  import "./subcli-descriptors-BumU40t_.js";
3
3
  export { registerSubCliByName };
@@ -58,7 +58,7 @@ const entrySpecs = [
58
58
  },
59
59
  {
60
60
  commandNames: ["gateway"],
61
- loadModule: () => import("./gateway-cli-BI3izYgO.js"),
61
+ loadModule: () => import("./gateway-cli-BxtWDdYA.js"),
62
62
  exportName: "registerGatewayCli"
63
63
  },
64
64
  {
@@ -201,12 +201,12 @@ const entrySpecs = [
201
201
  },
202
202
  {
203
203
  commandNames: ["update"],
204
- loadModule: () => import("./update-cli-BJKzlzyq.js"),
204
+ loadModule: () => import("./update-cli-D2FXMVpk.js"),
205
205
  exportName: "registerUpdateCli"
206
206
  },
207
207
  {
208
208
  commandNames: ["completion"],
209
- loadModule: () => import("./completion-cli-CTYDQtia.js"),
209
+ loadModule: () => import("./completion-cli-xTD0LI-c.js"),
210
210
  exportName: "registerCompletionCli"
211
211
  }
212
212
  ])
@@ -1882,6 +1882,10 @@ async function runPreparedReply(params) {
1882
1882
  handshakeConfig: cognitiveCfg?.handshake
1883
1883
  });
1884
1884
  if (cognitivePrompt) extraSystemPromptParts.push(cognitivePrompt);
1885
+ if (cognitivePersona?.feedbackProfile.pendingInsightDelivery && userId) await new PersonaStore(resolveConfigDir()).update(agentId, userId, (persona) => {
1886
+ persona.feedbackProfile.pendingInsightDelivery = null;
1887
+ return persona;
1888
+ });
1885
1889
  if (cognitiveCfg?.enabled !== false) {
1886
1890
  const { buildContextManifest } = await import("./context-manifest-AkIidQ_d.js");
1887
1891
  const manifest = buildContextManifest({
@@ -0,0 +1,2 @@
1
+ import { t as getReplyFromConfig } from "./reply-BaegiDBV.js";
2
+ export { getReplyFromConfig };
@@ -1 +1 @@
1
- export * from "./reply.runtime-DDJIqjKb.js";
1
+ export * from "./reply.runtime-DUZDvEhP.js";
@@ -396,7 +396,7 @@ async function runCli(argv = process$1.argv) {
396
396
  if (await tryRouteCli(normalizedArgv)) return;
397
397
  enableConsoleCapture();
398
398
  const [{ buildProgram }, { installUnhandledRejectionHandler }, { restoreTerminalState }] = await Promise.all([
399
- import("./program-B1izWkZf.js"),
399
+ import("./program-BJNGJQ7i.js"),
400
400
  import("./unhandled-rejections-B7jiLc5X.js"),
401
401
  import("./restore-ADlpnb-M.js")
402
402
  ]);
@@ -413,10 +413,10 @@ async function runCli(argv = process$1.argv) {
413
413
  const { getProgramContext } = await import("./program-context-Bk8VQcWK.js");
414
414
  const ctx = getProgramContext(program);
415
415
  if (ctx) {
416
- const { registerCoreCliByName } = await import("./command-registry-DD-16qcg.js");
416
+ const { registerCoreCliByName } = await import("./command-registry-Dm-NOKfF.js");
417
417
  await registerCoreCliByName(program, ctx, primary, parseArgv);
418
418
  }
419
- const { registerSubCliByName } = await import("./register.subclis-DWhYkywo.js");
419
+ const { registerSubCliByName } = await import("./register.subclis-BxAr9pE8.js");
420
420
  await registerSubCliByName(program, primary);
421
421
  }
422
422
  if (!shouldSkipPluginCommandRegistration({
@@ -45,12 +45,12 @@ import { r as listWebSearchProviders, s as runWebSearch } from "./runtime-CQHmcb
45
45
  import { n as resolveChannelGroupRequireMention, t as resolveChannelGroupPolicy } from "./group-policy-v_Z-Myoq.js";
46
46
  import { y as shouldHandleTextCommands } from "./commands-registry-DsmkKhxm.js";
47
47
  import { i as shouldComputeCommandAuthorized, r as isControlCommandMessage, t as hasControlCommand } from "./command-detection-CwJFZ3Yb.js";
48
- import { c as dispatchReplyFromConfig, i as withReplyDispatcher, o as createReplyDispatcherWithTyping } from "./dispatch-40RST5UR.js";
48
+ import { c as dispatchReplyFromConfig, i as withReplyDispatcher, o as createReplyDispatcherWithTyping } from "./dispatch-DaEgOdy0.js";
49
49
  import { t as finalizeInboundContext } from "./inbound-context-bhGbq3l8.js";
50
50
  import { a as resolveEnvelopeFormatOptions, r as formatInboundEnvelope, t as formatAgentEnvelope } from "./envelope-Ctk092lH.js";
51
51
  import { n as resolveInboundDebounceMs, t as createInboundDebouncer } from "./inbound-debounce-BwpaLd0T.js";
52
52
  import { i as matchesMentionWithExplicit, n as buildMentionRegexes, r as matchesMentionPatterns } from "./mentions-EL98on4E.js";
53
- import { t as dispatchReplyWithBufferedBlockDispatcher } from "./provider-dispatcher-BSDq2LAE.js";
53
+ import { t as dispatchReplyWithBufferedBlockDispatcher } from "./provider-dispatcher-CPH2FILd.js";
54
54
  import { n as shouldAckReaction, t as removeAckReactionAfterReply } from "./ack-reactions-gWXsc0l7.js";
55
55
  import { t as resolveCommandAuthorizedFromAuthorizers } from "./command-gating-7YZfGlk9.js";
56
56
  import { n as resolveInboundMentionDecision, t as implicitMentionKindWhen } from "./mention-gating-D7mirAsn.js";
@@ -360,7 +360,7 @@ function formatNativeDependencyHint(params) {
360
360
  }
361
361
  //#endregion
362
362
  //#region src/plugins/runtime/runtime-system.ts
363
- const runHeartbeatOnceInternal = createLazyRuntimeMethod(createLazyRuntimeModule(() => import("./heartbeat-runner-Bb1oS1HX.js")), (runtime) => runtime.runHeartbeatOnce);
363
+ const runHeartbeatOnceInternal = createLazyRuntimeMethod(createLazyRuntimeModule(() => import("./heartbeat-runner-Ces2AlGD.js")), (runtime) => runtime.runHeartbeatOnce);
364
364
  function createRuntimeSystem() {
365
365
  return {
366
366
  enqueueSystemEvent,
@@ -1,7 +1,7 @@
1
1
  import { t as truncateCloseReason } from "./close-reason-DgNNQTUr.js";
2
2
  //#region src/gateway/server.ts
3
3
  async function loadServerImpl() {
4
- return await import("./server.impl-Bxb_XPH4.js");
4
+ return await import("./server.impl-nRWhR63b.js");
5
5
  }
6
6
  async function startGatewayServer(...args) {
7
7
  return await (await loadServerImpl()).startGatewayServer(...args);
@@ -102,7 +102,7 @@ import { n as getActiveMemorySearchManager } from "./memory-runtime-2CSSp2_b.js"
102
102
  import { o as resolvePreferredSessionKeyForSessionIdMatches } from "./pi-embedded-runner-DCxRoGy_.js";
103
103
  import "./pi-embedded-BKww8LAv.js";
104
104
  import { n as isAbortRequestText } from "./abort-primitives-y8CC2aTw.js";
105
- import { a as createReplyDispatcher, t as dispatchInboundMessage } from "./dispatch-40RST5UR.js";
105
+ import { a as createReplyDispatcher, t as dispatchInboundMessage } from "./dispatch-DaEgOdy0.js";
106
106
  import { n as resolveSendPolicy, t as normalizeSendPolicy } from "./send-policy-BL4pOXE1.js";
107
107
  import { n as formatZonedTimestamp } from "./format-datetime-C4OkcYvZ.js";
108
108
  import { t as getChannelActivity } from "./channel-activity-ChJp-W_J.js";
@@ -136,7 +136,7 @@ import { o as fetchClawHubSkillDetail } from "./clawhub-Br81or9N.js";
136
136
  import { i as updateSkillsFromClawHub, r as searchSkillsFromClawHub, t as installSkillFromClawHub } from "./skills-clawhub-xDYWTF_c.js";
137
137
  import { t as installSkill } from "./skills-install-DdrW6QjU.js";
138
138
  import { t as buildWorkspaceSkillStatus } from "./skills-status-CQJi2Duf.js";
139
- import "./heartbeat-runner-DVCZo_p8.js";
139
+ import "./heartbeat-runner-DB6S945Q.js";
140
140
  import { n as summarizeToolDescriptionText } from "./tool-description-summary-3i4MHeXW.js";
141
141
  import { t as resolveEffectiveToolInventory } from "./tools-effective-inventory-Bks-P_g5.js";
142
142
  import { t as runGatewayUpdate } from "./update-runner-CFPiEpEV.js";
@@ -148,8 +148,8 @@ import { t as resolveModel } from "./model-to2Jvg2K.js";
148
148
  import { o as resolvePreferredSessionKeyForSessionIdMatches, t as runEmbeddedPiAgent } from "./pi-embedded-runner-DCxRoGy_.js";
149
149
  import { o as resolveBootstrapWarningSignaturesSeen } from "./bootstrap-budget-DkKmyVsg.js";
150
150
  import "./pi-embedded-BKww8LAv.js";
151
- import { n as createPluginRuntime, r as setGatewaySubagentRuntime } from "./runtime-D_fahGJu.js";
152
- import { s as getTotalPendingReplies } from "./dispatch-40RST5UR.js";
151
+ import { n as createPluginRuntime, r as setGatewaySubagentRuntime } from "./runtime-qfkievnT.js";
152
+ import { s as getTotalPendingReplies } from "./dispatch-DaEgOdy0.js";
153
153
  import { o as readChannelAllowFromStoreSync } from "./pairing-store-Beug75Tt.js";
154
154
  import { i as resolveChannelDefaultAccountId } from "./helpers-c8d9fhdJ.js";
155
155
  import { r as buildHistoryContextFromEntries } from "./history-65L0aBRj.js";
@@ -179,11 +179,11 @@ import { i as safeParseJson } from "./nodes.helpers-Anv98Zsu.js";
179
179
  import { r as resolveBootstrapProfileScopesForRole } from "./device-bootstrap-profile-I2zbsVdf.js";
180
180
  import { a as hasEffectivePairedDeviceRole, c as listEffectivePairedDeviceRoles, d as requestDevicePairing, g as verifyDeviceToken, h as updatePairedDeviceMetadata, i as getPairedDevice, n as approveDevicePairing, r as ensureDeviceToken, s as listDevicePairing, t as approveBootstrapDevicePairing } from "./device-pairing-DDIqpw_B.js";
181
181
  import { a as redeemDeviceBootstrapTokenProfile, n as getBoundDeviceBootstrapProfile, o as revokeDeviceBootstrapToken, r as getDeviceBootstrapTokenProfile, s as verifyDeviceBootstrapToken } from "./device-bootstrap-DZri1tFR.js";
182
- import { A as DEFAULT_ASSISTANT_IDENTITY, C as MAX_BUFFERED_BYTES, D as isSuppressedControlReplyLeadFragment, E as TICK_INTERVAL_MS, M as parseGatewayRole, N as roleCanSkipDeviceIdentity, O as isSuppressedControlReplyText, S as HEALTH_REFRESH_INTERVAL_MS, T as MAX_PREAUTH_PAYLOAD_BYTES, _ as loadCognitiveStatsSummary, a as upsertPresence, b as DEDUPE_MAX, c as mintCanvasCapabilityToken, d as loadVoiceWakeConfig, f as appendCronRunLog, g as startGatewayConfigReloader, h as resolveGatewayReloadSettings, i as listSystemPresence, j as resolveAssistantIdentity, k as abortChatRunById, l as normalizeCanvasScopedUrl, m as resolveCronRunLogPruneOptions, n as handleGatewayRequest, o as CANVAS_CAPABILITY_TTL_MS, p as resolveCronRunLogPath, r as broadcastPresenceSnapshot, s as buildCanvasScopedHostUrl, t as coreGatewayHandlers, u as formatError, v as DEFAULT_CHAT_HISTORY_TEXT_MAX_CHARS, w as MAX_PAYLOAD_BYTES, x as DEDUPE_TTL_MS, y as sanitizeChatHistoryMessages } from "./server-methods-DNoc3PAG.js";
182
+ import { A as DEFAULT_ASSISTANT_IDENTITY, C as MAX_BUFFERED_BYTES, D as isSuppressedControlReplyLeadFragment, E as TICK_INTERVAL_MS, M as parseGatewayRole, N as roleCanSkipDeviceIdentity, O as isSuppressedControlReplyText, S as HEALTH_REFRESH_INTERVAL_MS, T as MAX_PREAUTH_PAYLOAD_BYTES, _ as loadCognitiveStatsSummary, a as upsertPresence, b as DEDUPE_MAX, c as mintCanvasCapabilityToken, d as loadVoiceWakeConfig, f as appendCronRunLog, g as startGatewayConfigReloader, h as resolveGatewayReloadSettings, i as listSystemPresence, j as resolveAssistantIdentity, k as abortChatRunById, l as normalizeCanvasScopedUrl, m as resolveCronRunLogPruneOptions, n as handleGatewayRequest, o as CANVAS_CAPABILITY_TTL_MS, p as resolveCronRunLogPath, r as broadcastPresenceSnapshot, s as buildCanvasScopedHostUrl, t as coreGatewayHandlers, u as formatError, v as DEFAULT_CHAT_HISTORY_TEXT_MAX_CHARS, w as MAX_PAYLOAD_BYTES, x as DEDUPE_TTL_MS, y as sanitizeChatHistoryMessages } from "./server-methods-CX1CDzcQ.js";
183
183
  import "./agent-Bjx0RA0f.js";
184
184
  import { a as resolveApnsAuthConfigFromEnv, c as sendApnsExecApprovalAlert, d as resolveApnsRelayConfigFromEnv, l as sendApnsExecApprovalResolvedWake, n as loadApnsRegistration, t as clearApnsRegistrationIfCurrent, u as shouldClearStoredApnsRegistration } from "./push-apns-DUQwGLNd.js";
185
185
  import { m as normalizeUpdateChannel, n as compareSemverStrings, o as resolveNpmChannelTag, t as checkUpdateStatus } from "./update-check-Df7U6g_w.js";
186
- import { a as resolveCronSession, n as runHeartbeatOnce, r as startHeartbeatRunner } from "./heartbeat-runner-DVCZo_p8.js";
186
+ import { a as resolveCronSession, n as runHeartbeatOnce, r as startHeartbeatRunner } from "./heartbeat-runner-DB6S945Q.js";
187
187
  import { a as resolveControlUiRootOverrideSync, n as isPackageProvenControlUiRootSync, o as resolveControlUiRootSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-DNv5eSv-.js";
188
188
  import { t as loadProviderUsageSummary } from "./provider-usage-DkJQmZPn.js";
189
189
  import { n as loadCostUsageSummary } from "./session-cost-usage-CeA04EiL.js";
@@ -199,7 +199,7 @@ import { t as loadWorkspaceHookEntries } from "./workspace-BKDWfnPa.js";
199
199
  import { i as resolveGatewayStartupPluginIds, r as resolveConfiguredDeferredChannelPluginIds } from "./channel-plugin-ids-BmwxN62G.js";
200
200
  import { a as runChannelPluginStartupMaintenance, i as normalizeCronJobIdentityFields, n as computeNextRunAtMs, r as computePreviousRunAtMs, t as coerceFiniteScheduleNumber } from "./schedule-CwecsZBq.js";
201
201
  import { i as migrateOrphanedSessionKeys } from "./state-migrations-Cbd6TTGf.js";
202
- import { t as runSetupWizard } from "./setup-CvyG8TIm.js";
202
+ import { t as runSetupWizard } from "./setup-BbKIF81A.js";
203
203
  import { d as startTaskRegistryMaintenance, f as stopTaskRegistryMaintenance, g as markCronJobActive, h as clearCronJobActive, n as getInspectableTaskRegistrySummary } from "./task-registry.maintenance-BxKIUdLh.js";
204
204
  import { n as collectEnabledInsecureOrDangerousFlags, t as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-1weJroFG.js";
205
205
  import { _ as buildGogWatchStartArgs, g as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, w as resolveGmailHookRuntimeConfig } from "./gmail-setup-utils-BjTvHWj-.js";
@@ -18877,6 +18877,12 @@ async function startGatewayServer(port = 18789, opts = {}) {
18877
18877
  opportunityType: awaiting?.opportunityType ?? "redelivery"
18878
18878
  };
18879
18879
  persona.feedbackProfile.awaitingDeliveryConfirmation = null;
18880
+ const ts = awaiting?.eventTimestamp ?? record.generatedAt;
18881
+ if (ts > persona.feedbackProfile.lastProactiveAt) persona.feedbackProfile.lastProactiveAt = ts;
18882
+ const contents = [...persona.feedbackProfile.recentInsightContents ?? [], candidate.content].slice(-5);
18883
+ persona.feedbackProfile.recentInsightContents = contents;
18884
+ const ids = [...persona.feedbackProfile.recentInsightIds ?? [], candidate.id].slice(-20);
18885
+ persona.feedbackProfile.recentInsightIds = ids;
18880
18886
  return persona;
18881
18887
  });
18882
18888
  };
@@ -483,7 +483,7 @@ async function runSetupWizard(opts, runtime = defaultRuntime, prompter) {
483
483
  mode
484
484
  });
485
485
  await writeConfigFile(nextConfig);
486
- const { finalizeSetupWizard } = await import("./setup.finalize-GTY5aeuq.js");
486
+ const { finalizeSetupWizard } = await import("./setup.finalize-Cq3eih-P.js");
487
487
  const { launchedTui } = await finalizeSetupWizard({
488
488
  flow,
489
489
  opts,
@@ -14,11 +14,11 @@ import { i as isSystemdUserServiceAvailable } from "./systemd-CWxWaH1R.js";
14
14
  import { a as tryResolveGatewayService, t as describeGatewayServiceRestart } from "./service-Dh0bwr9G.js";
15
15
  import { n as listConfiguredWebSearchProviders } from "./runtime-CQHmcblN.js";
16
16
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-DNv5eSv-.js";
17
- import { r as installCompletion } from "./completion-cli-ab1EFitV.js";
17
+ import { r as installCompletion } from "./completion-cli-DU4XCxns.js";
18
18
  import { r as healthCommand } from "./health-CGERlBuw.js";
19
19
  import { t as resolveSetupSecretInputString } from "./setup.secret-input-DhUIgaP4.js";
20
20
  import { t as formatHealthCheckFailure } from "./health-format-Ce_JDIhc.js";
21
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-C1D4uof8.js";
21
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-4NAVzgO_.js";
22
22
  import { t as runTui } from "./tui-BM_07QIG.js";
23
23
  import path from "node:path";
24
24
  import os from "node:os";
@@ -29,10 +29,10 @@ import { d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as r
29
29
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-W1QbnUdM.js";
30
30
  import { a as createGlobalInstallEnv, c as globalInstallArgs, d as resolveGlobalInstallTarget, f as normalizePackageTagInput, i as collectInstalledGlobalPackageErrors, l as resolveExpectedInstalledVersionFromSpec, m as readPackageVersion, n as canResolveRegistryVersionForPackageTarget, o as detectGlobalInstallManagerByPresence, p as readPackageName, r as cleanupGlobalRenameDirs, s as detectGlobalInstallManagerForRoot, t as runGatewayUpdate, u as resolveGlobalInstallSpec } from "./update-runner-CFPiEpEV.js";
31
31
  import { n as renderTable, t as getTerminalTableWidth } from "./table-Bwd5JCmV.js";
32
- import { r as installCompletion } from "./completion-cli-ab1EFitV.js";
32
+ import { r as installCompletion } from "./completion-cli-DU4XCxns.js";
33
33
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-Dxt6Te--.js";
34
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-B_6aP_-o.js";
35
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-C1D4uof8.js";
34
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-Cp-y9M9U.js";
35
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-4NAVzgO_.js";
36
36
  import path from "node:path";
37
37
  import { spawn, spawnSync } from "node:child_process";
38
38
  import os from "node:os";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kaijibot",
3
- "version": "2026.8.11",
3
+ "version": "2026.8.12",
4
4
  "description": "Proactive cognitive AI assistant with Feishu/WeChat integration — learns user interests, pushes cross-domain insights, evolves skills, self-corrects. 40+ LLM providers, runs on cloud/desktop/Android.",
5
5
  "keywords": [
6
6
  "ai",
@@ -1,2 +0,0 @@
1
- import { t as getReplyFromConfig } from "./reply-eJBJEh0K.js";
2
- export { getReplyFromConfig };
@@ -1,2 +0,0 @@
1
- import { t as getReplyFromConfig } from "./reply-eJBJEh0K.js";
2
- export { getReplyFromConfig };
@@ -1,2 +0,0 @@
1
- import { t as getReplyFromConfig } from "./reply-eJBJEh0K.js";
2
- export { getReplyFromConfig };