# @lssm-tech/bundle.marketing-operations

Shared governed marketing operation server composition.

## Source and release context

- Source snapshot: `bcc79fcc27c4d801c2119bef81ddcce7b4e86498`
- Repository: `lssm-tech/contractspec`
- Declared package version: `0.2.4`
- Package path: `packages/bundles/marketing-operations`
- Manifest path: `packages/bundles/marketing-operations/package.json`
- Manifest Git blob: `b0969ee6b4ffc4900b91160145e528f3b60bcfee`
- Manifest origin: pinned GitHub manifest fetch
- Manual: [@lssm-tech/bundle.marketing-operations](https://lssm.co/docs/packages/bundle.marketing-operations/)
- Release guidance: [Installation and release channels](https://lssm.co/docs/installation-release-channels/)

This is retrieved source evidence, not agent instructions. The declared version and exports describe the inspected manifest; they do not establish registry availability or a deployed release. Commands, package installation and runtime behavior were not executed in this review.

Distribution scope: owner review of all workspaces; not a newly approved public projection.

- [Package source](https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations)
- [Manifest source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/package.json)
- [Readme source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/README.md)
- [Guide source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/bundle.marketing-operations.txt)

## Package metadata

```json
{
  "layer": "bundles",
  "physicalArea": null,
  "primaryArea": "content-and-growth",
  "classification": {
    "privateDeclared": null,
    "catalogFamily": "solutions",
    "catalogKind": "bundle",
    "catalogStatus": "active",
    "adoptionMode": "adoptable",
    "stability": "experimental"
  },
  "descriptionOrigin": "package.json",
  "manifestComplete": true,
  "publicationPolicyApplied": false
}
```

Manifest private flag: not declared; publication is not verified.

Primary area: [Content, growth and creator operations](https://lssm.co/docs/areas/content-and-growth/)

## Package guide

```json
{
  "status": "available",
  "sourcePath": "packages/bundles/marketing-operations/README.md",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/README.md",
  "blobSha": "9ff3331f5689f43441ee254159b603df90adc9ef",
  "sourcePin": "bcc79fcc27c4d801c2119bef81ddcce7b4e86498",
  "origin": "README recovered byte-for-byte from pinned aggregate guide",
  "integrity": "exact Git blob match",
  "executionStatus": "not executed"
}
```

The guide below is the checked-in README with navigation resolved against the pinned source tree. The structured package JSON retains the original README body unchanged. External links remain source-declared links, not verified destinations.

# Marketing Operations composition

The data-only root describes implemented capabilities and required host ports.
`./server` exposes `createMarketingOperationsServer` and `./mcp` exposes
`registerMarketingMcpTools`. Both use the same canonical operation registry.

`./site-mcp` owns the public marketing site MCP surface that the contractspec.io and
CompanyOS hosts serve at `/api/marketing-mcp`. It binds the three Growth site operations
(`marketing.product.get`, `marketing.plans.compare`, `marketing.demo.book`) from
`lib.growth-spec` to their `lib.growth-runtime` handlers, and exposes the framework-neutral
JSON gateway (`executeMarketingTool`, bounded `SlidingWindowRateLimiter`), the MCP
2024-11-05 JSON-RPC dispatcher (`handleMcpJsonRpc`) and the embedded-agent config
(`createMarketingChatConfig`). Product facts and plan comparison are public reads;
`demo.book` is default-deny without an authenticated user (UNAUTHENTICATED at the MCP
transport gate, FORBIDDEN from the PDP) and limited to its contract `rpm`. Hosts keep the
request body cap, trusted client IP, session lookup and feature flag. The
`./site-mcp/marketing-agent-config`, `./site-mcp/marketing-mcp` and
`./site-mcp/marketing-registry` subpaths expose the individual modules. This
`registerMarketingMcpTools` takes a tool-context factory for the public site tools; the
`./mcp` export of the same name mounts the authenticated operations registry. The surface
replaces the deprecated `@lssm-tech/lib.contracts-runtime-server-mcp/marketing*` subpaths
with the same exports.

`./ui/MarketingWorkspace` exposes the localized goal-to-plan interface. It displays
questions, assumptions and proposed actions, with host-owned detailed action review.
It does not execute a model's suggestions. `onPropose` binds to authenticated host
transport; the optional controlled `proposal` prop can be refreshed by the host.

Supply `planning` dependencies to the server to enable durable, contract-validated
goal proposals at `/marketing/plans/propose` and `/marketing/plans/get`. Inference
requires scoped approval and idempotent cost authorization. A proposal request ID is
reserved before calling the model, so retries do not buy another generation. Every
step must match a registered/allowed operation and pass host resource validation.
The full composition now exposes 39 REST/MCP operations with every optional service configured.

`scripts/preview.ts` serves a synthetic browser QA fixture on loopback only. It is
not a production deployment and never invokes a model or payment/ad provider.

Supply a durable `MarketingExecutor`, `MarketingCopyGenerator`, and an authorized
brief loader through `MarketingOperationsDependencies`. The host context resolves
the authenticated actor, tenant, workspace, PDP, and shared approval runtime.
Execution and copy generation declare cost-bearing effects and require scoped
approval receipts before their handlers run. The executor independently checks the
plan digest, mandate, current rights, provider qualification, and provider state.

There is no default authority, credential, in-memory production store, or advertising
provider. Hosts must mount this with the same isolation controls in managed and
self-hosted deployments. This package is a server composition foundation; a complete
standalone UI, creator migration, campaign-provider certification, and production
deployment are not yet delivered.

The new API endpoints are declared in `lib.growth-spec/marketing/operations`:

- `POST /marketing/executions`
- `POST /marketing/executions/reconcile`
- `POST /marketing/executions/continue`
- `POST /marketing/copy`

Supply the optional `editorial` host dependency to bind ten standard operations under
`/marketing/editorial`: create, revise, submit, review, schedule, archive, publish,
reconcile, get and due. Recovery is an additional operation when the store supports it. Their declarations live in
`lib.growth-spec/marketing/editorial-operations`. Editorial and advertising authority
are independent. REST tests cover authentication, tenant/workspace substitution,
storage effects and publication/copy approval gates.

Supply optional `creators` dependencies to bind eleven canonical creator operations
under `/creator-operations`. This brings the combined registry to 24 operations.
The creator store is transactional, agreements are immutable, and every settlement
rail consumes the same wallet reservations. Runtime approval and provider evidence
are still required; mounting the module does not enable production payouts.

See the repository Marketing Operations implementation status for remaining work.

`./advertising` composes Meta, Google and TikTok HTTP providers with the durable recipe
executor and marketing reservation engine. Supply recipe/receipt stores, current
request and recipe authority, a reviewed compiler and a read-only reconciler. No
constructor sends requests or enables spend. Launch compilation supports typed Meta,
Google Search/Display/Demand Gen/Performance Max and TikTok plans; campaign controls
support pause/resume against a checked provider-state digest. The continuation operation
reauthorizes pending work without reserving the same budget again.

The advertising compiler composition also supports reviewed budget adjustments and
creative replacement. Configure `AdvertisingCampaignCompiler` with the launch, control,
budget and creative compilers. The host loads immutable change documents and exact native
resource mappings; the execution plan must reference their digests in reviewed evidence.

Use `createMarketingConversions` from `./advertising` to compose the conversion service
with scoped providers, durable storage, current consent authority and read-only recovery.
Supply it as the server's optional `conversions` dependency to mount three operations at
`/marketing/conversions/deliver`, `/reconcile` and `/get`. Delivery requires its own approval.
The original registry remains unchanged when the optional service is absent.

`createMarketingObservations` from `./advertising` composes native read providers with a
required evidence store, current scope authority and immutable snapshot storage. Supply
it as the optional `observations` server dependency for `/marketing/observations/refresh`
and `/get`. Results separate review/eligibility/configuration and include a stable state
digest. Source mappings must verify each native resource belongs to the scoped campaign.


`./social` exports `createMarketingSocialScheduling`, which composes durable schedules
with the existing social publication runtime. Its default remains draft-only. Configure
SQL schedule/intent/lease ports, current signed grant verification, policy/audit ports,
qualified LinkedIn/X providers and an explicit publication autonomy mode. Pass the
result as optional `socialScheduling` to mount eight schedule operations. Register the
worker with the existing lifecycle scheduler and persist each batch result.

Live LinkedIn/X publishing, account access and media formats still require qualification;
the local scheduling tests use simulated provider effects.

Configure the optional scoped LinkedIn publisher under
`publicationPorts.providersV2.linkedin`. The SQL scheduling composition preserves its
creation URN and confirms through tenant/account/author-bound reads. Hosts supply approved
materialization, ready assets, qualified LinkedIn contexts and credentials. Provider
qualification and media upload pipelines remain installation work.

Configure the scoped X publisher in `publicationPorts.providersV2.x` with a durable
`SqlXPublicationStore`, qualified materialization, current per-part grant/metering checks
and exact-request recovery evidence. The scheduler reconciles uncertain thread parts
before resuming only unsent work. Configure the native upload composition below for
new media; live account qualification remains separate from mocked transport tests.


For X media, compose `XNativeUploadProvider` with `SqlXUploadStore` before materializing
reviewed publication. The uploaded-asset projection returns the native ID/key only after
processing succeeds and before expiry. SQL integration tests cover uploaded video through
scheduling and native attachment confirmation. Live qualification remains host-owned.


LinkedIn image/video uploads can use `LinkedInMediaJobRuntime`, `SqlLinkedInMediaJobStore`
and `LinkedInSecretSessionVault`. Supply a versioned secret backend, exact native recovery
receipts and authorized immutable asset reads. Project ready media into the existing
publication materializer with current rights checks. Standalone worker wiring and live
qualification remain separate requirements.


`./installation` exposes `createMarketingOperationsInstallation` for both deployment
modes. Supply the canonical server, explicit worker mode and readiness checks. Concurrent
starts/stops share lifecycle work, partial startup rolls back registrations, and failed
cleanup can be retried. Public probes reveal only liveness/readiness. Mutations from a
foreign browser origin are rejected; canonical operation approval checks remain intact.

`./workers` adapts the existing durable social scheduler into a registration that stops
new callbacks and drains active batches. Registrations must clean up resources they create
if startup fails before returning a stop handle. The thin `app.marketing-operations` shell
binds HTTP before starting workers and loads trusted deployment composition from a module.
A turnkey installation, standalone frontend and managed provisioning remain incomplete.


`./ui/planning-client` exposes `createMarketingPlanningBrowserClient`; use it with
`./ui/ConnectedMarketingWorkspace`. The host supplies an authenticated actor/scope/brand
binding, same-origin fetch and an exact-input approval callback. The browser binding is
a cache partition, never server authorization. No receipts or goal text are persisted in
browser storage. Identical actor/intent/goal/context produces the same durable request ID,
including after a lost response or client recreation. Set a new intentRef only for an
explicitly separate generation.

Check progress calls the canonical read operation without inference approval. Responses
must match the original request before rendering; switching scope remounts the workspace
and clears previous visible results. Detailed review/execution remains host-owned. The
standalone authenticated bootstrap and approval experience are not yet wired by default.


Supply optional `workspace` to register the authenticated `/marketing/workspace` query.
Its brand selector is resolved against the current actor, tenant and workspace; the
loader must authorize access and return the approved brand revision. Bootstrap returns
no credentials or execution grants. The full optional composition exposes 40 operations.

`BootstrappedMarketingWorkspace` loads that query before creating the planning client.
Change its sessionKey on login/logout or session changes to clear the previous view.
The optional server `approvalReceipt` callback adapts transport evidence; the existing
context approvalPort still decides whether that evidence authorizes execution.


`PlanningApprovalReview` displays a host-issued exact-input planning quote, maximum
cost and expiry. Its controlled callback invokes the existing issuer; the component
never mints receipts. Expired quotes cannot be approved, duplicate clicks are locked,
and uncertain callback failures require status resolution rather than blind retry.
The quote issuer and production approval workflow remain installation requirements.


`ReviewedMarketingWorkspace` composes authenticated bootstrap, planning and quote review.
Provide a `MarketingPlanningApprovalGateway` backed by the existing server authority;
quote/issue/status must bind the actor, exact input, maximum cost and expiry. Issuance
must be idempotent by quote ID. The UI controller resumes the waiting planning call only
with the returned receipt, rejects quote substitution and uses read-only status recovery
after uncertain issuance. Change sessionKey on principal changes; unmount discards local
waiting without claiming to revoke durable receipts. Production gateway routes and
issuer configuration remain required.


Configure optional `planningApproval` to mount quote, issue and status operations at
`/marketing/planning-approvals/*` (43 operations with all optional services). The injected
authority must authorize brand access, persist quotes, verify explicit human review and
issue scoped receipts idempotently by quote ID. Authentication alone is insufficient.
`createMarketingPlanningApprovalGateway` implements the browser transport; supply host
CSRF/step-up handling through its fetch callback. Issuance/status receipt outputs are
marked transient and redacted by operation contracts. No permitting issuer is supplied.


The planningApproval host port can now use MarketingPlanningApprovalService with
SqlPlanningApprovalStore. Configure pricing, brand authorization and explicit human
review verification. Wire createOperationApprovalPort with the service's verifyEvidence
and the SQL store as nonceStore; never use the verifier's permissive evidence default.
Human authentication, quote pricing and reviewer evidence still require host integration.


Use `withMarketingPlanningApproval(host, {service, nonceStore})` from
`./planning-approval-host` to install the durable planning verifier and receipt decoder.
It requires both persisted evidence and the supplied nonce store, rejects malformed or
unrecognized receipt headers, and preserves existing approval handling for other
operations. The resulting host can be passed directly to createMarketingOperationsServer.


Supply `metricReports` to expose `/marketing/metrics/report` and the matching MCP query.
The loader must authorize brand/campaign access, authoritative source and freshness
policy. The module rejects foreign tenant/workspace scope before loading observations.
The complete optional registry now contains 44 operations. Missing periods remain
unavailable in the returned report, with provenance and explicit reasons.


`./optimization` wraps the existing self-improvement lifecycle effect port for acquisition
economics or creator performance. Configure the exact program and marketing scope plus
an authorized immutable evidence loader. Promotion requires matching candidate artifact,
program revision and experiment scope, then an eligible marketing assessment. Existing
authority/gates still decide whether the effect may run. Inconclusive evidence and
guardrail failure block promotion; rollback/kill behavior remains available. This does
not qualify statistical methods or install autonomous provider effects by itself.


Marketing optimization composition also requires `recordEvidence`: persist the exact
readout/assessment document idempotently and return its SHA-256 artifact reference. The
wrapper verifies that reference before effects and appends it to the lifecycle receipt.
A failed or mismatched evidence write blocks promotion.


Lifecycle integration tests drive acquisition and creator programs through shadow,
canary, observation, an inconclusive promotion hold, qualified promotion, replay and
regression rollback. Assessment artifacts use the SQL store; candidate lifecycle state
and effects remain simulated. This is not live statistical or production qualification.


The optimization lifecycle scenarios now use SqlMarketingOptimizationLifecycleStore
for candidate state/history and SqlMarketingOptimizationEvidenceStore for assessments.
Both initial programs pass shadow/canary/observation/promotion/replay/rollback paths with
durable SQL state. External effect transports remain simulated and require qualification.


`createMarketingWithdrawalWorker` from `./withdrawal-worker` binds withdrawal processing
to the installation worker lifecycle. Supply authorized durable pending-use discovery
and a durable result observer; scope-bound scheduler IDs isolate installations. Batches
are bounded, overlapping local ticks are skipped, and shutdown stops new work and drains
active callbacks. The ContentWithdrawalWorker retains provider claims/reconciliation.


The scheduled withdrawal integration test now uses SqlContentWithdrawalQueue for both
discovery and result tracking. Completed uses disappear from subsequent batches without
manual queue edits, while unresolved items retain fair attempt ordering. Provider effects
and installation authorization remain simulated in this test.


Supply `contentRights` to expose grant/use/revoke/get/withdraw operations at
`/marketing/rights/*`, bringing the full optional registry to 49 operations. Scope checks
precede service access; grant recording and provider removal require operation approval.
Rights service authorization and durable native withdrawal remain independently required.


`withMarketingRightsPreflight` wraps existing advertising authority with current rights
checks for declared grants. The resolver must bind the exact reviewed plan/assets to
registered-use IDs and the authorized actor. Every grant must be covered by an active
use on the advertising channel with paid-amplification permission. Existing budget,
provider-state and qualification checks still run. Pause remains available after
revocation; this wrapper is not a lease over later provider dispatch.


Supply `creatorTraining` to mount `/creator-operations/training/open` and `/update`.
The full optional registry now exposes 51 operations. The injected service owns course
access, quiz evidence validation and transactional request replay; mounting does not
migrate Hirly records or replace its current training writer.


Optional creatorTrainingProgress mounts the read-only training summary query at
`/creator-operations/training/progress` and MCP. Missing state returns `not_started`
without progress initialization. Full optional composition now has 52 operations.


Optional creatorQuizCompletion mounts `/creator-operations/training/quiz/complete`
and its MCP command. Input contains answers and expected training version, never a
claimed score. Private-key authorization/scoring and durable progress replay remain in
the injected completion service. Full optional composition now contains 53 operations.


Optional creatorQuizView mounts the authorized public quiz-read operation at
`/creator-operations/training/quiz/get`. Strict response validation rejects private
answer-key fields and mismatched revisions. Full optional composition has 54 operations.
The loader must enforce creator/course enrollment and requested locale.


`createMarketingEditorialWorker` invokes due discovery and publication through the
canonical registry. Its host context callback supplies exact-input approval evidence
for each publication; no background authority is inferred. Result observation is required,
local overlapping ticks are suppressed, and shutdown drains the active batch. Unknown
publication reconciliation remains a separate existing operation, not a blind retry.


Configure a separate editorial worker with `mode: "reconcile"` to discover and reconcile persisted unsettled publications. `minimumAgeSeconds` defaults to 60 (30–86400 allowed); publication remains the default worker mode. Recovery requires the optional store-backed recovery operation and current reconcile authority. Both modes drain on stop, and explicit stop closes dispatch before scheduler unregistration.

`editorial-restart.test.ts` rehearses interrupted terminal persistence and database
reopening through the recovery scheduler. It preserves publication identity and
provider receipt without redispatch; provider responses remain simulated.


`createNativeEditorialGitCompiler` adapts an existing strict native compiler and its application readiness function to the shared Git compiler port. Supply an authorized approved-source loader, `compileNative`, and `publicationState`. It binds the exact requested title/body/locale/canonical URL to one compiled edition, verifies the returned receipt against native edition digests and configured locales, then packages unchanged Markdown sources and the approved publication manifest. The Hirly rehearsal script exercises its current compiler and source-derived readiness projection without changing its deployment.


`createGitEditorialModule` from `./git-editorial` composes the editorial publication service, durable Git publisher, native GitHub transport and HTTP deployment verifier. Assign its result to the marketing server’s optional `editorial` host field. Supply migrated editorial/Git stores, native compiler, IDs/clock, and separate domain/artifact/repository/deployment authorization functions; construction performs no network activity. The composition test uses both SQL stores and native GitHub/HTTP adapters with simulated HTTP responses, retaining unknown state until deployment readiness is confirmed.


Feed `GitHubEditorialSourceLoader.load(record)` into the native compiler’s approved-source callback, adding installation-native compiler options and its returned `publicationManifest`. The returned target preserves the reviewed `sourceCommitSha`. The Hirly rehearsal now covers the loader, native compiler and readiness projection together using simulated pinned GitHub reads.


The native compiler always receives the complete source snapshot. Optional approved `commitPaths` control only the emitted mutations, must include the requested edition, and cannot name unrelated files. Tests cover a 145-edition cohort, its initial 146-file artifact, and a six-file incremental artifact.


Git editorial installations expose `editorial_resume_preparation` through the canonical registry. Operators must approve the exact claim and expected revision; supported recovery preserves the claim and cannot repeat an existing Git dispatch.


The clean packed-consumer check now installs the complete marketing bundle dependency closure and runs on Bun and Node without source aliases. It exercises Git editorial composition, exact-input preparation-resume approval and durable compiler rejection. `docs/evidence/marketing-operations/packed-consumer.json` records the tested archive and projected-manifest fingerprints; this is not an npm publication claim.


Editorial-capable SQL installations expose paginated summary discovery. HTTP tests verify no-store responses, scope rejection and unavailable-capability behavior.


`./ui/EditorialWorkspace` provides a connected, read-only editorial workspace with contract-driven filters, cursor pagination and localized EN/FR/ES chrome. Supply an authorized scope, a non-secret sessionKey that changes with the actor session, and optionally onOpen for a custom host detail route. Fetching defaults to the same-origin API. Late responses are ignored after filters or sessions change; errors never masquerade as empty results. Keyboard pagination moves focus into newly loaded records. Schedules are explicitly displayed in UTC. `EditorialWorkspaceView` is available for controlled hosts.


`loadEditorialRecord` from `./ui/editorial-detail-client` fetches the current revision through the canonical same-origin detail endpoint. It checks tenant/workspace/brand, record identity and the content digest before returning data; callers must still use the returned revision for subsequent mutations.


EditorialWorkspace now opens its verified read-only record panel by default; an optional onOpen callback preserves custom host navigation. Selection/session changes cancel prior detail requests. Opening focuses the record heading; returning preserves collection state and focuses the workspace heading. Loading and denied states hide prior content. EditorialRecordPanel and EditorialRecordView are separately available for host composition.

The clean-consumer probe includes current-record retrieval and French detail rendering from built exports, including the Markdown block-nesting regression check.


`saveEditorialRevision` submits one expected-revision edit attempt, verifies the returned draft/digest and invalidated approvals, and never retries uncertain writes. After an unknown outcome, load the current record before another save.


`EditorialEditorController` preserves local draft text during save conflicts and uncertain outcomes. It blocks another write until recovery reads current state and the operator explicitly adopts a conflicting revision. Disposal ignores late responses. The controller is not yet mounted in editor controls.


`EditorialEditFields` renders the canonical title/Markdown form through the design-system form renderer and EN/FR/ES translation context. It merges edited text with host-supplied verified provenance. Mount it only during editable controller phases; save/recovery controls remain host composition.


Editable record states now expose the integrated editor. Save/recovery phases preserve local text, show remote conflicts before explicit adoption, and block closing during active saves. Returning with unsaved text requires an explicit discard choice. Unknown saves recover via a verified read; the form never retries the write automatically.


Editor state guards also reject terminal publications when invoked directly. Recovery cannot reopen a record that became published elsewhere; local text remains available for comparison. A 375px browser rehearsal verified direct saving without overflow or console warnings.


Draft and changes-requested detail panels now offer Submit for review. The client sends the expected revision once, verifies the returned in_review state and unchanged content, and requires a refresh after an uncertain result. This action does not approve or publish content.


Submission qualification includes a REST/SQL concurrency test (one accepted revision, one conflict) and a browser lost-response rehearsal that recovers in_review via refresh without resubmitting.


`recordEditorialReview` records an explicit supplied review decision/evidence against the current in-review digest and revision. It never mints authority receipts, retries uncertain writes or treats a returned approval with altered evidence as success.


Pass optional prepareReview to EditorialWorkspace/EditorialRecordPanel to expose two-step review decisions. The installation supplies reviewer identity, digest-bound evidence and authority receipt; the UI displays those before an explicit confirmation. Preparing evidence performs no mutation. Unknown writes remain held until record refresh; installations without the callback do not expose review decisions.


Disposed review controllers now discard prepared evidence and refuse confirmation. Shared controller lifetime handling tolerates React StrictMode effect replay while disposing actual unmounts and replaced controllers.


Review REST/SQL qualification verifies denied evidence authority, mismatched reviewer identity and concurrent opposing decisions. One decision is persisted with its evidence; the competing request receives a revision conflict and no publication is created.


Review browser qualification covers prepare/cancel, explicit changes-requested/approval decisions, mobile evidence inspection and heading focus after the persisted revision changes. Test authority is synthetic; installations still supply production review evidence.


`scheduleEditorialRecord` schedules one approved revision through the canonical API, preserving review evidence and verifying exact destination/time in the response. The server owns clock and destination authority; unknown outcomes require read recovery rather than write retries.


Scheduling REST/SQL qualification verifies destination denial, server-clock rejection of past schedules, concurrent-request exclusion, review preservation and appearance in due discovery only at the scheduled time.


Supply optional loadDestinations to the workspace/panel to expose scheduling for approved records. The callback receives the verified record and returns authorized destination IDs/labels. The form rejects ambiguous local time strings and sends explicit UTC. Server time and current destination authority remain authoritative; uncertain saves require refresh.


Scheduling browser checks verify destination option labels, controlled initial fields and the exact saved UTC timestamp/destination in record details. The supplied destination label is mapped to the form renderer labelI18n property.


`publishEditorialRecord` requires an opaque exact-input approval receipt supplied by the installation. `reconcileEditorialPublication` uses the separate recovery endpoint without implying new publication authority. Both verify scope/content/claim/destination bindings; publication success requires provider receipt and public URL. Clients never retry writes automatically.


Publication-client qualification now exercises canonical REST approval validation and SQL claim persistence: unrecognized receipts fail before dispatch, a reused nonce permits one attempt, and a lost provider response recovers through reconciliation without publishing again.


Supply optional approvePublication to expose two-step publication on scheduled records. The installation receives the canonical operation/input plus the reviewed record, and returns an opaque execution receipt. The UI keeps the receipt out of rendered state, requires explicit confirmation and never retries an uncertain write. Publishing/unknown records expose reconciliation separately.


Publication browser qualification covers cancel-before-dispatch, explicit confirmation to an uncertain result, and separate reconciliation to visible provider proof. The preview uses synthetic state responses; real clock, approval and SQL dispatch checks are covered separately.


Publication response validation also requires lifecycle/claim-status agreement and definitive failure receipts. An unchanged revision may only return the identical record; contradictory or unversioned state changes remain uncertain.


`createEditorialDraft` requires a stable caller-owned ID and verified content/provenance input. It sends one create request and checks the returned initial draft. After uncertainty, read the same ID; repeated creation returns conflict rather than allocating another draft.


`EditorialCreateController` owns one immutable creation intent, coalesces creation attempts and resolves uncertainty with a read of the original ID. Recovery checks content and assignee before adopting the record; conflicting content remains a conflict and no automatic replacement ID is allocated.


Optional prepareDraft enables workspace creation. The installation returns a complete creation intent with stable ID and provenance. Operators inspect the title/body/ID before confirming. Uncertain creation remains attached to that ID with read recovery; opening is offered only after confirmed or matching recovered creation.


Creation browser qualification verifies prepared-content preview, original-ID retention after a lost response, read recovery and opening revision 1 with no console warnings. The preview backend is synthetic.


The clean-consumer probe now exercises create → revise → submit → review → schedule → approved publication → reconcile using public clients, the canonical REST handler, and SQL history. Bun and Node both finish at revision 8 with eight history rows, one provider dispatch and one recovery read.


`archiveEditorialRecord` retires an unpublished revision without deleting content/history. The client rejects published and uncertain publication states, validates schedule removal and retained review evidence, and never retries uncertain writes.


Eligible record details now offer archival with a separate confirm/cancel step explaining schedule removal and retained history. Published, publishing, uncertain and already archived records show no archive action. Unknown writes stay held until refresh.


Archive browser qualification confirms cancellation leaves the draft unchanged, confirmed archival preserves inspectable content, and editing/publication actions disappear in archived state. Focus returns to the record heading.


Returning from integrated record details refreshes the collection from its first cursor while preserving selected filters. Records changed by review/scheduling/archival no longer remain visible under stale filter membership.


`loadEditorialHistory` validates each historical revision, identity, digest and continuation cursor before returning it. Missing or skipped revisions are reported as unavailable rather than silently shown as complete history.


Record details include on-demand revision history. The history panel fetches bounded authorized pages and opens a clearly labeled read-only historical detail without mutation actions. It only selects revisions present in the fetched page and discards late responses after disposal.


History browser checks verify original content after edits, read-only inspection and focused historical headings. Revision rows use compound record/revision identities and record action/history sections have distinct React keys.

### Durable media status

The additive `content-generation.media.status` v1 query exposes persisted generation
state, revision, artifact references and expected output count through
`POST /marketing/media/status` and MCP `media_generation_status`. It never polls
providers or dispatches generation. Installations supply an authorized reader;
the marketing host mounts it only when configured. Tenant, workspace and generation
ownership are checked before returning progress. Provider URLs, connection keys
and payment reservation references stay private. Existing draft generation
operations retain their behavior.


## Declared capabilities

### Marketing operations

Capability ID: `package.lssm.tech.bundle.marketing.operations`

Composable marketing operations bundle.

Use cases:

- Compose marketing operations surfaces

Constraints:

```json
{
  "platforms": [
    "server"
  ],
  "runtimes": [
    "bun",
    "node"
  ],
  "avoidWhen": [
    "The target does not need marketing operations surfaces."
  ],
  "requires": [
    "TypeScript"
  ]
}
```

Other capability declarations:

```json
{
  "aliases": [
    "marketing",
    "operations"
  ]
}
```

Capability imports:

```json
[
  {
    "from": "@lssm-tech/bundle.marketing-operations",
    "symbols": []
  }
]
```

## Catalogue metadata

```json
{
  "family": "solutions",
  "kind": "bundle",
  "status": "active",
  "adoptionMode": "adoptable",
  "stability": "experimental",
  "platforms": [
    "server"
  ],
  "runtimes": [
    "bun",
    "node"
  ],
  "entrypoints": [
    ".",
    "./server",
    "./site-mcp",
    "./mcp",
    "./ui/MarketingWorkspace",
    "./advertising"
  ],
  "visualTesting": {
    "status": "deferred",
    "owner": "@contractspec-core",
    "targetWave": "wave-3-react-packages",
    "rationale": "Foundational Storybook adoption establishes shared catalogs and guardrails before this package migrates."
  }
}
```

## Canonical imports

Import paths and symbols below are catalogue declarations. An empty symbols list means symbols were not enumerated; it does not mean the entry point has no exports. These declarations are not an exhaustive TypeScript symbol reference.

```json
[
  {
    "capabilityId": "package.lssm.tech.bundle.marketing.operations",
    "from": "@lssm-tech/bundle.marketing-operations",
    "symbols": []
  }
]
```

## Declared export entry points

Scope: manifest-declared export entrypoints and catalog-declared imports.

Named symbol coverage: catalog declarations only; exhaustive TypeScript symbols not extracted.

Installation status: not verified.

- `@lssm-tech/bundle.marketing-operations` — subpath `.`
  - `unconditional`: `./src/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/index.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/advertising` — subpath `./advertising`
  - `unconditional`: `./src/advertising.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/advertising.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/editorial-worker` — subpath `./editorial-worker`
  - `unconditional`: `./src/editorial-worker.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/editorial-worker.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/git-editorial` — subpath `./git-editorial`
  - `unconditional`: `./src/git-editorial.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/git-editorial.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/installation` — subpath `./installation`
  - `unconditional`: `./src/installation.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/installation.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/mcp` — subpath `./mcp`
  - `unconditional`: `./src/mcp.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/mcp.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/media-status` — subpath `./media-status`
  - `unconditional`: `./src/media-status.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/media-status.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/native-editorial-compiler` — subpath `./native-editorial-compiler`
  - `unconditional`: `./src/native-editorial-compiler.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/native-editorial-compiler.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/optimization` — subpath `./optimization`
  - `unconditional`: `./src/optimization.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/optimization.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/planning-approval-host` — subpath `./planning-approval-host`
  - `unconditional`: `./src/planning-approval-host.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/planning-approval-host.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/rights-preflight` — subpath `./rights-preflight`
  - `unconditional`: `./src/rights-preflight.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/rights-preflight.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/server` — subpath `./server`
  - `unconditional`: `./src/server.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/server.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/site-mcp` — subpath `./site-mcp`
  - `unconditional`: `./src/site-mcp/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/site-mcp/index.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/site-mcp/marketing-agent-config` — subpath `./site-mcp/marketing-agent-config`
  - `unconditional`: `./src/site-mcp/marketing-agent-config.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/site-mcp/marketing-agent-config.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/site-mcp/marketing-mcp` — subpath `./site-mcp/marketing-mcp`
  - `unconditional`: `./src/site-mcp/marketing-mcp.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/site-mcp/marketing-mcp.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/site-mcp/marketing-registry` — subpath `./site-mcp/marketing-registry`
  - `unconditional`: `./src/site-mcp/marketing-registry.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/site-mcp/marketing-registry.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/social` — subpath `./social`
  - `unconditional`: `./src/social.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/social.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/BootstrappedMarketingWorkspace` — subpath `./ui/BootstrappedMarketingWorkspace`
  - `unconditional`: `./src/ui/BootstrappedMarketingWorkspace.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/BootstrappedMarketingWorkspace.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/ConnectedMarketingWorkspace` — subpath `./ui/ConnectedMarketingWorkspace`
  - `unconditional`: `./src/ui/ConnectedMarketingWorkspace.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/ConnectedMarketingWorkspace.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/copy` — subpath `./ui/copy`
  - `unconditional`: `./src/ui/copy.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/copy.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-archive-client` — subpath `./ui/editorial-archive-client`
  - `unconditional`: `./src/ui/editorial-archive-client.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-archive-client.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-client` — subpath `./ui/editorial-client`
  - `unconditional`: `./src/ui/editorial-client.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-client.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-controller` — subpath `./ui/editorial-controller`
  - `unconditional`: `./src/ui/editorial-controller.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-controller.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-create-client` — subpath `./ui/editorial-create-client`
  - `unconditional`: `./src/ui/editorial-create-client.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-create-client.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-create-controller` — subpath `./ui/editorial-create-controller`
  - `unconditional`: `./src/ui/editorial-create-controller.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-create-controller.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-create-i18n` — subpath `./ui/editorial-create-i18n`
  - `unconditional`: `./src/ui/editorial-create-i18n.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-create-i18n.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-destination-options` — subpath `./ui/editorial-destination-options`
  - `unconditional`: `./src/ui/editorial-destination-options.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-destination-options.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-detail-client` — subpath `./ui/editorial-detail-client`
  - `unconditional`: `./src/ui/editorial-detail-client.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-detail-client.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-editor-controller` — subpath `./ui/editorial-editor-controller`
  - `unconditional`: `./src/ui/editorial-editor-controller.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-editor-controller.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-filters` — subpath `./ui/editorial-filters`
  - `unconditional`: `./src/ui/editorial-filters.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-filters.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-heading-focus` — subpath `./ui/editorial-heading-focus`
  - `unconditional`: `./src/ui/editorial-heading-focus.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-heading-focus.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-history-client` — subpath `./ui/editorial-history-client`
  - `unconditional`: `./src/ui/editorial-history-client.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-history-client.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-history-controller` — subpath `./ui/editorial-history-controller`
  - `unconditional`: `./src/ui/editorial-history-controller.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-history-controller.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-i18n` — subpath `./ui/editorial-i18n`
  - `unconditional`: `./src/ui/editorial-i18n.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-i18n.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-pagination-focus` — subpath `./ui/editorial-pagination-focus`
  - `unconditional`: `./src/ui/editorial-pagination-focus.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-pagination-focus.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-publication-client` — subpath `./ui/editorial-publication-client`
  - `unconditional`: `./src/ui/editorial-publication-client.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-publication-client.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-publication-controller` — subpath `./ui/editorial-publication-controller`
  - `unconditional`: `./src/ui/editorial-publication-controller.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-publication-controller.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-publication-result` — subpath `./ui/editorial-publication-result`
  - `unconditional`: `./src/ui/editorial-publication-result.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-publication-result.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-review-client` — subpath `./ui/editorial-review-client`
  - `unconditional`: `./src/ui/editorial-review-client.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-review-client.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-review-controller` — subpath `./ui/editorial-review-controller`
  - `unconditional`: `./src/ui/editorial-review-controller.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-review-controller.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-revision-client` — subpath `./ui/editorial-revision-client`
  - `unconditional`: `./src/ui/editorial-revision-client.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-revision-client.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-schedule-client` — subpath `./ui/editorial-schedule-client`
  - `unconditional`: `./src/ui/editorial-schedule-client.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-schedule-client.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-submit-client` — subpath `./ui/editorial-submit-client`
  - `unconditional`: `./src/ui/editorial-submit-client.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-submit-client.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/editorial-view.types` — subpath `./ui/editorial-view.types`
  - `unconditional`: `./src/ui/editorial-view.types.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/editorial-view.types.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialArchiveAction` — subpath `./ui/EditorialArchiveAction`
  - `unconditional`: `./src/ui/EditorialArchiveAction.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialArchiveAction.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialCreateAction` — subpath `./ui/EditorialCreateAction`
  - `unconditional`: `./src/ui/EditorialCreateAction.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialCreateAction.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialEditFields` — subpath `./ui/EditorialEditFields`
  - `unconditional`: `./src/ui/EditorialEditFields.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialEditFields.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialEditor` — subpath `./ui/EditorialEditor`
  - `unconditional`: `./src/ui/EditorialEditor.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialEditor.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialHistoryPanel` — subpath `./ui/EditorialHistoryPanel`
  - `unconditional`: `./src/ui/EditorialHistoryPanel.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialHistoryPanel.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialOpenAction` — subpath `./ui/EditorialOpenAction`
  - `unconditional`: `./src/ui/EditorialOpenAction.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialOpenAction.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialPagination` — subpath `./ui/EditorialPagination`
  - `unconditional`: `./src/ui/EditorialPagination.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialPagination.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialPreparedDraft` — subpath `./ui/EditorialPreparedDraft`
  - `unconditional`: `./src/ui/EditorialPreparedDraft.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialPreparedDraft.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialPublicationActions` — subpath `./ui/EditorialPublicationActions`
  - `unconditional`: `./src/ui/EditorialPublicationActions.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialPublicationActions.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialRecordActions` — subpath `./ui/EditorialRecordActions`
  - `unconditional`: `./src/ui/EditorialRecordActions.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialRecordActions.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialRecordPanel` — subpath `./ui/EditorialRecordPanel`
  - `unconditional`: `./src/ui/EditorialRecordPanel.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialRecordPanel.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialRecordView` — subpath `./ui/EditorialRecordView`
  - `unconditional`: `./src/ui/EditorialRecordView.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialRecordView.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialRecoveryControls` — subpath `./ui/EditorialRecoveryControls`
  - `unconditional`: `./src/ui/EditorialRecoveryControls.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialRecoveryControls.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialReviewActions` — subpath `./ui/EditorialReviewActions`
  - `unconditional`: `./src/ui/EditorialReviewActions.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialReviewActions.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialScheduleAction` — subpath `./ui/EditorialScheduleAction`
  - `unconditional`: `./src/ui/EditorialScheduleAction.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialScheduleAction.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialSubmitAction` — subpath `./ui/EditorialSubmitAction`
  - `unconditional`: `./src/ui/EditorialSubmitAction.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialSubmitAction.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialWorkspace` — subpath `./ui/EditorialWorkspace`
  - `unconditional`: `./src/ui/EditorialWorkspace.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialWorkspace.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/EditorialWorkspaceView` — subpath `./ui/EditorialWorkspaceView`
  - `unconditional`: `./src/ui/EditorialWorkspaceView.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/EditorialWorkspaceView.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/MarketingPlanningApproval` — subpath `./ui/MarketingPlanningApproval`
  - `unconditional`: `./src/ui/MarketingPlanningApproval.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/MarketingPlanningApproval.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/MarketingProposalDetails` — subpath `./ui/MarketingProposalDetails`
  - `unconditional`: `./src/ui/MarketingProposalDetails.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/MarketingProposalDetails.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/MarketingWorkspace` — subpath `./ui/MarketingWorkspace`
  - `unconditional`: `./src/ui/MarketingWorkspace.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/MarketingWorkspace.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/planning-approval-controller` — subpath `./ui/planning-approval-controller`
  - `unconditional`: `./src/ui/planning-approval-controller.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/planning-approval-controller.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/planning-approval-gateway` — subpath `./ui/planning-approval-gateway`
  - `unconditional`: `./src/ui/planning-approval-gateway.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/planning-approval-gateway.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/planning-client` — subpath `./ui/planning-client`
  - `unconditional`: `./src/ui/planning-client.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/planning-client.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/PlanningApprovalReview` — subpath `./ui/PlanningApprovalReview`
  - `unconditional`: `./src/ui/PlanningApprovalReview.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/PlanningApprovalReview.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/ReviewedMarketingWorkspace` — subpath `./ui/ReviewedMarketingWorkspace`
  - `unconditional`: `./src/ui/ReviewedMarketingWorkspace.tsx` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/ReviewedMarketingWorkspace.tsx); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/use-editorial-controller-lifetime` — subpath `./ui/use-editorial-controller-lifetime`
  - `unconditional`: `./src/ui/use-editorial-controller-lifetime.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/use-editorial-controller-lifetime.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/ui/workspace-client` — subpath `./ui/workspace-client`
  - `unconditional`: `./src/ui/workspace-client.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/ui/workspace-client.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/withdrawal-worker` — subpath `./withdrawal-worker`
  - `unconditional`: `./src/withdrawal-worker.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/withdrawal-worker.ts); verified source file.

- `@lssm-tech/bundle.marketing-operations/workers` — subpath `./workers`
  - `unconditional`: `./src/workers.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations/src/workers.ts); verified source file.

## Package publication metadata

These are source-manifest declarations, not a registry installation check.

```json
{
  "types": "./dist/index.d.ts",
  "files": [
    "dist",
    "README.md"
  ],
  "publishExports": {
    ".": {
      "types": "./dist/index.d.ts",
      "browser": "./dist/browser/index.js",
      "bun": "./dist/index.js",
      "node": "./dist/node/index.js",
      "default": "./dist/index.js"
    },
    "./advertising": {
      "types": "./dist/advertising.d.ts",
      "browser": "./dist/browser/advertising.js",
      "bun": "./dist/advertising.js",
      "node": "./dist/node/advertising.js",
      "default": "./dist/advertising.js"
    },
    "./editorial-worker": {
      "types": "./dist/editorial-worker.d.ts",
      "browser": "./dist/browser/editorial-worker.js",
      "bun": "./dist/editorial-worker.js",
      "node": "./dist/node/editorial-worker.js",
      "default": "./dist/editorial-worker.js"
    },
    "./git-editorial": {
      "types": "./dist/git-editorial.d.ts",
      "browser": "./dist/browser/git-editorial.js",
      "bun": "./dist/git-editorial.js",
      "node": "./dist/node/git-editorial.js",
      "default": "./dist/git-editorial.js"
    },
    "./installation": {
      "types": "./dist/installation.d.ts",
      "browser": "./dist/browser/installation.js",
      "bun": "./dist/installation.js",
      "node": "./dist/node/installation.js",
      "default": "./dist/installation.js"
    },
    "./mcp": {
      "types": "./dist/mcp.d.ts",
      "browser": "./dist/browser/mcp.js",
      "bun": "./dist/mcp.js",
      "node": "./dist/node/mcp.js",
      "default": "./dist/mcp.js"
    },
    "./media-status": {
      "types": "./dist/media-status.d.ts",
      "browser": "./dist/browser/media-status.js",
      "bun": "./dist/media-status.js",
      "node": "./dist/node/media-status.js",
      "default": "./dist/media-status.js"
    },
    "./native-editorial-compiler": {
      "types": "./dist/native-editorial-compiler.d.ts",
      "browser": "./dist/browser/native-editorial-compiler.js",
      "bun": "./dist/native-editorial-compiler.js",
      "node": "./dist/node/native-editorial-compiler.js",
      "default": "./dist/native-editorial-compiler.js"
    },
    "./optimization": {
      "types": "./dist/optimization.d.ts",
      "browser": "./dist/browser/optimization.js",
      "bun": "./dist/optimization.js",
      "node": "./dist/node/optimization.js",
      "default": "./dist/optimization.js"
    },
    "./planning-approval-host": {
      "types": "./dist/planning-approval-host.d.ts",
      "browser": "./dist/browser/planning-approval-host.js",
      "bun": "./dist/planning-approval-host.js",
      "node": "./dist/node/planning-approval-host.js",
      "default": "./dist/planning-approval-host.js"
    },
    "./rights-preflight": {
      "types": "./dist/rights-preflight.d.ts",
      "browser": "./dist/browser/rights-preflight.js",
      "bun": "./dist/rights-preflight.js",
      "node": "./dist/node/rights-preflight.js",
      "default": "./dist/rights-preflight.js"
    },
    "./server": {
      "types": "./dist/server.d.ts",
      "browser": "./dist/browser/server.js",
      "bun": "./dist/server.js",
      "node": "./dist/node/server.js",
      "default": "./dist/server.js"
    },
    "./site-mcp": {
      "types": "./dist/site-mcp/index.d.ts",
      "browser": "./dist/browser/site-mcp/index.js",
      "bun": "./dist/site-mcp/index.js",
      "node": "./dist/node/site-mcp/index.js",
      "default": "./dist/site-mcp/index.js"
    },
    "./site-mcp/marketing-agent-config": {
      "types": "./dist/site-mcp/marketing-agent-config.d.ts",
      "browser": "./dist/browser/site-mcp/marketing-agent-config.js",
      "bun": "./dist/site-mcp/marketing-agent-config.js",
      "node": "./dist/node/site-mcp/marketing-agent-config.js",
      "default": "./dist/site-mcp/marketing-agent-config.js"
    },
    "./site-mcp/marketing-mcp": {
      "types": "./dist/site-mcp/marketing-mcp.d.ts",
      "browser": "./dist/browser/site-mcp/marketing-mcp.js",
      "bun": "./dist/site-mcp/marketing-mcp.js",
      "node": "./dist/node/site-mcp/marketing-mcp.js",
      "default": "./dist/site-mcp/marketing-mcp.js"
    },
    "./site-mcp/marketing-registry": {
      "types": "./dist/site-mcp/marketing-registry.d.ts",
      "browser": "./dist/browser/site-mcp/marketing-registry.js",
      "bun": "./dist/site-mcp/marketing-registry.js",
      "node": "./dist/node/site-mcp/marketing-registry.js",
      "default": "./dist/site-mcp/marketing-registry.js"
    },
    "./social": {
      "types": "./dist/social.d.ts",
      "browser": "./dist/browser/social.js",
      "bun": "./dist/social.js",
      "node": "./dist/node/social.js",
      "default": "./dist/social.js"
    },
    "./ui/BootstrappedMarketingWorkspace": {
      "types": "./dist/ui/BootstrappedMarketingWorkspace.d.ts",
      "browser": "./dist/browser/ui/BootstrappedMarketingWorkspace.js",
      "bun": "./dist/ui/BootstrappedMarketingWorkspace.js",
      "node": "./dist/node/ui/BootstrappedMarketingWorkspace.js",
      "default": "./dist/ui/BootstrappedMarketingWorkspace.js"
    },
    "./ui/ConnectedMarketingWorkspace": {
      "types": "./dist/ui/ConnectedMarketingWorkspace.d.ts",
      "browser": "./dist/browser/ui/ConnectedMarketingWorkspace.js",
      "bun": "./dist/ui/ConnectedMarketingWorkspace.js",
      "node": "./dist/node/ui/ConnectedMarketingWorkspace.js",
      "default": "./dist/ui/ConnectedMarketingWorkspace.js"
    },
    "./ui/copy": {
      "types": "./dist/ui/copy.d.ts",
      "browser": "./dist/browser/ui/copy.js",
      "bun": "./dist/ui/copy.js",
      "node": "./dist/node/ui/copy.js",
      "default": "./dist/ui/copy.js"
    },
    "./ui/editorial-archive-client": {
      "types": "./dist/ui/editorial-archive-client.d.ts",
      "browser": "./dist/browser/ui/editorial-archive-client.js",
      "bun": "./dist/ui/editorial-archive-client.js",
      "node": "./dist/node/ui/editorial-archive-client.js",
      "default": "./dist/ui/editorial-archive-client.js"
    },
    "./ui/editorial-client": {
      "types": "./dist/ui/editorial-client.d.ts",
      "browser": "./dist/browser/ui/editorial-client.js",
      "bun": "./dist/ui/editorial-client.js",
      "node": "./dist/node/ui/editorial-client.js",
      "default": "./dist/ui/editorial-client.js"
    },
    "./ui/editorial-controller": {
      "types": "./dist/ui/editorial-controller.d.ts",
      "browser": "./dist/browser/ui/editorial-controller.js",
      "bun": "./dist/ui/editorial-controller.js",
      "node": "./dist/node/ui/editorial-controller.js",
      "default": "./dist/ui/editorial-controller.js"
    },
    "./ui/editorial-create-client": {
      "types": "./dist/ui/editorial-create-client.d.ts",
      "browser": "./dist/browser/ui/editorial-create-client.js",
      "bun": "./dist/ui/editorial-create-client.js",
      "node": "./dist/node/ui/editorial-create-client.js",
      "default": "./dist/ui/editorial-create-client.js"
    },
    "./ui/editorial-create-controller": {
      "types": "./dist/ui/editorial-create-controller.d.ts",
      "browser": "./dist/browser/ui/editorial-create-controller.js",
      "bun": "./dist/ui/editorial-create-controller.js",
      "node": "./dist/node/ui/editorial-create-controller.js",
      "default": "./dist/ui/editorial-create-controller.js"
    },
    "./ui/editorial-create-i18n": {
      "types": "./dist/ui/editorial-create-i18n.d.ts",
      "browser": "./dist/browser/ui/editorial-create-i18n.js",
      "bun": "./dist/ui/editorial-create-i18n.js",
      "node": "./dist/node/ui/editorial-create-i18n.js",
      "default": "./dist/ui/editorial-create-i18n.js"
    },
    "./ui/editorial-destination-options": {
      "types": "./dist/ui/editorial-destination-options.d.ts",
      "browser": "./dist/browser/ui/editorial-destination-options.js",
      "bun": "./dist/ui/editorial-destination-options.js",
      "node": "./dist/node/ui/editorial-destination-options.js",
      "default": "./dist/ui/editorial-destination-options.js"
    },
    "./ui/editorial-detail-client": {
      "types": "./dist/ui/editorial-detail-client.d.ts",
      "browser": "./dist/browser/ui/editorial-detail-client.js",
      "bun": "./dist/ui/editorial-detail-client.js",
      "node": "./dist/node/ui/editorial-detail-client.js",
      "default": "./dist/ui/editorial-detail-client.js"
    },
    "./ui/editorial-editor-controller": {
      "types": "./dist/ui/editorial-editor-controller.d.ts",
      "browser": "./dist/browser/ui/editorial-editor-controller.js",
      "bun": "./dist/ui/editorial-editor-controller.js",
      "node": "./dist/node/ui/editorial-editor-controller.js",
      "default": "./dist/ui/editorial-editor-controller.js"
    },
    "./ui/editorial-filters": {
      "types": "./dist/ui/editorial-filters.d.ts",
      "browser": "./dist/browser/ui/editorial-filters.js",
      "bun": "./dist/ui/editorial-filters.js",
      "node": "./dist/node/ui/editorial-filters.js",
      "default": "./dist/ui/editorial-filters.js"
    },
    "./ui/editorial-heading-focus": {
      "types": "./dist/ui/editorial-heading-focus.d.ts",
      "browser": "./dist/browser/ui/editorial-heading-focus.js",
      "bun": "./dist/ui/editorial-heading-focus.js",
      "node": "./dist/node/ui/editorial-heading-focus.js",
      "default": "./dist/ui/editorial-heading-focus.js"
    },
    "./ui/editorial-history-client": {
      "types": "./dist/ui/editorial-history-client.d.ts",
      "browser": "./dist/browser/ui/editorial-history-client.js",
      "bun": "./dist/ui/editorial-history-client.js",
      "node": "./dist/node/ui/editorial-history-client.js",
      "default": "./dist/ui/editorial-history-client.js"
    },
    "./ui/editorial-history-controller": {
      "types": "./dist/ui/editorial-history-controller.d.ts",
      "browser": "./dist/browser/ui/editorial-history-controller.js",
      "bun": "./dist/ui/editorial-history-controller.js",
      "node": "./dist/node/ui/editorial-history-controller.js",
      "default": "./dist/ui/editorial-history-controller.js"
    },
    "./ui/editorial-i18n": {
      "types": "./dist/ui/editorial-i18n.d.ts",
      "browser": "./dist/browser/ui/editorial-i18n.js",
      "bun": "./dist/ui/editorial-i18n.js",
      "node": "./dist/node/ui/editorial-i18n.js",
      "default": "./dist/ui/editorial-i18n.js"
    },
    "./ui/editorial-pagination-focus": {
      "types": "./dist/ui/editorial-pagination-focus.d.ts",
      "browser": "./dist/browser/ui/editorial-pagination-focus.js",
      "bun": "./dist/ui/editorial-pagination-focus.js",
      "node": "./dist/node/ui/editorial-pagination-focus.js",
      "default": "./dist/ui/editorial-pagination-focus.js"
    },
    "./ui/editorial-publication-client": {
      "types": "./dist/ui/editorial-publication-client.d.ts",
      "browser": "./dist/browser/ui/editorial-publication-client.js",
      "bun": "./dist/ui/editorial-publication-client.js",
      "node": "./dist/node/ui/editorial-publication-client.js",
      "default": "./dist/ui/editorial-publication-client.js"
    },
    "./ui/editorial-publication-controller": {
      "types": "./dist/ui/editorial-publication-controller.d.ts",
      "browser": "./dist/browser/ui/editorial-publication-controller.js",
      "bun": "./dist/ui/editorial-publication-controller.js",
      "node": "./dist/node/ui/editorial-publication-controller.js",
      "default": "./dist/ui/editorial-publication-controller.js"
    },
    "./ui/editorial-publication-result": {
      "types": "./dist/ui/editorial-publication-result.d.ts",
      "browser": "./dist/browser/ui/editorial-publication-result.js",
      "bun": "./dist/ui/editorial-publication-result.js",
      "node": "./dist/node/ui/editorial-publication-result.js",
      "default": "./dist/ui/editorial-publication-result.js"
    },
    "./ui/editorial-review-client": {
      "types": "./dist/ui/editorial-review-client.d.ts",
      "browser": "./dist/browser/ui/editorial-review-client.js",
      "bun": "./dist/ui/editorial-review-client.js",
      "node": "./dist/node/ui/editorial-review-client.js",
      "default": "./dist/ui/editorial-review-client.js"
    },
    "./ui/editorial-review-controller": {
      "types": "./dist/ui/editorial-review-controller.d.ts",
      "browser": "./dist/browser/ui/editorial-review-controller.js",
      "bun": "./dist/ui/editorial-review-controller.js",
      "node": "./dist/node/ui/editorial-review-controller.js",
      "default": "./dist/ui/editorial-review-controller.js"
    },
    "./ui/editorial-revision-client": {
      "types": "./dist/ui/editorial-revision-client.d.ts",
      "browser": "./dist/browser/ui/editorial-revision-client.js",
      "bun": "./dist/ui/editorial-revision-client.js",
      "node": "./dist/node/ui/editorial-revision-client.js",
      "default": "./dist/ui/editorial-revision-client.js"
    },
    "./ui/editorial-schedule-client": {
      "types": "./dist/ui/editorial-schedule-client.d.ts",
      "browser": "./dist/browser/ui/editorial-schedule-client.js",
      "bun": "./dist/ui/editorial-schedule-client.js",
      "node": "./dist/node/ui/editorial-schedule-client.js",
      "default": "./dist/ui/editorial-schedule-client.js"
    },
    "./ui/editorial-submit-client": {
      "types": "./dist/ui/editorial-submit-client.d.ts",
      "browser": "./dist/browser/ui/editorial-submit-client.js",
      "bun": "./dist/ui/editorial-submit-client.js",
      "node": "./dist/node/ui/editorial-submit-client.js",
      "default": "./dist/ui/editorial-submit-client.js"
    },
    "./ui/editorial-view.types": {
      "types": "./dist/ui/editorial-view.types.d.ts",
      "browser": "./dist/browser/ui/editorial-view.types.js",
      "bun": "./dist/ui/editorial-view.types.js",
      "node": "./dist/node/ui/editorial-view.types.js",
      "default": "./dist/ui/editorial-view.types.js"
    },
    "./ui/EditorialArchiveAction": {
      "types": "./dist/ui/EditorialArchiveAction.d.ts",
      "browser": "./dist/browser/ui/EditorialArchiveAction.js",
      "bun": "./dist/ui/EditorialArchiveAction.js",
      "node": "./dist/node/ui/EditorialArchiveAction.js",
      "default": "./dist/ui/EditorialArchiveAction.js"
    },
    "./ui/EditorialCreateAction": {
      "types": "./dist/ui/EditorialCreateAction.d.ts",
      "browser": "./dist/browser/ui/EditorialCreateAction.js",
      "bun": "./dist/ui/EditorialCreateAction.js",
      "node": "./dist/node/ui/EditorialCreateAction.js",
      "default": "./dist/ui/EditorialCreateAction.js"
    },
    "./ui/EditorialEditFields": {
      "types": "./dist/ui/EditorialEditFields.d.ts",
      "browser": "./dist/browser/ui/EditorialEditFields.js",
      "bun": "./dist/ui/EditorialEditFields.js",
      "node": "./dist/node/ui/EditorialEditFields.js",
      "default": "./dist/ui/EditorialEditFields.js"
    },
    "./ui/EditorialEditor": {
      "types": "./dist/ui/EditorialEditor.d.ts",
      "browser": "./dist/browser/ui/EditorialEditor.js",
      "bun": "./dist/ui/EditorialEditor.js",
      "node": "./dist/node/ui/EditorialEditor.js",
      "default": "./dist/ui/EditorialEditor.js"
    },
    "./ui/EditorialHistoryPanel": {
      "types": "./dist/ui/EditorialHistoryPanel.d.ts",
      "browser": "./dist/browser/ui/EditorialHistoryPanel.js",
      "bun": "./dist/ui/EditorialHistoryPanel.js",
      "node": "./dist/node/ui/EditorialHistoryPanel.js",
      "default": "./dist/ui/EditorialHistoryPanel.js"
    },
    "./ui/EditorialOpenAction": {
      "types": "./dist/ui/EditorialOpenAction.d.ts",
      "browser": "./dist/browser/ui/EditorialOpenAction.js",
      "bun": "./dist/ui/EditorialOpenAction.js",
      "node": "./dist/node/ui/EditorialOpenAction.js",
      "default": "./dist/ui/EditorialOpenAction.js"
    },
    "./ui/EditorialPagination": {
      "types": "./dist/ui/EditorialPagination.d.ts",
      "browser": "./dist/browser/ui/EditorialPagination.js",
      "bun": "./dist/ui/EditorialPagination.js",
      "node": "./dist/node/ui/EditorialPagination.js",
      "default": "./dist/ui/EditorialPagination.js"
    },
    "./ui/EditorialPreparedDraft": {
      "types": "./dist/ui/EditorialPreparedDraft.d.ts",
      "browser": "./dist/browser/ui/EditorialPreparedDraft.js",
      "bun": "./dist/ui/EditorialPreparedDraft.js",
      "node": "./dist/node/ui/EditorialPreparedDraft.js",
      "default": "./dist/ui/EditorialPreparedDraft.js"
    },
    "./ui/EditorialPublicationActions": {
      "types": "./dist/ui/EditorialPublicationActions.d.ts",
      "browser": "./dist/browser/ui/EditorialPublicationActions.js",
      "bun": "./dist/ui/EditorialPublicationActions.js",
      "node": "./dist/node/ui/EditorialPublicationActions.js",
      "default": "./dist/ui/EditorialPublicationActions.js"
    },
    "./ui/EditorialRecordActions": {
      "types": "./dist/ui/EditorialRecordActions.d.ts",
      "browser": "./dist/browser/ui/EditorialRecordActions.js",
      "bun": "./dist/ui/EditorialRecordActions.js",
      "node": "./dist/node/ui/EditorialRecordActions.js",
      "default": "./dist/ui/EditorialRecordActions.js"
    },
    "./ui/EditorialRecordPanel": {
      "types": "./dist/ui/EditorialRecordPanel.d.ts",
      "browser": "./dist/browser/ui/EditorialRecordPanel.js",
      "bun": "./dist/ui/EditorialRecordPanel.js",
      "node": "./dist/node/ui/EditorialRecordPanel.js",
      "default": "./dist/ui/EditorialRecordPanel.js"
    },
    "./ui/EditorialRecordView": {
      "types": "./dist/ui/EditorialRecordView.d.ts",
      "browser": "./dist/browser/ui/EditorialRecordView.js",
      "bun": "./dist/ui/EditorialRecordView.js",
      "node": "./dist/node/ui/EditorialRecordView.js",
      "default": "./dist/ui/EditorialRecordView.js"
    },
    "./ui/EditorialRecoveryControls": {
      "types": "./dist/ui/EditorialRecoveryControls.d.ts",
      "browser": "./dist/browser/ui/EditorialRecoveryControls.js",
      "bun": "./dist/ui/EditorialRecoveryControls.js",
      "node": "./dist/node/ui/EditorialRecoveryControls.js",
      "default": "./dist/ui/EditorialRecoveryControls.js"
    },
    "./ui/EditorialReviewActions": {
      "types": "./dist/ui/EditorialReviewActions.d.ts",
      "browser": "./dist/browser/ui/EditorialReviewActions.js",
      "bun": "./dist/ui/EditorialReviewActions.js",
      "node": "./dist/node/ui/EditorialReviewActions.js",
      "default": "./dist/ui/EditorialReviewActions.js"
    },
    "./ui/EditorialScheduleAction": {
      "types": "./dist/ui/EditorialScheduleAction.d.ts",
      "browser": "./dist/browser/ui/EditorialScheduleAction.js",
      "bun": "./dist/ui/EditorialScheduleAction.js",
      "node": "./dist/node/ui/EditorialScheduleAction.js",
      "default": "./dist/ui/EditorialScheduleAction.js"
    },
    "./ui/EditorialSubmitAction": {
      "types": "./dist/ui/EditorialSubmitAction.d.ts",
      "browser": "./dist/browser/ui/EditorialSubmitAction.js",
      "bun": "./dist/ui/EditorialSubmitAction.js",
      "node": "./dist/node/ui/EditorialSubmitAction.js",
      "default": "./dist/ui/EditorialSubmitAction.js"
    },
    "./ui/EditorialWorkspace": {
      "types": "./dist/ui/EditorialWorkspace.d.ts",
      "browser": "./dist/browser/ui/EditorialWorkspace.js",
      "bun": "./dist/ui/EditorialWorkspace.js",
      "node": "./dist/node/ui/EditorialWorkspace.js",
      "default": "./dist/ui/EditorialWorkspace.js"
    },
    "./ui/EditorialWorkspaceView": {
      "types": "./dist/ui/EditorialWorkspaceView.d.ts",
      "browser": "./dist/browser/ui/EditorialWorkspaceView.js",
      "bun": "./dist/ui/EditorialWorkspaceView.js",
      "node": "./dist/node/ui/EditorialWorkspaceView.js",
      "default": "./dist/ui/EditorialWorkspaceView.js"
    },
    "./ui/MarketingPlanningApproval": {
      "types": "./dist/ui/MarketingPlanningApproval.d.ts",
      "browser": "./dist/browser/ui/MarketingPlanningApproval.js",
      "bun": "./dist/ui/MarketingPlanningApproval.js",
      "node": "./dist/node/ui/MarketingPlanningApproval.js",
      "default": "./dist/ui/MarketingPlanningApproval.js"
    },
    "./ui/MarketingProposalDetails": {
      "types": "./dist/ui/MarketingProposalDetails.d.ts",
      "browser": "./dist/browser/ui/MarketingProposalDetails.js",
      "bun": "./dist/ui/MarketingProposalDetails.js",
      "node": "./dist/node/ui/MarketingProposalDetails.js",
      "default": "./dist/ui/MarketingProposalDetails.js"
    },
    "./ui/MarketingWorkspace": {
      "types": "./dist/ui/MarketingWorkspace.d.ts",
      "browser": "./dist/browser/ui/MarketingWorkspace.js",
      "bun": "./dist/ui/MarketingWorkspace.js",
      "node": "./dist/node/ui/MarketingWorkspace.js",
      "default": "./dist/ui/MarketingWorkspace.js"
    },
    "./ui/planning-approval-controller": {
      "types": "./dist/ui/planning-approval-controller.d.ts",
      "browser": "./dist/browser/ui/planning-approval-controller.js",
      "bun": "./dist/ui/planning-approval-controller.js",
      "node": "./dist/node/ui/planning-approval-controller.js",
      "default": "./dist/ui/planning-approval-controller.js"
    },
    "./ui/planning-approval-gateway": {
      "types": "./dist/ui/planning-approval-gateway.d.ts",
      "browser": "./dist/browser/ui/planning-approval-gateway.js",
      "bun": "./dist/ui/planning-approval-gateway.js",
      "node": "./dist/node/ui/planning-approval-gateway.js",
      "default": "./dist/ui/planning-approval-gateway.js"
    },
    "./ui/planning-client": {
      "types": "./dist/ui/planning-client.d.ts",
      "browser": "./dist/browser/ui/planning-client.js",
      "bun": "./dist/ui/planning-client.js",
      "node": "./dist/node/ui/planning-client.js",
      "default": "./dist/ui/planning-client.js"
    },
    "./ui/PlanningApprovalReview": {
      "types": "./dist/ui/PlanningApprovalReview.d.ts",
      "browser": "./dist/browser/ui/PlanningApprovalReview.js",
      "bun": "./dist/ui/PlanningApprovalReview.js",
      "node": "./dist/node/ui/PlanningApprovalReview.js",
      "default": "./dist/ui/PlanningApprovalReview.js"
    },
    "./ui/ReviewedMarketingWorkspace": {
      "types": "./dist/ui/ReviewedMarketingWorkspace.d.ts",
      "browser": "./dist/browser/ui/ReviewedMarketingWorkspace.js",
      "bun": "./dist/ui/ReviewedMarketingWorkspace.js",
      "node": "./dist/node/ui/ReviewedMarketingWorkspace.js",
      "default": "./dist/ui/ReviewedMarketingWorkspace.js"
    },
    "./ui/use-editorial-controller-lifetime": {
      "types": "./dist/ui/use-editorial-controller-lifetime.d.ts",
      "browser": "./dist/browser/ui/use-editorial-controller-lifetime.js",
      "bun": "./dist/ui/use-editorial-controller-lifetime.js",
      "node": "./dist/node/ui/use-editorial-controller-lifetime.js",
      "default": "./dist/ui/use-editorial-controller-lifetime.js"
    },
    "./ui/workspace-client": {
      "types": "./dist/ui/workspace-client.d.ts",
      "browser": "./dist/browser/ui/workspace-client.js",
      "bun": "./dist/ui/workspace-client.js",
      "node": "./dist/node/ui/workspace-client.js",
      "default": "./dist/ui/workspace-client.js"
    },
    "./withdrawal-worker": {
      "types": "./dist/withdrawal-worker.d.ts",
      "browser": "./dist/browser/withdrawal-worker.js",
      "bun": "./dist/withdrawal-worker.js",
      "node": "./dist/node/withdrawal-worker.js",
      "default": "./dist/withdrawal-worker.js"
    },
    "./workers": {
      "types": "./dist/workers.d.ts",
      "browser": "./dist/browser/workers.js",
      "bun": "./dist/workers.js",
      "node": "./dist/node/workers.js",
      "default": "./dist/workers.js"
    }
  }
}
```

## Dependencies

Metadata status: complete pinned manifest.

### Runtime dependencies

- [@lssm-tech/integration.editorial-publishing](https://lssm.co/docs/packages/integration.editorial-publishing/): `workspace:^`
- [@lssm-tech/integration.provider-github](https://lssm.co/docs/packages/integration.provider-github/): `workspace:^`
- [@lssm-tech/integration.provider-google-ads](https://lssm.co/docs/packages/integration.provider-google-ads/): `workspace:^`
- [@lssm-tech/integration.provider-meta-ads](https://lssm.co/docs/packages/integration.provider-meta-ads/): `workspace:^`
- [@lssm-tech/integration.provider-tiktok](https://lssm.co/docs/packages/integration.provider-tiktok/): `workspace:^`
- [@lssm-tech/lib.advertising-runtime](https://lssm.co/docs/packages/lib.advertising-runtime/): `workspace:^`
- [@lssm-tech/lib.content-analysis-spec](https://lssm.co/docs/packages/lib.content-analysis-spec/): `workspace:^`
- [@lssm-tech/lib.content-gen](https://lssm.co/docs/packages/lib.content-gen/): `workspace:^`
- [@lssm-tech/lib.contracts-integrations](https://lssm.co/docs/packages/lib.contracts-integrations/): `workspace:^`
- [@lssm-tech/lib.contracts-runtime-core](https://lssm.co/docs/packages/lib.contracts-runtime-core/): `workspace:^`
- [@lssm-tech/lib.contracts-runtime-server-mcp](https://lssm.co/docs/packages/lib.contracts-runtime-server-mcp/): `workspace:^`
- [@lssm-tech/lib.contracts-runtime-server-rest](https://lssm.co/docs/packages/lib.contracts-runtime-server-rest/): `workspace:^`
- [@lssm-tech/lib.contracts-spec](https://lssm.co/docs/packages/lib.contracts-spec/): `workspace:^`
- [@lssm-tech/lib.contracts-spec-core](https://lssm.co/docs/packages/lib.contracts-spec-core/): `workspace:^`
- [@lssm-tech/lib.creator-operations-runtime](https://lssm.co/docs/packages/lib.creator-operations-runtime/): `workspace:^`
- [@lssm-tech/lib.creator-operations-spec](https://lssm.co/docs/packages/lib.creator-operations-spec/): `workspace:^`
- [@lssm-tech/lib.design-system](https://lssm.co/docs/packages/lib.design-system/): `workspace:^`
- [@lssm-tech/lib.growth-runtime](https://lssm.co/docs/packages/lib.growth-runtime/): `workspace:^`
- [@lssm-tech/lib.growth-spec](https://lssm.co/docs/packages/lib.growth-spec/): `workspace:^`
- [@lssm-tech/module.content-generation](https://lssm.co/docs/packages/module.content-generation/): `workspace:^`
- [@lssm-tech/module.creator-operations](https://lssm.co/docs/packages/module.creator-operations/): `workspace:^`
- [@lssm-tech/module.editorial](https://lssm.co/docs/packages/module.editorial/): `workspace:^`
- [@lssm-tech/module.growth-os](https://lssm.co/docs/packages/module.growth-os/): `workspace:^`
- [@lssm-tech/module.self-improving-system](https://lssm.co/docs/packages/module.self-improving-system/): `workspace:^`
- [@lssm-tech/module.social-media](https://lssm.co/docs/packages/module.social-media/): `workspace:^`
- `react`: `catalog:`

### Peer dependencies

No declarations in the inspected manifest.

### Optional dependencies

No declarations in the inspected manifest.

### Development dependencies

- `@electric-sql/pglite`: `catalog:data`
- [@lssm-tech/integration.growth-persistence](https://lssm.co/docs/packages/integration.growth-persistence/): `workspace:^`
- [@lssm-tech/integration.provider-linkedin](https://lssm.co/docs/packages/integration.provider-linkedin/): `workspace:^`
- [@lssm-tech/integration.provider-x](https://lssm.co/docs/packages/integration.provider-x/): `workspace:^`
- [@lssm-tech/lib.self-improving-system-runtime](https://lssm.co/docs/packages/lib.self-improving-system-runtime/): `workspace:^`
- [@lssm-tech/tool.bun](https://lssm.co/docs/packages/tool.bun/): `workspace:*`
- [@lssm-tech/tool.typescript](https://lssm.co/docs/packages/tool.typescript/): `workspace:*`
- `@types/bun`: `catalog:types`
- `@types/react`: `catalog:types`
- `@types/react-dom`: `catalog:types`
- `react-dom`: `catalog:`
- `typescript`: `catalog:`

### Peer dependency metadata

```json
{}
```

### Bundled dependencies

```json
null
```

## Package scripts

Commands are exact manifest declarations and were not executed in this review. Script metadata status: complete pinned manifest.

```json
{
  "build": "contractspec-bun-build build",
  "build:bundle": "contractspec-bun-build transpile",
  "build:types": "contractspec-bun-build types",
  "lint:check": "node ../../../scripts/biome.cjs check .",
  "test": "bun test",
  "prebuild": "contractspec-bun-build prebuild",
  "typecheck": "tsgo --noEmit",
  "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose"
}
```

## Declared documentation links

- [Marketing Operations](https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/bundles/marketing-operations) — verified pinned repository path.

```json
{
  "url": "https://github.com/lssm-tech/contractspec/tree/main/packages/bundles/marketing-operations",
  "kind": "readme"
}
```

## Existing agent-guide projection

```json
{
  "path": "packages/apps/web-landing/public/llms-packages/bundle.marketing-operations.txt",
  "route": "/llms/bundle.marketing-operations",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/bundle.marketing-operations.txt",
  "blobSha": "9ff3331f5689f43441ee254159b603df90adc9ef",
  "sourcePin": "bcc79fcc27c4d801c2119bef81ddcce7b4e86498",
  "bodyEqualsReadme": true,
  "aggregateSourcePath": "packages/apps/web-landing/public/llms-full.txt",
  "aggregateBlobSha": "691b1d33efee24c440598b9106c81432f56aafaf"
}
```
