@meetreeve/module-channels
v1.1.0
Published
Reeve.Channels module extracted from the tenant template (DEV-8166 pilot): the ChannelsConsole (send) surface, a framework-agnostic typed channels client for the host-key send route, and (DEV-9141, T2a) the CONFIG surface — connect Slack, list workspaces,
Readme
@meetreeve/module-channels
The Reeve.Channels tenant module, extracted from reeve-tenant-frontend as the
DEV-8166 P1 pilot. Ships in lockstep with the Python reeve-module-channels
package (reeve-services packages/reeve_module_channels): both always carry
the same MAJOR.MINOR.PATCH — bump them together (manual discipline; the
DEV-8176 automation was folded into the FE publish workflow).
Entries
@meetreeve/module-channels—ChannelsConsole(client component; the build stamps"use client"). Takes the host app's"use server"send action as thesendActionprop: Next.js server actions cannot live inside a published package, so the template keeps a thinactions.tswrapper (module gating + form validation) and injects it.@meetreeve/module-channels/client— server-safe, framework-agnosticChannelsClient(sendon the host-key branch ofPOST /api/channels/v1/send). Constructed with{ apiBase, hostApp, hostKey }; import it only from server-side code — the host key must never reach the browser.
Template wiring
// app/(app)/modules/channels/actions.ts ("use server")
import { ChannelsClient } from "@meetreeve/module-channels/client";
const client = new ChannelsClient({
apiBase: process.env.REEVE_API_BASE!,
hostApp: process.env.REEVE_HOST_APP,
hostKey: process.env.REEVE_HOST_KEY,
});
// app/(app)/modules/channels/page.tsx
import { ChannelsConsole } from "@meetreeve/module-channels";
<ChannelsConsole sendAction={sendChannel} />Peer deps: react, react-dom, lucide-react, and @meetreeve/ui (the
/console primitives hoisted by the same ticket). Local build/test resolves
@meetreeve/ui via the file:../ui devDependency, so this package builds in
CI before @meetreeve/[email protected] is on npm.
