mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-21 10:01:37 -06:00
4a2a600809
* feat(channels): add channel-owned setup contracts * test(channels): align legacy setup fixtures * chore(channels): regenerate config and SDK baselines after rebase * fix(update): run fresh doctor after current-process core changes * fix(channels): align add pre-scan with execution precedence * style(cli): format channels-cli test additions * fix(channels): restore option-before-positional channel resolution via metadata arity scan * fix(channels): keep help flags out of metadata arity escalation * test(update): mock fresh post-update doctor in current-process suites * style: format review fixes and correct entrypoint mock type * fix(channels): register only modern contract options for dual-publishing plugins * test(update): align downgrade suites with fresh-doctor child invocation * docs(channels): record empty-contract and input-forwarding invariants * fix(line): keep the shipped --token switch as a channel access token alias * fix(signal): stop treating exact cross-family loopback endpoints as bind-aligned * chore(config): regenerate docs config baselines after second rebase * style: format rebased channels add tests * fix(channels): enforce field-key and flag-name agreement in setup contracts * fix(signal): detect container endpoints for bare --http-url setup * fix(signal): ignore unconfigured accounts in transport collision checks * fix(channels): validate negated setup flags in contract and normalizer * fix(signal): preserve existing transport kind when setup detection is unreachable * style(signal): use direct boolean check in collision guard * style(signal): type test config literals * docs(update): record two-read design of fresh-doctor validation gate * fix(channels): satisfy post-rebase architecture gates * docs: refresh channel setup map --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
// Matrix plugin module implements channel.setup behavior.
|
|
import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
|
|
import type { ChannelPlugin } from "openclaw/plugin-sdk/channel-core";
|
|
import { matrixConfigAdapter } from "./config-adapter.js";
|
|
import { MatrixChannelConfigSchema } from "./config-schema.js";
|
|
import { resolveMatrixAccount, type ResolvedMatrixAccount } from "./matrix/accounts.js";
|
|
import {
|
|
createMatrixSetupWizardProxy,
|
|
matrixSetupAdapter,
|
|
matrixSetupContract,
|
|
} from "./setup-core.js";
|
|
|
|
const matrixSetupWizard = createMatrixSetupWizardProxy(async () => ({
|
|
matrixSetupWizard: (await import("./setup-surface.js")).matrixSetupWizard,
|
|
}));
|
|
|
|
export const matrixSetupPlugin: ChannelPlugin<ResolvedMatrixAccount> = {
|
|
id: "matrix",
|
|
meta: {
|
|
id: "matrix",
|
|
label: "Matrix",
|
|
selectionLabel: "Matrix (plugin)",
|
|
docsPath: "/channels/matrix",
|
|
docsLabel: "matrix",
|
|
blurb: "open protocol; configure a homeserver + access token.",
|
|
order: 70,
|
|
quickstartAllowFrom: true,
|
|
},
|
|
setupWizard: matrixSetupWizard,
|
|
setup: matrixSetupAdapter,
|
|
setupContract: matrixSetupContract,
|
|
capabilities: {
|
|
chatTypes: ["direct", "group", "thread"],
|
|
polls: true,
|
|
reactions: true,
|
|
threads: true,
|
|
media: true,
|
|
},
|
|
reload: { configPrefixes: ["channels.matrix"] },
|
|
configSchema: MatrixChannelConfigSchema,
|
|
config: {
|
|
...matrixConfigAdapter,
|
|
isConfigured: (account) => account.configured,
|
|
describeAccount: (account) =>
|
|
describeAccountSnapshot({
|
|
account,
|
|
configured: account.configured,
|
|
extra: {
|
|
baseUrl: account.homeserver,
|
|
},
|
|
}),
|
|
hasConfiguredState: ({ cfg }) => resolveMatrixAccount({ cfg }).configured,
|
|
},
|
|
};
|