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.
Files changed (239) hide show
  1. package/README.md +22 -5
  2. package/THIRD_PARTY_NOTICES.md +2 -2
  3. package/UPSTREAM.json +2 -2
  4. package/docs/assets/overview.en.png +0 -0
  5. package/docs/assets/overview.en.svg +89 -0
  6. package/docs/assets/overview.uk.png +0 -0
  7. package/docs/assets/overview.uk.svg +89 -0
  8. package/docs/en/README.md +41 -0
  9. package/docs/en/architecture.md +73 -0
  10. package/docs/en/getting-started.md +77 -0
  11. package/docs/en/maintenance.md +83 -0
  12. package/docs/en/tool-reference.md +85 -0
  13. package/docs/uk/README.md +41 -0
  14. package/docs/uk/architecture.md +73 -0
  15. package/docs/uk/getting-started.md +77 -0
  16. package/docs/uk/maintenance.md +83 -0
  17. package/docs/uk/tool-reference.md +85 -0
  18. package/extensions/apexlang/index.ts +19 -10
  19. package/extensions/lib/apexlang-cli.d.mts +1 -2
  20. package/extensions/lib/apexlang-cli.mjs +18 -13
  21. package/extensions/lib/apexlang-local-validate.mjs +83 -0
  22. package/extensions/lib/apexlang-local-validator.py +116 -0
  23. package/extensions/lib/apexlang-runtime-validate.mjs +76 -0
  24. package/package.json +2 -1
  25. package/skills/apexlang/APEXlang Skills and Workflows.md +325 -0
  26. package/skills/apexlang/README.md +6 -6
  27. package/skills/apexlang/RELEASE-NOTES.md +2 -2
  28. package/skills/apexlang/SKILL.md +24 -19
  29. package/skills/apexlang/agents/openai.yaml +4 -3
  30. package/skills/apexlang/assets/apex-generation/components.registry.json +1001 -16
  31. package/skills/apexlang/assets/apexlang/domains-catalog.json +6 -1
  32. package/skills/apexlang/assets/component-attributes.json +1924 -180
  33. package/skills/apexlang/assets/component-policies.json +19 -10
  34. package/skills/apexlang/assets/contracts/grammar-semantic-rules.json +134 -0
  35. package/skills/apexlang/assets/contracts/package-layers.json +56 -0
  36. package/skills/apexlang/assets/contracts/page-construction-packs.json +154 -0
  37. package/skills/apexlang/assets/contracts/page-patterns.json +119 -0
  38. package/skills/apexlang/assets/grammar/apexlang.ebnf +11743 -0
  39. package/skills/apexlang/assets/indexes/font-apex-icon-index.json +1699 -0
  40. package/skills/apexlang/assets/routing-catalog-main.json +11 -10
  41. package/skills/apexlang/assets/routing-load-policy.json +35 -9
  42. package/skills/apexlang/assets/rules-mapping.json +110 -2
  43. package/skills/apexlang/assets/rules.catalog.json +1298 -0
  44. package/skills/apexlang/assets/validator-fix-recipes.json +372 -17
  45. package/skills/apexlang/assets/workspace-intelligence.json +7 -10
  46. package/skills/apexlang/manifest.json +268 -12
  47. package/skills/apexlang/references/domains/README.md +1 -1
  48. package/skills/apexlang/references/domains/page-components/buttons.md +2 -2
  49. package/skills/apexlang/references/domains/page-components/page-items.md +3 -3
  50. package/skills/apexlang/references/domains/page-components/regions/region-display-selector/workflow-region-display-selector.md +69 -0
  51. package/skills/apexlang/references/domains/page-components/regions.md +1 -0
  52. package/skills/apexlang/references/domains/template-components/comments.md +61 -0
  53. package/skills/apexlang/references/domains/template-components/registry.md +2 -0
  54. package/skills/apexlang/references/domains/template-components/templates.md +47 -0
  55. package/skills/apexlang/references/domains/template-components/timeline.md +51 -0
  56. package/skills/apexlang/references/ops/one-message-router-contract.md +2 -2
  57. package/skills/apexlang/references/ops/runtime-gates/01-direct-sqlcl-import.md +1 -1
  58. package/skills/apexlang/references/ops/runtime-gates/02-direct-sqlcl-validate-gate.md +1 -1
  59. package/skills/apexlang/references/ops/runtime-gates.md +17 -16
  60. package/skills/apexlang/references/ops/sqlcl-agents/00-connection-gate.md +7 -7
  61. package/skills/apexlang/references/ops/sqlcl.md +7 -8
  62. package/skills/apexlang/references/policies/compiler-prop-map.md +6 -4
  63. package/skills/apexlang/references/policies/governance/00-governance.md +2 -2
  64. package/skills/apexlang/references/policies/memory-bank/00-guard/ai.guard.md +126 -922
  65. package/skills/apexlang/references/policies/memory-bank/20-data/apex.logic.md +3 -3
  66. package/skills/apexlang/references/policies/memory-bank/20-data/db.connection.md +9 -11
  67. package/skills/apexlang/references/policies/memory-bank/30-pages/apex.cards-page.md +95 -0
  68. package/skills/apexlang/references/policies/memory-bank/30-pages/apex.page.md +2 -2
  69. package/skills/apexlang/references/policies/memory-bank/30-pages/apex.smart-filter-search.md +145 -74
  70. package/skills/apexlang/references/policies/memory-bank/40-components/apex.region-interactions.md +9 -2
  71. package/skills/apexlang/references/policies/memory-bank/40-components/apex.region-media.md +6 -5
  72. package/skills/apexlang/references/policies/memory-bank/systemPatterns.md +9 -1
  73. package/skills/apexlang/references/workflows/apex-generation/agents/20-agent-draft.md +51 -232
  74. package/skills/apexlang/references/workflows/apex-generation/agents/30-agent-critique.md +49 -449
  75. package/skills/apexlang/references/workflows/apex-generation/agents/40-agent-revision.md +38 -238
  76. package/skills/apexlang/references/workflows/apex-generation/nlu/nlu-routing-test-matrix.md +8 -2
  77. package/skills/apexlang/references/workflows/apex-generation/nlu/nlu-routing-validation-notes.md +19 -3
  78. package/skills/apexlang/references/workflows/apex-generation/registry.md +15 -1
  79. package/skills/apexlang/references/workflows/apex-generation/templates.md +1 -1
  80. package/skills/apexlang/references/workflows/apex-generation.md +1 -1
  81. package/skills/apexlang/references/workflows/apexlang/apexlang-execution-model.md +5 -5
  82. package/skills/apexlang/references/workflows/apexlang/prompt-contracts.md +81 -10
  83. package/skills/apexlang/references/workflows/apexlang/workflow-create-app-from-fr-and-model.md +18 -7
  84. package/skills/apexlang/release-notes.json +156 -0
  85. package/skills/apexlang/runtime/grammar_contract.mjs +1166 -0
  86. package/skills/apexlang/runtime/internal/python/format_apexlang.py +210 -0
  87. package/skills/apexlang/runtime/internal/python/validate_apexlang.py +14142 -5843
  88. package/skills/apexlang/runtime/internal/python/validator_common.py +2 -0
  89. package/skills/apexlang/runtime/lib/catalogs.mjs +1026 -0
  90. package/skills/apexlang/runtime/lib/common.mjs +35 -0
  91. package/skills/apexlang/runtime/runtime.bundle.mjs +457 -57
  92. package/skills/apexlang/templates/items/combobox/combobox.explicit-defaults.md +1 -1
  93. package/skills/apexlang/templates/items/date-picker/date-picker._common.md +1 -1
  94. package/skills/apexlang/templates/items/date-picker/date-picker.explicit-defaults.md +1 -1
  95. package/skills/apexlang/templates/items/file-upload/file-upload._common.md +30 -24
  96. package/skills/apexlang/templates/items/file-upload/file-upload.compact-template.md +6 -0
  97. package/skills/apexlang/templates/items/file-upload/file-upload.explicit-defaults.md +23 -8
  98. package/skills/apexlang/templates/items/file-upload/file-upload.minimal.md +6 -0
  99. package/skills/apexlang/templates/items/hidden-item/hidden-item._common.md +1 -1
  100. package/skills/apexlang/templates/items/hidden-item/hidden-item.explicit-defaults.md +1 -1
  101. package/skills/apexlang/templates/items/items._common.md +3 -2
  102. package/skills/apexlang/templates/items/list-manager/list-manager.explicit-defaults.md +1 -1
  103. package/skills/apexlang/templates/items/markdown-editor/markdown-editor._common.md +1 -1
  104. package/skills/apexlang/templates/items/markdown-editor/markdown-editor.explicit-defaults.md +1 -1
  105. package/skills/apexlang/templates/items/number-field/number-field._common.md +8 -6
  106. package/skills/apexlang/templates/items/number-field/number-field.explicit-defaults.md +12 -2
  107. package/skills/apexlang/templates/items/popup-lov/popup-lov.explicit-defaults.md +1 -1
  108. package/skills/apexlang/templates/items/rich-text-editor/rich-text-editor._common.md +1 -1
  109. package/skills/apexlang/templates/items/rich-text-editor/rich-text-editor.explicit-defaults.md +1 -1
  110. package/skills/apexlang/templates/items/select-many/standard.md +1 -1
  111. package/skills/apexlang/templates/items/shuttle/shuttle.explicit-defaults.md +1 -1
  112. package/skills/apexlang/templates/items/switch/switch._common.md +8 -8
  113. package/skills/apexlang/templates/items/switch/switch.explicit-defaults.md +1 -1
  114. package/skills/apexlang/templates/items/text-area/text-area._common.md +2 -3
  115. package/skills/apexlang/templates/items/text-area/text-area.explicit-defaults.md +1 -1
  116. package/skills/apexlang/templates/items/text-area/text-area.required-length.md +1 -3
  117. package/skills/apexlang/templates/items/text-autocomplete/text-autocomplete.explicit-defaults.md +1 -1
  118. package/skills/apexlang/templates/items/text-autocomplete/text-autocomplete.required-length.md +1 -3
  119. package/skills/apexlang/templates/items/text-field/text-field._common.md +2 -3
  120. package/skills/apexlang/templates/items/text-field/text-field.explicit-defaults.md +1 -1
  121. package/skills/apexlang/templates/items/text-field/text-field.required-length.md +1 -3
  122. package/skills/apexlang/templates/page-examples/faceted-search/faceted-search.example.md +0 -5
  123. package/skills/apexlang/templates/page-examples/form-page/form-page.example.md +0 -9
  124. package/skills/apexlang/templates/page-examples/interactive-report-page/interactive-report-page.example.md +2 -2
  125. package/skills/apexlang/templates/page-examples/login-page/login-page.example.md +0 -8
  126. package/skills/apexlang/templates/page-examples/task-definition-initiated-tasks-page/task-definition-initiated-tasks-page.example.md +7 -17
  127. package/skills/apexlang/templates/page-examples/task-definition-my-tasks-page/task-definition-my-tasks-page.example.md +7 -65
  128. package/skills/apexlang/templates/page-examples/task-definition-task-details/task-definition-task-details.example.md +38 -201
  129. package/skills/apexlang/templates/region-components/calendar/calendar.custom-styling.md +3 -1
  130. package/skills/apexlang/templates/region-components/calendar/calendar.faceted-search.md +3 -2
  131. package/skills/apexlang/templates/region-components/cards/README.md +12 -4
  132. package/skills/apexlang/templates/region-components/cards/cards._common.md +176 -37
  133. package/skills/apexlang/templates/region-components/cards/cards._index.md +2 -1
  134. package/skills/apexlang/templates/region-components/cards/cards.refresh-after-dialog.md +46 -0
  135. package/skills/apexlang/templates/region-components/cards/cards.refresh-on-change.md +58 -0
  136. package/skills/apexlang/templates/region-components/cards/cards.rest-source.md +54 -18
  137. package/skills/apexlang/templates/region-components/cards/cards.standard.md +37 -21
  138. package/skills/apexlang/templates/region-components/chart/chart._series._common.md +1 -4
  139. package/skills/apexlang/templates/region-components/chart/chart.pie.md +6 -2
  140. package/skills/apexlang/templates/region-components/chart/chart.status-meter-gauge.md +1 -1
  141. package/skills/apexlang/templates/region-components/chart/chart.stock.md +2 -0
  142. package/skills/apexlang/templates/region-components/chart/features/chart.feature-chart-links.md +9 -7
  143. package/skills/apexlang/templates/region-components/faceted-search/faceted-search._common.md +1 -14
  144. package/skills/apexlang/templates/region-components/form/form._items._common.md +1 -5
  145. package/skills/apexlang/templates/region-components/interactive-report/interactive-report._columns._common.md +2 -6
  146. package/skills/apexlang/templates/region-components/interactive-report/interactive-report.page-header-actions.md +1 -7
  147. package/skills/apexlang/templates/region-components/list/README.md +1 -1
  148. package/skills/apexlang/templates/region-components/list/list._common.md +1 -1
  149. package/skills/apexlang/templates/region-components/map/map.backgrounds.md +12 -10
  150. package/skills/apexlang/templates/region-components/map/map.layer.extruded-polygons.md +16 -12
  151. package/skills/apexlang/templates/region-components/map/map.layer.heat-map.md +10 -7
  152. package/skills/apexlang/templates/region-components/map/map.layer.lines.md +10 -8
  153. package/skills/apexlang/templates/region-components/map/map.layer.polygons.md +21 -18
  154. package/skills/apexlang/templates/region-components/map/map.region.background-custom.md +25 -19
  155. package/skills/apexlang/templates/region-components/map/map.region.background-shared.md +19 -13
  156. package/skills/apexlang/templates/region-components/map/map.region.bbox-sql.md +13 -13
  157. package/skills/apexlang/templates/region-components/map/map.region.bbox-static.md +2 -2
  158. package/skills/apexlang/templates/region-components/map/map.region.browser-location.md +3 -7
  159. package/skills/apexlang/templates/region-components/map/map.region.init-position-sql.md +7 -7
  160. package/skills/apexlang/templates/region-components/region-display-selector/README.md +5 -2
  161. package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector._common.md +60 -7
  162. package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector._index.md +4 -1
  163. package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector.permutations.md +55 -0
  164. package/skills/apexlang/templates/region-components/region-display-selector/region-display-selector.standard.md +91 -5
  165. package/skills/apexlang/templates/region-components/smart-filter-search/README.md +6 -2
  166. package/skills/apexlang/templates/region-components/smart-filter-search/smart-filter-search._common.md +107 -46
  167. package/skills/apexlang/templates/region-components/smart-filter-search/smart-filter-search._index.md +4 -3
  168. package/skills/apexlang/templates/region-components/smart-filter-search/smart-filter-search.standard.md +33 -17
  169. package/skills/apexlang/templates/shared-components/component-settings/component-settings._common.md +1 -0
  170. package/skills/apexlang/templates/shared-components/component-settings.example.md +1 -0
  171. package/skills/apexlang/templates/shared-components/email-templates.example.md +1 -1
  172. package/skills/apexlang/templates/shared-components/rest-data-sources/example_rest_data_source.example.md +40 -46
  173. package/skills/apexlang/templates/shared-components/task-definitions/action-task.example.md +2 -30
  174. package/skills/apexlang/templates/shared-components/task-definitions/approve-request.example.md +3 -31
  175. package/skills/apexlang/templates/template-components/README.md +27 -15
  176. package/skills/apexlang/templates/template-components/avatar/README.md +56 -0
  177. package/skills/apexlang/templates/template-components/avatar/avatar._common.md +149 -0
  178. package/skills/apexlang/templates/template-components/avatar/avatar._index.md +42 -0
  179. package/skills/apexlang/templates/template-components/{avatar._template_options.md → avatar/avatar._template_options.md} +1 -1
  180. package/skills/apexlang/templates/template-components/avatar/avatar.report-icon.md +48 -0
  181. package/skills/apexlang/templates/template-components/avatar/avatar.report-image-url-column.md +62 -0
  182. package/skills/apexlang/templates/template-components/avatar/avatar.report-initials.md +54 -0
  183. package/skills/apexlang/templates/template-components/badge/README.md +38 -0
  184. package/skills/apexlang/templates/template-components/badge/badge._common.md +183 -0
  185. package/skills/apexlang/templates/template-components/badge/badge._index.md +20 -0
  186. package/skills/apexlang/templates/template-components/badge/badge.report-link.md +66 -0
  187. package/skills/apexlang/templates/template-components/badge/badge.report-minimal.md +76 -0
  188. package/skills/apexlang/templates/template-components/comments/README.md +20 -0
  189. package/skills/apexlang/templates/template-components/comments/comments._common.md +43 -0
  190. package/skills/apexlang/templates/template-components/comments/comments._index.md +25 -0
  191. package/skills/apexlang/templates/template-components/{comments._template_options.md → comments/comments._template_options.md} +2 -1
  192. package/skills/apexlang/templates/template-components/comments/comments.apex-task-comments.md +77 -0
  193. package/skills/apexlang/templates/template-components/comments/comments.partial-column.md +120 -0
  194. package/skills/apexlang/templates/template-components/comments/comments.permutations.md +425 -0
  195. package/skills/apexlang/templates/template-components/content-row/README.md +1 -1
  196. package/skills/apexlang/templates/template-components/content-row/content-row._common.md +1 -1
  197. package/skills/apexlang/templates/template-components/content-row/content-row._index.md +1 -1
  198. package/skills/apexlang/templates/template-components/content-row/content-row._template_options.md +1 -1
  199. package/skills/apexlang/templates/template-components/flexbox-container/README.md +9 -0
  200. package/skills/apexlang/templates/template-components/flexbox-container/flexbox-container._index.md +13 -0
  201. package/skills/apexlang/templates/template-components/media-list/README.md +100 -0
  202. package/skills/apexlang/templates/template-components/media-list/media-list._common.md +174 -0
  203. package/skills/apexlang/templates/template-components/media-list/media-list._index.md +50 -0
  204. package/skills/apexlang/templates/template-components/{media-list._template_options.md → media-list/media-list._template_options.md} +8 -2
  205. package/skills/apexlang/templates/template-components/media-list/media-list.partial.md +50 -0
  206. package/skills/apexlang/templates/template-components/media-list/media-list.report-avatar-badge.md +76 -0
  207. package/skills/apexlang/templates/template-components/media-list/media-list.report-base.md +71 -0
  208. package/skills/apexlang/templates/template-components/media-list/media-list.report-grouped.md +40 -0
  209. package/skills/apexlang/templates/template-components/media-list/media-list.report-layouts.md +50 -0
  210. package/skills/apexlang/templates/template-components/media-list/media-list.report-link.md +53 -0
  211. package/skills/apexlang/templates/template-components/metric-card/README.md +19 -4
  212. package/skills/apexlang/templates/template-components/metric-card/metric-card._common.md +122 -29
  213. package/skills/apexlang/templates/template-components/metric-card/metric-card._index.md +6 -0
  214. package/skills/apexlang/templates/template-components/metric-card/metric-card._template_options.md +47 -2
  215. package/skills/apexlang/templates/template-components/metric-card/metric-card.partial-minimal.md +51 -0
  216. package/skills/apexlang/templates/template-components/metric-card/metric-card.permutations.md +56 -0
  217. package/skills/apexlang/templates/template-components/metric-card/metric-card.report-avatar-badge.md +98 -0
  218. package/skills/apexlang/templates/template-components/metric-card/metric-card.report-grouping-selection.md +131 -0
  219. package/skills/apexlang/templates/template-components/metric-card/metric-card.report-link.md +66 -0
  220. package/skills/apexlang/templates/template-components/metric-card/metric-card.report-minimal.md +97 -0
  221. package/skills/apexlang/templates/template-components/template-components.registry.json +90 -1
  222. package/skills/apexlang/templates/template-components/timeline/README.md +19 -0
  223. package/skills/apexlang/templates/template-components/timeline/timeline._common.md +43 -0
  224. package/skills/apexlang/templates/template-components/timeline/timeline._index.md +24 -0
  225. package/skills/apexlang/templates/template-components/{timeline._template_options.md → timeline/timeline._template_options.md} +2 -1
  226. package/skills/apexlang/templates/template-components/timeline/timeline.permutations.md +399 -0
  227. package/skills/apexlang/templates/template-components/timeline/timeline.report-sample-data.md +168 -0
  228. package/skills/apexlang/templates/workspace-components/credentials/credentials-for-open-ai.example.md +1 -1
  229. package/skills/apexlang/templates/workspace-components/generative-ai-services/open-ai.example.md +8 -6
  230. package/skills/apexlang/tools/apexctl.mjs +167 -4
  231. package/skills/apexlang/tools/compiler-truth-audit.mjs +95 -63
  232. package/skills/apexlang/tools/query-valid-props-context.mjs +30 -0
  233. package/skills/apexlang/tools/query-valid-props-normalize.mjs +1 -0
  234. package/skills/apexlang/tools/query-valid-props-runtime.mjs +13 -8
  235. package/skills/apexlang/tools/query-valid-props-semantics.mjs +391 -0
  236. package/skills/apexlang/tools/query-valid-props-template-components.mjs +15 -1
  237. package/skills/apexlang/tools/query-valid-props.mjs +198 -216
  238. /package/skills/apexlang/templates/template-components/{badge._template_options.md → badge/badge._template_options.md} +0 -0
  239. /package/skills/apexlang/templates/template-components/{flexbox-container._template_options.md → flexbox-container/flexbox-container._template_options.md} +0 -0
