openclaw 2026.4.9-beta.1 → 2026.4.9
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/CHANGELOG.md +1 -1
- package/dist/.buildstamp +1 -1
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-DQ-1yfjU.js → channel-Bk51B5Cb.js} +4 -4
- package/dist/{channel.runtime-DB5-zVzp.js → channel.runtime-BHZxP2WZ.js} +1 -1
- package/dist/cli-startup-metadata.json +1 -1
- package/dist/{command-registry-BeDlThjt.js → command-registry-D85s1_eu.js} +6 -6
- package/dist/{command-registry-C8pbWQb8.js → command-registry-DWOyfJhm.js} +1 -1
- package/dist/{completion-cli-DNUbbtNb.js → completion-cli-1z1xZCDl.js} +1 -1
- package/dist/{completion-cli-B47O1GLh.js → completion-cli-klMIRvmG.js} +2 -2
- package/dist/{config-cli-BO7tgnNS.js → config-cli-J5ilTjk5.js} +2 -2
- package/dist/{configure-CH8LoJfS.js → configure-DcN3PXWe.js} +1 -1
- package/dist/{configure-p1MZA-SO.js → configure-l_6ztbJd.js} +2 -2
- package/dist/{doctor-completion-Cl6B78v1.js → doctor-completion-C_CFc87W.js} +1 -1
- package/dist/entry.js +1 -1
- 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/msteams/api.js +1 -1
- package/dist/extensions/msteams/test-api.js +1 -1
- package/dist/extensions/nostr/.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-WPdEgaaR.js → gateway-cli-BB4zg2Pu.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/{onboard-CHJlQ2pO.js → onboard-BdDpvGgj.js} +1 -1
- package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
- package/dist/{probe-Y_CEzcAI.js → probe-CjLA1BfT.js} +18 -14
- package/dist/{program-CWyRO-qJ.js → program-D3LRs06L.js} +1 -1
- package/dist/{prompt-select-styled-BmSssQ0t.js → prompt-select-styled-BfACiVO5.js} +1 -1
- package/dist/{register.configure-CD5fjy14.js → register.configure-UBP1QgdC.js} +1 -1
- package/dist/{register.maintenance-BQMc-7eW.js → register.maintenance-Cqny15ML.js} +1 -1
- package/dist/{register.onboard-DLKTH93T.js → register.onboard-BqQKWiUY.js} +1 -1
- package/dist/{register.setup-Bi2saEcG.js → register.setup-C5BAVGp3.js} +1 -1
- package/dist/{register.subclis-DsjM0woD.js → register.subclis-Btu1bO0l.js} +1 -1
- package/dist/{register.subclis-BSZ4Ogu4.js → register.subclis-D7AxmRi1.js} +3 -3
- package/dist/{run-main-Bmyo63r-.js → run-main-DC1dNPE7.js} +5 -5
- package/dist/{runtime-schema-Dn6Hpv5z.js → runtime-schema-IZwxDrJI.js} +1 -1
- package/dist/{server-COgrIGA4.js → server-pYxwJSF9.js} +1 -1
- package/dist/{server.impl-Ddsg2W_l.js → server.impl-BxLfE9ri.js} +2 -2
- package/dist/{setup-BGObu4W2.js → setup-BsIdb5Ko.js} +2 -2
- package/dist/{setup.finalize-65M2c8wB.js → setup.finalize-L1m4gLYy.js} +2 -2
- package/dist/{setup.plugin-config-CoWe0qTX.js → setup.plugin-config-B24OprEh.js} +7 -3
- package/dist/{src-CLbI32gd.js → src-BObDb6jN.js} +22 -5
- package/dist/{update-cli-BtCbVXTO.js → update-cli-C96vBpAJ.js} +3 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/.buildstamp
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"builtAt":
|
|
1
|
+
{"builtAt":1775701738302,"head":"0512059dd4e6d2e582393828b837c376ddc4719c"}
|
package/dist/build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
c75034a6009fb5a7e4e8dd522eb50a18726ccec0b062330254220584827f5fdb
|
|
@@ -29,7 +29,7 @@ import { c as parseMSTeamsConversationId, d as resolveMSTeamsChannelAllowlist, f
|
|
|
29
29
|
import { t as MSTeamsChannelConfigSchema } from "./config-schema-BPHQgwSR.js";
|
|
30
30
|
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-B2rGd4Y4.js";
|
|
31
31
|
//#region extensions/msteams/src/actions.ts
|
|
32
|
-
const loadMSTeamsChannelRuntime$2 = createLazyRuntimeNamedExport(() => import("./channel.runtime-
|
|
32
|
+
const loadMSTeamsChannelRuntime$2 = createLazyRuntimeNamedExport(() => import("./channel.runtime-BHZxP2WZ.js"), "msTeamsChannelRuntime");
|
|
33
33
|
function jsonActionResult(data) {
|
|
34
34
|
return {
|
|
35
35
|
content: [{
|
|
@@ -499,7 +499,7 @@ const msteamsDirectoryAdapter = createChannelDirectoryAdapter({
|
|
|
499
499
|
normalizeId: (raw) => `conversation:${raw.replace(/^conversation:/i, "").trim()}`
|
|
500
500
|
}),
|
|
501
501
|
...createRuntimeDirectoryLiveAdapter({
|
|
502
|
-
getRuntime: createLazyRuntimeNamedExport(() => import("./channel.runtime-
|
|
502
|
+
getRuntime: createLazyRuntimeNamedExport(() => import("./channel.runtime-BHZxP2WZ.js"), "msTeamsChannelRuntime"),
|
|
503
503
|
listPeersLive: (runtime) => runtime.listMSTeamsDirectoryPeersLive,
|
|
504
504
|
listGroupsLive: (runtime) => runtime.listMSTeamsDirectoryGroupsLive
|
|
505
505
|
})
|
|
@@ -832,7 +832,7 @@ const collectMSTeamsSecurityWarnings = createAllowlistProviderGroupPolicyWarning
|
|
|
832
832
|
resolveGroupPolicy: ({ cfg }) => cfg.channels?.msteams?.groupPolicy,
|
|
833
833
|
collect: ({ groupPolicy }) => groupPolicy === "open" ? ["- MS Teams groups: groupPolicy=\"open\" allows any member to trigger (mention-gated). Set channels.msteams.groupPolicy=\"allowlist\" + channels.msteams.groupAllowFrom to restrict senders."] : []
|
|
834
834
|
});
|
|
835
|
-
const loadMSTeamsChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-
|
|
835
|
+
const loadMSTeamsChannelRuntime = createLazyRuntimeNamedExport(() => import("./channel.runtime-BHZxP2WZ.js"), "msTeamsChannelRuntime");
|
|
836
836
|
const resolveMSTeamsChannelConfig = (cfg) => ({
|
|
837
837
|
allowFrom: cfg.channels?.msteams?.allowFrom,
|
|
838
838
|
defaultTo: cfg.channels?.msteams?.defaultTo
|
|
@@ -1058,7 +1058,7 @@ const msteamsPlugin = createChatChannelPlugin({
|
|
|
1058
1058
|
})
|
|
1059
1059
|
}),
|
|
1060
1060
|
gateway: { startAccount: async (ctx) => {
|
|
1061
|
-
const { monitorMSTeamsProvider } = await import("./src-
|
|
1061
|
+
const { monitorMSTeamsProvider } = await import("./src-BObDb6jN.js");
|
|
1062
1062
|
const port = ctx.cfg.channels?.msteams?.webhook?.port ?? 3978;
|
|
1063
1063
|
ctx.setStatus({
|
|
1064
1064
|
accountId: ctx.accountId,
|
|
@@ -6,7 +6,7 @@ import { t as chunkTextForOutbound } from "./text-chunking-D_B5j6zQ.js";
|
|
|
6
6
|
import { i as createAttachedChannelResultAdapter } from "./channel-send-result-COHJCNM4.js";
|
|
7
7
|
import { a as listChannelsForTeam, c as postGraphBetaJson, i as fetchGraphJson, l as postGraphJson, n as deleteGraphRequest, o as listTeamsByName, r as escapeOData, s as normalizeQuery, t as searchGraphUsers, u as resolveGraphToken } from "./graph-users-BEuPEsk1.js";
|
|
8
8
|
import "./runtime-api-BkG9fr64.js";
|
|
9
|
-
import { _ as createMSTeamsPollStoreFs, a as sendMessageMSTeams, i as sendAdaptiveCardMSTeams, n as deleteMessageMSTeams, o as sendPollMSTeams, r as editMessageMSTeams, t as probeMSTeams, y as createMSTeamsConversationStoreFs } from "./probe-
|
|
9
|
+
import { _ as createMSTeamsPollStoreFs, a as sendMessageMSTeams, i as sendAdaptiveCardMSTeams, n as deleteMessageMSTeams, o as sendPollMSTeams, r as editMessageMSTeams, t as probeMSTeams, y as createMSTeamsConversationStoreFs } from "./probe-CjLA1BfT.js";
|
|
10
10
|
//#region extensions/msteams/src/directory-live.ts
|
|
11
11
|
async function listMSTeamsDirectoryPeersLive(params) {
|
|
12
12
|
const query = normalizeQuery(params.query);
|
|
@@ -27,5 +27,5 @@
|
|
|
27
27
|
],
|
|
28
28
|
"channelCatalogSignature": "31d3a07cce78f9bf861c45980c3bb115d4bad402",
|
|
29
29
|
"rootHelpBundleSignature": "9b8c9d53b780c4dda3e29214d7f0f9dc519eef2f",
|
|
30
|
-
"rootHelpText": "\n🦞 OpenClaw 2026.4.9
|
|
30
|
+
"rootHelpText": "\n🦞 OpenClaw 2026.4.9 (0512059) — More integrations than your therapist's intake form.\n\nUsage: openclaw [options] [command]\n\nOptions:\n --container <name> Run the CLI inside a running Podman/Docker container\n named <name> (default: env OPENCLAW_CONTAINER)\n --dev Dev profile: isolate state under ~/.openclaw-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 OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH under\n ~/.openclaw-<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 OpenClaw\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 OpenClaw 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 OpenClaw 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 OpenClaw 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 OpenClaw and inspect update channel status\n webhooks * Webhook helpers and integrations\n\nExamples:\n openclaw models --help\n Show detailed help for the models command.\n openclaw channels login --verbose\n Link personal WhatsApp Web and show QR + connection logs.\n openclaw message send --target +15555550123 --message \"Hi\" --json\n Send via your web session and print JSON result.\n openclaw gateway --port 18789\n Run the WebSocket Gateway locally.\n openclaw --dev gateway\n Run a dev Gateway (isolated state/config) on ws://127.0.0.1:19001.\n openclaw gateway --force\n Kill anything bound to the default gateway port, then start it.\n openclaw gateway ...\n Gateway control via WebSocket.\n openclaw agent --to +15555550123 --message \"Run summary\" --deliver\n Talk directly to the agent using the Gateway; optionally send the WhatsApp reply.\n openclaw message send --channel telegram --target @mychat --message \"Hi\"\n Send via your Telegram bot.\n\nDocs: https://docs.openclaw.ai/cli\n\n"
|
|
31
31
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as resolveCliArgvInvocation } from "./argv-invocation-BeolA8Ck.js";
|
|
2
2
|
import { n as shouldRegisterPrimaryCommandOnly } from "./command-registration-policy-CFKz5i6L.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-D7AxmRi1.js";
|
|
4
4
|
import { i as registerCommandGroups, r as registerCommandGroupByName } from "./register-command-groups-pnI4KWXM.js";
|
|
5
5
|
import { n as getCoreCliCommandNames$1, t as getCoreCliCommandDescriptors } from "./core-command-descriptors-CmWQSYPA.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-C5BAVGp3.js"),
|
|
20
20
|
exportName: "registerSetupCommand"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
commandNames: ["onboard"],
|
|
24
|
-
loadModule: () => import("./register.onboard-
|
|
24
|
+
loadModule: () => import("./register.onboard-BqQKWiUY.js"),
|
|
25
25
|
exportName: "registerOnboardCommand"
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
commandNames: ["configure"],
|
|
29
|
-
loadModule: () => import("./register.configure-
|
|
29
|
+
loadModule: () => import("./register.configure-UBP1QgdC.js"),
|
|
30
30
|
exportName: "registerConfigureCommand"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
commandNames: ["config"],
|
|
34
|
-
loadModule: () => import("./config-cli-
|
|
34
|
+
loadModule: () => import("./config-cli-J5ilTjk5.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-Cqny15ML.js"),
|
|
50
50
|
exportName: "registerMaintenanceCommands"
|
|
51
51
|
}
|
|
52
52
|
])),
|
|
@@ -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-klMIRvmG.js";
|
|
2
2
|
export { completionCacheExists, getCompletionScript, installCompletion, isCompletionInstalled, registerCompletionCli, resolveCompletionCachePath, resolveShellFromEnv, usesSlowDynamicCompletion };
|
|
@@ -4,8 +4,8 @@ import { c as routeLogsToStderr } from "./subsystem-C1arrdPy.js";
|
|
|
4
4
|
import { t as formatDocsLink } from "./links-_W1ZnMwp.js";
|
|
5
5
|
import { r as theme } from "./theme-DZuqFJmv.js";
|
|
6
6
|
import { _ as resolveStateDir } from "./paths-nQmEmngS.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-D7AxmRi1.js";
|
|
8
|
+
import { n as registerCoreCliByName, t as getCoreCliCommandNames } from "./command-registry-D85s1_eu.js";
|
|
9
9
|
import { t as getProgramContext } from "./program-context-CT69PVIU.js";
|
|
10
10
|
import path from "node:path";
|
|
11
11
|
import os from "node:os";
|
|
@@ -14,7 +14,7 @@ import { a as resolveSecretRefValue } from "./resolve-CkjIVlAQ.js";
|
|
|
14
14
|
import { t as formatCliCommand } from "./command-format-QzcL7Uge.js";
|
|
15
15
|
import { a as normalizeConfigIssues, n as formatConfigIssueLines } from "./issue-format-CfcXGzWv.js";
|
|
16
16
|
import { c as resolveConfigSecretTargetByPath, n as discoverConfigSecretTargets } from "./target-registry-mIDpZ45A.js";
|
|
17
|
-
import { i as redactConfigObject, n as readBestEffortRuntimeConfigSchema } from "./runtime-schema-
|
|
17
|
+
import { i as redactConfigObject, n as readBestEffortRuntimeConfigSchema } from "./runtime-schema-IZwxDrJI.js";
|
|
18
18
|
import { n as setCommandJsonMode } from "./json-mode-CAjPvZL9.js";
|
|
19
19
|
import fs from "node:fs";
|
|
20
20
|
import JSON5 from "json5";
|
|
@@ -913,7 +913,7 @@ async function runConfigValidate(opts = {}) {
|
|
|
913
913
|
}
|
|
914
914
|
function registerConfigCli(program) {
|
|
915
915
|
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.openclaw.ai/cli/config")}\n`).option("--section <section>", "Configuration sections for guided setup (repeatable). Use with no subcommand.", (value, previous) => [...previous, value], []).action(async (opts) => {
|
|
916
|
-
const { configureCommandFromSectionsArg } = await import("./configure-
|
|
916
|
+
const { configureCommandFromSectionsArg } = await import("./configure-DcN3PXWe.js");
|
|
917
917
|
await configureCommandFromSectionsArg(opts.section, defaultRuntime);
|
|
918
918
|
});
|
|
919
919
|
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 { n as configureCommandFromSectionsArg } from "./configure-
|
|
1
|
+
import { n as configureCommandFromSectionsArg } from "./configure-l_6ztbJd.js";
|
|
2
2
|
export { configureCommandFromSectionsArg };
|
|
@@ -989,7 +989,7 @@ async function runConfigureWizard(opts, runtime = defaultRuntime) {
|
|
|
989
989
|
}
|
|
990
990
|
if (selected.includes("channels")) await configureChannelsSection();
|
|
991
991
|
if (selected.includes("plugins")) {
|
|
992
|
-
const { configurePluginConfig } = await import("./setup.plugin-config-
|
|
992
|
+
const { configurePluginConfig } = await import("./setup.plugin-config-B24OprEh.js");
|
|
993
993
|
nextConfig = await configurePluginConfig({
|
|
994
994
|
config: nextConfig,
|
|
995
995
|
prompter,
|
|
@@ -1044,7 +1044,7 @@ async function runConfigureWizard(opts, runtime = defaultRuntime) {
|
|
|
1044
1044
|
await persistConfig();
|
|
1045
1045
|
}
|
|
1046
1046
|
if (choice === "plugins") {
|
|
1047
|
-
const { configurePluginConfig } = await import("./setup.plugin-config-
|
|
1047
|
+
const { configurePluginConfig } = await import("./setup.plugin-config-B24OprEh.js");
|
|
1048
1048
|
nextConfig = await configurePluginConfig({
|
|
1049
1049
|
config: nextConfig,
|
|
1050
1050
|
prompter,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as resolveOpenClawPackageRoot } from "./openclaw-root-aQp7vffj.js";
|
|
2
2
|
import { n as resolveCliName } from "./cli-name-C3YKCm0e.js";
|
|
3
3
|
import { t as note } from "./note--Kd3X8eg.js";
|
|
4
|
-
import { c as usesSlowDynamicCompletion, i as isCompletionInstalled, o as resolveCompletionCachePath, r as installCompletion, s as resolveShellFromEnv, t as completionCacheExists } from "./completion-cli-
|
|
4
|
+
import { c as usesSlowDynamicCompletion, i as isCompletionInstalled, o as resolveCompletionCachePath, r as installCompletion, s as resolveShellFromEnv, t as completionCacheExists } from "./completion-cli-klMIRvmG.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-
|
|
206
|
+
import("./run-main-DC1dNPE7.js").then(({ runCli }) => runCli(argv)).catch((error) => {
|
|
207
207
|
console.error("[openclaw] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
|
|
208
208
|
process$1.exitCode = 1;
|
|
209
209
|
});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as msteamsSetupAdapter, n as msteamsSetupWizard, r as createMSTeamsSetupWizardBase, t as msteamsPlugin } from "../../channel-
|
|
1
|
+
import { i as msteamsSetupAdapter, n as msteamsSetupWizard, r as createMSTeamsSetupWizardBase, t as msteamsPlugin } from "../../channel-Bk51B5Cb.js";
|
|
2
2
|
export { createMSTeamsSetupWizardBase, msteamsPlugin, msteamsSetupAdapter, msteamsSetupWizard };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as msteamsPlugin } from "../../channel-
|
|
1
|
+
import { t as msteamsPlugin } from "../../channel-Bk51B5Cb.js";
|
|
2
2
|
export { msteamsPlugin };
|
|
@@ -1165,7 +1165,7 @@ async function runGatewayCommand$1(opts) {
|
|
|
1165
1165
|
const { startGatewayServer } = await withProgress({
|
|
1166
1166
|
label: "Loading gateway modules…",
|
|
1167
1167
|
indeterminate: true
|
|
1168
|
-
}, async () => import("./server-
|
|
1168
|
+
}, async () => import("./server-pYxwJSF9.js"));
|
|
1169
1169
|
setConsoleTimestampPrefix(true);
|
|
1170
1170
|
if (devMode) await ensureDevGatewayConfig({ reset: Boolean(opts.reset) });
|
|
1171
1171
|
gatewayLog.info("loading configuration…");
|
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-Bmzrm-q1.js"), import("./run-main-
|
|
29
|
+
const [{ installGaxiosFetchCompat }, { runCli }] = await Promise.all([import("./gaxios-fetch-compat-Bmzrm-q1.js"), import("./run-main-DC1dNPE7.js")]);
|
|
30
30
|
return {
|
|
31
31
|
installGaxiosFetchCompat,
|
|
32
32
|
runCli
|
|
@@ -15,7 +15,7 @@ import { t as WizardCancelledError } from "./prompts-4IH_gy1z.js";
|
|
|
15
15
|
import { n as logConfigUpdated } from "./logging-DHnBXHWa.js";
|
|
16
16
|
import { t as createClackPrompter } from "./clack-prompter-_sjOHG0m.js";
|
|
17
17
|
import { c as resolveManifestProviderOnboardAuthFlags, i as resolveDeprecatedAuthChoiceReplacement, n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice, t as formatDeprecatedNonInteractiveAuthChoiceError } from "./auth-choice-legacy-JypF_SN4.js";
|
|
18
|
-
import { t as runSetupWizard } from "./setup-
|
|
18
|
+
import { t as runSetupWizard } from "./setup-BsIdb5Ko.js";
|
|
19
19
|
import { r as applyLocalSetupWorkspaceConfig } from "./onboard-config-DuUirxej.js";
|
|
20
20
|
//#region src/commands/onboard-core-auth-flags.ts
|
|
21
21
|
const CORE_ONBOARD_AUTH_FLAGS = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
2026-04-
|
|
1
|
+
2026-04-09T02:29:26.363Z
|
|
@@ -46,18 +46,18 @@ function mergeStoredConversationReference(existing, incoming, nowIso) {
|
|
|
46
46
|
function findPreferredDmConversationByUserId(entries, id) {
|
|
47
47
|
const target = id.trim();
|
|
48
48
|
if (!target) return null;
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return
|
|
49
|
+
const personalMatches = [];
|
|
50
|
+
const unknownTypeMatches = [];
|
|
51
|
+
for (const entry of entries) {
|
|
52
|
+
if (entry.reference.user?.aadObjectId !== target && entry.reference.user?.id !== target) continue;
|
|
53
|
+
const convType = normalizeLowercaseStringOrEmpty(entry.reference.conversation?.conversationType ?? "");
|
|
54
|
+
if (convType === "personal") personalMatches.push(entry);
|
|
55
|
+
else if (convType === "channel" || convType === "groupchat") {} else unknownTypeMatches.push(entry);
|
|
56
|
+
}
|
|
57
|
+
const candidates = personalMatches.length > 0 ? personalMatches : unknownTypeMatches;
|
|
58
|
+
if (candidates.length === 0) return null;
|
|
59
|
+
if (candidates.length > 1) candidates.sort((a, b) => (parseStoredConversationTimestamp(b.reference.lastSeenAt) ?? 0) - (parseStoredConversationTimestamp(a.reference.lastSeenAt) ?? 0));
|
|
60
|
+
return candidates[0] ?? null;
|
|
61
61
|
}
|
|
62
62
|
//#endregion
|
|
63
63
|
//#region extensions/msteams/src/storage.ts
|
|
@@ -1336,10 +1336,10 @@ async function sendMSTeamsMessages(params) {
|
|
|
1336
1336
|
});
|
|
1337
1337
|
return messageIds;
|
|
1338
1338
|
};
|
|
1339
|
+
const resolvedThreadId = params.conversationRef.threadId ?? params.conversationRef.activityId;
|
|
1339
1340
|
if (params.replyStyle === "thread") {
|
|
1340
1341
|
const ctx = params.context;
|
|
1341
1342
|
if (!ctx) throw new Error("Missing context for replyStyle=thread");
|
|
1342
|
-
const threadActivityId = params.conversationRef.activityId;
|
|
1343
1343
|
const messageIds = [];
|
|
1344
1344
|
for (const [idx, message] of messages.entries()) {
|
|
1345
1345
|
const result = await withRevokedProxyFallback({
|
|
@@ -1350,7 +1350,7 @@ async function sendMSTeamsMessages(params) {
|
|
|
1350
1350
|
onRevoked: async () => {
|
|
1351
1351
|
const remaining = messages.slice(idx);
|
|
1352
1352
|
return {
|
|
1353
|
-
ids: remaining.length > 0 ? await sendProactively(remaining, idx,
|
|
1353
|
+
ids: remaining.length > 0 ? await sendProactively(remaining, idx, resolvedThreadId) : [],
|
|
1354
1354
|
fellBack: true
|
|
1355
1355
|
};
|
|
1356
1356
|
}
|
|
@@ -1418,6 +1418,10 @@ async function resolveMSTeamsSendContext(params) {
|
|
|
1418
1418
|
});
|
|
1419
1419
|
if (!found) throw new Error(`No conversation reference found for ${recipient.type}:${recipient.id}. The bot must receive a message from this conversation before it can send proactively.`);
|
|
1420
1420
|
const { conversationId, ref } = found;
|
|
1421
|
+
if (recipient.type === "user") {
|
|
1422
|
+
const resolvedType = normalizeLowercaseStringOrEmpty(ref.conversation?.conversationType ?? "");
|
|
1423
|
+
if (resolvedType && resolvedType !== "personal") throw new Error(`Conversation reference for user:${recipient.id} resolved to a ${resolvedType} conversation (${conversationId}) instead of a personal DM. The bot must receive a DM from this user before it can send proactively.`);
|
|
1424
|
+
}
|
|
1421
1425
|
const log = getMSTeamsRuntime().logging.getChildLogger({ name: "msteams:send" });
|
|
1422
1426
|
const { sdk, app } = await loadMSTeamsSdkWithAuth(creds);
|
|
1423
1427
|
const adapter = createMSTeamsAdapter(app, sdk);
|
|
@@ -5,7 +5,7 @@ import { n as VERSION } from "./version-BnlvIG4z.js";
|
|
|
5
5
|
import "./globals-B2UyK3pD.js";
|
|
6
6
|
import { n as resolveCliName } from "./cli-name-C3YKCm0e.js";
|
|
7
7
|
import { n as resolveCliChannelOptions } from "./channel-options-CN-Ctqpg.js";
|
|
8
|
-
import { i as registerProgramCommands } from "./command-registry-
|
|
8
|
+
import { i as registerProgramCommands } from "./command-registry-D85s1_eu.js";
|
|
9
9
|
import { n as setProgramContext } from "./program-context-CT69PVIU.js";
|
|
10
10
|
import { t as isCommandJsonOutputMode } from "./json-mode-CAjPvZL9.js";
|
|
11
11
|
import { t as forceFreePort } from "./ports-NZA2_I6X.js";
|
|
@@ -108,7 +108,7 @@ import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-_yMKjl
|
|
|
108
108
|
import { t as formatHealthCheckFailure } from "./health-format-BXxGuUk1.js";
|
|
109
109
|
import { a as stripUnknownConfigKeys, i as resolveConfigPathTarget, n as formatConfigPath, r as noteOpencodeProviderOverrides, t as runDoctorConfigPreflight } from "./doctor-config-preflight-nphoTqqi.js";
|
|
110
110
|
import { a as runChannelPluginStartupMaintenance, i as normalizeCronJobIdentityFields, o as runGatewayUpdate, t as coerceFiniteScheduleNumber } from "./schedule-SK1QQumZ.js";
|
|
111
|
-
import { n as doctorShellCompletion } from "./doctor-completion-
|
|
111
|
+
import { n as doctorShellCompletion } from "./doctor-completion-C_CFc87W.js";
|
|
112
112
|
import { t as collectChannelStatusIssues } from "./channels-status-issues-DGxyg82D.js";
|
|
113
113
|
import { t as resolveDefaultChannelAccountContext } from "./channel-account-context-CnoxCGF5.js";
|
|
114
114
|
import { a as runLegacyStateMigrations, n as detectLegacyStateMigrations } from "./state-migrations-CwgIXsXQ.js";
|
|
@@ -2,7 +2,7 @@ import { n as defaultRuntime } from "./runtime-BXaxArxm.js";
|
|
|
2
2
|
import { t as formatDocsLink } from "./links-_W1ZnMwp.js";
|
|
3
3
|
import { r as theme } from "./theme-DZuqFJmv.js";
|
|
4
4
|
import { n as runCommandWithRuntime } from "./cli-utils-8I4_zU0Y.js";
|
|
5
|
-
import { n as configureCommandFromSectionsArg, o as CONFIGURE_WIZARD_SECTIONS } from "./configure-
|
|
5
|
+
import { n as configureCommandFromSectionsArg, o as CONFIGURE_WIZARD_SECTIONS } from "./configure-l_6ztbJd.js";
|
|
6
6
|
//#region src/cli/program/register.configure.ts
|
|
7
7
|
function registerConfigureCommand(program) {
|
|
8
8
|
program.command("configure").description("Interactive configuration for credentials, channels, gateway, and agent defaults").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/configure", "docs.openclaw.ai/cli/configure")}\n`).option("--section <section>", `Configuration sections (repeatable). Options: ${CONFIGURE_WIZARD_SECTIONS.join(", ")}`, (value, previous) => [...previous, value], []).action(async (opts) => {
|
|
@@ -14,7 +14,7 @@ import { i as formatControlUiSshHint } from "./onboard-helpers-BjBs8qWy.js";
|
|
|
14
14
|
import { r as resolveGatewayService } from "./service-C1z10Tmx.js";
|
|
15
15
|
import { n as runCommandWithRuntime } from "./cli-utils-8I4_zU0Y.js";
|
|
16
16
|
import { a as removePath, i as listAgentSessionDirs, o as removeStateAndLinkedPaths, r as buildCleanupPlan, s as removeWorkspaceDirs } from "./backup-create-CCoVpqMU.js";
|
|
17
|
-
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-
|
|
17
|
+
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BfACiVO5.js";
|
|
18
18
|
import path from "node:path";
|
|
19
19
|
import { cancel, confirm, isCancel, multiselect } from "@clack/prompts";
|
|
20
20
|
//#region src/infra/clipboard.ts
|
|
@@ -4,7 +4,7 @@ import { r as theme } from "./theme-DZuqFJmv.js";
|
|
|
4
4
|
import { n as runCommandWithRuntime } from "./cli-utils-8I4_zU0Y.js";
|
|
5
5
|
import { c as resolveManifestProviderOnboardAuthFlags } from "./auth-choice-legacy-JypF_SN4.js";
|
|
6
6
|
import { n as formatAuthChoiceChoicesForCli } from "./auth-choice-options-CE1IL5Ut.js";
|
|
7
|
-
import { n as CORE_ONBOARD_AUTH_FLAGS, t as setupWizardCommand } from "./onboard-
|
|
7
|
+
import { n as CORE_ONBOARD_AUTH_FLAGS, t as setupWizardCommand } from "./onboard-BdDpvGgj.js";
|
|
8
8
|
//#region src/cli/program/register.onboard.ts
|
|
9
9
|
function resolveInstallDaemonFlag(command, opts) {
|
|
10
10
|
if (!command || typeof command !== "object") return;
|
|
@@ -10,7 +10,7 @@ import { s as resolveSessionTranscriptsDir } from "./paths-zYrymkDo.js";
|
|
|
10
10
|
import { n as safeParseWithSchema } from "./zod-parse-DrvB8WE0.js";
|
|
11
11
|
import { n as runCommandWithRuntime } from "./cli-utils-8I4_zU0Y.js";
|
|
12
12
|
import { n as logConfigUpdated, t as formatConfigPath } from "./logging-DHnBXHWa.js";
|
|
13
|
-
import { t as setupWizardCommand } from "./onboard-
|
|
13
|
+
import { t as setupWizardCommand } from "./onboard-BdDpvGgj.js";
|
|
14
14
|
import fs from "node:fs/promises";
|
|
15
15
|
import JSON5 from "json5";
|
|
16
16
|
import { z } from "zod";
|
|
@@ -58,7 +58,7 @@ const entrySpecs = [
|
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
commandNames: ["gateway"],
|
|
61
|
-
loadModule: () => import("./gateway-cli-
|
|
61
|
+
loadModule: () => import("./gateway-cli-BB4zg2Pu.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-
|
|
204
|
+
loadModule: () => import("./update-cli-C96vBpAJ.js"),
|
|
205
205
|
exportName: "registerUpdateCli"
|
|
206
206
|
},
|
|
207
207
|
{
|
|
208
208
|
commandNames: ["completion"],
|
|
209
|
-
loadModule: () => import("./completion-cli-
|
|
209
|
+
loadModule: () => import("./completion-cli-1z1xZCDl.js"),
|
|
210
210
|
exportName: "registerCompletionCli"
|
|
211
211
|
}
|
|
212
212
|
])
|
|
@@ -231,14 +231,14 @@ const routedCommandDefinitions = {
|
|
|
231
231
|
"config-get": defineRoutedCommand({
|
|
232
232
|
parseArgs: parseConfigGetRouteArgs,
|
|
233
233
|
runParsedArgs: async (args) => {
|
|
234
|
-
const { runConfigGet } = await import("./config-cli-
|
|
234
|
+
const { runConfigGet } = await import("./config-cli-J5ilTjk5.js");
|
|
235
235
|
await runConfigGet(args);
|
|
236
236
|
}
|
|
237
237
|
}),
|
|
238
238
|
"config-unset": defineRoutedCommand({
|
|
239
239
|
parseArgs: parseConfigUnsetRouteArgs,
|
|
240
240
|
runParsedArgs: async (args) => {
|
|
241
|
-
const { runConfigUnset } = await import("./config-cli-
|
|
241
|
+
const { runConfigUnset } = await import("./config-cli-J5ilTjk5.js");
|
|
242
242
|
await runConfigUnset(args);
|
|
243
243
|
}
|
|
244
244
|
}),
|
|
@@ -395,7 +395,7 @@ async function runCli(argv = process$1.argv) {
|
|
|
395
395
|
if (await tryRouteCli(normalizedArgv)) return;
|
|
396
396
|
enableConsoleCapture();
|
|
397
397
|
const [{ buildProgram }, { installUnhandledRejectionHandler }, { restoreTerminalState }] = await Promise.all([
|
|
398
|
-
import("./program-
|
|
398
|
+
import("./program-D3LRs06L.js"),
|
|
399
399
|
import("./unhandled-rejections-ujRfWFpR.js"),
|
|
400
400
|
import("./restore-ADlpnb-M.js")
|
|
401
401
|
]);
|
|
@@ -412,10 +412,10 @@ async function runCli(argv = process$1.argv) {
|
|
|
412
412
|
const { getProgramContext } = await import("./program-context-BDqaudjJ.js");
|
|
413
413
|
const ctx = getProgramContext(program);
|
|
414
414
|
if (ctx) {
|
|
415
|
-
const { registerCoreCliByName } = await import("./command-registry-
|
|
415
|
+
const { registerCoreCliByName } = await import("./command-registry-DWOyfJhm.js");
|
|
416
416
|
await registerCoreCliByName(program, ctx, primary, parseArgv);
|
|
417
417
|
}
|
|
418
|
-
const { registerSubCliByName } = await import("./register.subclis-
|
|
418
|
+
const { registerSubCliByName } = await import("./register.subclis-Btu1bO0l.js");
|
|
419
419
|
await registerSubCliByName(program, primary);
|
|
420
420
|
}
|
|
421
421
|
if (!shouldSkipPluginCommandRegistration({
|
|
@@ -25755,7 +25755,7 @@ const GENERATED_BASE_CONFIG_SCHEMA = {
|
|
|
25755
25755
|
] },
|
|
25756
25756
|
"mcp.servers.*.url": { tags: ["advanced", "url-secret"] }
|
|
25757
25757
|
},
|
|
25758
|
-
version: "2026.4.9
|
|
25758
|
+
version: "2026.4.9",
|
|
25759
25759
|
generatedAt: "2026-03-22T21:17:33.302Z"
|
|
25760
25760
|
};
|
|
25761
25761
|
//#endregion
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as truncateCloseReason } from "./close-reason-DbI6xLvl.js";
|
|
2
2
|
//#region src/gateway/server.ts
|
|
3
3
|
async function loadServerImpl() {
|
|
4
|
-
return await import("./server.impl-
|
|
4
|
+
return await import("./server.impl-BxLfE9ri.js");
|
|
5
5
|
}
|
|
6
6
|
async function startGatewayServer(...args) {
|
|
7
7
|
return await (await loadServerImpl()).startGatewayServer(...args);
|
|
@@ -215,7 +215,7 @@ import { a as performGatewaySessionReset } from "./session-reset-service-DHBiNrj
|
|
|
215
215
|
import { t as ensureOpenClawCliOnPath } from "./path-env-Bdv42_30.js";
|
|
216
216
|
import { m as normalizeUpdateChannel, n as compareSemverStrings, o as resolveNpmChannelTag, t as checkUpdateStatus } from "./update-check-BEBf8xUe.js";
|
|
217
217
|
import { t as buildChannelUiCatalog } from "./catalog-Bjwu2GwC.js";
|
|
218
|
-
import { a as redactConfigSnapshot, i as redactConfigObject, o as restoreRedactedValues, r as lookupConfigSchema, t as loadGatewayRuntimeConfigSchema } from "./runtime-schema-
|
|
218
|
+
import { a as redactConfigSnapshot, i as redactConfigObject, o as restoreRedactedValues, r as lookupConfigSchema, t as loadGatewayRuntimeConfigSchema } from "./runtime-schema-IZwxDrJI.js";
|
|
219
219
|
import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-CGrBWGjE.js";
|
|
220
220
|
import { n as getHealthSnapshot } from "./health-ozfYRSKh.js";
|
|
221
221
|
import { a as resolveControlUiRootOverrideSync, n as isPackageProvenControlUiRootSync, o as resolveControlUiRootSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-g3xdnck9.js";
|
|
@@ -227,7 +227,7 @@ import { i as loadAgentIdentity, o as pruneAgentConfig, r as findAgentEntryIndex
|
|
|
227
227
|
import { t as installSkill } from "./skills-install-BGJhpUEO.js";
|
|
228
228
|
import { a as runChannelPluginStartupMaintenance, i as normalizeCronJobIdentityFields, n as computeNextRunAtMs, o as runGatewayUpdate, r as computePreviousRunAtMs, t as coerceFiniteScheduleNumber } from "./schedule-SK1QQumZ.js";
|
|
229
229
|
import { i as migrateOrphanedSessionKeys } from "./state-migrations-CwgIXsXQ.js";
|
|
230
|
-
import { t as runSetupWizard } from "./setup-
|
|
230
|
+
import { t as runSetupWizard } from "./setup-BsIdb5Ko.js";
|
|
231
231
|
import "./status-BIazBGNL.js";
|
|
232
232
|
import { t as getStatusSummary } from "./status.summary-B_YheLCO.js";
|
|
233
233
|
import { _ as clearCronJobActive, i as getInspectableTaskRegistrySummary, m as stopTaskRegistryMaintenance, p as startTaskRegistryMaintenance, v as markCronJobActive } from "./task-registry.audit-DUWc1kTA.js";
|
|
@@ -403,7 +403,7 @@ async function runSetupWizard(opts, runtime = defaultRuntime, prompter) {
|
|
|
403
403
|
nextConfig = await setupSkills(nextConfig, workspaceDir, runtime, prompter);
|
|
404
404
|
}
|
|
405
405
|
if (flow !== "quickstart") {
|
|
406
|
-
const { setupPluginConfig } = await import("./setup.plugin-config-
|
|
406
|
+
const { setupPluginConfig } = await import("./setup.plugin-config-B24OprEh.js");
|
|
407
407
|
nextConfig = await setupPluginConfig({
|
|
408
408
|
config: nextConfig,
|
|
409
409
|
prompter,
|
|
@@ -417,7 +417,7 @@ async function runSetupWizard(opts, runtime = defaultRuntime, prompter) {
|
|
|
417
417
|
mode
|
|
418
418
|
});
|
|
419
419
|
await writeConfigFile(nextConfig);
|
|
420
|
-
const { finalizeSetupWizard } = await import("./setup.finalize-
|
|
420
|
+
const { finalizeSetupWizard } = await import("./setup.finalize-L1m4gLYy.js");
|
|
421
421
|
const { launchedTui } = await finalizeSetupWizard({
|
|
422
422
|
flow,
|
|
423
423
|
opts,
|
|
@@ -12,12 +12,12 @@ import { h as waitForGatewayReachable, i as formatControlUiSshHint, u as probeGa
|
|
|
12
12
|
import { i as isSystemdUserServiceAvailable } from "./systemd-CV_dj-oM.js";
|
|
13
13
|
import { r as resolveGatewayService, t as describeGatewayServiceRestart } from "./service-C1z10Tmx.js";
|
|
14
14
|
import { n as listConfiguredWebSearchProviders } from "./runtime-Cz50qJef.js";
|
|
15
|
-
import { r as installCompletion } from "./completion-cli-
|
|
15
|
+
import { r as installCompletion } from "./completion-cli-klMIRvmG.js";
|
|
16
16
|
import { r as healthCommand } from "./health-ozfYRSKh.js";
|
|
17
17
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-g3xdnck9.js";
|
|
18
18
|
import { t as resolveSetupSecretInputString } from "./setup.secret-input-CBNVAHGH.js";
|
|
19
19
|
import { t as formatHealthCheckFailure } from "./health-format-BXxGuUk1.js";
|
|
20
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
20
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-C_CFc87W.js";
|
|
21
21
|
import { t as runTui } from "./tui-Dl-T6b_3.js";
|
|
22
22
|
import path from "node:path";
|
|
23
23
|
import os from "node:os";
|
|
@@ -178,14 +178,18 @@ async function setupPluginConfig(params) {
|
|
|
178
178
|
if (unconfigured.length === 0) return params.config;
|
|
179
179
|
const selected = await params.prompter.multiselect({
|
|
180
180
|
message: "Configure plugins (select to set up now, or skip)",
|
|
181
|
-
options:
|
|
181
|
+
options: [{
|
|
182
|
+
value: "__skip__",
|
|
183
|
+
label: "Skip for now",
|
|
184
|
+
hint: "Continue without configuring plugins"
|
|
185
|
+
}, ...unconfigured.map((p) => ({
|
|
182
186
|
value: p.id,
|
|
183
187
|
label: p.name,
|
|
184
188
|
hint: `${Object.keys(p.uiHints).length} field${Object.keys(p.uiHints).length === 1 ? "" : "s"}`
|
|
185
|
-
}))
|
|
189
|
+
}))]
|
|
186
190
|
});
|
|
187
191
|
let config = params.config;
|
|
188
|
-
for (const pluginId of selected) {
|
|
192
|
+
for (const pluginId of selected.filter((value) => value !== "__skip__")) {
|
|
189
193
|
const plugin = unconfigured.find((p) => p.id === pluginId);
|
|
190
194
|
if (!plugin) continue;
|
|
191
195
|
await params.prompter.note(`Configure ${plugin.name}`, "Plugin setup");
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { d as readStringValue, i as normalizeLowercaseStringOrEmpty, o as normalizeOptionalLowercaseString, s as normalizeOptionalString } from "./string-coerce-CIT1-v_a.js";
|
|
2
2
|
import { l as isRecord } from "./utils-Supr9KvU.js";
|
|
3
|
+
import { d as resolveThreadSessionKeys } from "./session-key-BMb3Kc4r.js";
|
|
3
4
|
import { t as DEFAULT_ACCOUNT_ID } from "./account-id-BfovDWrj.js";
|
|
4
5
|
import { n as formatAllowlistMatchMeta } from "./allowlist-match-HRlAUlGe.js";
|
|
5
6
|
import { n as estimateBase64DecodedBytes } from "./base64-CmMl2H_S.js";
|
|
@@ -7,6 +8,7 @@ import { x as buildMediaPayload } from "./reply-payload-CcbNO0Ax.js";
|
|
|
7
8
|
import { n as fetchWithSsrFGuard } from "./fetch-guard-Conjfhmz.js";
|
|
8
9
|
import "./text-runtime-BngW26kR.js";
|
|
9
10
|
import { n as isDangerousNameMatchingEnabled } from "./dangerous-name-matching-BbTrjLRR.js";
|
|
11
|
+
import "./routing-CC84LXmn.js";
|
|
10
12
|
import { r as resolveDualTextControlCommandGate } from "./command-gating-mecLfesJ.js";
|
|
11
13
|
import { n as resolveInboundMentionDecision } from "./mention-gating-C_fH86hV.js";
|
|
12
14
|
import { n as keepHttpServerTaskAlive } from "./channel-lifecycle.core-ks58oyKs.js";
|
|
@@ -29,7 +31,7 @@ import { c as createDraftStreamLoop } from "./channel-lifecycle-BdUpWVZ-.js";
|
|
|
29
31
|
import { A as isLikelyImageAttachment, B as resolveMSTeamsCredentials, C as GRAPH_ROOT, D as extractInlineImageCandidates, E as extractHtmlFromAttachment, F as resolveMediaSsrfPolicy, I as resolveRequestUrl, L as safeFetchWithPolicy, M as normalizeContentType, N as readNestedString, O as inferPlaceholder, P as resolveAttachmentFetchPolicy, R as safeHostForUrl, S as ATTACHMENT_TAG_RE, T as applyAuthorizationHeaderForUrl, _ as ensureUserAgentHeader, b as formatUnknownError, f as createBotFrameworkJwtValidator, h as loadMSTeamsSdkWithAuth, i as fetchGraphJson, j as isUrlAllowed, k as isDownloadableAttachment, m as createMSTeamsTokenProvider, p as createMSTeamsAdapter, v as classifyMSTeamsSendError, w as IMG_SRC_RE, y as formatMSTeamsSendErrorHint } from "./graph-users-BEuPEsk1.js";
|
|
30
32
|
import { t as getMSTeamsRuntime } from "./runtime-api-BkG9fr64.js";
|
|
31
33
|
import { a as resolveMSTeamsRouteConfig, d as resolveMSTeamsChannelAllowlist, f as resolveMSTeamsUserAllowlist, i as resolveMSTeamsReplyPolicy, n as resolveMSTeamsAllowlistMatch, t as isMSTeamsGroupAllowed } from "./policy-Dir5qnAZ.js";
|
|
32
|
-
import { _ as createMSTeamsPollStoreFs, c as renderReplyPayloadsToMessages, d as withRevokedProxyFallback, f as getPendingUpload, g as uploadToConsentUrl, h as parseFileConsentInvoke, l as sendMSTeamsMessages, m as buildFileInfoCard, p as removePendingUpload, s as buildConversationReference, u as AI_GENERATED_ENTITY, v as extractMSTeamsPollVote, y as createMSTeamsConversationStoreFs } from "./probe-
|
|
34
|
+
import { _ as createMSTeamsPollStoreFs, c as renderReplyPayloadsToMessages, d as withRevokedProxyFallback, f as getPendingUpload, g as uploadToConsentUrl, h as parseFileConsentInvoke, l as sendMSTeamsMessages, m as buildFileInfoCard, p as removePendingUpload, s as buildConversationReference, u as AI_GENERATED_ENTITY, v as extractMSTeamsPollVote, y as createMSTeamsConversationStoreFs } from "./probe-CjLA1BfT.js";
|
|
33
35
|
//#region extensions/msteams/src/feedback-reflection-prompt.ts
|
|
34
36
|
/** Max chars of the thumbed-down response to include in the reflection prompt. */
|
|
35
37
|
const MAX_RESPONSE_CHARS = 500;
|
|
@@ -1595,7 +1597,7 @@ function extractTextFromHtmlAttachments(attachments) {
|
|
|
1595
1597
|
return "";
|
|
1596
1598
|
}
|
|
1597
1599
|
function buildStoredConversationReference(params) {
|
|
1598
|
-
const { activity, conversationId, conversationType, teamId } = params;
|
|
1600
|
+
const { activity, conversationId, conversationType, teamId, threadId } = params;
|
|
1599
1601
|
const from = activity.from;
|
|
1600
1602
|
const conversation = activity.conversation;
|
|
1601
1603
|
const agent = activity.recipient;
|
|
@@ -1621,7 +1623,8 @@ function buildStoredConversationReference(params) {
|
|
|
1621
1623
|
channelId: activity.channelId,
|
|
1622
1624
|
serviceUrl: activity.serviceUrl,
|
|
1623
1625
|
locale: activity.locale,
|
|
1624
|
-
...clientInfo?.timezone ? { timezone: clientInfo.timezone } : {}
|
|
1626
|
+
...clientInfo?.timezone ? { timezone: clientInfo.timezone } : {},
|
|
1627
|
+
...threadId ? { threadId } : {}
|
|
1625
1628
|
};
|
|
1626
1629
|
}
|
|
1627
1630
|
function createMSTeamsMessageHandler(deps) {
|
|
@@ -1681,7 +1684,8 @@ function createMSTeamsMessageHandler(deps) {
|
|
|
1681
1684
|
activity,
|
|
1682
1685
|
conversationId,
|
|
1683
1686
|
conversationType,
|
|
1684
|
-
teamId
|
|
1687
|
+
teamId,
|
|
1688
|
+
threadId: conversationType === "channel" ? conversationMessageId ?? activity.replyToId ?? void 0 : void 0
|
|
1685
1689
|
});
|
|
1686
1690
|
const { dmPolicy, senderId, senderName, pairing, isDirectMessage, channelGate, access, configuredDmAllowFrom, effectiveDmAllowFrom, effectiveGroupAllowFrom, allowNameMatching, groupPolicy } = await resolveMSTeamsSenderAccess({
|
|
1687
1691
|
cfg,
|
|
@@ -1860,6 +1864,12 @@ function createMSTeamsMessageHandler(deps) {
|
|
|
1860
1864
|
id: isDirectMessage ? senderId : conversationId
|
|
1861
1865
|
}
|
|
1862
1866
|
});
|
|
1867
|
+
const channelThreadId = isChannel ? conversationMessageId ?? activity.replyToId ?? void 0 : void 0;
|
|
1868
|
+
route.sessionKey = resolveThreadSessionKeys({
|
|
1869
|
+
baseSessionKey: route.sessionKey,
|
|
1870
|
+
threadId: channelThreadId,
|
|
1871
|
+
parentSessionKey: channelThreadId ? route.sessionKey : void 0
|
|
1872
|
+
}).sessionKey;
|
|
1863
1873
|
const preview = rawBody.replace(/\s+/g, " ").slice(0, 160);
|
|
1864
1874
|
const inboundLabel = isDirectMessage ? `Teams DM from ${senderName}` : `Teams message in ${conversationType} from ${senderName}`;
|
|
1865
1875
|
core.system.enqueueSystemEvent(`${inboundLabel}: ${preview}`, {
|
|
@@ -2355,7 +2365,8 @@ async function handleFeedbackInvoke(context, deps) {
|
|
|
2355
2365
|
if (value.actionValue?.feedback) try {
|
|
2356
2366
|
userComment = JSON.parse(value.actionValue.feedback).feedbackText || void 0;
|
|
2357
2367
|
} catch {}
|
|
2358
|
-
const
|
|
2368
|
+
const rawConversationId = activity.conversation?.id ?? "unknown";
|
|
2369
|
+
const conversationId = normalizeMSTeamsConversationId(rawConversationId);
|
|
2359
2370
|
const senderId = activity.from?.aadObjectId ?? activity.from?.id ?? "unknown";
|
|
2360
2371
|
const messageId = value.replyToId ?? activity.replyToId ?? "unknown";
|
|
2361
2372
|
const isNegative = reaction === "dislike";
|
|
@@ -2371,6 +2382,12 @@ async function handleFeedbackInvoke(context, deps) {
|
|
|
2371
2382
|
id: isDirectMessage ? senderId : conversationId
|
|
2372
2383
|
}
|
|
2373
2384
|
});
|
|
2385
|
+
const feedbackThreadId = isChannel ? extractMSTeamsConversationMessageId(rawConversationId) ?? activity.replyToId ?? void 0 : void 0;
|
|
2386
|
+
if (feedbackThreadId) route.sessionKey = resolveThreadSessionKeys({
|
|
2387
|
+
baseSessionKey: route.sessionKey,
|
|
2388
|
+
threadId: feedbackThreadId,
|
|
2389
|
+
parentSessionKey: route.sessionKey
|
|
2390
|
+
}).sessionKey;
|
|
2374
2391
|
const feedbackEvent = buildFeedbackEvent({
|
|
2375
2392
|
messageId,
|
|
2376
2393
|
value: isNegative ? "negative" : "positive",
|
|
@@ -24,11 +24,11 @@ import { t as formatHelpExamples } from "./help-format-wJNYco7E.js";
|
|
|
24
24
|
import { n as renderTable, t as getTerminalTableWidth } from "./table-hG746WbE.js";
|
|
25
25
|
import { d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, i as fetchNpmTagVersion, m as normalizeUpdateChannel, n as compareSemverStrings, o as resolveNpmChannelTag, r as fetchNpmPackageTargetStatus, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-BEBf8xUe.js";
|
|
26
26
|
import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-DAaDcuFD.js";
|
|
27
|
-
import { r as installCompletion } from "./completion-cli-
|
|
27
|
+
import { r as installCompletion } from "./completion-cli-klMIRvmG.js";
|
|
28
28
|
import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-I8GmTV-T.js";
|
|
29
|
-
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-
|
|
29
|
+
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BfACiVO5.js";
|
|
30
30
|
import { _ as normalizePackageTagInput, c as cleanupGlobalRenameDirs, d as detectGlobalInstallManagerByPresence, f as detectGlobalInstallManagerForRoot, g as resolveGlobalInstallTarget, h as resolveGlobalInstallSpec, l as collectInstalledGlobalPackageErrors, m as resolveExpectedInstalledVersionFromSpec, o as runGatewayUpdate, p as globalInstallArgs, s as canResolveRegistryVersionForPackageTarget, u as createGlobalInstallEnv, v as readPackageName, y as readPackageVersion } from "./schedule-SK1QQumZ.js";
|
|
31
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
31
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-C_CFc87W.js";
|
|
32
32
|
import path from "node:path";
|
|
33
33
|
import { spawn, spawnSync } from "node:child_process";
|
|
34
34
|
import os from "node:os";
|
package/package.json
CHANGED