@peernova/cuneiform-sf 1.0.2 → 1.0.4-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +81 -30
- package/README.md +59 -95
- package/messages/compatibility.check.md +71 -0
- package/messages/cuneiform.access.md +138 -0
- package/messages/definition.create.md +511 -0
- package/messages/definition.export.md +88 -0
- package/messages/definition.get.md +147 -0
- package/messages/definition.import.md +65 -0
- package/messages/definition.list.md +264 -0
- package/messages/definition.purge.md +318 -0
- package/messages/definition.update.md +80 -0
- package/messages/mcp.serve.md +66 -0
- package/messages/object.describe.md +201 -0
- package/messages/object.list.md +443 -0
- package/messages/org.details.md +386 -0
- package/messages/org.reset.md +71 -0
- package/messages/profile.md +231 -0
- package/messages/profile.request.cancel.md +143 -0
- package/messages/profile.request.delete.md +139 -0
- package/messages/profile.request.list.md +89 -0
- package/messages/summary.purge.md +218 -0
- package/messages/summary.reprofile.md +150 -0
- package/messages/summary.stop.md +157 -0
- package/messages/user.details.md +501 -0
- package/oclif.lock +3021 -2224
- package/oclif.manifest.json +2 -116
- package/package.json +84 -19
- package/lib/commands/cuneiform/about.d.ts +0 -13
- package/lib/commands/cuneiform/about.js +0 -26
- package/lib/commands/cuneiform/about.js.map +0 -1
- package/lib/commands/hello/world.d.ts +0 -14
- package/lib/commands/hello/world.js +0 -27
- package/lib/commands/hello/world.js.map +0 -1
- package/lib/index.d.ts +0 -2
- package/lib/index.js +0 -2
- package/lib/index.js.map +0 -1
- package/messages/cuneiform.about.md +0 -19
- package/messages/hello.world.md +0 -29
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Transition queued profiling requests to Canceled status before they begin processing — prevent incorrect or unnecessary requests from generating summaries.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
When profiling is triggered, the system creates a request record that tracks execution. Requests begin in a Queued state, waiting for the backend to process them. This command transitions queued requests to Canceled status before processing begins — preventing them from generating summaries that would need to be identified and cleaned up later.
|
|
8
|
+
|
|
9
|
+
IMPORTANT: Cancel applies to QUEUED requests only. Once a request has been processed and its summary is actively executing, the request is complete. To halt an in-progress summary, use `sf cuneiform summary stop` instead.
|
|
10
|
+
|
|
11
|
+
TWO SELECTION MODES (mutually exclusive):
|
|
12
|
+
|
|
13
|
+
- **Broad** (`--all`) — Cancel all cancellable requests (Queued status)
|
|
14
|
+
- **Targeted** (`--request-ids`) — Cancel specific requests by Salesforce record ID
|
|
15
|
+
|
|
16
|
+
SAFETY: Completed, rejected, and already-canceled requests are automatically excluded. Use --dry-run to preview what would be canceled before committing. A confirmation prompt shows the count before proceeding — use --no-prompt to skip for scripted use.
|
|
17
|
+
|
|
18
|
+
Cancellation transitions status only — it does not delete records. Canceled requests remain visible in `profile request list` until permanently removed with `profile request delete`.
|
|
19
|
+
|
|
20
|
+
CANCEL vs STOP — these address different objects at different lifecycle stages:
|
|
21
|
+
|
|
22
|
+
- **Cancel** prevents a Request from being processed. No Summary is created.
|
|
23
|
+
- **Stop** halts an active Summary that is already executing. Preserves completed fields.
|
|
24
|
+
|
|
25
|
+
By the time a Summary exists, its originating Request is already complete. These operations do not overlap.
|
|
26
|
+
|
|
27
|
+
WHEN TO USE:
|
|
28
|
+
|
|
29
|
+
- Wrong definition submitted — cancel the queued request before it generates incorrect results
|
|
30
|
+
- Pre-maintenance window — clear the queue before planned downtime
|
|
31
|
+
- Configuration issue discovered — pause processing until the issue is resolved
|
|
32
|
+
- Selective cleanup in shared orgs — cancel specific requests by ID while preserving valid requests
|
|
33
|
+
|
|
34
|
+
NATURAL LANGUAGE → FLAG MAPPING:
|
|
35
|
+
"cancel everything in the queue" → --all
|
|
36
|
+
"cancel just this one request" → --request-ids a0Xxx0000001AAA
|
|
37
|
+
"what would be canceled?" → --all --dry-run
|
|
38
|
+
"cancel without asking" → --all --no-prompt
|
|
39
|
+
|
|
40
|
+
COMMAND SEQUENCE:
|
|
41
|
+
`profile` or `profile request list` → **`profile request cancel`** → `profile request delete` (remove artifacts) or re-submit with corrected parameters
|
|
42
|
+
|
|
43
|
+
# flags.target-org.summary
|
|
44
|
+
|
|
45
|
+
Cancel profiling requests in this Salesforce org. Specify the org alias or username when you have multiple authenticated orgs.
|
|
46
|
+
|
|
47
|
+
# flags.all.summary
|
|
48
|
+
|
|
49
|
+
Cancel all queued requests in a single operation. Use for pre-maintenance windows, configuration corrections, or full queue pauses when processing should be deferred. Mutually exclusive with --request-ids.
|
|
50
|
+
|
|
51
|
+
# flags.request-ids.summary
|
|
52
|
+
|
|
53
|
+
Cancel specific profiling requests by Salesforce record ID (comma-separated). Use for targeted cancellation when only some queued requests are problematic — preserving valid requests in shared environments. Find request IDs with `profile request list`. Mutually exclusive with --all.
|
|
54
|
+
|
|
55
|
+
# flags.dry-run.summary
|
|
56
|
+
|
|
57
|
+
Preview which requests would be canceled, showing the same request details as a real cancellation. Use first in production orgs or shared environments to verify scope before committing — particularly important when other users have valid requests in the queue.
|
|
58
|
+
|
|
59
|
+
# flags.no-prompt.summary
|
|
60
|
+
|
|
61
|
+
Skip the confirmation prompt and cancel immediately. Use in scripts or automation where interactive prompts are not available. JSON mode also skips the prompt.
|
|
62
|
+
|
|
63
|
+
# examples
|
|
64
|
+
|
|
65
|
+
- Preview what would be canceled — verify scope before committing:
|
|
66
|
+
|
|
67
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --all --dry-run
|
|
68
|
+
|
|
69
|
+
- Cancel all queued requests — clear the processing queue before maintenance:
|
|
70
|
+
|
|
71
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --all
|
|
72
|
+
|
|
73
|
+
- Cancel specific requests by ID — targeted cancellation in shared orgs:
|
|
74
|
+
|
|
75
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --request-ids a0Xxx0000001AAA,a0Xxx0000002BBB
|
|
76
|
+
|
|
77
|
+
- Cancel immediately for scripted workflows:
|
|
78
|
+
|
|
79
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --all --no-prompt
|
|
80
|
+
|
|
81
|
+
- Cancel specific requests as JSON output for automation:
|
|
82
|
+
|
|
83
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --request-ids a0Xxx0000001AAA --json
|
|
84
|
+
|
|
85
|
+
# errors.noTargetOrg
|
|
86
|
+
|
|
87
|
+
Could not determine target org username.
|
|
88
|
+
|
|
89
|
+
# errors.mutuallyExclusive
|
|
90
|
+
|
|
91
|
+
The --all and --request-ids flags are mutually exclusive. Provide one or the other.
|
|
92
|
+
|
|
93
|
+
# errors.noSelection
|
|
94
|
+
|
|
95
|
+
You must provide either --all or --request-ids to specify which requests to cancel.
|
|
96
|
+
|
|
97
|
+
# errors.cancelFailed
|
|
98
|
+
|
|
99
|
+
Failed to cancel profiling requests: %s
|
|
100
|
+
|
|
101
|
+
# errors.noCancellable
|
|
102
|
+
|
|
103
|
+
No cancellable requests found matching the specified criteria.
|
|
104
|
+
|
|
105
|
+
# errors.partialFailure
|
|
106
|
+
|
|
107
|
+
Some requests could not be canceled. %s of %s succeeded.
|
|
108
|
+
|
|
109
|
+
# errors.invalidIds
|
|
110
|
+
|
|
111
|
+
Invalid request ID format: %s
|
|
112
|
+
|
|
113
|
+
# prompt.confirm.singular
|
|
114
|
+
|
|
115
|
+
Cancel this profiling request?
|
|
116
|
+
|
|
117
|
+
# prompt.confirm.plural
|
|
118
|
+
|
|
119
|
+
Cancel these %s profiling requests?
|
|
120
|
+
|
|
121
|
+
# output.dryRunTitle
|
|
122
|
+
|
|
123
|
+
Dry Run — Requests That Would Be Canceled
|
|
124
|
+
|
|
125
|
+
# output.cancelled
|
|
126
|
+
|
|
127
|
+
Successfully canceled %s profiling request(s).
|
|
128
|
+
|
|
129
|
+
# output.noCancellable
|
|
130
|
+
|
|
131
|
+
No cancellable requests found.
|
|
132
|
+
|
|
133
|
+
# output.dryRunSummary
|
|
134
|
+
|
|
135
|
+
%s request(s) would be canceled.
|
|
136
|
+
|
|
137
|
+
# output.userCancelled
|
|
138
|
+
|
|
139
|
+
Cancellation aborted by user.
|
|
140
|
+
|
|
141
|
+
# output.failedHeader
|
|
142
|
+
|
|
143
|
+
Failed to Cancel
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Permanently remove canceled and rejected profiling requests — cleaning up terminal request artifacts that never produced a summary.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Every profiling run begins with a request record that tracks who initiated profiling, which definition was targeted, and the execution outcome. Canceled and rejected requests are terminal — they never produced a summary and serve no ongoing purpose. This command permanently removes them.
|
|
8
|
+
|
|
9
|
+
ELIGIBLE STATUSES: Only Canceled and Rejected requests can be deleted. The eligibility filter is enforced at the query level — Queued and Completed requests are structurally excluded.
|
|
10
|
+
|
|
11
|
+
PROTECTED STATUSES: Completed requests maintain the profiling user context reference needed for reprofiling. They are cascade-deleted automatically when their summary is purged via `summary purge`. Queued requests must be canceled first with `profile request cancel` before they become eligible for deletion.
|
|
12
|
+
|
|
13
|
+
TWO SELECTION MODES (mutually exclusive):
|
|
14
|
+
|
|
15
|
+
- **Broad** (`--all`) — Delete all deletable requests (Canceled and Rejected)
|
|
16
|
+
- **Targeted** (`--request-ids`) — Delete specific requests by Salesforce record ID
|
|
17
|
+
|
|
18
|
+
LIFECYCLE CONTEXT: Delete removes terminal, summary-less requests:
|
|
19
|
+
|
|
20
|
+
1. `profile request cancel` — transition queued requests to Canceled status
|
|
21
|
+
2. `profile request delete` — permanently remove Canceled and Rejected requests
|
|
22
|
+
3. `summary purge` — cascade-deletes Completed requests automatically
|
|
23
|
+
|
|
24
|
+
WHEN TO USE:
|
|
25
|
+
|
|
26
|
+
- Post-cancellation cleanup — remove canceled request artifacts after resolving the issue
|
|
27
|
+
- Engagement close-out — clean up the request history before org handoff
|
|
28
|
+
- Periodic housekeeping — remove old canceled and rejected requests to keep the request list focused
|
|
29
|
+
- CI pipeline reset — automate scratch org cleanup between test runs
|
|
30
|
+
|
|
31
|
+
NATURAL LANGUAGE → FLAG MAPPING:
|
|
32
|
+
"delete all processed requests" → --all
|
|
33
|
+
"delete just this one request" → --request-ids a0Xxx0000001AAA
|
|
34
|
+
"what would be deleted?" → --all --dry-run
|
|
35
|
+
"delete without asking" → --all --no-prompt
|
|
36
|
+
|
|
37
|
+
COMMAND SEQUENCE: `profile request cancel` (cancel queued requests) → `profile request delete` (remove canceled/rejected) → `summary purge` (remove summaries, cascade-delete completed requests) → `definition purge` (remove definitions)
|
|
38
|
+
|
|
39
|
+
# flags.target-org.summary
|
|
40
|
+
|
|
41
|
+
Salesforce org containing the profiling requests to delete. The command validates Cuneiform installation before executing.
|
|
42
|
+
|
|
43
|
+
# flags.all.summary
|
|
44
|
+
|
|
45
|
+
Delete all deletable requests (Canceled and Rejected status). Targets request artifacts that never produced summaries. Completed requests are excluded — they are cascade-deleted when their summary is purged. Mutually exclusive with --request-ids.
|
|
46
|
+
|
|
47
|
+
# flags.request-ids.summary
|
|
48
|
+
|
|
49
|
+
Specific profiling request IDs to delete (e.g., --request-ids a0Xxx0000001AAA,a0Xxx0000002BBB). Targets individual canceled or rejected requests. Look up request IDs with `profile request list`. Mutually exclusive with --all.
|
|
50
|
+
|
|
51
|
+
# flags.dry-run.summary
|
|
52
|
+
|
|
53
|
+
Preview what would be deleted without making changes. Shows the same request details and counts as a real deletion. Use this first — deletion is permanent and cannot be undone.
|
|
54
|
+
|
|
55
|
+
# flags.no-prompt.summary
|
|
56
|
+
|
|
57
|
+
Skip the confirmation prompt and delete immediately. Use for scripted cleanup in CI pipelines and automation workflows. The irreversibility warning is bypassed — the caller accepts permanent deletion programmatically.
|
|
58
|
+
|
|
59
|
+
# examples
|
|
60
|
+
|
|
61
|
+
- Preview what would be deleted (deletion is permanent — always preview first):
|
|
62
|
+
|
|
63
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --all --dry-run
|
|
64
|
+
|
|
65
|
+
- Delete all canceled and rejected requests after resolving the underlying issues:
|
|
66
|
+
|
|
67
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --all
|
|
68
|
+
|
|
69
|
+
- Delete specific requests by ID for targeted cleanup:
|
|
70
|
+
|
|
71
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --request-ids a0Xxx0000001AAA,a0Xxx0000002BBB
|
|
72
|
+
|
|
73
|
+
- Scripted scratch org reset in CI pipelines:
|
|
74
|
+
|
|
75
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --all --no-prompt
|
|
76
|
+
|
|
77
|
+
- Capture deletion results as JSON for engagement close-out documentation:
|
|
78
|
+
|
|
79
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --all --json
|
|
80
|
+
|
|
81
|
+
# errors.noTargetOrg
|
|
82
|
+
|
|
83
|
+
Could not determine target org username.
|
|
84
|
+
|
|
85
|
+
# errors.mutuallyExclusive
|
|
86
|
+
|
|
87
|
+
The --all and --request-ids flags are mutually exclusive. Provide one or the other.
|
|
88
|
+
|
|
89
|
+
# errors.noSelection
|
|
90
|
+
|
|
91
|
+
You must provide either --all or --request-ids to specify which requests to delete.
|
|
92
|
+
|
|
93
|
+
# errors.deleteFailed
|
|
94
|
+
|
|
95
|
+
Failed to delete profiling requests: %s
|
|
96
|
+
|
|
97
|
+
# errors.noDeletable
|
|
98
|
+
|
|
99
|
+
No deletable requests found matching the specified criteria.
|
|
100
|
+
|
|
101
|
+
# errors.partialFailure
|
|
102
|
+
|
|
103
|
+
Some requests could not be deleted. %s of %s succeeded.
|
|
104
|
+
|
|
105
|
+
# errors.invalidIds
|
|
106
|
+
|
|
107
|
+
Invalid request ID format: %s
|
|
108
|
+
|
|
109
|
+
# prompt.confirm.singular
|
|
110
|
+
|
|
111
|
+
Permanently delete this profiling request? This action cannot be undone.
|
|
112
|
+
|
|
113
|
+
# prompt.confirm.plural
|
|
114
|
+
|
|
115
|
+
Permanently delete these %s profiling requests? This action cannot be undone.
|
|
116
|
+
|
|
117
|
+
# output.dryRunTitle
|
|
118
|
+
|
|
119
|
+
Dry Run — Requests That Would Be Deleted
|
|
120
|
+
|
|
121
|
+
# output.deleted
|
|
122
|
+
|
|
123
|
+
Successfully deleted %s profiling request(s).
|
|
124
|
+
|
|
125
|
+
# output.noDeletable
|
|
126
|
+
|
|
127
|
+
No deletable requests found.
|
|
128
|
+
|
|
129
|
+
# output.dryRunSummary
|
|
130
|
+
|
|
131
|
+
%s request(s) would be deleted.
|
|
132
|
+
|
|
133
|
+
# output.userCancelled
|
|
134
|
+
|
|
135
|
+
Deletion aborted by user.
|
|
136
|
+
|
|
137
|
+
# output.failedHeader
|
|
138
|
+
|
|
139
|
+
Failed to Delete
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Retrieve profiling request execution records — see which requests are queued, completed, rejected, or canceled across the org.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Profiling requests are the execution records of the KYCD journey — each one tracks who submitted profiling, against which definition, and the outcome. This command retrieves those records and displays them as a six-column table: request name, status, target object, parent definition name, submitted by (user), and created date.
|
|
8
|
+
|
|
9
|
+
The command is read-only. For cancelling queued requests, use `profile request cancel`. For deleting terminal requests, use `profile request delete`.
|
|
10
|
+
|
|
11
|
+
LIFECYCLE CONTEXT: Profiling requests are created when `sf cuneiform profile` runs. Each request starts as Queued and ends in one of three terminal states: Completed (summary created and executing independently), Rejected (validation failed or capacity exceeded), or Canceled (user stopped it before processing). There are exactly 4 request statuses.
|
|
12
|
+
|
|
13
|
+
WHEN TO USE:
|
|
14
|
+
|
|
15
|
+
- After submitting profiling — "Did my requests complete? Are they still queued?"
|
|
16
|
+
- To triage rejections — filter by Rejected status to isolate problematic requests
|
|
17
|
+
- For multi-user coordination — the submitted-by column shows who triggered each request
|
|
18
|
+
- To check queue depth — see how many requests are waiting to be processed
|
|
19
|
+
|
|
20
|
+
RELATED COMMANDS:
|
|
21
|
+
|
|
22
|
+
- `sf cuneiform profile` — creates the requests this command lists
|
|
23
|
+
- `sf cuneiform profile request cancel` — cancel queued requests that should not be processed
|
|
24
|
+
- `sf cuneiform profile request delete` — permanently remove processed requests
|
|
25
|
+
- `sf cuneiform definition get` — check profiling results at the definition level
|
|
26
|
+
|
|
27
|
+
NATURAL LANGUAGE → FLAG MAPPING:
|
|
28
|
+
"show me all requests" → (no flags, lists all)
|
|
29
|
+
"what's still queued?" → --status Queued
|
|
30
|
+
"were any rejected?" → --status Rejected
|
|
31
|
+
"show canceled requests" → --status Canceled
|
|
32
|
+
"show more results" → --limit 100
|
|
33
|
+
|
|
34
|
+
COMMAND SEQUENCE:
|
|
35
|
+
`profile` → **`profile request list`** → `profile request cancel` or `summary stop` (when intervention is needed)
|
|
36
|
+
|
|
37
|
+
# flags.target-org.summary
|
|
38
|
+
|
|
39
|
+
Retrieve profiling requests from this Salesforce org. Specify the org alias or username when you have multiple authenticated orgs.
|
|
40
|
+
|
|
41
|
+
# flags.status.summary
|
|
42
|
+
|
|
43
|
+
Filter by request lifecycle status: Queued (waiting to be processed), Completed (summary created and executing), Rejected (validation failed or capacity exceeded), or Canceled (stopped before processing). There are exactly 4 valid values. Use --status Rejected for triage or --status Queued to check queue depth.
|
|
44
|
+
|
|
45
|
+
# flags.limit.summary
|
|
46
|
+
|
|
47
|
+
Control how many requests are displayed per page (default: 25, max: 200). Increase for large profiling runs where 25 results may not show the full picture.
|
|
48
|
+
|
|
49
|
+
# examples
|
|
50
|
+
|
|
51
|
+
- List all profiling requests — monitor progress after submitting profiling:
|
|
52
|
+
|
|
53
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg
|
|
54
|
+
|
|
55
|
+
- Triage rejected requests — isolate requests that need attention:
|
|
56
|
+
|
|
57
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --status Rejected
|
|
58
|
+
|
|
59
|
+
- Check queue depth — see how many requests are waiting for processing:
|
|
60
|
+
|
|
61
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --status Queued
|
|
62
|
+
|
|
63
|
+
- Confirm completed requests — verify which requests produced summaries:
|
|
64
|
+
|
|
65
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --status Completed
|
|
66
|
+
|
|
67
|
+
- View more results in a large profiling run:
|
|
68
|
+
|
|
69
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --limit 100
|
|
70
|
+
|
|
71
|
+
- Produce machine-readable output for scripting or dashboards:
|
|
72
|
+
|
|
73
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --json
|
|
74
|
+
|
|
75
|
+
# errors.noTargetOrg
|
|
76
|
+
|
|
77
|
+
Could not determine target org username.
|
|
78
|
+
|
|
79
|
+
# errors.queryFailed
|
|
80
|
+
|
|
81
|
+
Failed to list profiling requests: %s
|
|
82
|
+
|
|
83
|
+
# output.title
|
|
84
|
+
|
|
85
|
+
Profiling Requests
|
|
86
|
+
|
|
87
|
+
# output.noRequests
|
|
88
|
+
|
|
89
|
+
No profiling requests found.
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Delete profiling summaries and their child records — use --prune to preserve the latest summary per definition while removing older results.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Every profiling run creates a summary — a result record containing Field Results, Value Results, and KPI Results. Over repeated profiling cycles, summaries accumulate. An org with 20 definitions profiled weekly generates over 1,000 summaries per year. The current profiling posture is the latest summary per definition; older summaries are historical artifacts.
|
|
8
|
+
|
|
9
|
+
This command deletes summaries and their child records from a Salesforce org. The `--prune` flag implements the standard housekeeping pattern: keep the latest summary per definition while removing older results. This is how Marcus Thompson closes engagement phases and how David Chen configures automated weekly cleanup.
|
|
10
|
+
|
|
11
|
+
**Cleanup dependency order** — summary purge must happen BEFORE definition purge:
|
|
12
|
+
|
|
13
|
+
1. `sf cuneiform profile request cancel` — cancel queued requests
|
|
14
|
+
2. `sf cuneiform profile request delete` — remove canceled and rejected requests
|
|
15
|
+
3. `sf cuneiform summary purge` — remove summaries (cascade-deletes completed requests; resets definition status to NOT PROFILED when all summaries are removed)
|
|
16
|
+
4. `sf cuneiform definition purge` — remove definitions (requires zero summaries)
|
|
17
|
+
|
|
18
|
+
THREE SELECTION MODES:
|
|
19
|
+
|
|
20
|
+
- **By ID** (`--ids`) — Delete specific summaries by Salesforce record ID. Exclusive mode — filter flags are ignored.
|
|
21
|
+
- **By filter** (`--objects`, `--category`, `--is-active`) — Delete summaries matching filters. Summaries are resolved through their parent definitions: the command queries definitions first, then targets their associated summaries.
|
|
22
|
+
- **All** (`--all`) — Delete all eligible summaries. Can be combined with filter flags to narrow scope.
|
|
23
|
+
|
|
24
|
+
ELIGIBILITY: Only summaries with a terminal profiling status (SUCCESS, COMPLETE w/ FAILURES, FAILED, CANCELED) can be deleted. In-progress summaries are automatically excluded and reported with a reason.
|
|
25
|
+
|
|
26
|
+
SAFETY: Use --dry-run to preview the scope before deleting. The confirmation prompt shows affected summaries before proceeding. Cascade delete automatically removes child Field Results, Value Results, KPI Results, and related profiling requests (original and reprofile). Definition status resets to NOT PROFILED when all summaries for a definition are removed.
|
|
27
|
+
|
|
28
|
+
**When to run this command:**
|
|
29
|
+
|
|
30
|
+
- Post-sprint cleanup — prune intermediate results after iterative profiling cycles
|
|
31
|
+
- Pre-sandbox-refresh storage reduction — free storage before the refresh window
|
|
32
|
+
- Object-targeted cleanup after data model changes — remove stale summaries for redesigned objects
|
|
33
|
+
- Before definition purge — clear summaries as a prerequisite for definition deletion
|
|
34
|
+
|
|
35
|
+
NATURAL LANGUAGE → FLAG MAPPING:
|
|
36
|
+
"clean up old summaries, keep latest" → --all --prune
|
|
37
|
+
"delete all summaries" → --all
|
|
38
|
+
"delete Account summaries" → --objects Account
|
|
39
|
+
"delete this specific summary" → --ids a0Bxx0000001234AAA
|
|
40
|
+
"what would be deleted?" → --all --dry-run
|
|
41
|
+
"clean up old summaries without asking" → --all --prune --no-prompt
|
|
42
|
+
|
|
43
|
+
COMMAND SEQUENCE:
|
|
44
|
+
`profile request cancel` → `profile request delete` → `summary purge` → `definition purge`
|
|
45
|
+
|
|
46
|
+
# flags.target-org.summary
|
|
47
|
+
|
|
48
|
+
The Salesforce org to purge summaries from. Specify the org alias or username when you have multiple authenticated orgs.
|
|
49
|
+
|
|
50
|
+
# flags.all.summary
|
|
51
|
+
|
|
52
|
+
Target all eligible summaries for deletion. Can be combined with filter flags (--objects, --category, --is-active) to narrow scope. Combine with --prune to preserve the latest summary per definition while removing older results.
|
|
53
|
+
|
|
54
|
+
# flags.ids.summary
|
|
55
|
+
|
|
56
|
+
Specific summary record IDs to delete (comma-separated Salesforce record IDs). Exclusive mode — filter flags are ignored when --ids is specified. Use for surgical removal of individual summaries.
|
|
57
|
+
|
|
58
|
+
# flags.objects.summary
|
|
59
|
+
|
|
60
|
+
Filter by target object API name (matches the definition's profiled object). Scopes purge to summaries for specific objects (e.g., --objects Account removes only Account-related summaries).
|
|
61
|
+
|
|
62
|
+
# flags.category.summary
|
|
63
|
+
|
|
64
|
+
Filter by definition category label (e.g., "Phase 1", "Baseline"). Scopes purge to summaries from a completed engagement phase or functional area.
|
|
65
|
+
|
|
66
|
+
# flags.is-active.summary
|
|
67
|
+
|
|
68
|
+
Filter by definition active status. Targets summaries belonging to active or inactive definitions.
|
|
69
|
+
|
|
70
|
+
# flags.limit.summary
|
|
71
|
+
|
|
72
|
+
Maximum number of summaries to process per invocation (default: 50). Controls batch size in large cleanup operations. Ignored when --all is specified.
|
|
73
|
+
|
|
74
|
+
# flags.prune.summary
|
|
75
|
+
|
|
76
|
+
Preserve the latest summary for each definition and delete only older summaries. This is the standard housekeeping pattern — current profiling evidence is retained while historical results are removed. Combine with --all for org-wide pruning, or with filter flags to prune specific scopes.
|
|
77
|
+
|
|
78
|
+
# flags.dry-run.summary
|
|
79
|
+
|
|
80
|
+
Preview what would be deleted, applied to nothing. Shows the same categorization (eligible, skipped by status, preserved by prune) as a real purge. Run this first to verify scope before committing.
|
|
81
|
+
|
|
82
|
+
# flags.no-prompt.summary
|
|
83
|
+
|
|
84
|
+
Skip the confirmation prompt and delete immediately. Use in scripts and automation pipelines. The prompt normally shows which summaries (and their child records) will be permanently deleted.
|
|
85
|
+
|
|
86
|
+
# flags.format.summary
|
|
87
|
+
|
|
88
|
+
Output format: table (default, human-readable) or json (machine-readable for scripting and automation dashboards).
|
|
89
|
+
|
|
90
|
+
# examples
|
|
91
|
+
|
|
92
|
+
- Preview what would be deleted — start here to verify scope:
|
|
93
|
+
|
|
94
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --all --dry-run
|
|
95
|
+
|
|
96
|
+
- Standard housekeeping — keep the latest summary per definition, remove older results:
|
|
97
|
+
|
|
98
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --all --prune
|
|
99
|
+
|
|
100
|
+
- Object-targeted cleanup — remove Account summaries after a data model redesign:
|
|
101
|
+
|
|
102
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --objects Account
|
|
103
|
+
|
|
104
|
+
- Complete cleanup — delete all terminal-state summaries:
|
|
105
|
+
|
|
106
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --all
|
|
107
|
+
|
|
108
|
+
- Surgical removal — delete specific summaries by record ID:
|
|
109
|
+
|
|
110
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --ids a0Bxx0000001234AAA,a0Bxx0000005678AAA
|
|
111
|
+
|
|
112
|
+
- Automated weekly prune — for CI pipelines and scheduled jobs:
|
|
113
|
+
|
|
114
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --all --prune --no-prompt --format json
|
|
115
|
+
|
|
116
|
+
# errors.noSelectionCriteria
|
|
117
|
+
|
|
118
|
+
No selection criteria specified. Provide --all, --ids, or filter flags (--objects, --category, --is-active).
|
|
119
|
+
|
|
120
|
+
# errors.mutuallyExclusive
|
|
121
|
+
|
|
122
|
+
The --ids flag is mutually exclusive with filter flags (--objects, --category, --is-active, --all).
|
|
123
|
+
|
|
124
|
+
# errors.noEligibleSummaries
|
|
125
|
+
|
|
126
|
+
No summaries found matching the specified criteria.
|
|
127
|
+
|
|
128
|
+
# errors.queryFailed
|
|
129
|
+
|
|
130
|
+
Failed to query summaries: %s
|
|
131
|
+
|
|
132
|
+
# errors.deleteFailed
|
|
133
|
+
|
|
134
|
+
Failed to delete summaries: %s
|
|
135
|
+
|
|
136
|
+
# errors.noTargetOrg
|
|
137
|
+
|
|
138
|
+
Could not determine target org username.
|
|
139
|
+
|
|
140
|
+
# output.pruneMode
|
|
141
|
+
|
|
142
|
+
Prune mode: preserving latest summary per definition.
|
|
143
|
+
|
|
144
|
+
# prompt.confirm.singular
|
|
145
|
+
|
|
146
|
+
Delete this Profiling Summary (and its child Field Results, Value Results, and KPI Results)
|
|
147
|
+
|
|
148
|
+
# prompt.confirm.plural
|
|
149
|
+
|
|
150
|
+
Delete these %s Profiling Summaries (and their child Field Results, Value Results, and KPI Results)
|
|
151
|
+
|
|
152
|
+
# output.noDeletable
|
|
153
|
+
|
|
154
|
+
Purge cancelled — there are no Profiling Summaries that can be deleted.
|
|
155
|
+
|
|
156
|
+
# output.cancelled
|
|
157
|
+
|
|
158
|
+
Purge cancelled. No summaries were deleted.
|
|
159
|
+
|
|
160
|
+
# skippedByStatus.header.singular
|
|
161
|
+
|
|
162
|
+
Could not delete this Profiling Summary — it has a non-terminal status.
|
|
163
|
+
|
|
164
|
+
# skippedByStatus.header.plural
|
|
165
|
+
|
|
166
|
+
Could not delete these Profiling Summaries — they have non-terminal statuses.
|
|
167
|
+
|
|
168
|
+
# skippedByPrune.header.singular
|
|
169
|
+
|
|
170
|
+
Preserved this Profiling Summary — it is the latest for its definition.
|
|
171
|
+
|
|
172
|
+
# skippedByPrune.header.plural
|
|
173
|
+
|
|
174
|
+
Preserved these Profiling Summaries — they are the latest for their definitions.
|
|
175
|
+
|
|
176
|
+
# output.noEligible.message
|
|
177
|
+
|
|
178
|
+
No summaries were found matching the specified criteria.
|
|
179
|
+
|
|
180
|
+
# output.noEligible.guidance
|
|
181
|
+
|
|
182
|
+
- Please check your filters and confirm that summaries exist in your Salesforce org.
|
|
183
|
+
|
|
184
|
+
# output.summary.deleted
|
|
185
|
+
|
|
186
|
+
Deleted
|
|
187
|
+
|
|
188
|
+
# output.summary.skipped
|
|
189
|
+
|
|
190
|
+
Skipped
|
|
191
|
+
|
|
192
|
+
# output.summary.failed
|
|
193
|
+
|
|
194
|
+
Failed
|
|
195
|
+
|
|
196
|
+
# output.summary.total
|
|
197
|
+
|
|
198
|
+
Total
|
|
199
|
+
|
|
200
|
+
# output.summaryHeader
|
|
201
|
+
|
|
202
|
+
Summary
|
|
203
|
+
|
|
204
|
+
# spinner.status.deleted
|
|
205
|
+
|
|
206
|
+
deleted
|
|
207
|
+
|
|
208
|
+
# spinner.status.skipped
|
|
209
|
+
|
|
210
|
+
skipped
|
|
211
|
+
|
|
212
|
+
# spinner.status.failed
|
|
213
|
+
|
|
214
|
+
failed
|
|
215
|
+
|
|
216
|
+
# warnings.limitIgnoredWithAll
|
|
217
|
+
|
|
218
|
+
--limit is ignored when --all is specified. All eligible records will be processed.
|