Files
openclaw/extensions/mattermost/src/runtime-api.ts
Peter Steinberger 1e9d918037 feat(sdk): always persist media facts and ship facts-first replacements for legacy Media* surfaces (#113355)
* feat(sdk): always persist media facts and ship facts-first replacements for legacy Media* surfaces

PR 1 of the media legacy retirement program (audit-frozen, 4 PRs).

- Every media-bearing user turn now persists normalized __openclaw.media
  facts unconditionally while continuing to emit the legacy top-level
  Media* projection byte-identically (dual-write bridge; the conditional
  shouldPersistStructuredMediaEntries gate now always includes media).
- New replacement APIs, shipped before any removal: typed hook media
  facts (media[], originalMedia[], mediaStagingPending) on message
  events; {{AttachmentPath}}/{{AttachmentUrl}}/{{AttachmentContentType}}/
  {{AttachmentDir}}/{{AttachmentIndex}} template variables; focused
  openclaw/plugin-sdk/media-local-roots subpath split out of the
  deprecated agent-media-payload facade.
- Every legacy surface carries @deprecated naming its replacement, under
  one named compatibility record media-legacy-projection with the
  operator-approved removeAfter 2026-10-01 (two release trains; deletion
  additionally gates on a clean published-plugin artifact sweep).
- Generic transcript append invariant documented; SDK migration, hooks,
  and configuration docs updated to the facts-first path.

Writer golden matrix proves legacy bytes and model prompt bytes are
unchanged while nested facts become unconditional. 2,189 broad media
tests green; SDK api-baseline regenerated on fresh-env Testbox.

* feat(sdk): register media-local-roots subpath exports and deprecation metadata

Completes PR 1: package export map for openclaw/plugin-sdk/media-local-roots
plus the deprecated-subpath inventory and doc metadata entries for the
media-legacy-projection record.

* chore(sdk): track media-local-roots entrypoint and deprecated-export budgets

* fix(sdk): keep deprecated MSTeams buildMediaPayload re-export through the compat window

Deleting shipped runtime-api re-exports belongs to retirement PR 4 after
the media-legacy-projection window; PR 1 only deprecates. Also formats
the migration-guide schedule table.

* docs: regenerate docs map for media migration additions
2026-07-24 10:42:17 -07:00

66 lines
1.8 KiB
TypeScript

// Legacy map-helper exports in this facade stay for older plugin consumers.
// New message-turn code should use createChannelHistoryWindow.
export {
applyAccountNameToChannelSection,
applySetupAccountConfigPatch,
type BaseProbeResult,
type BlockStreamingCoalesceConfig,
buildChannelConfigSchema,
buildComputedAccountStatusSnapshot,
buildModelsProviderData,
buildPendingHistoryContextFromMap,
type ChannelAccountSnapshot,
type ChannelDirectoryEntry,
type ChannelGroupContext,
type ChannelMessageActionName,
type ChannelPlugin,
type ChatType,
chunkTextForOutbound,
clearHistoryEntriesIfEnabled,
createChannelHistoryWindow,
createAccountStatusSink,
createChannelPairingController,
createChannelMessageReplyPipeline,
createDedupeCache,
DEFAULT_ACCOUNT_ID,
DEFAULT_GROUP_HISTORY_LIMIT,
type DmPolicy,
formatInboundFromLabel,
getAgentScopedMediaLocalRoots,
GROUP_POLICY_BLOCKED_LABEL,
type GroupPolicy,
type HistoryEntry,
isDangerousNameMatchingEnabled,
isRequestBodyLimitError,
isTrustedProxyAddress,
listSkillCommandsForAgents,
loadOutboundMediaFromUrl,
logInboundDrop,
logTypingFailure,
migrateBaseNameToDefaultAccount,
type ModelsProviderData,
normalizeAccountId,
normalizeProviderId,
type OpenClawConfig,
type OpenClawPluginApi,
parseStrictPositiveInteger,
type PluginRuntime,
rawDataToString,
readRequestBodyWithLimit,
recordPendingHistoryEntryIfEnabled,
registerPluginHttpRoute,
type ReplyPayload,
resolveAllowlistMatchSimple,
resolveAllowlistProviderRuntimeGroupPolicy,
resolveChannelMediaMaxBytes,
resolveClientIp,
resolveControlCommandGate,
resolveDefaultGroupPolicy,
resolveStoredModelOverride,
resolveStorePath,
resolveThreadSessionKeys,
type RuntimeEnv,
setMattermostRuntime,
warnMissingProviderGroupPolicyFallbackOnce,
} from "../runtime-api.js";