pi-apexlang 0.3.0 → 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 +17 -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 +15 -11
- 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
package/README.md
CHANGED
|
@@ -11,6 +11,12 @@ APEXlang. It combines two resources:
|
|
|
11
11
|
|
|
12
12
|
This is an independent integration and is not an Oracle product.
|
|
13
13
|
|
|
14
|
+
## Documentation · Документація
|
|
15
|
+
|
|
16
|
+
- [English documentation](docs/en/README.md): setup, architecture, tool reference, and maintenance.
|
|
17
|
+
- [Українська документація](docs/uk/README.md): початок роботи, архітектура, довідник інструмента та супровід.
|
|
18
|
+
- Infographics / Інфографіка: [English](docs/assets/overview.en.svg) · [Українська](docs/assets/overview.uk.svg).
|
|
19
|
+
|
|
14
20
|
## Install
|
|
15
21
|
|
|
16
22
|
Try the local checkout without installing it:
|
|
@@ -92,8 +98,10 @@ code** requires an explicit target mode:
|
|
|
92
98
|
Only after it proves the alias is absent does Pi ask for a second
|
|
93
99
|
confirmation and rerun validation plus import together.
|
|
94
100
|
|
|
95
|
-
|
|
96
|
-
|
|
101
|
+
Every post-validation choice is abort-aware and bounded to five minutes.
|
|
102
|
+
Without a confirmed GUI response—or when the request is aborted or times
|
|
103
|
+
out—the tool stops after checking and reports import as a follow-up. Silence is
|
|
104
|
+
never treated as import authorization.
|
|
97
105
|
|
|
98
106
|
When refreshing a full APEXlang export, run one SQLcl export with explicit
|
|
99
107
|
replacement semantics:
|
|
@@ -162,7 +170,8 @@ Oracle documents these requirements for live APEXlang work:
|
|
|
162
170
|
|
|
163
171
|
- Oracle APEX 26.1 with APEXlang support.
|
|
164
172
|
- ORDS 26.1.1 or newer.
|
|
165
|
-
- SQLcl 26.1 or newer,
|
|
173
|
+
- SQLcl 26.1.2 or newer, as required by the bundled Oracle skill, selected
|
|
174
|
+
with the compatibility advisory above.
|
|
166
175
|
- Java 17 or Java 21 for SQLcl.
|
|
167
176
|
- A saved SQLcl connection name and its corresponding APEX workspace name.
|
|
168
177
|
- A local APEX app or authoritative schema, model, API, or table metadata.
|
|
@@ -207,9 +216,12 @@ updates `UPSTREAM.json`.
|
|
|
207
216
|
|
|
208
217
|
## Provenance and license
|
|
209
218
|
|
|
219
|
+
Package **0.4.0** includes Oracle's **2026.09.21** APEXlang skill release.
|
|
220
|
+
See the bundled [Oracle release notes](skills/apexlang/release-notes.json).
|
|
221
|
+
|
|
210
222
|
The vendored skill comes from
|
|
211
|
-
[`oracle/skills/apex/apexlang`](https://github.com/oracle/skills/tree/
|
|
212
|
-
at commit `
|
|
223
|
+
[`oracle/skills/apex/apexlang`](https://github.com/oracle/skills/tree/b94ccf4dec34b27859c2378fa71ba2bad884f2fe/apex/apexlang)
|
|
224
|
+
at commit `b94ccf4dec34b27859c2378fa71ba2bad884f2fe`. See
|
|
213
225
|
[`UPSTREAM.json`](UPSTREAM.json) and
|
|
214
226
|
[`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md).
|
|
215
227
|
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
## Oracle APEXlang skill
|
|
4
4
|
|
|
5
5
|
`skills/apexlang` is an unmodified snapshot of
|
|
6
|
-
[`oracle/skills/apex/apexlang`](https://github.com/oracle/skills/tree/
|
|
7
|
-
at commit `
|
|
6
|
+
[`oracle/skills/apex/apexlang`](https://github.com/oracle/skills/tree/b94ccf4dec34b27859c2378fa71ba2bad884f2fe/apex/apexlang)
|
|
7
|
+
at commit `b94ccf4dec34b27859c2378fa71ba2bad884f2fe`.
|
|
8
8
|
|
|
9
9
|
Copyright (c) 2025 Oracle and/or its affiliates.
|
|
10
10
|
|
package/UPSTREAM.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"repository": "https://github.com/oracle/skills.git",
|
|
3
|
-
"commit": "
|
|
3
|
+
"commit": "b94ccf4dec34b27859c2378fa71ba2bad884f2fe",
|
|
4
4
|
"source_path": "apex/apexlang",
|
|
5
5
|
"vendored_path": "skills/apexlang",
|
|
6
|
-
"content_sha256": "
|
|
6
|
+
"content_sha256": "b3622811c1cfaf62d5987802ab449b033c5b22220164be909a2fedd8c5cef8ca",
|
|
7
7
|
"license": "UPL-1.0"
|
|
8
8
|
}
|
|
Binary file
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en" width="1440" height="1490" viewBox="0 0 1440 1490" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">pi-apexlang — From app files to verified import</title>
|
|
3
|
+
<desc id="desc">Two complementary components: the unchanged Oracle skill and the Pi extension. Discover context, check files locally and against compiler metadata, then validate live. Import requires an explicit choice and target proof; otherwise finish without import.</desc>
|
|
4
|
+
<defs><marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#7d989f"/></marker></defs>
|
|
5
|
+
<style>text{font-family:Arial,"DejaVu Sans",sans-serif}.mono{font-family:"DejaVu Sans Mono",monospace}.eyebrow{letter-spacing:2px}</style>
|
|
6
|
+
<rect x="0" y="0" width="1440" height="1490" rx="0" fill="#f4f6f2" stroke="none"/>
|
|
7
|
+
<rect x="0" y="0" width="1440" height="204" rx="0" fill="#123642" stroke="none"/>
|
|
8
|
+
<rect x="64" y="36" width="7" height="28" rx="2" fill="#91dbc0" stroke="none"/>
|
|
9
|
+
<text x="88" y="58" font-size="22" fill="#91dbc0" font-weight="700" class="eyebrow">PI / APEXLANG</text>
|
|
10
|
+
<text x="64" y="118" font-size="46" fill="#ffffff" font-weight="700">From app files to verified import</text>
|
|
11
|
+
<text x="64" y="163" font-size="26" fill="#d0e2e3" font-weight="400">Oracle APEXlang development inside pi</text>
|
|
12
|
+
<text x="64" y="247" font-size="16" fill="#526c73" font-weight="700" class="eyebrow">TWO COMPLEMENTARY PARTS</text>
|
|
13
|
+
<rect x="64" y="269" width="640" height="122" rx="16" fill="#ffffff" stroke="#d6e2db"/>
|
|
14
|
+
<rect x="736" y="269" width="640" height="122" rx="16" fill="#ffffff" stroke="#d6e2db"/>
|
|
15
|
+
<text x="88" y="307" font-size="28" fill="#183b47" font-weight="700">Oracle skill</text>
|
|
16
|
+
<text x="88" y="340" font-size="21" fill="#183b47" font-weight="400">References · templates · bundled runtime</text>
|
|
17
|
+
<text x="88" y="371" font-size="20" fill="#526c73" font-weight="400">Pinned snapshot, preserved unchanged</text>
|
|
18
|
+
<text x="760" y="307" font-size="28" fill="#183b47" font-weight="700">Pi extension</text>
|
|
19
|
+
<text x="760" y="340" font-size="21" fill="#183b47" font-weight="400">Tool actions · process adapter · confirmations</text>
|
|
20
|
+
<text x="760" y="371" font-size="20" fill="#526c73" font-weight="400">Works inside the active project workspace</text>
|
|
21
|
+
<text x="64" y="435" font-size="16" fill="#526c73" font-weight="700" class="eyebrow">RECOMMENDED WORKFLOW</text>
|
|
22
|
+
<text x="1170" y="435" font-size="20" fill="#146d5d" font-weight="700">8 tool actions</text>
|
|
23
|
+
<rect x="64" y="461" width="758" height="110" rx="16" fill="#ffffff" stroke="#d6e2db"/>
|
|
24
|
+
<rect x="84" y="479" width="44" height="44" rx="12" fill="#dcefe9" stroke="none"/>
|
|
25
|
+
<text x="97" y="509" font-size="24" fill="#146d5d" font-weight="700">1</text>
|
|
26
|
+
<text x="147" y="494" font-size="26" fill="#183b47" font-weight="700">Establish project context</text>
|
|
27
|
+
<text x="147" y="522" font-size="20" fill="#146d5d" font-weight="500" class="mono">workspace_probe</text>
|
|
28
|
+
<text x="147" y="551" font-size="20" fill="#526c73" font-weight="400">Existing app or authoritative metadata</text>
|
|
29
|
+
<rect x="850" y="461" width="526" height="110" rx="16" fill="#e8eee8" stroke="#cad7cc"/>
|
|
30
|
+
<text x="873" y="494" font-size="23" fill="#183b47" font-weight="700">Optional: create a local scaffold</text>
|
|
31
|
+
<text x="873" y="522" font-size="20" fill="#146d5d" font-weight="500" class="mono">new_app_materialize</text>
|
|
32
|
+
<text x="873" y="551" font-size="19" fill="#526c73" font-weight="400">Exact suggested path + confirmation</text>
|
|
33
|
+
<path d="M 107 571 L 107 594" stroke="#7d989f" stroke-width="2" fill="none" marker-end="url(#arrow)"/>
|
|
34
|
+
<rect x="64" y="604" width="1312" height="143" rx="16" fill="#ffffff" stroke="#d6e2db"/>
|
|
35
|
+
<rect x="84" y="621" width="44" height="44" rx="12" fill="#dcefe9" stroke="none"/>
|
|
36
|
+
<text x="97" y="651" font-size="24" fill="#146d5d" font-weight="700">2</text>
|
|
37
|
+
<text x="147" y="651" font-size="27" fill="#183b47" font-weight="700">Check locally and against compiler metadata</text>
|
|
38
|
+
<rect x="147" y="670" width="364" height="39" rx="8" fill="#edf4f4" stroke="none"/>
|
|
39
|
+
<text x="163" y="696" font-size="20" fill="#183b47" font-weight="500" class="mono">query_valid_props</text>
|
|
40
|
+
<rect x="531" y="670" width="364" height="39" rx="8" fill="#edf4f4" stroke="none"/>
|
|
41
|
+
<text x="547" y="696" font-size="20" fill="#183b47" font-weight="500" class="mono">local_validate</text>
|
|
42
|
+
<rect x="915" y="670" width="434" height="39" rx="8" fill="#edf4f4" stroke="none"/>
|
|
43
|
+
<text x="931" y="696" font-size="20" fill="#183b47" font-weight="500" class="mono">compiler_truth_audit</text>
|
|
44
|
+
<text x="147" y="732" font-size="20" fill="#526c73" font-weight="400">Local success does not establish a live server pass.</text>
|
|
45
|
+
<path d="M 107 747 L 107 771" stroke="#7d989f" stroke-width="2" fill="none" marker-end="url(#arrow)"/>
|
|
46
|
+
<rect x="64" y="781" width="1312" height="143" rx="16" fill="#ffffff" stroke="#d6e2db"/>
|
|
47
|
+
<rect x="84" y="798" width="44" height="44" rx="12" fill="#dcefe9" stroke="none"/>
|
|
48
|
+
<text x="97" y="828" font-size="24" fill="#146d5d" font-weight="700">3</text>
|
|
49
|
+
<text x="147" y="828" font-size="27" fill="#183b47" font-weight="700">Check the runtime, then validate live</text>
|
|
50
|
+
<rect x="147" y="847" width="364" height="39" rx="8" fill="#edf4f4" stroke="none"/>
|
|
51
|
+
<text x="163" y="873" font-size="20" fill="#183b47" font-weight="500" class="mono">runtime_preflight</text>
|
|
52
|
+
<rect x="531" y="847" width="364" height="39" rx="8" fill="#edf4f4" stroke="none"/>
|
|
53
|
+
<text x="547" y="873" font-size="20" fill="#183b47" font-weight="500" class="mono">runtime_doctor</text>
|
|
54
|
+
<rect x="915" y="847" width="434" height="39" rx="8" fill="#e1eee4" stroke="none"/>
|
|
55
|
+
<text x="931" y="873" font-size="20" fill="#183b47" font-weight="500" class="mono">runtime_validate</text>
|
|
56
|
+
<text x="147" y="909" font-size="20" fill="#526c73" font-weight="400">Saved SQLcl connection + matching APEX workspace</text>
|
|
57
|
+
<path d="M 720 924 L 720 947" stroke="#7d989f" stroke-width="2" fill="none" marker-end="url(#arrow)"/>
|
|
58
|
+
<rect x="64" y="957" width="1312" height="73" rx="16" fill="#fbefcf" stroke="#e4ce95"/>
|
|
59
|
+
<text x="88" y="988" font-size="27" fill="#725017" font-weight="700">Authoritative live pass → interactive choice</text>
|
|
60
|
+
<text x="88" y="1016" font-size="20" fill="#725017" font-weight="400">A failed check returns to diagnosis and repair.</text>
|
|
61
|
+
<path d="M 250 1030 L 250 1054" stroke="#7d989f" stroke-width="2" fill="none" marker-end="url(#arrow)"/>
|
|
62
|
+
<path d="M 905 1030 L 905 1054" stroke="#7d989f" stroke-width="2" fill="none" marker-end="url(#arrow)"/>
|
|
63
|
+
<rect x="64" y="1065" width="384" height="284" rx="16" fill="#e8efeb" stroke="#c8d9cd"/>
|
|
64
|
+
<text x="88" y="1104" font-size="25" fill="#183b47" font-weight="700">Finish after checking</text>
|
|
65
|
+
<text x="88" y="1147" font-size="19" fill="#183b47" font-weight="400">Choose “Check APEXlang code”</text>
|
|
66
|
+
<path d="M 88 1170 L 424 1170" stroke="#c3d4ca" stroke-width="2" fill="none"/>
|
|
67
|
+
<text x="88" y="1202" font-size="18" fill="#526c73" font-weight="400">No UI, cancellation, or timeout</text>
|
|
68
|
+
<text x="88" y="1230" font-size="18" fill="#526c73" font-weight="400">also means no import.</text>
|
|
69
|
+
<text x="88" y="1315" font-size="23" fill="#146d5d" font-weight="700" class="mono">imported = false</text>
|
|
70
|
+
<rect x="476" y="1065" width="900" height="284" rx="16" fill="#ffffff" stroke="#b5d5c8"/>
|
|
71
|
+
<text x="500" y="1104" font-size="26" fill="#183b47" font-weight="700">Choose import and an explicit target</text>
|
|
72
|
+
<rect x="500" y="1125" width="393" height="103" rx="10" fill="#f0f5ef" stroke="none"/>
|
|
73
|
+
<rect x="913" y="1125" width="439" height="103" rx="10" fill="#f0f5ef" stroke="none"/>
|
|
74
|
+
<text x="518" y="1155" font-size="17" fill="#146d5d" font-weight="700">UPDATE EXISTING</text>
|
|
75
|
+
<text x="518" y="1184" font-size="21" fill="#183b47" font-weight="400">Prove one existing</text>
|
|
76
|
+
<text x="518" y="1211" font-size="21" fill="#183b47" font-weight="400">remote application.</text>
|
|
77
|
+
<text x="931" y="1155" font-size="17" fill="#146d5d" font-weight="700">CREATE NEW</text>
|
|
78
|
+
<text x="931" y="1184" font-size="21" fill="#183b47" font-weight="400">Prove alias is absent,</text>
|
|
79
|
+
<text x="931" y="1211" font-size="21" fill="#183b47" font-weight="400">then confirm creation again.</text>
|
|
80
|
+
<rect x="500" y="1244" width="852" height="81" rx="10" fill="#146d5d" stroke="none"/>
|
|
81
|
+
<text x="518" y="1276" font-size="25" fill="#ffffff" font-weight="700">Same app digest → revalidate + import</text>
|
|
82
|
+
<text x="518" y="1306" font-size="20" fill="#e1f3e9" font-weight="400">One SQLcl session · validation, import, runtime gate = pass</text>
|
|
83
|
+
<path d="M 64 1380 L 1376 1380" stroke="#c7d6ce" stroke-width="2" fill="none"/>
|
|
84
|
+
<text x="64" y="1417" font-size="22" fill="#183b47" font-weight="700">5 min per dialog</text>
|
|
85
|
+
<text x="366" y="1417" font-size="22" fill="#183b47" font-weight="700">10 min per process</text>
|
|
86
|
+
<text x="735" y="1417" font-size="22" fill="#183b47" font-weight="700">Save reports before session shutdown</text>
|
|
87
|
+
<text x="64" y="1458" font-size="17" fill="#526c73" font-weight="400">Independent integration · Package 0.4.0 · Oracle b94ccf4 · 2026-09-22</text>
|
|
88
|
+
<text x="1000" y="1458" font-size="16" fill="#526c73" font-weight="400">Documentation: docs/en/README.md</text>
|
|
89
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xml:lang="uk" width="1440" height="1490" viewBox="0 0 1440 1490" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">pi-apexlang — Від файлів до перевіреного імпорту</title>
|
|
3
|
+
<desc id="desc">Дві складові: незмінений Oracle skill і розширення Pi. Визначте контекст, перевірте файли локально та за метаданими компілятора, потім на сервері. Імпорт потребує явного вибору й доказу цілі; інакше робота завершується без імпорту.</desc>
|
|
4
|
+
<defs><marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#7d989f"/></marker></defs>
|
|
5
|
+
<style>text{font-family:Arial,"DejaVu Sans",sans-serif}.mono{font-family:"DejaVu Sans Mono",monospace}.eyebrow{letter-spacing:2px}</style>
|
|
6
|
+
<rect x="0" y="0" width="1440" height="1490" rx="0" fill="#f4f6f2" stroke="none"/>
|
|
7
|
+
<rect x="0" y="0" width="1440" height="204" rx="0" fill="#123642" stroke="none"/>
|
|
8
|
+
<rect x="64" y="36" width="7" height="28" rx="2" fill="#91dbc0" stroke="none"/>
|
|
9
|
+
<text x="88" y="58" font-size="22" fill="#91dbc0" font-weight="700" class="eyebrow">PI / APEXLANG</text>
|
|
10
|
+
<text x="64" y="118" font-size="46" fill="#ffffff" font-weight="700">Від файлів до перевіреного імпорту</text>
|
|
11
|
+
<text x="64" y="163" font-size="26" fill="#d0e2e3" font-weight="400">Розробка Oracle APEXlang у pi</text>
|
|
12
|
+
<text x="64" y="247" font-size="16" fill="#526c73" font-weight="700" class="eyebrow">ДВІ СКЛАДОВІ</text>
|
|
13
|
+
<rect x="64" y="269" width="640" height="122" rx="16" fill="#ffffff" stroke="#d6e2db"/>
|
|
14
|
+
<rect x="736" y="269" width="640" height="122" rx="16" fill="#ffffff" stroke="#d6e2db"/>
|
|
15
|
+
<text x="88" y="307" font-size="28" fill="#183b47" font-weight="700">Oracle skill</text>
|
|
16
|
+
<text x="88" y="340" font-size="21" fill="#183b47" font-weight="400">Довідники · шаблони · вбудоване середовище</text>
|
|
17
|
+
<text x="88" y="371" font-size="20" fill="#526c73" font-weight="400">Зафіксований знімок без змін</text>
|
|
18
|
+
<text x="760" y="307" font-size="28" fill="#183b47" font-weight="700">Розширення Pi</text>
|
|
19
|
+
<text x="760" y="340" font-size="21" fill="#183b47" font-weight="400">Дії інструмента · адаптер · підтвердження</text>
|
|
20
|
+
<text x="760" y="371" font-size="20" fill="#526c73" font-weight="400">Працює в активному каталозі проєкту</text>
|
|
21
|
+
<text x="64" y="435" font-size="16" fill="#526c73" font-weight="700" class="eyebrow">РЕКОМЕНДОВАНИЙ ПОРЯДОК РОБОТИ</text>
|
|
22
|
+
<text x="1170" y="435" font-size="20" fill="#146d5d" font-weight="700">8 дій інструмента</text>
|
|
23
|
+
<rect x="64" y="461" width="758" height="110" rx="16" fill="#ffffff" stroke="#d6e2db"/>
|
|
24
|
+
<rect x="84" y="479" width="44" height="44" rx="12" fill="#dcefe9" stroke="none"/>
|
|
25
|
+
<text x="97" y="509" font-size="24" fill="#146d5d" font-weight="700">1</text>
|
|
26
|
+
<text x="147" y="494" font-size="26" fill="#183b47" font-weight="700">Визначити контекст проєкту</text>
|
|
27
|
+
<text x="147" y="522" font-size="20" fill="#146d5d" font-weight="500" class="mono">workspace_probe</text>
|
|
28
|
+
<text x="147" y="551" font-size="20" fill="#526c73" font-weight="400">Наявний застосунок або достовірні метадані</text>
|
|
29
|
+
<rect x="850" y="461" width="526" height="110" rx="16" fill="#e8eee8" stroke="#cad7cc"/>
|
|
30
|
+
<text x="873" y="494" font-size="23" fill="#183b47" font-weight="700">За потреби: локальний каркас</text>
|
|
31
|
+
<text x="873" y="522" font-size="20" fill="#146d5d" font-weight="500" class="mono">new_app_materialize</text>
|
|
32
|
+
<text x="873" y="551" font-size="19" fill="#526c73" font-weight="400">Точний запропонований шлях + підтвердження</text>
|
|
33
|
+
<path d="M 107 571 L 107 594" stroke="#7d989f" stroke-width="2" fill="none" marker-end="url(#arrow)"/>
|
|
34
|
+
<rect x="64" y="604" width="1312" height="143" rx="16" fill="#ffffff" stroke="#d6e2db"/>
|
|
35
|
+
<rect x="84" y="621" width="44" height="44" rx="12" fill="#dcefe9" stroke="none"/>
|
|
36
|
+
<text x="97" y="651" font-size="24" fill="#146d5d" font-weight="700">2</text>
|
|
37
|
+
<text x="147" y="651" font-size="27" fill="#183b47" font-weight="700">Перевірити локально й за метаданими компілятора</text>
|
|
38
|
+
<rect x="147" y="670" width="364" height="39" rx="8" fill="#edf4f4" stroke="none"/>
|
|
39
|
+
<text x="163" y="696" font-size="20" fill="#183b47" font-weight="500" class="mono">query_valid_props</text>
|
|
40
|
+
<rect x="531" y="670" width="364" height="39" rx="8" fill="#edf4f4" stroke="none"/>
|
|
41
|
+
<text x="547" y="696" font-size="20" fill="#183b47" font-weight="500" class="mono">local_validate</text>
|
|
42
|
+
<rect x="915" y="670" width="434" height="39" rx="8" fill="#edf4f4" stroke="none"/>
|
|
43
|
+
<text x="931" y="696" font-size="20" fill="#183b47" font-weight="500" class="mono">compiler_truth_audit</text>
|
|
44
|
+
<text x="147" y="732" font-size="20" fill="#526c73" font-weight="400">Локальна перевірка не доводить успіху на сервері.</text>
|
|
45
|
+
<path d="M 107 747 L 107 771" stroke="#7d989f" stroke-width="2" fill="none" marker-end="url(#arrow)"/>
|
|
46
|
+
<rect x="64" y="781" width="1312" height="143" rx="16" fill="#ffffff" stroke="#d6e2db"/>
|
|
47
|
+
<rect x="84" y="798" width="44" height="44" rx="12" fill="#dcefe9" stroke="none"/>
|
|
48
|
+
<text x="97" y="828" font-size="24" fill="#146d5d" font-weight="700">3</text>
|
|
49
|
+
<text x="147" y="828" font-size="27" fill="#183b47" font-weight="700">Перевірити середовище, потім застосунок на сервері</text>
|
|
50
|
+
<rect x="147" y="847" width="364" height="39" rx="8" fill="#edf4f4" stroke="none"/>
|
|
51
|
+
<text x="163" y="873" font-size="20" fill="#183b47" font-weight="500" class="mono">runtime_preflight</text>
|
|
52
|
+
<rect x="531" y="847" width="364" height="39" rx="8" fill="#edf4f4" stroke="none"/>
|
|
53
|
+
<text x="547" y="873" font-size="20" fill="#183b47" font-weight="500" class="mono">runtime_doctor</text>
|
|
54
|
+
<rect x="915" y="847" width="434" height="39" rx="8" fill="#e1eee4" stroke="none"/>
|
|
55
|
+
<text x="931" y="873" font-size="20" fill="#183b47" font-weight="500" class="mono">runtime_validate</text>
|
|
56
|
+
<text x="147" y="909" font-size="20" fill="#526c73" font-weight="400">Збережене підключення SQLcl + відповідний APEX workspace</text>
|
|
57
|
+
<path d="M 720 924 L 720 947" stroke="#7d989f" stroke-width="2" fill="none" marker-end="url(#arrow)"/>
|
|
58
|
+
<rect x="64" y="957" width="1312" height="73" rx="16" fill="#fbefcf" stroke="#e4ce95"/>
|
|
59
|
+
<text x="88" y="988" font-size="27" fill="#725017" font-weight="700">Підтверджений успіх на сервері → вибір користувача</text>
|
|
60
|
+
<text x="88" y="1016" font-size="20" fill="#725017" font-weight="400">Невдала перевірка повертає до діагностики та виправлень.</text>
|
|
61
|
+
<path d="M 250 1030 L 250 1054" stroke="#7d989f" stroke-width="2" fill="none" marker-end="url(#arrow)"/>
|
|
62
|
+
<path d="M 905 1030 L 905 1054" stroke="#7d989f" stroke-width="2" fill="none" marker-end="url(#arrow)"/>
|
|
63
|
+
<rect x="64" y="1065" width="384" height="284" rx="16" fill="#e8efeb" stroke="#c8d9cd"/>
|
|
64
|
+
<text x="88" y="1104" font-size="25" fill="#183b47" font-weight="700">Завершити перевірку</text>
|
|
65
|
+
<text x="88" y="1147" font-size="19" fill="#183b47" font-weight="400">Обрати “Check APEXlang code”</text>
|
|
66
|
+
<path d="M 88 1170 L 424 1170" stroke="#c3d4ca" stroke-width="2" fill="none"/>
|
|
67
|
+
<text x="88" y="1202" font-size="18" fill="#526c73" font-weight="400">Немає UI, скасування чи таймаут</text>
|
|
68
|
+
<text x="88" y="1230" font-size="18" fill="#526c73" font-weight="400">також означають відсутність імпорту.</text>
|
|
69
|
+
<text x="88" y="1315" font-size="23" fill="#146d5d" font-weight="700" class="mono">imported = false</text>
|
|
70
|
+
<rect x="476" y="1065" width="900" height="284" rx="16" fill="#ffffff" stroke="#b5d5c8"/>
|
|
71
|
+
<text x="500" y="1104" font-size="26" fill="#183b47" font-weight="700">Обрати імпорт і конкретний режим цілі</text>
|
|
72
|
+
<rect x="500" y="1125" width="393" height="103" rx="10" fill="#f0f5ef" stroke="none"/>
|
|
73
|
+
<rect x="913" y="1125" width="439" height="103" rx="10" fill="#f0f5ef" stroke="none"/>
|
|
74
|
+
<text x="518" y="1155" font-size="17" fill="#146d5d" font-weight="700">ОНОВИТИ НАЯВНИЙ</text>
|
|
75
|
+
<text x="518" y="1184" font-size="21" fill="#183b47" font-weight="400">Довести наявність одного</text>
|
|
76
|
+
<text x="518" y="1211" font-size="21" fill="#183b47" font-weight="400">застосунку на сервері.</text>
|
|
77
|
+
<text x="931" y="1155" font-size="17" fill="#146d5d" font-weight="700">СТВОРИТИ НОВИЙ</text>
|
|
78
|
+
<text x="931" y="1184" font-size="21" fill="#183b47" font-weight="400">Довести відсутність alias,</text>
|
|
79
|
+
<text x="931" y="1211" font-size="21" fill="#183b47" font-weight="400">потім підтвердити створення ще раз.</text>
|
|
80
|
+
<rect x="500" y="1244" width="852" height="81" rx="10" fill="#146d5d" stroke="none"/>
|
|
81
|
+
<text x="518" y="1276" font-size="25" fill="#ffffff" font-weight="700">Той самий хеш → повторна перевірка + імпорт</text>
|
|
82
|
+
<text x="518" y="1306" font-size="20" fill="#e1f3e9" font-weight="400">Одна сесія SQLcl · validation, import, runtime gate = pass</text>
|
|
83
|
+
<path d="M 64 1380 L 1376 1380" stroke="#c7d6ce" stroke-width="2" fill="none"/>
|
|
84
|
+
<text x="64" y="1417" font-size="22" fill="#183b47" font-weight="700">5 хв на діалог</text>
|
|
85
|
+
<text x="366" y="1417" font-size="22" fill="#183b47" font-weight="700">10 хв на процес</text>
|
|
86
|
+
<text x="735" y="1417" font-size="22" fill="#183b47" font-weight="700">Зберегти звіти до завершення сесії</text>
|
|
87
|
+
<text x="64" y="1458" font-size="17" fill="#526c73" font-weight="400">Незалежна інтеграція · Пакет 0.4.0 · Oracle b94ccf4 · 2026-09-22</text>
|
|
88
|
+
<text x="1000" y="1458" font-size="16" fill="#526c73" font-weight="400">Документація: docs/uk/README.md</text>
|
|
89
|
+
</svg>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# pi-apexlang documentation
|
|
2
|
+
|
|
3
|
+
[Українська](../uk/README.md) · [Project README](../../README.md)
|
|
4
|
+
|
|
5
|
+
`pi-apexlang` connects the pi coding agent to Oracle's APEXlang development resources. The agent uses Oracle's templates and guidance to work on application files; the extension provides a controlled tool for discovery, scaffolding, validation, and runtime diagnostics. An import becomes available through an interactive choice after a successful live check.
|
|
6
|
+
|
|
7
|
+
This is an independent integration, not an Oracle product. The repository is named `pi-apex`; the package and its version are defined in [package.json](../../package.json).
|
|
8
|
+
|
|
9
|
+
## Read by task
|
|
10
|
+
|
|
11
|
+
| Your task | Guide |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| Install the package and check your first app | [Getting started](getting-started.md) |
|
|
14
|
+
| Understand the components and import flow | [Architecture](architecture.md) |
|
|
15
|
+
| Look up actions, parameters, and result evidence | [Tool reference](tool-reference.md) |
|
|
16
|
+
| Find reports, diagnose failures, or maintain the package | [Maintenance](maintenance.md) |
|
|
17
|
+
|
|
18
|
+
## At a glance
|
|
19
|
+
|
|
20
|
+

|
|
21
|
+
|
|
22
|
+
[Scalable infographic](../assets/overview.en.svg) · [PNG image](../assets/overview.en.png)
|
|
23
|
+
|
|
24
|
+
## What a successful check means
|
|
25
|
+
|
|
26
|
+
| Evidence | What it establishes |
|
|
27
|
+
| --- | --- |
|
|
28
|
+
| Local validation passes | The bundled vocabulary, DSL, and validation-rule checks passed. |
|
|
29
|
+
| Compiler-truth audit passes | Component structure and attributes passed checks against the selected compiler metadata. |
|
|
30
|
+
| Authoritative live validation passes | The runtime returned successful live-validator evidence for the application snapshot. |
|
|
31
|
+
| Import passes | Validation, import, and the runtime gate each returned `pass`. |
|
|
32
|
+
|
|
33
|
+
Local success alone does not establish that an app is valid on a particular server. A live check alone does not mean that the app was imported.
|
|
34
|
+
|
|
35
|
+
## Documentation baseline
|
|
36
|
+
|
|
37
|
+
These guides describe package version **0.4.0**, updated on **2026-09-22** with Oracle's **2026.09.21** APEXlang skill release, pinned in [`UPSTREAM.json`](../../UPSTREAM.json). The update adds Media List and Comments workflows, expands Metric Card, Cards, and Region Display Selector support, and strengthens Smart Filter and Search validation. See the bundled [Oracle release notes](../../skills/apexlang/release-notes.json).
|
|
38
|
+
|
|
39
|
+
Examples use illustrative paths and connection names. Server access, credentials, and deployment targets are supplied by the operator.
|
|
40
|
+
|
|
41
|
+
Implementation claims link to local source files. Oracle prerequisite links are provided in the setup guide. The compatibility table is an advisory maintained by this project; its recorded review date is independent of this documentation date. No production validation or import is implied by these guides.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
[Documentation](README.md) · [Українська](../uk/architecture.md)
|
|
4
|
+
|
|
5
|
+
## Components
|
|
6
|
+
|
|
7
|
+
| Layer | Responsibility | Source |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| Oracle skill | Task routing, references, templates, and bundled Oracle runtime | [skills/apexlang](../../skills/apexlang) |
|
|
10
|
+
| Pi extension | Registers `apexlang`, exposes its schema, handles confirmation and session cleanup | [index.ts](../../extensions/apexlang/index.ts) |
|
|
11
|
+
| Process adapter | Builds argument arrays, checks paths and runtime context, tracks app digests, runs child processes | [apexlang-cli.mjs](../../extensions/lib/apexlang-cli.mjs) |
|
|
12
|
+
| Local validation wrapper | Runs vocabulary, DSL, and validation-rule checks | [apexlang-local-validate.mjs](../../extensions/lib/apexlang-local-validate.mjs) |
|
|
13
|
+
| Parser acceleration | Caches repeated block parsing and nesting lookups within one Python process | [apexlang-local-validator.py](../../extensions/lib/apexlang-local-validator.py) |
|
|
14
|
+
| Runtime bridge | Invokes the bundled validation and roundtrip runtimes; supports a controlled SQLcl PTY path | [validation bridge](../../extensions/lib/apexlang-runtime-validate.mjs), [roundtrip bridge](../../extensions/lib/apexlang-runtime-roundtrip.mjs), [PTY bridge](../../extensions/lib/apexlang-sqlcl-pty.py) |
|
|
15
|
+
| Compatibility advisory | Detects broad findings and presents version guidance | [compatibility.ts](../../extensions/apexlang/compatibility.ts), [table](../../extensions/apexlang/ords-sqlcl-compatibility.json) |
|
|
16
|
+
|
|
17
|
+
The skill is vendored unchanged at the commit and digest recorded in [UPSTREAM.json](../../UPSTREAM.json). The extension's acceleration wraps Oracle's validator; it does not edit the vendor snapshot or omit validation stages. Pi discovers the skill through the `pi.skills` package entry and loads task-specific material progressively.
|
|
18
|
+
|
|
19
|
+
The validation bridge supplies the packaged grammar and Python validator paths for Media List target-build checks. Oracle's 2026.09.21 runtime otherwise looks for these files under source-tree paths that are absent from the public skill package. The bridge retains Oracle's validation and failure handling.
|
|
20
|
+
|
|
21
|
+
## Working flow
|
|
22
|
+
|
|
23
|
+
```mermaid
|
|
24
|
+
flowchart TD
|
|
25
|
+
A[User request + app or authoritative metadata] --> B[workspace_probe]
|
|
26
|
+
B --> C[Agent creates or edits APEXlang files]
|
|
27
|
+
B -. Optional confirmed scaffold .-> S[new_app_materialize]
|
|
28
|
+
S --> C
|
|
29
|
+
C --> D[query_valid_props + local_validate + compiler_truth_audit]
|
|
30
|
+
D --> E[runtime_preflight / runtime_doctor]
|
|
31
|
+
E --> F[runtime_validate: live check]
|
|
32
|
+
F --> G{Authoritative pass?}
|
|
33
|
+
G -- No --> H[Review findings and repair]
|
|
34
|
+
H --> C
|
|
35
|
+
G -- Yes --> I{Interactive next step}
|
|
36
|
+
I -- Check only / cancel / no UI --> J[Finish without import]
|
|
37
|
+
I -- Import --> K[Resolve target + check app digest]
|
|
38
|
+
K --> L[Revalidate and import in one SQLcl session]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
This is the recommended workflow. The registered tool is not a scheduler that automatically runs all eight actions. Editing application code is work performed by the agent; there is no general-purpose `generate` or `edit` action in the tool schema.
|
|
42
|
+
|
|
43
|
+
## Import flow
|
|
44
|
+
|
|
45
|
+
1. `runtime_validate` must return a successful process result plus `live_check_status=pass` or `validation_status=pass`, and `validation_sources.live_validator.status=pass`.
|
|
46
|
+
2. With a UI, the extension offers **Check APEXlang code** or **Check and import APEXlang code**. Without a UI, it returns the live-check result with `imported=false`.
|
|
47
|
+
3. Choosing import requires a valid SHA-256 application digest and an explicit target mode:
|
|
48
|
+
|
|
49
|
+
| Target mode | Required evidence |
|
|
50
|
+
| --- | --- |
|
|
51
|
+
| Update existing | Oracle resolves exactly one existing remote application. |
|
|
52
|
+
| Create new | Oracle proves the alias is absent in the selected workspace without import authority; the user then confirms creation in an additional dialog. |
|
|
53
|
+
|
|
54
|
+
4. The adapter checks that the application snapshot still matches the approved digest. A changed tree requires revalidation.
|
|
55
|
+
5. Validation and import run together in one SQLcl session. The extension reports import success only when `validate_status`, `import_status`, and `runtime_gate_status` are all `pass`, with a successful process result.
|
|
56
|
+
|
|
57
|
+
There is no standalone import action in the model-visible action list. Every confirmation and selection dialog receives the abort signal and a five-minute timeout. Selecting nothing never authorizes import. These are controls implemented by the package; they do not replace the database privileges of the saved connection.
|
|
58
|
+
|
|
59
|
+
## Runtime staging and evidence
|
|
60
|
+
|
|
61
|
+
App-scoped runtime operations require a JSON object in `deployments/default.json`. The adapter accepts workspace metadata under `workspace.name` or the exported `app.workspace.name`, rejects conflicts, and compares it with the explicit `workspace_name` without case sensitivity. An unresolved `__REQUIRED_WORKSPACE_NAME__` placeholder is rejected.
|
|
62
|
+
|
|
63
|
+
The adapter copies the app under the session output root for runtime preflight, diagnostics, validation, import, and create-new proof. It injects the workspace and uses Oracle's line-ending normalizer on the staged `.apx` files before computing the digest. Project files remain unchanged. Validation and import therefore use the same LF-normalized snapshot. The digest also normalizes JSON formatting and the injected `workspace.name`; other deployment properties remain part of the digest, and substantive source changes require revalidation.
|
|
64
|
+
|
|
65
|
+
The extension creates a temporary `pi-apexlang-*` output directory on first use and reuses it during the session. Reports and runtime context therefore share a stable session root. Known validation/roundtrip evidence is cleared before a new corresponding run. The entire output root is removed on `session_shutdown`: copy needed evidence before ending the session.
|
|
66
|
+
|
|
67
|
+
## Execution boundaries
|
|
68
|
+
|
|
69
|
+
Application paths stay inside the active Pi workspace. The adapter checks real paths, rejects symlinks in app trees and relevant discovery inputs, and rejects multiply linked files for vocabulary rewrites. Commands use argument arrays rather than shell interpolation. Cancellation, timeout, or excess output terminates the spawned process tree.
|
|
70
|
+
|
|
71
|
+
The tool runs sequentially. Its configured command timeout is **10 minutes per invoked process**, not a total deadline for a multi-phase action. The adapter's default combined process-output limit is **8 MiB**; text presented to the model is trimmed at **80,000 characters**, with the full report location retained.
|
|
72
|
+
|
|
73
|
+
See [runner tests](../../test/runner.test.mjs) and [extension tests](../../test/extension.test.mjs) for executable examples of these boundaries.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Getting started
|
|
2
|
+
|
|
3
|
+
[Documentation](README.md) · [Українська](../uk/getting-started.md)
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
For local work, have pi installed, Node.js **22.19.0 or newer**, and `python3` available on `PATH`. Node's minimum is declared in [package.json](../../package.json); the [local validator wrapper](../../extensions/lib/apexlang-local-validate.mjs) invokes `python3` directly.
|
|
8
|
+
|
|
9
|
+
For live commands, the [bundled Oracle skill](../../skills/apexlang/README.md#requirements) requires SQLcl **26.1.2 or newer** and the latest available APEX **26.1** build, with a valid database connection and privileges for the target workspace and schema. The general [Oracle APEXlang prerequisites](https://docs.oracle.com/en/database/oracle/sql-developer-command-line/26.1/sqcug/prerequisites-apexlang.html) list SQLcl 26.1 as the minimum. ORDS **26.1.1** introduced the required APEXlang support; see [ORDS 26.1.1 release notes](https://www.oracle.com/tools/ords/ords-relnotes-26.1.1.html). For the SQLcl 26.1.2 line, Oracle lists Java **17 or 21** in its [release notes](https://www.oracle.com/tools/sqlcl/sqlcl-relnotes-26.1.2.html). Check the relevant release documentation when selecting another version.
|
|
10
|
+
|
|
11
|
+
Provide a **saved SQLcl connection name** and its corresponding **APEX workspace name**. The extension accepts names, not passwords, credentials, or connection strings. Local work also needs an existing APEXlang app or authoritative schema, model, API, or table metadata.
|
|
12
|
+
|
|
13
|
+
## Install and open a project
|
|
14
|
+
|
|
15
|
+
Install for the current user:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pi install git:github.com/avhrst/pi-apex
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
For installation scoped to an application project, run this inside that project:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pi install git:github.com/avhrst/pi-apex -l
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Then start `pi` in the directory that contains your application and metadata. This directory is the active workspace: `app_path` must stay inside it.
|
|
28
|
+
|
|
29
|
+
To try this repository locally, run `pi -e .` from its checkout. That makes the checkout the workspace; it does not select an external application project. The root README also documents the npm installation form for use after an npm release. This guide does not assert that a particular version has been published.
|
|
30
|
+
|
|
31
|
+
Pi loads the skill when relevant. Prefix a request with `/skill:apexlang` to select it explicitly.
|
|
32
|
+
|
|
33
|
+
## First check of an existing app
|
|
34
|
+
|
|
35
|
+
The names below are examples; substitute a real app path and saved connection.
|
|
36
|
+
|
|
37
|
+
1. Establish context:
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
/skill:apexlang Probe this workspace. Identify candidate APEX apps and the available authoritative metadata. Explain any missing inputs.
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
2. Check the intended app locally:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
/skill:apexlang Check applications/service-ops locally. Run the compiler-truth audit when compiler metadata is available. Show findings and report paths. Do not import it.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
3. When the runtime is configured, request a server check:
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
/skill:apexlang Check applications/service-ops using saved connection apex_dev and APEX workspace SERVICE_OPS_DEV. Diagnose the runtime first, then validate live. Do not import it.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
If the successful live check displays a next-step dialog, select **Check APEXlang code** to finish without importing. Each interactive dialog is limited to five minutes; cancellation, timeout, or an unavailable UI does not authorize an import.
|
|
56
|
+
|
|
57
|
+
See [the tool reference](tool-reference.md) for exact action names and [the import flow](architecture.md#import-flow) for the separate import path.
|
|
58
|
+
|
|
59
|
+
## Create a local scaffold
|
|
60
|
+
|
|
61
|
+
Provide authoritative metadata and an app alias, target path, or title hint. `workspace_probe` must resolve the context, set `app_context.status=create_new_allowed`, and return the exact `suggested_app_path`. `new_app_materialize` requires this path, the saved connection/workspace pair, and interactive confirmation.
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
/skill:apexlang Use the verified schema metadata in this workspace to prepare a new APEXlang app. Probe first and report the proposed app path. Materialize the scaffold through the confirmation dialog, then check it locally. Do not import it.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Materialization creates local files. Creating a remote application is a later, separately confirmed import operation.
|
|
68
|
+
|
|
69
|
+
## Refresh a complete export
|
|
70
|
+
|
|
71
|
+
In an appropriately connected SQLcl session, replace the placeholders before running:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
apex export -applicationid <id> -exptype APEXLANG -split -dir <absolute-parent-directory> -force
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
`-dir` is the parent directory; SQLcl creates the application-alias folder below it. `-force` removes and recreates that export folder. Preserve local-only changes before refreshing. The extension's export guidance calls for one replacement export to avoid collision-suffixed copies such as `p00005_1.apx`; see the [registered guideline](../../extensions/apexlang/index.ts).
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Maintenance and troubleshooting
|
|
2
|
+
|
|
3
|
+
[Documentation](README.md) · [Українська](../uk/maintenance.md)
|
|
4
|
+
|
|
5
|
+
## Keep the reports you need
|
|
6
|
+
|
|
7
|
+
Read the `outputRoot` in tool result details or the `APEXlang reports:` path in an execution error. The extension passes this directory to subprocesses as `APEXLANG_OUTPUT_ROOT`; its own temporary root is created internally rather than selected by a tool parameter.
|
|
8
|
+
|
|
9
|
+
| Relative location | Contents |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| `logs/apexlang-vocab-report.json` | Vocabulary findings and unsupported-MMD diagnostics |
|
|
12
|
+
| `logs/apexlang-dsl-report.json` | DSL validation findings |
|
|
13
|
+
| `logs/apexlang-validations-report.json` | Validation-rule findings |
|
|
14
|
+
| `logs/validation/` | Live-validation artifacts when produced by the runtime |
|
|
15
|
+
| `logs/runtime-run.json`, `logs/runtime-run.log` | Roundtrip runtime report and transcript when produced |
|
|
16
|
+
| `logs/compat/` | Compatibility evidence when that path is used |
|
|
17
|
+
| `runtime-apps/` | Temporary staged application copies |
|
|
18
|
+
|
|
19
|
+
Not every action creates every file. New runs clear known stale evidence, and session shutdown deletes the whole root. Save the relevant reports to a project-owned evidence directory before another run or shutdown if you need a durable record. Reports can contain application code, names, and diagnostics; review their contents before sharing them.
|
|
20
|
+
|
|
21
|
+
## Diagnose by symptom
|
|
22
|
+
|
|
23
|
+
| Symptom | Next step |
|
|
24
|
+
| --- | --- |
|
|
25
|
+
| `Missing Inputs` during scaffolding | Supply authoritative metadata and an app identity hint; probe again and use exactly `suggested_app_path`. |
|
|
26
|
+
| App path or symlink rejected | Open pi at the intended project root and use a real app directory inside it. |
|
|
27
|
+
| Vocabulary fix rejects a multiply linked file | Make the intended app file independent before requesting a rewrite. |
|
|
28
|
+
| Saved connection or workspace rejected | Use the saved alias, not a connection string; supply the matching workspace. |
|
|
29
|
+
| `deployments/default.json` missing/conflicting | Inspect the exported deployment metadata and reconcile the intended workspace before retrying. |
|
|
30
|
+
| Compiler properties cannot be resolved | Check the app's `mmdVersion` and the available compiler metadata; use `compiler_oracle_home` where supported. |
|
|
31
|
+
| Many findings across the app | Review SQLcl/APEX/ORDS and compiler-metadata compatibility before bulk edits. |
|
|
32
|
+
| Live process exits successfully but import is unavailable | Inspect authoritative live-validator fields; a process exit code alone is insufficient. |
|
|
33
|
+
| App changed after the approved check | Revalidate the current app snapshot. |
|
|
34
|
+
| Post-check dialog cancelled or timed out | The app was not imported; request a fresh check if an import is still intended. |
|
|
35
|
+
| Process timeout or output-limit error | Inspect saved output, diagnose with `runtime_doctor`, and address the cause before rerunning. |
|
|
36
|
+
|
|
37
|
+
## Version advisory
|
|
38
|
+
|
|
39
|
+
The [machine-readable table](../../extensions/apexlang/ords-sqlcl-compatibility.json) records `policy=advisory-only` and a review date of **2026-07-19**. Its SQLcl build **26.1.2.132.1334** is a diagnostic baseline for the documented APEX 26.1 scenarios, not a universal version pin. SQLcl 26.2 is not categorically blocked.
|
|
40
|
+
|
|
41
|
+
The [advisory detector](../../extensions/apexlang/compatibility.ts) triggers for at least **50 structured findings**. Local JSON reports and compiler-truth text additionally need at least **5 distinct `.apx` files**; duplicate findings are deduplicated. A local vocabulary report explicitly declaring `UNSUPPORTED_MMD_VERSION` also triggers guidance.
|
|
42
|
+
|
|
43
|
+
Check `sql -version`, `.apex/apexlang.json` → `mmdVersion`, and the server's APEX/ORDS releases with its administrator. The table adds guidance without changing validation status or granting import authority. Its recorded Oracle minima and project diagnostic recommendations have distinct `basis` values; consult the linked release documentation for other release lines.
|
|
44
|
+
|
|
45
|
+
## Develop and verify
|
|
46
|
+
|
|
47
|
+
From the repository root:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npm install --ignore-scripts
|
|
51
|
+
npm run check
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
`npm run check` runs these stages in order:
|
|
55
|
+
|
|
56
|
+
| Stage | What it checks |
|
|
57
|
+
| --- | --- |
|
|
58
|
+
| `typecheck` | Strict TypeScript checks without emitting files |
|
|
59
|
+
| `verify:vendor` | The pinned Oracle snapshot digest and provenance |
|
|
60
|
+
| `test` | Extension/adapter contracts and validator-output parity |
|
|
61
|
+
| `smoke` | Probe of an empty temporary workspace and local validation of the bundled scaffold |
|
|
62
|
+
| `verify:package` | npm dry-run package contents and excluded development/cache files |
|
|
63
|
+
|
|
64
|
+
These checks are local automated verification, not proof of a successful live validation or import against a real server. The publish workflow is manually dispatched and runs `npm run check` before publishing; see [publish-npm.yml](../../.github/workflows/publish-npm.yml).
|
|
65
|
+
|
|
66
|
+
## Refresh Oracle's snapshot
|
|
67
|
+
|
|
68
|
+
Use a reviewed commit/ref in place of `<reviewed-ref>`:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npm run sync:oracle -- --ref <reviewed-ref>
|
|
72
|
+
npm run check
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
The [sync script](../../scripts/sync-oracle-apexlang.mjs) fetches Oracle's repository, replaces `skills/apexlang`, refreshes `LICENSE`, updates the commit/digest in `UPSTREAM.json`, and updates pinned references in the root README and third-party notices. It uses a backup while replacing the snapshot. Review the resulting diff before committing.
|
|
76
|
+
|
|
77
|
+
Keep custom behavior in `extensions/`; local edits inside the Oracle snapshot break the provenance check. After behavior changes, update both language guides and both infographic SVGs/PNGs together. The guides' baseline date/commit is a documentation snapshot, not automatically rewritten by the Oracle sync script.
|
|
78
|
+
|
|
79
|
+
## Documentation assets
|
|
80
|
+
|
|
81
|
+
The infographics are editable SVGs in [docs/assets](../assets), with PNG copies for sharing. Both use the same layout and workflow. SVG is the source of each image; regenerate its PNG after changing labels or diagrams. The npm `files` list includes `docs` so the installed README's documentation links remain usable.
|
|
82
|
+
|
|
83
|
+
Project source/test links in these guides refer to the Git checkout. `scripts/` and `test/` are development resources and are intentionally not included in the npm package; open the [source repository](https://github.com/avhrst/pi-apex) for them. Licensing and vendor attribution are in [LICENSE](../../LICENSE), [THIRD_PARTY_NOTICES.md](../../THIRD_PARTY_NOTICES.md), and [UPSTREAM.json](../../UPSTREAM.json).
|