Back to changelog index

1.0.6

May 25, 2026 · 4 packages · 21 unique changes · 4 release entries

libsmodulesBreaking changes

This release affects the sharedLibs, solutions familyies.

Run contractspec connect adoption resolve --family sharedLibs to see how it impacts your project.

Release summaries

  • communication-os-domain-command-persistence

    Persist CommunicationOS domain commands as provider-free approval/draft events.

    maintainer

    CommunicationOS now has contract-level domain-command classification plus runtime event persistence for reviewable agent commands.

    integrator

    Integrators can persist reply, handoff, escalation, and evidence-preparation commands as immutable approval/draft packets without provider or database coupling.

  • communication-os-product-capability

    Split CommunicationOS into canonical spec, backend-neutral runtime, thin module composition, standalone examples, and isolated design-system communication blocks.

    maintainer

    Maintainers get clear package ownership: contracts in a spec lib, deterministic runtime in a runtime lib, examples in an example package, and module shims only for migration.

    integrator

    Integrators should move new imports to the spec/runtime/example/design-system packages and treat module core subpaths as deprecated shims.

  • cross-platform-communication-spec-commands

    Add E1/E2 defineCommand and defineCapability contracts for CommunicationOS AI operations and auditor scope gating.

    maintainer

    Three new commands: comms.summarizeThread, comms.draftReply, comms.suggestHandoff. Two new capabilities: AI routing scope (ai_operator), auditor read-only scope. All contracts include full meta (key, version, goal, context, owners, tags, stability).

    integrator

    Wire AI panel slots against the new capability contracts. comms.draftReply and comms.suggestHandoff are gated by the AI routing capability — auditor role will receive boundary: "blocked" for mutation operations.

  • m2-communication-spec-threadlink-v2

    BREAKING: Migrate ThreadLinkModel to V2 rich-reference shape — objectType/objectId replaced by objectRef + kindId/instanceId.

    maintainer

    ThreadLinkModel V2 migration. The `objectType` and `objectId` fields are removed from `ThreadLinkModel`. A new `objectRef` field (JSONObject, non-optional) carries the serialised RichReference payload. All search/query operations use `linkedKindId` + `linkedInstanceId` instead of `linkedObjectType` + `linkedObjectId`. New exports: `threadLinkedObjectKind` (defineReferenceKind) and `ThreadLinkedObjectPayload` (Zod schema + type) in `contracts/thread-link-kind.ts`.

    integrator

    BREAKING — update every consumer that reads or writes ThreadLinkModel fields: replace `objectType` with the kindId inside `objectRef`, replace `objectId` with the instanceId inside `objectRef`. Update query parameter names from `linkedObjectType`/`linkedObjectId` to `linkedKindId`/`linkedInstanceId`. Use `threadLinkedObjectKind.id` ('communication.thread-linked-object') as the standard kindId for CommunicationOS thread links.

    customer

    Thread-to-object links now use a typed rich-reference format that carries domain context alongside the object identifier. No UI behaviour changes.

Deprecations

  • - @lssm-tech/module.communication-os/core/contracts* re-export from @lssm-tech/lib.communication-spec for one migration window.
  • - @lssm-tech/module.communication-os/core/runtime* and core governance/lifecycle/scenarios re-export from @lssm-tech/lib.communication-runtime for one migration window.
  • - SearchThreadsQuery input.linkedObjectId — removed; use linkedInstanceId.
  • - SearchThreadsQuery input.linkedObjectType — removed; use linkedKindId.
  • - ThreadLinkModel.objectId — removed; encode instanceId inside objectRef.
  • - ThreadLinkModel.objectType — removed; encode kindId inside objectRef.

