Skip to content

SP-1173: extend CUI marking to single-file exports - #412

Draft
Dennis Woditsch (dwoditsch) wants to merge 3 commits into
feat/SP-1173-cui-marking-zip-exportsfrom
feat/SP-1173-cui-marking-single-file-exports
Draft

SP-1173: extend CUI marking to single-file exports#412
Dennis Woditsch (dwoditsch) wants to merge 3 commits into
feat/SP-1173-cui-marking-zip-exportsfrom
feat/SP-1173-cui-marking-single-file-exports

Conversation

@dwoditsch

@dwoditschDennis Woditsch (dwoditsch) commented Aug 10, 2026

Copy link
Copy Markdown

Description

Stacked on #411, which finished the archive row. This PR takes the row below it: the six exports whose artifact is one .yml or .json file. Nothing new mechanically, they go through the same path the --json reports use, so a classified file becomes CUI - <name>.zip.

export bookmarks has a --file option, so a user-chosen name is marked too.

After this PR CuiFileService is the only module in the CLI that writes a file a user receives. The directory tree is the single path left.

Scope: how the write is triggered

TriggerCommandsCUI marking
--json listings and reportslist spaces, list packagesDone in #405, together with the marking mechanism
--json listings and reportslist assets/assignments/data-pools, config *, t2tc package list/diff, deployment *, asset-registry *Done in #407
-o, --outputToJsonFile reportsanalyze/import action-flows, export data-pool, import data-pools, t2tc package import reportDone in #410
artifact is already an archiveconfig package export --zip, config branch export --zip, t2tc package export, export action-flows, pull packageDone in #411
single non-archive exportpull asset/skill/data-pool/view-bookmarks/bookmarks, export bookmarksThis PR
output is a directoryconfig package export, config branch export, t2tc package export --unzipTo follow: cover sheet into the directory, prefix the directory name
--gitBranch variantsconfig package export, config branch export, t2tc package exportOut of scope, nothing reaches local disk
no output flagconsole-only listings, profile/git-profile/log filesOut of scope

Relevant links

Checklist

  • I have self-reviewed this PR
  • I have tested the change and proved that it works in different scenarios
  • I have updated docs if needed

Made with Cursor

Route BaseManager.pull through CuiFileService so the five pull commands
that emit one .yml or .json file get the same marking as the archive
exports, and do the same for the standalone export bookmarks path.
Includes-AI-Code: true
Co-authored-by: Cursor <cursoragent@cursor.com>
One case per call site, asserting the classified name and that the
archive carries the cover sheet plus the original payload. The asset
case reads its entry back as YAML.
Includes-AI-Code: true
Co-authored-by: Cursor <cursoragent@cursor.com>
BaseManager.update had no test. Cover both branches through
update data-pool, its only caller, which also needed a PUT error
helper in the shared axios mock.
Includes-AI-Code: true
Co-authored-by: Cursor <cursoragent@cursor.com>
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate FailedQuality Gate failed

Failed conditions
83.3% Coverage on New Code (required ≥ 85%)

See analysis details on SonarQube Cloud

@@ -18,24 +15,14 @@ export abstract class BaseManager {
}

public async pull(): Promise<any> {

Choose a reason for hiding this comment

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

Suggested change
publicasyncpull(): Promise<any>{
publicasyncpull(): Promise<void>{

I don't work that much with Promises, but I think if you return nothing, it has to Promise

Sign up for freeto 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.

2 participants

@dwoditsch@nikolai-celonis