@salesforce/afv-skills 1.20.0 → 1.22.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 (2288) hide show
  1. package/package.json +1 -1
  2. package/skills/agentforce-architecture-analyze/README.md +156 -0
  3. package/skills/agentforce-architecture-analyze/SKILL.md +230 -0
  4. package/skills/agentforce-architecture-analyze/assets/cli/describe_sobject.yaml +16 -0
  5. package/skills/agentforce-architecture-analyze/assets/cli/describe_tooling_sobject.yaml +17 -0
  6. package/skills/agentforce-architecture-analyze/assets/cli/list_metadata_genaiprompttemplate.yaml +17 -0
  7. package/skills/agentforce-architecture-analyze/assets/cli/org_display.yaml +15 -0
  8. package/skills/agentforce-architecture-analyze/assets/cli/retrieve_genai_plugin.yaml +18 -0
  9. package/skills/agentforce-architecture-analyze/assets/cli/show_access_token.yaml +27 -0
  10. package/skills/agentforce-architecture-analyze/assets/mermaid/action_tree.mmd +20 -0
  11. package/skills/agentforce-architecture-analyze/assets/mermaid/data_flow.mmd +19 -0
  12. package/skills/agentforce-architecture-analyze/assets/mermaid/dependency_graph.mmd +19 -0
  13. package/skills/agentforce-architecture-analyze/assets/mermaid/invocation_sequence.mmd +20 -0
  14. package/skills/agentforce-architecture-analyze/assets/mermaid/planner_state.mmd +18 -0
  15. package/skills/agentforce-architecture-analyze/assets/soql/apex_class_bodies_by_ids.soql +3 -0
  16. package/skills/agentforce-architecture-analyze/assets/soql/apex_class_bodies_by_names.soql +3 -0
  17. package/skills/agentforce-architecture-analyze/assets/soql/bot_definition_details.soql +3 -0
  18. package/skills/agentforce-architecture-analyze/assets/soql/bot_version_lookup.soql +4 -0
  19. package/skills/agentforce-architecture-analyze/assets/soql/flow_definition_by_ids.soql +3 -0
  20. package/skills/agentforce-architecture-analyze/assets/soql/flow_definition_ids_by_names.soql +3 -0
  21. package/skills/agentforce-architecture-analyze/assets/soql/flow_definition_view_by_durable_ids.soql +4 -0
  22. package/skills/agentforce-architecture-analyze/assets/soql/flow_metadata_by_id.soql +3 -0
  23. package/skills/agentforce-architecture-analyze/assets/soql/functions_by_plugins.soql +5 -0
  24. package/skills/agentforce-architecture-analyze/assets/soql/planner_attrs_by_parent_ids.soql +3 -0
  25. package/skills/agentforce-architecture-analyze/assets/soql/planner_bundle_functions.soql +3 -0
  26. package/skills/agentforce-architecture-analyze/assets/soql/planner_definition_by_agent_chain.soql +3 -0
  27. package/skills/agentforce-architecture-analyze/assets/soql/plugin_functions_by_plugin_ids.soql +3 -0
  28. package/skills/agentforce-architecture-analyze/assets/soql/plugin_instructions_by_plugin_ids.soql +3 -0
  29. package/skills/agentforce-architecture-analyze/assets/soql/plugins_by_planner.soql +4 -0
  30. package/skills/agentforce-architecture-analyze/references/architecture_sections.md +243 -0
  31. package/skills/agentforce-architecture-analyze/references/contract.json +244 -0
  32. package/skills/agentforce-architecture-analyze/references/soql_fields.md +512 -0
  33. package/skills/agentforce-architecture-analyze/scripts/_shared/__init__.py +1 -0
  34. package/skills/agentforce-architecture-analyze/scripts/_shared/fs_guard.py +329 -0
  35. package/skills/agentforce-architecture-analyze/scripts/_shared/paths.py +110 -0
  36. package/skills/agentforce-architecture-analyze/scripts/_shared/runtime.py +59 -0
  37. package/skills/agentforce-architecture-analyze/scripts/_shared/sql.py +10 -0
  38. package/skills/agentforce-architecture-analyze/scripts/cache_check.py +234 -0
  39. package/skills/agentforce-architecture-analyze/scripts/config.py +131 -0
  40. package/skills/agentforce-architecture-analyze/scripts/fetch_soql.py +689 -0
  41. package/skills/agentforce-architecture-analyze/scripts/finalize.py +295 -0
  42. package/skills/agentforce-architecture-analyze/scripts/main.py +2835 -0
  43. package/skills/agentforce-architecture-analyze/scripts/metadata_listing.py +265 -0
  44. package/skills/agentforce-architecture-analyze/scripts/parallel_retrieve.py +69 -0
  45. package/skills/agentforce-architecture-analyze/scripts/parse_bundle.py +215 -0
  46. package/skills/agentforce-architecture-analyze/scripts/parse_wave.py +845 -0
  47. package/skills/agentforce-architecture-analyze/scripts/probe_channels.py +302 -0
  48. package/skills/agentforce-architecture-analyze/scripts/render_architecture.py +1043 -0
  49. package/skills/agentforce-architecture-analyze/scripts/resolve_bot.py +255 -0
  50. package/skills/agentforce-architecture-analyze/scripts/resolve_invocation_target.py +130 -0
  51. package/skills/agentforce-architecture-analyze/scripts/rest_client.py +763 -0
  52. package/skills/agentforce-architecture-analyze/scripts/retrieve_planner.py +13 -0
  53. package/skills/agentforce-architecture-analyze/scripts/sf_cli.py +242 -0
  54. package/skills/agentforce-architecture-analyze/scripts/soql_loader.py +253 -0
  55. package/skills/agentforce-architecture-analyze/scripts/summarize_tree.py +143 -0
  56. package/skills/agentforce-architecture-analyze/scripts/tests/__init__.py +0 -0
  57. package/skills/agentforce-architecture-analyze/scripts/tests/_bootstrap.py +23 -0
  58. package/skills/agentforce-architecture-analyze/scripts/tests/fixtures/__init__.py +0 -0
  59. package/skills/agentforce-architecture-analyze/scripts/tests/fixtures/genai_payloads.py +400 -0
  60. package/skills/agentforce-architecture-analyze/scripts/tests/test_cache_check.py +307 -0
  61. package/skills/agentforce-architecture-analyze/scripts/tests/test_cache_check_main.py +283 -0
  62. package/skills/agentforce-architecture-analyze/scripts/tests/test_config.py +115 -0
  63. package/skills/agentforce-architecture-analyze/scripts/tests/test_end_to_end_fixture.py +651 -0
  64. package/skills/agentforce-architecture-analyze/scripts/tests/test_finalize.py +278 -0
  65. package/skills/agentforce-architecture-analyze/scripts/tests/test_flow_children_inflation.py +582 -0
  66. package/skills/agentforce-architecture-analyze/scripts/tests/test_fs_guard.py +113 -0
  67. package/skills/agentforce-architecture-analyze/scripts/tests/test_iterative_wave_b.py +478 -0
  68. package/skills/agentforce-architecture-analyze/scripts/tests/test_main_pipeline.py +3359 -0
  69. package/skills/agentforce-architecture-analyze/scripts/tests/test_parallel_retrieve.py +131 -0
  70. package/skills/agentforce-architecture-analyze/scripts/tests/test_parse_bundle.py +400 -0
  71. package/skills/agentforce-architecture-analyze/scripts/tests/test_parse_wave.py +644 -0
  72. package/skills/agentforce-architecture-analyze/scripts/tests/test_parse_wave_classifiers.py +224 -0
  73. package/skills/agentforce-architecture-analyze/scripts/tests/test_parse_wave_helpers.py +380 -0
  74. package/skills/agentforce-architecture-analyze/scripts/tests/test_parse_wave_main.py +397 -0
  75. package/skills/agentforce-architecture-analyze/scripts/tests/test_per_branch_visited.py +244 -0
  76. package/skills/agentforce-architecture-analyze/scripts/tests/test_probe_channels.py +359 -0
  77. package/skills/agentforce-architecture-analyze/scripts/tests/test_probe_cli_recipes.py +185 -0
  78. package/skills/agentforce-architecture-analyze/scripts/tests/test_render_architecture.py +810 -0
  79. package/skills/agentforce-architecture-analyze/scripts/tests/test_resolve_bot.py +203 -0
  80. package/skills/agentforce-architecture-analyze/scripts/tests/test_resolve_creds.py +157 -0
  81. package/skills/agentforce-architecture-analyze/scripts/tests/test_resolve_invocation_target.py +145 -0
  82. package/skills/agentforce-architecture-analyze/scripts/tests/test_rest_client.py +1253 -0
  83. package/skills/agentforce-architecture-analyze/scripts/tests/test_runtime_override.py +100 -0
  84. package/skills/agentforce-architecture-analyze/scripts/tests/test_sf_cli.py +261 -0
  85. package/skills/agentforce-architecture-analyze/scripts/tests/test_signature_stamping.py +466 -0
  86. package/skills/agentforce-architecture-analyze/scripts/tests/test_soql_loader.py +501 -0
  87. package/skills/agentforce-architecture-analyze/scripts/tests/test_summarize_tree.py +241 -0
  88. package/skills/agentforce-architecture-analyze/scripts/tests/test_write_emit_ctx.py +480 -0
  89. package/skills/agentforce-architecture-analyze/tools/emit_env.py +157 -0
  90. package/skills/agentforce-architecture-analyze/tools/emit_result.py +262 -0
  91. package/skills/agentforce-architecture-analyze/tools/sanitize.py +33 -0
  92. package/skills/agentforce-architecture-analyze/tools/write_emit_ctx.py +332 -0
  93. package/skills/agentforce-d360-analyze/README.md +123 -0
  94. package/skills/agentforce-d360-analyze/SKILL.md +163 -0
  95. package/skills/agentforce-d360-analyze/assets/dc/app_generation.sql +51 -0
  96. package/skills/agentforce-d360-analyze/assets/dc/content_category.sql +44 -0
  97. package/skills/agentforce-d360-analyze/assets/dc/content_quality.sql +41 -0
  98. package/skills/agentforce-d360-analyze/assets/dc/discover_sessions.sql +36 -0
  99. package/skills/agentforce-d360-analyze/assets/dc/feedback.sql +47 -0
  100. package/skills/agentforce-d360-analyze/assets/dc/feedback_details.sql +38 -0
  101. package/skills/agentforce-d360-analyze/assets/dc/gateway_records.sql +45 -0
  102. package/skills/agentforce-d360-analyze/assets/dc/gateway_request_llm.sql +50 -0
  103. package/skills/agentforce-d360-analyze/assets/dc/gateway_request_metadata.sql +44 -0
  104. package/skills/agentforce-d360-analyze/assets/dc/gateway_request_tags.sql +42 -0
  105. package/skills/agentforce-d360-analyze/assets/dc/gateway_requests.sql +89 -0
  106. package/skills/agentforce-d360-analyze/assets/dc/gateway_responses.sql +43 -0
  107. package/skills/agentforce-d360-analyze/assets/dc/generations.sql +52 -0
  108. package/skills/agentforce-d360-analyze/assets/dc/interactions.sql +53 -0
  109. package/skills/agentforce-d360-analyze/assets/dc/messages.sql +53 -0
  110. package/skills/agentforce-d360-analyze/assets/dc/messaging_session.sql +37 -0
  111. package/skills/agentforce-d360-analyze/assets/dc/moment_interactions.sql +34 -0
  112. package/skills/agentforce-d360-analyze/assets/dc/moments.sql +39 -0
  113. package/skills/agentforce-d360-analyze/assets/dc/participants.sql +48 -0
  114. package/skills/agentforce-d360-analyze/assets/dc/sessions.sql +78 -0
  115. package/skills/agentforce-d360-analyze/assets/dc/steps.sql +64 -0
  116. package/skills/agentforce-d360-analyze/assets/dc/tag_associations.sql +46 -0
  117. package/skills/agentforce-d360-analyze/assets/dc/tag_definition_associations.sql +37 -0
  118. package/skills/agentforce-d360-analyze/assets/dc/tag_definitions.sql +50 -0
  119. package/skills/agentforce-d360-analyze/assets/dc/tags.sql +37 -0
  120. package/skills/agentforce-d360-analyze/assets/dc/telemetry_spans.sql +55 -0
  121. package/skills/agentforce-d360-analyze/references/artifacts.md +50 -0
  122. package/skills/agentforce-d360-analyze/references/dc_dmo_fields.md +823 -0
  123. package/skills/agentforce-d360-analyze/references/dc_pipeline_contract.md +608 -0
  124. package/skills/agentforce-d360-analyze/scripts/_shared/__init__.py +2 -0
  125. package/skills/agentforce-d360-analyze/scripts/_shared/cli_override.py +98 -0
  126. package/skills/agentforce-d360-analyze/scripts/_shared/fs_guard.py +334 -0
  127. package/skills/agentforce-d360-analyze/scripts/_shared/paths.py +155 -0
  128. package/skills/agentforce-d360-analyze/scripts/_shared/runtime.py +59 -0
  129. package/skills/agentforce-d360-analyze/scripts/_shared/sql.py +14 -0
  130. package/skills/agentforce-d360-analyze/scripts/assemble_dc.py +1624 -0
  131. package/skills/agentforce-d360-analyze/scripts/config.py +45 -0
  132. package/skills/agentforce-d360-analyze/scripts/dc.py +188 -0
  133. package/skills/agentforce-d360-analyze/scripts/discover_sessions.py +556 -0
  134. package/skills/agentforce-d360-analyze/scripts/fetch_dc.py +1045 -0
  135. package/skills/agentforce-d360-analyze/scripts/render_dc.py +1750 -0
  136. package/skills/agentforce-d360-analyze/scripts/resolve_session.py +264 -0
  137. package/skills/agentforce-d360-analyze/scripts/storage.py +92 -0
  138. package/skills/agentforce-d360-analyze/scripts/tests/__init__.py +0 -0
  139. package/skills/agentforce-d360-analyze/scripts/tests/_bootstrap.py +15 -0
  140. package/skills/agentforce-d360-analyze/scripts/tests/fixtures/__init__.py +0 -0
  141. package/skills/agentforce-d360-analyze/scripts/tests/fixtures/synthetic_session.py +424 -0
  142. package/skills/agentforce-d360-analyze/scripts/tests/test_assemble_dc_bootstrap_and_mode.py +115 -0
  143. package/skills/agentforce-d360-analyze/scripts/tests/test_assemble_dc_gateway_direct.py +220 -0
  144. package/skills/agentforce-d360-analyze/scripts/tests/test_assemble_dc_gateway_direct_integration.py +158 -0
  145. package/skills/agentforce-d360-analyze/scripts/tests/test_assemble_dc_helpers.py +287 -0
  146. package/skills/agentforce-d360-analyze/scripts/tests/test_assemble_dc_integration.py +247 -0
  147. package/skills/agentforce-d360-analyze/scripts/tests/test_dc_and_resolve_session.py +433 -0
  148. package/skills/agentforce-d360-analyze/scripts/tests/test_discover_sessions.py +458 -0
  149. package/skills/agentforce-d360-analyze/scripts/tests/test_discover_sessions_grep_ci.py +193 -0
  150. package/skills/agentforce-d360-analyze/scripts/tests/test_fetch_dc_helpers.py +266 -0
  151. package/skills/agentforce-d360-analyze/scripts/tests/test_fetch_dc_identity.py +528 -0
  152. package/skills/agentforce-d360-analyze/scripts/tests/test_fetch_dc_main.py +251 -0
  153. package/skills/agentforce-d360-analyze/scripts/tests/test_fetch_dc_waterfall.py +229 -0
  154. package/skills/agentforce-d360-analyze/scripts/tests/test_fetch_dc_waterfall_full.py +283 -0
  155. package/skills/agentforce-d360-analyze/scripts/tests/test_identity_coherence.py +327 -0
  156. package/skills/agentforce-d360-analyze/scripts/tests/test_render_dc_branches.py +256 -0
  157. package/skills/agentforce-d360-analyze/scripts/tests/test_render_dc_gateway_direct.py +130 -0
  158. package/skills/agentforce-d360-analyze/scripts/tests/test_render_dc_helpers.py +291 -0
  159. package/skills/agentforce-d360-analyze/scripts/tests/test_render_dc_integration.py +220 -0
  160. package/skills/agentforce-d360-analyze/scripts/tests/test_render_dc_planner_llm_calls.py +284 -0
  161. package/skills/agentforce-d360-analyze/scripts/tests/test_render_dc_show_prompts_gating.py +215 -0
  162. package/skills/agentforce-d360-analyze/scripts/tests/test_resolve_from_disk.py +100 -0
  163. package/skills/agentforce-d360-analyze/scripts/tests/test_resolve_session_main.py +149 -0
  164. package/skills/agentforce-d360-analyze/scripts/tests/test_runtime_override.py +104 -0
  165. package/skills/agentforce-d360-analyze/scripts/tests/test_session_shape.py +95 -0
  166. package/skills/agentforce-d360-analyze/scripts/tests/test_session_shape_dropped_by_stdm.py +85 -0
  167. package/skills/agentforce-generate/README.md +112 -0
  168. package/skills/agentforce-generate/SKILL.md +518 -0
  169. package/skills/agentforce-generate/assets/README-legacy.md +89 -0
  170. package/skills/agentforce-generate/assets/agent-spec-template.md +90 -0
  171. package/skills/agentforce-generate/assets/agents/README.md +45 -0
  172. package/skills/agentforce-generate/assets/agents/hello-world.agent +60 -0
  173. package/skills/agentforce-generate/assets/agents/multi-subagent.agent +105 -0
  174. package/skills/agentforce-generate/assets/agents/order-service.agent +272 -0
  175. package/skills/agentforce-generate/assets/agents/production-faq.agent +101 -0
  176. package/skills/agentforce-generate/assets/agents/production-faq.bundle-meta.xml +4 -0
  177. package/skills/agentforce-generate/assets/agents/simple-qa.agent +72 -0
  178. package/skills/agentforce-generate/assets/agents/verification-gate.agent +280 -0
  179. package/skills/agentforce-generate/assets/apex/models-api-queueable.cls +225 -0
  180. package/skills/agentforce-generate/assets/bundle-meta.xml +23 -0
  181. package/skills/agentforce-generate/assets/components/apex-action.agent +52 -0
  182. package/skills/agentforce-generate/assets/components/error-handling.agent +58 -0
  183. package/skills/agentforce-generate/assets/components/escalation-setup.agent +169 -0
  184. package/skills/agentforce-generate/assets/components/flow-action.agent +66 -0
  185. package/skills/agentforce-generate/assets/components/n-ary-conditions.agent +110 -0
  186. package/skills/agentforce-generate/assets/components/subagent-with-actions.agent +40 -0
  187. package/skills/agentforce-generate/assets/deterministic-routing.agent +166 -0
  188. package/skills/agentforce-generate/assets/escalation-pattern.agent +209 -0
  189. package/skills/agentforce-generate/assets/flow-action-lookup.agent +115 -0
  190. package/skills/agentforce-generate/assets/hub-and-spoke.agent +104 -0
  191. package/skills/agentforce-generate/assets/invocable-apex-template.cls +187 -0
  192. package/skills/agentforce-generate/assets/local-info-agent-annotated.agent +355 -0
  193. package/skills/agentforce-generate/assets/metadata/basic-prompt-template.promptTemplate-meta.xml +109 -0
  194. package/skills/agentforce-generate/assets/metadata/genai-function-apex.xml +92 -0
  195. package/skills/agentforce-generate/assets/metadata/genai-function-flow.xml +57 -0
  196. package/skills/agentforce-generate/assets/metadata/genai-plugin.xml +72 -0
  197. package/skills/agentforce-generate/assets/metadata/http-callout-flow.flow-meta.xml +348 -0
  198. package/skills/agentforce-generate/assets/metadata/record-grounded-prompt.promptTemplate-meta.xml +136 -0
  199. package/skills/agentforce-generate/assets/minimal-starter.agent +42 -0
  200. package/skills/agentforce-generate/assets/patterns/README.md +254 -0
  201. package/skills/agentforce-generate/assets/patterns/action-callbacks.agent +178 -0
  202. package/skills/agentforce-generate/assets/patterns/advanced-input-bindings.agent +141 -0
  203. package/skills/agentforce-generate/assets/patterns/bidirectional-routing.agent +156 -0
  204. package/skills/agentforce-generate/assets/patterns/critical-input-collection.agent +244 -0
  205. package/skills/agentforce-generate/assets/patterns/delegation-routing.agent +89 -0
  206. package/skills/agentforce-generate/assets/patterns/lifecycle-events.agent +127 -0
  207. package/skills/agentforce-generate/assets/patterns/llm-controlled-actions.agent +184 -0
  208. package/skills/agentforce-generate/assets/patterns/multi-step-workflow.agent +282 -0
  209. package/skills/agentforce-generate/assets/patterns/open-gate-routing.agent +287 -0
  210. package/skills/agentforce-generate/assets/patterns/procedural-instructions.agent +273 -0
  211. package/skills/agentforce-generate/assets/patterns/prompt-template-action.agent +188 -0
  212. package/skills/agentforce-generate/assets/patterns/system-instruction-overrides.agent +293 -0
  213. package/skills/agentforce-generate/assets/prompt-rag-search.agent +131 -0
  214. package/skills/agentforce-generate/assets/template-multi-subagent.agent +160 -0
  215. package/skills/agentforce-generate/assets/template-single-subagent.agent +81 -0
  216. package/skills/agentforce-generate/assets/verification-gate.agent +208 -0
  217. package/skills/agentforce-generate/references/action-prompt-templates.md +164 -0
  218. package/skills/agentforce-generate/references/actions-reference.md +612 -0
  219. package/skills/agentforce-generate/references/agent-access-guide.md +72 -0
  220. package/skills/agentforce-generate/references/agent-design-and-spec-creation.md +1010 -0
  221. package/skills/agentforce-generate/references/agent-metadata-and-lifecycle.md +575 -0
  222. package/skills/agentforce-generate/references/agent-script-core-language.md +1255 -0
  223. package/skills/agentforce-generate/references/agent-subagent-map-diagrams.md +323 -0
  224. package/skills/agentforce-generate/references/agent-user-setup.md +529 -0
  225. package/skills/agentforce-generate/references/agent-validation-and-debugging.md +805 -0
  226. package/skills/agentforce-generate/references/architecture-patterns.md +158 -0
  227. package/skills/agentforce-generate/references/complex-data-types.md +57 -0
  228. package/skills/agentforce-generate/references/deploy-reference.md +134 -0
  229. package/skills/agentforce-generate/references/discover-reference.md +102 -0
  230. package/skills/agentforce-generate/references/examples.md +350 -0
  231. package/skills/agentforce-generate/references/feature-validity.md +43 -0
  232. package/skills/agentforce-generate/references/instruction-resolution.md +545 -0
  233. package/skills/agentforce-generate/references/known-issues.md +353 -0
  234. package/skills/agentforce-generate/references/minimal-examples.md +67 -0
  235. package/skills/agentforce-generate/references/production-gotchas.md +300 -0
  236. package/skills/agentforce-generate/references/safety-review-reference.md +145 -0
  237. package/skills/agentforce-generate/references/salesforce-cli-for-agents.md +395 -0
  238. package/skills/agentforce-generate/references/scaffold-reference.md +153 -0
  239. package/skills/agentforce-generate/references/scoring-rubric.md +24 -0
  240. package/skills/agentforce-generate/references/version-history.md +23 -0
  241. package/skills/agentforce-observe/SKILL.md +366 -0
  242. package/skills/agentforce-observe/apex/AgentforceOptimizeService.cls +1262 -0
  243. package/skills/agentforce-observe/apex/AgentforceOptimizeService.cls-meta.xml +5 -0
  244. package/skills/agentforce-observe/references/improve-reference.md +359 -0
  245. package/skills/agentforce-observe/references/issue-classification.md +220 -0
  246. package/skills/agentforce-observe/references/reproduce-reference.md +131 -0
  247. package/skills/agentforce-observe/references/stdm-queries.md +373 -0
  248. package/skills/agentforce-observe/references/stdm-schema.md +189 -0
  249. package/skills/agentforce-test/SKILL.md +333 -0
  250. package/skills/agentforce-test/assets/basic-test-spec.yaml +63 -0
  251. package/skills/agentforce-test/assets/guardrail-test-spec.yaml +105 -0
  252. package/skills/agentforce-test/assets/standard-test-spec.yaml +127 -0
  253. package/skills/agentforce-test/references/action-execution.md +241 -0
  254. package/skills/agentforce-test/references/batch-testing.md +274 -0
  255. package/skills/agentforce-test/references/preview-testing.md +353 -0
  256. package/skills/agentforce-test/references/test-report-format.md +160 -0
  257. package/skills/agentforce-test/references/troubleshooting.md +73 -0
  258. package/skills/analyzing-test-failures/SKILL.md +1 -1
  259. package/skills/automation-flow-generate/SKILL.md +372 -0
  260. package/skills/commerce-b2b-open-code-components-integrate/SKILL.md +165 -0
  261. package/skills/commerce-b2b-store-create/SKILL.md +167 -0
  262. package/skills/commerce-b2b-store-create/references/store-vs-storefront.md +169 -0
  263. package/skills/creating-fix-work-item/SKILL.md +1 -1
  264. package/skills/data360-activate/CREDITS.md +5 -0
  265. package/skills/data360-activate/README.md +39 -0
  266. package/skills/data360-activate/SKILL.md +117 -0
  267. package/skills/data360-connect/CREDITS.md +5 -0
  268. package/skills/data360-connect/README.md +59 -0
  269. package/skills/data360-connect/SKILL.md +154 -0
  270. package/skills/data360-connect/examples/connections/heroku-postgres.json +15 -0
  271. package/skills/data360-connect/examples/connections/ingest-api-connection.json +5 -0
  272. package/skills/data360-connect/examples/connections/ingest-api-schema.json +31 -0
  273. package/skills/data360-connect/examples/connections/redshift.json +16 -0
  274. package/skills/data360-connect/examples/connections/sharepoint-unstructured.json +20 -0
  275. package/skills/data360-connect/examples/connections/snowflake-connection.json +42 -0
  276. package/skills/data360-harmonize/CREDITS.md +3 -0
  277. package/skills/data360-harmonize/README.md +31 -0
  278. package/skills/data360-harmonize/SKILL.md +116 -0
  279. package/skills/data360-orchestrate/CREDITS.md +15 -0
  280. package/skills/data360-orchestrate/README.md +127 -0
  281. package/skills/data360-orchestrate/SKILL.md +235 -0
  282. package/skills/data360-orchestrate/UPSTREAM.md +45 -0
  283. package/skills/data360-orchestrate/assets/definitions/activation-target.template.json +5 -0
  284. package/skills/data360-orchestrate/assets/definitions/activation.template.json +7 -0
  285. package/skills/data360-orchestrate/assets/definitions/calculated-insight.template.json +7 -0
  286. package/skills/data360-orchestrate/assets/definitions/data-action-target.template.json +5 -0
  287. package/skills/data360-orchestrate/assets/definitions/data-action.template.json +5 -0
  288. package/skills/data360-orchestrate/assets/definitions/data-graph.template.json +21 -0
  289. package/skills/data360-orchestrate/assets/definitions/data-stream.template.json +55 -0
  290. package/skills/data360-orchestrate/assets/definitions/dmo.template.json +17 -0
  291. package/skills/data360-orchestrate/assets/definitions/identity-resolution.template.json +30 -0
  292. package/skills/data360-orchestrate/assets/definitions/mapping.template.json +14 -0
  293. package/skills/data360-orchestrate/assets/definitions/relationship.template.json +12 -0
  294. package/skills/data360-orchestrate/assets/definitions/search-index.template.json +9 -0
  295. package/skills/data360-orchestrate/assets/definitions/segment.template.json +16 -0
  296. package/skills/data360-orchestrate/references/feature-readiness.md +157 -0
  297. package/skills/data360-orchestrate/references/plugin-setup.md +138 -0
  298. package/skills/data360-orchestrate/scripts/bootstrap-plugin.sh +53 -0
  299. package/skills/data360-orchestrate/scripts/diagnose-org.mjs +511 -0
  300. package/skills/data360-orchestrate/scripts/generate-manifest.mjs +68 -0
  301. package/skills/data360-orchestrate/scripts/verify-plugin.sh +58 -0
  302. package/skills/data360-prepare/CREDITS.md +7 -0
  303. package/skills/data360-prepare/README.md +51 -0
  304. package/skills/data360-prepare/SKILL.md +190 -0
  305. package/skills/data360-prepare/examples/ingestion-api/.env.example +8 -0
  306. package/skills/data360-prepare/examples/ingestion-api/README.md +48 -0
  307. package/skills/data360-prepare/examples/ingestion-api/send-data.py +144 -0
  308. package/skills/data360-query/CREDITS.md +7 -0
  309. package/skills/data360-query/README.md +44 -0
  310. package/skills/data360-query/SKILL.md +119 -0
  311. package/skills/data360-query/examples/search-indexes/hybrid-structured.json +44 -0
  312. package/skills/data360-query/examples/search-indexes/vector-knowledge.json +43 -0
  313. package/skills/data360-segment/CREDITS.md +3 -0
  314. package/skills/data360-segment/README.md +36 -0
  315. package/skills/data360-segment/SKILL.md +114 -0
  316. package/skills/design-systems-slds-apply/SKILL.md +322 -0
  317. package/skills/design-systems-slds-apply/checklists.md +83 -0
  318. package/skills/design-systems-slds-apply/examples.md +283 -0
  319. package/skills/design-systems-slds-apply/guidance/README.md +83 -0
  320. package/skills/design-systems-slds-apply/guidance/blueprints-index.md +213 -0
  321. package/skills/design-systems-slds-apply/guidance/icons-guidance.md +186 -0
  322. package/skills/design-systems-slds-apply/guidance/overviews/borders.md +236 -0
  323. package/skills/design-systems-slds-apply/guidance/overviews/color.md +266 -0
  324. package/skills/design-systems-slds-apply/guidance/overviews/display-density.md +366 -0
  325. package/skills/design-systems-slds-apply/guidance/overviews/icons.md +240 -0
  326. package/skills/design-systems-slds-apply/guidance/overviews/illustrations.md +235 -0
  327. package/skills/design-systems-slds-apply/guidance/overviews/shadows.md +176 -0
  328. package/skills/design-systems-slds-apply/guidance/overviews/spacing.md +216 -0
  329. package/skills/design-systems-slds-apply/guidance/overviews/typography.md +323 -0
  330. package/skills/design-systems-slds-apply/guidance/overviews/utilities.md +542 -0
  331. package/skills/design-systems-slds-apply/guidance/slds-development-guide.md +288 -0
  332. package/skills/design-systems-slds-apply/guidance/styling-hooks/borders.md +202 -0
  333. package/skills/design-systems-slds-apply/guidance/styling-hooks/color/expressive-palette-hooks.md +153 -0
  334. package/skills/design-systems-slds-apply/guidance/styling-hooks/color/index.md +171 -0
  335. package/skills/design-systems-slds-apply/guidance/styling-hooks/color/semantic/accent-hooks.md +204 -0
  336. package/skills/design-systems-slds-apply/guidance/styling-hooks/color/semantic/feedback-hooks.md +768 -0
  337. package/skills/design-systems-slds-apply/guidance/styling-hooks/color/semantic/surface-hooks.md +337 -0
  338. package/skills/design-systems-slds-apply/guidance/styling-hooks/color/system-hooks.md +132 -0
  339. package/skills/design-systems-slds-apply/guidance/styling-hooks/index.md +327 -0
  340. package/skills/design-systems-slds-apply/guidance/styling-hooks/shadows.md +238 -0
  341. package/skills/design-systems-slds-apply/guidance/styling-hooks/spacing.md +254 -0
  342. package/skills/design-systems-slds-apply/guidance/styling-hooks/typography.md +448 -0
  343. package/skills/design-systems-slds-apply/guidance/utilities/alignment.md +119 -0
  344. package/skills/design-systems-slds-apply/guidance/utilities/borders.md +131 -0
  345. package/skills/design-systems-slds-apply/guidance/utilities/box.md +125 -0
  346. package/skills/design-systems-slds-apply/guidance/utilities/color.md +165 -0
  347. package/skills/design-systems-slds-apply/guidance/utilities/dark-mode.md +111 -0
  348. package/skills/design-systems-slds-apply/guidance/utilities/description-list.md +168 -0
  349. package/skills/design-systems-slds-apply/guidance/utilities/floats.md +117 -0
  350. package/skills/design-systems-slds-apply/guidance/utilities/grid.md +264 -0
  351. package/skills/design-systems-slds-apply/guidance/utilities/horizontal-list.md +110 -0
  352. package/skills/design-systems-slds-apply/guidance/utilities/hyphenation.md +84 -0
  353. package/skills/design-systems-slds-apply/guidance/utilities/index.md +205 -0
  354. package/skills/design-systems-slds-apply/guidance/utilities/interactions.md +89 -0
  355. package/skills/design-systems-slds-apply/guidance/utilities/layout.md +109 -0
  356. package/skills/design-systems-slds-apply/guidance/utilities/line-clamp.md +131 -0
  357. package/skills/design-systems-slds-apply/guidance/utilities/margin.md +155 -0
  358. package/skills/design-systems-slds-apply/guidance/utilities/media-object.md +161 -0
  359. package/skills/design-systems-slds-apply/guidance/utilities/name-value-list.md +152 -0
  360. package/skills/design-systems-slds-apply/guidance/utilities/padding.md +155 -0
  361. package/skills/design-systems-slds-apply/guidance/utilities/position.md +177 -0
  362. package/skills/design-systems-slds-apply/guidance/utilities/print.md +114 -0
  363. package/skills/design-systems-slds-apply/guidance/utilities/scrollable.md +126 -0
  364. package/skills/design-systems-slds-apply/guidance/utilities/sizing.md +190 -0
  365. package/skills/design-systems-slds-apply/guidance/utilities/themes.md +121 -0
  366. package/skills/design-systems-slds-apply/guidance/utilities/truncate.md +127 -0
  367. package/skills/design-systems-slds-apply/guidance/utilities/typography.md +166 -0
  368. package/skills/design-systems-slds-apply/guidance/utilities/vertical-list.md +166 -0
  369. package/skills/design-systems-slds-apply/guidance/utilities/visibility.md +228 -0
  370. package/skills/design-systems-slds-apply/metadata/README.md +84 -0
  371. package/skills/design-systems-slds-apply/metadata/blueprints/components/accordion.yaml +304 -0
  372. package/skills/design-systems-slds-apply/metadata/blueprints/components/activity-timeline.yaml +92 -0
  373. package/skills/design-systems-slds-apply/metadata/blueprints/components/alert.yaml +103 -0
  374. package/skills/design-systems-slds-apply/metadata/blueprints/components/app-launcher.yaml +94 -0
  375. package/skills/design-systems-slds-apply/metadata/blueprints/components/avatar-group.yaml +81 -0
  376. package/skills/design-systems-slds-apply/metadata/blueprints/components/avatar.yaml +97 -0
  377. package/skills/design-systems-slds-apply/metadata/blueprints/components/badges.yaml +102 -0
  378. package/skills/design-systems-slds-apply/metadata/blueprints/components/brand-band.yaml +198 -0
  379. package/skills/design-systems-slds-apply/metadata/blueprints/components/breadcrumbs.yaml +95 -0
  380. package/skills/design-systems-slds-apply/metadata/blueprints/components/builder-header.yaml +192 -0
  381. package/skills/design-systems-slds-apply/metadata/blueprints/components/button-groups.yaml +82 -0
  382. package/skills/design-systems-slds-apply/metadata/blueprints/components/button-icons.yaml +295 -0
  383. package/skills/design-systems-slds-apply/metadata/blueprints/components/buttons.yaml +230 -0
  384. package/skills/design-systems-slds-apply/metadata/blueprints/components/cards.yaml +124 -0
  385. package/skills/design-systems-slds-apply/metadata/blueprints/components/carousel.yaml +140 -0
  386. package/skills/design-systems-slds-apply/metadata/blueprints/components/chat.yaml +179 -0
  387. package/skills/design-systems-slds-apply/metadata/blueprints/components/checkbox-button-group.yaml +192 -0
  388. package/skills/design-systems-slds-apply/metadata/blueprints/components/checkbox-button.yaml +204 -0
  389. package/skills/design-systems-slds-apply/metadata/blueprints/components/checkbox-toggle.yaml +177 -0
  390. package/skills/design-systems-slds-apply/metadata/blueprints/components/checkbox.yaml +108 -0
  391. package/skills/design-systems-slds-apply/metadata/blueprints/components/color-picker.yaml +172 -0
  392. package/skills/design-systems-slds-apply/metadata/blueprints/components/combobox.yaml +136 -0
  393. package/skills/design-systems-slds-apply/metadata/blueprints/components/counter.yaml +147 -0
  394. package/skills/design-systems-slds-apply/metadata/blueprints/components/data-tables.yaml +157 -0
  395. package/skills/design-systems-slds-apply/metadata/blueprints/components/datepickers.yaml +130 -0
  396. package/skills/design-systems-slds-apply/metadata/blueprints/components/datetime-picker.yaml +155 -0
  397. package/skills/design-systems-slds-apply/metadata/blueprints/components/docked-composer.yaml +201 -0
  398. package/skills/design-systems-slds-apply/metadata/blueprints/components/docked-form-footer.yaml +161 -0
  399. package/skills/design-systems-slds-apply/metadata/blueprints/components/docked-utility-bar.yaml +175 -0
  400. package/skills/design-systems-slds-apply/metadata/blueprints/components/drop-zone.yaml +115 -0
  401. package/skills/design-systems-slds-apply/metadata/blueprints/components/dueling-picklist.yaml +196 -0
  402. package/skills/design-systems-slds-apply/metadata/blueprints/components/dynamic-icons.yaml +128 -0
  403. package/skills/design-systems-slds-apply/metadata/blueprints/components/dynamic-menu.yaml +141 -0
  404. package/skills/design-systems-slds-apply/metadata/blueprints/components/expandable-section.yaml +115 -0
  405. package/skills/design-systems-slds-apply/metadata/blueprints/components/expression.yaml +143 -0
  406. package/skills/design-systems-slds-apply/metadata/blueprints/components/feeds.yaml +125 -0
  407. package/skills/design-systems-slds-apply/metadata/blueprints/components/file-selector.yaml +154 -0
  408. package/skills/design-systems-slds-apply/metadata/blueprints/components/files.yaml +119 -0
  409. package/skills/design-systems-slds-apply/metadata/blueprints/components/form-element.yaml +145 -0
  410. package/skills/design-systems-slds-apply/metadata/blueprints/components/global-header.yaml +120 -0
  411. package/skills/design-systems-slds-apply/metadata/blueprints/components/global-navigation.yaml +100 -0
  412. package/skills/design-systems-slds-apply/metadata/blueprints/components/icons.yaml +138 -0
  413. package/skills/design-systems-slds-apply/metadata/blueprints/components/illustration.yaml +205 -0
  414. package/skills/design-systems-slds-apply/metadata/blueprints/components/input.yaml +151 -0
  415. package/skills/design-systems-slds-apply/metadata/blueprints/components/list-builder.yaml +127 -0
  416. package/skills/design-systems-slds-apply/metadata/blueprints/components/lookups.yaml +132 -0
  417. package/skills/design-systems-slds-apply/metadata/blueprints/components/map.yaml +118 -0
  418. package/skills/design-systems-slds-apply/metadata/blueprints/components/menus.yaml +134 -0
  419. package/skills/design-systems-slds-apply/metadata/blueprints/components/modals.yaml +152 -0
  420. package/skills/design-systems-slds-apply/metadata/blueprints/components/notifications.yaml +88 -0
  421. package/skills/design-systems-slds-apply/metadata/blueprints/components/page-headers.yaml +135 -0
  422. package/skills/design-systems-slds-apply/metadata/blueprints/components/panels.yaml +149 -0
  423. package/skills/design-systems-slds-apply/metadata/blueprints/components/path.yaml +154 -0
  424. package/skills/design-systems-slds-apply/metadata/blueprints/components/picklist.yaml +125 -0
  425. package/skills/design-systems-slds-apply/metadata/blueprints/components/pills.yaml +154 -0
  426. package/skills/design-systems-slds-apply/metadata/blueprints/components/popovers.yaml +120 -0
  427. package/skills/design-systems-slds-apply/metadata/blueprints/components/progress-bar.yaml +110 -0
  428. package/skills/design-systems-slds-apply/metadata/blueprints/components/progress-indicator.yaml +133 -0
  429. package/skills/design-systems-slds-apply/metadata/blueprints/components/progress-ring.yaml +102 -0
  430. package/skills/design-systems-slds-apply/metadata/blueprints/components/prompt.yaml +126 -0
  431. package/skills/design-systems-slds-apply/metadata/blueprints/components/publishers.yaml +178 -0
  432. package/skills/design-systems-slds-apply/metadata/blueprints/components/radio-button-group.yaml +172 -0
  433. package/skills/design-systems-slds-apply/metadata/blueprints/components/radio-group.yaml +112 -0
  434. package/skills/design-systems-slds-apply/metadata/blueprints/components/rich-text-editor.yaml +135 -0
  435. package/skills/design-systems-slds-apply/metadata/blueprints/components/scoped-notifications.yaml +188 -0
  436. package/skills/design-systems-slds-apply/metadata/blueprints/components/scoped-tabs.yaml +97 -0
  437. package/skills/design-systems-slds-apply/metadata/blueprints/components/select.yaml +127 -0
  438. package/skills/design-systems-slds-apply/metadata/blueprints/components/setup-assistant.yaml +152 -0
  439. package/skills/design-systems-slds-apply/metadata/blueprints/components/slider.yaml +111 -0
  440. package/skills/design-systems-slds-apply/metadata/blueprints/components/spinners.yaml +135 -0
  441. package/skills/design-systems-slds-apply/metadata/blueprints/components/split-view.yaml +112 -0
  442. package/skills/design-systems-slds-apply/metadata/blueprints/components/summary-detail.yaml +103 -0
  443. package/skills/design-systems-slds-apply/metadata/blueprints/components/tabs.yaml +138 -0
  444. package/skills/design-systems-slds-apply/metadata/blueprints/components/textarea.yaml +116 -0
  445. package/skills/design-systems-slds-apply/metadata/blueprints/components/tiles.yaml +108 -0
  446. package/skills/design-systems-slds-apply/metadata/blueprints/components/timepicker.yaml +111 -0
  447. package/skills/design-systems-slds-apply/metadata/blueprints/components/toast.yaml +154 -0
  448. package/skills/design-systems-slds-apply/metadata/blueprints/components/tooltips.yaml +107 -0
  449. package/skills/design-systems-slds-apply/metadata/blueprints/components/tree-grid.yaml +116 -0
  450. package/skills/design-systems-slds-apply/metadata/blueprints/components/trees.yaml +116 -0
  451. package/skills/design-systems-slds-apply/metadata/blueprints/components/trial-bar.yaml +112 -0
  452. package/skills/design-systems-slds-apply/metadata/blueprints/components/vertical-navigation.yaml +130 -0
  453. package/skills/design-systems-slds-apply/metadata/blueprints/components/vertical-tabs.yaml +140 -0
  454. package/skills/design-systems-slds-apply/metadata/blueprints/components/visual-picker.yaml +150 -0
  455. package/skills/design-systems-slds-apply/metadata/blueprints/components/welcome-mat.yaml +136 -0
  456. package/skills/design-systems-slds-apply/metadata/hooks-index.json +6272 -0
  457. package/skills/design-systems-slds-apply/metadata/icon-metadata.json +38466 -0
  458. package/skills/design-systems-slds-apply/metadata/utilities-index.json +21912 -0
  459. package/skills/design-systems-slds-apply/references/component-selection.md +112 -0
  460. package/skills/design-systems-slds-apply/references/icons-decision-guide.md +124 -0
  461. package/skills/design-systems-slds-apply/references/styling-decision-guide.md +228 -0
  462. package/skills/design-systems-slds-apply/references/utilities-quick-ref.md +125 -0
  463. package/skills/design-systems-slds-apply/scripts/search-blueprints.cjs +117 -0
  464. package/skills/design-systems-slds-apply/scripts/search-hooks.cjs +139 -0
  465. package/skills/design-systems-slds-apply/scripts/search-icons.cjs +174 -0
  466. package/skills/design-systems-slds-apply/scripts/search-utilities.cjs +161 -0
  467. package/skills/design-systems-slds-validate/SKILL.md +262 -0
  468. package/skills/design-systems-slds-validate/references/quality-checks.md +308 -0
  469. package/skills/design-systems-slds-validate/references/report-format.md +302 -0
  470. package/skills/design-systems-slds-validate/scripts/analyze-quality.cjs +521 -0
  471. package/skills/design-systems-slds2-migrate/SKILL.md +239 -0
  472. package/skills/design-systems-slds2-migrate/references/color-hooks-decision-guide.md +459 -0
  473. package/skills/design-systems-slds2-migrate/references/common-patterns.md +87 -0
  474. package/skills/design-systems-slds2-migrate/references/examples.md +461 -0
  475. package/skills/design-systems-slds2-migrate/references/migration-checklist.md +67 -0
  476. package/skills/design-systems-slds2-migrate/references/non-color-hooks-decision-guide.md +333 -0
  477. package/skills/design-systems-slds2-migrate/references/rule-lwc-token-to-slds-hook.md +135 -0
  478. package/skills/design-systems-slds2-migrate/references/rule-no-deprecated-tokens-slds1.md +211 -0
  479. package/skills/design-systems-slds2-migrate/references/rule-no-hardcoded-values.md +160 -0
  480. package/skills/design-systems-slds2-migrate/references/rule-no-slds-class-overrides.md +126 -0
  481. package/skills/dx-app-analytics-query/SKILL.md +135 -0
  482. package/skills/dx-app-analytics-use/SKILL.md +135 -0
  483. package/skills/dx-code-analyzer-configure/SKILL.md +482 -0
  484. package/skills/dx-code-analyzer-configure/examples/apex-project-config.yml +41 -0
  485. package/skills/dx-code-analyzer-configure/examples/ci-github-actions.yml +96 -0
  486. package/skills/dx-code-analyzer-configure/examples/fullstack-project-config.yml +46 -0
  487. package/skills/dx-code-analyzer-configure/examples/lwc-project-config.yml +26 -0
  488. package/skills/dx-code-analyzer-configure/references/ci-cd-templates.md +648 -0
  489. package/skills/dx-code-analyzer-configure/references/config-schema.md +257 -0
  490. package/skills/dx-code-analyzer-configure/references/diagnostic-flow.md +70 -0
  491. package/skills/dx-code-analyzer-configure/references/engine-prerequisites.md +276 -0
  492. package/skills/dx-code-analyzer-configure/references/rule-name-resolution.md +67 -0
  493. package/skills/dx-code-analyzer-configure/references/troubleshooting.md +298 -0
  494. package/skills/dx-code-analyzer-configure/scripts/check-prerequisites.sh +189 -0
  495. package/skills/dx-code-analyzer-configure/scripts/generate-config.sh +143 -0
  496. package/skills/dx-code-analyzer-configure/scripts/validate-config.sh +153 -0
  497. package/skills/dx-code-analyzer-run/SKILL.md +495 -0
  498. package/skills/dx-code-analyzer-run/examples/README.md +38 -0
  499. package/skills/dx-code-analyzer-run/examples/basic-scan-output.json +92 -0
  500. package/skills/dx-code-analyzer-run/examples/command-variations.md +333 -0
  501. package/skills/dx-code-analyzer-run/examples/fix-application-before-after.md +142 -0
  502. package/skills/dx-code-analyzer-run/examples/large-scan-output.json +67 -0
  503. package/skills/dx-code-analyzer-run/examples/security-focused-output.json +95 -0
  504. package/skills/dx-code-analyzer-run/references/command-examples.md +27 -0
  505. package/skills/dx-code-analyzer-run/references/engine-reference.md +34 -0
  506. package/skills/dx-code-analyzer-run/references/error-handling.md +29 -0
  507. package/skills/dx-code-analyzer-run/references/flag-reference.md +96 -0
  508. package/skills/dx-code-analyzer-run/references/post-scan-workflows.md +286 -0
  509. package/skills/dx-code-analyzer-run/references/quick-start.md +28 -0
  510. package/skills/dx-code-analyzer-run/references/special-behaviors.md +83 -0
  511. package/skills/dx-code-analyzer-run/references/vendor-file-handling.md +239 -0
  512. package/skills/dx-code-analyzer-run/scripts/apply-fixes.js +86 -0
  513. package/skills/dx-code-analyzer-run/scripts/describe-rule.js +382 -0
  514. package/skills/dx-code-analyzer-run/scripts/discover-fixes.js +34 -0
  515. package/skills/dx-code-analyzer-run/scripts/filter-violations.js +405 -0
  516. package/skills/dx-code-analyzer-run/scripts/list-rules.js +260 -0
  517. package/skills/dx-code-analyzer-run/scripts/parse-results.js +59 -0
  518. package/skills/dx-code-analyzer-run/scripts/query-results.js +230 -0
  519. package/skills/dx-code-analyzer-run/scripts/summarize-fixes.js +32 -0
  520. package/skills/dx-code-analyzer-run/scripts/verify-execution.sh +28 -0
  521. package/skills/dx-org-switch/SKILL.md +28 -0
  522. package/skills/experience-cms-brand-apply/SKILL.md +170 -0
  523. package/skills/experience-content-media-search/SKILL.md +348 -0
  524. package/skills/experience-lwc-generate/CREDITS.md +5 -0
  525. package/skills/experience-lwc-generate/README.md +126 -0
  526. package/skills/experience-lwc-generate/SKILL.md +190 -0
  527. package/skills/experience-lwc-generate/assets/apex-controller/LwcController.cls +327 -0
  528. package/skills/experience-lwc-generate/assets/basic-component/basicComponent.css +72 -0
  529. package/skills/experience-lwc-generate/assets/basic-component/basicComponent.html +111 -0
  530. package/skills/experience-lwc-generate/assets/basic-component/basicComponent.js +163 -0
  531. package/skills/experience-lwc-generate/assets/basic-component/basicComponent.js-meta.xml +137 -0
  532. package/skills/experience-lwc-generate/assets/datatable-component/datatableComponent.html +111 -0
  533. package/skills/experience-lwc-generate/assets/datatable-component/datatableComponent.js +367 -0
  534. package/skills/experience-lwc-generate/assets/flow-screen-component/flowScreenComponent.css +63 -0
  535. package/skills/experience-lwc-generate/assets/flow-screen-component/flowScreenComponent.html +154 -0
  536. package/skills/experience-lwc-generate/assets/flow-screen-component/flowScreenComponent.js +348 -0
  537. package/skills/experience-lwc-generate/assets/flow-screen-component/flowScreenComponent.js-meta.xml +87 -0
  538. package/skills/experience-lwc-generate/assets/form-component/formComponent.html +165 -0
  539. package/skills/experience-lwc-generate/assets/form-component/formComponent.js +275 -0
  540. package/skills/experience-lwc-generate/assets/graphql-component/graphqlComponent.html +100 -0
  541. package/skills/experience-lwc-generate/assets/graphql-component/graphqlComponent.js +336 -0
  542. package/skills/experience-lwc-generate/assets/jest-test/componentName.test.js.example +371 -0
  543. package/skills/experience-lwc-generate/assets/message-channel/RecordSelected.messageChannel-meta.xml +71 -0
  544. package/skills/experience-lwc-generate/assets/message-channel/lmsPublisher.js +103 -0
  545. package/skills/experience-lwc-generate/assets/message-channel/lmsSubscriber.js +181 -0
  546. package/skills/experience-lwc-generate/assets/modal-component/modalComponent.html +85 -0
  547. package/skills/experience-lwc-generate/assets/modal-component/modalComponent.js +199 -0
  548. package/skills/experience-lwc-generate/assets/record-picker/recordPicker.html +55 -0
  549. package/skills/experience-lwc-generate/assets/record-picker/recordPicker.js +199 -0
  550. package/skills/experience-lwc-generate/assets/state-store/store.js +282 -0
  551. package/skills/experience-lwc-generate/assets/typescript-component/typescriptComponent.css +65 -0
  552. package/skills/experience-lwc-generate/assets/typescript-component/typescriptComponent.html +95 -0
  553. package/skills/experience-lwc-generate/assets/typescript-component/typescriptComponent.js-meta.xml +75 -0
  554. package/skills/experience-lwc-generate/assets/typescript-component/typescriptComponent.test.ts.example +301 -0
  555. package/skills/experience-lwc-generate/assets/typescript-component/typescriptComponent.ts +295 -0
  556. package/skills/experience-lwc-generate/assets/workspace-api/workspaceComponent.html +71 -0
  557. package/skills/experience-lwc-generate/assets/workspace-api/workspaceComponent.js +316 -0
  558. package/skills/experience-lwc-generate/hooks/scripts/lwc-lsp-validate.py +295 -0
  559. package/skills/experience-lwc-generate/hooks/scripts/post-tool-validate.py +347 -0
  560. package/skills/experience-lwc-generate/hooks/scripts/slds_data/deprecated_patterns.json +74 -0
  561. package/skills/experience-lwc-generate/hooks/scripts/slds_data/styling_hooks.json +111 -0
  562. package/skills/experience-lwc-generate/hooks/scripts/slds_data/valid_slds_classes.json +127 -0
  563. package/skills/experience-lwc-generate/hooks/scripts/slds_linter_wrapper.py +294 -0
  564. package/skills/experience-lwc-generate/hooks/scripts/slds_rules/__init__.py +22 -0
  565. package/skills/experience-lwc-generate/hooks/scripts/template_validator.py +332 -0
  566. package/skills/experience-lwc-generate/hooks/scripts/validate_slds.py +595 -0
  567. package/skills/experience-lwc-generate/references/accessibility-guide.md +843 -0
  568. package/skills/experience-lwc-generate/references/advanced-features.md +108 -0
  569. package/skills/experience-lwc-generate/references/async-notification-patterns.md +661 -0
  570. package/skills/experience-lwc-generate/references/cli-commands.md +545 -0
  571. package/skills/experience-lwc-generate/references/component-patterns.md +1476 -0
  572. package/skills/experience-lwc-generate/references/flow-integration-guide.md +675 -0
  573. package/skills/experience-lwc-generate/references/jest-testing.md +1011 -0
  574. package/skills/experience-lwc-generate/references/lms-guide.md +860 -0
  575. package/skills/experience-lwc-generate/references/lwc-best-practices.md +1310 -0
  576. package/skills/experience-lwc-generate/references/performance-guide.md +861 -0
  577. package/skills/experience-lwc-generate/references/scoring-and-testing.md +116 -0
  578. package/skills/experience-lwc-generate/references/slds-blueprints.json +14389 -0
  579. package/skills/experience-lwc-generate/references/slds-design-guide.md +166 -0
  580. package/skills/experience-lwc-generate/references/state-management.md +642 -0
  581. package/skills/experience-lwc-generate/references/template-anti-patterns.md +948 -0
  582. package/skills/experience-lwc-generate/references/triangle-pattern.md +365 -0
  583. package/skills/experience-lwc-generate/scripts/local-dev-preview.sh +34 -0
  584. package/skills/experience-ui-bundle-agentforce-client-generate/SKILL.md +280 -0
  585. package/skills/experience-ui-bundle-agentforce-client-generate/references/agent-id-resolution.md +46 -0
  586. package/skills/experience-ui-bundle-agentforce-client-generate/references/constraints.md +134 -0
  587. package/skills/experience-ui-bundle-agentforce-client-generate/references/examples.md +132 -0
  588. package/skills/experience-ui-bundle-agentforce-client-generate/references/style-tokens.md +260 -0
  589. package/skills/experience-ui-bundle-agentforce-client-generate/references/troubleshooting.md +57 -0
  590. package/skills/experience-ui-bundle-app-coordinate/SKILL.md +350 -0
  591. package/skills/experience-ui-bundle-custom-app-generate/SKILL.md +93 -0
  592. package/skills/experience-ui-bundle-custom-app-generate/docs/configure-metadata-custom-application.md +70 -0
  593. package/skills/experience-ui-bundle-deploy/SKILL.md +79 -0
  594. package/skills/experience-ui-bundle-features-generate/SKILL.md +47 -0
  595. package/skills/experience-ui-bundle-file-upload-generate/SKILL.md +398 -0
  596. package/skills/experience-ui-bundle-frontend-generate/SKILL.md +135 -0
  597. package/skills/experience-ui-bundle-frontend-generate/implementation/component.md +78 -0
  598. package/skills/experience-ui-bundle-frontend-generate/implementation/header-footer.md +132 -0
  599. package/skills/experience-ui-bundle-frontend-generate/implementation/page.md +93 -0
  600. package/skills/experience-ui-bundle-metadata-generate/SKILL.md +153 -0
  601. package/skills/experience-ui-bundle-metadata-generate/implementation/csp-metadata-format.md +281 -0
  602. package/skills/experience-ui-bundle-salesforce-data-access/SKILL.md +638 -0
  603. package/skills/experience-ui-bundle-salesforce-data-access/scripts/graphql-search.sh +191 -0
  604. package/skills/experience-ui-bundle-site-generate/SKILL.md +92 -0
  605. package/skills/experience-ui-bundle-site-generate/docs/configure-metadata-custom-site.md +41 -0
  606. package/skills/experience-ui-bundle-site-generate/docs/configure-metadata-digital-experience-bundle.md +17 -0
  607. package/skills/experience-ui-bundle-site-generate/docs/configure-metadata-digital-experience-config.md +21 -0
  608. package/skills/experience-ui-bundle-site-generate/docs/configure-metadata-digital-experience.md +40 -0
  609. package/skills/experience-ui-bundle-site-generate/docs/configure-metadata-network.md +72 -0
  610. package/skills/experience-ui-bundle-site-generate/docs/update-site-urls.md +100 -0
  611. package/skills/external-diagram-mermaid-generate/CREDITS.md +46 -0
  612. package/skills/external-diagram-mermaid-generate/README.md +114 -0
  613. package/skills/external-diagram-mermaid-generate/SKILL.md +217 -0
  614. package/skills/external-diagram-mermaid-generate/assets/agentforce/agent-flow.md +313 -0
  615. package/skills/external-diagram-mermaid-generate/assets/architecture/system-landscape.md +351 -0
  616. package/skills/external-diagram-mermaid-generate/assets/datamodel/b2b-commerce-erd.md +317 -0
  617. package/skills/external-diagram-mermaid-generate/assets/datamodel/campaigns-erd.md +195 -0
  618. package/skills/external-diagram-mermaid-generate/assets/datamodel/consent-erd.md +262 -0
  619. package/skills/external-diagram-mermaid-generate/assets/datamodel/files-erd.md +266 -0
  620. package/skills/external-diagram-mermaid-generate/assets/datamodel/forecasting-erd.md +261 -0
  621. package/skills/external-diagram-mermaid-generate/assets/datamodel/fsl-erd.md +332 -0
  622. package/skills/external-diagram-mermaid-generate/assets/datamodel/party-model-erd.md +237 -0
  623. package/skills/external-diagram-mermaid-generate/assets/datamodel/quote-order-erd.md +277 -0
  624. package/skills/external-diagram-mermaid-generate/assets/datamodel/revenue-cloud-erd.md +343 -0
  625. package/skills/external-diagram-mermaid-generate/assets/datamodel/sales-cloud-erd.md +192 -0
  626. package/skills/external-diagram-mermaid-generate/assets/datamodel/salesforce-erd.md +209 -0
  627. package/skills/external-diagram-mermaid-generate/assets/datamodel/scheduler-erd.md +276 -0
  628. package/skills/external-diagram-mermaid-generate/assets/datamodel/service-cloud-erd.md +217 -0
  629. package/skills/external-diagram-mermaid-generate/assets/datamodel/territory-management-erd.md +241 -0
  630. package/skills/external-diagram-mermaid-generate/assets/integration/api-sequence.md +387 -0
  631. package/skills/external-diagram-mermaid-generate/assets/oauth/authorization-code-pkce.md +197 -0
  632. package/skills/external-diagram-mermaid-generate/assets/oauth/authorization-code.md +152 -0
  633. package/skills/external-diagram-mermaid-generate/assets/oauth/client-credentials.md +233 -0
  634. package/skills/external-diagram-mermaid-generate/assets/oauth/device-authorization.md +295 -0
  635. package/skills/external-diagram-mermaid-generate/assets/oauth/jwt-bearer.md +256 -0
  636. package/skills/external-diagram-mermaid-generate/assets/oauth/refresh-token.md +281 -0
  637. package/skills/external-diagram-mermaid-generate/assets/oauth/user-agent-social-sign-on.md +281 -0
  638. package/skills/external-diagram-mermaid-generate/assets/role-hierarchy/user-hierarchy.md +322 -0
  639. package/skills/external-diagram-mermaid-generate/references/color-palette.md +464 -0
  640. package/skills/external-diagram-mermaid-generate/references/diagram-conventions.md +313 -0
  641. package/skills/external-diagram-mermaid-generate/references/erd-conventions.md +320 -0
  642. package/skills/external-diagram-mermaid-generate/references/mermaid-reference.md +434 -0
  643. package/skills/external-diagram-mermaid-generate/references/mermaid-styling.md +81 -0
  644. package/skills/external-diagram-mermaid-generate/references/preview-guide.md +46 -0
  645. package/skills/external-diagram-mermaid-generate/references/usage-examples.md +340 -0
  646. package/skills/external-diagram-mermaid-generate/scripts/README.md +160 -0
  647. package/skills/external-diagram-mermaid-generate/scripts/mermaid_preview.py +654 -0
  648. package/skills/external-diagram-mermaid-generate/scripts/query-org-metadata.py +293 -0
  649. package/skills/external-diagram-visual-generate/CREDITS.md +80 -0
  650. package/skills/external-diagram-visual-generate/README.md +83 -0
  651. package/skills/external-diagram-visual-generate/SKILL.md +207 -0
  652. package/skills/external-diagram-visual-generate/assets/architecture/integration-flow.md +55 -0
  653. package/skills/external-diagram-visual-generate/assets/erd/core-objects.md +131 -0
  654. package/skills/external-diagram-visual-generate/assets/erd/custom-objects.md +60 -0
  655. package/skills/external-diagram-visual-generate/assets/lwc/dashboard-card.md +45 -0
  656. package/skills/external-diagram-visual-generate/assets/lwc/data-table.md +57 -0
  657. package/skills/external-diagram-visual-generate/assets/lwc/record-form.md +60 -0
  658. package/skills/external-diagram-visual-generate/assets/review/apex-review.md +57 -0
  659. package/skills/external-diagram-visual-generate/assets/review/lwc-review.md +48 -0
  660. package/skills/external-diagram-visual-generate/references/architect-aesthetic-guide.md +257 -0
  661. package/skills/external-diagram-visual-generate/references/examples-index.md +35 -0
  662. package/skills/external-diagram-visual-generate/references/gemini-cli-setup.md +65 -0
  663. package/skills/external-diagram-visual-generate/references/interview-questions.md +529 -0
  664. package/skills/external-diagram-visual-generate/references/iteration-workflow.md +173 -0
  665. package/skills/external-diagram-visual-generate/scripts/check-prerequisites.sh +101 -0
  666. package/skills/external-diagram-visual-generate/scripts/generate_image.py +243 -0
  667. package/skills/getting-metadata-api-context/README.md +79 -0
  668. package/skills/getting-metadata-api-context/SKILL.md +466 -0
  669. package/skills/getting-metadata-api-context/data/metadata_api/AIApplication.json +37 -0
  670. package/skills/getting-metadata-api-context/data/metadata_api/AIApplicationConfig.json +53 -0
  671. package/skills/getting-metadata-api-context/data/metadata_api/AIReplyRecommendationsSettings.json +40 -0
  672. package/skills/getting-metadata-api-context/data/metadata_api/AIScoringModelDefinition.json +87 -0
  673. package/skills/getting-metadata-api-context/data/metadata_api/AIUsecaseDefinition.json +215 -0
  674. package/skills/getting-metadata-api-context/data/metadata_api/AccountInsightsSettings.json +30 -0
  675. package/skills/getting-metadata-api-context/data/metadata_api/AccountIntelligenceSettings.json +40 -0
  676. package/skills/getting-metadata-api-context/data/metadata_api/AccountPlanObjMeasCalcDef.json +86 -0
  677. package/skills/getting-metadata-api-context/data/metadata_api/AccountPlanSettings.json +32 -0
  678. package/skills/getting-metadata-api-context/data/metadata_api/AccountRelationshipShareRule.json +56 -0
  679. package/skills/getting-metadata-api-context/data/metadata_api/AccountSettings.json +64 -0
  680. package/skills/getting-metadata-api-context/data/metadata_api/AccountingFieldMapping.json +70 -0
  681. package/skills/getting-metadata-api-context/data/metadata_api/AccountingModelConfig.json +94 -0
  682. package/skills/getting-metadata-api-context/data/metadata_api/AccountingSettings.json +53 -0
  683. package/skills/getting-metadata-api-context/data/metadata_api/ActionLinkGroupTemplate.json +118 -0
  684. package/skills/getting-metadata-api-context/data/metadata_api/ActionOverride.json +70 -0
  685. package/skills/getting-metadata-api-context/data/metadata_api/ActionPlanTemplate.json +166 -0
  686. package/skills/getting-metadata-api-context/data/metadata_api/ActionableListDefinition.json +114 -0
  687. package/skills/getting-metadata-api-context/data/metadata_api/ActionsSettings.json +44 -0
  688. package/skills/getting-metadata-api-context/data/metadata_api/ActivationPlatform.json +95 -0
  689. package/skills/getting-metadata-api-context/data/metadata_api/ActivationPlatformActvAttr.json +8 -0
  690. package/skills/getting-metadata-api-context/data/metadata_api/ActivationPlatformField.json +55 -0
  691. package/skills/getting-metadata-api-context/data/metadata_api/ActivitiesSettings.json +136 -0
  692. package/skills/getting-metadata-api-context/data/metadata_api/ActvPfrmDataConnectorS3.json +41 -0
  693. package/skills/getting-metadata-api-context/data/metadata_api/ActvPlatformAdncIdentifier.json +46 -0
  694. package/skills/getting-metadata-api-context/data/metadata_api/ActvPlatformFieldValue.json +50 -0
  695. package/skills/getting-metadata-api-context/data/metadata_api/AddressSettings.json +90 -0
  696. package/skills/getting-metadata-api-context/data/metadata_api/AdvAccountForecastSet.json +261 -0
  697. package/skills/getting-metadata-api-context/data/metadata_api/AffinityScoreDefinition.json +74 -0
  698. package/skills/getting-metadata-api-context/data/metadata_api/AgentPlatformSettings.json +32 -0
  699. package/skills/getting-metadata-api-context/data/metadata_api/AgentforceForDevelopersSettings.json +32 -0
  700. package/skills/getting-metadata-api-context/data/metadata_api/AiAuthoringBundle.json +44 -0
  701. package/skills/getting-metadata-api-context/data/metadata_api/AiEvaluationDefinition.json +153 -0
  702. package/skills/getting-metadata-api-context/data/metadata_api/AiPluginUtteranceDef.json +40 -0
  703. package/skills/getting-metadata-api-context/data/metadata_api/AllOrNoneHeader.json +17 -0
  704. package/skills/getting-metadata-api-context/data/metadata_api/AnalyticSnapshot.json +80 -0
  705. package/skills/getting-metadata-api-context/data/metadata_api/AnalyticsDashboard.json +369 -0
  706. package/skills/getting-metadata-api-context/data/metadata_api/AnalyticsSettings.json +488 -0
  707. package/skills/getting-metadata-api-context/data/metadata_api/AnalyticsVisualization.json +180 -0
  708. package/skills/getting-metadata-api-context/data/metadata_api/AnalyticsWorkspace.json +71 -0
  709. package/skills/getting-metadata-api-context/data/metadata_api/AnimationRule.json +71 -0
  710. package/skills/getting-metadata-api-context/data/metadata_api/ApexClass.json +70 -0
  711. package/skills/getting-metadata-api-context/data/metadata_api/ApexComponent.json +44 -0
  712. package/skills/getting-metadata-api-context/data/metadata_api/ApexEmailNotifications.json +49 -0
  713. package/skills/getting-metadata-api-context/data/metadata_api/ApexPage.json +64 -0
  714. package/skills/getting-metadata-api-context/data/metadata_api/ApexSettings.json +96 -0
  715. package/skills/getting-metadata-api-context/data/metadata_api/ApexTestSuite.json +32 -0
  716. package/skills/getting-metadata-api-context/data/metadata_api/ApexTrigger.json +52 -0
  717. package/skills/getting-metadata-api-context/data/metadata_api/AppAnalyticsSettings.json +36 -0
  718. package/skills/getting-metadata-api-context/data/metadata_api/AppExperienceSettings.json +32 -0
  719. package/skills/getting-metadata-api-context/data/metadata_api/AppFrameworkTemplateBundle.json +52 -0
  720. package/skills/getting-metadata-api-context/data/metadata_api/AppMenu.json +10 -0
  721. package/skills/getting-metadata-api-context/data/metadata_api/AppointmentAssignmentPolicy.json +48 -0
  722. package/skills/getting-metadata-api-context/data/metadata_api/AppointmentSchedulingPolicy.json +102 -0
  723. package/skills/getting-metadata-api-context/data/metadata_api/ApprovalProcess.json +234 -0
  724. package/skills/getting-metadata-api-context/data/metadata_api/ArticleType.json +81 -0
  725. package/skills/getting-metadata-api-context/data/metadata_api/ArticleType_CustomField.json +88 -0
  726. package/skills/getting-metadata-api-context/data/metadata_api/ArticleType_Layout.json +63 -0
  727. package/skills/getting-metadata-api-context/data/metadata_api/AssessmentQuestion.json +117 -0
  728. package/skills/getting-metadata-api-context/data/metadata_api/AssessmentQuestionSet.json +41 -0
  729. package/skills/getting-metadata-api-context/data/metadata_api/AssignmentRules.json +87 -0
  730. package/skills/getting-metadata-api-context/data/metadata_api/AssociationEngineSettings.json +32 -0
  731. package/skills/getting-metadata-api-context/data/metadata_api/AsyncResult.json +89 -0
  732. package/skills/getting-metadata-api-context/data/metadata_api/Audience.json +172 -0
  733. package/skills/getting-metadata-api-context/data/metadata_api/AuraDefinitionBundle.json +94 -0
  734. package/skills/getting-metadata-api-context/data/metadata_api/AuthProvider.json +169 -0
  735. package/skills/getting-metadata-api-context/data/metadata_api/AutoResponseRules.json +79 -0
  736. package/skills/getting-metadata-api-context/data/metadata_api/AutomatedContactsSettings.json +44 -0
  737. package/skills/getting-metadata-api-context/data/metadata_api/BaseSharingRule.json +24 -0
  738. package/skills/getting-metadata-api-context/data/metadata_api/BatchCalcJobDefinition.json +849 -0
  739. package/skills/getting-metadata-api-context/data/metadata_api/BatchProcessJobDefinition.json +175 -0
  740. package/skills/getting-metadata-api-context/data/metadata_api/BillingSettings.json +152 -0
  741. package/skills/getting-metadata-api-context/data/metadata_api/BlacklistedConsumer.json +47 -0
  742. package/skills/getting-metadata-api-context/data/metadata_api/Bot.json +197 -0
  743. package/skills/getting-metadata-api-context/data/metadata_api/BotBlock.json +86 -0
  744. package/skills/getting-metadata-api-context/data/metadata_api/BotSettings.json +32 -0
  745. package/skills/getting-metadata-api-context/data/metadata_api/BotTemplate.json +96 -0
  746. package/skills/getting-metadata-api-context/data/metadata_api/BotVersion.json +667 -0
  747. package/skills/getting-metadata-api-context/data/metadata_api/BranchManagementSettings.json +32 -0
  748. package/skills/getting-metadata-api-context/data/metadata_api/BrandingSet.json +146 -0
  749. package/skills/getting-metadata-api-context/data/metadata_api/BriefcaseDefinition.json +127 -0
  750. package/skills/getting-metadata-api-context/data/metadata_api/BusinessHoursSettings.json +175 -0
  751. package/skills/getting-metadata-api-context/data/metadata_api/BusinessProcess.json +47 -0
  752. package/skills/getting-metadata-api-context/data/metadata_api/BusinessProcessGroup.json +91 -0
  753. package/skills/getting-metadata-api-context/data/metadata_api/CMSConnectSource.json +197 -0
  754. package/skills/getting-metadata-api-context/data/metadata_api/CallCenter.json +124 -0
  755. package/skills/getting-metadata-api-context/data/metadata_api/CallCenterRoutingMap.json +58 -0
  756. package/skills/getting-metadata-api-context/data/metadata_api/CallCoachingMediaProvider.json +40 -0
  757. package/skills/getting-metadata-api-context/data/metadata_api/CallOptions.json +17 -0
  758. package/skills/getting-metadata-api-context/data/metadata_api/CampaignInfluenceModel.json +59 -0
  759. package/skills/getting-metadata-api-context/data/metadata_api/CampaignSettings.json +71 -0
  760. package/skills/getting-metadata-api-context/data/metadata_api/CancelDeployResult.json +10 -0
  761. package/skills/getting-metadata-api-context/data/metadata_api/CareBenefitVerifySettings.json +70 -0
  762. package/skills/getting-metadata-api-context/data/metadata_api/CareLimitType.json +46 -0
  763. package/skills/getting-metadata-api-context/data/metadata_api/CareProviderSearchConfig.json +54 -0
  764. package/skills/getting-metadata-api-context/data/metadata_api/CareRequestConfiguration.json +57 -0
  765. package/skills/getting-metadata-api-context/data/metadata_api/CareSystemFieldMapping.json +58 -0
  766. package/skills/getting-metadata-api-context/data/metadata_api/CaseSettings.json +423 -0
  767. package/skills/getting-metadata-api-context/data/metadata_api/CaseSubjectParticle.json +35 -0
  768. package/skills/getting-metadata-api-context/data/metadata_api/CatalogedApi.json +97 -0
  769. package/skills/getting-metadata-api-context/data/metadata_api/CatalogedApiArtifactVersionInfo.json +46 -0
  770. package/skills/getting-metadata-api-context/data/metadata_api/CatalogedApiVersion.json +51 -0
  771. package/skills/getting-metadata-api-context/data/metadata_api/Certificate.json +54 -0
  772. package/skills/getting-metadata-api-context/data/metadata_api/ChannelLayout.json +63 -0
  773. package/skills/getting-metadata-api-context/data/metadata_api/ChatterAnswersSettings.json +76 -0
  774. package/skills/getting-metadata-api-context/data/metadata_api/ChatterEmailsMDSettings.json +68 -0
  775. package/skills/getting-metadata-api-context/data/metadata_api/ChatterExtension.json +64 -0
  776. package/skills/getting-metadata-api-context/data/metadata_api/ChatterSettings.json +92 -0
  777. package/skills/getting-metadata-api-context/data/metadata_api/ChoiceList.json +66 -0
  778. package/skills/getting-metadata-api-context/data/metadata_api/ClaimFinancialSettings.json +51 -0
  779. package/skills/getting-metadata-api-context/data/metadata_api/ClauseCatgConfiguration.json +45 -0
  780. package/skills/getting-metadata-api-context/data/metadata_api/CleanDataService.json +166 -0
  781. package/skills/getting-metadata-api-context/data/metadata_api/CodeBuilderSettings.json +32 -0
  782. package/skills/getting-metadata-api-context/data/metadata_api/CollectionsDashboardSettings.json +32 -0
  783. package/skills/getting-metadata-api-context/data/metadata_api/CommerceSettings.json +80 -0
  784. package/skills/getting-metadata-api-context/data/metadata_api/CommunitiesSettings.json +116 -0
  785. package/skills/getting-metadata-api-context/data/metadata_api/Community.json +121 -0
  786. package/skills/getting-metadata-api-context/data/metadata_api/CommunityTemplateDefinition.json +116 -0
  787. package/skills/getting-metadata-api-context/data/metadata_api/CommunityThemeDefinition.json +146 -0
  788. package/skills/getting-metadata-api-context/data/metadata_api/CompactLayout.json +32 -0
  789. package/skills/getting-metadata-api-context/data/metadata_api/CompanySettings.json +49 -0
  790. package/skills/getting-metadata-api-context/data/metadata_api/ConnectedApp.json +384 -0
  791. package/skills/getting-metadata-api-context/data/metadata_api/ConnectedAppSettings.json +40 -0
  792. package/skills/getting-metadata-api-context/data/metadata_api/ContentAsset.json +121 -0
  793. package/skills/getting-metadata-api-context/data/metadata_api/ContentSettings.json +116 -0
  794. package/skills/getting-metadata-api-context/data/metadata_api/ContentTypeBundle.json +64 -0
  795. package/skills/getting-metadata-api-context/data/metadata_api/ContextDefinition.json +340 -0
  796. package/skills/getting-metadata-api-context/data/metadata_api/ContractSettings.json +36 -0
  797. package/skills/getting-metadata-api-context/data/metadata_api/ConvIntelligenceSignalRule.json +106 -0
  798. package/skills/getting-metadata-api-context/data/metadata_api/ConversationChannelDefinition.json +140 -0
  799. package/skills/getting-metadata-api-context/data/metadata_api/ConversationMessageDefinition.json +380 -0
  800. package/skills/getting-metadata-api-context/data/metadata_api/ConversationMessageDefinitionTranslation.json +49 -0
  801. package/skills/getting-metadata-api-context/data/metadata_api/ConversationVendorInfo.json +148 -0
  802. package/skills/getting-metadata-api-context/data/metadata_api/ConversationalIntelligenceSettings.json +76 -0
  803. package/skills/getting-metadata-api-context/data/metadata_api/CorsWhitelistOrigin.json +32 -0
  804. package/skills/getting-metadata-api-context/data/metadata_api/CriteriaBasedSharingRule.json +206 -0
  805. package/skills/getting-metadata-api-context/data/metadata_api/CspTrustedSite.json +82 -0
  806. package/skills/getting-metadata-api-context/data/metadata_api/CurrencySettings.json +48 -0
  807. package/skills/getting-metadata-api-context/data/metadata_api/CustomAddressFieldSettings.json +32 -0
  808. package/skills/getting-metadata-api-context/data/metadata_api/CustomApplication.json +453 -0
  809. package/skills/getting-metadata-api-context/data/metadata_api/CustomApplicationComponent.json +72 -0
  810. package/skills/getting-metadata-api-context/data/metadata_api/CustomFeedFilter.json +63 -0
  811. package/skills/getting-metadata-api-context/data/metadata_api/CustomField.json +392 -0
  812. package/skills/getting-metadata-api-context/data/metadata_api/CustomFieldDisplay.json +45 -0
  813. package/skills/getting-metadata-api-context/data/metadata_api/CustomHelpMenuSection.json +57 -0
  814. package/skills/getting-metadata-api-context/data/metadata_api/CustomIndex.json +36 -0
  815. package/skills/getting-metadata-api-context/data/metadata_api/CustomLabels.json +69 -0
  816. package/skills/getting-metadata-api-context/data/metadata_api/CustomMetadata.json +90 -0
  817. package/skills/getting-metadata-api-context/data/metadata_api/CustomNotificationType.json +94 -0
  818. package/skills/getting-metadata-api-context/data/metadata_api/CustomObject.json +313 -0
  819. package/skills/getting-metadata-api-context/data/metadata_api/CustomObjectTranslation.json +319 -0
  820. package/skills/getting-metadata-api-context/data/metadata_api/CustomPageWebLink.json +121 -0
  821. package/skills/getting-metadata-api-context/data/metadata_api/CustomPermission.json +65 -0
  822. package/skills/getting-metadata-api-context/data/metadata_api/CustomSite.json +288 -0
  823. package/skills/getting-metadata-api-context/data/metadata_api/CustomTab.json +97 -0
  824. package/skills/getting-metadata-api-context/data/metadata_api/CustomValue.json +85 -0
  825. package/skills/getting-metadata-api-context/data/metadata_api/CustomerDataPlatformSettings.json +32 -0
  826. package/skills/getting-metadata-api-context/data/metadata_api/Dashboard.json +584 -0
  827. package/skills/getting-metadata-api-context/data/metadata_api/DataCategoryGroup.json +81 -0
  828. package/skills/getting-metadata-api-context/data/metadata_api/DataConnector.json +230 -0
  829. package/skills/getting-metadata-api-context/data/metadata_api/DataConnectorIngestApi.json +41 -0
  830. package/skills/getting-metadata-api-context/data/metadata_api/DataConnectorS3.json +44 -0
  831. package/skills/getting-metadata-api-context/data/metadata_api/DataDotComSettings.json +56 -0
  832. package/skills/getting-metadata-api-context/data/metadata_api/DataImportManagementSettings.json +32 -0
  833. package/skills/getting-metadata-api-context/data/metadata_api/DataKitObjectDependency.json +49 -0
  834. package/skills/getting-metadata-api-context/data/metadata_api/DataKitObjectTemplate.json +59 -0
  835. package/skills/getting-metadata-api-context/data/metadata_api/DataObjectBuildOrgTemplate.json +61 -0
  836. package/skills/getting-metadata-api-context/data/metadata_api/DataObjectSearchIndexConf.json +62 -0
  837. package/skills/getting-metadata-api-context/data/metadata_api/DataPackageKitDefinition.json +74 -0
  838. package/skills/getting-metadata-api-context/data/metadata_api/DataPackageKitObject.json +47 -0
  839. package/skills/getting-metadata-api-context/data/metadata_api/DataSource.json +29 -0
  840. package/skills/getting-metadata-api-context/data/metadata_api/DataSourceBundleDefinition.json +57 -0
  841. package/skills/getting-metadata-api-context/data/metadata_api/DataSourceField.json +115 -0
  842. package/skills/getting-metadata-api-context/data/metadata_api/DataSourceObject.json +93 -0
  843. package/skills/getting-metadata-api-context/data/metadata_api/DataSourceTenant.json +8 -0
  844. package/skills/getting-metadata-api-context/data/metadata_api/DataSrcDataModelFieldMap.json +69 -0
  845. package/skills/getting-metadata-api-context/data/metadata_api/DataStreamDefinition.json +105 -0
  846. package/skills/getting-metadata-api-context/data/metadata_api/DataStreamTemplate.json +99 -0
  847. package/skills/getting-metadata-api-context/data/metadata_api/DataWeaveResource.json +46 -0
  848. package/skills/getting-metadata-api-context/data/metadata_api/DebuggingHeader.json +20 -0
  849. package/skills/getting-metadata-api-context/data/metadata_api/DecisionMatrixDefinition.json +140 -0
  850. package/skills/getting-metadata-api-context/data/metadata_api/DecisionTable.json +211 -0
  851. package/skills/getting-metadata-api-context/data/metadata_api/DecisionTableDatasetLink.json +72 -0
  852. package/skills/getting-metadata-api-context/data/metadata_api/DelegateGroup.json +62 -0
  853. package/skills/getting-metadata-api-context/data/metadata_api/DeleteResult.json +22 -0
  854. package/skills/getting-metadata-api-context/data/metadata_api/DeployResult.json +253 -0
  855. package/skills/getting-metadata-api-context/data/metadata_api/DeploymentSettings.json +32 -0
  856. package/skills/getting-metadata-api-context/data/metadata_api/DescribeMetadataResult.json +31 -0
  857. package/skills/getting-metadata-api-context/data/metadata_api/DescribeValueTypeResult.json +56 -0
  858. package/skills/getting-metadata-api-context/data/metadata_api/DevHubSettings.json +60 -0
  859. package/skills/getting-metadata-api-context/data/metadata_api/DgtAssetMgmtProvider.json +43 -0
  860. package/skills/getting-metadata-api-context/data/metadata_api/DgtAssetMgmtPrvdLghtCpnt.json +48 -0
  861. package/skills/getting-metadata-api-context/data/metadata_api/DigitalExperienceBundle.json +102 -0
  862. package/skills/getting-metadata-api-context/data/metadata_api/DigitalExperienceBundle_Marketing_Workspace_Bundle_and_Folders.json +8 -0
  863. package/skills/getting-metadata-api-context/data/metadata_api/DigitalExperienceBundle_Site_Workspace_Bundle_and_Folders.json +541 -0
  864. package/skills/getting-metadata-api-context/data/metadata_api/DigitalExperienceConfig.json +51 -0
  865. package/skills/getting-metadata-api-context/data/metadata_api/DisclosureDefinition.json +45 -0
  866. package/skills/getting-metadata-api-context/data/metadata_api/DisclosureDefinitionVersion.json +78 -0
  867. package/skills/getting-metadata-api-context/data/metadata_api/DisclosureType.json +53 -0
  868. package/skills/getting-metadata-api-context/data/metadata_api/DiscoveryAIModel.json +263 -0
  869. package/skills/getting-metadata-api-context/data/metadata_api/DiscoveryGoal.json +361 -0
  870. package/skills/getting-metadata-api-context/data/metadata_api/DiscoveryStory.json +98 -0
  871. package/skills/getting-metadata-api-context/data/metadata_api/Document.json +54 -0
  872. package/skills/getting-metadata-api-context/data/metadata_api/DocumentCategory.json +42 -0
  873. package/skills/getting-metadata-api-context/data/metadata_api/DocumentCategoryDocumentType.json +48 -0
  874. package/skills/getting-metadata-api-context/data/metadata_api/DocumentChecklistSettings.json +36 -0
  875. package/skills/getting-metadata-api-context/data/metadata_api/DocumentGenerationSetting.json +60 -0
  876. package/skills/getting-metadata-api-context/data/metadata_api/DocumentType.json +43 -0
  877. package/skills/getting-metadata-api-context/data/metadata_api/DuplicateRule.json +160 -0
  878. package/skills/getting-metadata-api-context/data/metadata_api/DynamicFormsSettings.json +32 -0
  879. package/skills/getting-metadata-api-context/data/metadata_api/EACSettings.json +112 -0
  880. package/skills/getting-metadata-api-context/data/metadata_api/EclairGeoData.json +73 -0
  881. package/skills/getting-metadata-api-context/data/metadata_api/EinsteinAISettings.json +45 -0
  882. package/skills/getting-metadata-api-context/data/metadata_api/EinsteinAgentSettings.json +40 -0
  883. package/skills/getting-metadata-api-context/data/metadata_api/EinsteinGptSettings.json +64 -0
  884. package/skills/getting-metadata-api-context/data/metadata_api/EmailAdministrationSettings.json +104 -0
  885. package/skills/getting-metadata-api-context/data/metadata_api/EmailAuthorizationSettings.json +32 -0
  886. package/skills/getting-metadata-api-context/data/metadata_api/EmailIntegrationSettings.json +92 -0
  887. package/skills/getting-metadata-api-context/data/metadata_api/EmailServicesFunction.json +116 -0
  888. package/skills/getting-metadata-api-context/data/metadata_api/EmailTemplate.json +116 -0
  889. package/skills/getting-metadata-api-context/data/metadata_api/EmailTemplateSettings.json +32 -0
  890. package/skills/getting-metadata-api-context/data/metadata_api/EmbeddedServiceBranding.json +78 -0
  891. package/skills/getting-metadata-api-context/data/metadata_api/EmbeddedServiceConfig.json +318 -0
  892. package/skills/getting-metadata-api-context/data/metadata_api/EmbeddedServiceFieldService.json +73 -0
  893. package/skills/getting-metadata-api-context/data/metadata_api/EmbeddedServiceFlowConfig.json +32 -0
  894. package/skills/getting-metadata-api-context/data/metadata_api/EmbeddedServiceLiveAgent.json +141 -0
  895. package/skills/getting-metadata-api-context/data/metadata_api/EmbeddedServiceMenuSettings.json +165 -0
  896. package/skills/getting-metadata-api-context/data/metadata_api/EmployeeUserSettings.json +54 -0
  897. package/skills/getting-metadata-api-context/data/metadata_api/EnablementMeasureDefinition.json +139 -0
  898. package/skills/getting-metadata-api-context/data/metadata_api/EnablementProgramDefinition.json +241 -0
  899. package/skills/getting-metadata-api-context/data/metadata_api/EnblProgramTaskSubCategory.json +47 -0
  900. package/skills/getting-metadata-api-context/data/metadata_api/EncryptionKeySettings.json +51 -0
  901. package/skills/getting-metadata-api-context/data/metadata_api/EnhancedNotesSettings.json +36 -0
  902. package/skills/getting-metadata-api-context/data/metadata_api/EntitlementProcess.json +147 -0
  903. package/skills/getting-metadata-api-context/data/metadata_api/EntitlementSettings.json +80 -0
  904. package/skills/getting-metadata-api-context/data/metadata_api/EntitlementTemplate.json +52 -0
  905. package/skills/getting-metadata-api-context/data/metadata_api/Error.json +25 -0
  906. package/skills/getting-metadata-api-context/data/metadata_api/EscalationRules.json +117 -0
  907. package/skills/getting-metadata-api-context/data/metadata_api/EventDelivery.json +57 -0
  908. package/skills/getting-metadata-api-context/data/metadata_api/EventRelayConfig.json +55 -0
  909. package/skills/getting-metadata-api-context/data/metadata_api/EventSettings.json +76 -0
  910. package/skills/getting-metadata-api-context/data/metadata_api/EventSubscription.json +62 -0
  911. package/skills/getting-metadata-api-context/data/metadata_api/ExperienceBundle.json +387 -0
  912. package/skills/getting-metadata-api-context/data/metadata_api/ExperienceBundleSettings.json +25 -0
  913. package/skills/getting-metadata-api-context/data/metadata_api/ExperiencePropertyTypeBundle.json +68 -0
  914. package/skills/getting-metadata-api-context/data/metadata_api/ExplainabilityMsgTemplate.json +56 -0
  915. package/skills/getting-metadata-api-context/data/metadata_api/ExpressionSetDefinition.json +496 -0
  916. package/skills/getting-metadata-api-context/data/metadata_api/ExpressionSetMessageToken.json +42 -0
  917. package/skills/getting-metadata-api-context/data/metadata_api/ExpressionSetObjectAlias.json +61 -0
  918. package/skills/getting-metadata-api-context/data/metadata_api/ExternalAIModel.json +54 -0
  919. package/skills/getting-metadata-api-context/data/metadata_api/ExternalAuthIdentityProvider.json +79 -0
  920. package/skills/getting-metadata-api-context/data/metadata_api/ExternalClientAppSettings.json +40 -0
  921. package/skills/getting-metadata-api-context/data/metadata_api/ExternalClientApplication.json +72 -0
  922. package/skills/getting-metadata-api-context/data/metadata_api/ExternalCredential.json +94 -0
  923. package/skills/getting-metadata-api-context/data/metadata_api/ExternalDataConnector.json +51 -0
  924. package/skills/getting-metadata-api-context/data/metadata_api/ExternalDataSource.json +162 -0
  925. package/skills/getting-metadata-api-context/data/metadata_api/ExternalDataTranObject.json +191 -0
  926. package/skills/getting-metadata-api-context/data/metadata_api/ExternalDataTransportFieldTemplate.json +8 -0
  927. package/skills/getting-metadata-api-context/data/metadata_api/ExternalDataTransportObjectTemplate.json +8 -0
  928. package/skills/getting-metadata-api-context/data/metadata_api/ExternalServiceRegistration.json +121 -0
  929. package/skills/getting-metadata-api-context/data/metadata_api/ExternalServicesSettings.json +34 -0
  930. package/skills/getting-metadata-api-context/data/metadata_api/ExtlClntAppCanvasSettings.json +63 -0
  931. package/skills/getting-metadata-api-context/data/metadata_api/ExtlClntAppConfigurablePolicies.json +75 -0
  932. package/skills/getting-metadata-api-context/data/metadata_api/ExtlClntAppGlobalOauthSettings.json +135 -0
  933. package/skills/getting-metadata-api-context/data/metadata_api/ExtlClntAppMobileConfigurablePolicies.json +34 -0
  934. package/skills/getting-metadata-api-context/data/metadata_api/ExtlClntAppMobileSettings.json +35 -0
  935. package/skills/getting-metadata-api-context/data/metadata_api/ExtlClntAppNotificationSettings.json +49 -0
  936. package/skills/getting-metadata-api-context/data/metadata_api/ExtlClntAppOauthConfigurablePolicies.json +153 -0
  937. package/skills/getting-metadata-api-context/data/metadata_api/ExtlClntAppOauthSettings.json +120 -0
  938. package/skills/getting-metadata-api-context/data/metadata_api/ExtlClntAppPushConfigurablePolicies.json +35 -0
  939. package/skills/getting-metadata-api-context/data/metadata_api/ExtlClntAppPushSettings.json +93 -0
  940. package/skills/getting-metadata-api-context/data/metadata_api/ExtlClntAppSamlConfigurablePolicies.json +119 -0
  941. package/skills/getting-metadata-api-context/data/metadata_api/FeatureParameterBoolean.json +47 -0
  942. package/skills/getting-metadata-api-context/data/metadata_api/FeatureParameterDate.json +47 -0
  943. package/skills/getting-metadata-api-context/data/metadata_api/FeatureParameterInteger.json +47 -0
  944. package/skills/getting-metadata-api-context/data/metadata_api/FieldMappingConfig.json +43 -0
  945. package/skills/getting-metadata-api-context/data/metadata_api/FieldRestrictionRule.json +80 -0
  946. package/skills/getting-metadata-api-context/data/metadata_api/FieldServiceSettings.json +226 -0
  947. package/skills/getting-metadata-api-context/data/metadata_api/FieldSet.json +60 -0
  948. package/skills/getting-metadata-api-context/data/metadata_api/FieldSrcTrgtRelationship.json +56 -0
  949. package/skills/getting-metadata-api-context/data/metadata_api/FileUploadAndDownloadSecuritySettings.json +53 -0
  950. package/skills/getting-metadata-api-context/data/metadata_api/FilesConnectSettings.json +40 -0
  951. package/skills/getting-metadata-api-context/data/metadata_api/FlexiPage.json +355 -0
  952. package/skills/getting-metadata-api-context/data/metadata_api/Flow.json +2377 -0
  953. package/skills/getting-metadata-api-context/data/metadata_api/FlowCategory.json +51 -0
  954. package/skills/getting-metadata-api-context/data/metadata_api/FlowDefinition.json +37 -0
  955. package/skills/getting-metadata-api-context/data/metadata_api/FlowSettings.json +124 -0
  956. package/skills/getting-metadata-api-context/data/metadata_api/FlowTest.json +205 -0
  957. package/skills/getting-metadata-api-context/data/metadata_api/FlowValueMap.json +68 -0
  958. package/skills/getting-metadata-api-context/data/metadata_api/Folder.json +50 -0
  959. package/skills/getting-metadata-api-context/data/metadata_api/FolderShare.json +45 -0
  960. package/skills/getting-metadata-api-context/data/metadata_api/ForecastingFilter.json +48 -0
  961. package/skills/getting-metadata-api-context/data/metadata_api/ForecastingFilterCondition.json +62 -0
  962. package/skills/getting-metadata-api-context/data/metadata_api/ForecastingObjectListSettings.json +77 -0
  963. package/skills/getting-metadata-api-context/data/metadata_api/ForecastingSettings.json +303 -0
  964. package/skills/getting-metadata-api-context/data/metadata_api/ForecastingSourceDefinition.json +62 -0
  965. package/skills/getting-metadata-api-context/data/metadata_api/ForecastingType.json +100 -0
  966. package/skills/getting-metadata-api-context/data/metadata_api/ForecastingTypeSource.json +60 -0
  967. package/skills/getting-metadata-api-context/data/metadata_api/FuelType.json +52 -0
  968. package/skills/getting-metadata-api-context/data/metadata_api/FuelTypeSustnUom.json +45 -0
  969. package/skills/getting-metadata-api-context/data/metadata_api/FunctionReference.json +31 -0
  970. package/skills/getting-metadata-api-context/data/metadata_api/FundraisingConfig.json +86 -0
  971. package/skills/getting-metadata-api-context/data/metadata_api/GatewayProviderPaymentMethodType.json +50 -0
  972. package/skills/getting-metadata-api-context/data/metadata_api/GenAiFunction.json +171 -0
  973. package/skills/getting-metadata-api-context/data/metadata_api/GenAiPlanner.json +215 -0
  974. package/skills/getting-metadata-api-context/data/metadata_api/GenAiPlannerBundle.json +220 -0
  975. package/skills/getting-metadata-api-context/data/metadata_api/GenAiPlugin.json +87 -0
  976. package/skills/getting-metadata-api-context/data/metadata_api/GenAiPluginInstructionDef.json +42 -0
  977. package/skills/getting-metadata-api-context/data/metadata_api/GenAiPromptTemplate.json +183 -0
  978. package/skills/getting-metadata-api-context/data/metadata_api/GenAiPromptTemplateActv.json +42 -0
  979. package/skills/getting-metadata-api-context/data/metadata_api/GiftEntryGridTemplate.json +42 -0
  980. package/skills/getting-metadata-api-context/data/metadata_api/GlobalPicklist.json +43 -0
  981. package/skills/getting-metadata-api-context/data/metadata_api/GlobalPicklistValue.json +81 -0
  982. package/skills/getting-metadata-api-context/data/metadata_api/GlobalValueSet.json +46 -0
  983. package/skills/getting-metadata-api-context/data/metadata_api/GlobalValueSetTranslation.json +44 -0
  984. package/skills/getting-metadata-api-context/data/metadata_api/GoogleAppsSettings.json +56 -0
  985. package/skills/getting-metadata-api-context/data/metadata_api/Group.json +46 -0
  986. package/skills/getting-metadata-api-context/data/metadata_api/HighVelocitySalesSettings.json +96 -0
  987. package/skills/getting-metadata-api-context/data/metadata_api/HistoryRetentionPolicy.json +41 -0
  988. package/skills/getting-metadata-api-context/data/metadata_api/HomePageComponent.json +66 -0
  989. package/skills/getting-metadata-api-context/data/metadata_api/HomePageLayout.json +40 -0
  990. package/skills/getting-metadata-api-context/data/metadata_api/IPAddressRange.json +60 -0
  991. package/skills/getting-metadata-api-context/data/metadata_api/IdeasSettings.json +52 -0
  992. package/skills/getting-metadata-api-context/data/metadata_api/IdentityProviderSettings.json +39 -0
  993. package/skills/getting-metadata-api-context/data/metadata_api/IdentityVerificationProcDef.json +173 -0
  994. package/skills/getting-metadata-api-context/data/metadata_api/IdentityVerificationProcDtl.json +136 -0
  995. package/skills/getting-metadata-api-context/data/metadata_api/IdentityVerificationProcFld.json +76 -0
  996. package/skills/getting-metadata-api-context/data/metadata_api/IframeWhiteListUrlSettings.json +46 -0
  997. package/skills/getting-metadata-api-context/data/metadata_api/InboundCertificate.json +48 -0
  998. package/skills/getting-metadata-api-context/data/metadata_api/InboundNetworkConnection.json +72 -0
  999. package/skills/getting-metadata-api-context/data/metadata_api/IncidentMgmtSettings.json +140 -0
  1000. package/skills/getting-metadata-api-context/data/metadata_api/Index.json +48 -0
  1001. package/skills/getting-metadata-api-context/data/metadata_api/IndustriesEinsteinFeatureSettings.json +34 -0
  1002. package/skills/getting-metadata-api-context/data/metadata_api/IndustriesLoyaltySettings.json +108 -0
  1003. package/skills/getting-metadata-api-context/data/metadata_api/IndustriesPricingSettings.json +61 -0
  1004. package/skills/getting-metadata-api-context/data/metadata_api/IndustriesRatingSettings.json +40 -0
  1005. package/skills/getting-metadata-api-context/data/metadata_api/IndustriesSettings.json +731 -0
  1006. package/skills/getting-metadata-api-context/data/metadata_api/IndustriesUnifiedInventorySettings.json +40 -0
  1007. package/skills/getting-metadata-api-context/data/metadata_api/InsPlcyLimitConsumptionRule.json +46 -0
  1008. package/skills/getting-metadata-api-context/data/metadata_api/InstalledPackage.json +46 -0
  1009. package/skills/getting-metadata-api-context/data/metadata_api/IntegArtifactDef.json +10 -0
  1010. package/skills/getting-metadata-api-context/data/metadata_api/IntegrationProviderDef.json +155 -0
  1011. package/skills/getting-metadata-api-context/data/metadata_api/InterestTaggingSettings.json +32 -0
  1012. package/skills/getting-metadata-api-context/data/metadata_api/InternalDataConnector.json +8 -0
  1013. package/skills/getting-metadata-api-context/data/metadata_api/InvLatePymntRiskCalcSettings.json +32 -0
  1014. package/skills/getting-metadata-api-context/data/metadata_api/InventorySettings.json +36 -0
  1015. package/skills/getting-metadata-api-context/data/metadata_api/InvocableActionExtension.json +84 -0
  1016. package/skills/getting-metadata-api-context/data/metadata_api/InvocableActionSettings.json +28 -0
  1017. package/skills/getting-metadata-api-context/data/metadata_api/KeywordList.json +51 -0
  1018. package/skills/getting-metadata-api-context/data/metadata_api/KnowledgeSettings.json +280 -0
  1019. package/skills/getting-metadata-api-context/data/metadata_api/LanguageSettings.json +68 -0
  1020. package/skills/getting-metadata-api-context/data/metadata_api/Layout.json +659 -0
  1021. package/skills/getting-metadata-api-context/data/metadata_api/LeadConfigSettings.json +64 -0
  1022. package/skills/getting-metadata-api-context/data/metadata_api/LeadConvertSettings.json +71 -0
  1023. package/skills/getting-metadata-api-context/data/metadata_api/LearningItemType.json +65 -0
  1024. package/skills/getting-metadata-api-context/data/metadata_api/Letterhead.json +119 -0
  1025. package/skills/getting-metadata-api-context/data/metadata_api/LightningBolt.json +103 -0
  1026. package/skills/getting-metadata-api-context/data/metadata_api/LightningComponentBundle.json +109 -0
  1027. package/skills/getting-metadata-api-context/data/metadata_api/LightningExperienceSettings.json +191 -0
  1028. package/skills/getting-metadata-api-context/data/metadata_api/LightningExperienceTheme.json +54 -0
  1029. package/skills/getting-metadata-api-context/data/metadata_api/LightningMessageChannel.json +63 -0
  1030. package/skills/getting-metadata-api-context/data/metadata_api/LightningOnboardingConfig.json +62 -0
  1031. package/skills/getting-metadata-api-context/data/metadata_api/LightningTypeBundle.json +88 -0
  1032. package/skills/getting-metadata-api-context/data/metadata_api/ListMetadataQuery.json +10 -0
  1033. package/skills/getting-metadata-api-context/data/metadata_api/ListView.json +86 -0
  1034. package/skills/getting-metadata-api-context/data/metadata_api/LiveAgentSettings.json +44 -0
  1035. package/skills/getting-metadata-api-context/data/metadata_api/LiveChatAgentConfig.json +188 -0
  1036. package/skills/getting-metadata-api-context/data/metadata_api/LiveChatButton.json +188 -0
  1037. package/skills/getting-metadata-api-context/data/metadata_api/LiveChatDeployment.json +81 -0
  1038. package/skills/getting-metadata-api-context/data/metadata_api/LiveChatSensitiveDataRule.json +56 -0
  1039. package/skills/getting-metadata-api-context/data/metadata_api/LiveMessageSettings.json +36 -0
  1040. package/skills/getting-metadata-api-context/data/metadata_api/LoyaltyProgramSetup.json +297 -0
  1041. package/skills/getting-metadata-api-context/data/metadata_api/MLDataDefinition.json +146 -0
  1042. package/skills/getting-metadata-api-context/data/metadata_api/MLPredictionDefinition.json +67 -0
  1043. package/skills/getting-metadata-api-context/data/metadata_api/MacroSettings.json +36 -0
  1044. package/skills/getting-metadata-api-context/data/metadata_api/MailMergeSettings.json +36 -0
  1045. package/skills/getting-metadata-api-context/data/metadata_api/ManagedContentType.json +86 -0
  1046. package/skills/getting-metadata-api-context/data/metadata_api/ManagedEventSubscription.json +52 -0
  1047. package/skills/getting-metadata-api-context/data/metadata_api/ManagedTopics.json +57 -0
  1048. package/skills/getting-metadata-api-context/data/metadata_api/MapAndLocationSettings.json +34 -0
  1049. package/skills/getting-metadata-api-context/data/metadata_api/MarketSegmentDefinition.json +58 -0
  1050. package/skills/getting-metadata-api-context/data/metadata_api/MarketingAppExtension.json +139 -0
  1051. package/skills/getting-metadata-api-context/data/metadata_api/MatchingRule.json +69 -0
  1052. package/skills/getting-metadata-api-context/data/metadata_api/MeetingsSettings.json +36 -0
  1053. package/skills/getting-metadata-api-context/data/metadata_api/MessagingChannel.json +278 -0
  1054. package/skills/getting-metadata-api-context/data/metadata_api/MetadataWithContent.json +24 -0
  1055. package/skills/getting-metadata-api-context/data/metadata_api/Metadata_Type_Limits.json +8 -0
  1056. package/skills/getting-metadata-api-context/data/metadata_api/MfgProgramTemplate.json +88 -0
  1057. package/skills/getting-metadata-api-context/data/metadata_api/MfgServiceConsoleSettings.json +32 -0
  1058. package/skills/getting-metadata-api-context/data/metadata_api/MilestoneType.json +36 -0
  1059. package/skills/getting-metadata-api-context/data/metadata_api/MktCalcInsightObjectDef.json +54 -0
  1060. package/skills/getting-metadata-api-context/data/metadata_api/MktDataTranObject.json +99 -0
  1061. package/skills/getting-metadata-api-context/data/metadata_api/MlDomain.json +136 -0
  1062. package/skills/getting-metadata-api-context/data/metadata_api/MobSecurityCertPinConfig.json +76 -0
  1063. package/skills/getting-metadata-api-context/data/metadata_api/MobileApplicationDetail.json +71 -0
  1064. package/skills/getting-metadata-api-context/data/metadata_api/MobileSecurityAssignment.json +44 -0
  1065. package/skills/getting-metadata-api-context/data/metadata_api/MobileSecurityPolicy.json +75 -0
  1066. package/skills/getting-metadata-api-context/data/metadata_api/MobileSettings.json +121 -0
  1067. package/skills/getting-metadata-api-context/data/metadata_api/ModerationRule.json +99 -0
  1068. package/skills/getting-metadata-api-context/data/metadata_api/MutingPermissionSet.json +33 -0
  1069. package/skills/getting-metadata-api-context/data/metadata_api/MyDomainDiscoverableLogin.json +41 -0
  1070. package/skills/getting-metadata-api-context/data/metadata_api/MyDomainSettings.json +140 -0
  1071. package/skills/getting-metadata-api-context/data/metadata_api/NameSettings.json +40 -0
  1072. package/skills/getting-metadata-api-context/data/metadata_api/NamedCredential.json +205 -0
  1073. package/skills/getting-metadata-api-context/data/metadata_api/NamedFilter.json +89 -0
  1074. package/skills/getting-metadata-api-context/data/metadata_api/NavigationMenu.json +101 -0
  1075. package/skills/getting-metadata-api-context/data/metadata_api/Network.json +606 -0
  1076. package/skills/getting-metadata-api-context/data/metadata_api/NetworkBranding.json +117 -0
  1077. package/skills/getting-metadata-api-context/data/metadata_api/NotificationTypeConfig.json +75 -0
  1078. package/skills/getting-metadata-api-context/data/metadata_api/NotificationsSettings.json +40 -0
  1079. package/skills/getting-metadata-api-context/data/metadata_api/OauthCustomScope.json +56 -0
  1080. package/skills/getting-metadata-api-context/data/metadata_api/OauthOidcSettings.json +52 -0
  1081. package/skills/getting-metadata-api-context/data/metadata_api/OauthTokenExchangeHandler.json +119 -0
  1082. package/skills/getting-metadata-api-context/data/metadata_api/ObjectHierarchyRelationship.json +108 -0
  1083. package/skills/getting-metadata-api-context/data/metadata_api/ObjectLinkingSettings.json +32 -0
  1084. package/skills/getting-metadata-api-context/data/metadata_api/ObjectSourceTargetMap.json +85 -0
  1085. package/skills/getting-metadata-api-context/data/metadata_api/OcrSampleDocument.json +158 -0
  1086. package/skills/getting-metadata-api-context/data/metadata_api/OcrTemplate.json +180 -0
  1087. package/skills/getting-metadata-api-context/data/metadata_api/OmniChannelSettings.json +48 -0
  1088. package/skills/getting-metadata-api-context/data/metadata_api/OmniExtTrackingDef.json +66 -0
  1089. package/skills/getting-metadata-api-context/data/metadata_api/OmniInteractionAccessConfig.json +90 -0
  1090. package/skills/getting-metadata-api-context/data/metadata_api/OmniInteractionConfig.json +37 -0
  1091. package/skills/getting-metadata-api-context/data/metadata_api/OmniScript.json +204 -0
  1092. package/skills/getting-metadata-api-context/data/metadata_api/OmniSupervisorConfig.json +156 -0
  1093. package/skills/getting-metadata-api-context/data/metadata_api/OmniTrackingGroup.json +77 -0
  1094. package/skills/getting-metadata-api-context/data/metadata_api/OnboardingDataObjectGroup.json +131 -0
  1095. package/skills/getting-metadata-api-context/data/metadata_api/OpportunityInsightsSettings.json +30 -0
  1096. package/skills/getting-metadata-api-context/data/metadata_api/OpportunityScoreSettings.json +32 -0
  1097. package/skills/getting-metadata-api-context/data/metadata_api/OpportunitySettings.json +132 -0
  1098. package/skills/getting-metadata-api-context/data/metadata_api/OrchestrationPlanCtxMapping.json +63 -0
  1099. package/skills/getting-metadata-api-context/data/metadata_api/OrderManagementSettings.json +52 -0
  1100. package/skills/getting-metadata-api-context/data/metadata_api/OrderSettings.json +60 -0
  1101. package/skills/getting-metadata-api-context/data/metadata_api/OrgPreferenceSettings.json +43 -0
  1102. package/skills/getting-metadata-api-context/data/metadata_api/OrgSettings.json +40 -0
  1103. package/skills/getting-metadata-api-context/data/metadata_api/OutboundNetworkConnection.json +71 -0
  1104. package/skills/getting-metadata-api-context/data/metadata_api/OwnerSharingRule.json +206 -0
  1105. package/skills/getting-metadata-api-context/data/metadata_api/Package.json +19 -0
  1106. package/skills/getting-metadata-api-context/data/metadata_api/PardotEinsteinSettings.json +36 -0
  1107. package/skills/getting-metadata-api-context/data/metadata_api/PardotSettings.json +72 -0
  1108. package/skills/getting-metadata-api-context/data/metadata_api/ParticipantRole.json +48 -0
  1109. package/skills/getting-metadata-api-context/data/metadata_api/PartyDataModelSettings.json +40 -0
  1110. package/skills/getting-metadata-api-context/data/metadata_api/PathAssistant.json +74 -0
  1111. package/skills/getting-metadata-api-context/data/metadata_api/PathAssistantSettings.json +40 -0
  1112. package/skills/getting-metadata-api-context/data/metadata_api/PaymentGatewayProvider.json +50 -0
  1113. package/skills/getting-metadata-api-context/data/metadata_api/PaymentsSettings.json +32 -0
  1114. package/skills/getting-metadata-api-context/data/metadata_api/PermissionSet.json +372 -0
  1115. package/skills/getting-metadata-api-context/data/metadata_api/PermissionSetGroup.json +57 -0
  1116. package/skills/getting-metadata-api-context/data/metadata_api/PermissionSetLicenseDefinition.json +58 -0
  1117. package/skills/getting-metadata-api-context/data/metadata_api/PersonAccountOwnerPowerUser.json +38 -0
  1118. package/skills/getting-metadata-api-context/data/metadata_api/Picklist.json +43 -0
  1119. package/skills/getting-metadata-api-context/data/metadata_api/PicklistSettings.json +32 -0
  1120. package/skills/getting-metadata-api-context/data/metadata_api/PipelineInspMetricConfig.json +48 -0
  1121. package/skills/getting-metadata-api-context/data/metadata_api/PlatformCachePartition.json +79 -0
  1122. package/skills/getting-metadata-api-context/data/metadata_api/PlatformEncryptionSettings.json +51 -0
  1123. package/skills/getting-metadata-api-context/data/metadata_api/PlatformEventChannel.json +56 -0
  1124. package/skills/getting-metadata-api-context/data/metadata_api/PlatformEventChannelMember.json +71 -0
  1125. package/skills/getting-metadata-api-context/data/metadata_api/PlatformEventMigration.json +39 -0
  1126. package/skills/getting-metadata-api-context/data/metadata_api/PlatformEventSettings.json +32 -0
  1127. package/skills/getting-metadata-api-context/data/metadata_api/PlatformEventSubscriberConfig.json +58 -0
  1128. package/skills/getting-metadata-api-context/data/metadata_api/Portal.json +137 -0
  1129. package/skills/getting-metadata-api-context/data/metadata_api/PortalDelegablePermissionSet.json +48 -0
  1130. package/skills/getting-metadata-api-context/data/metadata_api/PostTemplate.json +47 -0
  1131. package/skills/getting-metadata-api-context/data/metadata_api/PredictionBuilderSettings.json +36 -0
  1132. package/skills/getting-metadata-api-context/data/metadata_api/PresenceDeclineReason.json +32 -0
  1133. package/skills/getting-metadata-api-context/data/metadata_api/PresenceUserConfig.json +122 -0
  1134. package/skills/getting-metadata-api-context/data/metadata_api/PricingActionParameters.json +64 -0
  1135. package/skills/getting-metadata-api-context/data/metadata_api/PricingRecipe.json +117 -0
  1136. package/skills/getting-metadata-api-context/data/metadata_api/PrivacySettings.json +80 -0
  1137. package/skills/getting-metadata-api-context/data/metadata_api/ProcessFlowMigration.json +58 -0
  1138. package/skills/getting-metadata-api-context/data/metadata_api/ProductAttributeSet.json +33 -0
  1139. package/skills/getting-metadata-api-context/data/metadata_api/ProductSettings.json +44 -0
  1140. package/skills/getting-metadata-api-context/data/metadata_api/Profile.json +492 -0
  1141. package/skills/getting-metadata-api-context/data/metadata_api/ProfileActionOverride.json +48 -0
  1142. package/skills/getting-metadata-api-context/data/metadata_api/ProfilePasswordPolicy.json +80 -0
  1143. package/skills/getting-metadata-api-context/data/metadata_api/ProfileSearchLayouts.json +32 -0
  1144. package/skills/getting-metadata-api-context/data/metadata_api/ProfileSessionSetting.json +55 -0
  1145. package/skills/getting-metadata-api-context/data/metadata_api/Prompt.json +255 -0
  1146. package/skills/getting-metadata-api-context/data/metadata_api/PublicKeyCertificate.json +50 -0
  1147. package/skills/getting-metadata-api-context/data/metadata_api/PublicKeyCertificateSet.json +65 -0
  1148. package/skills/getting-metadata-api-context/data/metadata_api/Queue.json +123 -0
  1149. package/skills/getting-metadata-api-context/data/metadata_api/QueueRoutingConfig.json +96 -0
  1150. package/skills/getting-metadata-api-context/data/metadata_api/QuickAction.json +175 -0
  1151. package/skills/getting-metadata-api-context/data/metadata_api/QuoteSettings.json +36 -0
  1152. package/skills/getting-metadata-api-context/data/metadata_api/ReadResult.json +16 -0
  1153. package/skills/getting-metadata-api-context/data/metadata_api/RealTimeEventSettings.json +45 -0
  1154. package/skills/getting-metadata-api-context/data/metadata_api/RecommendationStrategy.json +327 -0
  1155. package/skills/getting-metadata-api-context/data/metadata_api/RecordActionDeployment.json +184 -0
  1156. package/skills/getting-metadata-api-context/data/metadata_api/RecordAggregationDefinition.json +148 -0
  1157. package/skills/getting-metadata-api-context/data/metadata_api/RecordAlertCategory.json +42 -0
  1158. package/skills/getting-metadata-api-context/data/metadata_api/RecordPageSettings.json +40 -0
  1159. package/skills/getting-metadata-api-context/data/metadata_api/RecordType.json +68 -0
  1160. package/skills/getting-metadata-api-context/data/metadata_api/RedirectWhitelistUrl.json +26 -0
  1161. package/skills/getting-metadata-api-context/data/metadata_api/ReferencedDashboard.json +55 -0
  1162. package/skills/getting-metadata-api-context/data/metadata_api/RegisteredExternalService.json +72 -0
  1163. package/skills/getting-metadata-api-context/data/metadata_api/RelatedRecordAssocCriteria.json +75 -0
  1164. package/skills/getting-metadata-api-context/data/metadata_api/RelationshipGraphDefinition.json +63 -0
  1165. package/skills/getting-metadata-api-context/data/metadata_api/RemoteSiteSetting.json +51 -0
  1166. package/skills/getting-metadata-api-context/data/metadata_api/Report.json +715 -0
  1167. package/skills/getting-metadata-api-context/data/metadata_api/ReportType.json +118 -0
  1168. package/skills/getting-metadata-api-context/data/metadata_api/RestrictionRule.json +71 -0
  1169. package/skills/getting-metadata-api-context/data/metadata_api/RetailExecutionSettings.json +40 -0
  1170. package/skills/getting-metadata-api-context/data/metadata_api/RetrievalSummaryDefinition.json +76 -0
  1171. package/skills/getting-metadata-api-context/data/metadata_api/RetrieveRequest.json +35 -0
  1172. package/skills/getting-metadata-api-context/data/metadata_api/RetrieveResult.json +103 -0
  1173. package/skills/getting-metadata-api-context/data/metadata_api/Role.json +35 -0
  1174. package/skills/getting-metadata-api-context/data/metadata_api/RoleOrTerritory.json +57 -0
  1175. package/skills/getting-metadata-api-context/data/metadata_api/SalesAgreementSettings.json +180 -0
  1176. package/skills/getting-metadata-api-context/data/metadata_api/SalesWorkQueueSettings.json +40 -0
  1177. package/skills/getting-metadata-api-context/data/metadata_api/SamlSsoConfig.json +128 -0
  1178. package/skills/getting-metadata-api-context/data/metadata_api/SandboxSettings.json +32 -0
  1179. package/skills/getting-metadata-api-context/data/metadata_api/SaveResult.json +22 -0
  1180. package/skills/getting-metadata-api-context/data/metadata_api/SchedulingObjective.json +66 -0
  1181. package/skills/getting-metadata-api-context/data/metadata_api/SchedulingRule.json +66 -0
  1182. package/skills/getting-metadata-api-context/data/metadata_api/SchemaSettings.json +44 -0
  1183. package/skills/getting-metadata-api-context/data/metadata_api/Scontrol.json +72 -0
  1184. package/skills/getting-metadata-api-context/data/metadata_api/SearchCustomization.json +120 -0
  1185. package/skills/getting-metadata-api-context/data/metadata_api/SearchLayouts.json +64 -0
  1186. package/skills/getting-metadata-api-context/data/metadata_api/SearchOrgWideObjectConfig.json +61 -0
  1187. package/skills/getting-metadata-api-context/data/metadata_api/SearchSettings.json +155 -0
  1188. package/skills/getting-metadata-api-context/data/metadata_api/SecuritySettings.json +437 -0
  1189. package/skills/getting-metadata-api-context/data/metadata_api/ServiceAISetupDefinition.json +48 -0
  1190. package/skills/getting-metadata-api-context/data/metadata_api/ServiceAISetupField.json +58 -0
  1191. package/skills/getting-metadata-api-context/data/metadata_api/ServiceChannel.json +123 -0
  1192. package/skills/getting-metadata-api-context/data/metadata_api/ServiceCloudVoiceSettings.json +83 -0
  1193. package/skills/getting-metadata-api-context/data/metadata_api/ServicePresenceStatus.json +45 -0
  1194. package/skills/getting-metadata-api-context/data/metadata_api/ServiceProcess.json +141 -0
  1195. package/skills/getting-metadata-api-context/data/metadata_api/ServiceSetupAssistantSettings.json +32 -0
  1196. package/skills/getting-metadata-api-context/data/metadata_api/SessionHeader.json +17 -0
  1197. package/skills/getting-metadata-api-context/data/metadata_api/SharedTo.json +105 -0
  1198. package/skills/getting-metadata-api-context/data/metadata_api/SharingBaseRule.json +60 -0
  1199. package/skills/getting-metadata-api-context/data/metadata_api/SharingReason.json +34 -0
  1200. package/skills/getting-metadata-api-context/data/metadata_api/SharingRecalculation.json +29 -0
  1201. package/skills/getting-metadata-api-context/data/metadata_api/SharingRules.json +186 -0
  1202. package/skills/getting-metadata-api-context/data/metadata_api/SharingSet.json +78 -0
  1203. package/skills/getting-metadata-api-context/data/metadata_api/SharingSettings.json +92 -0
  1204. package/skills/getting-metadata-api-context/data/metadata_api/SiteDotCom.json +37 -0
  1205. package/skills/getting-metadata-api-context/data/metadata_api/SiteSettings.json +60 -0
  1206. package/skills/getting-metadata-api-context/data/metadata_api/Skill.json +69 -0
  1207. package/skills/getting-metadata-api-context/data/metadata_api/SocialCustomerServiceSettings.json +61 -0
  1208. package/skills/getting-metadata-api-context/data/metadata_api/SocialProfileSettings.json +35 -0
  1209. package/skills/getting-metadata-api-context/data/metadata_api/SourceTrackingSettings.json +32 -0
  1210. package/skills/getting-metadata-api-context/data/metadata_api/StageAssignment.json +113 -0
  1211. package/skills/getting-metadata-api-context/data/metadata_api/StageDefinition.json +237 -0
  1212. package/skills/getting-metadata-api-context/data/metadata_api/StandardValueSet.json +41 -0
  1213. package/skills/getting-metadata-api-context/data/metadata_api/StandardValueSetTranslation.json +32 -0
  1214. package/skills/getting-metadata-api-context/data/metadata_api/StaticResource.json +49 -0
  1215. package/skills/getting-metadata-api-context/data/metadata_api/StreamingAppDataConnector.json +51 -0
  1216. package/skills/getting-metadata-api-context/data/metadata_api/SubscriptionManagementSettings.json +56 -0
  1217. package/skills/getting-metadata-api-context/data/metadata_api/SurveySettings.json +44 -0
  1218. package/skills/getting-metadata-api-context/data/metadata_api/SustainabilityUom.json +61 -0
  1219. package/skills/getting-metadata-api-context/data/metadata_api/SustnUomConversion.json +58 -0
  1220. package/skills/getting-metadata-api-context/data/metadata_api/SvcCatalogCategory.json +54 -0
  1221. package/skills/getting-metadata-api-context/data/metadata_api/SvcCatalogFulfillmentFlow.json +99 -0
  1222. package/skills/getting-metadata-api-context/data/metadata_api/SvcCatalogItemDef.json +202 -0
  1223. package/skills/getting-metadata-api-context/data/metadata_api/SynonymDictionary.json +56 -0
  1224. package/skills/getting-metadata-api-context/data/metadata_api/Tag.json +70 -0
  1225. package/skills/getting-metadata-api-context/data/metadata_api/TagSet.json +47 -0
  1226. package/skills/getting-metadata-api-context/data/metadata_api/Territory.json +39 -0
  1227. package/skills/getting-metadata-api-context/data/metadata_api/Territory2.json +112 -0
  1228. package/skills/getting-metadata-api-context/data/metadata_api/Territory2Model.json +41 -0
  1229. package/skills/getting-metadata-api-context/data/metadata_api/Territory2Rule.json +68 -0
  1230. package/skills/getting-metadata-api-context/data/metadata_api/Territory2Settings.json +111 -0
  1231. package/skills/getting-metadata-api-context/data/metadata_api/Territory2Type.json +42 -0
  1232. package/skills/getting-metadata-api-context/data/metadata_api/TimeSheetTemplate.json +75 -0
  1233. package/skills/getting-metadata-api-context/data/metadata_api/TimelineObjectDefinition.json +48 -0
  1234. package/skills/getting-metadata-api-context/data/metadata_api/TopicsForObjects.json +38 -0
  1235. package/skills/getting-metadata-api-context/data/metadata_api/TrailheadSettings.json +40 -0
  1236. package/skills/getting-metadata-api-context/data/metadata_api/TransactionSecurityPolicy.json +127 -0
  1237. package/skills/getting-metadata-api-context/data/metadata_api/Translations.json +976 -0
  1238. package/skills/getting-metadata-api-context/data/metadata_api/TrialOrgSettings.json +32 -0
  1239. package/skills/getting-metadata-api-context/data/metadata_api/UIBundle.json +54 -0
  1240. package/skills/getting-metadata-api-context/data/metadata_api/UIObjectRelationConfig.json +101 -0
  1241. package/skills/getting-metadata-api-context/data/metadata_api/UiFormatSpecificationSet.json +103 -0
  1242. package/skills/getting-metadata-api-context/data/metadata_api/UiPreviewMessageTabDef.json +70 -0
  1243. package/skills/getting-metadata-api-context/data/metadata_api/UpsertResult.json +25 -0
  1244. package/skills/getting-metadata-api-context/data/metadata_api/UserAccessPolicy.json +120 -0
  1245. package/skills/getting-metadata-api-context/data/metadata_api/UserAuthCertificate.json +57 -0
  1246. package/skills/getting-metadata-api-context/data/metadata_api/UserCriteria.json +48 -0
  1247. package/skills/getting-metadata-api-context/data/metadata_api/UserEngagementSettings.json +136 -0
  1248. package/skills/getting-metadata-api-context/data/metadata_api/UserInterfaceSettings.json +96 -0
  1249. package/skills/getting-metadata-api-context/data/metadata_api/UserManagementSettings.json +108 -0
  1250. package/skills/getting-metadata-api-context/data/metadata_api/UserProfileSearchScope.json +8 -0
  1251. package/skills/getting-metadata-api-context/data/metadata_api/UserProvisioningConfig.json +72 -0
  1252. package/skills/getting-metadata-api-context/data/metadata_api/ValidationRule.json +51 -0
  1253. package/skills/getting-metadata-api-context/data/metadata_api/VirtualVisitConfig.json +97 -0
  1254. package/skills/getting-metadata-api-context/data/metadata_api/VoiceSettings.json +68 -0
  1255. package/skills/getting-metadata-api-context/data/metadata_api/WarrantyLifeCycleMgmtSettings.json +32 -0
  1256. package/skills/getting-metadata-api-context/data/metadata_api/WaveAnalyticAssetCollection.json +73 -0
  1257. package/skills/getting-metadata-api-context/data/metadata_api/WaveApplication.json +56 -0
  1258. package/skills/getting-metadata-api-context/data/metadata_api/WaveComponent.json +46 -0
  1259. package/skills/getting-metadata-api-context/data/metadata_api/WaveDashboard.json +50 -0
  1260. package/skills/getting-metadata-api-context/data/metadata_api/WaveDataflow.json +45 -0
  1261. package/skills/getting-metadata-api-context/data/metadata_api/WaveDataset.json +50 -0
  1262. package/skills/getting-metadata-api-context/data/metadata_api/WaveLens.json +59 -0
  1263. package/skills/getting-metadata-api-context/data/metadata_api/WaveRecipe.json +58 -0
  1264. package/skills/getting-metadata-api-context/data/metadata_api/WaveTemplateBundle.json +37 -0
  1265. package/skills/getting-metadata-api-context/data/metadata_api/WaveXmd.json +567 -0
  1266. package/skills/getting-metadata-api-context/data/metadata_api/WebLink.json +117 -0
  1267. package/skills/getting-metadata-api-context/data/metadata_api/WebStoreBundle.json +10 -0
  1268. package/skills/getting-metadata-api-context/data/metadata_api/WebStoreTemplate.json +166 -0
  1269. package/skills/getting-metadata-api-context/data/metadata_api/WorkDotComSettings.json +76 -0
  1270. package/skills/getting-metadata-api-context/data/metadata_api/WorkSkillRouting.json +76 -0
  1271. package/skills/getting-metadata-api-context/data/metadata_api/Workflow.json +415 -0
  1272. package/skills/getting-metadata-api-context/data/metadata_api/WorkforceEngagementSettings.json +56 -0
  1273. package/skills/getting-metadata-api-context/examples/README.md +169 -0
  1274. package/skills/getting-metadata-api-context/examples/bash_section_loading.sh +142 -0
  1275. package/skills/getting-metadata-api-context/examples/javascript_section_loading.js +162 -0
  1276. package/skills/getting-metadata-api-context/examples/python_section_loading.py +112 -0
  1277. package/skills/getting-metadata-api-context/references/metadata_index_table.md +654 -0
  1278. package/skills/getting-metadata-api-context/references/usage_guide.md +420 -0
  1279. package/skills/integration-connectivity-connected-app-configure/CREDITS.md +3 -0
  1280. package/skills/integration-connectivity-connected-app-configure/README.md +99 -0
  1281. package/skills/integration-connectivity-connected-app-configure/SKILL.md +223 -0
  1282. package/skills/integration-connectivity-connected-app-configure/assets/connected-app-basic.xml +29 -0
  1283. package/skills/integration-connectivity-connected-app-configure/assets/connected-app-canvas.xml +62 -0
  1284. package/skills/integration-connectivity-connected-app-configure/assets/connected-app-jwt.xml +49 -0
  1285. package/skills/integration-connectivity-connected-app-configure/assets/connected-app-oauth.xml +65 -0
  1286. package/skills/integration-connectivity-connected-app-configure/assets/eca-global-oauth.xml +36 -0
  1287. package/skills/integration-connectivity-connected-app-configure/assets/eca-oauth-settings.xml +36 -0
  1288. package/skills/integration-connectivity-connected-app-configure/assets/eca-policies.xml +36 -0
  1289. package/skills/integration-connectivity-connected-app-configure/assets/external-client-app.xml +35 -0
  1290. package/skills/integration-connectivity-connected-app-configure/references/example-usage.md +256 -0
  1291. package/skills/integration-connectivity-connected-app-configure/references/migration-guide.md +328 -0
  1292. package/skills/integration-connectivity-connected-app-configure/references/oauth-flows-reference.md +660 -0
  1293. package/skills/integration-connectivity-connected-app-configure/references/security-checklist.md +209 -0
  1294. package/skills/integration-connectivity-connected-app-configure/references/testing-validation-guide.md +275 -0
  1295. package/skills/integration-connectivity-generate/CREDITS.md +5 -0
  1296. package/skills/integration-connectivity-generate/README.md +95 -0
  1297. package/skills/integration-connectivity-generate/SKILL.md +191 -0
  1298. package/skills/integration-connectivity-generate/assets/callouts/callout-retry-handler.cls +167 -0
  1299. package/skills/integration-connectivity-generate/assets/callouts/http-response-handler.cls +257 -0
  1300. package/skills/integration-connectivity-generate/assets/callouts/rest-queueable-callout.cls +262 -0
  1301. package/skills/integration-connectivity-generate/assets/callouts/rest-sync-callout.cls +211 -0
  1302. package/skills/integration-connectivity-generate/assets/cdc/cdc-handler.cls +246 -0
  1303. package/skills/integration-connectivity-generate/assets/cdc/cdc-subscriber-trigger.trigger +139 -0
  1304. package/skills/integration-connectivity-generate/assets/endpoint-security/example.cspTrustedSite-meta.xml +58 -0
  1305. package/skills/integration-connectivity-generate/assets/endpoint-security/example.remoteSite-meta.xml +39 -0
  1306. package/skills/integration-connectivity-generate/assets/external-credentials/jwt-external-credential.externalCredential-meta.xml +90 -0
  1307. package/skills/integration-connectivity-generate/assets/external-credentials/oauth-external-credential.externalCredential-meta.xml +87 -0
  1308. package/skills/integration-connectivity-generate/assets/external-services/external-service-operations.md +221 -0
  1309. package/skills/integration-connectivity-generate/assets/external-services/openapi-registration.externalServiceRegistration-meta.xml +193 -0
  1310. package/skills/integration-connectivity-generate/assets/named-credentials/certificate-auth.namedCredential-meta.xml +62 -0
  1311. package/skills/integration-connectivity-generate/assets/named-credentials/custom-auth.namedCredential-meta.xml +71 -0
  1312. package/skills/integration-connectivity-generate/assets/named-credentials/oauth-client-credentials.namedCredential-meta.xml +51 -0
  1313. package/skills/integration-connectivity-generate/assets/named-credentials/oauth-jwt-bearer.namedCredential-meta.xml +67 -0
  1314. package/skills/integration-connectivity-generate/assets/platform-events/event-publisher.cls +191 -0
  1315. package/skills/integration-connectivity-generate/assets/platform-events/event-subscriber-action.cls +295 -0
  1316. package/skills/integration-connectivity-generate/assets/platform-events/event-subscriber-trigger.trigger +108 -0
  1317. package/skills/integration-connectivity-generate/assets/platform-events/platform-event-definition.object-meta.xml +124 -0
  1318. package/skills/integration-connectivity-generate/assets/soap/soap-callout-service.cls +186 -0
  1319. package/skills/integration-connectivity-generate/assets/soap/wsdl2apex-guide.md +213 -0
  1320. package/skills/integration-connectivity-generate/hooks/scripts/suggest_credential_setup.py +271 -0
  1321. package/skills/integration-connectivity-generate/hooks/scripts/validate_integration.py +363 -0
  1322. package/skills/integration-connectivity-generate/references/callout-patterns.md +719 -0
  1323. package/skills/integration-connectivity-generate/references/cdc-guide.md +288 -0
  1324. package/skills/integration-connectivity-generate/references/cli-reference.md +94 -0
  1325. package/skills/integration-connectivity-generate/references/event-driven-architecture-guide.md +266 -0
  1326. package/skills/integration-connectivity-generate/references/event-patterns.md +838 -0
  1327. package/skills/integration-connectivity-generate/references/external-services-guide.md +303 -0
  1328. package/skills/integration-connectivity-generate/references/messaging-api-v2.md +609 -0
  1329. package/skills/integration-connectivity-generate/references/named-credentials-automation.md +201 -0
  1330. package/skills/integration-connectivity-generate/references/named-credentials-guide.md +173 -0
  1331. package/skills/integration-connectivity-generate/references/platform-events-guide.md +288 -0
  1332. package/skills/integration-connectivity-generate/references/rest-callout-patterns.md +288 -0
  1333. package/skills/integration-connectivity-generate/references/scoring-rubric.md +59 -0
  1334. package/skills/integration-connectivity-generate/references/security-best-practices.md +248 -0
  1335. package/skills/integration-connectivity-generate/scripts/README.md +100 -0
  1336. package/skills/integration-connectivity-generate/scripts/configure-named-credential.sh +236 -0
  1337. package/skills/integration-connectivity-generate/scripts/set-api-credential.sh +146 -0
  1338. package/skills/integration-connectivity-generate/scripts/templates/setup-credentials-with-csp.sh +158 -0
  1339. package/skills/integration-eventing-cdc-configure/SKILL.md +164 -0
  1340. package/skills/integration-eventing-cdc-configure/assets/PlatformEventChannel-template.xml +5 -0
  1341. package/skills/integration-eventing-cdc-configure/assets/PlatformEventChannelMember-template.xml +11 -0
  1342. package/skills/integration-eventing-cdc-configure/references/deploy-troubleshooting.md +73 -0
  1343. package/skills/integration-eventing-cdc-configure/references/filter-expressions.md +93 -0
  1344. package/skills/integration-eventing-subscription-configure/SKILL.md +152 -0
  1345. package/skills/integration-eventing-subscription-configure/assets/managed-event-subscription-template.xml +20 -0
  1346. package/skills/integration-eventing-subscription-configure/references/delete-guide.md +57 -0
  1347. package/skills/integration-eventing-subscription-configure/references/topic-name-formats.md +26 -0
  1348. package/skills/integration-eventing-subscription-configure/references/update-constraints.md +30 -0
  1349. package/skills/managing-suite-assignments/SKILL.md +1 -1
  1350. package/skills/mobile-apps-create/SKILL.md +69 -0
  1351. package/skills/mobile-platform-native-capabilities-integrate/SKILL.md +181 -0
  1352. package/skills/mobile-platform-native-capabilities-integrate/references/app-review.md +68 -0
  1353. package/skills/mobile-platform-native-capabilities-integrate/references/ar-space-capture.md +125 -0
  1354. package/skills/mobile-platform-native-capabilities-integrate/references/barcode-scanner.md +219 -0
  1355. package/skills/mobile-platform-native-capabilities-integrate/references/base-capability.md +22 -0
  1356. package/skills/mobile-platform-native-capabilities-integrate/references/biometrics.md +90 -0
  1357. package/skills/mobile-platform-native-capabilities-integrate/references/calendar.md +213 -0
  1358. package/skills/mobile-platform-native-capabilities-integrate/references/contacts.md +232 -0
  1359. package/skills/mobile-platform-native-capabilities-integrate/references/document-scanner.md +342 -0
  1360. package/skills/mobile-platform-native-capabilities-integrate/references/geofencing.md +123 -0
  1361. package/skills/mobile-platform-native-capabilities-integrate/references/location.md +158 -0
  1362. package/skills/mobile-platform-native-capabilities-integrate/references/mobile-capabilities.md +30 -0
  1363. package/skills/mobile-platform-native-capabilities-integrate/references/nfc.md +181 -0
  1364. package/skills/mobile-platform-native-capabilities-integrate/references/payments.md +95 -0
  1365. package/skills/mobile-platform-offline-validate/SKILL.md +167 -0
  1366. package/skills/mobile-platform-offline-validate/references/grounding.md +7 -0
  1367. package/skills/mobile-platform-offline-validate/references/inline-graphql.md +43 -0
  1368. package/skills/mobile-platform-offline-validate/references/komaci-eslint.md +125 -0
  1369. package/skills/mobile-platform-offline-validate/references/lwc-if.md +78 -0
  1370. package/skills/mobile-platform-offline-validate/scripts/komaci.config.mjs +18 -0
  1371. package/skills/mobile-platform-offline-validate/scripts/package.json +10 -0
  1372. package/skills/mobile-platform-offline-validate/scripts/run-komaci.sh +69 -0
  1373. package/skills/omnistudio-callable-apex-generate/CREDITS.md +9 -0
  1374. package/skills/omnistudio-callable-apex-generate/README.md +80 -0
  1375. package/skills/omnistudio-callable-apex-generate/SKILL.md +275 -0
  1376. package/skills/omnistudio-callable-apex-generate/assets/pattern_callable_openinterface.cls +40 -0
  1377. package/skills/omnistudio-callable-apex-generate/assets/pattern_callable_vanilla.cls +32 -0
  1378. package/skills/omnistudio-callable-apex-generate/assets/pattern_migration.cls +54 -0
  1379. package/skills/omnistudio-callable-apex-generate/assets/pattern_openinterface.cls +45 -0
  1380. package/skills/omnistudio-callable-apex-generate/assets/pattern_test_class.cls +65 -0
  1381. package/skills/omnistudio-callable-apex-generate/examples/Test_QuoteByProductCallable/IndustriesCallableException.cls +7 -0
  1382. package/skills/omnistudio-callable-apex-generate/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallable.cls +115 -0
  1383. package/skills/omnistudio-callable-apex-generate/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallableTest.cls +189 -0
  1384. package/skills/omnistudio-callable-apex-generate/examples/Test_QuoteByProductCallable/TRANSCRIPT.md +115 -0
  1385. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterface2Conversion/IndustriesCallableException.cls +7 -0
  1386. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallable.cls +74 -0
  1387. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallableTest.cls +146 -0
  1388. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterface2Conversion/MyCustomRemoteClass.cls +16 -0
  1389. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterface2Conversion/TRANSCRIPT.md +120 -0
  1390. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterfaceConversion/IndustriesCallableException.cls +7 -0
  1391. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallable.cls +73 -0
  1392. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallableTest.cls +128 -0
  1393. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterfaceConversion/MyCustomVlocityOpenInterface2.cls +23 -0
  1394. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterfaceConversion/TRANSCRIPT.md +75 -0
  1395. package/skills/omnistudio-datamapper-generate/CREDITS.md +5 -0
  1396. package/skills/omnistudio-datamapper-generate/SKILL.md +269 -0
  1397. package/skills/omnistudio-datamapper-generate/assets/completion-summary-template.md +28 -0
  1398. package/skills/omnistudio-datamapper-generate/assets/omni-data-transform-extract.json +6 -0
  1399. package/skills/omnistudio-datamapper-generate/assets/omni-data-transform-item.json +12 -0
  1400. package/skills/omnistudio-datamapper-generate/assets/omni-data-transform-load.json +6 -0
  1401. package/skills/omnistudio-datamapper-generate/assets/omni-data-transform-transform.json +6 -0
  1402. package/skills/omnistudio-datamapper-generate/references/best-practices.md +277 -0
  1403. package/skills/omnistudio-datamapper-generate/references/naming-conventions.md +145 -0
  1404. package/skills/omnistudio-datapacks-deploy/CREDITS.md +5 -0
  1405. package/skills/omnistudio-datapacks-deploy/README.md +88 -0
  1406. package/skills/omnistudio-datapacks-deploy/SKILL.md +173 -0
  1407. package/skills/omnistudio-datapacks-deploy/examples/business-internet-plus-bundle/TRANSCRIPT.md +124 -0
  1408. package/skills/omnistudio-datapacks-deploy/examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml +11 -0
  1409. package/skills/omnistudio-datapacks-deploy/examples/business-internet-plus-bundle-deploy/TRANSCRIPT.md +142 -0
  1410. package/skills/omnistudio-datapacks-deploy/examples/business-internet-plus-bundle-deploy/deploy-business-internet-plus-bundle.yaml +10 -0
  1411. package/skills/omnistudio-datapacks-deploy/references/job-file-template.md +42 -0
  1412. package/skills/omnistudio-datapacks-deploy/references/troubleshooting-matrix.md +24 -0
  1413. package/skills/omnistudio-dependencies-analyze/CREDITS.md +5 -0
  1414. package/skills/omnistudio-dependencies-analyze/SKILL.md +476 -0
  1415. package/skills/omnistudio-dependencies-analyze/references/dependency-patterns.md +508 -0
  1416. package/skills/omnistudio-dependencies-analyze/references/namespace-guide.md +300 -0
  1417. package/skills/omnistudio-epc-catalog-generate/CREDITS.md +14 -0
  1418. package/skills/omnistudio-epc-catalog-generate/README.md +89 -0
  1419. package/skills/omnistudio-epc-catalog-generate/SKILL.md +394 -0
  1420. package/skills/omnistudio-epc-catalog-generate/assets/attribute-assignment-template.json +402 -0
  1421. package/skills/omnistudio-epc-catalog-generate/assets/compiled-attribute-overrides-template.json +43 -0
  1422. package/skills/omnistudio-epc-catalog-generate/assets/completion-block-template.txt +8 -0
  1423. package/skills/omnistudio-epc-catalog-generate/assets/decomposition-relationships-template.json +233 -0
  1424. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_AttributeAssignments.json +514 -0
  1425. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_CompiledAttributeOverrides.json +21 -0
  1426. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DataPack.json +649 -0
  1427. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DecompositionRelationships.json +200 -0
  1428. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ObjectFieldAttributes.json +138 -0
  1429. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OrchestrationScenarios.json +54 -0
  1430. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OverrideDefinitions.json +266 -0
  1431. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ParentKeys.json +23 -0
  1432. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PriceListEntries.json +54 -0
  1433. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PricebookEntries.json +35 -0
  1434. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ProductChildItems.json +34 -0
  1435. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_RuleAssignments.json +21 -0
  1436. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_AttributeAssignments.json +410 -0
  1437. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DataPack.json +535 -0
  1438. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DecompositionRelationships.json +35 -0
  1439. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ObjectFieldAttributes.json +138 -0
  1440. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_OrchestrationScenarios.json +28 -0
  1441. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ParentKeys.json +23 -0
  1442. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PriceListEntries.json +220 -0
  1443. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PricebookEntries.json +35 -0
  1444. package/skills/omnistudio-epc-catalog-generate/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ProductChildItems.json +414 -0
  1445. package/skills/omnistudio-epc-catalog-generate/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_AttributeAssignments.json +382 -0
  1446. package/skills/omnistudio-epc-catalog-generate/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DataPack.json +565 -0
  1447. package/skills/omnistudio-epc-catalog-generate/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DecompositionRelationships.json +35 -0
  1448. package/skills/omnistudio-epc-catalog-generate/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ObjectFieldAttributes.json +104 -0
  1449. package/skills/omnistudio-epc-catalog-generate/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_OrchestrationScenarios.json +28 -0
  1450. package/skills/omnistudio-epc-catalog-generate/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ParentKeys.json +13 -0
  1451. package/skills/omnistudio-epc-catalog-generate/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PriceListEntries.json +106 -0
  1452. package/skills/omnistudio-epc-catalog-generate/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PricebookEntries.json +35 -0
  1453. package/skills/omnistudio-epc-catalog-generate/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ProductChildItems.json +72 -0
  1454. package/skills/omnistudio-epc-catalog-generate/assets/examples/static-ip-simple-offer/Static-IP_AttributeAssignments.json +142 -0
  1455. package/skills/omnistudio-epc-catalog-generate/assets/examples/static-ip-simple-offer/Static-IP_DataPack.json +377 -0
  1456. package/skills/omnistudio-epc-catalog-generate/assets/examples/static-ip-simple-offer/Static-IP_DecompositionRelationships.json +35 -0
  1457. package/skills/omnistudio-epc-catalog-generate/assets/examples/static-ip-simple-offer/Static-IP_ObjectFieldAttributes.json +36 -0
  1458. package/skills/omnistudio-epc-catalog-generate/assets/examples/static-ip-simple-offer/Static-IP_ParentKeys.json +8 -0
  1459. package/skills/omnistudio-epc-catalog-generate/assets/examples/static-ip-simple-offer/Static-IP_PriceListEntries.json +54 -0
  1460. package/skills/omnistudio-epc-catalog-generate/assets/examples/static-ip-simple-offer/Static-IP_PricebookEntries.json +35 -0
  1461. package/skills/omnistudio-epc-catalog-generate/assets/examples/static-ip-simple-offer/Static-IP_ProductChildItems.json +34 -0
  1462. package/skills/omnistudio-epc-catalog-generate/assets/object-field-attributes-template.json +138 -0
  1463. package/skills/omnistudio-epc-catalog-generate/assets/orchestration-scenarios-template.json +54 -0
  1464. package/skills/omnistudio-epc-catalog-generate/assets/override-definitions-template.json +134 -0
  1465. package/skills/omnistudio-epc-catalog-generate/assets/parent-keys-template.json +29 -0
  1466. package/skills/omnistudio-epc-catalog-generate/assets/price-list-entries-template.json +158 -0
  1467. package/skills/omnistudio-epc-catalog-generate/assets/pricebook-entries-template.json +35 -0
  1468. package/skills/omnistudio-epc-catalog-generate/assets/product-child-item-template.json +338 -0
  1469. package/skills/omnistudio-epc-catalog-generate/assets/product2-offer-template.json +527 -0
  1470. package/skills/omnistudio-epc-catalog-generate/examples/.gitkeep +1 -0
  1471. package/skills/omnistudio-epc-catalog-generate/examples/business-internet-plus-bundle/Business-Internet-Plus_AttributeAssignments.json +95 -0
  1472. package/skills/omnistudio-epc-catalog-generate/examples/business-internet-plus-bundle/Business-Internet-Plus_CompiledAttributeOverrides.json +1 -0
  1473. package/skills/omnistudio-epc-catalog-generate/examples/business-internet-plus-bundle/Business-Internet-Plus_DataPack.json +214 -0
  1474. package/skills/omnistudio-epc-catalog-generate/examples/business-internet-plus-bundle/Business-Internet-Plus_DecompositionRelationships.json +28 -0
  1475. package/skills/omnistudio-epc-catalog-generate/examples/business-internet-plus-bundle/Business-Internet-Plus_ObjectFieldAttributes.json +98 -0
  1476. package/skills/omnistudio-epc-catalog-generate/examples/business-internet-plus-bundle/Business-Internet-Plus_OrchestrationScenarios.json +22 -0
  1477. package/skills/omnistudio-epc-catalog-generate/examples/business-internet-plus-bundle/Business-Internet-Plus_OverrideDefinitions.json +1 -0
  1478. package/skills/omnistudio-epc-catalog-generate/examples/business-internet-plus-bundle/Business-Internet-Plus_ParentKeys.json +13 -0
  1479. package/skills/omnistudio-epc-catalog-generate/examples/business-internet-plus-bundle/Business-Internet-Plus_PriceListEntries.json +35 -0
  1480. package/skills/omnistudio-epc-catalog-generate/examples/business-internet-plus-bundle/Business-Internet-Plus_PricebookEntries.json +28 -0
  1481. package/skills/omnistudio-epc-catalog-generate/examples/business-internet-plus-bundle/Business-Internet-Plus_ProductChildItems.json +110 -0
  1482. package/skills/omnistudio-epc-catalog-generate/examples/business-internet-plus-bundle/TRANSCRIPT.md +58 -0
  1483. package/skills/omnistudio-epc-catalog-generate/references/epc-field-guide.md +90 -0
  1484. package/skills/omnistudio-epc-catalog-generate/references/naming-conventions.md +80 -0
  1485. package/skills/omnistudio-epc-catalog-generate/references/scoring-model.md +57 -0
  1486. package/skills/omnistudio-epc-catalog-generate/scripts/cli-validation-commands.sh +19 -0
  1487. package/skills/omnistudio-epc-catalog-generate/scripts/sample-invocations.sh +18 -0
  1488. package/skills/omnistudio-flexcard-generate/CREDITS.md +5 -0
  1489. package/skills/omnistudio-flexcard-generate/SKILL.md +324 -0
  1490. package/skills/omnistudio-flexcard-generate/assets/omni-ui-card.json +10 -0
  1491. package/skills/omnistudio-flexcard-generate/references/best-practices.md +291 -0
  1492. package/skills/omnistudio-flexcard-generate/references/data-binding-guide.md +311 -0
  1493. package/skills/omnistudio-flexcard-generate/references/scoring-rubric.md +66 -0
  1494. package/skills/omnistudio-flexcard-generate/scripts/flexcard-commands.sh +24 -0
  1495. package/skills/omnistudio-integration-procedure-generate/CREDITS.md +5 -0
  1496. package/skills/omnistudio-integration-procedure-generate/SKILL.md +274 -0
  1497. package/skills/omnistudio-integration-procedure-generate/assets/omni-process-element-dr-extract.json +10 -0
  1498. package/skills/omnistudio-integration-procedure-generate/assets/omni-process-element-set-values.json +10 -0
  1499. package/skills/omnistudio-integration-procedure-generate/assets/omni-process-ip.json +12 -0
  1500. package/skills/omnistudio-integration-procedure-generate/assets/scoring-report-format.txt +14 -0
  1501. package/skills/omnistudio-integration-procedure-generate/references/best-practices.md +388 -0
  1502. package/skills/omnistudio-integration-procedure-generate/references/element-types.md +588 -0
  1503. package/skills/omnistudio-integration-procedure-generate/scripts/cli-commands.sh +18 -0
  1504. package/skills/omnistudio-omniscript-generate/CREDITS.md +5 -0
  1505. package/skills/omnistudio-omniscript-generate/SKILL.md +366 -0
  1506. package/skills/omnistudio-omniscript-generate/assets/omni-process-element-step.json +10 -0
  1507. package/skills/omnistudio-omniscript-generate/assets/omni-process-element-text-block.json +11 -0
  1508. package/skills/omnistudio-omniscript-generate/assets/omni-process-omniscript.json +12 -0
  1509. package/skills/omnistudio-omniscript-generate/references/best-practices.md +480 -0
  1510. package/skills/omnistudio-omniscript-generate/references/element-types.md +1172 -0
  1511. package/skills/omnistudio-omniscript-generate/scripts/check-duplicate-omniscript.sh +13 -0
  1512. package/skills/omnistudio-omniscript-generate/scripts/cli-reference.sh +21 -0
  1513. package/skills/omnistudio-omniscript-generate/scripts/deploy-omniscript.sh +29 -0
  1514. package/skills/platform-agentexchange-partner-offers-configure/SKILL.md +111 -0
  1515. package/skills/platform-agentexchange-partner-offers-configure/assets/org-pref-template.md +27 -0
  1516. package/skills/platform-agentexchange-partner-offers-configure/examples/org-preference-settings.xml +4 -0
  1517. package/skills/platform-apex-generate/CREDITS.md +5 -0
  1518. package/skills/platform-apex-generate/SKILL.md +409 -0
  1519. package/skills/platform-apex-generate/assets/abstract.cls +131 -0
  1520. package/skills/platform-apex-generate/assets/batch.cls +124 -0
  1521. package/skills/platform-apex-generate/assets/domain.cls +101 -0
  1522. package/skills/platform-apex-generate/assets/dto.cls +107 -0
  1523. package/skills/platform-apex-generate/assets/exception.cls +50 -0
  1524. package/skills/platform-apex-generate/assets/interface.cls +24 -0
  1525. package/skills/platform-apex-generate/assets/invocable.cls +114 -0
  1526. package/skills/platform-apex-generate/assets/queueable.cls +91 -0
  1527. package/skills/platform-apex-generate/assets/rest-resource.cls +300 -0
  1528. package/skills/platform-apex-generate/assets/schedulable.cls +74 -0
  1529. package/skills/platform-apex-generate/assets/selector.cls +91 -0
  1530. package/skills/platform-apex-generate/assets/service.cls +68 -0
  1531. package/skills/platform-apex-generate/assets/trigger.cls +45 -0
  1532. package/skills/platform-apex-generate/assets/utility.cls +96 -0
  1533. package/skills/platform-apex-generate/references/AccountDeduplicationBatch.cls +147 -0
  1534. package/skills/platform-apex-generate/references/AccountSelector.cls +192 -0
  1535. package/skills/platform-apex-generate/references/AccountService.cls +200 -0
  1536. package/skills/platform-apex-logs-debug/CREDITS.md +22 -0
  1537. package/skills/platform-apex-logs-debug/README.md +74 -0
  1538. package/skills/platform-apex-logs-debug/SKILL.md +171 -0
  1539. package/skills/platform-apex-logs-debug/assets/benchmarking-template.cls +327 -0
  1540. package/skills/platform-apex-logs-debug/assets/cpu-heap-optimization.cls +307 -0
  1541. package/skills/platform-apex-logs-debug/assets/dml-in-loop-fix.cls +219 -0
  1542. package/skills/platform-apex-logs-debug/assets/null-pointer-fix.cls +252 -0
  1543. package/skills/platform-apex-logs-debug/assets/soql-in-loop-fix.cls +157 -0
  1544. package/skills/platform-apex-logs-debug/references/analysis-playbook.md +53 -0
  1545. package/skills/platform-apex-logs-debug/references/benchmarking-guide.md +287 -0
  1546. package/skills/platform-apex-logs-debug/references/cli-commands.md +368 -0
  1547. package/skills/platform-apex-logs-debug/references/common-issues.md +68 -0
  1548. package/skills/platform-apex-logs-debug/references/debug-log-reference.md +328 -0
  1549. package/skills/platform-apex-logs-debug/references/log-analysis-tools.md +248 -0
  1550. package/skills/platform-apex-logs-debug/references/scoring-rubric.md +21 -0
  1551. package/skills/platform-apex-test-generate/CREDITS.md +5 -0
  1552. package/skills/platform-apex-test-generate/SKILL.md +201 -0
  1553. package/skills/platform-apex-test-generate/assets/test-class-template.cls +93 -0
  1554. package/skills/platform-apex-test-generate/assets/test-data-factory-template.cls +111 -0
  1555. package/skills/platform-apex-test-generate/references/assertion-patterns.md +108 -0
  1556. package/skills/platform-apex-test-generate/references/async-testing.md +193 -0
  1557. package/skills/platform-apex-test-generate/references/mocking-patterns.md +220 -0
  1558. package/skills/platform-apex-test-generate/references/test-data-factory.md +75 -0
  1559. package/skills/platform-apex-test-run/CREDITS.md +22 -0
  1560. package/skills/platform-apex-test-run/README.md +94 -0
  1561. package/skills/platform-apex-test-run/SKILL.md +157 -0
  1562. package/skills/platform-apex-test-run/assets/basic-test.cls +169 -0
  1563. package/skills/platform-apex-test-run/assets/bulk-test.cls +255 -0
  1564. package/skills/platform-apex-test-run/assets/dml-mock.cls +339 -0
  1565. package/skills/platform-apex-test-run/assets/mock-callout-test.cls +353 -0
  1566. package/skills/platform-apex-test-run/assets/stub-provider-example.cls +364 -0
  1567. package/skills/platform-apex-test-run/assets/test-data-factory.cls +328 -0
  1568. package/skills/platform-apex-test-run/hooks/scripts/parse-test-results.py +364 -0
  1569. package/skills/platform-apex-test-run/references/cli-commands.md +289 -0
  1570. package/skills/platform-apex-test-run/references/mocking-patterns.md +500 -0
  1571. package/skills/platform-apex-test-run/references/performance-optimization.md +283 -0
  1572. package/skills/platform-apex-test-run/references/test-fix-loop.md +49 -0
  1573. package/skills/platform-apex-test-run/references/test-patterns.md +154 -0
  1574. package/skills/platform-apex-test-run/references/testing-best-practices.md +509 -0
  1575. package/skills/platform-custom-application-generate/SKILL.md +211 -0
  1576. package/skills/platform-custom-field-generate/SKILL.md +503 -0
  1577. package/skills/platform-custom-lightning-type-generate/SKILL.md +180 -0
  1578. package/skills/platform-custom-lightning-type-generate/assets/primitive-types-and-constraints.md +41 -0
  1579. package/skills/platform-custom-lightning-type-generate/references/widget-rendition.md +124 -0
  1580. package/skills/platform-custom-object-generate/SKILL.md +240 -0
  1581. package/skills/platform-custom-tab-generate/SKILL.md +156 -0
  1582. package/skills/platform-data-manage/CREDITS.md +5 -0
  1583. package/skills/platform-data-manage/README.md +112 -0
  1584. package/skills/platform-data-manage/SKILL.md +234 -0
  1585. package/skills/platform-data-manage/assets/bulk/bulk-insert-10000.apex +293 -0
  1586. package/skills/platform-data-manage/assets/bulk/bulk-insert-200.apex +208 -0
  1587. package/skills/platform-data-manage/assets/bulk/bulk-insert-500.apex +219 -0
  1588. package/skills/platform-data-manage/assets/bulk/bulk-upsert-external-id.apex +324 -0
  1589. package/skills/platform-data-manage/assets/cleanup/delete-by-created-date.apex +319 -0
  1590. package/skills/platform-data-manage/assets/cleanup/delete-by-name.apex +240 -0
  1591. package/skills/platform-data-manage/assets/cleanup/delete-test-data.apex +311 -0
  1592. package/skills/platform-data-manage/assets/cleanup/rollback-transaction.apex +266 -0
  1593. package/skills/platform-data-manage/assets/csv/account-import.csv +11 -0
  1594. package/skills/platform-data-manage/assets/csv/contact-import.csv +11 -0
  1595. package/skills/platform-data-manage/assets/csv/custom-object-import.csv +11 -0
  1596. package/skills/platform-data-manage/assets/csv/opportunity-import.csv +11 -0
  1597. package/skills/platform-data-manage/assets/factories/account-factory.apex +165 -0
  1598. package/skills/platform-data-manage/assets/factories/case-factory.apex +237 -0
  1599. package/skills/platform-data-manage/assets/factories/contact-factory.apex +168 -0
  1600. package/skills/platform-data-manage/assets/factories/custom-object-factory.apex +260 -0
  1601. package/skills/platform-data-manage/assets/factories/event-factory.apex +275 -0
  1602. package/skills/platform-data-manage/assets/factories/hierarchy-factory.apex +372 -0
  1603. package/skills/platform-data-manage/assets/factories/lead-factory.apex +190 -0
  1604. package/skills/platform-data-manage/assets/factories/opportunity-factory.apex +206 -0
  1605. package/skills/platform-data-manage/assets/factories/task-factory.apex +246 -0
  1606. package/skills/platform-data-manage/assets/factories/user-factory.apex +278 -0
  1607. package/skills/platform-data-manage/assets/json/account-contact-tree.json +130 -0
  1608. package/skills/platform-data-manage/assets/json/account-opportunity-tree.json +110 -0
  1609. package/skills/platform-data-manage/assets/json/full-hierarchy-tree.json +188 -0
  1610. package/skills/platform-data-manage/assets/soql/aggregate.soql +226 -0
  1611. package/skills/platform-data-manage/assets/soql/child-to-parent.soql +162 -0
  1612. package/skills/platform-data-manage/assets/soql/parent-to-child.soql +153 -0
  1613. package/skills/platform-data-manage/assets/soql/polymorphic.soql +198 -0
  1614. package/skills/platform-data-manage/assets/soql/subquery.soql +287 -0
  1615. package/skills/platform-data-manage/references/anonymous-apex-guide.md +98 -0
  1616. package/skills/platform-data-manage/references/bulk-operations-guide.md +94 -0
  1617. package/skills/platform-data-manage/references/bulk-testing-example.md +194 -0
  1618. package/skills/platform-data-manage/references/cleanup-rollback-example.md +322 -0
  1619. package/skills/platform-data-manage/references/cleanup-rollback-guide.md +84 -0
  1620. package/skills/platform-data-manage/references/crud-workflow-example.md +183 -0
  1621. package/skills/platform-data-manage/references/governor-limits-reference.md +74 -0
  1622. package/skills/platform-data-manage/references/orchestration.md +174 -0
  1623. package/skills/platform-data-manage/references/relationship-query-examples.md +249 -0
  1624. package/skills/platform-data-manage/references/sf-cli-data-commands.md +158 -0
  1625. package/skills/platform-data-manage/references/soql-relationship-guide.md +84 -0
  1626. package/skills/platform-data-manage/references/test-data-best-practices.md +104 -0
  1627. package/skills/platform-data-manage/references/test-data-factory-usage.md +290 -0
  1628. package/skills/platform-data-manage/references/test-data-patterns.md +98 -0
  1629. package/skills/platform-data-manage/scripts/soql_validator.py +292 -0
  1630. package/skills/platform-data-manage/scripts/validate_data_operation.py +379 -0
  1631. package/skills/platform-docs-get/README.md +66 -0
  1632. package/skills/platform-docs-get/SKILL.md +208 -0
  1633. package/skills/platform-docs-get/requirements.txt +2 -0
  1634. package/skills/platform-docs-get/scripts/extract_help_salesforce.py +497 -0
  1635. package/skills/platform-docs-get/scripts/extract_salesforce_doc.py +357 -0
  1636. package/skills/platform-docs-get/scripts/runtime_bootstrap.py +58 -0
  1637. package/skills/platform-flexipage-generate/SKILL.md +522 -0
  1638. package/skills/platform-lightning-app-coordinate/SKILL.md +423 -0
  1639. package/skills/platform-list-view-generate/SKILL.md +218 -0
  1640. package/skills/platform-metadata-api-context-get/README.md +79 -0
  1641. package/skills/platform-metadata-api-context-get/SKILL.md +466 -0
  1642. package/skills/platform-metadata-api-context-get/data/metadata_api/AIApplication.json +37 -0
  1643. package/skills/platform-metadata-api-context-get/data/metadata_api/AIApplicationConfig.json +53 -0
  1644. package/skills/platform-metadata-api-context-get/data/metadata_api/AIReplyRecommendationsSettings.json +40 -0
  1645. package/skills/platform-metadata-api-context-get/data/metadata_api/AIScoringModelDefinition.json +87 -0
  1646. package/skills/platform-metadata-api-context-get/data/metadata_api/AIUsecaseDefinition.json +215 -0
  1647. package/skills/platform-metadata-api-context-get/data/metadata_api/AccountInsightsSettings.json +30 -0
  1648. package/skills/platform-metadata-api-context-get/data/metadata_api/AccountIntelligenceSettings.json +40 -0
  1649. package/skills/platform-metadata-api-context-get/data/metadata_api/AccountPlanObjMeasCalcDef.json +86 -0
  1650. package/skills/platform-metadata-api-context-get/data/metadata_api/AccountPlanSettings.json +32 -0
  1651. package/skills/platform-metadata-api-context-get/data/metadata_api/AccountRelationshipShareRule.json +56 -0
  1652. package/skills/platform-metadata-api-context-get/data/metadata_api/AccountSettings.json +64 -0
  1653. package/skills/platform-metadata-api-context-get/data/metadata_api/AccountingFieldMapping.json +70 -0
  1654. package/skills/platform-metadata-api-context-get/data/metadata_api/AccountingModelConfig.json +94 -0
  1655. package/skills/platform-metadata-api-context-get/data/metadata_api/AccountingSettings.json +53 -0
  1656. package/skills/platform-metadata-api-context-get/data/metadata_api/ActionLinkGroupTemplate.json +118 -0
  1657. package/skills/platform-metadata-api-context-get/data/metadata_api/ActionOverride.json +70 -0
  1658. package/skills/platform-metadata-api-context-get/data/metadata_api/ActionPlanTemplate.json +166 -0
  1659. package/skills/platform-metadata-api-context-get/data/metadata_api/ActionableListDefinition.json +114 -0
  1660. package/skills/platform-metadata-api-context-get/data/metadata_api/ActionsSettings.json +44 -0
  1661. package/skills/platform-metadata-api-context-get/data/metadata_api/ActivationPlatform.json +95 -0
  1662. package/skills/platform-metadata-api-context-get/data/metadata_api/ActivationPlatformActvAttr.json +8 -0
  1663. package/skills/platform-metadata-api-context-get/data/metadata_api/ActivationPlatformField.json +55 -0
  1664. package/skills/platform-metadata-api-context-get/data/metadata_api/ActivitiesSettings.json +136 -0
  1665. package/skills/platform-metadata-api-context-get/data/metadata_api/ActvPfrmDataConnectorS3.json +41 -0
  1666. package/skills/platform-metadata-api-context-get/data/metadata_api/ActvPlatformAdncIdentifier.json +46 -0
  1667. package/skills/platform-metadata-api-context-get/data/metadata_api/ActvPlatformFieldValue.json +50 -0
  1668. package/skills/platform-metadata-api-context-get/data/metadata_api/AddressSettings.json +90 -0
  1669. package/skills/platform-metadata-api-context-get/data/metadata_api/AdvAccountForecastSet.json +261 -0
  1670. package/skills/platform-metadata-api-context-get/data/metadata_api/AffinityScoreDefinition.json +74 -0
  1671. package/skills/platform-metadata-api-context-get/data/metadata_api/AgentPlatformSettings.json +32 -0
  1672. package/skills/platform-metadata-api-context-get/data/metadata_api/AgentforceForDevelopersSettings.json +32 -0
  1673. package/skills/platform-metadata-api-context-get/data/metadata_api/AiAuthoringBundle.json +44 -0
  1674. package/skills/platform-metadata-api-context-get/data/metadata_api/AiEvaluationDefinition.json +153 -0
  1675. package/skills/platform-metadata-api-context-get/data/metadata_api/AiPluginUtteranceDef.json +40 -0
  1676. package/skills/platform-metadata-api-context-get/data/metadata_api/AllOrNoneHeader.json +17 -0
  1677. package/skills/platform-metadata-api-context-get/data/metadata_api/AnalyticSnapshot.json +80 -0
  1678. package/skills/platform-metadata-api-context-get/data/metadata_api/AnalyticsDashboard.json +369 -0
  1679. package/skills/platform-metadata-api-context-get/data/metadata_api/AnalyticsSettings.json +488 -0
  1680. package/skills/platform-metadata-api-context-get/data/metadata_api/AnalyticsVisualization.json +180 -0
  1681. package/skills/platform-metadata-api-context-get/data/metadata_api/AnalyticsWorkspace.json +71 -0
  1682. package/skills/platform-metadata-api-context-get/data/metadata_api/AnimationRule.json +71 -0
  1683. package/skills/platform-metadata-api-context-get/data/metadata_api/ApexClass.json +70 -0
  1684. package/skills/platform-metadata-api-context-get/data/metadata_api/ApexComponent.json +44 -0
  1685. package/skills/platform-metadata-api-context-get/data/metadata_api/ApexEmailNotifications.json +49 -0
  1686. package/skills/platform-metadata-api-context-get/data/metadata_api/ApexPage.json +64 -0
  1687. package/skills/platform-metadata-api-context-get/data/metadata_api/ApexSettings.json +96 -0
  1688. package/skills/platform-metadata-api-context-get/data/metadata_api/ApexTestSuite.json +32 -0
  1689. package/skills/platform-metadata-api-context-get/data/metadata_api/ApexTrigger.json +52 -0
  1690. package/skills/platform-metadata-api-context-get/data/metadata_api/AppAnalyticsSettings.json +36 -0
  1691. package/skills/platform-metadata-api-context-get/data/metadata_api/AppExperienceSettings.json +32 -0
  1692. package/skills/platform-metadata-api-context-get/data/metadata_api/AppFrameworkTemplateBundle.json +52 -0
  1693. package/skills/platform-metadata-api-context-get/data/metadata_api/AppMenu.json +10 -0
  1694. package/skills/platform-metadata-api-context-get/data/metadata_api/AppointmentAssignmentPolicy.json +48 -0
  1695. package/skills/platform-metadata-api-context-get/data/metadata_api/AppointmentSchedulingPolicy.json +102 -0
  1696. package/skills/platform-metadata-api-context-get/data/metadata_api/ApprovalProcess.json +234 -0
  1697. package/skills/platform-metadata-api-context-get/data/metadata_api/ArticleType.json +81 -0
  1698. package/skills/platform-metadata-api-context-get/data/metadata_api/ArticleType_CustomField.json +88 -0
  1699. package/skills/platform-metadata-api-context-get/data/metadata_api/ArticleType_Layout.json +63 -0
  1700. package/skills/platform-metadata-api-context-get/data/metadata_api/AssessmentQuestion.json +117 -0
  1701. package/skills/platform-metadata-api-context-get/data/metadata_api/AssessmentQuestionSet.json +41 -0
  1702. package/skills/platform-metadata-api-context-get/data/metadata_api/AssignmentRules.json +87 -0
  1703. package/skills/platform-metadata-api-context-get/data/metadata_api/AssociationEngineSettings.json +32 -0
  1704. package/skills/platform-metadata-api-context-get/data/metadata_api/AsyncResult.json +89 -0
  1705. package/skills/platform-metadata-api-context-get/data/metadata_api/Audience.json +172 -0
  1706. package/skills/platform-metadata-api-context-get/data/metadata_api/AuraDefinitionBundle.json +94 -0
  1707. package/skills/platform-metadata-api-context-get/data/metadata_api/AuthProvider.json +169 -0
  1708. package/skills/platform-metadata-api-context-get/data/metadata_api/AutoResponseRules.json +79 -0
  1709. package/skills/platform-metadata-api-context-get/data/metadata_api/AutomatedContactsSettings.json +44 -0
  1710. package/skills/platform-metadata-api-context-get/data/metadata_api/BaseSharingRule.json +24 -0
  1711. package/skills/platform-metadata-api-context-get/data/metadata_api/BatchCalcJobDefinition.json +849 -0
  1712. package/skills/platform-metadata-api-context-get/data/metadata_api/BatchProcessJobDefinition.json +175 -0
  1713. package/skills/platform-metadata-api-context-get/data/metadata_api/BillingSettings.json +152 -0
  1714. package/skills/platform-metadata-api-context-get/data/metadata_api/BlacklistedConsumer.json +47 -0
  1715. package/skills/platform-metadata-api-context-get/data/metadata_api/Bot.json +197 -0
  1716. package/skills/platform-metadata-api-context-get/data/metadata_api/BotBlock.json +86 -0
  1717. package/skills/platform-metadata-api-context-get/data/metadata_api/BotSettings.json +32 -0
  1718. package/skills/platform-metadata-api-context-get/data/metadata_api/BotTemplate.json +96 -0
  1719. package/skills/platform-metadata-api-context-get/data/metadata_api/BotVersion.json +667 -0
  1720. package/skills/platform-metadata-api-context-get/data/metadata_api/BranchManagementSettings.json +32 -0
  1721. package/skills/platform-metadata-api-context-get/data/metadata_api/BrandingSet.json +146 -0
  1722. package/skills/platform-metadata-api-context-get/data/metadata_api/BriefcaseDefinition.json +127 -0
  1723. package/skills/platform-metadata-api-context-get/data/metadata_api/BusinessHoursSettings.json +175 -0
  1724. package/skills/platform-metadata-api-context-get/data/metadata_api/BusinessProcess.json +47 -0
  1725. package/skills/platform-metadata-api-context-get/data/metadata_api/BusinessProcessGroup.json +91 -0
  1726. package/skills/platform-metadata-api-context-get/data/metadata_api/CMSConnectSource.json +197 -0
  1727. package/skills/platform-metadata-api-context-get/data/metadata_api/CallCenter.json +124 -0
  1728. package/skills/platform-metadata-api-context-get/data/metadata_api/CallCenterRoutingMap.json +58 -0
  1729. package/skills/platform-metadata-api-context-get/data/metadata_api/CallCoachingMediaProvider.json +40 -0
  1730. package/skills/platform-metadata-api-context-get/data/metadata_api/CallOptions.json +17 -0
  1731. package/skills/platform-metadata-api-context-get/data/metadata_api/CampaignInfluenceModel.json +59 -0
  1732. package/skills/platform-metadata-api-context-get/data/metadata_api/CampaignSettings.json +71 -0
  1733. package/skills/platform-metadata-api-context-get/data/metadata_api/CancelDeployResult.json +10 -0
  1734. package/skills/platform-metadata-api-context-get/data/metadata_api/CareBenefitVerifySettings.json +70 -0
  1735. package/skills/platform-metadata-api-context-get/data/metadata_api/CareLimitType.json +46 -0
  1736. package/skills/platform-metadata-api-context-get/data/metadata_api/CareProviderSearchConfig.json +54 -0
  1737. package/skills/platform-metadata-api-context-get/data/metadata_api/CareRequestConfiguration.json +57 -0
  1738. package/skills/platform-metadata-api-context-get/data/metadata_api/CareSystemFieldMapping.json +58 -0
  1739. package/skills/platform-metadata-api-context-get/data/metadata_api/CaseSettings.json +423 -0
  1740. package/skills/platform-metadata-api-context-get/data/metadata_api/CaseSubjectParticle.json +35 -0
  1741. package/skills/platform-metadata-api-context-get/data/metadata_api/CatalogedApi.json +97 -0
  1742. package/skills/platform-metadata-api-context-get/data/metadata_api/CatalogedApiArtifactVersionInfo.json +46 -0
  1743. package/skills/platform-metadata-api-context-get/data/metadata_api/CatalogedApiVersion.json +51 -0
  1744. package/skills/platform-metadata-api-context-get/data/metadata_api/Certificate.json +54 -0
  1745. package/skills/platform-metadata-api-context-get/data/metadata_api/ChannelLayout.json +63 -0
  1746. package/skills/platform-metadata-api-context-get/data/metadata_api/ChatterAnswersSettings.json +76 -0
  1747. package/skills/platform-metadata-api-context-get/data/metadata_api/ChatterEmailsMDSettings.json +68 -0
  1748. package/skills/platform-metadata-api-context-get/data/metadata_api/ChatterExtension.json +64 -0
  1749. package/skills/platform-metadata-api-context-get/data/metadata_api/ChatterSettings.json +92 -0
  1750. package/skills/platform-metadata-api-context-get/data/metadata_api/ChoiceList.json +66 -0
  1751. package/skills/platform-metadata-api-context-get/data/metadata_api/ClaimFinancialSettings.json +51 -0
  1752. package/skills/platform-metadata-api-context-get/data/metadata_api/ClauseCatgConfiguration.json +45 -0
  1753. package/skills/platform-metadata-api-context-get/data/metadata_api/CleanDataService.json +166 -0
  1754. package/skills/platform-metadata-api-context-get/data/metadata_api/CodeBuilderSettings.json +32 -0
  1755. package/skills/platform-metadata-api-context-get/data/metadata_api/CollectionsDashboardSettings.json +32 -0
  1756. package/skills/platform-metadata-api-context-get/data/metadata_api/CommerceSettings.json +80 -0
  1757. package/skills/platform-metadata-api-context-get/data/metadata_api/CommunitiesSettings.json +116 -0
  1758. package/skills/platform-metadata-api-context-get/data/metadata_api/Community.json +121 -0
  1759. package/skills/platform-metadata-api-context-get/data/metadata_api/CommunityTemplateDefinition.json +116 -0
  1760. package/skills/platform-metadata-api-context-get/data/metadata_api/CommunityThemeDefinition.json +146 -0
  1761. package/skills/platform-metadata-api-context-get/data/metadata_api/CompactLayout.json +32 -0
  1762. package/skills/platform-metadata-api-context-get/data/metadata_api/CompanySettings.json +49 -0
  1763. package/skills/platform-metadata-api-context-get/data/metadata_api/ConnectedApp.json +384 -0
  1764. package/skills/platform-metadata-api-context-get/data/metadata_api/ConnectedAppSettings.json +40 -0
  1765. package/skills/platform-metadata-api-context-get/data/metadata_api/ContentAsset.json +121 -0
  1766. package/skills/platform-metadata-api-context-get/data/metadata_api/ContentSettings.json +116 -0
  1767. package/skills/platform-metadata-api-context-get/data/metadata_api/ContentTypeBundle.json +64 -0
  1768. package/skills/platform-metadata-api-context-get/data/metadata_api/ContextDefinition.json +340 -0
  1769. package/skills/platform-metadata-api-context-get/data/metadata_api/ContractSettings.json +36 -0
  1770. package/skills/platform-metadata-api-context-get/data/metadata_api/ConvIntelligenceSignalRule.json +106 -0
  1771. package/skills/platform-metadata-api-context-get/data/metadata_api/ConversationChannelDefinition.json +140 -0
  1772. package/skills/platform-metadata-api-context-get/data/metadata_api/ConversationMessageDefinition.json +380 -0
  1773. package/skills/platform-metadata-api-context-get/data/metadata_api/ConversationMessageDefinitionTranslation.json +49 -0
  1774. package/skills/platform-metadata-api-context-get/data/metadata_api/ConversationVendorInfo.json +148 -0
  1775. package/skills/platform-metadata-api-context-get/data/metadata_api/ConversationalIntelligenceSettings.json +76 -0
  1776. package/skills/platform-metadata-api-context-get/data/metadata_api/CorsWhitelistOrigin.json +32 -0
  1777. package/skills/platform-metadata-api-context-get/data/metadata_api/CriteriaBasedSharingRule.json +206 -0
  1778. package/skills/platform-metadata-api-context-get/data/metadata_api/CspTrustedSite.json +82 -0
  1779. package/skills/platform-metadata-api-context-get/data/metadata_api/CurrencySettings.json +48 -0
  1780. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomAddressFieldSettings.json +32 -0
  1781. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomApplication.json +453 -0
  1782. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomApplicationComponent.json +72 -0
  1783. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomFeedFilter.json +63 -0
  1784. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomField.json +392 -0
  1785. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomFieldDisplay.json +45 -0
  1786. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomHelpMenuSection.json +57 -0
  1787. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomIndex.json +36 -0
  1788. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomLabels.json +69 -0
  1789. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomMetadata.json +90 -0
  1790. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomNotificationType.json +94 -0
  1791. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomObject.json +313 -0
  1792. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomObjectTranslation.json +319 -0
  1793. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomPageWebLink.json +121 -0
  1794. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomPermission.json +65 -0
  1795. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomSite.json +288 -0
  1796. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomTab.json +97 -0
  1797. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomValue.json +85 -0
  1798. package/skills/platform-metadata-api-context-get/data/metadata_api/CustomerDataPlatformSettings.json +32 -0
  1799. package/skills/platform-metadata-api-context-get/data/metadata_api/Dashboard.json +584 -0
  1800. package/skills/platform-metadata-api-context-get/data/metadata_api/DataCategoryGroup.json +81 -0
  1801. package/skills/platform-metadata-api-context-get/data/metadata_api/DataConnector.json +230 -0
  1802. package/skills/platform-metadata-api-context-get/data/metadata_api/DataConnectorIngestApi.json +41 -0
  1803. package/skills/platform-metadata-api-context-get/data/metadata_api/DataConnectorS3.json +44 -0
  1804. package/skills/platform-metadata-api-context-get/data/metadata_api/DataDotComSettings.json +56 -0
  1805. package/skills/platform-metadata-api-context-get/data/metadata_api/DataImportManagementSettings.json +32 -0
  1806. package/skills/platform-metadata-api-context-get/data/metadata_api/DataKitObjectDependency.json +49 -0
  1807. package/skills/platform-metadata-api-context-get/data/metadata_api/DataKitObjectTemplate.json +59 -0
  1808. package/skills/platform-metadata-api-context-get/data/metadata_api/DataObjectBuildOrgTemplate.json +61 -0
  1809. package/skills/platform-metadata-api-context-get/data/metadata_api/DataObjectSearchIndexConf.json +62 -0
  1810. package/skills/platform-metadata-api-context-get/data/metadata_api/DataPackageKitDefinition.json +74 -0
  1811. package/skills/platform-metadata-api-context-get/data/metadata_api/DataPackageKitObject.json +47 -0
  1812. package/skills/platform-metadata-api-context-get/data/metadata_api/DataSource.json +29 -0
  1813. package/skills/platform-metadata-api-context-get/data/metadata_api/DataSourceBundleDefinition.json +57 -0
  1814. package/skills/platform-metadata-api-context-get/data/metadata_api/DataSourceField.json +115 -0
  1815. package/skills/platform-metadata-api-context-get/data/metadata_api/DataSourceObject.json +93 -0
  1816. package/skills/platform-metadata-api-context-get/data/metadata_api/DataSourceTenant.json +8 -0
  1817. package/skills/platform-metadata-api-context-get/data/metadata_api/DataSrcDataModelFieldMap.json +69 -0
  1818. package/skills/platform-metadata-api-context-get/data/metadata_api/DataStreamDefinition.json +105 -0
  1819. package/skills/platform-metadata-api-context-get/data/metadata_api/DataStreamTemplate.json +99 -0
  1820. package/skills/platform-metadata-api-context-get/data/metadata_api/DataWeaveResource.json +46 -0
  1821. package/skills/platform-metadata-api-context-get/data/metadata_api/DebuggingHeader.json +20 -0
  1822. package/skills/platform-metadata-api-context-get/data/metadata_api/DecisionMatrixDefinition.json +140 -0
  1823. package/skills/platform-metadata-api-context-get/data/metadata_api/DecisionTable.json +211 -0
  1824. package/skills/platform-metadata-api-context-get/data/metadata_api/DecisionTableDatasetLink.json +72 -0
  1825. package/skills/platform-metadata-api-context-get/data/metadata_api/DelegateGroup.json +62 -0
  1826. package/skills/platform-metadata-api-context-get/data/metadata_api/DeleteResult.json +22 -0
  1827. package/skills/platform-metadata-api-context-get/data/metadata_api/DeployResult.json +253 -0
  1828. package/skills/platform-metadata-api-context-get/data/metadata_api/DeploymentSettings.json +32 -0
  1829. package/skills/platform-metadata-api-context-get/data/metadata_api/DescribeMetadataResult.json +31 -0
  1830. package/skills/platform-metadata-api-context-get/data/metadata_api/DescribeValueTypeResult.json +56 -0
  1831. package/skills/platform-metadata-api-context-get/data/metadata_api/DevHubSettings.json +60 -0
  1832. package/skills/platform-metadata-api-context-get/data/metadata_api/DgtAssetMgmtProvider.json +43 -0
  1833. package/skills/platform-metadata-api-context-get/data/metadata_api/DgtAssetMgmtPrvdLghtCpnt.json +48 -0
  1834. package/skills/platform-metadata-api-context-get/data/metadata_api/DigitalExperienceBundle.json +102 -0
  1835. package/skills/platform-metadata-api-context-get/data/metadata_api/DigitalExperienceBundle_Marketing_Workspace_Bundle_and_Folders.json +8 -0
  1836. package/skills/platform-metadata-api-context-get/data/metadata_api/DigitalExperienceBundle_Site_Workspace_Bundle_and_Folders.json +541 -0
  1837. package/skills/platform-metadata-api-context-get/data/metadata_api/DigitalExperienceConfig.json +51 -0
  1838. package/skills/platform-metadata-api-context-get/data/metadata_api/DisclosureDefinition.json +45 -0
  1839. package/skills/platform-metadata-api-context-get/data/metadata_api/DisclosureDefinitionVersion.json +78 -0
  1840. package/skills/platform-metadata-api-context-get/data/metadata_api/DisclosureType.json +53 -0
  1841. package/skills/platform-metadata-api-context-get/data/metadata_api/DiscoveryAIModel.json +263 -0
  1842. package/skills/platform-metadata-api-context-get/data/metadata_api/DiscoveryGoal.json +361 -0
  1843. package/skills/platform-metadata-api-context-get/data/metadata_api/DiscoveryStory.json +98 -0
  1844. package/skills/platform-metadata-api-context-get/data/metadata_api/Document.json +54 -0
  1845. package/skills/platform-metadata-api-context-get/data/metadata_api/DocumentCategory.json +42 -0
  1846. package/skills/platform-metadata-api-context-get/data/metadata_api/DocumentCategoryDocumentType.json +48 -0
  1847. package/skills/platform-metadata-api-context-get/data/metadata_api/DocumentChecklistSettings.json +36 -0
  1848. package/skills/platform-metadata-api-context-get/data/metadata_api/DocumentGenerationSetting.json +60 -0
  1849. package/skills/platform-metadata-api-context-get/data/metadata_api/DocumentType.json +43 -0
  1850. package/skills/platform-metadata-api-context-get/data/metadata_api/DuplicateRule.json +160 -0
  1851. package/skills/platform-metadata-api-context-get/data/metadata_api/DynamicFormsSettings.json +32 -0
  1852. package/skills/platform-metadata-api-context-get/data/metadata_api/EACSettings.json +112 -0
  1853. package/skills/platform-metadata-api-context-get/data/metadata_api/EclairGeoData.json +73 -0
  1854. package/skills/platform-metadata-api-context-get/data/metadata_api/EinsteinAISettings.json +45 -0
  1855. package/skills/platform-metadata-api-context-get/data/metadata_api/EinsteinAgentSettings.json +40 -0
  1856. package/skills/platform-metadata-api-context-get/data/metadata_api/EinsteinGptSettings.json +64 -0
  1857. package/skills/platform-metadata-api-context-get/data/metadata_api/EmailAdministrationSettings.json +104 -0
  1858. package/skills/platform-metadata-api-context-get/data/metadata_api/EmailAuthorizationSettings.json +32 -0
  1859. package/skills/platform-metadata-api-context-get/data/metadata_api/EmailIntegrationSettings.json +92 -0
  1860. package/skills/platform-metadata-api-context-get/data/metadata_api/EmailServicesFunction.json +116 -0
  1861. package/skills/platform-metadata-api-context-get/data/metadata_api/EmailTemplate.json +116 -0
  1862. package/skills/platform-metadata-api-context-get/data/metadata_api/EmailTemplateSettings.json +32 -0
  1863. package/skills/platform-metadata-api-context-get/data/metadata_api/EmbeddedServiceBranding.json +78 -0
  1864. package/skills/platform-metadata-api-context-get/data/metadata_api/EmbeddedServiceConfig.json +318 -0
  1865. package/skills/platform-metadata-api-context-get/data/metadata_api/EmbeddedServiceFieldService.json +73 -0
  1866. package/skills/platform-metadata-api-context-get/data/metadata_api/EmbeddedServiceFlowConfig.json +32 -0
  1867. package/skills/platform-metadata-api-context-get/data/metadata_api/EmbeddedServiceLiveAgent.json +141 -0
  1868. package/skills/platform-metadata-api-context-get/data/metadata_api/EmbeddedServiceMenuSettings.json +165 -0
  1869. package/skills/platform-metadata-api-context-get/data/metadata_api/EmployeeUserSettings.json +54 -0
  1870. package/skills/platform-metadata-api-context-get/data/metadata_api/EnablementMeasureDefinition.json +139 -0
  1871. package/skills/platform-metadata-api-context-get/data/metadata_api/EnablementProgramDefinition.json +241 -0
  1872. package/skills/platform-metadata-api-context-get/data/metadata_api/EnblProgramTaskSubCategory.json +47 -0
  1873. package/skills/platform-metadata-api-context-get/data/metadata_api/EncryptionKeySettings.json +51 -0
  1874. package/skills/platform-metadata-api-context-get/data/metadata_api/EnhancedNotesSettings.json +36 -0
  1875. package/skills/platform-metadata-api-context-get/data/metadata_api/EntitlementProcess.json +147 -0
  1876. package/skills/platform-metadata-api-context-get/data/metadata_api/EntitlementSettings.json +80 -0
  1877. package/skills/platform-metadata-api-context-get/data/metadata_api/EntitlementTemplate.json +52 -0
  1878. package/skills/platform-metadata-api-context-get/data/metadata_api/Error.json +25 -0
  1879. package/skills/platform-metadata-api-context-get/data/metadata_api/EscalationRules.json +117 -0
  1880. package/skills/platform-metadata-api-context-get/data/metadata_api/EventDelivery.json +57 -0
  1881. package/skills/platform-metadata-api-context-get/data/metadata_api/EventRelayConfig.json +55 -0
  1882. package/skills/platform-metadata-api-context-get/data/metadata_api/EventSettings.json +76 -0
  1883. package/skills/platform-metadata-api-context-get/data/metadata_api/EventSubscription.json +62 -0
  1884. package/skills/platform-metadata-api-context-get/data/metadata_api/ExperienceBundle.json +387 -0
  1885. package/skills/platform-metadata-api-context-get/data/metadata_api/ExperienceBundleSettings.json +25 -0
  1886. package/skills/platform-metadata-api-context-get/data/metadata_api/ExperiencePropertyTypeBundle.json +68 -0
  1887. package/skills/platform-metadata-api-context-get/data/metadata_api/ExplainabilityMsgTemplate.json +56 -0
  1888. package/skills/platform-metadata-api-context-get/data/metadata_api/ExpressionSetDefinition.json +496 -0
  1889. package/skills/platform-metadata-api-context-get/data/metadata_api/ExpressionSetMessageToken.json +42 -0
  1890. package/skills/platform-metadata-api-context-get/data/metadata_api/ExpressionSetObjectAlias.json +61 -0
  1891. package/skills/platform-metadata-api-context-get/data/metadata_api/ExternalAIModel.json +54 -0
  1892. package/skills/platform-metadata-api-context-get/data/metadata_api/ExternalAuthIdentityProvider.json +79 -0
  1893. package/skills/platform-metadata-api-context-get/data/metadata_api/ExternalClientAppSettings.json +40 -0
  1894. package/skills/platform-metadata-api-context-get/data/metadata_api/ExternalClientApplication.json +72 -0
  1895. package/skills/platform-metadata-api-context-get/data/metadata_api/ExternalCredential.json +94 -0
  1896. package/skills/platform-metadata-api-context-get/data/metadata_api/ExternalDataConnector.json +51 -0
  1897. package/skills/platform-metadata-api-context-get/data/metadata_api/ExternalDataSource.json +162 -0
  1898. package/skills/platform-metadata-api-context-get/data/metadata_api/ExternalDataTranObject.json +191 -0
  1899. package/skills/platform-metadata-api-context-get/data/metadata_api/ExternalDataTransportFieldTemplate.json +8 -0
  1900. package/skills/platform-metadata-api-context-get/data/metadata_api/ExternalDataTransportObjectTemplate.json +8 -0
  1901. package/skills/platform-metadata-api-context-get/data/metadata_api/ExternalServiceRegistration.json +121 -0
  1902. package/skills/platform-metadata-api-context-get/data/metadata_api/ExternalServicesSettings.json +34 -0
  1903. package/skills/platform-metadata-api-context-get/data/metadata_api/ExtlClntAppCanvasSettings.json +63 -0
  1904. package/skills/platform-metadata-api-context-get/data/metadata_api/ExtlClntAppConfigurablePolicies.json +75 -0
  1905. package/skills/platform-metadata-api-context-get/data/metadata_api/ExtlClntAppGlobalOauthSettings.json +135 -0
  1906. package/skills/platform-metadata-api-context-get/data/metadata_api/ExtlClntAppMobileConfigurablePolicies.json +34 -0
  1907. package/skills/platform-metadata-api-context-get/data/metadata_api/ExtlClntAppMobileSettings.json +35 -0
  1908. package/skills/platform-metadata-api-context-get/data/metadata_api/ExtlClntAppNotificationSettings.json +49 -0
  1909. package/skills/platform-metadata-api-context-get/data/metadata_api/ExtlClntAppOauthConfigurablePolicies.json +153 -0
  1910. package/skills/platform-metadata-api-context-get/data/metadata_api/ExtlClntAppOauthSettings.json +120 -0
  1911. package/skills/platform-metadata-api-context-get/data/metadata_api/ExtlClntAppPushConfigurablePolicies.json +35 -0
  1912. package/skills/platform-metadata-api-context-get/data/metadata_api/ExtlClntAppPushSettings.json +93 -0
  1913. package/skills/platform-metadata-api-context-get/data/metadata_api/ExtlClntAppSamlConfigurablePolicies.json +119 -0
  1914. package/skills/platform-metadata-api-context-get/data/metadata_api/FeatureParameterBoolean.json +47 -0
  1915. package/skills/platform-metadata-api-context-get/data/metadata_api/FeatureParameterDate.json +47 -0
  1916. package/skills/platform-metadata-api-context-get/data/metadata_api/FeatureParameterInteger.json +47 -0
  1917. package/skills/platform-metadata-api-context-get/data/metadata_api/FieldMappingConfig.json +43 -0
  1918. package/skills/platform-metadata-api-context-get/data/metadata_api/FieldRestrictionRule.json +80 -0
  1919. package/skills/platform-metadata-api-context-get/data/metadata_api/FieldServiceSettings.json +226 -0
  1920. package/skills/platform-metadata-api-context-get/data/metadata_api/FieldSet.json +60 -0
  1921. package/skills/platform-metadata-api-context-get/data/metadata_api/FieldSrcTrgtRelationship.json +56 -0
  1922. package/skills/platform-metadata-api-context-get/data/metadata_api/FileUploadAndDownloadSecuritySettings.json +53 -0
  1923. package/skills/platform-metadata-api-context-get/data/metadata_api/FilesConnectSettings.json +40 -0
  1924. package/skills/platform-metadata-api-context-get/data/metadata_api/FlexiPage.json +355 -0
  1925. package/skills/platform-metadata-api-context-get/data/metadata_api/Flow.json +2377 -0
  1926. package/skills/platform-metadata-api-context-get/data/metadata_api/FlowCategory.json +51 -0
  1927. package/skills/platform-metadata-api-context-get/data/metadata_api/FlowDefinition.json +37 -0
  1928. package/skills/platform-metadata-api-context-get/data/metadata_api/FlowSettings.json +124 -0
  1929. package/skills/platform-metadata-api-context-get/data/metadata_api/FlowTest.json +205 -0
  1930. package/skills/platform-metadata-api-context-get/data/metadata_api/FlowValueMap.json +68 -0
  1931. package/skills/platform-metadata-api-context-get/data/metadata_api/Folder.json +50 -0
  1932. package/skills/platform-metadata-api-context-get/data/metadata_api/FolderShare.json +45 -0
  1933. package/skills/platform-metadata-api-context-get/data/metadata_api/ForecastingFilter.json +48 -0
  1934. package/skills/platform-metadata-api-context-get/data/metadata_api/ForecastingFilterCondition.json +62 -0
  1935. package/skills/platform-metadata-api-context-get/data/metadata_api/ForecastingObjectListSettings.json +77 -0
  1936. package/skills/platform-metadata-api-context-get/data/metadata_api/ForecastingSettings.json +303 -0
  1937. package/skills/platform-metadata-api-context-get/data/metadata_api/ForecastingSourceDefinition.json +62 -0
  1938. package/skills/platform-metadata-api-context-get/data/metadata_api/ForecastingType.json +100 -0
  1939. package/skills/platform-metadata-api-context-get/data/metadata_api/ForecastingTypeSource.json +60 -0
  1940. package/skills/platform-metadata-api-context-get/data/metadata_api/FuelType.json +52 -0
  1941. package/skills/platform-metadata-api-context-get/data/metadata_api/FuelTypeSustnUom.json +45 -0
  1942. package/skills/platform-metadata-api-context-get/data/metadata_api/FunctionReference.json +31 -0
  1943. package/skills/platform-metadata-api-context-get/data/metadata_api/FundraisingConfig.json +86 -0
  1944. package/skills/platform-metadata-api-context-get/data/metadata_api/GatewayProviderPaymentMethodType.json +50 -0
  1945. package/skills/platform-metadata-api-context-get/data/metadata_api/GenAiFunction.json +171 -0
  1946. package/skills/platform-metadata-api-context-get/data/metadata_api/GenAiPlanner.json +215 -0
  1947. package/skills/platform-metadata-api-context-get/data/metadata_api/GenAiPlannerBundle.json +220 -0
  1948. package/skills/platform-metadata-api-context-get/data/metadata_api/GenAiPlugin.json +87 -0
  1949. package/skills/platform-metadata-api-context-get/data/metadata_api/GenAiPluginInstructionDef.json +42 -0
  1950. package/skills/platform-metadata-api-context-get/data/metadata_api/GenAiPromptTemplate.json +183 -0
  1951. package/skills/platform-metadata-api-context-get/data/metadata_api/GenAiPromptTemplateActv.json +42 -0
  1952. package/skills/platform-metadata-api-context-get/data/metadata_api/GiftEntryGridTemplate.json +42 -0
  1953. package/skills/platform-metadata-api-context-get/data/metadata_api/GlobalPicklist.json +43 -0
  1954. package/skills/platform-metadata-api-context-get/data/metadata_api/GlobalPicklistValue.json +81 -0
  1955. package/skills/platform-metadata-api-context-get/data/metadata_api/GlobalValueSet.json +46 -0
  1956. package/skills/platform-metadata-api-context-get/data/metadata_api/GlobalValueSetTranslation.json +44 -0
  1957. package/skills/platform-metadata-api-context-get/data/metadata_api/GoogleAppsSettings.json +56 -0
  1958. package/skills/platform-metadata-api-context-get/data/metadata_api/Group.json +46 -0
  1959. package/skills/platform-metadata-api-context-get/data/metadata_api/HighVelocitySalesSettings.json +96 -0
  1960. package/skills/platform-metadata-api-context-get/data/metadata_api/HistoryRetentionPolicy.json +41 -0
  1961. package/skills/platform-metadata-api-context-get/data/metadata_api/HomePageComponent.json +66 -0
  1962. package/skills/platform-metadata-api-context-get/data/metadata_api/HomePageLayout.json +40 -0
  1963. package/skills/platform-metadata-api-context-get/data/metadata_api/IPAddressRange.json +60 -0
  1964. package/skills/platform-metadata-api-context-get/data/metadata_api/IdeasSettings.json +52 -0
  1965. package/skills/platform-metadata-api-context-get/data/metadata_api/IdentityProviderSettings.json +39 -0
  1966. package/skills/platform-metadata-api-context-get/data/metadata_api/IdentityVerificationProcDef.json +173 -0
  1967. package/skills/platform-metadata-api-context-get/data/metadata_api/IdentityVerificationProcDtl.json +136 -0
  1968. package/skills/platform-metadata-api-context-get/data/metadata_api/IdentityVerificationProcFld.json +76 -0
  1969. package/skills/platform-metadata-api-context-get/data/metadata_api/IframeWhiteListUrlSettings.json +46 -0
  1970. package/skills/platform-metadata-api-context-get/data/metadata_api/InboundCertificate.json +48 -0
  1971. package/skills/platform-metadata-api-context-get/data/metadata_api/InboundNetworkConnection.json +72 -0
  1972. package/skills/platform-metadata-api-context-get/data/metadata_api/IncidentMgmtSettings.json +140 -0
  1973. package/skills/platform-metadata-api-context-get/data/metadata_api/Index.json +48 -0
  1974. package/skills/platform-metadata-api-context-get/data/metadata_api/IndustriesEinsteinFeatureSettings.json +34 -0
  1975. package/skills/platform-metadata-api-context-get/data/metadata_api/IndustriesLoyaltySettings.json +108 -0
  1976. package/skills/platform-metadata-api-context-get/data/metadata_api/IndustriesPricingSettings.json +61 -0
  1977. package/skills/platform-metadata-api-context-get/data/metadata_api/IndustriesRatingSettings.json +40 -0
  1978. package/skills/platform-metadata-api-context-get/data/metadata_api/IndustriesSettings.json +731 -0
  1979. package/skills/platform-metadata-api-context-get/data/metadata_api/IndustriesUnifiedInventorySettings.json +40 -0
  1980. package/skills/platform-metadata-api-context-get/data/metadata_api/InsPlcyLimitConsumptionRule.json +46 -0
  1981. package/skills/platform-metadata-api-context-get/data/metadata_api/InstalledPackage.json +46 -0
  1982. package/skills/platform-metadata-api-context-get/data/metadata_api/IntegArtifactDef.json +10 -0
  1983. package/skills/platform-metadata-api-context-get/data/metadata_api/IntegrationProviderDef.json +155 -0
  1984. package/skills/platform-metadata-api-context-get/data/metadata_api/InterestTaggingSettings.json +32 -0
  1985. package/skills/platform-metadata-api-context-get/data/metadata_api/InternalDataConnector.json +8 -0
  1986. package/skills/platform-metadata-api-context-get/data/metadata_api/InvLatePymntRiskCalcSettings.json +32 -0
  1987. package/skills/platform-metadata-api-context-get/data/metadata_api/InventorySettings.json +36 -0
  1988. package/skills/platform-metadata-api-context-get/data/metadata_api/InvocableActionExtension.json +84 -0
  1989. package/skills/platform-metadata-api-context-get/data/metadata_api/InvocableActionSettings.json +28 -0
  1990. package/skills/platform-metadata-api-context-get/data/metadata_api/KeywordList.json +51 -0
  1991. package/skills/platform-metadata-api-context-get/data/metadata_api/KnowledgeSettings.json +280 -0
  1992. package/skills/platform-metadata-api-context-get/data/metadata_api/LanguageSettings.json +68 -0
  1993. package/skills/platform-metadata-api-context-get/data/metadata_api/Layout.json +659 -0
  1994. package/skills/platform-metadata-api-context-get/data/metadata_api/LeadConfigSettings.json +64 -0
  1995. package/skills/platform-metadata-api-context-get/data/metadata_api/LeadConvertSettings.json +71 -0
  1996. package/skills/platform-metadata-api-context-get/data/metadata_api/LearningItemType.json +65 -0
  1997. package/skills/platform-metadata-api-context-get/data/metadata_api/Letterhead.json +119 -0
  1998. package/skills/platform-metadata-api-context-get/data/metadata_api/LightningBolt.json +103 -0
  1999. package/skills/platform-metadata-api-context-get/data/metadata_api/LightningComponentBundle.json +109 -0
  2000. package/skills/platform-metadata-api-context-get/data/metadata_api/LightningExperienceSettings.json +191 -0
  2001. package/skills/platform-metadata-api-context-get/data/metadata_api/LightningExperienceTheme.json +54 -0
  2002. package/skills/platform-metadata-api-context-get/data/metadata_api/LightningMessageChannel.json +63 -0
  2003. package/skills/platform-metadata-api-context-get/data/metadata_api/LightningOnboardingConfig.json +62 -0
  2004. package/skills/platform-metadata-api-context-get/data/metadata_api/LightningTypeBundle.json +88 -0
  2005. package/skills/platform-metadata-api-context-get/data/metadata_api/ListMetadataQuery.json +10 -0
  2006. package/skills/platform-metadata-api-context-get/data/metadata_api/ListView.json +86 -0
  2007. package/skills/platform-metadata-api-context-get/data/metadata_api/LiveAgentSettings.json +44 -0
  2008. package/skills/platform-metadata-api-context-get/data/metadata_api/LiveChatAgentConfig.json +188 -0
  2009. package/skills/platform-metadata-api-context-get/data/metadata_api/LiveChatButton.json +188 -0
  2010. package/skills/platform-metadata-api-context-get/data/metadata_api/LiveChatDeployment.json +81 -0
  2011. package/skills/platform-metadata-api-context-get/data/metadata_api/LiveChatSensitiveDataRule.json +56 -0
  2012. package/skills/platform-metadata-api-context-get/data/metadata_api/LiveMessageSettings.json +36 -0
  2013. package/skills/platform-metadata-api-context-get/data/metadata_api/LoyaltyProgramSetup.json +297 -0
  2014. package/skills/platform-metadata-api-context-get/data/metadata_api/MLDataDefinition.json +146 -0
  2015. package/skills/platform-metadata-api-context-get/data/metadata_api/MLPredictionDefinition.json +67 -0
  2016. package/skills/platform-metadata-api-context-get/data/metadata_api/MacroSettings.json +36 -0
  2017. package/skills/platform-metadata-api-context-get/data/metadata_api/MailMergeSettings.json +36 -0
  2018. package/skills/platform-metadata-api-context-get/data/metadata_api/ManagedContentType.json +86 -0
  2019. package/skills/platform-metadata-api-context-get/data/metadata_api/ManagedEventSubscription.json +52 -0
  2020. package/skills/platform-metadata-api-context-get/data/metadata_api/ManagedTopics.json +57 -0
  2021. package/skills/platform-metadata-api-context-get/data/metadata_api/MapAndLocationSettings.json +34 -0
  2022. package/skills/platform-metadata-api-context-get/data/metadata_api/MarketSegmentDefinition.json +58 -0
  2023. package/skills/platform-metadata-api-context-get/data/metadata_api/MarketingAppExtension.json +139 -0
  2024. package/skills/platform-metadata-api-context-get/data/metadata_api/MatchingRule.json +69 -0
  2025. package/skills/platform-metadata-api-context-get/data/metadata_api/MeetingsSettings.json +36 -0
  2026. package/skills/platform-metadata-api-context-get/data/metadata_api/MessagingChannel.json +278 -0
  2027. package/skills/platform-metadata-api-context-get/data/metadata_api/MetadataWithContent.json +24 -0
  2028. package/skills/platform-metadata-api-context-get/data/metadata_api/Metadata_Type_Limits.json +8 -0
  2029. package/skills/platform-metadata-api-context-get/data/metadata_api/MfgProgramTemplate.json +88 -0
  2030. package/skills/platform-metadata-api-context-get/data/metadata_api/MfgServiceConsoleSettings.json +32 -0
  2031. package/skills/platform-metadata-api-context-get/data/metadata_api/MilestoneType.json +36 -0
  2032. package/skills/platform-metadata-api-context-get/data/metadata_api/MktCalcInsightObjectDef.json +54 -0
  2033. package/skills/platform-metadata-api-context-get/data/metadata_api/MktDataTranObject.json +99 -0
  2034. package/skills/platform-metadata-api-context-get/data/metadata_api/MlDomain.json +136 -0
  2035. package/skills/platform-metadata-api-context-get/data/metadata_api/MobSecurityCertPinConfig.json +76 -0
  2036. package/skills/platform-metadata-api-context-get/data/metadata_api/MobileApplicationDetail.json +71 -0
  2037. package/skills/platform-metadata-api-context-get/data/metadata_api/MobileSecurityAssignment.json +44 -0
  2038. package/skills/platform-metadata-api-context-get/data/metadata_api/MobileSecurityPolicy.json +75 -0
  2039. package/skills/platform-metadata-api-context-get/data/metadata_api/MobileSettings.json +121 -0
  2040. package/skills/platform-metadata-api-context-get/data/metadata_api/ModerationRule.json +99 -0
  2041. package/skills/platform-metadata-api-context-get/data/metadata_api/MutingPermissionSet.json +33 -0
  2042. package/skills/platform-metadata-api-context-get/data/metadata_api/MyDomainDiscoverableLogin.json +41 -0
  2043. package/skills/platform-metadata-api-context-get/data/metadata_api/MyDomainSettings.json +140 -0
  2044. package/skills/platform-metadata-api-context-get/data/metadata_api/NameSettings.json +40 -0
  2045. package/skills/platform-metadata-api-context-get/data/metadata_api/NamedCredential.json +205 -0
  2046. package/skills/platform-metadata-api-context-get/data/metadata_api/NamedFilter.json +89 -0
  2047. package/skills/platform-metadata-api-context-get/data/metadata_api/NavigationMenu.json +101 -0
  2048. package/skills/platform-metadata-api-context-get/data/metadata_api/Network.json +606 -0
  2049. package/skills/platform-metadata-api-context-get/data/metadata_api/NetworkBranding.json +117 -0
  2050. package/skills/platform-metadata-api-context-get/data/metadata_api/NotificationTypeConfig.json +75 -0
  2051. package/skills/platform-metadata-api-context-get/data/metadata_api/NotificationsSettings.json +40 -0
  2052. package/skills/platform-metadata-api-context-get/data/metadata_api/OauthCustomScope.json +56 -0
  2053. package/skills/platform-metadata-api-context-get/data/metadata_api/OauthOidcSettings.json +52 -0
  2054. package/skills/platform-metadata-api-context-get/data/metadata_api/OauthTokenExchangeHandler.json +119 -0
  2055. package/skills/platform-metadata-api-context-get/data/metadata_api/ObjectHierarchyRelationship.json +108 -0
  2056. package/skills/platform-metadata-api-context-get/data/metadata_api/ObjectLinkingSettings.json +32 -0
  2057. package/skills/platform-metadata-api-context-get/data/metadata_api/ObjectSourceTargetMap.json +85 -0
  2058. package/skills/platform-metadata-api-context-get/data/metadata_api/OcrSampleDocument.json +158 -0
  2059. package/skills/platform-metadata-api-context-get/data/metadata_api/OcrTemplate.json +180 -0
  2060. package/skills/platform-metadata-api-context-get/data/metadata_api/OmniChannelSettings.json +48 -0
  2061. package/skills/platform-metadata-api-context-get/data/metadata_api/OmniExtTrackingDef.json +66 -0
  2062. package/skills/platform-metadata-api-context-get/data/metadata_api/OmniInteractionAccessConfig.json +90 -0
  2063. package/skills/platform-metadata-api-context-get/data/metadata_api/OmniInteractionConfig.json +37 -0
  2064. package/skills/platform-metadata-api-context-get/data/metadata_api/OmniScript.json +204 -0
  2065. package/skills/platform-metadata-api-context-get/data/metadata_api/OmniSupervisorConfig.json +156 -0
  2066. package/skills/platform-metadata-api-context-get/data/metadata_api/OmniTrackingGroup.json +77 -0
  2067. package/skills/platform-metadata-api-context-get/data/metadata_api/OnboardingDataObjectGroup.json +131 -0
  2068. package/skills/platform-metadata-api-context-get/data/metadata_api/OpportunityInsightsSettings.json +30 -0
  2069. package/skills/platform-metadata-api-context-get/data/metadata_api/OpportunityScoreSettings.json +32 -0
  2070. package/skills/platform-metadata-api-context-get/data/metadata_api/OpportunitySettings.json +132 -0
  2071. package/skills/platform-metadata-api-context-get/data/metadata_api/OrchestrationPlanCtxMapping.json +63 -0
  2072. package/skills/platform-metadata-api-context-get/data/metadata_api/OrderManagementSettings.json +52 -0
  2073. package/skills/platform-metadata-api-context-get/data/metadata_api/OrderSettings.json +60 -0
  2074. package/skills/platform-metadata-api-context-get/data/metadata_api/OrgPreferenceSettings.json +43 -0
  2075. package/skills/platform-metadata-api-context-get/data/metadata_api/OrgSettings.json +40 -0
  2076. package/skills/platform-metadata-api-context-get/data/metadata_api/OutboundNetworkConnection.json +71 -0
  2077. package/skills/platform-metadata-api-context-get/data/metadata_api/OwnerSharingRule.json +206 -0
  2078. package/skills/platform-metadata-api-context-get/data/metadata_api/Package.json +19 -0
  2079. package/skills/platform-metadata-api-context-get/data/metadata_api/PardotEinsteinSettings.json +36 -0
  2080. package/skills/platform-metadata-api-context-get/data/metadata_api/PardotSettings.json +72 -0
  2081. package/skills/platform-metadata-api-context-get/data/metadata_api/ParticipantRole.json +48 -0
  2082. package/skills/platform-metadata-api-context-get/data/metadata_api/PartyDataModelSettings.json +40 -0
  2083. package/skills/platform-metadata-api-context-get/data/metadata_api/PathAssistant.json +74 -0
  2084. package/skills/platform-metadata-api-context-get/data/metadata_api/PathAssistantSettings.json +40 -0
  2085. package/skills/platform-metadata-api-context-get/data/metadata_api/PaymentGatewayProvider.json +50 -0
  2086. package/skills/platform-metadata-api-context-get/data/metadata_api/PaymentsSettings.json +32 -0
  2087. package/skills/platform-metadata-api-context-get/data/metadata_api/PermissionSet.json +372 -0
  2088. package/skills/platform-metadata-api-context-get/data/metadata_api/PermissionSetGroup.json +57 -0
  2089. package/skills/platform-metadata-api-context-get/data/metadata_api/PermissionSetLicenseDefinition.json +58 -0
  2090. package/skills/platform-metadata-api-context-get/data/metadata_api/PersonAccountOwnerPowerUser.json +38 -0
  2091. package/skills/platform-metadata-api-context-get/data/metadata_api/Picklist.json +43 -0
  2092. package/skills/platform-metadata-api-context-get/data/metadata_api/PicklistSettings.json +32 -0
  2093. package/skills/platform-metadata-api-context-get/data/metadata_api/PipelineInspMetricConfig.json +48 -0
  2094. package/skills/platform-metadata-api-context-get/data/metadata_api/PlatformCachePartition.json +79 -0
  2095. package/skills/platform-metadata-api-context-get/data/metadata_api/PlatformEncryptionSettings.json +51 -0
  2096. package/skills/platform-metadata-api-context-get/data/metadata_api/PlatformEventChannel.json +56 -0
  2097. package/skills/platform-metadata-api-context-get/data/metadata_api/PlatformEventChannelMember.json +71 -0
  2098. package/skills/platform-metadata-api-context-get/data/metadata_api/PlatformEventMigration.json +39 -0
  2099. package/skills/platform-metadata-api-context-get/data/metadata_api/PlatformEventSettings.json +32 -0
  2100. package/skills/platform-metadata-api-context-get/data/metadata_api/PlatformEventSubscriberConfig.json +58 -0
  2101. package/skills/platform-metadata-api-context-get/data/metadata_api/Portal.json +137 -0
  2102. package/skills/platform-metadata-api-context-get/data/metadata_api/PortalDelegablePermissionSet.json +48 -0
  2103. package/skills/platform-metadata-api-context-get/data/metadata_api/PostTemplate.json +47 -0
  2104. package/skills/platform-metadata-api-context-get/data/metadata_api/PredictionBuilderSettings.json +36 -0
  2105. package/skills/platform-metadata-api-context-get/data/metadata_api/PresenceDeclineReason.json +32 -0
  2106. package/skills/platform-metadata-api-context-get/data/metadata_api/PresenceUserConfig.json +122 -0
  2107. package/skills/platform-metadata-api-context-get/data/metadata_api/PricingActionParameters.json +64 -0
  2108. package/skills/platform-metadata-api-context-get/data/metadata_api/PricingRecipe.json +117 -0
  2109. package/skills/platform-metadata-api-context-get/data/metadata_api/PrivacySettings.json +80 -0
  2110. package/skills/platform-metadata-api-context-get/data/metadata_api/ProcessFlowMigration.json +58 -0
  2111. package/skills/platform-metadata-api-context-get/data/metadata_api/ProductAttributeSet.json +33 -0
  2112. package/skills/platform-metadata-api-context-get/data/metadata_api/ProductSettings.json +44 -0
  2113. package/skills/platform-metadata-api-context-get/data/metadata_api/Profile.json +492 -0
  2114. package/skills/platform-metadata-api-context-get/data/metadata_api/ProfileActionOverride.json +48 -0
  2115. package/skills/platform-metadata-api-context-get/data/metadata_api/ProfilePasswordPolicy.json +80 -0
  2116. package/skills/platform-metadata-api-context-get/data/metadata_api/ProfileSearchLayouts.json +32 -0
  2117. package/skills/platform-metadata-api-context-get/data/metadata_api/ProfileSessionSetting.json +55 -0
  2118. package/skills/platform-metadata-api-context-get/data/metadata_api/Prompt.json +255 -0
  2119. package/skills/platform-metadata-api-context-get/data/metadata_api/PublicKeyCertificate.json +50 -0
  2120. package/skills/platform-metadata-api-context-get/data/metadata_api/PublicKeyCertificateSet.json +65 -0
  2121. package/skills/platform-metadata-api-context-get/data/metadata_api/Queue.json +123 -0
  2122. package/skills/platform-metadata-api-context-get/data/metadata_api/QueueRoutingConfig.json +96 -0
  2123. package/skills/platform-metadata-api-context-get/data/metadata_api/QuickAction.json +175 -0
  2124. package/skills/platform-metadata-api-context-get/data/metadata_api/QuoteSettings.json +36 -0
  2125. package/skills/platform-metadata-api-context-get/data/metadata_api/ReadResult.json +16 -0
  2126. package/skills/platform-metadata-api-context-get/data/metadata_api/RealTimeEventSettings.json +45 -0
  2127. package/skills/platform-metadata-api-context-get/data/metadata_api/RecommendationStrategy.json +327 -0
  2128. package/skills/platform-metadata-api-context-get/data/metadata_api/RecordActionDeployment.json +184 -0
  2129. package/skills/platform-metadata-api-context-get/data/metadata_api/RecordAggregationDefinition.json +148 -0
  2130. package/skills/platform-metadata-api-context-get/data/metadata_api/RecordAlertCategory.json +42 -0
  2131. package/skills/platform-metadata-api-context-get/data/metadata_api/RecordPageSettings.json +40 -0
  2132. package/skills/platform-metadata-api-context-get/data/metadata_api/RecordType.json +68 -0
  2133. package/skills/platform-metadata-api-context-get/data/metadata_api/RedirectWhitelistUrl.json +26 -0
  2134. package/skills/platform-metadata-api-context-get/data/metadata_api/ReferencedDashboard.json +55 -0
  2135. package/skills/platform-metadata-api-context-get/data/metadata_api/RegisteredExternalService.json +72 -0
  2136. package/skills/platform-metadata-api-context-get/data/metadata_api/RelatedRecordAssocCriteria.json +75 -0
  2137. package/skills/platform-metadata-api-context-get/data/metadata_api/RelationshipGraphDefinition.json +63 -0
  2138. package/skills/platform-metadata-api-context-get/data/metadata_api/RemoteSiteSetting.json +51 -0
  2139. package/skills/platform-metadata-api-context-get/data/metadata_api/Report.json +715 -0
  2140. package/skills/platform-metadata-api-context-get/data/metadata_api/ReportType.json +118 -0
  2141. package/skills/platform-metadata-api-context-get/data/metadata_api/RestrictionRule.json +71 -0
  2142. package/skills/platform-metadata-api-context-get/data/metadata_api/RetailExecutionSettings.json +40 -0
  2143. package/skills/platform-metadata-api-context-get/data/metadata_api/RetrievalSummaryDefinition.json +76 -0
  2144. package/skills/platform-metadata-api-context-get/data/metadata_api/RetrieveRequest.json +35 -0
  2145. package/skills/platform-metadata-api-context-get/data/metadata_api/RetrieveResult.json +103 -0
  2146. package/skills/platform-metadata-api-context-get/data/metadata_api/Role.json +35 -0
  2147. package/skills/platform-metadata-api-context-get/data/metadata_api/RoleOrTerritory.json +57 -0
  2148. package/skills/platform-metadata-api-context-get/data/metadata_api/SalesAgreementSettings.json +180 -0
  2149. package/skills/platform-metadata-api-context-get/data/metadata_api/SalesWorkQueueSettings.json +40 -0
  2150. package/skills/platform-metadata-api-context-get/data/metadata_api/SamlSsoConfig.json +128 -0
  2151. package/skills/platform-metadata-api-context-get/data/metadata_api/SandboxSettings.json +32 -0
  2152. package/skills/platform-metadata-api-context-get/data/metadata_api/SaveResult.json +22 -0
  2153. package/skills/platform-metadata-api-context-get/data/metadata_api/SchedulingObjective.json +66 -0
  2154. package/skills/platform-metadata-api-context-get/data/metadata_api/SchedulingRule.json +66 -0
  2155. package/skills/platform-metadata-api-context-get/data/metadata_api/SchemaSettings.json +44 -0
  2156. package/skills/platform-metadata-api-context-get/data/metadata_api/Scontrol.json +72 -0
  2157. package/skills/platform-metadata-api-context-get/data/metadata_api/SearchCustomization.json +120 -0
  2158. package/skills/platform-metadata-api-context-get/data/metadata_api/SearchLayouts.json +64 -0
  2159. package/skills/platform-metadata-api-context-get/data/metadata_api/SearchOrgWideObjectConfig.json +61 -0
  2160. package/skills/platform-metadata-api-context-get/data/metadata_api/SearchSettings.json +155 -0
  2161. package/skills/platform-metadata-api-context-get/data/metadata_api/SecuritySettings.json +437 -0
  2162. package/skills/platform-metadata-api-context-get/data/metadata_api/ServiceAISetupDefinition.json +48 -0
  2163. package/skills/platform-metadata-api-context-get/data/metadata_api/ServiceAISetupField.json +58 -0
  2164. package/skills/platform-metadata-api-context-get/data/metadata_api/ServiceChannel.json +123 -0
  2165. package/skills/platform-metadata-api-context-get/data/metadata_api/ServiceCloudVoiceSettings.json +83 -0
  2166. package/skills/platform-metadata-api-context-get/data/metadata_api/ServicePresenceStatus.json +45 -0
  2167. package/skills/platform-metadata-api-context-get/data/metadata_api/ServiceProcess.json +141 -0
  2168. package/skills/platform-metadata-api-context-get/data/metadata_api/ServiceSetupAssistantSettings.json +32 -0
  2169. package/skills/platform-metadata-api-context-get/data/metadata_api/SessionHeader.json +17 -0
  2170. package/skills/platform-metadata-api-context-get/data/metadata_api/SharedTo.json +105 -0
  2171. package/skills/platform-metadata-api-context-get/data/metadata_api/SharingBaseRule.json +60 -0
  2172. package/skills/platform-metadata-api-context-get/data/metadata_api/SharingReason.json +34 -0
  2173. package/skills/platform-metadata-api-context-get/data/metadata_api/SharingRecalculation.json +29 -0
  2174. package/skills/platform-metadata-api-context-get/data/metadata_api/SharingRules.json +186 -0
  2175. package/skills/platform-metadata-api-context-get/data/metadata_api/SharingSet.json +78 -0
  2176. package/skills/platform-metadata-api-context-get/data/metadata_api/SharingSettings.json +92 -0
  2177. package/skills/platform-metadata-api-context-get/data/metadata_api/SiteDotCom.json +37 -0
  2178. package/skills/platform-metadata-api-context-get/data/metadata_api/SiteSettings.json +60 -0
  2179. package/skills/platform-metadata-api-context-get/data/metadata_api/Skill.json +69 -0
  2180. package/skills/platform-metadata-api-context-get/data/metadata_api/SocialCustomerServiceSettings.json +61 -0
  2181. package/skills/platform-metadata-api-context-get/data/metadata_api/SocialProfileSettings.json +35 -0
  2182. package/skills/platform-metadata-api-context-get/data/metadata_api/SourceTrackingSettings.json +32 -0
  2183. package/skills/platform-metadata-api-context-get/data/metadata_api/StageAssignment.json +113 -0
  2184. package/skills/platform-metadata-api-context-get/data/metadata_api/StageDefinition.json +237 -0
  2185. package/skills/platform-metadata-api-context-get/data/metadata_api/StandardValueSet.json +41 -0
  2186. package/skills/platform-metadata-api-context-get/data/metadata_api/StandardValueSetTranslation.json +32 -0
  2187. package/skills/platform-metadata-api-context-get/data/metadata_api/StaticResource.json +49 -0
  2188. package/skills/platform-metadata-api-context-get/data/metadata_api/StreamingAppDataConnector.json +51 -0
  2189. package/skills/platform-metadata-api-context-get/data/metadata_api/SubscriptionManagementSettings.json +56 -0
  2190. package/skills/platform-metadata-api-context-get/data/metadata_api/SurveySettings.json +44 -0
  2191. package/skills/platform-metadata-api-context-get/data/metadata_api/SustainabilityUom.json +61 -0
  2192. package/skills/platform-metadata-api-context-get/data/metadata_api/SustnUomConversion.json +58 -0
  2193. package/skills/platform-metadata-api-context-get/data/metadata_api/SvcCatalogCategory.json +54 -0
  2194. package/skills/platform-metadata-api-context-get/data/metadata_api/SvcCatalogFulfillmentFlow.json +99 -0
  2195. package/skills/platform-metadata-api-context-get/data/metadata_api/SvcCatalogItemDef.json +202 -0
  2196. package/skills/platform-metadata-api-context-get/data/metadata_api/SynonymDictionary.json +56 -0
  2197. package/skills/platform-metadata-api-context-get/data/metadata_api/Tag.json +70 -0
  2198. package/skills/platform-metadata-api-context-get/data/metadata_api/TagSet.json +47 -0
  2199. package/skills/platform-metadata-api-context-get/data/metadata_api/Territory.json +39 -0
  2200. package/skills/platform-metadata-api-context-get/data/metadata_api/Territory2.json +112 -0
  2201. package/skills/platform-metadata-api-context-get/data/metadata_api/Territory2Model.json +41 -0
  2202. package/skills/platform-metadata-api-context-get/data/metadata_api/Territory2Rule.json +68 -0
  2203. package/skills/platform-metadata-api-context-get/data/metadata_api/Territory2Settings.json +111 -0
  2204. package/skills/platform-metadata-api-context-get/data/metadata_api/Territory2Type.json +42 -0
  2205. package/skills/platform-metadata-api-context-get/data/metadata_api/TimeSheetTemplate.json +75 -0
  2206. package/skills/platform-metadata-api-context-get/data/metadata_api/TimelineObjectDefinition.json +48 -0
  2207. package/skills/platform-metadata-api-context-get/data/metadata_api/TopicsForObjects.json +38 -0
  2208. package/skills/platform-metadata-api-context-get/data/metadata_api/TrailheadSettings.json +40 -0
  2209. package/skills/platform-metadata-api-context-get/data/metadata_api/TransactionSecurityPolicy.json +127 -0
  2210. package/skills/platform-metadata-api-context-get/data/metadata_api/Translations.json +976 -0
  2211. package/skills/platform-metadata-api-context-get/data/metadata_api/TrialOrgSettings.json +32 -0
  2212. package/skills/platform-metadata-api-context-get/data/metadata_api/UIBundle.json +54 -0
  2213. package/skills/platform-metadata-api-context-get/data/metadata_api/UIObjectRelationConfig.json +101 -0
  2214. package/skills/platform-metadata-api-context-get/data/metadata_api/UiFormatSpecificationSet.json +103 -0
  2215. package/skills/platform-metadata-api-context-get/data/metadata_api/UiPreviewMessageTabDef.json +70 -0
  2216. package/skills/platform-metadata-api-context-get/data/metadata_api/UpsertResult.json +25 -0
  2217. package/skills/platform-metadata-api-context-get/data/metadata_api/UserAccessPolicy.json +120 -0
  2218. package/skills/platform-metadata-api-context-get/data/metadata_api/UserAuthCertificate.json +57 -0
  2219. package/skills/platform-metadata-api-context-get/data/metadata_api/UserCriteria.json +48 -0
  2220. package/skills/platform-metadata-api-context-get/data/metadata_api/UserEngagementSettings.json +136 -0
  2221. package/skills/platform-metadata-api-context-get/data/metadata_api/UserInterfaceSettings.json +96 -0
  2222. package/skills/platform-metadata-api-context-get/data/metadata_api/UserManagementSettings.json +108 -0
  2223. package/skills/platform-metadata-api-context-get/data/metadata_api/UserProfileSearchScope.json +8 -0
  2224. package/skills/platform-metadata-api-context-get/data/metadata_api/UserProvisioningConfig.json +72 -0
  2225. package/skills/platform-metadata-api-context-get/data/metadata_api/ValidationRule.json +51 -0
  2226. package/skills/platform-metadata-api-context-get/data/metadata_api/VirtualVisitConfig.json +97 -0
  2227. package/skills/platform-metadata-api-context-get/data/metadata_api/VoiceSettings.json +68 -0
  2228. package/skills/platform-metadata-api-context-get/data/metadata_api/WarrantyLifeCycleMgmtSettings.json +32 -0
  2229. package/skills/platform-metadata-api-context-get/data/metadata_api/WaveAnalyticAssetCollection.json +73 -0
  2230. package/skills/platform-metadata-api-context-get/data/metadata_api/WaveApplication.json +56 -0
  2231. package/skills/platform-metadata-api-context-get/data/metadata_api/WaveComponent.json +46 -0
  2232. package/skills/platform-metadata-api-context-get/data/metadata_api/WaveDashboard.json +50 -0
  2233. package/skills/platform-metadata-api-context-get/data/metadata_api/WaveDataflow.json +45 -0
  2234. package/skills/platform-metadata-api-context-get/data/metadata_api/WaveDataset.json +50 -0
  2235. package/skills/platform-metadata-api-context-get/data/metadata_api/WaveLens.json +59 -0
  2236. package/skills/platform-metadata-api-context-get/data/metadata_api/WaveRecipe.json +58 -0
  2237. package/skills/platform-metadata-api-context-get/data/metadata_api/WaveTemplateBundle.json +37 -0
  2238. package/skills/platform-metadata-api-context-get/data/metadata_api/WaveXmd.json +567 -0
  2239. package/skills/platform-metadata-api-context-get/data/metadata_api/WebLink.json +117 -0
  2240. package/skills/platform-metadata-api-context-get/data/metadata_api/WebStoreBundle.json +10 -0
  2241. package/skills/platform-metadata-api-context-get/data/metadata_api/WebStoreTemplate.json +166 -0
  2242. package/skills/platform-metadata-api-context-get/data/metadata_api/WorkDotComSettings.json +76 -0
  2243. package/skills/platform-metadata-api-context-get/data/metadata_api/WorkSkillRouting.json +76 -0
  2244. package/skills/platform-metadata-api-context-get/data/metadata_api/Workflow.json +415 -0
  2245. package/skills/platform-metadata-api-context-get/data/metadata_api/WorkforceEngagementSettings.json +56 -0
  2246. package/skills/platform-metadata-api-context-get/examples/README.md +169 -0
  2247. package/skills/platform-metadata-api-context-get/examples/bash_section_loading.sh +142 -0
  2248. package/skills/platform-metadata-api-context-get/examples/javascript_section_loading.js +162 -0
  2249. package/skills/platform-metadata-api-context-get/examples/python_section_loading.py +112 -0
  2250. package/skills/platform-metadata-api-context-get/references/metadata_index_table.md +654 -0
  2251. package/skills/platform-metadata-api-context-get/references/usage_guide.md +420 -0
  2252. package/skills/platform-metadata-deploy/CREDITS.md +25 -0
  2253. package/skills/platform-metadata-deploy/README.md +104 -0
  2254. package/skills/platform-metadata-deploy/SKILL.md +213 -0
  2255. package/skills/platform-metadata-deploy/assets/destructiveChanges.xml +143 -0
  2256. package/skills/platform-metadata-deploy/assets/package.xml +121 -0
  2257. package/skills/platform-metadata-deploy/references/agent-deployment-guide.md +628 -0
  2258. package/skills/platform-metadata-deploy/references/deploy.sh +73 -0
  2259. package/skills/platform-metadata-deploy/references/deployment-report-template.md +89 -0
  2260. package/skills/platform-metadata-deploy/references/deployment-workflows.md +395 -0
  2261. package/skills/platform-metadata-deploy/references/orchestration.md +183 -0
  2262. package/skills/platform-metadata-deploy/references/trigger-deployment-safety.md +376 -0
  2263. package/skills/platform-permission-set-generate/SKILL.md +189 -0
  2264. package/skills/platform-soql-query/CREDITS.md +21 -0
  2265. package/skills/platform-soql-query/README.md +41 -0
  2266. package/skills/platform-soql-query/SKILL.md +142 -0
  2267. package/skills/platform-soql-query/assets/aggregate-queries.soql +242 -0
  2268. package/skills/platform-soql-query/assets/basic-queries.soql +188 -0
  2269. package/skills/platform-soql-query/assets/bulkified-query-pattern.cls +280 -0
  2270. package/skills/platform-soql-query/assets/optimization-patterns.soql +259 -0
  2271. package/skills/platform-soql-query/assets/relationship-queries.soql +203 -0
  2272. package/skills/platform-soql-query/assets/selector-class.cls +219 -0
  2273. package/skills/platform-soql-query/references/anti-patterns.md +348 -0
  2274. package/skills/platform-soql-query/references/cli-commands.md +358 -0
  2275. package/skills/platform-soql-query/references/field-coverage-rules.md +514 -0
  2276. package/skills/platform-soql-query/references/query-optimization.md +142 -0
  2277. package/skills/platform-soql-query/references/selector-patterns.md +479 -0
  2278. package/skills/platform-soql-query/references/soql-reference.md +227 -0
  2279. package/skills/platform-soql-query/references/soql-syntax-reference.md +208 -0
  2280. package/skills/platform-soql-query/scripts/post-tool-validate.py +322 -0
  2281. package/skills/platform-trust-archive-manage/SKILL.md +121 -0
  2282. package/skills/platform-trust-archive-manage/examples/monitor-failed-jobs.md +47 -0
  2283. package/skills/platform-trust-archive-manage/references/archive-activity-entity.md +59 -0
  2284. package/skills/platform-trust-archive-manage/references/connect-api-operations.md +157 -0
  2285. package/skills/platform-validation-rule-generate/SKILL.md +74 -0
  2286. package/skills/recommending-devops-tests/SKILL.md +1 -1
  2287. package/skills/running-devops-test-suite/SKILL.md +1 -1
  2288. package/skills/activating-datacloud/CREDITS.md +0 -5
@@ -0,0 +1,2835 @@
1
+ """Phase 2 Batch 1: pipeline orchestrator for investigating-agentforce-architecture.
2
+
3
+ Composes Phase 1 primitives (config, rest_client, sf_cli, soql_loader,
4
+ probe_channels, fetch_soql, parallel_retrieve, parse_wave, finalize) into
5
+ the 13-phase flow defined in the plan.
6
+
7
+ NOT a credential holder. Credentials live in a single mutable cell
8
+ (`_creds_cell`) that both `creds_provider()` and `refresh_fn()` close over.
9
+ Every SOQL call uses `creds_provider` so `retry_on_401`'s refresh path
10
+ can deliver fresh creds into the retry — storing the URL/token
11
+ in function args would defeat the refresh entirely.
12
+
13
+ Phase ordering:
14
+ 1 parse args (Bash harness does phases 1-3 today;
15
+ 2 resolve creds (sf org display) P2 Batch 1 runs them in-process too)
16
+ 3 probe channels
17
+ 4 resolve bot + version
18
+ 5 cache check
19
+ 6 Wave A (7 parallel Tooling queries, DAG-ordered)
20
+ 7 join Wave A → _bundle_parsed.json-shaped dict
21
+ 8 Wave B (Flow + Apex bodies, parallel)
22
+ 9 parse_wave -> declared_action_tree.json
23
+ 10 render architecture.md (Batch 2 — stubbed)
24
+ 11 finalize (atomic writes + manifest)
25
+ 12 emit RESULT
26
+ """
27
+ from __future__ import annotations
28
+
29
+ import argparse
30
+ import json
31
+ import os
32
+ import sys
33
+ import threading
34
+ import time
35
+ from functools import partial
36
+ from pathlib import Path
37
+ from typing import Callable, Tuple
38
+
39
+ # Phase 2 Batch 1: all cross-module wiring routes through config so a future
40
+ # relocation of DATA_ROOT / CACHE_ROOT only touches one file.
41
+ from config import (
42
+ CACHE_TTL_DAYS,
43
+ DATA_ROOT,
44
+ SCHEMA_VERSION,
45
+ build_agent_cache_dir,
46
+ build_agent_data_dir,
47
+ )
48
+ from rest_client import RestClientError, redact_error
49
+ from sf_cli import AuthRequired, SfCliError, run_sf
50
+ from soql_loader import SoqlParamError
51
+
52
+ # Phase 2 Batch 1 imports — functional pipeline primitives.
53
+ from fetch_soql import (
54
+ fetch_apex_bodies_by_ids,
55
+ fetch_apex_bodies_by_names,
56
+ fetch_bot_definition_details,
57
+ fetch_bot_versions,
58
+ fetch_flow_definition_by_ids,
59
+ fetch_flow_definition_ids_by_names,
60
+ fetch_flow_metadata,
61
+ fetch_functions_by_plugins,
62
+ fetch_planner_attrs,
63
+ fetch_planner_bundle_functions,
64
+ fetch_planner_definition,
65
+ fetch_plugin_functions,
66
+ fetch_plugin_instructions,
67
+ fetch_plugins_by_planner,
68
+ )
69
+ from metadata_listing import (
70
+ list_prompt_template_metadata,
71
+ retrieve_prompt_templates,
72
+ )
73
+ from parallel_retrieve import fetch_bodies_parallel
74
+ from parse_bundle import classify_generation
75
+ from probe_channels import probe_channels
76
+ from resolve_invocation_target import looks_like_sf_id, resolve_or_unresolved
77
+
78
+
79
+ # ---------------------------------------------------------------------------
80
+ # CLI
81
+ # ---------------------------------------------------------------------------
82
+
83
+
84
+ def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
85
+ p = argparse.ArgumentParser(prog="architecture")
86
+ p.add_argument("--org-alias", required=True)
87
+ p.add_argument("--agent", required=True, dest="agent_api_name")
88
+ p.add_argument("--version", dest="agent_version")
89
+ p.add_argument("--force", action="store_true", dest="force_refresh")
90
+ # --reprobe forces a fresh channel-probe run on pipeline start.
91
+ p.add_argument("--reprobe", action="store_true")
92
+ p.add_argument("--parallelism", type=int, default=5)
93
+ p.add_argument("--max-mermaid-nodes", type=int, default=80)
94
+ p.add_argument("--work-dir", required=True)
95
+ # Runtime-agnostic path overrides. Defaults are
96
+ # ~/.vibe/{data,cache}/investigating-agentforce-architecture/.
97
+ # Other runtimes (AFV OOTB, Codex, Cursor, OpenCode) pass these to land
98
+ # artifacts under their own distribution layout.
99
+ p.add_argument(
100
+ "--data-dir",
101
+ type=Path,
102
+ default=None,
103
+ help="Override data root (default: ~/.vibe/data/investigating-agentforce-architecture).",
104
+ )
105
+ p.add_argument(
106
+ "--cache-dir",
107
+ type=Path,
108
+ default=None,
109
+ help="Override cache root (default: ~/.vibe/cache/investigating-agentforce-architecture).",
110
+ )
111
+ return p.parse_args(argv)
112
+
113
+
114
+ # ---------------------------------------------------------------------------
115
+ # Three-level rebind for --data-dir / --cache-dir overrides.
116
+ #
117
+ # Python's `from X import Y` snapshots Y into the importer's local namespace.
118
+ # Mutating X.Y later does NOT update the importer's local binding. main.py
119
+ # does `from config import DATA_ROOT, ...` at module top, so without a
120
+ # global rebind, line 2221's `str(DATA_ROOT)` would write the default path
121
+ # even when --data-dir was passed.
122
+ #
123
+ # Levels rebound:
124
+ # 1. paths.DATA_ROOT (the source of truth)
125
+ # 2. config.DATA_ROOT (the re-export)
126
+ # 3. main.DATA_ROOT (THIS module's local snapshot — via global)
127
+ #
128
+ # Plus: config.PROBE_CACHE_ROOT (derived from CACHE_ROOT at import time).
129
+ # ---------------------------------------------------------------------------
130
+
131
+
132
+ def _apply_path_overrides(args: argparse.Namespace) -> None:
133
+ """Apply --data-dir / --cache-dir overrides across all 3 namespace levels.
134
+
135
+ Must be called BEFORE any pipeline code reads DATA_ROOT or CACHE_ROOT.
136
+ """
137
+ if not (args.data_dir or args.cache_dir):
138
+ return
139
+ global DATA_ROOT # rebind level 1: this module
140
+ from _shared import runtime, paths
141
+ import config
142
+
143
+ skill_name = "investigating-agentforce-architecture"
144
+ if args.data_dir:
145
+ runtime.set_data_root_override(args.data_dir)
146
+ new_data = runtime.resolve_data_root(skill_name)
147
+ paths.DATA_ROOT = new_data # level 2: paths module
148
+ config.DATA_ROOT = new_data # level 3: config module re-export
149
+ DATA_ROOT = new_data # level 1: main.py local
150
+ if args.cache_dir:
151
+ runtime.set_cache_root_override(args.cache_dir)
152
+ new_cache = runtime.resolve_cache_root(skill_name)
153
+ paths.CACHE_ROOT = new_cache
154
+ config.CACHE_ROOT = new_cache
155
+ config.PROBE_CACHE_ROOT = new_cache / "_channel_probe"
156
+
157
+
158
+ # ---------------------------------------------------------------------------
159
+ # Phase 2 Batch 1: credentials
160
+ # ---------------------------------------------------------------------------
161
+ # Single mutable cell read by `creds_provider`. `refresh_fn` rewrites the
162
+ # cell. `retry_on_401` in rest_client invokes refresh_fn for side effect;
163
+ # the next invocation of creds_provider picks up the new tuple. See
164
+ # rest_client
165
+
166
+
167
+ def _build_creds_plumbing(
168
+ initial_creds: Tuple[str, str],
169
+ resolve_creds: Callable[[], Tuple[str, str]],
170
+ *,
171
+ dedupe_window_s: float = 1.0,
172
+ ) -> Tuple[
173
+ Callable[[], Tuple[str, str]],
174
+ Callable[[], Tuple[str, str]],
175
+ "list[Tuple[str, str]]",
176
+ ]:
177
+ """Build the (creds_provider, refresh_fn, creds_cell) triple.
178
+
179
+ + `creds_provider` re-reads `creds_cell`
180
+ on every call so a refresh actually lands in the NEXT SOQL attempt.
181
+ `refresh_fn` is serialized by an internal `threading.Lock` + a
182
+ `time.monotonic()` dedupe window — N concurrent 401s against the same
183
+ stale token collapse to ONE `resolve_creds()` spawn per window. That
184
+ caps real `sf org display` spawns at roughly 1/second regardless of
185
+ pool size.
186
+
187
+ Extracted from `main()` so the closure is testable without threading
188
+ a whole pipeline run through argparse + mocks.
189
+
190
+ Returns (creds_provider, refresh_fn, creds_cell). The cell is
191
+ returned so callers/tests can inspect the current tuple directly
192
+ (it's the single source of truth the provider reads from).
193
+ """
194
+ creds_cell: list[Tuple[str, str]] = [initial_creds]
195
+ lock = threading.Lock()
196
+ last_refresh_mono = [0.0]
197
+
198
+ def creds_provider() -> Tuple[str, str]:
199
+ return creds_cell[0]
200
+
201
+ def refresh_fn() -> Tuple[str, str]:
202
+ with lock:
203
+ now = time.monotonic()
204
+ if now - last_refresh_mono[0] < dedupe_window_s:
205
+ # Another thread refreshed within the dedupe window — reuse.
206
+ return creds_cell[0]
207
+ creds_cell[0] = resolve_creds()
208
+ last_refresh_mono[0] = now
209
+ return creds_cell[0]
210
+
211
+ return creds_provider, refresh_fn, creds_cell
212
+
213
+
214
+ _REDACTION_MARKER_FRAGMENT = "show-access-token"
215
+ """Substring that uniquely identifies the sf CLI v2 redaction placeholder
216
+ (`"[REDACTED] Use 'sf org auth show-access-token' to view"`). We match on
217
+ this fragment rather than the full literal because the upstream wording
218
+ has shifted between sf CLI builds, but the embedded subcommand name has
219
+ been stable since cli#3560 landed."""
220
+
221
+
222
+ def _resolve_creds(org_alias: str) -> Tuple[str, str]:
223
+ """Resolve (instance_url, access_token) for ``org_alias``.
224
+
225
+ Two-path strategy per forcedotcom/cli#3560 (effective 2026-05-27):
226
+
227
+ 1. **Primary** — call ``sf org display`` for instanceUrl, then
228
+ ``sf org auth show-access-token`` for the access token. This is
229
+ the upstream long-term path; ``SF_TEMP_SHOW_SECRETS`` is
230
+ decommissioned in summer 2026.
231
+ 2. **Fallback** — if the dedicated command isn't shipped in the
232
+ installed sf CLI version (older releases), fall back to the
233
+ legacy ``sf org display --verbose`` with the
234
+ ``SF_TEMP_SHOW_SECRETS=true`` env var that ``run_sf`` injects
235
+ unconditionally. The fallback is detected by the redaction
236
+ placeholder appearing in the ``accessToken`` field — exact match
237
+ on the substring ``show-access-token`` (see
238
+ ``_REDACTION_MARKER_FRAGMENT``).
239
+
240
+ sf_cli.run_sf already redacts stderr on failure paths. Any
241
+ exception surfaces as `AuthRequired` / `SfCliError`; caller routes
242
+ through `_emit_fail`.
243
+ """
244
+ display_data = run_sf("org_display", ORG_ALIAS=org_alias)
245
+ display_result = display_data.get("result") or {}
246
+ instance_url = display_result.get("instanceUrl") or ""
247
+ if not instance_url:
248
+ raise AuthRequired(
249
+ "sf org display returned an incomplete payload (missing instanceUrl)"
250
+ )
251
+
252
+ # Primary path: dedicated command. Catches both the unknown-command
253
+ # case (older sf CLI) and any AuthRequired surfaced from the recipe.
254
+ try:
255
+ token_data = run_sf("show_access_token", ORG_ALIAS=org_alias)
256
+ except SfCliError:
257
+ # Older sf CLI versions emit "is not a sf command" on stderr; the
258
+ # recipe surfaces that as SfCliError. Fall back to the
259
+ # SF_TEMP_SHOW_SECRETS path via the org_display payload we
260
+ # already have.
261
+ access_token = display_result.get("accessToken") or ""
262
+ else:
263
+ token_result = token_data.get("result") or {}
264
+ access_token = token_result.get("accessToken") or ""
265
+
266
+ # Defensive fallback: if the dedicated command silently returned an
267
+ # empty token OR sf CLI redacted the org_display token to the
268
+ # placeholder, try the org_display payload directly. SF_TEMP_SHOW_SECRETS
269
+ # is set unconditionally by run_sf so this works as long as the env
270
+ # var is still honoured by the installed sf CLI.
271
+ if not access_token or _REDACTION_MARKER_FRAGMENT in access_token:
272
+ legacy_token = display_result.get("accessToken") or ""
273
+ if legacy_token and _REDACTION_MARKER_FRAGMENT not in legacy_token:
274
+ access_token = legacy_token
275
+
276
+ if not access_token or _REDACTION_MARKER_FRAGMENT in access_token:
277
+ raise AuthRequired(
278
+ "could not retrieve a usable access token via sf org auth "
279
+ "show-access-token (primary) or sf org display (fallback); "
280
+ "ensure sf CLI is logged in for this org and either the "
281
+ "dedicated command is available or SF_TEMP_SHOW_SECRETS is "
282
+ "still honoured."
283
+ )
284
+
285
+ return instance_url, access_token
286
+
287
+
288
+ def _derive_org_ids(org_alias: str) -> Tuple[str, str, str]:
289
+ """Run `sf org display --json` once more for org_id_15 + org_id_18 +
290
+ api_version.
291
+
292
+ Reused call: the second `sf org display` is cheap and keeps the
293
+ creds-resolve + org-ids functions uncoupled. When a run passes both
294
+ through together, the overhead is two spawn()s not one — fine given
295
+ the whole pipeline is O(seconds).
296
+
297
+ Returns (org_id_15, org_id_18, api_version) — all strings. api_version
298
+ matches `vNN.N` (validated by probe_channels' path builder downstream).
299
+
300
+ Gap 3 fix (2026-05-05): returns the 18-char id as well so downstream
301
+ emit helpers can populate the RESULT-block `ORG_ID_18` field. The
302
+ 18-char value comes straight from `sf org display`; we do NOT compute
303
+ it from the 15-char prefix.
304
+ """
305
+ data = run_sf("org_display", ORG_ALIAS=org_alias)
306
+ result = data.get("result") or {}
307
+ org_id_18 = result.get("id") or ""
308
+ # SF org id is 18 chars; the 15-char slice is the stable prefix used
309
+ # everywhere in this skill. Fail fast if shorter.
310
+ if len(org_id_18) < 15:
311
+ raise SfCliError(f"sf org display returned malformed id (len={len(org_id_18)})")
312
+ org_id_15 = org_id_18[:15]
313
+ api_version_raw = str(result.get("apiVersion") or "")
314
+ # apiVersion from sf CLI is "60.0" shape; our validator requires "v60.0".
315
+ api_version = api_version_raw if api_version_raw.startswith("v") else f"v{api_version_raw}"
316
+ return org_id_15, org_id_18, api_version
317
+
318
+
319
+ # ---------------------------------------------------------------------------
320
+ # Phase 4: bot resolution (in-process; Data API via fetch_soql)
321
+ # ---------------------------------------------------------------------------
322
+
323
+
324
+ def _resolve_bot(
325
+ agent_api_name: str,
326
+ explicit_version: str | None,
327
+ creds_provider: Callable[[], Tuple[str, str]],
328
+ refresh_fn: Callable[[], Tuple[str, str]],
329
+ *,
330
+ api_version: str,
331
+ ) -> dict | None:
332
+ """Resolve (bot_id, version, master_label, planner_name, bot_def_details).
333
+
334
+ Returns a dict with:
335
+ bot_id, version, master_label, version_auto_picked (bool),
336
+ bot_definition (dict row from BotDefinition details query),
337
+ all_versions (list of {version, status}) — retained for error ctx.
338
+
339
+ Returns None on AGENT_NOT_FOUND. Caller distinguishes by checking the
340
+ absence — not by catching an exception — to keep the error-emit path
341
+ a flat if-chain.
342
+
343
+ `api_version` is threaded in from
344
+ `_derive_org_ids`. The Data-API helpers require it — see
345
+ `rest_client.data_query` for why the old hardcoded `v60.0` was
346
+ wrong (real orgs run v66 and expose fields v60 does not).
347
+ """
348
+ versions = fetch_bot_versions(
349
+ agent_api_name, creds_provider,
350
+ api_version=api_version, on_401_refresh=refresh_fn,
351
+ )
352
+ if not versions:
353
+ return None
354
+
355
+ # Natural-key sort: v10 > v9 > v2 > v1. Copy the scheme from
356
+ # resolve_bot.py so multi-version bots rank consistently across the
357
+ # in-process + shell-out entry points.
358
+ def _natural_key(v: dict) -> list:
359
+ import re
360
+ dn = v.get("DeveloperName") or ""
361
+ return [int(p) if p.isdigit() else p for p in re.split(r"(\d+)", dn)]
362
+
363
+ versions.sort(key=_natural_key, reverse=True)
364
+
365
+ picked = None
366
+ if explicit_version:
367
+ for v in versions:
368
+ if v.get("DeveloperName") == explicit_version:
369
+ picked = v
370
+ break
371
+ version_auto_picked = False
372
+ else:
373
+ for v in versions:
374
+ if v.get("Status") == "Active":
375
+ picked = v
376
+ break
377
+ version_auto_picked = True
378
+
379
+ if not picked:
380
+ # Signal "version miss" distinctly from "bot miss". Caller emits
381
+ # STATUS=AGENT_VERSION_NOT_FOUND with AVAILABLE_VERSIONS.
382
+ return {
383
+ "bot_id": "",
384
+ "version": explicit_version or "",
385
+ "master_label": "",
386
+ "version_auto_picked": False,
387
+ "all_versions": [
388
+ {
389
+ "version": v.get("DeveloperName") or "",
390
+ "status": v.get("Status") or "",
391
+ }
392
+ for v in versions
393
+ ],
394
+ "_version_not_found": True,
395
+ }
396
+
397
+ bot_id = picked.get("BotDefinitionId") or ""
398
+ bd_node = picked.get("BotDefinition") or {}
399
+ master_label = bd_node.get("MasterLabel") or ""
400
+ chosen_version = picked.get("DeveloperName") or ""
401
+
402
+ # Phase 2 Batch 1: pull BotDefinition metadata once for the tree's
403
+ # `agent` block. Non-fatal if the second query fails — tree falls
404
+ # back to defaults.
405
+ try:
406
+ bot_def = fetch_bot_definition_details(
407
+ agent_api_name, creds_provider,
408
+ api_version=api_version, on_401_refresh=refresh_fn,
409
+ )
410
+ except (RestClientError, SoqlParamError):
411
+ bot_def = None
412
+
413
+ # Planner-name resolution moved to Wave A — `fetch_planner_definition`
414
+ # now takes (agent_api_name, chosen_version) and performs a chain-LIKE
415
+ # lookup (`<agent>%\_<vN>`). The canonical planner DeveloperName comes
416
+ # back on the row and propagates downstream via the bundle join.
417
+ return {
418
+ "bot_id": bot_id,
419
+ "version": chosen_version,
420
+ "master_label": master_label,
421
+ "version_auto_picked": version_auto_picked,
422
+ "bot_definition": bot_def or {},
423
+ }
424
+
425
+
426
+ # ---------------------------------------------------------------------------
427
+ # Phase 5: cache check
428
+ # ---------------------------------------------------------------------------
429
+
430
+
431
+ def _cache_is_fresh(cache_dir: Path) -> dict | None:
432
+ """Return the manifest dict if the cache is hot + fresh, else None.
433
+
434
+ Checks: manifest exists, schema_version matches, TTL not expired,
435
+ data_path is a real file. Any failure degrades to `None` so the
436
+ caller falls through to the pipeline-run path.
437
+
438
+ Mirrors cache_check.py's shell-level logic; duplicated in-process so
439
+ main.py can branch without shelling out.
440
+ """
441
+ import datetime as dt
442
+
443
+ manifest_path = cache_dir / "manifest.json"
444
+ if not manifest_path.is_file():
445
+ return None
446
+ try:
447
+ manifest = json.loads(manifest_path.read_text())
448
+ except (OSError, json.JSONDecodeError):
449
+ return None
450
+
451
+ if str(manifest.get("schema_version") or "0") != SCHEMA_VERSION:
452
+ return None
453
+
454
+ data_path_s = manifest.get("data_path") or ""
455
+ if not data_path_s or not Path(data_path_s).is_file():
456
+ return None
457
+
458
+ try:
459
+ built = dt.datetime.fromisoformat(
460
+ (manifest.get("built_at_utc") or "").replace("Z", "+00:00")
461
+ )
462
+ except ValueError:
463
+ return None
464
+
465
+ age_days = (dt.datetime.now(dt.timezone.utc) - built).days
466
+ ttl = int(manifest.get("ttl_days") or CACHE_TTL_DAYS)
467
+ if age_days > ttl:
468
+ return None
469
+
470
+ return manifest
471
+
472
+
473
+ # ---------------------------------------------------------------------------
474
+ # Phase 6: Wave A
475
+ # ---------------------------------------------------------------------------
476
+
477
+
478
+ def _run_wave_a(
479
+ agent_api_name: str,
480
+ version: str | None,
481
+ creds_provider: Callable[[], Tuple[str, str]],
482
+ refresh_fn: Callable[[], Tuple[str, str]],
483
+ *,
484
+ api_version: str,
485
+ parallelism: int = 5,
486
+ ) -> dict | None:
487
+ """Run the 7-query GenAi normalized DAG in layered parallel steps.
488
+
489
+ A1 resolves the live `GenAiPlannerDefinition` from (agent_api_name,
490
+ version) via a chain-LIKE lookup — Agentforce's accretive planner
491
+ naming (v1=`<Agent>`, v2=`<Agent>_v2`, v3=`<Agent>_v2_v3`, ...) means
492
+ (agent, version) alone is the only reliable key. The resolved row's
493
+ `DeveloperName` is the canonical planner_name that propagates
494
+ downstream via the bundle join in `_join_wave_a_to_bundle`.
495
+
496
+ Returns a dict:
497
+ {
498
+ "planner": {...},
499
+ "plugins": [...], # A2
500
+ "bundle_functions_join": [...], # A3
501
+ "functions": [...], # A4
502
+ "instructions": [...], # A5
503
+ "plugin_functions_join": [...], # A6
504
+ "attrs": [...], # A7
505
+ "unresolved": [...], # per-channel A2..A6 failures
506
+ }
507
+ Returns None if A1 yields no planner row — caller emits a clean
508
+ error instead of failing later in the join.
509
+
510
+ Failures:
511
+ * RestClientError / HTTPError on A1 → propagates. No graceful path
512
+ when the planner itself is unreachable.
513
+ * A2..A6 failures: one failure in a parallel layer doesn't abort
514
+ the layer (fetch_bodies_parallel's contract). The failed channel
515
+ yields an empty data list AND an entry in `unresolved` keyed by
516
+ channel with reason `wave-a-<channel>-failed:<redacted>`. The
517
+ caller folds these into `tree["_unresolved"]` so STATUS flips
518
+ to PARTIAL_OK.
519
+ """
520
+ # A1 — scalar, no parallelism. api_version threads through
521
+ # every fetcher; see module docstring + fetch_soql.py.
522
+ planner = fetch_planner_definition(
523
+ agent_api_name, version, creds_provider,
524
+ api_version=api_version, on_401_refresh=refresh_fn,
525
+ )
526
+ if not planner:
527
+ return None
528
+
529
+ planner_id = planner.get("Id")
530
+ if not planner_id:
531
+ # Planner row missing Id — malformed response. Treat as miss.
532
+ return None
533
+
534
+ unresolved: list[dict] = []
535
+
536
+ # Layer 2: A2 + A3 in parallel
537
+ layer2 = fetch_bodies_parallel(
538
+ [
539
+ partial(
540
+ fetch_plugins_by_planner,
541
+ planner_id, creds_provider,
542
+ api_version=api_version, on_401_refresh=refresh_fn,
543
+ ),
544
+ partial(
545
+ fetch_planner_bundle_functions,
546
+ planner_id, creds_provider,
547
+ api_version=api_version, on_401_refresh=refresh_fn,
548
+ ),
549
+ ],
550
+ max_workers=parallelism,
551
+ )
552
+ plugins = layer2[0][1] if layer2[0][0] else []
553
+ bundle_functions_join = layer2[1][1] if layer2[1][0] else []
554
+ for channel, (ok, r) in zip(("plugins", "bundle-functions"), layer2):
555
+ if not ok:
556
+ entry = {
557
+ "kind": "WAVE_A",
558
+ "channel": channel,
559
+ "reason": f"wave-a-{channel}-failed:{redact_error(r)}",
560
+ }
561
+ preview = getattr(r, "_response_body_preview", None)
562
+ if preview:
563
+ entry["response_body_preview"] = preview
564
+ unresolved.append(entry)
565
+
566
+ plugin_ids = [p.get("Id") for p in plugins if p.get("Id")]
567
+
568
+ # Layer 3: A4 + A5 + A6 in parallel
569
+ layer3 = fetch_bodies_parallel(
570
+ [
571
+ partial(
572
+ fetch_functions_by_plugins,
573
+ plugin_ids, creds_provider,
574
+ api_version=api_version, on_401_refresh=refresh_fn,
575
+ ),
576
+ partial(
577
+ fetch_plugin_instructions,
578
+ plugin_ids, creds_provider,
579
+ api_version=api_version, on_401_refresh=refresh_fn,
580
+ ),
581
+ partial(
582
+ fetch_plugin_functions,
583
+ plugin_ids, creds_provider,
584
+ api_version=api_version, on_401_refresh=refresh_fn,
585
+ ),
586
+ ],
587
+ max_workers=parallelism,
588
+ )
589
+ functions = layer3[0][1] if layer3[0][0] else []
590
+ instructions = layer3[1][1] if layer3[1][0] else []
591
+ plugin_functions_join = layer3[2][1] if layer3[2][0] else []
592
+ for channel, (ok, r) in zip(
593
+ ("functions", "instructions", "plugin-functions"), layer3,
594
+ ):
595
+ if not ok:
596
+ entry = {
597
+ "kind": "WAVE_A",
598
+ "channel": channel,
599
+ "reason": f"wave-a-{channel}-failed:{redact_error(r)}",
600
+ }
601
+ preview = getattr(r, "_response_body_preview", None)
602
+ if preview:
603
+ entry["response_body_preview"] = preview
604
+ unresolved.append(entry)
605
+
606
+ # Layer 4: A7 alone, parent_ids = function_ids. Planner-level attrs
607
+ # returned 0 rows live (a planner never carries direct attrs) so the
608
+ # prior `function_ids ∪ {planner_id}` widened the IN-list for no
609
+ # payoff. Keep the list minimal; dedupe defensively in case a
610
+ # function Id repeats across bundles.
611
+ parent_ids = list(dict.fromkeys(
612
+ f.get("Id") for f in functions if f.get("Id")
613
+ ))
614
+ try:
615
+ attrs = fetch_planner_attrs(
616
+ parent_ids, creds_provider,
617
+ api_version=api_version, on_401_refresh=refresh_fn,
618
+ )
619
+ except (RestClientError, SoqlParamError):
620
+ attrs = []
621
+
622
+ return {
623
+ "planner": planner,
624
+ "plugins": plugins,
625
+ "bundle_functions_join": bundle_functions_join,
626
+ "functions": functions,
627
+ "instructions": instructions,
628
+ "plugin_functions_join": plugin_functions_join,
629
+ "attrs": attrs,
630
+ "unresolved": unresolved,
631
+ }
632
+
633
+
634
+ # ---------------------------------------------------------------------------
635
+ # Phase 7: join Wave A → _bundle_parsed.json shape
636
+ # ---------------------------------------------------------------------------
637
+
638
+
639
+ def _join_wave_a_to_bundle(
640
+ bot_info: dict,
641
+ wave_a: dict,
642
+ ) -> dict:
643
+ """Reshape normalized Wave-A rows into the bundle dict parse_wave expects.
644
+
645
+ `parse_bundle.py` wrote XML-shaped bundles keyed by:
646
+ plannerType, plannerName, generation, description, masterLabel,
647
+ topics[{name, actions[{name, invocationTarget, invocationTargetType, ...}]}],
648
+ plannerActions[{...}]
649
+
650
+ We reconstruct that shape from the Tooling rows so parse_wave's
651
+ `init_tree` + `build_root_children` accept the dict unchanged.
652
+ """
653
+ planner = wave_a["planner"]
654
+ planner_type = planner.get("PlannerType") or ""
655
+ generation = classify_generation(planner_type)
656
+
657
+ functions_by_id = {f.get("Id"): f for f in wave_a["functions"] if f.get("Id")}
658
+ # Plugin join: map plugin_id → ordered function_ids
659
+ plugin_fn_map: dict[str, list[str]] = {}
660
+ for row in wave_a["plugin_functions_join"]:
661
+ pid = row.get("PluginId")
662
+ fn_id = row.get("Function")
663
+ if pid and fn_id:
664
+ plugin_fn_map.setdefault(pid, []).append(fn_id)
665
+
666
+ def _action_dict(fn: dict) -> dict:
667
+ """Shape a GenAiFunctionDefinition row as a bundle-action dict."""
668
+ return {
669
+ "name": fn.get("DeveloperName") or fn.get("Id") or "",
670
+ "localDeveloperName": fn.get("LocalDeveloperName"),
671
+ "masterLabel": fn.get("MasterLabel"),
672
+ "description": fn.get("Description"),
673
+ "invocationTarget": fn.get("InvocationTarget"),
674
+ "invocationTargetType": (fn.get("InvocationTargetType") or "").strip(),
675
+ "source": fn.get("Source"),
676
+ }
677
+
678
+ topics = []
679
+ for plugin in wave_a["plugins"]:
680
+ pid = plugin.get("Id")
681
+ fn_ids = plugin_fn_map.get(pid, [])
682
+ actions = [
683
+ _action_dict(functions_by_id[fid])
684
+ for fid in fn_ids if fid in functions_by_id
685
+ ]
686
+ topics.append({
687
+ "name": plugin.get("DeveloperName") or "",
688
+ "localDeveloperName": plugin.get("LocalDeveloperName"),
689
+ "masterLabel": plugin.get("MasterLabel"),
690
+ "description": plugin.get("Description"),
691
+ "canEscalate": bool(plugin.get("CanEscalate")),
692
+ "pluginType": plugin.get("PluginType"),
693
+ "actions": actions,
694
+ })
695
+
696
+ # A planner never has direct functions (user invariant, verified
697
+ # against my-org-alias). The previous `PlannerId`-leg query leaked
698
+ # orphan rows (e.g. `AnswerQuestionsWithKnowledge_*`) as root-level
699
+ # children. Key retained for downstream compatibility with callers
700
+ # that read `bundle.get("plannerActions", [])` (parse_wave, a few
701
+ # _route / _normalize paths); always emits an empty list now.
702
+ return {
703
+ "plannerType": planner_type,
704
+ "plannerName": planner.get("DeveloperName"),
705
+ "generation": generation,
706
+ "description": planner.get("Description"),
707
+ "masterLabel": planner.get("MasterLabel"),
708
+ "topics": topics,
709
+ "plannerActions": [],
710
+ }
711
+
712
+
713
+ # ---------------------------------------------------------------------------
714
+ # Phase 8: Wave B (Flow + Apex body fetches)
715
+ # ---------------------------------------------------------------------------
716
+
717
+
718
+ def _collect_wave_b_targets(bundle_parsed: dict) -> dict[str, list[str]]:
719
+ """Walk topics + plannerActions. Return {kind: [invocation_target, ...]}.
720
+
721
+ Deduplicates per-kind. Caller routes each kind through the appropriate
722
+ fetch_soql helper.
723
+ """
724
+ apex_names: set[str] = set()
725
+ apex_ids: set[str] = set()
726
+ flow_names: set[str] = set()
727
+ flow_ids: set[str] = set()
728
+ # Bug 1 fix (2026-05-05): prompt-template targets can arrive as either
729
+ # DeveloperNames (classic) OR 0hf-prefix Ids (observed in live orgs —
730
+ # GenAiFunctionDefinition.InvocationTarget sometimes stores the Id).
731
+ # Route to separate buckets so the Id bucket can be resolved → DevName
732
+ # by _normalize_prompt_template_id_targets before Wave B retrieve.
733
+ prompt_template_ids: set[str] = set()
734
+ unresolved: list[dict] = []
735
+
736
+ def _route(target: str, ttype: str) -> None:
737
+ t = (ttype or "").lower()
738
+ if not target:
739
+ return
740
+ # Bug 1 fix: prompt-template targets can arrive as either
741
+ # DeveloperNames (classic) OR 0hf-prefix Ids. The Metadata API
742
+ # retrieve expects DeveloperName; an Id sent verbatim returns
743
+ # zero members and the target stays in _pending_fetches forever.
744
+ # Route 0hf Ids into a separate bucket for post-lookup rewrite
745
+ # via _normalize_prompt_template_id_targets (parallel to the
746
+ # existing _normalize_flow_id_targets pattern).
747
+ if t in ("prompttemplate", "generatepromptresponse") or t.startswith("prompt") or t.startswith("genai"):
748
+ if looks_like_sf_id(target) and target[:3].lower() == "0hf":
749
+ prompt_template_ids.add(target)
750
+ return
751
+ # bundle-declared kinds that never carry an Id.
752
+ # Standard actions store their identifier (not an SF Id) directly
753
+ # in InvocationTarget. Skip the ID router entirely — routing them
754
+ # through resolve_or_unresolved would pollute `_unresolved` with
755
+ # misleading "invalid-id-format" entries.
756
+ if t == "standardinvocableaction":
757
+ return
758
+ # for flow/apex, only consult the ID router
759
+ # when the target actually looks like a Salesforce Id. Classic
760
+ # DeveloperNames (e.g. `MyFlow`, `AGNT_Foo`) don't
761
+ # match the Id shape and used to land in _unresolved with reason
762
+ # `invalid-id-format` — noise. Short-circuit: if it's not an Id
763
+ # shape, skip the router and trust the invocationTargetType.
764
+ if t in ("flow", "apex") and looks_like_sf_id(target):
765
+ kind, _channel = resolve_or_unresolved(target, unresolved)
766
+ if kind == "apex":
767
+ apex_ids.add(target)
768
+ return
769
+ if kind in ("flow_definition", "flow_version"):
770
+ flow_ids.add(target)
771
+ return
772
+ # Unknown Id prefix: resolve_or_unresolved already appended
773
+ # to `unresolved` with reason "unknown-id-prefix:..." — fall
774
+ # through; the target stays unrouted and surfaces there.
775
+ return
776
+ # Classic path: InvocationTarget is a DeveloperName.
777
+ if t == "apex":
778
+ apex_names.add(target)
779
+ elif t == "flow":
780
+ flow_names.add(target)
781
+ # Any other unrecognized type: silently skip. parse_wave will
782
+ # classify the node as UNKNOWN and it surfaces via _kind_counts.
783
+
784
+ for topic in bundle_parsed.get("topics", []) or []:
785
+ for a in topic.get("actions", []) or []:
786
+ _route(a.get("invocationTarget") or "",
787
+ a.get("invocationTargetType") or "")
788
+ for a in bundle_parsed.get("plannerActions", []) or []:
789
+ _route(a.get("invocationTarget") or "",
790
+ a.get("invocationTargetType") or "")
791
+
792
+ return {
793
+ "apex_names": sorted(apex_names),
794
+ "apex_ids": sorted(apex_ids),
795
+ "flow_names": sorted(flow_names),
796
+ "flow_ids": sorted(flow_ids),
797
+ "prompt_template_ids": sorted(prompt_template_ids),
798
+ "_unresolved": unresolved,
799
+ }
800
+
801
+
802
+ def _fetch_wave_b_by_names(
803
+ *,
804
+ apex_names: list[str],
805
+ apex_ids: list[str],
806
+ flow_names: list[str],
807
+ flow_ids: list[str],
808
+ prompt_template_ids: list[str] | None = None,
809
+ creds_provider: Callable[[], Tuple[str, str]],
810
+ refresh_fn: Callable[[], Tuple[str, str]],
811
+ api_version: str,
812
+ org_alias: str,
813
+ parallelism: int = 5,
814
+ ) -> dict:
815
+ """Fire body fetches for an explicit set of Apex/Flow identifiers.
816
+
817
+ Factored out of `_run_wave_b` so the iterative Wave B caller
818
+ (`_iterate_wave_b`) can reuse the same shape on subflow rounds —
819
+ every round's fetch concurrency + error handling semantics must
820
+ match the initial round exactly (same parallel layer, same
821
+ unresolved bookkeeping).
822
+
823
+ Returns a dict with:
824
+ apex_rows: list of ApexClass records (Name keyed)
825
+ flow_def_rows: list of FlowDefinition records (DeveloperName keyed)
826
+ flow_metadata: dict {version_id: Flow record}
827
+ unresolved: list of {id, reason} from fetch failures
828
+
829
+ Any empty input list short-circuits that branch — callers can pass
830
+ subsets safely (e.g. subflow rounds typically pass only flow_names).
831
+ """
832
+ unresolved: list[dict] = []
833
+
834
+ # First hop: resolve IDs back to names where applicable. The results
835
+ # merge into the same rowsets the name-keyed path produces.
836
+ # api_version threads into every fetch call.
837
+ if apex_ids:
838
+ try:
839
+ apex_by_id_rows = fetch_apex_bodies_by_ids(
840
+ apex_ids, creds_provider,
841
+ api_version=api_version, on_401_refresh=refresh_fn,
842
+ )
843
+ except (RestClientError, SoqlParamError) as e:
844
+ unresolved.append({"kind": "APEX", "reason": f"apex-by-id-failed:{redact_error(e)}"})
845
+ apex_by_id_rows = []
846
+ else:
847
+ apex_by_id_rows = []
848
+
849
+ if flow_ids:
850
+ try:
851
+ flow_def_by_id_rows = fetch_flow_definition_by_ids(
852
+ flow_ids, creds_provider,
853
+ api_version=api_version, on_401_refresh=refresh_fn,
854
+ )
855
+ except (RestClientError, SoqlParamError) as e:
856
+ unresolved.append({"kind": "FLOW", "reason": f"flow-def-by-id-failed:{redact_error(e)}"})
857
+ flow_def_by_id_rows = []
858
+ else:
859
+ flow_def_by_id_rows = []
860
+
861
+ # Bug 1 fix: GenAiPromptTemplate is NOT SOQL-queryable (not on Tooling,
862
+ # not on Data API). The only way to resolve Id → DeveloperName is
863
+ # `sf org list metadata -m GenAiPromptTemplate`. We list every prompt
864
+ # template in the org, build an Id → fullName map, filter to the Ids
865
+ # we care about, and project to the same {Id, DeveloperName} shape the
866
+ # rest of the pipeline expects.
867
+ #
868
+ # Failure is non-fatal — the Ids stay in the bucket and surface in
869
+ # `_pending_fetches` rather than masking the real issue.
870
+ if prompt_template_ids:
871
+ try:
872
+ rows = list_prompt_template_metadata(org_alias)
873
+ except (SfCliError, AuthRequired) as e:
874
+ unresolved.append({
875
+ "kind": "PROMPT_TEMPLATE",
876
+ "reason": f"prompt-template-listmetadata-failed:{redact_error(e)}",
877
+ })
878
+ rows = []
879
+ wanted = set(prompt_template_ids)
880
+ prompt_template_id_rows = [
881
+ {"Id": r["id"], "DeveloperName": r["fullName"]}
882
+ for r in rows
883
+ if isinstance(r, dict) and r.get("id") in wanted and r.get("fullName")
884
+ ]
885
+ else:
886
+ prompt_template_id_rows = []
887
+
888
+ # Parallel layer: apex-by-name + flow-def-by-name. Empty name lists
889
+ # still produce a task, but the downstream fetcher short-circuits on
890
+ # empty input — the overhead is a single worker dispatch which is
891
+ # cheaper than conditionally building the task list.
892
+ name_layer = fetch_bodies_parallel(
893
+ [
894
+ partial(
895
+ fetch_apex_bodies_by_names,
896
+ apex_names, creds_provider,
897
+ api_version=api_version, on_401_refresh=refresh_fn,
898
+ ),
899
+ partial(
900
+ fetch_flow_definition_ids_by_names,
901
+ flow_names, creds_provider,
902
+ api_version=api_version, on_401_refresh=refresh_fn,
903
+ ),
904
+ ],
905
+ max_workers=parallelism,
906
+ )
907
+ apex_name_rows = name_layer[0][1] if name_layer[0][0] else []
908
+ flow_def_name_rows = name_layer[1][1] if name_layer[1][0] else []
909
+ # Bug D.1 fix: include the response body preview captured by
910
+ # rest_client._query_once when the failure was an HTTPError. Without
911
+ # it, all wave-B 400s collapse to "HTTP Error 400: Bad Request" with
912
+ # no signal about which name caused the malformed query. Falls back
913
+ # to None (existing shape) for non-HTTPError failures.
914
+ for ok, r in (name_layer[0], name_layer[1]):
915
+ if not ok:
916
+ entry = {"kind": "APEX_OR_FLOW", "reason": f"wave-b-batch-failed:{redact_error(r)}"}
917
+ preview = getattr(r, "_response_body_preview", None)
918
+ if preview:
919
+ entry["response_body_preview"] = preview
920
+ unresolved.append(entry)
921
+
922
+ apex_rows = [*apex_name_rows, *apex_by_id_rows]
923
+ flow_def_rows = [*flow_def_name_rows, *flow_def_by_id_rows]
924
+
925
+ # Second hop: one Flow.Metadata single-row call per ActiveVersionId.
926
+ # Parallelized via fetch_bodies_parallel.
927
+ version_ids = [
928
+ r.get("ActiveVersionId") for r in flow_def_rows
929
+ if r.get("ActiveVersionId")
930
+ ]
931
+ metadata_tasks = [
932
+ partial(
933
+ fetch_flow_metadata,
934
+ vid, creds_provider,
935
+ api_version=api_version, on_401_refresh=refresh_fn,
936
+ )
937
+ for vid in version_ids
938
+ ]
939
+ metadata_results = fetch_bodies_parallel(
940
+ metadata_tasks, max_workers=parallelism,
941
+ )
942
+ flow_metadata: dict[str, dict] = {}
943
+ for vid, (ok, result_or_exc) in zip(version_ids, metadata_results):
944
+ if ok and isinstance(result_or_exc, dict):
945
+ flow_metadata[vid] = result_or_exc
946
+ elif not ok:
947
+ unresolved.append({
948
+ "kind": "FLOW",
949
+ "version_id": vid,
950
+ "reason": f"flow-metadata-failed:{redact_error(result_or_exc)}",
951
+ })
952
+
953
+ return {
954
+ "apex_rows": apex_rows,
955
+ "flow_def_rows": flow_def_rows,
956
+ "flow_metadata": flow_metadata,
957
+ "prompt_template_id_rows": prompt_template_id_rows,
958
+ "unresolved": unresolved,
959
+ }
960
+
961
+
962
+ def _run_wave_b(
963
+ bundle_parsed: dict,
964
+ creds_provider: Callable[[], Tuple[str, str]],
965
+ refresh_fn: Callable[[], Tuple[str, str]],
966
+ *,
967
+ api_version: str,
968
+ org_alias: str,
969
+ parallelism: int = 5,
970
+ ) -> dict:
971
+ """Fire body fetches for every Apex/Flow target in the bundle.
972
+
973
+ Returns a dict with:
974
+ apex_rows: list of ApexClass records (Name keyed)
975
+ flow_def_rows: list of FlowDefinition records (DeveloperName keyed)
976
+ flow_metadata: dict {version_id: Flow record}
977
+ unresolved: list of {id, reason} from NGA ID routing
978
+
979
+ Only covers the top-level identifiers enumerated directly in
980
+ `bundle_parsed`. Subflows referenced inside fetched Flow.Metadata
981
+ bodies (e.g. shared utility flows like `handleFlowFault`) are
982
+ discovered AFTER this function returns and need a second round of
983
+ fetching — see `_iterate_wave_b`.
984
+ """
985
+ targets = _collect_wave_b_targets(bundle_parsed)
986
+
987
+ fetched = _fetch_wave_b_by_names(
988
+ apex_names=targets["apex_names"],
989
+ apex_ids=targets["apex_ids"],
990
+ flow_names=targets["flow_names"],
991
+ flow_ids=targets["flow_ids"],
992
+ prompt_template_ids=targets.get("prompt_template_ids") or [],
993
+ creds_provider=creds_provider,
994
+ refresh_fn=refresh_fn,
995
+ api_version=api_version,
996
+ org_alias=org_alias,
997
+ parallelism=parallelism,
998
+ )
999
+
1000
+ # Merge the routing-layer unresolved entries (unknown-id-prefix, etc.)
1001
+ # with the fetch-layer ones. Order: routing first, fetch second — it's
1002
+ # the order they're discovered in the pipeline.
1003
+ fetched["unresolved"] = [*targets["_unresolved"], *fetched["unresolved"]]
1004
+ return fetched
1005
+
1006
+
1007
+ # ---------------------------------------------------------------------------
1008
+ # iterative Wave B for nested-subflow discovery
1009
+ # ---------------------------------------------------------------------------
1010
+
1011
+
1012
+ def _extract_refs_from_flow_metadata(
1013
+ flow_metadata: dict[str, dict],
1014
+ ) -> Tuple[set[str], set[str]]:
1015
+ """Scan fetched Flow.Metadata dicts for downstream subflow + apex refs.
1016
+
1017
+ Returns `(subflow_names, apex_names)` — both DeveloperName sets.
1018
+ Subsets of the data that `_build_flow_children` walks, narrowed to
1019
+ just the name-extraction we need before we have enough information
1020
+ to build the full child list.
1021
+
1022
+ The extractor is intentionally permissive: missing keys / non-dict
1023
+ entries / blank names all drop silently. Parsing shape mirrors the
1024
+ `Metadata.actionCalls[]` + `Metadata.subflows[]` layout documented
1025
+ in the fetch_flow_metadata docstring and exercised by the
1026
+ CLASSIC_FLOW_METADATA fixture.
1027
+
1028
+ Apex discovery from actionCalls is deliberate — a subflow body CAN
1029
+ reference a new Apex class the parent tree didn't see (actionType
1030
+ == "apex" && actionName == <new class>). Missing those means the
1031
+ iterated tree has unexpanded APEX leaves even after flows resolve.
1032
+ """
1033
+ subflow_names: set[str] = set()
1034
+ apex_names: set[str] = set()
1035
+ for record in (flow_metadata or {}).values():
1036
+ if not isinstance(record, dict):
1037
+ continue
1038
+ md = record.get("Metadata")
1039
+ if not isinstance(md, dict):
1040
+ continue
1041
+ for ac in md.get("actionCalls") or []:
1042
+ if not isinstance(ac, dict):
1043
+ continue
1044
+ if (ac.get("actionType") or "") == "apex":
1045
+ nm = ac.get("actionName") or ""
1046
+ if nm:
1047
+ apex_names.add(nm)
1048
+ for sub in md.get("subflows") or []:
1049
+ if not isinstance(sub, dict):
1050
+ continue
1051
+ nm = sub.get("flowName") or ""
1052
+ if nm:
1053
+ subflow_names.add(nm)
1054
+ return subflow_names, apex_names
1055
+
1056
+
1057
+ def _iterate_wave_b(
1058
+ initial_wave_b: dict,
1059
+ creds_provider: Callable[[], Tuple[str, str]],
1060
+ refresh_fn: Callable[[], Tuple[str, str]],
1061
+ *,
1062
+ api_version: str,
1063
+ org_alias: str,
1064
+ parallelism: int = 5,
1065
+ max_iterations: int = 5,
1066
+ ) -> dict:
1067
+ """Drive Wave B to fixed-point for nested subflow / apex discovery.
1068
+
1069
+ The initial `_run_wave_b` call only enumerates top-level flow refs
1070
+ from `bundle_parsed`. When those flow bodies reference subflows
1071
+ (via `Metadata.subflows[].flowName`) or new Apex classes (via
1072
+ `Metadata.actionCalls[]`), their bodies were never fetched — so
1073
+ `_build_flow_children` would shape them as leaf nodes with no
1074
+ children even though the real subtree has content.
1075
+
1076
+ Per round:
1077
+ 1. Extract subflow + apex refs from the current flow_metadata.
1078
+ 2. Diff against already-fetched DeveloperNames.
1079
+ 3. If diff empty → converged, return.
1080
+ 4. Fetch the diff via `_fetch_wave_b_by_names`.
1081
+ 5. Merge into the running wave_b dict.
1082
+ 6. Repeat.
1083
+
1084
+ Safety:
1085
+ * `max_iterations=5` — empirically 2-3 is enough on real bots
1086
+ (handleFlowFault etc.). Hit the cap → remaining unfetched names
1087
+ surface via parse_wave's `_pending_fetches.FLOW` (their names
1088
+ are never added to `visited_by_kind["FLOW"]` since they're
1089
+ absent from `flow_def_rows`) and a marker lands in `unresolved`
1090
+ for triage.
1091
+ * Fetch failures in a round are tolerated by `_fetch_wave_b_by_names`
1092
+ — the affected names simply don't make it into `flow_def_rows`
1093
+ and naturally surface as pending.
1094
+
1095
+ Returns the (possibly enlarged) wave_b dict; caller mutates nothing.
1096
+ """
1097
+ if max_iterations <= 0:
1098
+ return initial_wave_b
1099
+
1100
+ # Running state: copy so callers see their original dict untouched.
1101
+ merged_apex_rows = list(initial_wave_b.get("apex_rows") or [])
1102
+ merged_flow_def_rows = list(initial_wave_b.get("flow_def_rows") or [])
1103
+ merged_flow_metadata: dict[str, dict] = dict(
1104
+ initial_wave_b.get("flow_metadata") or {}
1105
+ )
1106
+ merged_unresolved = list(initial_wave_b.get("unresolved") or [])
1107
+
1108
+ fetched_flow_names: set[str] = {
1109
+ r.get("DeveloperName") for r in merged_flow_def_rows
1110
+ if r.get("DeveloperName")
1111
+ }
1112
+ fetched_apex_names: set[str] = {
1113
+ r.get("Name") for r in merged_apex_rows if r.get("Name")
1114
+ }
1115
+
1116
+ for _round in range(max_iterations):
1117
+ subflow_names, apex_names = _extract_refs_from_flow_metadata(
1118
+ merged_flow_metadata
1119
+ )
1120
+ new_flow_names = sorted(subflow_names - fetched_flow_names)
1121
+ new_apex_names = sorted(apex_names - fetched_apex_names)
1122
+ if not new_flow_names and not new_apex_names:
1123
+ # Fixed-point reached.
1124
+ return {
1125
+ "apex_rows": merged_apex_rows,
1126
+ "flow_def_rows": merged_flow_def_rows,
1127
+ "flow_metadata": merged_flow_metadata,
1128
+ "prompt_template_id_rows": initial_wave_b.get(
1129
+ "prompt_template_id_rows"
1130
+ ) or [],
1131
+ "unresolved": merged_unresolved,
1132
+ }
1133
+
1134
+ round_result = _fetch_wave_b_by_names(
1135
+ apex_names=new_apex_names,
1136
+ apex_ids=[],
1137
+ flow_names=new_flow_names,
1138
+ flow_ids=[],
1139
+ creds_provider=creds_provider,
1140
+ refresh_fn=refresh_fn,
1141
+ api_version=api_version,
1142
+ org_alias=org_alias,
1143
+ parallelism=parallelism,
1144
+ )
1145
+ merged_apex_rows.extend(round_result["apex_rows"])
1146
+ merged_flow_def_rows.extend(round_result["flow_def_rows"])
1147
+ merged_flow_metadata.update(round_result["flow_metadata"])
1148
+ merged_unresolved.extend(round_result["unresolved"])
1149
+
1150
+ # Update fetched-name bookkeeping — we only track rows we
1151
+ # actually received (fetch failure ⇒ not fetched ⇒ will be
1152
+ # retried next round, bounded by the iteration cap).
1153
+ for r in round_result["flow_def_rows"]:
1154
+ nm = r.get("DeveloperName")
1155
+ if nm:
1156
+ fetched_flow_names.add(nm)
1157
+ for r in round_result["apex_rows"]:
1158
+ nm = r.get("Name")
1159
+ if nm:
1160
+ fetched_apex_names.add(nm)
1161
+
1162
+ # Iteration cap hit. Scan one more time to see what's still pending
1163
+ # so we can surface it clearly in `unresolved`. These names will also
1164
+ # land in `_pending_fetches.FLOW` via parse_wave's visited-vs-pending
1165
+ # diff (they're absent from flow_def_rows ⇒ absent from
1166
+ # visited_by_kind["FLOW"]).
1167
+ subflow_names, apex_names = _extract_refs_from_flow_metadata(
1168
+ merged_flow_metadata
1169
+ )
1170
+ still_pending_flows = sorted(subflow_names - fetched_flow_names)
1171
+ still_pending_apex = sorted(apex_names - fetched_apex_names)
1172
+ for nm in still_pending_flows:
1173
+ merged_unresolved.append({
1174
+ "kind": "FLOW",
1175
+ "api_name": nm,
1176
+ "reason": f"wave-b-iteration-cap:{max_iterations}-rounds-exhausted",
1177
+ })
1178
+ for nm in still_pending_apex:
1179
+ merged_unresolved.append({
1180
+ "kind": "APEX",
1181
+ "api_name": nm,
1182
+ "reason": f"wave-b-iteration-cap:{max_iterations}-rounds-exhausted",
1183
+ })
1184
+
1185
+ return {
1186
+ "apex_rows": merged_apex_rows,
1187
+ "flow_def_rows": merged_flow_def_rows,
1188
+ "flow_metadata": merged_flow_metadata,
1189
+ "prompt_template_id_rows": initial_wave_b.get(
1190
+ "prompt_template_id_rows"
1191
+ ) or [],
1192
+ "unresolved": merged_unresolved,
1193
+ }
1194
+
1195
+
1196
+ # ---------------------------------------------------------------------------
1197
+ # build flow_children from in-memory Wave B metadata
1198
+ # ---------------------------------------------------------------------------
1199
+
1200
+
1201
+ def _build_flow_children(
1202
+ flow_metadata: dict[str, dict],
1203
+ flow_def_rows: list[dict],
1204
+ ) -> dict[str, list[dict]]:
1205
+ """Produce `{flow_developer_name: [child_ref, ...]}` from Wave B data.
1206
+
1207
+ Mirrors the shape `parse_wave.harvest_waves` produces from on-disk
1208
+ flow XML, but sourced from the in-memory `Flow.Metadata` JSON that
1209
+ Wave B already fetched via the Tooling REST API (the `Metadata`
1210
+ complexvalue field decodes to a plain dict — see
1211
+ `fetch_flow_metadata` + test fixture `CLASSIC_FLOW_METADATA`). The
1212
+ shape parse_wave expects per child:
1213
+
1214
+ {"kind": "APEX", "api_name": <name>, "element_name": <elem>}
1215
+ {"kind": "PROMPT_TEMPLATE", "api_name": <name>, "element_name": <elem>}
1216
+ {"kind": "STANDARD_ACTION", "api_name": <name>, "element_name": <elem>,
1217
+ "invocation_type": <actionType>}
1218
+ {"kind": "FLOW", "api_name": <target_flow_name>,
1219
+ "element_name": <elem>}
1220
+ {"kind": "UNKNOWN", "api_name": <name>, "element_name": <elem>,
1221
+ "invocation_type": <actionType>}
1222
+
1223
+ Keying is by FlowDefinition.DeveloperName (not ActiveVersionId) —
1224
+ `walk_and_inflate` looks up by `leaf["api_name"]`, which the bundle
1225
+ populates with the Flow's DeveloperName.
1226
+
1227
+ Flows whose ActiveVersionId is missing (inactive / draft-only) or
1228
+ whose fetched metadata was None are silently skipped — they never
1229
+ had a body to walk. actionCall entries missing required fields
1230
+ (`actionType`, `actionName`, or `name`) degrade to UNKNOWN via
1231
+ `classify_action_call`, which already tolerates blanks. Subflow
1232
+ entries missing `flowName` are dropped entirely (no api_name to
1233
+ descend into).
1234
+ """
1235
+ import parse_wave
1236
+
1237
+ # Build ActiveVersionId → DeveloperName lookup. FlowDefinition rows with
1238
+ # no ActiveVersionId (inactive flows, or flows only materializing a
1239
+ # Latest version) skip this map — `flow_metadata` is keyed on
1240
+ # ActiveVersionId too, so they drop out symmetrically.
1241
+ version_to_name: dict[str, str] = {}
1242
+ for row in flow_def_rows or []:
1243
+ vid = row.get("ActiveVersionId")
1244
+ dev_name = row.get("DeveloperName")
1245
+ if vid and dev_name:
1246
+ version_to_name[vid] = dev_name
1247
+
1248
+ flow_children: dict[str, list[dict]] = {}
1249
+ for version_id, record in (flow_metadata or {}).items():
1250
+ flow_name = version_to_name.get(version_id)
1251
+ if not flow_name:
1252
+ # No matching FlowDefinition row — can't key the children list.
1253
+ continue
1254
+ if not isinstance(record, dict):
1255
+ continue
1256
+ md = record.get("Metadata") or {}
1257
+ if not isinstance(md, dict):
1258
+ continue
1259
+
1260
+ children: list[dict] = []
1261
+
1262
+ # actionCalls — each entry has `name` (element id), `actionType`,
1263
+ # `actionName`. `actionType`/`actionName` may be missing on edge
1264
+ # cases (flow authored against an older API version that omits
1265
+ # the field); classify_action_call tolerates empty strings and
1266
+ # will return UNKNOWN.
1267
+ for ac in md.get("actionCalls") or []:
1268
+ if not isinstance(ac, dict):
1269
+ continue
1270
+ element_name = ac.get("name")
1271
+ action_type = ac.get("actionType") or ""
1272
+ action_name = ac.get("actionName") or ""
1273
+ if not element_name:
1274
+ # An unnamed actionCall can't be addressed in the tree
1275
+ # view; drop rather than synthesize a placeholder.
1276
+ continue
1277
+ children.append(
1278
+ parse_wave.classify_action_call(action_type, action_name, element_name)
1279
+ )
1280
+
1281
+ # subflows — each has `name` (element id) + `flowName` (target).
1282
+ for sub in md.get("subflows") or []:
1283
+ if not isinstance(sub, dict):
1284
+ continue
1285
+ element_name = sub.get("name")
1286
+ target = sub.get("flowName")
1287
+ if not element_name or not target:
1288
+ continue
1289
+ children.append({
1290
+ "kind": "FLOW",
1291
+ "element_name": element_name,
1292
+ "api_name": target,
1293
+ })
1294
+
1295
+ flow_children[flow_name] = children
1296
+
1297
+ return flow_children
1298
+
1299
+
1300
+ # ---------------------------------------------------------------------------
1301
+ # Flow-ID → DeveloperName normalization
1302
+ # ---------------------------------------------------------------------------
1303
+
1304
+
1305
+ def _normalize_flow_id_targets(bundle_parsed: dict, flow_def_rows: list[dict]) -> None:
1306
+ """Rewrite action invocationTargets that are Flow IDs → DeveloperNames.
1307
+
1308
+ Mutates `bundle_parsed` in place. No-op when no flow_def_rows match.
1309
+
1310
+ Classic bots occasionally store 300Uv-prefix FlowDefinition IDs or
1311
+ 301-prefix Flow version IDs in `GenAiFunctionDefinition.InvocationTarget`
1312
+ instead of DeveloperNames. Wave B's FlowDefinition fetch (by-id branch)
1313
+ already resolved those IDs; the rows carry both Id + ActiveVersionId +
1314
+ DeveloperName. We build a bi-directional map (300-id → name, 301-id →
1315
+ name via ActiveVersionId) and rewrite every action whose target is a
1316
+ known ID.
1317
+
1318
+ Unmatched IDs (Flow genuinely not queryable or belongs to a managed
1319
+ package we can't see) stay as-is so the pipeline surfaces them in
1320
+ _pending_fetches rather than silently discarding.
1321
+ """
1322
+ # Build ID → DeveloperName lookup from both Id and ActiveVersionId keys.
1323
+ id_to_name: dict[str, str] = {}
1324
+ for row in flow_def_rows or []:
1325
+ dev_name = row.get("DeveloperName")
1326
+ if not dev_name:
1327
+ continue
1328
+ row_id = row.get("Id")
1329
+ if row_id:
1330
+ id_to_name[row_id] = dev_name
1331
+ active_ver = row.get("ActiveVersionId")
1332
+ if active_ver:
1333
+ id_to_name[active_ver] = dev_name
1334
+
1335
+ if not id_to_name:
1336
+ return
1337
+
1338
+ def _rewrite_action(action: dict) -> None:
1339
+ target = action.get("invocationTarget")
1340
+ ttype = (action.get("invocationTargetType") or "").strip().lower()
1341
+ if ttype != "flow" or not isinstance(target, str):
1342
+ return
1343
+ resolved = id_to_name.get(target)
1344
+ if resolved:
1345
+ # Preserve the original ID for traceability — consumers that
1346
+ # need it can still read `_original_invocation_target_id`.
1347
+ action["_original_invocation_target_id"] = target
1348
+ action["invocationTarget"] = resolved
1349
+
1350
+ for topic in bundle_parsed.get("topics") or []:
1351
+ for action in topic.get("actions") or []:
1352
+ _rewrite_action(action)
1353
+ for action in bundle_parsed.get("plannerActions") or []:
1354
+ _rewrite_action(action)
1355
+
1356
+
1357
+ def _normalize_prompt_template_id_targets(
1358
+ bundle_parsed: dict, prompt_template_rows: list[dict],
1359
+ ) -> None:
1360
+ """Rewrite action invocationTargets that are GenAiPromptTemplate Ids
1361
+ (0hf-prefix) → DeveloperNames.
1362
+
1363
+ Bug 1 fix (2026-05-05): when GenAiFunctionDefinition.InvocationTarget
1364
+ stores a 0hf-prefix prompt template Id instead of a DeveloperName
1365
+ (observed in live my-org-alias org), the Metadata API retrieve
1366
+ can't match it — Wave B enqueues the Id as-is and the template
1367
+ stays in `_pending_fetches.PROMPT_TEMPLATE` forever.
1368
+
1369
+ Parallel to `_normalize_flow_id_targets`: build an Id → DeveloperName
1370
+ map from `list_prompt_template_metadata` rows (projected to
1371
+ {Id, DeveloperName} shape by `_fetch_wave_b_by_names`), mutate the
1372
+ bundle in place. Unmatched Ids stay as-is (genuinely missing template,
1373
+ or the Metadata API listing failed).
1374
+ """
1375
+ id_to_name: dict[str, str] = {}
1376
+ for row in prompt_template_rows or []:
1377
+ row_id = row.get("Id")
1378
+ dev_name = row.get("DeveloperName")
1379
+ if row_id and dev_name:
1380
+ id_to_name[row_id] = dev_name
1381
+
1382
+ if not id_to_name:
1383
+ return
1384
+
1385
+ def _rewrite_action(action: dict) -> None:
1386
+ target = action.get("invocationTarget")
1387
+ ttype = (action.get("invocationTargetType") or "").strip().lower()
1388
+ # Match the same ttype predicate used by _route for prompt-template
1389
+ # targets — otherwise a Flow action whose target happens to collide
1390
+ # with a prompt template Id (unlikely but possible) wouldn't be
1391
+ # caught. _route's predicate is the authority on what's a prompt.
1392
+ is_prompt_ttype = (
1393
+ ttype in ("prompttemplate", "generatepromptresponse")
1394
+ or ttype.startswith("prompt")
1395
+ or ttype.startswith("genai")
1396
+ )
1397
+ if not is_prompt_ttype or not isinstance(target, str):
1398
+ return
1399
+ resolved = id_to_name.get(target)
1400
+ if resolved:
1401
+ action["_original_invocation_target_id"] = target
1402
+ action["invocationTarget"] = resolved
1403
+
1404
+ for topic in bundle_parsed.get("topics") or []:
1405
+ for action in topic.get("actions") or []:
1406
+ _rewrite_action(action)
1407
+ for action in bundle_parsed.get("plannerActions") or []:
1408
+ _rewrite_action(action)
1409
+
1410
+
1411
+ def _normalize_apex_id_targets(
1412
+ bundle_parsed: dict, apex_by_id_rows: list[dict],
1413
+ ) -> None:
1414
+ """Rewrite action invocationTargets that are Apex (01p-prefix Id)
1415
+ -> ApexClass Name.
1416
+
1417
+ Gap B fix (2026-05-05): when GenAiFunctionDefinition.InvocationTarget
1418
+ stores a 01p-prefix ApexClass Id instead of a class Name (observed in
1419
+ live my-org-alias org, e.g. 01p000000000000AAA ->
1420
+ MyController), downstream Wave B body retrieval enqueues
1421
+ the Id as-is into `_pending_fetches.APEX` and the tree renders the raw
1422
+ Id instead of the class name.
1423
+
1424
+ Parallel to `_normalize_prompt_template_id_targets`: build an Id ->
1425
+ Name map from `fetch_apex_bodies_by_ids` rows (ApexClass uses `Name`,
1426
+ not `DeveloperName`), mutate the bundle in place. Unmatched Ids stay
1427
+ as-is (genuinely missing class, or the by-Id fetch failed).
1428
+ """
1429
+ id_to_name: dict[str, str] = {}
1430
+ for row in apex_by_id_rows or []:
1431
+ row_id = row.get("Id")
1432
+ class_name = row.get("Name")
1433
+ if row_id and class_name:
1434
+ id_to_name[row_id] = class_name
1435
+
1436
+ if not id_to_name:
1437
+ return
1438
+
1439
+ def _rewrite_action(action: dict) -> None:
1440
+ target = action.get("invocationTarget")
1441
+ ttype = (action.get("invocationTargetType") or "").strip().lower()
1442
+ # Match the same ttype predicate used by _route for apex targets.
1443
+ # Mirrors the prompt-template normalizer's ttype gate so a Flow
1444
+ # action whose target happens to collide with an ApexClass Id
1445
+ # (unlikely but possible) isn't miscaught.
1446
+ is_apex_ttype = ttype in ("apex", "apexaction") or ttype.startswith("apex")
1447
+ if not is_apex_ttype or not isinstance(target, str):
1448
+ return
1449
+ # Prefix-gate the rewrite to the ApexClass key prefix (01p).
1450
+ # Mirrors the `target[:3].lower() == "01p"` check in _collect_wave_b_targets.
1451
+ if target[:3].lower() != "01p":
1452
+ return
1453
+ resolved = id_to_name.get(target)
1454
+ if resolved:
1455
+ action["_original_invocation_target_id"] = target
1456
+ action["invocationTarget"] = resolved
1457
+
1458
+ for topic in bundle_parsed.get("topics") or []:
1459
+ for action in topic.get("actions") or []:
1460
+ _rewrite_action(action)
1461
+ for action in bundle_parsed.get("plannerActions") or []:
1462
+ _rewrite_action(action)
1463
+
1464
+
1465
+ # ---------------------------------------------------------------------------
1466
+ # Signature derivation — Apex + Flow (rendered in Section 7 of architecture.md)
1467
+ # ---------------------------------------------------------------------------
1468
+
1469
+
1470
+ def _derive_apex_signature(apex_row: dict) -> str | None:
1471
+ """Return a compact one-line signature string for an Apex class, or None.
1472
+
1473
+ Sourced from `SymbolTable.methods[]` on the ApexClass Tooling row. Picks
1474
+ the "primary" method:
1475
+ 1. Prefer a method annotated `@InvocableMethod` (what Flow / Agentforce
1476
+ actually invoke — typically exactly one per Agentforce-relevant
1477
+ class).
1478
+ 2. Else prefer a `global` or `public static` non-constructor method.
1479
+ 3. Else fall back to the first method in SymbolTable source order.
1480
+
1481
+ Format: `<modifiers> <returnType> <name>(<p1_type> <p1_name>, ...)`. If
1482
+ `returnType` is absent (constructor shape) it's omitted. Parameters are
1483
+ rendered as `<type> <name>`; empty param list becomes `()`.
1484
+
1485
+ Returns None when `SymbolTable` is missing/empty or contains no method
1486
+ candidates. Body parsing is intentionally NOT attempted — too brittle.
1487
+ """
1488
+ if not isinstance(apex_row, dict):
1489
+ return None
1490
+ symbol_table = apex_row.get("SymbolTable")
1491
+ if not isinstance(symbol_table, dict):
1492
+ return None
1493
+ methods = symbol_table.get("methods")
1494
+ if not isinstance(methods, list) or not methods:
1495
+ return None
1496
+
1497
+ def _is_invocable(m: dict) -> bool:
1498
+ anns = m.get("annotations") or []
1499
+ for ann in anns:
1500
+ if isinstance(ann, dict):
1501
+ if (ann.get("name") or "").lower() == "invocablemethod":
1502
+ return True
1503
+ elif isinstance(ann, str):
1504
+ if ann.lower() == "invocablemethod":
1505
+ return True
1506
+ return False
1507
+
1508
+ def _is_constructor(m: dict) -> bool:
1509
+ # SymbolTable represents constructors via `constructors[]`, but some
1510
+ # payloads fold them into `methods[]` with a null/empty returnType.
1511
+ rt = m.get("returnType")
1512
+ return not rt
1513
+
1514
+ def _is_promoted(m: dict) -> bool:
1515
+ mods = [str(x).lower() for x in (m.get("modifiers") or [])]
1516
+ if _is_constructor(m):
1517
+ return False
1518
+ if "global" in mods:
1519
+ return True
1520
+ if "public" in mods and "static" in mods:
1521
+ return True
1522
+ return False
1523
+
1524
+ candidates = [m for m in methods if isinstance(m, dict)]
1525
+ if not candidates:
1526
+ return None
1527
+
1528
+ primary: dict | None = next((m for m in candidates if _is_invocable(m)), None)
1529
+ if primary is None:
1530
+ primary = next((m for m in candidates if _is_promoted(m)), None)
1531
+ if primary is None:
1532
+ # Last-resort: first method. Skip if it's purely a private/local helper
1533
+ # with no chance of being the public entry point — those add noise.
1534
+ primary = candidates[0]
1535
+ mods = [str(x).lower() for x in (primary.get("modifiers") or [])]
1536
+ if "private" in mods and not _is_invocable(primary):
1537
+ return None
1538
+
1539
+ modifiers = [str(x) for x in (primary.get("modifiers") or [])]
1540
+ return_type = primary.get("returnType") or ""
1541
+ name = primary.get("name") or ""
1542
+ if not name:
1543
+ return None
1544
+
1545
+ params_out: list[str] = []
1546
+ for p in primary.get("parameters") or []:
1547
+ if not isinstance(p, dict):
1548
+ continue
1549
+ p_type = p.get("type") or ""
1550
+ p_name = p.get("name") or ""
1551
+ if p_type and p_name:
1552
+ params_out.append(f"{p_type} {p_name}")
1553
+ elif p_type:
1554
+ params_out.append(p_type)
1555
+ elif p_name:
1556
+ params_out.append(p_name)
1557
+ params_str = ", ".join(params_out)
1558
+
1559
+ parts: list[str] = []
1560
+ if modifiers:
1561
+ parts.append(" ".join(modifiers))
1562
+ if return_type:
1563
+ parts.append(return_type)
1564
+ parts.append(f"{name}({params_str})")
1565
+ return " ".join(parts)
1566
+
1567
+
1568
+ def _derive_flow_signature(flow_metadata_record: dict) -> str | None:
1569
+ """Return a compact signature string for a Flow, or None.
1570
+
1571
+ Sourced from `Metadata.variables[]` on the Tooling Flow record
1572
+ (`fetch_flow_metadata` output — the `flow_metadata_record` is the
1573
+ full Tooling row, and `.Metadata` is the decoded complexvalue dict).
1574
+
1575
+ Flow variables carry boolean `isInput` / `isOutput` flags. A variable
1576
+ with `isInput: true` contributes to the `in:` side; `isOutput: true`
1577
+ contributes to the `out:` side; a variable can set both (round-trip)
1578
+ and will appear on BOTH sides. Variables with neither flag are locals
1579
+ and are skipped.
1580
+
1581
+ Format: `in: <name>: <type>[, ...] | out: <name>: <type>[, ...]`.
1582
+ If only one side has entries, only that side is emitted. Returns None
1583
+ when neither side has entries.
1584
+
1585
+ Collection variables render as `List<<dataType>>`. sObject variables
1586
+ use the `objectType` field (e.g. `List<Case>` rather than
1587
+ `List<SObject>`). Insertion order from `variables[]` is preserved —
1588
+ we deliberately do not sort, to keep the signature aligned with the
1589
+ flow author's declared order.
1590
+ """
1591
+ if not isinstance(flow_metadata_record, dict):
1592
+ return None
1593
+ md = flow_metadata_record.get("Metadata")
1594
+ if not isinstance(md, dict):
1595
+ # Test convenience: accept a bare Metadata dict, not just the full row.
1596
+ if "variables" in flow_metadata_record:
1597
+ md = flow_metadata_record
1598
+ else:
1599
+ return None
1600
+
1601
+ variables = md.get("variables") or []
1602
+ if not isinstance(variables, list):
1603
+ return None
1604
+
1605
+ def _render_type(var: dict) -> str:
1606
+ data_type = (var.get("dataType") or "").strip()
1607
+ obj_type = (var.get("objectType") or "").strip()
1608
+ apex_class = (var.get("apexClass") or "").strip()
1609
+ dt_lower = data_type.lower()
1610
+ # sObject variables carry the concrete SObject name in `objectType`
1611
+ # (e.g. `Case`). Apex-typed variables carry the concrete class name
1612
+ # in `apexClass` (e.g. `CX_OrgSelector.Org`). Without the apexClass
1613
+ # branch, collections of Apex-typed values render as the useless
1614
+ # `List<Apex>` instead of `List<CX_OrgSelector.Org>`.
1615
+ if dt_lower == "sobject" and obj_type:
1616
+ base = obj_type
1617
+ elif dt_lower == "apex" and apex_class:
1618
+ base = apex_class
1619
+ else:
1620
+ base = data_type or "Object"
1621
+ if var.get("isCollection"):
1622
+ return f"List<{base}>"
1623
+ return base
1624
+
1625
+ inputs: list[str] = []
1626
+ outputs: list[str] = []
1627
+ for v in variables:
1628
+ if not isinstance(v, dict):
1629
+ continue
1630
+ name = v.get("name")
1631
+ if not name:
1632
+ continue
1633
+ rendered = f"{name}: {_render_type(v)}"
1634
+ if v.get("isInput"):
1635
+ inputs.append(rendered)
1636
+ if v.get("isOutput"):
1637
+ outputs.append(rendered)
1638
+
1639
+ if not inputs and not outputs:
1640
+ return None
1641
+
1642
+ parts: list[str] = []
1643
+ if inputs:
1644
+ parts.append("in: " + ", ".join(inputs))
1645
+ if outputs:
1646
+ parts.append("out: " + ", ".join(outputs))
1647
+ return " | ".join(parts)
1648
+
1649
+
1650
+ def _stamp_signatures(
1651
+ node: dict,
1652
+ apex_sigs: dict[str, str],
1653
+ flow_sigs: dict[str, str],
1654
+ flow_reasons: dict[str, str] | None = None,
1655
+ ) -> None:
1656
+ """Recursively stamp `node["signature"]` on matching APEX / FLOW leaves.
1657
+
1658
+ Shared utility flows / helpers that appear in multiple branches all
1659
+ receive the same stamped signature — they point at the same
1660
+ FlowDefinition / ApexClass, so the signature is the same.
1661
+
1662
+ Gap 2 fix (2026-05-05): when a FLOW leaf has no signature but *does*
1663
+ have an explanation in `flow_reasons` (e.g. managed-pkg body not
1664
+ retrievable via the Data API fallback), stamp `node["_signature_reason"]`
1665
+ so the renderer can distinguish a silent hole from a known limitation.
1666
+ """
1667
+ if not isinstance(node, dict):
1668
+ return
1669
+ kind = node.get("kind")
1670
+ name = node.get("api_name")
1671
+ if kind == "APEX" and name and name in apex_sigs:
1672
+ node["signature"] = apex_sigs[name]
1673
+ elif kind == "FLOW" and name:
1674
+ if name in flow_sigs:
1675
+ node["signature"] = flow_sigs[name]
1676
+ elif flow_reasons and name in flow_reasons:
1677
+ node["_signature_reason"] = flow_reasons[name]
1678
+ for child in node.get("children") or []:
1679
+ _stamp_signatures(child, apex_sigs, flow_sigs, flow_reasons)
1680
+
1681
+
1682
+ # ---------------------------------------------------------------------------
1683
+ # Gap C (2026-05-05): prompt template body retrieve + stamp
1684
+ # ---------------------------------------------------------------------------
1685
+
1686
+
1687
+ def _is_prompt_ttype(ttype: str) -> bool:
1688
+ """Mirror the ttype predicate used by `_route` /
1689
+ `_normalize_prompt_template_id_targets` so collection + rewrite +
1690
+ retrieve all recognize the same action kind."""
1691
+ t = (ttype or "").strip().lower()
1692
+ return (
1693
+ t in ("prompttemplate", "generatepromptresponse")
1694
+ or t.startswith("prompt")
1695
+ or t.startswith("genai")
1696
+ )
1697
+
1698
+
1699
+ def _collect_prompt_template_names(bundle_parsed: dict) -> set[str]:
1700
+ """Walk topics + plannerActions, collect prompt-template DeveloperNames.
1701
+
1702
+ Called AFTER `_normalize_prompt_template_id_targets` — any 0hf-prefix
1703
+ Id that resolved via Wave B's Id-list-metadata should already be a
1704
+ DeveloperName. Defensive: drop anything that still looks Id-shaped
1705
+ (0hf prefix) so we don't send a malformed
1706
+ `GenAiPromptTemplate:0hfUv...` spec to the retrieve CLI.
1707
+ """
1708
+ names: set[str] = set()
1709
+
1710
+ def _collect(action: dict) -> None:
1711
+ ttype = action.get("invocationTargetType") or ""
1712
+ if not _is_prompt_ttype(ttype):
1713
+ return
1714
+ target = action.get("invocationTarget")
1715
+ if not isinstance(target, str) or not target:
1716
+ return
1717
+ if target[:3].lower() == "0hf":
1718
+ # Id never got rewritten — the list_metadata lookup missed it
1719
+ # (managed-pkg template, permission issue). Skip; it stays in
1720
+ # _pending_fetches with the Id as the key.
1721
+ return
1722
+ names.add(target)
1723
+
1724
+ for topic in bundle_parsed.get("topics") or []:
1725
+ for action in topic.get("actions") or []:
1726
+ _collect(action)
1727
+ for action in bundle_parsed.get("plannerActions") or []:
1728
+ _collect(action)
1729
+ return names
1730
+
1731
+
1732
+ def _collect_flow_nested_prompt_template_names(
1733
+ node: dict,
1734
+ already_retrieved: dict[str, dict],
1735
+ out: set[str],
1736
+ ) -> None:
1737
+ """Walk the finalized tree and collect PROMPT_TEMPLATE leaves whose
1738
+ body wasn't stamped during the bundle-scoped retrieve.
1739
+
1740
+ Bundle-scoped `_collect_prompt_template_names` only sees prompt
1741
+ templates declared as top-level topic/planner InvocationTargets.
1742
+ Prompt templates referenced from inside a Flow (via a
1743
+ `generatePromptResponse` actionCall) are discovered later during
1744
+ Wave B's BFS of flow XML and end up as PROMPT_TEMPLATE leaves in the
1745
+ tree — but their names never reached the first retrieve, so their
1746
+ `_body_available` stays False and content is silently lost.
1747
+
1748
+ Defensive: drop 0hf-Id-shape names (managed-pkg templates whose Id
1749
+ never rewrote to a DeveloperName) — sending
1750
+ `GenAiPromptTemplate:0hfUv...` to the retrieve CLI yields a
1751
+ malformed spec; the Id stays in `_pending_fetches.PROMPT_TEMPLATE`
1752
+ as intended.
1753
+ """
1754
+ if not isinstance(node, dict):
1755
+ return
1756
+ if node.get("kind") == "PROMPT_TEMPLATE":
1757
+ name = node.get("api_name")
1758
+ if (
1759
+ isinstance(name, str)
1760
+ and name
1761
+ and name[:3].lower() != "0hf"
1762
+ and not node.get("_body_available", False)
1763
+ ):
1764
+ body = already_retrieved.get(name)
1765
+ if not (body and body.get("content")):
1766
+ out.add(name)
1767
+ for child in node.get("children") or []:
1768
+ _collect_flow_nested_prompt_template_names(child, already_retrieved, out)
1769
+
1770
+
1771
+ def _stamp_prompt_template_bodies(
1772
+ node: dict,
1773
+ bodies: dict[str, dict],
1774
+ ) -> None:
1775
+ """Recursively stamp prompt-template body fields onto matching
1776
+ PROMPT_TEMPLATE leaves.
1777
+
1778
+ For each leaf whose `api_name` matches a key in `bodies`, attach:
1779
+ - master_label, content, inputs, active_version_identifier
1780
+ - _body_available = True
1781
+
1782
+ Leaves with no matching body get `_body_available = False` so the
1783
+ renderer can distinguish "no body retrieved" from "body successfully
1784
+ empty". Shared templates appearing in multiple branches receive the
1785
+ same stamped body (they reference the same DeveloperName).
1786
+ """
1787
+ if not isinstance(node, dict):
1788
+ return
1789
+ kind = node.get("kind")
1790
+ name = node.get("api_name")
1791
+ if kind == "PROMPT_TEMPLATE" and name:
1792
+ body = bodies.get(name)
1793
+ if body:
1794
+ node["master_label"] = body.get("masterLabel")
1795
+ node["content"] = body.get("content")
1796
+ node["inputs"] = body.get("inputs") or []
1797
+ node["active_version_identifier"] = body.get(
1798
+ "activeVersionIdentifier"
1799
+ )
1800
+ node["_body_available"] = True
1801
+ else:
1802
+ node["_body_available"] = False
1803
+ for child in node.get("children") or []:
1804
+ _stamp_prompt_template_bodies(child, bodies)
1805
+
1806
+
1807
+ # ---------------------------------------------------------------------------
1808
+ # Phase 9: build declared_action_tree.json via parse_wave primitives
1809
+ # ---------------------------------------------------------------------------
1810
+
1811
+
1812
+ def _run_parse_wave(
1813
+ bot_info: dict,
1814
+ bundle_parsed: dict,
1815
+ wave_b: dict,
1816
+ args: argparse.Namespace,
1817
+ work_dir: Path,
1818
+ ) -> dict:
1819
+ """Invoke parse_wave's init_tree + root-children builder in-process.
1820
+
1821
+ parse_wave was written to be invoked as a subprocess with env vars
1822
+ carrying AGENT_API_NAME / AGENT_VERSION / BOT_ID / etc. For Phase 2
1823
+ Batch 1 we set those env vars transiently and call the module's
1824
+ public helpers — no subprocess overhead, same behavior.
1825
+ """
1826
+ import parse_wave
1827
+
1828
+ # parse_wave reads these via os.environ.
1829
+ prior_env = {
1830
+ "AGENT_API_NAME": os.environ.get("AGENT_API_NAME"),
1831
+ "AGENT_VERSION": os.environ.get("AGENT_VERSION"),
1832
+ "BOT_ID": os.environ.get("BOT_ID"),
1833
+ "BOT_MASTER_LABEL": os.environ.get("BOT_MASTER_LABEL"),
1834
+ "VERSION_AUTO_PICKED": os.environ.get("VERSION_AUTO_PICKED"),
1835
+ }
1836
+ os.environ["AGENT_API_NAME"] = args.agent_api_name
1837
+ os.environ["AGENT_VERSION"] = bot_info["version"]
1838
+ os.environ["BOT_ID"] = bot_info["bot_id"]
1839
+ os.environ["BOT_MASTER_LABEL"] = bot_info["master_label"]
1840
+ os.environ["VERSION_AUTO_PICKED"] = "true" if bot_info["version_auto_picked"] else "false"
1841
+
1842
+ try:
1843
+ # Persist the bundle for parse_wave's finalize_cap path.
1844
+ bundle_out = work_dir / "_bundle_parsed.json"
1845
+ bundle_out.write_text(json.dumps(bundle_parsed, indent=2))
1846
+
1847
+ # Persist a fake _bot_definition.json so init_tree reads real
1848
+ # metadata for the agent block.
1849
+ bd_file = work_dir / "_bot_definition.json"
1850
+ bd_file.write_text(json.dumps({
1851
+ "result": {"records": [bot_info.get("bot_definition") or {}]},
1852
+ }))
1853
+
1854
+ tree = parse_wave.init_tree(work_dir, bundle_parsed)
1855
+
1856
+ # Build root children + track bundle-derived BFS refs.
1857
+ # call the public `empty_kind_sets` /
1858
+ # `BFS_KINDS` symbols — reaching into `parse_wave._*` reopened the
1859
+ # leading-underscore surface that closed for `redact_text`.
1860
+ visited_by_kind = parse_wave.empty_kind_sets()
1861
+ aux_visited: set[tuple[str, str]] = set()
1862
+ children, bundle_refs = parse_wave.build_root_children(
1863
+ bundle_parsed, visited_by_kind, aux_visited,
1864
+ )
1865
+ tree["root"]["children"] = children
1866
+
1867
+ # Merge Flow metadata into flow_children. parse_wave wants this as
1868
+ # `{flow_name: [child_refs]}`. Build it from the in-memory
1869
+ # `Flow.Metadata` JSON Wave B already fetched — the Tooling REST
1870
+ # API decodes the `Metadata` complexvalue field into a plain dict,
1871
+ # so no XML parsing is needed (see `_build_flow_children` +
1872
+ # fixture `CLASSIC_FLOW_METADATA`). Without this, every FLOW leaf
1873
+ # in `metadata_tree.json` shipped with `children: []` and the
1874
+ # user's recursive-tree view was flat.
1875
+ flow_children = _build_flow_children(
1876
+ wave_b["flow_metadata"], wave_b["flow_def_rows"],
1877
+ )
1878
+
1879
+ # BFS routing for bundle refs.
1880
+ pending_by_kind, _cycles = parse_wave.bfs_step(
1881
+ parse_wave.empty_kind_sets(), visited_by_kind, bundle_refs,
1882
+ )
1883
+
1884
+ # Depth-cap accumulator threaded through inflate.
1885
+ depth_cap_pending = parse_wave.empty_kind_sets()
1886
+ parse_wave.walk_and_inflate(
1887
+ tree["root"], flow_children, pending_out=depth_cap_pending,
1888
+ )
1889
+
1890
+ # Merge any Apex / Flow we actually fetched into visited — they
1891
+ # no longer count as pending.
1892
+ for row in wave_b["apex_rows"]:
1893
+ nm = row.get("Name")
1894
+ if nm:
1895
+ visited_by_kind["APEX"].add(nm)
1896
+ for row in wave_b["flow_def_rows"]:
1897
+ nm = row.get("DeveloperName")
1898
+ if nm:
1899
+ visited_by_kind["FLOW"].add(nm)
1900
+ # Gap C (2026-05-05): prompt templates whose bodies we retrieved
1901
+ # count as visited and must drop out of _pending_fetches.
1902
+ # Templates the retrieve didn't return (permission / managed-pkg /
1903
+ # retrieve failure) stay out of `visited` so they surface there,
1904
+ # mirroring the Flow-by-name "no rows = stays pending" pattern.
1905
+ prompt_template_bodies = wave_b.get("prompt_template_bodies") or {}
1906
+ for name in prompt_template_bodies:
1907
+ if name:
1908
+ visited_by_kind["PROMPT_TEMPLATE"].add(name)
1909
+
1910
+ # Stamp Apex / Flow signatures onto every matching tree node so
1911
+ # render_architecture.py can populate Section 7. Wave B already
1912
+ # fetched SymbolTable (Apex) + Metadata (Flow); we just project it
1913
+ # onto `{kind, api_name}` leaves here. Shared utility flows /
1914
+ # helpers that appear in multiple positions all receive the same
1915
+ # stamped signature — that's the correct behavior (same definition).
1916
+ apex_sigs: dict[str, str] = {}
1917
+ for row in wave_b["apex_rows"]:
1918
+ nm = row.get("Name")
1919
+ if not nm:
1920
+ continue
1921
+ sig = _derive_apex_signature(row)
1922
+ if sig:
1923
+ apex_sigs[nm] = sig
1924
+
1925
+ flow_sigs: dict[str, str] = {}
1926
+ # Gap 2 fix (2026-05-05): explain silent signature holes. Managed
1927
+ # flows come back from `fetch_flow_definition_ids_by_names` via the
1928
+ # FlowDefinitionView fallback with _source="FlowDefinitionView",
1929
+ # ActiveVersionId=None, _body_available=False — by design, since
1930
+ # managed-pkg flow bodies are IP-protected. Previously every such
1931
+ # row produced an unexplained "_Signature not captured._" in the
1932
+ # rendered markdown. Now we surface the structural reason.
1933
+ #
1934
+ # For the generic "no usable metadata record" case (Tooling row
1935
+ # present but flow_metadata missing — e.g. metadata fetch failed
1936
+ # or the flow has no active version at all) we also stamp a reason
1937
+ # so the renderer never silently drops the node.
1938
+ flow_reasons: dict[str, str] = {}
1939
+ flow_metadata_by_vid = wave_b.get("flow_metadata") or {}
1940
+ for row in wave_b["flow_def_rows"]:
1941
+ dev_name = row.get("DeveloperName") or row.get("_bare_developer_name")
1942
+ if not dev_name:
1943
+ continue
1944
+ source = row.get("_source") or ""
1945
+ if source == "FlowDefinitionView":
1946
+ ns = row.get("NamespacePrefix") or ""
1947
+ reason = (
1948
+ f"managed-package (ns={ns}); body not retrievable via Tooling/Metadata API"
1949
+ if ns
1950
+ else "managed-package; body not retrievable via Tooling/Metadata API"
1951
+ )
1952
+ flow_reasons[dev_name] = reason
1953
+ continue
1954
+ active_ver = row.get("ActiveVersionId")
1955
+ if not active_ver:
1956
+ flow_reasons[dev_name] = "no active version"
1957
+ continue
1958
+ md_record = flow_metadata_by_vid.get(active_ver)
1959
+ if not md_record:
1960
+ flow_reasons[dev_name] = "flow metadata fetch returned no record"
1961
+ continue
1962
+ sig = _derive_flow_signature(md_record)
1963
+ if sig:
1964
+ flow_sigs[dev_name] = sig
1965
+ else:
1966
+ flow_reasons[dev_name] = "flow metadata has no in/out params"
1967
+
1968
+ _stamp_signatures(tree["root"], apex_sigs, flow_sigs, flow_reasons)
1969
+
1970
+ # Gap C: stamp retrieved prompt-template bodies onto the tree.
1971
+ # Leaves with a matching body gain content/master_label/inputs;
1972
+ # leaves without get `_body_available = False` so the renderer
1973
+ # can distinguish "retrieve missed" from "body truly absent".
1974
+ _stamp_prompt_template_bodies(tree["root"], prompt_template_bodies)
1975
+
1976
+ for kind in parse_wave.BFS_KINDS:
1977
+ pending_by_kind[kind] |= depth_cap_pending.get(kind, set())
1978
+
1979
+ depth_cap_tripped = any(depth_cap_pending[k] for k in parse_wave.BFS_KINDS)
1980
+
1981
+ tree["_pending_fetches"] = {
1982
+ k: sorted(pending_by_kind.get(k, set()) - visited_by_kind.get(k, set()))
1983
+ for k in parse_wave.BFS_KINDS
1984
+ }
1985
+
1986
+ any_pending = any(tree["_pending_fetches"][k] for k in parse_wave.BFS_KINDS)
1987
+ if depth_cap_tripped:
1988
+ tree["_partial"] = True
1989
+ tree["_partial_reason"] = "max-depth-cap"
1990
+ elif any_pending:
1991
+ tree["_partial"] = True
1992
+ if not tree.get("_partial_reason"):
1993
+ tree["_partial_reason"] = "pending-refs"
1994
+ else:
1995
+ tree["_partial"] = False
1996
+ tree["_partial_reason"] = None
1997
+
1998
+ # Surface Wave-B-level unresolved items (e.g. unknown ID prefixes).
1999
+ for u in wave_b.get("unresolved", []) or []:
2000
+ tree.setdefault("_unresolved", []).append(u)
2001
+
2002
+ node_count, depth, kind_counts = parse_wave.compute_stats(tree["root"])
2003
+ tree["node_count"] = node_count
2004
+ tree["depth"] = depth
2005
+ tree["_kind_counts"] = kind_counts
2006
+
2007
+ all_visited: set[tuple[str, str]] = set(aux_visited)
2008
+ for kind, names in visited_by_kind.items():
2009
+ for n in names:
2010
+ all_visited.add((kind, n))
2011
+ tree["_visited"] = [list(v) for v in sorted(all_visited)]
2012
+
2013
+ tree_path = work_dir / "declared_action_tree.json"
2014
+ tmp = tree_path.with_suffix(tree_path.suffix + ".tmp")
2015
+ tmp.write_text(json.dumps(tree, indent=2))
2016
+ os.replace(tmp, tree_path)
2017
+ return tree
2018
+ finally:
2019
+ # Restore env so test runners that reuse the process don't leak
2020
+ # state across invocations.
2021
+ for k, v in prior_env.items():
2022
+ if v is None:
2023
+ os.environ.pop(k, None)
2024
+ else:
2025
+ os.environ[k] = v
2026
+
2027
+
2028
+ # ---------------------------------------------------------------------------
2029
+ # Phase 11: finalize
2030
+ # ---------------------------------------------------------------------------
2031
+
2032
+
2033
+ def _swap_dir_atomic(target: Path, staging: Path) -> None:
2034
+ """Per-file overwrite from `staging` into `target` — preserves any
2035
+ unrelated sibling content already present in `target`.
2036
+
2037
+ P0 fix (2026-05-05): the prior implementation did
2038
+ ``os.replace(target, backup); os.replace(staging, target)`` — an
2039
+ atomic whole-directory swap that was correct in isolation but
2040
+ DESTRUCTIVE of co-tenants. The `<agent>__<ver>/` dir is co-tenanted:
2041
+ co-tenants write per-session subdirs
2042
+ (`<session_id>/`) alongside architecture's files. Swapping the whole
2043
+ directory silently wiped every cached session trace.
2044
+
2045
+ New behavior: iterate `staging`'s immediate children and `os.replace`
2046
+ each one into `target`. The directory `target` itself is never
2047
+ moved or deleted, so any session subdirs under it survive.
2048
+
2049
+ Trade-off: the old helper supported atomic rollback (restore from
2050
+ backup on failure). The per-file pattern cannot — a crash partway
2051
+ through the loop leaves architecture's output in a split state
2052
+ (some new files, some old). This is acceptable because:
2053
+ - per-file `os.replace` is still atomic (no empty-path window
2054
+ for any individual file, so the "concurrent reader sees
2055
+ empty dir" bug that addressed is still closed);
2056
+ - `last_built_at.txt` is written LAST by the caller, so
2057
+ consumers can treat its presence as the success sentinel;
2058
+ - architecture is re-runnable, co-tenant session traces are not.
2059
+
2060
+ Callers must still guarantee `staging` is on the same filesystem as
2061
+ `target` (helper constructs `staging` as a sibling of `target`, so
2062
+ that holds by construction).
2063
+ """
2064
+ import shutil
2065
+
2066
+ if not staging.is_dir():
2067
+ raise OSError(f"staging dir missing: {staging}")
2068
+
2069
+ target.mkdir(parents=True, exist_ok=True)
2070
+
2071
+ for src in staging.iterdir():
2072
+ dst = target / src.name
2073
+ # Clear any existing destination so `os.replace` lands cleanly
2074
+ # when the incoming type differs (file replacing dir or vice
2075
+ # versa). For same-type overwrites `os.replace` would handle
2076
+ # files on its own, but directories require an empty target or
2077
+ # same-name existing dir — safer to unify both here.
2078
+ if dst.exists() or dst.is_symlink():
2079
+ if dst.is_dir() and not dst.is_symlink():
2080
+ shutil.rmtree(dst)
2081
+ else:
2082
+ dst.unlink()
2083
+ os.replace(src, dst)
2084
+
2085
+ # Staging should be empty now; best-effort teardown.
2086
+ try:
2087
+ staging.rmdir()
2088
+ except OSError:
2089
+ shutil.rmtree(staging, ignore_errors=True)
2090
+
2091
+
2092
+ def _run_finalize(
2093
+ data_dir: Path,
2094
+ cache_dir: Path,
2095
+ tree: dict,
2096
+ work_dir: Path,
2097
+ agent_api_name: str,
2098
+ agent_version: str,
2099
+ planner_name: str,
2100
+ ) -> None:
2101
+ """Atomic-write tree + summary + manifest. Keep it simple.
2102
+
2103
+ For Phase 2 Batch 1 we replicate finalize.py's essential behavior
2104
+ (tree + manifest) but skip the sf_meta mirror — there's no
2105
+ sf_meta dir when main.py runs the pipeline SOQL-first. Metadata-API
2106
+ retrieves land in Batch 2/3.
2107
+
2108
+ both `data_dir` and `cache_dir` are swapped
2109
+ via `_swap_dir_atomic` to close the "rmtree then rename" empty-dir
2110
+ window. A crash during the second swap restores the original from
2111
+ the staging-sibling `.<name>.backup.<pid>` rather than leaving an
2112
+ empty path.
2113
+ """
2114
+ import datetime as dt
2115
+ import shutil
2116
+
2117
+ built_at = dt.datetime.now(dt.timezone.utc).isoformat().replace("+00:00", "Z")
2118
+ tree_base = f"{agent_api_name}_{agent_version}_metadata_tree"
2119
+
2120
+ # Finalize's _partial computation. Mirrors finalize.py:109-117 — both
2121
+ # buckets (_pending_fetches AND _unresolved) must be empty for a
2122
+ # clean run. _unresolved captures wave-B failures (HTTP 4xx,
2123
+ # iteration-cap exhaustion, managed-flow filter misses) that have
2124
+ # already been moved out of _pending_fetches; checking only the
2125
+ # latter would silently call a partial run "converged".
2126
+ planner_ok = bool(planner_name)
2127
+ pending_total = sum(len(v) for v in (tree.get("_pending_fetches") or {}).values())
2128
+ unresolved_count = len(tree.get("_unresolved") or [])
2129
+ waves_converged = pending_total == 0 and unresolved_count == 0
2130
+ tree["_partial"] = not (planner_ok and waves_converged)
2131
+ tree.pop("_visited", None)
2132
+
2133
+ # Pin deterministic child ordering as the last assembly step before
2134
+ # the authoritative write. Shared with the standalone `finalize.py`
2135
+ # subprocess so both paths produce byte-identical trees. Downstream
2136
+ # readers see one canonical order from disk; they do not re-sort.
2137
+ from finalize import sort_tree_in_place
2138
+ sort_tree_in_place(tree.get("root") or {})
2139
+
2140
+ # staging names are siblings (same parent) so the
2141
+ # `os.replace` used by `_swap_dir_atomic` is a same-filesystem atomic
2142
+ # rename. `.staging.<pid>` disambiguates concurrent pipelines on the
2143
+ # same host.
2144
+ data_parent = data_dir.parent
2145
+ data_staging = data_parent / f".{data_dir.name}.staging.{os.getpid()}"
2146
+ if data_staging.exists():
2147
+ shutil.rmtree(data_staging)
2148
+ data_staging.mkdir(parents=True)
2149
+ tree_out = data_staging / f"{tree_base}.json"
2150
+ tree_out.write_text(json.dumps(tree, indent=2))
2151
+
2152
+ # P2.2-1: phase 10 (architecture.md renderer). Imported lazily so a
2153
+ # renderer bug can't break the existing Batch 1 pipeline before the
2154
+ # tree JSON has been written — the tree + manifest remain the
2155
+ # authoritative outputs, architecture.md is a derived artifact.
2156
+ #
2157
+ # filename now self-identifying —
2158
+ # `{agent_api_name}_{agent_version}_architecture.md` (e.g.
2159
+ # `MyAgent_v5_architecture.md`). Same shape as the tree JSON,
2160
+ # minus the `_metadata_tree` suffix. The `.error` sidecar follows
2161
+ # the same shape.
2162
+ arch_base = f"{agent_api_name}_{agent_version}"
2163
+ arch_name = f"{arch_base}_architecture.md"
2164
+ arch_error_name = f"{arch_base}_architecture.md.error"
2165
+ try:
2166
+ from render_architecture import render as _render_architecture
2167
+ _render_architecture(tree_out, data_staging / arch_name)
2168
+ except Exception as e:
2169
+ # Best-effort: a render failure downgrades the run to "tree OK,
2170
+ # architecture skipped" rather than aborting finalize. The
2171
+ # reason string surfaces in the next-run logs for triage.
2172
+ (data_staging / arch_error_name).write_text(
2173
+ f"render_architecture failed: {type(e).__name__}: {e}\n"
2174
+ )
2175
+
2176
+ # dropped `{tree_base}.summary.md` from the output contract —
2177
+ # was a redundant summary of the tree JSON; consumers should read the
2178
+ # JSON directly. See CHANGELOG for details.
2179
+ (data_staging / "last_built_at.txt").write_text(built_at + "\n")
2180
+
2181
+ _swap_dir_atomic(data_dir, data_staging)
2182
+
2183
+ # CACHE_DIR staging — same two-phase swap.
2184
+ cache_parent = cache_dir.parent
2185
+ cache_staging = cache_parent / f".{cache_dir.name}.staging.{os.getpid()}"
2186
+ if cache_staging.exists():
2187
+ shutil.rmtree(cache_staging)
2188
+ cache_staging.mkdir(parents=True)
2189
+
2190
+ manifest = {
2191
+ "built_at_utc": built_at,
2192
+ "schema_version": tree.get("_schema_version", SCHEMA_VERSION),
2193
+ "agent": tree.get("agent", {}),
2194
+ "node_count": tree.get("node_count", 0),
2195
+ "depth": tree.get("depth", 0),
2196
+ "kind_counts": tree.get("_kind_counts", {}),
2197
+ "ttl_days": CACHE_TTL_DAYS,
2198
+ "data_path": str(data_dir / f"{tree_base}.json"),
2199
+ "partial": tree.get("_partial", False),
2200
+ "unresolved_count": len(tree.get("_unresolved", []) or []),
2201
+ }
2202
+ (cache_staging / "manifest.json").write_text(json.dumps(manifest, indent=2))
2203
+ # Copy tree + bundle sidecar for cache replay
2204
+ (cache_staging / "declared_action_tree.json").write_text(json.dumps(tree, indent=2))
2205
+ bundle_src = work_dir / "_bundle_parsed.json"
2206
+ if bundle_src.is_file():
2207
+ (cache_staging / "_bundle_parsed.json").write_text(bundle_src.read_text())
2208
+
2209
+ _swap_dir_atomic(cache_dir, cache_staging)
2210
+
2211
+
2212
+ # ---------------------------------------------------------------------------
2213
+ # Emit helpers
2214
+ # ---------------------------------------------------------------------------
2215
+
2216
+
2217
+ def _read_built_at_utc(cache_dir: Path | None) -> str:
2218
+ if cache_dir is None:
2219
+ return ""
2220
+ try:
2221
+ return json.loads((cache_dir / "manifest.json").read_text()).get("built_at_utc", "") or ""
2222
+ except (OSError, ValueError):
2223
+ return ""
2224
+
2225
+
2226
+ def _emit_fail(
2227
+ args: argparse.Namespace,
2228
+ extra_ctx: dict | None,
2229
+ status: str,
2230
+ error_detail: str = "",
2231
+ start_epoch: float | None = None,
2232
+ ) -> int:
2233
+ """Write an .emit_ctx.json with STATUS=<status>.
2234
+
2235
+ STATUS enum (from emit_result.py):
2236
+ OK, PARTIAL_OK, INVALID_INPUT, AUTH_REQUIRED, AGENT_NOT_FOUND,
2237
+ AGENT_VERSION_NOT_FOUND, RETRIEVE_FAILED, WRITE_FAILED.
2238
+
2239
+ For probe failures, the plan's description suggested SCHEMA_DRIFT
2240
+ but emit_result doesn't carry that enum value. We map probe failures
2241
+ to RETRIEVE_FAILED with an explicit error_detail — the RESULT block's
2242
+ ERROR_DETAIL carries the "schema-drift" reason. Adding a new enum
2243
+ value would require touching emit_result (out of scope P1 primitive);
2244
+ the mapping preserves emit_result's existing contract.
2245
+
2246
+ Returns the exit code the caller should return.
2247
+ """
2248
+ work_dir = Path(args.work_dir)
2249
+ work_dir.mkdir(parents=True, exist_ok=True)
2250
+ ctx = {
2251
+ "status": status,
2252
+ "error_detail": error_detail,
2253
+ "agent_api_name": args.agent_api_name,
2254
+ "agent_version": args.agent_version or "",
2255
+ "version_auto_picked": False,
2256
+ "agent_generation": "unknown",
2257
+ "bot_id": "",
2258
+ "org_id_15": "",
2259
+ "org_id_18": "",
2260
+ "cache_hit": False,
2261
+ "cached_at_utc": "",
2262
+ "cache_path": "",
2263
+ "output_json_path": "",
2264
+ "output_summary_path": "",
2265
+ "node_count": 0,
2266
+ "depth": 0,
2267
+ "partial": status == "PARTIAL_OK",
2268
+ "partial_reason": "",
2269
+ "pending_fetches_count": 0,
2270
+ "unresolved_count": 0,
2271
+ "available_bots": "",
2272
+ "available_versions": "",
2273
+ # Bug fix (2026-05-05): start_epoch captured once at pipeline entry
2274
+ # and threaded through every _emit_* helper. Previously each helper
2275
+ # re-captured time.time() AFTER the pipeline had already run, so
2276
+ # emit_result.py computed WALL_TIME_SECONDS against a timestamp taken
2277
+ # ~tens of seconds AFTER the real work finished and reported ~0.0s.
2278
+ "start_epoch": start_epoch if start_epoch is not None else time.time(),
2279
+ "data_dir": str(DATA_ROOT),
2280
+ "work_dir": str(work_dir),
2281
+ # failure paths never invoke the renderer.
2282
+ "architecture_path": "",
2283
+ "render_failed": False,
2284
+ "render_error_detail": "",
2285
+ }
2286
+ if extra_ctx:
2287
+ ctx.update(extra_ctx)
2288
+ (work_dir / ".emit_ctx.json").write_text(json.dumps(ctx, indent=2))
2289
+ return 1
2290
+
2291
+
2292
+ def _emit_cache_hit(
2293
+ args: argparse.Namespace,
2294
+ data_dir: Path,
2295
+ cache_dir: Path,
2296
+ manifest: dict,
2297
+ start_epoch: float | None = None,
2298
+ *,
2299
+ org_id_15: str = "",
2300
+ org_id_18: str = "",
2301
+ ) -> int:
2302
+ work_dir = Path(args.work_dir)
2303
+ work_dir.mkdir(parents=True, exist_ok=True)
2304
+ agent_version = manifest.get("agent", {}).get("version", "")
2305
+ tree_base = f"{args.agent_api_name}_{agent_version}_metadata_tree"
2306
+
2307
+ # on a cache hit the renderer is NOT re-invoked — but the
2308
+ # architecture.md from the prior run is a legitimate output of the
2309
+ # cached data_dir. Surface it when present, skip the .error sidecar
2310
+ # since render_failed semantics only apply to THIS run's renderer.
2311
+ # filename rename to `{agent}_{ver}_architecture.md` —
2312
+ # NB `tree_base` above still carries the `_metadata_tree` suffix (it
2313
+ # names the JSON); architecture filenames drop the suffix.
2314
+ arch_base = f"{args.agent_api_name}_{agent_version}"
2315
+ arch_path = data_dir / f"{arch_base}_architecture.md"
2316
+ architecture_path = str(arch_path) if arch_path.is_file() else ""
2317
+
2318
+ ctx = {
2319
+ "status": "OK",
2320
+ "error_detail": "",
2321
+ "agent_api_name": args.agent_api_name,
2322
+ "agent_version": manifest.get("agent", {}).get("version", ""),
2323
+ "version_auto_picked": manifest.get("agent", {}).get("_version_auto_picked", False),
2324
+ "agent_generation": manifest.get("agent", {}).get("generation", "unknown"),
2325
+ "bot_id": manifest.get("agent", {}).get("bot_id", ""),
2326
+ "org_id_15": org_id_15,
2327
+ "org_id_18": org_id_18,
2328
+ "cache_hit": True,
2329
+ "cached_at_utc": manifest.get("built_at_utc", ""),
2330
+ "cache_path": str(cache_dir),
2331
+ "output_json_path": str(data_dir / f"{tree_base}.json"),
2332
+ # summary.md dropped from the output contract. Field kept
2333
+ # empty for RESULT-block shape stability.
2334
+ "output_summary_path": "",
2335
+ "node_count": int(manifest.get("node_count", 0) or 0),
2336
+ "depth": int(manifest.get("depth", 0) or 0),
2337
+ "partial": bool(manifest.get("partial", False)),
2338
+ "partial_reason": "",
2339
+ "pending_fetches_count": 0,
2340
+ "unresolved_count": int(manifest.get("unresolved_count", 0) or 0),
2341
+ "available_bots": "",
2342
+ "available_versions": "",
2343
+ # Bug fix (2026-05-05): see _emit_fail note — start_epoch is captured
2344
+ # at pipeline entry and threaded through. Cache-hit paths are short-
2345
+ # running so the drift is smaller, but the field should still reflect
2346
+ # the invocation's real wall time.
2347
+ "start_epoch": start_epoch if start_epoch is not None else time.time(),
2348
+ "data_dir": str(data_dir),
2349
+ "work_dir": str(work_dir),
2350
+ # architecture-render outcome signals. render_failed
2351
+ # stays False for cache replays — that flag tracks THIS run's
2352
+ # renderer, not the cached run's; a cache hit implies no retry.
2353
+ "architecture_path": architecture_path,
2354
+ "render_failed": False,
2355
+ "render_error_detail": "",
2356
+ }
2357
+ (work_dir / ".emit_ctx.json").write_text(json.dumps(ctx, indent=2))
2358
+ return 0
2359
+
2360
+
2361
+ def _emit_ok(
2362
+ args: argparse.Namespace,
2363
+ data_dir: Path,
2364
+ tree: dict,
2365
+ bot_info: dict,
2366
+ org_id_15: str,
2367
+ start_epoch: float | None = None,
2368
+ cache_dir: Path | None = None,
2369
+ org_id_18: str = "",
2370
+ ) -> int:
2371
+ work_dir = Path(args.work_dir)
2372
+ work_dir.mkdir(parents=True, exist_ok=True)
2373
+ agent_version = bot_info["version"]
2374
+ tree_base = f"{args.agent_api_name}_{agent_version}_metadata_tree"
2375
+ pending_total = sum(len(v) for v in (tree.get("_pending_fetches") or {}).values())
2376
+
2377
+ # surface architecture-render outcome on the success path.
2378
+ # finalize writes either `{agent}_{ver}_architecture.md` (render OK) or
2379
+ # `{agent}_{ver}_architecture.md.error` (render raised) into the
2380
+ # data_dir; we read whichever is present and plumb the fields through
2381
+ # the ctx. emit_result consumes the boolean to auto-promote
2382
+ # OK -> PARTIAL_OK when the tree landed but the diagram render failed.
2383
+ # filename rename — self-identifying shape. `tree_base` above
2384
+ # is for the JSON path (carries `_metadata_tree`); architecture uses
2385
+ # the unsuffixed agent+version base.
2386
+ arch_base = f"{args.agent_api_name}_{agent_version}"
2387
+ arch_path = data_dir / f"{arch_base}_architecture.md"
2388
+ arch_sidecar = data_dir / f"{arch_base}_architecture.md.error"
2389
+ architecture_path = str(arch_path) if arch_path.is_file() else ""
2390
+ render_failed = arch_sidecar.is_file()
2391
+ render_error_detail = ""
2392
+ if render_failed:
2393
+ try:
2394
+ raw = arch_sidecar.read_text(errors="replace").strip()
2395
+ except OSError:
2396
+ raw = ""
2397
+ if raw:
2398
+ # Single-line cap, 200-char truncation, scrubbed via the
2399
+ # rest_client redactor (same contract as write_emit_ctx).
2400
+ from rest_client import redact_text as _redact
2401
+ render_error_detail = _redact(raw.splitlines()[0])[:200]
2402
+
2403
+ ctx = {
2404
+ "status": "PARTIAL_OK" if tree.get("_partial") else "OK",
2405
+ "error_detail": "",
2406
+ "agent_api_name": args.agent_api_name,
2407
+ "agent_version": bot_info["version"],
2408
+ "version_auto_picked": bot_info["version_auto_picked"],
2409
+ "agent_generation": tree.get("agent", {}).get("generation", "unknown"),
2410
+ "bot_id": bot_info["bot_id"],
2411
+ "org_id_15": org_id_15,
2412
+ # Gap 3 fix (2026-05-05): the 18-char id is available from
2413
+ # `sf org display` in _derive_org_ids but was previously dropped.
2414
+ # Now threaded from pipeline entry so the RESULT contract field is
2415
+ # actually populated on success.
2416
+ "org_id_18": org_id_18,
2417
+ "cache_hit": False,
2418
+ "cached_at_utc": _read_built_at_utc(cache_dir),
2419
+ # Gap 4 fix (2026-05-05): non-cache-hit runs write the manifest into
2420
+ # `cache_dir` (see _run_finalize) so the field should point at the
2421
+ # same path a subsequent invocation would probe. Caller passes the
2422
+ # already-computed cache_dir; we skip the leading-empty fallback
2423
+ # only when it's truly unknown (shouldn't happen on _emit_ok).
2424
+ "cache_path": str(cache_dir) if cache_dir is not None else "",
2425
+ "output_json_path": str(data_dir / f"{tree_base}.json"),
2426
+ # summary.md dropped from the output contract.
2427
+ "output_summary_path": "",
2428
+ "node_count": int(tree.get("node_count", 0) or 0),
2429
+ "depth": int(tree.get("depth", 0) or 0),
2430
+ "partial": bool(tree.get("_partial", False)),
2431
+ "partial_reason": tree.get("_partial_reason") or "",
2432
+ "pending_fetches_count": pending_total,
2433
+ "unresolved_count": len(tree.get("_unresolved", []) or []),
2434
+ "available_bots": "",
2435
+ "available_versions": "",
2436
+ # Bug fix (2026-05-05): see _emit_fail note — start_epoch threaded
2437
+ # from pipeline entry so WALL_TIME_SECONDS reflects the full run.
2438
+ "start_epoch": start_epoch if start_epoch is not None else time.time(),
2439
+ "data_dir": str(data_dir),
2440
+ "work_dir": str(work_dir),
2441
+ # architecture-render outcome signals.
2442
+ "architecture_path": architecture_path,
2443
+ "render_failed": render_failed,
2444
+ "render_error_detail": render_error_detail,
2445
+ }
2446
+ (work_dir / ".emit_ctx.json").write_text(json.dumps(ctx, indent=2))
2447
+ return 0
2448
+
2449
+
2450
+ # ---------------------------------------------------------------------------
2451
+ # Entry point
2452
+ # ---------------------------------------------------------------------------
2453
+
2454
+
2455
+ def _run_pipeline(args: argparse.Namespace, start_epoch: float) -> int: # noqa: PLR0911, PLR0915
2456
+ """Execute the 12-phase pipeline. Extracted from `main()` so the
2457
+ top-level entry point can wrap any uncaught exception in a RESULT
2458
+ block .
2459
+
2460
+ Every structured failure path here already routes through
2461
+ `_emit_fail` and returns a non-zero exit code. Exceptions that
2462
+ escape this function are, by definition, bugs we hadn't thought of
2463
+ yet — `main()` catches them so the skill contract (RESULT block on
2464
+ every exit path) holds regardless.
2465
+ """
2466
+ work_dir = Path(args.work_dir)
2467
+ work_dir.mkdir(parents=True, exist_ok=True)
2468
+
2469
+ # Phase 2 Batch 1: single creds cell shared between provider + refresh.
2470
+ # Refresh mutates the cell; provider reads it on every attempt — this
2471
+ # is the `` refresh contract.
2472
+ #
2473
+ # Wave B fetches run N concurrent Flow.Metadata
2474
+ # calls through parallel_retrieve.fetch_bodies_parallel. `refresh_fn`
2475
+ # serializes behind a lock + 1-second monotonic dedupe window so
2476
+ # concurrent 401s don't each fork their own `sf org display`. See
2477
+ # `_build_creds_plumbing`.
2478
+ try:
2479
+ initial = _resolve_creds(args.org_alias)
2480
+ except (AuthRequired, SfCliError) as e:
2481
+ return _emit_fail(
2482
+ args, None, "AUTH_REQUIRED",
2483
+ error_detail=redact_error(e),
2484
+ start_epoch=start_epoch,
2485
+ )
2486
+
2487
+ creds_provider, refresh_fn, _creds_cell = _build_creds_plumbing(
2488
+ initial,
2489
+ resolve_creds=lambda: _resolve_creds(args.org_alias),
2490
+ )
2491
+
2492
+ # Phase 2.5: derive org_id_15 + org_id_18 + api_version
2493
+ try:
2494
+ org_id_15, org_id_18, api_version = _derive_org_ids(args.org_alias)
2495
+ except (AuthRequired, SfCliError) as e:
2496
+ return _emit_fail(
2497
+ args, None, "AUTH_REQUIRED",
2498
+ error_detail=redact_error(e),
2499
+ start_epoch=start_epoch,
2500
+ )
2501
+
2502
+ # Phase 3: probe channels
2503
+ channels = probe_channels(
2504
+ args.org_alias, org_id_15, api_version,
2505
+ force_refresh=args.reprobe,
2506
+ )
2507
+ if channels.get("status") == "PROBE_FAILED":
2508
+ # Plan suggested STATUS=SCHEMA_DRIFT; emit_result's STATUS enum
2509
+ # doesn't include that value. Mapping to RETRIEVE_FAILED with a
2510
+ # "schema-drift" ERROR_DETAIL preserves the existing enum
2511
+ # contract while surfacing the cause. A future batch may add
2512
+ # SCHEMA_DRIFT to the enum; that change lives in emit_result.
2513
+ missing = [
2514
+ (sobj, e.get("mandatory_missing", []))
2515
+ for sobj, e in (channels.get("channels") or {}).items()
2516
+ if e.get("mandatory_missing")
2517
+ ]
2518
+ return _emit_fail(
2519
+ args, None, "RETRIEVE_FAILED",
2520
+ error_detail=f"schema-drift: mandatory fields missing: {missing[:3]}",
2521
+ start_epoch=start_epoch,
2522
+ )
2523
+
2524
+ # Phase 4: resolve bot + version
2525
+ try:
2526
+ bot_info = _resolve_bot(
2527
+ args.agent_api_name, args.agent_version,
2528
+ creds_provider, refresh_fn,
2529
+ api_version=api_version,
2530
+ )
2531
+ except (RestClientError, SoqlParamError) as e:
2532
+ return _emit_fail(
2533
+ args, None, "AUTH_REQUIRED",
2534
+ error_detail=redact_error(e),
2535
+ start_epoch=start_epoch,
2536
+ )
2537
+
2538
+ if bot_info is None:
2539
+ # AGENT_NOT_FOUND — emit without a list-of-available-bots context.
2540
+ # The unbounded bot-list SELECT was removed (LIMIT-less unfiltered
2541
+ # query on BotDefinition). Operators can run their own SOQL if
2542
+ # they need to enumerate available bots.
2543
+ return _emit_fail(
2544
+ args,
2545
+ {"org_id_15": org_id_15},
2546
+ "AGENT_NOT_FOUND",
2547
+ error_detail=f"BotDefinition.DeveloperName '{args.agent_api_name}' not found",
2548
+ start_epoch=start_epoch,
2549
+ )
2550
+
2551
+ if bot_info.get("_version_not_found"):
2552
+ vers_csv = ",".join(
2553
+ f"{v['version']}({v['status']})" for v in bot_info.get("all_versions", [])
2554
+ )
2555
+ return _emit_fail(
2556
+ args,
2557
+ {"available_versions": vers_csv, "org_id_15": org_id_15},
2558
+ "AGENT_VERSION_NOT_FOUND",
2559
+ error_detail=f"No matching BotVersion (requested: {args.agent_version!r})",
2560
+ start_epoch=start_epoch,
2561
+ )
2562
+
2563
+ # Phase 5: cache check
2564
+ data_dir = build_agent_data_dir(org_id_15, args.agent_api_name, bot_info["version"])
2565
+ cache_dir = build_agent_cache_dir(org_id_15, args.agent_api_name, bot_info["version"])
2566
+ if not args.force_refresh:
2567
+ manifest = _cache_is_fresh(cache_dir)
2568
+ if manifest is not None:
2569
+ return _emit_cache_hit(
2570
+ args, data_dir, cache_dir, manifest,
2571
+ start_epoch=start_epoch,
2572
+ org_id_15=org_id_15,
2573
+ org_id_18=org_id_18,
2574
+ )
2575
+
2576
+ # Phase 6: Wave A — 7 queries, DAG-ordered parallel layers. A1 now
2577
+ # takes (agent_api_name, version) and resolves the canonical planner
2578
+ # DeveloperName from the live chain naming invariant (v1 = <Agent>,
2579
+ # vN = <Agent>...%\_vN); the row's DeveloperName becomes the
2580
+ # authoritative `planner_name` for finalize/render downstream.
2581
+ try:
2582
+ wave_a = _run_wave_a(
2583
+ args.agent_api_name, bot_info["version"],
2584
+ creds_provider, refresh_fn,
2585
+ api_version=api_version,
2586
+ parallelism=args.parallelism,
2587
+ )
2588
+ except (RestClientError, SoqlParamError) as e:
2589
+ return _emit_fail(
2590
+ args, None, "RETRIEVE_FAILED",
2591
+ error_detail=f"wave-a-failed:{redact_error(e)}",
2592
+ start_epoch=start_epoch,
2593
+ )
2594
+
2595
+ if wave_a is None:
2596
+ return _emit_fail(
2597
+ args, {"org_id_15": org_id_15},
2598
+ "AGENT_NOT_FOUND",
2599
+ error_detail=(
2600
+ f"GenAiPlannerDefinition chain not found for "
2601
+ f"agent={args.agent_api_name!r} version={bot_info['version']!r}"
2602
+ ),
2603
+ start_epoch=start_epoch,
2604
+ )
2605
+
2606
+ # Phase 7: join Wave A → bundle-shaped dict
2607
+ bundle_parsed = _join_wave_a_to_bundle(bot_info, wave_a)
2608
+
2609
+ # Phase 8: Wave B — body fetches
2610
+ try:
2611
+ wave_b = _run_wave_b(
2612
+ bundle_parsed,
2613
+ creds_provider, refresh_fn,
2614
+ api_version=api_version,
2615
+ org_alias=args.org_alias,
2616
+ parallelism=args.parallelism,
2617
+ )
2618
+ except (RestClientError, SoqlParamError) as e:
2619
+ return _emit_fail(
2620
+ args, None, "RETRIEVE_FAILED",
2621
+ error_detail=f"wave-b-failed:{redact_error(e)}",
2622
+ start_epoch=start_epoch,
2623
+ )
2624
+
2625
+ # Phase 8.5: iterative Wave B — follow subflow + apex refs from fetched
2626
+ # Flow.Metadata bodies until fixed-point. Without this pass, shared
2627
+ # utility flows (handleFlowFault) and nested subflows ship as empty
2628
+ # leaves even though their bodies are reachable via Tooling API.
2629
+ # Iteration cap safeguards against pathological flow graphs.
2630
+ try:
2631
+ wave_b = _iterate_wave_b(
2632
+ wave_b,
2633
+ creds_provider, refresh_fn,
2634
+ api_version=api_version,
2635
+ org_alias=args.org_alias,
2636
+ parallelism=args.parallelism,
2637
+ max_iterations=5,
2638
+ )
2639
+ except (RestClientError, SoqlParamError) as e:
2640
+ return _emit_fail(
2641
+ args, None, "RETRIEVE_FAILED",
2642
+ error_detail=f"wave-b-iter-failed:{redact_error(e)}",
2643
+ start_epoch=start_epoch,
2644
+ )
2645
+
2646
+ # Surface Wave-A layer-2/3 task failures alongside Wave-B's so the
2647
+ # downstream `_run_parse_wave` sweep folds them into `tree["_unresolved"]`
2648
+ # and `_partial_reason` flips to PARTIAL_OK.
2649
+ wave_a_unresolved = wave_a.get("unresolved") or []
2650
+ if wave_a_unresolved:
2651
+ wave_b["unresolved"] = [*wave_a_unresolved, *(wave_b.get("unresolved") or [])]
2652
+
2653
+ # normalize Flow-ID InvocationTargets → DeveloperName.
2654
+ # Classic ReAct bots occasionally store NGA-style 300Uv-prefix Flow IDs
2655
+ # in GenAiFunctionDefinition.InvocationTarget (observed in one real-org
2656
+ # benchmark run, 6 flows out of 6). Wave B's fetch_flow_definition_by_ids
2657
+ # successfully resolves them, but the resolved DeveloperName never
2658
+ # propagates back into bundle_parsed — so parse_wave sees the raw ID as
2659
+ # the flow's api_name, which never matches visited["FLOW"] (keyed on
2660
+ # DeveloperName), and every such flow ends up in _pending_fetches.
2661
+ # Result: PARTIAL_OK on what should be OK, plus unreadable Flow IDs in
2662
+ # rendered architecture.md.
2663
+ #
2664
+ # Fix: rewrite bundle_parsed's action invocationTarget in-place from
2665
+ # ID → DeveloperName using wave_b["flow_def_rows"] (both the IN-by-names
2666
+ # and the IN-by-ids branches populate it). Unresolved IDs (Flow not
2667
+ # found in the org) stay as-is and will land in _pending_fetches as
2668
+ # intended (they really are unresolved).
2669
+ _normalize_flow_id_targets(bundle_parsed, wave_b["flow_def_rows"])
2670
+
2671
+ # Bug 1 fix (2026-05-05): analogous rewrite for GenAiPromptTemplate Ids.
2672
+ # Wave B's prompt-template Id fetch resolves 0hf-prefix Ids to
2673
+ # DeveloperNames; without this rewrite the bundle would enqueue the
2674
+ # raw Id into _pending_fetches.PROMPT_TEMPLATE and the downstream
2675
+ # Metadata retrieve would never match.
2676
+ _normalize_prompt_template_id_targets(
2677
+ bundle_parsed, wave_b.get("prompt_template_id_rows") or [],
2678
+ )
2679
+
2680
+ # Gap B fix (2026-05-05): analogous rewrite for ApexClass Ids.
2681
+ # Wave B's fetch_apex_bodies_by_ids resolves 01p-prefix Ids to ApexClass
2682
+ # Name; without this rewrite the bundle would enqueue the raw Id into
2683
+ # _pending_fetches.APEX and the tree would render the bare Id instead
2684
+ # of the class name.
2685
+ _normalize_apex_id_targets(
2686
+ bundle_parsed, wave_b.get("apex_rows") or [],
2687
+ )
2688
+
2689
+ # Gap C fix (2026-05-05): retrieve GenAiPromptTemplate bodies.
2690
+ # GenAiPromptTemplate is NOT SOQL-queryable (Tooling or Data API). The
2691
+ # only way to fetch the body is `sf project retrieve start
2692
+ # --metadata GenAiPromptTemplate:<name>,...`. After
2693
+ # _normalize_prompt_template_id_targets has rewritten 0hf-Ids to
2694
+ # DeveloperNames, collect the names and retrieve in a single sf
2695
+ # subprocess call. The resulting bodies get stashed on wave_b so
2696
+ # _run_parse_wave can stamp them onto PROMPT_TEMPLATE leaves (parallel
2697
+ # to the Apex/Flow signature stamping pattern).
2698
+ prompt_template_names = _collect_prompt_template_names(bundle_parsed)
2699
+ prompt_template_bodies: dict[str, dict] = {}
2700
+ if prompt_template_names:
2701
+ try:
2702
+ prompt_template_bodies = retrieve_prompt_templates(
2703
+ args.org_alias,
2704
+ sorted(prompt_template_names),
2705
+ work_dir,
2706
+ )
2707
+ except AuthRequired:
2708
+ raise
2709
+ except SfCliError as e:
2710
+ wave_b.setdefault("unresolved", []).append({
2711
+ "kind": "PROMPT_TEMPLATE",
2712
+ "reason": f"prompt-template-retrieve-failed:{redact_error(e)}",
2713
+ })
2714
+ wave_b["prompt_template_bodies"] = prompt_template_bodies
2715
+
2716
+ # Phase 9: parse_wave -> declared_action_tree.json
2717
+ try:
2718
+ tree = _run_parse_wave(bot_info, bundle_parsed, wave_b, args, work_dir)
2719
+ except (OSError, KeyError) as e:
2720
+ return _emit_fail(
2721
+ args, None, "WRITE_FAILED",
2722
+ error_detail=f"parse-wave-failed:{redact_error(e)}",
2723
+ start_epoch=start_epoch,
2724
+ )
2725
+
2726
+ # Phase 10: render architecture.md — invoked inline from _run_finalize
2727
+ # so the write lands in the same staging dir as the tree JSON and
2728
+ # participates in the atomic _swap_dir_atomic below. See P2.2-1.
2729
+
2730
+ # Flow-nested prompt-template catch-up (2026-05-05). The bundle-scoped
2731
+ # retrieve at step 1 above only covers prompt templates declared as
2732
+ # top-level topic/planner InvocationTargets. Templates referenced from
2733
+ # inside a Flow (via a `generatePromptResponse` actionCall) are
2734
+ # discovered during parse_wave's BFS of flow XML — too late for the
2735
+ # first retrieve. Without this second pass their `_body_available`
2736
+ # stays False and the md renders `_Body not retrieved._` with no
2737
+ # PARTIAL flag (silent content loss). `_stamp_prompt_template_bodies`
2738
+ # is idempotent, so re-stamping already-stamped leaves is safe.
2739
+ flow_nested_names: set[str] = set()
2740
+ _collect_flow_nested_prompt_template_names(
2741
+ tree["root"], prompt_template_bodies, flow_nested_names,
2742
+ )
2743
+ if flow_nested_names:
2744
+ try:
2745
+ more_bodies = retrieve_prompt_templates(
2746
+ args.org_alias,
2747
+ sorted(flow_nested_names),
2748
+ work_dir,
2749
+ )
2750
+ except AuthRequired:
2751
+ raise
2752
+ except SfCliError as e:
2753
+ tree.setdefault("_unresolved", []).append({
2754
+ "kind": "PROMPT_TEMPLATE",
2755
+ "reason": f"prompt-template-retrieve-failed:{redact_error(e)}",
2756
+ })
2757
+ else:
2758
+ prompt_template_bodies.update(more_bodies)
2759
+ _stamp_prompt_template_bodies(tree["root"], prompt_template_bodies)
2760
+ # _kind_counts / _pending_fetches are unchanged: the leaves
2761
+ # already existed and were counted; this pass only attaches
2762
+ # body content to them. No BFS-kind reshuffling needed.
2763
+
2764
+ # Phase 11: finalize. The canonical planner_name now comes from the
2765
+ # resolved planner row (Wave A), which joins into bundle_parsed as
2766
+ # `plannerName`; fall back to the agent api name if the resolver
2767
+ # returned a row without a DeveloperName (shouldn't happen on a
2768
+ # healthy planner but keeps finalize's _partial flag well-defined).
2769
+ planner_name = bundle_parsed.get("plannerName") or args.agent_api_name
2770
+ try:
2771
+ _run_finalize(
2772
+ data_dir, cache_dir, tree, work_dir,
2773
+ args.agent_api_name, bot_info["version"],
2774
+ planner_name,
2775
+ )
2776
+ except OSError as e:
2777
+ return _emit_fail(
2778
+ args, None, "WRITE_FAILED",
2779
+ error_detail=f"finalize-failed:{redact_error(e)}",
2780
+ start_epoch=start_epoch,
2781
+ )
2782
+
2783
+ # Phase 12: emit RESULT
2784
+ return _emit_ok(
2785
+ args, data_dir, tree, bot_info, org_id_15,
2786
+ start_epoch=start_epoch,
2787
+ cache_dir=cache_dir,
2788
+ org_id_18=org_id_18,
2789
+ )
2790
+
2791
+
2792
+ def main(argv: list[str] | None = None) -> int:
2793
+ """Entry point — parses args, runs pipeline, guarantees a RESULT block.
2794
+
2795
+ the skill contract promises that every exit
2796
+ path emits `=== RESULT ===` with a structured STATUS. The prior
2797
+ implementation let any uncaught exception from the pipeline (e.g.
2798
+ the HTTP 405 from , or any future bug we haven't foreseen)
2799
+ propagate to the top of the process — the user saw a Python
2800
+ traceback on stderr and the wrapper skill never got its RESULT
2801
+ block. We now wrap `_run_pipeline` in a broad `except Exception` and
2802
+ funnel uncaught failures through `_emit_fail` with
2803
+ STATUS=RETRIEVE_FAILED + ERROR_DETAIL="uncaught-exception: <redacted
2804
+ message>". `redact_error` keeps tokens / full-URL querystrings out
2805
+ of the ctx file. `SystemExit` + `KeyboardInterrupt` are NOT caught —
2806
+ argparse's `--help` path + Ctrl-C must propagate normally.
2807
+ """
2808
+ args = parse_args(argv)
2809
+ # MUST happen before any pipeline phase reads DATA_ROOT / CACHE_ROOT.
2810
+ # See _apply_path_overrides docstring for the 3-level rebind contract.
2811
+ _apply_path_overrides(args)
2812
+ # Bug fix (2026-05-05): capture start_epoch ONCE at real pipeline entry
2813
+ # and thread it through every _emit_* call so WALL_TIME_SECONDS measures
2814
+ # actual pipeline duration, not ctx-write→emit_result drift.
2815
+ start_epoch = time.time()
2816
+ try:
2817
+ return _run_pipeline(args, start_epoch)
2818
+ except Exception as exc:
2819
+ # broad catch — anything that reaches here is a bug
2820
+ # but the skill contract requires a structured exit. redact_error
2821
+ # strips bearer tokens and accessToken values from the message
2822
+ # ; the exception class name leads the detail so triage
2823
+ # can still identify the shape even when the message is terse.
2824
+ redacted = redact_error(exc)
2825
+ return _emit_fail(
2826
+ args,
2827
+ None,
2828
+ "RETRIEVE_FAILED",
2829
+ error_detail=f"uncaught-exception: {redacted}",
2830
+ start_epoch=start_epoch,
2831
+ )
2832
+
2833
+
2834
+ if __name__ == "__main__":
2835
+ sys.exit(main())