@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.
Files changed (38) hide show
  1. package/LICENSE +81 -30
  2. package/README.md +59 -95
  3. package/messages/compatibility.check.md +71 -0
  4. package/messages/cuneiform.access.md +138 -0
  5. package/messages/definition.create.md +511 -0
  6. package/messages/definition.export.md +88 -0
  7. package/messages/definition.get.md +147 -0
  8. package/messages/definition.import.md +65 -0
  9. package/messages/definition.list.md +264 -0
  10. package/messages/definition.purge.md +318 -0
  11. package/messages/definition.update.md +80 -0
  12. package/messages/mcp.serve.md +66 -0
  13. package/messages/object.describe.md +201 -0
  14. package/messages/object.list.md +443 -0
  15. package/messages/org.details.md +386 -0
  16. package/messages/org.reset.md +71 -0
  17. package/messages/profile.md +231 -0
  18. package/messages/profile.request.cancel.md +143 -0
  19. package/messages/profile.request.delete.md +139 -0
  20. package/messages/profile.request.list.md +89 -0
  21. package/messages/summary.purge.md +218 -0
  22. package/messages/summary.reprofile.md +150 -0
  23. package/messages/summary.stop.md +157 -0
  24. package/messages/user.details.md +501 -0
  25. package/oclif.lock +3021 -2224
  26. package/oclif.manifest.json +2 -116
  27. package/package.json +84 -19
  28. package/lib/commands/cuneiform/about.d.ts +0 -13
  29. package/lib/commands/cuneiform/about.js +0 -26
  30. package/lib/commands/cuneiform/about.js.map +0 -1
  31. package/lib/commands/hello/world.d.ts +0 -14
  32. package/lib/commands/hello/world.js +0 -27
  33. package/lib/commands/hello/world.js.map +0 -1
  34. package/lib/index.d.ts +0 -2
  35. package/lib/index.js +0 -2
  36. package/lib/index.js.map +0 -1
  37. package/messages/cuneiform.about.md +0 -19
  38. package/messages/hello.world.md +0 -29
