@salesforce/afv-skills 1.61.0 → 1.63.0
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/package.json +3 -3
- package/skills/agentforce-architecture-analyze/README.md +2 -1
- package/skills/agentforce-d360-analyze/README.md +1 -1
- package/skills/agentforce-generate/README.md +1 -0
- package/skills/crm-analytics-wave-generate/SKILL.md +212 -0
- package/skills/crm-analytics-wave-generate/assets/dashboard-template.json +66 -0
- package/skills/crm-analytics-wave-generate/assets/wapp-meta-template.xml +10 -0
- package/skills/crm-analytics-wave-generate/assets/wdash-meta-template.xml +6 -0
- package/skills/crm-analytics-wave-generate/assets/wdpr-meta-template.xml +11 -0
- package/skills/crm-analytics-wave-generate/examples/industry-binding-dashboard.wdash +67 -0
- package/skills/crm-analytics-wave-generate/examples/opportunity-revenue-recipe.wdpr +132 -0
- package/skills/crm-analytics-wave-generate/examples/pipeline-by-industry-quarter.wdpr +236 -0
- package/skills/crm-analytics-wave-generate/examples/wdpr-skeleton.wdpr +62 -0
- package/skills/crm-analytics-wave-generate/references/dashboard-authoring.md +157 -0
- package/skills/crm-analytics-wave-generate/references/dataset-hygiene.md +27 -0
- package/skills/crm-analytics-wave-generate/references/external-data-upload.md +61 -0
- package/skills/crm-analytics-wave-generate/references/method-decision-tree.md +12 -0
- package/skills/crm-analytics-wave-generate/references/r3-node-schema.md +194 -0
- package/skills/crm-analytics-wave-generate/references/scripts-reference.md +17 -0
- package/skills/crm-analytics-wave-generate/references/ui-section-template.md +68 -0
- package/skills/crm-analytics-wave-generate/scripts/check_connector_error.sh +53 -0
- package/skills/crm-analytics-wave-generate/scripts/create_app.js +59 -0
- package/skills/crm-analytics-wave-generate/scripts/deploy_and_run_recipe.js +122 -0
- package/skills/crm-analytics-wave-generate/scripts/fetch_dataset_xmd.js +59 -0
- package/skills/crm-analytics-wave-generate/scripts/find_unused_dataset_fields.js +96 -0
- package/skills/crm-analytics-wave-generate/scripts/gen_synthetic_dataset.js +137 -0
- package/skills/crm-analytics-wave-generate/scripts/patch_t_oppo_view.js +99 -0
- package/skills/crm-analytics-wave-generate/scripts/probe_recipe.js +47 -0
- package/skills/crm-analytics-wave-generate/scripts/upload_dataset.js +119 -0
- package/skills/crm-analytics-wave-generate/scripts/verify_dashboard_steps.js +99 -0
- package/skills/crm-analytics-wave-generate/scripts/verify_synthetic_dataset.js +86 -0
- package/skills/service-itsm-agentic-setup-incident-management/SKILL.md +60 -20
- package/skills/service-itsm-agentic-setup-incident-management/examples/output-templates.md +5 -1
- package/skills/service-itsm-agentic-setup-incident-management/references/incident-persona-psg.md +2 -2
- package/skills/service-itsm-agentic-setup-incident-management/references/incident-preferences.md +2 -2
- package/skills/service-itsm-agentic-setup-incident-management/references/major-incident-management.md +5 -5
- package/skills/service-itsm-agentic-setup-incident-management/references/service-mgmt-privilege.md +5 -5
- package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +67 -100
- package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone-action.json +2 -2
- package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone.json +2 -2
- package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md +23 -22
- package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/output-templates.md +3 -3
- package/skills/service-itsm-agentic-setup-incident-sla-configure/references/mcp-invocation.md +182 -58
- package/skills/service-itsm-agentic-setup-incident-sla-configure/references/workflow.md +157 -88
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Post-upload SAQL sanity checks: row count, sum/min/max on numeric fields, group-by-dimension breakdowns.
|
|
3
|
+
// Usage: node scripts/verify_synthetic_dataset.js <alias> <datasetId> <versionId>
|
|
4
|
+
|
|
5
|
+
const { execSync, execFileSync } = require("child_process");
|
|
6
|
+
|
|
7
|
+
function getOrgCredentials(alias) {
|
|
8
|
+
const result = execFileSync('sf', ['org', 'display', '-o', alias, '--json'], { encoding: "utf8" });
|
|
9
|
+
const json = JSON.parse(result);
|
|
10
|
+
return { accessToken: json.result.accessToken, instanceUrl: json.result.instanceUrl };
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function apiFetch(instanceUrl, accessToken, apiPath, method = "GET", body = null) {
|
|
14
|
+
const url = `${instanceUrl}${apiPath}`;
|
|
15
|
+
const args = [
|
|
16
|
+
"-s",
|
|
17
|
+
"-H", `Authorization: Bearer ${accessToken}`,
|
|
18
|
+
"-H", "Content-Type: application/json",
|
|
19
|
+
"-X", method,
|
|
20
|
+
"-w", "\\nHTTP_STATUS:%{http_code}",
|
|
21
|
+
];
|
|
22
|
+
if (body !== null) args.push("-d", JSON.stringify(body));
|
|
23
|
+
args.push(url);
|
|
24
|
+
const raw = execSync(`curl ${args.map(a => `'${String(a).replace(/'/g, "'\\''")}'`).join(" ")}`, {
|
|
25
|
+
encoding: "utf8", maxBuffer: 10 * 1024 * 1024,
|
|
26
|
+
});
|
|
27
|
+
const parts = raw.split("\nHTTP_STATUS:");
|
|
28
|
+
const httpStatus = parseInt(parts[1] || "0", 10);
|
|
29
|
+
if (httpStatus < 200 || httpStatus >= 300) {
|
|
30
|
+
throw new Error(`HTTP ${httpStatus} on ${method} ${apiPath}: ${parts[0]}`);
|
|
31
|
+
}
|
|
32
|
+
return JSON.parse(parts[0]);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function runSaql(instanceUrl, accessToken, datasetId, versionId, saql) {
|
|
36
|
+
const body = {
|
|
37
|
+
query: saql,
|
|
38
|
+
queryLanguage: "SAQL",
|
|
39
|
+
overrideHeadProcessing: true,
|
|
40
|
+
};
|
|
41
|
+
// Substitute dataset id/version for /wave/query
|
|
42
|
+
const boundQuery = saql.replace(/"__DATASET__"/, `"${datasetId}/${versionId}"`);
|
|
43
|
+
body.query = boundQuery;
|
|
44
|
+
return apiFetch(instanceUrl, accessToken, "/services/data/v59.0/wave/query", "POST", body);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const [,, alias, datasetId, versionId] = process.argv;
|
|
48
|
+
if (!alias || !datasetId || !versionId) {
|
|
49
|
+
console.error("Usage: node verify_synthetic_dataset.js <alias> <datasetId> <versionId>");
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const { accessToken, instanceUrl } = getOrgCredentials(alias);
|
|
54
|
+
|
|
55
|
+
// Fetch XMD to know field names
|
|
56
|
+
const xmdResult = apiFetch(instanceUrl, accessToken,
|
|
57
|
+
`/services/data/v59.0/wave/datasets/${datasetId}/versions/${versionId}/xmd`
|
|
58
|
+
);
|
|
59
|
+
const xmd = xmdResult.xmd || xmdResult;
|
|
60
|
+
const measures = (xmd.measures || []).slice(0, 3);
|
|
61
|
+
const dimensions = (xmd.dimensions || []).slice(0, 2);
|
|
62
|
+
|
|
63
|
+
const results = {};
|
|
64
|
+
|
|
65
|
+
// Row count
|
|
66
|
+
const countSaql = `q = load "__DATASET__"; q = group q by all; q = foreach q generate count() as count;`;
|
|
67
|
+
const countResult = runSaql(instanceUrl, accessToken, datasetId, versionId, countSaql);
|
|
68
|
+
results.rowCount = countResult.results?.records?.[0]?.count ?? null;
|
|
69
|
+
|
|
70
|
+
// Sum/min/max for first measure
|
|
71
|
+
if (measures.length > 0) {
|
|
72
|
+
const m = measures[0].fieldName || measures[0].name;
|
|
73
|
+
const statSaql = `q = load "__DATASET__"; q = group q by all; q = foreach q generate sum('${m}') as total, min('${m}') as minVal, max('${m}') as maxVal;`;
|
|
74
|
+
const statResult = runSaql(instanceUrl, accessToken, datasetId, versionId, statSaql);
|
|
75
|
+
results.measureStats = statResult.results?.records?.[0] || null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Group-by for first dimension
|
|
79
|
+
if (dimensions.length > 0) {
|
|
80
|
+
const d = dimensions[0].fieldName || dimensions[0].name;
|
|
81
|
+
const groupSaql = `q = load "__DATASET__"; q = group q by '${d}'; q = foreach q generate '${d}' as dim, count() as count; q = limit q 10;`;
|
|
82
|
+
const groupResult = runSaql(instanceUrl, accessToken, datasetId, versionId, groupSaql);
|
|
83
|
+
results.dimensionBreakdown = groupResult.results?.records || null;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
console.log(JSON.stringify(results, null, 2));
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: service-itsm-agentic-setup-incident-management
|
|
3
|
-
description: "Orchestrator for Incident Management setup in
|
|
3
|
+
description: "Orchestrator for Incident Management setup in Service Cloud ITSM: presents the features, tracks progress, and configures each — SLA & Milestones, Priority Matrix, Incident preferences, Major Incident Management, Incident persona PSG assignment, Service Management Privilege, and Incident audit tracking. Use for: set up or configure incident management, incident management walkthrough, what incident features can I configure; the incident preference toggles (default field validations, auto-close child incidents, auto-triage, assign with Einstein, restrict assigned group, rich text descriptions); Major Incident Management (approval group + MIM preferences); assigning the Incident Fulfiller or Incident Manager persona PSG; Service Management Privilege / privilege escalation setup. DO NOT TRIGGER for: the master on/off switch (service-itsm-incident-mgmt-configure), the Priority Matrix, SLA, or field history tracking alone, the Major Incident Manager PSG, creating/editing PSGs, or Problem/Change/Case Management."
|
|
4
4
|
metadata:
|
|
5
|
-
version: "2.
|
|
5
|
+
version: "2.1"
|
|
6
6
|
domains: ["Service"]
|
|
7
7
|
minApiVersion: "67.0"
|
|
8
8
|
relatedSkills:
|
|
@@ -16,11 +16,7 @@ metadata:
|
|
|
16
16
|
headless-360:
|
|
17
17
|
tools: ["describe", "discover", "dispatch", "dispatch_readonly"]
|
|
18
18
|
semver: ">=1.0.0"
|
|
19
|
-
accessCheck:
|
|
20
|
-
- type: "userPerm"
|
|
21
|
-
value: "CustomizeApplication"
|
|
22
|
-
- type: "orgPerm"
|
|
23
|
-
value: "IncidentMgmt.orgHasITSMOrgPermission"
|
|
19
|
+
accessCheck: "(UserPermissions.CustomizeApplication) && (IncidentMgmt.orgHasITSMOrgPermission)"
|
|
24
20
|
allowed-tools: |
|
|
25
21
|
Read AskUserQuestion
|
|
26
22
|
mcp__headless-360__discover
|
|
@@ -32,8 +28,9 @@ allowed-tools: |
|
|
|
32
28
|
# Incident Management Setup Orchestrator
|
|
33
29
|
|
|
34
30
|
Guide the user through setting up Incident Management features in Salesforce Service Cloud ITSM by
|
|
35
|
-
presenting the available capabilities, tracking progress, and — per feature — either **delegating** to
|
|
36
|
-
specialized child skill or
|
|
31
|
+
presenting the available capabilities, tracking progress, and — per feature — either **delegating** it (to
|
|
32
|
+
a specialized child skill, or to a Setup Operation Recipe (SOR) whose own steps this skill follows), or
|
|
33
|
+
**executing it inline** from this skill's reference file over its SOR.
|
|
37
34
|
|
|
38
35
|
## Goal
|
|
39
36
|
|
|
@@ -51,12 +48,43 @@ until the user is done.
|
|
|
51
48
|
| 4 | Major Incident Management | **Inline over SOR** → `references/major-incident-management.md` |
|
|
52
49
|
| 5 | Incident Persona PSG | **Inline over SOR** → `references/incident-persona-psg.md` |
|
|
53
50
|
| 6 | Service Management Privilege | **Inline over SOR** → `references/service-mgmt-privilege.md` |
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
**
|
|
51
|
+
| 7 | Audit Tracking | **Delegate** → `FieldHistoryTracking` (the Field History Tracking SOR) |
|
|
52
|
+
|
|
53
|
+
**Delegated** features hand off to their child skill or SOR. A child skill runs its own confirmations and
|
|
54
|
+
read-backs, so this skill only coordinates. A SOR is a recipe, not an agent: for a SOR hand-off this skill
|
|
55
|
+
runs the SOR's steps itself and owns the confirmation and read-back (see Audit Tracking below).
|
|
56
|
+
**Inline** features are run by this skill directly through the `headless-360` MCP server — **read the
|
|
57
|
+
matching reference file before executing that feature** and follow it. Every inline operation is fetched at
|
|
58
|
+
runtime: `discover` by intent, `describe` for the current route/schema/labels, then `dispatch_readonly`
|
|
59
|
+
(reads) / `dispatch` (writes). **Hardcode nothing — `describe` wins.**
|
|
60
|
+
|
|
61
|
+
**Audit Tracking is delegated to the Field History Tracking SOR.** This skill has no reference file for it
|
|
62
|
+
and re-derives none of its steps — the SOR's own steps and guidance decide *how*. This skill runs them and
|
|
63
|
+
owns the user-facing gates:
|
|
64
|
+
|
|
65
|
+
1. `discover` the SOR by intent (e.g. "field history tracking") and `describe` the id `discover` returns
|
|
66
|
+
(`FieldHistoryTracking`). Judge availability by what the calls return, not by a step's `status` label —
|
|
67
|
+
a step labelled `proposed` may still be served. A `discover` miss or a `401`/`403`/`404` means the
|
|
68
|
+
surface isn't available to this user or org: surface it and stop.
|
|
69
|
+
2. Use the Incident fields the user already named, or ask which fields to track if the choice is missing
|
|
70
|
+
or ambiguous, plus anything else `describe` says it needs. If the user chooses no fields, leave the
|
|
71
|
+
feature `Not done` and stop; do not treat an empty choice as already configured.
|
|
72
|
+
3. Through the SOR, check Setup access, read Incident with `get-single-entity-data-with-metadata`, and get
|
|
73
|
+
its per-object tracked-field limit. Use the returned tracking flag, field labels, `canBeTracked` values,
|
|
74
|
+
current tracked set, and `fieldEnumOrId` keys to resolve the user's choices; do not guess field keys.
|
|
75
|
+
4. The save replaces the object's whole tracked-field set, so send the **union** of what's already tracked
|
|
76
|
+
and the chosen fields using their returned keys, with Incident's object-level tracking flag on — never
|
|
77
|
+
drop an already-tracked field unless the user asks. If a chosen field can't be tracked, or the union
|
|
78
|
+
would exceed the limit, say so plainly; never untrack another field to make room. Report it as done
|
|
79
|
+
with no write only if the nonempty chosen set is already tracked **and** Incident's object-level tracking
|
|
80
|
+
is on. If the fields are selected but that flag is off, the change still needs a save.
|
|
81
|
+
5. Show the exact final tracked-field list by field label (disambiguate matching labels) in either case.
|
|
82
|
+
Before any save, also show that object-level tracking will be enabled and get an explicit yes
|
|
83
|
+
(`AskUserQuestion`) for that plan; when the user already named the fields, this confirms the selection.
|
|
84
|
+
6. After any save, read Incident's tracked fields back through the SOR. Mark the feature `Done` only when
|
|
85
|
+
the live read (for the no-write case) or post-save read-back shows Incident's object-level tracking on,
|
|
86
|
+
the chosen fields tracked, and no field dropped that the user didn't ask to drop — a save response alone
|
|
87
|
+
is not proof.
|
|
60
88
|
|
|
61
89
|
## Behavior
|
|
62
90
|
|
|
@@ -92,9 +120,11 @@ several enqueue for sequential handling in step 4.
|
|
|
92
120
|
### 4. Handle each selected feature in order
|
|
93
121
|
|
|
94
122
|
Handle selected features sequentially in dependency order (or the order given). For each: if it is a
|
|
95
|
-
**delegated** feature,
|
|
96
|
-
|
|
97
|
-
|
|
123
|
+
**delegated** feature, hand off to its child skill — or, for Audit Tracking, run the Field History Tracking
|
|
124
|
+
SOR through the six steps above; if it is an **inline** feature, **read its reference file** and execute it
|
|
125
|
+
there. Whenever this skill itself writes (inline, or a SOR hand-off), always **read live state before
|
|
126
|
+
writing, confirm before every write, and verify every write by read-back**. Honor the per-feature
|
|
127
|
+
invariants below.
|
|
98
128
|
|
|
99
129
|
### 5. After each feature completes
|
|
100
130
|
|
|
@@ -110,7 +140,8 @@ template in `examples/output-templates.md`.
|
|
|
110
140
|
|
|
111
141
|
## Critical inline-execution invariants (load-bearing — full detail in each reference)
|
|
112
142
|
|
|
113
|
-
Apply these whenever an inline feature runs
|
|
143
|
+
Apply these whenever an inline feature runs; the **Everywhere** rules also apply to the Audit Tracking SOR
|
|
144
|
+
hand-off. They are irreversible or silently-wrong if missed.
|
|
114
145
|
|
|
115
146
|
- **Resolve the right node (Preferences).** Target the ITSM Incident Management org-preferences node
|
|
116
147
|
(controller `IPCManagementSetupController`), **not** the Service-Foundation look-alike
|
|
@@ -150,6 +181,7 @@ Apply these whenever an inline feature runs. They are irreversible or silently-w
|
|
|
150
181
|
4. Major Incident Management (approval group + two MIM preferences) [inline]
|
|
151
182
|
5. Incident Persona PSG (Fulfiller / Manager persona for a user) [inline]
|
|
152
183
|
6. Service Management Privilege (escalation level + privilege assignments) [inline]
|
|
184
|
+
7. Audit Tracking (field history on chosen Incident fields) [delegated]
|
|
153
185
|
```
|
|
154
186
|
|
|
155
187
|
---
|
|
@@ -166,6 +198,10 @@ Apply these whenever an inline feature runs. They are irreversible or silently-w
|
|
|
166
198
|
response — the table is the visual view; the tool call is the selection channel
|
|
167
199
|
- For an **inline** feature, ALWAYS read its reference file first and follow the SOR at runtime — never
|
|
168
200
|
hardcode a route, body, or preference name
|
|
201
|
+
- For **Audit Tracking**, ALWAYS keep every already-tracked Incident field in the save unless the user asked
|
|
202
|
+
to stop tracking it, confirm the exact final field list before the save, and verify by read-back before
|
|
203
|
+
marking it `Done` (or verify the already-configured state by live read with no write) — the SOR asks the
|
|
204
|
+
user nothing itself
|
|
169
205
|
- NEVER set up a feature the user did not select; for "set up everything", walk each feature sequentially
|
|
170
206
|
in recommended order, confirming between each step
|
|
171
207
|
- Track progress across the conversation — do not re-present completed features as "Not done"
|
|
@@ -187,7 +223,11 @@ Before emitting any menu or summary, confirm each; adjust the output before send
|
|
|
187
223
|
sequentially with confirmation under an "all" / "everything" request)
|
|
188
224
|
- [ ] For an inline feature: its reference file was read; live state was read before any write; each write
|
|
189
225
|
was confirmed and verified by read-back; one-way / license-ordering invariants were honored
|
|
190
|
-
- [ ] For a delegated feature: the child skill
|
|
226
|
+
- [ ] For a delegated feature: the child skill (or, for Audit Tracking, the Field History Tracking SOR) was
|
|
227
|
+
used, not configured inline
|
|
228
|
+
- [ ] For Audit Tracking: a live metadata read resolved the fields and complete labeled set; any save kept
|
|
229
|
+
every already-tracked field the user didn't ask to drop, was confirmed before it ran, and was verified
|
|
230
|
+
by read-back; a no-write `Done` also had Incident's object-level tracking confirmed on
|
|
191
231
|
- [ ] No Salesforce record IDs appear in the output — human-readable names only
|
|
192
232
|
|
|
193
233
|
---
|
|
@@ -26,6 +26,8 @@ Here are the features available for Incident Management. Select one or more to c
|
|
|
26
26
|
│ │ │ persona to a user (bundle + backing licenses) │ │
|
|
27
27
|
│ 6 │ Service Management Privilege │ Escalation level, privilege records + employee │ Not done │
|
|
28
28
|
│ │ │ assignments, behind Enable Privilege Assignment │ │
|
|
29
|
+
│ 7 │ Audit Tracking │ Turn on field history tracking for the Incident │ Not done │
|
|
30
|
+
│ │ │ fields you choose (who changed what, and when) │ │
|
|
29
31
|
└───┴───────────────────────────────┴──────────────────────────────────────────────────┴──────────┘
|
|
30
32
|
|
|
31
33
|
Reply with the numbers of the features you want to set up (one or more, e.g. `1,3`).
|
|
@@ -48,6 +50,7 @@ Incident Preferences — configured successfully
|
|
|
48
50
|
│ 4 │ Major Incident Management │ Not done │
|
|
49
51
|
│ 5 │ Incident Persona PSG │ Not done │
|
|
50
52
|
│ 6 │ Service Management Privilege │ Not done │
|
|
53
|
+
│ 7 │ Audit Tracking │ Not done │
|
|
51
54
|
└───┴───────────────────────────────┴──────────┘
|
|
52
55
|
|
|
53
56
|
Say a number to configure the next feature, or `done` to finish.
|
|
@@ -66,7 +69,7 @@ finished — even if some features are still `Not done`. When rendering:
|
|
|
66
69
|
- All `Done` → `Your Incident Management features are configured.`
|
|
67
70
|
- Otherwise → `You have finished the features you selected. The remaining features can be resumed later by re-invoking this orchestrator.`
|
|
68
71
|
|
|
69
|
-
Example — user finished with three features configured,
|
|
72
|
+
Example — user finished with three features configured, four left:
|
|
70
73
|
|
|
71
74
|
```text
|
|
72
75
|
Incident Management Setup — Finished
|
|
@@ -81,6 +84,7 @@ Incident Management Setup — Finished
|
|
|
81
84
|
│ Major Incident Management │ Done │
|
|
82
85
|
│ Incident Persona PSG │ Not done │
|
|
83
86
|
│ Service Management Privilege │ Not done │
|
|
87
|
+
│ Audit Tracking │ Not done │
|
|
84
88
|
└───────────────────────────────┴──────────┘
|
|
85
89
|
|
|
86
90
|
You have finished the features you selected. The remaining features can be resumed later by re-invoking this orchestrator.
|
package/skills/service-itsm-agentic-setup-incident-management/references/incident-persona-psg.md
CHANGED
|
@@ -8,9 +8,9 @@ sets require. This runs **inline** through the Salesforce-hosted **`headless-360
|
|
|
8
8
|
comes from the OAuth JWT on the MCP session — never handle an org id, alias, or credentials. Minimum API
|
|
9
9
|
version **67.0**.
|
|
10
10
|
|
|
11
|
-
## Delegate to the
|
|
11
|
+
## Delegate to the Setup Operation Recipes
|
|
12
12
|
|
|
13
|
-
Every operation is delegated to a
|
|
13
|
+
Every operation is delegated to a Setup Operation Recipe (SOR) and its exact shape is fetched at runtime —
|
|
14
14
|
`discover` by intent, `describe` the SOR step for its **current** route, method, and argument schema, then
|
|
15
15
|
`dispatch_readonly` (reads) / `dispatch` (writes). **Hardcode no routes, SOQL, or request bodies; use what
|
|
16
16
|
`describe` returns, and if it disagrees with anything here, `describe` wins.** Discover by intent, not by
|
package/skills/service-itsm-agentic-setup-incident-management/references/incident-preferences.md
CHANGED
|
@@ -9,9 +9,9 @@ on the MCP session — never handle an org id, alias, or credentials. Minimum AP
|
|
|
9
9
|
This is **not** the master Incident Management on/off switch (`service-itsm-incident-mgmt-configure`) nor
|
|
10
10
|
the Incident Priority Matrix (`service-itsm-incident-priority-configure`).
|
|
11
11
|
|
|
12
|
-
## Delegate to the
|
|
12
|
+
## Delegate to the Setup Operation Recipe
|
|
13
13
|
|
|
14
|
-
Every operation is delegated to a
|
|
14
|
+
Every operation is delegated to a Setup Operation Recipe (SOR) and its exact shape is fetched at runtime:
|
|
15
15
|
`discover` the operation by intent, `describe` the SOR for its **current** steps, routes, argument schema,
|
|
16
16
|
the preference list, the on-screen labels, and its `agent_guidance`, then `dispatch_readonly` (reads) /
|
|
17
17
|
`dispatch` (writes). **Hardcode no routes, preference names, labels, or request bodies — use what
|
|
@@ -7,12 +7,12 @@ preferences**. This runs **inline** through the Salesforce-hosted
|
|
|
7
7
|
`dispatch_readonly`, `dispatch`). The org comes from the OAuth JWT on the MCP session — never handle an org
|
|
8
8
|
id, alias, or credentials. Minimum API version **67.0**.
|
|
9
9
|
|
|
10
|
-
## Delegate every operation to the MIM
|
|
10
|
+
## Delegate every operation to the MIM Setup Operation Recipe
|
|
11
11
|
|
|
12
|
-
The **Major Incident Management SOR** is the single source of truth for **how**
|
|
13
|
-
route, method, request/response shape, field names, per-step `status`, and
|
|
14
|
-
**actively evolving**, so **never hardcode a route or request body**. Carry
|
|
15
|
-
ordering, and invariants**, and at runtime:
|
|
12
|
+
The **Major Incident Management Setup Operation Recipe (SOR)** is the single source of truth for **how**
|
|
13
|
+
each step is done — the route, method, request/response shape, field names, per-step `status`, and
|
|
14
|
+
`depends_on` ordering. It is **actively evolving**, so **never hardcode a route or request body**. Carry
|
|
15
|
+
only the **goal, scope, ordering, and invariants**, and at runtime:
|
|
16
16
|
|
|
17
17
|
1. `discover` the operation by intent (e.g. `"set major incident approval group"`, `"validate major
|
|
18
18
|
incident approval group users"`, `"toggle major incident org preference"`).
|
package/skills/service-itsm-agentic-setup-incident-management/references/service-mgmt-privilege.md
CHANGED
|
@@ -8,12 +8,12 @@ behind the **Enable Privilege Assignment** master toggle. This runs **inline** t
|
|
|
8
8
|
`dispatch_readonly`, `dispatch`). The org comes from the OAuth JWT on the MCP session — never handle an org
|
|
9
9
|
id, alias, or credentials. Minimum API version **67.0**.
|
|
10
10
|
|
|
11
|
-
## Delegate every operation to the
|
|
11
|
+
## Delegate every operation to the Setup Operation Recipe
|
|
12
12
|
|
|
13
|
-
The **Service Management Privilege
|
|
14
|
-
the route, method, request/response shape, field names, per-step `status`, and
|
|
15
|
-
and actively evolving**, so **never hardcode a route or request body**. Carry
|
|
16
|
-
ordering, and invariants**, and at runtime:
|
|
13
|
+
The **Service Management Privilege Setup Operation Recipe (SOR)** is the single source of truth for **how**
|
|
14
|
+
each step is done — the route, method, request/response shape, field names, per-step `status`, and
|
|
15
|
+
`depends_on`. It is **draft and actively evolving**, so **never hardcode a route or request body**. Carry
|
|
16
|
+
only the **goal, scope, ordering, and invariants**, and at runtime:
|
|
17
17
|
|
|
18
18
|
1. `discover` the operation by intent (e.g. `"enable privilege assignment toggle"`, `"set ITSM escalation
|
|
19
19
|
level"`, `"create a service management privilege"`, `"assign employees to a service privilege"`).
|