apexrest 1.2.0 → 1.3.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 +90 -134
  2. package/dist/codex-compat/.claude-plugin/marketplace.json +20 -0
  3. package/dist/codex-compat/plugins/apexrest-apex/.claude-plugin/plugin.json +28 -0
  4. package/dist/codex-compat/plugins/apexrest-apex/.codex-plugin/plugin.json +7 -7
  5. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/evidence/block%3Aanalytics%2Fstatus-summary%401.0.0.json +19 -0
  6. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/evidence/block%3Acrud%2Freport-dialog%401.0.0.json +19 -0
  7. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/evidence/block%3Aread%2Fdetail%401.0.0.json +19 -0
  8. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/evidence/block%3Aread%2Ffiltered-list%401.0.0.json +19 -0
  9. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/evidence/block%3Aread%2Fhistory%401.0.0.json +19 -0
  10. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/evidence/block%3Aread%2Fmaster-detail%401.0.0.json +19 -0
  11. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/generator.json +5 -0
  12. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/manifest.json +29 -0
  13. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/packages/analytics/status-summary/1.0.0/block.yaml +59 -0
  14. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/packages/analytics/status-summary/1.0.0/renderer.json +14 -0
  15. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/packages/crud/report-dialog/1.0.0/block.yaml +66 -0
  16. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/packages/crud/report-dialog/1.0.0/renderer.json +14 -0
  17. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/packages/read/detail/1.0.0/block.yaml +59 -0
  18. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/packages/read/detail/1.0.0/renderer.json +14 -0
  19. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/packages/read/filtered-list/1.0.0/block.yaml +59 -0
  20. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/packages/read/filtered-list/1.0.0/renderer.json +14 -0
  21. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/packages/read/history/1.0.0/block.yaml +59 -0
  22. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/packages/read/history/1.0.0/renderer.json +14 -0
  23. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/packages/read/master-detail/1.0.0/block.yaml +59 -0
  24. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/packages/read/master-detail/1.0.0/renderer.json +14 -0
  25. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/profiles.json +10 -0
  26. package/dist/codex-compat/plugins/apexrest-apex/resources/blocks/revocations.json +1 -0
  27. package/dist/codex-compat/plugins/apexrest-apex/resources/blueprints/crm.yaml +172 -0
  28. package/dist/codex-compat/plugins/apexrest-apex/resources/blueprints/index.json +12 -0
  29. package/dist/codex-compat/plugins/apexrest-apex/resources/blueprints/service-desk.yaml +120 -0
  30. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-allocation.schema.json +33 -0
  31. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-block.schema.json +208 -0
  32. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-blueprint.schema.json +665 -0
  33. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-command.schema.json +106 -0
  34. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-contract.schema.json +174 -0
  35. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-diagnostic.schema.json +26 -0
  36. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-entity.schema.json +142 -0
  37. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-evidence.schema.json +95 -0
  38. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-field.schema.json +54 -0
  39. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-instance.schema.json +117 -0
  40. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-lock.schema.json +54 -0
  41. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-operation.schema.json +55 -0
  42. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-owner.schema.json +105 -0
  43. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-parameters.schema.json +61 -0
  44. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-plan.schema.json +1011 -0
  45. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-renderer.schema.json +69 -0
  46. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/composer-state.schema.json +146 -0
  47. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/deploy-plan.schema.json +754 -169
  48. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/operations.schema.json +525 -256
  49. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/policy.schema.json +21 -0
  50. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/project.schema.json +17 -7
  51. package/dist/codex-compat/plugins/apexrest-apex/resources/schemas/sync-state.schema.json +238 -0
  52. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/README.md +0 -2
  53. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/customer-crm/README.md +1 -3
  54. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/existing-app/README.md +0 -2
  55. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__yaml__LICENSE +13 -0
  56. package/dist/codex-compat/plugins/apexrest-apex/runtime/apexrest.mjs +81 -45
  57. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-5PCC7GZM.mjs +4090 -0
  58. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-BVPAS3TD.mjs +18 -0
  59. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-CVMECW6D.mjs +65 -0
  60. package/dist/codex-compat/plugins/apexrest-apex/runtime/{chunk-3MDDJFXN.mjs → chunk-JYN3YHP3.mjs} +4220 -10616
  61. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-KGTE7Q5Y.mjs +23 -0
  62. package/dist/{runtime/chunk-HOKFFGSZ.mjs → codex-compat/plugins/apexrest-apex/runtime/chunk-KKRFM7Q7.mjs} +21 -4
  63. package/dist/codex-compat/plugins/apexrest-apex/runtime/{chunk-2VBZESVC.mjs → chunk-MNU54A7W.mjs} +7 -1
  64. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-N4C2SKCN.mjs +6912 -0
  65. package/dist/codex-compat/plugins/apexrest-apex/runtime/{chunk-WK5GP4ES.mjs → chunk-P3CVQAZW.mjs} +822 -102
  66. package/dist/codex-compat/plugins/apexrest-apex/runtime/{chunk-2ZUNLCLK.mjs → chunk-QKYF6N6U.mjs} +210 -112
  67. package/dist/codex-compat/plugins/apexrest-apex/runtime/{chunk-S24BD6PY.mjs → chunk-RBJJNQ5O.mjs} +7 -7
  68. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-TMSMKVRP.mjs +10367 -0
  69. package/dist/codex-compat/plugins/apexrest-apex/runtime/{chunk-2Z3BZF66.mjs → chunk-WPS3CSQJ.mjs} +124 -11
  70. package/dist/codex-compat/plugins/apexrest-apex/runtime/mcp.mjs +5 -10
  71. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-apexlang/SKILL.md +22 -25
  72. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-apexlang/agents/openai.yaml +3 -3
  73. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-apexlang/references/component-routes.md +1 -5
  74. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-pattern-catalog/SKILL.md +4 -4
  75. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-pattern-catalog/agents/openai.yaml +1 -1
  76. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-pattern-catalog/references/capture-and-curation.md +2 -2
  77. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-safety/SKILL.md +18 -0
  78. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-safety/agents/openai.yaml +4 -0
  79. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-setup/SKILL.md +20 -10
  80. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-setup/agents/openai.yaml +3 -3
  81. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-work/SKILL.md +11 -6
  82. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-work/agents/openai.yaml +3 -3
  83. package/dist/resources/blocks/evidence/block%3Aanalytics%2Fstatus-summary%401.0.0.json +19 -0
  84. package/dist/resources/blocks/evidence/block%3Acrud%2Freport-dialog%401.0.0.json +19 -0
  85. package/dist/resources/blocks/evidence/block%3Aread%2Fdetail%401.0.0.json +19 -0
  86. package/dist/resources/blocks/evidence/block%3Aread%2Ffiltered-list%401.0.0.json +19 -0
  87. package/dist/resources/blocks/evidence/block%3Aread%2Fhistory%401.0.0.json +19 -0
  88. package/dist/resources/blocks/evidence/block%3Aread%2Fmaster-detail%401.0.0.json +19 -0
  89. package/dist/resources/blocks/generator.json +5 -0
  90. package/dist/resources/blocks/manifest.json +29 -0
  91. package/dist/resources/blocks/packages/analytics/status-summary/1.0.0/block.yaml +59 -0
  92. package/dist/resources/blocks/packages/analytics/status-summary/1.0.0/renderer.json +14 -0
  93. package/dist/resources/blocks/packages/crud/report-dialog/1.0.0/block.yaml +66 -0
  94. package/dist/resources/blocks/packages/crud/report-dialog/1.0.0/renderer.json +14 -0
  95. package/dist/resources/blocks/packages/read/detail/1.0.0/block.yaml +59 -0
  96. package/dist/resources/blocks/packages/read/detail/1.0.0/renderer.json +14 -0
  97. package/dist/resources/blocks/packages/read/filtered-list/1.0.0/block.yaml +59 -0
  98. package/dist/resources/blocks/packages/read/filtered-list/1.0.0/renderer.json +14 -0
  99. package/dist/resources/blocks/packages/read/history/1.0.0/block.yaml +59 -0
  100. package/dist/resources/blocks/packages/read/history/1.0.0/renderer.json +14 -0
  101. package/dist/resources/blocks/packages/read/master-detail/1.0.0/block.yaml +59 -0
  102. package/dist/resources/blocks/packages/read/master-detail/1.0.0/renderer.json +14 -0
  103. package/dist/resources/blocks/profiles.json +10 -0
  104. package/dist/resources/blocks/revocations.json +1 -0
  105. package/dist/resources/blueprints/crm.yaml +172 -0
  106. package/dist/resources/blueprints/index.json +12 -0
  107. package/dist/resources/blueprints/service-desk.yaml +120 -0
  108. package/dist/resources/schemas/composer-allocation.schema.json +33 -0
  109. package/dist/resources/schemas/composer-block.schema.json +208 -0
  110. package/dist/resources/schemas/composer-blueprint.schema.json +665 -0
  111. package/dist/resources/schemas/composer-command.schema.json +106 -0
  112. package/dist/resources/schemas/composer-contract.schema.json +174 -0
  113. package/dist/resources/schemas/composer-diagnostic.schema.json +26 -0
  114. package/dist/resources/schemas/composer-entity.schema.json +142 -0
  115. package/dist/resources/schemas/composer-evidence.schema.json +95 -0
  116. package/dist/resources/schemas/composer-field.schema.json +54 -0
  117. package/dist/resources/schemas/composer-instance.schema.json +117 -0
  118. package/dist/resources/schemas/composer-lock.schema.json +54 -0
  119. package/dist/resources/schemas/composer-operation.schema.json +55 -0
  120. package/dist/resources/schemas/composer-owner.schema.json +105 -0
  121. package/dist/resources/schemas/composer-parameters.schema.json +61 -0
  122. package/dist/resources/schemas/composer-plan.schema.json +1011 -0
  123. package/dist/resources/schemas/composer-renderer.schema.json +69 -0
  124. package/dist/resources/schemas/composer-state.schema.json +146 -0
  125. package/dist/resources/schemas/deploy-plan.schema.json +754 -169
  126. package/dist/resources/schemas/operations.schema.json +525 -256
  127. package/dist/resources/schemas/policy.schema.json +21 -0
  128. package/dist/resources/schemas/project.schema.json +17 -7
  129. package/dist/resources/schemas/sync-state.schema.json +238 -0
  130. package/dist/resources/templates/blank-app/README.md +0 -2
  131. package/dist/resources/templates/customer-crm/README.md +1 -3
  132. package/dist/resources/templates/existing-app/README.md +0 -2
  133. package/dist/resources/third-party/node_modules__yaml__LICENSE +13 -0
  134. package/dist/runtime/apexrest.mjs +81 -45
  135. package/dist/runtime/chunk-5PCC7GZM.mjs +4090 -0
  136. package/dist/runtime/chunk-BVPAS3TD.mjs +18 -0
  137. package/dist/runtime/chunk-CVMECW6D.mjs +65 -0
  138. package/dist/runtime/{chunk-3MDDJFXN.mjs → chunk-JYN3YHP3.mjs} +4220 -10616
  139. package/dist/runtime/chunk-KGTE7Q5Y.mjs +23 -0
  140. package/dist/{codex-compat/plugins/apexrest-apex/runtime/chunk-HOKFFGSZ.mjs → runtime/chunk-KKRFM7Q7.mjs} +21 -4
  141. package/dist/runtime/{chunk-2VBZESVC.mjs → chunk-MNU54A7W.mjs} +7 -1
  142. package/dist/runtime/chunk-N4C2SKCN.mjs +6912 -0
  143. package/dist/runtime/{chunk-WK5GP4ES.mjs → chunk-P3CVQAZW.mjs} +822 -102
  144. package/dist/runtime/{chunk-2ZUNLCLK.mjs → chunk-QKYF6N6U.mjs} +210 -112
  145. package/dist/runtime/{chunk-S24BD6PY.mjs → chunk-RBJJNQ5O.mjs} +7 -7
  146. package/dist/runtime/chunk-TMSMKVRP.mjs +10367 -0
  147. package/dist/runtime/{chunk-2Z3BZF66.mjs → chunk-WPS3CSQJ.mjs} +124 -11
  148. package/dist/runtime/mcp.mjs +5 -10
  149. package/package.json +14 -7
  150. package/README.uk.md +0 -206
  151. package/dist/codex-compat/plugins/apexrest-apex/resources/panel/index.html +0 -61
  152. package/dist/codex-compat/plugins/apexrest-apex/resources/panel/panel.css +0 -627
  153. package/dist/codex-compat/plugins/apexrest-apex/resources/panel/panel.js +0 -629
  154. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/blank-app/README.uk.md +0 -5
  155. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/customer-crm/README.uk.md +0 -7
  156. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/database-control/install.sql +0 -17
  157. package/dist/codex-compat/plugins/apexrest-apex/resources/templates/existing-app/README.uk.md +0 -9
  158. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@playwright__test__LICENSE +0 -202
  159. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@playwright__test__NOTICE +0 -5
  160. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@types__node__LICENSE +0 -21
  161. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@types__yauzl__LICENSE +0 -21
  162. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@typescript__typescript-darwin-arm64__LICENSE +0 -55
  163. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__@typescript__typescript-darwin-arm64__NOTICE.txt +0 -436
  164. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__esbuild__LICENSE.md +0 -21
  165. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__fflate__LICENSE +0 -21
  166. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__marked__LICENSE +0 -44
  167. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__playwright-core__LICENSE +0 -202
  168. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__playwright-core__NOTICE +0 -5
  169. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__playwright__LICENSE +0 -202
  170. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__playwright__NOTICE +0 -5
  171. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__prettier__LICENSE +0 -7
  172. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__typescript__LICENSE +0 -55
  173. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__typescript__NOTICE.txt +0 -436
  174. package/dist/codex-compat/plugins/apexrest-apex/resources/third-party/node_modules__undici-types__LICENSE +0 -21
  175. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-4MYHJ2IU.mjs +0 -1208
  176. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-7RZW5QV2.mjs +0 -992
  177. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-AQZLLQ3D.mjs +0 -203
  178. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-BD2AVCFU.mjs +0 -367
  179. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-IX6V6ZGW.mjs +0 -18
  180. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-NDZ2RWQU.mjs +0 -13
  181. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-QIVPMPU3.mjs +0 -14
  182. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-SPZVXAM5.mjs +0 -147
  183. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-TLYYCRQA.mjs +0 -329
  184. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-TXVQLYTH.mjs +0 -1271
  185. package/dist/codex-compat/plugins/apexrest-apex/runtime/chunk-YLXJ6H4J.mjs +0 -14
  186. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-database/SKILL.md +0 -9
  187. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-database/agents/openai.yaml +0 -4
  188. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-debug/SKILL.md +0 -9
  189. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-debug/agents/openai.yaml +0 -4
  190. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-deploy/SKILL.md +0 -19
  191. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-deploy/agents/openai.yaml +0 -4
  192. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-install-dependencies/SKILL.md +0 -38
  193. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-install-dependencies/agents/openai.yaml +0 -4
  194. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-menu/SKILL.md +0 -28
  195. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-menu/agents/openai.yaml +0 -4
  196. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-menu/references/cli-catalog.md +0 -23
  197. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-panel/SKILL.md +0 -14
  198. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-panel/agents/openai.yaml +0 -4
  199. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-project/SKILL.md +0 -9
  200. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-project/agents/openai.yaml +0 -4
  201. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-review/SKILL.md +0 -11
  202. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-review/agents/openai.yaml +0 -4
  203. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-test/SKILL.md +0 -29
  204. package/dist/codex-compat/plugins/apexrest-apex/skills/apexrest-test/agents/openai.yaml +0 -4
  205. package/dist/resources/panel/index.html +0 -61
  206. package/dist/resources/panel/panel.css +0 -627
  207. package/dist/resources/panel/panel.js +0 -629
  208. package/dist/resources/templates/blank-app/README.uk.md +0 -5
  209. package/dist/resources/templates/customer-crm/README.uk.md +0 -7
  210. package/dist/resources/templates/database-control/install.sql +0 -17
  211. package/dist/resources/templates/existing-app/README.uk.md +0 -9
  212. package/dist/resources/third-party/node_modules__@playwright__test__LICENSE +0 -202
  213. package/dist/resources/third-party/node_modules__@playwright__test__NOTICE +0 -5
  214. package/dist/resources/third-party/node_modules__@types__node__LICENSE +0 -21
  215. package/dist/resources/third-party/node_modules__@types__yauzl__LICENSE +0 -21
  216. package/dist/resources/third-party/node_modules__@typescript__typescript-darwin-arm64__LICENSE +0 -55
  217. package/dist/resources/third-party/node_modules__@typescript__typescript-darwin-arm64__NOTICE.txt +0 -436
  218. package/dist/resources/third-party/node_modules__esbuild__LICENSE.md +0 -21
  219. package/dist/resources/third-party/node_modules__fflate__LICENSE +0 -21
  220. package/dist/resources/third-party/node_modules__marked__LICENSE +0 -44
  221. package/dist/resources/third-party/node_modules__playwright-core__LICENSE +0 -202
  222. package/dist/resources/third-party/node_modules__playwright-core__NOTICE +0 -5
  223. package/dist/resources/third-party/node_modules__playwright__LICENSE +0 -202
  224. package/dist/resources/third-party/node_modules__playwright__NOTICE +0 -5
  225. package/dist/resources/third-party/node_modules__prettier__LICENSE +0 -7
  226. package/dist/resources/third-party/node_modules__typescript__LICENSE +0 -55
  227. package/dist/resources/third-party/node_modules__typescript__NOTICE.txt +0 -436
  228. package/dist/resources/third-party/node_modules__undici-types__LICENSE +0 -21
  229. package/dist/runtime/chunk-4MYHJ2IU.mjs +0 -1208
  230. package/dist/runtime/chunk-7RZW5QV2.mjs +0 -992
  231. package/dist/runtime/chunk-AQZLLQ3D.mjs +0 -203
  232. package/dist/runtime/chunk-BD2AVCFU.mjs +0 -367
  233. package/dist/runtime/chunk-IX6V6ZGW.mjs +0 -18
  234. package/dist/runtime/chunk-NDZ2RWQU.mjs +0 -13
  235. package/dist/runtime/chunk-QIVPMPU3.mjs +0 -14
  236. package/dist/runtime/chunk-SPZVXAM5.mjs +0 -147
  237. package/dist/runtime/chunk-TLYYCRQA.mjs +0 -329
  238. package/dist/runtime/chunk-TXVQLYTH.mjs +0 -1271
  239. package/dist/runtime/chunk-YLXJ6H4J.mjs +0 -14
