@salesforce/afv-skills 1.13.0 → 1.15.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.
Files changed (359) hide show
  1. package/package.json +3 -3
  2. package/skills/applying-slds/SKILL.md +322 -0
  3. package/skills/applying-slds/checklists.md +83 -0
  4. package/skills/applying-slds/examples.md +283 -0
  5. package/skills/applying-slds/guidance/README.md +83 -0
  6. package/skills/applying-slds/guidance/blueprints-index.md +213 -0
  7. package/skills/applying-slds/guidance/icons-guidance.md +186 -0
  8. package/skills/applying-slds/guidance/overviews/borders.md +236 -0
  9. package/skills/applying-slds/guidance/overviews/color.md +266 -0
  10. package/skills/applying-slds/guidance/overviews/display-density.md +366 -0
  11. package/skills/applying-slds/guidance/overviews/icons.md +240 -0
  12. package/skills/applying-slds/guidance/overviews/illustrations.md +235 -0
  13. package/skills/applying-slds/guidance/overviews/shadows.md +176 -0
  14. package/skills/applying-slds/guidance/overviews/spacing.md +216 -0
  15. package/skills/applying-slds/guidance/overviews/typography.md +323 -0
  16. package/skills/applying-slds/guidance/overviews/utilities.md +542 -0
  17. package/skills/applying-slds/guidance/slds-development-guide.md +288 -0
  18. package/skills/applying-slds/guidance/styling-hooks/borders.md +202 -0
  19. package/skills/applying-slds/guidance/styling-hooks/color/expressive-palette-hooks.md +153 -0
  20. package/skills/applying-slds/guidance/styling-hooks/color/index.md +171 -0
  21. package/skills/applying-slds/guidance/styling-hooks/color/semantic/accent-hooks.md +204 -0
  22. package/skills/applying-slds/guidance/styling-hooks/color/semantic/feedback-hooks.md +768 -0
  23. package/skills/applying-slds/guidance/styling-hooks/color/semantic/surface-hooks.md +337 -0
  24. package/skills/applying-slds/guidance/styling-hooks/color/system-hooks.md +132 -0
  25. package/skills/applying-slds/guidance/styling-hooks/index.md +327 -0
  26. package/skills/applying-slds/guidance/styling-hooks/shadows.md +238 -0
  27. package/skills/applying-slds/guidance/styling-hooks/spacing.md +254 -0
  28. package/skills/applying-slds/guidance/styling-hooks/typography.md +448 -0
  29. package/skills/applying-slds/guidance/utilities/alignment.md +119 -0
  30. package/skills/applying-slds/guidance/utilities/borders.md +131 -0
  31. package/skills/applying-slds/guidance/utilities/box.md +125 -0
  32. package/skills/applying-slds/guidance/utilities/color.md +165 -0
  33. package/skills/applying-slds/guidance/utilities/dark-mode.md +111 -0
  34. package/skills/applying-slds/guidance/utilities/description-list.md +168 -0
  35. package/skills/applying-slds/guidance/utilities/floats.md +117 -0
  36. package/skills/applying-slds/guidance/utilities/grid.md +264 -0
  37. package/skills/applying-slds/guidance/utilities/horizontal-list.md +110 -0
  38. package/skills/applying-slds/guidance/utilities/hyphenation.md +84 -0
  39. package/skills/applying-slds/guidance/utilities/index.md +205 -0
  40. package/skills/applying-slds/guidance/utilities/interactions.md +89 -0
  41. package/skills/applying-slds/guidance/utilities/layout.md +109 -0
  42. package/skills/applying-slds/guidance/utilities/line-clamp.md +131 -0
  43. package/skills/applying-slds/guidance/utilities/margin.md +155 -0
  44. package/skills/applying-slds/guidance/utilities/media-object.md +161 -0
  45. package/skills/applying-slds/guidance/utilities/name-value-list.md +152 -0
  46. package/skills/applying-slds/guidance/utilities/padding.md +155 -0
  47. package/skills/applying-slds/guidance/utilities/position.md +177 -0
  48. package/skills/applying-slds/guidance/utilities/print.md +114 -0
  49. package/skills/applying-slds/guidance/utilities/scrollable.md +126 -0
  50. package/skills/applying-slds/guidance/utilities/sizing.md +190 -0
  51. package/skills/applying-slds/guidance/utilities/themes.md +121 -0
  52. package/skills/applying-slds/guidance/utilities/truncate.md +127 -0
  53. package/skills/applying-slds/guidance/utilities/typography.md +166 -0
  54. package/skills/applying-slds/guidance/utilities/vertical-list.md +166 -0
  55. package/skills/applying-slds/guidance/utilities/visibility.md +228 -0
  56. package/skills/applying-slds/metadata/README.md +84 -0
  57. package/skills/applying-slds/metadata/blueprints/components/accordion.yaml +304 -0
  58. package/skills/applying-slds/metadata/blueprints/components/activity-timeline.yaml +92 -0
  59. package/skills/applying-slds/metadata/blueprints/components/alert.yaml +103 -0
  60. package/skills/applying-slds/metadata/blueprints/components/app-launcher.yaml +94 -0
  61. package/skills/applying-slds/metadata/blueprints/components/avatar-group.yaml +81 -0
  62. package/skills/applying-slds/metadata/blueprints/components/avatar.yaml +97 -0
  63. package/skills/applying-slds/metadata/blueprints/components/badges.yaml +102 -0
  64. package/skills/applying-slds/metadata/blueprints/components/brand-band.yaml +198 -0
  65. package/skills/applying-slds/metadata/blueprints/components/breadcrumbs.yaml +95 -0
  66. package/skills/applying-slds/metadata/blueprints/components/builder-header.yaml +192 -0
  67. package/skills/applying-slds/metadata/blueprints/components/button-groups.yaml +82 -0
  68. package/skills/applying-slds/metadata/blueprints/components/button-icons.yaml +295 -0
  69. package/skills/applying-slds/metadata/blueprints/components/buttons.yaml +230 -0
  70. package/skills/applying-slds/metadata/blueprints/components/cards.yaml +124 -0
  71. package/skills/applying-slds/metadata/blueprints/components/carousel.yaml +140 -0
  72. package/skills/applying-slds/metadata/blueprints/components/chat.yaml +179 -0
  73. package/skills/applying-slds/metadata/blueprints/components/checkbox-button-group.yaml +192 -0
  74. package/skills/applying-slds/metadata/blueprints/components/checkbox-button.yaml +204 -0
  75. package/skills/applying-slds/metadata/blueprints/components/checkbox-toggle.yaml +177 -0
  76. package/skills/applying-slds/metadata/blueprints/components/checkbox.yaml +108 -0
  77. package/skills/applying-slds/metadata/blueprints/components/color-picker.yaml +172 -0
  78. package/skills/applying-slds/metadata/blueprints/components/combobox.yaml +136 -0
  79. package/skills/applying-slds/metadata/blueprints/components/counter.yaml +147 -0
  80. package/skills/applying-slds/metadata/blueprints/components/data-tables.yaml +157 -0
  81. package/skills/applying-slds/metadata/blueprints/components/datepickers.yaml +130 -0
  82. package/skills/applying-slds/metadata/blueprints/components/datetime-picker.yaml +155 -0
  83. package/skills/applying-slds/metadata/blueprints/components/docked-composer.yaml +201 -0
  84. package/skills/applying-slds/metadata/blueprints/components/docked-form-footer.yaml +161 -0
  85. package/skills/applying-slds/metadata/blueprints/components/docked-utility-bar.yaml +175 -0
  86. package/skills/applying-slds/metadata/blueprints/components/drop-zone.yaml +115 -0
  87. package/skills/applying-slds/metadata/blueprints/components/dueling-picklist.yaml +196 -0
  88. package/skills/applying-slds/metadata/blueprints/components/dynamic-icons.yaml +128 -0
  89. package/skills/applying-slds/metadata/blueprints/components/dynamic-menu.yaml +141 -0
  90. package/skills/applying-slds/metadata/blueprints/components/expandable-section.yaml +115 -0
  91. package/skills/applying-slds/metadata/blueprints/components/expression.yaml +143 -0
  92. package/skills/applying-slds/metadata/blueprints/components/feeds.yaml +125 -0
  93. package/skills/applying-slds/metadata/blueprints/components/file-selector.yaml +154 -0
  94. package/skills/applying-slds/metadata/blueprints/components/files.yaml +119 -0
  95. package/skills/applying-slds/metadata/blueprints/components/form-element.yaml +145 -0
  96. package/skills/applying-slds/metadata/blueprints/components/global-header.yaml +120 -0
  97. package/skills/applying-slds/metadata/blueprints/components/global-navigation.yaml +100 -0
  98. package/skills/applying-slds/metadata/blueprints/components/icons.yaml +138 -0
  99. package/skills/applying-slds/metadata/blueprints/components/illustration.yaml +205 -0
  100. package/skills/applying-slds/metadata/blueprints/components/input.yaml +151 -0
  101. package/skills/applying-slds/metadata/blueprints/components/list-builder.yaml +127 -0
  102. package/skills/applying-slds/metadata/blueprints/components/lookups.yaml +132 -0
  103. package/skills/applying-slds/metadata/blueprints/components/map.yaml +118 -0
  104. package/skills/applying-slds/metadata/blueprints/components/menus.yaml +134 -0
  105. package/skills/applying-slds/metadata/blueprints/components/modals.yaml +152 -0
  106. package/skills/applying-slds/metadata/blueprints/components/notifications.yaml +88 -0
  107. package/skills/applying-slds/metadata/blueprints/components/page-headers.yaml +135 -0
  108. package/skills/applying-slds/metadata/blueprints/components/panels.yaml +149 -0
  109. package/skills/applying-slds/metadata/blueprints/components/path.yaml +154 -0
  110. package/skills/applying-slds/metadata/blueprints/components/picklist.yaml +125 -0
  111. package/skills/applying-slds/metadata/blueprints/components/pills.yaml +154 -0
  112. package/skills/applying-slds/metadata/blueprints/components/popovers.yaml +120 -0
  113. package/skills/applying-slds/metadata/blueprints/components/progress-bar.yaml +110 -0
  114. package/skills/applying-slds/metadata/blueprints/components/progress-indicator.yaml +133 -0
  115. package/skills/applying-slds/metadata/blueprints/components/progress-ring.yaml +102 -0
  116. package/skills/applying-slds/metadata/blueprints/components/prompt.yaml +126 -0
  117. package/skills/applying-slds/metadata/blueprints/components/publishers.yaml +178 -0
  118. package/skills/applying-slds/metadata/blueprints/components/radio-button-group.yaml +172 -0
  119. package/skills/applying-slds/metadata/blueprints/components/radio-group.yaml +112 -0
  120. package/skills/applying-slds/metadata/blueprints/components/rich-text-editor.yaml +135 -0
  121. package/skills/applying-slds/metadata/blueprints/components/scoped-notifications.yaml +188 -0
  122. package/skills/applying-slds/metadata/blueprints/components/scoped-tabs.yaml +97 -0
  123. package/skills/applying-slds/metadata/blueprints/components/select.yaml +127 -0
  124. package/skills/applying-slds/metadata/blueprints/components/setup-assistant.yaml +152 -0
  125. package/skills/applying-slds/metadata/blueprints/components/slider.yaml +111 -0
  126. package/skills/applying-slds/metadata/blueprints/components/spinners.yaml +135 -0
  127. package/skills/applying-slds/metadata/blueprints/components/split-view.yaml +112 -0
  128. package/skills/applying-slds/metadata/blueprints/components/summary-detail.yaml +103 -0
  129. package/skills/applying-slds/metadata/blueprints/components/tabs.yaml +138 -0
  130. package/skills/applying-slds/metadata/blueprints/components/textarea.yaml +116 -0
  131. package/skills/applying-slds/metadata/blueprints/components/tiles.yaml +108 -0
  132. package/skills/applying-slds/metadata/blueprints/components/timepicker.yaml +111 -0
  133. package/skills/applying-slds/metadata/blueprints/components/toast.yaml +154 -0
  134. package/skills/applying-slds/metadata/blueprints/components/tooltips.yaml +107 -0
  135. package/skills/applying-slds/metadata/blueprints/components/tree-grid.yaml +116 -0
  136. package/skills/applying-slds/metadata/blueprints/components/trees.yaml +116 -0
  137. package/skills/applying-slds/metadata/blueprints/components/trial-bar.yaml +112 -0
  138. package/skills/applying-slds/metadata/blueprints/components/vertical-navigation.yaml +130 -0
  139. package/skills/applying-slds/metadata/blueprints/components/vertical-tabs.yaml +140 -0
  140. package/skills/applying-slds/metadata/blueprints/components/visual-picker.yaml +150 -0
  141. package/skills/applying-slds/metadata/blueprints/components/welcome-mat.yaml +136 -0
  142. package/skills/applying-slds/metadata/hooks-index.json +6272 -0
  143. package/skills/applying-slds/metadata/icon-metadata.json +38466 -0
  144. package/skills/applying-slds/metadata/utilities-index.json +21912 -0
  145. package/skills/applying-slds/references/component-selection.md +112 -0
  146. package/skills/applying-slds/references/icons-decision-guide.md +124 -0
  147. package/skills/applying-slds/references/styling-decision-guide.md +228 -0
  148. package/skills/applying-slds/references/utilities-quick-ref.md +125 -0
  149. package/skills/applying-slds/scripts/search-blueprints.cjs +117 -0
  150. package/skills/applying-slds/scripts/search-hooks.cjs +139 -0
  151. package/skills/applying-slds/scripts/search-icons.cjs +174 -0
  152. package/skills/applying-slds/scripts/search-utilities.cjs +161 -0
  153. package/skills/building-ui-bundle-app/SKILL.md +33 -8
  154. package/skills/generating-custom-application/SKILL.md +1 -1
  155. package/skills/generating-custom-lightning-type/SKILL.md +17 -39
  156. package/skills/generating-custom-lightning-type/assets/primitive-types-and-constraints.md +41 -0
  157. package/skills/generating-custom-lightning-type/references/widget-rendition.md +124 -0
  158. package/skills/generating-ui-bundle-custom-app/SKILL.md +93 -0
  159. package/skills/generating-ui-bundle-custom-app/docs/configure-metadata-custom-application.md +70 -0
  160. package/skills/generating-ui-bundle-metadata/SKILL.md +39 -1
  161. package/skills/investigating-agentforce-architecture/README.md +156 -0
  162. package/skills/investigating-agentforce-architecture/SKILL.md +230 -0
  163. package/skills/investigating-agentforce-architecture/assets/cli/describe_sobject.yaml +16 -0
  164. package/skills/investigating-agentforce-architecture/assets/cli/describe_tooling_sobject.yaml +17 -0
  165. package/skills/investigating-agentforce-architecture/assets/cli/list_metadata_genaiprompttemplate.yaml +17 -0
  166. package/skills/investigating-agentforce-architecture/assets/cli/org_display.yaml +15 -0
  167. package/skills/investigating-agentforce-architecture/assets/cli/retrieve_genai_plugin.yaml +18 -0
  168. package/skills/investigating-agentforce-architecture/assets/cli/show_access_token.yaml +27 -0
  169. package/skills/investigating-agentforce-architecture/assets/mermaid/action_tree.mmd +20 -0
  170. package/skills/investigating-agentforce-architecture/assets/mermaid/data_flow.mmd +19 -0
  171. package/skills/investigating-agentforce-architecture/assets/mermaid/dependency_graph.mmd +19 -0
  172. package/skills/investigating-agentforce-architecture/assets/mermaid/invocation_sequence.mmd +20 -0
  173. package/skills/investigating-agentforce-architecture/assets/mermaid/planner_state.mmd +18 -0
  174. package/skills/investigating-agentforce-architecture/assets/soql/apex_class_bodies_by_ids.soql +3 -0
  175. package/skills/investigating-agentforce-architecture/assets/soql/apex_class_bodies_by_names.soql +3 -0
  176. package/skills/investigating-agentforce-architecture/assets/soql/bot_definition_details.soql +3 -0
  177. package/skills/investigating-agentforce-architecture/assets/soql/bot_version_lookup.soql +4 -0
  178. package/skills/investigating-agentforce-architecture/assets/soql/flow_definition_by_ids.soql +3 -0
  179. package/skills/investigating-agentforce-architecture/assets/soql/flow_definition_ids_by_names.soql +3 -0
  180. package/skills/investigating-agentforce-architecture/assets/soql/flow_definition_view_by_durable_ids.soql +4 -0
  181. package/skills/investigating-agentforce-architecture/assets/soql/flow_metadata_by_id.soql +3 -0
  182. package/skills/investigating-agentforce-architecture/assets/soql/functions_by_plugins.soql +5 -0
  183. package/skills/investigating-agentforce-architecture/assets/soql/planner_attrs_by_parent_ids.soql +3 -0
  184. package/skills/investigating-agentforce-architecture/assets/soql/planner_bundle_functions.soql +3 -0
  185. package/skills/investigating-agentforce-architecture/assets/soql/planner_definition_by_agent_chain.soql +3 -0
  186. package/skills/investigating-agentforce-architecture/assets/soql/plugin_functions_by_plugin_ids.soql +3 -0
  187. package/skills/investigating-agentforce-architecture/assets/soql/plugin_instructions_by_plugin_ids.soql +3 -0
  188. package/skills/investigating-agentforce-architecture/assets/soql/plugins_by_planner.soql +4 -0
  189. package/skills/investigating-agentforce-architecture/references/architecture_sections.md +243 -0
  190. package/skills/investigating-agentforce-architecture/references/contract.json +244 -0
  191. package/skills/investigating-agentforce-architecture/references/soql_fields.md +512 -0
  192. package/skills/investigating-agentforce-architecture/scripts/_shared/__init__.py +1 -0
  193. package/skills/investigating-agentforce-architecture/scripts/_shared/fs_guard.py +329 -0
  194. package/skills/investigating-agentforce-architecture/scripts/_shared/paths.py +110 -0
  195. package/skills/investigating-agentforce-architecture/scripts/_shared/runtime.py +59 -0
  196. package/skills/investigating-agentforce-architecture/scripts/_shared/sql.py +10 -0
  197. package/skills/investigating-agentforce-architecture/scripts/cache_check.py +234 -0
  198. package/skills/investigating-agentforce-architecture/scripts/config.py +131 -0
  199. package/skills/investigating-agentforce-architecture/scripts/fetch_soql.py +689 -0
  200. package/skills/investigating-agentforce-architecture/scripts/finalize.py +295 -0
  201. package/skills/investigating-agentforce-architecture/scripts/main.py +2835 -0
  202. package/skills/investigating-agentforce-architecture/scripts/metadata_listing.py +265 -0
  203. package/skills/investigating-agentforce-architecture/scripts/parallel_retrieve.py +69 -0
  204. package/skills/investigating-agentforce-architecture/scripts/parse_bundle.py +215 -0
  205. package/skills/investigating-agentforce-architecture/scripts/parse_wave.py +845 -0
  206. package/skills/investigating-agentforce-architecture/scripts/probe_channels.py +302 -0
  207. package/skills/investigating-agentforce-architecture/scripts/render_architecture.py +1043 -0
  208. package/skills/investigating-agentforce-architecture/scripts/resolve_bot.py +255 -0
  209. package/skills/investigating-agentforce-architecture/scripts/resolve_invocation_target.py +130 -0
  210. package/skills/investigating-agentforce-architecture/scripts/rest_client.py +763 -0
  211. package/skills/investigating-agentforce-architecture/scripts/retrieve_planner.py +13 -0
  212. package/skills/investigating-agentforce-architecture/scripts/sf_cli.py +242 -0
  213. package/skills/investigating-agentforce-architecture/scripts/soql_loader.py +253 -0
  214. package/skills/investigating-agentforce-architecture/scripts/summarize_tree.py +143 -0
  215. package/skills/investigating-agentforce-architecture/scripts/tests/__init__.py +0 -0
  216. package/skills/investigating-agentforce-architecture/scripts/tests/_bootstrap.py +23 -0
  217. package/skills/investigating-agentforce-architecture/scripts/tests/fixtures/__init__.py +0 -0
  218. package/skills/investigating-agentforce-architecture/scripts/tests/fixtures/genai_payloads.py +400 -0
  219. package/skills/investigating-agentforce-architecture/scripts/tests/test_cache_check.py +307 -0
  220. package/skills/investigating-agentforce-architecture/scripts/tests/test_cache_check_main.py +283 -0
  221. package/skills/investigating-agentforce-architecture/scripts/tests/test_config.py +115 -0
  222. package/skills/investigating-agentforce-architecture/scripts/tests/test_end_to_end_fixture.py +651 -0
  223. package/skills/investigating-agentforce-architecture/scripts/tests/test_finalize.py +278 -0
  224. package/skills/investigating-agentforce-architecture/scripts/tests/test_flow_children_inflation.py +582 -0
  225. package/skills/investigating-agentforce-architecture/scripts/tests/test_fs_guard.py +113 -0
  226. package/skills/investigating-agentforce-architecture/scripts/tests/test_iterative_wave_b.py +478 -0
  227. package/skills/investigating-agentforce-architecture/scripts/tests/test_main_pipeline.py +3359 -0
  228. package/skills/investigating-agentforce-architecture/scripts/tests/test_parallel_retrieve.py +131 -0
  229. package/skills/investigating-agentforce-architecture/scripts/tests/test_parse_bundle.py +400 -0
  230. package/skills/investigating-agentforce-architecture/scripts/tests/test_parse_wave.py +644 -0
  231. package/skills/investigating-agentforce-architecture/scripts/tests/test_parse_wave_classifiers.py +224 -0
  232. package/skills/investigating-agentforce-architecture/scripts/tests/test_parse_wave_helpers.py +380 -0
  233. package/skills/investigating-agentforce-architecture/scripts/tests/test_parse_wave_main.py +397 -0
  234. package/skills/investigating-agentforce-architecture/scripts/tests/test_per_branch_visited.py +244 -0
  235. package/skills/investigating-agentforce-architecture/scripts/tests/test_probe_channels.py +359 -0
  236. package/skills/investigating-agentforce-architecture/scripts/tests/test_probe_cli_recipes.py +185 -0
  237. package/skills/investigating-agentforce-architecture/scripts/tests/test_render_architecture.py +810 -0
  238. package/skills/investigating-agentforce-architecture/scripts/tests/test_resolve_bot.py +203 -0
  239. package/skills/investigating-agentforce-architecture/scripts/tests/test_resolve_creds.py +157 -0
  240. package/skills/investigating-agentforce-architecture/scripts/tests/test_resolve_invocation_target.py +145 -0
  241. package/skills/investigating-agentforce-architecture/scripts/tests/test_rest_client.py +1253 -0
  242. package/skills/investigating-agentforce-architecture/scripts/tests/test_runtime_override.py +100 -0
  243. package/skills/investigating-agentforce-architecture/scripts/tests/test_sf_cli.py +261 -0
  244. package/skills/investigating-agentforce-architecture/scripts/tests/test_signature_stamping.py +466 -0
  245. package/skills/investigating-agentforce-architecture/scripts/tests/test_soql_loader.py +501 -0
  246. package/skills/investigating-agentforce-architecture/scripts/tests/test_summarize_tree.py +241 -0
  247. package/skills/investigating-agentforce-architecture/scripts/tests/test_write_emit_ctx.py +480 -0
  248. package/skills/investigating-agentforce-architecture/tools/emit_env.py +157 -0
  249. package/skills/investigating-agentforce-architecture/tools/emit_result.py +262 -0
  250. package/skills/investigating-agentforce-architecture/tools/sanitize.py +33 -0
  251. package/skills/investigating-agentforce-architecture/tools/write_emit_ctx.py +332 -0
  252. package/skills/investigating-agentforce-d360/README.md +123 -0
  253. package/skills/investigating-agentforce-d360/SKILL.md +163 -0
  254. package/skills/investigating-agentforce-d360/assets/dc/app_generation.sql +51 -0
  255. package/skills/investigating-agentforce-d360/assets/dc/content_category.sql +44 -0
  256. package/skills/investigating-agentforce-d360/assets/dc/content_quality.sql +41 -0
  257. package/skills/investigating-agentforce-d360/assets/dc/discover_sessions.sql +36 -0
  258. package/skills/investigating-agentforce-d360/assets/dc/feedback.sql +47 -0
  259. package/skills/investigating-agentforce-d360/assets/dc/feedback_details.sql +38 -0
  260. package/skills/investigating-agentforce-d360/assets/dc/gateway_records.sql +45 -0
  261. package/skills/investigating-agentforce-d360/assets/dc/gateway_request_llm.sql +50 -0
  262. package/skills/investigating-agentforce-d360/assets/dc/gateway_request_metadata.sql +44 -0
  263. package/skills/investigating-agentforce-d360/assets/dc/gateway_request_tags.sql +42 -0
  264. package/skills/investigating-agentforce-d360/assets/dc/gateway_requests.sql +89 -0
  265. package/skills/investigating-agentforce-d360/assets/dc/gateway_responses.sql +43 -0
  266. package/skills/investigating-agentforce-d360/assets/dc/generations.sql +52 -0
  267. package/skills/investigating-agentforce-d360/assets/dc/interactions.sql +53 -0
  268. package/skills/investigating-agentforce-d360/assets/dc/messages.sql +53 -0
  269. package/skills/investigating-agentforce-d360/assets/dc/messaging_session.sql +37 -0
  270. package/skills/investigating-agentforce-d360/assets/dc/moment_interactions.sql +34 -0
  271. package/skills/investigating-agentforce-d360/assets/dc/moments.sql +39 -0
  272. package/skills/investigating-agentforce-d360/assets/dc/participants.sql +48 -0
  273. package/skills/investigating-agentforce-d360/assets/dc/sessions.sql +78 -0
  274. package/skills/investigating-agentforce-d360/assets/dc/steps.sql +64 -0
  275. package/skills/investigating-agentforce-d360/assets/dc/tag_associations.sql +46 -0
  276. package/skills/investigating-agentforce-d360/assets/dc/tag_definition_associations.sql +37 -0
  277. package/skills/investigating-agentforce-d360/assets/dc/tag_definitions.sql +50 -0
  278. package/skills/investigating-agentforce-d360/assets/dc/tags.sql +37 -0
  279. package/skills/investigating-agentforce-d360/assets/dc/telemetry_spans.sql +55 -0
  280. package/skills/investigating-agentforce-d360/references/artifacts.md +50 -0
  281. package/skills/investigating-agentforce-d360/references/dc_dmo_fields.md +823 -0
  282. package/skills/investigating-agentforce-d360/references/dc_pipeline_contract.md +608 -0
  283. package/skills/investigating-agentforce-d360/scripts/_shared/__init__.py +2 -0
  284. package/skills/investigating-agentforce-d360/scripts/_shared/cli_override.py +98 -0
  285. package/skills/investigating-agentforce-d360/scripts/_shared/fs_guard.py +334 -0
  286. package/skills/investigating-agentforce-d360/scripts/_shared/paths.py +155 -0
  287. package/skills/investigating-agentforce-d360/scripts/_shared/runtime.py +59 -0
  288. package/skills/investigating-agentforce-d360/scripts/_shared/sql.py +14 -0
  289. package/skills/investigating-agentforce-d360/scripts/assemble_dc.py +1624 -0
  290. package/skills/investigating-agentforce-d360/scripts/config.py +45 -0
  291. package/skills/investigating-agentforce-d360/scripts/dc.py +188 -0
  292. package/skills/investigating-agentforce-d360/scripts/discover_sessions.py +556 -0
  293. package/skills/investigating-agentforce-d360/scripts/fetch_dc.py +1045 -0
  294. package/skills/investigating-agentforce-d360/scripts/render_dc.py +1750 -0
  295. package/skills/investigating-agentforce-d360/scripts/resolve_session.py +264 -0
  296. package/skills/investigating-agentforce-d360/scripts/storage.py +92 -0
  297. package/skills/investigating-agentforce-d360/scripts/tests/__init__.py +0 -0
  298. package/skills/investigating-agentforce-d360/scripts/tests/_bootstrap.py +15 -0
  299. package/skills/investigating-agentforce-d360/scripts/tests/fixtures/__init__.py +0 -0
  300. package/skills/investigating-agentforce-d360/scripts/tests/fixtures/synthetic_session.py +424 -0
  301. package/skills/investigating-agentforce-d360/scripts/tests/test_assemble_dc_bootstrap_and_mode.py +115 -0
  302. package/skills/investigating-agentforce-d360/scripts/tests/test_assemble_dc_gateway_direct.py +220 -0
  303. package/skills/investigating-agentforce-d360/scripts/tests/test_assemble_dc_gateway_direct_integration.py +158 -0
  304. package/skills/investigating-agentforce-d360/scripts/tests/test_assemble_dc_helpers.py +287 -0
  305. package/skills/investigating-agentforce-d360/scripts/tests/test_assemble_dc_integration.py +247 -0
  306. package/skills/investigating-agentforce-d360/scripts/tests/test_dc_and_resolve_session.py +433 -0
  307. package/skills/investigating-agentforce-d360/scripts/tests/test_discover_sessions.py +458 -0
  308. package/skills/investigating-agentforce-d360/scripts/tests/test_discover_sessions_grep_ci.py +193 -0
  309. package/skills/investigating-agentforce-d360/scripts/tests/test_fetch_dc_helpers.py +266 -0
  310. package/skills/investigating-agentforce-d360/scripts/tests/test_fetch_dc_identity.py +528 -0
  311. package/skills/investigating-agentforce-d360/scripts/tests/test_fetch_dc_main.py +251 -0
  312. package/skills/investigating-agentforce-d360/scripts/tests/test_fetch_dc_waterfall.py +229 -0
  313. package/skills/investigating-agentforce-d360/scripts/tests/test_fetch_dc_waterfall_full.py +283 -0
  314. package/skills/investigating-agentforce-d360/scripts/tests/test_identity_coherence.py +327 -0
  315. package/skills/investigating-agentforce-d360/scripts/tests/test_render_dc_branches.py +256 -0
  316. package/skills/investigating-agentforce-d360/scripts/tests/test_render_dc_gateway_direct.py +130 -0
  317. package/skills/investigating-agentforce-d360/scripts/tests/test_render_dc_helpers.py +291 -0
  318. package/skills/investigating-agentforce-d360/scripts/tests/test_render_dc_integration.py +220 -0
  319. package/skills/investigating-agentforce-d360/scripts/tests/test_render_dc_planner_llm_calls.py +284 -0
  320. package/skills/investigating-agentforce-d360/scripts/tests/test_render_dc_show_prompts_gating.py +215 -0
  321. package/skills/investigating-agentforce-d360/scripts/tests/test_resolve_from_disk.py +100 -0
  322. package/skills/investigating-agentforce-d360/scripts/tests/test_resolve_session_main.py +149 -0
  323. package/skills/investigating-agentforce-d360/scripts/tests/test_runtime_override.py +104 -0
  324. package/skills/investigating-agentforce-d360/scripts/tests/test_session_shape.py +95 -0
  325. package/skills/investigating-agentforce-d360/scripts/tests/test_session_shape_dropped_by_stdm.py +85 -0
  326. package/skills/managing-managed-event-subscription/SKILL.md +152 -0
  327. package/skills/managing-managed-event-subscription/assets/managed-event-subscription-template.xml +20 -0
  328. package/skills/managing-managed-event-subscription/references/delete-guide.md +57 -0
  329. package/skills/managing-managed-event-subscription/references/topic-name-formats.md +26 -0
  330. package/skills/managing-managed-event-subscription/references/update-constraints.md +30 -0
  331. package/skills/reviewing-lwc-mobile-offline/SKILL.md +168 -0
  332. package/skills/reviewing-lwc-mobile-offline/references/grounding.md +7 -0
  333. package/skills/reviewing-lwc-mobile-offline/references/inline-graphql.md +43 -0
  334. package/skills/reviewing-lwc-mobile-offline/references/komaci-eslint.md +125 -0
  335. package/skills/reviewing-lwc-mobile-offline/references/lwc-if.md +78 -0
  336. package/skills/reviewing-lwc-mobile-offline/scripts/komaci.config.mjs +18 -0
  337. package/skills/reviewing-lwc-mobile-offline/scripts/package.json +10 -0
  338. package/skills/reviewing-lwc-mobile-offline/scripts/run-komaci.sh +69 -0
  339. package/skills/uplifting-components-to-slds2/SKILL.md +3 -2
  340. package/skills/uplifting-components-to-slds2/references/color-hooks-decision-guide.md +30 -9
  341. package/skills/uplifting-components-to-slds2/references/examples.md +24 -6
  342. package/skills/using-mobile-native-capabilities/SKILL.md +182 -0
  343. package/skills/using-mobile-native-capabilities/references/app-review.md +68 -0
  344. package/skills/using-mobile-native-capabilities/references/ar-space-capture.md +125 -0
  345. package/skills/using-mobile-native-capabilities/references/barcode-scanner.md +219 -0
  346. package/skills/using-mobile-native-capabilities/references/base-capability.md +22 -0
  347. package/skills/using-mobile-native-capabilities/references/biometrics.md +90 -0
  348. package/skills/using-mobile-native-capabilities/references/calendar.md +213 -0
  349. package/skills/using-mobile-native-capabilities/references/contacts.md +232 -0
  350. package/skills/using-mobile-native-capabilities/references/document-scanner.md +342 -0
  351. package/skills/using-mobile-native-capabilities/references/geofencing.md +123 -0
  352. package/skills/using-mobile-native-capabilities/references/location.md +158 -0
  353. package/skills/using-mobile-native-capabilities/references/mobile-capabilities.md +30 -0
  354. package/skills/using-mobile-native-capabilities/references/nfc.md +181 -0
  355. package/skills/using-mobile-native-capabilities/references/payments.md +95 -0
  356. package/skills/validating-slds/SKILL.md +262 -0
  357. package/skills/validating-slds/references/quality-checks.md +308 -0
  358. package/skills/validating-slds/references/report-format.md +302 -0
  359. package/skills/validating-slds/scripts/analyze-quality.cjs +521 -0
