apexrest 0.4.0-beta.1

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 (461) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +18 -0
  3. package/README.md +201 -0
  4. package/README.uk.md +201 -0
  5. package/dist/codex-compat/.agents/plugins/marketplace.json +23 -0
  6. package/dist/codex-compat/plugins/apexrest-apex/.codex-plugin/plugin.json +32 -0
  7. package/dist/codex-compat/plugins/apexrest-apex/.mcp.json +11 -0
  8. package/dist/codex-compat/plugins/apexrest-apex/LICENSE +202 -0
  9. package/dist/codex-compat/plugins/apexrest-apex/NOTICE +18 -0
  10. package/dist/codex-compat/plugins/apexrest-apex/assets/apexrest-icon.svg +27 -0
  11. package/dist/codex-compat/plugins/apexrest-apex/assets/apexrest-logo.svg +27 -0
  12. package/dist/codex-compat/plugins/apexrest-apex/resources/ords/OrdsBridge.java +323 -0
  13. package/dist/codex-compat/plugins/apexrest-apex/resources/panel/assets/LICENCE.txt +118 -0
  14. package/dist/codex-compat/plugins/apexrest-apex/resources/panel/assets/bulbasaur.png +0 -0
  15. package/dist/codex-compat/plugins/apexrest-apex/resources/panel/assets/charmander.png +0 -0
  16. package/dist/codex-compat/plugins/apexrest-apex/resources/panel/assets/mewtwo.png +0 -0
  17. package/dist/codex-compat/plugins/apexrest-apex/resources/panel/assets/pikachu.png +0 -0
  18. package/dist/codex-compat/plugins/apexrest-apex/resources/panel/assets/sources.json +36 -0
  19. package/dist/codex-compat/plugins/apexrest-apex/resources/panel/assets/squirtle.png +0 -0
  20. package/dist/codex-compat/plugins/apexrest-apex/resources/panel/index.html +68 -0
  21. package/dist/codex-compat/plugins/apexrest-apex/resources/panel/panel.css +805 -0
  22. package/dist/codex-compat/plugins/apexrest-apex/resources/panel/panel.js +951 -0
  23. package/dist/codex-compat/plugins/apexrest-apex/resources/playwright/auth.mjs +17 -0
  24. package/dist/codex-compat/plugins/apexrest-apex/resources/playwright/package-lock.json +57 -0
  25. package/dist/codex-compat/plugins/apexrest-apex/resources/playwright/package.json +9 -0
  26. package/dist/codex-compat/plugins/apexrest-apex/resources/references/ORACLE-LICENSE.txt +35 -0
  27. package/dist/codex-compat/plugins/apexrest-apex/resources/references/index.json +54432 -0
  28. package/dist/codex-compat/plugins/apexrest-apex/resources/references/oracle-snapshot.json +648 -0
  29. package/dist/codex-compat/plugins/apexrest-apex/resources/references/search.json +1 -0
  30. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/deploy-plan.schema.json +210 -0
  31. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/operations.schema.json +1721 -0
  32. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/policy.schema.json +63 -0
  33. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/project.schema.json +250 -0
  34. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/toolchain-lock.schema.json +118 -0
  35. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/vendor/mcp.schema.json +120 -0
  36. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/vendor/plugin.schema.json +65 -0
  37. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/README.md +5 -0
  38. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/README.uk.md +5 -0
  39. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/.apex/apexlang.json +3 -0
  40. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/application.apx +51 -0
  41. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/deployments/default.json +2 -0
  42. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/page-groups.apx +4 -0
  43. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/pages/p00000-global-page.apx +4 -0
  44. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/pages/p00001-home.apx +35 -0
  45. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/pages/p09999-login.apx +254 -0
  46. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/authentications.apx +5 -0
  47. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/authorizations.apx +11 -0
  48. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/breadcrumbs.apx +18 -0
  49. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/build-options.apx +4 -0
  50. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/component-settings.apx +92 -0
  51. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/lists.apx +81 -0
  52. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/lovs.apx +20 -0
  53. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/static-files/icons/app-icon-144-rounded.png +0 -0
  54. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/static-files/icons/app-icon-192.png +0 -0
  55. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/static-files/icons/app-icon-256-rounded.png +0 -0
  56. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/static-files/icons/app-icon-32.png +0 -0
  57. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/static-files/icons/app-icon-512.png +0 -0
  58. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/static-files.apx +25 -0
  59. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/shared-components/themes/universal-theme/theme.apx +57 -0
  60. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/supporting-objects/deinstall-script.sql +0 -0
  61. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/application/supporting-objects/supporting-objects.apx +9 -0
  62. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/customer-crm/README.md +7 -0
  63. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/customer-crm/README.uk.md +7 -0
  64. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/customer-crm/apex-overlay/pages/p00010-customers.apx +164 -0
  65. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/customer-crm/apex-overlay/pages/p00020-dashboard.apx +54 -0
  66. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/customer-crm/apex-overlay/pages/p00080-customer.apx +332 -0
  67. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/customer-crm/project/src/database/migrations/0001__customers.sql +10 -0
  68. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/customer-crm/project/src/database/packages/0010__customer_api.sql +28 -0
  69. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/customer-crm/project/src/database/packages/0020__customer_validation_trigger.sql +10 -0
  70. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/customer-crm/project/tests/e2e/customer-crud.spec.mjs +25 -0
  71. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/customer-crm/project/tests/sql/test_customers.sql +49 -0
  72. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/database-control/install.sql +17 -0
  73. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/existing-app/README.md +9 -0
  74. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/existing-app/README.uk.md +9 -0
  75. package/dist/codex-compat/plugins/apexrest-apex/resources/testkit/apex.mjs +58 -0
  76. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@hono__node-server__LICENSE +21 -0
  77. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@isaacs__fs-minipass__LICENSE +15 -0
  78. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@modelcontextprotocol__sdk__LICENSE +21 -0
  79. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@playwright__test__LICENSE +202 -0
  80. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@playwright__test__NOTICE +5 -0
  81. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@types__node__LICENSE +21 -0
  82. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@types__yauzl__LICENSE +21 -0
  83. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@typescript__typescript-darwin-arm64__LICENSE +55 -0
  84. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@typescript__typescript-darwin-arm64__NOTICE.txt +436 -0
  85. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__accepts__LICENSE +23 -0
  86. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__ajv-formats__LICENSE +21 -0
  87. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__ajv__LICENSE +22 -0
  88. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__body-parser__LICENSE +23 -0
  89. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__body-parser__node_modules__content-type__LICENSE +22 -0
  90. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__bytes__LICENSE +23 -0
  91. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__call-bind-apply-helpers__LICENSE +21 -0
  92. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__call-bound__LICENSE +21 -0
  93. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__chownr__LICENSE.md +63 -0
  94. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__content-disposition__LICENSE +22 -0
  95. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__content-type__LICENSE +22 -0
  96. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__cookie-signature__LICENSE +22 -0
  97. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__cookie__LICENSE +24 -0
  98. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__cors__LICENSE +22 -0
  99. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__cross-spawn__LICENSE +21 -0
  100. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__debug__LICENSE +20 -0
  101. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__depd__LICENSE +22 -0
  102. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__dunder-proto__LICENSE +21 -0
  103. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__ee-first__LICENSE +22 -0
  104. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__encodeurl__LICENSE +22 -0
  105. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__es-define-property__LICENSE +21 -0
  106. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__es-errors__LICENSE +21 -0
  107. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__es-object-atoms__LICENSE +21 -0
  108. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__esbuild__LICENSE.md +21 -0
  109. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__escape-html__LICENSE +24 -0
  110. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__etag__LICENSE +22 -0
  111. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__eventsource-parser__LICENSE +21 -0
  112. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__eventsource__LICENSE +22 -0
  113. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__express-rate-limit__license +21 -0
  114. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__express__LICENSE +24 -0
  115. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__fast-deep-equal__LICENSE +21 -0
  116. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__fast-uri__LICENSE +30 -0
  117. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__fflate__LICENSE +21 -0
  118. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__finalhandler__LICENSE +22 -0
  119. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__forwarded__LICENSE +22 -0
  120. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__fresh__LICENSE +23 -0
  121. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__function-bind__LICENSE +20 -0
  122. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__get-intrinsic__LICENSE +21 -0
  123. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__get-proto__LICENSE +21 -0
  124. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__gopd__LICENSE +21 -0
  125. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__has-symbols__LICENSE +21 -0
  126. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__hasown__LICENSE +21 -0
  127. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__hono__LICENSE +21 -0
  128. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__http-errors__LICENSE +23 -0
  129. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__iconv-lite__LICENSE +21 -0
  130. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__inherits__LICENSE +16 -0
  131. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__ip-address__LICENSE +19 -0
  132. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__ipaddr.js__LICENSE +19 -0
  133. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__is-promise__LICENSE +19 -0
  134. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__isexe__LICENSE +15 -0
  135. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__jose__LICENSE.md +21 -0
  136. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__json-schema-traverse__LICENSE +21 -0
  137. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__json-schema-typed__LICENSE.md +57 -0
  138. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__marked__LICENSE +44 -0
  139. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__math-intrinsics__LICENSE +21 -0
  140. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__media-typer__LICENSE +22 -0
  141. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__merge-descriptors__license +11 -0
  142. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__mime-db__LICENSE +23 -0
  143. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__mime-types__LICENSE +23 -0
  144. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__minipass__LICENSE.md +55 -0
  145. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__minizlib__LICENSE +26 -0
  146. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__ms__license.md +21 -0
  147. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__negotiator__LICENSE +24 -0
  148. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__negotiator__node_modules__content-type__LICENSE +22 -0
  149. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__object-assign__license +21 -0
  150. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__object-inspect__LICENSE +21 -0
  151. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__on-finished__LICENSE +23 -0
  152. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__once__LICENSE +15 -0
  153. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__parseurl__LICENSE +24 -0
  154. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__path-key__license +9 -0
  155. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__path-to-regexp__LICENSE +21 -0
  156. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__pend__LICENSE +23 -0
  157. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__pkce-challenge__LICENSE +21 -0
  158. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__playwright-core__LICENSE +202 -0
  159. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__playwright-core__NOTICE +5 -0
  160. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__playwright__LICENSE +202 -0
  161. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__playwright__NOTICE +5 -0
  162. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__prettier__LICENSE +7 -0
  163. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__proxy-addr__LICENSE +22 -0
  164. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__qs__LICENSE.md +29 -0
  165. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__range-parser__LICENSE +23 -0
  166. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__raw-body__LICENSE +22 -0
  167. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__require-from-string__license +21 -0
  168. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__router__LICENSE +23 -0
  169. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__safer-buffer__LICENSE +21 -0
  170. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__send__LICENSE +23 -0
  171. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__serve-static__LICENSE +25 -0
  172. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__setprototypeof__LICENSE +13 -0
  173. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__shebang-command__license +9 -0
  174. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__shebang-regex__license +9 -0
  175. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__side-channel-list__LICENSE +21 -0
  176. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__side-channel-map__LICENSE +21 -0
  177. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__side-channel-weakmap__LICENSE +21 -0
  178. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__side-channel__LICENSE +21 -0
  179. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__statuses__LICENSE +23 -0
  180. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__tar__LICENSE.md +55 -0
  181. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__toidentifier__LICENSE +21 -0
  182. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__type-is__LICENSE +23 -0
  183. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__type-is__node_modules__content-type__LICENSE +22 -0
  184. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__typescript__LICENSE +55 -0
  185. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__typescript__NOTICE.txt +436 -0
  186. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__undici-types__LICENSE +21 -0
  187. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__unpipe__LICENSE +22 -0
  188. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__vary__LICENSE +22 -0
  189. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__which__LICENSE +15 -0
  190. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__wrappy__LICENSE +15 -0
  191. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__yallist__LICENSE.md +63 -0
  192. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__yauzl__LICENSE +21 -0
  193. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__zod-to-json-schema__LICENSE +15 -0
  194. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__zod__LICENSE +21 -0
  195. package/dist/codex-compat/plugins/apexrest-apex/resources/toolchains/compatibility.json +50 -0
  196. package/dist/codex-compat/plugins/apexrest-apex/resources/toolchains/sources.lock.json +14 -0
  197. package/dist/codex-compat/plugins/apexrest-apex/resources/toolchains/toolchain.lock.json +204 -0
  198. package/dist/codex-compat/plugins/apexrest-apex/runtime/apexrest.mjs +226 -0
  199. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-2SZCZZ3J.mjs +37111 -0
  200. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-2VGE5Y5J.mjs +994 -0
  201. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-3GSS6SJH.mjs +1424 -0
  202. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-5GOWABKB.mjs +409 -0
  203. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-ARMO5ZAQ.mjs +25 -0
  204. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-ED2YPDPS.mjs +1123 -0
  205. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-FPOEB42H.mjs +100 -0
  206. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-GFRSRK3K.mjs +16 -0
  207. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-ICWYSHJ7.mjs +19 -0
  208. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-IPU64TJI.mjs +291 -0
  209. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-JWX4UQAZ.mjs +14 -0
  210. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-K3KT6RZY.mjs +1064 -0
  211. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-QLRGI23I.mjs +1307 -0
  212. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-RF4XQO6I.mjs +13 -0
  213. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-VPCUV5QA.mjs +237 -0
  214. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-WMJTK7ZB.mjs +201 -0
  215. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-WROK6RQH.mjs +200 -0
  216. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-XDJEGHUX.mjs +1179 -0
  217. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-YK34QNHH.mjs +15 -0
  218. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-Z6Y72JVG.mjs +37 -0
  219. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-ZQFJ2BNZ.mjs +329 -0
  220. package/dist/codex-compat/plugins/apexrest-apex/runtime/mcp.mjs +15 -0
  221. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-apexlang/SKILL.md +32 -0
  222. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-apexlang/agents/openai.yaml +4 -0
  223. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-apexlang/assets/p00020-filtered-components.apx +152 -0
  224. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-apexlang/references/component-routes.md +35 -0
  225. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-apexlang/references/native-dashboard.md +11 -0
  226. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-database/SKILL.md +11 -0
  227. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-database/agents/openai.yaml +4 -0
  228. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-debug/SKILL.md +11 -0
  229. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-debug/agents/openai.yaml +4 -0
  230. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-deploy/SKILL.md +19 -0
  231. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-deploy/agents/openai.yaml +4 -0
  232. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-install-dependencies/SKILL.md +38 -0
  233. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-install-dependencies/agents/openai.yaml +4 -0
  234. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-menu/SKILL.md +27 -0
  235. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-menu/agents/openai.yaml +4 -0
  236. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-menu/references/cli-catalog.md +22 -0
  237. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-panel/SKILL.md +20 -0
  238. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-panel/agents/openai.yaml +4 -0
  239. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-project/SKILL.md +9 -0
  240. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-project/agents/openai.yaml +4 -0
  241. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-review/SKILL.md +9 -0
  242. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-review/agents/openai.yaml +4 -0
  243. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-setup/SKILL.md +15 -0
  244. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-setup/agents/openai.yaml +4 -0
  245. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-setup/references/ords.md +3 -0
  246. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-team/SKILL.md +24 -0
  247. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-team/agents/openai.yaml +4 -0
  248. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-test/SKILL.md +27 -0
  249. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-test/agents/openai.yaml +4 -0
  250. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-work/SKILL.md +17 -0
  251. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-work/agents/openai.yaml +7 -0
  252. package/dist/resources/ords/OrdsBridge.java +323 -0
  253. package/dist/resources/panel/assets/LICENCE.txt +118 -0
  254. package/dist/resources/panel/assets/bulbasaur.png +0 -0
  255. package/dist/resources/panel/assets/charmander.png +0 -0
  256. package/dist/resources/panel/assets/mewtwo.png +0 -0
  257. package/dist/resources/panel/assets/pikachu.png +0 -0
  258. package/dist/resources/panel/assets/sources.json +36 -0
  259. package/dist/resources/panel/assets/squirtle.png +0 -0
  260. package/dist/resources/panel/index.html +68 -0
  261. package/dist/resources/panel/panel.css +805 -0
  262. package/dist/resources/panel/panel.js +951 -0
  263. package/dist/resources/playwright/auth.mjs +17 -0
  264. package/dist/resources/playwright/package-lock.json +57 -0
  265. package/dist/resources/playwright/package.json +9 -0
  266. package/dist/resources/references/ORACLE-LICENSE.txt +35 -0
  267. package/dist/resources/references/index.json +54432 -0
  268. package/dist/resources/references/oracle-snapshot.json +648 -0
  269. package/dist/resources/references/search.json +1 -0
  270. package/dist/resources/schemas/deploy-plan.schema.json +210 -0
  271. package/dist/resources/schemas/operations.schema.json +1721 -0
  272. package/dist/resources/schemas/policy.schema.json +63 -0
  273. package/dist/resources/schemas/project.schema.json +250 -0
  274. package/dist/resources/schemas/toolchain-lock.schema.json +118 -0
  275. package/dist/resources/schemas/vendor/mcp.schema.json +120 -0
  276. package/dist/resources/schemas/vendor/plugin.schema.json +65 -0
  277. package/dist/resources/templates/blank-app/README.md +5 -0
  278. package/dist/resources/templates/blank-app/README.uk.md +5 -0
  279. package/dist/resources/templates/blank-app/application/.apex/apexlang.json +3 -0
  280. package/dist/resources/templates/blank-app/application/application.apx +51 -0
  281. package/dist/resources/templates/blank-app/application/deployments/default.json +2 -0
  282. package/dist/resources/templates/blank-app/application/page-groups.apx +4 -0
  283. package/dist/resources/templates/blank-app/application/pages/p00000-global-page.apx +4 -0
  284. package/dist/resources/templates/blank-app/application/pages/p00001-home.apx +35 -0
  285. package/dist/resources/templates/blank-app/application/pages/p09999-login.apx +254 -0
  286. package/dist/resources/templates/blank-app/application/shared-components/authentications.apx +5 -0
  287. package/dist/resources/templates/blank-app/application/shared-components/authorizations.apx +11 -0
  288. package/dist/resources/templates/blank-app/application/shared-components/breadcrumbs.apx +18 -0
  289. package/dist/resources/templates/blank-app/application/shared-components/build-options.apx +4 -0
  290. package/dist/resources/templates/blank-app/application/shared-components/component-settings.apx +92 -0
  291. package/dist/resources/templates/blank-app/application/shared-components/lists.apx +81 -0
  292. package/dist/resources/templates/blank-app/application/shared-components/lovs.apx +20 -0
  293. package/dist/resources/templates/blank-app/application/shared-components/static-files/icons/app-icon-144-rounded.png +0 -0
  294. package/dist/resources/templates/blank-app/application/shared-components/static-files/icons/app-icon-192.png +0 -0
  295. package/dist/resources/templates/blank-app/application/shared-components/static-files/icons/app-icon-256-rounded.png +0 -0
  296. package/dist/resources/templates/blank-app/application/shared-components/static-files/icons/app-icon-32.png +0 -0
  297. package/dist/resources/templates/blank-app/application/shared-components/static-files/icons/app-icon-512.png +0 -0
  298. package/dist/resources/templates/blank-app/application/shared-components/static-files.apx +25 -0
  299. package/dist/resources/templates/blank-app/application/shared-components/themes/universal-theme/theme.apx +57 -0
  300. package/dist/resources/templates/blank-app/application/supporting-objects/deinstall-script.sql +0 -0
  301. package/dist/resources/templates/blank-app/application/supporting-objects/supporting-objects.apx +9 -0
  302. package/dist/resources/templates/customer-crm/README.md +7 -0
  303. package/dist/resources/templates/customer-crm/README.uk.md +7 -0
  304. package/dist/resources/templates/customer-crm/apex-overlay/pages/p00010-customers.apx +164 -0
  305. package/dist/resources/templates/customer-crm/apex-overlay/pages/p00020-dashboard.apx +54 -0
  306. package/dist/resources/templates/customer-crm/apex-overlay/pages/p00080-customer.apx +332 -0
  307. package/dist/resources/templates/customer-crm/project/src/database/migrations/0001__customers.sql +10 -0
  308. package/dist/resources/templates/customer-crm/project/src/database/packages/0010__customer_api.sql +28 -0
  309. package/dist/resources/templates/customer-crm/project/src/database/packages/0020__customer_validation_trigger.sql +10 -0
  310. package/dist/resources/templates/customer-crm/project/tests/e2e/customer-crud.spec.mjs +25 -0
  311. package/dist/resources/templates/customer-crm/project/tests/sql/test_customers.sql +49 -0
  312. package/dist/resources/templates/database-control/install.sql +17 -0
  313. package/dist/resources/templates/existing-app/README.md +9 -0
  314. package/dist/resources/templates/existing-app/README.uk.md +9 -0
  315. package/dist/resources/testkit/apex.mjs +58 -0
  316. package/dist/resources/third-party/node_modules__@hono__node-server__LICENSE +21 -0
  317. package/dist/resources/third-party/node_modules__@isaacs__fs-minipass__LICENSE +15 -0
  318. package/dist/resources/third-party/node_modules__@modelcontextprotocol__sdk__LICENSE +21 -0
  319. package/dist/resources/third-party/node_modules__@playwright__test__LICENSE +202 -0
  320. package/dist/resources/third-party/node_modules__@playwright__test__NOTICE +5 -0
  321. package/dist/resources/third-party/node_modules__@types__node__LICENSE +21 -0
  322. package/dist/resources/third-party/node_modules__@types__yauzl__LICENSE +21 -0
  323. package/dist/resources/third-party/node_modules__@typescript__typescript-darwin-arm64__LICENSE +55 -0
  324. package/dist/resources/third-party/node_modules__@typescript__typescript-darwin-arm64__NOTICE.txt +436 -0
  325. package/dist/resources/third-party/node_modules__accepts__LICENSE +23 -0
  326. package/dist/resources/third-party/node_modules__ajv-formats__LICENSE +21 -0
  327. package/dist/resources/third-party/node_modules__ajv__LICENSE +22 -0
  328. package/dist/resources/third-party/node_modules__body-parser__LICENSE +23 -0
  329. package/dist/resources/third-party/node_modules__body-parser__node_modules__content-type__LICENSE +22 -0
  330. package/dist/resources/third-party/node_modules__bytes__LICENSE +23 -0
  331. package/dist/resources/third-party/node_modules__call-bind-apply-helpers__LICENSE +21 -0
  332. package/dist/resources/third-party/node_modules__call-bound__LICENSE +21 -0
  333. package/dist/resources/third-party/node_modules__chownr__LICENSE.md +63 -0
  334. package/dist/resources/third-party/node_modules__content-disposition__LICENSE +22 -0
  335. package/dist/resources/third-party/node_modules__content-type__LICENSE +22 -0
  336. package/dist/resources/third-party/node_modules__cookie-signature__LICENSE +22 -0
  337. package/dist/resources/third-party/node_modules__cookie__LICENSE +24 -0
  338. package/dist/resources/third-party/node_modules__cors__LICENSE +22 -0
  339. package/dist/resources/third-party/node_modules__cross-spawn__LICENSE +21 -0
  340. package/dist/resources/third-party/node_modules__debug__LICENSE +20 -0
  341. package/dist/resources/third-party/node_modules__depd__LICENSE +22 -0
  342. package/dist/resources/third-party/node_modules__dunder-proto__LICENSE +21 -0
  343. package/dist/resources/third-party/node_modules__ee-first__LICENSE +22 -0
  344. package/dist/resources/third-party/node_modules__encodeurl__LICENSE +22 -0
  345. package/dist/resources/third-party/node_modules__es-define-property__LICENSE +21 -0
  346. package/dist/resources/third-party/node_modules__es-errors__LICENSE +21 -0
  347. package/dist/resources/third-party/node_modules__es-object-atoms__LICENSE +21 -0
  348. package/dist/resources/third-party/node_modules__esbuild__LICENSE.md +21 -0
  349. package/dist/resources/third-party/node_modules__escape-html__LICENSE +24 -0
  350. package/dist/resources/third-party/node_modules__etag__LICENSE +22 -0
  351. package/dist/resources/third-party/node_modules__eventsource-parser__LICENSE +21 -0
  352. package/dist/resources/third-party/node_modules__eventsource__LICENSE +22 -0
  353. package/dist/resources/third-party/node_modules__express-rate-limit__license +21 -0
  354. package/dist/resources/third-party/node_modules__express__LICENSE +24 -0
  355. package/dist/resources/third-party/node_modules__fast-deep-equal__LICENSE +21 -0
  356. package/dist/resources/third-party/node_modules__fast-uri__LICENSE +30 -0
  357. package/dist/resources/third-party/node_modules__fflate__LICENSE +21 -0
  358. package/dist/resources/third-party/node_modules__finalhandler__LICENSE +22 -0
  359. package/dist/resources/third-party/node_modules__forwarded__LICENSE +22 -0
  360. package/dist/resources/third-party/node_modules__fresh__LICENSE +23 -0
  361. package/dist/resources/third-party/node_modules__function-bind__LICENSE +20 -0
  362. package/dist/resources/third-party/node_modules__get-intrinsic__LICENSE +21 -0
  363. package/dist/resources/third-party/node_modules__get-proto__LICENSE +21 -0
  364. package/dist/resources/third-party/node_modules__gopd__LICENSE +21 -0
  365. package/dist/resources/third-party/node_modules__has-symbols__LICENSE +21 -0
  366. package/dist/resources/third-party/node_modules__hasown__LICENSE +21 -0
  367. package/dist/resources/third-party/node_modules__hono__LICENSE +21 -0
  368. package/dist/resources/third-party/node_modules__http-errors__LICENSE +23 -0
  369. package/dist/resources/third-party/node_modules__iconv-lite__LICENSE +21 -0
  370. package/dist/resources/third-party/node_modules__inherits__LICENSE +16 -0
  371. package/dist/resources/third-party/node_modules__ip-address__LICENSE +19 -0
  372. package/dist/resources/third-party/node_modules__ipaddr.js__LICENSE +19 -0
  373. package/dist/resources/third-party/node_modules__is-promise__LICENSE +19 -0
  374. package/dist/resources/third-party/node_modules__isexe__LICENSE +15 -0
  375. package/dist/resources/third-party/node_modules__jose__LICENSE.md +21 -0
  376. package/dist/resources/third-party/node_modules__json-schema-traverse__LICENSE +21 -0
  377. package/dist/resources/third-party/node_modules__json-schema-typed__LICENSE.md +57 -0
  378. package/dist/resources/third-party/node_modules__marked__LICENSE +44 -0
  379. package/dist/resources/third-party/node_modules__math-intrinsics__LICENSE +21 -0
  380. package/dist/resources/third-party/node_modules__media-typer__LICENSE +22 -0
  381. package/dist/resources/third-party/node_modules__merge-descriptors__license +11 -0
  382. package/dist/resources/third-party/node_modules__mime-db__LICENSE +23 -0
  383. package/dist/resources/third-party/node_modules__mime-types__LICENSE +23 -0
  384. package/dist/resources/third-party/node_modules__minipass__LICENSE.md +55 -0
  385. package/dist/resources/third-party/node_modules__minizlib__LICENSE +26 -0
  386. package/dist/resources/third-party/node_modules__ms__license.md +21 -0
  387. package/dist/resources/third-party/node_modules__negotiator__LICENSE +24 -0
  388. package/dist/resources/third-party/node_modules__negotiator__node_modules__content-type__LICENSE +22 -0
  389. package/dist/resources/third-party/node_modules__object-assign__license +21 -0
  390. package/dist/resources/third-party/node_modules__object-inspect__LICENSE +21 -0
  391. package/dist/resources/third-party/node_modules__on-finished__LICENSE +23 -0
  392. package/dist/resources/third-party/node_modules__once__LICENSE +15 -0
  393. package/dist/resources/third-party/node_modules__parseurl__LICENSE +24 -0
  394. package/dist/resources/third-party/node_modules__path-key__license +9 -0
  395. package/dist/resources/third-party/node_modules__path-to-regexp__LICENSE +21 -0
  396. package/dist/resources/third-party/node_modules__pend__LICENSE +23 -0
  397. package/dist/resources/third-party/node_modules__pkce-challenge__LICENSE +21 -0
  398. package/dist/resources/third-party/node_modules__playwright-core__LICENSE +202 -0
  399. package/dist/resources/third-party/node_modules__playwright-core__NOTICE +5 -0
  400. package/dist/resources/third-party/node_modules__playwright__LICENSE +202 -0
  401. package/dist/resources/third-party/node_modules__playwright__NOTICE +5 -0
  402. package/dist/resources/third-party/node_modules__prettier__LICENSE +7 -0
  403. package/dist/resources/third-party/node_modules__proxy-addr__LICENSE +22 -0
  404. package/dist/resources/third-party/node_modules__qs__LICENSE.md +29 -0
  405. package/dist/resources/third-party/node_modules__range-parser__LICENSE +23 -0
  406. package/dist/resources/third-party/node_modules__raw-body__LICENSE +22 -0
  407. package/dist/resources/third-party/node_modules__require-from-string__license +21 -0
  408. package/dist/resources/third-party/node_modules__router__LICENSE +23 -0
  409. package/dist/resources/third-party/node_modules__safer-buffer__LICENSE +21 -0
  410. package/dist/resources/third-party/node_modules__send__LICENSE +23 -0
  411. package/dist/resources/third-party/node_modules__serve-static__LICENSE +25 -0
  412. package/dist/resources/third-party/node_modules__setprototypeof__LICENSE +13 -0
  413. package/dist/resources/third-party/node_modules__shebang-command__license +9 -0
  414. package/dist/resources/third-party/node_modules__shebang-regex__license +9 -0
  415. package/dist/resources/third-party/node_modules__side-channel-list__LICENSE +21 -0
  416. package/dist/resources/third-party/node_modules__side-channel-map__LICENSE +21 -0
  417. package/dist/resources/third-party/node_modules__side-channel-weakmap__LICENSE +21 -0
  418. package/dist/resources/third-party/node_modules__side-channel__LICENSE +21 -0
  419. package/dist/resources/third-party/node_modules__statuses__LICENSE +23 -0
  420. package/dist/resources/third-party/node_modules__tar__LICENSE.md +55 -0
  421. package/dist/resources/third-party/node_modules__toidentifier__LICENSE +21 -0
  422. package/dist/resources/third-party/node_modules__type-is__LICENSE +23 -0
  423. package/dist/resources/third-party/node_modules__type-is__node_modules__content-type__LICENSE +22 -0
  424. package/dist/resources/third-party/node_modules__typescript__LICENSE +55 -0
  425. package/dist/resources/third-party/node_modules__typescript__NOTICE.txt +436 -0
  426. package/dist/resources/third-party/node_modules__undici-types__LICENSE +21 -0
  427. package/dist/resources/third-party/node_modules__unpipe__LICENSE +22 -0
  428. package/dist/resources/third-party/node_modules__vary__LICENSE +22 -0
  429. package/dist/resources/third-party/node_modules__which__LICENSE +15 -0
  430. package/dist/resources/third-party/node_modules__wrappy__LICENSE +15 -0
  431. package/dist/resources/third-party/node_modules__yallist__LICENSE.md +63 -0
  432. package/dist/resources/third-party/node_modules__yauzl__LICENSE +21 -0
  433. package/dist/resources/third-party/node_modules__zod-to-json-schema__LICENSE +15 -0
  434. package/dist/resources/third-party/node_modules__zod__LICENSE +21 -0
  435. package/dist/resources/toolchains/compatibility.json +50 -0
  436. package/dist/resources/toolchains/sources.lock.json +14 -0
  437. package/dist/resources/toolchains/toolchain.lock.json +204 -0
  438. package/dist/runtime/apexrest.mjs +226 -0
  439. package/dist/runtime/chunk-2SZCZZ3J.mjs +37111 -0
  440. package/dist/runtime/chunk-2VGE5Y5J.mjs +994 -0
  441. package/dist/runtime/chunk-3GSS6SJH.mjs +1424 -0
  442. package/dist/runtime/chunk-5GOWABKB.mjs +409 -0
  443. package/dist/runtime/chunk-ARMO5ZAQ.mjs +25 -0
  444. package/dist/runtime/chunk-ED2YPDPS.mjs +1123 -0
  445. package/dist/runtime/chunk-FPOEB42H.mjs +100 -0
  446. package/dist/runtime/chunk-GFRSRK3K.mjs +16 -0
  447. package/dist/runtime/chunk-ICWYSHJ7.mjs +19 -0
  448. package/dist/runtime/chunk-IPU64TJI.mjs +291 -0
  449. package/dist/runtime/chunk-JWX4UQAZ.mjs +14 -0
  450. package/dist/runtime/chunk-K3KT6RZY.mjs +1064 -0
  451. package/dist/runtime/chunk-QLRGI23I.mjs +1307 -0
  452. package/dist/runtime/chunk-RF4XQO6I.mjs +13 -0
  453. package/dist/runtime/chunk-VPCUV5QA.mjs +237 -0
  454. package/dist/runtime/chunk-WMJTK7ZB.mjs +201 -0
  455. package/dist/runtime/chunk-WROK6RQH.mjs +200 -0
  456. package/dist/runtime/chunk-XDJEGHUX.mjs +1179 -0
  457. package/dist/runtime/chunk-YK34QNHH.mjs +15 -0
  458. package/dist/runtime/chunk-Z6Y72JVG.mjs +37 -0
  459. package/dist/runtime/chunk-ZQFJ2BNZ.mjs +329 -0
  460. package/dist/runtime/mcp.mjs +15 -0
  461. package/package.json +70 -0