@@ -1,21 +1,22 @@
1
1
  import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
2
  import {
3
+ JobService,
3
4
  dispatch,
4
5
  schemas,
6
+ settleInlineJobs,
7
+ shutdownOracle,
5
8
  toolCatalog
6
- } from "./chunk-TXVQLYTH.mjs";
7
- import {
8
- panelDocument
9
- } from "./chunk-AQZLLQ3D.mjs";
10
- import {
11
- JobService
12
- } from "./chunk-BD2AVCFU.mjs";
9
+ } from "./chunk-5PCC7GZM.mjs";
13
10
  import {
14
11
  ArtifactService
15
- } from "./chunk-4MYHJ2IU.mjs";
12
+ } from "./chunk-TMSMKVRP.mjs";
16
13
  import {
17
14
  VERSION
18
- } from "./chunk-S24BD6PY.mjs";
15
+ } from "./chunk-RBJJNQ5O.mjs";
16
+ import {
17
+ loadProject,
18
+ parse
19
+ } from "./chunk-N4C2SKCN.mjs";
19
20
  import {
20
21
  AjvJsonSchemaValidator,
21
22
  CallToolRequestSchema,
@@ -29,14 +30,12 @@ import {
29
30
  InitializeRequestSchema,
30
31
  InitializedNotificationSchema,
31
32
  LATEST_PROTOCOL_VERSION,
32
- ListResourcesRequestSchema,
33
33
  ListRootsResultSchema,
34
34
  ListToolsRequestSchema,
35
35
  LoggingLevelSchema,
36
36
  McpError,
37
37
  Protocol,
38
38
  ReadBuffer,
39
- ReadResourceRequestSchema,
40
39
  SUPPORTED_PROTOCOL_VERSIONS,
41
40
  SetLevelRequestSchema,
42
41
  assertClientRequestTaskCapability,
@@ -44,19 +43,17 @@ import {
44
43
  external_exports,
45
44
  getLiteralValue,
46
45
  getObjectShape,
47
- loadProject,
48
46
  mergeCapabilities,
49
- parse,
50
47
  safeParse,
51
48
  serializeMessage
52
- } from "./chunk-3MDDJFXN.mjs";
49
+ } from "./chunk-JYN3YHP3.mjs";
53
50
  import {
54
51
  Fault,
55
52
  failure,
56
53
  hash,
57
54
  sanitized,
58
55
  success
59
- } from "./chunk-2Z3BZF66.mjs";
56
+ } from "./chunk-WPS3CSQJ.mjs";
60
57
 
