pi-apexlang 0.2.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -5
- package/THIRD_PARTY_NOTICES.md +2 -2
- package/UPSTREAM.json +2 -2
- package/docs/assets/overview.en.png +0 -0
- package/docs/assets/overview.en.svg +89 -0
- package/docs/assets/overview.uk.png +0 -0
- package/docs/assets/overview.uk.svg +89 -0
- package/docs/en/README.md +41 -0
- package/docs/en/architecture.md +73 -0
- package/docs/en/getting-started.md +77 -0
- package/docs/en/maintenance.md +83 -0
- package/docs/en/tool-reference.md +85 -0
- package/docs/uk/README.md +41 -0
- package/docs/uk/architecture.md +73 -0
- package/docs/uk/getting-started.md +77 -0
- package/docs/uk/maintenance.md +83 -0
- package/docs/uk/tool-reference.md +85 -0
- package/extensions/apexlang/index.ts +19 -10
- package/extensions/lib/apexlang-cli.d.mts +1 -2
- package/extensions/lib/apexlang-cli.mjs +18 -13
- package/extensions/lib/apexlang-local-validate.mjs +83 -0
- package/extensions/lib/apexlang-local-validator.py +116 -0
- package/extensions/lib/apexlang-runtime-validate.mjs +76 -0
- package/package.json +2 -1
- package/skills/apexlang/APEXlang Skills and Workflows.md +325 -0
- package/skills/apexlang/README.md +6 -6
- package/skills/apexlang/RELEASE-NOTES.md +2 -2
- package/skills/apexlang/SKILL.md +24 -19
- package/skills/apexlang/agents/openai.yaml +4 -3
- package/skills/apexlang/assets/apex-generation/components.registry.json +1001 -16
- package/skills/apexlang/assets/apexlang/domains-catalog.json +6 -1
- package/skills/apexlang/assets/component-attributes.json +1924 -180
- package/skills/apexlang/assets/component-policies.json +19 -10
- package/skills/apexlang/assets/contracts/grammar-semantic-rules.json +134 -0
- package/skills/apexlang/assets/contracts/package-layers.json +56 -0
- package/skills/apexlang/assets/contracts/page-construction-packs.json +154 -0
- package/skills/apexlang/assets/contracts/page-patterns.json +119 -0
- package/skills/apexlang/assets/grammar/apexlang.ebnf +11743 -0
- package/skills/apexlang/assets/indexes/font-apex-icon-index.json +1699 -0
- package/skills/apexlang/assets/routing-catalog-main.json +11 -10
- package/skills/apexlang/assets/routing-load-policy.json +35 -9
- package/skills/apexlang/assets/rules-mapping.json +110 -2
- package/skills/apexlang/assets/rules.catalog.json +1298 -0
- package/skills/apexlang/assets/validator-fix-recipes.json +372 -17
- package/skills/apexlang/assets/workspace-intelligence.json +7 -10
- package/skills/apexlang/manifest.json +268 -12
- package/skills/apexlang/references/domains/README.md +1 -1
- package/skills/apexlang/references/domains/page-components/buttons.md +2 -2
- package/skills/apexlang/references/domains/page-components/page-items.md +3 -3
- package/skills/apexlang/references/domains/page-components/regions/region-display-selector/workflow-region-display-selector.md +69 -0
- package/skills/apexlang/references/domains/page-components/regions.md +1 -0
- package/skills/apexlang/references/domains/template-components/comments.md +61 -0
- package/skills/apexlang/references/domains/template-components/registry.md +2 -0
- package/skills/apexlang/references/domains/template-components/templates.md +47 -0
- package/skills/apexlang/references/domains/template-components/timeline.md +51 -0
- package/skills/apexlang/references/ops/one-message-router-contract.md +2 -2
- package/skills/apexlang/references/ops/runtime-gates/01-direct-sqlcl-import.md +1 -1
- package/skills/apexlang/references/ops/runtime-gates/02-direct-sqlcl-validate-gate.md +1 -1
- package/skills/apexlang/references/ops/runtime-gates.md +17 -16
- package/skills/apexlang/references/ops/sqlcl-agents/00-connection-gate.md +7 -7
- package/skills/apexlang/references/ops/sqlcl.md +7 -8
- package/skills/apexlang/references/policies/compiler-prop-map.md +6 -4
- package/skills/apexlang/references/policies/governance/00-governance.md +2 -2
- package/skills/apexlang/references/policies/memory-bank/00-guard/ai.guard.md +126 -922
- package/skills/apexlang/references/policies/memory-bank/20-data/apex.logic.md +3 -3
- package/skills/apexlang/references/policies/memory-bank/20-data/db.connection.md +9 -11
- package/skills/apexlang/references/policies/memory-bank/30-pages/apex.cards-page.md +95 -0
- package/skills/apexlang/references/policies/memory-bank/30-pages/apex.page.md +2 -2
- package/skills/apexlang/references/policies/memory-bank/30-pages/apex.smart-filter-search.md +145 -74
- package/skills/apexlang/references/policies/memory-bank/40-components/apex.region-interactions.md +9 -2
- package/skills/apexlang/references/policies/memory-bank/40-components/apex.region-media.md +6 -5
- package/skills/apexlang/references/policies/memory-bank/systemPatterns.md +9 -1
- package/skills/apexlang/references/workflows/apex-generation/agents/20-agent-draft.md +51 -232
- package/skills/apexlang/references/workflows/apex-generation/agents/30-agent-critique.md +49 -449
- package/skills/apexlang/references/workflows/apex-generation/agents/40-agent-revision.md +38 -238
- package/skills/apexlang/references/workflows/apex-generation/nlu/nlu-routing-test-matrix.md +8 -2
- package/skills/apexlang/references/workflows/apex-generation/nlu/nlu-routing-validation-notes.md +19 -3
- package/skills/apexlang/references/workflows/apex-generation/registry.md +15 -1
- package/skills/apexlang/references/workflows/apex-generation/templates.md +1 -1
- package/skills/apexlang/references/workflows/apex-generation.md +1 -1
- package/skills/apexlang/references/workflows/apexlang/apexlang-execution-model.md +5 -5
- package/skills/apexlang/references/workflows/apexlang/prompt-contracts.md +81 -10
- package/skills/apexlang/references/workflows/apexlang/workflow-create-app-from-fr-and-model.md +18 -7
- package/skills/apexlang/release-notes.json +156 -0
- package/skills/apexlang/runtime/grammar_contract.mjs +1166 -0
- package/skills/apexlang/runtime/internal/python/format_apexlang.py +210 -0
- package/skills/apexlang/runtime/internal/python/validate_apexlang.py +14142 -5843
- package/skills/apexlang/runtime/internal/python/validator_common.py +2 -0
- package/skills/apexlang/runtime/lib/catalogs.mjs +1026 -0
- package/skills/apexlang/runtime/lib/common.mjs +35 -0
- package/skills/apexlang/runtime/runtime.bundle.mjs +457 -57
- package/skills/apexlang/templates/items/combobox/combobox.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/date-picker/date-picker._common.md +1 -1
- package/skills/apexlang/templates/items/date-picker/date-picker.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/file-upload/file-upload._common.md +30 -24
- package/skills/apexlang/templates/items/file-upload/file-upload.compact-template.md +6 -0
- package/skills/apexlang/templates/items/file-upload/file-upload.explicit-defaults.md +23 -8
- package/skills/apexlang/templates/items/file-upload/file-upload.minimal.md +6 -0
- package/skills/apexlang/templates/items/hidden-item/hidden-item._common.md +1 -1
- package/skills/apexlang/templates/items/hidden-item/hidden-item.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/items._common.md +3 -2
- package/skills/apexlang/templates/items/list-manager/list-manager.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/markdown-editor/markdown-editor._common.md +1 -1
- package/skills/apexlang/templates/items/markdown-editor/markdown-editor.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/number-field/number-field._common.md +8 -6
- package/skills/apexlang/templates/items/number-field/number-field.explicit-defaults.md +12 -2
- package/skills/apexlang/templates/items/popup-lov/popup-lov.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/rich-text-editor/rich-text-editor._common.md +1 -1
- package/skills/apexlang/templates/items/rich-text-editor/rich-text-editor.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/select-many/standard.md +1 -1
- package/skills/apexlang/templates/items/shuttle/shuttle.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/switch/switch._common.md +8 -8
- package/skills/apexlang/templates/items/switch/switch.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/text-area/text-area._common.md +2 -3
- package/skills/apexlang/templates/items/text-area/text-area.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/text-area/text-area.required-length.md +1 -3
- package/skills/apexlang/templates/items/text-autocomplete/text-autocomplete.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/text-autocomplete/text-autocomplete.required-length.md +1 -3
- package/skills/apexlang/templates/items/text-field/text-field._common.md +2 -3
- package/skills/apexlang/templates/items/text-field/text-field.explicit-defaults.md +1 -1
- package/skills/apexlang/templates/items/text-field/text-field.required-length.md +1 -3
- package/skills/apexlang/templates/page-examples/faceted-search/faceted-search.example.md +0 -5
- package/skills/apexlang/templates/page-examples/form-page/form-page.example.md +0 -9
- package/skills/apexlang/templates/page-examples/interactive-report-page/interactive-report-page.example.md +2 -2
- package/skills/apexlang/templates/page-examples/login-page/login-page.example.md +0 -8
- package/skills/apexlang/templates/page-examples/task-definition-initiated-tasks-page/task-definition-initiated-tasks-page.example.md +7 -17
- package/skills/apexlang/templates/page-examples/task-definition-my-tasks-page/task-definition-my-tasks-page.example.md +7 -65
- package/skills/apexlang/templates/page-examples/task-definition-task-details/task-definition-task-details.example.md +38 -201
- package/skills/apexlang/templates/region-components/calendar/calendar.custom-styling.md +3 -1
- package/skills/apexlang/templates/region-components/calendar/calendar.faceted-search.md +3 -2
- package/skills/apexlang/templates/region-components/cards/README.md +12 -4
- package/skills/apexlang/templates/region-components/cards/cards._common.md +176 -37
- package/skills/apexlang/templates/region-components/cards/cards._index.md +2 -1
- package/skills/apexlang/templates/region-components/cards/cards.refresh-after-dialog.md +46 -0
- package/skills/apexlang/templates/region-components/cards/cards.refresh-on-change.md +58 -0
- package/skills/apexlang/templates/region-components/cards/cards.rest-source.md +54 -18
- package/skills/apexlang/templates/region-components/cards/cards.standard.md +37 -21
- package/skills/apexlang/templates/region-components/chart/chart._series._common.md +1 -4
- package/skills/apexlang/templates/region-components/chart/chart.pie.md +6 -2
- package/skills/apexlang/templates/region-components/chart/chart.status-meter-gauge.md +1 -1
- package/skills/apexlang/templates/region-components/chart/chart.stock.md +2 -0
- package/skills/apexlang/templates/region-components/chart/features/chart.feature-chart-links.md +9 -7
- package/skills/apexlang/templates/region-components/faceted-search/faceted-search._common.md +1 -14
- package/skills/apexlang/templates/region-components/form/form._items._common.md +1 -5
- package/skills/apexlang/templates/region-components/interactive-report/interactive-report._columns._common.md +2 -6
- package/skills/apexlang/templates/region-components/interactive-report/interactive-report.page-header-actions.md +1 -7
- package/skills/apexlang/templates/region-components/list/README.md +1 -1
- package/skills/apexlang/templates/region-components/list/list._common.md +1 -1
- package/skills/apexlang/templates/region-components/map/map.backgrounds.md +12 -10
- package/skills/apexlang/templates/region-components/map/map.layer.extruded-polygons.md +16 -12
- package/skills/apexlang/templates/region-components/map/map.layer.heat-map.md +10 -7
- package/skills/apexlang/templates/region-components/map/map.layer.lines.md +10 -8
- package/skills/apexlang/templates/region-components/map/map.layer.polygons.md +21 -18
- package/skills/apexlang/templates/region-components/map/map.region.background-custom.md +25 -19
- package/skills/apexlang/templates/region-components/map/map.region.background-shared.md +19 -13
- package/skills/apexlang/templates/region-components/map/map.region.bbox-sql.md +13 -13
- package/skills/apexlang/templates/region-components/map/map.region.bbox-static.md +2 -2
- package/skills/apexlang/templates/region-components/map/map.region.browser-location.md +3 -7
- package/skills/apexlang/templates/region-components/map/map.region.init-position-sql.md +7 -7
- package/skills/apexlang/templates/region-components/region-display-selector/README.md +5 -2
- package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector._common.md +60 -7
- package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector._index.md +4 -1
- package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector.permutations.md +55 -0
- package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector.standard.md +91 -5
- package/skills/apexlang/templates/region-components/smart-filter-search/README.md +6 -2
- package/skills/apexlang/templates/region-components/smart-filter-search/smart-filter-search._common.md +107 -46
- package/skills/apexlang/templates/region-components/smart-filter-search/smart-filter-search._index.md +4 -3
- package/skills/apexlang/templates/region-components/smart-filter-search/smart-filter-search.standard.md +33 -17
- package/skills/apexlang/templates/shared-components/component-settings/component-settings._common.md +1 -0
- package/skills/apexlang/templates/shared-components/component-settings.example.md +1 -0
- package/skills/apexlang/templates/shared-components/email-templates.example.md +1 -1
- package/skills/apexlang/templates/shared-components/rest-data-sources/example_rest_data_source.example.md +40 -46
- package/skills/apexlang/templates/shared-components/task-definitions/action-task.example.md +2 -30
- package/skills/apexlang/templates/shared-components/task-definitions/approve-request.example.md +3 -31
- package/skills/apexlang/templates/template-components/README.md +27 -15
- package/skills/apexlang/templates/template-components/avatar/README.md +56 -0
- package/skills/apexlang/templates/template-components/avatar/avatar._common.md +149 -0
- package/skills/apexlang/templates/template-components/avatar/avatar._index.md +42 -0
- package/skills/apexlang/templates/template-components/{avatar._template_options.md → avatar/avatar._template_options.md} +1 -1
- package/skills/apexlang/templates/template-components/avatar/avatar.report-icon.md +48 -0
- package/skills/apexlang/templates/template-components/avatar/avatar.report-image-url-column.md +62 -0
- package/skills/apexlang/templates/template-components/avatar/avatar.report-initials.md +54 -0
- package/skills/apexlang/templates/template-components/badge/README.md +38 -0
- package/skills/apexlang/templates/template-components/badge/badge._common.md +183 -0
- package/skills/apexlang/templates/template-components/badge/badge._index.md +20 -0
- package/skills/apexlang/templates/template-components/badge/badge.report-link.md +66 -0
- package/skills/apexlang/templates/template-components/badge/badge.report-minimal.md +76 -0
- package/skills/apexlang/templates/template-components/comments/README.md +20 -0
- package/skills/apexlang/templates/template-components/comments/comments._common.md +43 -0
- package/skills/apexlang/templates/template-components/comments/comments._index.md +25 -0
- package/skills/apexlang/templates/template-components/{comments._template_options.md → comments/comments._template_options.md} +2 -1
- package/skills/apexlang/templates/template-components/comments/comments.apex-task-comments.md +77 -0
- package/skills/apexlang/templates/template-components/comments/comments.partial-column.md +120 -0
- package/skills/apexlang/templates/template-components/comments/comments.permutations.md +425 -0
- package/skills/apexlang/templates/template-components/content-row/README.md +1 -1
- package/skills/apexlang/templates/template-components/content-row/content-row._common.md +1 -1
- package/skills/apexlang/templates/template-components/content-row/content-row._index.md +1 -1
- package/skills/apexlang/templates/template-components/content-row/content-row._template_options.md +1 -1
- package/skills/apexlang/templates/template-components/flexbox-container/README.md +9 -0
- package/skills/apexlang/templates/template-components/flexbox-container/flexbox-container._index.md +13 -0
- package/skills/apexlang/templates/template-components/media-list/README.md +100 -0
- package/skills/apexlang/templates/template-components/media-list/media-list._common.md +174 -0
- package/skills/apexlang/templates/template-components/media-list/media-list._index.md +50 -0
- package/skills/apexlang/templates/template-components/{media-list._template_options.md → media-list/media-list._template_options.md} +8 -2
- package/skills/apexlang/templates/template-components/media-list/media-list.partial.md +50 -0
- package/skills/apexlang/templates/template-components/media-list/media-list.report-avatar-badge.md +76 -0
- package/skills/apexlang/templates/template-components/media-list/media-list.report-base.md +71 -0
- package/skills/apexlang/templates/template-components/media-list/media-list.report-grouped.md +40 -0
- package/skills/apexlang/templates/template-components/media-list/media-list.report-layouts.md +50 -0
- package/skills/apexlang/templates/template-components/media-list/media-list.report-link.md +53 -0
- package/skills/apexlang/templates/template-components/metric-card/README.md +19 -4
- package/skills/apexlang/templates/template-components/metric-card/metric-card._common.md +122 -29
- package/skills/apexlang/templates/template-components/metric-card/metric-card._index.md +6 -0
- package/skills/apexlang/templates/template-components/metric-card/metric-card._template_options.md +47 -2
- package/skills/apexlang/templates/template-components/metric-card/metric-card.partial-minimal.md +51 -0
- package/skills/apexlang/templates/template-components/metric-card/metric-card.permutations.md +56 -0
- package/skills/apexlang/templates/template-components/metric-card/metric-card.report-avatar-badge.md +98 -0
- package/skills/apexlang/templates/template-components/metric-card/metric-card.report-grouping-selection.md +131 -0
- package/skills/apexlang/templates/template-components/metric-card/metric-card.report-link.md +66 -0
- package/skills/apexlang/templates/template-components/metric-card/metric-card.report-minimal.md +97 -0
- package/skills/apexlang/templates/template-components/template-components.registry.json +90 -1
- package/skills/apexlang/templates/template-components/timeline/README.md +19 -0
- package/skills/apexlang/templates/template-components/timeline/timeline._common.md +43 -0
- package/skills/apexlang/templates/template-components/timeline/timeline._index.md +24 -0
- package/skills/apexlang/templates/template-components/{timeline._template_options.md → timeline/timeline._template_options.md} +2 -1
- package/skills/apexlang/templates/template-components/timeline/timeline.permutations.md +399 -0
- package/skills/apexlang/templates/template-components/timeline/timeline.report-sample-data.md +168 -0
- package/skills/apexlang/templates/workspace-components/credentials/credentials-for-open-ai.example.md +1 -1
- package/skills/apexlang/templates/workspace-components/generative-ai-services/open-ai.example.md +8 -6
- package/skills/apexlang/tools/apexctl.mjs +167 -4
- package/skills/apexlang/tools/compiler-truth-audit.mjs +95 -63
- package/skills/apexlang/tools/query-valid-props-context.mjs +30 -0
- package/skills/apexlang/tools/query-valid-props-normalize.mjs +1 -0
- package/skills/apexlang/tools/query-valid-props-runtime.mjs +13 -8
- package/skills/apexlang/tools/query-valid-props-semantics.mjs +391 -0
- package/skills/apexlang/tools/query-valid-props-template-components.mjs +15 -1
- package/skills/apexlang/tools/query-valid-props.mjs +198 -216
- /package/skills/apexlang/templates/template-components/{badge._template_options.md → badge/badge._template_options.md} +0 -0
- /package/skills/apexlang/templates/template-components/{flexbox-container._template_options.md → flexbox-container/flexbox-container._template_options.md} +0 -0
|
@@ -1,74 +1,135 @@
|
|
|
1
1
|
---
|
|
2
2
|
templateId: region.smart-filters.common
|
|
3
3
|
componentType: region
|
|
4
|
-
version: 1.
|
|
5
|
-
description: Shared contract for
|
|
4
|
+
version: 1.3
|
|
5
|
+
description: Shared contract for a Smart Filters region, its search child, and one secured base results region.
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Purpose
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Define the generation boundary for a Smart Filter Search experience without treating ticket fields as unproven APEXlang properties.
|
|
11
11
|
|
|
12
|
-
#
|
|
12
|
+
# Required Input Contract
|
|
13
|
+
|
|
14
|
+
Freeze these decisions in the Generation Plan before emitting a Smart Filters region:
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
| Name | Type | Contract |
|
|
17
|
+
|------|------|----------|
|
|
18
|
+
| `smartFiltersRegionStaticId` | string | Unique static id for the Smart Filters region. |
|
|
19
|
+
| `baseRegionStaticId` | string | Static id of the one authoritative filtered results region. |
|
|
20
|
+
| `baseSource` | object | Secured view or canonical SQL plus `object_evidence_source`; never inferred from examples. |
|
|
21
|
+
| `searchableAttributes` | non-empty ordered list | Explicit allowlist of base-source columns rendered to `source.dbColumns`. |
|
|
22
|
+
| `matchSemantics` | enum | One of `contains`, `starts`, or `exact`. |
|
|
23
|
+
| `minChars` | positive integer | Minimum input length that can run search or suggestions. |
|
|
24
|
+
| `maxLen` | positive integer | Maximum accepted input length; must be greater than or equal to `minChars`. |
|
|
25
|
+
| `tokenizationPolicy` | object | Stable whitespace, punctuation, case, accent, and token-order behavior. |
|
|
26
|
+
| `securityScope` | object | Effective authorization scheme and server-side condition for both regions and all suggestion/refinement sources. |
|
|
27
|
+
| `performanceReadiness` | object | Index strategy, statistics status, and expected cardinality evidence. |
|
|
28
|
+
| `settingsContract` | object | Ticket settings plus property-level compiler evidence for the target build. |
|
|
19
29
|
|
|
20
|
-
|
|
30
|
+
Validation boundary: artifact lint checks emitted topology, source/projection, allowlist order, scope, refinement shape, and supported settings; the plan gate checks object evidence, `no_rewrite`, search/compiler evidence, performance, and runtime acceptance. Use `apexlang validate --generation-plan <path>`; require it with `--require-smart-filter-generation-plan`.
|
|
31
|
+
|
|
32
|
+
# Generation Rules (MANDATORY)
|
|
21
33
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
| filters | optional | array | Filter definitions (radio/search/etc). |
|
|
29
|
-
| filter.itemName | conditional | string | Canonical page item name for child search filters, e.g. `P14_F_SEARCH`. |
|
|
34
|
+
1. Emit exactly one `smartFilters` region and bind it through `source.filteredRegion` to exactly one base results region.
|
|
35
|
+
2. Use `baseRegionStaticId` as the single binding value and declare the Smart Filters region before that target region.
|
|
36
|
+
3. Preserve the supplied secured-view or canonical-SQL base source. Do not rewrite, widen, or inject predicates into its SQL automatically.
|
|
37
|
+
4. Emit at least one `type: search` child whose `source.dbColumns` is the ordered `searchableAttributes` allowlist. Every entry must be projected by base source.
|
|
38
|
+
5. Keep filter children separate from the region shell and use page-scoped item names such as `P14_F_SEARCH`.
|
|
39
|
+
6. For APEX 24.2, target Classic Report, Cards, Map, or Calendar. Target a Map region rather than its layer, and prove exactly one layer source for the single-dataset contract. Never target Smart Filters, Faceted Search, or another non-results component.
|
|
30
40
|
|
|
31
|
-
# Output Template –
|
|
41
|
+
# Output Template – Region Shell
|
|
32
42
|
|
|
33
43
|
```apexlang
|
|
34
|
-
region {{
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
region {{smartFiltersRegionStaticId}} (
|
|
45
|
+
name: {{name}}
|
|
46
|
+
type: smartFilters
|
|
47
|
+
source {
|
|
48
|
+
filteredRegion: @{{baseRegionStaticId}}
|
|
49
|
+
}
|
|
50
|
+
{{filters}}
|
|
41
51
|
)
|
|
42
52
|
```
|
|
43
53
|
|
|
44
54
|
# Output Template – Search Filter Child
|
|
45
55
|
|
|
46
56
|
```apexlang
|
|
47
|
-
filter {{
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
filter {{searchFilterItemName}} (
|
|
58
|
+
type: search
|
|
59
|
+
label {
|
|
60
|
+
label: {{searchFilterLabel}}
|
|
61
|
+
}
|
|
62
|
+
layout {
|
|
63
|
+
sequence: {{searchFilterSequence}}
|
|
64
|
+
}
|
|
65
|
+
source {
|
|
66
|
+
dbColumns: {{searchableAttributes}}
|
|
67
|
+
}
|
|
58
68
|
)
|
|
59
69
|
```
|
|
60
70
|
|
|
71
|
+
# Search Behavior Contract
|
|
72
|
+
|
|
73
|
+
- Record exactly one default match semantic: `contains`, `starts`, or `exact`; record per-attribute overrides only when the selected compiler-supported shape can represent them.
|
|
74
|
+
- Do not execute search or suggestions below `minChars`. Reject input above `maxLen` predictably rather than silently changing the server-side value.
|
|
75
|
+
- Apply one frozen tokenization policy to search, suggestions, and refinements. It must define trimming, repeated whitespace, punctuation boundaries, case normalization, accent normalization, duplicate tokens, and token order.
|
|
76
|
+
- Use bind values for user input. Do not concatenate search text into the base SQL.
|
|
77
|
+
- `SMART_FILTER_SEARCH_BEHAVIOR_CONTRACT_REQUIRED_001` blocks generation unless exactly one semantic, positive integer bounds with `maxLen >= minChars`, every tokenization decision, and property-level compiler evidence are frozen in the Generation Plan.
|
|
78
|
+
- When the compiler has no property for a required behavior, keep it as a documented unresolved requirement and stop with Missing Inputs instead of inventing DSL or modifying the base SQL.
|
|
79
|
+
- Reject contradictory overrides, incomplete tokenization scope, unresolved compiler evidence, or `base_sql_rewrite: true` with `SMART_FILTER_SEARCH_BEHAVIOR_CONTRACT_REQUIRED_001`.
|
|
80
|
+
|
|
81
|
+
# Compiler-Gated Settings Contract
|
|
82
|
+
|
|
83
|
+
The requested UI contract is:
|
|
84
|
+
|
|
85
|
+
- `maxSuggestionChips: 100`
|
|
86
|
+
- `moreFiltersSuggestionChip: true`
|
|
87
|
+
- `compactNosThreshold: 10000`
|
|
88
|
+
- `showTotalRowCount`: an explicit boolean
|
|
89
|
+
- `totalRowCountLabel: Results` only when `showTotalRowCount` is `true`
|
|
90
|
+
|
|
91
|
+
Query active compiler metadata for every requested property. Emit a `settings` block only for properties exposed by the target build. `SMART_FILTER_SETTINGS_VALUE_REQUIRED_001` enforces each supported value and the conditional `Results` label. Missing compiler metadata stops with `SMART_FILTER_SETTINGS_COMPILER_EVIDENCE_REQUIRED_001`; unsupported properties stop with `SMART_FILTER_SETTINGS_UNSUPPORTED_001` until the target build or an approved alternative resolves the requirement. Never silently drop a requested setting or copy syntax from ticket prose.
|
|
92
|
+
|
|
93
|
+
# Security and Suggestion Contract
|
|
94
|
+
|
|
95
|
+
- The Smart Filters region and base region must have the same effective authorization scheme and server-side condition; both may be absent only when the page contract explicitly permits public access.
|
|
96
|
+
- Suggestions and refinements must derive from the same security-trimmed base dataset. Do not query a broader table, bypass a secured view, or omit tenant/row-level predicates.
|
|
97
|
+
- Prove every referenced object and searchable column through schema documentation, live metadata, or an exact user assertion.
|
|
98
|
+
|
|
99
|
+
# Performance Readiness Contract
|
|
100
|
+
|
|
101
|
+
- Record expected cardinality, current statistics status, and an index/search strategy aligned to each selected match semantic.
|
|
102
|
+
- Do not claim that a normal B-tree index solves substring `contains` searches. Record the proven text/function-based strategy or the accepted scan cost.
|
|
103
|
+
- Avoid wrapping searchable columns in functions unless matching function-based index evidence exists.
|
|
104
|
+
- Performance readiness remains unresolved while any required evidence is missing.
|
|
105
|
+
- `SMART_FILTER_PERFORMANCE_READINESS_REQUIRED_001` blocks generation while index strategy, statistics status, or expected-cardinality evidence is incomplete.
|
|
106
|
+
- For `contains`, reject a plain B-tree claim without text/function support or explicit accepted scan cost.
|
|
107
|
+
|
|
61
108
|
# Conditional Rendering Rules
|
|
62
109
|
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
110
|
+
- Use advanced DOM ids only when the selected scenario requires them.
|
|
111
|
+
- Emit categorical/range filter children only when their columns are in the base projection and their suggestion source satisfies the security contract.
|
|
112
|
+
- Set `totalRowCountLabel` only when `showTotalRowCount` is compiler-supported and true.
|
|
66
113
|
|
|
67
114
|
# Guardrails
|
|
68
115
|
|
|
69
|
-
- `
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
116
|
+
- `baseRegionStaticId` is mandatory, unique on the page, and resolves to one APEX 24.2 Classic Report, Cards, Map, or Calendar base region.
|
|
117
|
+
- `searchableAttributes` is an explicit allowlist; never infer it from all projected columns or `select *`.
|
|
118
|
+
- Search filters use `source.dbColumns`; do not collapse free-text search into `source.databaseColumn`.
|
|
119
|
+
- Do not rewrite base SQL for match, tokenization, suggestions, or security. Store the original in `base_source.canonical_sql` and require an exact emitted match (ignoring outer whitespace).
|
|
120
|
+
- Match named object evidence to actual SQL objects or `tableName`; secured-view evidence must record `object_type: view` and `secured: true`.
|
|
121
|
+
- Traverse `filterGroup` and nested `checkbox` refinements for inherited authorization, conditions, base columns, and suggestion sources.
|
|
122
|
+
- `SMART_FILTER_BASE_SOURCE_CONTRACT_REQUIRED_001` blocks until source mode, object evidence, projection, and no-rewrite are recorded.
|
|
123
|
+
- Filter LOV/value definitions must be subsets of the base region's security-trimmed data.
|
|
124
|
+
- Metadata export lookup: search for `Smart Filters`, `filteredRegion`, the base static id, and child filter metadata.
|
|
125
|
+
|
|
126
|
+
# Validation Checklist
|
|
127
|
+
|
|
128
|
+
- Exactly one base region is resolved and its static id matches `source.filteredRegion`.
|
|
129
|
+
- Every searchable attribute is projected by the proven base source and no unlisted attribute is searchable.
|
|
130
|
+
- Match semantics, `minChars`, `maxLen`, and tokenization are explicit and consistent.
|
|
131
|
+
- Settings evidence is property-specific for the target compiler build.
|
|
132
|
+
- Authorization, conditions, suggestions, and refinements share the base security scope.
|
|
133
|
+
- Index strategy, statistics status, and expected cardinality evidence are recorded.
|
|
134
|
+
- Refinement/suggestion `source.type` is `static` or `distinctValues`/`base`; reject shared, SQL, function, and unknown shapes.
|
|
135
|
+
- Each search/refinement child has label/help; plan runtime acceptance sets `result_refresh_without_reload` and `filtered_exports` to `true`.
|
|
@@ -13,6 +13,7 @@ Primary routing entrypoint for `smart-filter-search` templates.
|
|
|
13
13
|
|
|
14
14
|
# Load Order
|
|
15
15
|
|
|
16
|
-
1.
|
|
17
|
-
2. Load
|
|
18
|
-
3. Load
|
|
16
|
+
1. Resolve the `smart-filter-search` pattern and construction pack.
|
|
17
|
+
2. Load this file.
|
|
18
|
+
3. Load `smart-filter-search._common.md` and freeze every required input.
|
|
19
|
+
4. Load `smart-filter-search.standard.md` only when its exact component shape matches.
|
|
@@ -1,29 +1,45 @@
|
|
|
1
1
|
---
|
|
2
2
|
templateId: region.smart-filters.standard
|
|
3
3
|
componentType: region
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1
|
|
5
5
|
imports:
|
|
6
6
|
- smart-filter-search._common
|
|
7
|
-
description: Standard
|
|
7
|
+
description: Standard Smart Filters region with one search child bound to a secured base results region.
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
# Usage
|
|
11
|
+
|
|
12
|
+
Use only after the common contract has resolved `baseRegionStaticId`, the searchable allowlist, search behavior, security parity, performance evidence, and compiler-gated settings. Pair this component with the exact selected template for the base results region; this scenario does not invent a generic base-region shell.
|
|
13
|
+
|
|
10
14
|
# Output Template
|
|
11
15
|
|
|
12
|
-
```
|
|
16
|
+
```apexlang
|
|
13
17
|
region {{smartFiltersRegionStaticId}} (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
name: {{name}}
|
|
19
|
+
type: smartFilters
|
|
20
|
+
source {
|
|
21
|
+
filteredRegion: @{{baseRegionStaticId}}
|
|
22
|
+
}
|
|
23
|
+
layout {
|
|
24
|
+
sequence: {{layout.sequence}}
|
|
25
|
+
slot: {{layout.slot}}
|
|
26
|
+
}
|
|
27
|
+
appearance {
|
|
28
|
+
template: {{appearance.template}}
|
|
29
|
+
templateOptions: #DEFAULT#
|
|
30
|
+
}
|
|
31
|
+
filter {{searchFilterItemName}} (
|
|
32
|
+
type: search
|
|
33
|
+
label {
|
|
34
|
+
label: {{searchFilterLabel}}
|
|
35
|
+
}
|
|
36
|
+
layout {
|
|
37
|
+
sequence: {{searchFilterSequence}}
|
|
38
|
+
}
|
|
39
|
+
source {
|
|
40
|
+
dbColumns: {{searchableAttributes}}
|
|
41
|
+
}
|
|
42
|
+
)
|
|
43
|
+
{{additionalFilters}}
|
|
28
44
|
)
|
|
29
45
|
```
|
package/skills/apexlang/templates/shared-components/component-settings/component-settings._common.md
CHANGED
|
@@ -15,6 +15,7 @@ Define deterministic defaults for APEX component settings. Use this markdown fam
|
|
|
15
15
|
|
|
16
16
|
# Guardrails
|
|
17
17
|
- For current compiler compatibility, use `settings { attributes: {...} }` for component settings.
|
|
18
|
+
- Application-scoped plug-in attributes belong in a `componentSetting` declaration; do not add them to a page component's instance-level `settings` block.
|
|
18
19
|
- Do not emit direct keys inside `settings {}` (for example `display_as`, `mode`, `match_mode`).
|
|
19
20
|
- Do not invent unsupported component categories.
|
|
20
21
|
- Keep environment-specific values out of templates.
|
|
@@ -27,7 +27,7 @@ Markdown-preserved APEXlang example. Use this file for syntax and structure only
|
|
|
27
27
|
urlPathPrefix: /data/Pagination
|
|
28
28
|
}
|
|
29
29
|
/*STRICTLY - Use this ONLY when asked to do Synchronization to local table with Synchronization type as 'append' */
|
|
30
|
-
|
|
30
|
+
synchronization {
|
|
31
31
|
jobIsActive: true
|
|
32
32
|
localTableOwner: SAN
|
|
33
33
|
localTableName: {{source.table}}
|
|
@@ -35,7 +35,7 @@ Markdown-preserved APEXlang example. Use this file for syntax and structure only
|
|
|
35
35
|
httpRequestLimit: 1000
|
|
36
36
|
}
|
|
37
37
|
/*STRICTLY - Use this ONLY when asked to do Synchronization to local table with Synchronization type as 'merge' */
|
|
38
|
-
|
|
38
|
+
synchronization {
|
|
39
39
|
jobIsActive: true
|
|
40
40
|
localTableOwner: SAN
|
|
41
41
|
localTableName: {{source.table}}
|
|
@@ -44,7 +44,7 @@ Markdown-preserved APEXlang example. Use this file for syntax and structure only
|
|
|
44
44
|
httpRequestLimit: 1000
|
|
45
45
|
}
|
|
46
46
|
/*STRICTLY - Use this ONLY when asked to do Synchronization to local table with Synchronization type as 'replace' or 'fullRefreshDelete' */
|
|
47
|
-
|
|
47
|
+
synchronization {
|
|
48
48
|
jobIsActive: true
|
|
49
49
|
localTableOwner: SAN
|
|
50
50
|
localTableName: {{source.table}}
|
|
@@ -60,11 +60,8 @@ Markdown-preserved APEXlang example. Use this file for syntax and structure only
|
|
|
60
60
|
authentication {
|
|
61
61
|
credentials: @moviedb_api_key
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
pageSizeUrlParam: limit
|
|
66
|
-
rowOffsetUrlParam: offset
|
|
67
|
-
hasMoreRowsSelector: hasMore
|
|
63
|
+
comments {
|
|
64
|
+
comments: Confirm pagination settings with compiler-backed REST Data Source attributes before emission.
|
|
68
65
|
}
|
|
69
66
|
|
|
70
67
|
parameter search_query (
|
|
@@ -86,8 +83,8 @@ Markdown-preserved APEXlang example. Use this file for syntax and structure only
|
|
|
86
83
|
rowSelector: items
|
|
87
84
|
}
|
|
88
85
|
|
|
89
|
-
|
|
90
|
-
|
|
86
|
+
dataProfileColumn data (
|
|
87
|
+
columnName: DATA
|
|
91
88
|
source {
|
|
92
89
|
sequence: 1
|
|
93
90
|
dataType: varchar2
|
|
@@ -100,8 +97,8 @@ Markdown-preserved APEXlang example. Use this file for syntax and structure only
|
|
|
100
97
|
}
|
|
101
98
|
)
|
|
102
99
|
|
|
103
|
-
|
|
104
|
-
|
|
100
|
+
dataProfileColumn data-capacity (
|
|
101
|
+
columnName: DATA_CAPACITY
|
|
105
102
|
source {
|
|
106
103
|
sequence: 2
|
|
107
104
|
dataType: varchar2
|
|
@@ -114,8 +111,8 @@ Markdown-preserved APEXlang example. Use this file for syntax and structure only
|
|
|
114
111
|
}
|
|
115
112
|
)
|
|
116
113
|
|
|
117
|
-
|
|
118
|
-
|
|
114
|
+
dataProfileColumn data-hard-disk-size (
|
|
115
|
+
columnName: DATA_HARD_DISK_SIZE
|
|
119
116
|
source {
|
|
120
117
|
sequence: 3
|
|
121
118
|
dataType: varchar2
|
|
@@ -128,8 +125,8 @@ Markdown-preserved APEXlang example. Use this file for syntax and structure only
|
|
|
128
125
|
}
|
|
129
126
|
)
|
|
130
127
|
|
|
131
|
-
|
|
132
|
-
|
|
128
|
+
dataProfileColumn data-capacity-gb (
|
|
129
|
+
columnName: DATA_CAPACITY_GB
|
|
133
130
|
source {
|
|
134
131
|
sequence: 4
|
|
135
132
|
dataType: number
|
|
@@ -142,8 +139,8 @@ Markdown-preserved APEXlang example. Use this file for syntax and structure only
|
|
|
142
139
|
}
|
|
143
140
|
)
|
|
144
141
|
|
|
145
|
-
|
|
146
|
-
|
|
142
|
+
dataProfileColumn ID (
|
|
143
|
+
columnName: ID
|
|
147
144
|
source {
|
|
148
145
|
sequence: 5
|
|
149
146
|
dataType: number
|
|
@@ -158,8 +155,8 @@ Markdown-preserved APEXlang example. Use this file for syntax and structure only
|
|
|
158
155
|
}
|
|
159
156
|
)
|
|
160
157
|
|
|
161
|
-
|
|
162
|
-
|
|
158
|
+
dataProfileColumn NAME (
|
|
159
|
+
columnName: NAME
|
|
163
160
|
source {
|
|
164
161
|
sequence: 6
|
|
165
162
|
dataType: varchar2
|
|
@@ -173,8 +170,8 @@ Markdown-preserved APEXlang example. Use this file for syntax and structure only
|
|
|
173
170
|
}
|
|
174
171
|
)
|
|
175
172
|
|
|
176
|
-
|
|
177
|
-
|
|
173
|
+
dataProfileColumn {{source.dateColumn}} (
|
|
174
|
+
columnName: {{source.dateColumn}}
|
|
178
175
|
source {
|
|
179
176
|
sequence: 7
|
|
180
177
|
dataType: timestampWithTimeZone
|
|
@@ -189,8 +186,8 @@ Markdown-preserved APEXlang example. Use this file for syntax and structure only
|
|
|
189
186
|
}
|
|
190
187
|
)
|
|
191
188
|
|
|
192
|
-
|
|
193
|
-
|
|
189
|
+
dataProfileColumn {{source.amountColumn}} (
|
|
190
|
+
columnName: {{source.amountColumn}}
|
|
194
191
|
source {
|
|
195
192
|
sequence: 8
|
|
196
193
|
dataType: number
|
|
@@ -205,9 +202,7 @@ Markdown-preserved APEXlang example. Use this file for syntax and structure only
|
|
|
205
202
|
)
|
|
206
203
|
|
|
207
204
|
operation get_rows (
|
|
208
|
-
label
|
|
209
|
-
label: GET
|
|
210
|
-
}
|
|
205
|
+
label: GET
|
|
211
206
|
operation {
|
|
212
207
|
urlPattern: .
|
|
213
208
|
httpMethod: get
|
|
@@ -283,8 +278,8 @@ restDataSource icm-claims-data (
|
|
|
283
278
|
rowSelector: items
|
|
284
279
|
}
|
|
285
280
|
|
|
286
|
-
|
|
287
|
-
|
|
281
|
+
dataProfileColumn claim-id (
|
|
282
|
+
columnName: CLAIM_ID
|
|
288
283
|
source {
|
|
289
284
|
sequence: 1
|
|
290
285
|
dataType: number
|
|
@@ -294,8 +289,8 @@ restDataSource icm-claims-data (
|
|
|
294
289
|
}
|
|
295
290
|
)
|
|
296
291
|
|
|
297
|
-
|
|
298
|
-
|
|
292
|
+
dataProfileColumn claim-number (
|
|
293
|
+
columnName: CLAIM_NUMBER
|
|
299
294
|
source {
|
|
300
295
|
sequence: 3
|
|
301
296
|
dataType: varchar2
|
|
@@ -305,8 +300,8 @@ restDataSource icm-claims-data (
|
|
|
305
300
|
}
|
|
306
301
|
)
|
|
307
302
|
|
|
308
|
-
|
|
309
|
-
|
|
303
|
+
dataProfileColumn currency-code (
|
|
304
|
+
columnName: CURRENCY_CODE
|
|
310
305
|
source {
|
|
311
306
|
sequence: 6
|
|
312
307
|
dataType: varchar2
|
|
@@ -316,8 +311,8 @@ restDataSource icm-claims-data (
|
|
|
316
311
|
}
|
|
317
312
|
)
|
|
318
313
|
|
|
319
|
-
|
|
320
|
-
|
|
314
|
+
dataProfileColumn policy-id (
|
|
315
|
+
columnName: POLICY_ID
|
|
321
316
|
source {
|
|
322
317
|
sequence: 2
|
|
323
318
|
dataType: number
|
|
@@ -327,8 +322,8 @@ restDataSource icm-claims-data (
|
|
|
327
322
|
}
|
|
328
323
|
)
|
|
329
324
|
|
|
330
|
-
|
|
331
|
-
|
|
325
|
+
dataProfileColumn reported-date (
|
|
326
|
+
columnName: REPORTED_DATE
|
|
332
327
|
source {
|
|
333
328
|
sequence: 4
|
|
334
329
|
dataType: date
|
|
@@ -338,8 +333,8 @@ restDataSource icm-claims-data (
|
|
|
338
333
|
}
|
|
339
334
|
)
|
|
340
335
|
|
|
341
|
-
|
|
342
|
-
|
|
336
|
+
dataProfileColumn total-claimed-amount (
|
|
337
|
+
columnName: TOTAL_CLAIMED_AMOUNT
|
|
343
338
|
source {
|
|
344
339
|
sequence: 5
|
|
345
340
|
dataType: number
|
|
@@ -350,9 +345,7 @@ restDataSource icm-claims-data (
|
|
|
350
345
|
)
|
|
351
346
|
|
|
352
347
|
operation get (
|
|
353
|
-
label
|
|
354
|
-
label: GET
|
|
355
|
-
}
|
|
348
|
+
label: GET
|
|
356
349
|
operation {
|
|
357
350
|
urlPattern: .
|
|
358
351
|
httpMethod: get
|
|
@@ -361,14 +354,14 @@ restDataSource icm-claims-data (
|
|
|
361
354
|
)
|
|
362
355
|
|
|
363
356
|
operation post (
|
|
364
|
-
label
|
|
365
|
-
label: POST
|
|
366
|
-
}
|
|
357
|
+
label: POST
|
|
367
358
|
operation {
|
|
368
359
|
urlPattern: .
|
|
369
360
|
httpMethod: post
|
|
370
361
|
databaseOperation: insert
|
|
371
|
-
|
|
362
|
+
}
|
|
363
|
+
requestBody {
|
|
364
|
+
template:
|
|
372
365
|
```
|
|
373
366
|
{
|
|
374
367
|
"claim_id":"#CLAIM_ID#"
|
|
@@ -379,6 +372,7 @@ restDataSource icm-claims-data (
|
|
|
379
372
|
,"currency_code":"#CURRENCY_CODE#"
|
|
380
373
|
}
|
|
381
374
|
```
|
|
375
|
+
versionNumber: 1
|
|
382
376
|
}
|
|
383
377
|
)
|
|
384
378
|
|
|
@@ -116,36 +116,8 @@ taskDefinition LOAN_ACTION (
|
|
|
116
116
|
action send-email (
|
|
117
117
|
name: Send Email
|
|
118
118
|
type: sendEMail
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
emailTemplate {
|
|
123
|
-
emailTemplate: @order-confirmation
|
|
124
|
-
placeholderValues:
|
|
125
|
-
```
|
|
126
|
-
{
|
|
127
|
-
"ORDER_NUMBER":"&P12_ORDER_ID.",
|
|
128
|
-
"CUSTOMER_NAME":"&P12_CUSTOMER_NAME.",
|
|
129
|
-
"ORDER_DATE":"&P12_ORDER_DATE.",
|
|
130
|
-
"SHIP_TO":"",
|
|
131
|
-
"SHIPPING_ADDRESS_LINE_1":"",
|
|
132
|
-
"SHIPPING_ADDRESS_LINE_2":"",
|
|
133
|
-
"ITEMS_ORDERED":"",
|
|
134
|
-
"ORDER_TOTAL":"&P12_TOTAL_AMT.",
|
|
135
|
-
"ORDER_URL":"","MY_APPLICATION_LINK":""
|
|
136
|
-
}
|
|
137
|
-
```
|
|
138
|
-
}
|
|
139
|
-
emailAttachments {
|
|
140
|
-
attachmentSql:
|
|
141
|
-
```sql
|
|
142
|
-
select file_blob blob_column,
|
|
143
|
-
file_name,
|
|
144
|
-
mime_type,
|
|
145
|
-
null content_id
|
|
146
|
-
from order_files
|
|
147
|
-
where order_id = :APEX$TASK_PK
|
|
148
|
-
```
|
|
119
|
+
comments {
|
|
120
|
+
comments: Email header, template placeholder, and attachment attributes require compiler-backed sendEMail task-action syntax before emission.
|
|
149
121
|
}
|
|
150
122
|
execution {
|
|
151
123
|
onEvent: complete
|
package/skills/apexlang/templates/shared-components/task-definitions/approve-request.example.md
CHANGED
|
@@ -79,7 +79,7 @@ taskDefinition CHECKER_APPROVAL (
|
|
|
79
79
|
label {
|
|
80
80
|
label: Disbursed Amount
|
|
81
81
|
}
|
|
82
|
-
|
|
82
|
+
validation {
|
|
83
83
|
required: false
|
|
84
84
|
}
|
|
85
85
|
)
|
|
@@ -148,36 +148,8 @@ taskDefinition CHECKER_APPROVAL (
|
|
|
148
148
|
action send-email (
|
|
149
149
|
name: Send Email
|
|
150
150
|
type: sendEMail
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
emailTemplate {
|
|
155
|
-
emailTemplate: @order-confirmation
|
|
156
|
-
placeholderValues:
|
|
157
|
-
```
|
|
158
|
-
{
|
|
159
|
-
"ORDER_NUMBER":"&P12_ORDER_ID.",
|
|
160
|
-
"CUSTOMER_NAME":"&P12_CUSTOMER_NAME.",
|
|
161
|
-
"ORDER_DATE":"&P12_ORDER_DATE.",
|
|
162
|
-
"SHIP_TO":"",
|
|
163
|
-
"SHIPPING_ADDRESS_LINE_1":"",
|
|
164
|
-
"SHIPPING_ADDRESS_LINE_2":"",
|
|
165
|
-
"ITEMS_ORDERED":"",
|
|
166
|
-
"ORDER_TOTAL":"&P12_TOTAL_AMT.",
|
|
167
|
-
"ORDER_URL":"","MY_APPLICATION_LINK":""
|
|
168
|
-
}
|
|
169
|
-
```
|
|
170
|
-
}
|
|
171
|
-
emailAttachments {
|
|
172
|
-
attachmentSql:
|
|
173
|
-
```sql
|
|
174
|
-
select file_blob blob_column,
|
|
175
|
-
file_name,
|
|
176
|
-
mime_type,
|
|
177
|
-
null content_id
|
|
178
|
-
from order_files
|
|
179
|
-
where order_id = :APEX$TASK_PK
|
|
180
|
-
```
|
|
151
|
+
comments {
|
|
152
|
+
comments: Email header, template placeholder, and attachment attributes require compiler-backed sendEMail task-action syntax before emission.
|
|
181
153
|
}
|
|
182
154
|
execution {
|
|
183
155
|
onEvent: complete
|