@@ -0,0 +1,85 @@
1
+ # Tool reference
2
+
3
+ [Documentation](README.md) · [Українська](../uk/tool-reference.md)
4
+
5
+ The registered tool is named **`apexlang`**. Its model-visible API has exactly the eight actions below. The schema is in [index.ts](../../extensions/apexlang/index.ts), while action-specific requirements and command construction are in [apexlang-cli.mjs](../../extensions/lib/apexlang-cli.mjs).
6
+
7
+ ## Actions
8
+
9
+ | Action | Required input beyond `action` | Effect |
10
+ | --- | --- | --- |
11
+ | `workspace_probe` | None; connection and workspace must be supplied together if used | Discovers bounded local context and candidate applications. |
12
+ | `new_app_materialize` | `app_path`, `db_connection_name`, `workspace_name`; authoritative probe result | Creates the base scaffold after interactive confirmation, only at the exact suggested path. |
13
+ | `local_validate` | `app_path` | Runs vocabulary, DSL, and validation-rule checks. `fix_vocab=true` rewrites vocabulary after confirmation. |
14
+ | `compiler_truth_audit` | `app_path` | Audits against compiler metadata with component-attribute verification always enabled. |
15
+ | `query_valid_props` | At least one of `component`, `component_type_id`, `template_component`, or `list=true` | Queries compiler properties or lists matching component types; requests JSON output. |
16
+ | `runtime_preflight` | `db_connection_name`, `workspace_name` | Resolves/checks runtime setup; accepts optional `app_path`. |
17
+ | `runtime_doctor` | `db_connection_name`, `workspace_name` | Diagnoses runtime setup; accepts optional `app_path`. |
18
+ | `runtime_validate` | `app_path`, `db_connection_name`, `workspace_name` | Validates live, then offers the separate interactive import path after an authoritative pass. |
19
+
20
+ The two direct project-writing operations are scaffold creation and vocabulary rewriting. Reports and temporary runtime copies may also be written by other actions. Server import is a separate confirmed branch of `runtime_validate`.
21
+
22
+ ## Parameters
23
+
24
+ | Parameter | Type / values | Used by |
25
+ | --- | --- | --- |
26
+ | `action` | One of the eight names above | All calls |
27
+ | `app_path` | Directory within the active workspace | Scaffold, local/audit/live validation; optional for preflight/doctor |
28
+ | `db_connection_name` | Saved SQLcl alias, 1–128 characters; letters, digits, `_`, `.`, `-`; first character alphanumeric or `_` | Probe, scaffold, runtime actions |
29
+ | `workspace_name` | 1–128 characters; letters, digits, `_`, `$`, `#`, `.`, `-`; first character alphanumeric | Paired with the saved connection |
30
+ | `execution_mode` | `auto`, `build-root`, `path` | Runtime actions; delegated to Oracle runtime resolution |
31
+ | `apex_root` | Runtime root path | Runtime actions |
32
+ | `compiler_oracle_home` | Compiler metadata location or Oracle home | Compiler audit, property queries, initial live validation |
33
+ | `component` | Semantic component identifier | Property query |
34
+ | `component_type_id` | Numeric ID supplied as a string | Property query |
35
+ | `template_component` | Universal Theme template component identifier | Property query |
36
+ | `parent`, `group` | Component/property-group filters | Property query |
37
+ | `when` | Array of up to 20 assumption strings | Property query |
38
+ | `list` | Boolean | Property query |
39
+ | `supporting_objects` | Boolean | Runtime preflight/doctor, validation, and the later import path |
40
+ | `fix_vocab` | Boolean | Local validation |
41
+
42
+ Control characters are rejected in text inputs. Paths also reject double quotes and ampersands. The schema exposes shared optional fields; the command builder determines which fields each action consumes. In particular, the roundtrip import builder does not forward `compiler_oracle_home` as a CLI option.
43
+
44
+ ## Example tool inputs
45
+
46
+ These are tool argument objects, not shell commands. Replace illustrative values with verified project context.
47
+
48
+ ```json
49
+ {"action":"workspace_probe"}
50
+ ```
51
+
52
+ ```json
53
+ {"action":"local_validate","app_path":"applications/service-ops"}
54
+ ```
55
+
56
+ ```json
57
+ {"action":"query_valid_props","list":true}
58
+ ```
59
+
60
+ ```json
61
+ {"action":"runtime_preflight","app_path":"applications/service-ops","db_connection_name":"apex_dev","workspace_name":"SERVICE_OPS_DEV"}
62
+ ```
63
+
64
+ ```json
65
+ {"action":"runtime_validate","app_path":"applications/service-ops","db_connection_name":"apex_dev","workspace_name":"SERVICE_OPS_DEV"}
66
+ ```
67
+
68
+ ## Results and pass criteria
69
+
70
+ Successful tool responses contain text plus `details` such as `action`, `exitCode`, and `outputRoot`. Runtime validation also reports `liveValidationPassed` and `imported`, with choice/target details when applicable. Cancelled project changes return `cancelled=true`. Failed runs throw an error containing the available process output and report path; pre-execution input errors may have no reports yet.
71
+
72
+ | Operation | Evidence checked by the extension |
73
+ | --- | --- |
74
+ | Local checks | Wrapper exits successfully and emits `APEXLANG_LOCAL_CHECK_OK`; individual reports carry diagnostics. |
75
+ | Live check | Successful process result; `live_check_status=pass` **or** `validation_status=pass`; and `validation_sources.live_validator.status=pass`. |
76
+ | New-target proof | A deliberately blocked result: `target_resolution_mode=create-new`, `target_resolution_status=not_found_in_workspace`, `create_new_confirmation_required=true`, `import_status=blocked`, `failure_class=create_new_confirmation_required`, and `ok=false`. |
77
+ | Import | Successful process result and `validate_status=pass`, `import_status=pass`, `runtime_gate_status=pass`. |
78
+
79
+ Exit code zero alone is insufficient for live-check or import success. The new-target proof is expected to stop at a confirmation boundary; it is not an imported application.
80
+
81
+ ## Warning compatibility
82
+
83
+ The adapter contains a narrowly checked compatibility path for SQLcl results containing only compile warnings. It verifies current artifacts, transcript evidence, and applicable target identity before normalizing a result or continuing an approved import. Missing, stale, contradictory, or hard-error evidence remains blocking. The create-new branch does not use the existing-app compatibility import fallback.
84
+
85
+ This mechanism is separate from the ORDS/SQLcl **advisory table**, which only adds diagnostic guidance. See [maintenance](maintenance.md) and the source functions `normalizeWarningOnlyValidation` and `runWarningCompatibleImport` in the [adapter](../../extensions/lib/apexlang-cli.mjs).
@@ -0,0 +1,41 @@
1
+ # Документація pi-apexlang
2
+
3
+ [English](../en/README.md) · [README проєкту](../../README.md)
4
+
5
+ `pi-apexlang` поєднує агента розробки pi з ресурсами Oracle для APEXlang. Агент використовує шаблони та настанови Oracle для роботи з файлами застосунку; розширення надає інструмент із визначеними діями для пошуку контексту, створення каркаса, перевірки й діагностики середовища. Імпорт стає доступним через інтерактивний вибір після успішної перевірки на сервері.
6
+
7
+ Це незалежна інтеграція, а не продукт Oracle. Репозиторій має назву `pi-apex`; назву та версію пакета визначено в [package.json](../../package.json).
8
+
9
+ ## Оберіть матеріал за задачею
10
+
11
+ | Ваша задача | Посібник |
12
+ | --- | --- |
13
+ | Установити пакет і перевірити перший застосунок | [Початок роботи](getting-started.md) |
14
+ | Зрозуміти компоненти та порядок імпорту | [Архітектура](architecture.md) |
15
+ | Знайти дії, параметри та докази результату | [Довідник інструмента](tool-reference.md) |
16
+ | Знайти звіти, з'ясувати причини помилок або оновити пакет | [Супровід](maintenance.md) |
17
+
18
+ ## Загальна схема
19
+
20
+ ![Робота з APEXlang: визначити контекст, виконати локальні та компіляторні перевірки, перевірити на сервері й обрати, чи імпортувати застосунок.](../assets/overview.uk.svg)
21
+
22
+ [Масштабована інфографіка](../assets/overview.uk.svg) · [Зображення PNG](../assets/overview.uk.png)
23
+
24
+ ## Що означає успішна перевірка
25
+
26
+ | Доказ | Що він підтверджує |
27
+ | --- | --- |
28
+ | Успішна локальна перевірка | Пройдено вбудовані перевірки словника, DSL і правил валідацій. |
29
+ | Успішний аудит compiler-truth | Структуру й атрибути компонентів перевірено за вибраними метаданими компілятора. |
30
+ | Підтверджена успішна серверна перевірка | Середовище повернуло докази успіху live-валідатора для знімка застосунку. |
31
+ | Успішний імпорт | Перевірка, імпорт і контроль середовища повернули `pass`. |
32
+
33
+ Самої локальної перевірки недостатньо, щоб підтвердити коректність застосунку на конкретному сервері. Успішна серверна перевірка сама по собі не означає, що застосунок імпортовано.
34
+
35
+ ## Основа документації
36
+
37
+ Посібники описують версію пакета **0.4.0**, оновлену **2026-09-22** зі skill Oracle APEXlang релізу **2026.09.21**, зафіксованим у [`UPSTREAM.json`](../../UPSTREAM.json). Оновлення додає сценарії Media List і Comments, розширює підтримку Metric Card, Cards та Region Display Selector і посилює перевірки Smart Filter та Search. Див. включені до пакета [release notes Oracle](../../skills/apexlang/release-notes.json).
38
+
39
+ Шляхи та назви підключень у прикладах умовні. Доступ до сервера, облікові дані й цілі розгортання визначає оператор.
40
+
41
+ Твердження про реалізацію містять посилання на локальні джерела. Посилання на вимоги Oracle наведено в посібнику з початку роботи. Таблиця сумісності — рекомендаційний матеріал цього проєкту; дата її перевірки відрізняється від дати документації. Ці посібники не підтверджують перевірку чи імпорт у робочому серверному середовищі.
@@ -0,0 +1,73 @@
1
+ # Архітектура
2
+
3
+ [Документація](README.md) · [English](../en/architecture.md)
4
+
5
+ ## Компоненти
6
+
7
+ | Шар | Відповідальність | Джерело |
8
+ | --- | --- | --- |
9
+ | Oracle skill | Маршрутизація задач, довідкові матеріали, шаблони та вбудоване середовище Oracle | [skills/apexlang](../../skills/apexlang) |
10
+ | Розширення Pi | Реєстрація `apexlang`, схема параметрів, підтвердження та очищення сесії | [index.ts](../../extensions/apexlang/index.ts) |
11
+ | Адаптер процесів | Масиви аргументів, перевірки шляхів і контексту, контроль хешів застосунку, запуск дочірніх процесів | [apexlang-cli.mjs](../../extensions/lib/apexlang-cli.mjs) |
12
+ | Обгортка локальних перевірок | Перевірки словника, DSL і правил валідацій | [apexlang-local-validate.mjs](../../extensions/lib/apexlang-local-validate.mjs) |
13
+ | Прискорення парсера | Кешування повторного розбору блоків і запитів вкладеності в межах одного Python-процесу | [apexlang-local-validator.py](../../extensions/lib/apexlang-local-validator.py) |
14
+ | Міст до середовища | Виклик вбудованих валідації та roundtrip; підтримка керованого шляху SQLcl через PTY | [обгортка валідації](../../extensions/lib/apexlang-runtime-validate.mjs), [roundtrip-міст](../../extensions/lib/apexlang-runtime-roundtrip.mjs), [PTY-міст](../../extensions/lib/apexlang-sqlcl-pty.py) |
15
+ | Рекомендації щодо сумісності | Виявлення масових діагностик і відображення рекомендацій щодо версій | [compatibility.ts](../../extensions/apexlang/compatibility.ts), [таблиця](../../extensions/apexlang/ords-sqlcl-compatibility.json) |
16
+
17
+ Skill збережено без змін на коміті та з хешем, зазначеними в [UPSTREAM.json](../../UPSTREAM.json). Прискорення розширення обгортає валідатор Oracle; воно не редагує копію постачальника й не пропускає етапи перевірки. Pi знаходить skill через запис `pi.skills` пакета та поступово завантажує матеріали конкретної задачі.
18
+
19
+ Обгортка валідації задає шляхи до граматики та Python-валідатора в пакеті для перевірок Media List за цільовою збіркою. Runtime Oracle 2026.09.21 шукає ці файли за шляхами дерева вихідного коду, яких немає в публічному skill-пакеті. Обгортка зберігає перевірки Oracle та обробку їхніх помилок.
20
+
21
+ ## Робочий процес
22
+
23
+ ```mermaid
24
+ flowchart TD
25
+ A[Запит + застосунок або достовірні метадані] --> B[workspace_probe]
26
+ B --> C[Агент створює або редагує файли APEXlang]
27
+ B -. Необов'язковий підтверджений каркас .-> 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: серверна перевірка]
32
+ F --> G{Є підтверджений успіх?}
33
+ G -- Ні --> H[Аналіз діагностик і виправлення]
34
+ H --> C
35
+ G -- Так --> I{Інтерактивний вибір}
36
+ I -- Лише перевірка / скасування / немає UI --> J[Завершення без імпорту]
37
+ I -- Імпорт --> K[Визначення цілі + перевірка хешу]
38
+ K --> L[Повторна перевірка й імпорт в одній сесії SQLcl]
39
+ ```
40
+
41
+ Це рекомендований порядок роботи. Зареєстрований інструмент не є планувальником, який автоматично виконує всі вісім дій. Код застосунку редагує агент; у схемі інструмента немає універсальної дії `generate` чи `edit`.
42
+
43
+ ## Порядок імпорту
44
+
45
+ 1. `runtime_validate` має повернути успішний результат процесу, `live_check_status=pass` або `validation_status=pass`, а також `validation_sources.live_validator.status=pass`.
46
+ 2. За наявності UI розширення пропонує **Check APEXlang code** або **Check and import APEXlang code**. Без UI воно повертає результат серверної перевірки з `imported=false`.
47
+ 3. Вибір імпорту потребує коректного SHA-256 хешу застосунку та явного режиму цілі:
48
+
49
+ | Режим цілі | Необхідний доказ |
50
+ | --- | --- |
51
+ | Оновити наявний | Oracle визначає рівно один наявний застосунок на сервері. |
52
+ | Створити новий | Oracle доводить відсутність alias у вибраному workspace без права імпорту; після цього користувач підтверджує створення в додатковому діалозі. |
53
+
54
+ 4. Адаптер перевіряє, чи знімок застосунку досі відповідає погодженому хешу. Зміни дерева потребують повторної перевірки.
55
+ 5. Перевірка й імпорт виконуються разом в одній сесії SQLcl. Розширення повідомляє успішний імпорт лише за успішного результату процесу та `pass` у всіх полях: `validate_status`, `import_status`, `runtime_gate_status`.
56
+
57
+ У переліку дій, доступному моделі, немає окремої дії імпорту. Кожен діалог підтвердження та вибору отримує сигнал скасування й таймаут п'ять хвилин. Відсутність вибору ніколи не дозволяє імпорт. Це механізми контролю пакета; вони не замінюють права збереженого підключення в базі даних.
58
+
59
+ ## Тимчасова копія та докази виконання
60
+
61
+ Операції середовища з указаним застосунком потребують JSON-об'єкта в `deployments/default.json`. Адаптер приймає workspace з `workspace.name` або експортованого `app.workspace.name`, відхиляє конфлікти та порівнює назву з явним `workspace_name` без урахування регістру. Невизначений заповнювач `__REQUIRED_WORKSPACE_NAME__` відхиляється.
62
+
63
+ Адаптер копіює застосунок до каталогу результатів сесії для попередньої перевірки середовища, діагностики, валідації, імпорту та перевірки відсутності нового застосунку. Він додає workspace і нормалізує переноси рядків у тимчасових `.apx` засобом Oracle перед обчисленням хешу. Файли проєкту залишаються незмінними. Тому валідація та імпорт використовують однаковий знімок із переносами LF. Хеш також нормалізує форматування JSON і додане `workspace.name`; інші властивості розгортання залишаються його частиною, а зміни вмісту коду потребують повторної валідації.
64
+
65
+ Розширення створює тимчасовий каталог результатів `pi-apexlang-*` під час першого виклику й повторно використовує його в межах сесії. Тому звіти й контекст середовища мають спільний стабільний корінь сесії. Відомі докази validation/roundtrip очищаються перед відповідним новим запуском. На `session_shutdown` весь каталог результатів видаляється: скопіюйте потрібні докази до завершення сесії.
66
+
67
+ ## Межі виконання
68
+
69
+ Шляхи застосунку залишаються в активному робочому каталозі Pi. Адаптер перевіряє реальні шляхи, відхиляє символічні посилання в деревах застосунків і відповідних вхідних файлах пошуку, а для переписування словника також відхиляє файли з кількома жорсткими посиланнями. Команди використовують масиви аргументів без shell-інтерполяції. Скасування, таймаут або перевищення обсягу виводу зупиняє дерево запущеного процесу.
70
+
71
+ Інструмент працює послідовно. Налаштований таймаут команди — **10 хвилин на окремий запущений процес**, а не загальний ліміт багатоетапної дії. Типовий ліміт сумарного виводу процесу — **8 MiB**; текст для моделі обрізається на **80 000 символів** зі збереженням адреси повних звітів.
72
+
73
+ Виконувані приклади цих меж наведено в [тестах адаптера](../../test/runner.test.mjs) і [тестах розширення](../../test/extension.test.mjs).
@@ -0,0 +1,77 @@
1
+ # Початок роботи
2
+
3
+ [Документація](README.md) · [English](../en/getting-started.md)
4
+
5
+ ## Вимоги
6
+
7
+ Для локальної роботи потрібні встановлений pi, Node.js **22.19.0 або новіший** і команда `python3` у `PATH`. Мінімальну версію Node визначено в [package.json](../../package.json); [обгортка локальних перевірок](../../extensions/lib/apexlang-local-validate.mjs) викликає `python3` безпосередньо.
8
+
9
+ Для серверних команд [включений до пакета skill Oracle](../../skills/apexlang/README.md#requirements) потребує SQLcl **26.1.2 або новішого**, останньої доступної збірки APEX **26.1**, робочого підключення до бази та прав на цільові workspace і схему. Загальні [вимоги Oracle до APEXlang](https://docs.oracle.com/en/database/oracle/sql-developer-command-line/26.1/sqcug/prerequisites-apexlang.html) зазначають SQLcl 26.1 як мінімум. ORDS **26.1.1** додав необхідну підтримку APEXlang; див. [опис випуску ORDS 26.1.1](https://www.oracle.com/tools/ords/ords-relnotes-26.1.1.html). Для гілки SQLcl 26.1.2 Oracle зазначає Java **17 або 21** в [описі випуску](https://www.oracle.com/tools/sqlcl/sqlcl-relnotes-26.1.2.html). Для іншої версії перевіряйте документацію відповідного випуску.
10
+
11
+ Потрібні **назва збереженого підключення SQLcl** і відповідна **назва APEX workspace**. Розширення приймає назви, а не паролі, облікові дані чи рядки підключення. Локальна робота також потребує наявного застосунку APEXlang або достовірних метаданих схеми, моделі, API чи таблиць.
12
+
13
+ ## Установлення та відкриття проєкту
14
+
15
+ Установлення для поточного користувача:
16
+
17
+ ```bash
18
+ pi install git:github.com/avhrst/pi-apex
19
+ ```
20
+
21
+ Для встановлення лише в межах проєкту застосунку виконайте команду в його каталозі:
22
+
23
+ ```bash
24
+ pi install git:github.com/avhrst/pi-apex -l
25
+ ```
26
+
27
+ Потім запустіть `pi` в каталозі, що містить застосунок і метадані. Це активний робочий каталог: `app_path` має залишатися в його межах.
28
+
29
+ Щоб спробувати цей репозиторій локально, запустіть `pi -e .` з його checkout. Тоді робочим каталогом буде checkout; команда не обирає зовнішній проєкт застосунку. Кореневий README також містить форму встановлення через npm для використання після публікації пакета. Цей посібник не стверджує, що конкретну версію вже опубліковано.
30
+
31
+ Pi завантажує skill, коли він доречний. Почніть запит із `/skill:apexlang`, щоб обрати його явно.
32
+
33
+ ## Перша перевірка наявного застосунку
34
+
35
+ Наведені назви — приклади; підставте реальний шлях застосунку та збережене підключення.
36
+
37
+ 1. Визначте контекст:
38
+
39
+ ```text
40
+ /skill:apexlang Досліди цей робочий каталог. Визнач можливі застосунки APEX і наявні достовірні метадані. Поясни, яких вхідних даних бракує.
41
+ ```
42
+
43
+ 2. Перевірте потрібний застосунок локально:
44
+
45
+ ```text
46
+ /skill:apexlang Перевір applications/service-ops локально. Виконай аудит compiler-truth, якщо доступні метадані компілятора. Покажи знайдені проблеми та шляхи звітів. Не імпортуй застосунок.
47
+ ```
48
+
49
+ 3. Коли середовище налаштовано, замовте серверну перевірку:
50
+
51
+ ```text
52
+ /skill:apexlang Перевір applications/service-ops через збережене підключення apex_dev та APEX workspace SERVICE_OPS_DEV. Спочатку діагностуй середовище, потім виконай серверну перевірку. Не імпортуй застосунок.
53
+ ```
54
+
55
+ Якщо після успішної серверної перевірки з'явиться діалог наступного кроку, оберіть **Check APEXlang code**, щоб завершити без імпорту. Кожен інтерактивний діалог обмежено п'ятьма хвилинами; скасування, таймаут або відсутність UI не надають дозволу на імпорт.
56
+
57
+ Точні назви дій наведено в [довіднику інструмента](tool-reference.md), а окремий шлях імпорту — в [архітектурі](architecture.md#порядок-імпорту).
58
+
59
+ ## Створення локального каркаса
60
+
61
+ Надайте достовірні метадані й alias застосунку, цільовий шлях або підказку щодо назви. `workspace_probe` має визначити контекст, установити `app_context.status=create_new_allowed` і повернути точний `suggested_app_path`. Для `new_app_materialize` потрібні цей шлях, пара назв підключення/workspace та інтерактивне підтвердження.
62
+
63
+ ```text
64
+ /skill:apexlang Використай перевірені метадані схеми в цьому робочому каталозі для підготовки нового застосунку APEXlang. Спочатку виконай probe і повідом запропонований шлях. Створи каркас через діалог підтвердження, потім перевір його локально. Не імпортуй застосунок.
65
+ ```
66
+
67
+ Матеріалізація створює локальні файли. Створення застосунку на сервері — пізніша операція імпорту з окремим підтвердженням.
68
+
69
+ ## Оновлення повного експорту
70
+
71
+ У сесії SQLcl із відповідним підключенням замініть заповнювачі перед виконанням:
72
+
73
+ ```text
74
+ apex export -applicationid <id> -exptype APEXLANG -split -dir <absolute-parent-directory> -force
75
+ ```
76
+
77
+ `-dir` — батьківський каталог; SQLcl створює під ним папку з alias застосунку. `-force` видаляє та створює цю папку заново. Перед оновленням збережіть зміни, наявні лише локально. Настанова розширення передбачає один експорт із заміною, щоб уникнути копій із суфіксами на кшталт `p00005_1.apx`; див. [зареєстровану настанову](../../extensions/apexlang/index.ts).
@@ -0,0 +1,83 @@
1
+ # Супровід і діагностика
2
+
3
+ [Документація](README.md) · [English](../en/maintenance.md)
4
+
5
+ ## Збереження потрібних звітів
6
+
7
+ Візьміть `outputRoot` із деталей результату інструмента або шлях `APEXlang reports:` із помилки виконання. Розширення передає цей каталог дочірнім процесам як `APEXLANG_OUTPUT_ROOT`; власний тимчасовий корінь створюється всередині розширення, а не задається параметром інструмента.
8
+
9
+ | Відносний шлях | Вміст |
10
+ | --- | --- |
11
+ | `logs/apexlang-vocab-report.json` | Діагностики словника та непідтримуваної MMD |
12
+ | `logs/apexlang-dsl-report.json` | Діагностики перевірки DSL |
13
+ | `logs/apexlang-validations-report.json` | Діагностики правил валідацій |
14
+ | `logs/validation/` | Артефакти серверної перевірки, якщо їх створило середовище |
15
+ | `logs/runtime-run.json`, `logs/runtime-run.log` | Звіт і транскрипт roundtrip, якщо їх створено |
16
+ | `logs/compat/` | Докази сумісності, якщо використано відповідний шлях |
17
+ | `runtime-apps/` | Тимчасові копії застосунку |
18
+
19
+ Не кожна дія створює всі файли. Нові запуски очищають відомі застарілі докази, а завершення сесії видаляє весь корінь. Для довготривалого збереження скопіюйте потрібні звіти до каталогу доказів проєкту перед наступним запуском або завершенням сесії. Звіти можуть містити код, назви та діагностики застосунку; перегляньте їхній вміст перед передаванням іншим.
20
+
21
+ ## Діагностика за симптомом
22
+
23
+ | Симптом | Наступний крок |
24
+ | --- | --- |
25
+ | `Missing Inputs` під час створення каркаса | Надайте достовірні метадані й підказку щодо ідентичності застосунку; повторіть probe та використайте точний `suggested_app_path`. |
26
+ | Відхилено шлях або символічне посилання | Відкрийте pi в корені потрібного проєкту й використайте справжній каталог застосунку всередині нього. |
27
+ | Виправлення словника відхиляє файл із кількома жорсткими посиланнями | Перед переписуванням зробіть потрібний файл застосунку незалежним. |
28
+ | Відхилено підключення чи workspace | Використайте збережений alias, а не рядок підключення; надайте відповідний workspace. |
29
+ | `deployments/default.json` відсутній або суперечливий | Перегляньте експортовані метадані розгортання та узгодьте потрібний workspace перед повтором. |
30
+ | Не вдається визначити властивості компілятора | Перевірте `mmdVersion` застосунку й доступні метадані компілятора; використайте `compiler_oracle_home` там, де його підтримано. |
31
+ | Багато діагностик у всьому застосунку | Перед масовими правками перевірте сумісність SQLcl/APEX/ORDS і метаданих компілятора. |
32
+ | Серверний процес успішно завершився, але імпорт недоступний | Перевірте поля доказів live-валідатора; самого коду завершення недостатньо. |
33
+ | Застосунок змінився після погодженої перевірки | Повторно перевірте поточний знімок застосунку. |
34
+ | Діалог після перевірки скасовано або сплив таймаут | Застосунок не імпортовано; замовте нову перевірку, якщо імпорт досі потрібний. |
35
+ | Таймаут процесу чи перевищення обсягу виводу | Перегляньте збережений вивід, діагностуйте через `runtime_doctor` і усуньте причину перед повтором. |
36
+
37
+ ## Рекомендації щодо версій
38
+
39
+ [Машиночитана таблиця](../../extensions/apexlang/ords-sqlcl-compatibility.json) містить `policy=advisory-only` і дату перевірки **2026-07-19**. Збірка SQLcl **26.1.2.132.1334** у ній — діагностична базова версія для описаних сценаріїв APEX 26.1, а не універсально обов'язкова версія. SQLcl 26.2 не блокується категорично.
40
+
41
+ [Механізм рекомендацій](../../extensions/apexlang/compatibility.ts) спрацьовує за щонайменше **50 структурованих діагностик**. Для локальних JSON-звітів і текстового виводу compiler-truth додатково потрібні щонайменше **5 різних `.apx`-файлів**; дублікати діагностик прибираються. Явний `UNSUPPORTED_MMD_VERSION` у локальному звіті словника також викликає рекомендації.
42
+
43
+ Перевірте `sql -version`, `.apex/apexlang.json` → `mmdVersion`, а також версії APEX/ORDS на сервері разом із його адміністратором. Таблиця додає поради, не змінюючи статусу перевірки й не надаючи права імпорту. Зафіксовані мінімуми Oracle та діагностичні рекомендації проєкту мають різні значення `basis`; для інших гілок версій звертайтеся до пов'язаної документації випусків.
44
+
45
+ ## Розробка та перевірки
46
+
47
+ З кореня репозиторію:
48
+
49
+ ```bash
50
+ npm install --ignore-scripts
51
+ npm run check
52
+ ```
53
+
54
+ `npm run check` послідовно виконує такі етапи:
55
+
56
+ | Етап | Що перевіряє |
57
+ | --- | --- |
58
+ | `typecheck` | Суворі перевірки TypeScript без створення вихідних файлів |
59
+ | `verify:vendor` | Хеш і походження зафіксованої копії Oracle |
60
+ | `test` | Контракти розширення/адаптера та відповідність результатів валідаторів |
61
+ | `smoke` | Probe порожнього тимчасового каталогу й локальну перевірку вбудованого каркаса |
62
+ | `verify:package` | Склад npm-пакета в dry-run і виключення файлів розробки/кешу |
63
+
64
+ Це локальні автоматизовані перевірки, а не доказ успішної серверної перевірки чи імпорту на реальному сервері. Workflow публікації запускається вручну й виконує `npm run check` перед публікацією; див. [publish-npm.yml](../../.github/workflows/publish-npm.yml).
65
+
66
+ ## Оновлення копії Oracle
67
+
68
+ Підставте перевірений коміт/ref замість `<reviewed-ref>`:
69
+
70
+ ```bash
71
+ npm run sync:oracle -- --ref <reviewed-ref>
72
+ npm run check
73
+ ```
74
+
75
+ [Скрипт синхронізації](../../scripts/sync-oracle-apexlang.mjs) отримує репозиторій Oracle, замінює `skills/apexlang`, оновлює `LICENSE`, коміт/хеш у `UPSTREAM.json` і зафіксовані посилання в кореневому README та повідомленнях про сторонні компоненти. Під час заміни він використовує резервну копію. Перегляньте підсумковий diff перед комітом.
76
+
77
+ Власну поведінку реалізуйте в `extensions/`; локальні зміни в копії Oracle порушують перевірку її походження. Після зміни поведінки разом оновлюйте обидва мовні посібники й обидві інфографіки SVG/PNG. Дата/коміт посібників — знімок документації, який скрипт синхронізації Oracle не переписує автоматично.
78
+
79
+ ## Матеріали документації
80
+
81
+ Інфографіки — редаговані SVG у [docs/assets](../assets) з PNG-копіями для поширення. Обидві мають однакові компонування та процес. SVG є джерелом кожного зображення; після зміни підписів або схеми оновіть PNG. Перелік npm `files` включає `docs`, щоб посилання на документацію з установленого README залишалися придатними.
82
+
83
+ Посилання на код/тести в цих посібниках стосуються Git checkout. `scripts/` і `test/` — ресурси розробки, які навмисно не входять до npm-пакета; для них відкрийте [репозиторій коду](https://github.com/avhrst/pi-apex). Ліцензія та атрибуція постачальника наведені в [LICENSE](../../LICENSE), [THIRD_PARTY_NOTICES.md](../../THIRD_PARTY_NOTICES.md) і [UPSTREAM.json](../../UPSTREAM.json).
@@ -0,0 +1,85 @@
1
+ # Довідник інструмента
2
+
3
+ [Документація](README.md) · [English](../en/tool-reference.md)
4
+
5
+ Зареєстрований інструмент має назву **`apexlang`**. Його API для моделі містить рівно вісім наведених нижче дій. Схема визначена в [index.ts](../../extensions/apexlang/index.ts), а вимоги окремих дій і формування команд — в [apexlang-cli.mjs](../../extensions/lib/apexlang-cli.mjs).
6
+
7
+ ## Дії
8
+
9
+ | Дія | Обов'язкові дані, крім `action` | Результат |
10
+ | --- | --- | --- |
11
+ | `workspace_probe` | Немає; якщо вказано підключення чи workspace, потрібні обидва | Шукає локальний контекст і можливі застосунки в установлених межах. |
12
+ | `new_app_materialize` | `app_path`, `db_connection_name`, `workspace_name`; достовірний результат probe | Створює базовий каркас після інтерактивного підтвердження лише за точним запропонованим шляхом. |
13
+ | `local_validate` | `app_path` | Перевіряє словник, DSL і правила валідацій. `fix_vocab=true` переписує словник після підтвердження. |
14
+ | `compiler_truth_audit` | `app_path` | Виконує аудит за метаданими компілятора з обов'язково ввімкненою перевіркою атрибутів компонентів. |
15
+ | `query_valid_props` | Щонайменше одне з `component`, `component_type_id`, `template_component` або `list=true` | Запитує властивості компілятора чи перелік відповідних типів компонентів; запитує вивід JSON. |
16
+ | `runtime_preflight` | `db_connection_name`, `workspace_name` | Визначає та перевіряє налаштування середовища; приймає необов'язковий `app_path`. |
17
+ | `runtime_doctor` | `db_connection_name`, `workspace_name` | Діагностує налаштування середовища; приймає необов'язковий `app_path`. |
18
+ | `runtime_validate` | `app_path`, `db_connection_name`, `workspace_name` | Перевіряє на сервері; після підтвердженого успіху пропонує окремий інтерактивний шлях імпорту. |
19
+
20
+ Дві операції безпосередньо змінюють проєкт: створення каркаса та переписування словника. Інші дії також можуть записувати звіти й тимчасові копії середовища. Імпорт на сервер — окрема підтверджена гілка `runtime_validate`.
21
+
22
+ ## Параметри
23
+
24
+ | Параметр | Тип / значення | Де використовується |
25
+ | --- | --- | --- |
26
+ | `action` | Одна з восьми назв вище | Усі виклики |
27
+ | `app_path` | Каталог у межах активного робочого каталогу | Каркас, локальна/компіляторна/серверна перевірка; необов'язковий для preflight/doctor |
28
+ | `db_connection_name` | Збережений alias SQLcl, 1–128 символів; латинські літери, цифри, `_`, `.`, `-`; перший символ — літера, цифра або `_` | Probe, каркас, дії середовища |
29
+ | `workspace_name` | 1–128 символів; латинські літери, цифри, `_`, `$`, `#`, `.`, `-`; перший символ — літера або цифра | Разом зі збереженим підключенням |
30
+ | `execution_mode` | `auto`, `build-root`, `path` | Дії середовища; передається механізму визначення середовища Oracle |
31
+ | `apex_root` | Шлях кореня середовища | Дії середовища |
32
+ | `compiler_oracle_home` | Каталог метаданих компілятора або Oracle home | Компіляторний аудит, запити властивостей, початкова серверна перевірка |
33
+ | `component` | Семантичний ідентифікатор компонента | Запит властивостей |
34
+ | `component_type_id` | Числовий ID у вигляді рядка | Запит властивостей |
35
+ | `template_component` | Ідентифікатор шаблонного компонента Universal Theme | Запит властивостей |
36
+ | `parent`, `group` | Фільтри компонента/групи властивостей | Запит властивостей |
37
+ | `when` | Масив до 20 рядків припущень | Запит властивостей |
38
+ | `list` | Boolean | Запит властивостей |
39
+ | `supporting_objects` | Boolean | Preflight/doctor, перевірка середовища й подальший імпорт |
40
+ | `fix_vocab` | Boolean | Локальна перевірка |
41
+
42
+ Керувальні символи в текстових даних відхиляються. У шляхах також заборонені подвійні лапки й амперсанди. Схема містить спільні необов'язкові поля; побудовник команд визначає, які з них використовує конкретна дія. Зокрема, побудовник roundtrip-імпорту не передає `compiler_oracle_home` як параметр CLI.
43
+
44
+ ## Приклади вхідних даних
45
+
46
+ Це об'єкти аргументів інструмента, а не shell-команди. Замініть умовні значення перевіреним контекстом проєкту.
47
+
48
+ ```json
49
+ {"action":"workspace_probe"}
50
+ ```
51
+
52
+ ```json
53
+ {"action":"local_validate","app_path":"applications/service-ops"}
54
+ ```
55
+
56
+ ```json
57
+ {"action":"query_valid_props","list":true}
58
+ ```
59
+
60
+ ```json
61
+ {"action":"runtime_preflight","app_path":"applications/service-ops","db_connection_name":"apex_dev","workspace_name":"SERVICE_OPS_DEV"}
62
+ ```
63
+
64
+ ```json
65
+ {"action":"runtime_validate","app_path":"applications/service-ops","db_connection_name":"apex_dev","workspace_name":"SERVICE_OPS_DEV"}
66
+ ```
67
+
68
+ ## Результати та критерії успіху
69
+
70
+ Успішні відповіді інструмента містять текст і `details`, зокрема `action`, `exitCode` та `outputRoot`. Серверна перевірка також повертає `liveValidationPassed` та `imported`, а за потреби — деталі вибору й цілі. Скасовані зміни проєкту повертають `cancelled=true`. Невдалі запуски породжують помилку з доступним виводом процесу та шляхом звітів; помилки вхідних даних до запуску можуть ще не мати звітів.
71
+
72
+ | Операція | Докази, які перевіряє розширення |
73
+ | --- | --- |
74
+ | Локальні перевірки | Обгортка успішно завершується й виводить `APEXLANG_LOCAL_CHECK_OK`; окремі звіти містять діагностики. |
75
+ | Серверна перевірка | Успішний результат процесу; `live_check_status=pass` **або** `validation_status=pass`; також `validation_sources.live_validator.status=pass`. |
76
+ | Доказ відсутності нової цілі | Навмисно заблокований результат: `target_resolution_mode=create-new`, `target_resolution_status=not_found_in_workspace`, `create_new_confirmation_required=true`, `import_status=blocked`, `failure_class=create_new_confirmation_required` і `ok=false`. |
77
+ | Імпорт | Успішний результат процесу та `validate_status=pass`, `import_status=pass`, `runtime_gate_status=pass`. |
78
+
79
+ Самого коду завершення нуль недостатньо для успіху серверної перевірки чи імпорту. Перевірка відсутності нової цілі очікувано зупиняється на межі підтвердження; це ще не імпортований застосунок.
80
+
81
+ ## Сумісність із попередженнями
82
+
83
+ Адаптер містить окремий шлях сумісності для результатів SQLcl, що містять лише попередження компіляції. Перш ніж нормалізувати результат чи продовжити погоджений імпорт, він перевіряє поточні артефакти, докази в транскрипті та, де потрібно, ідентичність цілі. Відсутні, застарілі, суперечливі докази або докази жорстких помилок залишаються блокувальними. Гілка create-new не використовує резервний шлях сумісності імпорту наявного застосунку.
84
+
85
+ Цей механізм відокремлений від **рекомендаційної таблиці** ORDS/SQLcl, яка лише додає поради з діагностики. Див. [супровід](maintenance.md) і функції `normalizeWarningOnlyValidation` та `runWarningCompatibleImport` в [адаптері](../../extensions/lib/apexlang-cli.mjs).
@@ -28,6 +28,7 @@ import {
28
28
 
29
29
  const MAX_TOOL_OUTPUT = 80_000;
30
30
  const COMMAND_TIMEOUT_MS = 10 * 60 * 1000;
31
+ const RPC_DIALOG_TIMEOUT_MS = 5 * 60 * 1000;
31
32
  const CHECK_ONLY_CHOICE = "Check APEXlang code (recommended) — stop after the successful live check";
32
33
  const IMPORT_CHOICE = "Check and import APEXlang code — revalidate and import in one SQLcl session";
33
34
  const UPDATE_EXISTING_CHOICE = "Update an existing app — require one proven remote target";
@@ -192,7 +193,11 @@ export function createApexlangTool(overrides: Partial<ApexlangDependencies> = {}
192
193
  if (!ctx.hasUI) {
193
194
  throw new Error("This APEXlang action changes project files and requires interactive confirmation.");
194
195
  }
195
- const confirmed = await ctx.ui.confirm("Confirm APEXlang project change", confirmationMessage(input));
196
+ const confirmed = await ctx.ui.confirm(
197
+ "Confirm APEXlang project change",
198
+ confirmationMessage(input),
199
+ { ...(signal ? { signal } : {}), timeout: RPC_DIALOG_TIMEOUT_MS }
200
+ );
196
201
  if (!confirmed) {
197
202
  return {
198
203
  content: [{ type: "text", text: "APEXlang project change cancelled." }],
@@ -264,10 +269,11 @@ export function createApexlangTool(overrides: Partial<ApexlangDependencies> = {}
264
269
  };
265
270
  }
266
271
 
267
- const choice = await ctx.ui.select("APEXlang live check passed. Choose the next step:", [
268
- CHECK_ONLY_CHOICE,
269
- IMPORT_CHOICE
270
- ]);
272
+ const choice = await ctx.ui.select(
273
+ "APEXlang live check passed. Choose the next step:",
274
+ [CHECK_ONLY_CHOICE, IMPORT_CHOICE],
275
+ { ...(signal ? { signal } : {}), timeout: RPC_DIALOG_TIMEOUT_MS }
276
+ );
271
277
  if (choice !== CHECK_ONLY_CHOICE && choice !== IMPORT_CHOICE) {
272
278
  return {
273
279
  content: [
@@ -293,10 +299,11 @@ export function createApexlangTool(overrides: Partial<ApexlangDependencies> = {}
293
299
  "APEXlang live check did not produce a valid application snapshot digest; import is blocked until it is revalidated."
294
300
  );
295
301
  }
296
- const targetChoice = await ctx.ui.select("Choose the explicitly intended import target:", [
297
- UPDATE_EXISTING_CHOICE,
298
- CREATE_NEW_CHOICE
299
- ]);
302
+ const targetChoice = await ctx.ui.select(
303
+ "Choose the explicitly intended import target:",
304
+ [UPDATE_EXISTING_CHOICE, CREATE_NEW_CHOICE],
305
+ { ...(signal ? { signal } : {}), timeout: RPC_DIALOG_TIMEOUT_MS }
306
+ );
300
307
  if (targetChoice !== UPDATE_EXISTING_CHOICE && targetChoice !== CREATE_NEW_CHOICE) {
301
308
  return {
302
309
  content: [
@@ -349,7 +356,8 @@ export function createApexlangTool(overrides: Partial<ApexlangDependencies> = {}
349
356
  );
350
357
  createNewConfirmed = await ctx.ui.confirm(
351
358
  "Confirm new APEX application",
352
- `Oracle proved that ${provenAlias} is absent from ${provenWorkspace}. Create it by rerunning validation and import together?`
359
+ `Oracle proved that ${provenAlias} is absent from ${provenWorkspace}. Create it by rerunning validation and import together?`,
360
+ { ...(signal ? { signal } : {}), timeout: RPC_DIALOG_TIMEOUT_MS }
353
361
  );
354
362
  if (!createNewConfirmed) {
355
363
  return {
@@ -472,6 +480,7 @@ export {
472
480
  ORDS_SQLCL_COMPATIBILITY,
473
481
  ORDS_SQLCL_COMPATIBILITY_GUIDELINE,
474
482
  ORDS_SQLCL_COMPATIBILITY_TABLE,
483
+ RPC_DIALOG_TIMEOUT_MS,
475
484
  UPDATE_EXISTING_CHOICE,
476
485
  actionWritesProject,
477
486
  buildValidationCompatibilityAdvisory,
@@ -136,8 +136,7 @@ export function validateMaterializationPaths(options: {
136
136
  export function prepareRuntimeApp(
137
137
  input: ApexlangInput,
138
138
  cwd: string,
139
- outputRoot: string,
140
- options?: { forceStage?: boolean }
139
+ outputRoot: string
141
140
  ): Promise<{
142
141
  appPath?: string;
143
142
  staged: boolean;