61
58
  // node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js
62
59
  var ExperimentalServerTasks = class {
@@ -717,8 +714,16 @@ import { fileURLToPath } from "node:url";
717
714
  // packages/mcp/src/output.ts
718
715
  var inlineLimit = 8192;
719
716
  var readerLimit = 32768;
720
- var panelResultKey = "apexrest/panelResult";
721
717
  var archives = /* @__PURE__ */ new Map();
718
+ var pruneIntervalMs = 36e5;
719
+ var pruned = /* @__PURE__ */ new Map();
720
+ async function pruneArchives(service, project, now = Date.now()) {
721
+ const last = pruned.get(project);
722
+ if (last !== void 0 && now - last < pruneIntervalMs) return;
723
+ pruned.set(project, now);
724
+ if (pruned.size > 32) pruned.delete(pruned.keys().next().value);
725
+ await service.prune("results").catch(() => void 0);
726
+ }
722
727
  function preview(value, depth = 0) {
723
728
  if (Array.isArray(value)) return { count: value.length };
724
729
  if (!value || typeof value !== "object") return typeof value === "string" ? value.slice(0, 400) : value;
@@ -747,25 +752,65 @@ function preview(value, depth = 0) {
747
752
  "scope",
748
753
  "compiler",
749
754
  "approval",
750
- "backupRequired"
755
+ "backupRequired",
756
+ "mode",
757
+ "backupStrategy",
758
+ "syncId",
759
+ "revision",
760
+ "exportedAt",
761
+ "dirty",
762
+ "blocked",
763
+ "blockedReason",
764
+ "serverFreshness",
765
+ "backupId",
766
+ "importingRunId",
767
+ "phase",
768
+ "runner",
769
+ "planId",
770
+ "planDigest",
771
+ "planPath",
772
+ "runId",
773
+ "warningCount"
751
774
  ]) {
752
775
  const entry = data[key];
753
776
  if (["string", "number", "boolean"].includes(typeof entry))
754
777
  result[key] = typeof entry === "string" ? entry.slice(0, 400) : entry;
755
778
  }
756
- for (const key of ["jobs", "deployments", "diagnostics", "artifacts", "verification"])
779
+ for (const key of ["sync", "jobs", "deployments", "diagnostics", "artifacts", "verification"])
757
780
  if (Array.isArray(data[key])) result[key + "Count"] = data[key].length;
758
781
  if (Array.isArray(data.diagnostics))
759
- result.diagnostics = data.diagnostics.slice(0, 2).map(
782
+ result.diagnostics = data.diagnostics.slice(0, 5).map(
760
783
  (entry) => entry && typeof entry === "object" ? Object.fromEntries(
761
- ["severity", "code", "message", "file"].filter((key) => typeof entry[key] === "string").map((key) => [key, entry[key].slice(0, key === "message" ? 300 : 120)])
784
+ ["severity", "code", "message", "file", "line", "column", "type", "hint"].filter((key) => ["string", "number"].includes(typeof entry[key])).map((key) => [key, typeof entry[key] === "string" ? entry[key].slice(0, 600) : entry[key]])
762
785
  ) : String(entry).slice(0, 300)
763
786
  );
787
+ for (const key of ["application", "grant", "verification", "sources"])
788
+ if (data[key] && typeof data[key] === "object" && JSON.stringify(data[key]).length <= 1200)
789
+ result[key] = data[key];
790
+ if (Array.isArray(data.phases) && JSON.stringify(data.phases).length <= 1200) result.phases = data.phases;
764
791
  for (const key of ["artifacts", "nextActions", "risks"])
765
792
  if (Array.isArray(data[key])) {
766
793
  result[key] = data[key].slice(0, 4).map((entry) => String(entry).slice(0, 200));
767
794
  result[key + "Omitted"] = Math.max(0, data[key].length - 4);
768
795
  }
796
+ for (const key of ["connections", "permissions", "changes", "toolchain"])
797
+ if (data[key] && typeof data[key] === "object") {
798
+ const value2 = data[key];
799
+ if (JSON.stringify(value2).length <= 1200) result[key] = value2;
800
+ else if (key === "connections") result.connections = { count: Object.keys(value2).length };
801
+ else if (key === "permissions")
802
+ result.permissions = {
803
+ activeGrantCount: Array.isArray(value2.activeGrants) ? value2.activeGrants.length : 0
804
+ };
805
+ else if (key === "changes")
806
+ result.changes = {
807
+ status: value2.status,
808
+ fileCount: Array.isArray(value2.files) ? value2.files.length : 0
809
+ };
810
+ }
811
+ if (data.lastSuccessfulImport && typeof data.lastSuccessfulImport === "object")
812
+ result.lastSuccessfulImport = data.lastSuccessfulImport;
813
+ if (data.workingCopy && typeof data.workingCopy === "object") result.workingCopy = data.workingCopy;
769
814
  if (depth < 2 && data.result && typeof data.result === "object")
770
815
  result.result = preview(data.result, depth + 1);
771
816
  if (data.operation === "deploy.plan" && data.data && depth < 2) result.data = preview(data.data, depth + 1);
@@ -797,20 +842,16 @@ function preview(value, depth = 0) {
797
842
  async function toolOutput(original, project) {
798
843
  const full = sanitized(original);
799
844
  const serialized = JSON.stringify(full);
800
- const panel = full.operation.startsWith("panel.");
801
- const reader = ["docs.read", "artifacts.read"].includes(full.operation);
845
+ const reader = ["docs.read", "artifacts.read", "reference"].includes(full.operation);
802
846
  let result = full;
803
847
  if (serialized.length > (reader ? readerLimit : inlineLimit)) {
804
848
  let artifactId;
805
849
  let capturedRunId;
806
- let recoveryError;
807
850
  try {
808
851
  if (!project) throw new Error("No project is available for a local result artifact.");
809
852
  const service = new ArtifactService(await loadProject(project));
810
- const stable = { ...full, runId: "" };
811
- if (full.operation === "panel.status" && full.data && typeof full.data === "object")
812
- stable.data = { ...full.data, updatedAt: "" };
813
- const key = hash(project + JSON.stringify(stable));
853
+ await pruneArchives(service, project);
854
+ const key = hash(project + JSON.stringify({ ...full, runId: "" }));
814
855
  const cached = archives.get(key);
815
856
  if (cached && await service.read(cached.artifactId, 0, 1).then(
816
857
  () => true,
@@ -824,16 +865,17 @@ async function toolOutput(original, project) {
824
865
  if (archives.size > 32) archives.delete(archives.keys().next().value);
825
866
  }
826
867
  } catch {
827
- recoveryError = "The complete result could not be archived. Inspect the existing local operation record; do not rerun a completed operation.";
868
+ artifactId = void 0;
828
869
  }
829
870
  result = {
830
871
  ...full,
831
872
  summary: full.summary.slice(0, 600),
832
- diagnostics: full.diagnostics.slice(0, 5).map((d) => ({ severity: d.severity, code: d.code.slice(0, 100), message: d.message.slice(0, 400) })),
873
+ diagnostics: full.diagnostics.slice(0, 5),
833
874
  artifacts: artifactId ? [artifactId] : [],
834
- nextActions: artifactId ? [
835
- "For omitted details, use apexrest_artifact_read with output.artifactId and the same project. Follow nextOffset as needed; do not repeat the operation."
836
- ] : [recoveryError],
875
+ nextActions: [
876
+ ...full.nextActions.slice(0, 3),
877
+ artifactId ? "For omitted details, use apexrest_artifact_read with output.artifactId and the same project. Follow nextOffset as needed; do not repeat the operation." : "The complete result could not be archived. Inspect the existing local operation record; do not rerun a completed operation."
878
+ ],
837
879
  data: {
838
880
  ...preview(full.data),
839
881
  output: {
@@ -848,7 +890,7 @@ async function toolOutput(original, project) {
848
890
  if (JSON.stringify(result).length > inlineLimit) {
849
891
  const data = result.data;
850
892
  result.data = Object.fromEntries(
851
- ["id", "jobId", "status", "ok", "output"].filter((key) => data[key] !== void 0).map((key) => [key, data[key]])
893
+ ["id", "jobId", "status", "phase", "ok", "output"].filter((key) => data[key] !== void 0).map((key) => [key, data[key]])
852
894
  );
853
895
  if (data.result && typeof data.result === "object") {
854
896
  const nested = data.result;
@@ -856,17 +898,19 @@ async function toolOutput(original, project) {
856
898
  ["id", "ok", "status", "exitCode", "operation", "summary"].filter((field) => ["string", "number", "boolean"].includes(typeof nested[field])).map((field) => [field, nested[field]])
857
899
  );
858
900
  }
901
+ if (JSON.stringify(result).length > inlineLimit)
902
+ result.diagnostics = result.diagnostics.map((d) => ({ ...d, message: d.message.slice(0, 400) }));
859
903
  }
860
904
  }
861
905
  return {
862
906
  isError: !result.ok,
863
- content: [{ type: "text", text: result === full ? serialized : JSON.stringify(result) }],
864
- ...panel ? { _meta: { [panelResultKey]: full } } : {}
907
+ content: [{ type: "text", text: result === full ? serialized : JSON.stringify(result) }]
865
908
  };
866
909
  }
867
910
 
868
911
  // packages/mcp/src/job-tools.ts
869
912
  var jobWaitSeconds = external_exports.number().int().min(0).max(30).default(25).describe("Wait for the result or return the existing jobId; default 25 seconds, 0 queues immediately.");
913
+ var shipWaitSeconds = external_exports.number().int().min(0).max(120).default(25).describe("Wait for the result or return the existing jobId; default 25 seconds, 0 queues immediately.");
870
914
  var completedResultSchema = external_exports.object({
871
915
  schemaVersion: external_exports.literal(1),
872
916
  ok: external_exports.boolean(),
@@ -879,8 +923,23 @@ var completedResultSchema = external_exports.object({
879
923
  severity: external_exports.enum(["error", "warning", "info"]),
880
924
  code: external_exports.string(),
881
925
  message: external_exports.string(),
882
- file: external_exports.string().optional()
883
- }).transform(({ file, ...diagnostic }) => ({ ...diagnostic, ...file !== void 0 ? { file } : {} }))
926
+ file: external_exports.string().optional(),
927
+ line: external_exports.number().int().optional(),
928
+ column: external_exports.number().int().optional(),
929
+ type: external_exports.string().optional(),
930
+ hint: external_exports.string().optional(),
931
+ validValues: external_exports.array(external_exports.string()).optional()
932
+ }).transform(({ severity, code, message, file, line, column, type, hint, validValues }) => ({
933
+ severity,
934
+ code,
935
+ message,
936
+ ...file !== void 0 ? { file } : {},
937
+ ...line !== void 0 ? { line } : {},
938
+ ...column !== void 0 ? { column } : {},
939
+ ...type !== void 0 ? { type } : {},
940
+ ...hint !== void 0 ? { hint } : {},
941
+ ...validValues !== void 0 ? { validValues } : {}
942
+ }))
884
943
  ),
885
944
  artifacts: external_exports.array(external_exports.string()),
886
945
  nextActions: external_exports.array(external_exports.string()),
@@ -896,15 +955,28 @@ var completedResultSchema = external_exports.object({
896
955
  ])
897
956
  });
898
957
  function jobToolResult(operation, job) {
899
- if (job.status === "completed") {
958
+ const active = job.status === "queued" || job.status === "running" ? job.status : void 0;
959
+ if (!active && job.result !== void 0) {
900
960
  const nested = completedResultSchema.safeParse(job.result);
901
961
  if (nested.success && nested.data.operation === operation) return { ...nested.data, data: job };
902
962
  }
903
- const nextActions = typeof job.nextAction === "string" ? [job.nextAction] : ["Read apexrest_job_status with this jobId; inspect the existing operation before any retry."];
904
- if (job.status === "queued" || job.status === "running")
963
+ const nextActions = typeof job.nextAction === "string" ? [job.nextAction] : ["Read apexrest_job action:status with this jobId; inspect the existing operation before any retry."];
964
+ if (job.status === "completed") {
965
+ const result2 = failure(
966
+ operation,
967
+ new Fault(
968
+ "JOB_RESULT_UNREADABLE",
969
+ "The job completed but its recorded result cannot be read for this operation. Inspect its existing record; do not repeat the operation.",
970
+ 1,
971
+ "completed_unreadable"
972
+ )
973
+ );
974
+ return { ...result2, nextActions, data: job };
975
+ }
976
+ if (active)
905
977
  return {
906
978
  ...success(operation, job, `Job ${job.status}; use the existing jobId to retrieve its result.`),
907
- status: job.status,
979
+ status: active,
908
980
  nextActions
909
981
  };
910
982
  const status = job.status === "failed" || job.status === "cancelled" ? job.status : "outcome_unknown";
@@ -919,12 +991,12 @@ function jobToolResult(operation, job) {
919
991
  );
920
992
  return { ...result, nextActions, data: job };
921
993
  }
922
- async function runJobTool(jobs, operation, input, runtime, signal) {
994
+ async function runJobTool(jobs, operation, input, runtime, signal, options = {}) {
923
995
  const { waitSeconds: requestedWait, ...domainInput } = input;
924
- const waitSeconds = parse(jobWaitSeconds, requestedWait);
996
+ const waitSeconds = parse(options.waitSchema ?? jobWaitSeconds, requestedWait);
925
997
  if (signal?.aborted)
926
998
  throw new Fault("CANCELLED", "Request cancelled before starting a job.", 6, "cancelled");
927
- const started = await jobs.start(operation, domainInput, runtime);
999
+ const started = options.inline ? await options.inline(operation, domainInput) : await jobs.start(operation, domainInput, runtime);
928
1000
  if (waitSeconds === 0) return started;
929
1001
  try {
930
1002
  const state = await jobs.status(started.jobId, waitSeconds, signal);
@@ -939,77 +1011,55 @@ async function runJobTool(jobs, operation, input, runtime, signal) {
939
1011
  return {
940
1012
  ...started,
941
1013
  status: "outcome_unknown",
942
- nextAction: "Read apexrest_job_status with this jobId; do not repeat the operation. No cancellation or rollback is confirmed."
1014
+ nextAction: "Read apexrest_job action:status with this jobId; do not repeat the operation. No cancellation or rollback is confirmed."
943
1015
  };
944
1016
  }
945
1017
  }
946
1018
 
947
1019
  // packages/mcp/src/server.ts
948
- var panelUri = "ui://apexrest/development-panel.html";
949
1020
  var absoluteProject = external_exports.string().min(1).max(4096).refine(
950
1021
  (value) => path.isAbsolute(value) && (process.platform !== "win32" || /^(?:[A-Za-z]:[\\/]|[\\/]{2}[^\\/]+[\\/][^\\/]+)/.test(value)),
951
1022
  "Provide the absolute project directory containing apexrest.json; the plugin runs from its installation directory."
952
1023
  ).describe("Absolute project directory containing apexrest.json; never the plugin cache.");
1024
+ var projectOptional = /* @__PURE__ */ new Set(["reference", "status", "project"]);
953
1025
  var mcpSchemas = /* @__PURE__ */ new Map();
954
1026
  for (const { operation, long } of toolCatalog) {
955
1027
  const schema = schemas[operation];
956
- const transportSchema = "project" in schema.shape ? schema.extend({ project: operation === "doctor" ? absoluteProject.optional() : absoluteProject }) : schema;
957
- mcpSchemas.set(operation, long ? transportSchema.extend({ waitSeconds: jobWaitSeconds }) : transportSchema);
958
- }
959
- async function startMcp() {
960
- const server = new Server(
961
- { name: "apexrest-apex", version: VERSION },
962
- { capabilities: { tools: {}, resources: {} } }
1028
+ const transportSchema = "project" in schema.shape ? schema.extend({
1029
+ project: projectOptional.has(operation) ? absoluteProject.optional() : absoluteProject
1030
+ }) : schema;
1031
+ const boundarySchema = operation === "project" ? transportSchema.extend({
1032
+ directory: absoluteProject.describe("Absolute directory for init.").optional(),
1033
+ passwordFile: absoluteProject.describe("Absolute private password file.").optional()
1034
+ }) : transportSchema;
1035
+ mcpSchemas.set(
1036
+ operation,
1037
+ long ? boundarySchema.extend({ waitSeconds: operation === "ship" ? shipWaitSeconds : jobWaitSeconds }) : boundarySchema
963
1038
  );
964
- server.setRequestHandler(ListResourcesRequestSchema, async () => ({
965
- resources: [
966
- {
967
- uri: panelUri,
968
- name: "APEXREST development panel",
969
- mimeType: "text/html;profile=mcp-app",
970
- description: "Codex project settings and APEX operation status."
971
- }
972
- ]
1039
+ }
1040
+ function listTools() {
1041
+ return toolCatalog.map((t) => ({
1042
+ name: t.name,
1043
+ description: t.description,
1044
+ inputSchema: external_exports.toJSONSchema(mcpSchemas.get(t.operation), { target: "draft-7", io: "input" }),
1045
+ annotations: {
1046
+ readOnlyHint: t.readOnly,
1047
+ destructiveHint: t.destructive ?? false,
1048
+ idempotentHint: t.readOnly,
1049
+ openWorldHint: t.openWorld ?? false
1050
+ }
973
1051
  }));
974
- server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
975
- if (request.params.uri !== panelUri) throw new Error("Unknown resource.");
976
- return {
977
- contents: [
978
- {
979
- uri: panelUri,
980
- mimeType: "text/html;profile=mcp-app",
981
- text: await panelDocument(),
982
- _meta: { ui: { prefersBorder: true, csp: { connectDomains: [], resourceDomains: [] } } }
983
- }
984
- ]
985
- };
986
- });
1052
+ }
1053
+ function detachedJob(operation, input) {
1054
+ const tool = toolCatalog.find((t) => t.operation === operation);
1055
+ if (tool?.worker) return true;
1056
+ return operation === "test.run" && input.suite !== "unit";
1057
+ }
1058
+ async function startMcp() {
1059
+ const server = new Server({ name: "apexrest-apex", version: VERSION }, { capabilities: { tools: {} } });
987
1060
  let catalog;
988
- server.setRequestHandler(
989
- ListToolsRequestSchema,
990
- async () => catalog ??= {
991
- tools: toolCatalog.map((t) => ({
992
- name: t.name,
993
- description: t.description,
994
- ...t.operation === "panel.open" ? { _meta: { ui: { resourceUri: panelUri } } } : {},
995
- inputSchema: external_exports.toJSONSchema(mcpSchemas.get(t.operation), { target: "draft-7", io: "input" }),
996
- annotations: {
997
- readOnlyHint: t.readOnly,
998
- destructiveHint: t.destructive ?? !t.readOnly,
999
- idempotentHint: t.readOnly,
1000
- openWorldHint: ![
1001
- "doctor",
1002
- "docs.search",
1003
- "docs.read",
1004
- "project.inspect",
1005
- "jobs.status",
1006
- "jobs.cancel",
1007
- "artifacts.read"
1008
- ].includes(t.operation)
1009
- }
1010
- }))
1011
- }
1012
- );
1061
+ const runtime = path.join(path.dirname(fileURLToPath(import.meta.url)), "apexrest.mjs");
1062
+ server.setRequestHandler(ListToolsRequestSchema, async () => catalog ??= { tools: listTools() });
1013
1063
  server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
1014
1064
  const tool = toolCatalog.find((t) => t.name === request.params.name);
1015
1065
  let result;
@@ -1018,24 +1068,72 @@ async function startMcp() {
1018
1068
  if (!tool) throw new Fault("UNKNOWN_TOOL", "Tool is not in the catalog.", 2);
1019
1069
  const input = parse(mcpSchemas.get(tool.operation), request.params.arguments ?? {});
1020
1070
  project = typeof input.project === "string" ? input.project : void 0;
1021
- result = tool.long ? jobToolResult(
1022
- tool.operation,
1023
- await runJobTool(
1024
- new JobService(await loadProject(String(input.project))),
1025
- tool.operation,
1026
- input,
1027
- path.join(path.dirname(fileURLToPath(import.meta.url)), "apexrest.mjs"),
1028
- extra.signal
1029
- )
1030
- ) : await dispatch(tool.operation, input, extra.signal);
1071
+ const localSync = tool.operation === "apex.sync" && input.action === "status";
1072
+ const planOnly = tool.operation === "ship" && input.mode !== "apply";
1073
+ if (localSync || planOnly) delete input.waitSeconds;
1074
+ if (tool.long && !localSync && !planOnly) {
1075
+ const jobs = new JobService(await loadProject(String(input.project)));
1076
+ if (tool.operation === "ship") {
1077
+ const { waitSeconds, ...domainInput } = input;
1078
+ const planned = await dispatch("ship", { ...domainInput, mode: "plan" }, extra.signal);
1079
+ if (!planned.ok) result = planned;
1080
+ else {
1081
+ const planPath = planned.data.planPath;
1082
+ const job = await runJobTool(
1083
+ jobs,
1084
+ "ship.apply",
1085
+ {
1086
+ project: input.project,
1087
+ env: input.env,
1088
+ plan: planPath,
1089
+ userRequest: input.userRequest,
1090
+ waitSeconds
1091
+ },
1092
+ runtime,
1093
+ extra.signal,
1094
+ { waitSchema: shipWaitSeconds }
1095
+ );
1096
+ result = jobToolResult("ship.apply", job);
1097
+ result = {
1098
+ ...result,
1099
+ operation: "ship",
1100
+ data: { ...result.data, plan: planned.data }
1101
+ };
1102
+ }
1103
+ } else {
1104
+ const inline = detachedJob(tool.operation, input) ? void 0 : (operation, domainInput) => jobs.startInline(
1105
+ operation,
1106
+ domainInput,
1107
+ (op, args, signal, progress) => dispatch(op, args, signal, progress)
1108
+ );
1109
+ result = jobToolResult(
1110
+ tool.operation,
1111
+ await runJobTool(jobs, tool.operation, input, runtime, extra.signal, inline ? { inline } : {})
1112
+ );
1113
+ }
1114
+ } else result = await dispatch(tool.operation, input, extra.signal);
1031
1115
  } catch (e) {
1032
1116
  result = failure(tool?.operation ?? "unknown", e);
1033
1117
  }
1034
1118
  return toolOutput(result, project);
1035
1119
  });
1036
- await server.connect(new StdioServerTransport());
1120
+ const transport = new StdioServerTransport();
1121
+ const shutdown = async () => {
1122
+ await settleInlineJobs();
1123
+ await shutdownOracle();
1124
+ };
1125
+ for (const signal of ["SIGTERM", "SIGINT"])
1126
+ process.once(signal, () => {
1127
+ void shutdown().finally(() => process.exit(0));
1128
+ });
1129
+ await server.connect(transport);
1130
+ server.onclose = () => {
1131
+ void shutdown().finally(() => process.exit(0));
1132
+ };
1037
1133
  }
1038
-
1039
1134
  export {
1135
+ detachedJob,
1136
+ listTools,
1137
+ mcpSchemas,
1040
1138
  startMcp
1041
1139
  };
@@ -3,17 +3,17 @@ import { createRequire as __createRequire } from 'node:module'; const require =
3
3
  // plugins/metadata.json
4
4
  var metadata_default = {
5
5
  name: "apexrest-apex",
6
- version: "1.2.0",
7
- description: "Develop, deploy and test Oracle APEX applications with Codex.",
6
+ version: "1.3.0",
7
+ description: "Develop, deploy and test Oracle APEX applications from Codex or Claude Code.",
8
8
  author: {
9
9
  name: "APEXREST",
10
10
  url: "https://apex.rest"
11
11
  },
12
12
  license: "Apache-2.0",
13
13
  interface: {
14
- displayName: "APEXREST for Codex",
14
+ displayName: "APEXREST for Codex and Claude Code",
15
15
  shortDescription: "Oracle APEX development workflows",
16
- longDescription: "Oracle APEX development, controlled deployment and testing directly in your current Codex session.",
16
+ longDescription: "Oracle APEX development, controlled deployment and testing directly in your current Codex or Claude Code session.",
17
17
  developerName: "APEXREST",
18
18
  websiteURL: "https://apex.rest",
19
19
  composerIcon: "./assets/apexrest-icon.svg",
@@ -22,9 +22,9 @@ var metadata_default = {
22
22
  category: "Productivity",
23
23
  capabilities: ["Read", "Write"],
24
24
  defaultPrompt: [
25
- "Use $apexrest-work to complete my APEX change directly in this Codex session.",
26
- "Use $apexrest-panel to open project settings and Oracle/APEX operations inside Codex.",
27
- "Use $apexrest-menu to show all functions, setup and connection diagnostics."
25
+ "Use $apexrest-work to build or change my Oracle APEX application in this session.",
26
+ "Use $apexrest-setup to check my tools and connection references.",
27
+ "Use $apexrest-safety to explain what blocked my APEX deployment or test."
28
28
  ]
29
29
  }
30
30
  };