@@ -0,0 +1,323 @@
1
+ import com.fasterxml.jackson.databind.JsonNode;
2
+ import com.fasterxml.jackson.databind.ObjectMapper;
3
+ import com.fasterxml.jackson.databind.node.ObjectNode;
4
+ import java.io.*;
5
+ import java.net.URI;
6
+ import java.nio.charset.StandardCharsets;
7
+ import java.nio.file.*;
8
+ import java.sql.*;
9
+ import java.util.*;
10
+ import java.util.logging.*;
11
+ import java.util.regex.*;
12
+ import java.util.zip.*;
13
+ import javax.sql.rowset.serial.SerialClob;
14
+ import oracle.dbtools.extension.apex.core.apexlang.APEXLangTranspiler;
15
+ import oracle.dbtools.extension.apex.core.apexlang.APEXLangDeploymentFile;
16
+ import oracle.dbtools.extension.apex.core.apexlang.APEXSessionProperty;
17
+ import oracle.dbtools.extension.apex.utility.APEXLangUtils;
18
+ import oracle.apexlang.APEXLangCompiler;
19
+ import oracle.apexlang.core.DeploymentValue;
20
+
21
+ /** Runs against the Oracle compiler and OREST driver distributed with SQLcl 26.1+.
22
+ * Credentials arrive only on stdin. Jobs and reports must never contain passwords.
23
+ * This is an internal bridge, not a replacement APEXlang compiler.
24
+ */
25
+ public class OrdsBridge {
26
+ static final ObjectMapper JSON = new ObjectMapper();
27
+ static final long MAX_BYTES = 512L * 1024 * 1024;
28
+ static final String IMPORT_BLOCK = """
29
+ begin
30
+ for b in (select ordinal, source from json_table(?, '$[*]'
31
+ columns (ordinal for ordinality, source clob path '$' error on error))
32
+ order by ordinal) loop
33
+ execute immediate b.source;
34
+ end loop;
35
+ end;
36
+ """;
37
+ static String password = "";
38
+
39
+ public static void main(String[] args) throws Exception {
40
+ ObjectNode result = JSON.createObjectNode();
41
+ Path report = null;
42
+ int exit = 0;
43
+ try {
44
+ if (args.length != 1) throw new IllegalArgumentException("Expected one job file path");
45
+ JsonNode job = JSON.readTree(Files.readString(Path.of(args[0])));
46
+ report = Path.of(required(job, "output")).toAbsolutePath().normalize();
47
+ String operation = required(job, "operation");
48
+ result.put("operation", operation);
49
+ if (operation.equals("compile")) {
50
+ List<String> blocks = compile(job, result);
51
+ result.put("statement", IMPORT_BLOCK);
52
+ result.set("blocks", JSON.valueToTree(blocks));
53
+ } else if (operation.equals("prepare-script")) {
54
+ result.put("script", script(job));
55
+ } else {
56
+ JsonNode credentials;
57
+ try { credentials = JSON.readTree(System.in); }
58
+ catch (IOException error) { throw new IllegalArgumentException("Invalid credentials JSON on stdin"); }
59
+ password = required(credentials, "password");
60
+ try (Connection connection = connect(credentials)) {
61
+ if (operation.equals("import")) {
62
+ List<String> blocks = compile(job, result);
63
+ if (!result.path("targetConfigured").asBoolean())
64
+ throw new IllegalArgumentException("Import requires workspace, parsingSchema and applicationId");
65
+ try (CallableStatement statement = connection.prepareCall(IMPORT_BLOCK)) {
66
+ statement.setClob(1, new SerialClob(JSON.writeValueAsString(blocks).toCharArray()));
67
+ result.put("writeStarted", true);
68
+ checkpoint(report, result);
69
+ statement.execute();
70
+ }
71
+ result.put("message", "Import successful");
72
+ } else if (operation.equals("export")) {
73
+ export(connection, job, result);
74
+ } else if (operation.equals("script")) {
75
+ String source = script(job);
76
+ result.put("writeStarted", true);
77
+ checkpoint(report, result);
78
+ executeScript(connection, source, result);
79
+ } else throw new IllegalArgumentException("Unsupported operation");
80
+ }
81
+ }
82
+ result.put("status", "succeeded");
83
+ } catch (Exception error) {
84
+ exit = 1;
85
+ result.put("status", "failed");
86
+ result.put("code", "ORDS_BRIDGE_FAILED");
87
+ String message = error.getMessage() == null ? error.getClass().getSimpleName() : error.getMessage();
88
+ result.put("message", password.isEmpty() ? message : message.replace(password, "[REDACTED]"));
89
+ }
90
+ if (report != null) {
91
+ Files.createDirectories(report.getParent());
92
+ Files.writeString(report, JSON.writerWithDefaultPrettyPrinter().writeValueAsString(result) + "\n");
93
+ }
94
+ // No source, query results, URL, or credential values are printed to the process log.
95
+ System.out.println(exit == 0 ? "APEXREST_ORDS_COMPLETE" : "APEXREST_ORDS_FAILED");
96
+ if (exit != 0) System.exit(exit);
97
+ }
98
+
99
+ static String required(JsonNode node, String key) {
100
+ if (node == null || !node.path(key).isTextual() || node.path(key).asText().isBlank())
101
+ throw new IllegalArgumentException("Missing " + key);
102
+ return node.path(key).asText();
103
+ }
104
+
105
+ static void checkpoint(Path report, ObjectNode result) throws IOException {
106
+ ObjectNode pending = result.deepCopy();
107
+ pending.put("status", "failed");
108
+ pending.put("code", "ORDS_OUTCOME_UNKNOWN");
109
+ pending.put("message", "The ORDS write started but no final result was recorded");
110
+ Files.createDirectories(report.getParent());
111
+ Files.writeString(report, JSON.writeValueAsString(pending) + "\n");
112
+ }
113
+
114
+ static Connection connect(JsonNode credentials) throws Exception {
115
+ URI uri = URI.create(required(credentials, "url"));
116
+ if (!("https".equals(uri.getScheme()) || "http".equals(uri.getScheme())) || uri.getHost() == null
117
+ || uri.getUserInfo() != null || uri.getQuery() != null || uri.getFragment() != null)
118
+ throw new IllegalArgumentException("Invalid ORDS schema URL");
119
+ String url = uri.toString();
120
+ if (url.matches(".*/_/sql/?$")) throw new IllegalArgumentException("Use the ORDS schema URL, without /_/sql");
121
+ if (!url.endsWith("/")) url += "/";
122
+ Properties properties = new Properties();
123
+ properties.setProperty("user", required(credentials, "username"));
124
+ properties.setProperty("password", password);
125
+ Logger.getLogger("oracle.dbtools").setLevel(Level.WARNING);
126
+ Connection connection = new oracle.dbtools.jdbc.orest.Driver().connect("jdbc:oracle:orest:@" + url, properties);
127
+ if (connection == null) throw new SQLException("The SQLcl OREST driver rejected the URL");
128
+ return connection;
129
+ }
130
+
131
+ static List<String> compile(JsonNode job, ObjectNode result) throws Exception {
132
+ Path input = Path.of(required(job, "input")).toRealPath();
133
+ Path deployment = Path.of(required(job, "deployment")).toRealPath();
134
+ if (!Files.isDirectory(input)) throw new IllegalArgumentException("The bridge requires a staged APEXlang directory");
135
+ Path metadata = input.resolve(".apex/apexlang.json");
136
+ String version = required(JSON.readTree(Files.readString(metadata)), "mmdVersion");
137
+ APEXLangTranspiler transpiler = new APEXLangTranspiler(version);
138
+ Map<String, DeploymentValue> values = new HashMap<>();
139
+ APEXLangUtils.populateDeploymentInfo(values, List.of("subscription.masterApps", "subscription.mode"),
140
+ APEXSessionProperty.getAPEXSessionProperties(APEXLangCompiler.getInstance(version).getDeploymentFileProperties()),
141
+ new APEXLangDeploymentFile(deployment), null, null, null);
142
+ var compilation = transpiler.transpile(input, values);
143
+ result.put("compilerMmdVersion", transpiler.getCompilerMmdVersion());
144
+ if (compilation.getWarnings() != null && compilation.getWarnings().length > 0)
145
+ result.put("warnings", transpiler.formatWarnings(compilation.getWarnings()));
146
+ if (compilation.getErrors().length > 0)
147
+ throw new IllegalArgumentException(transpiler.formatErrors(compilation.getErrors()));
148
+ List<String> blocks = new ArrayList<>();
149
+ JsonNode configuration = JSON.readTree(Files.readString(deployment));
150
+ long applicationId = job.path("applicationId").asLong(configuration.path("app").path("id").asLong(0));
151
+ String workspace = job.path("workspace").asText(configuration.path("workspace").path("name").asText(""));
152
+ String schema = job.path("parsingSchema").asText(configuration.path("app").path("databaseSession").path("parsingSchema").asText(""));
153
+ if (applicationId > 0 && !workspace.isBlank() && !schema.isBlank()) {
154
+ blocks.add("begin apex_application_install.clear_all; apex_application_install.set_workspace(" + literal(workspace)
155
+ + "); apex_application_install.set_application_id(" + applicationId + "); apex_application_install.set_schema("
156
+ + literal(schema) + "); end;");
157
+ result.put("targetConfigured", true);
158
+ }
159
+ compilation.processPlSqlOutput(blocks::add);
160
+ if (blocks.isEmpty()) throw new IllegalArgumentException("Oracle compiler produced no import blocks");
161
+ long size = blocks.stream().mapToLong(s -> s.getBytes(StandardCharsets.UTF_8).length).sum();
162
+ if (size > MAX_BYTES) throw new IllegalArgumentException("Compiled import exceeds the bridge payload limit");
163
+ result.put("blockCount", blocks.size());
164
+ result.put("compiledBytes", size);
165
+ result.put("databaseRequests", 1);
166
+ return blocks;
167
+ }
168
+
169
+ static String literal(String value) { return "'" + value.replace("'", "''") + "'"; }
170
+
171
+ static void export(Connection connection, JsonNode job, ObjectNode result) throws Exception {
172
+ long applicationId = job.path("applicationId").asLong(0);
173
+ if (applicationId <= 0) throw new IllegalArgumentException("Invalid applicationId");
174
+ String format = required(job, "exportType");
175
+ if (format.equals("APPLICATION_SOURCE")) format = "SQL";
176
+ if (!Set.of("APEXLANG", "SQL").contains(format)) throw new IllegalArgumentException("Unsupported exportType");
177
+ String sql = """
178
+ declare
179
+ l_files apex_t_export_files;
180
+ l_zip blob;
181
+ begin
182
+ l_files := apex_export.get_application(
183
+ p_application_id => ?, p_type => ?, p_split => ? = 1,
184
+ p_with_date => false, p_with_original_ids => true,
185
+ p_with_comments => true, p_with_supporting_objects => 'Y');
186
+ l_zip := apex_export.zip(l_files);
187
+ ? := apex_web_service.blob2clobbase64(l_zip, p_newlines => 'N', p_padding => 'Y');
188
+ end;
189
+ """;
190
+ String encoded;
191
+ try (CallableStatement statement = connection.prepareCall(sql)) {
192
+ statement.setLong(1, applicationId);
193
+ statement.setString(2, format);
194
+ statement.setInt(3, job.path("split").asBoolean(true) ? 1 : 0);
195
+ statement.registerOutParameter(4, Types.CLOB);
196
+ statement.execute();
197
+ Clob content = statement.getClob(4);
198
+ if (content == null || content.length() == 0 || content.length() > MAX_BYTES * 2)
199
+ throw new IOException("Missing or oversized export response");
200
+ encoded = content.getSubString(1, Math.toIntExact(content.length()));
201
+ }
202
+ // SQLcl 26.1's OREST getClob serializes the JSON scalar, including its quotes.
203
+ // Decode that scalar once; accept raw text if a later driver corrects this behavior.
204
+ if (encoded.startsWith("\"")) {
205
+ JsonNode scalar = JSON.readTree(encoded);
206
+ if (!scalar.isTextual()) throw new IOException("Invalid export CLOB response");
207
+ encoded = scalar.asText();
208
+ }
209
+ Path directory = Path.of(required(job, "outputDirectory")).toAbsolutePath().normalize();
210
+ List<String> files = extractZip(Base64.getDecoder().decode(encoded.replaceAll("\\s", "")), directory);
211
+ if (format.equals("APEXLANG") && files.stream().noneMatch(f -> f.endsWith(".apex/apexlang.json")))
212
+ throw new IOException("APEXlang export lacks Oracle .apex/apexlang.json metadata");
213
+ result.set("files", JSON.valueToTree(files));
214
+ result.put("outputDirectory", directory.toString());
215
+ result.put("message", "Export successful");
216
+ }
217
+
218
+ static List<String> extractZip(byte[] archive, Path directory) throws Exception {
219
+ if (Files.exists(directory)) {
220
+ if (Files.isSymbolicLink(directory)) throw new IOException("Export directory cannot be a symbolic link");
221
+ try (var entries = Files.list(directory)) {
222
+ if (entries.findAny().isPresent()) throw new IOException("Export directory must be empty");
223
+ }
224
+ } else Files.createDirectories(directory);
225
+ Path root = directory.toRealPath();
226
+ List<String> files = new ArrayList<>();
227
+ long total = 0;
228
+ try (ZipInputStream zip = new ZipInputStream(new ByteArrayInputStream(archive), StandardCharsets.UTF_8)) {
229
+ ZipEntry entry;
230
+ while ((entry = zip.getNextEntry()) != null) {
231
+ String name = entry.getName();
232
+ Path target = root.resolve(name).normalize();
233
+ if (name.contains("\\") || !target.startsWith(root) || target.equals(root) || name.startsWith("/"))
234
+ throw new IOException("Unsafe export archive path");
235
+ if (entry.isDirectory()) { Files.createDirectories(target); continue; }
236
+ Files.createDirectories(target.getParent());
237
+ try (OutputStream out = Files.newOutputStream(target, StandardOpenOption.CREATE_NEW)) {
238
+ byte[] buffer = new byte[65536];
239
+ int read;
240
+ while ((read = zip.read(buffer)) >= 0) {
241
+ total += read;
242
+ if (total > MAX_BYTES) throw new IOException("Export archive exceeds the bridge payload limit");
243
+ out.write(buffer, 0, read);
244
+ }
245
+ }
246
+ files.add(name);
247
+ }
248
+ }
249
+ if (files.isEmpty()) throw new IOException("Empty export archive");
250
+ return files;
251
+ }
252
+
253
+ static String script(JsonNode job) throws Exception {
254
+ Path input = Path.of(required(job, "input")).toRealPath();
255
+ return expandScript(input, input.getParent(), new HashSet<>());
256
+ }
257
+
258
+ static String expandScript(Path input, Path root, Set<Path> active) throws Exception {
259
+ input = input.toRealPath();
260
+ if (!input.startsWith(root) || !active.add(input)) throw new IOException("Unsafe or cyclic SQL include");
261
+ StringBuilder output = new StringBuilder();
262
+ Pattern include = Pattern.compile("^\\s*@@?(?:\"([^\"]+)\"|'([^']+)'|([^\\s]+))\\s*$");
263
+ for (String line : Files.readAllLines(input, StandardCharsets.UTF_8)) {
264
+ Matcher match = include.matcher(line);
265
+ if (match.matches()) {
266
+ String name = match.group(1) != null ? match.group(1) : match.group(2) != null ? match.group(2) : match.group(3);
267
+ Path child = input.getParent().resolve(name);
268
+ if (!Files.exists(child) && !name.endsWith(".sql")) child = input.getParent().resolve(name + ".sql");
269
+ output.append(expandScript(child, root, active));
270
+ } else {
271
+ if (line.stripLeading().startsWith("@")) throw new IOException("Unsupported SQL include syntax");
272
+ output.append(line).append('\n');
273
+ }
274
+ if (output.length() > MAX_BYTES) throw new IOException("SQL script exceeds the bridge payload limit");
275
+ }
276
+ active.remove(input);
277
+ return output.toString();
278
+ }
279
+
280
+ static void executeScript(Connection connection, String sql, ObjectNode result) throws Exception {
281
+ if (!(connection instanceof oracle.dbtools.jdbc.Connection restConnection))
282
+ throw new SQLException("Expected the SQLcl REST connection implementation");
283
+ try (ScriptStatement rest = new ScriptStatement(restConnection)) {
284
+ try (var response = rest.orestExecuteInternal(sql)) {
285
+ if (response == null) throw new SQLException("ORDS script produced no HTTP response");
286
+ if (response.getCode() < 200 || response.getCode() >= 300)
287
+ throw new SQLException("ORDS script HTTP status " + response.getCode());
288
+ JsonNode body = JSON.readTree(response.getEntity().getContent());
289
+ if (!body.path("items").isArray() || body.path("items").isEmpty())
290
+ throw new SQLException("ORDS returned no script execution results");
291
+ int statements = 0;
292
+ for (JsonNode item : body.path("items")) {
293
+ statements++;
294
+ String messages = item.path("response").toString();
295
+ if (item.path("errorCode").asInt(0) != 0 || item.hasNonNull("errorDetails") || item.path("result").asInt(0) < 0
296
+ || Pattern.compile("(?i)ORA-\\d+|PLS-\\d+|SP2-\\d+|unknown command|error at line").matcher(messages).find())
297
+ throw new SQLException("ORDS script failed at statement " + statements + ": " + messages);
298
+ }
299
+ result.put("statementCount", statements);
300
+ result.put("message", "Script execution successful");
301
+ }
302
+ }
303
+ }
304
+
305
+ /** The driver's default emulate=jdbc payload is for individual JDBC statements.
306
+ * Full SQL*Plus scripts use ORDS's documented statementText script format instead.
307
+ */
308
+ static class ScriptStatement extends oracle.dbtools.jdbc.Statement {
309
+ ScriptStatement(oracle.dbtools.jdbc.Connection connection) { super(connection); }
310
+ @Override protected AbstractMap.SimpleEntry<com.fasterxml.jackson.core.JsonGenerator, Writer>
311
+ generatePost(String sql, int offset) throws SQLException {
312
+ try {
313
+ Writer out = new StringWriter();
314
+ var generator = JSON.getFactory().createGenerator(out);
315
+ generator.writeStartObject();
316
+ generator.writeStringField("statementText", sql);
317
+ generator.writeEndObject();
318
+ generator.flush();
319
+ return new AbstractMap.SimpleEntry<>(generator, out);
320
+ } catch (IOException error) { throw new SQLException("Could not encode the ORDS script", error); }
321
+ }
322
+ }
323
+ }
@@ -0,0 +1,118 @@
1
+ All image contents within are Copyright The Pokémon Company.
2
+
3
+ This repository is distributed under CC0 1.0 Universal
4
+
5
+ Statement of Purpose
6
+
7
+ The laws of most jurisdictions throughout the world automatically confer
8
+ exclusive Copyright and Related Rights (defined below) upon the creator and
9
+ subsequent owner(s) (each and all, an "owner") of an original work of
10
+ authorship and/or a database (each, a "Work").
11
+
12
+ Certain owners wish to permanently relinquish those rights to a Work for the
13
+ purpose of contributing to a commons of creative, cultural and scientific
14
+ works ("Commons") that the public can reliably and without fear of later
15
+ claims of infringement build upon, modify, incorporate in other works, reuse
16
+ and redistribute as freely as possible in any form whatsoever and for any
17
+ purposes, including without limitation commercial purposes. These owners may
18
+ contribute to the Commons to promote the ideal of a free culture and the
19
+ further production of creative, cultural and scientific works, or to gain
20
+ reputation or greater distribution for their Work in part through the use and
21
+ efforts of others.
22
+
23
+ For these and/or other purposes and motivations, and without any expectation
24
+ of additional consideration or compensation, the person associating CC0 with a
25
+ Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
26
+ and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
27
+ and publicly distribute the Work under its terms, with knowledge of his or her
28
+ Copyright and Related Rights in the Work and the meaning and intended legal
29
+ effect of CC0 on those rights.
30
+
31
+ 1. Copyright and Related Rights. A Work made available under CC0 may be
32
+ protected by copyright and related or neighboring rights ("Copyright and
33
+ Related Rights"). Copyright and Related Rights include, but are not limited
34
+ to, the following:
35
+
36
+ i. the right to reproduce, adapt, distribute, perform, display, communicate,
37
+ and translate a Work;
38
+
39
+ ii. moral rights retained by the original author(s) and/or performer(s);
40
+
41
+ iii. publicity and privacy rights pertaining to a person's image or likeness
42
+ depicted in a Work;
43
+
44
+ iv. rights protecting against unfair competition in regards to a Work,
45
+ subject to the limitations in paragraph 4(a), below;
46
+
47
+ v. rights protecting the extraction, dissemination, use and reuse of data in
48
+ a Work;
49
+
50
+ vi. database rights (such as those arising under Directive 96/9/EC of the
51
+ European Parliament and of the Council of 11 March 1996 on the legal
52
+ protection of databases, and under any national implementation thereof,
53
+ including any amended or successor version of such directive); and
54
+
55
+ vii. other similar, equivalent or corresponding rights throughout the world
56
+ based on applicable law or treaty, and any national implementations thereof.
57
+
58
+ 2. Waiver. To the greatest extent permitted by, but not in contravention of,
59
+ applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
60
+ unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
61
+ and Related Rights and associated claims and causes of action, whether now
62
+ known or unknown (including existing as well as future claims and causes of
63
+ action), in the Work (i) in all territories worldwide, (ii) for the maximum
64
+ duration provided by applicable law or treaty (including future time
65
+ extensions), (iii) in any current or future medium and for any number of
66
+ copies, and (iv) for any purpose whatsoever, including without limitation
67
+ commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
68
+ the Waiver for the benefit of each member of the public at large and to the
69
+ detriment of Affirmer's heirs and successors, fully intending that such Waiver
70
+ shall not be subject to revocation, rescission, cancellation, termination, or
71
+ any other legal or equitable action to disrupt the quiet enjoyment of the Work
72
+ by the public as contemplated by Affirmer's express Statement of Purpose.
73
+
74
+ 3. Public License Fallback. Should any part of the Waiver for any reason be
75
+ judged legally invalid or ineffective under applicable law, then the Waiver
76
+ shall be preserved to the maximum extent permitted taking into account
77
+ Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
78
+ is so judged Affirmer hereby grants to each affected person a royalty-free,
79
+ non transferable, non sublicensable, non exclusive, irrevocable and
80
+ unconditional license to exercise Affirmer's Copyright and Related Rights in
81
+ the Work (i) in all territories worldwide, (ii) for the maximum duration
82
+ provided by applicable law or treaty (including future time extensions), (iii)
83
+ in any current or future medium and for any number of copies, and (iv) for any
84
+ purpose whatsoever, including without limitation commercial, advertising or
85
+ promotional purposes (the "License"). The License shall be deemed effective as
86
+ of the date CC0 was applied by Affirmer to the Work. Should any part of the
87
+ License for any reason be judged legally invalid or ineffective under
88
+ applicable law, such partial invalidity or ineffectiveness shall not
89
+ invalidate the remainder of the License, and in such case Affirmer hereby
90
+ affirms that he or she will not (i) exercise any of his or her remaining
91
+ Copyright and Related Rights in the Work or (ii) assert any associated claims
92
+ and causes of action with respect to the Work, in either case contrary to
93
+ Affirmer's express Statement of Purpose.
94
+
95
+ 4. Limitations and Disclaimers.
96
+
97
+ a. No trademark or patent rights held by Affirmer are waived, abandoned,
98
+ surrendered, licensed or otherwise affected by this document.
99
+
100
+ b. Affirmer offers the Work as-is and makes no representations or warranties
101
+ of any kind concerning the Work, express, implied, statutory or otherwise,
102
+ including without limitation warranties of title, merchantability, fitness
103
+ for a particular purpose, non infringement, or the absence of latent or
104
+ other defects, accuracy, or the present or absence of errors, whether or not
105
+ discoverable, all to the greatest extent permissible under applicable law.
106
+
107
+ c. Affirmer disclaims responsibility for clearing rights of other persons
108
+ that may apply to the Work or any use thereof, including without limitation
109
+ any person's Copyright and Related Rights in the Work. Further, Affirmer
110
+ disclaims responsibility for obtaining any necessary consents, permissions
111
+ or other rights required for any use of the Work.
112
+
113
+ d. Affirmer understands and acknowledges that Creative Commons is not a
114
+ party to this document and has no duty or obligation with respect to this
115
+ CC0 or use of the Work.
116
+
117
+ For more information, please see
118
+ <http://creativecommons.org/publicdomain/zero/1.0/>
@@ -0,0 +1,36 @@
1
+ {
2
+ "repository": "https://github.com/PokeAPI/sprites",
3
+ "revision": "1dce80ceb372675e9fc7e9f101b71845ef587de2",
4
+ "assets": [
5
+ {
6
+ "name": "mewtwo",
7
+ "id": 150,
8
+ "source": "https://raw.githubusercontent.com/PokeAPI/sprites/1dce80ceb372675e9fc7e9f101b71845ef587de2/sprites/pokemon/150.png",
9
+ "sha256": "31c5aebb134a3711864a92091cb1b5c35158e4e90ca5c88afddf56f0cf4bc129"
10
+ },
11
+ {
12
+ "name": "pikachu",
13
+ "id": 25,
14
+ "source": "https://raw.githubusercontent.com/PokeAPI/sprites/1dce80ceb372675e9fc7e9f101b71845ef587de2/sprites/pokemon/25.png",
15
+ "sha256": "80d30eb1b9f2a05eb4a216d53034e2a0bb16f2619ec43d281f36d601e5819c2c"
16
+ },
17
+ {
18
+ "name": "charmander",
19
+ "id": 4,
20
+ "source": "https://raw.githubusercontent.com/PokeAPI/sprites/1dce80ceb372675e9fc7e9f101b71845ef587de2/sprites/pokemon/4.png",
21
+ "sha256": "4e943ded73aff00aa8323800481412cf0912649d640f5ad5021e8e1e2b3e77c6"
22
+ },
23
+ {
24
+ "name": "bulbasaur",
25
+ "id": 1,
26
+ "source": "https://raw.githubusercontent.com/PokeAPI/sprites/1dce80ceb372675e9fc7e9f101b71845ef587de2/sprites/pokemon/1.png",
27
+ "sha256": "7307265558511ea080add119ab7e86b9f87aaab4cedef76df2a13290ca5ad8c9"
28
+ },
29
+ {
30
+ "name": "squirtle",
31
+ "id": 7,
32
+ "source": "https://raw.githubusercontent.com/PokeAPI/sprites/1dce80ceb372675e9fc7e9f101b71845ef587de2/sprites/pokemon/7.png",
33
+ "sha256": "1309dd0971ab7c5cd1699fa6ead8b00c9d8fa7f39e09313e697b3d31527f0517"
34
+ }
35
+ ]
36
+ }
@@ -0,0 +1,68 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
5
+ <title>APEXREST · Development panel</title>
6
+ <link rel="stylesheet" href="/panel.css">
7
+ <script src="/panel.js" defer></script>
8
+ </head>
9
+ <body>
10
+ <aside class="sidebar">
11
+ <div class="brand"><span class="brand-mark" aria-hidden="true">⌘</span><div>APEXREST<small>CODEX WORKSPACE</small></div></div>
12
+ <div class="project-label">PROJECT</div><strong id="project-name">Connecting…</strong><div id="project-path" class="subtle path"></div>
13
+ <nav aria-label="Development views">
14
+ <button data-view="overview" aria-current="page"><span>◈</span> Overview</button>
15
+ <button data-view="team"><span>◎</span> Agents</button>
16
+ <button data-view="operations"><span>↗</span> APEX operations</button>
17
+ <button data-view="settings"><span>☷</span> Settings</button>
18
+ </nav>
19
+ <div class="sidebar-bottom"><span id="connection" class="badge">Connecting</span><p id="updated" class="subtle">Waiting for workspace data</p><button id="refresh" class="quiet">Refresh now</button></div>
20
+ </aside>
21
+ <main>
22
+ <header><div><p class="eyebrow">DEVELOPMENT CONTROL</p><h1 id="view-title">Workspace overview</h1><p id="view-subtitle" class="subtle">Your team, settings and APEX work in one place.</p></div><button id="new-task" class="primary">+ New task</button></header>
23
+ <div id="notice" role="status" class="notice" hidden></div>
24
+ <div id="connection-error" role="alert" class="notice error" hidden></div>
25
+ <section id="metrics" class="metrics" aria-label="Workspace summary"></section>
26
+ <section data-page="overview"><div id="overview-live"></div></section>
27
+ <section data-page="team" hidden>
28
+ <div class="section-heading"><h2>Development runs</h2><label class="inline-label">Run <select id="team-select" aria-label="Selected run"></select></label></div>
29
+ <div id="team-live"></div>
30
+ <form id="message-form" class="card"><h3>Send a task update</h3><label for="message">Clarify the task or pass new information to the active agent</label><textarea id="message" rows="3" maxlength="8000" required placeholder="Include the behavior or acceptance check you want changed…"></textarea><div class="form-footer"><p class="subtle">New input invalidates a completion based on the previous task.</p><button class="primary" type="submit">Send update</button><button id="cancel-team" type="button" class="danger">Stop run</button></div></form>
31
+ </section>
32
+ <section data-page="operations" hidden>
33
+ <div class="card"><div class="section-heading"><div><h2>Run a check</h2><p class="subtle">Use the selected project's existing toolchain and authorization.</p></div></div><div class="actions"><button id="validate">Compile APEX source</button><label>Environment<select id="environment"><option value="">Choose environment</option></select></label><label>Test suite<select id="suite"><option value="unit">Unit</option><option value="sql">SQL</option><option value="api">API</option><option value="e2e">Playwright E2E</option><option value="all">All configured</option></select></label><button id="run-tests">Run checks</button><button id="plan">Prepare deployment plan</button></div><p class="subtle">Application imports keep their existing plan, backup and approval gates. This panel does not grant deployment permission.</p></div>
34
+ <div id="operations-live"></div>
35
+ </section>
36
+ <section data-page="settings" hidden>
37
+ <div class="two-columns">
38
+ <form id="sqlcl-form" class="card"><p class="eyebrow">ORACLE CONNECTION</p><h2>Database connectivity</h2><p class="subtle">Saved at plugin level for new APEXREST operations across projects.</p><label>Database network transport<select id="sqlcl-transport"><option value="direct">Direct Oracle listener</option><option value="ords">ORDS HTTP(S)</option></select></label><p id="sqlcl-transport-note" class="subtle"></p><label>SQLcl execution<select id="sqlcl-mode"><option value="cli">SQLcl CLI</option><option value="mcp">Official SQLcl MCP</option></select></label><label>MCP restriction level<select id="sqlcl-level"><option value="4">Level 4 · restricted (default)</option><option value="1">Level 1 · allow SQLcl scripts</option></select></label><button type="submit">Save SQLcl settings</button></form>
39
+ <form id="preferences-form" class="card"><p class="eyebrow">WORKFLOW</p><h2>Defaults for new work</h2><label>Execution mode<select id="default-execution-mode"><option value="single">Single agent</option><option value="team">Agent team</option></select></label><label>Browser for APEX verification<select id="default-browser-mode"><option value="codex">Codex in-app browser</option><option value="external">External system browser</option></select></label><p class="subtle">The external browser uses your normal browser session for interactive login, including SSO. Automated Playwright suites use separate authentication. The dashboard stays in Codex.</p><label>Developers<select id="default-developers"><option>1</option><option>2</option><option>3</option></select></label><label>Developer permissions<select id="default-sandbox"><option value="workspace-write">Write inside this project</option><option value="read-only">Read only</option></select></label><label>Time limit (seconds)<input id="default-timeout" type="number" min="30" max="3600" required></label><p id="default-workflow-note" class="subtle"></p><button type="submit">Save work defaults</button></form>
40
+ </div>
41
+ <form id="connection-form" class="card" autocomplete="off">
42
+ <p class="eyebrow">PLUGIN CONNECTION SETTINGS</p><h2>Connection references</h2>
43
+ <p class="subtle">Choose a project's read or deploy connection reference. Its connection settings are shared across projects using that reference.</p>
44
+ <label>Connection reference<input id="connection-ref" list="connection-refs" maxlength="100" required placeholder="Your read or deploy connection reference"></label><datalist id="connection-refs"></datalist>
45
+ <p id="connection-mode-note" class="subtle"></p>
46
+ <fieldset id="connection-direct-group" class="connection-group">
47
+ <legend>Direct Oracle listener</legend>
48
+ <p class="subtle">Choose a connection from your local SQLcl connection store. SQLcl manages its database credentials.</p>
49
+ <div class="connection-picker"><label>Saved SQLcl connection<select id="connection-direct"><option value="">Choose a saved connection</option></select></label><button id="saved-connections-refresh" type="button" class="quiet">Load saved connections</button></div>
50
+ <p id="saved-connections-status" class="subtle" role="status" aria-live="polite" data-state="idle">Saved connections load when you open Direct connection settings.</p>
51
+ <details><summary>Manage saved connections</summary><p class="subtle">Save a direct database connection in SQLcl, then refresh this list. Selecting a name here maps it to the connection reference above.</p><pre>connmgr list -flat</pre></details>
52
+ </fieldset>
53
+ <fieldset id="connection-ords-group" class="connection-group" hidden disabled>
54
+ <legend>ORDS HTTP(S)</legend>
55
+ <p class="subtle">Use your existing Oracle database username and password through ORDS. No separate ORDS account is needed. The schema must be REST-enabled and permit REST-enabled SQL.</p>
56
+ <label>ORDS schema URL<input id="connection-ords-url" type="url" maxlength="2048" placeholder="https://example.com/ords/schema-alias/"></label><p class="subtle">Use the schema URL provided by your administrator. Its schema alias can differ from your database username.</p>
57
+ <div class="two-columns"><label>Database username<input id="connection-ords-user" maxlength="128" autocomplete="off" placeholder="Your Oracle database username"></label><label>Database password<input id="connection-ords-password" type="password" autocomplete="new-password"></label></div><p id="connection-password-note" class="subtle">Leave the password blank to keep it for the same URL and database username. A changed URL or username requires a password.</p>
58
+ <p class="subtle connection-storage-note">SQLcl cannot save ORDS connections. APEXREST stores these settings and the database password locally at plugin level.</p>
59
+ <details><summary>Configure ORDS from the CLI</summary><p class="subtle">Provide your database password through a local file:</p><pre>apexrest connection add --name REF --ords-url https://example.com/ords/schema-alias/ --ords-username DATABASE_USER --password-file PATH</pre><p class="subtle">Interactive SQLcl example:</p><pre>connect -orest DATABASE_USER@https://example.com/ords/schema-alias/</pre></details>
60
+ </fieldset>
61
+ <button id="connection-save" type="submit">Save direct connection</button>
62
+ </form><div id="settings-live"></div>
63
+ </section>
64
+ <footer>APEXREST for Codex <span id="version"></span><span>Local workspace · Updates every 2 seconds</span></footer>
65
+ </main>
66
+ <dialog id="task-dialog"><form id="task-form"><div class="section-heading"><div><p class="eyebrow">DEVELOPMENT TASK</p><h2>Start a task</h2></div><button type="button" id="close-task" class="quiet" aria-label="Close new task">✕</button></div><label for="task">Task and acceptance criteria</label><textarea id="task" rows="6" maxlength="16000" required placeholder="Describe the APEX change, target and checks. Include any existing authorization and constraints."></textarea><div class="actions"><label>Execution mode<select id="task-execution-mode"><option value="single">Single agent</option><option value="team">Agent team</option></select></label><label>Verification browser<select id="task-browser-mode"><option value="codex">Codex in-app browser</option><option value="external">External system browser</option></select></label><label>Developers<select id="task-developers"><option>1</option><option>2</option><option>3</option></select></label><label>Permissions<select id="task-sandbox"><option value="workspace-write">Project write</option><option value="read-only">Read only</option></select></label><label>Time limit (seconds)<input id="task-timeout" type="number" min="30" max="3600" required></label></div><p id="task-workflow-note" class="subtle"></p><button type="submit" class="primary">Start task</button></form></dialog>
67
+ </body>
68
+ </html>