crm
Object-neutral CRM infrastructure for KickSide. Business modules declare typed object and relation tables; CRM supplies transactional schema editing, native search, imports, events, Blocks, agent tools, APIs, and maintained web components.
Run
wippy run kickside/crmKickSide CRM
Workspace CRM for Kickside applications.
This optional package adds a flexible CRM substrate: CRM records, object schemas, attributes, pipelines, saved views, activity timelines, associations, merge/reconciliation data, a table/board/timeline UI, automation ports, and agent-facing CRM tools.
What It Provides
- Registry entries under
kickside.crm. - A CRM component kind backed by one aggregate thread per workspace CRM.
- Typed
crm.*events and a leased projection into SQL read-model tables. - Read/write facades used by the UI, automation sink, and agent tools.
- Authenticated CRM API endpoints.
kickside.data:writablesink support for provider and automation imports.- Event source ports for automations reacting to CRM changes.
- Canonical Blocks for identity resolution and CRM merge review.
- Portable
kickside.flow/v1CRM review starters with no activation state. - Bundled web components:
kickside-crmkickside-crm-record-pickerkickside-crm-settings
Install Parameters
Required host bindings:
kickside.crm:api_router- authenticated HTTP router for CRM endpoints. Defaults toapp:api.kickside.crm:target_db- SQL database for CRM projection tables. Defaults toapp:db.kickside.crm:ui_server- HTTP server for the bundled UI. Defaults toapp:gateway.kickside.crm.security:user_security_scope- application security group appended to the CRM endpoint access policy.
Configuration:
kickside.crm:thread_event_retention_days- retention window for CRM aggregate thread events. Defaults to365.
Record-level access remains the component ACL; this endpoint policy only gates who can reach the CRM API surface.
UI
The package embeds kickside.crm:ui_fs. After installation, the main bundle
is available at /kickside-crm/index.js.
The primary CRM surface supports object navigation, table views, board views, timelines, record drawers, inline edits, and basic schema/settings management. The record picker can be embedded by other modules that need CRM record selection.
Automation And Agent Integration
CRM emits typed events for object, record, relation, membership, activity,
attribute, view, and pipeline changes. Automations can subscribe to these ports,
and provider modules can write into CRM through the crm_records writable sink
with reconciliation metadata such as external source, external id, and external
version.
Agent traits expose read and manage operations over the same reader/writer facades used by the UI and sink, so automations and agents do not bypass the CRM write path.
Flow Composition
CRM is independent of visual Workflows and Automation. Its generic event ports are
optional discovery surfaces. Reusable execution is declared once as exact
kickside.block/v1 entries under kickside.crm; headless Blocks can
discover and lower them. CRM also ships inert kickside.flow/v1 artifacts under
kickside.crm. A separately installed Flow authoring package may import
those artifacts, and Automation may bind CRM event ports after publication. CRM
owns no Behavior API or parallel runtime catalog.
Notes
This is an installable KickSide module. Package-owned entries, policies,
tables, and UI tags use the kickside.crm, kickside_crm, and
kickside-crm prefixes. Platform contracts such as kickside.data:writable
remain Kickside contracts by design.