Skip to content

feat(cli): purposes push, scope helpers, and push validation (P0)#276

Draft
michaelfarrell76 wants to merge 7 commits into
mainfrom
michaelfarrell76/push-gaps-p0
Draft

feat(cli): purposes push, scope helpers, and push validation (P0)#276
michaelfarrell76 wants to merge 7 commits into
mainfrom
michaelfarrell76/push-gaps-p0

Conversation

@michaelfarrell76

Copy link
Copy Markdown
Member

Summary

  • Ports and supersedes PR #13: adds purposes, preference-options, and consent-workflow-triggers push support via new SDK sync modules
  • Wires sync order: preference-optionspurposesconsent-workflow-triggersconsent-manager
  • Adds RPC helpers: derivePushScopesFromTranscendInput, hasTranscendConfigSection, stripEmptyTranscendConfigSections, validateTranscendInputForPush, TRANSCEND_CONFIG_RESOURCES

Test plan

  • pnpm run --dir packages/sdk build
  • pnpm run --dir packages/cli build
  • pnpm run --dir packages/cli test
  • Push { purposes: [...] } to staging org → pull confirms purpose exists
  • Push { "action-items": [] }derivePushScopesFromTranscendInput excludes action-item scopes
  • Push invalid { attributes: [{ type: "DATE" }] } → decode error before GraphQL

Consumer impact

Main monorepo Retool RPC can replace truthy scope workaround with exported helpers after release.

Notes

  • Builds on Ben's PR #13 / cli#519, refactored into @transcend-io/sdk
  • default-consent still not in purpose create/update GraphQL inputs (documented limitation)
  • Stacked follow-ups: #TBD SyncResult PR, #TBD schema export PR

Made with Cursor

Port PR #13 sync support for purposes, preference-options, and
consent-workflow-triggers into the SDK and wire them into tr-push.
Add derivePushScopesFromTranscendInput, hasTranscendConfigSection,
stripEmptyTranscendConfigSections, validateTranscendInputForPush, and
TRANSCEND_CONFIG_RESOURCES for RPC consumers.
@pkg-pr-new

pkg-pr-new Bot commented Jul 8, 2026

Copy link
Copy Markdown

Open in StackBlitz

@transcend-io/airgap.js-types

pnpm add https://pkg.pr.new/@transcend-io/airgap.js-types@276
yarn add https://pkg.pr.new/@transcend-io/airgap.js-types@276.tgz

@transcend-io/cli

pnpm add https://pkg.pr.new/@transcend-io/cli@276
yarn add https://pkg.pr.new/@transcend-io/cli@276.tgz

@transcend-io/internationalization

pnpm add https://pkg.pr.new/@transcend-io/internationalization@276
yarn add https://pkg.pr.new/@transcend-io/internationalization@276.tgz

@transcend-io/privacy-types

pnpm add https://pkg.pr.new/@transcend-io/privacy-types@276
yarn add https://pkg.pr.new/@transcend-io/privacy-types@276.tgz

@transcend-io/sdk

pnpm add https://pkg.pr.new/@transcend-io/sdk@276
yarn add https://pkg.pr.new/@transcend-io/sdk@276.tgz

@transcend-io/type-utils

pnpm add https://pkg.pr.new/@transcend-io/type-utils@276
yarn add https://pkg.pr.new/@transcend-io/type-utils@276.tgz

@transcend-io/utils

pnpm add https://pkg.pr.new/@transcend-io/utils@276
yarn add https://pkg.pr.new/@transcend-io/utils@276.tgz

@transcend-io/mcp

pnpm add https://pkg.pr.new/@transcend-io/mcp@276
yarn add https://pkg.pr.new/@transcend-io/mcp@276.tgz

@transcend-io/mcp-server-admin

pnpm add https://pkg.pr.new/@transcend-io/mcp-server-admin@276
yarn add https://pkg.pr.new/@transcend-io/mcp-server-admin@276.tgz