@@ -0,0 +1,443 @@
1
+ # summary
2
+
3
+ Enumerate Salesforce objects with record counts, type classifications, and namespace distribution — so you can identify which objects hold customer data and focus profiling on what matters.
4
+
5
+ # description
6
+
7
+ A typical Salesforce org contains 500 to 2,000 objects. Most are empty platform objects, managed package internals, or system metadata. Finding the objects that actually hold customer data — the ones worth profiling — requires navigating Object Manager, running SOQL counts, and cross-referencing namespace prefixes. This command transforms that exploration into a single call with filter flags and enrichment options.
8
+
9
+ The default customer-facing classification filter focuses attention on objects most likely relevant for profiling scope decisions. Record counts distinguish populated objects from empty shells. Namespace distribution reveals how the org's data is partitioned across standard Salesforce, industry clouds, managed packages, and custom development.
10
+
11
+ **Six output sections:**
12
+
13
+ - **Org Identity** — org name, edition, instance URL
14
+ - **Summary Statistics** — total objects, objects with records, standard/custom/external counts, namespace distribution
15
+ - **Namespace Distribution** — objects grouped by standard, industry, managed, and custom categories
16
+ - **Objects Table** — name, label, record count, type, namespace — plus optional enrichment columns
17
+ - **Contact Points** — email, phone, and URL field details (when `--with-contact-points` is specified)
18
+ - **Next Steps** — `object describe` for field-level deep dives, `definition create` for profiling scope
19
+
20
+ NATURAL LANGUAGE → FLAG MAPPING:
21
+
22
+ "Which objects have data?" → `--with-records`
23
+ "What custom objects exist?" → `--filter custom`
24
+ "What did CPQ add to this org?" → `--namespace SBQQ`
25
+ "Which objects match a name?" → `--pattern Account*`
26
+ "Which objects have meaningful volume?" → `--min-records 1000`
27
+ "Which objects can be assigned to users?" → `--with-owner`
28
+ "Which objects have record type segmentation?" → `--with-record-types`
29
+ "Where are email, phone, and address fields?" → `--with-contact-points`
30
+ "How complex is each object?" → `--with-fields`
31
+ "Which objects reference other objects?" → `--with-references`
32
+
33
+ **How this differs from `object describe`:** This command shows the broad inventory across many objects. Use `object describe` when you need the deep dive on a specific object's fields, record types, relationships, and data age.
34
+
35
+ Read-only. Does not create, modify, or delete records or metadata. Results default to customer-facing classification, sorted by record count descending, paginated at 50 with a visible notice when more exist.
36
+
37
+ COMMAND SEQUENCE: `org details` (understand the org landscape) → `object list` (identify objects of interest) → `object describe` (deep dive on specific objects) → `definition create` (define profiling scope)
38
+
39
+ # flags.target-org.summary
40
+
41
+ List objects from this Salesforce org. Specify the org alias or username when you have multiple authenticated orgs.
42
+
43
+ # flags.object.summary
44
+
45
+ Fetch a single object by API name — bypasses all filters and the limit cap, and always returns the real record count. Use this when you know the exact object you need (e.g., `--object Lead`). Mutually exclusive with --filter (non-default), --namespace, --pattern, --without-records, and --min-records.
46
+
47
+ # flags.filter.summary
48
+
49
+ Filter by object type: `standard`, `custom`, or `all`. Use `custom` to audit custom data model objects or `standard` to focus on platform objects. Defaults to `all`.
50
+
51
+ # flags.namespace.summary
52
+
53
+ Filter by namespace prefix (case-insensitive). Scope to a specific managed package — e.g., `SBQQ` for CPQ, `FinServ` for Financial Services Cloud. Use an empty string for unmanaged objects only.
54
+
55
+ # flags.pattern.summary
56
+
57
+ Filter by API name pattern with wildcard support. Examples: `Account*` matches Account and AccountContactRelation; `*__c` matches custom objects.
58
+
59
+ # flags.with-records.summary
60
+
61
+ Show only objects that contain data (record count > 0). Filters out empty platform infrastructure and focuses on populated objects worth profiling.
62
+
63
+ # flags.without-records.summary
64
+
65
+ Show only empty objects (record count = 0). Identifies unused objects during org cleanup or newly provisioned objects awaiting data.
66
+
67
+ # flags.with-owner.summary
68
+
69
+ Show only objects with an OwnerId field — objects whose records can be assigned to users. Identifies ownership-trackable data for profiling scope.
70
+
71
+ # flags.with-record-types.summary
72
+
73
+ Show only objects with record types defined. Record types indicate segmented data entry or business processes — relevant for deciding whether to use record-type-based profiling.
74
+
75
+ # flags.with-business-process.summary
76
+
77
+ Add a business process count column showing lifecycle processes (Lead, Opportunity, Case, Solution). Identifies objects with stage-based workflows before profiling.
78
+
79
+ # flags.with-fields.summary
80
+
81
+ Add field count columns (total fields and custom fields) to gauge object complexity. Identifies objects with large field inventories before running `object describe`.
82
+
83
+ # flags.with-references.summary
84
+
85
+ Add a reference/lookup field count column. High reference counts indicate hub objects in the data model with dense relationship networks.
86
+
87
+ # flags.classification.summary
88
+
89
+ Object classification filter: `customer` (customer-facing objects most relevant to profiling, the default), `internal` (system/platform objects), or `all`. The customer-facing filter uses heuristics based on object type, namespace, and naming patterns.
90
+
91
+ # flags.with-contact-points.summary
92
+
93
+ Add contact point columns showing email, phone, and URL field counts per object. Discovers identity resolution candidates before a contact point analysis engagement.
94
+
95
+ # flags.min-records.summary
96
+
97
+ Minimum record count threshold. Show only objects with at least this many records (e.g., `--min-records 1000` to focus on high-volume objects).
98
+
99
+ # flags.sort.summary
100
+
101
+ Sort results by: `name` (alphabetical), `recordCount` (highest first, the default), or `label`.
102
+
103
+ # flags.limit.summary
104
+
105
+ Maximum objects to display (1-200, default: 50). A notice appears when results are truncated — increase to see more, or use --pattern / --object to bypass this cap entirely.
106
+
107
+ # examples
108
+
109
+ - Explore a new org — see customer-facing objects sorted by data volume (the default starting point):
110
+
111
+ <%= config.bin %> <%= command.id %> --target-org myOrg
112
+
113
+ - Custom object audit — inventory custom objects for a handoff document or data model review:
114
+
115
+ <%= config.bin %> <%= command.id %> --target-org myOrg --filter custom
116
+
117
+ - Namespace-focused scope — see how Financial Services Cloud objects are populated:
118
+
119
+ <%= config.bin %> <%= command.id %> --target-org myOrg --namespace FinServ --with-fields --with-record-types
120
+
121
+ - Profiling candidates — focus on high-volume objects worth profiling:
122
+
123
+ <%= config.bin %> <%= command.id %> --target-org myOrg --with-records --min-records 1000 --sort recordCount
124
+
125
+ - Contact point discovery — find objects with email, phone, or address fields before an analysis engagement:
126
+
127
+ <%= config.bin %> <%= command.id %> --target-org myOrg --with-contact-points --with-records
128
+
129
+ - Complexity assessment — add field and reference counts to identify hub objects in the data model:
130
+
131
+ <%= config.bin %> <%= command.id %> --target-org myOrg --with-fields --with-references --with-records
132
+
133
+ # output.title
134
+
135
+ Cuneiform Object Listing for %s (%s)
136
+
137
+ # output.identity.header
138
+
139
+ Org Identity
140
+
141
+ # output.identity.orgName
142
+
143
+ Org Name
144
+
145
+ # output.identity.orgId
146
+
147
+ Org ID
148
+
149
+ # output.identity.instanceUrl
150
+
151
+ Instance URL
152
+
153
+ # output.identity.orgType
154
+
155
+ Org Type
156
+
157
+ # output.identity.edition
158
+
159
+ Edition
160
+
161
+ # output.identity.namespace
162
+
163
+ Namespace
164
+
165
+ # output.identity.username
166
+
167
+ Username
168
+
169
+ # errors.mutuallyExclusiveFlags
170
+
171
+ Cannot specify both %s and %s. These flags are mutually exclusive.
172
+
173
+ # errors.objectNotFound
174
+
175
+ Object "%s" was not found in this org. Check the API name spelling and run without --object to browse available objects.
176
+
177
+ # errors.noTargetOrg
178
+
179
+ Could not determine target org username
180
+
181
+ # errors.orgIdentityFailed
182
+
183
+ Could not retrieve org identity
184
+
185
+ # output.summary.header
186
+
187
+ Summary
188
+
189
+ # output.summary.totalObjects
190
+
191
+ Total Objects
192
+
193
+ # output.summary.withRecords
194
+
195
+ With Records
196
+
197
+ # output.summary.withoutRecords
198
+
199
+ Without Records
200
+
201
+ # output.summary.standard
202
+
203
+ Standard
204
+
205
+ # output.summary.custom
206
+
207
+ Custom
208
+
209
+ # output.summary.withRecordTypes
210
+
211
+ With Record Types
212
+
213
+ # output.summary.withOwner
214
+
215
+ With Owner
216
+
217
+ # output.summary.external
218
+
219
+ External
220
+
221
+ # output.summary.withNamespace
222
+
223
+ With Namespace
224
+
225
+ # output.summary.withoutNamespace
226
+
227
+ Without Namespace
228
+
229
+ # output.namespaceDistribution.header
230
+
231
+ Namespace Distribution
232
+
233
+ # output.namespaceDistribution.noNamespace
234
+
235
+ No Namespace
236
+
237
+ # output.namespaceDistribution.columns.prefix
238
+
239
+ Prefix
240
+
241
+ # output.namespaceDistribution.columns.label
242
+
243
+ Label
244
+
245
+ # output.namespaceDistribution.columns.count
246
+
247
+ Count
248
+
249
+ # output.objects.header
250
+
251
+ Objects
252
+
253
+ # output.objects.limitNotice
254
+
255
+ Displaying the top %s objects. Use --limit to show more or less objects.
256
+
257
+ # output.objects.totalLabel
258
+
259
+ Total
260
+
261
+ # output.objects.noNamespace
262
+
263
+ No Namespace
264
+
265
+ # output.objects.typeCustom
266
+
267
+ Custom
268
+
269
+ # output.objects.typeStandard
270
+
271
+ Standard
272
+
273
+ # output.objects.columns.prefix
274
+
275
+ Prefix
276
+
277
+ # output.objects.columns.objectLabel
278
+
279
+ Object Label
280
+
281
+ # output.objects.columns.records
282
+
283
+ Records
284
+
285
+ # output.objects.columns.recordTypes
286
+
287
+ Rec. Types
288
+
289
+ # output.objects.columns.businessProcess
290
+
291
+ Processes
292
+
293
+ # output.objects.columns.totalFields
294
+
295
+ Fields
296
+
297
+ # output.objects.columns.custom
298
+
299
+ Custom
300
+
301
+ # output.objects.columns.reference
302
+
303
+ Reference
304
+
305
+ # output.objects.columns.totalCPs
306
+
307
+ Total CPs
308
+
309
+ # output.objects.columns.email
310
+
311
+ Email
312
+
313
+ # output.objects.columns.phone
314
+
315
+ Phone
316
+
317
+ # output.objects.columns.url
318
+
319
+ Url
320
+
321
+ # output.contactPoints.header
322
+
323
+ Contact Point Fields
324
+
325
+ # output.contactPoints.email
326
+
327
+ Email
328
+
329
+ # output.contactPoints.phone
330
+
331
+ Phone
332
+
333
+ # output.contactPoints.url
334
+
335
+ URL
336
+
337
+ # output.filters.type
338
+
339
+ Type: %s
340
+
341
+ # output.filters.namespace
342
+
343
+ Namespace: %s
344
+
345
+ # output.filters.pattern
346
+
347
+ Pattern: %s
348
+
349
+ # output.filters.withRecords
350
+
351
+ With records only
352
+
353
+ # output.filters.withoutRecords
354
+
355
+ Without records only
356
+
357
+ # output.filters.withOwner
358
+
359
+ With OwnerId field
360
+
361
+ # output.filters.withRecordTypes
362
+
363
+ With record types
364
+
365
+ # output.filters.withBusinessProcess
366
+
367
+ With business processes
368
+
369
+ # output.filters.withFields
370
+
371
+ With field counts
372
+
373
+ # output.filters.withReferences
374
+
375
+ With reference fields
376
+
377
+ # output.filters.withContactPoints
378
+
379
+ With contact points
380
+
381
+ # output.filters.classification
382
+
383
+ Classification: %s
384
+
385
+ # output.filters.minRecords
386
+
387
+ Min records: %s
388
+
389
+ # spinner.listing
390
+
391
+ Listing
392
+
393
+ # spinner.objectsNoun
394
+
395
+ objects
396
+
397
+ # spinner.enriching
398
+
399
+ Enriching objects
400
+
401
+ # output.patternHeader
402
+
403
+ Pattern
404
+
405
+ # errors.listFailed
406
+
407
+ Object list failed
408
+
409
+ # warnings.sortWithoutRecords
410
+
411
+ Sorting by recordCount without --with-records: all record counts will be 0 and order will be arbitrary. Add --with-records to sort by actual data volume.
412
+
413
+ # output.entityType
414
+
415
+ objects
416
+
417
+ # output.noResults.suggestion
418
+
419
+ Try relaxing or removing the most restrictive filters
420
+
421
+ # output.nextSteps.header
422
+
423
+ Next steps:
424
+
425
+ # output.nextSteps.describeLabel
426
+
427
+ Describe %s
428
+
429
+ # output.nextSteps.describeCommand
430
+
431
+ sf cuneiform object describe %s --target-org %s
432
+
433
+ # output.nextSteps.describeCommandNoOrg
434
+
435
+ sf cuneiform object describe %s --help
436
+
437
+ # output.nextSteps.definitionCreateLabel
438
+
439
+ Create a profiling definition
440
+
441
+ # output.nextSteps.definitionCreateCommand
442
+
443
+ sf cuneiform definition create --help