Migration guide

  • Replace objectType/objectId with objectRef in ThreadLinkModel consumers

    Required

    All code that constructs or reads ThreadLinkModel values must migrate from the V1 flat fields to the V2 objectRef JSONObject shape. The V2 objectRef carries `kindId`, `id` (instanceId), `payload`, and optional `redactionState`.

    1. Replace `{ objectType: 'foo', objectId: 'bar' }` with `{ objectRef: { kindId: 'foo', id: 'bar', payload: {} } }`.
    2. Replace reads of `link.objectType` with `link.objectRef.kindId`.
    3. Replace reads of `link.objectId` with `link.objectRef.id`.
    4. For CommunicationOS thread links, use `threadLinkedObjectKind.id` ('communication.thread-linked-object') as the kindId.
    5. Validate payloads with `ThreadLinkedObjectPayload` schema (Zod) from @lssm-tech/lib.communication-spec.
    6. Run: bun x tsc --noEmit -p packages/libs/communication-spec/tsconfig.json
    7. Run: bun test packages/libs/communication-spec
  • Replace linkedObjectType/linkedObjectId in SearchThreadsQuery callers

    Required

    Any code that calls SearchThreadsQuery with `linkedObjectType` or `linkedObjectId` must switch to `linkedKindId` and `linkedInstanceId`.

    1. Replace `linkedObjectType` with `linkedKindId` in all SearchThreadsQuery input objects.
    2. Replace `linkedObjectId` with `linkedInstanceId` in all SearchThreadsQuery input objects.
  • Move CommunicationOS contract imports to the spec package

    Required

    Replace module contract imports with grouped subpaths from `@lssm-tech/lib.communication-spec`.

    1. Replace contract imports with @lssm-tech/lib.communication-spec grouped subpaths: ./types, ./commands, ./queries, ./events, ./capabilities, ./validation.
  • Move CommunicationOS runtime imports to the runtime package

    Required

    Replace module runtime imports with grouped subpaths from `@lssm-tech/lib.communication-runtime`.

    1. Replace runtime imports with @lssm-tech/lib.communication-runtime grouped subpaths: ./governance, ./ingestion, ./lifecycle, ./records, ./replay, ./state.
  • Move CommunicationOS examples to the example package

    Required

    Replace module example, fixture, and proof imports with `@lssm-tech/example.communication-os` grouped subpaths.

    1. Replace examples, fixtures, and proof imports with @lssm-tech/example.communication-os grouped subpaths.
  • Use CommunicationOS design-system blocks for presentation

    Import presentational communication workflow blocks from the design-system package.

    1. Use @lssm-tech/lib.design-system/components/communication-os for presentational communication workflow blocks.

Upgrade steps

  • BREAKING: Migrate ThreadLinkModel from V1 flat fields to V2 objectRef

    manual

    ThreadLinkModel no longer has `objectType` or `objectId`. All link data must be serialised into the `objectRef` JSONObject field using the RichReference shape.

    Packages: @lssm-tech/lib.communication-spec

    1. Audit every write path that creates ThreadLinkModel records.
    2. Construct objectRef as `{ kindId: string, id: string, payload: ThreadLinkedObjectPayload }`.
    3. For standard CommunicationOS links: kindId = 'communication.thread-linked-object'.
    4. Audit every read path that extracts objectType or objectId from ThreadLinkModel.
    5. Replace with `objectRef.kindId` and `objectRef.id` respectively.
  • Update SearchThreadsQuery parameters

    assisted

    Query parameter names changed to align with V2 rich-reference vocabulary.

    Packages: @lssm-tech/lib.communication-spec

    1. s/linkedObjectType/linkedKindId/g across all SearchThreadsQuery callers.
    2. s/linkedObjectId/linkedInstanceId/g across all SearchThreadsQuery callers.
  • Persist CommunicationOS agent commands before execution

    assisted

    Use `persistAgentCommunicationCommand` to record approval packet or draft evidence before any adapter-owned write.

    Packages: @lssm-tech/lib.communication-spec, @lssm-tech/lib.communication-runtime, @lssm-tech/module.communication-os

    1. Classify candidate actions with `classifyCommunicationAction`.
    2. Persist agent commands with `persistAgentCommunicationCommand`.
    3. Treat `approval_packet_persisted` as review evidence, not provider execution.
  • Move contract imports to lib.communication-spec

    manual

    Import canonical communication contract models, commands, queries, events, capabilities, and validation helpers from `@lssm-tech/lib.communication-spec`.

    Packages: @lssm-tech/lib.communication-spec, @lssm-tech/lib.communication-runtime, @lssm-tech/module.communication-os, @lssm-tech/example.communication-os, @lssm-tech/lib.design-system

    1. Use @lssm-tech/lib.communication-spec/types for enums and models.
    2. Use @lssm-tech/lib.communication-spec/commands for command contracts.
    3. Use @lssm-tech/lib.communication-spec/queries and /events for query and event contracts.
  • Move example fixture imports to example.communication-os

    manual

    Import replay fixtures and proof from `@lssm-tech/example.communication-os` instead of module subpaths.

    Packages: @lssm-tech/lib.communication-spec, @lssm-tech/lib.communication-runtime, @lssm-tech/module.communication-os, @lssm-tech/example.communication-os, @lssm-tech/lib.design-system

    1. Replace /examples, /fixtures, and /proof module imports with the example package equivalents.