@@ -0,0 +1,44 @@
1
+ -- Additional per-request metadata — reusable for any WHERE filter.
2
+ -- DMO: GenAIGtwyRequestMetadata__dlm
3
+ --
4
+ -- Placeholders (substituted by scripts/dc.py.load_sql):
5
+ -- WHERE_CLAUSE — the filter expression, no "WHERE" keyword
6
+ -- ORDER_BY — full "ORDER BY <col>" or empty string
7
+ --
8
+ -- Child of GenAIGatewayRequest__dlm. Holds typed metadata rows for a
9
+ -- request — observed values include `metadataType__c = 'ToolCall'` and
10
+ -- `feature__c = 'plannerservice'`, so this is where planner/tool-call
11
+ -- metadata on a gateway request lives.
12
+ --
13
+ -- No `ssot__` prefix — fields end in `__c` directly.
14
+ --
15
+ -- Joined via `parent__c = GatewayRequest.gatewayRequestId__c`.
16
+ -- Join direction verified live: sampled row's parent__c matched exactly
17
+ -- one row in GenAIGatewayRequest__dlm. The table is usually heavily
18
+ -- populated on orgs with Trust Layer gateway logging enabled.
19
+
20
+ SELECT
21
+ id__c,
22
+ parent__c,
23
+ metadataType__c,
24
+ metadata__c,
25
+ feature__c,
26
+ timestamp__c,
27
+ orgId__c,
28
+ cloud__c
29
+ FROM GenAIGtwyRequestMetadata__dlm
30
+ WHERE {{WHERE_CLAUSE}}
31
+ {{ORDER_BY}};
32
+
33
+
34
+ -- ============================================================================
35
+ -- EXAMPLE WHERE clauses (pass via where_clause=)
36
+ -- ============================================================================
37
+
38
+ -- All metadata rows for a set of gateway request ids
39
+ -- WHERE → parent__c IN ('<req_id1>','<req_id2>',...)
40
+ -- ORDER BY → ORDER BY timestamp__c
41
+
42
+ -- Only ToolCall-type metadata
43
+ -- WHERE → parent__c IN ('<req_id1>','<req_id2>')
44
+ -- AND metadataType__c = 'ToolCall'
@@ -0,0 +1,42 @@
1
+ -- Gateway request tags — k/v metadata attached to a gateway request.
2
+ -- DMO: GenAIGatewayRequestTag__dlm
3
+ --
4
+ -- Placeholders (substituted by scripts/dc.py.load_sql):
5
+ -- WHERE_CLAUSE — the filter expression, no "WHERE" keyword
6
+ -- ORDER_BY — full "ORDER BY <col>" or empty string
7
+ --
8
+ -- Many rows per request. Common tags include:
9
+ -- - `prompt_template_dev_name` → which prompt template was used
10
+ -- - `user_utterance` → raw user input that triggered this request
11
+ --
12
+ -- Joined via `parent__c = GatewayRequest.gatewayRequestId__c`.
13
+ -- No `ssot__` prefix — fields end in `__c` directly.
14
+
15
+ SELECT
16
+ id__c,
17
+ parent__c,
18
+ tag__c,
19
+ tagValue__c,
20
+ timestamp__c,
21
+ orgId__c,
22
+ cloud__c
23
+ FROM GenAIGatewayRequestTag__dlm
24
+ WHERE {{WHERE_CLAUSE}}
25
+ {{ORDER_BY}};
26
+
27
+
28
+ -- ============================================================================
29
+ -- EXAMPLE WHERE clauses (pass via where_clause=)
30
+ -- ============================================================================
31
+
32
+ -- All tags for a set of request ids
33
+ -- WHERE → parent__c IN ('<req_id1>','<req_id2>',...)
34
+ -- ORDER BY → ORDER BY timestamp__c
35
+
36
+ -- Only `prompt_template_dev_name` tags
37
+ -- WHERE → parent__c IN ('<req_id1>','<req_id2>')
38
+ -- AND tag__c = 'prompt_template_dev_name'
39
+
40
+ -- Find requests where the user utterance matched a pattern
41
+ -- WHERE → tag__c = 'user_utterance'
42
+ -- AND tagValue__c LIKE '%refund%'
@@ -0,0 +1,89 @@
1
+ -- Gateway requests — one row per LLM request at the GenAI Gateway.
2
+ -- DMO: GenAIGatewayRequest__dlm
3
+ --
4
+ -- Placeholders (substituted by scripts/dc.py.load_sql):
5
+ -- WHERE_CLAUSE — the filter expression, no "WHERE" keyword
6
+ -- ORDER_BY — full "ORDER BY <col>" or empty string
7
+ --
8
+ -- Richer than GenAIGeneration — carries the actual prompt text, token counts,
9
+ -- model params (temperature/penalties), session/user IDs, bot version, and
10
+ -- the masked-prompt variant.
11
+ --
12
+ -- NOTE: No `ssot__` prefix — fields end in `__c` directly.
13
+ --
14
+ -- sessionId__c storage format (verified live): the value is stored as a
15
+ -- literal 40-char string INCLUDING surrounding double-quotes, e.g.
16
+ -- sessionId__c = "<session_uuid>"
17
+ -- Non-session features (prompt-builder previews, eval harnesses, etc.) store
18
+ -- the literal sentinel "no_session". Exact-match queries MUST include the
19
+ -- double-quotes:
20
+ -- WHERE sessionId__c = '"<session_uuid>"'
21
+ -- Or use LIKE with wildcards (robust against format variants):
22
+ -- WHERE sessionId__c LIKE '%<session_uuid>%'
23
+ -- Raw-UUID exact match returns 0 rows — the quotes are part of the stored value.
24
+ --
25
+ -- Forward join path from a session:
26
+ -- Session.ssot__Id__c → GatewayRequest.sessionId__c (LIKE or quoted match)
27
+ -- This is the authoritative and only supported entry point. GatewayRequest is
28
+ -- then the parent for all downstream audit-chain children — Response (via
29
+ -- generationRequestId__c), Tag/ObjRecord/Metadata/LLM (via parent__c).
30
+ -- See `scripts/fetch_dc.py` wave 3 and `references/dc_dmo_fields.md` "Cross-DMO
31
+ -- join map" for the full forward tree.
32
+
33
+ SELECT
34
+ gatewayRequestId__c,
35
+ generationGroupId__c,
36
+ sessionId__c,
37
+ userId__c,
38
+ botVersionId__c,
39
+ plannerId__c,
40
+ feature__c,
41
+ appType__c,
42
+ model__c,
43
+ provider__c,
44
+ promptTemplateDevName__c,
45
+ promptTemplateVersionNo__c,
46
+ prompt__c,
47
+ maskedPrompt__c,
48
+ parameters__c,
49
+ temperature__c,
50
+ frequencyPenalty__c,
51
+ presencePenalty__c,
52
+ stopSequences__c,
53
+ numGenerations__c,
54
+ promptTokens__c,
55
+ completionTokens__c,
56
+ totalTokens__c,
57
+ enableInputSafetyScoring__c,
58
+ enableOutputSafetyScoring__c,
59
+ enablePiiMasking__c,
60
+ timestamp__c,
61
+ orgId__c,
62
+ cloud__c
63
+ FROM GenAIGatewayRequest__dlm
64
+ WHERE {{WHERE_CLAUSE}}
65
+ {{ORDER_BY}};
66
+
67
+
68
+ -- ============================================================================
69
+ -- EXAMPLE WHERE clauses (pass via where_clause=)
70
+ -- ============================================================================
71
+
72
+ -- Requests for one session (direct FK; note the mandatory double-quoted form).
73
+ -- Two equivalent WHERE forms — both verified live, both return the same rows:
74
+ -- WHERE → sessionId__c = '"<session_id>"' (exact match on quoted string)
75
+ -- WHERE → sessionId__c LIKE '%<session_id>%' (format-tolerant)
76
+ -- ORDER BY → ORDER BY timestamp__c
77
+
78
+ -- Requests for a specific set of gatewayRequestIds (e.g. narrowing after a
79
+ -- session fetch, or lookup by ids harvested from another query)
80
+ -- WHERE → gatewayRequestId__c IN ('<req_id1>','<req_id2>',...)
81
+
82
+ -- All requests for a bot version in a time window
83
+ -- WHERE → botVersionId__c = '<version_id>'
84
+ -- AND timestamp__c >= '<iso_cutoff>'
85
+ -- ORDER BY → ORDER BY timestamp__c DESC
86
+
87
+ -- Requests using a specific prompt template
88
+ -- WHERE → promptTemplateDevName__c = '<template_dev_name>'
89
+ -- AND timestamp__c >= '<iso_cutoff>'
@@ -0,0 +1,43 @@
1
+ -- Gateway responses — one row per LLM call response at the GenAI Gateway.
2
+ -- DMO: GenAIGatewayResponse__dlm
3
+ --
4
+ -- Placeholders (substituted by scripts/dc.py.load_sql):
5
+ -- WHERE_CLAUSE — the filter expression, no "WHERE" keyword
6
+ -- ORDER_BY — full "ORDER BY <col>" or empty string
7
+ --
8
+ -- FK shape (small table; documented for reference only):
9
+ -- generationRequestId__c = GatewayRequest.gatewayRequestId__c
10
+ -- generationResponseId__c = Step.ssot__GenAiGatewayResponseId__c
11
+ -- = Generation.generationResponseId__c
12
+ --
13
+ -- Forward join path from a session:
14
+ -- Session → GatewayRequest (sessionId__c LIKE)
15
+ -- → GatewayResponse (generationRequestId__c IN {gw_req_ids})
16
+ -- This is the canonical and only supported direction. 1:1 invariant holds
17
+ -- in live data — every GatewayRequest for a session produces one Response
18
+ -- row (modulo in-flight calls at fetch time).
19
+ --
20
+ -- NOTE: No `ssot__` prefix — fields end in `__c` directly.
21
+
22
+ SELECT
23
+ generationResponseId__c,
24
+ generationRequestId__c,
25
+ parameters__c,
26
+ timestamp__c,
27
+ orgId__c,
28
+ cloud__c
29
+ FROM GenAIGatewayResponse__dlm
30
+ WHERE {{WHERE_CLAUSE}}
31
+ {{ORDER_BY}};
32
+
33
+
34
+ -- ============================================================================
35
+ -- EXAMPLE WHERE clauses (pass via where_clause=)
36
+ -- ============================================================================
37
+
38
+ -- Forward: Responses for the session's gateway requests (primary use case)
39
+ -- WHERE → generationRequestId__c IN ('<req_id1>','<req_id2>',...)
40
+ -- ORDER BY → ORDER BY timestamp__c
41
+
42
+ -- Ad-hoc lookup by specific response ids (not used by the waterfall)
43
+ -- WHERE → generationResponseId__c IN ('<resp_id1>','<resp_id2>',...)
@@ -0,0 +1,52 @@
1
+ -- GenAI gateway generations — reusable for any WHERE filter.
2
+ -- DMO: GenAIGeneration__dlm
3
+ --
4
+ -- Placeholders (substituted by scripts/dc.py.load_sql):
5
+ -- WHERE_CLAUSE — the filter expression, no "WHERE" keyword
6
+ -- ORDER_BY — full "ORDER BY <col>" or empty string
7
+ --
8
+ -- One row per LLM call at the gateway (Trust Layer).
9
+ --
10
+ -- NOTE: No `ssot__` prefix on this DMO — fields end in `__c` directly.
11
+ --
12
+ -- Forward join to a session: this DMO has NO session/trace/turn column.
13
+ -- The only supported path is Step.ssot__GenerationId__c → generationId__c,
14
+ -- driven forward from the session:
15
+ -- Session → Interaction (ssot__AiAgentSessionId__c)
16
+ -- → Step (ssot__AiAgentInteractionId__c)
17
+ -- → Generation (step.ssot__GenerationId__c IN {generationId__c})
18
+ -- Pull step rows for the session's interactions first, collect non-empty
19
+ -- `ssot__GenerationId__c` values (LLM_STEP rows populate it; others are
20
+ -- NOT_SET), then query here with `generationId__c IN (...)`.
21
+
22
+ SELECT
23
+ generationId__c,
24
+ generationResponseId__c,
25
+ responseText__c,
26
+ maskedResponseText__c,
27
+ responseParameters__c,
28
+ feature__c,
29
+ timestamp__c,
30
+ orgId__c,
31
+ cloud__c
32
+ FROM GenAIGeneration__dlm
33
+ WHERE {{WHERE_CLAUSE}}
34
+ {{ORDER_BY}};
35
+
36
+
37
+ -- ============================================================================
38
+ -- EXAMPLE WHERE clauses (pass via where_clause=)
39
+ -- ============================================================================
40
+
41
+ -- Generations for a set of step generation ids
42
+ -- WHERE → generationId__c IN ('<gen_id1>','<gen_id2>',...)
43
+ -- ORDER BY → ORDER BY timestamp__c
44
+
45
+ -- Generations in a time window for one org
46
+ -- WHERE → orgId__c = '<org_id_18>'
47
+ -- AND timestamp__c >= '<iso_window_start>'
48
+ -- AND timestamp__c < '<iso_window_end>'
49
+ -- ORDER BY → ORDER BY timestamp__c
50
+
51
+ -- Filter by feature (e.g. Copilot vs guardrails)
52
+ -- WHERE → feature__c = 'CopilotForDigitalChannels'
@@ -0,0 +1,53 @@
1
+ -- Session interactions (turns + session-end event) — reusable for any WHERE.
2
+ -- DMO: ssot__AIAgentInteraction__dlm
3
+ --
4
+ -- Placeholders (substituted by scripts/dc.py.load_sql):
5
+ -- WHERE_CLAUSE — the filter expression, no "WHERE" keyword
6
+ -- ORDER_BY — full "ORDER BY <col>" or empty string
7
+ --
8
+ -- One row per turn plus one SESSION_END row per session.
9
+ -- Type enum: TURN | SESSION_END.
10
+ --
11
+ -- Casing gotcha: DMO name uses `AIAgent` (uppercase AI). Field names use
12
+ -- `AiAgent` (lowercase i). See references/dc_dmo_fields.md.
13
+ --
14
+ -- trace_id gotcha: `ssot__TelemetryTraceId__c` is often empty on real orgs
15
+ -- (verified live). The runtime trace_id lives inside
16
+ -- `ssot__AttributeText__c` as HTML-escaped JSON, key `internalTraceId`.
17
+ -- Consumers must `html.unescape()` + regex-extract. Used to join with
18
+ -- GenAIGeneration (generationId via Step) and TelemetryTraceSpan.
19
+
20
+ SELECT
21
+ ssot__Id__c,
22
+ ssot__AiAgentSessionId__c,
23
+ ssot__AiAgentInteractionType__c,
24
+ ssot__TopicApiName__c,
25
+ ssot__StartTimestamp__c,
26
+ ssot__EndTimestamp__c,
27
+ ssot__PrevInteractionId__c,
28
+ ssot__SessionOwnerId__c,
29
+ ssot__IndividualId__c,
30
+ ssot__InternalOrganizationId__c,
31
+ ssot__TelemetryTraceId__c,
32
+ ssot__TelemetryTraceSpanId__c,
33
+ ssot__AttributeText__c
34
+ FROM ssot__AIAgentInteraction__dlm
35
+ WHERE {{WHERE_CLAUSE}}
36
+ {{ORDER_BY}};
37
+
38
+
39
+ -- ============================================================================
40
+ -- EXAMPLE WHERE clauses (pass via where_clause=)
41
+ -- ============================================================================
42
+
43
+ -- All interactions for one session
44
+ -- WHERE → ssot__AiAgentSessionId__c = '<session_id>'
45
+ -- ORDER BY → ORDER BY ssot__StartTimestamp__c
46
+
47
+ -- TURN rows only (exclude SESSION_END)
48
+ -- WHERE → ssot__AiAgentSessionId__c = '<session_id>'
49
+ -- AND ssot__AiAgentInteractionType__c = 'TURN'
50
+
51
+ -- Interactions handled by a specific topic across sessions
52
+ -- WHERE → ssot__TopicApiName__c = 'Order_Management'
53
+ -- AND ssot__StartTimestamp__c >= '2026-01-01T00:00:00.000Z'
@@ -0,0 +1,53 @@
1
+ -- User/agent messages — reusable for any WHERE filter.
2
+ -- DMO: ssot__AiAgentInteractionMessage__dlm
3
+ --
4
+ -- Placeholders (substituted by scripts/dc.py.load_sql):
5
+ -- WHERE_CLAUSE — the filter expression, no "WHERE" keyword
6
+ -- ORDER_BY — full "ORDER BY <col>" or empty string
7
+ --
8
+ -- One row per user/agent message. Type enum: Input | Output.
9
+ --
10
+ -- This DMO has a direct session FK (`ssot__AiAgentSessionId__c`) — verified
11
+ -- live against Data Cloud v66.0. Scope by session directly; no need to join through
12
+ -- interactions. It also has a participant FK and a parent-message FK for
13
+ -- threading, plus `MessageStartTimestamp__c` / `MessageEndTimestamp__c` for
14
+ -- voice-modality durations (richer than the single `MessageSentTimestamp__c`).
15
+
16
+ SELECT
17
+ ssot__Id__c,
18
+ ssot__AiAgentSessionId__c,
19
+ ssot__AiAgentInteractionId__c,
20
+ ssot__AiAgentSessionParticipantId__c,
21
+ ssot__ParentMessageId__c,
22
+ ssot__ContentText__c,
23
+ ssot__AiAgentInteractionMessageType__c,
24
+ ssot__AiAgentInteractionMsgContentType__c,
25
+ Modality__c,
26
+ ssot__MessageSentTimestamp__c,
27
+ MessageStartTimestamp__c,
28
+ MessageEndTimestamp__c,
29
+ ssot__InternalOrganizationId__c
30
+ FROM ssot__AiAgentInteractionMessage__dlm
31
+ WHERE {{WHERE_CLAUSE}}
32
+ {{ORDER_BY}};
33
+
34
+
35
+ -- ============================================================================
36
+ -- EXAMPLE WHERE clauses (pass via where_clause=)
37
+ -- ============================================================================
38
+
39
+ -- Messages for one session (direct FK — preferred)
40
+ -- WHERE → ssot__AiAgentSessionId__c = '<session_id>'
41
+ -- ORDER BY → ORDER BY ssot__MessageSentTimestamp__c
42
+
43
+ -- Messages for a specific interaction
44
+ -- WHERE → ssot__AiAgentInteractionId__c = '<interaction_id>'
45
+ -- ORDER BY → ORDER BY ssot__MessageSentTimestamp__c
46
+
47
+ -- Only user inputs for a session
48
+ -- WHERE → ssot__AiAgentSessionId__c = '<session_id>'
49
+ -- AND ssot__AiAgentInteractionMessageType__c = 'Input'
50
+
51
+ -- Voice-modality messages (use start/end timestamps for duration)
52
+ -- WHERE → ssot__AiAgentSessionId__c = '<session_id>'
53
+ -- AND Modality__c = 'Voice'
@@ -0,0 +1,37 @@
1
+ -- MessagingSession id → AI-agent session id lookup.
2
+ -- DMO: ssot__AIAgentSession__dlm
3
+ --
4
+ -- Given a Salesforce MessagingSession id (0Mw... prefix, 15 or 18 chars),
5
+ -- find every ssot__AIAgentSession__dlm row with matching
6
+ -- RelatedMessagingSessionId. Used by scripts/resolve_session.py to map a
7
+ -- messaging id to the canonical AI-agent session UUID that every other
8
+ -- script keys on.
9
+ --
10
+ -- Placeholders (substituted by scripts/dc.py.load_sql):
11
+ -- MSG_ID — the MessagingSession id (pre-validated by the caller:
12
+ -- is_messaging_id() enforces the `0Mw` key prefix plus an
13
+ -- exact 15 or 18 char length before this template is loaded.
14
+ -- A raw-UUID or free-text id can never reach this template.)
15
+ --
16
+ -- Returned rows:
17
+ -- * zero rows → caller raises SystemExit ("no messaging session found")
18
+ -- * one row → caller returns ssot__Id__c as the UUID
19
+ -- * many rows → caller prints every candidate with timestamps + end_type
20
+ -- + channel and exits non-zero so the user can pick one
21
+ -- and re-invoke with the specific UUID.
22
+ --
23
+ -- The `RelatedMessagingSessionId__c != 'NOT_SET'` clause is defensive —
24
+ -- a real msg_id cannot equal the literal 'NOT_SET', but the guard lets
25
+ -- the template be copy-pasted for other filters that might otherwise
26
+ -- accidentally match the sentinel.
27
+
28
+ SELECT
29
+ ssot__Id__c,
30
+ ssot__StartTimestamp__c,
31
+ ssot__EndTimestamp__c,
32
+ ssot__AiAgentSessionEndType__c,
33
+ ssot__AiAgentChannelType__c
34
+ FROM ssot__AIAgentSession__dlm
35
+ WHERE ssot__RelatedMessagingSessionId__c = '{{MSG_ID}}'
36
+ AND ssot__RelatedMessagingSessionId__c != 'NOT_SET'
37
+ ORDER BY ssot__StartTimestamp__c DESC;
@@ -0,0 +1,34 @@
1
+ -- Moment ↔ Interaction junction — which turns belong to a moment.
2
+ -- DMO: ssot__AiAgentMomentInteraction__dlm
3
+ --
4
+ -- Placeholders (substituted by scripts/dc.py.load_sql):
5
+ -- WHERE_CLAUSE — the filter expression, no "WHERE" keyword
6
+ -- ORDER_BY — full "ORDER BY <col>" or empty string
7
+ --
8
+ -- Agent Optimization add-on DMO. Provisioned only when Agent Optimization
9
+ -- is enabled. Junction between AiAgentMoment and AIAgentInteraction.
10
+ -- Observed live: one Moment per Interaction (N:1 direction). The junction
11
+ -- schema supports true many-to-many; the assembler emits Moment.interaction_ids[]
12
+ -- back-refs to preserve the schema-correct shape even when live data is 1:N.
13
+
14
+ SELECT
15
+ ssot__Id__c,
16
+ ssot__AiAgentMomentId__c,
17
+ ssot__AiAgentInteractionId__c,
18
+ ssot__StartTimestamp__c,
19
+ ssot__InternalOrganizationId__c
20
+ FROM ssot__AiAgentMomentInteraction__dlm
21
+ WHERE {{WHERE_CLAUSE}}
22
+ {{ORDER_BY}};
23
+
24
+
25
+ -- ============================================================================
26
+ -- EXAMPLE WHERE clauses (pass via where_clause=)
27
+ -- ============================================================================
28
+
29
+ -- Junction rows for a set of moments
30
+ -- WHERE → ssot__AiAgentMomentId__c IN ('<mom_id1>','<mom_id2>',...)
31
+ -- ORDER BY → ORDER BY ssot__StartTimestamp__c
32
+
33
+ -- Junction rows for a set of interactions (reverse lookup)
34
+ -- WHERE → ssot__AiAgentInteractionId__c IN ('<int_id1>','<int_id2>')
@@ -0,0 +1,39 @@
1
+ -- Session-level agent moment rollup — reusable for any WHERE filter.
2
+ -- DMO: ssot__AiAgentMoment__dlm
3
+ --
4
+ -- Placeholders (substituted by scripts/dc.py.load_sql):
5
+ -- WHERE_CLAUSE — the filter expression, no "WHERE" keyword
6
+ -- ORDER_BY — full "ORDER BY <col>" or empty string
7
+ --
8
+ -- When present, carries agent identity + a request/response summary for
9
+ -- the session. This is the only STDM DMO outside Participant that exposes
10
+ -- AiAgentApiName__c. Moments are absent on orgs without Agent Optimization
11
+ -- enabled; the assembler falls back to Participant (AGENT role) for agent
12
+ -- identity in that case.
13
+
14
+ SELECT
15
+ ssot__Id__c,
16
+ ssot__AiAgentSessionId__c,
17
+ ssot__AiAgentApiName__c,
18
+ ssot__AiAgentVersionApiName__c,
19
+ ssot__RequestSummaryText__c,
20
+ ssot__ResponseSummaryText__c,
21
+ ssot__StartTimestamp__c,
22
+ ssot__EndTimestamp__c,
23
+ ssot__InternalOrganizationId__c
24
+ FROM ssot__AiAgentMoment__dlm
25
+ WHERE {{WHERE_CLAUSE}}
26
+ {{ORDER_BY}};
27
+
28
+
29
+ -- ============================================================================
30
+ -- EXAMPLE WHERE clauses (pass via where_clause=)
31
+ -- ============================================================================
32
+
33
+ -- Moment(s) for one session — usually 0 or 1 row
34
+ -- WHERE → ssot__AiAgentSessionId__c = '<session_id>'
35
+
36
+ -- All sessions handled by a specific agent API name in a date range
37
+ -- WHERE → ssot__AiAgentApiName__c = 'MyAgent'
38
+ -- AND ssot__StartTimestamp__c >= '2026-01-01T00:00:00.000Z'
39
+ -- ORDER BY → ORDER BY ssot__StartTimestamp__c
@@ -0,0 +1,48 @@
1
+ -- Session participants from Data Cloud — reusable for any WHERE filter.
2
+ -- DMO: ssot__AiAgentSessionParticipant__dlm
3
+ --
4
+ -- Placeholders (substituted by scripts/dc.py.load_sql):
5
+ -- WHERE_CLAUSE — the filter expression, no "WHERE" keyword
6
+ -- ORDER_BY — full "ORDER BY <col>" or empty string
7
+ --
8
+ -- One row per participant per session. Roles: USER, AGENT.
9
+ -- AiAgentApiName__c is populated on AGENT rows only.
10
+ --
11
+ -- Casing gotcha: DMO name uses `AiAgent` (lowercase i), unlike the Session
12
+ -- DMO which uses `AIAgent` (uppercase AI). See references/dc_dmo_fields.md.
13
+
14
+ SELECT
15
+ ssot__Id__c,
16
+ ssot__AiAgentSessionId__c,
17
+ ssot__ParticipantId__c,
18
+ ssot__AiAgentApiName__c,
19
+ ssot__AiAgentType__c,
20
+ ssot__AiAgentTemplateApiName__c,
21
+ ssot__AiAgentVersionApiName__c,
22
+ ssot__AiAgentSessionParticipantRole__c,
23
+ ssot__ParticipantObject__c,
24
+ ssot__StartTimestamp__c,
25
+ ssot__EndTimestamp__c,
26
+ ssot__IndividualId__c,
27
+ ssot__InternalOrganizationId__c,
28
+ ssot__ParticipantAttributeText__c
29
+ FROM ssot__AiAgentSessionParticipant__dlm
30
+ WHERE {{WHERE_CLAUSE}}
31
+ {{ORDER_BY}};
32
+
33
+
34
+ -- ============================================================================
35
+ -- EXAMPLE WHERE clauses (pass via where_clause=)
36
+ -- ============================================================================
37
+
38
+ -- Participants for one session
39
+ -- WHERE → ssot__AiAgentSessionId__c = '<session_id>'
40
+ -- ORDER BY → ORDER BY ssot__StartTimestamp__c
41
+
42
+ -- Only AGENT rows (carry agent identity)
43
+ -- WHERE → ssot__AiAgentSessionId__c = '<session_id>'
44
+ -- AND ssot__AiAgentSessionParticipantRole__c = 'AGENT'
45
+
46
+ -- All sessions handled by a specific agent
47
+ -- WHERE → ssot__AiAgentApiName__c = 'MyAgent'
48
+ -- AND ssot__StartTimestamp__c >= '2026-01-01T00:00:00.000Z'
@@ -0,0 +1,78 @@
1
+ -- Sessions from Data Cloud — reusable for any WHERE filter.
2
+ -- DMO: ssot__AIAgentSession__dlm
3
+ --
4
+ -- Placeholders (substituted by scripts/dc.py._load):
5
+ -- WHERE_CLAUSE — the filter expression, no "WHERE" keyword
6
+ -- ORDER_BY — full "ORDER BY <col>" or empty string
7
+ --
8
+ -- See EXAMPLE QUERIES below for common WHERE patterns.
9
+ --
10
+ -- This query extracts session-level data including:
11
+ -- - Session ID and timestamps
12
+ -- - Channel type (how user connected)
13
+ -- - How the session ended (Completed, Abandoned, Escalated, etc.)
14
+ -- - Related messaging session (if applicable)
15
+ --
16
+ -- NOTE: Agent name is NOT on Session table. Join with Moment to get agent info.
17
+
18
+ SELECT
19
+ ssot__Id__c,
20
+ ssot__AiAgentChannelType__c,
21
+ ssot__StartTimestamp__c,
22
+ ssot__EndTimestamp__c,
23
+ ssot__AiAgentSessionEndType__c,
24
+ ssot__RelatedMessagingSessionId__c,
25
+ ssot__RelatedVoiceCallId__c,
26
+ ssot__InternalOrganizationId__c,
27
+ ssot__SessionOwnerId__c,
28
+ ssot__SessionOwnerObject__c,
29
+ ssot__IndividualId__c,
30
+ ssot__PreviousSessionId__c,
31
+ ssot__VariableText__c
32
+ FROM ssot__AIAgentSession__dlm
33
+ WHERE {{WHERE_CLAUSE}}
34
+ {{ORDER_BY}};
35
+
36
+
37
+ -- ============================================================================
38
+ -- EXAMPLE QUERIES (pass to sessions_sql via where_clause= / order_by=)
39
+ -- ============================================================================
40
+
41
+ -- One session by id (this skill's primary use case)
42
+ -- WHERE → ssot__Id__c = '<session_uuid>'
43
+ -- ORDER BY → ORDER BY ssot__StartTimestamp__c
44
+
45
+ -- Last 7 days of sessions
46
+ -- WHERE → ssot__StartTimestamp__c >= '<iso_cutoff_7d_ago>'
47
+ -- ORDER BY → ORDER BY ssot__StartTimestamp__c
48
+
49
+ -- Date range
50
+ -- WHERE → ssot__StartTimestamp__c >= '2026-01-01T00:00:00.000Z'
51
+ -- AND ssot__StartTimestamp__c < '2026-02-01T00:00:00.000Z'
52
+ -- ORDER BY → ORDER BY ssot__StartTimestamp__c
53
+
54
+ -- Failed / escalated sessions only
55
+ -- WHERE → ssot__AiAgentSessionEndType__c IN ('Escalated', 'Abandoned', 'Failed')
56
+ -- AND ssot__StartTimestamp__c >= '2026-01-01T00:00:00.000Z'
57
+ -- ORDER BY → ORDER BY ssot__StartTimestamp__c
58
+
59
+ -- Sessions by channel (e.g. embedded messaging only)
60
+ -- WHERE → ssot__AiAgentChannelType__c = 'SCRT2 - EmbeddedMessaging'
61
+ -- AND ssot__StartTimestamp__c >= '2026-01-01T00:00:00.000Z'
62
+ -- ORDER BY → ORDER BY ssot__StartTimestamp__c
63
+
64
+ -- Session count by end type (aggregate — SELECT list changes too; separate template)
65
+ -- SELECT
66
+ -- ssot__AiAgentSessionEndType__c,
67
+ -- COUNT(*) as session_count
68
+ -- FROM ssot__AIAgentSession__dlm
69
+ -- WHERE ssot__StartTimestamp__c >= '2026-01-01T00:00:00.000Z'
70
+ -- GROUP BY ssot__AiAgentSessionEndType__c;
71
+
72
+ -- Sessions by agent (requires Moment join — separate query shape, not this template)
73
+ -- SELECT DISTINCT s.*
74
+ -- FROM ssot__AIAgentSession__dlm s
75
+ -- JOIN ssot__AiAgentMoment__dlm m
76
+ -- ON m.ssot__AiAgentSessionId__c = s.ssot__Id__c
77
+ -- WHERE m.ssot__AiAgentApiName__c = 'MyAgent'
78
+ -- AND s.ssot__StartTimestamp__c >= '2026-01-01T00:00:00.000Z';