@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,386 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Consolidate org configuration — products, features, capacity, and namespace composition — into a single view that replaces navigating six Setup pages.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Salesforce spreads org configuration across Company Information, Installed Packages, Org Limits, Feature Settings, License Management, and more. Understanding what an org contains before profiling typically means navigating between these pages to build a mental model. This command consolidates that orientation into a single call that returns in seconds.
|
|
8
|
+
|
|
9
|
+
**Structured sections, one command:**
|
|
10
|
+
|
|
11
|
+
- **Identity** — org name, type (Production/Sandbox/Scratch/Developer/Trial), edition, instance URL, namespace
|
|
12
|
+
- **Cuneiform** — installation status, package version, and license state
|
|
13
|
+
- **Features** — enabled capabilities (Multi-Currency, Person Accounts, Einstein AI, Enhanced Notes, and others)
|
|
14
|
+
- **Clouds** — Salesforce products detected by license queries and namespace prefix matching (Financial Services, CPQ, Health Cloud, and others found in the org)
|
|
15
|
+
- **Namespaces** — installed packages with object counts and population rates per namespace
|
|
16
|
+
- **Processes** — active business processes with record type associations
|
|
17
|
+
- **Limits** — current API request quotas, data and file storage consumption, with capacity warnings at 95%
|
|
18
|
+
- **Next Steps** — command suggestions tailored to the org's namespace composition and data
|
|
19
|
+
|
|
20
|
+
James Morrison runs this first in every new org. Sarah Mitchell checks limits before profiling runs. Marcus Thompson uses the dynamic next steps to guide his exploration path.
|
|
21
|
+
|
|
22
|
+
**When to run this command:**
|
|
23
|
+
|
|
24
|
+
- Entering a new org for the first time and building a mental model of its product landscape
|
|
25
|
+
- Checking API and storage capacity before submitting profiling requests
|
|
26
|
+
- Verifying Cuneiform installation and license status in a new sandbox
|
|
27
|
+
- Understanding which Salesforce products (Clouds, managed packages) are installed before scoping profiling
|
|
28
|
+
|
|
29
|
+
NATURAL LANGUAGE → FLAG MAPPING:
|
|
30
|
+
"show me everything about this org" → no flags (all sections)
|
|
31
|
+
"check my API limits" → --sections limits
|
|
32
|
+
"is Cuneiform installed?" → --sections cuneiform
|
|
33
|
+
"what Clouds are in this org?" → --sections clouds
|
|
34
|
+
"show me all limits grouped" → --sections limits-all
|
|
35
|
+
"how much storage is used?" → --sections limits-storage
|
|
36
|
+
|
|
37
|
+
COMMAND SEQUENCE:
|
|
38
|
+
`org details` → `object list` → `user details` → `definition create` → `profile`
|
|
39
|
+
|
|
40
|
+
This is typically the first command run in any engagement. It precedes `object list` (exploring what objects have data) and `user details` (verifying profiling readiness). Read-only — consolidates existing data from multiple API endpoints into a single view.
|
|
41
|
+
|
|
42
|
+
# flags.target-org.summary
|
|
43
|
+
|
|
44
|
+
The Salesforce org to retrieve configuration details from. Specify the org alias or username when you have multiple authenticated orgs.
|
|
45
|
+
|
|
46
|
+
# flags.api-version.summary
|
|
47
|
+
|
|
48
|
+
Override the Salesforce API version used for org configuration queries. Use this when troubleshooting version-specific behavior or testing against a specific API release.
|
|
49
|
+
|
|
50
|
+
# flags.sections.summary
|
|
51
|
+
|
|
52
|
+
Filter to specific sections instead of displaying the full eight-section report. Valid values: identity, cuneiform, features, clouds, namespaces, processes, limits. For limits granularity: limits-all (groups limits by category) or limits-api, limits-storage, limits-bulk, limits-apex, limits-streaming, limits-email (single category). Omit to display all sections.
|
|
53
|
+
|
|
54
|
+
# examples
|
|
55
|
+
|
|
56
|
+
- Engagement kickoff — see the full org picture (edition, products, features, capacity, namespace composition):
|
|
57
|
+
|
|
58
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg
|
|
59
|
+
|
|
60
|
+
- Pre-profiling capacity check — verify API and storage capacity before submitting profiling requests:
|
|
61
|
+
|
|
62
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --sections limits
|
|
63
|
+
|
|
64
|
+
- Cuneiform readiness — confirm installation and license status in a new sandbox:
|
|
65
|
+
|
|
66
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --sections cuneiform
|
|
67
|
+
|
|
68
|
+
- Product landscape — see which Salesforce Clouds are installed to scope profiling by product:
|
|
69
|
+
|
|
70
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --sections clouds
|
|
71
|
+
|
|
72
|
+
- Namespace composition — identify managed packages and their object counts for profiling scope:
|
|
73
|
+
|
|
74
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --sections namespaces
|
|
75
|
+
|
|
76
|
+
- Storage detail — check data and file storage consumption before a profiling run:
|
|
77
|
+
|
|
78
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --sections limits-storage
|
|
79
|
+
|
|
80
|
+
- JSON for automation — pipe structured output to assessment pipelines or SOW templates:
|
|
81
|
+
|
|
82
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --json
|
|
83
|
+
|
|
84
|
+
# info.fetching
|
|
85
|
+
|
|
86
|
+
Fetching org details...
|
|
87
|
+
|
|
88
|
+
# errors.identityFailed
|
|
89
|
+
|
|
90
|
+
Failed to retrieve org identity information.
|
|
91
|
+
|
|
92
|
+
# warnings.header
|
|
93
|
+
|
|
94
|
+
Warnings
|
|
95
|
+
|
|
96
|
+
# output.identity.header
|
|
97
|
+
|
|
98
|
+
Org Identity
|
|
99
|
+
|
|
100
|
+
# output.identity.orgId
|
|
101
|
+
|
|
102
|
+
Org ID
|
|
103
|
+
|
|
104
|
+
# output.identity.orgName
|
|
105
|
+
|
|
106
|
+
Org Name
|
|
107
|
+
|
|
108
|
+
# output.identity.orgType
|
|
109
|
+
|
|
110
|
+
Org Type
|
|
111
|
+
|
|
112
|
+
# output.identity.edition
|
|
113
|
+
|
|
114
|
+
Edition
|
|
115
|
+
|
|
116
|
+
# output.identity.namespace
|
|
117
|
+
|
|
118
|
+
Namespace
|
|
119
|
+
|
|
120
|
+
# output.identity.instanceUrl
|
|
121
|
+
|
|
122
|
+
Instance URL
|
|
123
|
+
|
|
124
|
+
# output.identity.username
|
|
125
|
+
|
|
126
|
+
Username
|
|
127
|
+
|
|
128
|
+
# output.cuneiform.header
|
|
129
|
+
|
|
130
|
+
Cuneiform for Salesforce
|
|
131
|
+
|
|
132
|
+
# output.cuneiform.status
|
|
133
|
+
|
|
134
|
+
Status
|
|
135
|
+
|
|
136
|
+
# output.cuneiform.installed
|
|
137
|
+
|
|
138
|
+
Installed
|
|
139
|
+
|
|
140
|
+
# output.cuneiform.notInstalled
|
|
141
|
+
|
|
142
|
+
Not Installed
|
|
143
|
+
|
|
144
|
+
# output.cuneiform.version
|
|
145
|
+
|
|
146
|
+
Version
|
|
147
|
+
|
|
148
|
+
# output.cuneiform.license
|
|
149
|
+
|
|
150
|
+
License
|
|
151
|
+
|
|
152
|
+
# output.features.header
|
|
153
|
+
|
|
154
|
+
Org Features
|
|
155
|
+
|
|
156
|
+
# output.features.multiCurrency
|
|
157
|
+
|
|
158
|
+
Multi-Currency
|
|
159
|
+
|
|
160
|
+
# output.features.enhancedNotes
|
|
161
|
+
|
|
162
|
+
Enhanced Notes
|
|
163
|
+
|
|
164
|
+
# output.features.stateCountryPicklists
|
|
165
|
+
|
|
166
|
+
State/Country Picklists
|
|
167
|
+
|
|
168
|
+
# output.features.territoryManagement
|
|
169
|
+
|
|
170
|
+
Territory Management
|
|
171
|
+
|
|
172
|
+
# output.features.personAccounts
|
|
173
|
+
|
|
174
|
+
Person Accounts
|
|
175
|
+
|
|
176
|
+
# output.features.digitalExperiences
|
|
177
|
+
|
|
178
|
+
Digital Experiences
|
|
179
|
+
|
|
180
|
+
# output.features.einsteinAI
|
|
181
|
+
|
|
182
|
+
Einstein AI
|
|
183
|
+
|
|
184
|
+
# output.clouds.header
|
|
185
|
+
|
|
186
|
+
Detected Clouds
|
|
187
|
+
|
|
188
|
+
# output.clouds.none
|
|
189
|
+
|
|
190
|
+
No Salesforce Clouds detected
|
|
191
|
+
|
|
192
|
+
# output.clouds.licenseSubheader
|
|
193
|
+
|
|
194
|
+
Detected Clouds by License
|
|
195
|
+
|
|
196
|
+
# output.clouds.namespaceSubheader
|
|
197
|
+
|
|
198
|
+
Detected Clouds by Namespace
|
|
199
|
+
|
|
200
|
+
# output.namespaces.header
|
|
201
|
+
|
|
202
|
+
Installed Namespaces (Standard / Custom Objects)
|
|
203
|
+
|
|
204
|
+
# output.limits.header
|
|
205
|
+
|
|
206
|
+
API Limits
|
|
207
|
+
|
|
208
|
+
# output.limits.dailyApiRequests
|
|
209
|
+
|
|
210
|
+
Daily API Requests
|
|
211
|
+
|
|
212
|
+
# output.limits.bulkApiRequests
|
|
213
|
+
|
|
214
|
+
Bulk API Requests
|
|
215
|
+
|
|
216
|
+
# output.limits.bulkV2QueryJobs
|
|
217
|
+
|
|
218
|
+
Bulk V2 Query Jobs
|
|
219
|
+
|
|
220
|
+
# output.limits.asyncApexExecutions
|
|
221
|
+
|
|
222
|
+
Async Apex Executions
|
|
223
|
+
|
|
224
|
+
# output.limits.streamingApiEvents
|
|
225
|
+
|
|
226
|
+
Streaming API Events
|
|
227
|
+
|
|
228
|
+
# output.cuneiform.licenseStatus
|
|
229
|
+
|
|
230
|
+
Your Cuneiform license is %s.
|
|
231
|
+
|
|
232
|
+
# output.cuneiform.licenseContactSupport
|
|
233
|
+
|
|
234
|
+
Please contact support to reactivate your license at sfsupport@peernova.com.
|
|
235
|
+
|
|
236
|
+
# output.cuneiform.licenseContactOrgDetails
|
|
237
|
+
|
|
238
|
+
Include the org identity details from this command in your email.
|
|
239
|
+
|
|
240
|
+
# output.cuneiform.installGuide
|
|
241
|
+
|
|
242
|
+
To install Cuneiform for Salesforce, please visit: https://peernova.link/cli/configure
|
|
243
|
+
|
|
244
|
+
# warnings.storageNearCapacity
|
|
245
|
+
|
|
246
|
+
Your org is near its data storage limit.
|
|
247
|
+
|
|
248
|
+
# warnings.storageProfilingImpact
|
|
249
|
+
|
|
250
|
+
Cuneiform writes profiling results to custom objects in your org.
|
|
251
|
+
|
|
252
|
+
# warnings.storageProfilingFailure
|
|
253
|
+
|
|
254
|
+
Profiling may fail if storage capacity is exceeded.
|
|
255
|
+
|
|
256
|
+
# table.clouds.cloud
|
|
257
|
+
|
|
258
|
+
cloud
|
|
259
|
+
|
|
260
|
+
# table.clouds.status
|
|
261
|
+
|
|
262
|
+
status
|
|
263
|
+
|
|
264
|
+
# table.clouds.usedLicenses
|
|
265
|
+
|
|
266
|
+
used licenses
|
|
267
|
+
|
|
268
|
+
# table.clouds.total
|
|
269
|
+
|
|
270
|
+
total
|
|
271
|
+
|
|
272
|
+
# table.cloudsDetail.cloud
|
|
273
|
+
|
|
274
|
+
cloud
|
|
275
|
+
|
|
276
|
+
# table.cloudsDetail.version
|
|
277
|
+
|
|
278
|
+
version
|
|
279
|
+
|
|
280
|
+
# table.cloudsDetail.namespace
|
|
281
|
+
|
|
282
|
+
namespace
|
|
283
|
+
|
|
284
|
+
# table.namespaces.namespace
|
|
285
|
+
|
|
286
|
+
namespace
|
|
287
|
+
|
|
288
|
+
# table.namespaces.product
|
|
289
|
+
|
|
290
|
+
product
|
|
291
|
+
|
|
292
|
+
# table.namespaces.objects
|
|
293
|
+
|
|
294
|
+
objects
|
|
295
|
+
|
|
296
|
+
# table.namespaces.populated
|
|
297
|
+
|
|
298
|
+
populated
|
|
299
|
+
|
|
300
|
+
# table.namespaces.empty
|
|
301
|
+
|
|
302
|
+
empty
|
|
303
|
+
|
|
304
|
+
# table.limits.limit
|
|
305
|
+
|
|
306
|
+
limit
|
|
307
|
+
|
|
308
|
+
# table.limits.used
|
|
309
|
+
|
|
310
|
+
used
|
|
311
|
+
|
|
312
|
+
# table.limits.max
|
|
313
|
+
|
|
314
|
+
max
|
|
315
|
+
|
|
316
|
+
# table.limits.percent
|
|
317
|
+
|
|
318
|
+
percent
|
|
319
|
+
|
|
320
|
+
# output.headerTitle
|
|
321
|
+
|
|
322
|
+
Org Details
|
|
323
|
+
|
|
324
|
+
# output.limits.dataStorageWithUnit
|
|
325
|
+
|
|
326
|
+
Data Storage (MB)
|
|
327
|
+
|
|
328
|
+
# output.limits.fileStorageWithUnit
|
|
329
|
+
|
|
330
|
+
File Storage (MB)
|
|
331
|
+
|
|
332
|
+
# output.unknownFallback
|
|
333
|
+
|
|
334
|
+
Unknown
|
|
335
|
+
|
|
336
|
+
# output.processes.header
|
|
337
|
+
|
|
338
|
+
Business Processes
|
|
339
|
+
|
|
340
|
+
# table.processes.name
|
|
341
|
+
|
|
342
|
+
name
|
|
343
|
+
|
|
344
|
+
# table.processes.object
|
|
345
|
+
|
|
346
|
+
object
|
|
347
|
+
|
|
348
|
+
# table.processes.active
|
|
349
|
+
|
|
350
|
+
active
|
|
351
|
+
|
|
352
|
+
# table.processes.recordTypes
|
|
353
|
+
|
|
354
|
+
record types
|
|
355
|
+
|
|
356
|
+
# output.nextSteps.header
|
|
357
|
+
|
|
358
|
+
Next steps:
|
|
359
|
+
|
|
360
|
+
# output.nextSteps.objectListWithRecords
|
|
361
|
+
|
|
362
|
+
View objects with records
|
|
363
|
+
|
|
364
|
+
# output.nextSteps.objectListCustom
|
|
365
|
+
|
|
366
|
+
View custom objects
|
|
367
|
+
|
|
368
|
+
# output.nextSteps.objectListStandard
|
|
369
|
+
|
|
370
|
+
View standard objects
|
|
371
|
+
|
|
372
|
+
# output.nextSteps.objectListNamespace
|
|
373
|
+
|
|
374
|
+
View %s objects
|
|
375
|
+
|
|
376
|
+
# output.nextSteps.objectListCustomerFacing
|
|
377
|
+
|
|
378
|
+
View customer-facing objects with records
|
|
379
|
+
|
|
380
|
+
# output.nextSteps.objectDescribe
|
|
381
|
+
|
|
382
|
+
View specific object details
|
|
383
|
+
|
|
384
|
+
# output.nextSteps.definitionCreate
|
|
385
|
+
|
|
386
|
+
Create a profiling definition
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Reset org by removing Cuneiform test data created by NUT tests.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Purges all profiling definitions matching a name pattern (default: `[NUT-*]`), cancels active profiling requests, and deletes terminal requests. Use this command to restore a scratch org to a clean state after NUT test runs.
|
|
8
|
+
|
|
9
|
+
The reset sequence is:
|
|
10
|
+
|
|
11
|
+
1. Query definitions matching the name pattern
|
|
12
|
+
2. Cancel any active profiling requests
|
|
13
|
+
3. Delete cancelled/rejected profiling requests
|
|
14
|
+
4. Delete definitions that have no related summaries
|
|
15
|
+
|
|
16
|
+
Definitions with related summaries are skipped — use `sf cuneiform summary purge` first to remove them.
|
|
17
|
+
|
|
18
|
+
# examples
|
|
19
|
+
|
|
20
|
+
- Reset org by removing all NUT-created test data: `sf cuneiform org reset --target-org myOrg`
|
|
21
|
+
- Preview what would be deleted without making changes: `sf cuneiform org reset --target-org myOrg --dry-run`
|
|
22
|
+
- Reset with a custom pattern: `sf cuneiform org reset --target-org myOrg --pattern "Test%"`
|
|
23
|
+
- Reset without confirmation prompt: `sf cuneiform org reset --target-org myOrg --no-prompt`
|
|
24
|
+
|
|
25
|
+
# flags.pattern.summary
|
|
26
|
+
|
|
27
|
+
SOQL LIKE pattern for definition names to purge.
|
|
28
|
+
|
|
29
|
+
# flags.dry-run.summary
|
|
30
|
+
|
|
31
|
+
Preview what would be deleted without making changes.
|
|
32
|
+
|
|
33
|
+
# flags.no-prompt.summary
|
|
34
|
+
|
|
35
|
+
Skip the confirmation prompt before deleting.
|
|
36
|
+
|
|
37
|
+
# spinner.querying
|
|
38
|
+
|
|
39
|
+
Querying definitions matching "%s"...
|
|
40
|
+
|
|
41
|
+
# spinner.cancelling
|
|
42
|
+
|
|
43
|
+
Cancelling active profiling requests...
|
|
44
|
+
|
|
45
|
+
# spinner.deleting-requests
|
|
46
|
+
|
|
47
|
+
Deleting terminal profiling requests...
|
|
48
|
+
|
|
49
|
+
# spinner.deleting-definitions
|
|
50
|
+
|
|
51
|
+
Deleting %d definitions...
|
|
52
|
+
|
|
53
|
+
# info.already-clean
|
|
54
|
+
|
|
55
|
+
Org is already clean — no test data found matching "%s".
|
|
56
|
+
|
|
57
|
+
# info.dry-run-header
|
|
58
|
+
|
|
59
|
+
Dry-run preview (no changes will be made):
|
|
60
|
+
|
|
61
|
+
# info.summary
|
|
62
|
+
|
|
63
|
+
Reset complete.
|
|
64
|
+
|
|
65
|
+
# errors.queryFailed
|
|
66
|
+
|
|
67
|
+
Failed to query definitions: %s
|
|
68
|
+
|
|
69
|
+
# errors.operationFailed
|
|
70
|
+
|
|
71
|
+
Org reset failed: %s
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Execute profiling definitions against a Salesforce org to generate field-level, value-level, and KPI-level evidence about data population and usage patterns.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Profiling is the moment where KYCD moves from planning to evidence. Before profiling, definitions are plans — field lists, filters, and scoping decisions. After profiling, they have results: field population rates, value distributions, null percentages, default detection, and usage patterns across every profiled object.
|
|
8
|
+
|
|
9
|
+
The command operates as a fire-and-forget execution engine — it creates profiling requests in the processing queue and returns immediately. Results appear in the org as summaries complete, typically within minutes depending on object size and field count. Definitions are managed with the `definition` commands; results are reviewed through summaries.
|
|
10
|
+
|
|
11
|
+
TWO MODES:
|
|
12
|
+
|
|
13
|
+
**Single mode** — Profile one definition:
|
|
14
|
+
|
|
15
|
+
- `--keys PD-0001` — profile by definition key
|
|
16
|
+
- `--id a0Bxx000000001AAAA` — profile by Salesforce record ID
|
|
17
|
+
|
|
18
|
+
Single mode displays definition key, object name, status, request ID, duration, and error details.
|
|
19
|
+
|
|
20
|
+
**Bulk mode** — Profile multiple definitions with parallel execution:
|
|
21
|
+
|
|
22
|
+
- `--method metadata` — profile all definitions of a method type (metadata, historical, or comparative)
|
|
23
|
+
- Add filters: --status, --namespace, --category, --time-category, --segment-category, --limit
|
|
24
|
+
- Control concurrency: --parallel (1-10 threads, default: 5)
|
|
25
|
+
|
|
26
|
+
Bulk mode displays a configuration summary, a results table, a profiling summary (Successful/Failed/Skipped/Total), and resolution guidance for failures.
|
|
27
|
+
|
|
28
|
+
Objects with zero records are automatically skipped (--skip-empty defaults to true), preventing wasted API calls. Failed definitions are reported with resolution guidance that provides actionable next steps.
|
|
29
|
+
|
|
30
|
+
PREREQUISITE: Definitions must exist before profiling. Create them with `sf cuneiform definition create`.
|
|
31
|
+
|
|
32
|
+
WHEN TO USE:
|
|
33
|
+
|
|
34
|
+
- After creating definitions — turn scoping work into analytical evidence
|
|
35
|
+
- To refresh profiling results — re-run profiling on existing definitions for updated data
|
|
36
|
+
- For bulk assessment — sweep all metadata definitions in a single parallel command
|
|
37
|
+
- To re-profile after errors — fix the underlying issue, then re-run the failed definitions
|
|
38
|
+
|
|
39
|
+
NATURAL LANGUAGE → FLAG MAPPING:
|
|
40
|
+
"profile the Account definition" → --keys PD-0001
|
|
41
|
+
"profile all metadata definitions" → --method metadata
|
|
42
|
+
"profile everything that hasn't been profiled" → --method metadata --status "NOT PROFILED"
|
|
43
|
+
"profile only FSC objects" → --method metadata --namespace FinServ
|
|
44
|
+
"profile with less concurrency" → --method metadata --parallel 1
|
|
45
|
+
|
|
46
|
+
COMMAND SEQUENCE:
|
|
47
|
+
`definition create` or `definition update` → **`profile`** → `profile request list` → `definition get` (view results)
|
|
48
|
+
|
|
49
|
+
# flags.target-org.summary
|
|
50
|
+
|
|
51
|
+
Authenticate and execute profiling against this Salesforce org. Specify the org alias or username when you have multiple authenticated orgs.
|
|
52
|
+
|
|
53
|
+
# flags.keys.summary
|
|
54
|
+
|
|
55
|
+
Profile one or more definitions by key (e.g., --keys PD-0001). Find keys with `definition list`. Mutually exclusive with --id and --method.
|
|
56
|
+
|
|
57
|
+
# flags.id.summary
|
|
58
|
+
|
|
59
|
+
Profile a single definition by its Salesforce record ID (e.g., --id a0Bxx000000001AAAA). Use when you have the record ID from the Salesforce UI or API. Mutually exclusive with --keys and --method.
|
|
60
|
+
|
|
61
|
+
# flags.method.summary
|
|
62
|
+
|
|
63
|
+
Profile all definitions matching a method type: metadata (field-level analysis), historical (time-series trends), or comparative (segment comparison). Activates bulk mode with parallel execution. Mutually exclusive with --keys and --id.
|
|
64
|
+
|
|
65
|
+
# flags.status.summary
|
|
66
|
+
|
|
67
|
+
Filter definitions by profiling status before executing (e.g., --status "NOT PROFILED" for first-time profiling, --status "ERROR" to retry failures). Applies only in bulk mode with --method.
|
|
68
|
+
|
|
69
|
+
# flags.namespace.summary
|
|
70
|
+
|
|
71
|
+
Filter definitions by the namespace prefix of their target object (e.g., "FinServ" for Financial Services Cloud, "SBQQ" for CPQ). Profiles only definitions targeting objects from a specific managed package.
|
|
72
|
+
|
|
73
|
+
# flags.category.summary
|
|
74
|
+
|
|
75
|
+
Filter definitions by category label (e.g., "Baseline", "Phase 1"). Combine with --time-category and --segment-category to target definitions across all three category dimensions.
|
|
76
|
+
|
|
77
|
+
# flags.time-category.summary
|
|
78
|
+
|
|
79
|
+
Filter definitions by time category (e.g., "Lifetime", "2026 vs 2025", "This Year"). Combine with --category and --segment-category to target time-scoped definitions.
|
|
80
|
+
|
|
81
|
+
# flags.segment-category.summary
|
|
82
|
+
|
|
83
|
+
Filter definitions by segment category (e.g., "Historical", "Comparative", "Enterprise Sales", "Won vs Lost"). Combine with --category and --time-category to target specific comparison segments.
|
|
84
|
+
|
|
85
|
+
# flags.limit.summary
|
|
86
|
+
|
|
87
|
+
Cap the number of definitions processed in bulk mode (e.g., --limit 10 to profile a small batch for testing). Controls the maximum definitions per run.
|
|
88
|
+
|
|
89
|
+
# flags.skip-empty.summary
|
|
90
|
+
|
|
91
|
+
Automatically skip definitions targeting objects with zero records (default: true). Optimizes API usage by focusing execution on populated objects. Use --no-skip-empty to include all definitions regardless of record count.
|
|
92
|
+
|
|
93
|
+
# flags.parallel.summary
|
|
94
|
+
|
|
95
|
+
Set the number of parallel concurrent operations for bulk mode (1-10, default: 5). Lower values reduce API consumption; higher values increase throughput when the org has API capacity.
|
|
96
|
+
|
|
97
|
+
# flags.format.summary
|
|
98
|
+
|
|
99
|
+
Control the output format: table (default, human-readable with progress and summary boxes) or json (machine-readable for scripting and automation).
|
|
100
|
+
|
|
101
|
+
# examples
|
|
102
|
+
|
|
103
|
+
- Profile a single definition by key:
|
|
104
|
+
|
|
105
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --keys PD-0001
|
|
106
|
+
|
|
107
|
+
- Profile a single definition by Salesforce record ID:
|
|
108
|
+
|
|
109
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --id a0Bxx000000001AAAA
|
|
110
|
+
|
|
111
|
+
- Sweep all metadata definitions with parallel execution:
|
|
112
|
+
|
|
113
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --method metadata
|
|
114
|
+
|
|
115
|
+
- Profile only definitions that have never been profiled:
|
|
116
|
+
|
|
117
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --method historical --status "NOT PROFILED"
|
|
118
|
+
|
|
119
|
+
- Profile only Financial Services Cloud objects:
|
|
120
|
+
|
|
121
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --method metadata --namespace FinServ
|
|
122
|
+
|
|
123
|
+
- Maximize throughput with full parallelism:
|
|
124
|
+
|
|
125
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --method comparative --parallel 10
|
|
126
|
+
|
|
127
|
+
- Profile a small batch for testing:
|
|
128
|
+
|
|
129
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --method metadata --limit 5
|
|
130
|
+
|
|
131
|
+
- Minimize API impact with single-threaded execution:
|
|
132
|
+
|
|
133
|
+
<%= config.bin %> <%= command.id %> --target-org myOrg --method metadata --parallel 1
|
|
134
|
+
|
|
135
|
+
# display.definition
|
|
136
|
+
|
|
137
|
+
Definition: %s (%s)
|
|
138
|
+
|
|
139
|
+
# display.status
|
|
140
|
+
|
|
141
|
+
Status: %s
|
|
142
|
+
|
|
143
|
+
# display.requestId
|
|
144
|
+
|
|
145
|
+
Request ID: %s
|
|
146
|
+
|
|
147
|
+
# display.error
|
|
148
|
+
|
|
149
|
+
Error: %s
|
|
150
|
+
|
|
151
|
+
# display.resolution
|
|
152
|
+
|
|
153
|
+
Resolution: %s
|
|
154
|
+
|
|
155
|
+
# display.skipReason
|
|
156
|
+
|
|
157
|
+
Skip reason: %s
|
|
158
|
+
|
|
159
|
+
# display.processed
|
|
160
|
+
|
|
161
|
+
Processed %s definition(s):
|
|
162
|
+
|
|
163
|
+
# display.resolutionGuidance
|
|
164
|
+
|
|
165
|
+
Resolution guidance for failures:
|
|
166
|
+
|
|
167
|
+
# display.resolutionItem
|
|
168
|
+
|
|
169
|
+
%s: %s
|
|
170
|
+
|
|
171
|
+
# display.summaryTitle
|
|
172
|
+
|
|
173
|
+
Summary
|
|
174
|
+
|
|
175
|
+
# display.summarySuccessful
|
|
176
|
+
|
|
177
|
+
Successful
|
|
178
|
+
|
|
179
|
+
# display.summaryFailedLabel
|
|
180
|
+
|
|
181
|
+
Failed
|
|
182
|
+
|
|
183
|
+
# display.summarySkippedLabel
|
|
184
|
+
|
|
185
|
+
Skipped
|
|
186
|
+
|
|
187
|
+
# display.summaryTotalLabel
|
|
188
|
+
|
|
189
|
+
Total
|
|
190
|
+
|
|
191
|
+
# display.nextSteps
|
|
192
|
+
|
|
193
|
+
Track profiling progress:
|
|
194
|
+
|
|
195
|
+
sf cuneiform profile request list --target-org %s
|
|
196
|
+
|
|
197
|
+
# spinner.connecting
|
|
198
|
+
|
|
199
|
+
Connecting
|
|
200
|
+
|
|
201
|
+
# errors.noSelection
|
|
202
|
+
|
|
203
|
+
No selection provided. Specify --keys, --id, or --method flag.
|
|
204
|
+
|
|
205
|
+
# errors.invalidSelection
|
|
206
|
+
|
|
207
|
+
Invalid flag combination. Only one of --keys, --id, or --method allowed.
|
|
208
|
+
|
|
209
|
+
# errors.invalidId
|
|
210
|
+
|
|
211
|
+
Invalid Salesforce ID format: %s. Must be 15 or 18 alphanumeric characters.
|
|
212
|
+
|
|
213
|
+
# errors.definitionNotFound
|
|
214
|
+
|
|
215
|
+
Definition not found: %s
|
|
216
|
+
|
|
217
|
+
# errors.invalidParallel
|
|
218
|
+
|
|
219
|
+
Invalid --parallel value. Must be between 1 and 10.
|
|
220
|
+
|
|
221
|
+
# errors.queryFailed
|
|
222
|
+
|
|
223
|
+
Failed to query definitions: %s
|
|
224
|
+
|
|
225
|
+
# errors.noDefinitionsFound
|
|
226
|
+
|
|
227
|
+
No definitions found matching filters.
|
|
228
|
+
|
|
229
|
+
# errors.executionFailed
|
|
230
|
+
|
|
231
|
+
Profiling execution failed: %s
|