Unique release changes

  • - @lssm-tech/module.communication-os/core/contracts* re-export from @lssm-tech/lib.communication-spec for one migration window.

    4 packages · 4 occurrences

  • - @lssm-tech/module.communication-os/core/runtime* and core governance/lifecycle/scenarios re-export from @lssm-tech/lib.communication-runtime for one migration window.

    4 packages · 4 occurrences

  • - Import canonical communication contract models, commands, queries, events, capabilities, and validation helpers from `@lssm-tech/lib.communication-spec`.

    4 packages · 4 occurrences

  • - Import presentational communication workflow blocks from the design-system package.

    4 packages · 4 occurrences

  • - Import replay fixtures and proof from `@lssm-tech/example.communication-os` instead of module subpaths.

    4 packages · 4 occurrences

  • - Replace module contract imports with grouped subpaths from `@lssm-tech/lib.communication-spec`.

    4 packages · 4 occurrences

  • - Replace module example, fixture, and proof imports with `@lssm-tech/example.communication-os` grouped subpaths.

    4 packages · 4 occurrences

  • - Replace module runtime imports with grouped subpaths from `@lssm-tech/lib.communication-runtime`.

    4 packages · 4 occurrences

  • - Split CommunicationOS into canonical spec, backend-neutral runtime, thin module composition, standalone examples, and isolated design-system communication blocks.

    4 packages · 4 occurrences

  • - Persist CommunicationOS domain commands as provider-free approval/draft events.

    3 packages · 3 occurrences

  • - Use `persistAgentCommunicationCommand` to record approval packet or draft evidence before any adapter-owned write.

    3 packages · 3 occurrences

  • - Add E1/E2 defineCommand and defineCapability contracts for CommunicationOS AI operations and auditor scope gating.

    1 packages · 1 occurrences

  • - All code that constructs or reads ThreadLinkModel values must migrate from the V1 flat fields to the V2 objectRef JSONObject shape. The V2 objectRef carries `kindId`, `id` (instanceId), `payload`, and optional `redactionState`.

    1 packages · 1 occurrences

  • - Any code that calls SearchThreadsQuery with `linkedObjectType` or `linkedObjectId` must switch to `linkedKindId` and `linkedInstanceId`.

    1 packages · 1 occurrences

  • - BREAKING: Migrate ThreadLinkModel to V2 rich-reference shape — objectType/objectId replaced by objectRef + kindId/instanceId.

    1 packages · 1 occurrences

  • - Query parameter names changed to align with V2 rich-reference vocabulary.

    1 packages · 1 occurrences

  • - SearchThreadsQuery input.linkedObjectId — removed; use linkedInstanceId.

    1 packages · 1 occurrences

  • - SearchThreadsQuery input.linkedObjectType — removed; use linkedKindId.

    1 packages · 1 occurrences

  • - ThreadLinkModel no longer has `objectType` or `objectId`. All link data must be serialised into the `objectRef` JSONObject field using the RichReference shape.

    1 packages · 1 occurrences

  • - ThreadLinkModel.objectId — removed; encode instanceId inside objectRef.

    1 packages · 1 occurrences

  • - ThreadLinkModel.objectType — removed; encode kindId inside objectRef.

    1 packages · 1 occurrences

Impacted packages

  • @lssm-tech/lib.communication-runtime

    Layer: libs · 9 changes

  • @lssm-tech/lib.communication-spec

    Layer: libs · 9 changes

  • @lssm-tech/lib.design-system

    Layer: libs · 9 changes

  • @lssm-tech/module.communication-os

    Layer: modules · 9 changes