@transcend-io/mcp-server-assessment

pnpm add https://pkg.pr.new/@transcend-io/mcp-server-assessment@276
yarn add https://pkg.pr.new/@transcend-io/mcp-server-assessment@276.tgz

@transcend-io/mcp-server-base

pnpm add https://pkg.pr.new/@transcend-io/mcp-server-base@276
yarn add https://pkg.pr.new/@transcend-io/mcp-server-base@276.tgz

@transcend-io/mcp-server-consent

pnpm add https://pkg.pr.new/@transcend-io/mcp-server-consent@276
yarn add https://pkg.pr.new/@transcend-io/mcp-server-consent@276.tgz

@transcend-io/mcp-server-discovery

pnpm add https://pkg.pr.new/@transcend-io/mcp-server-discovery@276
yarn add https://pkg.pr.new/@transcend-io/mcp-server-discovery@276.tgz

@transcend-io/mcp-server-docs

pnpm add https://pkg.pr.new/@transcend-io/mcp-server-docs@276
yarn add https://pkg.pr.new/@transcend-io/mcp-server-docs@276.tgz

@transcend-io/mcp-server-dsr

pnpm add https://pkg.pr.new/@transcend-io/mcp-server-dsr@276
yarn add https://pkg.pr.new/@transcend-io/mcp-server-dsr@276.tgz

@transcend-io/mcp-server-inventory

pnpm add https://pkg.pr.new/@transcend-io/mcp-server-inventory@276
yarn add https://pkg.pr.new/@transcend-io/mcp-server-inventory@276.tgz

@transcend-io/mcp-server-preferences

pnpm add https://pkg.pr.new/@transcend-io/mcp-server-preferences@276
yarn add https://pkg.pr.new/@transcend-io/mcp-server-preferences@276.tgz

@transcend-io/mcp-server-workflows

pnpm add https://pkg.pr.new/@transcend-io/mcp-server-workflows@276
yarn add https://pkg.pr.new/@transcend-io/mcp-server-workflows@276.tgz

commit: 14fb1d8

Comment thread .changeset/push-gaps-p0.md Outdated
Co-authored-by: Michael Farrell <mkfrl09@gmail.com>
[TranscendPullResource.ConsentWorkflowTriggers]: {
description: 'Consent workflow trigger definitions.',
markdownLinks: [
'[Consent Management -> Consent Workflows]\

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

michaelfarrell76 and others added 2 commits July 7, 2026 19:58
* feat(cli): return SyncResult from syncConfigurationToTranscend

Add SyncResult, SyncError, and createCollectingLogger in utils. Push
now surfaces per-resource errors instead of a bare boolean. Injectable
logger option supports MCP debug=true log capture.

* feat(cli): export getTranscendConfigurationSchema for MCP agents (#277)

Add runtime JSON Schema export from TranscendInput, improve codec docs
for common agent mistakes, and regenerate transcend-yml schema files.
Add summarizeTranscendConfigSections and wire validateTranscendInputForPush into tr-push so agents get early errors on unsupported keys. Add DSR workflow-configs pull/push, resolve data-silo-titles on consent workflow trigger sync, and drop over-scoped ViewGlobalAttributes from action-items push scopes.
Update generated transcend.yml JSON schema and resource scopes table after adding workflow-configs and scope helper changes.
…chema

Purpose create/update used non-existent TrackingPurpose*Input types and a trackingPurpose response field; switch to CreatePurposeInput/UpdatePurposeInput and the purpose payload. Send name from input.name (not title), default the required description, and unnest the preference-option-values input. Consolidate duplicate push helper tests under src/lib/tests.
Only Array.prototype.map is used here; the utils map import was dead.
@michaelfarrell76

Copy link
Copy Markdown
Member Author

Superseded by split PR stack:

Monolith preserved on backup/push-gaps-p0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant