From 1420d113d85c09956a7c38591b82be3e1489e089 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 18 Jan 2026 02:51:42 +0000 Subject: [PATCH] refactor: migrate extensions to plugin sdk --- CHANGELOG.md | 1 + extensions/.DS_Store | Bin 0 -> 8196 bytes extensions/matrix/.DS_Store | Bin 0 -> 6148 bytes extensions/matrix/index.ts | 4 +- .../node_modules/.bin/.ignored_markdown-it | 21 +++++ .../matrix/node_modules/.bin/markdown-it | 1 + extensions/matrix/node_modules/markdown-it | 1 + extensions/matrix/node_modules/matrix-js-sdk | 1 + extensions/matrix/src/actions.ts | 16 ++-- extensions/matrix/src/channel.ts | 15 ++-- extensions/matrix/src/directory-live.ts | 2 +- extensions/matrix/src/group-mentions.ts | 2 +- extensions/matrix/src/matrix/accounts.ts | 2 +- extensions/matrix/src/matrix/actions.ts | 2 +- extensions/matrix/src/matrix/client.ts | 2 +- extensions/matrix/src/matrix/credentials.ts | 2 +- extensions/matrix/src/matrix/deps.ts | 3 +- .../matrix/src/matrix/monitor/allowlist.ts | 2 +- .../matrix/src/matrix/monitor/auto-join.ts | 3 +- extensions/matrix/src/matrix/monitor/index.ts | 53 ++++++------ extensions/matrix/src/matrix/monitor/media.ts | 2 +- .../matrix/src/matrix/monitor/mentions.ts | 2 +- .../matrix/src/matrix/monitor/replies.ts | 11 ++- extensions/matrix/src/matrix/monitor/rooms.ts | 5 +- extensions/matrix/src/matrix/poll-types.ts | 2 +- extensions/matrix/src/matrix/send.test.ts | 12 ++- extensions/matrix/src/matrix/send.ts | 18 ++-- extensions/matrix/src/onboarding.ts | 16 ++-- extensions/matrix/src/outbound.ts | 7 +- extensions/matrix/src/resolve-targets.ts | 4 +- extensions/matrix/src/runtime.ts | 14 ++++ extensions/matrix/src/tool-actions.ts | 2 +- extensions/memory-core/index.ts | 9 +- extensions/msteams/.DS_Store | Bin 0 -> 6148 bytes extensions/msteams/index.ts | 2 +- .../node_modules/@microsoft/agents-hosting | 1 + .../@microsoft/agents-hosting-express | 1 + .../agents-hosting-extensions-teams | 1 + extensions/msteams/node_modules/express | 1 + .../msteams/node_modules/proper-lockfile | 1 + extensions/msteams/src/attachments.test.ts | 13 +-- .../msteams/src/attachments/download.ts | 3 +- extensions/msteams/src/attachments/graph.ts | 3 +- .../msteams/src/channel.directory.test.ts | 2 +- extensions/msteams/src/channel.ts | 13 +-- extensions/msteams/src/directory-live.ts | 2 +- extensions/msteams/src/messenger.test.ts | 2 +- extensions/msteams/src/messenger.ts | 11 ++- extensions/msteams/src/monitor-handler.ts | 5 +- .../src/monitor-handler/message-handler.ts | 38 ++++----- extensions/msteams/src/monitor.ts | 13 +-- extensions/msteams/src/onboarding.ts | 18 ++-- extensions/msteams/src/outbound.ts | 3 +- extensions/msteams/src/policy.test.ts | 2 +- extensions/msteams/src/policy.ts | 6 +- extensions/msteams/src/probe.test.ts | 2 +- extensions/msteams/src/probe.ts | 2 +- extensions/msteams/src/reply-dispatcher.ts | 14 ++-- extensions/msteams/src/send-context.ts | 4 +- extensions/msteams/src/send.ts | 2 +- extensions/msteams/src/storage.ts | 2 +- extensions/msteams/src/token.ts | 2 +- extensions/voice-call/.DS_Store | Bin 0 -> 6148 bytes .../voice-call/node_modules/@sinclair/typebox | 1 + extensions/voice-call/node_modules/ws | 1 + extensions/voice-call/node_modules/zod | 1 + extensions/zalo/.DS_Store | Bin 0 -> 6148 bytes extensions/zalo/index.ts | 2 +- extensions/zalo/node_modules/undici | 1 + extensions/zalo/src/actions.ts | 5 +- extensions/zalo/src/channel.ts | 5 +- extensions/zalo/src/monitor.ts | 9 +- extensions/zalo/src/onboarding.ts | 7 +- extensions/zalo/src/shared/onboarding.ts | 2 +- extensions/zalo/src/status-issues.ts | 2 +- extensions/zalouser/.DS_Store | Bin 0 -> 6148 bytes extensions/zalouser/index.ts | 2 +- .../zalouser/node_modules/@sinclair/typebox | 1 + extensions/zalouser/src/channel.ts | 8 +- extensions/zalouser/src/monitor.ts | 14 ++-- extensions/zalouser/src/onboarding.ts | 9 +- src/.DS_Store | Bin 0 -> 14340 bytes src/agents/.DS_Store | Bin 0 -> 8196 bytes src/channels/.DS_Store | Bin 0 -> 6148 bytes src/cli/.DS_Store | Bin 0 -> 8196 bytes src/commands/.DS_Store | Bin 0 -> 8196 bytes src/cron/.DS_Store | Bin 0 -> 6148 bytes src/gateway/.DS_Store | Bin 0 -> 6148 bytes src/infra/.DS_Store | Bin 0 -> 6148 bytes src/plugin-sdk/index.ts | 77 +++++++++++++++++- src/plugins/loader.ts | 23 ++++++ src/plugins/runtime/index.ts | 3 + src/plugins/runtime/types.ts | 9 ++ src/tui/.DS_Store | Bin 0 -> 6148 bytes src/web/.DS_Store | Bin 0 -> 6148 bytes 95 files changed, 380 insertions(+), 208 deletions(-) create mode 100644 extensions/.DS_Store create mode 100644 extensions/matrix/.DS_Store create mode 100755 extensions/matrix/node_modules/.bin/.ignored_markdown-it create mode 120000 extensions/matrix/node_modules/.bin/markdown-it create mode 120000 extensions/matrix/node_modules/markdown-it create mode 120000 extensions/matrix/node_modules/matrix-js-sdk create mode 100644 extensions/matrix/src/runtime.ts create mode 100644 extensions/msteams/.DS_Store create mode 120000 extensions/msteams/node_modules/@microsoft/agents-hosting create mode 120000 extensions/msteams/node_modules/@microsoft/agents-hosting-express create mode 120000 extensions/msteams/node_modules/@microsoft/agents-hosting-extensions-teams create mode 120000 extensions/msteams/node_modules/express create mode 120000 extensions/msteams/node_modules/proper-lockfile create mode 100644 extensions/voice-call/.DS_Store create mode 120000 extensions/voice-call/node_modules/@sinclair/typebox create mode 120000 extensions/voice-call/node_modules/ws create mode 120000 extensions/voice-call/node_modules/zod create mode 100644 extensions/zalo/.DS_Store create mode 120000 extensions/zalo/node_modules/undici create mode 100644 extensions/zalouser/.DS_Store create mode 120000 extensions/zalouser/node_modules/@sinclair/typebox create mode 100644 src/.DS_Store create mode 100644 src/agents/.DS_Store create mode 100644 src/channels/.DS_Store create mode 100644 src/cli/.DS_Store create mode 100644 src/commands/.DS_Store create mode 100644 src/cron/.DS_Store create mode 100644 src/gateway/.DS_Store create mode 100644 src/infra/.DS_Store create mode 100644 src/tui/.DS_Store create mode 100644 src/web/.DS_Store diff --git a/CHANGELOG.md b/CHANGELOG.md index e48279137..0ee31fe23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Docs: https://docs.clawd.bot - Plugins: add exclusive plugin slots with a dedicated memory slot selector. - Memory: ship core memory tools + CLI as the bundled `memory-core` plugin. - Docs: document plugin slots and memory plugin behavior. +- Plugins: migrate bundled messaging extensions to the plugin SDK; resolve plugin-sdk imports in loader. ## 2026.1.17-5 diff --git a/extensions/.DS_Store b/extensions/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..397093360559070dc3bb88a0d6ec6190ec5290d2 GIT binary patch literal 8196 zcmeHMO^Z`86uoJyQx%~gjAw(HDxQ4!deiq_hc^rHBZ1_m$+^kNA!&M3A`+X2gAUOK5jByuZCyc8 zkaWM!xm0s4w_yeRi6kjHpf*itnnQ<%pg>R{C=e6~3IqlI1O;$s>(nf{_ib+|g91T; z|55?{{SYB*8#|j?YrZ;Am=FNAfo79XM;u^$B4=Y~Q)`VY#rTSDlW;Q&7oi9i!dMD~@E z+HnO;4m;b48c*!_*B-7$k5#wZm#Pm`vvq59>HUlOqq95)6+I>+&M3z4bc2Rira~!c z7mpM@+Q(zX9zIV|e}>ut9h>$;)JA;i6)Y$5<_7JO3!Ylsj6= z^(85X5OfRy_mSJ!P14vN<%F!{=*zfuQgvc3;^+IBh?O{S3C}x*FQ7Rj7a>;o*~Q*UuL?ntyuo(H^8F%wi9eVLXC$LvRfQXCSx>ny7J#OI<$6S6d*t zgy1yaJfQC%EX^EhL9`s@QEj}$WONy4S3$?boazLGB}q=W5a7|SzrI&C5GVij>5p%Y zeBqdUvz&$X7ILAb7t)~ThP>kBvqq1w=wIg!oMdO7k<5HKv7&yDOwDY7<}Wfh#4{*6 z<)m_*KDqW=kjr5>$Cx0MJr$1};ENNuOhI0eJIK zV#^ST2BBz1ntkip8SnV5wX;h^VZ1IzL1S$i@t3l9c)$CN6nsh~BL zJ#RPsM+SK9PU%ioZ9(nzThOY!8BOMOwbaCqp7;4yb)L`4dIq2PDfzs5e|Wpt?_d1N ze|g)^h5uKIXhrul?_?Q1rn`}LPA})1&FiD&WN}r!%b-8nnJ<$0cup5*z!`7`4uJvG zY?k;$(OYN08E^)+4DkMtLK!o|Mp3p7G;#$14q+BSU(QOvlnubluu+5s5;PR3p~0>g zLBnBB%`Y=-6g8ZJ%#8Qg%)xFb!A@!+6?Y1mqPNa~Gtgxq(#M4B|K-p3|89^!IRnnX zK`{`9`6M6XldQJ(K8|Z`3cZH1uwSFN4M9grF?_icpFu@nPq_ok3>!sQAbt=K8oY4^ H{*-|)^G;Ju literal 0 HcmV?d00001 diff --git a/extensions/matrix/index.ts b/extensions/matrix/index.ts index 91ab6c07c..eaee15222 100644 --- a/extensions/matrix/index.ts +++ b/extensions/matrix/index.ts @@ -1,12 +1,14 @@ -import type { ClawdbotPluginApi } from "../../src/plugins/types.js"; +import type { ClawdbotPluginApi } from "clawdbot/plugin-sdk"; import { matrixPlugin } from "./src/channel.js"; +import { setMatrixRuntime } from "./src/runtime.js"; const plugin = { id: "matrix", name: "Matrix", description: "Matrix channel plugin (matrix-js-sdk)", register(api: ClawdbotPluginApi) { + setMatrixRuntime(api.runtime); api.registerChannel({ plugin: matrixPlugin }); }, }; diff --git a/extensions/matrix/node_modules/.bin/.ignored_markdown-it b/extensions/matrix/node_modules/.bin/.ignored_markdown-it new file mode 100755 index 000000000..7d14f551c --- /dev/null +++ b/extensions/matrix/node_modules/.bin/.ignored_markdown-it @@ -0,0 +1,21 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -z "$NODE_PATH" ]; then + export NODE_PATH="/Users/steipete/Projects/clawdbot4/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/bin/node_modules:/Users/steipete/Projects/clawdbot4/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/node_modules:/Users/steipete/Projects/clawdbot4/node_modules/.pnpm/markdown-it@14.1.0/node_modules:/Users/steipete/Projects/clawdbot4/node_modules/.pnpm/node_modules" +else + export NODE_PATH="/Users/steipete/Projects/clawdbot4/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/bin/node_modules:/Users/steipete/Projects/clawdbot4/node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it/node_modules:/Users/steipete/Projects/clawdbot4/node_modules/.pnpm/markdown-it@14.1.0/node_modules:/Users/steipete/Projects/clawdbot4/node_modules/.pnpm/node_modules:$NODE_PATH" +fi +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../markdown-it/bin/markdown-it.mjs" "$@" +else + exec node "$basedir/../markdown-it/bin/markdown-it.mjs" "$@" +fi diff --git a/extensions/matrix/node_modules/.bin/markdown-it b/extensions/matrix/node_modules/.bin/markdown-it new file mode 120000 index 000000000..8a641084e --- /dev/null +++ b/extensions/matrix/node_modules/.bin/markdown-it @@ -0,0 +1 @@ +../markdown-it/bin/markdown-it.mjs \ No newline at end of file diff --git a/extensions/matrix/node_modules/markdown-it b/extensions/matrix/node_modules/markdown-it new file mode 120000 index 000000000..3a37cf385 --- /dev/null +++ b/extensions/matrix/node_modules/markdown-it @@ -0,0 +1 @@ +../../../node_modules/.pnpm/markdown-it@14.1.0/node_modules/markdown-it \ No newline at end of file diff --git a/extensions/matrix/node_modules/matrix-js-sdk b/extensions/matrix/node_modules/matrix-js-sdk new file mode 120000 index 000000000..310204460 --- /dev/null +++ b/extensions/matrix/node_modules/matrix-js-sdk @@ -0,0 +1 @@ +../../../node_modules/.pnpm/matrix-js-sdk@40.0.0/node_modules/matrix-js-sdk \ No newline at end of file diff --git a/extensions/matrix/src/actions.ts b/extensions/matrix/src/actions.ts index 03066f9cb..221a4f72b 100644 --- a/extensions/matrix/src/actions.ts +++ b/extensions/matrix/src/actions.ts @@ -1,13 +1,15 @@ -import { createActionGate, readNumberParam, readStringParam } from "../../../src/agents/tools/common.js"; +import { + createActionGate, + readNumberParam, + readStringParam, + type ChannelMessageActionAdapter, + type ChannelMessageActionContext, + type ChannelMessageActionName, + type ChannelToolSend, +} from "clawdbot/plugin-sdk"; import { resolveMatrixAccount } from "./matrix/accounts.js"; import { handleMatrixAction } from "./tool-actions.js"; import type { CoreConfig } from "./types.js"; -import type { - ChannelMessageActionAdapter, - ChannelMessageActionContext, - ChannelMessageActionName, - ChannelToolSend, -} from "../../../src/channels/plugins/types.js"; export const matrixMessageActions: ChannelMessageActionAdapter = { listActions: ({ cfg }) => { diff --git a/extensions/matrix/src/channel.ts b/extensions/matrix/src/channel.ts index 69285ff95..3d65152ee 100644 --- a/extensions/matrix/src/channel.ts +++ b/extensions/matrix/src/channel.ts @@ -1,13 +1,14 @@ -import type { ChannelPlugin } from "../../../src/channels/plugins/types.js"; import { + applyAccountNameToChannelSection, + buildChannelConfigSchema, + DEFAULT_ACCOUNT_ID, deleteAccountFromConfigSection, + formatPairingApproveHint, + normalizeAccountId, + PAIRING_APPROVED_MESSAGE, setAccountEnabledInConfigSection, -} from "../../../src/channels/plugins/config-helpers.js"; -import { buildChannelConfigSchema } from "../../../src/channels/plugins/config-schema.js"; -import { formatPairingApproveHint } from "../../../src/channels/plugins/helpers.js"; -import { PAIRING_APPROVED_MESSAGE } from "../../../src/channels/plugins/pairing-message.js"; -import { applyAccountNameToChannelSection } from "../../../src/channels/plugins/setup-helpers.js"; -import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "../../../src/routing/session-key.js"; + type ChannelPlugin, +} from "clawdbot/plugin-sdk"; import { matrixMessageActions } from "./actions.js"; import { MatrixConfigSchema } from "./config-schema.js"; diff --git a/extensions/matrix/src/directory-live.ts b/extensions/matrix/src/directory-live.ts index c4784eecd..bb42e95a0 100644 --- a/extensions/matrix/src/directory-live.ts +++ b/extensions/matrix/src/directory-live.ts @@ -1,4 +1,4 @@ -import type { ChannelDirectoryEntry } from "../../../src/channels/plugins/types.js"; +import type { ChannelDirectoryEntry } from "clawdbot/plugin-sdk"; import { resolveMatrixAuth } from "./matrix/client.js"; diff --git a/extensions/matrix/src/group-mentions.ts b/extensions/matrix/src/group-mentions.ts index e2696d3c5..ee16b713c 100644 --- a/extensions/matrix/src/group-mentions.ts +++ b/extensions/matrix/src/group-mentions.ts @@ -1,4 +1,4 @@ -import type { ChannelGroupContext } from "../../../src/channels/plugins/types.js"; +import type { ChannelGroupContext } from "clawdbot/plugin-sdk"; import { resolveMatrixRoomConfig } from "./matrix/monitor/rooms.js"; import type { CoreConfig } from "./types.js"; diff --git a/extensions/matrix/src/matrix/accounts.ts b/extensions/matrix/src/matrix/accounts.ts index fa94aec6a..d451a58d7 100644 --- a/extensions/matrix/src/matrix/accounts.ts +++ b/extensions/matrix/src/matrix/accounts.ts @@ -1,4 +1,4 @@ -import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "../../../../src/routing/session-key.js"; +import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "clawdbot/plugin-sdk"; import type { CoreConfig, MatrixConfig } from "../types.js"; import { resolveMatrixConfig } from "./client.js"; import { credentialsMatchConfig, loadMatrixCredentials } from "./credentials.js"; diff --git a/extensions/matrix/src/matrix/actions.ts b/extensions/matrix/src/matrix/actions.ts index 4b463b5b5..a9921e597 100644 --- a/extensions/matrix/src/matrix/actions.ts +++ b/extensions/matrix/src/matrix/actions.ts @@ -15,7 +15,7 @@ import type { RoomTopicEventContent, } from "matrix-js-sdk/lib/@types/state_events.js"; -import { loadConfig } from "../../../../src/config/config.js"; +import { loadConfig } from "clawdbot/plugin-sdk"; import type { CoreConfig } from "../types.js"; import { getActiveMatrixClient } from "./active-client.js"; import { diff --git a/extensions/matrix/src/matrix/client.ts b/extensions/matrix/src/matrix/client.ts index a2b4be35a..3ce7bb4ca 100644 --- a/extensions/matrix/src/matrix/client.ts +++ b/extensions/matrix/src/matrix/client.ts @@ -1,6 +1,6 @@ import { ClientEvent, type MatrixClient, SyncState } from "matrix-js-sdk"; -import { loadConfig } from "../../../../src/config/config.js"; +import { loadConfig } from "clawdbot/plugin-sdk"; import type { CoreConfig } from "../types.js"; export type MatrixResolvedConfig = { diff --git a/extensions/matrix/src/matrix/credentials.ts b/extensions/matrix/src/matrix/credentials.ts index 375fb6aa6..edf0d5657 100644 --- a/extensions/matrix/src/matrix/credentials.ts +++ b/extensions/matrix/src/matrix/credentials.ts @@ -2,7 +2,7 @@ import fs from "node:fs"; import os from "node:os"; import path from "node:path"; -import { resolveStateDir } from "../../../../src/config/paths.js"; +import { resolveStateDir } from "clawdbot/plugin-sdk"; export type MatrixStoredCredentials = { homeserver: string; diff --git a/extensions/matrix/src/matrix/deps.ts b/extensions/matrix/src/matrix/deps.ts index 86746fb8a..7b71123d0 100644 --- a/extensions/matrix/src/matrix/deps.ts +++ b/extensions/matrix/src/matrix/deps.ts @@ -3,8 +3,7 @@ import path from "node:path"; import { createRequire } from "node:module"; import { fileURLToPath } from "node:url"; -import { runCommandWithTimeout } from "../../../../src/process/exec.js"; -import type { RuntimeEnv } from "../../../../src/runtime.js"; +import { runCommandWithTimeout, type RuntimeEnv } from "clawdbot/plugin-sdk"; const MATRIX_SDK_PACKAGE = "matrix-js-sdk"; diff --git a/extensions/matrix/src/matrix/monitor/allowlist.ts b/extensions/matrix/src/matrix/monitor/allowlist.ts index 4b4138d4c..6fe45c03a 100644 --- a/extensions/matrix/src/matrix/monitor/allowlist.ts +++ b/extensions/matrix/src/matrix/monitor/allowlist.ts @@ -1,4 +1,4 @@ -import type { AllowlistMatch } from "../../../../../src/channels/plugins/allowlist-match.js"; +import type { AllowlistMatch } from "clawdbot/plugin-sdk"; function normalizeAllowList(list?: Array) { return (list ?? []).map((entry) => String(entry).trim()).filter(Boolean); diff --git a/extensions/matrix/src/matrix/monitor/auto-join.ts b/extensions/matrix/src/matrix/monitor/auto-join.ts index c7d24ed5f..ead678948 100644 --- a/extensions/matrix/src/matrix/monitor/auto-join.ts +++ b/extensions/matrix/src/matrix/monitor/auto-join.ts @@ -1,8 +1,7 @@ import type { MatrixClient, MatrixEvent, RoomMember } from "matrix-js-sdk"; import { RoomMemberEvent } from "matrix-js-sdk"; -import { danger, logVerbose } from "../../../../../src/globals.js"; -import type { RuntimeEnv } from "../../../../../src/runtime.js"; +import { danger, logVerbose, type RuntimeEnv } from "clawdbot/plugin-sdk"; import type { CoreConfig } from "../../types.js"; export function registerMatrixAutoJoin(params: { diff --git a/extensions/matrix/src/matrix/monitor/index.ts b/extensions/matrix/src/matrix/monitor/index.ts index 35034d78d..de2e3a592 100644 --- a/extensions/matrix/src/matrix/monitor/index.ts +++ b/extensions/matrix/src/matrix/monitor/index.ts @@ -2,36 +2,38 @@ import type { MatrixEvent, Room } from "matrix-js-sdk"; import { EventType, RelationType, RoomEvent } from "matrix-js-sdk"; import type { RoomMessageEventContent } from "matrix-js-sdk/lib/@types/events.js"; -import { resolveEffectiveMessagesConfig, resolveHumanDelayConfig } from "../../../../../src/agents/identity.js"; -import { chunkMarkdownText, resolveTextChunkLimit } from "../../../../../src/auto-reply/chunk.js"; -import { hasControlCommand } from "../../../../../src/auto-reply/command-detection.js"; -import { shouldHandleTextCommands } from "../../../../../src/auto-reply/commands-registry.js"; -import { formatAgentEnvelope } from "../../../../../src/auto-reply/envelope.js"; -import { dispatchReplyFromConfig } from "../../../../../src/auto-reply/reply/dispatch-from-config.js"; -import { finalizeInboundContext } from "../../../../../src/auto-reply/reply/inbound-context.js"; import { buildMentionRegexes, + chunkMarkdownText, + createReplyDispatcherWithTyping, + danger, + dispatchReplyFromConfig, + enqueueSystemEvent, + finalizeInboundContext, + formatAgentEnvelope, + formatAllowlistMatchMeta, + getChildLogger, + hasControlCommand, + loadConfig, + logVerbose, + mergeAllowlist, matchesMentionPatterns, -} from "../../../../../src/auto-reply/reply/mentions.js"; -import { createReplyDispatcherWithTyping } from "../../../../../src/auto-reply/reply/reply-dispatcher.js"; -import type { ReplyPayload } from "../../../../../src/auto-reply/types.js"; -import { resolveCommandAuthorizedFromAuthorizers } from "../../../../../src/channels/command-gating.js"; -import { formatAllowlistMatchMeta } from "../../../../../src/channels/plugins/allowlist-match.js"; -import { loadConfig } from "../../../../../src/config/config.js"; -import { - recordSessionMetaFromInbound, - resolveStorePath, - updateLastRoute, -} from "../../../../../src/config/sessions.js"; -import { danger, logVerbose, shouldLogVerbose } from "../../../../../src/globals.js"; -import { enqueueSystemEvent } from "../../../../../src/infra/system-events.js"; -import { getChildLogger } from "../../../../../src/logging.js"; -import { readChannelAllowFromStore, + recordSessionMetaFromInbound, + resolveAgentRoute, + resolveCommandAuthorizedFromAuthorizers, + resolveEffectiveMessagesConfig, + resolveHumanDelayConfig, + resolveStorePath, + resolveTextChunkLimit, + shouldHandleTextCommands, + shouldLogVerbose, + summarizeMapping, + updateLastRoute, upsertChannelPairingRequest, -} from "../../../../../src/pairing/pairing-store.js"; -import { resolveAgentRoute } from "../../../../../src/routing/resolve-route.js"; -import type { RuntimeEnv } from "../../../../../src/runtime.js"; + type ReplyPayload, + type RuntimeEnv, +} from "clawdbot/plugin-sdk"; import type { CoreConfig, ReplyToMode } from "../../types.js"; import { setActiveMatrixClient } from "../active-client.js"; import { @@ -51,7 +53,6 @@ import { resolveMatrixAllowListMatches, normalizeAllowListLower, } from "./allowlist.js"; -import { mergeAllowlist, summarizeMapping } from "../../../../../src/channels/allowlists/resolve-utils.js"; import { registerMatrixAutoJoin } from "./auto-join.js"; import { createDirectRoomTracker } from "./direct.js"; import { downloadMatrixMedia } from "./media.js"; diff --git a/extensions/matrix/src/matrix/monitor/media.ts b/extensions/matrix/src/matrix/monitor/media.ts index 8e66755e1..cbb59f298 100644 --- a/extensions/matrix/src/matrix/monitor/media.ts +++ b/extensions/matrix/src/matrix/monitor/media.ts @@ -1,6 +1,6 @@ import type { MatrixClient } from "matrix-js-sdk"; -import { saveMediaBuffer } from "../../../../../src/media/store.js"; +import { saveMediaBuffer } from "clawdbot/plugin-sdk"; async function fetchMatrixMediaBuffer(params: { client: MatrixClient; diff --git a/extensions/matrix/src/matrix/monitor/mentions.ts b/extensions/matrix/src/matrix/monitor/mentions.ts index fee2562d1..6842c269d 100644 --- a/extensions/matrix/src/matrix/monitor/mentions.ts +++ b/extensions/matrix/src/matrix/monitor/mentions.ts @@ -1,6 +1,6 @@ import type { RoomMessageEventContent } from "matrix-js-sdk/lib/@types/events.js"; -import { matchesMentionPatterns } from "../../../../../src/auto-reply/reply/mentions.js"; +import { matchesMentionPatterns } from "clawdbot/plugin-sdk"; export function resolveMentions(params: { content: RoomMessageEventContent; diff --git a/extensions/matrix/src/matrix/monitor/replies.ts b/extensions/matrix/src/matrix/monitor/replies.ts index bb8c205ea..cc558b062 100644 --- a/extensions/matrix/src/matrix/monitor/replies.ts +++ b/extensions/matrix/src/matrix/monitor/replies.ts @@ -1,9 +1,12 @@ import type { MatrixClient } from "matrix-js-sdk"; -import { chunkMarkdownText } from "../../../../../src/auto-reply/chunk.js"; -import type { ReplyPayload } from "../../../../../src/auto-reply/types.js"; -import { danger, logVerbose } from "../../../../../src/globals.js"; -import type { RuntimeEnv } from "../../../../../src/runtime.js"; +import { + chunkMarkdownText, + danger, + logVerbose, + type ReplyPayload, + type RuntimeEnv, +} from "clawdbot/plugin-sdk"; import { sendMessageMatrix } from "../send.js"; export async function deliverMatrixReplies(params: { diff --git a/extensions/matrix/src/matrix/monitor/rooms.ts b/extensions/matrix/src/matrix/monitor/rooms.ts index fe5bbc167..fd9df6fad 100644 --- a/extensions/matrix/src/matrix/monitor/rooms.ts +++ b/extensions/matrix/src/matrix/monitor/rooms.ts @@ -1,8 +1,5 @@ import type { MatrixConfig, MatrixRoomConfig } from "../../types.js"; -import { - buildChannelKeyCandidates, - resolveChannelEntryMatch, -} from "../../../../../src/channels/plugins/channel-config.js"; +import { buildChannelKeyCandidates, resolveChannelEntryMatch } from "clawdbot/plugin-sdk"; export type MatrixRoomConfigResolved = { allowed: boolean; diff --git a/extensions/matrix/src/matrix/poll-types.ts b/extensions/matrix/src/matrix/poll-types.ts index d25c4e686..38a465cfb 100644 --- a/extensions/matrix/src/matrix/poll-types.ts +++ b/extensions/matrix/src/matrix/poll-types.ts @@ -9,7 +9,7 @@ import type { TimelineEvents } from "matrix-js-sdk/lib/@types/event.js"; import type { ExtensibleAnyMessageEventContent } from "matrix-js-sdk/lib/@types/extensible_events.js"; -import type { PollInput } from "../../../../src/polls.js"; +import type { PollInput } from "clawdbot/plugin-sdk"; export const M_POLL_START = "m.poll.start" as const; export const M_POLL_RESPONSE = "m.poll.response" as const; diff --git a/extensions/matrix/src/matrix/send.test.ts b/extensions/matrix/src/matrix/send.test.ts index 71ba3c79f..a0bdd159e 100644 --- a/extensions/matrix/src/matrix/send.test.ts +++ b/extensions/matrix/src/matrix/send.test.ts @@ -18,20 +18,18 @@ vi.mock("matrix-js-sdk", () => ({ }, })); -vi.mock("../../../../src/config/config.js", () => ({ +vi.mock("clawdbot/plugin-sdk", () => ({ loadConfig: () => ({}), -})); - -vi.mock("../../../../src/web/media.js", () => ({ + resolveTextChunkLimit: () => 4000, + chunkMarkdownText: (text: string) => (text ? [text] : []), loadWebMedia: vi.fn().mockResolvedValue({ buffer: Buffer.from("media"), fileName: "photo.png", contentType: "image/png", kind: "image", }), -})); - -vi.mock("../../../../src/media/image-ops.js", () => ({ + mediaKindFromMime: () => "image", + isVoiceCompatibleAudio: () => false, getImageMetadata: vi.fn().mockResolvedValue(null), resizeToJpeg: vi.fn(), })); diff --git a/extensions/matrix/src/matrix/send.ts b/extensions/matrix/src/matrix/send.ts index 7e1e2b2fe..972b78f50 100644 --- a/extensions/matrix/src/matrix/send.ts +++ b/extensions/matrix/src/matrix/send.ts @@ -5,13 +5,17 @@ import type { ReactionEventContent, } from "matrix-js-sdk/lib/@types/events.js"; -import { chunkMarkdownText, resolveTextChunkLimit } from "../../../../src/auto-reply/chunk.js"; -import { loadConfig } from "../../../../src/config/config.js"; -import { isVoiceCompatibleAudio } from "../../../../src/media/audio.js"; -import { mediaKindFromMime } from "../../../../src/media/constants.js"; -import { getImageMetadata, resizeToJpeg } from "../../../../src/media/image-ops.js"; -import type { PollInput } from "../../../../src/polls.js"; -import { loadWebMedia } from "../../../../src/web/media.js"; +import { + chunkMarkdownText, + getImageMetadata, + isVoiceCompatibleAudio, + loadConfig, + loadWebMedia, + mediaKindFromMime, + type PollInput, + resolveTextChunkLimit, + resizeToJpeg, +} from "clawdbot/plugin-sdk"; import { getActiveMatrixClient } from "./active-client.js"; import { createMatrixClient, diff --git a/extensions/matrix/src/onboarding.ts b/extensions/matrix/src/onboarding.ts index 4151f32c7..121e3815a 100644 --- a/extensions/matrix/src/onboarding.ts +++ b/extensions/matrix/src/onboarding.ts @@ -1,11 +1,11 @@ -import { addWildcardAllowFrom } from "../../../src/channels/plugins/onboarding/helpers.js"; -import type { - ChannelOnboardingAdapter, - ChannelOnboardingDmPolicy, -} from "../../../src/channels/plugins/onboarding-types.js"; -import { promptChannelAccessConfig } from "../../../src/channels/plugins/onboarding/channel-access.js"; -import { formatDocsLink } from "../../../src/terminal/links.js"; -import type { WizardPrompter } from "../../../src/wizard/prompts.js"; +import { + addWildcardAllowFrom, + formatDocsLink, + promptChannelAccessConfig, + type ChannelOnboardingAdapter, + type ChannelOnboardingDmPolicy, + type WizardPrompter, +} from "clawdbot/plugin-sdk"; import { listMatrixDirectoryGroupsLive } from "./directory-live.js"; import { resolveMatrixAccount } from "./matrix/accounts.js"; import { ensureMatrixSdkInstalled, isMatrixSdkAvailable } from "./matrix/deps.js"; diff --git a/extensions/matrix/src/outbound.ts b/extensions/matrix/src/outbound.ts index 954685eec..efcc337f2 100644 --- a/extensions/matrix/src/outbound.ts +++ b/extensions/matrix/src/outbound.ts @@ -1,10 +1,11 @@ -import { chunkMarkdownText } from "../../../src/auto-reply/chunk.js"; -import type { ChannelOutboundAdapter } from "../../../src/channels/plugins/types.js"; +import type { ChannelOutboundAdapter } from "clawdbot/plugin-sdk"; + +import { getMatrixRuntime } from "./runtime.js"; import { sendMessageMatrix, sendPollMatrix } from "./matrix/send.js"; export const matrixOutbound: ChannelOutboundAdapter = { deliveryMode: "direct", - chunker: chunkMarkdownText, + chunker: (text, limit) => getMatrixRuntime().channel.text.chunkMarkdownText(text, limit), textChunkLimit: 4000, sendText: async ({ to, text, deps, replyToId, threadId }) => { const send = deps?.sendMatrix ?? sendMessageMatrix; diff --git a/extensions/matrix/src/resolve-targets.ts b/extensions/matrix/src/resolve-targets.ts index 306ae0aa1..2faf68c95 100644 --- a/extensions/matrix/src/resolve-targets.ts +++ b/extensions/matrix/src/resolve-targets.ts @@ -2,8 +2,8 @@ import type { ChannelDirectoryEntry, ChannelResolveKind, ChannelResolveResult, -} from "../../../src/channels/plugins/types.js"; -import type { RuntimeEnv } from "../../../src/runtime.js"; + RuntimeEnv, +} from "clawdbot/plugin-sdk"; import { listMatrixDirectoryGroupsLive, diff --git a/extensions/matrix/src/runtime.ts b/extensions/matrix/src/runtime.ts new file mode 100644 index 000000000..dea53f66a --- /dev/null +++ b/extensions/matrix/src/runtime.ts @@ -0,0 +1,14 @@ +import type { PluginRuntime } from "clawdbot/plugin-sdk"; + +let runtime: PluginRuntime | null = null; + +export function setMatrixRuntime(next: PluginRuntime) { + runtime = next; +} + +export function getMatrixRuntime(): PluginRuntime { + if (!runtime) { + throw new Error("Matrix runtime not initialized"); + } + return runtime; +} diff --git a/extensions/matrix/src/tool-actions.ts b/extensions/matrix/src/tool-actions.ts index 947748a2c..9f1a83bdd 100644 --- a/extensions/matrix/src/tool-actions.ts +++ b/extensions/matrix/src/tool-actions.ts @@ -21,7 +21,7 @@ import { readNumberParam, readReactionParams, readStringParam, -} from "../../../src/agents/tools/common.js"; +} from "clawdbot/plugin-sdk"; const messageActions = new Set(["sendMessage", "editMessage", "deleteMessage", "readMessages"]); const reactionActions = new Set(["react", "reactions"]); diff --git a/extensions/memory-core/index.ts b/extensions/memory-core/index.ts index f6119188c..242dd0c9c 100644 --- a/extensions/memory-core/index.ts +++ b/extensions/memory-core/index.ts @@ -1,7 +1,10 @@ -import type { ClawdbotPluginApi } from "../../src/plugins/types.js"; +import type { ClawdbotPluginApi } from "clawdbot/plugin-sdk"; -import { createMemoryGetTool, createMemorySearchTool } from "../../src/agents/tools/memory-tool.js"; -import { registerMemoryCli } from "../../src/cli/memory-cli.js"; +import { + createMemoryGetTool, + createMemorySearchTool, + registerMemoryCli, +} from "clawdbot/plugin-sdk"; const memoryCorePlugin = { id: "memory-core", diff --git a/extensions/msteams/.DS_Store b/extensions/msteams/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..4b731719334a3ab9f4ab7b6f69dd9dfd7fff6aed GIT binary patch literal 6148 zcmeHKO-jR15T4g&5z$4LF5eaEUU-%W?u%=sP0>YSiY0=(TtE-tQM`bs5WIkQ@S8V7 zOo$e`5h*h;?@Q(U>HxA)*w@I6A=cgRq}rv7F$+XwkWCvV$zT2_m_vKx3lf>`A+fc z+ioqfqA_jgo|e5TM~^jp>gm>WdUEv|yaJsY83B|?T@q8b{$pt}MjR9kz&%ju2C*1$ff1m&RNp@!p7z2C7fJ?G@ zHp44vZymfG_gW9VhO%&6BiN?kBDP}0aw|TDMuFY)1u!T!g0MjBMV2| literal 0 HcmV?d00001 diff --git a/extensions/msteams/index.ts b/extensions/msteams/index.ts index 8fcb92729..1aab1fb78 100644 --- a/extensions/msteams/index.ts +++ b/extensions/msteams/index.ts @@ -1,4 +1,4 @@ -import type { ClawdbotPluginApi } from "../../src/plugins/types.js"; +import type { ClawdbotPluginApi } from "clawdbot/plugin-sdk"; import { msteamsPlugin } from "./src/channel.js"; diff --git a/extensions/msteams/node_modules/@microsoft/agents-hosting b/extensions/msteams/node_modules/@microsoft/agents-hosting new file mode 120000 index 000000000..272287799 --- /dev/null +++ b/extensions/msteams/node_modules/@microsoft/agents-hosting @@ -0,0 +1 @@ +../../../../node_modules/.pnpm/@microsoft+agents-hosting@1.1.1/node_modules/@microsoft/agents-hosting \ No newline at end of file diff --git a/extensions/msteams/node_modules/@microsoft/agents-hosting-express b/extensions/msteams/node_modules/@microsoft/agents-hosting-express new file mode 120000 index 000000000..6662786b0 --- /dev/null +++ b/extensions/msteams/node_modules/@microsoft/agents-hosting-express @@ -0,0 +1 @@ +../../../../node_modules/.pnpm/@microsoft+agents-hosting-express@1.1.1/node_modules/@microsoft/agents-hosting-express \ No newline at end of file diff --git a/extensions/msteams/node_modules/@microsoft/agents-hosting-extensions-teams b/extensions/msteams/node_modules/@microsoft/agents-hosting-extensions-teams new file mode 120000 index 000000000..7c5ea19c5 --- /dev/null +++ b/extensions/msteams/node_modules/@microsoft/agents-hosting-extensions-teams @@ -0,0 +1 @@ +../../../../node_modules/.pnpm/@microsoft+agents-hosting-extensions-teams@1.1.1/node_modules/@microsoft/agents-hosting-extensions-teams \ No newline at end of file diff --git a/extensions/msteams/node_modules/express b/extensions/msteams/node_modules/express new file mode 120000 index 000000000..b86ac69dc --- /dev/null +++ b/extensions/msteams/node_modules/express @@ -0,0 +1 @@ +../../../node_modules/.pnpm/express@5.2.1/node_modules/express \ No newline at end of file diff --git a/extensions/msteams/node_modules/proper-lockfile b/extensions/msteams/node_modules/proper-lockfile new file mode 120000 index 000000000..5dc409f1c --- /dev/null +++ b/extensions/msteams/node_modules/proper-lockfile @@ -0,0 +1 @@ +../../../node_modules/.pnpm/proper-lockfile@4.1.2/node_modules/proper-lockfile \ No newline at end of file diff --git a/extensions/msteams/src/attachments.test.ts b/extensions/msteams/src/attachments.test.ts index 87c24ce04..b99e66851 100644 --- a/extensions/msteams/src/attachments.test.ts +++ b/extensions/msteams/src/attachments.test.ts @@ -6,19 +6,8 @@ const saveMediaBufferMock = vi.fn(async () => ({ contentType: "image/png", })); -const modulePaths = vi.hoisted(() => { - const downloadModuleUrl = new URL("./attachments/download.js", import.meta.url); - return { - mimeModulePath: new URL("../../../../src/media/mime.js", downloadModuleUrl).pathname, - storeModulePath: new URL("../../../../src/media/store.js", downloadModuleUrl).pathname, - }; -}); - -vi.mock(modulePaths.mimeModulePath, () => ({ +vi.mock("clawdbot/plugin-sdk", () => ({ detectMime: (...args: unknown[]) => detectMimeMock(...args), -})); - -vi.mock(modulePaths.storeModulePath, () => ({ saveMediaBuffer: (...args: unknown[]) => saveMediaBufferMock(...args), })); diff --git a/extensions/msteams/src/attachments/download.ts b/extensions/msteams/src/attachments/download.ts index 870b23753..6ba0524a6 100644 --- a/extensions/msteams/src/attachments/download.ts +++ b/extensions/msteams/src/attachments/download.ts @@ -1,5 +1,4 @@ -import { detectMime } from "../../../../src/media/mime.js"; -import { saveMediaBuffer } from "../../../../src/media/store.js"; +import { detectMime, saveMediaBuffer } from "clawdbot/plugin-sdk"; import { extractInlineImageCandidates, inferPlaceholder, diff --git a/extensions/msteams/src/attachments/graph.ts b/extensions/msteams/src/attachments/graph.ts index e81a345eb..4b270d362 100644 --- a/extensions/msteams/src/attachments/graph.ts +++ b/extensions/msteams/src/attachments/graph.ts @@ -1,5 +1,4 @@ -import { detectMime } from "../../../../src/media/mime.js"; -import { saveMediaBuffer } from "../../../../src/media/store.js"; +import { detectMime, saveMediaBuffer } from "clawdbot/plugin-sdk"; import { downloadMSTeamsImageAttachments } from "./download.js"; import { GRAPH_ROOT, isRecord, normalizeContentType, resolveAllowedHosts } from "./shared.js"; import type { diff --git a/extensions/msteams/src/channel.directory.test.ts b/extensions/msteams/src/channel.directory.test.ts index f1bc50238..4f5a96a9a 100644 --- a/extensions/msteams/src/channel.directory.test.ts +++ b/extensions/msteams/src/channel.directory.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import type { ClawdbotConfig } from "../../../src/config/config.js"; +import type { ClawdbotConfig } from "clawdbot/plugin-sdk"; import { msteamsPlugin } from "./channel.js"; diff --git a/extensions/msteams/src/channel.ts b/extensions/msteams/src/channel.ts index 40e22ad79..de3e0a8df 100644 --- a/extensions/msteams/src/channel.ts +++ b/extensions/msteams/src/channel.ts @@ -1,9 +1,10 @@ -import type { ClawdbotConfig } from "../../../src/config/config.js"; -import { MSTeamsConfigSchema } from "../../../src/config/zod-schema.providers-core.js"; -import { buildChannelConfigSchema } from "../../../src/channels/plugins/config-schema.js"; -import { PAIRING_APPROVED_MESSAGE } from "../../../src/channels/plugins/pairing-message.js"; -import type { ChannelMessageActionName, ChannelPlugin } from "../../../src/channels/plugins/types.js"; -import { DEFAULT_ACCOUNT_ID } from "../../../src/routing/session-key.js"; +import type { ChannelMessageActionName, ChannelPlugin, ClawdbotConfig } from "clawdbot/plugin-sdk"; +import { + buildChannelConfigSchema, + DEFAULT_ACCOUNT_ID, + MSTeamsConfigSchema, + PAIRING_APPROVED_MESSAGE, +} from "clawdbot/plugin-sdk"; import { msteamsOnboardingAdapter } from "./onboarding.js"; import { msteamsOutbound } from "./outbound.js"; diff --git a/extensions/msteams/src/directory-live.ts b/extensions/msteams/src/directory-live.ts index 6518959ad..35715acb4 100644 --- a/extensions/msteams/src/directory-live.ts +++ b/extensions/msteams/src/directory-live.ts @@ -1,4 +1,4 @@ -import type { ChannelDirectoryEntry } from "../../../src/channels/plugins/types.js"; +import type { ChannelDirectoryEntry } from "clawdbot/plugin-sdk"; import { GRAPH_ROOT } from "./attachments/shared.js"; import { loadMSTeamsSdkWithAuth } from "./sdk.js"; diff --git a/extensions/msteams/src/messenger.test.ts b/extensions/msteams/src/messenger.test.ts index 80b49a233..143706085 100644 --- a/extensions/msteams/src/messenger.test.ts +++ b/extensions/msteams/src/messenger.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { SILENT_REPLY_TOKEN } from "../../../src/auto-reply/tokens.js"; +import { SILENT_REPLY_TOKEN } from "clawdbot/plugin-sdk"; import type { StoredConversationReference } from "./conversation-store.js"; import { type MSTeamsAdapter, diff --git a/extensions/msteams/src/messenger.ts b/extensions/msteams/src/messenger.ts index 3ffcbfe4a..a2bc6f4cc 100644 --- a/extensions/msteams/src/messenger.ts +++ b/extensions/msteams/src/messenger.ts @@ -1,7 +1,10 @@ -import { chunkMarkdownText } from "../../../src/auto-reply/chunk.js"; -import { isSilentReplyText, SILENT_REPLY_TOKEN } from "../../../src/auto-reply/tokens.js"; -import type { ReplyPayload } from "../../../src/auto-reply/types.js"; -import type { MSTeamsReplyStyle } from "../../../src/config/types.js"; +import { + chunkMarkdownText, + isSilentReplyText, + type MSTeamsReplyStyle, + type ReplyPayload, + SILENT_REPLY_TOKEN, +} from "clawdbot/plugin-sdk"; import type { StoredConversationReference } from "./conversation-store.js"; import { classifyMSTeamsSendError } from "./errors.js"; diff --git a/extensions/msteams/src/monitor-handler.ts b/extensions/msteams/src/monitor-handler.ts index 41952cb82..37e8bf40c 100644 --- a/extensions/msteams/src/monitor-handler.ts +++ b/extensions/msteams/src/monitor-handler.ts @@ -1,6 +1,5 @@ -import type { ClawdbotConfig } from "../../../src/config/types.js"; -import { danger } from "../../../src/globals.js"; -import type { RuntimeEnv } from "../../../src/runtime.js"; +import type { ClawdbotConfig, RuntimeEnv } from "clawdbot/plugin-sdk"; +import { danger } from "clawdbot/plugin-sdk"; import type { MSTeamsConversationStore } from "./conversation-store.js"; import type { MSTeamsAdapter } from "./messenger.js"; import { createMSTeamsMessageHandler } from "./monitor-handler/message-handler.js"; diff --git a/extensions/msteams/src/monitor-handler/message-handler.ts b/extensions/msteams/src/monitor-handler/message-handler.ts index b4c1e6fc7..1fcc52075 100644 --- a/extensions/msteams/src/monitor-handler/message-handler.ts +++ b/extensions/msteams/src/monitor-handler/message-handler.ts @@ -1,29 +1,27 @@ -import { hasControlCommand } from "../../../../src/auto-reply/command-detection.js"; -import { formatAgentEnvelope } from "../../../../src/auto-reply/envelope.js"; -import { - createInboundDebouncer, - resolveInboundDebounceMs, -} from "../../../../src/auto-reply/inbound-debounce.js"; -import { dispatchReplyFromConfig } from "../../../../src/auto-reply/reply/dispatch-from-config.js"; -import { finalizeInboundContext } from "../../../../src/auto-reply/reply/inbound-context.js"; import { buildPendingHistoryContextFromMap, clearHistoryEntries, + createInboundDebouncer, + danger, DEFAULT_GROUP_HISTORY_LIMIT, - recordPendingHistoryEntry, - type HistoryEntry, -} from "../../../../src/auto-reply/reply/history.js"; -import { resolveMentionGating } from "../../../../src/channels/mention-gating.js"; -import { resolveCommandAuthorizedFromAuthorizers } from "../../../../src/channels/command-gating.js"; -import { formatAllowlistMatchMeta } from "../../../../src/channels/plugins/allowlist-match.js"; -import { danger, logVerbose, shouldLogVerbose } from "../../../../src/globals.js"; -import { enqueueSystemEvent } from "../../../../src/infra/system-events.js"; -import { recordSessionMetaFromInbound, resolveStorePath } from "../../../../src/config/sessions.js"; -import { readChannelAllowFromStore, + recordSessionMetaFromInbound, + recordPendingHistoryEntry, + resolveAgentRoute, + resolveCommandAuthorizedFromAuthorizers, + resolveInboundDebounceMs, + resolveMentionGating, + resolveStorePath, + dispatchReplyFromConfig, + finalizeInboundContext, + formatAgentEnvelope, + formatAllowlistMatchMeta, + hasControlCommand, + logVerbose, + shouldLogVerbose, upsertChannelPairingRequest, -} from "../../../../src/pairing/pairing-store.js"; -import { resolveAgentRoute } from "../../../../src/routing/resolve-route.js"; + type HistoryEntry, +} from "clawdbot/plugin-sdk"; import { buildMSTeamsAttachmentPlaceholder, diff --git a/extensions/msteams/src/monitor.ts b/extensions/msteams/src/monitor.ts index 70a47608f..4902ed01c 100644 --- a/extensions/msteams/src/monitor.ts +++ b/extensions/msteams/src/monitor.ts @@ -1,9 +1,12 @@ import type { Request, Response } from "express"; -import { resolveTextChunkLimit } from "../../../src/auto-reply/chunk.js"; -import { mergeAllowlist, summarizeMapping } from "../../../src/channels/allowlists/resolve-utils.js"; -import type { ClawdbotConfig } from "../../../src/config/types.js"; -import { getChildLogger } from "../../../src/logging.js"; -import type { RuntimeEnv } from "../../../src/runtime.js"; +import { + getChildLogger, + mergeAllowlist, + resolveTextChunkLimit, + summarizeMapping, + type ClawdbotConfig, + type RuntimeEnv, +} from "clawdbot/plugin-sdk"; import type { MSTeamsConversationStore } from "./conversation-store.js"; import { createMSTeamsConversationStoreFs } from "./conversation-store-fs.js"; import { formatUnknownError } from "./errors.js"; diff --git a/extensions/msteams/src/onboarding.ts b/extensions/msteams/src/onboarding.ts index 539068ddd..34aaedbf6 100644 --- a/extensions/msteams/src/onboarding.ts +++ b/extensions/msteams/src/onboarding.ts @@ -1,14 +1,16 @@ -import type { ClawdbotConfig } from "../../../src/config/config.js"; -import type { DmPolicy } from "../../../src/config/types.js"; -import { DEFAULT_ACCOUNT_ID } from "../../../src/routing/session-key.js"; -import { formatDocsLink } from "../../../src/terminal/links.js"; -import type { WizardPrompter } from "../../../src/wizard/prompts.js"; import type { ChannelOnboardingAdapter, ChannelOnboardingDmPolicy, -} from "../../../src/channels/plugins/onboarding-types.js"; -import { promptChannelAccessConfig } from "../../../src/channels/plugins/onboarding/channel-access.js"; -import { addWildcardAllowFrom } from "../../../src/channels/plugins/onboarding/helpers.js"; + ClawdbotConfig, + DmPolicy, + WizardPrompter, +} from "clawdbot/plugin-sdk"; +import { + addWildcardAllowFrom, + DEFAULT_ACCOUNT_ID, + formatDocsLink, + promptChannelAccessConfig, +} from "clawdbot/plugin-sdk"; import { resolveMSTeamsCredentials } from "./token.js"; import { diff --git a/extensions/msteams/src/outbound.ts b/extensions/msteams/src/outbound.ts index b9c7ba9fb..77704b8b5 100644 --- a/extensions/msteams/src/outbound.ts +++ b/extensions/msteams/src/outbound.ts @@ -1,5 +1,4 @@ -import { chunkMarkdownText } from "../../../src/auto-reply/chunk.js"; -import type { ChannelOutboundAdapter } from "../../../src/channels/plugins/types.js"; +import { chunkMarkdownText, type ChannelOutboundAdapter } from "clawdbot/plugin-sdk"; import { createMSTeamsPollStoreFs } from "./polls.js"; import { sendMessageMSTeams, sendPollMSTeams } from "./send.js"; diff --git a/extensions/msteams/src/policy.test.ts b/extensions/msteams/src/policy.test.ts index 0401a9a50..d9e8fcfb5 100644 --- a/extensions/msteams/src/policy.test.ts +++ b/extensions/msteams/src/policy.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import type { MSTeamsConfig } from "../../../src/config/types.js"; +import type { MSTeamsConfig } from "clawdbot/plugin-sdk"; import { isMSTeamsGroupAllowed, resolveMSTeamsReplyPolicy, diff --git a/extensions/msteams/src/policy.ts b/extensions/msteams/src/policy.ts index 1762cb537..b68174711 100644 --- a/extensions/msteams/src/policy.ts +++ b/extensions/msteams/src/policy.ts @@ -1,17 +1,17 @@ import type { + AllowlistMatch, GroupPolicy, MSTeamsChannelConfig, MSTeamsConfig, MSTeamsReplyStyle, MSTeamsTeamConfig, -} from "../../../src/config/types.js"; +} from "clawdbot/plugin-sdk"; import { buildChannelKeyCandidates, normalizeChannelSlug, resolveChannelEntryMatchWithFallback, resolveNestedAllowlistDecision, -} from "../../../src/channels/plugins/channel-config.js"; -import type { AllowlistMatch } from "../../../src/channels/plugins/allowlist-match.js"; +} from "clawdbot/plugin-sdk"; export type MSTeamsResolvedRouteConfig = { teamConfig?: MSTeamsTeamConfig; diff --git a/extensions/msteams/src/probe.test.ts b/extensions/msteams/src/probe.test.ts index 8233feaad..9a7bb1808 100644 --- a/extensions/msteams/src/probe.test.ts +++ b/extensions/msteams/src/probe.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it, vi } from "vitest"; -import type { MSTeamsConfig } from "../../../src/config/types.js"; +import type { MSTeamsConfig } from "clawdbot/plugin-sdk"; const hostMockState = vi.hoisted(() => ({ tokenError: null as Error | null, diff --git a/extensions/msteams/src/probe.ts b/extensions/msteams/src/probe.ts index 502f2d114..835be6587 100644 --- a/extensions/msteams/src/probe.ts +++ b/extensions/msteams/src/probe.ts @@ -1,4 +1,4 @@ -import type { MSTeamsConfig } from "../../../src/config/types.js"; +import type { MSTeamsConfig } from "clawdbot/plugin-sdk"; import { formatUnknownError } from "./errors.js"; import { loadMSTeamsSdkWithAuth } from "./sdk.js"; import { resolveMSTeamsCredentials } from "./token.js"; diff --git a/extensions/msteams/src/reply-dispatcher.ts b/extensions/msteams/src/reply-dispatcher.ts index 373e40b93..004909416 100644 --- a/extensions/msteams/src/reply-dispatcher.ts +++ b/extensions/msteams/src/reply-dispatcher.ts @@ -1,8 +1,12 @@ -import { resolveEffectiveMessagesConfig, resolveHumanDelayConfig } from "../../../src/agents/identity.js"; -import { createReplyDispatcherWithTyping } from "../../../src/auto-reply/reply/reply-dispatcher.js"; -import type { ClawdbotConfig, MSTeamsReplyStyle } from "../../../src/config/types.js"; -import { danger } from "../../../src/globals.js"; -import type { RuntimeEnv } from "../../../src/runtime.js"; +import { + createReplyDispatcherWithTyping, + danger, + resolveEffectiveMessagesConfig, + resolveHumanDelayConfig, + type ClawdbotConfig, + type MSTeamsReplyStyle, + type RuntimeEnv, +} from "clawdbot/plugin-sdk"; import type { StoredConversationReference } from "./conversation-store.js"; import { classifyMSTeamsSendError, diff --git a/extensions/msteams/src/send-context.ts b/extensions/msteams/src/send-context.ts index ab4c4e998..f246a4bf6 100644 --- a/extensions/msteams/src/send-context.ts +++ b/extensions/msteams/src/send-context.ts @@ -1,5 +1,5 @@ -import type { ClawdbotConfig } from "../../../src/config/types.js"; -import type { getChildLogger as getChildLoggerFn } from "../../../src/logging.js"; +import type { ClawdbotConfig } from "clawdbot/plugin-sdk"; +import type { getChildLogger as getChildLoggerFn } from "clawdbot/plugin-sdk"; import type { MSTeamsConversationStore, StoredConversationReference, diff --git a/extensions/msteams/src/send.ts b/extensions/msteams/src/send.ts index 52b7da66c..cffba2b6d 100644 --- a/extensions/msteams/src/send.ts +++ b/extensions/msteams/src/send.ts @@ -1,4 +1,4 @@ -import type { ClawdbotConfig } from "../../../src/config/types.js"; +import type { ClawdbotConfig } from "clawdbot/plugin-sdk"; import type { StoredConversationReference } from "./conversation-store.js"; import { createMSTeamsConversationStoreFs } from "./conversation-store-fs.js"; import { diff --git a/extensions/msteams/src/storage.ts b/extensions/msteams/src/storage.ts index 6a9b599fb..2e0bf42e2 100644 --- a/extensions/msteams/src/storage.ts +++ b/extensions/msteams/src/storage.ts @@ -1,6 +1,6 @@ import path from "node:path"; -import { resolveStateDir } from "../../../src/config/paths.js"; +import { resolveStateDir } from "clawdbot/plugin-sdk"; export type MSTeamsStorePathOptions = { env?: NodeJS.ProcessEnv; diff --git a/extensions/msteams/src/token.ts b/extensions/msteams/src/token.ts index 977edaee4..e6406b85f 100644 --- a/extensions/msteams/src/token.ts +++ b/extensions/msteams/src/token.ts @@ -1,4 +1,4 @@ -import type { MSTeamsConfig } from "../../../src/config/types.js"; +import type { MSTeamsConfig } from "clawdbot/plugin-sdk"; export type MSTeamsCredentials = { appId: string; diff --git a/extensions/voice-call/.DS_Store b/extensions/voice-call/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..987bfc883b782ae8dcee91974d4461d7b23ddd4e GIT binary patch literal 6148 zcmeHKJ5Iwu5S@)(7(tPe(pN}LVF`M1ug$NV9J}AMg0BwBseBFkBP^qCOENP{!U4h7H1g){gYd!pO2q8uF<YR0Q^vC&0|GQG^BJKLSF756-}k GGVlQmHdA^4 literal 0 HcmV?d00001 diff --git a/extensions/voice-call/node_modules/@sinclair/typebox b/extensions/voice-call/node_modules/@sinclair/typebox new file mode 120000 index 000000000..e0ac1dea2 --- /dev/null +++ b/extensions/voice-call/node_modules/@sinclair/typebox @@ -0,0 +1 @@ +../../../../node_modules/.pnpm/@sinclair+typebox@0.34.47/node_modules/@sinclair/typebox \ No newline at end of file diff --git a/extensions/voice-call/node_modules/ws b/extensions/voice-call/node_modules/ws new file mode 120000 index 000000000..95a9befe7 --- /dev/null +++ b/extensions/voice-call/node_modules/ws @@ -0,0 +1 @@ +../../../node_modules/.pnpm/ws@8.19.0/node_modules/ws \ No newline at end of file diff --git a/extensions/voice-call/node_modules/zod b/extensions/voice-call/node_modules/zod new file mode 120000 index 000000000..b41963a66 --- /dev/null +++ b/extensions/voice-call/node_modules/zod @@ -0,0 +1 @@ +../../../node_modules/.pnpm/zod@4.3.5/node_modules/zod \ No newline at end of file diff --git a/extensions/zalo/.DS_Store b/extensions/zalo/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a34be6ad2e41acc04245de414d727958a9c0677f GIT binary patch literal 6148 zcmeHK%}T>S5S~qYi0Gk5kNXOJ03j_A@m%n#v?+Q>OtJLlAtymlU(1W&3-}m5fZzPk zHbe_vM9K`zew*2u?BrXrvr9x_yefu710qVHjL89-Z-mELJCc}%2ZOxhk}9gHpcR!J zZ#Vo$26*j`=vG#3PTT7@r)7CPoXqNKVTqsY@~!GTpO*C$KI!?{=f(Te>u9%s@hktu zO)D2psYgq?qggAnSCEICe&1Ojt z6}@!^oB?NG%>eHY5z3euHj1)!pph#8un)5c`f^qRMm7L5!$uJnNYGHAh6cN01PzBh znqOwvC~7zbnHle~nSf}PYt6n6@lqPNa~Gtg$Br;h`!|EE9S|JyVZTOk9fFROV)$|?K8A|G9=QX|3>!sQAbt=K8oY4^{*-|) DKM7Ix literal 0 HcmV?d00001 diff --git a/extensions/zalo/index.ts b/extensions/zalo/index.ts index aa85bead4..38b408f93 100644 --- a/extensions/zalo/index.ts +++ b/extensions/zalo/index.ts @@ -1,4 +1,4 @@ -import type { ClawdbotPluginApi } from "../../src/plugins/types.js"; +import type { ClawdbotPluginApi } from "clawdbot/plugin-sdk"; import { zaloDock, zaloPlugin } from "./src/channel.js"; import { handleZaloWebhookRequest } from "./src/monitor.js"; diff --git a/extensions/zalo/node_modules/undici b/extensions/zalo/node_modules/undici new file mode 120000 index 000000000..80f93c7a1 --- /dev/null +++ b/extensions/zalo/node_modules/undici @@ -0,0 +1 @@ +../../../node_modules/.pnpm/undici@7.18.2/node_modules/undici \ No newline at end of file diff --git a/extensions/zalo/src/actions.ts b/extensions/zalo/src/actions.ts index aeaece1bc..9bf33ee52 100644 --- a/extensions/zalo/src/actions.ts +++ b/extensions/zalo/src/actions.ts @@ -1,4 +1,7 @@ -import type { ChannelMessageActionAdapter, ChannelMessageActionName } from "../../src/channels/plugins/types.js"; +import type { + ChannelMessageActionAdapter, + ChannelMessageActionName, +} from "clawdbot/plugin-sdk"; import type { CoreConfig } from "./types.js"; import { listEnabledZaloAccounts } from "./accounts.js"; diff --git a/extensions/zalo/src/channel.ts b/extensions/zalo/src/channel.ts index 61048a16a..6bdf5fd92 100644 --- a/extensions/zalo/src/channel.ts +++ b/extensions/zalo/src/channel.ts @@ -1,6 +1,5 @@ -import type { ChannelAccountSnapshot } from "../../../src/channels/plugins/types.js"; -import type { ChannelDock, ChannelPlugin } from "../../../src/channels/plugins/types.js"; -import { buildChannelConfigSchema } from "../../../src/channels/plugins/config-schema.js"; +import type { ChannelAccountSnapshot, ChannelDock, ChannelPlugin } from "clawdbot/plugin-sdk"; +import { buildChannelConfigSchema } from "clawdbot/plugin-sdk"; import { listZaloAccountIds, resolveDefaultZaloAccountId, resolveZaloAccount, type ResolvedZaloAccount } from "./accounts.js"; import { zaloMessageActions } from "./actions.js"; diff --git a/extensions/zalo/src/monitor.ts b/extensions/zalo/src/monitor.ts index bd7a0e179..0aeabd1cf 100644 --- a/extensions/zalo/src/monitor.ts +++ b/extensions/zalo/src/monitor.ts @@ -2,12 +2,13 @@ import type { IncomingMessage, ServerResponse } from "node:http"; import type { ResolvedZaloAccount } from "./accounts.js"; import { + finalizeInboundContext, isControlCommandMessage, + recordSessionMetaFromInbound, + resolveCommandAuthorizedFromAuthorizers, + resolveStorePath, shouldComputeCommandAuthorized, -} from "../../../src/auto-reply/command-detection.js"; -import { finalizeInboundContext } from "../../../src/auto-reply/reply/inbound-context.js"; -import { resolveCommandAuthorizedFromAuthorizers } from "../../../src/channels/command-gating.js"; -import { recordSessionMetaFromInbound, resolveStorePath } from "../../../src/config/sessions.js"; +} from "clawdbot/plugin-sdk"; import { ZaloApiError, deleteWebhook, diff --git a/extensions/zalo/src/onboarding.ts b/extensions/zalo/src/onboarding.ts index 1f60a841b..e9cd6359e 100644 --- a/extensions/zalo/src/onboarding.ts +++ b/extensions/zalo/src/onboarding.ts @@ -1,5 +1,8 @@ -import type { ChannelOnboardingAdapter, ChannelOnboardingDmPolicy } from "../../src/channels/plugins/onboarding-types.js"; -import type { WizardPrompter } from "../../src/wizard/prompts.js"; +import type { + ChannelOnboardingAdapter, + ChannelOnboardingDmPolicy, + WizardPrompter, +} from "clawdbot/plugin-sdk"; import { addWildcardAllowFrom, promptAccountId } from "./shared/onboarding.js"; import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "./shared/account-ids.js"; diff --git a/extensions/zalo/src/shared/onboarding.ts b/extensions/zalo/src/shared/onboarding.ts index a998fb778..d9b633f18 100644 --- a/extensions/zalo/src/shared/onboarding.ts +++ b/extensions/zalo/src/shared/onboarding.ts @@ -1,4 +1,4 @@ -import type { WizardPrompter } from "../../../src/wizard/prompts.js"; +import type { WizardPrompter } from "clawdbot/plugin-sdk"; import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "./account-ids.js"; diff --git a/extensions/zalo/src/status-issues.ts b/extensions/zalo/src/status-issues.ts index c5ca219f3..8370c0aa6 100644 --- a/extensions/zalo/src/status-issues.ts +++ b/extensions/zalo/src/status-issues.ts @@ -1,4 +1,4 @@ -import type { ChannelAccountSnapshot, ChannelStatusIssue } from "../../src/channels/plugins/types.js"; +import type { ChannelAccountSnapshot, ChannelStatusIssue } from "clawdbot/plugin-sdk"; type ZaloAccountStatus = { accountId?: unknown; diff --git a/extensions/zalouser/.DS_Store b/extensions/zalouser/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d1eab24e2968dd94bd1d79ca4788b8cde115fafd GIT binary patch literal 6148 zcmeHKy-veG47S@2L1pO3c(2em2vxeUc3=dxsbEM*MO7w-JOB)=47?5tj{tANz~{3G zjRKWe5FlIfeHZ`aobRGIM?^f?6t~G9Pe>LB~_HuhKf$K z8-61LvUmG*5qE7#+xxeqb#XSHEvj;5g&*&VEvqb>7u6gw$<5u%{nhQ`;qLhSTk)&& zRxMIepVo9qi*}W-@>ZH>yQZUu>*pt}squbP(Dk;~<97;VSr=!(8E^*vJOk+2BFRwE zM`yqpa0VI%EifH?~0a+Z*sV3-=#its>KQ-PYwcEn&!hdo$a zYFI03I&oYX_pz1PPAD8#hdsn_;#AQ`XTTX~Gtk$|k@WxR*XRFsl3zIk&cMH7fCt$u zo8XbGw{{**dToH7LPaF5R%}u*iLDs1(uxnDQD6@;0j7qvA}kR95r{PS;0*jI18;Gv BQwsn9 literal 0 HcmV?d00001 diff --git a/extensions/zalouser/index.ts b/extensions/zalouser/index.ts index 5f47692ac..2271292d8 100644 --- a/extensions/zalouser/index.ts +++ b/extensions/zalouser/index.ts @@ -1,4 +1,4 @@ -import type { ClawdbotPluginApi } from "../../src/plugins/types.js"; +import type { ClawdbotPluginApi } from "clawdbot/plugin-sdk"; import { zalouserPlugin } from "./src/channel.js"; import { ZalouserToolSchema, executeZalouserTool } from "./src/tool.js"; diff --git a/extensions/zalouser/node_modules/@sinclair/typebox b/extensions/zalouser/node_modules/@sinclair/typebox new file mode 120000 index 000000000..e0ac1dea2 --- /dev/null +++ b/extensions/zalouser/node_modules/@sinclair/typebox @@ -0,0 +1 @@ +../../../../node_modules/.pnpm/@sinclair+typebox@0.34.47/node_modules/@sinclair/typebox \ No newline at end of file diff --git a/extensions/zalouser/src/channel.ts b/extensions/zalouser/src/channel.ts index 557c92447..6fd4f690e 100644 --- a/extensions/zalouser/src/channel.ts +++ b/extensions/zalouser/src/channel.ts @@ -1,10 +1,6 @@ -import type { ChannelPlugin } from "../../../src/channels/plugins/types.plugin.js"; -import type { - ChannelAccountSnapshot, - ChannelDirectoryEntry, -} from "../../../src/channels/plugins/types.core.js"; +import type { ChannelAccountSnapshot, ChannelDirectoryEntry, ChannelPlugin } from "clawdbot/plugin-sdk"; -import { formatPairingApproveHint } from "../../../src/channels/plugins/helpers.js"; +import { formatPairingApproveHint } from "clawdbot/plugin-sdk"; import { listZalouserAccountIds, resolveDefaultZalouserAccountId, diff --git a/extensions/zalouser/src/monitor.ts b/extensions/zalouser/src/monitor.ts index 5ec687c36..9d18070a0 100644 --- a/extensions/zalouser/src/monitor.ts +++ b/extensions/zalouser/src/monitor.ts @@ -1,14 +1,16 @@ import type { ChildProcess } from "node:child_process"; -import type { RuntimeEnv } from "../../../src/runtime.js"; +import type { RuntimeEnv } from "clawdbot/plugin-sdk"; import { + finalizeInboundContext, isControlCommandMessage, + mergeAllowlist, + recordSessionMetaFromInbound, + resolveCommandAuthorizedFromAuthorizers, + resolveStorePath, shouldComputeCommandAuthorized, -} from "../../../src/auto-reply/command-detection.js"; -import { mergeAllowlist, summarizeMapping } from "../../../src/channels/allowlists/resolve-utils.js"; -import { finalizeInboundContext } from "../../../src/auto-reply/reply/inbound-context.js"; -import { resolveCommandAuthorizedFromAuthorizers } from "../../../src/channels/command-gating.js"; -import { recordSessionMetaFromInbound, resolveStorePath } from "../../../src/config/sessions.js"; + summarizeMapping, +} from "clawdbot/plugin-sdk"; import { loadCoreChannelDeps, type CoreChannelDeps } from "./core-bridge.js"; import { sendMessageZalouser } from "./send.js"; import type { diff --git a/extensions/zalouser/src/onboarding.ts b/extensions/zalouser/src/onboarding.ts index 51359b5a4..e220c2765 100644 --- a/extensions/zalouser/src/onboarding.ts +++ b/extensions/zalouser/src/onboarding.ts @@ -1,6 +1,9 @@ -import type { ChannelOnboardingAdapter, ChannelOnboardingDmPolicy } from "../../../src/channels/plugins/onboarding-types.js"; -import type { WizardPrompter } from "../../../src/wizard/prompts.js"; -import { promptChannelAccessConfig } from "../../../src/channels/plugins/onboarding/channel-access.js"; +import type { + ChannelOnboardingAdapter, + ChannelOnboardingDmPolicy, + WizardPrompter, +} from "clawdbot/plugin-sdk"; +import { promptChannelAccessConfig } from "clawdbot/plugin-sdk"; import { listZalouserAccountIds, diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..10bb3ef5fc7ae1cbfd107b2319c13a2e9f181127 GIT binary patch literal 14340 zcmeI2Ux-vy9LIlmcju3*u1k?hY7AjWWVnVzSkNYGPZE+s_2%x*xH~wrGtD|K73xZ) zAOxXB3L*MXy~XwtXoZ74Sdl4(V!F@@--&i<5z=_Y@L?s%>$gunM_XyMTI=(^N0vE^2aE@d2aE@d z2aE^q&;$JJ#gU)wq~>ZoU_4+v;Cq0_hXPJcd);*0N$sHn7oNg%K2PE81D~-Du)iy~ zX|J1(JE>h1W$dCzouZbz#IT&=_`bk$q`huB?xap}vYg^%xt1+=g<{#(QLbRi$?A1d zb2T0?9*BCNA74e*-u2;?8wP9Dx-GXRILTmrK0=$RLH(5>k()ocS?7xNd49>N$?ZS! zx?Po*EBoe}3meZx6w3bGDHNw1Rj7u2g&~_`NHNgfC!-3<@#`1Icfaab3DqN6l2wX_ zt}ssqyA}O32&PfZvTR!CN{*gS|6F{=yIa4!WQbR2`|H_$-nQSMEmQ=<7>#I(jo0He zl4bI|?~_Pfk|<55x$JOZzm&jK4#f$bc-Qrdn=4sfUNpAi!@w`TBG>_nS19||I1JGJ zfqi8o!P(=Mp>u!Q1q>wB>EN=z< zQ`IABl2wX_-eJG6wF=tb8837nwbuO}RY;ygH~n@E)gyV5Rf?yr+v91Vl?I(XPTf+g z7P>q_A$cbDEB`1}&_|M0iib8a&n))D3(a(jqoYW@(@wsB^lfFtV~CR+>(6ITQA*O*90e zeyXU*vNl}+lggJoOZUBb@e^-c;=6L|kSs|W#o_e33^*$GlX{DyXm9%m6e3qLbgjPR zjg3kXv{Jl6+3&F9IFAS}fuMx@z}$(diX!{g3A=ql8p-lZQM6A)7Z9cC6j%NXOd@W$ zt_GeS+`qzYL~Cc_G?MG=BPYEvJ5rZyt2CYBqQlJ94z4DZm6xo(hl3o+&^O}y#w{l; zM{|`uFFw$hF&5&@m9j~lyepOgjhid&o_Xb9?PG7gA{0Su#4D72TF>{J!QJv0R|(sH zi5IvcSK5F7*`1T_yhAAh`|%2G-;U3A%pFTKpzb}}&2RSH9BKFTshJyRo%{B41DnxY zWiNjil_KuOXc+N^H+i_$sje*3g5_}<$uPOgZ}Ui9vh~w+ii--&l?7LsUI$ZyikfNq z$8f&nIX7qH6UV&qO4K1)k~E6L>R}FZ7!TY{53Gihz`S|z@-ture>^wRG1u|!dvO}cxbX4~?>Q8y zOVXw36j!drT}B>EW?;M%#5)t(5AzNk zgXM@uGUT53_mg6DK{Tc56xaL~OkzA>F5d0K>{~@q_O}Pa`I2YeW4=#R9nv!g_V~<7 zqc}RpnWF<7+|Tshmi5OznJ4YfJ>ri?epzWdE??Q@c@N)z5iL?eyF_eX`zxF;?LX8! z>h&E}hh#|7#Bk*7-KtT$HNvx!jumB)gcOqH^Ybrw^OA@vh>T>F;>omN4DG>tjf0^$ zrFP!g^YbLb(@T$e{t)?r^|*Xx*LfL~!_$dpj3tb?{h=qq-1=o$4=E(Wzr&dscg`A7 z1teV``B52CDW3aUFoszN{;DEKYQc8C@&);UZLze@fq2#SAEp# z`V15ijb!nEPX}Gvx?a+y=@g?`|JON4$gKYdI1bJFA0wB$hoJk(dX5sYepkJi%=({K zBN*?oMJ-9tB3;5O*mQ8!pR3d+eL6;3IAjN91s8S&+(q(@4N$fz5E&JxRc@& ij=TOtKxePs-ycwO0ki)1cN>&n%=+J1)7?Ys|Nj8m7+J>v literal 0 HcmV?d00001 diff --git a/src/agents/.DS_Store b/src/agents/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ac59e642f70627e5c032292c623f02fb3c62601d GIT binary patch literal 8196 zcmeHMzl#(x6nbG=$Pg)7}3qbJTd6hf$14+|GF<)pX5CNCA5ypHk{lLRabfh_UYMJnkI6&HXS_WEXN=j4osiFs=O@$6I zgfd6F$Lf%QmYI^uoP;tbp+^=vLJ@Lw*m+W&M4+TA9RrSmQ3g16U!*4W={9Xz@q0ue z^`dLb>+K{?mEq@&$=Y$!XtbiF1+Dt!!S2Ib+wafqXVIC`BHc6)soi~u+7#i&!N=W0 zpKjs_scR!&*#(ZVdM4(t8!z@Sm+0nb_tUj-s*l()+>S8HkYZ|~?BLhJo>a52@Y65Ge-L<^ zK-LarXR< zS_f7iCQD^H77n#vxsMx|$p}wjChtGfIEL*ej-5BP2k&wmhEC2%nU0NPfMIAJt17`$ zL@|Hnhuvyo2!8)O{z+jl>`f-dYgpqiyyo#;noR}{D7Th4{=ZOu|390~JFgrAjseMl zm}{&zR`IH1>k(RNsPT}mAai29Oi5{if>pR)hU1XKKMe8i>9#=2Oi8pL{q>80lHUl{ Sx#!ORR8EdN|0NBxSo{G8*Szom literal 0 HcmV?d00001 diff --git a/src/channels/.DS_Store b/src/channels/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5a17d2b5e4211cfb136ab66455e02a08fc74c46c GIT binary patch literal 6148 zcmeHKy-veG4ED7V1hI5Nj5oo;(l|NL~gR2jfqA?ltUQ@2UxZU`&oN3PzyU>4|Qsl=nzIlwGYooAp0W-(D6{U-Rl_UAOP;)FaRJOpF0zz!>;%44`MT`#qI6kM08t-MkJ!46t#-~K&z1` z`~aQC5AeO2ac1oSX zy;@jU34^8yxH#~&C_z{(mg->%-npx(i@o)O>*=pXDt}X?=BhihL!Mv`DzH8cd$LiB z&%QaIX5-Fn@_6Iy$jmJfD+phizh@Wcb;`VYsf;I7p&*;v`CXQs%kSi=t$k`tm*Ypa zF`ml9?I}-H@N9wUHgG3h#of7VOPA~6_~pww$%yN+{n$Fjmrj{)51w=gZ7X`s^I6uL zCw@DTZsqd4-*59wiRW^B-!jHejWNG&yo0*ojtId@Qv}&AXgEj;!Ey~3Qlt?Af?e)cE`i(IGd~ouSuN59Qlzo> z4@eQU675VCYyu&WGEEBcPssOXW|NuSy{xei#W%;iZ*S(k+3$V3d&`?6A~n644EC0B{Jyy5SggfQ|_)h87cpIuvV~>Ot91WlIcY z!Z9DPJ214E7&PIeOgJffW@RfBrO%GIK)aI)4T=>7M1i~lT)W?(I(4W`y=?tH@!Fq_ z;##fIjT;!PJbHS3^m+5!qJ+tI+YYo;)1n z=jJy4m>JS)RjstZ$4m|(E5XS*rIVQB27{mygYy@Z-#E1faRDm;cf+t!4 literal 0 HcmV?d00001 diff --git a/src/cron/.DS_Store b/src/cron/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0aa3fb82aa229f3a73a87cf61957c9807070cd29 GIT binary patch literal 6148 zcmeHKK~BR!4D^;t1R-Wq?A-8a1IaP0v|v;fN$^!gm?rW zV7#{4hEP>pP=##CI~%W^_0CFhOhm4ClXi(ZL=-_8TYDIO5MF0(NJ}le=)yY&R8mGM z9nqlSZH8@RfbZ^rF6o*I%5iJU`y1mXuc*w&-TtVU&LsJ>(@p-Zy;vU=v{@5tht$7-(S$Nc$0a&34mvs>>~&*ur7 znHU4cfHAPO44`JSMEim^8Ux0FF|c5OzYiYD7%NtS;nRU3v;e?1%t0{cUV>x1VysvR zVg=$P6eyuiTMQ@RuzU536)QmrC#TJa)194mC@$=d_xs>ZE*7-W7%&Fv4D85bhwJ~z z`u@KjWKYI`G4QV#aP6d@^l&7tt&PKRt@Y3gC=2^lf{PGLLMetXm*PWc5ZFCWfU#mF R2n)o11Og2<7z2OGz!#R=UAzDQ literal 0 HcmV?d00001 diff --git a/src/gateway/.DS_Store b/src/gateway/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c588dd5cef0d170624e115ae98fc0f9232270661 GIT binary patch literal 6148 zcmeHKy-veG47N*!ia^kjjl2Lu*?=WfVP@zHp#F#sjS^^Kj)cU<$jej=Y`g|DhzCF{ zd_G@8LR#pA5V9rvOYZDD-*;796A`yB`z@j-5jCKKwKbSIBJ-jZsriu&AiFgZ>QO?Y z(OIig@wS1#$bj5kgHpP{y-lF`{q>SK)r4OT=lR4*6m>^QSLW{CrZ?xek4N+U`b+tx z!&WEXlQS$ut2CwoGP@Ehzo~qlt`EM>7xUSAy`SY%S|d(Ab6Mn5%7dOHkIiBpv`aDa zna~hy^=Vwni=W?r@-ODOzjLxTRo=ecqnP)yF{N|V9^@P*#(*(k49pln%@%2_E1ES1 zi~(aHXF$FW0aP&bm?^qX2aIb0fOQNz!L#%d5)*g~J!XoSfv|=GHI#je!5WV7!25+B zGer$2_RR~_ccfpaGg70nt0#z2{Y6@6_={XbsZ|CfX8%@{BS{uKjUk2+Bs zNAk6`ayY5A0rV6qB7T`-9)br~is37zcpK^jH3YAnFrQ4rR=CFsu=tXH6ti4^O(d#+XhfX zbcJddKIOYZ%8UCd%VkDqThuToF4R?~Jh{S>!USN6emnHU4cfHAOX44`MTUv+)-fjU4nDGVxbrWF#~au3Y1i*R}3fV@OzCb z6oa6olZ!iJ9o^aK4aLRX;rB6|DpkrW5%s%)3!|(6^U4mK0fHAOf47gr7 zDu;M1?XAfJaM { + try { + let cursor = path.dirname(fileURLToPath(import.meta.url)); + for (let i = 0; i < 6; i += 1) { + const distCandidate = path.join(cursor, "dist", "plugin-sdk", "index.js"); + if (fs.existsSync(distCandidate)) return distCandidate; + const srcCandidate = path.join(cursor, "src", "plugin-sdk", "index.ts"); + if (fs.existsSync(srcCandidate)) return srcCandidate; + const parent = path.dirname(cursor); + if (parent === cursor) break; + cursor = parent; + } + } catch { + // ignore + } + return null; +}; + function buildCacheKey(params: { workspaceDir?: string; plugins: NormalizedPluginsConfig; @@ -289,8 +310,10 @@ export function loadClawdbotPlugins(options: PluginLoadOptions = {}): PluginRegi }); pushDiagnostics(registry.diagnostics, discovery.diagnostics); + const pluginSdkAlias = resolvePluginSdkAlias(); const jiti = createJiti(import.meta.url, { interopDefault: true, + ...(pluginSdkAlias ? { alias: { "clawdbot/plugin-sdk": pluginSdkAlias } } : {}), }); const seenIds = new Map(); diff --git a/src/plugins/runtime/index.ts b/src/plugins/runtime/index.ts index 8fffa415a..0ded31ea6 100644 --- a/src/plugins/runtime/index.ts +++ b/src/plugins/runtime/index.ts @@ -6,6 +6,7 @@ import { createInboundDebouncer, resolveInboundDebounceMs } from "../../auto-rep import { buildMentionRegexes, matchesMentionPatterns } from "../../auto-reply/reply/mentions.js"; import { dispatchReplyWithBufferedBlockDispatcher } from "../../auto-reply/reply/provider-dispatcher.js"; import { createReplyDispatcherWithTyping } from "../../auto-reply/reply/reply-dispatcher.js"; +import { resolveEffectiveMessagesConfig, resolveHumanDelayConfig } from "../../agents/identity.js"; import { resolveCommandAuthorizedFromAuthorizers } from "../../channels/command-gating.js"; import { resolveChannelGroupPolicy, resolveChannelGroupRequireMention } from "../../config/group-policy.js"; import { resolveStateDir } from "../../config/paths.js"; @@ -46,6 +47,8 @@ export function createPluginRuntime(): PluginRuntime { reply: { dispatchReplyWithBufferedBlockDispatcher, createReplyDispatcherWithTyping, + resolveEffectiveMessagesConfig, + resolveHumanDelayConfig, }, routing: { resolveAgentRoute, diff --git a/src/plugins/runtime/types.ts b/src/plugins/runtime/types.ts index 39ef343ac..9b3ac02e2 100644 --- a/src/plugins/runtime/types.ts +++ b/src/plugins/runtime/types.ts @@ -25,6 +25,15 @@ export type PluginRuntime = { }; }) => Promise; createReplyDispatcherWithTyping: (...args: unknown[]) => unknown; + resolveEffectiveMessagesConfig: ( + cfg: ClawdbotConfig, + agentId: string, + opts?: { hasAllowFrom?: boolean; fallbackMessagePrefix?: string }, + ) => { messagePrefix: string; responsePrefix?: string }; + resolveHumanDelayConfig: ( + cfg: ClawdbotConfig, + agentId: string, + ) => { mode?: string; minMs?: number; maxMs?: number } | undefined; }; routing: { resolveAgentRoute: (params: { diff --git a/src/tui/.DS_Store b/src/tui/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bd3ae4b5eebae6b2f3a4893591d108aff728ad55 GIT binary patch literal 6148 zcmeHKOHRW;47E#<0^M}Ua(1kHgHVMN^a52sqKk$JqO8e^9rxh|mEcl5kFAg>jl>F} z%9iXm@z^tymyc(Ni03bx8PSx8GN|C_3g(1Jzi3ZJ=8;ZLV?=tSE%ZRoy=Zs*M+W5C zUDKK(l~lnt&u{-QTdZSQ>7sAHhT_Ut6svt)p+EcBAK#wdk9Whdn_tIPyY~D`3`v)G zuXcF9O4@c;H~H-Lw%7D}Xx7xqFXPWjPDga-m+!;H8E^)ifwN%%HCrT`D7tk9oB?N` zVL<*50V?%mfv~0mHI?m%!I}<#u(;f?R@8Lj zG&9Drnb}S#Y&$g$DV#W0bn6T_16>9#^l~co|9<%V-%au>XTTXaD+YL6EQ&d9$!crw v=A_mJ=n^U-akXNTf<`LEh?P=&15E;dkOnX}tQFyb_(mYn;KmvFQwF{PlnqkZ literal 0 HcmV?d00001 diff --git a/src/web/.DS_Store b/src/web/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..597a2f3c4e453732b04dd46a06bb208eb70afa7b GIT binary patch literal 6148 zcmeHKu};H441E_WQOeQ@F`*MXLszCyg)it2Kqx9m4Jn8WY?;{j2L1;4fr^z+;rV~Vk_oMVAG?poev z_>Bz6-3@Sx3b!b+c7OBPXmVB-i;%QCeCqNm$}G$0WzO~fa_8m#`r-Mg+jshH-^In+ z`HAP2*u*8SkTcJUIBjHz$3fd;J-5Br<$k5PecGoeKeFofYUG1A$;ZSPFb0f)zsdk> zwn%?l(MDsy7%&D_49NGvQw7tAwPN^ma0o2`u}5SSxac;xv?~p)R%< zPQz*U(JzfyD{44gY(88(*~JdUh10pe5AJZOqK(FYG0hNU4*aZCr~m)} literal 0 HcmV?d00001